diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaJAXRSSpecServerCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaJAXRSSpecServerCodegen.java
index bb969ae172c15276277527148dd2713709850e75..36985480d7240adc98f2852e316b80c4fc92595b 100644
--- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaJAXRSSpecServerCodegen.java
+++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaJAXRSSpecServerCodegen.java
@@ -42,6 +42,7 @@ public class JavaJAXRSSpecServerCodegen extends AbstractJavaJAXRSServerCodegen {
     public static final String USE_SWAGGER_ANNOTATIONS = "useSwaggerAnnotations";
     public static final String JACKSON = "jackson";
     public static final String OPEN_API_SPEC_FILE_LOCATION = "openApiSpecFileLocation";
+    public static final String GENERATE_BUILDERS = "generateBuilders";
 
     public static final String QUARKUS_LIBRARY = "quarkus";
     public static final String THORNTAIL_LIBRARY = "thorntail";
@@ -51,6 +52,7 @@ public class JavaJAXRSSpecServerCodegen extends AbstractJavaJAXRSServerCodegen {
     private boolean interfaceOnly = false;
     private boolean returnResponse = false;
     private boolean generatePom = true;
+    private boolean generateBuilders = false;
     private boolean useSwaggerAnnotations = true;
     private boolean useJackson = false;
     private String openApiSpecFileLocation = "src/main/openapi/openapi.yaml";
@@ -102,6 +104,7 @@ public class JavaJAXRSSpecServerCodegen extends AbstractJavaJAXRSServerCodegen {
 
         cliOptions.add(library);
         cliOptions.add(CliOption.newBoolean(GENERATE_POM, "Whether to generate pom.xml if the file does not already exist.").defaultValue(String.valueOf(generatePom)));
+        cliOptions.add(CliOption.newBoolean(GENERATE_BUILDERS, "Whether to generate builders for models.").defaultValue(String.valueOf(generateBuilders)));
         cliOptions.add(CliOption.newBoolean(INTERFACE_ONLY, "Whether to generate only API interface stubs without the server files.").defaultValue(String.valueOf(interfaceOnly)));
         cliOptions.add(CliOption.newBoolean(RETURN_RESPONSE, "Whether generate API interface should return javax.ws.rs.core.Response instead of a deserialized entity. Only useful if interfaceOnly is true.").defaultValue(String.valueOf(returnResponse)));
         cliOptions.add(CliOption.newBoolean(USE_SWAGGER_ANNOTATIONS, "Whether to generate Swagger annotations.", useSwaggerAnnotations));
@@ -125,7 +128,7 @@ public class JavaJAXRSSpecServerCodegen extends AbstractJavaJAXRSServerCodegen {
                 additionalProperties.remove(RETURN_RESPONSE);
             }
         }
-        if(QUARKUS_LIBRARY.equals(library) || THORNTAIL_LIBRARY.equals(library) || HELIDON_LIBRARY.equals(library) || OPEN_LIBERTY_LIBRARY.equals(library)) {
+        if (QUARKUS_LIBRARY.equals(library) || THORNTAIL_LIBRARY.equals(library) || HELIDON_LIBRARY.equals(library) || OPEN_LIBERTY_LIBRARY.equals(library)) {
             useSwaggerAnnotations = false;
         } else {
             if (additionalProperties.containsKey(USE_SWAGGER_ANNOTATIONS)) {
@@ -133,6 +136,12 @@ public class JavaJAXRSSpecServerCodegen extends AbstractJavaJAXRSServerCodegen {
             }
         }
         writePropertyBack(USE_SWAGGER_ANNOTATIONS, useSwaggerAnnotations);
+
+        if (additionalProperties.containsKey(GENERATE_BUILDERS)) {
+            generateBuilders = Boolean.valueOf(additionalProperties.get(GENERATE_BUILDERS).toString());
+        }
+        additionalProperties.put(GENERATE_BUILDERS, generateBuilders);
+
         if (additionalProperties.containsKey(OPEN_API_SPEC_FILE_LOCATION)) {
             openApiSpecFileLocation = additionalProperties.get(OPEN_API_SPEC_FILE_LOCATION).toString();
         } else if(QUARKUS_LIBRARY.equals(library) || THORNTAIL_LIBRARY.equals(library) || HELIDON_LIBRARY.equals(library)) {
diff --git a/modules/openapi-generator/src/main/resources/JavaJaxRS/spec/pojo.mustache b/modules/openapi-generator/src/main/resources/JavaJaxRS/spec/pojo.mustache
index dc9bd039d0237f350803a8bb2808247e1e4f5766..8335ed625af8c71a23a7f9dd1ec1837cfb6d4e85 100644
--- a/modules/openapi-generator/src/main/resources/JavaJaxRS/spec/pojo.mustache
+++ b/modules/openapi-generator/src/main/resources/JavaJaxRS/spec/pojo.mustache
@@ -1,52 +1,38 @@
-{{#useSwaggerAnnotations}}
-import io.swagger.annotations.*;
-{{/useSwaggerAnnotations}}
+{{#useSwaggerAnnotations}}import io.swagger.annotations.*;{{/useSwaggerAnnotations}}
 import java.util.Objects;
 import com.fasterxml.jackson.annotation.JsonProperty;
 import com.fasterxml.jackson.annotation.JsonCreator;
 import com.fasterxml.jackson.annotation.JsonValue;
 
-{{#discriminator}}{{>typeInfoAnnotation}}{{/discriminator}}{{#description}}
-/**
+{{#discriminator}}{{>typeInfoAnnotation}}{{/discriminator}}{{#description}}/**
  * {{description}}
- **/{{/description}}{{#useSwaggerAnnotations}}
-{{#description}}{{>additionalModelTypeAnnotations}}@ApiModel(description = "{{{description}}}"){{/description}}{{/useSwaggerAnnotations}}
+ **/{{/description}}
+{{#useSwaggerAnnotations}}{{#description}}{{>additionalModelTypeAnnotations}}@ApiModel(description = "{{{description}}}"){{/description}}{{/useSwaggerAnnotations}}
 public class {{classname}} {{#parent}}extends {{{parent}}}{{/parent}} {{#serializableModel}}implements Serializable{{/serializableModel}} {
   {{#vars}}{{#isEnum}}{{^isContainer}}
 
 {{>enumClass}}{{/isContainer}}{{#isContainer}}{{#mostInnerItems}}
  
 {{>enumClass}}{{/mostInnerItems}}{{/isContainer}}{{/isEnum}}
-  private {{#useBeanValidation}}@Valid{{/useBeanValidation}} {{{datatypeWithEnum}}} {{name}}{{#defaultValue}} = {{{.}}}{{/defaultValue}};{{/vars}}
+  private {{#useBeanValidation}}@Valid {{/useBeanValidation}}{{{datatypeWithEnum}}} {{name}}{{#defaultValue}} = {{{.}}}{{/defaultValue}};{{/vars}}
 
-  {{#vars}}
-  /**
-   {{#description}}
-   * {{description}}
-   {{/description}}
-   {{#minimum}}
-   * minimum: {{minimum}}
-   {{/minimum}}
-   {{#maximum}}
-   * maximum: {{maximum}}
-   {{/maximum}}
-   **/
-  public {{classname}} {{name}}({{{datatypeWithEnum}}} {{name}}) {
+  {{#generateBuilders}}public {{classname}}({{#vars}}{{{datatypeWithEnum}}} {{name}}{{#hasMore}}, {{/hasMore}}{{/vars}}) {
+    {{#vars}}
     this.{{name}} = {{name}};
-    return this;
+    {{/vars}}
   }
+  {{/generateBuilders}}
 
-  {{#vendorExtensions.extraAnnotation}}{{{vendorExtensions.extraAnnotation}}}{{/vendorExtensions.extraAnnotation}}{{#useSwaggerAnnotations}}
+  {{#vars}}{{#vendorExtensions.extraAnnotation}}{{{vendorExtensions.extraAnnotation}}}{{/vendorExtensions.extraAnnotation}}{{#useSwaggerAnnotations}}
   @ApiModelProperty({{#example}}example = "{{{example}}}", {{/example}}{{#required}}required = {{required}}, {{/required}}value = "{{{description}}}"){{/useSwaggerAnnotations}}
   @JsonProperty("{{baseName}}")
 {{#useBeanValidation}}{{>beanValidation}}{{/useBeanValidation}}  public {{{datatypeWithEnum}}} {{getter}}() {
     return {{name}};
   }
+
   public void {{setter}}({{{datatypeWithEnum}}} {{name}}) {
     this.{{name}} = {{name}};
-  }
-
-  {{/vars}}
+  }{{/vars}}
 
   @Override
   public boolean equals(java.lang.Object o) {
@@ -88,4 +74,37 @@ public class {{classname}} {{#parent}}extends {{{parent}}}{{/parent}} {{#seriali
     }
     return o.toString().replace("\n", "\n    ");
   }
+
+  {{#generateBuilders}}
+  public static Builder builder() {
+    return new Builder();
+  }
+
+  public static class Builder {
+    {{#vars}}
+    private {{{datatypeWithEnum}}} {{name}}{{#defaultValue}} = {{{.}}}{{/defaultValue}};
+    {{/vars}}
+
+    {{#vars}}
+    /**
+      {{#description}}
+      * {{description}}
+      {{/description}}
+      {{#minimum}}
+      * minimum: {{minimum}}
+      {{/minimum}}
+      {{#maximum}}
+      * maximum: {{maximum}}
+      {{/maximum}}
+      **/
+    public Builder {{name}}({{{datatypeWithEnum}}} {{name}}) {
+      this.{{name}} = {{name}};
+      return this;
+    }
+    {{/vars}}
+
+    public {{classname}} build() {
+      return new {{classname}}({{#vars}}{{name}}{{#hasMore}}, {{/hasMore}}{{/vars}});
+    }
+  }{{/generateBuilders}}
 }
diff --git a/samples/server/petstore/jaxrs-spec-interface-response/.openapi-generator/VERSION b/samples/server/petstore/jaxrs-spec-interface-response/.openapi-generator/VERSION
index 6d94c9c2e12a1bd077604be440ff7eb83354cd54..bfbf77eb7fadc20dd2ba9d16caf833df407d9efe 100644
--- a/samples/server/petstore/jaxrs-spec-interface-response/.openapi-generator/VERSION
+++ b/samples/server/petstore/jaxrs-spec-interface-response/.openapi-generator/VERSION
@@ -1 +1 @@
-3.3.0-SNAPSHOT
\ No newline at end of file
+4.3.0-SNAPSHOT
\ No newline at end of file
diff --git a/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/api/AnotherFakeApi.java b/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/api/AnotherFakeApi.java
index d72eaf4a39327ebaa8943a7be3f33bff57156dc4..b9c2317cb32757bb9ac0213f7eb2fbf67a051441 100644
--- a/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/api/AnotherFakeApi.java
+++ b/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/api/AnotherFakeApi.java
@@ -24,5 +24,5 @@ public interface AnotherFakeApi {
     @ApiOperation(value = "To test special tags", notes = "To test special tags and operation ID starting with number", tags={ "$another-fake?" })
     @ApiResponses(value = { 
         @ApiResponse(code = 200, message = "successful operation", response = Client.class) })
-    Response call123testSpecialTags(@Valid Client client);
+    Response call123testSpecialTags(@Valid Client body);
 }
diff --git a/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/api/FakeApi.java b/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/api/FakeApi.java
index fed7bbc7f69bedecbf858d3608dee41c01bc4f36..d6dafa1351336073b830e28cde0c7144a69a0195 100644
--- a/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/api/FakeApi.java
+++ b/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/api/FakeApi.java
@@ -10,6 +10,7 @@ import java.util.Map;
 import org.openapitools.model.ModelApiResponse;
 import org.openapitools.model.OuterComposite;
 import org.openapitools.model.User;
+import org.openapitools.model.XmlItem;
 
 import javax.ws.rs.*;
 import javax.ws.rs.core.Response;
@@ -26,6 +27,14 @@ import javax.validation.Valid;
 @Api(description = "the fake API")
 public interface FakeApi {
 
+    @POST
+    @Path("/create_xml_item")
+    @Consumes({ "application/xml", "application/xml; charset=utf-8", "application/xml; charset=utf-16", "text/xml", "text/xml; charset=utf-8", "text/xml; charset=utf-16" })
+    @ApiOperation(value = "creates an XmlItem", notes = "this route creates an XmlItem", tags={ "fake",  })
+    @ApiResponses(value = { 
+        @ApiResponse(code = 200, message = "successful operation", response = Void.class) })
+    Response createXmlItem(@Valid XmlItem xmlItem);
+
     @POST
     @Path("/outer/boolean")
     @Produces({ "*/*" })
@@ -40,7 +49,7 @@ public interface FakeApi {
     @ApiOperation(value = "", notes = "Test serialization of object with outer number type", tags={ "fake",  })
     @ApiResponses(value = { 
         @ApiResponse(code = 200, message = "Output composite", response = OuterComposite.class) })
-    Response fakeOuterCompositeSerialize(@Valid OuterComposite outerComposite);
+    Response fakeOuterCompositeSerialize(@Valid OuterComposite body);
 
     @POST
     @Path("/outer/number")
@@ -64,7 +73,7 @@ public interface FakeApi {
     @ApiOperation(value = "", notes = "For this test, the body for this request much reference a schema named `File`.", tags={ "fake",  })
     @ApiResponses(value = { 
         @ApiResponse(code = 200, message = "Success", response = Void.class) })
-    Response testBodyWithFileSchema(@Valid FileSchemaTestClass fileSchemaTestClass);
+    Response testBodyWithFileSchema(@Valid FileSchemaTestClass body);
 
     @PUT
     @Path("/body-with-query-params")
@@ -72,7 +81,7 @@ public interface FakeApi {
     @ApiOperation(value = "", notes = "", tags={ "fake",  })
     @ApiResponses(value = { 
         @ApiResponse(code = 200, message = "Success", response = Void.class) })
-    Response testBodyWithQueryParams(@QueryParam("query") @NotNull    String query,@Valid User user);
+    Response testBodyWithQueryParams(@QueryParam("query") @NotNull    String query,@Valid User body);
 
     @PATCH
     @Consumes({ "application/json" })
@@ -80,7 +89,7 @@ public interface FakeApi {
     @ApiOperation(value = "To test \"client\" model", notes = "To test \"client\" model", tags={ "fake",  })
     @ApiResponses(value = { 
         @ApiResponse(code = 200, message = "successful operation", response = Client.class) })
-    Response testClientModel(@Valid Client client);
+    Response testClientModel(@Valid Client body);
 
     @POST
     @Consumes({ "application/x-www-form-urlencoded" })
@@ -98,7 +107,13 @@ public interface FakeApi {
     @ApiResponses(value = { 
         @ApiResponse(code = 400, message = "Invalid request", response = Void.class),
         @ApiResponse(code = 404, message = "Not found", response = Void.class) })
-    Response testEnumParameters(@HeaderParam("enum_header_string_array")  @DefaultValue("new ArrayList<String>()")  @ApiParam("Header parameter enum test (string array)") List<String> enumHeaderStringArray,@HeaderParam("enum_header_string")  @DefaultValue("-efg")  @ApiParam("Header parameter enum test (string)") String enumHeaderString,@QueryParam("enum_query_string_array")  @DefaultValue("new ArrayList<String>()")  @ApiParam("Query parameter enum test (string array)")  List<String> enumQueryStringArray,@QueryParam("enum_query_string")  @DefaultValue("-efg")  @ApiParam("Query parameter enum test (string)")  String enumQueryString,@QueryParam("enum_query_integer")   @ApiParam("Query parameter enum test (double)")  Integer enumQueryInteger,@QueryParam("enum_query_double")   @ApiParam("Query parameter enum test (double)")  Double enumQueryDouble,@FormParam(value = "enum_form_string_array")  List<String> enumFormStringArray,@FormParam(value = "enum_form_string")  String enumFormString);
+    Response testEnumParameters(@HeaderParam("enum_header_string_array")   @DefaultValue("new ArrayList<String>()")  @ApiParam("Header parameter enum test (string array)") List<String> enumHeaderStringArray,@HeaderParam("enum_header_string")   @DefaultValue("-efg")  @ApiParam("Header parameter enum test (string)") String enumHeaderString,@QueryParam("enum_query_string_array")   @ApiParam("Query parameter enum test (string array)")  List<String> enumQueryStringArray,@QueryParam("enum_query_string")  @DefaultValue("-efg")  @ApiParam("Query parameter enum test (string)")  String enumQueryString,@QueryParam("enum_query_integer")   @ApiParam("Query parameter enum test (double)")  Integer enumQueryInteger,@QueryParam("enum_query_double")   @ApiParam("Query parameter enum test (double)")  Double enumQueryDouble,@FormParam(value = "enum_form_string_array")  List<String> enumFormStringArray,@FormParam(value = "enum_form_string")  String enumFormString);
+
+    @DELETE
+    @ApiOperation(value = "Fake endpoint to test group parameters (optional)", notes = "Fake endpoint to test group parameters (optional)", tags={ "fake",  })
+    @ApiResponses(value = { 
+        @ApiResponse(code = 400, message = "Someting wrong", response = Void.class) })
+    Response testGroupParameters(@QueryParam("required_string_group") @NotNull   @ApiParam("Required String in group parameters")  Integer requiredStringGroup,@HeaderParam("required_boolean_group") @NotNull    @ApiParam("Required Boolean in group parameters") Boolean requiredBooleanGroup,@QueryParam("required_int64_group") @NotNull   @ApiParam("Required Integer in group parameters")  Long requiredInt64Group,@QueryParam("string_group")   @ApiParam("String in group parameters")  Integer stringGroup,@HeaderParam("boolean_group")    @ApiParam("Boolean in group parameters") Boolean booleanGroup,@QueryParam("int64_group")   @ApiParam("Integer in group parameters")  Long int64Group);
 
     @POST
     @Path("/inline-additionalProperties")
@@ -106,7 +121,7 @@ public interface FakeApi {
     @ApiOperation(value = "test inline additionalProperties", notes = "", tags={ "fake",  })
     @ApiResponses(value = { 
         @ApiResponse(code = 200, message = "successful operation", response = Void.class) })
-    Response testInlineAdditionalProperties(@Valid Map<String, String> requestBody);
+    Response testInlineAdditionalProperties(@Valid Map<String, String> param);
 
     @GET
     @Path("/jsonFormData")
@@ -116,6 +131,13 @@ public interface FakeApi {
         @ApiResponse(code = 200, message = "successful operation", response = Void.class) })
     Response testJsonFormData(@FormParam(value = "param")  String param,@FormParam(value = "param2")  String param2);
 
+    @PUT
+    @Path("/test-query-paramters")
+    @ApiOperation(value = "", notes = "To test the collection format in query parameters", tags={ "fake",  })
+    @ApiResponses(value = { 
+        @ApiResponse(code = 200, message = "Success", response = Void.class) })
+    Response testQueryParameterCollectionFormat(@QueryParam("pipe") @NotNull    List<String> pipe,@QueryParam("ioutil") @NotNull    List<String> ioutil,@QueryParam("http") @NotNull    List<String> http,@QueryParam("url") @NotNull    List<String> url,@QueryParam("context") @NotNull    List<String> context);
+
     @POST
     @Path("/{petId}/uploadImageWithRequiredFile")
     @Consumes({ "multipart/form-data" })
diff --git a/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/api/FakeClassnameTestApi.java b/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/api/FakeClassnameTestApi.java
index 4e7829ee210d167f6d5906332abab06f015a3827..73e623e549e0a3af88e8eb918ecd7fc19bb69917 100644
--- a/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/api/FakeClassnameTestApi.java
+++ b/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/api/FakeClassnameTestApi.java
@@ -25,5 +25,5 @@ public interface FakeClassnameTestApi {
     }, tags={ "fake_classname_tags 123#$%^" })
     @ApiResponses(value = { 
         @ApiResponse(code = 200, message = "successful operation", response = Client.class) })
-    Response testClassname(@Valid Client client);
+    Response testClassname(@Valid Client body);
 }
diff --git a/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/api/PetApi.java b/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/api/PetApi.java
index db4be50f07b9e77cbd9b61bcb7b90e85d1192ebb..f186a66d1a312ccc30aa3864b17220748a97b769 100644
--- a/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/api/PetApi.java
+++ b/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/api/PetApi.java
@@ -28,8 +28,9 @@ public interface PetApi {
         })
     }, tags={ "pet",  })
     @ApiResponses(value = { 
+        @ApiResponse(code = 200, message = "successful operation", response = Void.class),
         @ApiResponse(code = 405, message = "Invalid input", response = Void.class) })
-    Response addPet(@Valid Pet pet);
+    Response addPet(@Valid Pet body);
 
     @DELETE
     @Path("/{petId}")
@@ -40,8 +41,9 @@ public interface PetApi {
         })
     }, tags={ "pet",  })
     @ApiResponses(value = { 
+        @ApiResponse(code = 200, message = "successful operation", response = Void.class),
         @ApiResponse(code = 400, message = "Invalid pet value", response = Void.class) })
-    Response deletePet(@PathParam("petId") @ApiParam("Pet id to delete") Long petId,@HeaderParam("api_key")   String apiKey);
+    Response deletePet(@PathParam("petId") @ApiParam("Pet id to delete") Long petId,@HeaderParam("api_key")    String apiKey);
 
     @GET
     @Path("/findByStatus")
@@ -55,7 +57,7 @@ public interface PetApi {
     @ApiResponses(value = { 
         @ApiResponse(code = 200, message = "successful operation", response = Pet.class, responseContainer = "List"),
         @ApiResponse(code = 400, message = "Invalid status value", response = Void.class, responseContainer = "List") })
-    Response findPetsByStatus(@QueryParam("status") @NotNull  @DefaultValue("new ArrayList<String>()")  @ApiParam("Status values that need to be considered for filter")  List<String> status);
+    Response findPetsByStatus(@QueryParam("status") @NotNull   @ApiParam("Status values that need to be considered for filter")  List<String> status);
 
     @GET
     @Path("/findByTags")
@@ -69,7 +71,7 @@ public interface PetApi {
     @ApiResponses(value = { 
         @ApiResponse(code = 200, message = "successful operation", response = Pet.class, responseContainer = "List"),
         @ApiResponse(code = 400, message = "Invalid tag value", response = Void.class, responseContainer = "List") })
-    Response findPetsByTags(@QueryParam("tags") @NotNull  @DefaultValue("new ArrayList<String>()")  @ApiParam("Tags to filter by")  List<String> tags);
+    Response findPetsByTags(@QueryParam("tags") @NotNull   @ApiParam("Tags to filter by")  List<String> tags);
 
     @GET
     @Path("/{petId}")
@@ -92,10 +94,11 @@ public interface PetApi {
         })
     }, tags={ "pet",  })
     @ApiResponses(value = { 
+        @ApiResponse(code = 200, message = "successful operation", response = Void.class),
         @ApiResponse(code = 400, message = "Invalid ID supplied", response = Void.class),
         @ApiResponse(code = 404, message = "Pet not found", response = Void.class),
         @ApiResponse(code = 405, message = "Validation exception", response = Void.class) })
-    Response updatePet(@Valid Pet pet);
+    Response updatePet(@Valid Pet body);
 
     @POST
     @Path("/{petId}")
diff --git a/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/api/StoreApi.java b/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/api/StoreApi.java
index 2712d44cc7861721e3dd170c48e1760eceba3da6..802979265c27f1d2228e679e0c013a3a4e6da9a6 100644
--- a/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/api/StoreApi.java
+++ b/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/api/StoreApi.java
@@ -53,5 +53,5 @@ public interface StoreApi {
     @ApiResponses(value = { 
         @ApiResponse(code = 200, message = "successful operation", response = Order.class),
         @ApiResponse(code = 400, message = "Invalid Order", response = Void.class) })
-    Response placeOrder(@Valid Order order);
+    Response placeOrder(@Valid Order body);
 }
diff --git a/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/api/UserApi.java b/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/api/UserApi.java
index d239142bf3cbd3399acbeb13037f9401edd0a42e..7848c218f5eed3adb33b601d13d842c0a0388d9b 100644
--- a/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/api/UserApi.java
+++ b/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/api/UserApi.java
@@ -22,21 +22,21 @@ public interface UserApi {
     @ApiOperation(value = "Create user", notes = "This can only be done by the logged in user.", tags={ "user",  })
     @ApiResponses(value = { 
         @ApiResponse(code = 200, message = "successful operation", response = Void.class) })
-    Response createUser(@Valid User user);
+    Response createUser(@Valid User body);
 
     @POST
     @Path("/createWithArray")
     @ApiOperation(value = "Creates list of users with given input array", notes = "", tags={ "user",  })
     @ApiResponses(value = { 
         @ApiResponse(code = 200, message = "successful operation", response = Void.class) })
-    Response createUsersWithArrayInput(@Valid List<User> user);
+    Response createUsersWithArrayInput(@Valid List<User> body);
 
     @POST
     @Path("/createWithList")
     @ApiOperation(value = "Creates list of users with given input array", notes = "", tags={ "user",  })
     @ApiResponses(value = { 
         @ApiResponse(code = 200, message = "successful operation", response = Void.class) })
-    Response createUsersWithListInput(@Valid List<User> user);
+    Response createUsersWithListInput(@Valid List<User> body);
 
     @DELETE
     @Path("/{username}")
@@ -78,5 +78,5 @@ public interface UserApi {
     @ApiResponses(value = { 
         @ApiResponse(code = 400, message = "Invalid user supplied", response = Void.class),
         @ApiResponse(code = 404, message = "User not found", response = Void.class) })
-    Response updateUser(@PathParam("username") @ApiParam("name that need to be deleted") String username,@Valid User user);
+    Response updateUser(@PathParam("username") @ApiParam("name that need to be deleted") String username,@Valid User body);
 }
diff --git a/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/AdditionalPropertiesAnyType.java b/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/AdditionalPropertiesAnyType.java
new file mode 100644
index 0000000000000000000000000000000000000000..31bbf64e9f37d659d1b6daebc532e2f55330aaed
--- /dev/null
+++ b/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/AdditionalPropertiesAnyType.java
@@ -0,0 +1,96 @@
+package org.openapitools.model;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import java.util.HashMap;
+import java.util.Map;
+import java.io.Serializable;
+import javax.validation.constraints.*;
+import javax.validation.Valid;
+
+import io.swagger.annotations.*;
+import java.util.Objects;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonValue;
+
+
+
+public class AdditionalPropertiesAnyType extends HashMap<String, Object> implements Serializable {
+  
+  private @Valid String name;
+
+  public AdditionalPropertiesAnyType(String name) {
+    this.name = name;
+  }
+
+  
+  @ApiModelProperty(value = "")
+  @JsonProperty("name")
+  public String getName() {
+    return name;
+  }
+
+  public void setName(String name) {
+    this.name = name;
+  }
+
+  @Override
+  public boolean equals(java.lang.Object o) {
+    if (this == o) {
+      return true;
+    }
+    if (o == null || getClass() != o.getClass()) {
+      return false;
+    }
+    AdditionalPropertiesAnyType additionalPropertiesAnyType = (AdditionalPropertiesAnyType) o;
+    return Objects.equals(this.name, additionalPropertiesAnyType.name) &&
+        super.equals(o);
+  }
+
+  @Override
+  public int hashCode() {
+    return Objects.hash(name, super.hashCode());
+  }
+
+  @Override
+  public String toString() {
+    StringBuilder sb = new StringBuilder();
+    sb.append("class AdditionalPropertiesAnyType {\n");
+    sb.append("    ").append(toIndentedString(super.toString())).append("\n");
+    sb.append("    name: ").append(toIndentedString(name)).append("\n");
+    sb.append("}");
+    return sb.toString();
+  }
+
+  /**
+   * Convert the given object to string with each line indented by 4 spaces
+   * (except the first line).
+   */
+  private String toIndentedString(java.lang.Object o) {
+    if (o == null) {
+      return "null";
+    }
+    return o.toString().replace("\n", "\n    ");
+  }
+
+  public static Builder builder() {
+    return new Builder();
+  }
+
+  public static class Builder {
+    private String name;
+
+    /**
+      **/
+    public Builder name(String name) {
+      this.name = name;
+      return this;
+    }
+
+    public AdditionalPropertiesAnyType build() {
+      return new AdditionalPropertiesAnyType(name);
+    }
+  }
+}
+
diff --git a/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/AdditionalPropertiesArray.java b/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/AdditionalPropertiesArray.java
new file mode 100644
index 0000000000000000000000000000000000000000..2d1818a51600872226f203944aa2a693941bf4aa
--- /dev/null
+++ b/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/AdditionalPropertiesArray.java
@@ -0,0 +1,97 @@
+package org.openapitools.model;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.io.Serializable;
+import javax.validation.constraints.*;
+import javax.validation.Valid;
+
+import io.swagger.annotations.*;
+import java.util.Objects;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonValue;
+
+
+
+public class AdditionalPropertiesArray extends HashMap<String, List> implements Serializable {
+  
+  private @Valid String name;
+
+  public AdditionalPropertiesArray(String name) {
+    this.name = name;
+  }
+
+  
+  @ApiModelProperty(value = "")
+  @JsonProperty("name")
+  public String getName() {
+    return name;
+  }
+
+  public void setName(String name) {
+    this.name = name;
+  }
+
+  @Override
+  public boolean equals(java.lang.Object o) {
+    if (this == o) {
+      return true;
+    }
+    if (o == null || getClass() != o.getClass()) {
+      return false;
+    }
+    AdditionalPropertiesArray additionalPropertiesArray = (AdditionalPropertiesArray) o;
+    return Objects.equals(this.name, additionalPropertiesArray.name) &&
+        super.equals(o);
+  }
+
+  @Override
+  public int hashCode() {
+    return Objects.hash(name, super.hashCode());
+  }
+
+  @Override
+  public String toString() {
+    StringBuilder sb = new StringBuilder();
+    sb.append("class AdditionalPropertiesArray {\n");
+    sb.append("    ").append(toIndentedString(super.toString())).append("\n");
+    sb.append("    name: ").append(toIndentedString(name)).append("\n");
+    sb.append("}");
+    return sb.toString();
+  }
+
+  /**
+   * Convert the given object to string with each line indented by 4 spaces
+   * (except the first line).
+   */
+  private String toIndentedString(java.lang.Object o) {
+    if (o == null) {
+      return "null";
+    }
+    return o.toString().replace("\n", "\n    ");
+  }
+
+  public static Builder builder() {
+    return new Builder();
+  }
+
+  public static class Builder {
+    private String name;
+
+    /**
+      **/
+    public Builder name(String name) {
+      this.name = name;
+      return this;
+    }
+
+    public AdditionalPropertiesArray build() {
+      return new AdditionalPropertiesArray(name);
+    }
+  }
+}
+
diff --git a/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/AdditionalPropertiesBoolean.java b/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/AdditionalPropertiesBoolean.java
new file mode 100644
index 0000000000000000000000000000000000000000..58f57067781c13f30e4a055d38621cb599716d4e
--- /dev/null
+++ b/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/AdditionalPropertiesBoolean.java
@@ -0,0 +1,96 @@
+package org.openapitools.model;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import java.util.HashMap;
+import java.util.Map;
+import java.io.Serializable;
+import javax.validation.constraints.*;
+import javax.validation.Valid;
+
+import io.swagger.annotations.*;
+import java.util.Objects;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonValue;
+
+
+
+public class AdditionalPropertiesBoolean extends HashMap<String, Boolean> implements Serializable {
+  
+  private @Valid String name;
+
+  public AdditionalPropertiesBoolean(String name) {
+    this.name = name;
+  }
+
+  
+  @ApiModelProperty(value = "")
+  @JsonProperty("name")
+  public String getName() {
+    return name;
+  }
+
+  public void setName(String name) {
+    this.name = name;
+  }
+
+  @Override
+  public boolean equals(java.lang.Object o) {
+    if (this == o) {
+      return true;
+    }
+    if (o == null || getClass() != o.getClass()) {
+      return false;
+    }
+    AdditionalPropertiesBoolean additionalPropertiesBoolean = (AdditionalPropertiesBoolean) o;
+    return Objects.equals(this.name, additionalPropertiesBoolean.name) &&
+        super.equals(o);
+  }
+
+  @Override
+  public int hashCode() {
+    return Objects.hash(name, super.hashCode());
+  }
+
+  @Override
+  public String toString() {
+    StringBuilder sb = new StringBuilder();
+    sb.append("class AdditionalPropertiesBoolean {\n");
+    sb.append("    ").append(toIndentedString(super.toString())).append("\n");
+    sb.append("    name: ").append(toIndentedString(name)).append("\n");
+    sb.append("}");
+    return sb.toString();
+  }
+
+  /**
+   * Convert the given object to string with each line indented by 4 spaces
+   * (except the first line).
+   */
+  private String toIndentedString(java.lang.Object o) {
+    if (o == null) {
+      return "null";
+    }
+    return o.toString().replace("\n", "\n    ");
+  }
+
+  public static Builder builder() {
+    return new Builder();
+  }
+
+  public static class Builder {
+    private String name;
+
+    /**
+      **/
+    public Builder name(String name) {
+      this.name = name;
+      return this;
+    }
+
+    public AdditionalPropertiesBoolean build() {
+      return new AdditionalPropertiesBoolean(name);
+    }
+  }
+}
+
diff --git a/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/AdditionalPropertiesClass.java b/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/AdditionalPropertiesClass.java
index 58abe9915cb2ec1f46e21d44537d969913c8f290..6ac45541de7f6e38f413a05917a580b6b7ba628e 100644
--- a/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/AdditionalPropertiesClass.java
+++ b/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/AdditionalPropertiesClass.java
@@ -2,6 +2,7 @@ package org.openapitools.model;
 
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
+import java.math.BigDecimal;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
@@ -19,43 +20,132 @@ import com.fasterxml.jackson.annotation.JsonValue;
 
 public class AdditionalPropertiesClass  implements Serializable {
   
-  private @Valid Map<String, String> mapProperty = new HashMap<String, String>();
-  private @Valid Map<String, Map<String, String>> mapOfMapProperty = new HashMap<String, Map<String, String>>();
+  private @Valid Map<String, String> mapString = new HashMap<String, String>();
+  private @Valid Map<String, BigDecimal> mapNumber = new HashMap<String, BigDecimal>();
+  private @Valid Map<String, Integer> mapInteger = new HashMap<String, Integer>();
+  private @Valid Map<String, Boolean> mapBoolean = new HashMap<String, Boolean>();
+  private @Valid Map<String, List<Integer>> mapArrayInteger = new HashMap<String, List<Integer>>();
+  private @Valid Map<String, List<Object>> mapArrayAnytype = new HashMap<String, List<Object>>();
+  private @Valid Map<String, Map<String, String>> mapMapString = new HashMap<String, Map<String, String>>();
+  private @Valid Map<String, Map<String, Object>> mapMapAnytype = new HashMap<String, Map<String, Object>>();
+  private @Valid Object anytype1;
+  private @Valid Object anytype2;
+  private @Valid Object anytype3;
 
-  /**
-   **/
-  public AdditionalPropertiesClass mapProperty(Map<String, String> mapProperty) {
-    this.mapProperty = mapProperty;
-    return this;
+  public AdditionalPropertiesClass(Map<String, String> mapString, Map<String, BigDecimal> mapNumber, Map<String, Integer> mapInteger, Map<String, Boolean> mapBoolean, Map<String, List<Integer>> mapArrayInteger, Map<String, List<Object>> mapArrayAnytype, Map<String, Map<String, String>> mapMapString, Map<String, Map<String, Object>> mapMapAnytype, Object anytype1, Object anytype2, Object anytype3) {
+    this.mapString = mapString;
+    this.mapNumber = mapNumber;
+    this.mapInteger = mapInteger;
+    this.mapBoolean = mapBoolean;
+    this.mapArrayInteger = mapArrayInteger;
+    this.mapArrayAnytype = mapArrayAnytype;
+    this.mapMapString = mapMapString;
+    this.mapMapAnytype = mapMapAnytype;
+    this.anytype1 = anytype1;
+    this.anytype2 = anytype2;
+    this.anytype3 = anytype3;
   }
 
   
   @ApiModelProperty(value = "")
-  @JsonProperty("map_property")
-  public Map<String, String> getMapProperty() {
-    return mapProperty;
+  @JsonProperty("map_string")
+  public Map<String, String> getMapString() {
+    return mapString;
+  }
+
+  public void setMapString(Map<String, String> mapString) {
+    this.mapString = mapString;
   }
-  public void setMapProperty(Map<String, String> mapProperty) {
-    this.mapProperty = mapProperty;
+  @ApiModelProperty(value = "")
+  @JsonProperty("map_number")
+  public Map<String, BigDecimal> getMapNumber() {
+    return mapNumber;
   }
 
-  /**
-   **/
-  public AdditionalPropertiesClass mapOfMapProperty(Map<String, Map<String, String>> mapOfMapProperty) {
-    this.mapOfMapProperty = mapOfMapProperty;
-    return this;
+  public void setMapNumber(Map<String, BigDecimal> mapNumber) {
+    this.mapNumber = mapNumber;
+  }
+  @ApiModelProperty(value = "")
+  @JsonProperty("map_integer")
+  public Map<String, Integer> getMapInteger() {
+    return mapInteger;
   }
 
-  
+  public void setMapInteger(Map<String, Integer> mapInteger) {
+    this.mapInteger = mapInteger;
+  }
+  @ApiModelProperty(value = "")
+  @JsonProperty("map_boolean")
+  public Map<String, Boolean> getMapBoolean() {
+    return mapBoolean;
+  }
+
+  public void setMapBoolean(Map<String, Boolean> mapBoolean) {
+    this.mapBoolean = mapBoolean;
+  }
+  @ApiModelProperty(value = "")
+  @JsonProperty("map_array_integer")
+  public Map<String, List<Integer>> getMapArrayInteger() {
+    return mapArrayInteger;
+  }
+
+  public void setMapArrayInteger(Map<String, List<Integer>> mapArrayInteger) {
+    this.mapArrayInteger = mapArrayInteger;
+  }
+  @ApiModelProperty(value = "")
+  @JsonProperty("map_array_anytype")
+  public Map<String, List<Object>> getMapArrayAnytype() {
+    return mapArrayAnytype;
+  }
+
+  public void setMapArrayAnytype(Map<String, List<Object>> mapArrayAnytype) {
+    this.mapArrayAnytype = mapArrayAnytype;
+  }
   @ApiModelProperty(value = "")
-  @JsonProperty("map_of_map_property")
-  public Map<String, Map<String, String>> getMapOfMapProperty() {
-    return mapOfMapProperty;
+  @JsonProperty("map_map_string")
+  public Map<String, Map<String, String>> getMapMapString() {
+    return mapMapString;
   }
-  public void setMapOfMapProperty(Map<String, Map<String, String>> mapOfMapProperty) {
-    this.mapOfMapProperty = mapOfMapProperty;
+
+  public void setMapMapString(Map<String, Map<String, String>> mapMapString) {
+    this.mapMapString = mapMapString;
+  }
+  @ApiModelProperty(value = "")
+  @JsonProperty("map_map_anytype")
+  public Map<String, Map<String, Object>> getMapMapAnytype() {
+    return mapMapAnytype;
   }
 
+  public void setMapMapAnytype(Map<String, Map<String, Object>> mapMapAnytype) {
+    this.mapMapAnytype = mapMapAnytype;
+  }
+  @ApiModelProperty(value = "")
+  @JsonProperty("anytype_1")
+  public Object getAnytype1() {
+    return anytype1;
+  }
+
+  public void setAnytype1(Object anytype1) {
+    this.anytype1 = anytype1;
+  }
+  @ApiModelProperty(value = "")
+  @JsonProperty("anytype_2")
+  public Object getAnytype2() {
+    return anytype2;
+  }
+
+  public void setAnytype2(Object anytype2) {
+    this.anytype2 = anytype2;
+  }
+  @ApiModelProperty(value = "")
+  @JsonProperty("anytype_3")
+  public Object getAnytype3() {
+    return anytype3;
+  }
+
+  public void setAnytype3(Object anytype3) {
+    this.anytype3 = anytype3;
+  }
 
   @Override
   public boolean equals(java.lang.Object o) {
@@ -66,13 +156,22 @@ public class AdditionalPropertiesClass  implements Serializable {
       return false;
     }
     AdditionalPropertiesClass additionalPropertiesClass = (AdditionalPropertiesClass) o;
-    return Objects.equals(mapProperty, additionalPropertiesClass.mapProperty) &&
-        Objects.equals(mapOfMapProperty, additionalPropertiesClass.mapOfMapProperty);
+    return Objects.equals(this.mapString, additionalPropertiesClass.mapString) &&
+        Objects.equals(this.mapNumber, additionalPropertiesClass.mapNumber) &&
+        Objects.equals(this.mapInteger, additionalPropertiesClass.mapInteger) &&
+        Objects.equals(this.mapBoolean, additionalPropertiesClass.mapBoolean) &&
+        Objects.equals(this.mapArrayInteger, additionalPropertiesClass.mapArrayInteger) &&
+        Objects.equals(this.mapArrayAnytype, additionalPropertiesClass.mapArrayAnytype) &&
+        Objects.equals(this.mapMapString, additionalPropertiesClass.mapMapString) &&
+        Objects.equals(this.mapMapAnytype, additionalPropertiesClass.mapMapAnytype) &&
+        Objects.equals(this.anytype1, additionalPropertiesClass.anytype1) &&
+        Objects.equals(this.anytype2, additionalPropertiesClass.anytype2) &&
+        Objects.equals(this.anytype3, additionalPropertiesClass.anytype3);
   }
 
   @Override
   public int hashCode() {
-    return Objects.hash(mapProperty, mapOfMapProperty);
+    return Objects.hash(mapString, mapNumber, mapInteger, mapBoolean, mapArrayInteger, mapArrayAnytype, mapMapString, mapMapAnytype, anytype1, anytype2, anytype3);
   }
 
   @Override
@@ -80,8 +179,17 @@ public class AdditionalPropertiesClass  implements Serializable {
     StringBuilder sb = new StringBuilder();
     sb.append("class AdditionalPropertiesClass {\n");
     
-    sb.append("    mapProperty: ").append(toIndentedString(mapProperty)).append("\n");
-    sb.append("    mapOfMapProperty: ").append(toIndentedString(mapOfMapProperty)).append("\n");
+    sb.append("    mapString: ").append(toIndentedString(mapString)).append("\n");
+    sb.append("    mapNumber: ").append(toIndentedString(mapNumber)).append("\n");
+    sb.append("    mapInteger: ").append(toIndentedString(mapInteger)).append("\n");
+    sb.append("    mapBoolean: ").append(toIndentedString(mapBoolean)).append("\n");
+    sb.append("    mapArrayInteger: ").append(toIndentedString(mapArrayInteger)).append("\n");
+    sb.append("    mapArrayAnytype: ").append(toIndentedString(mapArrayAnytype)).append("\n");
+    sb.append("    mapMapString: ").append(toIndentedString(mapMapString)).append("\n");
+    sb.append("    mapMapAnytype: ").append(toIndentedString(mapMapAnytype)).append("\n");
+    sb.append("    anytype1: ").append(toIndentedString(anytype1)).append("\n");
+    sb.append("    anytype2: ").append(toIndentedString(anytype2)).append("\n");
+    sb.append("    anytype3: ").append(toIndentedString(anytype3)).append("\n");
     sb.append("}");
     return sb.toString();
   }
@@ -96,5 +204,94 @@ public class AdditionalPropertiesClass  implements Serializable {
     }
     return o.toString().replace("\n", "\n    ");
   }
+
+  public static Builder builder() {
+    return new Builder();
+  }
+
+  public static class Builder {
+    private Map<String, String> mapString = new HashMap<String, String>();
+    private Map<String, BigDecimal> mapNumber = new HashMap<String, BigDecimal>();
+    private Map<String, Integer> mapInteger = new HashMap<String, Integer>();
+    private Map<String, Boolean> mapBoolean = new HashMap<String, Boolean>();
+    private Map<String, List<Integer>> mapArrayInteger = new HashMap<String, List<Integer>>();
+    private Map<String, List<Object>> mapArrayAnytype = new HashMap<String, List<Object>>();
+    private Map<String, Map<String, String>> mapMapString = new HashMap<String, Map<String, String>>();
+    private Map<String, Map<String, Object>> mapMapAnytype = new HashMap<String, Map<String, Object>>();
+    private Object anytype1;
+    private Object anytype2;
+    private Object anytype3;
+
+    /**
+      **/
+    public Builder mapString(Map<String, String> mapString) {
+      this.mapString = mapString;
+      return this;
+    }
+    /**
+      **/
+    public Builder mapNumber(Map<String, BigDecimal> mapNumber) {
+      this.mapNumber = mapNumber;
+      return this;
+    }
+    /**
+      **/
+    public Builder mapInteger(Map<String, Integer> mapInteger) {
+      this.mapInteger = mapInteger;
+      return this;
+    }
+    /**
+      **/
+    public Builder mapBoolean(Map<String, Boolean> mapBoolean) {
+      this.mapBoolean = mapBoolean;
+      return this;
+    }
+    /**
+      **/
+    public Builder mapArrayInteger(Map<String, List<Integer>> mapArrayInteger) {
+      this.mapArrayInteger = mapArrayInteger;
+      return this;
+    }
+    /**
+      **/
+    public Builder mapArrayAnytype(Map<String, List<Object>> mapArrayAnytype) {
+      this.mapArrayAnytype = mapArrayAnytype;
+      return this;
+    }
+    /**
+      **/
+    public Builder mapMapString(Map<String, Map<String, String>> mapMapString) {
+      this.mapMapString = mapMapString;
+      return this;
+    }
+    /**
+      **/
+    public Builder mapMapAnytype(Map<String, Map<String, Object>> mapMapAnytype) {
+      this.mapMapAnytype = mapMapAnytype;
+      return this;
+    }
+    /**
+      **/
+    public Builder anytype1(Object anytype1) {
+      this.anytype1 = anytype1;
+      return this;
+    }
+    /**
+      **/
+    public Builder anytype2(Object anytype2) {
+      this.anytype2 = anytype2;
+      return this;
+    }
+    /**
+      **/
+    public Builder anytype3(Object anytype3) {
+      this.anytype3 = anytype3;
+      return this;
+    }
+
+    public AdditionalPropertiesClass build() {
+      return new AdditionalPropertiesClass(mapString, mapNumber, mapInteger, mapBoolean, mapArrayInteger, mapArrayAnytype, mapMapString, mapMapAnytype, anytype1, anytype2, anytype3);
+    }
+  }
 }
 
diff --git a/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/AdditionalPropertiesInteger.java b/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/AdditionalPropertiesInteger.java
new file mode 100644
index 0000000000000000000000000000000000000000..d90d6b1cfe15c8121331285254e8d6caa2aff9e1
--- /dev/null
+++ b/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/AdditionalPropertiesInteger.java
@@ -0,0 +1,96 @@
+package org.openapitools.model;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import java.util.HashMap;
+import java.util.Map;
+import java.io.Serializable;
+import javax.validation.constraints.*;
+import javax.validation.Valid;
+
+import io.swagger.annotations.*;
+import java.util.Objects;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonValue;
+
+
+
+public class AdditionalPropertiesInteger extends HashMap<String, Integer> implements Serializable {
+  
+  private @Valid String name;
+
+  public AdditionalPropertiesInteger(String name) {
+    this.name = name;
+  }
+
+  
+  @ApiModelProperty(value = "")
+  @JsonProperty("name")
+  public String getName() {
+    return name;
+  }
+
+  public void setName(String name) {
+    this.name = name;
+  }
+
+  @Override
+  public boolean equals(java.lang.Object o) {
+    if (this == o) {
+      return true;
+    }
+    if (o == null || getClass() != o.getClass()) {
+      return false;
+    }
+    AdditionalPropertiesInteger additionalPropertiesInteger = (AdditionalPropertiesInteger) o;
+    return Objects.equals(this.name, additionalPropertiesInteger.name) &&
+        super.equals(o);
+  }
+
+  @Override
+  public int hashCode() {
+    return Objects.hash(name, super.hashCode());
+  }
+
+  @Override
+  public String toString() {
+    StringBuilder sb = new StringBuilder();
+    sb.append("class AdditionalPropertiesInteger {\n");
+    sb.append("    ").append(toIndentedString(super.toString())).append("\n");
+    sb.append("    name: ").append(toIndentedString(name)).append("\n");
+    sb.append("}");
+    return sb.toString();
+  }
+
+  /**
+   * Convert the given object to string with each line indented by 4 spaces
+   * (except the first line).
+   */
+  private String toIndentedString(java.lang.Object o) {
+    if (o == null) {
+      return "null";
+    }
+    return o.toString().replace("\n", "\n    ");
+  }
+
+  public static Builder builder() {
+    return new Builder();
+  }
+
+  public static class Builder {
+    private String name;
+
+    /**
+      **/
+    public Builder name(String name) {
+      this.name = name;
+      return this;
+    }
+
+    public AdditionalPropertiesInteger build() {
+      return new AdditionalPropertiesInteger(name);
+    }
+  }
+}
+
diff --git a/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/AdditionalPropertiesNumber.java b/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/AdditionalPropertiesNumber.java
new file mode 100644
index 0000000000000000000000000000000000000000..a0f02e3e3e50fe62f6bb7fabd0e04a35643631c5
--- /dev/null
+++ b/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/AdditionalPropertiesNumber.java
@@ -0,0 +1,97 @@
+package org.openapitools.model;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import java.math.BigDecimal;
+import java.util.HashMap;
+import java.util.Map;
+import java.io.Serializable;
+import javax.validation.constraints.*;
+import javax.validation.Valid;
+
+import io.swagger.annotations.*;
+import java.util.Objects;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonValue;
+
+
+
+public class AdditionalPropertiesNumber extends HashMap<String, BigDecimal> implements Serializable {
+  
+  private @Valid String name;
+
+  public AdditionalPropertiesNumber(String name) {
+    this.name = name;
+  }
+
+  
+  @ApiModelProperty(value = "")
+  @JsonProperty("name")
+  public String getName() {
+    return name;
+  }
+
+  public void setName(String name) {
+    this.name = name;
+  }
+
+  @Override
+  public boolean equals(java.lang.Object o) {
+    if (this == o) {
+      return true;
+    }
+    if (o == null || getClass() != o.getClass()) {
+      return false;
+    }
+    AdditionalPropertiesNumber additionalPropertiesNumber = (AdditionalPropertiesNumber) o;
+    return Objects.equals(this.name, additionalPropertiesNumber.name) &&
+        super.equals(o);
+  }
+
+  @Override
+  public int hashCode() {
+    return Objects.hash(name, super.hashCode());
+  }
+
+  @Override
+  public String toString() {
+    StringBuilder sb = new StringBuilder();
+    sb.append("class AdditionalPropertiesNumber {\n");
+    sb.append("    ").append(toIndentedString(super.toString())).append("\n");
+    sb.append("    name: ").append(toIndentedString(name)).append("\n");
+    sb.append("}");
+    return sb.toString();
+  }
+
+  /**
+   * Convert the given object to string with each line indented by 4 spaces
+   * (except the first line).
+   */
+  private String toIndentedString(java.lang.Object o) {
+    if (o == null) {
+      return "null";
+    }
+    return o.toString().replace("\n", "\n    ");
+  }
+
+  public static Builder builder() {
+    return new Builder();
+  }
+
+  public static class Builder {
+    private String name;
+
+    /**
+      **/
+    public Builder name(String name) {
+      this.name = name;
+      return this;
+    }
+
+    public AdditionalPropertiesNumber build() {
+      return new AdditionalPropertiesNumber(name);
+    }
+  }
+}
+
diff --git a/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/AdditionalPropertiesObject.java b/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/AdditionalPropertiesObject.java
new file mode 100644
index 0000000000000000000000000000000000000000..78e0b9190bf83a2c637bcc41b2b49a87d027a82c
--- /dev/null
+++ b/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/AdditionalPropertiesObject.java
@@ -0,0 +1,96 @@
+package org.openapitools.model;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import java.util.HashMap;
+import java.util.Map;
+import java.io.Serializable;
+import javax.validation.constraints.*;
+import javax.validation.Valid;
+
+import io.swagger.annotations.*;
+import java.util.Objects;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonValue;
+
+
+
+public class AdditionalPropertiesObject extends HashMap<String, Map> implements Serializable {
+  
+  private @Valid String name;
+
+  public AdditionalPropertiesObject(String name) {
+    this.name = name;
+  }
+
+  
+  @ApiModelProperty(value = "")
+  @JsonProperty("name")
+  public String getName() {
+    return name;
+  }
+
+  public void setName(String name) {
+    this.name = name;
+  }
+
+  @Override
+  public boolean equals(java.lang.Object o) {
+    if (this == o) {
+      return true;
+    }
+    if (o == null || getClass() != o.getClass()) {
+      return false;
+    }
+    AdditionalPropertiesObject additionalPropertiesObject = (AdditionalPropertiesObject) o;
+    return Objects.equals(this.name, additionalPropertiesObject.name) &&
+        super.equals(o);
+  }
+
+  @Override
+  public int hashCode() {
+    return Objects.hash(name, super.hashCode());
+  }
+
+  @Override
+  public String toString() {
+    StringBuilder sb = new StringBuilder();
+    sb.append("class AdditionalPropertiesObject {\n");
+    sb.append("    ").append(toIndentedString(super.toString())).append("\n");
+    sb.append("    name: ").append(toIndentedString(name)).append("\n");
+    sb.append("}");
+    return sb.toString();
+  }
+
+  /**
+   * Convert the given object to string with each line indented by 4 spaces
+   * (except the first line).
+   */
+  private String toIndentedString(java.lang.Object o) {
+    if (o == null) {
+      return "null";
+    }
+    return o.toString().replace("\n", "\n    ");
+  }
+
+  public static Builder builder() {
+    return new Builder();
+  }
+
+  public static class Builder {
+    private String name;
+
+    /**
+      **/
+    public Builder name(String name) {
+      this.name = name;
+      return this;
+    }
+
+    public AdditionalPropertiesObject build() {
+      return new AdditionalPropertiesObject(name);
+    }
+  }
+}
+
diff --git a/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/AdditionalPropertiesString.java b/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/AdditionalPropertiesString.java
new file mode 100644
index 0000000000000000000000000000000000000000..117551ee44016412de91733b1f947f16519f40b4
--- /dev/null
+++ b/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/AdditionalPropertiesString.java
@@ -0,0 +1,96 @@
+package org.openapitools.model;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import java.util.HashMap;
+import java.util.Map;
+import java.io.Serializable;
+import javax.validation.constraints.*;
+import javax.validation.Valid;
+
+import io.swagger.annotations.*;
+import java.util.Objects;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonValue;
+
+
+
+public class AdditionalPropertiesString extends HashMap<String, String> implements Serializable {
+  
+  private @Valid String name;
+
+  public AdditionalPropertiesString(String name) {
+    this.name = name;
+  }
+
+  
+  @ApiModelProperty(value = "")
+  @JsonProperty("name")
+  public String getName() {
+    return name;
+  }
+
+  public void setName(String name) {
+    this.name = name;
+  }
+
+  @Override
+  public boolean equals(java.lang.Object o) {
+    if (this == o) {
+      return true;
+    }
+    if (o == null || getClass() != o.getClass()) {
+      return false;
+    }
+    AdditionalPropertiesString additionalPropertiesString = (AdditionalPropertiesString) o;
+    return Objects.equals(this.name, additionalPropertiesString.name) &&
+        super.equals(o);
+  }
+
+  @Override
+  public int hashCode() {
+    return Objects.hash(name, super.hashCode());
+  }
+
+  @Override
+  public String toString() {
+    StringBuilder sb = new StringBuilder();
+    sb.append("class AdditionalPropertiesString {\n");
+    sb.append("    ").append(toIndentedString(super.toString())).append("\n");
+    sb.append("    name: ").append(toIndentedString(name)).append("\n");
+    sb.append("}");
+    return sb.toString();
+  }
+
+  /**
+   * Convert the given object to string with each line indented by 4 spaces
+   * (except the first line).
+   */
+  private String toIndentedString(java.lang.Object o) {
+    if (o == null) {
+      return "null";
+    }
+    return o.toString().replace("\n", "\n    ");
+  }
+
+  public static Builder builder() {
+    return new Builder();
+  }
+
+  public static class Builder {
+    private String name;
+
+    /**
+      **/
+    public Builder name(String name) {
+      this.name = name;
+      return this;
+    }
+
+    public AdditionalPropertiesString build() {
+      return new AdditionalPropertiesString(name);
+    }
+  }
+}
+
diff --git a/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/Animal.java b/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/Animal.java
index 8b2e9658341df2fd3fbf45231e59bf61e5184cac..99dbe4b8989671a0c0f6e3f8f1b155c1c81055b1 100644
--- a/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/Animal.java
+++ b/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/Animal.java
@@ -14,6 +14,12 @@ import com.fasterxml.jackson.annotation.JsonProperty;
 import com.fasterxml.jackson.annotation.JsonCreator;
 import com.fasterxml.jackson.annotation.JsonValue;
 
+@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "className", visible = true)
+@JsonSubTypes({
+  @JsonSubTypes.Type(value = Dog.class, name = "Dog"),
+  @JsonSubTypes.Type(value = Cat.class, name = "Cat"),
+  @JsonSubTypes.Type(value = BigCat.class, name = "BigCat"),
+})
 
 
 public class Animal  implements Serializable {
@@ -21,11 +27,9 @@ public class Animal  implements Serializable {
   private @Valid String className;
   private @Valid String color = "red";
 
-  /**
-   **/
-  public Animal className(String className) {
+  public Animal(String className, String color) {
     this.className = className;
-    return this;
+    this.color = color;
   }
 
   
@@ -35,28 +39,20 @@ public class Animal  implements Serializable {
   public String getClassName() {
     return className;
   }
+
   public void setClassName(String className) {
     this.className = className;
   }
-
-  /**
-   **/
-  public Animal color(String color) {
-    this.color = color;
-    return this;
-  }
-
-  
   @ApiModelProperty(value = "")
   @JsonProperty("color")
   public String getColor() {
     return color;
   }
+
   public void setColor(String color) {
     this.color = color;
   }
 
-
   @Override
   public boolean equals(java.lang.Object o) {
     if (this == o) {
@@ -66,8 +62,8 @@ public class Animal  implements Serializable {
       return false;
     }
     Animal animal = (Animal) o;
-    return Objects.equals(className, animal.className) &&
-        Objects.equals(color, animal.color);
+    return Objects.equals(this.className, animal.className) &&
+        Objects.equals(this.color, animal.color);
   }
 
   @Override
@@ -96,5 +92,31 @@ public class Animal  implements Serializable {
     }
     return o.toString().replace("\n", "\n    ");
   }
+
+  public static Builder builder() {
+    return new Builder();
+  }
+
+  public static class Builder {
+    private String className;
+    private String color = "red";
+
+    /**
+      **/
+    public Builder className(String className) {
+      this.className = className;
+      return this;
+    }
+    /**
+      **/
+    public Builder color(String color) {
+      this.color = color;
+      return this;
+    }
+
+    public Animal build() {
+      return new Animal(className, color);
+    }
+  }
 }
 
diff --git a/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/ArrayOfArrayOfNumberOnly.java b/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/ArrayOfArrayOfNumberOnly.java
index 43d65d72f381025fd1e832df09e1bfcfa6d2fc8e..4c7e6161185bcd73fae0525d371d1b3b4dbe5c7c 100644
--- a/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/ArrayOfArrayOfNumberOnly.java
+++ b/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/ArrayOfArrayOfNumberOnly.java
@@ -21,11 +21,8 @@ public class ArrayOfArrayOfNumberOnly  implements Serializable {
   
   private @Valid List<List<BigDecimal>> arrayArrayNumber = new ArrayList<List<BigDecimal>>();
 
-  /**
-   **/
-  public ArrayOfArrayOfNumberOnly arrayArrayNumber(List<List<BigDecimal>> arrayArrayNumber) {
+  public ArrayOfArrayOfNumberOnly(List<List<BigDecimal>> arrayArrayNumber) {
     this.arrayArrayNumber = arrayArrayNumber;
-    return this;
   }
 
   
@@ -34,11 +31,11 @@ public class ArrayOfArrayOfNumberOnly  implements Serializable {
   public List<List<BigDecimal>> getArrayArrayNumber() {
     return arrayArrayNumber;
   }
+
   public void setArrayArrayNumber(List<List<BigDecimal>> arrayArrayNumber) {
     this.arrayArrayNumber = arrayArrayNumber;
   }
 
-
   @Override
   public boolean equals(java.lang.Object o) {
     if (this == o) {
@@ -48,7 +45,7 @@ public class ArrayOfArrayOfNumberOnly  implements Serializable {
       return false;
     }
     ArrayOfArrayOfNumberOnly arrayOfArrayOfNumberOnly = (ArrayOfArrayOfNumberOnly) o;
-    return Objects.equals(arrayArrayNumber, arrayOfArrayOfNumberOnly.arrayArrayNumber);
+    return Objects.equals(this.arrayArrayNumber, arrayOfArrayOfNumberOnly.arrayArrayNumber);
   }
 
   @Override
@@ -76,5 +73,24 @@ public class ArrayOfArrayOfNumberOnly  implements Serializable {
     }
     return o.toString().replace("\n", "\n    ");
   }
+
+  public static Builder builder() {
+    return new Builder();
+  }
+
+  public static class Builder {
+    private List<List<BigDecimal>> arrayArrayNumber = new ArrayList<List<BigDecimal>>();
+
+    /**
+      **/
+    public Builder arrayArrayNumber(List<List<BigDecimal>> arrayArrayNumber) {
+      this.arrayArrayNumber = arrayArrayNumber;
+      return this;
+    }
+
+    public ArrayOfArrayOfNumberOnly build() {
+      return new ArrayOfArrayOfNumberOnly(arrayArrayNumber);
+    }
+  }
 }
 
diff --git a/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/ArrayOfNumberOnly.java b/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/ArrayOfNumberOnly.java
index f29bd99493aee404543f0f0e320ff28dadfb47a2..ee848ee4d8cdfe6a5624583aa531d12a2e1f068a 100644
--- a/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/ArrayOfNumberOnly.java
+++ b/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/ArrayOfNumberOnly.java
@@ -21,11 +21,8 @@ public class ArrayOfNumberOnly  implements Serializable {
   
   private @Valid List<BigDecimal> arrayNumber = new ArrayList<BigDecimal>();
 
-  /**
-   **/
-  public ArrayOfNumberOnly arrayNumber(List<BigDecimal> arrayNumber) {
+  public ArrayOfNumberOnly(List<BigDecimal> arrayNumber) {
     this.arrayNumber = arrayNumber;
-    return this;
   }
 
   
@@ -34,11 +31,11 @@ public class ArrayOfNumberOnly  implements Serializable {
   public List<BigDecimal> getArrayNumber() {
     return arrayNumber;
   }
+
   public void setArrayNumber(List<BigDecimal> arrayNumber) {
     this.arrayNumber = arrayNumber;
   }
 
-
   @Override
   public boolean equals(java.lang.Object o) {
     if (this == o) {
@@ -48,7 +45,7 @@ public class ArrayOfNumberOnly  implements Serializable {
       return false;
     }
     ArrayOfNumberOnly arrayOfNumberOnly = (ArrayOfNumberOnly) o;
-    return Objects.equals(arrayNumber, arrayOfNumberOnly.arrayNumber);
+    return Objects.equals(this.arrayNumber, arrayOfNumberOnly.arrayNumber);
   }
 
   @Override
@@ -76,5 +73,24 @@ public class ArrayOfNumberOnly  implements Serializable {
     }
     return o.toString().replace("\n", "\n    ");
   }
+
+  public static Builder builder() {
+    return new Builder();
+  }
+
+  public static class Builder {
+    private List<BigDecimal> arrayNumber = new ArrayList<BigDecimal>();
+
+    /**
+      **/
+    public Builder arrayNumber(List<BigDecimal> arrayNumber) {
+      this.arrayNumber = arrayNumber;
+      return this;
+    }
+
+    public ArrayOfNumberOnly build() {
+      return new ArrayOfNumberOnly(arrayNumber);
+    }
+  }
 }
 
diff --git a/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/ArrayTest.java b/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/ArrayTest.java
index 249f75701bef1a96552c0162a7acd2657b0ef5a6..194f3484185ebaffa2f52474761c6ca0f7b5350c 100644
--- a/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/ArrayTest.java
+++ b/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/ArrayTest.java
@@ -23,11 +23,10 @@ public class ArrayTest  implements Serializable {
   private @Valid List<List<Long>> arrayArrayOfInteger = new ArrayList<List<Long>>();
   private @Valid List<List<ReadOnlyFirst>> arrayArrayOfModel = new ArrayList<List<ReadOnlyFirst>>();
 
-  /**
-   **/
-  public ArrayTest arrayOfString(List<String> arrayOfString) {
+  public ArrayTest(List<String> arrayOfString, List<List<Long>> arrayArrayOfInteger, List<List<ReadOnlyFirst>> arrayArrayOfModel) {
     this.arrayOfString = arrayOfString;
-    return this;
+    this.arrayArrayOfInteger = arrayArrayOfInteger;
+    this.arrayArrayOfModel = arrayArrayOfModel;
   }
 
   
@@ -36,45 +35,29 @@ public class ArrayTest  implements Serializable {
   public List<String> getArrayOfString() {
     return arrayOfString;
   }
+
   public void setArrayOfString(List<String> arrayOfString) {
     this.arrayOfString = arrayOfString;
   }
-
-  /**
-   **/
-  public ArrayTest arrayArrayOfInteger(List<List<Long>> arrayArrayOfInteger) {
-    this.arrayArrayOfInteger = arrayArrayOfInteger;
-    return this;
-  }
-
-  
   @ApiModelProperty(value = "")
   @JsonProperty("array_array_of_integer")
   public List<List<Long>> getArrayArrayOfInteger() {
     return arrayArrayOfInteger;
   }
+
   public void setArrayArrayOfInteger(List<List<Long>> arrayArrayOfInteger) {
     this.arrayArrayOfInteger = arrayArrayOfInteger;
   }
-
-  /**
-   **/
-  public ArrayTest arrayArrayOfModel(List<List<ReadOnlyFirst>> arrayArrayOfModel) {
-    this.arrayArrayOfModel = arrayArrayOfModel;
-    return this;
-  }
-
-  
   @ApiModelProperty(value = "")
   @JsonProperty("array_array_of_model")
   public List<List<ReadOnlyFirst>> getArrayArrayOfModel() {
     return arrayArrayOfModel;
   }
+
   public void setArrayArrayOfModel(List<List<ReadOnlyFirst>> arrayArrayOfModel) {
     this.arrayArrayOfModel = arrayArrayOfModel;
   }
 
-
   @Override
   public boolean equals(java.lang.Object o) {
     if (this == o) {
@@ -84,9 +67,9 @@ public class ArrayTest  implements Serializable {
       return false;
     }
     ArrayTest arrayTest = (ArrayTest) o;
-    return Objects.equals(arrayOfString, arrayTest.arrayOfString) &&
-        Objects.equals(arrayArrayOfInteger, arrayTest.arrayArrayOfInteger) &&
-        Objects.equals(arrayArrayOfModel, arrayTest.arrayArrayOfModel);
+    return Objects.equals(this.arrayOfString, arrayTest.arrayOfString) &&
+        Objects.equals(this.arrayArrayOfInteger, arrayTest.arrayArrayOfInteger) &&
+        Objects.equals(this.arrayArrayOfModel, arrayTest.arrayArrayOfModel);
   }
 
   @Override
@@ -116,5 +99,38 @@ public class ArrayTest  implements Serializable {
     }
     return o.toString().replace("\n", "\n    ");
   }
+
+  public static Builder builder() {
+    return new Builder();
+  }
+
+  public static class Builder {
+    private List<String> arrayOfString = new ArrayList<String>();
+    private List<List<Long>> arrayArrayOfInteger = new ArrayList<List<Long>>();
+    private List<List<ReadOnlyFirst>> arrayArrayOfModel = new ArrayList<List<ReadOnlyFirst>>();
+
+    /**
+      **/
+    public Builder arrayOfString(List<String> arrayOfString) {
+      this.arrayOfString = arrayOfString;
+      return this;
+    }
+    /**
+      **/
+    public Builder arrayArrayOfInteger(List<List<Long>> arrayArrayOfInteger) {
+      this.arrayArrayOfInteger = arrayArrayOfInteger;
+      return this;
+    }
+    /**
+      **/
+    public Builder arrayArrayOfModel(List<List<ReadOnlyFirst>> arrayArrayOfModel) {
+      this.arrayArrayOfModel = arrayArrayOfModel;
+      return this;
+    }
+
+    public ArrayTest build() {
+      return new ArrayTest(arrayOfString, arrayArrayOfInteger, arrayArrayOfModel);
+    }
+  }
 }
 
diff --git a/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/BigCat.java b/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/BigCat.java
new file mode 100644
index 0000000000000000000000000000000000000000..159c185aeea21be9dbff458b2766127e697dfc71
--- /dev/null
+++ b/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/BigCat.java
@@ -0,0 +1,129 @@
+package org.openapitools.model;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import org.openapitools.model.BigCatAllOf;
+import org.openapitools.model.Cat;
+import java.io.Serializable;
+import javax.validation.constraints.*;
+import javax.validation.Valid;
+
+import io.swagger.annotations.*;
+import java.util.Objects;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonValue;
+
+
+
+public class BigCat extends Cat implements Serializable {
+  
+
+public enum KindEnum {
+
+    LIONS(String.valueOf("lions")), TIGERS(String.valueOf("tigers")), LEOPARDS(String.valueOf("leopards")), JAGUARS(String.valueOf("jaguars"));
+
+
+    private String value;
+
+    KindEnum (String v) {
+        value = v;
+    }
+
+    public String value() {
+        return value;
+    }
+
+    @Override
+    @JsonValue
+    public String toString() {
+        return String.valueOf(value);
+    }
+
+    @JsonCreator
+    public static KindEnum fromValue(String value) {
+        for (KindEnum b : KindEnum.values()) {
+            if (b.value.equals(value)) {
+                return b;
+            }
+        }
+        throw new IllegalArgumentException("Unexpected value '" + value + "'");
+    }
+}
+
+  private @Valid KindEnum kind;
+
+  public BigCat(KindEnum kind) {
+    this.kind = kind;
+  }
+
+  
+  @ApiModelProperty(value = "")
+  @JsonProperty("kind")
+  public KindEnum getKind() {
+    return kind;
+  }
+
+  public void setKind(KindEnum kind) {
+    this.kind = kind;
+  }
+
+  @Override
+  public boolean equals(java.lang.Object o) {
+    if (this == o) {
+      return true;
+    }
+    if (o == null || getClass() != o.getClass()) {
+      return false;
+    }
+    BigCat bigCat = (BigCat) o;
+    return Objects.equals(this.kind, bigCat.kind) &&
+        super.equals(o);
+  }
+
+  @Override
+  public int hashCode() {
+    return Objects.hash(kind, super.hashCode());
+  }
+
+  @Override
+  public String toString() {
+    StringBuilder sb = new StringBuilder();
+    sb.append("class BigCat {\n");
+    sb.append("    ").append(toIndentedString(super.toString())).append("\n");
+    sb.append("    kind: ").append(toIndentedString(kind)).append("\n");
+    sb.append("}");
+    return sb.toString();
+  }
+
+  /**
+   * Convert the given object to string with each line indented by 4 spaces
+   * (except the first line).
+   */
+  private String toIndentedString(java.lang.Object o) {
+    if (o == null) {
+      return "null";
+    }
+    return o.toString().replace("\n", "\n    ");
+  }
+
+  public static Builder builder() {
+    return new Builder();
+  }
+
+  public static class Builder {
+    private KindEnum kind;
+
+    /**
+      **/
+    public Builder kind(KindEnum kind) {
+      this.kind = kind;
+      return this;
+    }
+
+    public BigCat build() {
+      return new BigCat(kind);
+    }
+  }
+}
+
diff --git a/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/BigCatAllOf.java b/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/BigCatAllOf.java
new file mode 100644
index 0000000000000000000000000000000000000000..3adbecf3cb5fa7b04f09288d37d9c82d56edfbf0
--- /dev/null
+++ b/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/BigCatAllOf.java
@@ -0,0 +1,126 @@
+package org.openapitools.model;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import java.io.Serializable;
+import javax.validation.constraints.*;
+import javax.validation.Valid;
+
+import io.swagger.annotations.*;
+import java.util.Objects;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonValue;
+
+
+
+public class BigCatAllOf  implements Serializable {
+  
+
+public enum KindEnum {
+
+    LIONS(String.valueOf("lions")), TIGERS(String.valueOf("tigers")), LEOPARDS(String.valueOf("leopards")), JAGUARS(String.valueOf("jaguars"));
+
+
+    private String value;
+
+    KindEnum (String v) {
+        value = v;
+    }
+
+    public String value() {
+        return value;
+    }
+
+    @Override
+    @JsonValue
+    public String toString() {
+        return String.valueOf(value);
+    }
+
+    @JsonCreator
+    public static KindEnum fromValue(String value) {
+        for (KindEnum b : KindEnum.values()) {
+            if (b.value.equals(value)) {
+                return b;
+            }
+        }
+        throw new IllegalArgumentException("Unexpected value '" + value + "'");
+    }
+}
+
+  private @Valid KindEnum kind;
+
+  public BigCatAllOf(KindEnum kind) {
+    this.kind = kind;
+  }
+
+  
+  @ApiModelProperty(value = "")
+  @JsonProperty("kind")
+  public KindEnum getKind() {
+    return kind;
+  }
+
+  public void setKind(KindEnum kind) {
+    this.kind = kind;
+  }
+
+  @Override
+  public boolean equals(java.lang.Object o) {
+    if (this == o) {
+      return true;
+    }
+    if (o == null || getClass() != o.getClass()) {
+      return false;
+    }
+    BigCatAllOf bigCatAllOf = (BigCatAllOf) o;
+    return Objects.equals(this.kind, bigCatAllOf.kind);
+  }
+
+  @Override
+  public int hashCode() {
+    return Objects.hash(kind);
+  }
+
+  @Override
+  public String toString() {
+    StringBuilder sb = new StringBuilder();
+    sb.append("class BigCatAllOf {\n");
+    
+    sb.append("    kind: ").append(toIndentedString(kind)).append("\n");
+    sb.append("}");
+    return sb.toString();
+  }
+
+  /**
+   * Convert the given object to string with each line indented by 4 spaces
+   * (except the first line).
+   */
+  private String toIndentedString(java.lang.Object o) {
+    if (o == null) {
+      return "null";
+    }
+    return o.toString().replace("\n", "\n    ");
+  }
+
+  public static Builder builder() {
+    return new Builder();
+  }
+
+  public static class Builder {
+    private KindEnum kind;
+
+    /**
+      **/
+    public Builder kind(KindEnum kind) {
+      this.kind = kind;
+      return this;
+    }
+
+    public BigCatAllOf build() {
+      return new BigCatAllOf(kind);
+    }
+  }
+}
+
diff --git a/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/Capitalization.java b/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/Capitalization.java
index 5ca325b2667b4f49c86311a69b4c42ae58f0bf57..318dd912e7d4fac8ab9cc31106b6f6ba6f41ce01 100644
--- a/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/Capitalization.java
+++ b/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/Capitalization.java
@@ -23,11 +23,13 @@ public class Capitalization  implements Serializable {
   private @Valid String scAETHFlowPoints;
   private @Valid String ATT_NAME;
 
-  /**
-   **/
-  public Capitalization smallCamel(String smallCamel) {
+  public Capitalization(String smallCamel, String capitalCamel, String smallSnake, String capitalSnake, String scAETHFlowPoints, String ATT_NAME) {
     this.smallCamel = smallCamel;
-    return this;
+    this.capitalCamel = capitalCamel;
+    this.smallSnake = smallSnake;
+    this.capitalSnake = capitalSnake;
+    this.scAETHFlowPoints = scAETHFlowPoints;
+    this.ATT_NAME = ATT_NAME;
   }
 
   
@@ -36,97 +38,56 @@ public class Capitalization  implements Serializable {
   public String getSmallCamel() {
     return smallCamel;
   }
+
   public void setSmallCamel(String smallCamel) {
     this.smallCamel = smallCamel;
   }
-
-  /**
-   **/
-  public Capitalization capitalCamel(String capitalCamel) {
-    this.capitalCamel = capitalCamel;
-    return this;
-  }
-
-  
   @ApiModelProperty(value = "")
   @JsonProperty("CapitalCamel")
   public String getCapitalCamel() {
     return capitalCamel;
   }
+
   public void setCapitalCamel(String capitalCamel) {
     this.capitalCamel = capitalCamel;
   }
-
-  /**
-   **/
-  public Capitalization smallSnake(String smallSnake) {
-    this.smallSnake = smallSnake;
-    return this;
-  }
-
-  
   @ApiModelProperty(value = "")
   @JsonProperty("small_Snake")
   public String getSmallSnake() {
     return smallSnake;
   }
+
   public void setSmallSnake(String smallSnake) {
     this.smallSnake = smallSnake;
   }
-
-  /**
-   **/
-  public Capitalization capitalSnake(String capitalSnake) {
-    this.capitalSnake = capitalSnake;
-    return this;
-  }
-
-  
   @ApiModelProperty(value = "")
   @JsonProperty("Capital_Snake")
   public String getCapitalSnake() {
     return capitalSnake;
   }
+
   public void setCapitalSnake(String capitalSnake) {
     this.capitalSnake = capitalSnake;
   }
-
-  /**
-   **/
-  public Capitalization scAETHFlowPoints(String scAETHFlowPoints) {
-    this.scAETHFlowPoints = scAETHFlowPoints;
-    return this;
-  }
-
-  
   @ApiModelProperty(value = "")
   @JsonProperty("SCA_ETH_Flow_Points")
   public String getScAETHFlowPoints() {
     return scAETHFlowPoints;
   }
+
   public void setScAETHFlowPoints(String scAETHFlowPoints) {
     this.scAETHFlowPoints = scAETHFlowPoints;
   }
-
-  /**
-   * Name of the pet 
-   **/
-  public Capitalization ATT_NAME(String ATT_NAME) {
-    this.ATT_NAME = ATT_NAME;
-    return this;
-  }
-
-  
   @ApiModelProperty(value = "Name of the pet ")
   @JsonProperty("ATT_NAME")
   public String getATTNAME() {
     return ATT_NAME;
   }
+
   public void setATTNAME(String ATT_NAME) {
     this.ATT_NAME = ATT_NAME;
   }
 
-
   @Override
   public boolean equals(java.lang.Object o) {
     if (this == o) {
@@ -136,12 +97,12 @@ public class Capitalization  implements Serializable {
       return false;
     }
     Capitalization capitalization = (Capitalization) o;
-    return Objects.equals(smallCamel, capitalization.smallCamel) &&
-        Objects.equals(capitalCamel, capitalization.capitalCamel) &&
-        Objects.equals(smallSnake, capitalization.smallSnake) &&
-        Objects.equals(capitalSnake, capitalization.capitalSnake) &&
-        Objects.equals(scAETHFlowPoints, capitalization.scAETHFlowPoints) &&
-        Objects.equals(ATT_NAME, capitalization.ATT_NAME);
+    return Objects.equals(this.smallCamel, capitalization.smallCamel) &&
+        Objects.equals(this.capitalCamel, capitalization.capitalCamel) &&
+        Objects.equals(this.smallSnake, capitalization.smallSnake) &&
+        Objects.equals(this.capitalSnake, capitalization.capitalSnake) &&
+        Objects.equals(this.scAETHFlowPoints, capitalization.scAETHFlowPoints) &&
+        Objects.equals(this.ATT_NAME, capitalization.ATT_NAME);
   }
 
   @Override
@@ -174,5 +135,60 @@ public class Capitalization  implements Serializable {
     }
     return o.toString().replace("\n", "\n    ");
   }
+
+  public static Builder builder() {
+    return new Builder();
+  }
+
+  public static class Builder {
+    private String smallCamel;
+    private String capitalCamel;
+    private String smallSnake;
+    private String capitalSnake;
+    private String scAETHFlowPoints;
+    private String ATT_NAME;
+
+    /**
+      **/
+    public Builder smallCamel(String smallCamel) {
+      this.smallCamel = smallCamel;
+      return this;
+    }
+    /**
+      **/
+    public Builder capitalCamel(String capitalCamel) {
+      this.capitalCamel = capitalCamel;
+      return this;
+    }
+    /**
+      **/
+    public Builder smallSnake(String smallSnake) {
+      this.smallSnake = smallSnake;
+      return this;
+    }
+    /**
+      **/
+    public Builder capitalSnake(String capitalSnake) {
+      this.capitalSnake = capitalSnake;
+      return this;
+    }
+    /**
+      **/
+    public Builder scAETHFlowPoints(String scAETHFlowPoints) {
+      this.scAETHFlowPoints = scAETHFlowPoints;
+      return this;
+    }
+    /**
+      * Name of the pet 
+      **/
+    public Builder ATT_NAME(String ATT_NAME) {
+      this.ATT_NAME = ATT_NAME;
+      return this;
+    }
+
+    public Capitalization build() {
+      return new Capitalization(smallCamel, capitalCamel, smallSnake, capitalSnake, scAETHFlowPoints, ATT_NAME);
+    }
+  }
 }
 
diff --git a/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/Cat.java b/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/Cat.java
index 9bfcfde280c2152dd7bb8750cb4729e29852c9a3..8114f8af8f3b3b278e45d30d773dfdc72eda4df6 100644
--- a/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/Cat.java
+++ b/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/Cat.java
@@ -3,6 +3,7 @@ package org.openapitools.model;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import org.openapitools.model.Animal;
+import org.openapitools.model.CatAllOf;
 import java.io.Serializable;
 import javax.validation.constraints.*;
 import javax.validation.Valid;
@@ -19,11 +20,8 @@ public class Cat extends Animal implements Serializable {
   
   private @Valid Boolean declawed;
 
-  /**
-   **/
-  public Cat declawed(Boolean declawed) {
+  public Cat(Boolean declawed) {
     this.declawed = declawed;
-    return this;
   }
 
   
@@ -32,11 +30,11 @@ public class Cat extends Animal implements Serializable {
   public Boolean getDeclawed() {
     return declawed;
   }
+
   public void setDeclawed(Boolean declawed) {
     this.declawed = declawed;
   }
 
-
   @Override
   public boolean equals(java.lang.Object o) {
     if (this == o) {
@@ -46,12 +44,13 @@ public class Cat extends Animal implements Serializable {
       return false;
     }
     Cat cat = (Cat) o;
-    return Objects.equals(declawed, cat.declawed);
+    return Objects.equals(this.declawed, cat.declawed) &&
+        super.equals(o);
   }
 
   @Override
   public int hashCode() {
-    return Objects.hash(declawed);
+    return Objects.hash(declawed, super.hashCode());
   }
 
   @Override
@@ -74,5 +73,24 @@ public class Cat extends Animal implements Serializable {
     }
     return o.toString().replace("\n", "\n    ");
   }
+
+  public static Builder builder() {
+    return new Builder();
+  }
+
+  public static class Builder {
+    private Boolean declawed;
+
+    /**
+      **/
+    public Builder declawed(Boolean declawed) {
+      this.declawed = declawed;
+      return this;
+    }
+
+    public Cat build() {
+      return new Cat(declawed);
+    }
+  }
 }
 
diff --git a/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/CatAllOf.java b/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/CatAllOf.java
new file mode 100644
index 0000000000000000000000000000000000000000..b9bae4cb25b2aae89737081c2af73549fe80479b
--- /dev/null
+++ b/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/CatAllOf.java
@@ -0,0 +1,93 @@
+package org.openapitools.model;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import java.io.Serializable;
+import javax.validation.constraints.*;
+import javax.validation.Valid;
+
+import io.swagger.annotations.*;
+import java.util.Objects;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonValue;
+
+
+
+public class CatAllOf  implements Serializable {
+  
+  private @Valid Boolean declawed;
+
+  public CatAllOf(Boolean declawed) {
+    this.declawed = declawed;
+  }
+
+  
+  @ApiModelProperty(value = "")
+  @JsonProperty("declawed")
+  public Boolean getDeclawed() {
+    return declawed;
+  }
+
+  public void setDeclawed(Boolean declawed) {
+    this.declawed = declawed;
+  }
+
+  @Override
+  public boolean equals(java.lang.Object o) {
+    if (this == o) {
+      return true;
+    }
+    if (o == null || getClass() != o.getClass()) {
+      return false;
+    }
+    CatAllOf catAllOf = (CatAllOf) o;
+    return Objects.equals(this.declawed, catAllOf.declawed);
+  }
+
+  @Override
+  public int hashCode() {
+    return Objects.hash(declawed);
+  }
+
+  @Override
+  public String toString() {
+    StringBuilder sb = new StringBuilder();
+    sb.append("class CatAllOf {\n");
+    
+    sb.append("    declawed: ").append(toIndentedString(declawed)).append("\n");
+    sb.append("}");
+    return sb.toString();
+  }
+
+  /**
+   * Convert the given object to string with each line indented by 4 spaces
+   * (except the first line).
+   */
+  private String toIndentedString(java.lang.Object o) {
+    if (o == null) {
+      return "null";
+    }
+    return o.toString().replace("\n", "\n    ");
+  }
+
+  public static Builder builder() {
+    return new Builder();
+  }
+
+  public static class Builder {
+    private Boolean declawed;
+
+    /**
+      **/
+    public Builder declawed(Boolean declawed) {
+      this.declawed = declawed;
+      return this;
+    }
+
+    public CatAllOf build() {
+      return new CatAllOf(declawed);
+    }
+  }
+}
+
diff --git a/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/Category.java b/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/Category.java
index 4c665566958bfa9de7d61826ba9bb05aee379915..c9a470ad6c0a10c878d0cd43ab4fa34f0705d947 100644
--- a/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/Category.java
+++ b/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/Category.java
@@ -17,13 +17,11 @@ import com.fasterxml.jackson.annotation.JsonValue;
 public class Category  implements Serializable {
   
   private @Valid Long id;
-  private @Valid String name;
+  private @Valid String name = "default-name";
 
-  /**
-   **/
-  public Category id(Long id) {
+  public Category(Long id, String name) {
     this.id = id;
-    return this;
+    this.name = name;
   }
 
   
@@ -32,28 +30,21 @@ public class Category  implements Serializable {
   public Long getId() {
     return id;
   }
+
   public void setId(Long id) {
     this.id = id;
   }
-
-  /**
-   **/
-  public Category name(String name) {
-    this.name = name;
-    return this;
-  }
-
-  
-  @ApiModelProperty(value = "")
+  @ApiModelProperty(required = true, value = "")
   @JsonProperty("name")
+  @NotNull
   public String getName() {
     return name;
   }
+
   public void setName(String name) {
     this.name = name;
   }
 
-
   @Override
   public boolean equals(java.lang.Object o) {
     if (this == o) {
@@ -63,8 +54,8 @@ public class Category  implements Serializable {
       return false;
     }
     Category category = (Category) o;
-    return Objects.equals(id, category.id) &&
-        Objects.equals(name, category.name);
+    return Objects.equals(this.id, category.id) &&
+        Objects.equals(this.name, category.name);
   }
 
   @Override
@@ -93,5 +84,31 @@ public class Category  implements Serializable {
     }
     return o.toString().replace("\n", "\n    ");
   }
+
+  public static Builder builder() {
+    return new Builder();
+  }
+
+  public static class Builder {
+    private Long id;
+    private String name = "default-name";
+
+    /**
+      **/
+    public Builder id(Long id) {
+      this.id = id;
+      return this;
+    }
+    /**
+      **/
+    public Builder name(String name) {
+      this.name = name;
+      return this;
+    }
+
+    public Category build() {
+      return new Category(id, name);
+    }
+  }
 }
 
diff --git a/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/ClassModel.java b/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/ClassModel.java
index 5f7e3d649ce953d23cbb4edaf6469cf2027766fa..76dd39d9c1581c43f9c4ca4542a72affc0680adc 100644
--- a/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/ClassModel.java
+++ b/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/ClassModel.java
@@ -20,11 +20,8 @@ public class ClassModel  implements Serializable {
   
   private @Valid String propertyClass;
 
-  /**
-   **/
-  public ClassModel propertyClass(String propertyClass) {
+  public ClassModel(String propertyClass) {
     this.propertyClass = propertyClass;
-    return this;
   }
 
   
@@ -33,11 +30,11 @@ public class ClassModel  implements Serializable {
   public String getPropertyClass() {
     return propertyClass;
   }
+
   public void setPropertyClass(String propertyClass) {
     this.propertyClass = propertyClass;
   }
 
-
   @Override
   public boolean equals(java.lang.Object o) {
     if (this == o) {
@@ -47,7 +44,7 @@ public class ClassModel  implements Serializable {
       return false;
     }
     ClassModel classModel = (ClassModel) o;
-    return Objects.equals(propertyClass, classModel.propertyClass);
+    return Objects.equals(this.propertyClass, classModel.propertyClass);
   }
 
   @Override
@@ -75,5 +72,24 @@ public class ClassModel  implements Serializable {
     }
     return o.toString().replace("\n", "\n    ");
   }
+
+  public static Builder builder() {
+    return new Builder();
+  }
+
+  public static class Builder {
+    private String propertyClass;
+
+    /**
+      **/
+    public Builder propertyClass(String propertyClass) {
+      this.propertyClass = propertyClass;
+      return this;
+    }
+
+    public ClassModel build() {
+      return new ClassModel(propertyClass);
+    }
+  }
 }
 
diff --git a/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/Client.java b/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/Client.java
index 92b6aed4de6804e08fcff2498f7d209d1eeafff2..dd6bb5f2b16f61727bc95e3a71b1b1eb8d6e4925 100644
--- a/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/Client.java
+++ b/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/Client.java
@@ -18,11 +18,8 @@ public class Client  implements Serializable {
   
   private @Valid String client;
 
-  /**
-   **/
-  public Client client(String client) {
+  public Client(String client) {
     this.client = client;
-    return this;
   }
 
   
@@ -31,11 +28,11 @@ public class Client  implements Serializable {
   public String getClient() {
     return client;
   }
+
   public void setClient(String client) {
     this.client = client;
   }
 
-
   @Override
   public boolean equals(java.lang.Object o) {
     if (this == o) {
@@ -45,7 +42,7 @@ public class Client  implements Serializable {
       return false;
     }
     Client client = (Client) o;
-    return Objects.equals(client, client.client);
+    return Objects.equals(this.client, client.client);
   }
 
   @Override
@@ -73,5 +70,24 @@ public class Client  implements Serializable {
     }
     return o.toString().replace("\n", "\n    ");
   }
+
+  public static Builder builder() {
+    return new Builder();
+  }
+
+  public static class Builder {
+    private String client;
+
+    /**
+      **/
+    public Builder client(String client) {
+      this.client = client;
+      return this;
+    }
+
+    public Client build() {
+      return new Client(client);
+    }
+  }
 }
 
diff --git a/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/Dog.java b/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/Dog.java
index d22452d2d8796dab578f9e94578d73cccbef9023..cbc66a24537162edb774e234d871d6e417904345 100644
--- a/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/Dog.java
+++ b/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/Dog.java
@@ -3,6 +3,7 @@ package org.openapitools.model;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import org.openapitools.model.Animal;
+import org.openapitools.model.DogAllOf;
 import java.io.Serializable;
 import javax.validation.constraints.*;
 import javax.validation.Valid;
@@ -19,11 +20,8 @@ public class Dog extends Animal implements Serializable {
   
   private @Valid String breed;
 
-  /**
-   **/
-  public Dog breed(String breed) {
+  public Dog(String breed) {
     this.breed = breed;
-    return this;
   }
 
   
@@ -32,11 +30,11 @@ public class Dog extends Animal implements Serializable {
   public String getBreed() {
     return breed;
   }
+
   public void setBreed(String breed) {
     this.breed = breed;
   }
 
-
   @Override
   public boolean equals(java.lang.Object o) {
     if (this == o) {
@@ -46,12 +44,13 @@ public class Dog extends Animal implements Serializable {
       return false;
     }
     Dog dog = (Dog) o;
-    return Objects.equals(breed, dog.breed);
+    return Objects.equals(this.breed, dog.breed) &&
+        super.equals(o);
   }
 
   @Override
   public int hashCode() {
-    return Objects.hash(breed);
+    return Objects.hash(breed, super.hashCode());
   }
 
   @Override
@@ -74,5 +73,24 @@ public class Dog extends Animal implements Serializable {
     }
     return o.toString().replace("\n", "\n    ");
   }
+
+  public static Builder builder() {
+    return new Builder();
+  }
+
+  public static class Builder {
+    private String breed;
+
+    /**
+      **/
+    public Builder breed(String breed) {
+      this.breed = breed;
+      return this;
+    }
+
+    public Dog build() {
+      return new Dog(breed);
+    }
+  }
 }
 
diff --git a/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/DogAllOf.java b/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/DogAllOf.java
new file mode 100644
index 0000000000000000000000000000000000000000..a689baa6e26375a24f9be0dbb48bbedbb83e9a5f
--- /dev/null
+++ b/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/DogAllOf.java
@@ -0,0 +1,93 @@
+package org.openapitools.model;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import java.io.Serializable;
+import javax.validation.constraints.*;
+import javax.validation.Valid;
+
+import io.swagger.annotations.*;
+import java.util.Objects;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonValue;
+
+
+
+public class DogAllOf  implements Serializable {
+  
+  private @Valid String breed;
+
+  public DogAllOf(String breed) {
+    this.breed = breed;
+  }
+
+  
+  @ApiModelProperty(value = "")
+  @JsonProperty("breed")
+  public String getBreed() {
+    return breed;
+  }
+
+  public void setBreed(String breed) {
+    this.breed = breed;
+  }
+
+  @Override
+  public boolean equals(java.lang.Object o) {
+    if (this == o) {
+      return true;
+    }
+    if (o == null || getClass() != o.getClass()) {
+      return false;
+    }
+    DogAllOf dogAllOf = (DogAllOf) o;
+    return Objects.equals(this.breed, dogAllOf.breed);
+  }
+
+  @Override
+  public int hashCode() {
+    return Objects.hash(breed);
+  }
+
+  @Override
+  public String toString() {
+    StringBuilder sb = new StringBuilder();
+    sb.append("class DogAllOf {\n");
+    
+    sb.append("    breed: ").append(toIndentedString(breed)).append("\n");
+    sb.append("}");
+    return sb.toString();
+  }
+
+  /**
+   * Convert the given object to string with each line indented by 4 spaces
+   * (except the first line).
+   */
+  private String toIndentedString(java.lang.Object o) {
+    if (o == null) {
+      return "null";
+    }
+    return o.toString().replace("\n", "\n    ");
+  }
+
+  public static Builder builder() {
+    return new Builder();
+  }
+
+  public static class Builder {
+    private String breed;
+
+    /**
+      **/
+    public Builder breed(String breed) {
+      this.breed = breed;
+      return this;
+    }
+
+    public DogAllOf build() {
+      return new DogAllOf(breed);
+    }
+  }
+}
+
diff --git a/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/EnumArrays.java b/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/EnumArrays.java
index ea468a71fc027386baafab7b0acc35d31729d53a..006a6471b464231ff93a94eadeccacdcfe304317 100644
--- a/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/EnumArrays.java
+++ b/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/EnumArrays.java
@@ -41,13 +41,13 @@ public enum JustSymbolEnum {
     }
 
     @JsonCreator
-    public static JustSymbolEnum fromValue(String v) {
+    public static JustSymbolEnum fromValue(String value) {
         for (JustSymbolEnum b : JustSymbolEnum.values()) {
-            if (String.valueOf(b.value).equals(v)) {
+            if (b.value.equals(value)) {
                 return b;
             }
         }
-        throw new IllegalArgumentException("Unexpected value '" + v + "'");
+        throw new IllegalArgumentException("Unexpected value '" + value + "'");
     }
 }
 
@@ -75,23 +75,21 @@ public enum ArrayEnumEnum {
     }
 
     @JsonCreator
-    public static ArrayEnumEnum fromValue(String v) {
+    public static ArrayEnumEnum fromValue(String value) {
         for (ArrayEnumEnum b : ArrayEnumEnum.values()) {
-            if (String.valueOf(b.value).equals(v)) {
+            if (b.value.equals(value)) {
                 return b;
             }
         }
-        throw new IllegalArgumentException("Unexpected value '" + v + "'");
+        throw new IllegalArgumentException("Unexpected value '" + value + "'");
     }
 }
 
   private @Valid List<ArrayEnumEnum> arrayEnum = new ArrayList<ArrayEnumEnum>();
 
-  /**
-   **/
-  public EnumArrays justSymbol(JustSymbolEnum justSymbol) {
+  public EnumArrays(JustSymbolEnum justSymbol, List<ArrayEnumEnum> arrayEnum) {
     this.justSymbol = justSymbol;
-    return this;
+    this.arrayEnum = arrayEnum;
   }
 
   
@@ -100,28 +98,20 @@ public enum ArrayEnumEnum {
   public JustSymbolEnum getJustSymbol() {
     return justSymbol;
   }
+
   public void setJustSymbol(JustSymbolEnum justSymbol) {
     this.justSymbol = justSymbol;
   }
-
-  /**
-   **/
-  public EnumArrays arrayEnum(List<ArrayEnumEnum> arrayEnum) {
-    this.arrayEnum = arrayEnum;
-    return this;
-  }
-
-  
   @ApiModelProperty(value = "")
   @JsonProperty("array_enum")
   public List<ArrayEnumEnum> getArrayEnum() {
     return arrayEnum;
   }
+
   public void setArrayEnum(List<ArrayEnumEnum> arrayEnum) {
     this.arrayEnum = arrayEnum;
   }
 
-
   @Override
   public boolean equals(java.lang.Object o) {
     if (this == o) {
@@ -131,8 +121,8 @@ public enum ArrayEnumEnum {
       return false;
     }
     EnumArrays enumArrays = (EnumArrays) o;
-    return Objects.equals(justSymbol, enumArrays.justSymbol) &&
-        Objects.equals(arrayEnum, enumArrays.arrayEnum);
+    return Objects.equals(this.justSymbol, enumArrays.justSymbol) &&
+        Objects.equals(this.arrayEnum, enumArrays.arrayEnum);
   }
 
   @Override
@@ -161,5 +151,31 @@ public enum ArrayEnumEnum {
     }
     return o.toString().replace("\n", "\n    ");
   }
+
+  public static Builder builder() {
+    return new Builder();
+  }
+
+  public static class Builder {
+    private JustSymbolEnum justSymbol;
+    private List<ArrayEnumEnum> arrayEnum = new ArrayList<ArrayEnumEnum>();
+
+    /**
+      **/
+    public Builder justSymbol(JustSymbolEnum justSymbol) {
+      this.justSymbol = justSymbol;
+      return this;
+    }
+    /**
+      **/
+    public Builder arrayEnum(List<ArrayEnumEnum> arrayEnum) {
+      this.arrayEnum = arrayEnum;
+      return this;
+    }
+
+    public EnumArrays build() {
+      return new EnumArrays(justSymbol, arrayEnum);
+    }
+  }
 }
 
diff --git a/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/EnumClass.java b/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/EnumClass.java
index ba341ac9168c00b9e23fe815b83709f53f5ddc8c..64c669177148cc1cb3e7fa2738bb84f240f8ff23 100644
--- a/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/EnumClass.java
+++ b/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/EnumClass.java
@@ -31,13 +31,13 @@ public enum EnumClass {
   }
 
   @JsonCreator
-  public static EnumClass fromValue(String text) {
+  public static EnumClass fromValue(String value) {
     for (EnumClass b : EnumClass.values()) {
-      if (String.valueOf(b.value).equals(text)) {
+      if (b.value.equals(value)) {
         return b;
       }
     }
-    throw new IllegalArgumentException("Unexpected value '" + text + "'");
+    throw new IllegalArgumentException("Unexpected value '" + value + "'");
   }
 }
 
diff --git a/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/EnumTest.java b/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/EnumTest.java
index d3f41560189332d9457eecd1e7c5b0595161930b..91cbf631ecad290ff2746ba5e3f1ef052dbc49f0 100644
--- a/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/EnumTest.java
+++ b/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/EnumTest.java
@@ -40,13 +40,13 @@ public enum EnumStringEnum {
     }
 
     @JsonCreator
-    public static EnumStringEnum fromValue(String v) {
+    public static EnumStringEnum fromValue(String value) {
         for (EnumStringEnum b : EnumStringEnum.values()) {
-            if (String.valueOf(b.value).equals(v)) {
+            if (b.value.equals(value)) {
                 return b;
             }
         }
-        throw new IllegalArgumentException("Unexpected value '" + v + "'");
+        throw new IllegalArgumentException("Unexpected value '" + value + "'");
     }
 }
 
@@ -74,13 +74,13 @@ public enum EnumStringRequiredEnum {
     }
 
     @JsonCreator
-    public static EnumStringRequiredEnum fromValue(String v) {
+    public static EnumStringRequiredEnum fromValue(String value) {
         for (EnumStringRequiredEnum b : EnumStringRequiredEnum.values()) {
-            if (String.valueOf(b.value).equals(v)) {
+            if (b.value.equals(value)) {
                 return b;
             }
         }
-        throw new IllegalArgumentException("Unexpected value '" + v + "'");
+        throw new IllegalArgumentException("Unexpected value '" + value + "'");
     }
 }
 
@@ -108,13 +108,13 @@ public enum EnumIntegerEnum {
     }
 
     @JsonCreator
-    public static EnumIntegerEnum fromValue(String v) {
+    public static EnumIntegerEnum fromValue(Integer value) {
         for (EnumIntegerEnum b : EnumIntegerEnum.values()) {
-            if (String.valueOf(b.value).equals(v)) {
+            if (b.value.equals(value)) {
                 return b;
             }
         }
-        throw new IllegalArgumentException("Unexpected value '" + v + "'");
+        throw new IllegalArgumentException("Unexpected value '" + value + "'");
     }
 }
 
@@ -142,24 +142,25 @@ public enum EnumNumberEnum {
     }
 
     @JsonCreator
-    public static EnumNumberEnum fromValue(String v) {
+    public static EnumNumberEnum fromValue(Double value) {
         for (EnumNumberEnum b : EnumNumberEnum.values()) {
-            if (String.valueOf(b.value).equals(v)) {
+            if (b.value.equals(value)) {
                 return b;
             }
         }
-        throw new IllegalArgumentException("Unexpected value '" + v + "'");
+        throw new IllegalArgumentException("Unexpected value '" + value + "'");
     }
 }
 
   private @Valid EnumNumberEnum enumNumber;
-  private @Valid OuterEnum outerEnum = null;
+  private @Valid OuterEnum outerEnum;
 
-  /**
-   **/
-  public EnumTest enumString(EnumStringEnum enumString) {
+  public EnumTest(EnumStringEnum enumString, EnumStringRequiredEnum enumStringRequired, EnumIntegerEnum enumInteger, EnumNumberEnum enumNumber, OuterEnum outerEnum) {
     this.enumString = enumString;
-    return this;
+    this.enumStringRequired = enumStringRequired;
+    this.enumInteger = enumInteger;
+    this.enumNumber = enumNumber;
+    this.outerEnum = outerEnum;
   }
 
   
@@ -168,80 +169,48 @@ public enum EnumNumberEnum {
   public EnumStringEnum getEnumString() {
     return enumString;
   }
+
   public void setEnumString(EnumStringEnum enumString) {
     this.enumString = enumString;
   }
-
-  /**
-   **/
-  public EnumTest enumStringRequired(EnumStringRequiredEnum enumStringRequired) {
-    this.enumStringRequired = enumStringRequired;
-    return this;
-  }
-
-  
   @ApiModelProperty(required = true, value = "")
   @JsonProperty("enum_string_required")
   @NotNull
   public EnumStringRequiredEnum getEnumStringRequired() {
     return enumStringRequired;
   }
+
   public void setEnumStringRequired(EnumStringRequiredEnum enumStringRequired) {
     this.enumStringRequired = enumStringRequired;
   }
-
-  /**
-   **/
-  public EnumTest enumInteger(EnumIntegerEnum enumInteger) {
-    this.enumInteger = enumInteger;
-    return this;
-  }
-
-  
   @ApiModelProperty(value = "")
   @JsonProperty("enum_integer")
   public EnumIntegerEnum getEnumInteger() {
     return enumInteger;
   }
+
   public void setEnumInteger(EnumIntegerEnum enumInteger) {
     this.enumInteger = enumInteger;
   }
-
-  /**
-   **/
-  public EnumTest enumNumber(EnumNumberEnum enumNumber) {
-    this.enumNumber = enumNumber;
-    return this;
-  }
-
-  
   @ApiModelProperty(value = "")
   @JsonProperty("enum_number")
   public EnumNumberEnum getEnumNumber() {
     return enumNumber;
   }
+
   public void setEnumNumber(EnumNumberEnum enumNumber) {
     this.enumNumber = enumNumber;
   }
-
-  /**
-   **/
-  public EnumTest outerEnum(OuterEnum outerEnum) {
-    this.outerEnum = outerEnum;
-    return this;
-  }
-
-  
   @ApiModelProperty(value = "")
   @JsonProperty("outerEnum")
   public OuterEnum getOuterEnum() {
     return outerEnum;
   }
+
   public void setOuterEnum(OuterEnum outerEnum) {
     this.outerEnum = outerEnum;
   }
 
-
   @Override
   public boolean equals(java.lang.Object o) {
     if (this == o) {
@@ -251,11 +220,11 @@ public enum EnumNumberEnum {
       return false;
     }
     EnumTest enumTest = (EnumTest) o;
-    return Objects.equals(enumString, enumTest.enumString) &&
-        Objects.equals(enumStringRequired, enumTest.enumStringRequired) &&
-        Objects.equals(enumInteger, enumTest.enumInteger) &&
-        Objects.equals(enumNumber, enumTest.enumNumber) &&
-        Objects.equals(outerEnum, enumTest.outerEnum);
+    return Objects.equals(this.enumString, enumTest.enumString) &&
+        Objects.equals(this.enumStringRequired, enumTest.enumStringRequired) &&
+        Objects.equals(this.enumInteger, enumTest.enumInteger) &&
+        Objects.equals(this.enumNumber, enumTest.enumNumber) &&
+        Objects.equals(this.outerEnum, enumTest.outerEnum);
   }
 
   @Override
@@ -287,5 +256,52 @@ public enum EnumNumberEnum {
     }
     return o.toString().replace("\n", "\n    ");
   }
+
+  public static Builder builder() {
+    return new Builder();
+  }
+
+  public static class Builder {
+    private EnumStringEnum enumString;
+    private EnumStringRequiredEnum enumStringRequired;
+    private EnumIntegerEnum enumInteger;
+    private EnumNumberEnum enumNumber;
+    private OuterEnum outerEnum;
+
+    /**
+      **/
+    public Builder enumString(EnumStringEnum enumString) {
+      this.enumString = enumString;
+      return this;
+    }
+    /**
+      **/
+    public Builder enumStringRequired(EnumStringRequiredEnum enumStringRequired) {
+      this.enumStringRequired = enumStringRequired;
+      return this;
+    }
+    /**
+      **/
+    public Builder enumInteger(EnumIntegerEnum enumInteger) {
+      this.enumInteger = enumInteger;
+      return this;
+    }
+    /**
+      **/
+    public Builder enumNumber(EnumNumberEnum enumNumber) {
+      this.enumNumber = enumNumber;
+      return this;
+    }
+    /**
+      **/
+    public Builder outerEnum(OuterEnum outerEnum) {
+      this.outerEnum = outerEnum;
+      return this;
+    }
+
+    public EnumTest build() {
+      return new EnumTest(enumString, enumStringRequired, enumInteger, enumNumber, outerEnum);
+    }
+  }
 }
 
diff --git a/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/FileSchemaTestClass.java b/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/FileSchemaTestClass.java
index 0ba22995c7a2d4d0f35259786d818d03a0efaae0..ea12ff500d00d9bd0049bfe144610c1e8f2adc18 100644
--- a/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/FileSchemaTestClass.java
+++ b/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/FileSchemaTestClass.java
@@ -18,14 +18,12 @@ import com.fasterxml.jackson.annotation.JsonValue;
 
 public class FileSchemaTestClass  implements Serializable {
   
-  private @Valid java.io.File file = null;
+  private @Valid java.io.File file;
   private @Valid List<java.io.File> files = new ArrayList<java.io.File>();
 
-  /**
-   **/
-  public FileSchemaTestClass file(java.io.File file) {
+  public FileSchemaTestClass(java.io.File file, List<java.io.File> files) {
     this.file = file;
-    return this;
+    this.files = files;
   }
 
   
@@ -34,28 +32,20 @@ public class FileSchemaTestClass  implements Serializable {
   public java.io.File getFile() {
     return file;
   }
+
   public void setFile(java.io.File file) {
     this.file = file;
   }
-
-  /**
-   **/
-  public FileSchemaTestClass files(List<java.io.File> files) {
-    this.files = files;
-    return this;
-  }
-
-  
   @ApiModelProperty(value = "")
   @JsonProperty("files")
   public List<java.io.File> getFiles() {
     return files;
   }
+
   public void setFiles(List<java.io.File> files) {
     this.files = files;
   }
 
-
   @Override
   public boolean equals(java.lang.Object o) {
     if (this == o) {
@@ -65,8 +55,8 @@ public class FileSchemaTestClass  implements Serializable {
       return false;
     }
     FileSchemaTestClass fileSchemaTestClass = (FileSchemaTestClass) o;
-    return Objects.equals(file, fileSchemaTestClass.file) &&
-        Objects.equals(files, fileSchemaTestClass.files);
+    return Objects.equals(this.file, fileSchemaTestClass.file) &&
+        Objects.equals(this.files, fileSchemaTestClass.files);
   }
 
   @Override
@@ -95,5 +85,31 @@ public class FileSchemaTestClass  implements Serializable {
     }
     return o.toString().replace("\n", "\n    ");
   }
+
+  public static Builder builder() {
+    return new Builder();
+  }
+
+  public static class Builder {
+    private java.io.File file;
+    private List<java.io.File> files = new ArrayList<java.io.File>();
+
+    /**
+      **/
+    public Builder file(java.io.File file) {
+      this.file = file;
+      return this;
+    }
+    /**
+      **/
+    public Builder files(List<java.io.File> files) {
+      this.files = files;
+      return this;
+    }
+
+    public FileSchemaTestClass build() {
+      return new FileSchemaTestClass(file, files);
+    }
+  }
 }
 
diff --git a/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/FormatTest.java b/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/FormatTest.java
index 800fe24ff9243f8589937d33cef981b01ab2060c..e8dc0317e1a117a04e462b9765f3b5e79979a512 100644
--- a/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/FormatTest.java
+++ b/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/FormatTest.java
@@ -34,14 +34,23 @@ public class FormatTest  implements Serializable {
   private @Valid Date dateTime;
   private @Valid UUID uuid;
   private @Valid String password;
+  private @Valid BigDecimal bigDecimal;
 
-  /**
-   * minimum: 10
-   * maximum: 100
-   **/
-  public FormatTest integer(Integer integer) {
+  public FormatTest(Integer integer, Integer int32, Long int64, BigDecimal number, Float _float, Double _double, String string, byte[] _byte, File binary, LocalDate date, Date dateTime, UUID uuid, String password, BigDecimal bigDecimal) {
     this.integer = integer;
-    return this;
+    this.int32 = int32;
+    this.int64 = int64;
+    this.number = number;
+    this._float = _float;
+    this._double = _double;
+    this.string = string;
+    this._byte = _byte;
+    this.binary = binary;
+    this.date = date;
+    this.dateTime = dateTime;
+    this.uuid = uuid;
+    this.password = password;
+    this.bigDecimal = bigDecimal;
   }
 
   
@@ -50,226 +59,131 @@ public class FormatTest  implements Serializable {
  @Min(10) @Max(100)  public Integer getInteger() {
     return integer;
   }
+
   public void setInteger(Integer integer) {
     this.integer = integer;
   }
-
-  /**
-   * minimum: 20
-   * maximum: 200
-   **/
-  public FormatTest int32(Integer int32) {
-    this.int32 = int32;
-    return this;
-  }
-
-  
   @ApiModelProperty(value = "")
   @JsonProperty("int32")
  @Min(20) @Max(200)  public Integer getInt32() {
     return int32;
   }
+
   public void setInt32(Integer int32) {
     this.int32 = int32;
   }
-
-  /**
-   **/
-  public FormatTest int64(Long int64) {
-    this.int64 = int64;
-    return this;
-  }
-
-  
   @ApiModelProperty(value = "")
   @JsonProperty("int64")
   public Long getInt64() {
     return int64;
   }
+
   public void setInt64(Long int64) {
     this.int64 = int64;
   }
-
-  /**
-   * minimum: 32.1
-   * maximum: 543.2
-   **/
-  public FormatTest number(BigDecimal number) {
-    this.number = number;
-    return this;
-  }
-
-  
   @ApiModelProperty(required = true, value = "")
   @JsonProperty("number")
   @NotNull
  @DecimalMin("32.1") @DecimalMax("543.2")  public BigDecimal getNumber() {
     return number;
   }
+
   public void setNumber(BigDecimal number) {
     this.number = number;
   }
-
-  /**
-   * minimum: 54.3
-   * maximum: 987.6
-   **/
-  public FormatTest _float(Float _float) {
-    this._float = _float;
-    return this;
-  }
-
-  
   @ApiModelProperty(value = "")
   @JsonProperty("float")
  @DecimalMin("54.3") @DecimalMax("987.6")  public Float getFloat() {
     return _float;
   }
+
   public void setFloat(Float _float) {
     this._float = _float;
   }
-
-  /**
-   * minimum: 67.8
-   * maximum: 123.4
-   **/
-  public FormatTest _double(Double _double) {
-    this._double = _double;
-    return this;
-  }
-
-  
   @ApiModelProperty(value = "")
   @JsonProperty("double")
  @DecimalMin("67.8") @DecimalMax("123.4")  public Double getDouble() {
     return _double;
   }
+
   public void setDouble(Double _double) {
     this._double = _double;
   }
-
-  /**
-   **/
-  public FormatTest string(String string) {
-    this.string = string;
-    return this;
-  }
-
-  
   @ApiModelProperty(value = "")
   @JsonProperty("string")
  @Pattern(regexp="/[a-z]/i")  public String getString() {
     return string;
   }
+
   public void setString(String string) {
     this.string = string;
   }
-
-  /**
-   **/
-  public FormatTest _byte(byte[] _byte) {
-    this._byte = _byte;
-    return this;
-  }
-
-  
   @ApiModelProperty(required = true, value = "")
   @JsonProperty("byte")
   @NotNull
  @Pattern(regexp="^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$")  public byte[] getByte() {
     return _byte;
   }
+
   public void setByte(byte[] _byte) {
     this._byte = _byte;
   }
-
-  /**
-   **/
-  public FormatTest binary(File binary) {
-    this.binary = binary;
-    return this;
-  }
-
-  
   @ApiModelProperty(value = "")
   @JsonProperty("binary")
   public File getBinary() {
     return binary;
   }
+
   public void setBinary(File binary) {
     this.binary = binary;
   }
-
-  /**
-   **/
-  public FormatTest date(LocalDate date) {
-    this.date = date;
-    return this;
-  }
-
-  
   @ApiModelProperty(required = true, value = "")
   @JsonProperty("date")
   @NotNull
   public LocalDate getDate() {
     return date;
   }
+
   public void setDate(LocalDate date) {
     this.date = date;
   }
-
-  /**
-   **/
-  public FormatTest dateTime(Date dateTime) {
-    this.dateTime = dateTime;
-    return this;
-  }
-
-  
   @ApiModelProperty(value = "")
   @JsonProperty("dateTime")
   public Date getDateTime() {
     return dateTime;
   }
+
   public void setDateTime(Date dateTime) {
     this.dateTime = dateTime;
   }
-
-  /**
-   **/
-  public FormatTest uuid(UUID uuid) {
-    this.uuid = uuid;
-    return this;
-  }
-
-  
-  @ApiModelProperty(value = "")
+  @ApiModelProperty(example = "72f98069-206d-4f12-9f12-3d1e525a8e84", value = "")
   @JsonProperty("uuid")
   public UUID getUuid() {
     return uuid;
   }
+
   public void setUuid(UUID uuid) {
     this.uuid = uuid;
   }
-
-  /**
-   **/
-  public FormatTest password(String password) {
-    this.password = password;
-    return this;
-  }
-
-  
   @ApiModelProperty(required = true, value = "")
   @JsonProperty("password")
   @NotNull
  @Size(min=10,max=64)  public String getPassword() {
     return password;
   }
+
   public void setPassword(String password) {
     this.password = password;
   }
+  @ApiModelProperty(value = "")
+  @JsonProperty("BigDecimal")
+  public BigDecimal getBigDecimal() {
+    return bigDecimal;
+  }
 
+  public void setBigDecimal(BigDecimal bigDecimal) {
+    this.bigDecimal = bigDecimal;
+  }
 
   @Override
   public boolean equals(java.lang.Object o) {
@@ -280,24 +194,25 @@ public class FormatTest  implements Serializable {
       return false;
     }
     FormatTest formatTest = (FormatTest) o;
-    return Objects.equals(integer, formatTest.integer) &&
-        Objects.equals(int32, formatTest.int32) &&
-        Objects.equals(int64, formatTest.int64) &&
-        Objects.equals(number, formatTest.number) &&
-        Objects.equals(_float, formatTest._float) &&
-        Objects.equals(_double, formatTest._double) &&
-        Objects.equals(string, formatTest.string) &&
-        Objects.equals(_byte, formatTest._byte) &&
-        Objects.equals(binary, formatTest.binary) &&
-        Objects.equals(date, formatTest.date) &&
-        Objects.equals(dateTime, formatTest.dateTime) &&
-        Objects.equals(uuid, formatTest.uuid) &&
-        Objects.equals(password, formatTest.password);
+    return Objects.equals(this.integer, formatTest.integer) &&
+        Objects.equals(this.int32, formatTest.int32) &&
+        Objects.equals(this.int64, formatTest.int64) &&
+        Objects.equals(this.number, formatTest.number) &&
+        Objects.equals(this._float, formatTest._float) &&
+        Objects.equals(this._double, formatTest._double) &&
+        Objects.equals(this.string, formatTest.string) &&
+        Objects.equals(this._byte, formatTest._byte) &&
+        Objects.equals(this.binary, formatTest.binary) &&
+        Objects.equals(this.date, formatTest.date) &&
+        Objects.equals(this.dateTime, formatTest.dateTime) &&
+        Objects.equals(this.uuid, formatTest.uuid) &&
+        Objects.equals(this.password, formatTest.password) &&
+        Objects.equals(this.bigDecimal, formatTest.bigDecimal);
   }
 
   @Override
   public int hashCode() {
-    return Objects.hash(integer, int32, int64, number, _float, _double, string, _byte, binary, date, dateTime, uuid, password);
+    return Objects.hash(integer, int32, int64, number, _float, _double, string, _byte, binary, date, dateTime, uuid, password, bigDecimal);
   }
 
   @Override
@@ -318,6 +233,7 @@ public class FormatTest  implements Serializable {
     sb.append("    dateTime: ").append(toIndentedString(dateTime)).append("\n");
     sb.append("    uuid: ").append(toIndentedString(uuid)).append("\n");
     sb.append("    password: ").append(toIndentedString(password)).append("\n");
+    sb.append("    bigDecimal: ").append(toIndentedString(bigDecimal)).append("\n");
     sb.append("}");
     return sb.toString();
   }
@@ -332,5 +248,125 @@ public class FormatTest  implements Serializable {
     }
     return o.toString().replace("\n", "\n    ");
   }
+
+  public static Builder builder() {
+    return new Builder();
+  }
+
+  public static class Builder {
+    private Integer integer;
+    private Integer int32;
+    private Long int64;
+    private BigDecimal number;
+    private Float _float;
+    private Double _double;
+    private String string;
+    private byte[] _byte;
+    private File binary;
+    private LocalDate date;
+    private Date dateTime;
+    private UUID uuid;
+    private String password;
+    private BigDecimal bigDecimal;
+
+    /**
+      * minimum: 10
+      * maximum: 100
+      **/
+    public Builder integer(Integer integer) {
+      this.integer = integer;
+      return this;
+    }
+    /**
+      * minimum: 20
+      * maximum: 200
+      **/
+    public Builder int32(Integer int32) {
+      this.int32 = int32;
+      return this;
+    }
+    /**
+      **/
+    public Builder int64(Long int64) {
+      this.int64 = int64;
+      return this;
+    }
+    /**
+      * minimum: 32.1
+      * maximum: 543.2
+      **/
+    public Builder number(BigDecimal number) {
+      this.number = number;
+      return this;
+    }
+    /**
+      * minimum: 54.3
+      * maximum: 987.6
+      **/
+    public Builder _float(Float _float) {
+      this._float = _float;
+      return this;
+    }
+    /**
+      * minimum: 67.8
+      * maximum: 123.4
+      **/
+    public Builder _double(Double _double) {
+      this._double = _double;
+      return this;
+    }
+    /**
+      **/
+    public Builder string(String string) {
+      this.string = string;
+      return this;
+    }
+    /**
+      **/
+    public Builder _byte(byte[] _byte) {
+      this._byte = _byte;
+      return this;
+    }
+    /**
+      **/
+    public Builder binary(File binary) {
+      this.binary = binary;
+      return this;
+    }
+    /**
+      **/
+    public Builder date(LocalDate date) {
+      this.date = date;
+      return this;
+    }
+    /**
+      **/
+    public Builder dateTime(Date dateTime) {
+      this.dateTime = dateTime;
+      return this;
+    }
+    /**
+      **/
+    public Builder uuid(UUID uuid) {
+      this.uuid = uuid;
+      return this;
+    }
+    /**
+      **/
+    public Builder password(String password) {
+      this.password = password;
+      return this;
+    }
+    /**
+      **/
+    public Builder bigDecimal(BigDecimal bigDecimal) {
+      this.bigDecimal = bigDecimal;
+      return this;
+    }
+
+    public FormatTest build() {
+      return new FormatTest(integer, int32, int64, number, _float, _double, string, _byte, binary, date, dateTime, uuid, password, bigDecimal);
+    }
+  }
 }
 
diff --git a/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/HasOnlyReadOnly.java b/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/HasOnlyReadOnly.java
index 03cf3ef7aaaf65c16222c54db69a9c38212f04bb..fde65bcb888fbfb8d21cd17c2caaa4d69e072364 100644
--- a/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/HasOnlyReadOnly.java
+++ b/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/HasOnlyReadOnly.java
@@ -19,11 +19,9 @@ public class HasOnlyReadOnly  implements Serializable {
   private @Valid String bar;
   private @Valid String foo;
 
-  /**
-   **/
-  public HasOnlyReadOnly bar(String bar) {
+  public HasOnlyReadOnly(String bar, String foo) {
     this.bar = bar;
-    return this;
+    this.foo = foo;
   }
 
   
@@ -32,28 +30,20 @@ public class HasOnlyReadOnly  implements Serializable {
   public String getBar() {
     return bar;
   }
+
   public void setBar(String bar) {
     this.bar = bar;
   }
-
-  /**
-   **/
-  public HasOnlyReadOnly foo(String foo) {
-    this.foo = foo;
-    return this;
-  }
-
-  
   @ApiModelProperty(value = "")
   @JsonProperty("foo")
   public String getFoo() {
     return foo;
   }
+
   public void setFoo(String foo) {
     this.foo = foo;
   }
 
-
   @Override
   public boolean equals(java.lang.Object o) {
     if (this == o) {
@@ -63,8 +53,8 @@ public class HasOnlyReadOnly  implements Serializable {
       return false;
     }
     HasOnlyReadOnly hasOnlyReadOnly = (HasOnlyReadOnly) o;
-    return Objects.equals(bar, hasOnlyReadOnly.bar) &&
-        Objects.equals(foo, hasOnlyReadOnly.foo);
+    return Objects.equals(this.bar, hasOnlyReadOnly.bar) &&
+        Objects.equals(this.foo, hasOnlyReadOnly.foo);
   }
 
   @Override
@@ -93,5 +83,31 @@ public class HasOnlyReadOnly  implements Serializable {
     }
     return o.toString().replace("\n", "\n    ");
   }
+
+  public static Builder builder() {
+    return new Builder();
+  }
+
+  public static class Builder {
+    private String bar;
+    private String foo;
+
+    /**
+      **/
+    public Builder bar(String bar) {
+      this.bar = bar;
+      return this;
+    }
+    /**
+      **/
+    public Builder foo(String foo) {
+      this.foo = foo;
+      return this;
+    }
+
+    public HasOnlyReadOnly build() {
+      return new HasOnlyReadOnly(bar, foo);
+    }
+  }
 }
 
diff --git a/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/MapTest.java b/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/MapTest.java
index d0e0137e21071e0dc70b317f83d1b1f22a739104..ec60b349d3c1ad4b23b168035518670cfd0eb415 100644
--- a/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/MapTest.java
+++ b/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/MapTest.java
@@ -5,7 +5,6 @@ import io.swagger.annotations.ApiModelProperty;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
-import org.openapitools.model.StringBooleanMap;
 import java.io.Serializable;
 import javax.validation.constraints.*;
 import javax.validation.Valid;
@@ -44,25 +43,25 @@ public enum InnerEnum {
     }
 
     @JsonCreator
-    public static InnerEnum fromValue(String v) {
+    public static InnerEnum fromValue(String value) {
         for (InnerEnum b : InnerEnum.values()) {
-            if (String.valueOf(b.value).equals(v)) {
+            if (b.value.equals(value)) {
                 return b;
             }
         }
-        throw new IllegalArgumentException("Unexpected value '" + v + "'");
+        throw new IllegalArgumentException("Unexpected value '" + value + "'");
     }
 }
 
   private @Valid Map<String, InnerEnum> mapOfEnumString = new HashMap<String, InnerEnum>();
   private @Valid Map<String, Boolean> directMap = new HashMap<String, Boolean>();
-  private @Valid StringBooleanMap indirectMap = null;
+  private @Valid Map<String, Boolean> indirectMap = new HashMap<String, Boolean>();
 
-  /**
-   **/
-  public MapTest mapMapOfString(Map<String, Map<String, String>> mapMapOfString) {
+  public MapTest(Map<String, Map<String, String>> mapMapOfString, Map<String, InnerEnum> mapOfEnumString, Map<String, Boolean> directMap, Map<String, Boolean> indirectMap) {
     this.mapMapOfString = mapMapOfString;
-    return this;
+    this.mapOfEnumString = mapOfEnumString;
+    this.directMap = directMap;
+    this.indirectMap = indirectMap;
   }
 
   
@@ -71,62 +70,38 @@ public enum InnerEnum {
   public Map<String, Map<String, String>> getMapMapOfString() {
     return mapMapOfString;
   }
+
   public void setMapMapOfString(Map<String, Map<String, String>> mapMapOfString) {
     this.mapMapOfString = mapMapOfString;
   }
-
-  /**
-   **/
-  public MapTest mapOfEnumString(Map<String, InnerEnum> mapOfEnumString) {
-    this.mapOfEnumString = mapOfEnumString;
-    return this;
-  }
-
-  
   @ApiModelProperty(value = "")
   @JsonProperty("map_of_enum_string")
   public Map<String, InnerEnum> getMapOfEnumString() {
     return mapOfEnumString;
   }
+
   public void setMapOfEnumString(Map<String, InnerEnum> mapOfEnumString) {
     this.mapOfEnumString = mapOfEnumString;
   }
-
-  /**
-   **/
-  public MapTest directMap(Map<String, Boolean> directMap) {
-    this.directMap = directMap;
-    return this;
-  }
-
-  
   @ApiModelProperty(value = "")
   @JsonProperty("direct_map")
   public Map<String, Boolean> getDirectMap() {
     return directMap;
   }
+
   public void setDirectMap(Map<String, Boolean> directMap) {
     this.directMap = directMap;
   }
-
-  /**
-   **/
-  public MapTest indirectMap(StringBooleanMap indirectMap) {
-    this.indirectMap = indirectMap;
-    return this;
-  }
-
-  
   @ApiModelProperty(value = "")
   @JsonProperty("indirect_map")
-  public StringBooleanMap getIndirectMap() {
+  public Map<String, Boolean> getIndirectMap() {
     return indirectMap;
   }
-  public void setIndirectMap(StringBooleanMap indirectMap) {
+
+  public void setIndirectMap(Map<String, Boolean> indirectMap) {
     this.indirectMap = indirectMap;
   }
 
-
   @Override
   public boolean equals(java.lang.Object o) {
     if (this == o) {
@@ -136,10 +111,10 @@ public enum InnerEnum {
       return false;
     }
     MapTest mapTest = (MapTest) o;
-    return Objects.equals(mapMapOfString, mapTest.mapMapOfString) &&
-        Objects.equals(mapOfEnumString, mapTest.mapOfEnumString) &&
-        Objects.equals(directMap, mapTest.directMap) &&
-        Objects.equals(indirectMap, mapTest.indirectMap);
+    return Objects.equals(this.mapMapOfString, mapTest.mapMapOfString) &&
+        Objects.equals(this.mapOfEnumString, mapTest.mapOfEnumString) &&
+        Objects.equals(this.directMap, mapTest.directMap) &&
+        Objects.equals(this.indirectMap, mapTest.indirectMap);
   }
 
   @Override
@@ -170,5 +145,45 @@ public enum InnerEnum {
     }
     return o.toString().replace("\n", "\n    ");
   }
+
+  public static Builder builder() {
+    return new Builder();
+  }
+
+  public static class Builder {
+    private Map<String, Map<String, String>> mapMapOfString = new HashMap<String, Map<String, String>>();
+    private Map<String, InnerEnum> mapOfEnumString = new HashMap<String, InnerEnum>();
+    private Map<String, Boolean> directMap = new HashMap<String, Boolean>();
+    private Map<String, Boolean> indirectMap = new HashMap<String, Boolean>();
+
+    /**
+      **/
+    public Builder mapMapOfString(Map<String, Map<String, String>> mapMapOfString) {
+      this.mapMapOfString = mapMapOfString;
+      return this;
+    }
+    /**
+      **/
+    public Builder mapOfEnumString(Map<String, InnerEnum> mapOfEnumString) {
+      this.mapOfEnumString = mapOfEnumString;
+      return this;
+    }
+    /**
+      **/
+    public Builder directMap(Map<String, Boolean> directMap) {
+      this.directMap = directMap;
+      return this;
+    }
+    /**
+      **/
+    public Builder indirectMap(Map<String, Boolean> indirectMap) {
+      this.indirectMap = indirectMap;
+      return this;
+    }
+
+    public MapTest build() {
+      return new MapTest(mapMapOfString, mapOfEnumString, directMap, indirectMap);
+    }
+  }
 }
 
diff --git a/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/MixedPropertiesAndAdditionalPropertiesClass.java b/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/MixedPropertiesAndAdditionalPropertiesClass.java
index dba6f5f403ffef21d0675817b4cda4283b3452de..bd06524aec780a7aab85db2726de6334db10258a 100644
--- a/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/MixedPropertiesAndAdditionalPropertiesClass.java
+++ b/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/MixedPropertiesAndAdditionalPropertiesClass.java
@@ -26,11 +26,10 @@ public class MixedPropertiesAndAdditionalPropertiesClass  implements Serializabl
   private @Valid Date dateTime;
   private @Valid Map<String, Animal> map = new HashMap<String, Animal>();
 
-  /**
-   **/
-  public MixedPropertiesAndAdditionalPropertiesClass uuid(UUID uuid) {
+  public MixedPropertiesAndAdditionalPropertiesClass(UUID uuid, Date dateTime, Map<String, Animal> map) {
     this.uuid = uuid;
-    return this;
+    this.dateTime = dateTime;
+    this.map = map;
   }
 
   
@@ -39,45 +38,29 @@ public class MixedPropertiesAndAdditionalPropertiesClass  implements Serializabl
   public UUID getUuid() {
     return uuid;
   }
+
   public void setUuid(UUID uuid) {
     this.uuid = uuid;
   }
-
-  /**
-   **/
-  public MixedPropertiesAndAdditionalPropertiesClass dateTime(Date dateTime) {
-    this.dateTime = dateTime;
-    return this;
-  }
-
-  
   @ApiModelProperty(value = "")
   @JsonProperty("dateTime")
   public Date getDateTime() {
     return dateTime;
   }
+
   public void setDateTime(Date dateTime) {
     this.dateTime = dateTime;
   }
-
-  /**
-   **/
-  public MixedPropertiesAndAdditionalPropertiesClass map(Map<String, Animal> map) {
-    this.map = map;
-    return this;
-  }
-
-  
   @ApiModelProperty(value = "")
   @JsonProperty("map")
   public Map<String, Animal> getMap() {
     return map;
   }
+
   public void setMap(Map<String, Animal> map) {
     this.map = map;
   }
 
-
   @Override
   public boolean equals(java.lang.Object o) {
     if (this == o) {
@@ -87,9 +70,9 @@ public class MixedPropertiesAndAdditionalPropertiesClass  implements Serializabl
       return false;
     }
     MixedPropertiesAndAdditionalPropertiesClass mixedPropertiesAndAdditionalPropertiesClass = (MixedPropertiesAndAdditionalPropertiesClass) o;
-    return Objects.equals(uuid, mixedPropertiesAndAdditionalPropertiesClass.uuid) &&
-        Objects.equals(dateTime, mixedPropertiesAndAdditionalPropertiesClass.dateTime) &&
-        Objects.equals(map, mixedPropertiesAndAdditionalPropertiesClass.map);
+    return Objects.equals(this.uuid, mixedPropertiesAndAdditionalPropertiesClass.uuid) &&
+        Objects.equals(this.dateTime, mixedPropertiesAndAdditionalPropertiesClass.dateTime) &&
+        Objects.equals(this.map, mixedPropertiesAndAdditionalPropertiesClass.map);
   }
 
   @Override
@@ -119,5 +102,38 @@ public class MixedPropertiesAndAdditionalPropertiesClass  implements Serializabl
     }
     return o.toString().replace("\n", "\n    ");
   }
+
+  public static Builder builder() {
+    return new Builder();
+  }
+
+  public static class Builder {
+    private UUID uuid;
+    private Date dateTime;
+    private Map<String, Animal> map = new HashMap<String, Animal>();
+
+    /**
+      **/
+    public Builder uuid(UUID uuid) {
+      this.uuid = uuid;
+      return this;
+    }
+    /**
+      **/
+    public Builder dateTime(Date dateTime) {
+      this.dateTime = dateTime;
+      return this;
+    }
+    /**
+      **/
+    public Builder map(Map<String, Animal> map) {
+      this.map = map;
+      return this;
+    }
+
+    public MixedPropertiesAndAdditionalPropertiesClass build() {
+      return new MixedPropertiesAndAdditionalPropertiesClass(uuid, dateTime, map);
+    }
+  }
 }
 
diff --git a/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/Model200Response.java b/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/Model200Response.java
index d4122c4a2e1e4d241fb064e21926e4ceb780b6d3..1a0643d8cc621f5921a6c8dbae80f388ecf5b689 100644
--- a/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/Model200Response.java
+++ b/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/Model200Response.java
@@ -21,11 +21,9 @@ public class Model200Response  implements Serializable {
   private @Valid Integer name;
   private @Valid String propertyClass;
 
-  /**
-   **/
-  public Model200Response name(Integer name) {
+  public Model200Response(Integer name, String propertyClass) {
     this.name = name;
-    return this;
+    this.propertyClass = propertyClass;
   }
 
   
@@ -34,28 +32,20 @@ public class Model200Response  implements Serializable {
   public Integer getName() {
     return name;
   }
+
   public void setName(Integer name) {
     this.name = name;
   }
-
-  /**
-   **/
-  public Model200Response propertyClass(String propertyClass) {
-    this.propertyClass = propertyClass;
-    return this;
-  }
-
-  
   @ApiModelProperty(value = "")
   @JsonProperty("class")
   public String getPropertyClass() {
     return propertyClass;
   }
+
   public void setPropertyClass(String propertyClass) {
     this.propertyClass = propertyClass;
   }
 
-
   @Override
   public boolean equals(java.lang.Object o) {
     if (this == o) {
@@ -65,8 +55,8 @@ public class Model200Response  implements Serializable {
       return false;
     }
     Model200Response _200response = (Model200Response) o;
-    return Objects.equals(name, _200response.name) &&
-        Objects.equals(propertyClass, _200response.propertyClass);
+    return Objects.equals(this.name, _200response.name) &&
+        Objects.equals(this.propertyClass, _200response.propertyClass);
   }
 
   @Override
@@ -95,5 +85,31 @@ public class Model200Response  implements Serializable {
     }
     return o.toString().replace("\n", "\n    ");
   }
+
+  public static Builder builder() {
+    return new Builder();
+  }
+
+  public static class Builder {
+    private Integer name;
+    private String propertyClass;
+
+    /**
+      **/
+    public Builder name(Integer name) {
+      this.name = name;
+      return this;
+    }
+    /**
+      **/
+    public Builder propertyClass(String propertyClass) {
+      this.propertyClass = propertyClass;
+      return this;
+    }
+
+    public Model200Response build() {
+      return new Model200Response(name, propertyClass);
+    }
+  }
 }
 
diff --git a/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/ModelApiResponse.java b/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/ModelApiResponse.java
index ab53e3693652d9476db1cf61144a5cfde4589a7f..d6efe5a4a7c5d614ddd915bcb8c6d11f4518a0a3 100644
--- a/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/ModelApiResponse.java
+++ b/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/ModelApiResponse.java
@@ -20,11 +20,10 @@ public class ModelApiResponse  implements Serializable {
   private @Valid String type;
   private @Valid String message;
 
-  /**
-   **/
-  public ModelApiResponse code(Integer code) {
+  public ModelApiResponse(Integer code, String type, String message) {
     this.code = code;
-    return this;
+    this.type = type;
+    this.message = message;
   }
 
   
@@ -33,45 +32,29 @@ public class ModelApiResponse  implements Serializable {
   public Integer getCode() {
     return code;
   }
+
   public void setCode(Integer code) {
     this.code = code;
   }
-
-  /**
-   **/
-  public ModelApiResponse type(String type) {
-    this.type = type;
-    return this;
-  }
-
-  
   @ApiModelProperty(value = "")
   @JsonProperty("type")
   public String getType() {
     return type;
   }
+
   public void setType(String type) {
     this.type = type;
   }
-
-  /**
-   **/
-  public ModelApiResponse message(String message) {
-    this.message = message;
-    return this;
-  }
-
-  
   @ApiModelProperty(value = "")
   @JsonProperty("message")
   public String getMessage() {
     return message;
   }
+
   public void setMessage(String message) {
     this.message = message;
   }
 
-
   @Override
   public boolean equals(java.lang.Object o) {
     if (this == o) {
@@ -81,9 +64,9 @@ public class ModelApiResponse  implements Serializable {
       return false;
     }
     ModelApiResponse _apiResponse = (ModelApiResponse) o;
-    return Objects.equals(code, _apiResponse.code) &&
-        Objects.equals(type, _apiResponse.type) &&
-        Objects.equals(message, _apiResponse.message);
+    return Objects.equals(this.code, _apiResponse.code) &&
+        Objects.equals(this.type, _apiResponse.type) &&
+        Objects.equals(this.message, _apiResponse.message);
   }
 
   @Override
@@ -113,5 +96,38 @@ public class ModelApiResponse  implements Serializable {
     }
     return o.toString().replace("\n", "\n    ");
   }
+
+  public static Builder builder() {
+    return new Builder();
+  }
+
+  public static class Builder {
+    private Integer code;
+    private String type;
+    private String message;
+
+    /**
+      **/
+    public Builder code(Integer code) {
+      this.code = code;
+      return this;
+    }
+    /**
+      **/
+    public Builder type(String type) {
+      this.type = type;
+      return this;
+    }
+    /**
+      **/
+    public Builder message(String message) {
+      this.message = message;
+      return this;
+    }
+
+    public ModelApiResponse build() {
+      return new ModelApiResponse(code, type, message);
+    }
+  }
 }
 
diff --git a/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/ModelReturn.java b/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/ModelReturn.java
index 90f40a248f251666184ad422339eaa7555c863de..65e82e1c28888c3b85640b529f63d9647fa1dfd0 100644
--- a/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/ModelReturn.java
+++ b/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/ModelReturn.java
@@ -20,11 +20,8 @@ public class ModelReturn  implements Serializable {
   
   private @Valid Integer _return;
 
-  /**
-   **/
-  public ModelReturn _return(Integer _return) {
+  public ModelReturn(Integer _return) {
     this._return = _return;
-    return this;
   }
 
   
@@ -33,11 +30,11 @@ public class ModelReturn  implements Serializable {
   public Integer getReturn() {
     return _return;
   }
+
   public void setReturn(Integer _return) {
     this._return = _return;
   }
 
-
   @Override
   public boolean equals(java.lang.Object o) {
     if (this == o) {
@@ -47,7 +44,7 @@ public class ModelReturn  implements Serializable {
       return false;
     }
     ModelReturn _return = (ModelReturn) o;
-    return Objects.equals(_return, _return._return);
+    return Objects.equals(this._return, _return._return);
   }
 
   @Override
@@ -75,5 +72,24 @@ public class ModelReturn  implements Serializable {
     }
     return o.toString().replace("\n", "\n    ");
   }
+
+  public static Builder builder() {
+    return new Builder();
+  }
+
+  public static class Builder {
+    private Integer _return;
+
+    /**
+      **/
+    public Builder _return(Integer _return) {
+      this._return = _return;
+      return this;
+    }
+
+    public ModelReturn build() {
+      return new ModelReturn(_return);
+    }
+  }
 }
 
diff --git a/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/Name.java b/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/Name.java
index bab48c428e64a79ab185688c074d82f41c055bba..f7713bf25d9e0fe86bcf1789c4a61b4f8169c821 100644
--- a/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/Name.java
+++ b/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/Name.java
@@ -23,11 +23,11 @@ public class Name  implements Serializable {
   private @Valid String property;
   private @Valid Integer _123number;
 
-  /**
-   **/
-  public Name name(Integer name) {
+  public Name(Integer name, Integer snakeCase, String property, Integer _123number) {
     this.name = name;
-    return this;
+    this.snakeCase = snakeCase;
+    this.property = property;
+    this._123number = _123number;
   }
 
   
@@ -37,62 +37,38 @@ public class Name  implements Serializable {
   public Integer getName() {
     return name;
   }
+
   public void setName(Integer name) {
     this.name = name;
   }
-
-  /**
-   **/
-  public Name snakeCase(Integer snakeCase) {
-    this.snakeCase = snakeCase;
-    return this;
-  }
-
-  
   @ApiModelProperty(value = "")
   @JsonProperty("snake_case")
   public Integer getSnakeCase() {
     return snakeCase;
   }
+
   public void setSnakeCase(Integer snakeCase) {
     this.snakeCase = snakeCase;
   }
-
-  /**
-   **/
-  public Name property(String property) {
-    this.property = property;
-    return this;
-  }
-
-  
   @ApiModelProperty(value = "")
   @JsonProperty("property")
   public String getProperty() {
     return property;
   }
+
   public void setProperty(String property) {
     this.property = property;
   }
-
-  /**
-   **/
-  public Name _123number(Integer _123number) {
-    this._123number = _123number;
-    return this;
-  }
-
-  
   @ApiModelProperty(value = "")
   @JsonProperty("123Number")
   public Integer get123number() {
     return _123number;
   }
+
   public void set123number(Integer _123number) {
     this._123number = _123number;
   }
 
-
   @Override
   public boolean equals(java.lang.Object o) {
     if (this == o) {
@@ -102,10 +78,10 @@ public class Name  implements Serializable {
       return false;
     }
     Name name = (Name) o;
-    return Objects.equals(name, name.name) &&
-        Objects.equals(snakeCase, name.snakeCase) &&
-        Objects.equals(property, name.property) &&
-        Objects.equals(_123number, name._123number);
+    return Objects.equals(this.name, name.name) &&
+        Objects.equals(this.snakeCase, name.snakeCase) &&
+        Objects.equals(this.property, name.property) &&
+        Objects.equals(this._123number, name._123number);
   }
 
   @Override
@@ -136,5 +112,45 @@ public class Name  implements Serializable {
     }
     return o.toString().replace("\n", "\n    ");
   }
+
+  public static Builder builder() {
+    return new Builder();
+  }
+
+  public static class Builder {
+    private Integer name;
+    private Integer snakeCase;
+    private String property;
+    private Integer _123number;
+
+    /**
+      **/
+    public Builder name(Integer name) {
+      this.name = name;
+      return this;
+    }
+    /**
+      **/
+    public Builder snakeCase(Integer snakeCase) {
+      this.snakeCase = snakeCase;
+      return this;
+    }
+    /**
+      **/
+    public Builder property(String property) {
+      this.property = property;
+      return this;
+    }
+    /**
+      **/
+    public Builder _123number(Integer _123number) {
+      this._123number = _123number;
+      return this;
+    }
+
+    public Name build() {
+      return new Name(name, snakeCase, property, _123number);
+    }
+  }
 }
 
diff --git a/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/NumberOnly.java b/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/NumberOnly.java
index 000db43f09185954f242143eb1c235e55fae99dc..f4ac4b1bc52d5e13218d4117568f892b9b452ebd 100644
--- a/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/NumberOnly.java
+++ b/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/NumberOnly.java
@@ -19,11 +19,8 @@ public class NumberOnly  implements Serializable {
   
   private @Valid BigDecimal justNumber;
 
-  /**
-   **/
-  public NumberOnly justNumber(BigDecimal justNumber) {
+  public NumberOnly(BigDecimal justNumber) {
     this.justNumber = justNumber;
-    return this;
   }
 
   
@@ -32,11 +29,11 @@ public class NumberOnly  implements Serializable {
   public BigDecimal getJustNumber() {
     return justNumber;
   }
+
   public void setJustNumber(BigDecimal justNumber) {
     this.justNumber = justNumber;
   }
 
-
   @Override
   public boolean equals(java.lang.Object o) {
     if (this == o) {
@@ -46,7 +43,7 @@ public class NumberOnly  implements Serializable {
       return false;
     }
     NumberOnly numberOnly = (NumberOnly) o;
-    return Objects.equals(justNumber, numberOnly.justNumber);
+    return Objects.equals(this.justNumber, numberOnly.justNumber);
   }
 
   @Override
@@ -74,5 +71,24 @@ public class NumberOnly  implements Serializable {
     }
     return o.toString().replace("\n", "\n    ");
   }
+
+  public static Builder builder() {
+    return new Builder();
+  }
+
+  public static class Builder {
+    private BigDecimal justNumber;
+
+    /**
+      **/
+    public Builder justNumber(BigDecimal justNumber) {
+      this.justNumber = justNumber;
+      return this;
+    }
+
+    public NumberOnly build() {
+      return new NumberOnly(justNumber);
+    }
+  }
 }
 
diff --git a/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/Order.java b/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/Order.java
index dc35e75e0111353ba52b58248b24a429bc42f50c..4eb5d9871b14459a50135a4de44c7fa04c0ea0cc 100644
--- a/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/Order.java
+++ b/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/Order.java
@@ -44,24 +44,26 @@ public enum StatusEnum {
     }
 
     @JsonCreator
-    public static StatusEnum fromValue(String v) {
+    public static StatusEnum fromValue(String value) {
         for (StatusEnum b : StatusEnum.values()) {
-            if (String.valueOf(b.value).equals(v)) {
+            if (b.value.equals(value)) {
                 return b;
             }
         }
-        throw new IllegalArgumentException("Unexpected value '" + v + "'");
+        throw new IllegalArgumentException("Unexpected value '" + value + "'");
     }
 }
 
   private @Valid StatusEnum status;
   private @Valid Boolean complete = false;
 
-  /**
-   **/
-  public Order id(Long id) {
+  public Order(Long id, Long petId, Integer quantity, Date shipDate, StatusEnum status, Boolean complete) {
     this.id = id;
-    return this;
+    this.petId = petId;
+    this.quantity = quantity;
+    this.shipDate = shipDate;
+    this.status = status;
+    this.complete = complete;
   }
 
   
@@ -70,97 +72,56 @@ public enum StatusEnum {
   public Long getId() {
     return id;
   }
+
   public void setId(Long id) {
     this.id = id;
   }
-
-  /**
-   **/
-  public Order petId(Long petId) {
-    this.petId = petId;
-    return this;
-  }
-
-  
   @ApiModelProperty(value = "")
   @JsonProperty("petId")
   public Long getPetId() {
     return petId;
   }
+
   public void setPetId(Long petId) {
     this.petId = petId;
   }
-
-  /**
-   **/
-  public Order quantity(Integer quantity) {
-    this.quantity = quantity;
-    return this;
-  }
-
-  
   @ApiModelProperty(value = "")
   @JsonProperty("quantity")
   public Integer getQuantity() {
     return quantity;
   }
+
   public void setQuantity(Integer quantity) {
     this.quantity = quantity;
   }
-
-  /**
-   **/
-  public Order shipDate(Date shipDate) {
-    this.shipDate = shipDate;
-    return this;
-  }
-
-  
   @ApiModelProperty(value = "")
   @JsonProperty("shipDate")
   public Date getShipDate() {
     return shipDate;
   }
+
   public void setShipDate(Date shipDate) {
     this.shipDate = shipDate;
   }
-
-  /**
-   * Order Status
-   **/
-  public Order status(StatusEnum status) {
-    this.status = status;
-    return this;
-  }
-
-  
   @ApiModelProperty(value = "Order Status")
   @JsonProperty("status")
   public StatusEnum getStatus() {
     return status;
   }
+
   public void setStatus(StatusEnum status) {
     this.status = status;
   }
-
-  /**
-   **/
-  public Order complete(Boolean complete) {
-    this.complete = complete;
-    return this;
-  }
-
-  
   @ApiModelProperty(value = "")
   @JsonProperty("complete")
   public Boolean getComplete() {
     return complete;
   }
+
   public void setComplete(Boolean complete) {
     this.complete = complete;
   }
 
-
   @Override
   public boolean equals(java.lang.Object o) {
     if (this == o) {
@@ -170,12 +131,12 @@ public enum StatusEnum {
       return false;
     }
     Order order = (Order) o;
-    return Objects.equals(id, order.id) &&
-        Objects.equals(petId, order.petId) &&
-        Objects.equals(quantity, order.quantity) &&
-        Objects.equals(shipDate, order.shipDate) &&
-        Objects.equals(status, order.status) &&
-        Objects.equals(complete, order.complete);
+    return Objects.equals(this.id, order.id) &&
+        Objects.equals(this.petId, order.petId) &&
+        Objects.equals(this.quantity, order.quantity) &&
+        Objects.equals(this.shipDate, order.shipDate) &&
+        Objects.equals(this.status, order.status) &&
+        Objects.equals(this.complete, order.complete);
   }
 
   @Override
@@ -208,5 +169,60 @@ public enum StatusEnum {
     }
     return o.toString().replace("\n", "\n    ");
   }
+
+  public static Builder builder() {
+    return new Builder();
+  }
+
+  public static class Builder {
+    private Long id;
+    private Long petId;
+    private Integer quantity;
+    private Date shipDate;
+    private StatusEnum status;
+    private Boolean complete = false;
+
+    /**
+      **/
+    public Builder id(Long id) {
+      this.id = id;
+      return this;
+    }
+    /**
+      **/
+    public Builder petId(Long petId) {
+      this.petId = petId;
+      return this;
+    }
+    /**
+      **/
+    public Builder quantity(Integer quantity) {
+      this.quantity = quantity;
+      return this;
+    }
+    /**
+      **/
+    public Builder shipDate(Date shipDate) {
+      this.shipDate = shipDate;
+      return this;
+    }
+    /**
+      * Order Status
+      **/
+    public Builder status(StatusEnum status) {
+      this.status = status;
+      return this;
+    }
+    /**
+      **/
+    public Builder complete(Boolean complete) {
+      this.complete = complete;
+      return this;
+    }
+
+    public Order build() {
+      return new Order(id, petId, quantity, shipDate, status, complete);
+    }
+  }
 }
 
diff --git a/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/OuterComposite.java b/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/OuterComposite.java
index 9ae89e7a2856399e2c19903b121989eb3a6adeb2..0e19cca8b2c9e24993b6f70d4541c6ef29ab0a42 100644
--- a/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/OuterComposite.java
+++ b/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/OuterComposite.java
@@ -21,11 +21,10 @@ public class OuterComposite  implements Serializable {
   private @Valid String myString;
   private @Valid Boolean myBoolean;
 
-  /**
-   **/
-  public OuterComposite myNumber(BigDecimal myNumber) {
+  public OuterComposite(BigDecimal myNumber, String myString, Boolean myBoolean) {
     this.myNumber = myNumber;
-    return this;
+    this.myString = myString;
+    this.myBoolean = myBoolean;
   }
 
   
@@ -34,45 +33,29 @@ public class OuterComposite  implements Serializable {
   public BigDecimal getMyNumber() {
     return myNumber;
   }
+
   public void setMyNumber(BigDecimal myNumber) {
     this.myNumber = myNumber;
   }
-
-  /**
-   **/
-  public OuterComposite myString(String myString) {
-    this.myString = myString;
-    return this;
-  }
-
-  
   @ApiModelProperty(value = "")
   @JsonProperty("my_string")
   public String getMyString() {
     return myString;
   }
+
   public void setMyString(String myString) {
     this.myString = myString;
   }
-
-  /**
-   **/
-  public OuterComposite myBoolean(Boolean myBoolean) {
-    this.myBoolean = myBoolean;
-    return this;
-  }
-
-  
   @ApiModelProperty(value = "")
   @JsonProperty("my_boolean")
   public Boolean getMyBoolean() {
     return myBoolean;
   }
+
   public void setMyBoolean(Boolean myBoolean) {
     this.myBoolean = myBoolean;
   }
 
-
   @Override
   public boolean equals(java.lang.Object o) {
     if (this == o) {
@@ -82,9 +65,9 @@ public class OuterComposite  implements Serializable {
       return false;
     }
     OuterComposite outerComposite = (OuterComposite) o;
-    return Objects.equals(myNumber, outerComposite.myNumber) &&
-        Objects.equals(myString, outerComposite.myString) &&
-        Objects.equals(myBoolean, outerComposite.myBoolean);
+    return Objects.equals(this.myNumber, outerComposite.myNumber) &&
+        Objects.equals(this.myString, outerComposite.myString) &&
+        Objects.equals(this.myBoolean, outerComposite.myBoolean);
   }
 
   @Override
@@ -114,5 +97,38 @@ public class OuterComposite  implements Serializable {
     }
     return o.toString().replace("\n", "\n    ");
   }
+
+  public static Builder builder() {
+    return new Builder();
+  }
+
+  public static class Builder {
+    private BigDecimal myNumber;
+    private String myString;
+    private Boolean myBoolean;
+
+    /**
+      **/
+    public Builder myNumber(BigDecimal myNumber) {
+      this.myNumber = myNumber;
+      return this;
+    }
+    /**
+      **/
+    public Builder myString(String myString) {
+      this.myString = myString;
+      return this;
+    }
+    /**
+      **/
+    public Builder myBoolean(Boolean myBoolean) {
+      this.myBoolean = myBoolean;
+      return this;
+    }
+
+    public OuterComposite build() {
+      return new OuterComposite(myNumber, myString, myBoolean);
+    }
+  }
 }
 
diff --git a/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/OuterEnum.java b/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/OuterEnum.java
index f69d482a93d91e5c1ceee0c4adce80c0fb292c61..fbd86c9bdbe1d379129b94f75cf9e43869f0efb8 100644
--- a/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/OuterEnum.java
+++ b/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/OuterEnum.java
@@ -31,13 +31,13 @@ public enum OuterEnum {
   }
 
   @JsonCreator
-  public static OuterEnum fromValue(String text) {
+  public static OuterEnum fromValue(String value) {
     for (OuterEnum b : OuterEnum.values()) {
-      if (String.valueOf(b.value).equals(text)) {
+      if (b.value.equals(value)) {
         return b;
       }
     }
-    throw new IllegalArgumentException("Unexpected value '" + text + "'");
+    throw new IllegalArgumentException("Unexpected value '" + value + "'");
   }
 }
 
diff --git a/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/Pet.java b/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/Pet.java
index 6c5f3319798c975afb217e5e475d944692cc8dae..af38297ae9c03337232cd110ff1517363e97c0be 100644
--- a/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/Pet.java
+++ b/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/Pet.java
@@ -21,7 +21,7 @@ import com.fasterxml.jackson.annotation.JsonValue;
 public class Pet  implements Serializable {
   
   private @Valid Long id;
-  private @Valid Category category = null;
+  private @Valid Category category;
   private @Valid String name;
   private @Valid List<String> photoUrls = new ArrayList<String>();
   private @Valid List<Tag> tags = new ArrayList<Tag>();
@@ -48,23 +48,25 @@ public enum StatusEnum {
     }
 
     @JsonCreator
-    public static StatusEnum fromValue(String v) {
+    public static StatusEnum fromValue(String value) {
         for (StatusEnum b : StatusEnum.values()) {
-            if (String.valueOf(b.value).equals(v)) {
+            if (b.value.equals(value)) {
                 return b;
             }
         }
-        throw new IllegalArgumentException("Unexpected value '" + v + "'");
+        throw new IllegalArgumentException("Unexpected value '" + value + "'");
     }
 }
 
   private @Valid StatusEnum status;
 
-  /**
-   **/
-  public Pet id(Long id) {
+  public Pet(Long id, Category category, String name, List<String> photoUrls, List<Tag> tags, StatusEnum status) {
     this.id = id;
-    return this;
+    this.category = category;
+    this.name = name;
+    this.photoUrls = photoUrls;
+    this.tags = tags;
+    this.status = status;
   }
 
   
@@ -73,99 +75,58 @@ public enum StatusEnum {
   public Long getId() {
     return id;
   }
+
   public void setId(Long id) {
     this.id = id;
   }
-
-  /**
-   **/
-  public Pet category(Category category) {
-    this.category = category;
-    return this;
-  }
-
-  
   @ApiModelProperty(value = "")
   @JsonProperty("category")
   public Category getCategory() {
     return category;
   }
+
   public void setCategory(Category category) {
     this.category = category;
   }
-
-  /**
-   **/
-  public Pet name(String name) {
-    this.name = name;
-    return this;
-  }
-
-  
   @ApiModelProperty(example = "doggie", required = true, value = "")
   @JsonProperty("name")
   @NotNull
   public String getName() {
     return name;
   }
+
   public void setName(String name) {
     this.name = name;
   }
-
-  /**
-   **/
-  public Pet photoUrls(List<String> photoUrls) {
-    this.photoUrls = photoUrls;
-    return this;
-  }
-
-  
   @ApiModelProperty(required = true, value = "")
   @JsonProperty("photoUrls")
   @NotNull
   public List<String> getPhotoUrls() {
     return photoUrls;
   }
+
   public void setPhotoUrls(List<String> photoUrls) {
     this.photoUrls = photoUrls;
   }
-
-  /**
-   **/
-  public Pet tags(List<Tag> tags) {
-    this.tags = tags;
-    return this;
-  }
-
-  
   @ApiModelProperty(value = "")
   @JsonProperty("tags")
   public List<Tag> getTags() {
     return tags;
   }
+
   public void setTags(List<Tag> tags) {
     this.tags = tags;
   }
-
-  /**
-   * pet status in the store
-   **/
-  public Pet status(StatusEnum status) {
-    this.status = status;
-    return this;
-  }
-
-  
   @ApiModelProperty(value = "pet status in the store")
   @JsonProperty("status")
   public StatusEnum getStatus() {
     return status;
   }
+
   public void setStatus(StatusEnum status) {
     this.status = status;
   }
 
-
   @Override
   public boolean equals(java.lang.Object o) {
     if (this == o) {
@@ -175,12 +136,12 @@ public enum StatusEnum {
       return false;
     }
     Pet pet = (Pet) o;
-    return Objects.equals(id, pet.id) &&
-        Objects.equals(category, pet.category) &&
-        Objects.equals(name, pet.name) &&
-        Objects.equals(photoUrls, pet.photoUrls) &&
-        Objects.equals(tags, pet.tags) &&
-        Objects.equals(status, pet.status);
+    return Objects.equals(this.id, pet.id) &&
+        Objects.equals(this.category, pet.category) &&
+        Objects.equals(this.name, pet.name) &&
+        Objects.equals(this.photoUrls, pet.photoUrls) &&
+        Objects.equals(this.tags, pet.tags) &&
+        Objects.equals(this.status, pet.status);
   }
 
   @Override
@@ -213,5 +174,60 @@ public enum StatusEnum {
     }
     return o.toString().replace("\n", "\n    ");
   }
+
+  public static Builder builder() {
+    return new Builder();
+  }
+
+  public static class Builder {
+    private Long id;
+    private Category category;
+    private String name;
+    private List<String> photoUrls = new ArrayList<String>();
+    private List<Tag> tags = new ArrayList<Tag>();
+    private StatusEnum status;
+
+    /**
+      **/
+    public Builder id(Long id) {
+      this.id = id;
+      return this;
+    }
+    /**
+      **/
+    public Builder category(Category category) {
+      this.category = category;
+      return this;
+    }
+    /**
+      **/
+    public Builder name(String name) {
+      this.name = name;
+      return this;
+    }
+    /**
+      **/
+    public Builder photoUrls(List<String> photoUrls) {
+      this.photoUrls = photoUrls;
+      return this;
+    }
+    /**
+      **/
+    public Builder tags(List<Tag> tags) {
+      this.tags = tags;
+      return this;
+    }
+    /**
+      * pet status in the store
+      **/
+    public Builder status(StatusEnum status) {
+      this.status = status;
+      return this;
+    }
+
+    public Pet build() {
+      return new Pet(id, category, name, photoUrls, tags, status);
+    }
+  }
 }
 
diff --git a/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/ReadOnlyFirst.java b/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/ReadOnlyFirst.java
index 031ee7cf9f12430abc50a929571dd4beff82a68b..564f4882a9c602124783654633350090a79a6dee 100644
--- a/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/ReadOnlyFirst.java
+++ b/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/ReadOnlyFirst.java
@@ -19,11 +19,9 @@ public class ReadOnlyFirst  implements Serializable {
   private @Valid String bar;
   private @Valid String baz;
 
-  /**
-   **/
-  public ReadOnlyFirst bar(String bar) {
+  public ReadOnlyFirst(String bar, String baz) {
     this.bar = bar;
-    return this;
+    this.baz = baz;
   }
 
   
@@ -32,28 +30,20 @@ public class ReadOnlyFirst  implements Serializable {
   public String getBar() {
     return bar;
   }
+
   public void setBar(String bar) {
     this.bar = bar;
   }
-
-  /**
-   **/
-  public ReadOnlyFirst baz(String baz) {
-    this.baz = baz;
-    return this;
-  }
-
-  
   @ApiModelProperty(value = "")
   @JsonProperty("baz")
   public String getBaz() {
     return baz;
   }
+
   public void setBaz(String baz) {
     this.baz = baz;
   }
 
-
   @Override
   public boolean equals(java.lang.Object o) {
     if (this == o) {
@@ -63,8 +53,8 @@ public class ReadOnlyFirst  implements Serializable {
       return false;
     }
     ReadOnlyFirst readOnlyFirst = (ReadOnlyFirst) o;
-    return Objects.equals(bar, readOnlyFirst.bar) &&
-        Objects.equals(baz, readOnlyFirst.baz);
+    return Objects.equals(this.bar, readOnlyFirst.bar) &&
+        Objects.equals(this.baz, readOnlyFirst.baz);
   }
 
   @Override
@@ -93,5 +83,31 @@ public class ReadOnlyFirst  implements Serializable {
     }
     return o.toString().replace("\n", "\n    ");
   }
+
+  public static Builder builder() {
+    return new Builder();
+  }
+
+  public static class Builder {
+    private String bar;
+    private String baz;
+
+    /**
+      **/
+    public Builder bar(String bar) {
+      this.bar = bar;
+      return this;
+    }
+    /**
+      **/
+    public Builder baz(String baz) {
+      this.baz = baz;
+      return this;
+    }
+
+    public ReadOnlyFirst build() {
+      return new ReadOnlyFirst(bar, baz);
+    }
+  }
 }
 
diff --git a/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/SpecialModelName.java b/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/SpecialModelName.java
index 9d589d25a4b0ccc65d2a3853ff130c0e9b74f5aa..5e19a2deb4be3dc9b48fa52bf93e765b4f14ed82 100644
--- a/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/SpecialModelName.java
+++ b/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/SpecialModelName.java
@@ -18,11 +18,8 @@ public class SpecialModelName  implements Serializable {
   
   private @Valid Long $specialPropertyName;
 
-  /**
-   **/
-  public SpecialModelName $specialPropertyName(Long $specialPropertyName) {
+  public SpecialModelName(Long $specialPropertyName) {
     this.$specialPropertyName = $specialPropertyName;
-    return this;
   }
 
   
@@ -31,11 +28,11 @@ public class SpecialModelName  implements Serializable {
   public Long get$SpecialPropertyName() {
     return $specialPropertyName;
   }
+
   public void set$SpecialPropertyName(Long $specialPropertyName) {
     this.$specialPropertyName = $specialPropertyName;
   }
 
-
   @Override
   public boolean equals(java.lang.Object o) {
     if (this == o) {
@@ -45,7 +42,7 @@ public class SpecialModelName  implements Serializable {
       return false;
     }
     SpecialModelName $specialModelName = (SpecialModelName) o;
-    return Objects.equals($specialPropertyName, $specialModelName.$specialPropertyName);
+    return Objects.equals(this.$specialPropertyName, $specialModelName.$specialPropertyName);
   }
 
   @Override
@@ -73,5 +70,24 @@ public class SpecialModelName  implements Serializable {
     }
     return o.toString().replace("\n", "\n    ");
   }
+
+  public static Builder builder() {
+    return new Builder();
+  }
+
+  public static class Builder {
+    private Long $specialPropertyName;
+
+    /**
+      **/
+    public Builder $specialPropertyName(Long $specialPropertyName) {
+      this.$specialPropertyName = $specialPropertyName;
+      return this;
+    }
+
+    public SpecialModelName build() {
+      return new SpecialModelName($specialPropertyName);
+    }
+  }
 }
 
diff --git a/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/Tag.java b/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/Tag.java
index 15e81930db253191df9771b3dbcc30d407222432..c0ac65054b2c86c1745134181095ae81ae8a4a0b 100644
--- a/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/Tag.java
+++ b/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/Tag.java
@@ -19,11 +19,9 @@ public class Tag  implements Serializable {
   private @Valid Long id;
   private @Valid String name;
 
-  /**
-   **/
-  public Tag id(Long id) {
+  public Tag(Long id, String name) {
     this.id = id;
-    return this;
+    this.name = name;
   }
 
   
@@ -32,28 +30,20 @@ public class Tag  implements Serializable {
   public Long getId() {
     return id;
   }
+
   public void setId(Long id) {
     this.id = id;
   }
-
-  /**
-   **/
-  public Tag name(String name) {
-    this.name = name;
-    return this;
-  }
-
-  
   @ApiModelProperty(value = "")
   @JsonProperty("name")
   public String getName() {
     return name;
   }
+
   public void setName(String name) {
     this.name = name;
   }
 
-
   @Override
   public boolean equals(java.lang.Object o) {
     if (this == o) {
@@ -63,8 +53,8 @@ public class Tag  implements Serializable {
       return false;
     }
     Tag tag = (Tag) o;
-    return Objects.equals(id, tag.id) &&
-        Objects.equals(name, tag.name);
+    return Objects.equals(this.id, tag.id) &&
+        Objects.equals(this.name, tag.name);
   }
 
   @Override
@@ -93,5 +83,31 @@ public class Tag  implements Serializable {
     }
     return o.toString().replace("\n", "\n    ");
   }
+
+  public static Builder builder() {
+    return new Builder();
+  }
+
+  public static class Builder {
+    private Long id;
+    private String name;
+
+    /**
+      **/
+    public Builder id(Long id) {
+      this.id = id;
+      return this;
+    }
+    /**
+      **/
+    public Builder name(String name) {
+      this.name = name;
+      return this;
+    }
+
+    public Tag build() {
+      return new Tag(id, name);
+    }
+  }
 }
 
diff --git a/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/TypeHolderDefault.java b/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/TypeHolderDefault.java
new file mode 100644
index 0000000000000000000000000000000000000000..d615aa32eca0829cf5c47b3ea833450a3cf18e90
--- /dev/null
+++ b/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/TypeHolderDefault.java
@@ -0,0 +1,181 @@
+package org.openapitools.model;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.List;
+import java.io.Serializable;
+import javax.validation.constraints.*;
+import javax.validation.Valid;
+
+import io.swagger.annotations.*;
+import java.util.Objects;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonValue;
+
+
+
+public class TypeHolderDefault  implements Serializable {
+  
+  private @Valid String stringItem = "what";
+  private @Valid BigDecimal numberItem;
+  private @Valid Integer integerItem;
+  private @Valid Boolean boolItem = true;
+  private @Valid List<Integer> arrayItem = new ArrayList<Integer>();
+
+  public TypeHolderDefault(String stringItem, BigDecimal numberItem, Integer integerItem, Boolean boolItem, List<Integer> arrayItem) {
+    this.stringItem = stringItem;
+    this.numberItem = numberItem;
+    this.integerItem = integerItem;
+    this.boolItem = boolItem;
+    this.arrayItem = arrayItem;
+  }
+
+  
+  @ApiModelProperty(required = true, value = "")
+  @JsonProperty("string_item")
+  @NotNull
+  public String getStringItem() {
+    return stringItem;
+  }
+
+  public void setStringItem(String stringItem) {
+    this.stringItem = stringItem;
+  }
+  @ApiModelProperty(required = true, value = "")
+  @JsonProperty("number_item")
+  @NotNull
+  public BigDecimal getNumberItem() {
+    return numberItem;
+  }
+
+  public void setNumberItem(BigDecimal numberItem) {
+    this.numberItem = numberItem;
+  }
+  @ApiModelProperty(required = true, value = "")
+  @JsonProperty("integer_item")
+  @NotNull
+  public Integer getIntegerItem() {
+    return integerItem;
+  }
+
+  public void setIntegerItem(Integer integerItem) {
+    this.integerItem = integerItem;
+  }
+  @ApiModelProperty(required = true, value = "")
+  @JsonProperty("bool_item")
+  @NotNull
+  public Boolean getBoolItem() {
+    return boolItem;
+  }
+
+  public void setBoolItem(Boolean boolItem) {
+    this.boolItem = boolItem;
+  }
+  @ApiModelProperty(required = true, value = "")
+  @JsonProperty("array_item")
+  @NotNull
+  public List<Integer> getArrayItem() {
+    return arrayItem;
+  }
+
+  public void setArrayItem(List<Integer> arrayItem) {
+    this.arrayItem = arrayItem;
+  }
+
+  @Override
+  public boolean equals(java.lang.Object o) {
+    if (this == o) {
+      return true;
+    }
+    if (o == null || getClass() != o.getClass()) {
+      return false;
+    }
+    TypeHolderDefault typeHolderDefault = (TypeHolderDefault) o;
+    return Objects.equals(this.stringItem, typeHolderDefault.stringItem) &&
+        Objects.equals(this.numberItem, typeHolderDefault.numberItem) &&
+        Objects.equals(this.integerItem, typeHolderDefault.integerItem) &&
+        Objects.equals(this.boolItem, typeHolderDefault.boolItem) &&
+        Objects.equals(this.arrayItem, typeHolderDefault.arrayItem);
+  }
+
+  @Override
+  public int hashCode() {
+    return Objects.hash(stringItem, numberItem, integerItem, boolItem, arrayItem);
+  }
+
+  @Override
+  public String toString() {
+    StringBuilder sb = new StringBuilder();
+    sb.append("class TypeHolderDefault {\n");
+    
+    sb.append("    stringItem: ").append(toIndentedString(stringItem)).append("\n");
+    sb.append("    numberItem: ").append(toIndentedString(numberItem)).append("\n");
+    sb.append("    integerItem: ").append(toIndentedString(integerItem)).append("\n");
+    sb.append("    boolItem: ").append(toIndentedString(boolItem)).append("\n");
+    sb.append("    arrayItem: ").append(toIndentedString(arrayItem)).append("\n");
+    sb.append("}");
+    return sb.toString();
+  }
+
+  /**
+   * Convert the given object to string with each line indented by 4 spaces
+   * (except the first line).
+   */
+  private String toIndentedString(java.lang.Object o) {
+    if (o == null) {
+      return "null";
+    }
+    return o.toString().replace("\n", "\n    ");
+  }
+
+  public static Builder builder() {
+    return new Builder();
+  }
+
+  public static class Builder {
+    private String stringItem = "what";
+    private BigDecimal numberItem;
+    private Integer integerItem;
+    private Boolean boolItem = true;
+    private List<Integer> arrayItem = new ArrayList<Integer>();
+
+    /**
+      **/
+    public Builder stringItem(String stringItem) {
+      this.stringItem = stringItem;
+      return this;
+    }
+    /**
+      **/
+    public Builder numberItem(BigDecimal numberItem) {
+      this.numberItem = numberItem;
+      return this;
+    }
+    /**
+      **/
+    public Builder integerItem(Integer integerItem) {
+      this.integerItem = integerItem;
+      return this;
+    }
+    /**
+      **/
+    public Builder boolItem(Boolean boolItem) {
+      this.boolItem = boolItem;
+      return this;
+    }
+    /**
+      **/
+    public Builder arrayItem(List<Integer> arrayItem) {
+      this.arrayItem = arrayItem;
+      return this;
+    }
+
+    public TypeHolderDefault build() {
+      return new TypeHolderDefault(stringItem, numberItem, integerItem, boolItem, arrayItem);
+    }
+  }
+}
+
diff --git a/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/TypeHolderExample.java b/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/TypeHolderExample.java
new file mode 100644
index 0000000000000000000000000000000000000000..1a6f043e254bf4e3da3a9243d68c3a78877d4f77
--- /dev/null
+++ b/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/TypeHolderExample.java
@@ -0,0 +1,202 @@
+package org.openapitools.model;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.List;
+import java.io.Serializable;
+import javax.validation.constraints.*;
+import javax.validation.Valid;
+
+import io.swagger.annotations.*;
+import java.util.Objects;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonValue;
+
+
+
+public class TypeHolderExample  implements Serializable {
+  
+  private @Valid String stringItem;
+  private @Valid BigDecimal numberItem;
+  private @Valid Float floatItem;
+  private @Valid Integer integerItem;
+  private @Valid Boolean boolItem;
+  private @Valid List<Integer> arrayItem = new ArrayList<Integer>();
+
+  public TypeHolderExample(String stringItem, BigDecimal numberItem, Float floatItem, Integer integerItem, Boolean boolItem, List<Integer> arrayItem) {
+    this.stringItem = stringItem;
+    this.numberItem = numberItem;
+    this.floatItem = floatItem;
+    this.integerItem = integerItem;
+    this.boolItem = boolItem;
+    this.arrayItem = arrayItem;
+  }
+
+  
+  @ApiModelProperty(example = "what", required = true, value = "")
+  @JsonProperty("string_item")
+  @NotNull
+  public String getStringItem() {
+    return stringItem;
+  }
+
+  public void setStringItem(String stringItem) {
+    this.stringItem = stringItem;
+  }
+  @ApiModelProperty(example = "1.234", required = true, value = "")
+  @JsonProperty("number_item")
+  @NotNull
+  public BigDecimal getNumberItem() {
+    return numberItem;
+  }
+
+  public void setNumberItem(BigDecimal numberItem) {
+    this.numberItem = numberItem;
+  }
+  @ApiModelProperty(example = "1.234", required = true, value = "")
+  @JsonProperty("float_item")
+  @NotNull
+  public Float getFloatItem() {
+    return floatItem;
+  }
+
+  public void setFloatItem(Float floatItem) {
+    this.floatItem = floatItem;
+  }
+  @ApiModelProperty(example = "-2", required = true, value = "")
+  @JsonProperty("integer_item")
+  @NotNull
+  public Integer getIntegerItem() {
+    return integerItem;
+  }
+
+  public void setIntegerItem(Integer integerItem) {
+    this.integerItem = integerItem;
+  }
+  @ApiModelProperty(example = "true", required = true, value = "")
+  @JsonProperty("bool_item")
+  @NotNull
+  public Boolean getBoolItem() {
+    return boolItem;
+  }
+
+  public void setBoolItem(Boolean boolItem) {
+    this.boolItem = boolItem;
+  }
+  @ApiModelProperty(example = "[0, 1, 2, 3]", required = true, value = "")
+  @JsonProperty("array_item")
+  @NotNull
+  public List<Integer> getArrayItem() {
+    return arrayItem;
+  }
+
+  public void setArrayItem(List<Integer> arrayItem) {
+    this.arrayItem = arrayItem;
+  }
+
+  @Override
+  public boolean equals(java.lang.Object o) {
+    if (this == o) {
+      return true;
+    }
+    if (o == null || getClass() != o.getClass()) {
+      return false;
+    }
+    TypeHolderExample typeHolderExample = (TypeHolderExample) o;
+    return Objects.equals(this.stringItem, typeHolderExample.stringItem) &&
+        Objects.equals(this.numberItem, typeHolderExample.numberItem) &&
+        Objects.equals(this.floatItem, typeHolderExample.floatItem) &&
+        Objects.equals(this.integerItem, typeHolderExample.integerItem) &&
+        Objects.equals(this.boolItem, typeHolderExample.boolItem) &&
+        Objects.equals(this.arrayItem, typeHolderExample.arrayItem);
+  }
+
+  @Override
+  public int hashCode() {
+    return Objects.hash(stringItem, numberItem, floatItem, integerItem, boolItem, arrayItem);
+  }
+
+  @Override
+  public String toString() {
+    StringBuilder sb = new StringBuilder();
+    sb.append("class TypeHolderExample {\n");
+    
+    sb.append("    stringItem: ").append(toIndentedString(stringItem)).append("\n");
+    sb.append("    numberItem: ").append(toIndentedString(numberItem)).append("\n");
+    sb.append("    floatItem: ").append(toIndentedString(floatItem)).append("\n");
+    sb.append("    integerItem: ").append(toIndentedString(integerItem)).append("\n");
+    sb.append("    boolItem: ").append(toIndentedString(boolItem)).append("\n");
+    sb.append("    arrayItem: ").append(toIndentedString(arrayItem)).append("\n");
+    sb.append("}");
+    return sb.toString();
+  }
+
+  /**
+   * Convert the given object to string with each line indented by 4 spaces
+   * (except the first line).
+   */
+  private String toIndentedString(java.lang.Object o) {
+    if (o == null) {
+      return "null";
+    }
+    return o.toString().replace("\n", "\n    ");
+  }
+
+  public static Builder builder() {
+    return new Builder();
+  }
+
+  public static class Builder {
+    private String stringItem;
+    private BigDecimal numberItem;
+    private Float floatItem;
+    private Integer integerItem;
+    private Boolean boolItem;
+    private List<Integer> arrayItem = new ArrayList<Integer>();
+
+    /**
+      **/
+    public Builder stringItem(String stringItem) {
+      this.stringItem = stringItem;
+      return this;
+    }
+    /**
+      **/
+    public Builder numberItem(BigDecimal numberItem) {
+      this.numberItem = numberItem;
+      return this;
+    }
+    /**
+      **/
+    public Builder floatItem(Float floatItem) {
+      this.floatItem = floatItem;
+      return this;
+    }
+    /**
+      **/
+    public Builder integerItem(Integer integerItem) {
+      this.integerItem = integerItem;
+      return this;
+    }
+    /**
+      **/
+    public Builder boolItem(Boolean boolItem) {
+      this.boolItem = boolItem;
+      return this;
+    }
+    /**
+      **/
+    public Builder arrayItem(List<Integer> arrayItem) {
+      this.arrayItem = arrayItem;
+      return this;
+    }
+
+    public TypeHolderExample build() {
+      return new TypeHolderExample(stringItem, numberItem, floatItem, integerItem, boolItem, arrayItem);
+    }
+  }
+}
+
diff --git a/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/User.java b/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/User.java
index 2b3123ad16b09e89616f2920625db8a66412f767..e85cdceee0bdec9387d3372a5aacb3452ece0787 100644
--- a/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/User.java
+++ b/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/User.java
@@ -25,11 +25,15 @@ public class User  implements Serializable {
   private @Valid String phone;
   private @Valid Integer userStatus;
 
-  /**
-   **/
-  public User id(Long id) {
+  public User(Long id, String username, String firstName, String lastName, String email, String password, String phone, Integer userStatus) {
     this.id = id;
-    return this;
+    this.username = username;
+    this.firstName = firstName;
+    this.lastName = lastName;
+    this.email = email;
+    this.password = password;
+    this.phone = phone;
+    this.userStatus = userStatus;
   }
 
   
@@ -38,131 +42,74 @@ public class User  implements Serializable {
   public Long getId() {
     return id;
   }
+
   public void setId(Long id) {
     this.id = id;
   }
-
-  /**
-   **/
-  public User username(String username) {
-    this.username = username;
-    return this;
-  }
-
-  
   @ApiModelProperty(value = "")
   @JsonProperty("username")
   public String getUsername() {
     return username;
   }
+
   public void setUsername(String username) {
     this.username = username;
   }
-
-  /**
-   **/
-  public User firstName(String firstName) {
-    this.firstName = firstName;
-    return this;
-  }
-
-  
   @ApiModelProperty(value = "")
   @JsonProperty("firstName")
   public String getFirstName() {
     return firstName;
   }
+
   public void setFirstName(String firstName) {
     this.firstName = firstName;
   }
-
-  /**
-   **/
-  public User lastName(String lastName) {
-    this.lastName = lastName;
-    return this;
-  }
-
-  
   @ApiModelProperty(value = "")
   @JsonProperty("lastName")
   public String getLastName() {
     return lastName;
   }
+
   public void setLastName(String lastName) {
     this.lastName = lastName;
   }
-
-  /**
-   **/
-  public User email(String email) {
-    this.email = email;
-    return this;
-  }
-
-  
   @ApiModelProperty(value = "")
   @JsonProperty("email")
   public String getEmail() {
     return email;
   }
+
   public void setEmail(String email) {
     this.email = email;
   }
-
-  /**
-   **/
-  public User password(String password) {
-    this.password = password;
-    return this;
-  }
-
-  
   @ApiModelProperty(value = "")
   @JsonProperty("password")
   public String getPassword() {
     return password;
   }
+
   public void setPassword(String password) {
     this.password = password;
   }
-
-  /**
-   **/
-  public User phone(String phone) {
-    this.phone = phone;
-    return this;
-  }
-
-  
   @ApiModelProperty(value = "")
   @JsonProperty("phone")
   public String getPhone() {
     return phone;
   }
+
   public void setPhone(String phone) {
     this.phone = phone;
   }
-
-  /**
-   * User Status
-   **/
-  public User userStatus(Integer userStatus) {
-    this.userStatus = userStatus;
-    return this;
-  }
-
-  
   @ApiModelProperty(value = "User Status")
   @JsonProperty("userStatus")
   public Integer getUserStatus() {
     return userStatus;
   }
+
   public void setUserStatus(Integer userStatus) {
     this.userStatus = userStatus;
   }
 
-
   @Override
   public boolean equals(java.lang.Object o) {
     if (this == o) {
@@ -172,14 +119,14 @@ public class User  implements Serializable {
       return false;
     }
     User user = (User) o;
-    return Objects.equals(id, user.id) &&
-        Objects.equals(username, user.username) &&
-        Objects.equals(firstName, user.firstName) &&
-        Objects.equals(lastName, user.lastName) &&
-        Objects.equals(email, user.email) &&
-        Objects.equals(password, user.password) &&
-        Objects.equals(phone, user.phone) &&
-        Objects.equals(userStatus, user.userStatus);
+    return Objects.equals(this.id, user.id) &&
+        Objects.equals(this.username, user.username) &&
+        Objects.equals(this.firstName, user.firstName) &&
+        Objects.equals(this.lastName, user.lastName) &&
+        Objects.equals(this.email, user.email) &&
+        Objects.equals(this.password, user.password) &&
+        Objects.equals(this.phone, user.phone) &&
+        Objects.equals(this.userStatus, user.userStatus);
   }
 
   @Override
@@ -214,5 +161,74 @@ public class User  implements Serializable {
     }
     return o.toString().replace("\n", "\n    ");
   }
+
+  public static Builder builder() {
+    return new Builder();
+  }
+
+  public static class Builder {
+    private Long id;
+    private String username;
+    private String firstName;
+    private String lastName;
+    private String email;
+    private String password;
+    private String phone;
+    private Integer userStatus;
+
+    /**
+      **/
+    public Builder id(Long id) {
+      this.id = id;
+      return this;
+    }
+    /**
+      **/
+    public Builder username(String username) {
+      this.username = username;
+      return this;
+    }
+    /**
+      **/
+    public Builder firstName(String firstName) {
+      this.firstName = firstName;
+      return this;
+    }
+    /**
+      **/
+    public Builder lastName(String lastName) {
+      this.lastName = lastName;
+      return this;
+    }
+    /**
+      **/
+    public Builder email(String email) {
+      this.email = email;
+      return this;
+    }
+    /**
+      **/
+    public Builder password(String password) {
+      this.password = password;
+      return this;
+    }
+    /**
+      **/
+    public Builder phone(String phone) {
+      this.phone = phone;
+      return this;
+    }
+    /**
+      * User Status
+      **/
+    public Builder userStatus(Integer userStatus) {
+      this.userStatus = userStatus;
+      return this;
+    }
+
+    public User build() {
+      return new User(id, username, firstName, lastName, email, password, phone, userStatus);
+    }
+  }
 }
 
diff --git a/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/XmlItem.java b/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/XmlItem.java
new file mode 100644
index 0000000000000000000000000000000000000000..6b90f7917489533cb0e4c9be43c53cbeee7fac29
--- /dev/null
+++ b/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/XmlItem.java
@@ -0,0 +1,656 @@
+package org.openapitools.model;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.List;
+import java.io.Serializable;
+import javax.validation.constraints.*;
+import javax.validation.Valid;
+
+import io.swagger.annotations.*;
+import java.util.Objects;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonValue;
+
+
+
+public class XmlItem  implements Serializable {
+  
+  private @Valid String attributeString;
+  private @Valid BigDecimal attributeNumber;
+  private @Valid Integer attributeInteger;
+  private @Valid Boolean attributeBoolean;
+  private @Valid List<Integer> wrappedArray = new ArrayList<Integer>();
+  private @Valid String nameString;
+  private @Valid BigDecimal nameNumber;
+  private @Valid Integer nameInteger;
+  private @Valid Boolean nameBoolean;
+  private @Valid List<Integer> nameArray = new ArrayList<Integer>();
+  private @Valid List<Integer> nameWrappedArray = new ArrayList<Integer>();
+  private @Valid String prefixString;
+  private @Valid BigDecimal prefixNumber;
+  private @Valid Integer prefixInteger;
+  private @Valid Boolean prefixBoolean;
+  private @Valid List<Integer> prefixArray = new ArrayList<Integer>();
+  private @Valid List<Integer> prefixWrappedArray = new ArrayList<Integer>();
+  private @Valid String namespaceString;
+  private @Valid BigDecimal namespaceNumber;
+  private @Valid Integer namespaceInteger;
+  private @Valid Boolean namespaceBoolean;
+  private @Valid List<Integer> namespaceArray = new ArrayList<Integer>();
+  private @Valid List<Integer> namespaceWrappedArray = new ArrayList<Integer>();
+  private @Valid String prefixNsString;
+  private @Valid BigDecimal prefixNsNumber;
+  private @Valid Integer prefixNsInteger;
+  private @Valid Boolean prefixNsBoolean;
+  private @Valid List<Integer> prefixNsArray = new ArrayList<Integer>();
+  private @Valid List<Integer> prefixNsWrappedArray = new ArrayList<Integer>();
+
+  public XmlItem(String attributeString, BigDecimal attributeNumber, Integer attributeInteger, Boolean attributeBoolean, List<Integer> wrappedArray, String nameString, BigDecimal nameNumber, Integer nameInteger, Boolean nameBoolean, List<Integer> nameArray, List<Integer> nameWrappedArray, String prefixString, BigDecimal prefixNumber, Integer prefixInteger, Boolean prefixBoolean, List<Integer> prefixArray, List<Integer> prefixWrappedArray, String namespaceString, BigDecimal namespaceNumber, Integer namespaceInteger, Boolean namespaceBoolean, List<Integer> namespaceArray, List<Integer> namespaceWrappedArray, String prefixNsString, BigDecimal prefixNsNumber, Integer prefixNsInteger, Boolean prefixNsBoolean, List<Integer> prefixNsArray, List<Integer> prefixNsWrappedArray) {
+    this.attributeString = attributeString;
+    this.attributeNumber = attributeNumber;
+    this.attributeInteger = attributeInteger;
+    this.attributeBoolean = attributeBoolean;
+    this.wrappedArray = wrappedArray;
+    this.nameString = nameString;
+    this.nameNumber = nameNumber;
+    this.nameInteger = nameInteger;
+    this.nameBoolean = nameBoolean;
+    this.nameArray = nameArray;
+    this.nameWrappedArray = nameWrappedArray;
+    this.prefixString = prefixString;
+    this.prefixNumber = prefixNumber;
+    this.prefixInteger = prefixInteger;
+    this.prefixBoolean = prefixBoolean;
+    this.prefixArray = prefixArray;
+    this.prefixWrappedArray = prefixWrappedArray;
+    this.namespaceString = namespaceString;
+    this.namespaceNumber = namespaceNumber;
+    this.namespaceInteger = namespaceInteger;
+    this.namespaceBoolean = namespaceBoolean;
+    this.namespaceArray = namespaceArray;
+    this.namespaceWrappedArray = namespaceWrappedArray;
+    this.prefixNsString = prefixNsString;
+    this.prefixNsNumber = prefixNsNumber;
+    this.prefixNsInteger = prefixNsInteger;
+    this.prefixNsBoolean = prefixNsBoolean;
+    this.prefixNsArray = prefixNsArray;
+    this.prefixNsWrappedArray = prefixNsWrappedArray;
+  }
+
+  
+  @ApiModelProperty(example = "string", value = "")
+  @JsonProperty("attribute_string")
+  public String getAttributeString() {
+    return attributeString;
+  }
+
+  public void setAttributeString(String attributeString) {
+    this.attributeString = attributeString;
+  }
+  @ApiModelProperty(example = "1.234", value = "")
+  @JsonProperty("attribute_number")
+  public BigDecimal getAttributeNumber() {
+    return attributeNumber;
+  }
+
+  public void setAttributeNumber(BigDecimal attributeNumber) {
+    this.attributeNumber = attributeNumber;
+  }
+  @ApiModelProperty(example = "-2", value = "")
+  @JsonProperty("attribute_integer")
+  public Integer getAttributeInteger() {
+    return attributeInteger;
+  }
+
+  public void setAttributeInteger(Integer attributeInteger) {
+    this.attributeInteger = attributeInteger;
+  }
+  @ApiModelProperty(example = "true", value = "")
+  @JsonProperty("attribute_boolean")
+  public Boolean getAttributeBoolean() {
+    return attributeBoolean;
+  }
+
+  public void setAttributeBoolean(Boolean attributeBoolean) {
+    this.attributeBoolean = attributeBoolean;
+  }
+  @ApiModelProperty(value = "")
+  @JsonProperty("wrapped_array")
+  public List<Integer> getWrappedArray() {
+    return wrappedArray;
+  }
+
+  public void setWrappedArray(List<Integer> wrappedArray) {
+    this.wrappedArray = wrappedArray;
+  }
+  @ApiModelProperty(example = "string", value = "")
+  @JsonProperty("name_string")
+  public String getNameString() {
+    return nameString;
+  }
+
+  public void setNameString(String nameString) {
+    this.nameString = nameString;
+  }
+  @ApiModelProperty(example = "1.234", value = "")
+  @JsonProperty("name_number")
+  public BigDecimal getNameNumber() {
+    return nameNumber;
+  }
+
+  public void setNameNumber(BigDecimal nameNumber) {
+    this.nameNumber = nameNumber;
+  }
+  @ApiModelProperty(example = "-2", value = "")
+  @JsonProperty("name_integer")
+  public Integer getNameInteger() {
+    return nameInteger;
+  }
+
+  public void setNameInteger(Integer nameInteger) {
+    this.nameInteger = nameInteger;
+  }
+  @ApiModelProperty(example = "true", value = "")
+  @JsonProperty("name_boolean")
+  public Boolean getNameBoolean() {
+    return nameBoolean;
+  }
+
+  public void setNameBoolean(Boolean nameBoolean) {
+    this.nameBoolean = nameBoolean;
+  }
+  @ApiModelProperty(value = "")
+  @JsonProperty("name_array")
+  public List<Integer> getNameArray() {
+    return nameArray;
+  }
+
+  public void setNameArray(List<Integer> nameArray) {
+    this.nameArray = nameArray;
+  }
+  @ApiModelProperty(value = "")
+  @JsonProperty("name_wrapped_array")
+  public List<Integer> getNameWrappedArray() {
+    return nameWrappedArray;
+  }
+
+  public void setNameWrappedArray(List<Integer> nameWrappedArray) {
+    this.nameWrappedArray = nameWrappedArray;
+  }
+  @ApiModelProperty(example = "string", value = "")
+  @JsonProperty("prefix_string")
+  public String getPrefixString() {
+    return prefixString;
+  }
+
+  public void setPrefixString(String prefixString) {
+    this.prefixString = prefixString;
+  }
+  @ApiModelProperty(example = "1.234", value = "")
+  @JsonProperty("prefix_number")
+  public BigDecimal getPrefixNumber() {
+    return prefixNumber;
+  }
+
+  public void setPrefixNumber(BigDecimal prefixNumber) {
+    this.prefixNumber = prefixNumber;
+  }
+  @ApiModelProperty(example = "-2", value = "")
+  @JsonProperty("prefix_integer")
+  public Integer getPrefixInteger() {
+    return prefixInteger;
+  }
+
+  public void setPrefixInteger(Integer prefixInteger) {
+    this.prefixInteger = prefixInteger;
+  }
+  @ApiModelProperty(example = "true", value = "")
+  @JsonProperty("prefix_boolean")
+  public Boolean getPrefixBoolean() {
+    return prefixBoolean;
+  }
+
+  public void setPrefixBoolean(Boolean prefixBoolean) {
+    this.prefixBoolean = prefixBoolean;
+  }
+  @ApiModelProperty(value = "")
+  @JsonProperty("prefix_array")
+  public List<Integer> getPrefixArray() {
+    return prefixArray;
+  }
+
+  public void setPrefixArray(List<Integer> prefixArray) {
+    this.prefixArray = prefixArray;
+  }
+  @ApiModelProperty(value = "")
+  @JsonProperty("prefix_wrapped_array")
+  public List<Integer> getPrefixWrappedArray() {
+    return prefixWrappedArray;
+  }
+
+  public void setPrefixWrappedArray(List<Integer> prefixWrappedArray) {
+    this.prefixWrappedArray = prefixWrappedArray;
+  }
+  @ApiModelProperty(example = "string", value = "")
+  @JsonProperty("namespace_string")
+  public String getNamespaceString() {
+    return namespaceString;
+  }
+
+  public void setNamespaceString(String namespaceString) {
+    this.namespaceString = namespaceString;
+  }
+  @ApiModelProperty(example = "1.234", value = "")
+  @JsonProperty("namespace_number")
+  public BigDecimal getNamespaceNumber() {
+    return namespaceNumber;
+  }
+
+  public void setNamespaceNumber(BigDecimal namespaceNumber) {
+    this.namespaceNumber = namespaceNumber;
+  }
+  @ApiModelProperty(example = "-2", value = "")
+  @JsonProperty("namespace_integer")
+  public Integer getNamespaceInteger() {
+    return namespaceInteger;
+  }
+
+  public void setNamespaceInteger(Integer namespaceInteger) {
+    this.namespaceInteger = namespaceInteger;
+  }
+  @ApiModelProperty(example = "true", value = "")
+  @JsonProperty("namespace_boolean")
+  public Boolean getNamespaceBoolean() {
+    return namespaceBoolean;
+  }
+
+  public void setNamespaceBoolean(Boolean namespaceBoolean) {
+    this.namespaceBoolean = namespaceBoolean;
+  }
+  @ApiModelProperty(value = "")
+  @JsonProperty("namespace_array")
+  public List<Integer> getNamespaceArray() {
+    return namespaceArray;
+  }
+
+  public void setNamespaceArray(List<Integer> namespaceArray) {
+    this.namespaceArray = namespaceArray;
+  }
+  @ApiModelProperty(value = "")
+  @JsonProperty("namespace_wrapped_array")
+  public List<Integer> getNamespaceWrappedArray() {
+    return namespaceWrappedArray;
+  }
+
+  public void setNamespaceWrappedArray(List<Integer> namespaceWrappedArray) {
+    this.namespaceWrappedArray = namespaceWrappedArray;
+  }
+  @ApiModelProperty(example = "string", value = "")
+  @JsonProperty("prefix_ns_string")
+  public String getPrefixNsString() {
+    return prefixNsString;
+  }
+
+  public void setPrefixNsString(String prefixNsString) {
+    this.prefixNsString = prefixNsString;
+  }
+  @ApiModelProperty(example = "1.234", value = "")
+  @JsonProperty("prefix_ns_number")
+  public BigDecimal getPrefixNsNumber() {
+    return prefixNsNumber;
+  }
+
+  public void setPrefixNsNumber(BigDecimal prefixNsNumber) {
+    this.prefixNsNumber = prefixNsNumber;
+  }
+  @ApiModelProperty(example = "-2", value = "")
+  @JsonProperty("prefix_ns_integer")
+  public Integer getPrefixNsInteger() {
+    return prefixNsInteger;
+  }
+
+  public void setPrefixNsInteger(Integer prefixNsInteger) {
+    this.prefixNsInteger = prefixNsInteger;
+  }
+  @ApiModelProperty(example = "true", value = "")
+  @JsonProperty("prefix_ns_boolean")
+  public Boolean getPrefixNsBoolean() {
+    return prefixNsBoolean;
+  }
+
+  public void setPrefixNsBoolean(Boolean prefixNsBoolean) {
+    this.prefixNsBoolean = prefixNsBoolean;
+  }
+  @ApiModelProperty(value = "")
+  @JsonProperty("prefix_ns_array")
+  public List<Integer> getPrefixNsArray() {
+    return prefixNsArray;
+  }
+
+  public void setPrefixNsArray(List<Integer> prefixNsArray) {
+    this.prefixNsArray = prefixNsArray;
+  }
+  @ApiModelProperty(value = "")
+  @JsonProperty("prefix_ns_wrapped_array")
+  public List<Integer> getPrefixNsWrappedArray() {
+    return prefixNsWrappedArray;
+  }
+
+  public void setPrefixNsWrappedArray(List<Integer> prefixNsWrappedArray) {
+    this.prefixNsWrappedArray = prefixNsWrappedArray;
+  }
+
+  @Override
+  public boolean equals(java.lang.Object o) {
+    if (this == o) {
+      return true;
+    }
+    if (o == null || getClass() != o.getClass()) {
+      return false;
+    }
+    XmlItem xmlItem = (XmlItem) o;
+    return Objects.equals(this.attributeString, xmlItem.attributeString) &&
+        Objects.equals(this.attributeNumber, xmlItem.attributeNumber) &&
+        Objects.equals(this.attributeInteger, xmlItem.attributeInteger) &&
+        Objects.equals(this.attributeBoolean, xmlItem.attributeBoolean) &&
+        Objects.equals(this.wrappedArray, xmlItem.wrappedArray) &&
+        Objects.equals(this.nameString, xmlItem.nameString) &&
+        Objects.equals(this.nameNumber, xmlItem.nameNumber) &&
+        Objects.equals(this.nameInteger, xmlItem.nameInteger) &&
+        Objects.equals(this.nameBoolean, xmlItem.nameBoolean) &&
+        Objects.equals(this.nameArray, xmlItem.nameArray) &&
+        Objects.equals(this.nameWrappedArray, xmlItem.nameWrappedArray) &&
+        Objects.equals(this.prefixString, xmlItem.prefixString) &&
+        Objects.equals(this.prefixNumber, xmlItem.prefixNumber) &&
+        Objects.equals(this.prefixInteger, xmlItem.prefixInteger) &&
+        Objects.equals(this.prefixBoolean, xmlItem.prefixBoolean) &&
+        Objects.equals(this.prefixArray, xmlItem.prefixArray) &&
+        Objects.equals(this.prefixWrappedArray, xmlItem.prefixWrappedArray) &&
+        Objects.equals(this.namespaceString, xmlItem.namespaceString) &&
+        Objects.equals(this.namespaceNumber, xmlItem.namespaceNumber) &&
+        Objects.equals(this.namespaceInteger, xmlItem.namespaceInteger) &&
+        Objects.equals(this.namespaceBoolean, xmlItem.namespaceBoolean) &&
+        Objects.equals(this.namespaceArray, xmlItem.namespaceArray) &&
+        Objects.equals(this.namespaceWrappedArray, xmlItem.namespaceWrappedArray) &&
+        Objects.equals(this.prefixNsString, xmlItem.prefixNsString) &&
+        Objects.equals(this.prefixNsNumber, xmlItem.prefixNsNumber) &&
+        Objects.equals(this.prefixNsInteger, xmlItem.prefixNsInteger) &&
+        Objects.equals(this.prefixNsBoolean, xmlItem.prefixNsBoolean) &&
+        Objects.equals(this.prefixNsArray, xmlItem.prefixNsArray) &&
+        Objects.equals(this.prefixNsWrappedArray, xmlItem.prefixNsWrappedArray);
+  }
+
+  @Override
+  public int hashCode() {
+    return Objects.hash(attributeString, attributeNumber, attributeInteger, attributeBoolean, wrappedArray, nameString, nameNumber, nameInteger, nameBoolean, nameArray, nameWrappedArray, prefixString, prefixNumber, prefixInteger, prefixBoolean, prefixArray, prefixWrappedArray, namespaceString, namespaceNumber, namespaceInteger, namespaceBoolean, namespaceArray, namespaceWrappedArray, prefixNsString, prefixNsNumber, prefixNsInteger, prefixNsBoolean, prefixNsArray, prefixNsWrappedArray);
+  }
+
+  @Override
+  public String toString() {
+    StringBuilder sb = new StringBuilder();
+    sb.append("class XmlItem {\n");
+    
+    sb.append("    attributeString: ").append(toIndentedString(attributeString)).append("\n");
+    sb.append("    attributeNumber: ").append(toIndentedString(attributeNumber)).append("\n");
+    sb.append("    attributeInteger: ").append(toIndentedString(attributeInteger)).append("\n");
+    sb.append("    attributeBoolean: ").append(toIndentedString(attributeBoolean)).append("\n");
+    sb.append("    wrappedArray: ").append(toIndentedString(wrappedArray)).append("\n");
+    sb.append("    nameString: ").append(toIndentedString(nameString)).append("\n");
+    sb.append("    nameNumber: ").append(toIndentedString(nameNumber)).append("\n");
+    sb.append("    nameInteger: ").append(toIndentedString(nameInteger)).append("\n");
+    sb.append("    nameBoolean: ").append(toIndentedString(nameBoolean)).append("\n");
+    sb.append("    nameArray: ").append(toIndentedString(nameArray)).append("\n");
+    sb.append("    nameWrappedArray: ").append(toIndentedString(nameWrappedArray)).append("\n");
+    sb.append("    prefixString: ").append(toIndentedString(prefixString)).append("\n");
+    sb.append("    prefixNumber: ").append(toIndentedString(prefixNumber)).append("\n");
+    sb.append("    prefixInteger: ").append(toIndentedString(prefixInteger)).append("\n");
+    sb.append("    prefixBoolean: ").append(toIndentedString(prefixBoolean)).append("\n");
+    sb.append("    prefixArray: ").append(toIndentedString(prefixArray)).append("\n");
+    sb.append("    prefixWrappedArray: ").append(toIndentedString(prefixWrappedArray)).append("\n");
+    sb.append("    namespaceString: ").append(toIndentedString(namespaceString)).append("\n");
+    sb.append("    namespaceNumber: ").append(toIndentedString(namespaceNumber)).append("\n");
+    sb.append("    namespaceInteger: ").append(toIndentedString(namespaceInteger)).append("\n");
+    sb.append("    namespaceBoolean: ").append(toIndentedString(namespaceBoolean)).append("\n");
+    sb.append("    namespaceArray: ").append(toIndentedString(namespaceArray)).append("\n");
+    sb.append("    namespaceWrappedArray: ").append(toIndentedString(namespaceWrappedArray)).append("\n");
+    sb.append("    prefixNsString: ").append(toIndentedString(prefixNsString)).append("\n");
+    sb.append("    prefixNsNumber: ").append(toIndentedString(prefixNsNumber)).append("\n");
+    sb.append("    prefixNsInteger: ").append(toIndentedString(prefixNsInteger)).append("\n");
+    sb.append("    prefixNsBoolean: ").append(toIndentedString(prefixNsBoolean)).append("\n");
+    sb.append("    prefixNsArray: ").append(toIndentedString(prefixNsArray)).append("\n");
+    sb.append("    prefixNsWrappedArray: ").append(toIndentedString(prefixNsWrappedArray)).append("\n");
+    sb.append("}");
+    return sb.toString();
+  }
+
+  /**
+   * Convert the given object to string with each line indented by 4 spaces
+   * (except the first line).
+   */
+  private String toIndentedString(java.lang.Object o) {
+    if (o == null) {
+      return "null";
+    }
+    return o.toString().replace("\n", "\n    ");
+  }
+
+  public static Builder builder() {
+    return new Builder();
+  }
+
+  public static class Builder {
+    private String attributeString;
+    private BigDecimal attributeNumber;
+    private Integer attributeInteger;
+    private Boolean attributeBoolean;
+    private List<Integer> wrappedArray = new ArrayList<Integer>();
+    private String nameString;
+    private BigDecimal nameNumber;
+    private Integer nameInteger;
+    private Boolean nameBoolean;
+    private List<Integer> nameArray = new ArrayList<Integer>();
+    private List<Integer> nameWrappedArray = new ArrayList<Integer>();
+    private String prefixString;
+    private BigDecimal prefixNumber;
+    private Integer prefixInteger;
+    private Boolean prefixBoolean;
+    private List<Integer> prefixArray = new ArrayList<Integer>();
+    private List<Integer> prefixWrappedArray = new ArrayList<Integer>();
+    private String namespaceString;
+    private BigDecimal namespaceNumber;
+    private Integer namespaceInteger;
+    private Boolean namespaceBoolean;
+    private List<Integer> namespaceArray = new ArrayList<Integer>();
+    private List<Integer> namespaceWrappedArray = new ArrayList<Integer>();
+    private String prefixNsString;
+    private BigDecimal prefixNsNumber;
+    private Integer prefixNsInteger;
+    private Boolean prefixNsBoolean;
+    private List<Integer> prefixNsArray = new ArrayList<Integer>();
+    private List<Integer> prefixNsWrappedArray = new ArrayList<Integer>();
+
+    /**
+      **/
+    public Builder attributeString(String attributeString) {
+      this.attributeString = attributeString;
+      return this;
+    }
+    /**
+      **/
+    public Builder attributeNumber(BigDecimal attributeNumber) {
+      this.attributeNumber = attributeNumber;
+      return this;
+    }
+    /**
+      **/
+    public Builder attributeInteger(Integer attributeInteger) {
+      this.attributeInteger = attributeInteger;
+      return this;
+    }
+    /**
+      **/
+    public Builder attributeBoolean(Boolean attributeBoolean) {
+      this.attributeBoolean = attributeBoolean;
+      return this;
+    }
+    /**
+      **/
+    public Builder wrappedArray(List<Integer> wrappedArray) {
+      this.wrappedArray = wrappedArray;
+      return this;
+    }
+    /**
+      **/
+    public Builder nameString(String nameString) {
+      this.nameString = nameString;
+      return this;
+    }
+    /**
+      **/
+    public Builder nameNumber(BigDecimal nameNumber) {
+      this.nameNumber = nameNumber;
+      return this;
+    }
+    /**
+      **/
+    public Builder nameInteger(Integer nameInteger) {
+      this.nameInteger = nameInteger;
+      return this;
+    }
+    /**
+      **/
+    public Builder nameBoolean(Boolean nameBoolean) {
+      this.nameBoolean = nameBoolean;
+      return this;
+    }
+    /**
+      **/
+    public Builder nameArray(List<Integer> nameArray) {
+      this.nameArray = nameArray;
+      return this;
+    }
+    /**
+      **/
+    public Builder nameWrappedArray(List<Integer> nameWrappedArray) {
+      this.nameWrappedArray = nameWrappedArray;
+      return this;
+    }
+    /**
+      **/
+    public Builder prefixString(String prefixString) {
+      this.prefixString = prefixString;
+      return this;
+    }
+    /**
+      **/
+    public Builder prefixNumber(BigDecimal prefixNumber) {
+      this.prefixNumber = prefixNumber;
+      return this;
+    }
+    /**
+      **/
+    public Builder prefixInteger(Integer prefixInteger) {
+      this.prefixInteger = prefixInteger;
+      return this;
+    }
+    /**
+      **/
+    public Builder prefixBoolean(Boolean prefixBoolean) {
+      this.prefixBoolean = prefixBoolean;
+      return this;
+    }
+    /**
+      **/
+    public Builder prefixArray(List<Integer> prefixArray) {
+      this.prefixArray = prefixArray;
+      return this;
+    }
+    /**
+      **/
+    public Builder prefixWrappedArray(List<Integer> prefixWrappedArray) {
+      this.prefixWrappedArray = prefixWrappedArray;
+      return this;
+    }
+    /**
+      **/
+    public Builder namespaceString(String namespaceString) {
+      this.namespaceString = namespaceString;
+      return this;
+    }
+    /**
+      **/
+    public Builder namespaceNumber(BigDecimal namespaceNumber) {
+      this.namespaceNumber = namespaceNumber;
+      return this;
+    }
+    /**
+      **/
+    public Builder namespaceInteger(Integer namespaceInteger) {
+      this.namespaceInteger = namespaceInteger;
+      return this;
+    }
+    /**
+      **/
+    public Builder namespaceBoolean(Boolean namespaceBoolean) {
+      this.namespaceBoolean = namespaceBoolean;
+      return this;
+    }
+    /**
+      **/
+    public Builder namespaceArray(List<Integer> namespaceArray) {
+      this.namespaceArray = namespaceArray;
+      return this;
+    }
+    /**
+      **/
+    public Builder namespaceWrappedArray(List<Integer> namespaceWrappedArray) {
+      this.namespaceWrappedArray = namespaceWrappedArray;
+      return this;
+    }
+    /**
+      **/
+    public Builder prefixNsString(String prefixNsString) {
+      this.prefixNsString = prefixNsString;
+      return this;
+    }
+    /**
+      **/
+    public Builder prefixNsNumber(BigDecimal prefixNsNumber) {
+      this.prefixNsNumber = prefixNsNumber;
+      return this;
+    }
+    /**
+      **/
+    public Builder prefixNsInteger(Integer prefixNsInteger) {
+      this.prefixNsInteger = prefixNsInteger;
+      return this;
+    }
+    /**
+      **/
+    public Builder prefixNsBoolean(Boolean prefixNsBoolean) {
+      this.prefixNsBoolean = prefixNsBoolean;
+      return this;
+    }
+    /**
+      **/
+    public Builder prefixNsArray(List<Integer> prefixNsArray) {
+      this.prefixNsArray = prefixNsArray;
+      return this;
+    }
+    /**
+      **/
+    public Builder prefixNsWrappedArray(List<Integer> prefixNsWrappedArray) {
+      this.prefixNsWrappedArray = prefixNsWrappedArray;
+      return this;
+    }
+
+    public XmlItem build() {
+      return new XmlItem(attributeString, attributeNumber, attributeInteger, attributeBoolean, wrappedArray, nameString, nameNumber, nameInteger, nameBoolean, nameArray, nameWrappedArray, prefixString, prefixNumber, prefixInteger, prefixBoolean, prefixArray, prefixWrappedArray, namespaceString, namespaceNumber, namespaceInteger, namespaceBoolean, namespaceArray, namespaceWrappedArray, prefixNsString, prefixNsNumber, prefixNsInteger, prefixNsBoolean, prefixNsArray, prefixNsWrappedArray);
+    }
+  }
+}
+
diff --git a/samples/server/petstore/jaxrs-spec-interface-response/src/main/openapi/openapi.yaml b/samples/server/petstore/jaxrs-spec-interface-response/src/main/openapi/openapi.yaml
index 8ce9975a0aa3cd31dea1aef611a9298b2e75e540..79ba65f66eeb0f9bad238d25601ff926c53734bf 100644
--- a/samples/server/petstore/jaxrs-spec-interface-response/src/main/openapi/openapi.yaml
+++ b/samples/server/petstore/jaxrs-spec-interface-response/src/main/openapi/openapi.yaml
@@ -32,6 +32,9 @@ paths:
         description: Pet object that needs to be added to the store
         required: true
       responses:
+        200:
+          content: {}
+          description: successful operation
         405:
           content: {}
           description: Invalid input
@@ -42,6 +45,9 @@ paths:
       summary: Add a new pet to the store
       tags:
       - pet
+      x-codegen-request-body-name: body
+      x-contentType: application/json
+      x-accepts: application/json
       x-tags:
       - tag: pet
     put:
@@ -57,6 +63,9 @@ paths:
         description: Pet object that needs to be added to the store
         required: true
       responses:
+        200:
+          content: {}
+          description: successful operation
         400:
           content: {}
           description: Invalid ID supplied
@@ -73,6 +82,9 @@ paths:
       summary: Update an existing pet
       tags:
       - pet
+      x-codegen-request-body-name: body
+      x-contentType: application/json
+      x-accepts: application/json
       x-tags:
       - tag: pet
   /pet/findByStatus:
@@ -119,12 +131,14 @@ paths:
       summary: Finds Pets by status
       tags:
       - pet
+      x-accepts: application/json
       x-tags:
       - tag: pet
   /pet/findByTags:
     get:
       deprecated: true
-      description: Multiple tags can be provided with comma separated strings. Use tag1, tag2, tag3 for testing.
+      description: Multiple tags can be provided with comma separated strings. Use
+        tag1, tag2, tag3 for testing.
       operationId: findPetsByTags
       parameters:
       - description: Tags to filter by
@@ -161,6 +175,7 @@ paths:
       summary: Finds Pets by tags
       tags:
       - pet
+      x-accepts: application/json
       x-tags:
       - tag: pet
   /pet/{petId}:
@@ -179,6 +194,9 @@ paths:
           format: int64
           type: integer
       responses:
+        200:
+          content: {}
+          description: successful operation
         400:
           content: {}
           description: Invalid pet value
@@ -189,6 +207,7 @@ paths:
       summary: Deletes a pet
       tags:
       - pet
+      x-accepts: application/json
       x-tags:
       - tag: pet
     get:
@@ -223,6 +242,7 @@ paths:
       summary: Find pet by ID
       tags:
       - pet
+      x-accepts: application/json
       x-tags:
       - tag: pet
     post:
@@ -257,6 +277,8 @@ paths:
       summary: Updates a pet in the store with form data
       tags:
       - pet
+      x-contentType: application/x-www-form-urlencoded
+      x-accepts: application/json
       x-tags:
       - tag: pet
   /pet/{petId}/uploadImage:
@@ -296,6 +318,8 @@ paths:
       summary: uploads an image
       tags:
       - pet
+      x-contentType: multipart/form-data
+      x-accepts: application/json
       x-tags:
       - tag: pet
   /store/inventory:
@@ -317,6 +341,7 @@ paths:
       summary: Returns pet inventories by status
       tags:
       - store
+      x-accepts: application/json
       x-tags:
       - tag: store
   /store/order:
@@ -345,11 +370,15 @@ paths:
       summary: Place an order for a pet
       tags:
       - store
+      x-codegen-request-body-name: body
+      x-contentType: '*/*'
+      x-accepts: application/json
       x-tags:
       - tag: store
   /store/order/{order_id}:
     delete:
-      description: For valid response try integer IDs with value < 1000. Anything above 1000 or nonintegers will generate API errors
+      description: For valid response try integer IDs with value < 1000. Anything
+        above 1000 or nonintegers will generate API errors
       operationId: deleteOrder
       parameters:
       - description: ID of the order that needs to be deleted
@@ -368,10 +397,12 @@ paths:
       summary: Delete purchase order by ID
       tags:
       - store
+      x-accepts: application/json
       x-tags:
       - tag: store
     get:
-      description: For valid response try integer IDs with value <= 5 or > 10. Other values will generated exceptions
+      description: For valid response try integer IDs with value <= 5 or > 10. Other
+        values will generated exceptions
       operationId: getOrderById
       parameters:
       - description: ID of pet that needs to be fetched
@@ -402,6 +433,7 @@ paths:
       summary: Find purchase order by ID
       tags:
       - store
+      x-accepts: application/json
       x-tags:
       - tag: store
   /user:
@@ -422,6 +454,9 @@ paths:
       summary: Create user
       tags:
       - user
+      x-codegen-request-body-name: body
+      x-contentType: '*/*'
+      x-accepts: application/json
       x-tags:
       - tag: user
   /user/createWithArray:
@@ -443,6 +478,9 @@ paths:
       summary: Creates list of users with given input array
       tags:
       - user
+      x-codegen-request-body-name: body
+      x-contentType: '*/*'
+      x-accepts: application/json
       x-tags:
       - tag: user
   /user/createWithList:
@@ -464,6 +502,9 @@ paths:
       summary: Creates list of users with given input array
       tags:
       - user
+      x-codegen-request-body-name: body
+      x-contentType: '*/*'
+      x-accepts: application/json
       x-tags:
       - tag: user
   /user/login:
@@ -509,6 +550,7 @@ paths:
       summary: Logs user into the system
       tags:
       - user
+      x-accepts: application/json
       x-tags:
       - tag: user
   /user/logout:
@@ -521,6 +563,7 @@ paths:
       summary: Logs out current logged in user session
       tags:
       - user
+      x-accepts: application/json
       x-tags:
       - tag: user
   /user/{username}:
@@ -544,6 +587,7 @@ paths:
       summary: Delete user
       tags:
       - user
+      x-accepts: application/json
       x-tags:
       - tag: user
     get:
@@ -574,6 +618,7 @@ paths:
       summary: Get user by user name
       tags:
       - user
+      x-accepts: application/json
       x-tags:
       - tag: user
     put:
@@ -603,6 +648,9 @@ paths:
       summary: Updated user
       tags:
       - user
+      x-codegen-request-body-name: body
+      x-contentType: '*/*'
+      x-accepts: application/json
       x-tags:
       - tag: user
   /fake_classname_test:
@@ -628,9 +676,62 @@ paths:
       summary: To test class name in snake case
       tags:
       - fake_classname_tags 123#$%^
+      x-codegen-request-body-name: body
+      x-contentType: application/json
+      x-accepts: application/json
       x-tags:
       - tag: fake_classname_tags 123#$%^
   /fake:
+    delete:
+      description: Fake endpoint to test group parameters (optional)
+      operationId: testGroupParameters
+      parameters:
+      - description: Required String in group parameters
+        in: query
+        name: required_string_group
+        required: true
+        schema:
+          type: integer
+      - description: Required Boolean in group parameters
+        in: header
+        name: required_boolean_group
+        required: true
+        schema:
+          type: boolean
+      - description: Required Integer in group parameters
+        in: query
+        name: required_int64_group
+        required: true
+        schema:
+          format: int64
+          type: integer
+      - description: String in group parameters
+        in: query
+        name: string_group
+        schema:
+          type: integer
+      - description: Boolean in group parameters
+        in: header
+        name: boolean_group
+        schema:
+          type: boolean
+      - description: Integer in group parameters
+        in: query
+        name: int64_group
+        schema:
+          format: int64
+          type: integer
+      responses:
+        400:
+          content: {}
+          description: Someting wrong
+      summary: Fake endpoint to test group parameters (optional)
+      tags:
+      - fake
+      x-group-parameters: true
+      x-accepts: application/json
+      x-tags:
+      - tag: fake
     get:
       description: To test enum parameters
       operationId: testEnumParameters
@@ -731,6 +832,8 @@ paths:
       summary: To test enum parameters
       tags:
       - fake
+      x-contentType: application/x-www-form-urlencoded
+      x-accepts: application/json
       x-tags:
       - tag: fake
     patch:
@@ -753,6 +856,9 @@ paths:
       summary: To test "client" model
       tags:
       - fake
+      x-codegen-request-body-name: body
+      x-contentType: application/json
+      x-accepts: application/json
       x-tags:
       - tag: fake
     post:
@@ -769,6 +875,7 @@ paths:
               properties:
                 integer:
                   description: None
+                  format: int32
                   maximum: 100
                   minimum: 10
                   type: integer
@@ -853,6 +960,8 @@ paths:
         가짜 엔드 포인트
       tags:
       - fake
+      x-contentType: application/x-www-form-urlencoded
+      x-accepts: application/json
       x-tags:
       - tag: fake
   /fake/outer/number:
@@ -875,6 +984,9 @@ paths:
           description: Output number
       tags:
       - fake
+      x-codegen-request-body-name: body
+      x-contentType: '*/*'
+      x-accepts: '*/*'
       x-tags:
       - tag: fake
   /fake/outer/string:
@@ -897,6 +1009,9 @@ paths:
           description: Output string
       tags:
       - fake
+      x-codegen-request-body-name: body
+      x-contentType: '*/*'
+      x-accepts: '*/*'
       x-tags:
       - tag: fake
   /fake/outer/boolean:
@@ -919,6 +1034,9 @@ paths:
           description: Output boolean
       tags:
       - fake
+      x-codegen-request-body-name: body
+      x-contentType: '*/*'
+      x-accepts: '*/*'
       x-tags:
       - tag: fake
   /fake/outer/composite:
@@ -941,6 +1059,9 @@ paths:
           description: Output composite
       tags:
       - fake
+      x-codegen-request-body-name: body
+      x-contentType: '*/*'
+      x-accepts: '*/*'
       x-tags:
       - tag: fake
   /fake/jsonFormData:
@@ -968,6 +1089,8 @@ paths:
       summary: test json serialization of form data
       tags:
       - fake
+      x-contentType: application/x-www-form-urlencoded
+      x-accepts: application/json
       x-tags:
       - tag: fake
   /fake/inline-additionalProperties:
@@ -989,6 +1112,9 @@ paths:
       summary: test inline additionalProperties
       tags:
       - fake
+      x-codegen-request-body-name: param
+      x-contentType: application/json
+      x-accepts: application/json
       x-tags:
       - tag: fake
   /fake/body-with-query-params:
@@ -1012,6 +1138,47 @@ paths:
           description: Success
       tags:
       - fake
+      x-codegen-request-body-name: body
+      x-contentType: application/json
+      x-accepts: application/json
+      x-tags:
+      - tag: fake
+  /fake/create_xml_item:
+    post:
+      description: this route creates an XmlItem
+      operationId: createXmlItem
+      requestBody:
+        content:
+          application/xml:
+            schema:
+              $ref: '#/components/schemas/XmlItem'
+          application/xml; charset=utf-8:
+            schema:
+              $ref: '#/components/schemas/XmlItem'
+          application/xml; charset=utf-16:
+            schema:
+              $ref: '#/components/schemas/XmlItem'
+          text/xml:
+            schema:
+              $ref: '#/components/schemas/XmlItem'
+          text/xml; charset=utf-8:
+            schema:
+              $ref: '#/components/schemas/XmlItem'
+          text/xml; charset=utf-16:
+            schema:
+              $ref: '#/components/schemas/XmlItem'
+        description: XmlItem Body
+        required: true
+      responses:
+        200:
+          content: {}
+          description: successful operation
+      summary: creates an XmlItem
+      tags:
+      - fake
+      x-codegen-request-body-name: XmlItem
+      x-contentType: application/xml
+      x-accepts: application/json
       x-tags:
       - tag: fake
   /another-fake/dummy:
@@ -1035,11 +1202,15 @@ paths:
       summary: To test special tags
       tags:
       - $another-fake?
+      x-codegen-request-body-name: body
+      x-contentType: application/json
+      x-accepts: application/json
       x-tags:
       - tag: $another-fake?
   /fake/body-with-file-schema:
     put:
-      description: For this test, the body for this request much reference a schema named `File`.
+      description: For this test, the body for this request much reference a schema
+        named `File`.
       operationId: testBodyWithFileSchema
       requestBody:
         content:
@@ -1053,6 +1224,65 @@ paths:
           description: Success
       tags:
       - fake
+      x-codegen-request-body-name: body
+      x-contentType: application/json
+      x-accepts: application/json
+      x-tags:
+      - tag: fake
+  /fake/test-query-paramters:
+    put:
+      description: To test the collection format in query parameters
+      operationId: testQueryParameterCollectionFormat
+      parameters:
+      - explode: false
+        in: query
+        name: pipe
+        required: true
+        schema:
+          items:
+            type: string
+          type: array
+        style: form
+      - in: query
+        name: ioutil
+        required: true
+        schema:
+          items:
+            type: string
+          type: array
+      - in: query
+        name: http
+        required: true
+        schema:
+          items:
+            type: string
+          type: array
+        style: spaceDelimited
+      - explode: false
+        in: query
+        name: url
+        required: true
+        schema:
+          items:
+            type: string
+          type: array
+        style: form
+      - explode: true
+        in: query
+        name: context
+        required: true
+        schema:
+          items:
+            type: string
+          type: array
+        style: form
+      responses:
+        200:
+          content: {}
+          description: Success
+      tags:
+      - fake
+      x-accepts: application/json
       x-tags:
       - tag: fake
   /fake/{petId}/uploadImageWithRequiredFile:
@@ -1095,20 +1325,59 @@ paths:
       summary: uploads an image (required)
       tags:
       - pet
+      x-contentType: multipart/form-data
+      x-accepts: application/json
       x-tags:
       - tag: pet
 components:
   schemas:
+    Order:
+      example:
+        petId: 6
+        quantity: 1
+        id: 0
+        shipDate: 2000-01-23T04:56:07.000+00:00
+        complete: false
+        status: placed
+      properties:
+        id:
+          format: int64
+          type: integer
+        petId:
+          format: int64
+          type: integer
+        quantity:
+          format: int32
+          type: integer
+        shipDate:
+          format: date-time
+          type: string
+        status:
+          description: Order Status
+          enum:
+          - placed
+          - approved
+          - delivered
+          type: string
+        complete:
+          default: false
+          type: boolean
+      type: object
+      xml:
+        name: Order
     Category:
       example:
-        name: name
+        name: default-name
         id: 6
       properties:
         id:
           format: int64
           type: integer
         name:
+          default: default-name
           type: string
+      required:
+      - name
       type: object
       xml:
         name: Category
@@ -1146,45 +1415,72 @@ components:
       type: object
       xml:
         name: User
-    OuterNumber:
-      type: number
-    ArrayOfNumberOnly:
-      properties:
-        ArrayNumber:
-          items:
-            type: number
-          type: array
-      type: object
-    Capitalization:
+    Tag:
+      example:
+        name: name
+        id: 1
       properties:
-        smallCamel:
-          type: string
-        CapitalCamel:
-          type: string
-        small_Snake:
-          type: string
-        Capital_Snake:
-          type: string
-        SCA_ETH_Flow_Points:
-          type: string
-        ATT_NAME:
-          description: |
-            Name of the pet
+        id:
+          format: int64
+          type: integer
+        name:
           type: string
       type: object
-    MixedPropertiesAndAdditionalPropertiesClass:
+      xml:
+        name: Tag
+    Pet:
+      example:
+        photoUrls:
+        - photoUrls
+        - photoUrls
+        name: doggie
+        id: 0
+        category:
+          name: default-name
+          id: 6
+        tags:
+        - name: name
+          id: 1
+        - name: name
+          id: 1
+        status: available
       properties:
-        uuid:
-          format: uuid
+        id:
+          format: int64
+          type: integer
+          x-is-unique: true
+        category:
+          $ref: '#/components/schemas/Category'
+        name:
+          example: doggie
           type: string
-        dateTime:
-          format: date-time
+        photoUrls:
+          items:
+            type: string
+          type: array
+          xml:
+            name: photoUrl
+            wrapped: true
+        tags:
+          items:
+            $ref: '#/components/schemas/Tag'
+          type: array
+          xml:
+            name: tag
+            wrapped: true
+        status:
+          description: pet status in the store
+          enum:
+          - available
+          - pending
+          - sold
           type: string
-        map:
-          additionalProperties:
-            $ref: '#/components/schemas/Animal'
-          type: object
+      required:
+      - name
+      - photoUrls
       type: object
+      xml:
+        name: Pet
     ApiResponse:
       example:
         code: 0
@@ -1199,6 +1495,23 @@ components:
         message:
           type: string
       type: object
+    $special[model.name]:
+      properties:
+        $special[property.name]:
+          format: int64
+          type: integer
+      type: object
+      xml:
+        name: $special[model.name]
+    Return:
+      description: Model for testing reserved words
+      properties:
+        return:
+          format: int32
+          type: integer
+      type: object
+      xml:
+        name: Return
     Name:
       description: Model for testing model name same as property name
       properties:
@@ -1219,25 +1532,6 @@ components:
       type: object
       xml:
         name: Name
-    EnumClass:
-      default: -efg
-      enum:
-      - _abc
-      - -efg
-      - (xyz)
-      type: string
-    List:
-      example:
-        123-list: 123-list
-      properties:
-        123-list:
-          type: string
-      type: object
-    NumberOnly:
-      properties:
-        JustNumber:
-          type: number
-      type: object
     200_response:
       description: Model for testing model name starting with number
       properties:
@@ -1249,172 +1543,40 @@ components:
       type: object
       xml:
         name: Name
-    Client:
-      example:
-        client: client
+    ClassModel:
+      description: Model for testing model with "_class" property
       properties:
-        client:
+        _class:
           type: string
       type: object
     Dog:
       allOf:
       - $ref: '#/components/schemas/Animal'
-      - properties:
-          breed:
-            type: string
-        type: object
-    Enum_Test:
+      - $ref: '#/components/schemas/Dog_allOf'
+    Cat:
+      allOf:
+      - $ref: '#/components/schemas/Animal'
+      - $ref: '#/components/schemas/Cat_allOf'
+    BigCat:
+      allOf:
+      - $ref: '#/components/schemas/Cat'
+      - $ref: '#/components/schemas/BigCat_allOf'
+    Animal:
+      discriminator:
+        propertyName: className
       properties:
-        enum_string:
-          enum:
-          - UPPER
-          - lower
-          - ""
+        className:
           type: string
-        enum_string_required:
-          enum:
-          - UPPER
-          - lower
-          - ""
+        color:
+          default: red
           type: string
-        enum_integer:
-          enum:
-          - 1
-          - -1
-          format: int32
-          type: integer
-        enum_number:
-          enum:
-          - 1.1
-          - -1.2
-          format: double
-          type: number
-        outerEnum:
-          $ref: '#/components/schemas/OuterEnum'
       required:
-      - enum_string_required
-      type: object
-    Order:
-      example:
-        petId: 6
-        quantity: 1
-        id: 0
-        shipDate: 2000-01-23T04:56:07.000+00:00
-        complete: false
-        status: placed
-      properties:
-        id:
-          format: int64
-          type: integer
-        petId:
-          format: int64
-          type: integer
-        quantity:
-          format: int32
-          type: integer
-        shipDate:
-          format: date-time
-          type: string
-        status:
-          description: Order Status
-          enum:
-          - placed
-          - approved
-          - delivered
-          type: string
-        complete:
-          default: false
-          type: boolean
-      type: object
-      xml:
-        name: Order
-    AdditionalPropertiesClass:
-      properties:
-        map_property:
-          additionalProperties:
-            type: string
-          type: object
-        map_of_map_property:
-          additionalProperties:
-            additionalProperties:
-              type: string
-            type: object
-          type: object
-      type: object
-    $special[model.name]:
-      properties:
-        $special[property.name]:
-          format: int64
-          type: integer
-      type: object
-      xml:
-        name: $special[model.name]
-    Return:
-      description: Model for testing reserved words
-      properties:
-        return:
-          format: int32
-          type: integer
-      type: object
-      xml:
-        name: Return
-    ReadOnlyFirst:
-      properties:
-        bar:
-          readOnly: true
-          type: string
-        baz:
-          type: string
-      type: object
-    ArrayOfArrayOfNumberOnly:
-      properties:
-        ArrayArrayNumber:
-          items:
-            items:
-              type: number
-            type: array
-          type: array
-      type: object
-    OuterEnum:
-      enum:
-      - placed
-      - approved
-      - delivered
-      type: string
-    ArrayTest:
-      properties:
-        array_of_string:
-          items:
-            type: string
-          type: array
-        array_array_of_integer:
-          items:
-            items:
-              format: int64
-              type: integer
-            type: array
-          type: array
-        array_array_of_model:
-          items:
-            items:
-              $ref: '#/components/schemas/ReadOnlyFirst'
-            type: array
-          type: array
-      type: object
-    OuterComposite:
-      example:
-        my_string: my_string
-        my_number: 0.80082819046101150206595775671303272247314453125
-        my_boolean: true
-      properties:
-        my_number:
-          type: number
-        my_string:
-          type: string
-        my_boolean:
-          type: boolean
-          x-codegen-body-parameter-name: boolean_post_body
+      - className
       type: object
+    AnimalFarm:
+      items:
+        $ref: '#/components/schemas/Animal'
+      type: array
     format_test:
       properties:
         integer:
@@ -1460,6 +1622,7 @@ components:
           format: date-time
           type: string
         uuid:
+          example: 72f98069-206d-4f12-9f12-3d1e525a8e84
           format: uuid
           type: string
         password:
@@ -1467,76 +1630,221 @@ components:
           maxLength: 64
           minLength: 10
           type: string
+        BigDecimal:
+          format: number
+          type: string
       required:
       - byte
       - date
       - number
       - password
       type: object
-    EnumArrays:
+    EnumClass:
+      default: -efg
+      enum:
+      - _abc
+      - -efg
+      - (xyz)
+      type: string
+    Enum_Test:
       properties:
-        just_symbol:
+        enum_string:
           enum:
-          - '>='
-          - $
+          - UPPER
+          - lower
+          - ""
           type: string
-        array_enum:
-          items:
-            enum:
-            - fish
-            - crab
-            type: string
-          type: array
-      type: object
-    OuterString:
-      type: string
-    ClassModel:
-      description: Model for testing model with "_class" property
-      properties:
-        _class:
+        enum_string_required:
+          enum:
+          - UPPER
+          - lower
+          - ""
           type: string
+        enum_integer:
+          enum:
+          - 1
+          - -1
+          format: int32
+          type: integer
+        enum_number:
+          enum:
+          - 1.1
+          - -1.2
+          format: double
+          type: number
+        outerEnum:
+          $ref: '#/components/schemas/OuterEnum'
+      required:
+      - enum_string_required
       type: object
-    OuterBoolean:
-      type: boolean
-      x-codegen-body-parameter-name: boolean_post_body
-    FileSchemaTestClass:
-      example:
-        file:
-          sourceURI: sourceURI
-        files:
-        - sourceURI: sourceURI
-        - sourceURI: sourceURI
-      properties:
-        file:
-          $ref: '#/components/schemas/File'
-        files:
-          items:
-            $ref: '#/components/schemas/File'
-          type: array
-      type: object
-    Animal:
-      discriminator:
-        propertyName: className
+    AdditionalPropertiesClass:
       properties:
-        className:
-          type: string
-        color:
-          default: red
+        map_string:
+          additionalProperties:
+            type: string
+          type: object
+        map_number:
+          additionalProperties:
+            type: number
+          type: object
+        map_integer:
+          additionalProperties:
+            type: integer
+          type: object
+        map_boolean:
+          additionalProperties:
+            type: boolean
+          type: object
+        map_array_integer:
+          additionalProperties:
+            items:
+              type: integer
+            type: array
+          type: object
+        map_array_anytype:
+          additionalProperties:
+            items:
+              properties: {}
+              type: object
+            type: array
+          type: object
+        map_map_string:
+          additionalProperties:
+            additionalProperties:
+              type: string
+            type: object
+          type: object
+        map_map_anytype:
+          additionalProperties:
+            additionalProperties:
+              properties: {}
+              type: object
+            type: object
+          type: object
+        anytype_1:
+          properties: {}
+          type: object
+        anytype_2:
+          type: object
+        anytype_3:
+          properties: {}
+          type: object
+      type: object
+    AdditionalPropertiesString:
+      additionalProperties:
+        type: string
+      properties:
+        name:
           type: string
-      required:
-      - className
       type: object
-    StringBooleanMap:
+    AdditionalPropertiesInteger:
+      additionalProperties:
+        type: integer
+      properties:
+        name:
+          type: string
+      type: object
+    AdditionalPropertiesNumber:
+      additionalProperties:
+        type: number
+      properties:
+        name:
+          type: string
+      type: object
+    AdditionalPropertiesBoolean:
       additionalProperties:
         type: boolean
+      properties:
+        name:
+          type: string
       type: object
-    Cat:
-      allOf:
-      - $ref: '#/components/schemas/Animal'
-      - properties:
-          declawed:
-            type: boolean
+    AdditionalPropertiesArray:
+      additionalProperties:
+        items:
+          properties: {}
+          type: object
+        type: array
+      properties:
+        name:
+          type: string
+      type: object
+    AdditionalPropertiesObject:
+      additionalProperties:
+        additionalProperties:
+          properties: {}
+          type: object
+        type: object
+      properties:
+        name:
+          type: string
+      type: object
+    AdditionalPropertiesAnyType:
+      additionalProperties:
+        properties: {}
         type: object
+      properties:
+        name:
+          type: string
+      type: object
+    MixedPropertiesAndAdditionalPropertiesClass:
+      properties:
+        uuid:
+          format: uuid
+          type: string
+        dateTime:
+          format: date-time
+          type: string
+        map:
+          additionalProperties:
+            $ref: '#/components/schemas/Animal'
+          type: object
+      type: object
+    List:
+      properties:
+        123-list:
+          type: string
+      type: object
+    Client:
+      example:
+        client: client
+      properties:
+        client:
+          type: string
+      type: object
+    ReadOnlyFirst:
+      properties:
+        bar:
+          readOnly: true
+          type: string
+        baz:
+          type: string
+      type: object
+    hasOnlyReadOnly:
+      properties:
+        bar:
+          readOnly: true
+          type: string
+        foo:
+          readOnly: true
+          type: string
+      type: object
+    Capitalization:
+      properties:
+        smallCamel:
+          type: string
+        CapitalCamel:
+          type: string
+        small_Snake:
+          type: string
+        Capital_Snake:
+          type: string
+        SCA_ETH_Flow_Points:
+          type: string
+        ATT_NAME:
+          description: |
+            Name of the pet
+          type: string
+      type: object
     MapTest:
       properties:
         map_map_of_string:
@@ -1557,25 +1865,112 @@ components:
             type: boolean
           type: object
         indirect_map:
-          $ref: '#/components/schemas/StringBooleanMap'
+          additionalProperties:
+            type: boolean
+          type: object
       type: object
-    Tag:
+    ArrayTest:
+      properties:
+        array_of_string:
+          items:
+            type: string
+          type: array
+        array_array_of_integer:
+          items:
+            items:
+              format: int64
+              type: integer
+            type: array
+          type: array
+        array_array_of_model:
+          items:
+            items:
+              $ref: '#/components/schemas/ReadOnlyFirst'
+            type: array
+          type: array
+      type: object
+    NumberOnly:
+      properties:
+        JustNumber:
+          type: number
+      type: object
+    ArrayOfNumberOnly:
+      properties:
+        ArrayNumber:
+          items:
+            type: number
+          type: array
+      type: object
+    ArrayOfArrayOfNumberOnly:
+      properties:
+        ArrayArrayNumber:
+          items:
+            items:
+              type: number
+            type: array
+          type: array
+      type: object
+    EnumArrays:
+      properties:
+        just_symbol:
+          enum:
+          - '>='
+          - $
+          type: string
+        array_enum:
+          items:
+            enum:
+            - fish
+            - crab
+            type: string
+          type: array
+      type: object
+    OuterEnum:
+      enum:
+      - placed
+      - approved
+      - delivered
+      type: string
+    OuterComposite:
       example:
-        name: name
-        id: 1
+        my_string: my_string
+        my_number: 0.8008281904610115
+        my_boolean: true
       properties:
-        id:
-          format: int64
-          type: integer
-        name:
+        my_number:
+          type: number
+        my_string:
           type: string
+        my_boolean:
+          type: boolean
+          x-codegen-body-parameter-name: boolean_post_body
+      type: object
+    OuterNumber:
+      type: number
+    OuterString:
+      type: string
+    OuterBoolean:
+      type: boolean
+      x-codegen-body-parameter-name: boolean_post_body
+    StringBooleanMap:
+      additionalProperties:
+        type: boolean
+      type: object
+    FileSchemaTestClass:
+      example:
+        file:
+          sourceURI: sourceURI
+        files:
+        - sourceURI: sourceURI
+        - sourceURI: sourceURI
+      properties:
+        file:
+          $ref: '#/components/schemas/File'
+        files:
+          items:
+            $ref: '#/components/schemas/File'
+          type: array
       type: object
-      xml:
-        name: Tag
-    AnimalFarm:
-      items:
-        $ref: '#/components/schemas/Animal'
-      type: array
     File:
       description: Must be named `File` for test.
       example:
@@ -1585,68 +1980,260 @@ components:
           description: Test capitalization
           type: string
       type: object
-    Pet:
-      example:
-        photoUrls:
-        - photoUrls
-        - photoUrls
-        name: doggie
-        id: 0
-        category:
-          name: name
-          id: 6
-        tags:
-        - name: name
-          id: 1
-        - name: name
-          id: 1
-        status: available
+    TypeHolderDefault:
       properties:
-        id:
-          format: int64
+        string_item:
+          default: what
+          type: string
+        number_item:
+          type: number
+        integer_item:
           type: integer
-          x-is-unique: true
-        category:
-          $ref: '#/components/schemas/Category'
-        name:
-          example: doggie
+        bool_item:
+          default: true
+          type: boolean
+        array_item:
+          items:
+            type: integer
+          type: array
+      required:
+      - array_item
+      - bool_item
+      - integer_item
+      - number_item
+      - string_item
+      type: object
+    TypeHolderExample:
+      properties:
+        string_item:
+          example: what
           type: string
-        photoUrls:
+        number_item:
+          example: 1.234
+          type: number
+        float_item:
+          example: 1.234
+          format: float
+          type: number
+        integer_item:
+          example: -2
+          type: integer
+        bool_item:
+          example: true
+          type: boolean
+        array_item:
+          example:
+          - 0
+          - 1
+          - 2
+          - 3
           items:
-            type: string
+            type: integer
+          type: array
+      required:
+      - array_item
+      - bool_item
+      - float_item
+      - integer_item
+      - number_item
+      - string_item
+      type: object
+    XmlItem:
+      properties:
+        attribute_string:
+          example: string
+          type: string
+          xml:
+            attribute: true
+        attribute_number:
+          example: 1.234
+          type: number
+          xml:
+            attribute: true
+        attribute_integer:
+          example: -2
+          type: integer
+          xml:
+            attribute: true
+        attribute_boolean:
+          example: true
+          type: boolean
+          xml:
+            attribute: true
+        wrapped_array:
+          items:
+            type: integer
           type: array
           xml:
-            name: photoUrl
             wrapped: true
-        tags:
+        name_string:
+          example: string
+          type: string
+          xml:
+            name: xml_name_string
+        name_number:
+          example: 1.234
+          type: number
+          xml:
+            name: xml_name_number
+        name_integer:
+          example: -2
+          type: integer
+          xml:
+            name: xml_name_integer
+        name_boolean:
+          example: true
+          type: boolean
+          xml:
+            name: xml_name_boolean
+        name_array:
           items:
-            $ref: '#/components/schemas/Tag'
+            type: integer
+            xml:
+              name: xml_name_array_item
+          type: array
+        name_wrapped_array:
+          items:
+            type: integer
+            xml:
+              name: xml_name_wrapped_array_item
           type: array
           xml:
-            name: tag
+            name: xml_name_wrapped_array
             wrapped: true
-        status:
-          description: pet status in the store
-          enum:
-          - available
-          - pending
-          - sold
+        prefix_string:
+          example: string
           type: string
-      required:
-      - name
-      - photoUrls
+          xml:
+            prefix: ab
+        prefix_number:
+          example: 1.234
+          type: number
+          xml:
+            prefix: cd
+        prefix_integer:
+          example: -2
+          type: integer
+          xml:
+            prefix: ef
+        prefix_boolean:
+          example: true
+          type: boolean
+          xml:
+            prefix: gh
+        prefix_array:
+          items:
+            type: integer
+            xml:
+              prefix: ij
+          type: array
+        prefix_wrapped_array:
+          items:
+            type: integer
+            xml:
+              prefix: mn
+          type: array
+          xml:
+            prefix: kl
+            wrapped: true
+        namespace_string:
+          example: string
+          type: string
+          xml:
+            namespace: http://a.com/schema
+        namespace_number:
+          example: 1.234
+          type: number
+          xml:
+            namespace: http://b.com/schema
+        namespace_integer:
+          example: -2
+          type: integer
+          xml:
+            namespace: http://c.com/schema
+        namespace_boolean:
+          example: true
+          type: boolean
+          xml:
+            namespace: http://d.com/schema
+        namespace_array:
+          items:
+            type: integer
+            xml:
+              namespace: http://e.com/schema
+          type: array
+        namespace_wrapped_array:
+          items:
+            type: integer
+            xml:
+              namespace: http://g.com/schema
+          type: array
+          xml:
+            namespace: http://f.com/schema
+            wrapped: true
+        prefix_ns_string:
+          example: string
+          type: string
+          xml:
+            namespace: http://a.com/schema
+            prefix: a
+        prefix_ns_number:
+          example: 1.234
+          type: number
+          xml:
+            namespace: http://b.com/schema
+            prefix: b
+        prefix_ns_integer:
+          example: -2
+          type: integer
+          xml:
+            namespace: http://c.com/schema
+            prefix: c
+        prefix_ns_boolean:
+          example: true
+          type: boolean
+          xml:
+            namespace: http://d.com/schema
+            prefix: d
+        prefix_ns_array:
+          items:
+            type: integer
+            xml:
+              namespace: http://e.com/schema
+              prefix: e
+          type: array
+        prefix_ns_wrapped_array:
+          items:
+            type: integer
+            xml:
+              namespace: http://g.com/schema
+              prefix: g
+          type: array
+          xml:
+            namespace: http://f.com/schema
+            prefix: f
+            wrapped: true
       type: object
       xml:
-        name: Pet
-    hasOnlyReadOnly:
+        namespace: http://a.com/schema
+        prefix: pre
+    Dog_allOf:
       properties:
-        bar:
-          readOnly: true
+        breed:
           type: string
-        foo:
-          readOnly: true
+    Cat_allOf:
+      properties:
+        declawed:
+          type: boolean
+    BigCat_allOf:
+      properties:
+        kind:
+          enum:
+          - lions
+          - tigers
+          - leopards
+          - jaguars
           type: string
-      type: object
   securitySchemes:
     petstore_auth:
       flows:
@@ -1656,9 +2243,6 @@ components:
             write:pets: modify pets in your account
             read:pets: read your pets
       type: oauth2
-    http_basic_test:
-      scheme: basic
-      type: http
     api_key:
       in: header
       name: api_key
@@ -1667,3 +2251,6 @@ components:
       in: query
       name: api_key_query
       type: apiKey
+    http_basic_test:
+      scheme: basic
+      type: http
diff --git a/samples/server/petstore/jaxrs-spec-interface/.openapi-generator/VERSION b/samples/server/petstore/jaxrs-spec-interface/.openapi-generator/VERSION
index 58592f031f659c9626c8f9c6dfa7cfe2556e4914..bfbf77eb7fadc20dd2ba9d16caf833df407d9efe 100644
--- a/samples/server/petstore/jaxrs-spec-interface/.openapi-generator/VERSION
+++ b/samples/server/petstore/jaxrs-spec-interface/.openapi-generator/VERSION
@@ -1 +1 @@
-4.2.3-SNAPSHOT
\ No newline at end of file
+4.3.0-SNAPSHOT
\ No newline at end of file
diff --git a/samples/server/petstore/jaxrs-spec-interface/src/gen/java/org/openapitools/model/AdditionalPropertiesAnyType.java b/samples/server/petstore/jaxrs-spec-interface/src/gen/java/org/openapitools/model/AdditionalPropertiesAnyType.java
index 784bdb2540ccc9a146703340ffc23b017a373953..31bbf64e9f37d659d1b6daebc532e2f55330aaed 100644
--- a/samples/server/petstore/jaxrs-spec-interface/src/gen/java/org/openapitools/model/AdditionalPropertiesAnyType.java
+++ b/samples/server/petstore/jaxrs-spec-interface/src/gen/java/org/openapitools/model/AdditionalPropertiesAnyType.java
@@ -20,11 +20,8 @@ public class AdditionalPropertiesAnyType extends HashMap<String, Object> impleme
   
   private @Valid String name;
 
-  /**
-   **/
-  public AdditionalPropertiesAnyType name(String name) {
+  public AdditionalPropertiesAnyType(String name) {
     this.name = name;
-    return this;
   }
 
   
@@ -33,11 +30,11 @@ public class AdditionalPropertiesAnyType extends HashMap<String, Object> impleme
   public String getName() {
     return name;
   }
+
   public void setName(String name) {
     this.name = name;
   }
 
-
   @Override
   public boolean equals(java.lang.Object o) {
     if (this == o) {
@@ -76,5 +73,24 @@ public class AdditionalPropertiesAnyType extends HashMap<String, Object> impleme
     }
     return o.toString().replace("\n", "\n    ");
   }
+
+  public static Builder builder() {
+    return new Builder();
+  }
+
+  public static class Builder {
+    private String name;
+
+    /**
+      **/
+    public Builder name(String name) {
+      this.name = name;
+      return this;
+    }
+
+    public AdditionalPropertiesAnyType build() {
+      return new AdditionalPropertiesAnyType(name);
+    }
+  }
 }
 
diff --git a/samples/server/petstore/jaxrs-spec-interface/src/gen/java/org/openapitools/model/AdditionalPropertiesArray.java b/samples/server/petstore/jaxrs-spec-interface/src/gen/java/org/openapitools/model/AdditionalPropertiesArray.java
index 7e3b19874d3f35dc9261cff4d97d119656342a8f..2d1818a51600872226f203944aa2a693941bf4aa 100644
--- a/samples/server/petstore/jaxrs-spec-interface/src/gen/java/org/openapitools/model/AdditionalPropertiesArray.java
+++ b/samples/server/petstore/jaxrs-spec-interface/src/gen/java/org/openapitools/model/AdditionalPropertiesArray.java
@@ -21,11 +21,8 @@ public class AdditionalPropertiesArray extends HashMap<String, List> implements
   
   private @Valid String name;
 
-  /**
-   **/
-  public AdditionalPropertiesArray name(String name) {
+  public AdditionalPropertiesArray(String name) {
     this.name = name;
-    return this;
   }
 
   
@@ -34,11 +31,11 @@ public class AdditionalPropertiesArray extends HashMap<String, List> implements
   public String getName() {
     return name;
   }
+
   public void setName(String name) {
     this.name = name;
   }
 
-
   @Override
   public boolean equals(java.lang.Object o) {
     if (this == o) {
@@ -77,5 +74,24 @@ public class AdditionalPropertiesArray extends HashMap<String, List> implements
     }
     return o.toString().replace("\n", "\n    ");
   }
+
+  public static Builder builder() {
+    return new Builder();
+  }
+
+  public static class Builder {
+    private String name;
+
+    /**
+      **/
+    public Builder name(String name) {
+      this.name = name;
+      return this;
+    }
+
+    public AdditionalPropertiesArray build() {
+      return new AdditionalPropertiesArray(name);
+    }
+  }
 }
 
diff --git a/samples/server/petstore/jaxrs-spec-interface/src/gen/java/org/openapitools/model/AdditionalPropertiesBoolean.java b/samples/server/petstore/jaxrs-spec-interface/src/gen/java/org/openapitools/model/AdditionalPropertiesBoolean.java
index 1eb290fe3f21c19205897f774dd34a97a0f7eec7..58f57067781c13f30e4a055d38621cb599716d4e 100644
--- a/samples/server/petstore/jaxrs-spec-interface/src/gen/java/org/openapitools/model/AdditionalPropertiesBoolean.java
+++ b/samples/server/petstore/jaxrs-spec-interface/src/gen/java/org/openapitools/model/AdditionalPropertiesBoolean.java
@@ -20,11 +20,8 @@ public class AdditionalPropertiesBoolean extends HashMap<String, Boolean> implem
   
   private @Valid String name;
 
-  /**
-   **/
-  public AdditionalPropertiesBoolean name(String name) {
+  public AdditionalPropertiesBoolean(String name) {
     this.name = name;
-    return this;
   }
 
   
@@ -33,11 +30,11 @@ public class AdditionalPropertiesBoolean extends HashMap<String, Boolean> implem
   public String getName() {
     return name;
   }
+
   public void setName(String name) {
     this.name = name;
   }
 
-
   @Override
   public boolean equals(java.lang.Object o) {
     if (this == o) {
@@ -76,5 +73,24 @@ public class AdditionalPropertiesBoolean extends HashMap<String, Boolean> implem
     }
     return o.toString().replace("\n", "\n    ");
   }
+
+  public static Builder builder() {
+    return new Builder();
+  }
+
+  public static class Builder {
+    private String name;
+
+    /**
+      **/
+    public Builder name(String name) {
+      this.name = name;
+      return this;
+    }
+
+    public AdditionalPropertiesBoolean build() {
+      return new AdditionalPropertiesBoolean(name);
+    }
+  }
 }
 
diff --git a/samples/server/petstore/jaxrs-spec-interface/src/gen/java/org/openapitools/model/AdditionalPropertiesClass.java b/samples/server/petstore/jaxrs-spec-interface/src/gen/java/org/openapitools/model/AdditionalPropertiesClass.java
index c70f3d5171d5b87ca806d5a0fe38216ee0b45319..6ac45541de7f6e38f413a05917a580b6b7ba628e 100644
--- a/samples/server/petstore/jaxrs-spec-interface/src/gen/java/org/openapitools/model/AdditionalPropertiesClass.java
+++ b/samples/server/petstore/jaxrs-spec-interface/src/gen/java/org/openapitools/model/AdditionalPropertiesClass.java
@@ -32,11 +32,18 @@ public class AdditionalPropertiesClass  implements Serializable {
   private @Valid Object anytype2;
   private @Valid Object anytype3;
 
-  /**
-   **/
-  public AdditionalPropertiesClass mapString(Map<String, String> mapString) {
+  public AdditionalPropertiesClass(Map<String, String> mapString, Map<String, BigDecimal> mapNumber, Map<String, Integer> mapInteger, Map<String, Boolean> mapBoolean, Map<String, List<Integer>> mapArrayInteger, Map<String, List<Object>> mapArrayAnytype, Map<String, Map<String, String>> mapMapString, Map<String, Map<String, Object>> mapMapAnytype, Object anytype1, Object anytype2, Object anytype3) {
     this.mapString = mapString;
-    return this;
+    this.mapNumber = mapNumber;
+    this.mapInteger = mapInteger;
+    this.mapBoolean = mapBoolean;
+    this.mapArrayInteger = mapArrayInteger;
+    this.mapArrayAnytype = mapArrayAnytype;
+    this.mapMapString = mapMapString;
+    this.mapMapAnytype = mapMapAnytype;
+    this.anytype1 = anytype1;
+    this.anytype2 = anytype2;
+    this.anytype3 = anytype3;
   }
 
   
@@ -45,181 +52,101 @@ public class AdditionalPropertiesClass  implements Serializable {
   public Map<String, String> getMapString() {
     return mapString;
   }
+
   public void setMapString(Map<String, String> mapString) {
     this.mapString = mapString;
   }
-
-  /**
-   **/
-  public AdditionalPropertiesClass mapNumber(Map<String, BigDecimal> mapNumber) {
-    this.mapNumber = mapNumber;
-    return this;
-  }
-
-  
   @ApiModelProperty(value = "")
   @JsonProperty("map_number")
   public Map<String, BigDecimal> getMapNumber() {
     return mapNumber;
   }
+
   public void setMapNumber(Map<String, BigDecimal> mapNumber) {
     this.mapNumber = mapNumber;
   }
-
-  /**
-   **/
-  public AdditionalPropertiesClass mapInteger(Map<String, Integer> mapInteger) {
-    this.mapInteger = mapInteger;
-    return this;
-  }
-
-  
   @ApiModelProperty(value = "")
   @JsonProperty("map_integer")
   public Map<String, Integer> getMapInteger() {
     return mapInteger;
   }
+
   public void setMapInteger(Map<String, Integer> mapInteger) {
     this.mapInteger = mapInteger;
   }
-
-  /**
-   **/
-  public AdditionalPropertiesClass mapBoolean(Map<String, Boolean> mapBoolean) {
-    this.mapBoolean = mapBoolean;
-    return this;
-  }
-
-  
   @ApiModelProperty(value = "")
   @JsonProperty("map_boolean")
   public Map<String, Boolean> getMapBoolean() {
     return mapBoolean;
   }
+
   public void setMapBoolean(Map<String, Boolean> mapBoolean) {
     this.mapBoolean = mapBoolean;
   }
-
-  /**
-   **/
-  public AdditionalPropertiesClass mapArrayInteger(Map<String, List<Integer>> mapArrayInteger) {
-    this.mapArrayInteger = mapArrayInteger;
-    return this;
-  }
-
-  
   @ApiModelProperty(value = "")
   @JsonProperty("map_array_integer")
   public Map<String, List<Integer>> getMapArrayInteger() {
     return mapArrayInteger;
   }
+
   public void setMapArrayInteger(Map<String, List<Integer>> mapArrayInteger) {
     this.mapArrayInteger = mapArrayInteger;
   }
-
-  /**
-   **/
-  public AdditionalPropertiesClass mapArrayAnytype(Map<String, List<Object>> mapArrayAnytype) {
-    this.mapArrayAnytype = mapArrayAnytype;
-    return this;
-  }
-
-  
   @ApiModelProperty(value = "")
   @JsonProperty("map_array_anytype")
   public Map<String, List<Object>> getMapArrayAnytype() {
     return mapArrayAnytype;
   }
+
   public void setMapArrayAnytype(Map<String, List<Object>> mapArrayAnytype) {
     this.mapArrayAnytype = mapArrayAnytype;
   }
-
-  /**
-   **/
-  public AdditionalPropertiesClass mapMapString(Map<String, Map<String, String>> mapMapString) {
-    this.mapMapString = mapMapString;
-    return this;
-  }
-
-  
   @ApiModelProperty(value = "")
   @JsonProperty("map_map_string")
   public Map<String, Map<String, String>> getMapMapString() {
     return mapMapString;
   }
+
   public void setMapMapString(Map<String, Map<String, String>> mapMapString) {
     this.mapMapString = mapMapString;
   }
-
-  /**
-   **/
-  public AdditionalPropertiesClass mapMapAnytype(Map<String, Map<String, Object>> mapMapAnytype) {
-    this.mapMapAnytype = mapMapAnytype;
-    return this;
-  }
-
-  
   @ApiModelProperty(value = "")
   @JsonProperty("map_map_anytype")
   public Map<String, Map<String, Object>> getMapMapAnytype() {
     return mapMapAnytype;
   }
+
   public void setMapMapAnytype(Map<String, Map<String, Object>> mapMapAnytype) {
     this.mapMapAnytype = mapMapAnytype;
   }
-
-  /**
-   **/
-  public AdditionalPropertiesClass anytype1(Object anytype1) {
-    this.anytype1 = anytype1;
-    return this;
-  }
-
-  
   @ApiModelProperty(value = "")
   @JsonProperty("anytype_1")
   public Object getAnytype1() {
     return anytype1;
   }
+
   public void setAnytype1(Object anytype1) {
     this.anytype1 = anytype1;
   }
-
-  /**
-   **/
-  public AdditionalPropertiesClass anytype2(Object anytype2) {
-    this.anytype2 = anytype2;
-    return this;
-  }
-
-  
   @ApiModelProperty(value = "")
   @JsonProperty("anytype_2")
   public Object getAnytype2() {
     return anytype2;
   }
+
   public void setAnytype2(Object anytype2) {
     this.anytype2 = anytype2;
   }
-
-  /**
-   **/
-  public AdditionalPropertiesClass anytype3(Object anytype3) {
-    this.anytype3 = anytype3;
-    return this;
-  }
-
-  
   @ApiModelProperty(value = "")
   @JsonProperty("anytype_3")
   public Object getAnytype3() {
     return anytype3;
   }
+
   public void setAnytype3(Object anytype3) {
     this.anytype3 = anytype3;
   }
 
-
   @Override
   public boolean equals(java.lang.Object o) {
     if (this == o) {
@@ -277,5 +204,94 @@ public class AdditionalPropertiesClass  implements Serializable {
     }
     return o.toString().replace("\n", "\n    ");
   }
+
+  public static Builder builder() {
+    return new Builder();
+  }
+
+  public static class Builder {
+    private Map<String, String> mapString = new HashMap<String, String>();
+    private Map<String, BigDecimal> mapNumber = new HashMap<String, BigDecimal>();
+    private Map<String, Integer> mapInteger = new HashMap<String, Integer>();
+    private Map<String, Boolean> mapBoolean = new HashMap<String, Boolean>();
+    private Map<String, List<Integer>> mapArrayInteger = new HashMap<String, List<Integer>>();
+    private Map<String, List<Object>> mapArrayAnytype = new HashMap<String, List<Object>>();
+    private Map<String, Map<String, String>> mapMapString = new HashMap<String, Map<String, String>>();
+    private Map<String, Map<String, Object>> mapMapAnytype = new HashMap<String, Map<String, Object>>();
+    private Object anytype1;
+    private Object anytype2;
+    private Object anytype3;
+
+    /**
+      **/
+    public Builder mapString(Map<String, String> mapString) {
+      this.mapString = mapString;
+      return this;
+    }
+    /**
+      **/
+    public Builder mapNumber(Map<String, BigDecimal> mapNumber) {
+      this.mapNumber = mapNumber;
+      return this;
+    }
+    /**
+      **/
+    public Builder mapInteger(Map<String, Integer> mapInteger) {
+      this.mapInteger = mapInteger;
+      return this;
+    }
+    /**
+      **/
+    public Builder mapBoolean(Map<String, Boolean> mapBoolean) {
+      this.mapBoolean = mapBoolean;
+      return this;
+    }
+    /**
+      **/
+    public Builder mapArrayInteger(Map<String, List<Integer>> mapArrayInteger) {
+      this.mapArrayInteger = mapArrayInteger;
+      return this;
+    }
+    /**
+      **/
+    public Builder mapArrayAnytype(Map<String, List<Object>> mapArrayAnytype) {
+      this.mapArrayAnytype = mapArrayAnytype;
+      return this;
+    }
+    /**
+      **/
+    public Builder mapMapString(Map<String, Map<String, String>> mapMapString) {
+      this.mapMapString = mapMapString;
+      return this;
+    }
+    /**
+      **/
+    public Builder mapMapAnytype(Map<String, Map<String, Object>> mapMapAnytype) {
+      this.mapMapAnytype = mapMapAnytype;
+      return this;
+    }
+    /**
+      **/
+    public Builder anytype1(Object anytype1) {
+      this.anytype1 = anytype1;
+      return this;
+    }
+    /**
+      **/
+    public Builder anytype2(Object anytype2) {
+      this.anytype2 = anytype2;
+      return this;
+    }
+    /**
+      **/
+    public Builder anytype3(Object anytype3) {
+      this.anytype3 = anytype3;
+      return this;
+    }
+
+    public AdditionalPropertiesClass build() {
+      return new AdditionalPropertiesClass(mapString, mapNumber, mapInteger, mapBoolean, mapArrayInteger, mapArrayAnytype, mapMapString, mapMapAnytype, anytype1, anytype2, anytype3);
+    }
+  }
 }
 
diff --git a/samples/server/petstore/jaxrs-spec-interface/src/gen/java/org/openapitools/model/AdditionalPropertiesInteger.java b/samples/server/petstore/jaxrs-spec-interface/src/gen/java/org/openapitools/model/AdditionalPropertiesInteger.java
index c2c81ea584e1fa440e44136b77a39aff5fafc8f5..d90d6b1cfe15c8121331285254e8d6caa2aff9e1 100644
--- a/samples/server/petstore/jaxrs-spec-interface/src/gen/java/org/openapitools/model/AdditionalPropertiesInteger.java
+++ b/samples/server/petstore/jaxrs-spec-interface/src/gen/java/org/openapitools/model/AdditionalPropertiesInteger.java
@@ -20,11 +20,8 @@ public class AdditionalPropertiesInteger extends HashMap<String, Integer> implem
   
   private @Valid String name;
 
-  /**
-   **/
-  public AdditionalPropertiesInteger name(String name) {
+  public AdditionalPropertiesInteger(String name) {
     this.name = name;
-    return this;
   }
 
   
@@ -33,11 +30,11 @@ public class AdditionalPropertiesInteger extends HashMap<String, Integer> implem
   public String getName() {
     return name;
   }
+
   public void setName(String name) {
     this.name = name;
   }
 
-
   @Override
   public boolean equals(java.lang.Object o) {
     if (this == o) {
@@ -76,5 +73,24 @@ public class AdditionalPropertiesInteger extends HashMap<String, Integer> implem
     }
     return o.toString().replace("\n", "\n    ");
   }
+
+  public static Builder builder() {
+    return new Builder();
+  }
+
+  public static class Builder {
+    private String name;
+
+    /**
+      **/
+    public Builder name(String name) {
+      this.name = name;
+      return this;
+    }
+
+    public AdditionalPropertiesInteger build() {
+      return new AdditionalPropertiesInteger(name);
+    }
+  }
 }
 
diff --git a/samples/server/petstore/jaxrs-spec-interface/src/gen/java/org/openapitools/model/AdditionalPropertiesNumber.java b/samples/server/petstore/jaxrs-spec-interface/src/gen/java/org/openapitools/model/AdditionalPropertiesNumber.java
index b4b4fc2319788ddeba3d20c4d8be20aeb6c3152c..a0f02e3e3e50fe62f6bb7fabd0e04a35643631c5 100644
--- a/samples/server/petstore/jaxrs-spec-interface/src/gen/java/org/openapitools/model/AdditionalPropertiesNumber.java
+++ b/samples/server/petstore/jaxrs-spec-interface/src/gen/java/org/openapitools/model/AdditionalPropertiesNumber.java
@@ -21,11 +21,8 @@ public class AdditionalPropertiesNumber extends HashMap<String, BigDecimal> impl
   
   private @Valid String name;
 
-  /**
-   **/
-  public AdditionalPropertiesNumber name(String name) {
+  public AdditionalPropertiesNumber(String name) {
     this.name = name;
-    return this;
   }
 
   
@@ -34,11 +31,11 @@ public class AdditionalPropertiesNumber extends HashMap<String, BigDecimal> impl
   public String getName() {
     return name;
   }
+
   public void setName(String name) {
     this.name = name;
   }
 
-
   @Override
   public boolean equals(java.lang.Object o) {
     if (this == o) {
@@ -77,5 +74,24 @@ public class AdditionalPropertiesNumber extends HashMap<String, BigDecimal> impl
     }
     return o.toString().replace("\n", "\n    ");
   }
+
+  public static Builder builder() {
+    return new Builder();
+  }
+
+  public static class Builder {
+    private String name;
+
+    /**
+      **/
+    public Builder name(String name) {
+      this.name = name;
+      return this;
+    }
+
+    public AdditionalPropertiesNumber build() {
+      return new AdditionalPropertiesNumber(name);
+    }
+  }
 }
 
diff --git a/samples/server/petstore/jaxrs-spec-interface/src/gen/java/org/openapitools/model/AdditionalPropertiesObject.java b/samples/server/petstore/jaxrs-spec-interface/src/gen/java/org/openapitools/model/AdditionalPropertiesObject.java
index 90ecd845ef3be21e9ff264c85a4ab3a64292539a..78e0b9190bf83a2c637bcc41b2b49a87d027a82c 100644
--- a/samples/server/petstore/jaxrs-spec-interface/src/gen/java/org/openapitools/model/AdditionalPropertiesObject.java
+++ b/samples/server/petstore/jaxrs-spec-interface/src/gen/java/org/openapitools/model/AdditionalPropertiesObject.java
@@ -20,11 +20,8 @@ public class AdditionalPropertiesObject extends HashMap<String, Map> implements
   
   private @Valid String name;
 
-  /**
-   **/
-  public AdditionalPropertiesObject name(String name) {
+  public AdditionalPropertiesObject(String name) {
     this.name = name;
-    return this;
   }
 
   
@@ -33,11 +30,11 @@ public class AdditionalPropertiesObject extends HashMap<String, Map> implements
   public String getName() {
     return name;
   }
+
   public void setName(String name) {
     this.name = name;
   }
 
-
   @Override
   public boolean equals(java.lang.Object o) {
     if (this == o) {
@@ -76,5 +73,24 @@ public class AdditionalPropertiesObject extends HashMap<String, Map> implements
     }
     return o.toString().replace("\n", "\n    ");
   }
+
+  public static Builder builder() {
+    return new Builder();
+  }
+
+  public static class Builder {
+    private String name;
+
+    /**
+      **/
+    public Builder name(String name) {
+      this.name = name;
+      return this;
+    }
+
+    public AdditionalPropertiesObject build() {
+      return new AdditionalPropertiesObject(name);
+    }
+  }
 }
 
diff --git a/samples/server/petstore/jaxrs-spec-interface/src/gen/java/org/openapitools/model/AdditionalPropertiesString.java b/samples/server/petstore/jaxrs-spec-interface/src/gen/java/org/openapitools/model/AdditionalPropertiesString.java
index 1454d070380221126732bdd6fb7a28b00c78ed52..117551ee44016412de91733b1f947f16519f40b4 100644
--- a/samples/server/petstore/jaxrs-spec-interface/src/gen/java/org/openapitools/model/AdditionalPropertiesString.java
+++ b/samples/server/petstore/jaxrs-spec-interface/src/gen/java/org/openapitools/model/AdditionalPropertiesString.java
@@ -20,11 +20,8 @@ public class AdditionalPropertiesString extends HashMap<String, String> implemen
   
   private @Valid String name;
 
-  /**
-   **/
-  public AdditionalPropertiesString name(String name) {
+  public AdditionalPropertiesString(String name) {
     this.name = name;
-    return this;
   }
 
   
@@ -33,11 +30,11 @@ public class AdditionalPropertiesString extends HashMap<String, String> implemen
   public String getName() {
     return name;
   }
+
   public void setName(String name) {
     this.name = name;
   }
 
-
   @Override
   public boolean equals(java.lang.Object o) {
     if (this == o) {
@@ -76,5 +73,24 @@ public class AdditionalPropertiesString extends HashMap<String, String> implemen
     }
     return o.toString().replace("\n", "\n    ");
   }
+
+  public static Builder builder() {
+    return new Builder();
+  }
+
+  public static class Builder {
+    private String name;
+
+    /**
+      **/
+    public Builder name(String name) {
+      this.name = name;
+      return this;
+    }
+
+    public AdditionalPropertiesString build() {
+      return new AdditionalPropertiesString(name);
+    }
+  }
 }
 
diff --git a/samples/server/petstore/jaxrs-spec-interface/src/gen/java/org/openapitools/model/Animal.java b/samples/server/petstore/jaxrs-spec-interface/src/gen/java/org/openapitools/model/Animal.java
index 43bfbb7fd24d0136f5b98659e5258c812dfcba66..99dbe4b8989671a0c0f6e3f8f1b155c1c81055b1 100644
--- a/samples/server/petstore/jaxrs-spec-interface/src/gen/java/org/openapitools/model/Animal.java
+++ b/samples/server/petstore/jaxrs-spec-interface/src/gen/java/org/openapitools/model/Animal.java
@@ -27,11 +27,9 @@ public class Animal  implements Serializable {
   private @Valid String className;
   private @Valid String color = "red";
 
-  /**
-   **/
-  public Animal className(String className) {
+  public Animal(String className, String color) {
     this.className = className;
-    return this;
+    this.color = color;
   }
 
   
@@ -41,28 +39,20 @@ public class Animal  implements Serializable {
   public String getClassName() {
     return className;
   }
+
   public void setClassName(String className) {
     this.className = className;
   }
-
-  /**
-   **/
-  public Animal color(String color) {
-    this.color = color;
-    return this;
-  }
-
-  
   @ApiModelProperty(value = "")
   @JsonProperty("color")
   public String getColor() {
     return color;
   }
+
   public void setColor(String color) {
     this.color = color;
   }
 
-
   @Override
   public boolean equals(java.lang.Object o) {
     if (this == o) {
@@ -102,5 +92,31 @@ public class Animal  implements Serializable {
     }
     return o.toString().replace("\n", "\n    ");
   }
+
+  public static Builder builder() {
+    return new Builder();
+  }
+
+  public static class Builder {
+    private String className;
+    private String color = "red";
+
+    /**
+      **/
+    public Builder className(String className) {
+      this.className = className;
+      return this;
+    }
+    /**
+      **/
+    public Builder color(String color) {
+      this.color = color;
+      return this;
+    }
+
+    public Animal build() {
+      return new Animal(className, color);
+    }
+  }
 }
 
diff --git a/samples/server/petstore/jaxrs-spec-interface/src/gen/java/org/openapitools/model/ArrayOfArrayOfNumberOnly.java b/samples/server/petstore/jaxrs-spec-interface/src/gen/java/org/openapitools/model/ArrayOfArrayOfNumberOnly.java
index cc9abca8a2a84bcb85a38247b0f1832f1f9bfa12..4c7e6161185bcd73fae0525d371d1b3b4dbe5c7c 100644
--- a/samples/server/petstore/jaxrs-spec-interface/src/gen/java/org/openapitools/model/ArrayOfArrayOfNumberOnly.java
+++ b/samples/server/petstore/jaxrs-spec-interface/src/gen/java/org/openapitools/model/ArrayOfArrayOfNumberOnly.java
@@ -21,11 +21,8 @@ public class ArrayOfArrayOfNumberOnly  implements Serializable {
   
   private @Valid List<List<BigDecimal>> arrayArrayNumber = new ArrayList<List<BigDecimal>>();
 
-  /**
-   **/
-  public ArrayOfArrayOfNumberOnly arrayArrayNumber(List<List<BigDecimal>> arrayArrayNumber) {
+  public ArrayOfArrayOfNumberOnly(List<List<BigDecimal>> arrayArrayNumber) {
     this.arrayArrayNumber = arrayArrayNumber;
-    return this;
   }
 
   
@@ -34,11 +31,11 @@ public class ArrayOfArrayOfNumberOnly  implements Serializable {
   public List<List<BigDecimal>> getArrayArrayNumber() {
     return arrayArrayNumber;
   }
+
   public void setArrayArrayNumber(List<List<BigDecimal>> arrayArrayNumber) {
     this.arrayArrayNumber = arrayArrayNumber;
   }
 
-
   @Override
   public boolean equals(java.lang.Object o) {
     if (this == o) {
@@ -76,5 +73,24 @@ public class ArrayOfArrayOfNumberOnly  implements Serializable {
     }
     return o.toString().replace("\n", "\n    ");
   }
+
+  public static Builder builder() {
+    return new Builder();
+  }
+
+  public static class Builder {
+    private List<List<BigDecimal>> arrayArrayNumber = new ArrayList<List<BigDecimal>>();
+
+    /**
+      **/
+    public Builder arrayArrayNumber(List<List<BigDecimal>> arrayArrayNumber) {
+      this.arrayArrayNumber = arrayArrayNumber;
+      return this;
+    }
+
+    public ArrayOfArrayOfNumberOnly build() {
+      return new ArrayOfArrayOfNumberOnly(arrayArrayNumber);
+    }
+  }
 }
 
diff --git a/samples/server/petstore/jaxrs-spec-interface/src/gen/java/org/openapitools/model/ArrayOfNumberOnly.java b/samples/server/petstore/jaxrs-spec-interface/src/gen/java/org/openapitools/model/ArrayOfNumberOnly.java
index 40acdceef6a3d6517d125f0283922e2b36fc6498..ee848ee4d8cdfe6a5624583aa531d12a2e1f068a 100644
--- a/samples/server/petstore/jaxrs-spec-interface/src/gen/java/org/openapitools/model/ArrayOfNumberOnly.java
+++ b/samples/server/petstore/jaxrs-spec-interface/src/gen/java/org/openapitools/model/ArrayOfNumberOnly.java
@@ -21,11 +21,8 @@ public class ArrayOfNumberOnly  implements Serializable {
   
   private @Valid List<BigDecimal> arrayNumber = new ArrayList<BigDecimal>();
 
-  /**
-   **/
-  public ArrayOfNumberOnly arrayNumber(List<BigDecimal> arrayNumber) {
+  public ArrayOfNumberOnly(List<BigDecimal> arrayNumber) {
     this.arrayNumber = arrayNumber;
-    return this;
   }
 
   
@@ -34,11 +31,11 @@ public class ArrayOfNumberOnly  implements Serializable {
   public List<BigDecimal> getArrayNumber() {
     return arrayNumber;
   }
+
   public void setArrayNumber(List<BigDecimal> arrayNumber) {
     this.arrayNumber = arrayNumber;
   }
 
-
   @Override
   public boolean equals(java.lang.Object o) {
     if (this == o) {
@@ -76,5 +73,24 @@ public class ArrayOfNumberOnly  implements Serializable {
     }
     return o.toString().replace("\n", "\n    ");
   }
+
+  public static Builder builder() {
+    return new Builder();
+  }
+
+  public static class Builder {
+    private List<BigDecimal> arrayNumber = new ArrayList<BigDecimal>();
+
+    /**
+      **/
+    public Builder arrayNumber(List<BigDecimal> arrayNumber) {
+      this.arrayNumber = arrayNumber;
+      return this;
+    }
+
+    public ArrayOfNumberOnly build() {
+      return new ArrayOfNumberOnly(arrayNumber);
+    }
+  }
 }
 
diff --git a/samples/server/petstore/jaxrs-spec-interface/src/gen/java/org/openapitools/model/ArrayTest.java b/samples/server/petstore/jaxrs-spec-interface/src/gen/java/org/openapitools/model/ArrayTest.java
index bd3241465564b16d90f3256f71e463aca1806afa..194f3484185ebaffa2f52474761c6ca0f7b5350c 100644
--- a/samples/server/petstore/jaxrs-spec-interface/src/gen/java/org/openapitools/model/ArrayTest.java
+++ b/samples/server/petstore/jaxrs-spec-interface/src/gen/java/org/openapitools/model/ArrayTest.java
@@ -23,11 +23,10 @@ public class ArrayTest  implements Serializable {
   private @Valid List<List<Long>> arrayArrayOfInteger = new ArrayList<List<Long>>();
   private @Valid List<List<ReadOnlyFirst>> arrayArrayOfModel = new ArrayList<List<ReadOnlyFirst>>();
 
-  /**
-   **/
-  public ArrayTest arrayOfString(List<String> arrayOfString) {
+  public ArrayTest(List<String> arrayOfString, List<List<Long>> arrayArrayOfInteger, List<List<ReadOnlyFirst>> arrayArrayOfModel) {
     this.arrayOfString = arrayOfString;
-    return this;
+    this.arrayArrayOfInteger = arrayArrayOfInteger;
+    this.arrayArrayOfModel = arrayArrayOfModel;
   }
 
   
@@ -36,45 +35,29 @@ public class ArrayTest  implements Serializable {
   public List<String> getArrayOfString() {
     return arrayOfString;
   }
+
   public void setArrayOfString(List<String> arrayOfString) {
     this.arrayOfString = arrayOfString;
   }
-
-  /**
-   **/
-  public ArrayTest arrayArrayOfInteger(List<List<Long>> arrayArrayOfInteger) {
-    this.arrayArrayOfInteger = arrayArrayOfInteger;
-    return this;
-  }
-
-  
   @ApiModelProperty(value = "")
   @JsonProperty("array_array_of_integer")
   public List<List<Long>> getArrayArrayOfInteger() {
     return arrayArrayOfInteger;
   }
+
   public void setArrayArrayOfInteger(List<List<Long>> arrayArrayOfInteger) {
     this.arrayArrayOfInteger = arrayArrayOfInteger;
   }
-
-  /**
-   **/
-  public ArrayTest arrayArrayOfModel(List<List<ReadOnlyFirst>> arrayArrayOfModel) {
-    this.arrayArrayOfModel = arrayArrayOfModel;
-    return this;
-  }
-
-  
   @ApiModelProperty(value = "")
   @JsonProperty("array_array_of_model")
   public List<List<ReadOnlyFirst>> getArrayArrayOfModel() {
     return arrayArrayOfModel;
   }
+
   public void setArrayArrayOfModel(List<List<ReadOnlyFirst>> arrayArrayOfModel) {
     this.arrayArrayOfModel = arrayArrayOfModel;
   }
 
-
   @Override
   public boolean equals(java.lang.Object o) {
     if (this == o) {
@@ -116,5 +99,38 @@ public class ArrayTest  implements Serializable {
     }
     return o.toString().replace("\n", "\n    ");
   }
+
+  public static Builder builder() {
+    return new Builder();
+  }
+
+  public static class Builder {
+    private List<String> arrayOfString = new ArrayList<String>();
+    private List<List<Long>> arrayArrayOfInteger = new ArrayList<List<Long>>();
+    private List<List<ReadOnlyFirst>> arrayArrayOfModel = new ArrayList<List<ReadOnlyFirst>>();
+
+    /**
+      **/
+    public Builder arrayOfString(List<String> arrayOfString) {
+      this.arrayOfString = arrayOfString;
+      return this;
+    }
+    /**
+      **/
+    public Builder arrayArrayOfInteger(List<List<Long>> arrayArrayOfInteger) {
+      this.arrayArrayOfInteger = arrayArrayOfInteger;
+      return this;
+    }
+    /**
+      **/
+    public Builder arrayArrayOfModel(List<List<ReadOnlyFirst>> arrayArrayOfModel) {
+      this.arrayArrayOfModel = arrayArrayOfModel;
+      return this;
+    }
+
+    public ArrayTest build() {
+      return new ArrayTest(arrayOfString, arrayArrayOfInteger, arrayArrayOfModel);
+    }
+  }
 }
 
diff --git a/samples/server/petstore/jaxrs-spec-interface/src/gen/java/org/openapitools/model/BigCat.java b/samples/server/petstore/jaxrs-spec-interface/src/gen/java/org/openapitools/model/BigCat.java
index c3c4bfcfb59fc82d81625fc2bd01b6f9d187c143..159c185aeea21be9dbff458b2766127e697dfc71 100644
--- a/samples/server/petstore/jaxrs-spec-interface/src/gen/java/org/openapitools/model/BigCat.java
+++ b/samples/server/petstore/jaxrs-spec-interface/src/gen/java/org/openapitools/model/BigCat.java
@@ -53,11 +53,8 @@ public enum KindEnum {
 
   private @Valid KindEnum kind;
 
-  /**
-   **/
-  public BigCat kind(KindEnum kind) {
+  public BigCat(KindEnum kind) {
     this.kind = kind;
-    return this;
   }
 
   
@@ -66,11 +63,11 @@ public enum KindEnum {
   public KindEnum getKind() {
     return kind;
   }
+
   public void setKind(KindEnum kind) {
     this.kind = kind;
   }
 
-
   @Override
   public boolean equals(java.lang.Object o) {
     if (this == o) {
@@ -109,5 +106,24 @@ public enum KindEnum {
     }
     return o.toString().replace("\n", "\n    ");
   }
+
+  public static Builder builder() {
+    return new Builder();
+  }
+
+  public static class Builder {
+    private KindEnum kind;
+
+    /**
+      **/
+    public Builder kind(KindEnum kind) {
+      this.kind = kind;
+      return this;
+    }
+
+    public BigCat build() {
+      return new BigCat(kind);
+    }
+  }
 }
 
diff --git a/samples/server/petstore/jaxrs-spec-interface/src/gen/java/org/openapitools/model/BigCatAllOf.java b/samples/server/petstore/jaxrs-spec-interface/src/gen/java/org/openapitools/model/BigCatAllOf.java
index d3eb97becef2ec954c33f6493db34656833438a7..3adbecf3cb5fa7b04f09288d37d9c82d56edfbf0 100644
--- a/samples/server/petstore/jaxrs-spec-interface/src/gen/java/org/openapitools/model/BigCatAllOf.java
+++ b/samples/server/petstore/jaxrs-spec-interface/src/gen/java/org/openapitools/model/BigCatAllOf.java
@@ -51,11 +51,8 @@ public enum KindEnum {
 
   private @Valid KindEnum kind;
 
-  /**
-   **/
-  public BigCatAllOf kind(KindEnum kind) {
+  public BigCatAllOf(KindEnum kind) {
     this.kind = kind;
-    return this;
   }
 
   
@@ -64,11 +61,11 @@ public enum KindEnum {
   public KindEnum getKind() {
     return kind;
   }
+
   public void setKind(KindEnum kind) {
     this.kind = kind;
   }
 
-
   @Override
   public boolean equals(java.lang.Object o) {
     if (this == o) {
@@ -106,5 +103,24 @@ public enum KindEnum {
     }
     return o.toString().replace("\n", "\n    ");
   }
+
+  public static Builder builder() {
+    return new Builder();
+  }
+
+  public static class Builder {
+    private KindEnum kind;
+
+    /**
+      **/
+    public Builder kind(KindEnum kind) {
+      this.kind = kind;
+      return this;
+    }
+
+    public BigCatAllOf build() {
+      return new BigCatAllOf(kind);
+    }
+  }
 }
 
diff --git a/samples/server/petstore/jaxrs-spec-interface/src/gen/java/org/openapitools/model/Capitalization.java b/samples/server/petstore/jaxrs-spec-interface/src/gen/java/org/openapitools/model/Capitalization.java
index 9c9d8a8f4255c86fe3b68fe74a832f990e554cd1..318dd912e7d4fac8ab9cc31106b6f6ba6f41ce01 100644
--- a/samples/server/petstore/jaxrs-spec-interface/src/gen/java/org/openapitools/model/Capitalization.java
+++ b/samples/server/petstore/jaxrs-spec-interface/src/gen/java/org/openapitools/model/Capitalization.java
@@ -23,11 +23,13 @@ public class Capitalization  implements Serializable {
   private @Valid String scAETHFlowPoints;
   private @Valid String ATT_NAME;
 
-  /**
-   **/
-  public Capitalization smallCamel(String smallCamel) {
+  public Capitalization(String smallCamel, String capitalCamel, String smallSnake, String capitalSnake, String scAETHFlowPoints, String ATT_NAME) {
     this.smallCamel = smallCamel;
-    return this;
+    this.capitalCamel = capitalCamel;
+    this.smallSnake = smallSnake;
+    this.capitalSnake = capitalSnake;
+    this.scAETHFlowPoints = scAETHFlowPoints;
+    this.ATT_NAME = ATT_NAME;
   }
 
   
@@ -36,97 +38,56 @@ public class Capitalization  implements Serializable {
   public String getSmallCamel() {
     return smallCamel;
   }
+
   public void setSmallCamel(String smallCamel) {
     this.smallCamel = smallCamel;
   }
-
-  /**
-   **/
-  public Capitalization capitalCamel(String capitalCamel) {
-    this.capitalCamel = capitalCamel;
-    return this;
-  }
-
-  
   @ApiModelProperty(value = "")
   @JsonProperty("CapitalCamel")
   public String getCapitalCamel() {
     return capitalCamel;
   }
+
   public void setCapitalCamel(String capitalCamel) {
     this.capitalCamel = capitalCamel;
   }
-
-  /**
-   **/
-  public Capitalization smallSnake(String smallSnake) {
-    this.smallSnake = smallSnake;
-    return this;
-  }
-
-  
   @ApiModelProperty(value = "")
   @JsonProperty("small_Snake")
   public String getSmallSnake() {
     return smallSnake;
   }
+
   public void setSmallSnake(String smallSnake) {
     this.smallSnake = smallSnake;
   }
-
-  /**
-   **/
-  public Capitalization capitalSnake(String capitalSnake) {
-    this.capitalSnake = capitalSnake;
-    return this;
-  }
-
-  
   @ApiModelProperty(value = "")
   @JsonProperty("Capital_Snake")
   public String getCapitalSnake() {
     return capitalSnake;
   }
+
   public void setCapitalSnake(String capitalSnake) {
     this.capitalSnake = capitalSnake;
   }
-
-  /**
-   **/
-  public Capitalization scAETHFlowPoints(String scAETHFlowPoints) {
-    this.scAETHFlowPoints = scAETHFlowPoints;
-    return this;
-  }
-
-  
   @ApiModelProperty(value = "")
   @JsonProperty("SCA_ETH_Flow_Points")
   public String getScAETHFlowPoints() {
     return scAETHFlowPoints;
   }
+
   public void setScAETHFlowPoints(String scAETHFlowPoints) {
     this.scAETHFlowPoints = scAETHFlowPoints;
   }
-
-  /**
-   * Name of the pet 
-   **/
-  public Capitalization ATT_NAME(String ATT_NAME) {
-    this.ATT_NAME = ATT_NAME;
-    return this;
-  }
-
-  
   @ApiModelProperty(value = "Name of the pet ")
   @JsonProperty("ATT_NAME")
   public String getATTNAME() {
     return ATT_NAME;
   }
+
   public void setATTNAME(String ATT_NAME) {
     this.ATT_NAME = ATT_NAME;
   }
 
-
   @Override
   public boolean equals(java.lang.Object o) {
     if (this == o) {
@@ -174,5 +135,60 @@ public class Capitalization  implements Serializable {
     }
     return o.toString().replace("\n", "\n    ");
   }
+
+  public static Builder builder() {
+    return new Builder();
+  }
+
+  public static class Builder {
+    private String smallCamel;
+    private String capitalCamel;
+    private String smallSnake;
+    private String capitalSnake;
+    private String scAETHFlowPoints;
+    private String ATT_NAME;
+
+    /**
+      **/
+    public Builder smallCamel(String smallCamel) {
+      this.smallCamel = smallCamel;
+      return this;
+    }
+    /**
+      **/
+    public Builder capitalCamel(String capitalCamel) {
+      this.capitalCamel = capitalCamel;
+      return this;
+    }
+    /**
+      **/
+    public Builder smallSnake(String smallSnake) {
+      this.smallSnake = smallSnake;
+      return this;
+    }
+    /**
+      **/
+    public Builder capitalSnake(String capitalSnake) {
+      this.capitalSnake = capitalSnake;
+      return this;
+    }
+    /**
+      **/
+    public Builder scAETHFlowPoints(String scAETHFlowPoints) {
+      this.scAETHFlowPoints = scAETHFlowPoints;
+      return this;
+    }
+    /**
+      * Name of the pet 
+      **/
+    public Builder ATT_NAME(String ATT_NAME) {
+      this.ATT_NAME = ATT_NAME;
+      return this;
+    }
+
+    public Capitalization build() {
+      return new Capitalization(smallCamel, capitalCamel, smallSnake, capitalSnake, scAETHFlowPoints, ATT_NAME);
+    }
+  }
 }
 
diff --git a/samples/server/petstore/jaxrs-spec-interface/src/gen/java/org/openapitools/model/Cat.java b/samples/server/petstore/jaxrs-spec-interface/src/gen/java/org/openapitools/model/Cat.java
index 12cfde8994abb7b23a245b2b1613105f902cedaa..8114f8af8f3b3b278e45d30d773dfdc72eda4df6 100644
--- a/samples/server/petstore/jaxrs-spec-interface/src/gen/java/org/openapitools/model/Cat.java
+++ b/samples/server/petstore/jaxrs-spec-interface/src/gen/java/org/openapitools/model/Cat.java
@@ -20,11 +20,8 @@ public class Cat extends Animal implements Serializable {
   
   private @Valid Boolean declawed;
 
-  /**
-   **/
-  public Cat declawed(Boolean declawed) {
+  public Cat(Boolean declawed) {
     this.declawed = declawed;
-    return this;
   }
 
   
@@ -33,11 +30,11 @@ public class Cat extends Animal implements Serializable {
   public Boolean getDeclawed() {
     return declawed;
   }
+
   public void setDeclawed(Boolean declawed) {
     this.declawed = declawed;
   }
 
-
   @Override
   public boolean equals(java.lang.Object o) {
     if (this == o) {
@@ -76,5 +73,24 @@ public class Cat extends Animal implements Serializable {
     }
     return o.toString().replace("\n", "\n    ");
   }
+
+  public static Builder builder() {
+    return new Builder();
+  }
+
+  public static class Builder {
+    private Boolean declawed;
+
+    /**
+      **/
+    public Builder declawed(Boolean declawed) {
+      this.declawed = declawed;
+      return this;
+    }
+
+    public Cat build() {
+      return new Cat(declawed);
+    }
+  }
 }
 
diff --git a/samples/server/petstore/jaxrs-spec-interface/src/gen/java/org/openapitools/model/CatAllOf.java b/samples/server/petstore/jaxrs-spec-interface/src/gen/java/org/openapitools/model/CatAllOf.java
index 66bfa279966f754854efab7004b3cd8fb58d9fb1..b9bae4cb25b2aae89737081c2af73549fe80479b 100644
--- a/samples/server/petstore/jaxrs-spec-interface/src/gen/java/org/openapitools/model/CatAllOf.java
+++ b/samples/server/petstore/jaxrs-spec-interface/src/gen/java/org/openapitools/model/CatAllOf.java
@@ -18,11 +18,8 @@ public class CatAllOf  implements Serializable {
   
   private @Valid Boolean declawed;
 
-  /**
-   **/
-  public CatAllOf declawed(Boolean declawed) {
+  public CatAllOf(Boolean declawed) {
     this.declawed = declawed;
-    return this;
   }
 
   
@@ -31,11 +28,11 @@ public class CatAllOf  implements Serializable {
   public Boolean getDeclawed() {
     return declawed;
   }
+
   public void setDeclawed(Boolean declawed) {
     this.declawed = declawed;
   }
 
-
   @Override
   public boolean equals(java.lang.Object o) {
     if (this == o) {
@@ -73,5 +70,24 @@ public class CatAllOf  implements Serializable {
     }
     return o.toString().replace("\n", "\n    ");
   }
+
+  public static Builder builder() {
+    return new Builder();
+  }
+
+  public static class Builder {
+    private Boolean declawed;
+
+    /**
+      **/
+    public Builder declawed(Boolean declawed) {
+      this.declawed = declawed;
+      return this;
+    }
+
+    public CatAllOf build() {
+      return new CatAllOf(declawed);
+    }
+  }
 }
 
diff --git a/samples/server/petstore/jaxrs-spec-interface/src/gen/java/org/openapitools/model/Category.java b/samples/server/petstore/jaxrs-spec-interface/src/gen/java/org/openapitools/model/Category.java
index fa0c47ddd86d3c34cd3bf63491518b52130057d3..c9a470ad6c0a10c878d0cd43ab4fa34f0705d947 100644
--- a/samples/server/petstore/jaxrs-spec-interface/src/gen/java/org/openapitools/model/Category.java
+++ b/samples/server/petstore/jaxrs-spec-interface/src/gen/java/org/openapitools/model/Category.java
@@ -19,11 +19,9 @@ public class Category  implements Serializable {
   private @Valid Long id;
   private @Valid String name = "default-name";
 
-  /**
-   **/
-  public Category id(Long id) {
+  public Category(Long id, String name) {
     this.id = id;
-    return this;
+    this.name = name;
   }
 
   
@@ -32,29 +30,21 @@ public class Category  implements Serializable {
   public Long getId() {
     return id;
   }
+
   public void setId(Long id) {
     this.id = id;
   }
-
-  /**
-   **/
-  public Category name(String name) {
-    this.name = name;
-    return this;
-  }
-
-  
   @ApiModelProperty(required = true, value = "")
   @JsonProperty("name")
   @NotNull
   public String getName() {
     return name;
   }
+
   public void setName(String name) {
     this.name = name;
   }
 
-
   @Override
   public boolean equals(java.lang.Object o) {
     if (this == o) {
@@ -94,5 +84,31 @@ public class Category  implements Serializable {
     }
     return o.toString().replace("\n", "\n    ");
   }
+
+  public static Builder builder() {
+    return new Builder();
+  }
+
+  public static class Builder {
+    private Long id;
+    private String name = "default-name";
+
+    /**
+      **/
+    public Builder id(Long id) {
+      this.id = id;
+      return this;
+    }
+    /**
+      **/
+    public Builder name(String name) {
+      this.name = name;
+      return this;
+    }
+
+    public Category build() {
+      return new Category(id, name);
+    }
+  }
 }
 
diff --git a/samples/server/petstore/jaxrs-spec-interface/src/gen/java/org/openapitools/model/ClassModel.java b/samples/server/petstore/jaxrs-spec-interface/src/gen/java/org/openapitools/model/ClassModel.java
index 19e12db649337433f24e05197d0fc972fa2ba75f..76dd39d9c1581c43f9c4ca4542a72affc0680adc 100644
--- a/samples/server/petstore/jaxrs-spec-interface/src/gen/java/org/openapitools/model/ClassModel.java
+++ b/samples/server/petstore/jaxrs-spec-interface/src/gen/java/org/openapitools/model/ClassModel.java
@@ -12,7 +12,6 @@ import com.fasterxml.jackson.annotation.JsonProperty;
 import com.fasterxml.jackson.annotation.JsonCreator;
 import com.fasterxml.jackson.annotation.JsonValue;
 
-
 /**
  * Model for testing model with \&quot;_class\&quot; property
  **/
@@ -21,11 +20,8 @@ public class ClassModel  implements Serializable {
   
   private @Valid String propertyClass;
 
-  /**
-   **/
-  public ClassModel propertyClass(String propertyClass) {
+  public ClassModel(String propertyClass) {
     this.propertyClass = propertyClass;
-    return this;
   }
 
   
@@ -34,11 +30,11 @@ public class ClassModel  implements Serializable {
   public String getPropertyClass() {
     return propertyClass;
   }
+
   public void setPropertyClass(String propertyClass) {
     this.propertyClass = propertyClass;
   }
 
-
   @Override
   public boolean equals(java.lang.Object o) {
     if (this == o) {
@@ -76,5 +72,24 @@ public class ClassModel  implements Serializable {
     }
     return o.toString().replace("\n", "\n    ");
   }
+
+  public static Builder builder() {
+    return new Builder();
+  }
+
+  public static class Builder {
+    private String propertyClass;
+
+    /**
+      **/
+    public Builder propertyClass(String propertyClass) {
+      this.propertyClass = propertyClass;
+      return this;
+    }
+
+    public ClassModel build() {
+      return new ClassModel(propertyClass);
+    }
+  }
 }
 
diff --git a/samples/server/petstore/jaxrs-spec-interface/src/gen/java/org/openapitools/model/Client.java b/samples/server/petstore/jaxrs-spec-interface/src/gen/java/org/openapitools/model/Client.java
index 9703ba67fc95331d18442048bbbf22920606b78d..dd6bb5f2b16f61727bc95e3a71b1b1eb8d6e4925 100644
--- a/samples/server/petstore/jaxrs-spec-interface/src/gen/java/org/openapitools/model/Client.java
+++ b/samples/server/petstore/jaxrs-spec-interface/src/gen/java/org/openapitools/model/Client.java
@@ -18,11 +18,8 @@ public class Client  implements Serializable {
   
   private @Valid String client;
 
-  /**
-   **/
-  public Client client(String client) {
+  public Client(String client) {
     this.client = client;
-    return this;
   }
 
   
@@ -31,11 +28,11 @@ public class Client  implements Serializable {
   public String getClient() {
     return client;
   }
+
   public void setClient(String client) {
     this.client = client;
   }
 
-
   @Override
   public boolean equals(java.lang.Object o) {
     if (this == o) {
@@ -73,5 +70,24 @@ public class Client  implements Serializable {
     }
     return o.toString().replace("\n", "\n    ");
   }
+
+  public static Builder builder() {
+    return new Builder();
+  }
+
+  public static class Builder {
+    private String client;
+
+    /**
+      **/
+    public Builder client(String client) {
+      this.client = client;
+      return this;
+    }
+
+    public Client build() {
+      return new Client(client);
+    }
+  }
 }
 
diff --git a/samples/server/petstore/jaxrs-spec-interface/src/gen/java/org/openapitools/model/Dog.java b/samples/server/petstore/jaxrs-spec-interface/src/gen/java/org/openapitools/model/Dog.java
index 685f46dcdd48419dc751055f897525d61f837e94..cbc66a24537162edb774e234d871d6e417904345 100644
--- a/samples/server/petstore/jaxrs-spec-interface/src/gen/java/org/openapitools/model/Dog.java
+++ b/samples/server/petstore/jaxrs-spec-interface/src/gen/java/org/openapitools/model/Dog.java
@@ -20,11 +20,8 @@ public class Dog extends Animal implements Serializable {
   
   private @Valid String breed;
 
-  /**
-   **/
-  public Dog breed(String breed) {
+  public Dog(String breed) {
     this.breed = breed;
-    return this;
   }
 
   
@@ -33,11 +30,11 @@ public class Dog extends Animal implements Serializable {
   public String getBreed() {
     return breed;
   }
+
   public void setBreed(String breed) {
     this.breed = breed;
   }
 
-
   @Override
   public boolean equals(java.lang.Object o) {
     if (this == o) {
@@ -76,5 +73,24 @@ public class Dog extends Animal implements Serializable {
     }
     return o.toString().replace("\n", "\n    ");
   }
+
+  public static Builder builder() {
+    return new Builder();
+  }
+
+  public static class Builder {
+    private String breed;
+
+    /**
+      **/
+    public Builder breed(String breed) {
+      this.breed = breed;
+      return this;
+    }
+
+    public Dog build() {
+      return new Dog(breed);
+    }
+  }
 }
 
diff --git a/samples/server/petstore/jaxrs-spec-interface/src/gen/java/org/openapitools/model/DogAllOf.java b/samples/server/petstore/jaxrs-spec-interface/src/gen/java/org/openapitools/model/DogAllOf.java
index dfcbfe7e72adaf936d2d06086e04217296164ed7..a689baa6e26375a24f9be0dbb48bbedbb83e9a5f 100644
--- a/samples/server/petstore/jaxrs-spec-interface/src/gen/java/org/openapitools/model/DogAllOf.java
+++ b/samples/server/petstore/jaxrs-spec-interface/src/gen/java/org/openapitools/model/DogAllOf.java
@@ -18,11 +18,8 @@ public class DogAllOf  implements Serializable {
   
   private @Valid String breed;
 
-  /**
-   **/
-  public DogAllOf breed(String breed) {
+  public DogAllOf(String breed) {
     this.breed = breed;
-    return this;
   }
 
   
@@ -31,11 +28,11 @@ public class DogAllOf  implements Serializable {
   public String getBreed() {
     return breed;
   }
+
   public void setBreed(String breed) {
     this.breed = breed;
   }
 
-
   @Override
   public boolean equals(java.lang.Object o) {
     if (this == o) {
@@ -73,5 +70,24 @@ public class DogAllOf  implements Serializable {
     }
     return o.toString().replace("\n", "\n    ");
   }
+
+  public static Builder builder() {
+    return new Builder();
+  }
+
+  public static class Builder {
+    private String breed;
+
+    /**
+      **/
+    public Builder breed(String breed) {
+      this.breed = breed;
+      return this;
+    }
+
+    public DogAllOf build() {
+      return new DogAllOf(breed);
+    }
+  }
 }
 
diff --git a/samples/server/petstore/jaxrs-spec-interface/src/gen/java/org/openapitools/model/EnumArrays.java b/samples/server/petstore/jaxrs-spec-interface/src/gen/java/org/openapitools/model/EnumArrays.java
index 9a422c1c5540dbbab7c23940027f3300d7864efc..006a6471b464231ff93a94eadeccacdcfe304317 100644
--- a/samples/server/petstore/jaxrs-spec-interface/src/gen/java/org/openapitools/model/EnumArrays.java
+++ b/samples/server/petstore/jaxrs-spec-interface/src/gen/java/org/openapitools/model/EnumArrays.java
@@ -87,11 +87,9 @@ public enum ArrayEnumEnum {
 
   private @Valid List<ArrayEnumEnum> arrayEnum = new ArrayList<ArrayEnumEnum>();
 
-  /**
-   **/
-  public EnumArrays justSymbol(JustSymbolEnum justSymbol) {
+  public EnumArrays(JustSymbolEnum justSymbol, List<ArrayEnumEnum> arrayEnum) {
     this.justSymbol = justSymbol;
-    return this;
+    this.arrayEnum = arrayEnum;
   }
 
   
@@ -100,28 +98,20 @@ public enum ArrayEnumEnum {
   public JustSymbolEnum getJustSymbol() {
     return justSymbol;
   }
+
   public void setJustSymbol(JustSymbolEnum justSymbol) {
     this.justSymbol = justSymbol;
   }
-
-  /**
-   **/
-  public EnumArrays arrayEnum(List<ArrayEnumEnum> arrayEnum) {
-    this.arrayEnum = arrayEnum;
-    return this;
-  }
-
-  
   @ApiModelProperty(value = "")
   @JsonProperty("array_enum")
   public List<ArrayEnumEnum> getArrayEnum() {
     return arrayEnum;
   }
+
   public void setArrayEnum(List<ArrayEnumEnum> arrayEnum) {
     this.arrayEnum = arrayEnum;
   }
 
-
   @Override
   public boolean equals(java.lang.Object o) {
     if (this == o) {
@@ -161,5 +151,31 @@ public enum ArrayEnumEnum {
     }
     return o.toString().replace("\n", "\n    ");
   }
+
+  public static Builder builder() {
+    return new Builder();
+  }
+
+  public static class Builder {
+    private JustSymbolEnum justSymbol;
+    private List<ArrayEnumEnum> arrayEnum = new ArrayList<ArrayEnumEnum>();
+
+    /**
+      **/
+    public Builder justSymbol(JustSymbolEnum justSymbol) {
+      this.justSymbol = justSymbol;
+      return this;
+    }
+    /**
+      **/
+    public Builder arrayEnum(List<ArrayEnumEnum> arrayEnum) {
+      this.arrayEnum = arrayEnum;
+      return this;
+    }
+
+    public EnumArrays build() {
+      return new EnumArrays(justSymbol, arrayEnum);
+    }
+  }
 }
 
diff --git a/samples/server/petstore/jaxrs-spec-interface/src/gen/java/org/openapitools/model/EnumTest.java b/samples/server/petstore/jaxrs-spec-interface/src/gen/java/org/openapitools/model/EnumTest.java
index 7dc8942410a062b3e5b2baad652d9b23d7b29a27..91cbf631ecad290ff2746ba5e3f1ef052dbc49f0 100644
--- a/samples/server/petstore/jaxrs-spec-interface/src/gen/java/org/openapitools/model/EnumTest.java
+++ b/samples/server/petstore/jaxrs-spec-interface/src/gen/java/org/openapitools/model/EnumTest.java
@@ -155,11 +155,12 @@ public enum EnumNumberEnum {
   private @Valid EnumNumberEnum enumNumber;
   private @Valid OuterEnum outerEnum;
 
-  /**
-   **/
-  public EnumTest enumString(EnumStringEnum enumString) {
+  public EnumTest(EnumStringEnum enumString, EnumStringRequiredEnum enumStringRequired, EnumIntegerEnum enumInteger, EnumNumberEnum enumNumber, OuterEnum outerEnum) {
     this.enumString = enumString;
-    return this;
+    this.enumStringRequired = enumStringRequired;
+    this.enumInteger = enumInteger;
+    this.enumNumber = enumNumber;
+    this.outerEnum = outerEnum;
   }
 
   
@@ -168,80 +169,48 @@ public enum EnumNumberEnum {
   public EnumStringEnum getEnumString() {
     return enumString;
   }
+
   public void setEnumString(EnumStringEnum enumString) {
     this.enumString = enumString;
   }
-
-  /**
-   **/
-  public EnumTest enumStringRequired(EnumStringRequiredEnum enumStringRequired) {
-    this.enumStringRequired = enumStringRequired;
-    return this;
-  }
-
-  
   @ApiModelProperty(required = true, value = "")
   @JsonProperty("enum_string_required")
   @NotNull
   public EnumStringRequiredEnum getEnumStringRequired() {
     return enumStringRequired;
   }
+
   public void setEnumStringRequired(EnumStringRequiredEnum enumStringRequired) {
     this.enumStringRequired = enumStringRequired;
   }
-
-  /**
-   **/
-  public EnumTest enumInteger(EnumIntegerEnum enumInteger) {
-    this.enumInteger = enumInteger;
-    return this;
-  }
-
-  
   @ApiModelProperty(value = "")
   @JsonProperty("enum_integer")
   public EnumIntegerEnum getEnumInteger() {
     return enumInteger;
   }
+
   public void setEnumInteger(EnumIntegerEnum enumInteger) {
     this.enumInteger = enumInteger;
   }
-
-  /**
-   **/
-  public EnumTest enumNumber(EnumNumberEnum enumNumber) {
-    this.enumNumber = enumNumber;
-    return this;
-  }
-
-  
   @ApiModelProperty(value = "")
   @JsonProperty("enum_number")
   public EnumNumberEnum getEnumNumber() {
     return enumNumber;
   }
+
   public void setEnumNumber(EnumNumberEnum enumNumber) {
     this.enumNumber = enumNumber;
   }
-
-  /**
-   **/
-  public EnumTest outerEnum(OuterEnum outerEnum) {
-    this.outerEnum = outerEnum;
-    return this;
-  }
-
-  
   @ApiModelProperty(value = "")
   @JsonProperty("outerEnum")
   public OuterEnum getOuterEnum() {
     return outerEnum;
   }
+
   public void setOuterEnum(OuterEnum outerEnum) {
     this.outerEnum = outerEnum;
   }
 
-
   @Override
   public boolean equals(java.lang.Object o) {
     if (this == o) {
@@ -287,5 +256,52 @@ public enum EnumNumberEnum {
     }
     return o.toString().replace("\n", "\n    ");
   }
+
+  public static Builder builder() {
+    return new Builder();
+  }
+
+  public static class Builder {
+    private EnumStringEnum enumString;
+    private EnumStringRequiredEnum enumStringRequired;
+    private EnumIntegerEnum enumInteger;
+    private EnumNumberEnum enumNumber;
+    private OuterEnum outerEnum;
+
+    /**
+      **/
+    public Builder enumString(EnumStringEnum enumString) {
+      this.enumString = enumString;
+      return this;
+    }
+    /**
+      **/
+    public Builder enumStringRequired(EnumStringRequiredEnum enumStringRequired) {
+      this.enumStringRequired = enumStringRequired;
+      return this;
+    }
+    /**
+      **/
+    public Builder enumInteger(EnumIntegerEnum enumInteger) {
+      this.enumInteger = enumInteger;
+      return this;
+    }
+    /**
+      **/
+    public Builder enumNumber(EnumNumberEnum enumNumber) {
+      this.enumNumber = enumNumber;
+      return this;
+    }
+    /**
+      **/
+    public Builder outerEnum(OuterEnum outerEnum) {
+      this.outerEnum = outerEnum;
+      return this;
+    }
+
+    public EnumTest build() {
+      return new EnumTest(enumString, enumStringRequired, enumInteger, enumNumber, outerEnum);
+    }
+  }
 }
 
diff --git a/samples/server/petstore/jaxrs-spec-interface/src/gen/java/org/openapitools/model/FileSchemaTestClass.java b/samples/server/petstore/jaxrs-spec-interface/src/gen/java/org/openapitools/model/FileSchemaTestClass.java
index e97c11e0df28b0a1f0720456634491d3e7d45843..ea12ff500d00d9bd0049bfe144610c1e8f2adc18 100644
--- a/samples/server/petstore/jaxrs-spec-interface/src/gen/java/org/openapitools/model/FileSchemaTestClass.java
+++ b/samples/server/petstore/jaxrs-spec-interface/src/gen/java/org/openapitools/model/FileSchemaTestClass.java
@@ -21,11 +21,9 @@ public class FileSchemaTestClass  implements Serializable {
   private @Valid java.io.File file;
   private @Valid List<java.io.File> files = new ArrayList<java.io.File>();
 
-  /**
-   **/
-  public FileSchemaTestClass file(java.io.File file) {
+  public FileSchemaTestClass(java.io.File file, List<java.io.File> files) {
     this.file = file;
-    return this;
+    this.files = files;
   }
 
   
@@ -34,28 +32,20 @@ public class FileSchemaTestClass  implements Serializable {
   public java.io.File getFile() {
     return file;
   }
+
   public void setFile(java.io.File file) {
     this.file = file;
   }
-
-  /**
-   **/
-  public FileSchemaTestClass files(List<java.io.File> files) {
-    this.files = files;
-    return this;
-  }
-
-  
   @ApiModelProperty(value = "")
   @JsonProperty("files")
   public List<java.io.File> getFiles() {
     return files;
   }
+
   public void setFiles(List<java.io.File> files) {
     this.files = files;
   }
 
-
   @Override
   public boolean equals(java.lang.Object o) {
     if (this == o) {
@@ -95,5 +85,31 @@ public class FileSchemaTestClass  implements Serializable {
     }
     return o.toString().replace("\n", "\n    ");
   }
+
+  public static Builder builder() {
+    return new Builder();
+  }
+
+  public static class Builder {
+    private java.io.File file;
+    private List<java.io.File> files = new ArrayList<java.io.File>();
+
+    /**
+      **/
+    public Builder file(java.io.File file) {
+      this.file = file;
+      return this;
+    }
+    /**
+      **/
+    public Builder files(List<java.io.File> files) {
+      this.files = files;
+      return this;
+    }
+
+    public FileSchemaTestClass build() {
+      return new FileSchemaTestClass(file, files);
+    }
+  }
 }
 
diff --git a/samples/server/petstore/jaxrs-spec-interface/src/gen/java/org/openapitools/model/FormatTest.java b/samples/server/petstore/jaxrs-spec-interface/src/gen/java/org/openapitools/model/FormatTest.java
index 7132d9908d61700f5c98c412630585d01e73d675..e8dc0317e1a117a04e462b9765f3b5e79979a512 100644
--- a/samples/server/petstore/jaxrs-spec-interface/src/gen/java/org/openapitools/model/FormatTest.java
+++ b/samples/server/petstore/jaxrs-spec-interface/src/gen/java/org/openapitools/model/FormatTest.java
@@ -36,13 +36,21 @@ public class FormatTest  implements Serializable {
   private @Valid String password;
   private @Valid BigDecimal bigDecimal;
 
-  /**
-   * minimum: 10
-   * maximum: 100
-   **/
-  public FormatTest integer(Integer integer) {
+  public FormatTest(Integer integer, Integer int32, Long int64, BigDecimal number, Float _float, Double _double, String string, byte[] _byte, File binary, LocalDate date, Date dateTime, UUID uuid, String password, BigDecimal bigDecimal) {
     this.integer = integer;
-    return this;
+    this.int32 = int32;
+    this.int64 = int64;
+    this.number = number;
+    this._float = _float;
+    this._double = _double;
+    this.string = string;
+    this._byte = _byte;
+    this.binary = binary;
+    this.date = date;
+    this.dateTime = dateTime;
+    this.uuid = uuid;
+    this.password = password;
+    this.bigDecimal = bigDecimal;
   }
 
   
@@ -51,244 +59,132 @@ public class FormatTest  implements Serializable {
  @Min(10) @Max(100)  public Integer getInteger() {
     return integer;
   }
+
   public void setInteger(Integer integer) {
     this.integer = integer;
   }
-
-  /**
-   * minimum: 20
-   * maximum: 200
-   **/
-  public FormatTest int32(Integer int32) {
-    this.int32 = int32;
-    return this;
-  }
-
-  
   @ApiModelProperty(value = "")
   @JsonProperty("int32")
  @Min(20) @Max(200)  public Integer getInt32() {
     return int32;
   }
+
   public void setInt32(Integer int32) {
     this.int32 = int32;
   }
-
-  /**
-   **/
-  public FormatTest int64(Long int64) {
-    this.int64 = int64;
-    return this;
-  }
-
-  
   @ApiModelProperty(value = "")
   @JsonProperty("int64")
   public Long getInt64() {
     return int64;
   }
+
   public void setInt64(Long int64) {
     this.int64 = int64;
   }
-
-  /**
-   * minimum: 32.1
-   * maximum: 543.2
-   **/
-  public FormatTest number(BigDecimal number) {
-    this.number = number;
-    return this;
-  }
-
-  
   @ApiModelProperty(required = true, value = "")
   @JsonProperty("number")
   @NotNull
  @DecimalMin("32.1") @DecimalMax("543.2")  public BigDecimal getNumber() {
     return number;
   }
+
   public void setNumber(BigDecimal number) {
     this.number = number;
   }
-
-  /**
-   * minimum: 54.3
-   * maximum: 987.6
-   **/
-  public FormatTest _float(Float _float) {
-    this._float = _float;
-    return this;
-  }
-
-  
   @ApiModelProperty(value = "")
   @JsonProperty("float")
  @DecimalMin("54.3") @DecimalMax("987.6")  public Float getFloat() {
     return _float;
   }
+
   public void setFloat(Float _float) {
     this._float = _float;
   }
-
-  /**
-   * minimum: 67.8
-   * maximum: 123.4
-   **/
-  public FormatTest _double(Double _double) {
-    this._double = _double;
-    return this;
-  }
-
-  
   @ApiModelProperty(value = "")
   @JsonProperty("double")
  @DecimalMin("67.8") @DecimalMax("123.4")  public Double getDouble() {
     return _double;
   }
+
   public void setDouble(Double _double) {
     this._double = _double;
   }
-
-  /**
-   **/
-  public FormatTest string(String string) {
-    this.string = string;
-    return this;
-  }
-
-  
   @ApiModelProperty(value = "")
   @JsonProperty("string")
  @Pattern(regexp="/[a-z]/i")  public String getString() {
     return string;
   }
+
   public void setString(String string) {
     this.string = string;
   }
-
-  /**
-   **/
-  public FormatTest _byte(byte[] _byte) {
-    this._byte = _byte;
-    return this;
-  }
-
-  
   @ApiModelProperty(required = true, value = "")
   @JsonProperty("byte")
   @NotNull
  @Pattern(regexp="^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$")  public byte[] getByte() {
     return _byte;
   }
+
   public void setByte(byte[] _byte) {
     this._byte = _byte;
   }
-
-  /**
-   **/
-  public FormatTest binary(File binary) {
-    this.binary = binary;
-    return this;
-  }
-
-  
   @ApiModelProperty(value = "")
   @JsonProperty("binary")
   public File getBinary() {
     return binary;
   }
+
   public void setBinary(File binary) {
     this.binary = binary;
   }
-
-  /**
-   **/
-  public FormatTest date(LocalDate date) {
-    this.date = date;
-    return this;
-  }
-
-  
   @ApiModelProperty(required = true, value = "")
   @JsonProperty("date")
   @NotNull
   public LocalDate getDate() {
     return date;
   }
+
   public void setDate(LocalDate date) {
     this.date = date;
   }
-
-  /**
-   **/
-  public FormatTest dateTime(Date dateTime) {
-    this.dateTime = dateTime;
-    return this;
-  }
-
-  
   @ApiModelProperty(value = "")
   @JsonProperty("dateTime")
   public Date getDateTime() {
     return dateTime;
   }
+
   public void setDateTime(Date dateTime) {
     this.dateTime = dateTime;
   }
-
-  /**
-   **/
-  public FormatTest uuid(UUID uuid) {
-    this.uuid = uuid;
-    return this;
-  }
-
-  
   @ApiModelProperty(example = "72f98069-206d-4f12-9f12-3d1e525a8e84", value = "")
   @JsonProperty("uuid")
   public UUID getUuid() {
     return uuid;
   }
+
   public void setUuid(UUID uuid) {
     this.uuid = uuid;
   }
-
-  /**
-   **/
-  public FormatTest password(String password) {
-    this.password = password;
-    return this;
-  }
-
-  
   @ApiModelProperty(required = true, value = "")
   @JsonProperty("password")
   @NotNull
  @Size(min=10,max=64)  public String getPassword() {
     return password;
   }
+
   public void setPassword(String password) {
     this.password = password;
   }
-
-  /**
-   **/
-  public FormatTest bigDecimal(BigDecimal bigDecimal) {
-    this.bigDecimal = bigDecimal;
-    return this;
-  }
-
-  
   @ApiModelProperty(value = "")
   @JsonProperty("BigDecimal")
   public BigDecimal getBigDecimal() {
     return bigDecimal;
   }
+
   public void setBigDecimal(BigDecimal bigDecimal) {
     this.bigDecimal = bigDecimal;
   }
 
-
   @Override
   public boolean equals(java.lang.Object o) {
     if (this == o) {
@@ -352,5 +248,125 @@ public class FormatTest  implements Serializable {
     }
     return o.toString().replace("\n", "\n    ");
   }
+
+  public static Builder builder() {
+    return new Builder();
+  }
+
+  public static class Builder {
+    private Integer integer;
+    private Integer int32;
+    private Long int64;
+    private BigDecimal number;
+    private Float _float;
+    private Double _double;
+    private String string;
+    private byte[] _byte;
+    private File binary;
+    private LocalDate date;
+    private Date dateTime;
+    private UUID uuid;
+    private String password;
+    private BigDecimal bigDecimal;
+
+    /**
+      * minimum: 10
+      * maximum: 100
+      **/
+    public Builder integer(Integer integer) {
+      this.integer = integer;
+      return this;
+    }
+    /**
+      * minimum: 20
+      * maximum: 200
+      **/
+    public Builder int32(Integer int32) {
+      this.int32 = int32;
+      return this;
+    }
+    /**
+      **/
+    public Builder int64(Long int64) {
+      this.int64 = int64;
+      return this;
+    }
+    /**
+      * minimum: 32.1
+      * maximum: 543.2
+      **/
+    public Builder number(BigDecimal number) {
+      this.number = number;
+      return this;
+    }
+    /**
+      * minimum: 54.3
+      * maximum: 987.6
+      **/
+    public Builder _float(Float _float) {
+      this._float = _float;
+      return this;
+    }
+    /**
+      * minimum: 67.8
+      * maximum: 123.4
+      **/
+    public Builder _double(Double _double) {
+      this._double = _double;
+      return this;
+    }
+    /**
+      **/
+    public Builder string(String string) {
+      this.string = string;
+      return this;
+    }
+    /**
+      **/
+    public Builder _byte(byte[] _byte) {
+      this._byte = _byte;
+      return this;
+    }
+    /**
+      **/
+    public Builder binary(File binary) {
+      this.binary = binary;
+      return this;
+    }
+    /**
+      **/
+    public Builder date(LocalDate date) {
+      this.date = date;
+      return this;
+    }
+    /**
+      **/
+    public Builder dateTime(Date dateTime) {
+      this.dateTime = dateTime;
+      return this;
+    }
+    /**
+      **/
+    public Builder uuid(UUID uuid) {
+      this.uuid = uuid;
+      return this;
+    }
+    /**
+      **/
+    public Builder password(String password) {
+      this.password = password;
+      return this;
+    }
+    /**
+      **/
+    public Builder bigDecimal(BigDecimal bigDecimal) {
+      this.bigDecimal = bigDecimal;
+      return this;
+    }
+
+    public FormatTest build() {
+      return new FormatTest(integer, int32, int64, number, _float, _double, string, _byte, binary, date, dateTime, uuid, password, bigDecimal);
+    }
+  }
 }
 
diff --git a/samples/server/petstore/jaxrs-spec-interface/src/gen/java/org/openapitools/model/HasOnlyReadOnly.java b/samples/server/petstore/jaxrs-spec-interface/src/gen/java/org/openapitools/model/HasOnlyReadOnly.java
index 76898a7831bc11d27d76754ba7eb375f85b5abda..fde65bcb888fbfb8d21cd17c2caaa4d69e072364 100644
--- a/samples/server/petstore/jaxrs-spec-interface/src/gen/java/org/openapitools/model/HasOnlyReadOnly.java
+++ b/samples/server/petstore/jaxrs-spec-interface/src/gen/java/org/openapitools/model/HasOnlyReadOnly.java
@@ -19,11 +19,9 @@ public class HasOnlyReadOnly  implements Serializable {
   private @Valid String bar;
   private @Valid String foo;
 
-  /**
-   **/
-  public HasOnlyReadOnly bar(String bar) {
+  public HasOnlyReadOnly(String bar, String foo) {
     this.bar = bar;
-    return this;
+    this.foo = foo;
   }
 
   
@@ -32,28 +30,20 @@ public class HasOnlyReadOnly  implements Serializable {
   public String getBar() {
     return bar;
   }
+
   public void setBar(String bar) {
     this.bar = bar;
   }
-
-  /**
-   **/
-  public HasOnlyReadOnly foo(String foo) {
-    this.foo = foo;
-    return this;
-  }
-
-  
   @ApiModelProperty(value = "")
   @JsonProperty("foo")
   public String getFoo() {
     return foo;
   }
+
   public void setFoo(String foo) {
     this.foo = foo;
   }
 
-
   @Override
   public boolean equals(java.lang.Object o) {
     if (this == o) {
@@ -93,5 +83,31 @@ public class HasOnlyReadOnly  implements Serializable {
     }
     return o.toString().replace("\n", "\n    ");
   }
+
+  public static Builder builder() {
+    return new Builder();
+  }
+
+  public static class Builder {
+    private String bar;
+    private String foo;
+
+    /**
+      **/
+    public Builder bar(String bar) {
+      this.bar = bar;
+      return this;
+    }
+    /**
+      **/
+    public Builder foo(String foo) {
+      this.foo = foo;
+      return this;
+    }
+
+    public HasOnlyReadOnly build() {
+      return new HasOnlyReadOnly(bar, foo);
+    }
+  }
 }
 
diff --git a/samples/server/petstore/jaxrs-spec-interface/src/gen/java/org/openapitools/model/MapTest.java b/samples/server/petstore/jaxrs-spec-interface/src/gen/java/org/openapitools/model/MapTest.java
index 059f500d097f4c36b8e90d08066dd3ae547f975f..ec60b349d3c1ad4b23b168035518670cfd0eb415 100644
--- a/samples/server/petstore/jaxrs-spec-interface/src/gen/java/org/openapitools/model/MapTest.java
+++ b/samples/server/petstore/jaxrs-spec-interface/src/gen/java/org/openapitools/model/MapTest.java
@@ -57,11 +57,11 @@ public enum InnerEnum {
   private @Valid Map<String, Boolean> directMap = new HashMap<String, Boolean>();
   private @Valid Map<String, Boolean> indirectMap = new HashMap<String, Boolean>();
 
-  /**
-   **/
-  public MapTest mapMapOfString(Map<String, Map<String, String>> mapMapOfString) {
+  public MapTest(Map<String, Map<String, String>> mapMapOfString, Map<String, InnerEnum> mapOfEnumString, Map<String, Boolean> directMap, Map<String, Boolean> indirectMap) {
     this.mapMapOfString = mapMapOfString;
-    return this;
+    this.mapOfEnumString = mapOfEnumString;
+    this.directMap = directMap;
+    this.indirectMap = indirectMap;
   }
 
   
@@ -70,62 +70,38 @@ public enum InnerEnum {
   public Map<String, Map<String, String>> getMapMapOfString() {
     return mapMapOfString;
   }
+
   public void setMapMapOfString(Map<String, Map<String, String>> mapMapOfString) {
     this.mapMapOfString = mapMapOfString;
   }
-
-  /**
-   **/
-  public MapTest mapOfEnumString(Map<String, InnerEnum> mapOfEnumString) {
-    this.mapOfEnumString = mapOfEnumString;
-    return this;
-  }
-
-  
   @ApiModelProperty(value = "")
   @JsonProperty("map_of_enum_string")
   public Map<String, InnerEnum> getMapOfEnumString() {
     return mapOfEnumString;
   }
+
   public void setMapOfEnumString(Map<String, InnerEnum> mapOfEnumString) {
     this.mapOfEnumString = mapOfEnumString;
   }
-
-  /**
-   **/
-  public MapTest directMap(Map<String, Boolean> directMap) {
-    this.directMap = directMap;
-    return this;
-  }
-
-  
   @ApiModelProperty(value = "")
   @JsonProperty("direct_map")
   public Map<String, Boolean> getDirectMap() {
     return directMap;
   }
+
   public void setDirectMap(Map<String, Boolean> directMap) {
     this.directMap = directMap;
   }
-
-  /**
-   **/
-  public MapTest indirectMap(Map<String, Boolean> indirectMap) {
-    this.indirectMap = indirectMap;
-    return this;
-  }
-
-  
   @ApiModelProperty(value = "")
   @JsonProperty("indirect_map")
   public Map<String, Boolean> getIndirectMap() {
     return indirectMap;
   }
+
   public void setIndirectMap(Map<String, Boolean> indirectMap) {
     this.indirectMap = indirectMap;
   }
 
-
   @Override
   public boolean equals(java.lang.Object o) {
     if (this == o) {
@@ -169,5 +145,45 @@ public enum InnerEnum {
     }
     return o.toString().replace("\n", "\n    ");
   }
+
+  public static Builder builder() {
+    return new Builder();
+  }
+
+  public static class Builder {
+    private Map<String, Map<String, String>> mapMapOfString = new HashMap<String, Map<String, String>>();
+    private Map<String, InnerEnum> mapOfEnumString = new HashMap<String, InnerEnum>();
+    private Map<String, Boolean> directMap = new HashMap<String, Boolean>();
+    private Map<String, Boolean> indirectMap = new HashMap<String, Boolean>();
+
+    /**
+      **/
+    public Builder mapMapOfString(Map<String, Map<String, String>> mapMapOfString) {
+      this.mapMapOfString = mapMapOfString;
+      return this;
+    }
+    /**
+      **/
+    public Builder mapOfEnumString(Map<String, InnerEnum> mapOfEnumString) {
+      this.mapOfEnumString = mapOfEnumString;
+      return this;
+    }
+    /**
+      **/
+    public Builder directMap(Map<String, Boolean> directMap) {
+      this.directMap = directMap;
+      return this;
+    }
+    /**
+      **/
+    public Builder indirectMap(Map<String, Boolean> indirectMap) {
+      this.indirectMap = indirectMap;
+      return this;
+    }
+
+    public MapTest build() {
+      return new MapTest(mapMapOfString, mapOfEnumString, directMap, indirectMap);
+    }
+  }
 }
 
diff --git a/samples/server/petstore/jaxrs-spec-interface/src/gen/java/org/openapitools/model/MixedPropertiesAndAdditionalPropertiesClass.java b/samples/server/petstore/jaxrs-spec-interface/src/gen/java/org/openapitools/model/MixedPropertiesAndAdditionalPropertiesClass.java
index 8467e42ead182ae18740912deaf90b97e5f20bf3..bd06524aec780a7aab85db2726de6334db10258a 100644
--- a/samples/server/petstore/jaxrs-spec-interface/src/gen/java/org/openapitools/model/MixedPropertiesAndAdditionalPropertiesClass.java
+++ b/samples/server/petstore/jaxrs-spec-interface/src/gen/java/org/openapitools/model/MixedPropertiesAndAdditionalPropertiesClass.java
@@ -26,11 +26,10 @@ public class MixedPropertiesAndAdditionalPropertiesClass  implements Serializabl
   private @Valid Date dateTime;
   private @Valid Map<String, Animal> map = new HashMap<String, Animal>();
 
-  /**
-   **/
-  public MixedPropertiesAndAdditionalPropertiesClass uuid(UUID uuid) {
+  public MixedPropertiesAndAdditionalPropertiesClass(UUID uuid, Date dateTime, Map<String, Animal> map) {
     this.uuid = uuid;
-    return this;
+    this.dateTime = dateTime;
+    this.map = map;
   }
 
   
@@ -39,45 +38,29 @@ public class MixedPropertiesAndAdditionalPropertiesClass  implements Serializabl
   public UUID getUuid() {
     return uuid;
   }
+
   public void setUuid(UUID uuid) {
     this.uuid = uuid;
   }
-
-  /**
-   **/
-  public MixedPropertiesAndAdditionalPropertiesClass dateTime(Date dateTime) {
-    this.dateTime = dateTime;
-    return this;
-  }
-
-  
   @ApiModelProperty(value = "")
   @JsonProperty("dateTime")
   public Date getDateTime() {
     return dateTime;
   }
+
   public void setDateTime(Date dateTime) {
     this.dateTime = dateTime;
   }
-
-  /**
-   **/
-  public MixedPropertiesAndAdditionalPropertiesClass map(Map<String, Animal> map) {
-    this.map = map;
-    return this;
-  }
-
-  
   @ApiModelProperty(value = "")
   @JsonProperty("map")
   public Map<String, Animal> getMap() {
     return map;
   }
+
   public void setMap(Map<String, Animal> map) {
     this.map = map;
   }
 
-
   @Override
   public boolean equals(java.lang.Object o) {
     if (this == o) {
@@ -119,5 +102,38 @@ public class MixedPropertiesAndAdditionalPropertiesClass  implements Serializabl
     }
     return o.toString().replace("\n", "\n    ");
   }
+
+  public static Builder builder() {
+    return new Builder();
+  }
+
+  public static class Builder {
+    private UUID uuid;
+    private Date dateTime;
+    private Map<String, Animal> map = new HashMap<String, Animal>();
+
+    /**
+      **/
+    public Builder uuid(UUID uuid) {
+      this.uuid = uuid;
+      return this;
+    }
+    /**
+      **/
+    public Builder dateTime(Date dateTime) {
+      this.dateTime = dateTime;
+      return this;
+    }
+    /**
+      **/
+    public Builder map(Map<String, Animal> map) {
+      this.map = map;
+      return this;
+    }
+
+    public MixedPropertiesAndAdditionalPropertiesClass build() {
+      return new MixedPropertiesAndAdditionalPropertiesClass(uuid, dateTime, map);
+    }
+  }
 }
 
diff --git a/samples/server/petstore/jaxrs-spec-interface/src/gen/java/org/openapitools/model/Model200Response.java b/samples/server/petstore/jaxrs-spec-interface/src/gen/java/org/openapitools/model/Model200Response.java
index d330491d413e46b6aee07db930d892d7b45d7280..1a0643d8cc621f5921a6c8dbae80f388ecf5b689 100644
--- a/samples/server/petstore/jaxrs-spec-interface/src/gen/java/org/openapitools/model/Model200Response.java
+++ b/samples/server/petstore/jaxrs-spec-interface/src/gen/java/org/openapitools/model/Model200Response.java
@@ -12,7 +12,6 @@ import com.fasterxml.jackson.annotation.JsonProperty;
 import com.fasterxml.jackson.annotation.JsonCreator;
 import com.fasterxml.jackson.annotation.JsonValue;
 
-
 /**
  * Model for testing model name starting with number
  **/
@@ -22,11 +21,9 @@ public class Model200Response  implements Serializable {
   private @Valid Integer name;
   private @Valid String propertyClass;
 
-  /**
-   **/
-  public Model200Response name(Integer name) {
+  public Model200Response(Integer name, String propertyClass) {
     this.name = name;
-    return this;
+    this.propertyClass = propertyClass;
   }
 
   
@@ -35,28 +32,20 @@ public class Model200Response  implements Serializable {
   public Integer getName() {
     return name;
   }
+
   public void setName(Integer name) {
     this.name = name;
   }
-
-  /**
-   **/
-  public Model200Response propertyClass(String propertyClass) {
-    this.propertyClass = propertyClass;
-    return this;
-  }
-
-  
   @ApiModelProperty(value = "")
   @JsonProperty("class")
   public String getPropertyClass() {
     return propertyClass;
   }
+
   public void setPropertyClass(String propertyClass) {
     this.propertyClass = propertyClass;
   }
 
-
   @Override
   public boolean equals(java.lang.Object o) {
     if (this == o) {
@@ -96,5 +85,31 @@ public class Model200Response  implements Serializable {
     }
     return o.toString().replace("\n", "\n    ");
   }
+
+  public static Builder builder() {
+    return new Builder();
+  }
+
+  public static class Builder {
+    private Integer name;
+    private String propertyClass;
+
+    /**
+      **/
+    public Builder name(Integer name) {
+      this.name = name;
+      return this;
+    }
+    /**
+      **/
+    public Builder propertyClass(String propertyClass) {
+      this.propertyClass = propertyClass;
+      return this;
+    }
+
+    public Model200Response build() {
+      return new Model200Response(name, propertyClass);
+    }
+  }
 }
 
diff --git a/samples/server/petstore/jaxrs-spec-interface/src/gen/java/org/openapitools/model/ModelApiResponse.java b/samples/server/petstore/jaxrs-spec-interface/src/gen/java/org/openapitools/model/ModelApiResponse.java
index 3aeaa2e80a8340ff92cb99f356aaf1dd7360e1b6..d6efe5a4a7c5d614ddd915bcb8c6d11f4518a0a3 100644
--- a/samples/server/petstore/jaxrs-spec-interface/src/gen/java/org/openapitools/model/ModelApiResponse.java
+++ b/samples/server/petstore/jaxrs-spec-interface/src/gen/java/org/openapitools/model/ModelApiResponse.java
@@ -20,11 +20,10 @@ public class ModelApiResponse  implements Serializable {
   private @Valid String type;
   private @Valid String message;
 
-  /**
-   **/
-  public ModelApiResponse code(Integer code) {
+  public ModelApiResponse(Integer code, String type, String message) {
     this.code = code;
-    return this;
+    this.type = type;
+    this.message = message;
   }
 
   
@@ -33,45 +32,29 @@ public class ModelApiResponse  implements Serializable {
   public Integer getCode() {
     return code;
   }
+
   public void setCode(Integer code) {
     this.code = code;
   }
-
-  /**
-   **/
-  public ModelApiResponse type(String type) {
-    this.type = type;
-    return this;
-  }
-
-  
   @ApiModelProperty(value = "")
   @JsonProperty("type")
   public String getType() {
     return type;
   }
+
   public void setType(String type) {
     this.type = type;
   }
-
-  /**
-   **/
-  public ModelApiResponse message(String message) {
-    this.message = message;
-    return this;
-  }
-
-  
   @ApiModelProperty(value = "")
   @JsonProperty("message")
   public String getMessage() {
     return message;
   }
+
   public void setMessage(String message) {
     this.message = message;
   }
 
-
   @Override
   public boolean equals(java.lang.Object o) {
     if (this == o) {
@@ -113,5 +96,38 @@ public class ModelApiResponse  implements Serializable {
     }
     return o.toString().replace("\n", "\n    ");
   }
+
+  public static Builder builder() {
+    return new Builder();
+  }
+
+  public static class Builder {
+    private Integer code;
+    private String type;
+    private String message;
+
+    /**
+      **/
+    public Builder code(Integer code) {
+      this.code = code;
+      return this;
+    }
+    /**
+      **/
+    public Builder type(String type) {
+      this.type = type;
+      return this;
+    }
+    /**
+      **/
+    public Builder message(String message) {
+      this.message = message;
+      return this;
+    }
+
+    public ModelApiResponse build() {
+      return new ModelApiResponse(code, type, message);
+    }
+  }
 }
 
diff --git a/samples/server/petstore/jaxrs-spec-interface/src/gen/java/org/openapitools/model/ModelReturn.java b/samples/server/petstore/jaxrs-spec-interface/src/gen/java/org/openapitools/model/ModelReturn.java
index b8ccb56ccd5d8a33cadb613f49a81555713bb32f..65e82e1c28888c3b85640b529f63d9647fa1dfd0 100644
--- a/samples/server/petstore/jaxrs-spec-interface/src/gen/java/org/openapitools/model/ModelReturn.java
+++ b/samples/server/petstore/jaxrs-spec-interface/src/gen/java/org/openapitools/model/ModelReturn.java
@@ -12,7 +12,6 @@ import com.fasterxml.jackson.annotation.JsonProperty;
 import com.fasterxml.jackson.annotation.JsonCreator;
 import com.fasterxml.jackson.annotation.JsonValue;
 
-
 /**
  * Model for testing reserved words
  **/
@@ -21,11 +20,8 @@ public class ModelReturn  implements Serializable {
   
   private @Valid Integer _return;
 
-  /**
-   **/
-  public ModelReturn _return(Integer _return) {
+  public ModelReturn(Integer _return) {
     this._return = _return;
-    return this;
   }
 
   
@@ -34,11 +30,11 @@ public class ModelReturn  implements Serializable {
   public Integer getReturn() {
     return _return;
   }
+
   public void setReturn(Integer _return) {
     this._return = _return;
   }
 
-
   @Override
   public boolean equals(java.lang.Object o) {
     if (this == o) {
@@ -76,5 +72,24 @@ public class ModelReturn  implements Serializable {
     }
     return o.toString().replace("\n", "\n    ");
   }
+
+  public static Builder builder() {
+    return new Builder();
+  }
+
+  public static class Builder {
+    private Integer _return;
+
+    /**
+      **/
+    public Builder _return(Integer _return) {
+      this._return = _return;
+      return this;
+    }
+
+    public ModelReturn build() {
+      return new ModelReturn(_return);
+    }
+  }
 }
 
diff --git a/samples/server/petstore/jaxrs-spec-interface/src/gen/java/org/openapitools/model/Name.java b/samples/server/petstore/jaxrs-spec-interface/src/gen/java/org/openapitools/model/Name.java
index 30f2f65ac65ee75dce3dc8838c7dd0c81c2893d1..f7713bf25d9e0fe86bcf1789c4a61b4f8169c821 100644
--- a/samples/server/petstore/jaxrs-spec-interface/src/gen/java/org/openapitools/model/Name.java
+++ b/samples/server/petstore/jaxrs-spec-interface/src/gen/java/org/openapitools/model/Name.java
@@ -12,7 +12,6 @@ import com.fasterxml.jackson.annotation.JsonProperty;
 import com.fasterxml.jackson.annotation.JsonCreator;
 import com.fasterxml.jackson.annotation.JsonValue;
 
-
 /**
  * Model for testing model name same as property name
  **/
@@ -24,11 +23,11 @@ public class Name  implements Serializable {
   private @Valid String property;
   private @Valid Integer _123number;
 
-  /**
-   **/
-  public Name name(Integer name) {
+  public Name(Integer name, Integer snakeCase, String property, Integer _123number) {
     this.name = name;
-    return this;
+    this.snakeCase = snakeCase;
+    this.property = property;
+    this._123number = _123number;
   }
 
   
@@ -38,62 +37,38 @@ public class Name  implements Serializable {
   public Integer getName() {
     return name;
   }
+
   public void setName(Integer name) {
     this.name = name;
   }
-
-  /**
-   **/
-  public Name snakeCase(Integer snakeCase) {
-    this.snakeCase = snakeCase;
-    return this;
-  }
-
-  
   @ApiModelProperty(value = "")
   @JsonProperty("snake_case")
   public Integer getSnakeCase() {
     return snakeCase;
   }
+
   public void setSnakeCase(Integer snakeCase) {
     this.snakeCase = snakeCase;
   }
-
-  /**
-   **/
-  public Name property(String property) {
-    this.property = property;
-    return this;
-  }
-
-  
   @ApiModelProperty(value = "")
   @JsonProperty("property")
   public String getProperty() {
     return property;
   }
+
   public void setProperty(String property) {
     this.property = property;
   }
-
-  /**
-   **/
-  public Name _123number(Integer _123number) {
-    this._123number = _123number;
-    return this;
-  }
-
-  
   @ApiModelProperty(value = "")
   @JsonProperty("123Number")
   public Integer get123number() {
     return _123number;
   }
+
   public void set123number(Integer _123number) {
     this._123number = _123number;
   }
 
-
   @Override
   public boolean equals(java.lang.Object o) {
     if (this == o) {
@@ -137,5 +112,45 @@ public class Name  implements Serializable {
     }
     return o.toString().replace("\n", "\n    ");
   }
+
+  public static Builder builder() {
+    return new Builder();
+  }
+
+  public static class Builder {
+    private Integer name;
+    private Integer snakeCase;
+    private String property;
+    private Integer _123number;
+
+    /**
+      **/
+    public Builder name(Integer name) {
+      this.name = name;
+      return this;
+    }
+    /**
+      **/
+    public Builder snakeCase(Integer snakeCase) {
+      this.snakeCase = snakeCase;
+      return this;
+    }
+    /**
+      **/
+    public Builder property(String property) {
+      this.property = property;
+      return this;
+    }
+    /**
+      **/
+    public Builder _123number(Integer _123number) {
+      this._123number = _123number;
+      return this;
+    }
+
+    public Name build() {
+      return new Name(name, snakeCase, property, _123number);
+    }
+  }
 }
 
diff --git a/samples/server/petstore/jaxrs-spec-interface/src/gen/java/org/openapitools/model/NumberOnly.java b/samples/server/petstore/jaxrs-spec-interface/src/gen/java/org/openapitools/model/NumberOnly.java
index b5ae07a3dfb02ea31af0be43aef91c2e2eda3a05..f4ac4b1bc52d5e13218d4117568f892b9b452ebd 100644
--- a/samples/server/petstore/jaxrs-spec-interface/src/gen/java/org/openapitools/model/NumberOnly.java
+++ b/samples/server/petstore/jaxrs-spec-interface/src/gen/java/org/openapitools/model/NumberOnly.java
@@ -19,11 +19,8 @@ public class NumberOnly  implements Serializable {
   
   private @Valid BigDecimal justNumber;
 
-  /**
-   **/
-  public NumberOnly justNumber(BigDecimal justNumber) {
+  public NumberOnly(BigDecimal justNumber) {
     this.justNumber = justNumber;
-    return this;
   }
 
   
@@ -32,11 +29,11 @@ public class NumberOnly  implements Serializable {
   public BigDecimal getJustNumber() {
     return justNumber;
   }
+
   public void setJustNumber(BigDecimal justNumber) {
     this.justNumber = justNumber;
   }
 
-
   @Override
   public boolean equals(java.lang.Object o) {
     if (this == o) {
@@ -74,5 +71,24 @@ public class NumberOnly  implements Serializable {
     }
     return o.toString().replace("\n", "\n    ");
   }
+
+  public static Builder builder() {
+    return new Builder();
+  }
+
+  public static class Builder {
+    private BigDecimal justNumber;
+
+    /**
+      **/
+    public Builder justNumber(BigDecimal justNumber) {
+      this.justNumber = justNumber;
+      return this;
+    }
+
+    public NumberOnly build() {
+      return new NumberOnly(justNumber);
+    }
+  }
 }
 
diff --git a/samples/server/petstore/jaxrs-spec-interface/src/gen/java/org/openapitools/model/Order.java b/samples/server/petstore/jaxrs-spec-interface/src/gen/java/org/openapitools/model/Order.java
index 4c88bb4d6ad65b0a2d4ff9c496fda2f3083f3776..4eb5d9871b14459a50135a4de44c7fa04c0ea0cc 100644
--- a/samples/server/petstore/jaxrs-spec-interface/src/gen/java/org/openapitools/model/Order.java
+++ b/samples/server/petstore/jaxrs-spec-interface/src/gen/java/org/openapitools/model/Order.java
@@ -57,11 +57,13 @@ public enum StatusEnum {
   private @Valid StatusEnum status;
   private @Valid Boolean complete = false;
 
-  /**
-   **/
-  public Order id(Long id) {
+  public Order(Long id, Long petId, Integer quantity, Date shipDate, StatusEnum status, Boolean complete) {
     this.id = id;
-    return this;
+    this.petId = petId;
+    this.quantity = quantity;
+    this.shipDate = shipDate;
+    this.status = status;
+    this.complete = complete;
   }
 
   
@@ -70,97 +72,56 @@ public enum StatusEnum {
   public Long getId() {
     return id;
   }
+
   public void setId(Long id) {
     this.id = id;
   }
-
-  /**
-   **/
-  public Order petId(Long petId) {
-    this.petId = petId;
-    return this;
-  }
-
-  
   @ApiModelProperty(value = "")
   @JsonProperty("petId")
   public Long getPetId() {
     return petId;
   }
+
   public void setPetId(Long petId) {
     this.petId = petId;
   }
-
-  /**
-   **/
-  public Order quantity(Integer quantity) {
-    this.quantity = quantity;
-    return this;
-  }
-
-  
   @ApiModelProperty(value = "")
   @JsonProperty("quantity")
   public Integer getQuantity() {
     return quantity;
   }
+
   public void setQuantity(Integer quantity) {
     this.quantity = quantity;
   }
-
-  /**
-   **/
-  public Order shipDate(Date shipDate) {
-    this.shipDate = shipDate;
-    return this;
-  }
-
-  
   @ApiModelProperty(value = "")
   @JsonProperty("shipDate")
   public Date getShipDate() {
     return shipDate;
   }
+
   public void setShipDate(Date shipDate) {
     this.shipDate = shipDate;
   }
-
-  /**
-   * Order Status
-   **/
-  public Order status(StatusEnum status) {
-    this.status = status;
-    return this;
-  }
-
-  
   @ApiModelProperty(value = "Order Status")
   @JsonProperty("status")
   public StatusEnum getStatus() {
     return status;
   }
+
   public void setStatus(StatusEnum status) {
     this.status = status;
   }
-
-  /**
-   **/
-  public Order complete(Boolean complete) {
-    this.complete = complete;
-    return this;
-  }
-
-  
   @ApiModelProperty(value = "")
   @JsonProperty("complete")
   public Boolean getComplete() {
     return complete;
   }
+
   public void setComplete(Boolean complete) {
     this.complete = complete;
   }
 
-
   @Override
   public boolean equals(java.lang.Object o) {
     if (this == o) {
@@ -208,5 +169,60 @@ public enum StatusEnum {
     }
     return o.toString().replace("\n", "\n    ");
   }
+
+  public static Builder builder() {
+    return new Builder();
+  }
+
+  public static class Builder {
+    private Long id;
+    private Long petId;
+    private Integer quantity;
+    private Date shipDate;
+    private StatusEnum status;
+    private Boolean complete = false;
+
+    /**
+      **/
+    public Builder id(Long id) {
+      this.id = id;
+      return this;
+    }
+    /**
+      **/
+    public Builder petId(Long petId) {
+      this.petId = petId;
+      return this;
+    }
+    /**
+      **/
+    public Builder quantity(Integer quantity) {
+      this.quantity = quantity;
+      return this;
+    }
+    /**
+      **/
+    public Builder shipDate(Date shipDate) {
+      this.shipDate = shipDate;
+      return this;
+    }
+    /**
+      * Order Status
+      **/
+    public Builder status(StatusEnum status) {
+      this.status = status;
+      return this;
+    }
+    /**
+      **/
+    public Builder complete(Boolean complete) {
+      this.complete = complete;
+      return this;
+    }
+
+    public Order build() {
+      return new Order(id, petId, quantity, shipDate, status, complete);
+    }
+  }
 }
 
diff --git a/samples/server/petstore/jaxrs-spec-interface/src/gen/java/org/openapitools/model/OuterComposite.java b/samples/server/petstore/jaxrs-spec-interface/src/gen/java/org/openapitools/model/OuterComposite.java
index 14e7f71319adceae9eb32a520fd8e47f93eef0bb..0e19cca8b2c9e24993b6f70d4541c6ef29ab0a42 100644
--- a/samples/server/petstore/jaxrs-spec-interface/src/gen/java/org/openapitools/model/OuterComposite.java
+++ b/samples/server/petstore/jaxrs-spec-interface/src/gen/java/org/openapitools/model/OuterComposite.java
@@ -21,11 +21,10 @@ public class OuterComposite  implements Serializable {
   private @Valid String myString;
   private @Valid Boolean myBoolean;
 
-  /**
-   **/
-  public OuterComposite myNumber(BigDecimal myNumber) {
+  public OuterComposite(BigDecimal myNumber, String myString, Boolean myBoolean) {
     this.myNumber = myNumber;
-    return this;
+    this.myString = myString;
+    this.myBoolean = myBoolean;
   }
 
   
@@ -34,45 +33,29 @@ public class OuterComposite  implements Serializable {
   public BigDecimal getMyNumber() {
     return myNumber;
   }
+
   public void setMyNumber(BigDecimal myNumber) {
     this.myNumber = myNumber;
   }
-
-  /**
-   **/
-  public OuterComposite myString(String myString) {
-    this.myString = myString;
-    return this;
-  }
-
-  
   @ApiModelProperty(value = "")
   @JsonProperty("my_string")
   public String getMyString() {
     return myString;
   }
+
   public void setMyString(String myString) {
     this.myString = myString;
   }
-
-  /**
-   **/
-  public OuterComposite myBoolean(Boolean myBoolean) {
-    this.myBoolean = myBoolean;
-    return this;
-  }
-
-  
   @ApiModelProperty(value = "")
   @JsonProperty("my_boolean")
   public Boolean getMyBoolean() {
     return myBoolean;
   }
+
   public void setMyBoolean(Boolean myBoolean) {
     this.myBoolean = myBoolean;
   }
 
-
   @Override
   public boolean equals(java.lang.Object o) {
     if (this == o) {
@@ -114,5 +97,38 @@ public class OuterComposite  implements Serializable {
     }
     return o.toString().replace("\n", "\n    ");
   }
+
+  public static Builder builder() {
+    return new Builder();
+  }
+
+  public static class Builder {
+    private BigDecimal myNumber;
+    private String myString;
+    private Boolean myBoolean;
+
+    /**
+      **/
+    public Builder myNumber(BigDecimal myNumber) {
+      this.myNumber = myNumber;
+      return this;
+    }
+    /**
+      **/
+    public Builder myString(String myString) {
+      this.myString = myString;
+      return this;
+    }
+    /**
+      **/
+    public Builder myBoolean(Boolean myBoolean) {
+      this.myBoolean = myBoolean;
+      return this;
+    }
+
+    public OuterComposite build() {
+      return new OuterComposite(myNumber, myString, myBoolean);
+    }
+  }
 }
 
diff --git a/samples/server/petstore/jaxrs-spec-interface/src/gen/java/org/openapitools/model/Pet.java b/samples/server/petstore/jaxrs-spec-interface/src/gen/java/org/openapitools/model/Pet.java
index 6718025e69265ef87c1ef90cfe6dc7e53f4ed723..af38297ae9c03337232cd110ff1517363e97c0be 100644
--- a/samples/server/petstore/jaxrs-spec-interface/src/gen/java/org/openapitools/model/Pet.java
+++ b/samples/server/petstore/jaxrs-spec-interface/src/gen/java/org/openapitools/model/Pet.java
@@ -60,11 +60,13 @@ public enum StatusEnum {
 
   private @Valid StatusEnum status;
 
-  /**
-   **/
-  public Pet id(Long id) {
+  public Pet(Long id, Category category, String name, List<String> photoUrls, List<Tag> tags, StatusEnum status) {
     this.id = id;
-    return this;
+    this.category = category;
+    this.name = name;
+    this.photoUrls = photoUrls;
+    this.tags = tags;
+    this.status = status;
   }
 
   
@@ -73,99 +75,58 @@ public enum StatusEnum {
   public Long getId() {
     return id;
   }
+
   public void setId(Long id) {
     this.id = id;
   }
-
-  /**
-   **/
-  public Pet category(Category category) {
-    this.category = category;
-    return this;
-  }
-
-  
   @ApiModelProperty(value = "")
   @JsonProperty("category")
   public Category getCategory() {
     return category;
   }
+
   public void setCategory(Category category) {
     this.category = category;
   }
-
-  /**
-   **/
-  public Pet name(String name) {
-    this.name = name;
-    return this;
-  }
-
-  
   @ApiModelProperty(example = "doggie", required = true, value = "")
   @JsonProperty("name")
   @NotNull
   public String getName() {
     return name;
   }
+
   public void setName(String name) {
     this.name = name;
   }
-
-  /**
-   **/
-  public Pet photoUrls(List<String> photoUrls) {
-    this.photoUrls = photoUrls;
-    return this;
-  }
-
-  
   @ApiModelProperty(required = true, value = "")
   @JsonProperty("photoUrls")
   @NotNull
   public List<String> getPhotoUrls() {
     return photoUrls;
   }
+
   public void setPhotoUrls(List<String> photoUrls) {
     this.photoUrls = photoUrls;
   }
-
-  /**
-   **/
-  public Pet tags(List<Tag> tags) {
-    this.tags = tags;
-    return this;
-  }
-
-  
   @ApiModelProperty(value = "")
   @JsonProperty("tags")
   public List<Tag> getTags() {
     return tags;
   }
+
   public void setTags(List<Tag> tags) {
     this.tags = tags;
   }
-
-  /**
-   * pet status in the store
-   **/
-  public Pet status(StatusEnum status) {
-    this.status = status;
-    return this;
-  }
-
-  
   @ApiModelProperty(value = "pet status in the store")
   @JsonProperty("status")
   public StatusEnum getStatus() {
     return status;
   }
+
   public void setStatus(StatusEnum status) {
     this.status = status;
   }
 
-
   @Override
   public boolean equals(java.lang.Object o) {
     if (this == o) {
@@ -213,5 +174,60 @@ public enum StatusEnum {
     }
     return o.toString().replace("\n", "\n    ");
   }
+
+  public static Builder builder() {
+    return new Builder();
+  }
+
+  public static class Builder {
+    private Long id;
+    private Category category;
+    private String name;
+    private List<String> photoUrls = new ArrayList<String>();
+    private List<Tag> tags = new ArrayList<Tag>();
+    private StatusEnum status;
+
+    /**
+      **/
+    public Builder id(Long id) {
+      this.id = id;
+      return this;
+    }
+    /**
+      **/
+    public Builder category(Category category) {
+      this.category = category;
+      return this;
+    }
+    /**
+      **/
+    public Builder name(String name) {
+      this.name = name;
+      return this;
+    }
+    /**
+      **/
+    public Builder photoUrls(List<String> photoUrls) {
+      this.photoUrls = photoUrls;
+      return this;
+    }
+    /**
+      **/
+    public Builder tags(List<Tag> tags) {
+      this.tags = tags;
+      return this;
+    }
+    /**
+      * pet status in the store
+      **/
+    public Builder status(StatusEnum status) {
+      this.status = status;
+      return this;
+    }
+
+    public Pet build() {
+      return new Pet(id, category, name, photoUrls, tags, status);
+    }
+  }
 }
 
diff --git a/samples/server/petstore/jaxrs-spec-interface/src/gen/java/org/openapitools/model/ReadOnlyFirst.java b/samples/server/petstore/jaxrs-spec-interface/src/gen/java/org/openapitools/model/ReadOnlyFirst.java
index 27b680b98690fb0d00f6e4ea8b52fe5861cac813..564f4882a9c602124783654633350090a79a6dee 100644
--- a/samples/server/petstore/jaxrs-spec-interface/src/gen/java/org/openapitools/model/ReadOnlyFirst.java
+++ b/samples/server/petstore/jaxrs-spec-interface/src/gen/java/org/openapitools/model/ReadOnlyFirst.java
@@ -19,11 +19,9 @@ public class ReadOnlyFirst  implements Serializable {
   private @Valid String bar;
   private @Valid String baz;
 
-  /**
-   **/
-  public ReadOnlyFirst bar(String bar) {
+  public ReadOnlyFirst(String bar, String baz) {
     this.bar = bar;
-    return this;
+    this.baz = baz;
   }
 
   
@@ -32,28 +30,20 @@ public class ReadOnlyFirst  implements Serializable {
   public String getBar() {
     return bar;
   }
+
   public void setBar(String bar) {
     this.bar = bar;
   }
-
-  /**
-   **/
-  public ReadOnlyFirst baz(String baz) {
-    this.baz = baz;
-    return this;
-  }
-
-  
   @ApiModelProperty(value = "")
   @JsonProperty("baz")
   public String getBaz() {
     return baz;
   }
+
   public void setBaz(String baz) {
     this.baz = baz;
   }
 
-
   @Override
   public boolean equals(java.lang.Object o) {
     if (this == o) {
@@ -93,5 +83,31 @@ public class ReadOnlyFirst  implements Serializable {
     }
     return o.toString().replace("\n", "\n    ");
   }
+
+  public static Builder builder() {
+    return new Builder();
+  }
+
+  public static class Builder {
+    private String bar;
+    private String baz;
+
+    /**
+      **/
+    public Builder bar(String bar) {
+      this.bar = bar;
+      return this;
+    }
+    /**
+      **/
+    public Builder baz(String baz) {
+      this.baz = baz;
+      return this;
+    }
+
+    public ReadOnlyFirst build() {
+      return new ReadOnlyFirst(bar, baz);
+    }
+  }
 }
 
diff --git a/samples/server/petstore/jaxrs-spec-interface/src/gen/java/org/openapitools/model/SpecialModelName.java b/samples/server/petstore/jaxrs-spec-interface/src/gen/java/org/openapitools/model/SpecialModelName.java
index 9e1984faaa05d33553b23b3254663ab0ab6e91e6..5e19a2deb4be3dc9b48fa52bf93e765b4f14ed82 100644
--- a/samples/server/petstore/jaxrs-spec-interface/src/gen/java/org/openapitools/model/SpecialModelName.java
+++ b/samples/server/petstore/jaxrs-spec-interface/src/gen/java/org/openapitools/model/SpecialModelName.java
@@ -18,11 +18,8 @@ public class SpecialModelName  implements Serializable {
   
   private @Valid Long $specialPropertyName;
 
-  /**
-   **/
-  public SpecialModelName $specialPropertyName(Long $specialPropertyName) {
+  public SpecialModelName(Long $specialPropertyName) {
     this.$specialPropertyName = $specialPropertyName;
-    return this;
   }
 
   
@@ -31,11 +28,11 @@ public class SpecialModelName  implements Serializable {
   public Long get$SpecialPropertyName() {
     return $specialPropertyName;
   }
+
   public void set$SpecialPropertyName(Long $specialPropertyName) {
     this.$specialPropertyName = $specialPropertyName;
   }
 
-
   @Override
   public boolean equals(java.lang.Object o) {
     if (this == o) {
@@ -73,5 +70,24 @@ public class SpecialModelName  implements Serializable {
     }
     return o.toString().replace("\n", "\n    ");
   }
+
+  public static Builder builder() {
+    return new Builder();
+  }
+
+  public static class Builder {
+    private Long $specialPropertyName;
+
+    /**
+      **/
+    public Builder $specialPropertyName(Long $specialPropertyName) {
+      this.$specialPropertyName = $specialPropertyName;
+      return this;
+    }
+
+    public SpecialModelName build() {
+      return new SpecialModelName($specialPropertyName);
+    }
+  }
 }
 
diff --git a/samples/server/petstore/jaxrs-spec-interface/src/gen/java/org/openapitools/model/Tag.java b/samples/server/petstore/jaxrs-spec-interface/src/gen/java/org/openapitools/model/Tag.java
index cec2b713130a8536047d9af6e53fbbf5e818b9a4..c0ac65054b2c86c1745134181095ae81ae8a4a0b 100644
--- a/samples/server/petstore/jaxrs-spec-interface/src/gen/java/org/openapitools/model/Tag.java
+++ b/samples/server/petstore/jaxrs-spec-interface/src/gen/java/org/openapitools/model/Tag.java
@@ -19,11 +19,9 @@ public class Tag  implements Serializable {
   private @Valid Long id;
   private @Valid String name;
 
-  /**
-   **/
-  public Tag id(Long id) {
+  public Tag(Long id, String name) {
     this.id = id;
-    return this;
+    this.name = name;
   }
 
   
@@ -32,28 +30,20 @@ public class Tag  implements Serializable {
   public Long getId() {
     return id;
   }
+
   public void setId(Long id) {
     this.id = id;
   }
-
-  /**
-   **/
-  public Tag name(String name) {
-    this.name = name;
-    return this;
-  }
-
-  
   @ApiModelProperty(value = "")
   @JsonProperty("name")
   public String getName() {
     return name;
   }
+
   public void setName(String name) {
     this.name = name;
   }
 
-
   @Override
   public boolean equals(java.lang.Object o) {
     if (this == o) {
@@ -93,5 +83,31 @@ public class Tag  implements Serializable {
     }
     return o.toString().replace("\n", "\n    ");
   }
+
+  public static Builder builder() {
+    return new Builder();
+  }
+
+  public static class Builder {
+    private Long id;
+    private String name;
+
+    /**
+      **/
+    public Builder id(Long id) {
+      this.id = id;
+      return this;
+    }
+    /**
+      **/
+    public Builder name(String name) {
+      this.name = name;
+      return this;
+    }
+
+    public Tag build() {
+      return new Tag(id, name);
+    }
+  }
 }
 
diff --git a/samples/server/petstore/jaxrs-spec-interface/src/gen/java/org/openapitools/model/TypeHolderDefault.java b/samples/server/petstore/jaxrs-spec-interface/src/gen/java/org/openapitools/model/TypeHolderDefault.java
index 957dd7c6cf3a3744da6b7abf68712026a175c83d..d615aa32eca0829cf5c47b3ea833450a3cf18e90 100644
--- a/samples/server/petstore/jaxrs-spec-interface/src/gen/java/org/openapitools/model/TypeHolderDefault.java
+++ b/samples/server/petstore/jaxrs-spec-interface/src/gen/java/org/openapitools/model/TypeHolderDefault.java
@@ -25,11 +25,12 @@ public class TypeHolderDefault  implements Serializable {
   private @Valid Boolean boolItem = true;
   private @Valid List<Integer> arrayItem = new ArrayList<Integer>();
 
-  /**
-   **/
-  public TypeHolderDefault stringItem(String stringItem) {
+  public TypeHolderDefault(String stringItem, BigDecimal numberItem, Integer integerItem, Boolean boolItem, List<Integer> arrayItem) {
     this.stringItem = stringItem;
-    return this;
+    this.numberItem = numberItem;
+    this.integerItem = integerItem;
+    this.boolItem = boolItem;
+    this.arrayItem = arrayItem;
   }
 
   
@@ -39,83 +40,51 @@ public class TypeHolderDefault  implements Serializable {
   public String getStringItem() {
     return stringItem;
   }
+
   public void setStringItem(String stringItem) {
     this.stringItem = stringItem;
   }
-
-  /**
-   **/
-  public TypeHolderDefault numberItem(BigDecimal numberItem) {
-    this.numberItem = numberItem;
-    return this;
-  }
-
-  
   @ApiModelProperty(required = true, value = "")
   @JsonProperty("number_item")
   @NotNull
   public BigDecimal getNumberItem() {
     return numberItem;
   }
+
   public void setNumberItem(BigDecimal numberItem) {
     this.numberItem = numberItem;
   }
-
-  /**
-   **/
-  public TypeHolderDefault integerItem(Integer integerItem) {
-    this.integerItem = integerItem;
-    return this;
-  }
-
-  
   @ApiModelProperty(required = true, value = "")
   @JsonProperty("integer_item")
   @NotNull
   public Integer getIntegerItem() {
     return integerItem;
   }
+
   public void setIntegerItem(Integer integerItem) {
     this.integerItem = integerItem;
   }
-
-  /**
-   **/
-  public TypeHolderDefault boolItem(Boolean boolItem) {
-    this.boolItem = boolItem;
-    return this;
-  }
-
-  
   @ApiModelProperty(required = true, value = "")
   @JsonProperty("bool_item")
   @NotNull
   public Boolean getBoolItem() {
     return boolItem;
   }
+
   public void setBoolItem(Boolean boolItem) {
     this.boolItem = boolItem;
   }
-
-  /**
-   **/
-  public TypeHolderDefault arrayItem(List<Integer> arrayItem) {
-    this.arrayItem = arrayItem;
-    return this;
-  }
-
-  
   @ApiModelProperty(required = true, value = "")
   @JsonProperty("array_item")
   @NotNull
   public List<Integer> getArrayItem() {
     return arrayItem;
   }
+
   public void setArrayItem(List<Integer> arrayItem) {
     this.arrayItem = arrayItem;
   }
 
-
   @Override
   public boolean equals(java.lang.Object o) {
     if (this == o) {
@@ -161,5 +130,52 @@ public class TypeHolderDefault  implements Serializable {
     }
     return o.toString().replace("\n", "\n    ");
   }
+
+  public static Builder builder() {
+    return new Builder();
+  }
+
+  public static class Builder {
+    private String stringItem = "what";
+    private BigDecimal numberItem;
+    private Integer integerItem;
+    private Boolean boolItem = true;
+    private List<Integer> arrayItem = new ArrayList<Integer>();
+
+    /**
+      **/
+    public Builder stringItem(String stringItem) {
+      this.stringItem = stringItem;
+      return this;
+    }
+    /**
+      **/
+    public Builder numberItem(BigDecimal numberItem) {
+      this.numberItem = numberItem;
+      return this;
+    }
+    /**
+      **/
+    public Builder integerItem(Integer integerItem) {
+      this.integerItem = integerItem;
+      return this;
+    }
+    /**
+      **/
+    public Builder boolItem(Boolean boolItem) {
+      this.boolItem = boolItem;
+      return this;
+    }
+    /**
+      **/
+    public Builder arrayItem(List<Integer> arrayItem) {
+      this.arrayItem = arrayItem;
+      return this;
+    }
+
+    public TypeHolderDefault build() {
+      return new TypeHolderDefault(stringItem, numberItem, integerItem, boolItem, arrayItem);
+    }
+  }
 }
 
diff --git a/samples/server/petstore/jaxrs-spec-interface/src/gen/java/org/openapitools/model/TypeHolderExample.java b/samples/server/petstore/jaxrs-spec-interface/src/gen/java/org/openapitools/model/TypeHolderExample.java
index d7c9125b74fa53238073e6f6ed4b79cc4bdfd503..1a6f043e254bf4e3da3a9243d68c3a78877d4f77 100644
--- a/samples/server/petstore/jaxrs-spec-interface/src/gen/java/org/openapitools/model/TypeHolderExample.java
+++ b/samples/server/petstore/jaxrs-spec-interface/src/gen/java/org/openapitools/model/TypeHolderExample.java
@@ -26,11 +26,13 @@ public class TypeHolderExample  implements Serializable {
   private @Valid Boolean boolItem;
   private @Valid List<Integer> arrayItem = new ArrayList<Integer>();
 
-  /**
-   **/
-  public TypeHolderExample stringItem(String stringItem) {
+  public TypeHolderExample(String stringItem, BigDecimal numberItem, Float floatItem, Integer integerItem, Boolean boolItem, List<Integer> arrayItem) {
     this.stringItem = stringItem;
-    return this;
+    this.numberItem = numberItem;
+    this.floatItem = floatItem;
+    this.integerItem = integerItem;
+    this.boolItem = boolItem;
+    this.arrayItem = arrayItem;
   }
 
   
@@ -40,101 +42,61 @@ public class TypeHolderExample  implements Serializable {
   public String getStringItem() {
     return stringItem;
   }
+
   public void setStringItem(String stringItem) {
     this.stringItem = stringItem;
   }
-
-  /**
-   **/
-  public TypeHolderExample numberItem(BigDecimal numberItem) {
-    this.numberItem = numberItem;
-    return this;
-  }
-
-  
   @ApiModelProperty(example = "1.234", required = true, value = "")
   @JsonProperty("number_item")
   @NotNull
   public BigDecimal getNumberItem() {
     return numberItem;
   }
+
   public void setNumberItem(BigDecimal numberItem) {
     this.numberItem = numberItem;
   }
-
-  /**
-   **/
-  public TypeHolderExample floatItem(Float floatItem) {
-    this.floatItem = floatItem;
-    return this;
-  }
-
-  
   @ApiModelProperty(example = "1.234", required = true, value = "")
   @JsonProperty("float_item")
   @NotNull
   public Float getFloatItem() {
     return floatItem;
   }
+
   public void setFloatItem(Float floatItem) {
     this.floatItem = floatItem;
   }
-
-  /**
-   **/
-  public TypeHolderExample integerItem(Integer integerItem) {
-    this.integerItem = integerItem;
-    return this;
-  }
-
-  
   @ApiModelProperty(example = "-2", required = true, value = "")
   @JsonProperty("integer_item")
   @NotNull
   public Integer getIntegerItem() {
     return integerItem;
   }
+
   public void setIntegerItem(Integer integerItem) {
     this.integerItem = integerItem;
   }
-
-  /**
-   **/
-  public TypeHolderExample boolItem(Boolean boolItem) {
-    this.boolItem = boolItem;
-    return this;
-  }
-
-  
   @ApiModelProperty(example = "true", required = true, value = "")
   @JsonProperty("bool_item")
   @NotNull
   public Boolean getBoolItem() {
     return boolItem;
   }
+
   public void setBoolItem(Boolean boolItem) {
     this.boolItem = boolItem;
   }
-
-  /**
-   **/
-  public TypeHolderExample arrayItem(List<Integer> arrayItem) {
-    this.arrayItem = arrayItem;
-    return this;
-  }
-
-  
   @ApiModelProperty(example = "[0, 1, 2, 3]", required = true, value = "")
   @JsonProperty("array_item")
   @NotNull
   public List<Integer> getArrayItem() {
     return arrayItem;
   }
+
   public void setArrayItem(List<Integer> arrayItem) {
     this.arrayItem = arrayItem;
   }
 
-
   @Override
   public boolean equals(java.lang.Object o) {
     if (this == o) {
@@ -182,5 +144,59 @@ public class TypeHolderExample  implements Serializable {
     }
     return o.toString().replace("\n", "\n    ");
   }
+
+  public static Builder builder() {
+    return new Builder();
+  }
+
+  public static class Builder {
+    private String stringItem;
+    private BigDecimal numberItem;
+    private Float floatItem;
+    private Integer integerItem;
+    private Boolean boolItem;
+    private List<Integer> arrayItem = new ArrayList<Integer>();
+
+    /**
+      **/
+    public Builder stringItem(String stringItem) {
+      this.stringItem = stringItem;
+      return this;
+    }
+    /**
+      **/
+    public Builder numberItem(BigDecimal numberItem) {
+      this.numberItem = numberItem;
+      return this;
+    }
+    /**
+      **/
+    public Builder floatItem(Float floatItem) {
+      this.floatItem = floatItem;
+      return this;
+    }
+    /**
+      **/
+    public Builder integerItem(Integer integerItem) {
+      this.integerItem = integerItem;
+      return this;
+    }
+    /**
+      **/
+    public Builder boolItem(Boolean boolItem) {
+      this.boolItem = boolItem;
+      return this;
+    }
+    /**
+      **/
+    public Builder arrayItem(List<Integer> arrayItem) {
+      this.arrayItem = arrayItem;
+      return this;
+    }
+
+    public TypeHolderExample build() {
+      return new TypeHolderExample(stringItem, numberItem, floatItem, integerItem, boolItem, arrayItem);
+    }
+  }
 }
 
diff --git a/samples/server/petstore/jaxrs-spec-interface/src/gen/java/org/openapitools/model/User.java b/samples/server/petstore/jaxrs-spec-interface/src/gen/java/org/openapitools/model/User.java
index 2ab19c284a3019218582bcbcddba0e6ac8948696..e85cdceee0bdec9387d3372a5aacb3452ece0787 100644
--- a/samples/server/petstore/jaxrs-spec-interface/src/gen/java/org/openapitools/model/User.java
+++ b/samples/server/petstore/jaxrs-spec-interface/src/gen/java/org/openapitools/model/User.java
@@ -25,11 +25,15 @@ public class User  implements Serializable {
   private @Valid String phone;
   private @Valid Integer userStatus;
 
-  /**
-   **/
-  public User id(Long id) {
+  public User(Long id, String username, String firstName, String lastName, String email, String password, String phone, Integer userStatus) {
     this.id = id;
-    return this;
+    this.username = username;
+    this.firstName = firstName;
+    this.lastName = lastName;
+    this.email = email;
+    this.password = password;
+    this.phone = phone;
+    this.userStatus = userStatus;
   }
 
   
@@ -38,131 +42,74 @@ public class User  implements Serializable {
   public Long getId() {
     return id;
   }
+
   public void setId(Long id) {
     this.id = id;
   }
-
-  /**
-   **/
-  public User username(String username) {
-    this.username = username;
-    return this;
-  }
-
-  
   @ApiModelProperty(value = "")
   @JsonProperty("username")
   public String getUsername() {
     return username;
   }
+
   public void setUsername(String username) {
     this.username = username;
   }
-
-  /**
-   **/
-  public User firstName(String firstName) {
-    this.firstName = firstName;
-    return this;
-  }
-
-  
   @ApiModelProperty(value = "")
   @JsonProperty("firstName")
   public String getFirstName() {
     return firstName;
   }
+
   public void setFirstName(String firstName) {
     this.firstName = firstName;
   }
-
-  /**
-   **/
-  public User lastName(String lastName) {
-    this.lastName = lastName;
-    return this;
-  }
-
-  
   @ApiModelProperty(value = "")
   @JsonProperty("lastName")
   public String getLastName() {
     return lastName;
   }
+
   public void setLastName(String lastName) {
     this.lastName = lastName;
   }
-
-  /**
-   **/
-  public User email(String email) {
-    this.email = email;
-    return this;
-  }
-
-  
   @ApiModelProperty(value = "")
   @JsonProperty("email")
   public String getEmail() {
     return email;
   }
+
   public void setEmail(String email) {
     this.email = email;
   }
-
-  /**
-   **/
-  public User password(String password) {
-    this.password = password;
-    return this;
-  }
-
-  
   @ApiModelProperty(value = "")
   @JsonProperty("password")
   public String getPassword() {
     return password;
   }
+
   public void setPassword(String password) {
     this.password = password;
   }
-
-  /**
-   **/
-  public User phone(String phone) {
-    this.phone = phone;
-    return this;
-  }
-
-  
   @ApiModelProperty(value = "")
   @JsonProperty("phone")
   public String getPhone() {
     return phone;
   }
+
   public void setPhone(String phone) {
     this.phone = phone;
   }
-
-  /**
-   * User Status
-   **/
-  public User userStatus(Integer userStatus) {
-    this.userStatus = userStatus;
-    return this;
-  }
-
-  
   @ApiModelProperty(value = "User Status")
   @JsonProperty("userStatus")
   public Integer getUserStatus() {
     return userStatus;
   }
+
   public void setUserStatus(Integer userStatus) {
     this.userStatus = userStatus;
   }
 
-
   @Override
   public boolean equals(java.lang.Object o) {
     if (this == o) {
@@ -214,5 +161,74 @@ public class User  implements Serializable {
     }
     return o.toString().replace("\n", "\n    ");
   }
+
+  public static Builder builder() {
+    return new Builder();
+  }
+
+  public static class Builder {
+    private Long id;
+    private String username;
+    private String firstName;
+    private String lastName;
+    private String email;
+    private String password;
+    private String phone;
+    private Integer userStatus;
+
+    /**
+      **/
+    public Builder id(Long id) {
+      this.id = id;
+      return this;
+    }
+    /**
+      **/
+    public Builder username(String username) {
+      this.username = username;
+      return this;
+    }
+    /**
+      **/
+    public Builder firstName(String firstName) {
+      this.firstName = firstName;
+      return this;
+    }
+    /**
+      **/
+    public Builder lastName(String lastName) {
+      this.lastName = lastName;
+      return this;
+    }
+    /**
+      **/
+    public Builder email(String email) {
+      this.email = email;
+      return this;
+    }
+    /**
+      **/
+    public Builder password(String password) {
+      this.password = password;
+      return this;
+    }
+    /**
+      **/
+    public Builder phone(String phone) {
+      this.phone = phone;
+      return this;
+    }
+    /**
+      * User Status
+      **/
+    public Builder userStatus(Integer userStatus) {
+      this.userStatus = userStatus;
+      return this;
+    }
+
+    public User build() {
+      return new User(id, username, firstName, lastName, email, password, phone, userStatus);
+    }
+  }
 }
 
diff --git a/samples/server/petstore/jaxrs-spec-interface/src/gen/java/org/openapitools/model/XmlItem.java b/samples/server/petstore/jaxrs-spec-interface/src/gen/java/org/openapitools/model/XmlItem.java
index 8c841c34f1108f4e500fcc98a5768d4d727096cc..6b90f7917489533cb0e4c9be43c53cbeee7fac29 100644
--- a/samples/server/petstore/jaxrs-spec-interface/src/gen/java/org/openapitools/model/XmlItem.java
+++ b/samples/server/petstore/jaxrs-spec-interface/src/gen/java/org/openapitools/model/XmlItem.java
@@ -49,11 +49,36 @@ public class XmlItem  implements Serializable {
   private @Valid List<Integer> prefixNsArray = new ArrayList<Integer>();
   private @Valid List<Integer> prefixNsWrappedArray = new ArrayList<Integer>();
 
-  /**
-   **/
-  public XmlItem attributeString(String attributeString) {
+  public XmlItem(String attributeString, BigDecimal attributeNumber, Integer attributeInteger, Boolean attributeBoolean, List<Integer> wrappedArray, String nameString, BigDecimal nameNumber, Integer nameInteger, Boolean nameBoolean, List<Integer> nameArray, List<Integer> nameWrappedArray, String prefixString, BigDecimal prefixNumber, Integer prefixInteger, Boolean prefixBoolean, List<Integer> prefixArray, List<Integer> prefixWrappedArray, String namespaceString, BigDecimal namespaceNumber, Integer namespaceInteger, Boolean namespaceBoolean, List<Integer> namespaceArray, List<Integer> namespaceWrappedArray, String prefixNsString, BigDecimal prefixNsNumber, Integer prefixNsInteger, Boolean prefixNsBoolean, List<Integer> prefixNsArray, List<Integer> prefixNsWrappedArray) {
     this.attributeString = attributeString;
-    return this;
+    this.attributeNumber = attributeNumber;
+    this.attributeInteger = attributeInteger;
+    this.attributeBoolean = attributeBoolean;
+    this.wrappedArray = wrappedArray;
+    this.nameString = nameString;
+    this.nameNumber = nameNumber;
+    this.nameInteger = nameInteger;
+    this.nameBoolean = nameBoolean;
+    this.nameArray = nameArray;
+    this.nameWrappedArray = nameWrappedArray;
+    this.prefixString = prefixString;
+    this.prefixNumber = prefixNumber;
+    this.prefixInteger = prefixInteger;
+    this.prefixBoolean = prefixBoolean;
+    this.prefixArray = prefixArray;
+    this.prefixWrappedArray = prefixWrappedArray;
+    this.namespaceString = namespaceString;
+    this.namespaceNumber = namespaceNumber;
+    this.namespaceInteger = namespaceInteger;
+    this.namespaceBoolean = namespaceBoolean;
+    this.namespaceArray = namespaceArray;
+    this.namespaceWrappedArray = namespaceWrappedArray;
+    this.prefixNsString = prefixNsString;
+    this.prefixNsNumber = prefixNsNumber;
+    this.prefixNsInteger = prefixNsInteger;
+    this.prefixNsBoolean = prefixNsBoolean;
+    this.prefixNsArray = prefixNsArray;
+    this.prefixNsWrappedArray = prefixNsWrappedArray;
   }
 
   
@@ -62,487 +87,263 @@ public class XmlItem  implements Serializable {
   public String getAttributeString() {
     return attributeString;
   }
+
   public void setAttributeString(String attributeString) {
     this.attributeString = attributeString;
   }
-
-  /**
-   **/
-  public XmlItem attributeNumber(BigDecimal attributeNumber) {
-    this.attributeNumber = attributeNumber;
-    return this;
-  }
-
-  
   @ApiModelProperty(example = "1.234", value = "")
   @JsonProperty("attribute_number")
   public BigDecimal getAttributeNumber() {
     return attributeNumber;
   }
+
   public void setAttributeNumber(BigDecimal attributeNumber) {
     this.attributeNumber = attributeNumber;
   }
-
-  /**
-   **/
-  public XmlItem attributeInteger(Integer attributeInteger) {
-    this.attributeInteger = attributeInteger;
-    return this;
-  }
-
-  
   @ApiModelProperty(example = "-2", value = "")
   @JsonProperty("attribute_integer")
   public Integer getAttributeInteger() {
     return attributeInteger;
   }
+
   public void setAttributeInteger(Integer attributeInteger) {
     this.attributeInteger = attributeInteger;
   }
-
-  /**
-   **/
-  public XmlItem attributeBoolean(Boolean attributeBoolean) {
-    this.attributeBoolean = attributeBoolean;
-    return this;
-  }
-
-  
   @ApiModelProperty(example = "true", value = "")
   @JsonProperty("attribute_boolean")
   public Boolean getAttributeBoolean() {
     return attributeBoolean;
   }
+
   public void setAttributeBoolean(Boolean attributeBoolean) {
     this.attributeBoolean = attributeBoolean;
   }
-
-  /**
-   **/
-  public XmlItem wrappedArray(List<Integer> wrappedArray) {
-    this.wrappedArray = wrappedArray;
-    return this;
-  }
-
-  
   @ApiModelProperty(value = "")
   @JsonProperty("wrapped_array")
   public List<Integer> getWrappedArray() {
     return wrappedArray;
   }
+
   public void setWrappedArray(List<Integer> wrappedArray) {
     this.wrappedArray = wrappedArray;
   }
-
-  /**
-   **/
-  public XmlItem nameString(String nameString) {
-    this.nameString = nameString;
-    return this;
-  }
-
-  
   @ApiModelProperty(example = "string", value = "")
   @JsonProperty("name_string")
   public String getNameString() {
     return nameString;
   }
+
   public void setNameString(String nameString) {
     this.nameString = nameString;
   }
-
-  /**
-   **/
-  public XmlItem nameNumber(BigDecimal nameNumber) {
-    this.nameNumber = nameNumber;
-    return this;
-  }
-
-  
   @ApiModelProperty(example = "1.234", value = "")
   @JsonProperty("name_number")
   public BigDecimal getNameNumber() {
     return nameNumber;
   }
+
   public void setNameNumber(BigDecimal nameNumber) {
     this.nameNumber = nameNumber;
   }
-
-  /**
-   **/
-  public XmlItem nameInteger(Integer nameInteger) {
-    this.nameInteger = nameInteger;
-    return this;
-  }
-
-  
   @ApiModelProperty(example = "-2", value = "")
   @JsonProperty("name_integer")
   public Integer getNameInteger() {
     return nameInteger;
   }
+
   public void setNameInteger(Integer nameInteger) {
     this.nameInteger = nameInteger;
   }
-
-  /**
-   **/
-  public XmlItem nameBoolean(Boolean nameBoolean) {
-    this.nameBoolean = nameBoolean;
-    return this;
-  }
-
-  
   @ApiModelProperty(example = "true", value = "")
   @JsonProperty("name_boolean")
   public Boolean getNameBoolean() {
     return nameBoolean;
   }
+
   public void setNameBoolean(Boolean nameBoolean) {
     this.nameBoolean = nameBoolean;
   }
-
-  /**
-   **/
-  public XmlItem nameArray(List<Integer> nameArray) {
-    this.nameArray = nameArray;
-    return this;
-  }
-
-  
   @ApiModelProperty(value = "")
   @JsonProperty("name_array")
   public List<Integer> getNameArray() {
     return nameArray;
   }
+
   public void setNameArray(List<Integer> nameArray) {
     this.nameArray = nameArray;
   }
-
-  /**
-   **/
-  public XmlItem nameWrappedArray(List<Integer> nameWrappedArray) {
-    this.nameWrappedArray = nameWrappedArray;
-    return this;
-  }
-
-  
   @ApiModelProperty(value = "")
   @JsonProperty("name_wrapped_array")
   public List<Integer> getNameWrappedArray() {
     return nameWrappedArray;
   }
+
   public void setNameWrappedArray(List<Integer> nameWrappedArray) {
     this.nameWrappedArray = nameWrappedArray;
   }
-
-  /**
-   **/
-  public XmlItem prefixString(String prefixString) {
-    this.prefixString = prefixString;
-    return this;
-  }
-
-  
   @ApiModelProperty(example = "string", value = "")
   @JsonProperty("prefix_string")
   public String getPrefixString() {
     return prefixString;
   }
+
   public void setPrefixString(String prefixString) {
     this.prefixString = prefixString;
   }
-
-  /**
-   **/
-  public XmlItem prefixNumber(BigDecimal prefixNumber) {
-    this.prefixNumber = prefixNumber;
-    return this;
-  }
-
-  
   @ApiModelProperty(example = "1.234", value = "")
   @JsonProperty("prefix_number")
   public BigDecimal getPrefixNumber() {
     return prefixNumber;
   }
+
   public void setPrefixNumber(BigDecimal prefixNumber) {
     this.prefixNumber = prefixNumber;
   }
-
-  /**
-   **/
-  public XmlItem prefixInteger(Integer prefixInteger) {
-    this.prefixInteger = prefixInteger;
-    return this;
-  }
-
-  
   @ApiModelProperty(example = "-2", value = "")
   @JsonProperty("prefix_integer")
   public Integer getPrefixInteger() {
     return prefixInteger;
   }
+
   public void setPrefixInteger(Integer prefixInteger) {
     this.prefixInteger = prefixInteger;
   }
-
-  /**
-   **/
-  public XmlItem prefixBoolean(Boolean prefixBoolean) {
-    this.prefixBoolean = prefixBoolean;
-    return this;
-  }
-
-  
   @ApiModelProperty(example = "true", value = "")
   @JsonProperty("prefix_boolean")
   public Boolean getPrefixBoolean() {
     return prefixBoolean;
   }
+
   public void setPrefixBoolean(Boolean prefixBoolean) {
     this.prefixBoolean = prefixBoolean;
   }
-
-  /**
-   **/
-  public XmlItem prefixArray(List<Integer> prefixArray) {
-    this.prefixArray = prefixArray;
-    return this;
-  }
-
-  
   @ApiModelProperty(value = "")
   @JsonProperty("prefix_array")
   public List<Integer> getPrefixArray() {
     return prefixArray;
   }
+
   public void setPrefixArray(List<Integer> prefixArray) {
     this.prefixArray = prefixArray;
   }
-
-  /**
-   **/
-  public XmlItem prefixWrappedArray(List<Integer> prefixWrappedArray) {
-    this.prefixWrappedArray = prefixWrappedArray;
-    return this;
-  }
-
-  
   @ApiModelProperty(value = "")
   @JsonProperty("prefix_wrapped_array")
   public List<Integer> getPrefixWrappedArray() {
     return prefixWrappedArray;
   }
+
   public void setPrefixWrappedArray(List<Integer> prefixWrappedArray) {
     this.prefixWrappedArray = prefixWrappedArray;
   }
-
-  /**
-   **/
-  public XmlItem namespaceString(String namespaceString) {
-    this.namespaceString = namespaceString;
-    return this;
-  }
-
-  
   @ApiModelProperty(example = "string", value = "")
   @JsonProperty("namespace_string")
   public String getNamespaceString() {
     return namespaceString;
   }
+
   public void setNamespaceString(String namespaceString) {
     this.namespaceString = namespaceString;
   }
-
-  /**
-   **/
-  public XmlItem namespaceNumber(BigDecimal namespaceNumber) {
-    this.namespaceNumber = namespaceNumber;
-    return this;
-  }
-
-  
   @ApiModelProperty(example = "1.234", value = "")
   @JsonProperty("namespace_number")
   public BigDecimal getNamespaceNumber() {
     return namespaceNumber;
   }
+
   public void setNamespaceNumber(BigDecimal namespaceNumber) {
     this.namespaceNumber = namespaceNumber;
   }
-
-  /**
-   **/
-  public XmlItem namespaceInteger(Integer namespaceInteger) {
-    this.namespaceInteger = namespaceInteger;
-    return this;
-  }
-
-  
   @ApiModelProperty(example = "-2", value = "")
   @JsonProperty("namespace_integer")
   public Integer getNamespaceInteger() {
     return namespaceInteger;
   }
+
   public void setNamespaceInteger(Integer namespaceInteger) {
     this.namespaceInteger = namespaceInteger;
   }
-
-  /**
-   **/
-  public XmlItem namespaceBoolean(Boolean namespaceBoolean) {
-    this.namespaceBoolean = namespaceBoolean;
-    return this;
-  }
-
-  
   @ApiModelProperty(example = "true", value = "")
   @JsonProperty("namespace_boolean")
   public Boolean getNamespaceBoolean() {
     return namespaceBoolean;
   }
+
   public void setNamespaceBoolean(Boolean namespaceBoolean) {
     this.namespaceBoolean = namespaceBoolean;
   }
-
-  /**
-   **/
-  public XmlItem namespaceArray(List<Integer> namespaceArray) {
-    this.namespaceArray = namespaceArray;
-    return this;
-  }
-
-  
   @ApiModelProperty(value = "")
   @JsonProperty("namespace_array")
   public List<Integer> getNamespaceArray() {
     return namespaceArray;
   }
+
   public void setNamespaceArray(List<Integer> namespaceArray) {
     this.namespaceArray = namespaceArray;
   }
-
-  /**
-   **/
-  public XmlItem namespaceWrappedArray(List<Integer> namespaceWrappedArray) {
-    this.namespaceWrappedArray = namespaceWrappedArray;
-    return this;
-  }
-
-  
   @ApiModelProperty(value = "")
   @JsonProperty("namespace_wrapped_array")
   public List<Integer> getNamespaceWrappedArray() {
     return namespaceWrappedArray;
   }
+
   public void setNamespaceWrappedArray(List<Integer> namespaceWrappedArray) {
     this.namespaceWrappedArray = namespaceWrappedArray;
   }
-
-  /**
-   **/
-  public XmlItem prefixNsString(String prefixNsString) {
-    this.prefixNsString = prefixNsString;
-    return this;
-  }
-
-  
   @ApiModelProperty(example = "string", value = "")
   @JsonProperty("prefix_ns_string")
   public String getPrefixNsString() {
     return prefixNsString;
   }
+
   public void setPrefixNsString(String prefixNsString) {
     this.prefixNsString = prefixNsString;
   }
-
-  /**
-   **/
-  public XmlItem prefixNsNumber(BigDecimal prefixNsNumber) {
-    this.prefixNsNumber = prefixNsNumber;
-    return this;
-  }
-
-  
   @ApiModelProperty(example = "1.234", value = "")
   @JsonProperty("prefix_ns_number")
   public BigDecimal getPrefixNsNumber() {
     return prefixNsNumber;
   }
+
   public void setPrefixNsNumber(BigDecimal prefixNsNumber) {
     this.prefixNsNumber = prefixNsNumber;
   }
-
-  /**
-   **/
-  public XmlItem prefixNsInteger(Integer prefixNsInteger) {
-    this.prefixNsInteger = prefixNsInteger;
-    return this;
-  }
-
-  
   @ApiModelProperty(example = "-2", value = "")
   @JsonProperty("prefix_ns_integer")
   public Integer getPrefixNsInteger() {
     return prefixNsInteger;
   }
+
   public void setPrefixNsInteger(Integer prefixNsInteger) {
     this.prefixNsInteger = prefixNsInteger;
   }
-
-  /**
-   **/
-  public XmlItem prefixNsBoolean(Boolean prefixNsBoolean) {
-    this.prefixNsBoolean = prefixNsBoolean;
-    return this;
-  }
-
-  
   @ApiModelProperty(example = "true", value = "")
   @JsonProperty("prefix_ns_boolean")
   public Boolean getPrefixNsBoolean() {
     return prefixNsBoolean;
   }
+
   public void setPrefixNsBoolean(Boolean prefixNsBoolean) {
     this.prefixNsBoolean = prefixNsBoolean;
   }
-
-  /**
-   **/
-  public XmlItem prefixNsArray(List<Integer> prefixNsArray) {
-    this.prefixNsArray = prefixNsArray;
-    return this;
-  }
-
-  
   @ApiModelProperty(value = "")
   @JsonProperty("prefix_ns_array")
   public List<Integer> getPrefixNsArray() {
     return prefixNsArray;
   }
+
   public void setPrefixNsArray(List<Integer> prefixNsArray) {
     this.prefixNsArray = prefixNsArray;
   }
-
-  /**
-   **/
-  public XmlItem prefixNsWrappedArray(List<Integer> prefixNsWrappedArray) {
-    this.prefixNsWrappedArray = prefixNsWrappedArray;
-    return this;
-  }
-
-  
   @ApiModelProperty(value = "")
   @JsonProperty("prefix_ns_wrapped_array")
   public List<Integer> getPrefixNsWrappedArray() {
     return prefixNsWrappedArray;
   }
+
   public void setPrefixNsWrappedArray(List<Integer> prefixNsWrappedArray) {
     this.prefixNsWrappedArray = prefixNsWrappedArray;
   }
 
-
   @Override
   public boolean equals(java.lang.Object o) {
     if (this == o) {
@@ -636,5 +437,220 @@ public class XmlItem  implements Serializable {
     }
     return o.toString().replace("\n", "\n    ");
   }
+
+  public static Builder builder() {
+    return new Builder();
+  }
+
+  public static class Builder {
+    private String attributeString;
+    private BigDecimal attributeNumber;
+    private Integer attributeInteger;
+    private Boolean attributeBoolean;
+    private List<Integer> wrappedArray = new ArrayList<Integer>();
+    private String nameString;
+    private BigDecimal nameNumber;
+    private Integer nameInteger;
+    private Boolean nameBoolean;
+    private List<Integer> nameArray = new ArrayList<Integer>();
+    private List<Integer> nameWrappedArray = new ArrayList<Integer>();
+    private String prefixString;
+    private BigDecimal prefixNumber;
+    private Integer prefixInteger;
+    private Boolean prefixBoolean;
+    private List<Integer> prefixArray = new ArrayList<Integer>();
+    private List<Integer> prefixWrappedArray = new ArrayList<Integer>();
+    private String namespaceString;
+    private BigDecimal namespaceNumber;
+    private Integer namespaceInteger;
+    private Boolean namespaceBoolean;
+    private List<Integer> namespaceArray = new ArrayList<Integer>();
+    private List<Integer> namespaceWrappedArray = new ArrayList<Integer>();
+    private String prefixNsString;
+    private BigDecimal prefixNsNumber;
+    private Integer prefixNsInteger;
+    private Boolean prefixNsBoolean;
+    private List<Integer> prefixNsArray = new ArrayList<Integer>();
+    private List<Integer> prefixNsWrappedArray = new ArrayList<Integer>();
+
+    /**
+      **/
+    public Builder attributeString(String attributeString) {
+      this.attributeString = attributeString;
+      return this;
+    }
+    /**
+      **/
+    public Builder attributeNumber(BigDecimal attributeNumber) {
+      this.attributeNumber = attributeNumber;
+      return this;
+    }
+    /**
+      **/
+    public Builder attributeInteger(Integer attributeInteger) {
+      this.attributeInteger = attributeInteger;
+      return this;
+    }
+    /**
+      **/
+    public Builder attributeBoolean(Boolean attributeBoolean) {
+      this.attributeBoolean = attributeBoolean;
+      return this;
+    }
+    /**
+      **/
+    public Builder wrappedArray(List<Integer> wrappedArray) {
+      this.wrappedArray = wrappedArray;
+      return this;
+    }
+    /**
+      **/
+    public Builder nameString(String nameString) {
+      this.nameString = nameString;
+      return this;
+    }
+    /**
+      **/
+    public Builder nameNumber(BigDecimal nameNumber) {
+      this.nameNumber = nameNumber;
+      return this;
+    }
+    /**
+      **/
+    public Builder nameInteger(Integer nameInteger) {
+      this.nameInteger = nameInteger;
+      return this;
+    }
+    /**
+      **/
+    public Builder nameBoolean(Boolean nameBoolean) {
+      this.nameBoolean = nameBoolean;
+      return this;
+    }
+    /**
+      **/
+    public Builder nameArray(List<Integer> nameArray) {
+      this.nameArray = nameArray;
+      return this;
+    }
+    /**
+      **/
+    public Builder nameWrappedArray(List<Integer> nameWrappedArray) {
+      this.nameWrappedArray = nameWrappedArray;
+      return this;
+    }
+    /**
+      **/
+    public Builder prefixString(String prefixString) {
+      this.prefixString = prefixString;
+      return this;
+    }
+    /**
+      **/
+    public Builder prefixNumber(BigDecimal prefixNumber) {
+      this.prefixNumber = prefixNumber;
+      return this;
+    }
+    /**
+      **/
+    public Builder prefixInteger(Integer prefixInteger) {
+      this.prefixInteger = prefixInteger;
+      return this;
+    }
+    /**
+      **/
+    public Builder prefixBoolean(Boolean prefixBoolean) {
+      this.prefixBoolean = prefixBoolean;
+      return this;
+    }
+    /**
+      **/
+    public Builder prefixArray(List<Integer> prefixArray) {
+      this.prefixArray = prefixArray;
+      return this;
+    }
+    /**
+      **/
+    public Builder prefixWrappedArray(List<Integer> prefixWrappedArray) {
+      this.prefixWrappedArray = prefixWrappedArray;
+      return this;
+    }
+    /**
+      **/
+    public Builder namespaceString(String namespaceString) {
+      this.namespaceString = namespaceString;
+      return this;
+    }
+    /**
+      **/
+    public Builder namespaceNumber(BigDecimal namespaceNumber) {
+      this.namespaceNumber = namespaceNumber;
+      return this;
+    }
+    /**
+      **/
+    public Builder namespaceInteger(Integer namespaceInteger) {
+      this.namespaceInteger = namespaceInteger;
+      return this;
+    }
+    /**
+      **/
+    public Builder namespaceBoolean(Boolean namespaceBoolean) {
+      this.namespaceBoolean = namespaceBoolean;
+      return this;
+    }
+    /**
+      **/
+    public Builder namespaceArray(List<Integer> namespaceArray) {
+      this.namespaceArray = namespaceArray;
+      return this;
+    }
+    /**
+      **/
+    public Builder namespaceWrappedArray(List<Integer> namespaceWrappedArray) {
+      this.namespaceWrappedArray = namespaceWrappedArray;
+      return this;
+    }
+    /**
+      **/
+    public Builder prefixNsString(String prefixNsString) {
+      this.prefixNsString = prefixNsString;
+      return this;
+    }
+    /**
+      **/
+    public Builder prefixNsNumber(BigDecimal prefixNsNumber) {
+      this.prefixNsNumber = prefixNsNumber;
+      return this;
+    }
+    /**
+      **/
+    public Builder prefixNsInteger(Integer prefixNsInteger) {
+      this.prefixNsInteger = prefixNsInteger;
+      return this;
+    }
+    /**
+      **/
+    public Builder prefixNsBoolean(Boolean prefixNsBoolean) {
+      this.prefixNsBoolean = prefixNsBoolean;
+      return this;
+    }
+    /**
+      **/
+    public Builder prefixNsArray(List<Integer> prefixNsArray) {
+      this.prefixNsArray = prefixNsArray;
+      return this;
+    }
+    /**
+      **/
+    public Builder prefixNsWrappedArray(List<Integer> prefixNsWrappedArray) {
+      this.prefixNsWrappedArray = prefixNsWrappedArray;
+      return this;
+    }
+
+    public XmlItem build() {
+      return new XmlItem(attributeString, attributeNumber, attributeInteger, attributeBoolean, wrappedArray, nameString, nameNumber, nameInteger, nameBoolean, nameArray, nameWrappedArray, prefixString, prefixNumber, prefixInteger, prefixBoolean, prefixArray, prefixWrappedArray, namespaceString, namespaceNumber, namespaceInteger, namespaceBoolean, namespaceArray, namespaceWrappedArray, prefixNsString, prefixNsNumber, prefixNsInteger, prefixNsBoolean, prefixNsArray, prefixNsWrappedArray);
+    }
+  }
 }
 
diff --git a/samples/server/petstore/jaxrs-spec/.openapi-generator/VERSION b/samples/server/petstore/jaxrs-spec/.openapi-generator/VERSION
index 58592f031f659c9626c8f9c6dfa7cfe2556e4914..bfbf77eb7fadc20dd2ba9d16caf833df407d9efe 100644
--- a/samples/server/petstore/jaxrs-spec/.openapi-generator/VERSION
+++ b/samples/server/petstore/jaxrs-spec/.openapi-generator/VERSION
@@ -1 +1 @@
-4.2.3-SNAPSHOT
\ No newline at end of file
+4.3.0-SNAPSHOT
\ No newline at end of file
diff --git a/samples/server/petstore/jaxrs-spec/src/gen/java/org/openapitools/model/AdditionalPropertiesAnyType.java b/samples/server/petstore/jaxrs-spec/src/gen/java/org/openapitools/model/AdditionalPropertiesAnyType.java
index 784bdb2540ccc9a146703340ffc23b017a373953..31bbf64e9f37d659d1b6daebc532e2f55330aaed 100644
--- a/samples/server/petstore/jaxrs-spec/src/gen/java/org/openapitools/model/AdditionalPropertiesAnyType.java
+++ b/samples/server/petstore/jaxrs-spec/src/gen/java/org/openapitools/model/AdditionalPropertiesAnyType.java
@@ -20,11 +20,8 @@ public class AdditionalPropertiesAnyType extends HashMap<String, Object> impleme
   
   private @Valid String name;
 
-  /**
-   **/
-  public AdditionalPropertiesAnyType name(String name) {
+  public AdditionalPropertiesAnyType(String name) {
     this.name = name;
-    return this;
   }
 
   
@@ -33,11 +30,11 @@ public class AdditionalPropertiesAnyType extends HashMap<String, Object> impleme
   public String getName() {
     return name;
   }
+
   public void setName(String name) {
     this.name = name;
   }
 
-
   @Override
   public boolean equals(java.lang.Object o) {
     if (this == o) {
@@ -76,5 +73,24 @@ public class AdditionalPropertiesAnyType extends HashMap<String, Object> impleme
     }
     return o.toString().replace("\n", "\n    ");
   }
+
+  public static Builder builder() {
+    return new Builder();
+  }
+
+  public static class Builder {
+    private String name;
+
+    /**
+      **/
+    public Builder name(String name) {
+      this.name = name;
+      return this;
+    }
+
+    public AdditionalPropertiesAnyType build() {
+      return new AdditionalPropertiesAnyType(name);
+    }
+  }
 }
 
diff --git a/samples/server/petstore/jaxrs-spec/src/gen/java/org/openapitools/model/AdditionalPropertiesArray.java b/samples/server/petstore/jaxrs-spec/src/gen/java/org/openapitools/model/AdditionalPropertiesArray.java
index 7e3b19874d3f35dc9261cff4d97d119656342a8f..2d1818a51600872226f203944aa2a693941bf4aa 100644
--- a/samples/server/petstore/jaxrs-spec/src/gen/java/org/openapitools/model/AdditionalPropertiesArray.java
+++ b/samples/server/petstore/jaxrs-spec/src/gen/java/org/openapitools/model/AdditionalPropertiesArray.java
@@ -21,11 +21,8 @@ public class AdditionalPropertiesArray extends HashMap<String, List> implements
   
   private @Valid String name;
 
-  /**
-   **/
-  public AdditionalPropertiesArray name(String name) {
+  public AdditionalPropertiesArray(String name) {
     this.name = name;
-    return this;
   }
 
   
@@ -34,11 +31,11 @@ public class AdditionalPropertiesArray extends HashMap<String, List> implements
   public String getName() {
     return name;
   }
+
   public void setName(String name) {
     this.name = name;
   }
 
-
   @Override
   public boolean equals(java.lang.Object o) {
     if (this == o) {
@@ -77,5 +74,24 @@ public class AdditionalPropertiesArray extends HashMap<String, List> implements
     }
     return o.toString().replace("\n", "\n    ");
   }
+
+  public static Builder builder() {
+    return new Builder();
+  }
+
+  public static class Builder {
+    private String name;
+
+    /**
+      **/
+    public Builder name(String name) {
+      this.name = name;
+      return this;
+    }
+
+    public AdditionalPropertiesArray build() {
+      return new AdditionalPropertiesArray(name);
+    }
+  }
 }
 
diff --git a/samples/server/petstore/jaxrs-spec/src/gen/java/org/openapitools/model/AdditionalPropertiesBoolean.java b/samples/server/petstore/jaxrs-spec/src/gen/java/org/openapitools/model/AdditionalPropertiesBoolean.java
index 1eb290fe3f21c19205897f774dd34a97a0f7eec7..58f57067781c13f30e4a055d38621cb599716d4e 100644
--- a/samples/server/petstore/jaxrs-spec/src/gen/java/org/openapitools/model/AdditionalPropertiesBoolean.java
+++ b/samples/server/petstore/jaxrs-spec/src/gen/java/org/openapitools/model/AdditionalPropertiesBoolean.java
@@ -20,11 +20,8 @@ public class AdditionalPropertiesBoolean extends HashMap<String, Boolean> implem
   
   private @Valid String name;
 
-  /**
-   **/
-  public AdditionalPropertiesBoolean name(String name) {
+  public AdditionalPropertiesBoolean(String name) {
     this.name = name;
-    return this;
   }
 
   
@@ -33,11 +30,11 @@ public class AdditionalPropertiesBoolean extends HashMap<String, Boolean> implem
   public String getName() {
     return name;
   }
+
   public void setName(String name) {
     this.name = name;
   }
 
-
   @Override
   public boolean equals(java.lang.Object o) {
     if (this == o) {
@@ -76,5 +73,24 @@ public class AdditionalPropertiesBoolean extends HashMap<String, Boolean> implem
     }
     return o.toString().replace("\n", "\n    ");
   }
+
+  public static Builder builder() {
+    return new Builder();
+  }
+
+  public static class Builder {
+    private String name;
+
+    /**
+      **/
+    public Builder name(String name) {
+      this.name = name;
+      return this;
+    }
+
+    public AdditionalPropertiesBoolean build() {
+      return new AdditionalPropertiesBoolean(name);
+    }
+  }
 }
 
diff --git a/samples/server/petstore/jaxrs-spec/src/gen/java/org/openapitools/model/AdditionalPropertiesClass.java b/samples/server/petstore/jaxrs-spec/src/gen/java/org/openapitools/model/AdditionalPropertiesClass.java
index c70f3d5171d5b87ca806d5a0fe38216ee0b45319..6ac45541de7f6e38f413a05917a580b6b7ba628e 100644
--- a/samples/server/petstore/jaxrs-spec/src/gen/java/org/openapitools/model/AdditionalPropertiesClass.java
+++ b/samples/server/petstore/jaxrs-spec/src/gen/java/org/openapitools/model/AdditionalPropertiesClass.java
@@ -32,11 +32,18 @@ public class AdditionalPropertiesClass  implements Serializable {
   private @Valid Object anytype2;
   private @Valid Object anytype3;
 
-  /**
-   **/
-  public AdditionalPropertiesClass mapString(Map<String, String> mapString) {
+  public AdditionalPropertiesClass(Map<String, String> mapString, Map<String, BigDecimal> mapNumber, Map<String, Integer> mapInteger, Map<String, Boolean> mapBoolean, Map<String, List<Integer>> mapArrayInteger, Map<String, List<Object>> mapArrayAnytype, Map<String, Map<String, String>> mapMapString, Map<String, Map<String, Object>> mapMapAnytype, Object anytype1, Object anytype2, Object anytype3) {
     this.mapString = mapString;
-    return this;
+    this.mapNumber = mapNumber;
+    this.mapInteger = mapInteger;
+    this.mapBoolean = mapBoolean;
+    this.mapArrayInteger = mapArrayInteger;
+    this.mapArrayAnytype = mapArrayAnytype;
+    this.mapMapString = mapMapString;
+    this.mapMapAnytype = mapMapAnytype;
+    this.anytype1 = anytype1;
+    this.anytype2 = anytype2;
+    this.anytype3 = anytype3;
   }
 
   
@@ -45,181 +52,101 @@ public class AdditionalPropertiesClass  implements Serializable {
   public Map<String, String> getMapString() {
     return mapString;
   }
+
   public void setMapString(Map<String, String> mapString) {
     this.mapString = mapString;
   }
-
-  /**
-   **/
-  public AdditionalPropertiesClass mapNumber(Map<String, BigDecimal> mapNumber) {
-    this.mapNumber = mapNumber;
-    return this;
-  }
-
-  
   @ApiModelProperty(value = "")
   @JsonProperty("map_number")
   public Map<String, BigDecimal> getMapNumber() {
     return mapNumber;
   }
+
   public void setMapNumber(Map<String, BigDecimal> mapNumber) {
     this.mapNumber = mapNumber;
   }
-
-  /**
-   **/
-  public AdditionalPropertiesClass mapInteger(Map<String, Integer> mapInteger) {
-    this.mapInteger = mapInteger;
-    return this;
-  }
-
-  
   @ApiModelProperty(value = "")
   @JsonProperty("map_integer")
   public Map<String, Integer> getMapInteger() {
     return mapInteger;
   }
+
   public void setMapInteger(Map<String, Integer> mapInteger) {
     this.mapInteger = mapInteger;
   }
-
-  /**
-   **/
-  public AdditionalPropertiesClass mapBoolean(Map<String, Boolean> mapBoolean) {
-    this.mapBoolean = mapBoolean;
-    return this;
-  }
-
-  
   @ApiModelProperty(value = "")
   @JsonProperty("map_boolean")
   public Map<String, Boolean> getMapBoolean() {
     return mapBoolean;
   }
+
   public void setMapBoolean(Map<String, Boolean> mapBoolean) {
     this.mapBoolean = mapBoolean;
   }
-
-  /**
-   **/
-  public AdditionalPropertiesClass mapArrayInteger(Map<String, List<Integer>> mapArrayInteger) {
-    this.mapArrayInteger = mapArrayInteger;
-    return this;
-  }
-
-  
   @ApiModelProperty(value = "")
   @JsonProperty("map_array_integer")
   public Map<String, List<Integer>> getMapArrayInteger() {
     return mapArrayInteger;
   }
+
   public void setMapArrayInteger(Map<String, List<Integer>> mapArrayInteger) {
     this.mapArrayInteger = mapArrayInteger;
   }
-
-  /**
-   **/
-  public AdditionalPropertiesClass mapArrayAnytype(Map<String, List<Object>> mapArrayAnytype) {
-    this.mapArrayAnytype = mapArrayAnytype;
-    return this;
-  }
-
-  
   @ApiModelProperty(value = "")
   @JsonProperty("map_array_anytype")
   public Map<String, List<Object>> getMapArrayAnytype() {
     return mapArrayAnytype;
   }
+
   public void setMapArrayAnytype(Map<String, List<Object>> mapArrayAnytype) {
     this.mapArrayAnytype = mapArrayAnytype;
   }
-
-  /**
-   **/
-  public AdditionalPropertiesClass mapMapString(Map<String, Map<String, String>> mapMapString) {
-    this.mapMapString = mapMapString;
-    return this;
-  }
-
-  
   @ApiModelProperty(value = "")
   @JsonProperty("map_map_string")
   public Map<String, Map<String, String>> getMapMapString() {
     return mapMapString;
   }
+
   public void setMapMapString(Map<String, Map<String, String>> mapMapString) {
     this.mapMapString = mapMapString;
   }
-
-  /**
-   **/
-  public AdditionalPropertiesClass mapMapAnytype(Map<String, Map<String, Object>> mapMapAnytype) {
-    this.mapMapAnytype = mapMapAnytype;
-    return this;
-  }
-
-  
   @ApiModelProperty(value = "")
   @JsonProperty("map_map_anytype")
   public Map<String, Map<String, Object>> getMapMapAnytype() {
     return mapMapAnytype;
   }
+
   public void setMapMapAnytype(Map<String, Map<String, Object>> mapMapAnytype) {
     this.mapMapAnytype = mapMapAnytype;
   }
-
-  /**
-   **/
-  public AdditionalPropertiesClass anytype1(Object anytype1) {
-    this.anytype1 = anytype1;
-    return this;
-  }
-
-  
   @ApiModelProperty(value = "")
   @JsonProperty("anytype_1")
   public Object getAnytype1() {
     return anytype1;
   }
+
   public void setAnytype1(Object anytype1) {
     this.anytype1 = anytype1;
   }
-
-  /**
-   **/
-  public AdditionalPropertiesClass anytype2(Object anytype2) {
-    this.anytype2 = anytype2;
-    return this;
-  }
-
-  
   @ApiModelProperty(value = "")
   @JsonProperty("anytype_2")
   public Object getAnytype2() {
     return anytype2;
   }
+
   public void setAnytype2(Object anytype2) {
     this.anytype2 = anytype2;
   }
-
-  /**
-   **/
-  public AdditionalPropertiesClass anytype3(Object anytype3) {
-    this.anytype3 = anytype3;
-    return this;
-  }
-
-  
   @ApiModelProperty(value = "")
   @JsonProperty("anytype_3")
   public Object getAnytype3() {
     return anytype3;
   }
+
   public void setAnytype3(Object anytype3) {
     this.anytype3 = anytype3;
   }
 
-
   @Override
   public boolean equals(java.lang.Object o) {
     if (this == o) {
@@ -277,5 +204,94 @@ public class AdditionalPropertiesClass  implements Serializable {
     }
     return o.toString().replace("\n", "\n    ");
   }
+
+  public static Builder builder() {
+    return new Builder();
+  }
+
+  public static class Builder {
+    private Map<String, String> mapString = new HashMap<String, String>();
+    private Map<String, BigDecimal> mapNumber = new HashMap<String, BigDecimal>();
+    private Map<String, Integer> mapInteger = new HashMap<String, Integer>();
+    private Map<String, Boolean> mapBoolean = new HashMap<String, Boolean>();
+    private Map<String, List<Integer>> mapArrayInteger = new HashMap<String, List<Integer>>();
+    private Map<String, List<Object>> mapArrayAnytype = new HashMap<String, List<Object>>();
+    private Map<String, Map<String, String>> mapMapString = new HashMap<String, Map<String, String>>();
+    private Map<String, Map<String, Object>> mapMapAnytype = new HashMap<String, Map<String, Object>>();
+    private Object anytype1;
+    private Object anytype2;
+    private Object anytype3;
+
+    /**
+      **/
+    public Builder mapString(Map<String, String> mapString) {
+      this.mapString = mapString;
+      return this;
+    }
+    /**
+      **/
+    public Builder mapNumber(Map<String, BigDecimal> mapNumber) {
+      this.mapNumber = mapNumber;
+      return this;
+    }
+    /**
+      **/
+    public Builder mapInteger(Map<String, Integer> mapInteger) {
+      this.mapInteger = mapInteger;
+      return this;
+    }
+    /**
+      **/
+    public Builder mapBoolean(Map<String, Boolean> mapBoolean) {
+      this.mapBoolean = mapBoolean;
+      return this;
+    }
+    /**
+      **/
+    public Builder mapArrayInteger(Map<String, List<Integer>> mapArrayInteger) {
+      this.mapArrayInteger = mapArrayInteger;
+      return this;
+    }
+    /**
+      **/
+    public Builder mapArrayAnytype(Map<String, List<Object>> mapArrayAnytype) {
+      this.mapArrayAnytype = mapArrayAnytype;
+      return this;
+    }
+    /**
+      **/
+    public Builder mapMapString(Map<String, Map<String, String>> mapMapString) {
+      this.mapMapString = mapMapString;
+      return this;
+    }
+    /**
+      **/
+    public Builder mapMapAnytype(Map<String, Map<String, Object>> mapMapAnytype) {
+      this.mapMapAnytype = mapMapAnytype;
+      return this;
+    }
+    /**
+      **/
+    public Builder anytype1(Object anytype1) {
+      this.anytype1 = anytype1;
+      return this;
+    }
+    /**
+      **/
+    public Builder anytype2(Object anytype2) {
+      this.anytype2 = anytype2;
+      return this;
+    }
+    /**
+      **/
+    public Builder anytype3(Object anytype3) {
+      this.anytype3 = anytype3;
+      return this;
+    }
+
+    public AdditionalPropertiesClass build() {
+      return new AdditionalPropertiesClass(mapString, mapNumber, mapInteger, mapBoolean, mapArrayInteger, mapArrayAnytype, mapMapString, mapMapAnytype, anytype1, anytype2, anytype3);
+    }
+  }
 }
 
diff --git a/samples/server/petstore/jaxrs-spec/src/gen/java/org/openapitools/model/AdditionalPropertiesInteger.java b/samples/server/petstore/jaxrs-spec/src/gen/java/org/openapitools/model/AdditionalPropertiesInteger.java
index c2c81ea584e1fa440e44136b77a39aff5fafc8f5..d90d6b1cfe15c8121331285254e8d6caa2aff9e1 100644
--- a/samples/server/petstore/jaxrs-spec/src/gen/java/org/openapitools/model/AdditionalPropertiesInteger.java
+++ b/samples/server/petstore/jaxrs-spec/src/gen/java/org/openapitools/model/AdditionalPropertiesInteger.java
@@ -20,11 +20,8 @@ public class AdditionalPropertiesInteger extends HashMap<String, Integer> implem
   
   private @Valid String name;
 
-  /**
-   **/
-  public AdditionalPropertiesInteger name(String name) {
+  public AdditionalPropertiesInteger(String name) {
     this.name = name;
-    return this;
   }
 
   
@@ -33,11 +30,11 @@ public class AdditionalPropertiesInteger extends HashMap<String, Integer> implem
   public String getName() {
     return name;
   }
+
   public void setName(String name) {
     this.name = name;
   }
 
-
   @Override
   public boolean equals(java.lang.Object o) {
     if (this == o) {
@@ -76,5 +73,24 @@ public class AdditionalPropertiesInteger extends HashMap<String, Integer> implem
     }
     return o.toString().replace("\n", "\n    ");
   }
+
+  public static Builder builder() {
+    return new Builder();
+  }
+
+  public static class Builder {
+    private String name;
+
+    /**
+      **/
+    public Builder name(String name) {
+      this.name = name;
+      return this;
+    }
+
+    public AdditionalPropertiesInteger build() {
+      return new AdditionalPropertiesInteger(name);
+    }
+  }
 }
 
diff --git a/samples/server/petstore/jaxrs-spec/src/gen/java/org/openapitools/model/AdditionalPropertiesNumber.java b/samples/server/petstore/jaxrs-spec/src/gen/java/org/openapitools/model/AdditionalPropertiesNumber.java
index b4b4fc2319788ddeba3d20c4d8be20aeb6c3152c..a0f02e3e3e50fe62f6bb7fabd0e04a35643631c5 100644
--- a/samples/server/petstore/jaxrs-spec/src/gen/java/org/openapitools/model/AdditionalPropertiesNumber.java
+++ b/samples/server/petstore/jaxrs-spec/src/gen/java/org/openapitools/model/AdditionalPropertiesNumber.java
@@ -21,11 +21,8 @@ public class AdditionalPropertiesNumber extends HashMap<String, BigDecimal> impl
   
   private @Valid String name;
 
-  /**
-   **/
-  public AdditionalPropertiesNumber name(String name) {
+  public AdditionalPropertiesNumber(String name) {
     this.name = name;
-    return this;
   }
 
   
@@ -34,11 +31,11 @@ public class AdditionalPropertiesNumber extends HashMap<String, BigDecimal> impl
   public String getName() {
     return name;
   }
+
   public void setName(String name) {
     this.name = name;
   }
 
-
   @Override
   public boolean equals(java.lang.Object o) {
     if (this == o) {
@@ -77,5 +74,24 @@ public class AdditionalPropertiesNumber extends HashMap<String, BigDecimal> impl
     }
     return o.toString().replace("\n", "\n    ");
   }
+
+  public static Builder builder() {
+    return new Builder();
+  }
+
+  public static class Builder {
+    private String name;
+
+    /**
+      **/
+    public Builder name(String name) {
+      this.name = name;
+      return this;
+    }
+
+    public AdditionalPropertiesNumber build() {
+      return new AdditionalPropertiesNumber(name);
+    }
+  }
 }
 
diff --git a/samples/server/petstore/jaxrs-spec/src/gen/java/org/openapitools/model/AdditionalPropertiesObject.java b/samples/server/petstore/jaxrs-spec/src/gen/java/org/openapitools/model/AdditionalPropertiesObject.java
index 90ecd845ef3be21e9ff264c85a4ab3a64292539a..78e0b9190bf83a2c637bcc41b2b49a87d027a82c 100644
--- a/samples/server/petstore/jaxrs-spec/src/gen/java/org/openapitools/model/AdditionalPropertiesObject.java
+++ b/samples/server/petstore/jaxrs-spec/src/gen/java/org/openapitools/model/AdditionalPropertiesObject.java
@@ -20,11 +20,8 @@ public class AdditionalPropertiesObject extends HashMap<String, Map> implements
   
   private @Valid String name;
 
-  /**
-   **/
-  public AdditionalPropertiesObject name(String name) {
+  public AdditionalPropertiesObject(String name) {
     this.name = name;
-    return this;
   }
 
   
@@ -33,11 +30,11 @@ public class AdditionalPropertiesObject extends HashMap<String, Map> implements
   public String getName() {
     return name;
   }
+
   public void setName(String name) {
     this.name = name;
   }
 
-
   @Override
   public boolean equals(java.lang.Object o) {
     if (this == o) {
@@ -76,5 +73,24 @@ public class AdditionalPropertiesObject extends HashMap<String, Map> implements
     }
     return o.toString().replace("\n", "\n    ");
   }
+
+  public static Builder builder() {
+    return new Builder();
+  }
+
+  public static class Builder {
+    private String name;
+
+    /**
+      **/
+    public Builder name(String name) {
+      this.name = name;
+      return this;
+    }
+
+    public AdditionalPropertiesObject build() {
+      return new AdditionalPropertiesObject(name);
+    }
+  }
 }
 
diff --git a/samples/server/petstore/jaxrs-spec/src/gen/java/org/openapitools/model/AdditionalPropertiesString.java b/samples/server/petstore/jaxrs-spec/src/gen/java/org/openapitools/model/AdditionalPropertiesString.java
index 1454d070380221126732bdd6fb7a28b00c78ed52..117551ee44016412de91733b1f947f16519f40b4 100644
--- a/samples/server/petstore/jaxrs-spec/src/gen/java/org/openapitools/model/AdditionalPropertiesString.java
+++ b/samples/server/petstore/jaxrs-spec/src/gen/java/org/openapitools/model/AdditionalPropertiesString.java
@@ -20,11 +20,8 @@ public class AdditionalPropertiesString extends HashMap<String, String> implemen
   
   private @Valid String name;
 
-  /**
-   **/
-  public AdditionalPropertiesString name(String name) {
+  public AdditionalPropertiesString(String name) {
     this.name = name;
-    return this;
   }
 
   
@@ -33,11 +30,11 @@ public class AdditionalPropertiesString extends HashMap<String, String> implemen
   public String getName() {
     return name;
   }
+
   public void setName(String name) {
     this.name = name;
   }
 
-
   @Override
   public boolean equals(java.lang.Object o) {
     if (this == o) {
@@ -76,5 +73,24 @@ public class AdditionalPropertiesString extends HashMap<String, String> implemen
     }
     return o.toString().replace("\n", "\n    ");
   }
+
+  public static Builder builder() {
+    return new Builder();
+  }
+
+  public static class Builder {
+    private String name;
+
+    /**
+      **/
+    public Builder name(String name) {
+      this.name = name;
+      return this;
+    }
+
+    public AdditionalPropertiesString build() {
+      return new AdditionalPropertiesString(name);
+    }
+  }
 }
 
diff --git a/samples/server/petstore/jaxrs-spec/src/gen/java/org/openapitools/model/Animal.java b/samples/server/petstore/jaxrs-spec/src/gen/java/org/openapitools/model/Animal.java
index 43bfbb7fd24d0136f5b98659e5258c812dfcba66..99dbe4b8989671a0c0f6e3f8f1b155c1c81055b1 100644
--- a/samples/server/petstore/jaxrs-spec/src/gen/java/org/openapitools/model/Animal.java
+++ b/samples/server/petstore/jaxrs-spec/src/gen/java/org/openapitools/model/Animal.java
@@ -27,11 +27,9 @@ public class Animal  implements Serializable {
   private @Valid String className;
   private @Valid String color = "red";
 
-  /**
-   **/
-  public Animal className(String className) {
+  public Animal(String className, String color) {
     this.className = className;
-    return this;
+    this.color = color;
   }
 
   
@@ -41,28 +39,20 @@ public class Animal  implements Serializable {
   public String getClassName() {
     return className;
   }
+
   public void setClassName(String className) {
     this.className = className;
   }
-
-  /**
-   **/
-  public Animal color(String color) {
-    this.color = color;
-    return this;
-  }
-
-  
   @ApiModelProperty(value = "")
   @JsonProperty("color")
   public String getColor() {
     return color;
   }
+
   public void setColor(String color) {
     this.color = color;
   }
 
-
   @Override
   public boolean equals(java.lang.Object o) {
     if (this == o) {
@@ -102,5 +92,31 @@ public class Animal  implements Serializable {
     }
     return o.toString().replace("\n", "\n    ");
   }
+
+  public static Builder builder() {
+    return new Builder();
+  }
+
+  public static class Builder {
+    private String className;
+    private String color = "red";
+
+    /**
+      **/
+    public Builder className(String className) {
+      this.className = className;
+      return this;
+    }
+    /**
+      **/
+    public Builder color(String color) {
+      this.color = color;
+      return this;
+    }
+
+    public Animal build() {
+      return new Animal(className, color);
+    }
+  }
 }
 
diff --git a/samples/server/petstore/jaxrs-spec/src/gen/java/org/openapitools/model/ArrayOfArrayOfNumberOnly.java b/samples/server/petstore/jaxrs-spec/src/gen/java/org/openapitools/model/ArrayOfArrayOfNumberOnly.java
index cc9abca8a2a84bcb85a38247b0f1832f1f9bfa12..4c7e6161185bcd73fae0525d371d1b3b4dbe5c7c 100644
--- a/samples/server/petstore/jaxrs-spec/src/gen/java/org/openapitools/model/ArrayOfArrayOfNumberOnly.java
+++ b/samples/server/petstore/jaxrs-spec/src/gen/java/org/openapitools/model/ArrayOfArrayOfNumberOnly.java
@@ -21,11 +21,8 @@ public class ArrayOfArrayOfNumberOnly  implements Serializable {
   
   private @Valid List<List<BigDecimal>> arrayArrayNumber = new ArrayList<List<BigDecimal>>();
 
-  /**
-   **/
-  public ArrayOfArrayOfNumberOnly arrayArrayNumber(List<List<BigDecimal>> arrayArrayNumber) {
+  public ArrayOfArrayOfNumberOnly(List<List<BigDecimal>> arrayArrayNumber) {
     this.arrayArrayNumber = arrayArrayNumber;
-    return this;
   }
 
   
@@ -34,11 +31,11 @@ public class ArrayOfArrayOfNumberOnly  implements Serializable {
   public List<List<BigDecimal>> getArrayArrayNumber() {
     return arrayArrayNumber;
   }
+
   public void setArrayArrayNumber(List<List<BigDecimal>> arrayArrayNumber) {
     this.arrayArrayNumber = arrayArrayNumber;
   }
 
-
   @Override
   public boolean equals(java.lang.Object o) {
     if (this == o) {
@@ -76,5 +73,24 @@ public class ArrayOfArrayOfNumberOnly  implements Serializable {
     }
     return o.toString().replace("\n", "\n    ");
   }
+
+  public static Builder builder() {
+    return new Builder();
+  }
+
+  public static class Builder {
+    private List<List<BigDecimal>> arrayArrayNumber = new ArrayList<List<BigDecimal>>();
+
+    /**
+      **/
+    public Builder arrayArrayNumber(List<List<BigDecimal>> arrayArrayNumber) {
+      this.arrayArrayNumber = arrayArrayNumber;
+      return this;
+    }
+
+    public ArrayOfArrayOfNumberOnly build() {
+      return new ArrayOfArrayOfNumberOnly(arrayArrayNumber);
+    }
+  }
 }
 
diff --git a/samples/server/petstore/jaxrs-spec/src/gen/java/org/openapitools/model/ArrayOfNumberOnly.java b/samples/server/petstore/jaxrs-spec/src/gen/java/org/openapitools/model/ArrayOfNumberOnly.java
index 40acdceef6a3d6517d125f0283922e2b36fc6498..ee848ee4d8cdfe6a5624583aa531d12a2e1f068a 100644
--- a/samples/server/petstore/jaxrs-spec/src/gen/java/org/openapitools/model/ArrayOfNumberOnly.java
+++ b/samples/server/petstore/jaxrs-spec/src/gen/java/org/openapitools/model/ArrayOfNumberOnly.java
@@ -21,11 +21,8 @@ public class ArrayOfNumberOnly  implements Serializable {
   
   private @Valid List<BigDecimal> arrayNumber = new ArrayList<BigDecimal>();
 
-  /**
-   **/
-  public ArrayOfNumberOnly arrayNumber(List<BigDecimal> arrayNumber) {
+  public ArrayOfNumberOnly(List<BigDecimal> arrayNumber) {
     this.arrayNumber = arrayNumber;
-    return this;
   }
 
   
@@ -34,11 +31,11 @@ public class ArrayOfNumberOnly  implements Serializable {
   public List<BigDecimal> getArrayNumber() {
     return arrayNumber;
   }
+
   public void setArrayNumber(List<BigDecimal> arrayNumber) {
     this.arrayNumber = arrayNumber;
   }
 
-
   @Override
   public boolean equals(java.lang.Object o) {
     if (this == o) {
@@ -76,5 +73,24 @@ public class ArrayOfNumberOnly  implements Serializable {
     }
     return o.toString().replace("\n", "\n    ");
   }
+
+  public static Builder builder() {
+    return new Builder();
+  }
+
+  public static class Builder {
+    private List<BigDecimal> arrayNumber = new ArrayList<BigDecimal>();
+
+    /**
+      **/
+    public Builder arrayNumber(List<BigDecimal> arrayNumber) {
+      this.arrayNumber = arrayNumber;
+      return this;
+    }
+
+    public ArrayOfNumberOnly build() {
+      return new ArrayOfNumberOnly(arrayNumber);
+    }
+  }
 }
 
diff --git a/samples/server/petstore/jaxrs-spec/src/gen/java/org/openapitools/model/ArrayTest.java b/samples/server/petstore/jaxrs-spec/src/gen/java/org/openapitools/model/ArrayTest.java
index bd3241465564b16d90f3256f71e463aca1806afa..194f3484185ebaffa2f52474761c6ca0f7b5350c 100644
--- a/samples/server/petstore/jaxrs-spec/src/gen/java/org/openapitools/model/ArrayTest.java
+++ b/samples/server/petstore/jaxrs-spec/src/gen/java/org/openapitools/model/ArrayTest.java
@@ -23,11 +23,10 @@ public class ArrayTest  implements Serializable {
   private @Valid List<List<Long>> arrayArrayOfInteger = new ArrayList<List<Long>>();
   private @Valid List<List<ReadOnlyFirst>> arrayArrayOfModel = new ArrayList<List<ReadOnlyFirst>>();
 
-  /**
-   **/
-  public ArrayTest arrayOfString(List<String> arrayOfString) {
+  public ArrayTest(List<String> arrayOfString, List<List<Long>> arrayArrayOfInteger, List<List<ReadOnlyFirst>> arrayArrayOfModel) {
     this.arrayOfString = arrayOfString;
-    return this;
+    this.arrayArrayOfInteger = arrayArrayOfInteger;
+    this.arrayArrayOfModel = arrayArrayOfModel;
   }
 
   
@@ -36,45 +35,29 @@ public class ArrayTest  implements Serializable {
   public List<String> getArrayOfString() {
     return arrayOfString;
   }
+
   public void setArrayOfString(List<String> arrayOfString) {
     this.arrayOfString = arrayOfString;
   }
-
-  /**
-   **/
-  public ArrayTest arrayArrayOfInteger(List<List<Long>> arrayArrayOfInteger) {
-    this.arrayArrayOfInteger = arrayArrayOfInteger;
-    return this;
-  }
-
-  
   @ApiModelProperty(value = "")
   @JsonProperty("array_array_of_integer")
   public List<List<Long>> getArrayArrayOfInteger() {
     return arrayArrayOfInteger;
   }
+
   public void setArrayArrayOfInteger(List<List<Long>> arrayArrayOfInteger) {
     this.arrayArrayOfInteger = arrayArrayOfInteger;
   }
-
-  /**
-   **/
-  public ArrayTest arrayArrayOfModel(List<List<ReadOnlyFirst>> arrayArrayOfModel) {
-    this.arrayArrayOfModel = arrayArrayOfModel;
-    return this;
-  }
-
-  
   @ApiModelProperty(value = "")
   @JsonProperty("array_array_of_model")
   public List<List<ReadOnlyFirst>> getArrayArrayOfModel() {
     return arrayArrayOfModel;
   }
+
   public void setArrayArrayOfModel(List<List<ReadOnlyFirst>> arrayArrayOfModel) {
     this.arrayArrayOfModel = arrayArrayOfModel;
   }
 
-
   @Override
   public boolean equals(java.lang.Object o) {
     if (this == o) {
@@ -116,5 +99,38 @@ public class ArrayTest  implements Serializable {
     }
     return o.toString().replace("\n", "\n    ");
   }
+
+  public static Builder builder() {
+    return new Builder();
+  }
+
+  public static class Builder {
+    private List<String> arrayOfString = new ArrayList<String>();
+    private List<List<Long>> arrayArrayOfInteger = new ArrayList<List<Long>>();
+    private List<List<ReadOnlyFirst>> arrayArrayOfModel = new ArrayList<List<ReadOnlyFirst>>();
+
+    /**
+      **/
+    public Builder arrayOfString(List<String> arrayOfString) {
+      this.arrayOfString = arrayOfString;
+      return this;
+    }
+    /**
+      **/
+    public Builder arrayArrayOfInteger(List<List<Long>> arrayArrayOfInteger) {
+      this.arrayArrayOfInteger = arrayArrayOfInteger;
+      return this;
+    }
+    /**
+      **/
+    public Builder arrayArrayOfModel(List<List<ReadOnlyFirst>> arrayArrayOfModel) {
+      this.arrayArrayOfModel = arrayArrayOfModel;
+      return this;
+    }
+
+    public ArrayTest build() {
+      return new ArrayTest(arrayOfString, arrayArrayOfInteger, arrayArrayOfModel);
+    }
+  }
 }
 
diff --git a/samples/server/petstore/jaxrs-spec/src/gen/java/org/openapitools/model/BigCat.java b/samples/server/petstore/jaxrs-spec/src/gen/java/org/openapitools/model/BigCat.java
index c3c4bfcfb59fc82d81625fc2bd01b6f9d187c143..159c185aeea21be9dbff458b2766127e697dfc71 100644
--- a/samples/server/petstore/jaxrs-spec/src/gen/java/org/openapitools/model/BigCat.java
+++ b/samples/server/petstore/jaxrs-spec/src/gen/java/org/openapitools/model/BigCat.java
@@ -53,11 +53,8 @@ public enum KindEnum {
 
   private @Valid KindEnum kind;
 
-  /**
-   **/
-  public BigCat kind(KindEnum kind) {
+  public BigCat(KindEnum kind) {
     this.kind = kind;
-    return this;
   }
 
   
@@ -66,11 +63,11 @@ public enum KindEnum {
   public KindEnum getKind() {
     return kind;
   }
+
   public void setKind(KindEnum kind) {
     this.kind = kind;
   }
 
-
   @Override
   public boolean equals(java.lang.Object o) {
     if (this == o) {
@@ -109,5 +106,24 @@ public enum KindEnum {
     }
     return o.toString().replace("\n", "\n    ");
   }
+
+  public static Builder builder() {
+    return new Builder();
+  }
+
+  public static class Builder {
+    private KindEnum kind;
+
+    /**
+      **/
+    public Builder kind(KindEnum kind) {
+      this.kind = kind;
+      return this;
+    }
+
+    public BigCat build() {
+      return new BigCat(kind);
+    }
+  }
 }
 
diff --git a/samples/server/petstore/jaxrs-spec/src/gen/java/org/openapitools/model/BigCatAllOf.java b/samples/server/petstore/jaxrs-spec/src/gen/java/org/openapitools/model/BigCatAllOf.java
index d3eb97becef2ec954c33f6493db34656833438a7..3adbecf3cb5fa7b04f09288d37d9c82d56edfbf0 100644
--- a/samples/server/petstore/jaxrs-spec/src/gen/java/org/openapitools/model/BigCatAllOf.java
+++ b/samples/server/petstore/jaxrs-spec/src/gen/java/org/openapitools/model/BigCatAllOf.java
@@ -51,11 +51,8 @@ public enum KindEnum {
 
   private @Valid KindEnum kind;
 
-  /**
-   **/
-  public BigCatAllOf kind(KindEnum kind) {
+  public BigCatAllOf(KindEnum kind) {
     this.kind = kind;
-    return this;
   }
 
   
@@ -64,11 +61,11 @@ public enum KindEnum {
   public KindEnum getKind() {
     return kind;
   }
+
   public void setKind(KindEnum kind) {
     this.kind = kind;
   }
 
-
   @Override
   public boolean equals(java.lang.Object o) {
     if (this == o) {
@@ -106,5 +103,24 @@ public enum KindEnum {
     }
     return o.toString().replace("\n", "\n    ");
   }
+
+  public static Builder builder() {
+    return new Builder();
+  }
+
+  public static class Builder {
+    private KindEnum kind;
+
+    /**
+      **/
+    public Builder kind(KindEnum kind) {
+      this.kind = kind;
+      return this;
+    }
+
+    public BigCatAllOf build() {
+      return new BigCatAllOf(kind);
+    }
+  }
 }
 
diff --git a/samples/server/petstore/jaxrs-spec/src/gen/java/org/openapitools/model/Capitalization.java b/samples/server/petstore/jaxrs-spec/src/gen/java/org/openapitools/model/Capitalization.java
index 9c9d8a8f4255c86fe3b68fe74a832f990e554cd1..318dd912e7d4fac8ab9cc31106b6f6ba6f41ce01 100644
--- a/samples/server/petstore/jaxrs-spec/src/gen/java/org/openapitools/model/Capitalization.java
+++ b/samples/server/petstore/jaxrs-spec/src/gen/java/org/openapitools/model/Capitalization.java
@@ -23,11 +23,13 @@ public class Capitalization  implements Serializable {
   private @Valid String scAETHFlowPoints;
   private @Valid String ATT_NAME;
 
-  /**
-   **/
-  public Capitalization smallCamel(String smallCamel) {
+  public Capitalization(String smallCamel, String capitalCamel, String smallSnake, String capitalSnake, String scAETHFlowPoints, String ATT_NAME) {
     this.smallCamel = smallCamel;
-    return this;
+    this.capitalCamel = capitalCamel;
+    this.smallSnake = smallSnake;
+    this.capitalSnake = capitalSnake;
+    this.scAETHFlowPoints = scAETHFlowPoints;
+    this.ATT_NAME = ATT_NAME;
   }
 
   
@@ -36,97 +38,56 @@ public class Capitalization  implements Serializable {
   public String getSmallCamel() {
     return smallCamel;
   }
+
   public void setSmallCamel(String smallCamel) {
     this.smallCamel = smallCamel;
   }
-
-  /**
-   **/
-  public Capitalization capitalCamel(String capitalCamel) {
-    this.capitalCamel = capitalCamel;
-    return this;
-  }
-
-  
   @ApiModelProperty(value = "")
   @JsonProperty("CapitalCamel")
   public String getCapitalCamel() {
     return capitalCamel;
   }
+
   public void setCapitalCamel(String capitalCamel) {
     this.capitalCamel = capitalCamel;
   }
-
-  /**
-   **/
-  public Capitalization smallSnake(String smallSnake) {
-    this.smallSnake = smallSnake;
-    return this;
-  }
-
-  
   @ApiModelProperty(value = "")
   @JsonProperty("small_Snake")
   public String getSmallSnake() {
     return smallSnake;
   }
+
   public void setSmallSnake(String smallSnake) {
     this.smallSnake = smallSnake;
   }
-
-  /**
-   **/
-  public Capitalization capitalSnake(String capitalSnake) {
-    this.capitalSnake = capitalSnake;
-    return this;
-  }
-
-  
   @ApiModelProperty(value = "")
   @JsonProperty("Capital_Snake")
   public String getCapitalSnake() {
     return capitalSnake;
   }
+
   public void setCapitalSnake(String capitalSnake) {
     this.capitalSnake = capitalSnake;
   }
-
-  /**
-   **/
-  public Capitalization scAETHFlowPoints(String scAETHFlowPoints) {
-    this.scAETHFlowPoints = scAETHFlowPoints;
-    return this;
-  }
-
-  
   @ApiModelProperty(value = "")
   @JsonProperty("SCA_ETH_Flow_Points")
   public String getScAETHFlowPoints() {
     return scAETHFlowPoints;
   }
+
   public void setScAETHFlowPoints(String scAETHFlowPoints) {
     this.scAETHFlowPoints = scAETHFlowPoints;
   }
-
-  /**
-   * Name of the pet 
-   **/
-  public Capitalization ATT_NAME(String ATT_NAME) {
-    this.ATT_NAME = ATT_NAME;
-    return this;
-  }
-
-  
   @ApiModelProperty(value = "Name of the pet ")
   @JsonProperty("ATT_NAME")
   public String getATTNAME() {
     return ATT_NAME;
   }
+
   public void setATTNAME(String ATT_NAME) {
     this.ATT_NAME = ATT_NAME;
   }
 
-
   @Override
   public boolean equals(java.lang.Object o) {
     if (this == o) {
@@ -174,5 +135,60 @@ public class Capitalization  implements Serializable {
     }
     return o.toString().replace("\n", "\n    ");
   }
+
+  public static Builder builder() {
+    return new Builder();
+  }
+
+  public static class Builder {
+    private String smallCamel;
+    private String capitalCamel;
+    private String smallSnake;
+    private String capitalSnake;
+    private String scAETHFlowPoints;
+    private String ATT_NAME;
+
+    /**
+      **/
+    public Builder smallCamel(String smallCamel) {
+      this.smallCamel = smallCamel;
+      return this;
+    }
+    /**
+      **/
+    public Builder capitalCamel(String capitalCamel) {
+      this.capitalCamel = capitalCamel;
+      return this;
+    }
+    /**
+      **/
+    public Builder smallSnake(String smallSnake) {
+      this.smallSnake = smallSnake;
+      return this;
+    }
+    /**
+      **/
+    public Builder capitalSnake(String capitalSnake) {
+      this.capitalSnake = capitalSnake;
+      return this;
+    }
+    /**
+      **/
+    public Builder scAETHFlowPoints(String scAETHFlowPoints) {
+      this.scAETHFlowPoints = scAETHFlowPoints;
+      return this;
+    }
+    /**
+      * Name of the pet 
+      **/
+    public Builder ATT_NAME(String ATT_NAME) {
+      this.ATT_NAME = ATT_NAME;
+      return this;
+    }
+
+    public Capitalization build() {
+      return new Capitalization(smallCamel, capitalCamel, smallSnake, capitalSnake, scAETHFlowPoints, ATT_NAME);
+    }
+  }
 }
 
diff --git a/samples/server/petstore/jaxrs-spec/src/gen/java/org/openapitools/model/Cat.java b/samples/server/petstore/jaxrs-spec/src/gen/java/org/openapitools/model/Cat.java
index 12cfde8994abb7b23a245b2b1613105f902cedaa..8114f8af8f3b3b278e45d30d773dfdc72eda4df6 100644
--- a/samples/server/petstore/jaxrs-spec/src/gen/java/org/openapitools/model/Cat.java
+++ b/samples/server/petstore/jaxrs-spec/src/gen/java/org/openapitools/model/Cat.java
@@ -20,11 +20,8 @@ public class Cat extends Animal implements Serializable {
   
   private @Valid Boolean declawed;
 
-  /**
-   **/
-  public Cat declawed(Boolean declawed) {
+  public Cat(Boolean declawed) {
     this.declawed = declawed;
-    return this;
   }
 
   
@@ -33,11 +30,11 @@ public class Cat extends Animal implements Serializable {
   public Boolean getDeclawed() {
     return declawed;
   }
+
   public void setDeclawed(Boolean declawed) {
     this.declawed = declawed;
   }
 
-
   @Override
   public boolean equals(java.lang.Object o) {
     if (this == o) {
@@ -76,5 +73,24 @@ public class Cat extends Animal implements Serializable {
     }
     return o.toString().replace("\n", "\n    ");
   }
+
+  public static Builder builder() {
+    return new Builder();
+  }
+
+  public static class Builder {
+    private Boolean declawed;
+
+    /**
+      **/
+    public Builder declawed(Boolean declawed) {
+      this.declawed = declawed;
+      return this;
+    }
+
+    public Cat build() {
+      return new Cat(declawed);
+    }
+  }
 }
 
diff --git a/samples/server/petstore/jaxrs-spec/src/gen/java/org/openapitools/model/CatAllOf.java b/samples/server/petstore/jaxrs-spec/src/gen/java/org/openapitools/model/CatAllOf.java
index 66bfa279966f754854efab7004b3cd8fb58d9fb1..b9bae4cb25b2aae89737081c2af73549fe80479b 100644
--- a/samples/server/petstore/jaxrs-spec/src/gen/java/org/openapitools/model/CatAllOf.java
+++ b/samples/server/petstore/jaxrs-spec/src/gen/java/org/openapitools/model/CatAllOf.java
@@ -18,11 +18,8 @@ public class CatAllOf  implements Serializable {
   
   private @Valid Boolean declawed;
 
-  /**
-   **/
-  public CatAllOf declawed(Boolean declawed) {
+  public CatAllOf(Boolean declawed) {
     this.declawed = declawed;
-    return this;
   }
 
   
@@ -31,11 +28,11 @@ public class CatAllOf  implements Serializable {
   public Boolean getDeclawed() {
     return declawed;
   }
+
   public void setDeclawed(Boolean declawed) {
     this.declawed = declawed;
   }
 
-
   @Override
   public boolean equals(java.lang.Object o) {
     if (this == o) {
@@ -73,5 +70,24 @@ public class CatAllOf  implements Serializable {
     }
     return o.toString().replace("\n", "\n    ");
   }
+
+  public static Builder builder() {
+    return new Builder();
+  }
+
+  public static class Builder {
+    private Boolean declawed;
+
+    /**
+      **/
+    public Builder declawed(Boolean declawed) {
+      this.declawed = declawed;
+      return this;
+    }
+
+    public CatAllOf build() {
+      return new CatAllOf(declawed);
+    }
+  }
 }
 
diff --git a/samples/server/petstore/jaxrs-spec/src/gen/java/org/openapitools/model/Category.java b/samples/server/petstore/jaxrs-spec/src/gen/java/org/openapitools/model/Category.java
index fa0c47ddd86d3c34cd3bf63491518b52130057d3..c9a470ad6c0a10c878d0cd43ab4fa34f0705d947 100644
--- a/samples/server/petstore/jaxrs-spec/src/gen/java/org/openapitools/model/Category.java
+++ b/samples/server/petstore/jaxrs-spec/src/gen/java/org/openapitools/model/Category.java
@@ -19,11 +19,9 @@ public class Category  implements Serializable {
   private @Valid Long id;
   private @Valid String name = "default-name";
 
-  /**
-   **/
-  public Category id(Long id) {
+  public Category(Long id, String name) {
     this.id = id;
-    return this;
+    this.name = name;
   }
 
   
@@ -32,29 +30,21 @@ public class Category  implements Serializable {
   public Long getId() {
     return id;
   }
+
   public void setId(Long id) {
     this.id = id;
   }
-
-  /**
-   **/
-  public Category name(String name) {
-    this.name = name;
-    return this;
-  }
-
-  
   @ApiModelProperty(required = true, value = "")
   @JsonProperty("name")
   @NotNull
   public String getName() {
     return name;
   }
+
   public void setName(String name) {
     this.name = name;
   }
 
-
   @Override
   public boolean equals(java.lang.Object o) {
     if (this == o) {
@@ -94,5 +84,31 @@ public class Category  implements Serializable {
     }
     return o.toString().replace("\n", "\n    ");
   }
+
+  public static Builder builder() {
+    return new Builder();
+  }
+
+  public static class Builder {
+    private Long id;
+    private String name = "default-name";
+
+    /**
+      **/
+    public Builder id(Long id) {
+      this.id = id;
+      return this;
+    }
+    /**
+      **/
+    public Builder name(String name) {
+      this.name = name;
+      return this;
+    }
+
+    public Category build() {
+      return new Category(id, name);
+    }
+  }
 }
 
diff --git a/samples/server/petstore/jaxrs-spec/src/gen/java/org/openapitools/model/ClassModel.java b/samples/server/petstore/jaxrs-spec/src/gen/java/org/openapitools/model/ClassModel.java
index 19e12db649337433f24e05197d0fc972fa2ba75f..76dd39d9c1581c43f9c4ca4542a72affc0680adc 100644
--- a/samples/server/petstore/jaxrs-spec/src/gen/java/org/openapitools/model/ClassModel.java
+++ b/samples/server/petstore/jaxrs-spec/src/gen/java/org/openapitools/model/ClassModel.java
@@ -12,7 +12,6 @@ import com.fasterxml.jackson.annotation.JsonProperty;
 import com.fasterxml.jackson.annotation.JsonCreator;
 import com.fasterxml.jackson.annotation.JsonValue;
 
-
 /**
  * Model for testing model with \&quot;_class\&quot; property
  **/
@@ -21,11 +20,8 @@ public class ClassModel  implements Serializable {
   
   private @Valid String propertyClass;
 
-  /**
-   **/
-  public ClassModel propertyClass(String propertyClass) {
+  public ClassModel(String propertyClass) {
     this.propertyClass = propertyClass;
-    return this;
   }
 
   
@@ -34,11 +30,11 @@ public class ClassModel  implements Serializable {
   public String getPropertyClass() {
     return propertyClass;
   }
+
   public void setPropertyClass(String propertyClass) {
     this.propertyClass = propertyClass;
   }
 
-
   @Override
   public boolean equals(java.lang.Object o) {
     if (this == o) {
@@ -76,5 +72,24 @@ public class ClassModel  implements Serializable {
     }
     return o.toString().replace("\n", "\n    ");
   }
+
+  public static Builder builder() {
+    return new Builder();
+  }
+
+  public static class Builder {
+    private String propertyClass;
+
+    /**
+      **/
+    public Builder propertyClass(String propertyClass) {
+      this.propertyClass = propertyClass;
+      return this;
+    }
+
+    public ClassModel build() {
+      return new ClassModel(propertyClass);
+    }
+  }
 }
 
diff --git a/samples/server/petstore/jaxrs-spec/src/gen/java/org/openapitools/model/Client.java b/samples/server/petstore/jaxrs-spec/src/gen/java/org/openapitools/model/Client.java
index 9703ba67fc95331d18442048bbbf22920606b78d..dd6bb5f2b16f61727bc95e3a71b1b1eb8d6e4925 100644
--- a/samples/server/petstore/jaxrs-spec/src/gen/java/org/openapitools/model/Client.java
+++ b/samples/server/petstore/jaxrs-spec/src/gen/java/org/openapitools/model/Client.java
@@ -18,11 +18,8 @@ public class Client  implements Serializable {
   
   private @Valid String client;
 
-  /**
-   **/
-  public Client client(String client) {
+  public Client(String client) {
     this.client = client;
-    return this;
   }
 
   
@@ -31,11 +28,11 @@ public class Client  implements Serializable {
   public String getClient() {
     return client;
   }
+
   public void setClient(String client) {
     this.client = client;
   }
 
-
   @Override
   public boolean equals(java.lang.Object o) {
     if (this == o) {
@@ -73,5 +70,24 @@ public class Client  implements Serializable {
     }
     return o.toString().replace("\n", "\n    ");
   }
+
+  public static Builder builder() {
+    return new Builder();
+  }
+
+  public static class Builder {
+    private String client;
+
+    /**
+      **/
+    public Builder client(String client) {
+      this.client = client;
+      return this;
+    }
+
+    public Client build() {
+      return new Client(client);
+    }
+  }
 }
 
diff --git a/samples/server/petstore/jaxrs-spec/src/gen/java/org/openapitools/model/Dog.java b/samples/server/petstore/jaxrs-spec/src/gen/java/org/openapitools/model/Dog.java
index 685f46dcdd48419dc751055f897525d61f837e94..cbc66a24537162edb774e234d871d6e417904345 100644
--- a/samples/server/petstore/jaxrs-spec/src/gen/java/org/openapitools/model/Dog.java
+++ b/samples/server/petstore/jaxrs-spec/src/gen/java/org/openapitools/model/Dog.java
@@ -20,11 +20,8 @@ public class Dog extends Animal implements Serializable {
   
   private @Valid String breed;
 
-  /**
-   **/
-  public Dog breed(String breed) {
+  public Dog(String breed) {
     this.breed = breed;
-    return this;
   }
 
   
@@ -33,11 +30,11 @@ public class Dog extends Animal implements Serializable {
   public String getBreed() {
     return breed;
   }
+
   public void setBreed(String breed) {
     this.breed = breed;
   }
 
-
   @Override
   public boolean equals(java.lang.Object o) {
     if (this == o) {
@@ -76,5 +73,24 @@ public class Dog extends Animal implements Serializable {
     }
     return o.toString().replace("\n", "\n    ");
   }
+
+  public static Builder builder() {
+    return new Builder();
+  }
+
+  public static class Builder {
+    private String breed;
+
+    /**
+      **/
+    public Builder breed(String breed) {
+      this.breed = breed;
+      return this;
+    }
+
+    public Dog build() {
+      return new Dog(breed);
+    }
+  }
 }
 
diff --git a/samples/server/petstore/jaxrs-spec/src/gen/java/org/openapitools/model/DogAllOf.java b/samples/server/petstore/jaxrs-spec/src/gen/java/org/openapitools/model/DogAllOf.java
index dfcbfe7e72adaf936d2d06086e04217296164ed7..a689baa6e26375a24f9be0dbb48bbedbb83e9a5f 100644
--- a/samples/server/petstore/jaxrs-spec/src/gen/java/org/openapitools/model/DogAllOf.java
+++ b/samples/server/petstore/jaxrs-spec/src/gen/java/org/openapitools/model/DogAllOf.java
@@ -18,11 +18,8 @@ public class DogAllOf  implements Serializable {
   
   private @Valid String breed;
 
-  /**
-   **/
-  public DogAllOf breed(String breed) {
+  public DogAllOf(String breed) {
     this.breed = breed;
-    return this;
   }
 
   
@@ -31,11 +28,11 @@ public class DogAllOf  implements Serializable {
   public String getBreed() {
     return breed;
   }
+
   public void setBreed(String breed) {
     this.breed = breed;
   }
 
-
   @Override
   public boolean equals(java.lang.Object o) {
     if (this == o) {
@@ -73,5 +70,24 @@ public class DogAllOf  implements Serializable {
     }
     return o.toString().replace("\n", "\n    ");
   }
+
+  public static Builder builder() {
+    return new Builder();
+  }
+
+  public static class Builder {
+    private String breed;
+
+    /**
+      **/
+    public Builder breed(String breed) {
+      this.breed = breed;
+      return this;
+    }
+
+    public DogAllOf build() {
+      return new DogAllOf(breed);
+    }
+  }
 }
 
diff --git a/samples/server/petstore/jaxrs-spec/src/gen/java/org/openapitools/model/EnumArrays.java b/samples/server/petstore/jaxrs-spec/src/gen/java/org/openapitools/model/EnumArrays.java
index 9a422c1c5540dbbab7c23940027f3300d7864efc..006a6471b464231ff93a94eadeccacdcfe304317 100644
--- a/samples/server/petstore/jaxrs-spec/src/gen/java/org/openapitools/model/EnumArrays.java
+++ b/samples/server/petstore/jaxrs-spec/src/gen/java/org/openapitools/model/EnumArrays.java
@@ -87,11 +87,9 @@ public enum ArrayEnumEnum {
 
   private @Valid List<ArrayEnumEnum> arrayEnum = new ArrayList<ArrayEnumEnum>();
 
-  /**
-   **/
-  public EnumArrays justSymbol(JustSymbolEnum justSymbol) {
+  public EnumArrays(JustSymbolEnum justSymbol, List<ArrayEnumEnum> arrayEnum) {
     this.justSymbol = justSymbol;
-    return this;
+    this.arrayEnum = arrayEnum;
   }
 
   
@@ -100,28 +98,20 @@ public enum ArrayEnumEnum {
   public JustSymbolEnum getJustSymbol() {
     return justSymbol;
   }
+
   public void setJustSymbol(JustSymbolEnum justSymbol) {
     this.justSymbol = justSymbol;
   }
-
-  /**
-   **/
-  public EnumArrays arrayEnum(List<ArrayEnumEnum> arrayEnum) {
-    this.arrayEnum = arrayEnum;
-    return this;
-  }
-
-  
   @ApiModelProperty(value = "")
   @JsonProperty("array_enum")
   public List<ArrayEnumEnum> getArrayEnum() {
     return arrayEnum;
   }
+
   public void setArrayEnum(List<ArrayEnumEnum> arrayEnum) {
     this.arrayEnum = arrayEnum;
   }
 
-
   @Override
   public boolean equals(java.lang.Object o) {
     if (this == o) {
@@ -161,5 +151,31 @@ public enum ArrayEnumEnum {
     }
     return o.toString().replace("\n", "\n    ");
   }
+
+  public static Builder builder() {
+    return new Builder();
+  }
+
+  public static class Builder {
+    private JustSymbolEnum justSymbol;
+    private List<ArrayEnumEnum> arrayEnum = new ArrayList<ArrayEnumEnum>();
+
+    /**
+      **/
+    public Builder justSymbol(JustSymbolEnum justSymbol) {
+      this.justSymbol = justSymbol;
+      return this;
+    }
+    /**
+      **/
+    public Builder arrayEnum(List<ArrayEnumEnum> arrayEnum) {
+      this.arrayEnum = arrayEnum;
+      return this;
+    }
+
+    public EnumArrays build() {
+      return new EnumArrays(justSymbol, arrayEnum);
+    }
+  }
 }
 
diff --git a/samples/server/petstore/jaxrs-spec/src/gen/java/org/openapitools/model/EnumTest.java b/samples/server/petstore/jaxrs-spec/src/gen/java/org/openapitools/model/EnumTest.java
index 7dc8942410a062b3e5b2baad652d9b23d7b29a27..91cbf631ecad290ff2746ba5e3f1ef052dbc49f0 100644
--- a/samples/server/petstore/jaxrs-spec/src/gen/java/org/openapitools/model/EnumTest.java
+++ b/samples/server/petstore/jaxrs-spec/src/gen/java/org/openapitools/model/EnumTest.java
@@ -155,11 +155,12 @@ public enum EnumNumberEnum {
   private @Valid EnumNumberEnum enumNumber;
   private @Valid OuterEnum outerEnum;
 
-  /**
-   **/
-  public EnumTest enumString(EnumStringEnum enumString) {
+  public EnumTest(EnumStringEnum enumString, EnumStringRequiredEnum enumStringRequired, EnumIntegerEnum enumInteger, EnumNumberEnum enumNumber, OuterEnum outerEnum) {
     this.enumString = enumString;
-    return this;
+    this.enumStringRequired = enumStringRequired;
+    this.enumInteger = enumInteger;
+    this.enumNumber = enumNumber;
+    this.outerEnum = outerEnum;
   }
 
   
@@ -168,80 +169,48 @@ public enum EnumNumberEnum {
   public EnumStringEnum getEnumString() {
     return enumString;
   }
+
   public void setEnumString(EnumStringEnum enumString) {
     this.enumString = enumString;
   }
-
-  /**
-   **/
-  public EnumTest enumStringRequired(EnumStringRequiredEnum enumStringRequired) {
-    this.enumStringRequired = enumStringRequired;
-    return this;
-  }
-
-  
   @ApiModelProperty(required = true, value = "")
   @JsonProperty("enum_string_required")
   @NotNull
   public EnumStringRequiredEnum getEnumStringRequired() {
     return enumStringRequired;
   }
+
   public void setEnumStringRequired(EnumStringRequiredEnum enumStringRequired) {
     this.enumStringRequired = enumStringRequired;
   }
-
-  /**
-   **/
-  public EnumTest enumInteger(EnumIntegerEnum enumInteger) {
-    this.enumInteger = enumInteger;
-    return this;
-  }
-
-  
   @ApiModelProperty(value = "")
   @JsonProperty("enum_integer")
   public EnumIntegerEnum getEnumInteger() {
     return enumInteger;
   }
+
   public void setEnumInteger(EnumIntegerEnum enumInteger) {
     this.enumInteger = enumInteger;
   }
-
-  /**
-   **/
-  public EnumTest enumNumber(EnumNumberEnum enumNumber) {
-    this.enumNumber = enumNumber;
-    return this;
-  }
-
-  
   @ApiModelProperty(value = "")
   @JsonProperty("enum_number")
   public EnumNumberEnum getEnumNumber() {
     return enumNumber;
   }
+
   public void setEnumNumber(EnumNumberEnum enumNumber) {
     this.enumNumber = enumNumber;
   }
-
-  /**
-   **/
-  public EnumTest outerEnum(OuterEnum outerEnum) {
-    this.outerEnum = outerEnum;
-    return this;
-  }
-
-  
   @ApiModelProperty(value = "")
   @JsonProperty("outerEnum")
   public OuterEnum getOuterEnum() {
     return outerEnum;
   }
+
   public void setOuterEnum(OuterEnum outerEnum) {
     this.outerEnum = outerEnum;
   }
 
-
   @Override
   public boolean equals(java.lang.Object o) {
     if (this == o) {
@@ -287,5 +256,52 @@ public enum EnumNumberEnum {
     }
     return o.toString().replace("\n", "\n    ");
   }
+
+  public static Builder builder() {
+    return new Builder();
+  }
+
+  public static class Builder {
+    private EnumStringEnum enumString;
+    private EnumStringRequiredEnum enumStringRequired;
+    private EnumIntegerEnum enumInteger;
+    private EnumNumberEnum enumNumber;
+    private OuterEnum outerEnum;
+
+    /**
+      **/
+    public Builder enumString(EnumStringEnum enumString) {
+      this.enumString = enumString;
+      return this;
+    }
+    /**
+      **/
+    public Builder enumStringRequired(EnumStringRequiredEnum enumStringRequired) {
+      this.enumStringRequired = enumStringRequired;
+      return this;
+    }
+    /**
+      **/
+    public Builder enumInteger(EnumIntegerEnum enumInteger) {
+      this.enumInteger = enumInteger;
+      return this;
+    }
+    /**
+      **/
+    public Builder enumNumber(EnumNumberEnum enumNumber) {
+      this.enumNumber = enumNumber;
+      return this;
+    }
+    /**
+      **/
+    public Builder outerEnum(OuterEnum outerEnum) {
+      this.outerEnum = outerEnum;
+      return this;
+    }
+
+    public EnumTest build() {
+      return new EnumTest(enumString, enumStringRequired, enumInteger, enumNumber, outerEnum);
+    }
+  }
 }
 
diff --git a/samples/server/petstore/jaxrs-spec/src/gen/java/org/openapitools/model/FileSchemaTestClass.java b/samples/server/petstore/jaxrs-spec/src/gen/java/org/openapitools/model/FileSchemaTestClass.java
index e97c11e0df28b0a1f0720456634491d3e7d45843..ea12ff500d00d9bd0049bfe144610c1e8f2adc18 100644
--- a/samples/server/petstore/jaxrs-spec/src/gen/java/org/openapitools/model/FileSchemaTestClass.java
+++ b/samples/server/petstore/jaxrs-spec/src/gen/java/org/openapitools/model/FileSchemaTestClass.java
@@ -21,11 +21,9 @@ public class FileSchemaTestClass  implements Serializable {
   private @Valid java.io.File file;
   private @Valid List<java.io.File> files = new ArrayList<java.io.File>();
 
-  /**
-   **/
-  public FileSchemaTestClass file(java.io.File file) {
+  public FileSchemaTestClass(java.io.File file, List<java.io.File> files) {
     this.file = file;
-    return this;
+    this.files = files;
   }
 
   
@@ -34,28 +32,20 @@ public class FileSchemaTestClass  implements Serializable {
   public java.io.File getFile() {
     return file;
   }
+
   public void setFile(java.io.File file) {
     this.file = file;
   }
-
-  /**
-   **/
-  public FileSchemaTestClass files(List<java.io.File> files) {
-    this.files = files;
-    return this;
-  }
-
-  
   @ApiModelProperty(value = "")
   @JsonProperty("files")
   public List<java.io.File> getFiles() {
     return files;
   }
+
   public void setFiles(List<java.io.File> files) {
     this.files = files;
   }
 
-
   @Override
   public boolean equals(java.lang.Object o) {
     if (this == o) {
@@ -95,5 +85,31 @@ public class FileSchemaTestClass  implements Serializable {
     }
     return o.toString().replace("\n", "\n    ");
   }
+
+  public static Builder builder() {
+    return new Builder();
+  }
+
+  public static class Builder {
+    private java.io.File file;
+    private List<java.io.File> files = new ArrayList<java.io.File>();
+
+    /**
+      **/
+    public Builder file(java.io.File file) {
+      this.file = file;
+      return this;
+    }
+    /**
+      **/
+    public Builder files(List<java.io.File> files) {
+      this.files = files;
+      return this;
+    }
+
+    public FileSchemaTestClass build() {
+      return new FileSchemaTestClass(file, files);
+    }
+  }
 }
 
diff --git a/samples/server/petstore/jaxrs-spec/src/gen/java/org/openapitools/model/FormatTest.java b/samples/server/petstore/jaxrs-spec/src/gen/java/org/openapitools/model/FormatTest.java
index 7132d9908d61700f5c98c412630585d01e73d675..e8dc0317e1a117a04e462b9765f3b5e79979a512 100644
--- a/samples/server/petstore/jaxrs-spec/src/gen/java/org/openapitools/model/FormatTest.java
+++ b/samples/server/petstore/jaxrs-spec/src/gen/java/org/openapitools/model/FormatTest.java
@@ -36,13 +36,21 @@ public class FormatTest  implements Serializable {
   private @Valid String password;
   private @Valid BigDecimal bigDecimal;
 
-  /**
-   * minimum: 10
-   * maximum: 100
-   **/
-  public FormatTest integer(Integer integer) {
+  public FormatTest(Integer integer, Integer int32, Long int64, BigDecimal number, Float _float, Double _double, String string, byte[] _byte, File binary, LocalDate date, Date dateTime, UUID uuid, String password, BigDecimal bigDecimal) {
     this.integer = integer;
-    return this;
+    this.int32 = int32;
+    this.int64 = int64;
+    this.number = number;
+    this._float = _float;
+    this._double = _double;
+    this.string = string;
+    this._byte = _byte;
+    this.binary = binary;
+    this.date = date;
+    this.dateTime = dateTime;
+    this.uuid = uuid;
+    this.password = password;
+    this.bigDecimal = bigDecimal;
   }
 
   
@@ -51,244 +59,132 @@ public class FormatTest  implements Serializable {
  @Min(10) @Max(100)  public Integer getInteger() {
     return integer;
   }
+
   public void setInteger(Integer integer) {
     this.integer = integer;
   }
-
-  /**
-   * minimum: 20
-   * maximum: 200
-   **/
-  public FormatTest int32(Integer int32) {
-    this.int32 = int32;
-    return this;
-  }
-
-  
   @ApiModelProperty(value = "")
   @JsonProperty("int32")
  @Min(20) @Max(200)  public Integer getInt32() {
     return int32;
   }
+
   public void setInt32(Integer int32) {
     this.int32 = int32;
   }
-
-  /**
-   **/
-  public FormatTest int64(Long int64) {
-    this.int64 = int64;
-    return this;
-  }
-
-  
   @ApiModelProperty(value = "")
   @JsonProperty("int64")
   public Long getInt64() {
     return int64;
   }
+
   public void setInt64(Long int64) {
     this.int64 = int64;
   }
-
-  /**
-   * minimum: 32.1
-   * maximum: 543.2
-   **/
-  public FormatTest number(BigDecimal number) {
-    this.number = number;
-    return this;
-  }
-
-  
   @ApiModelProperty(required = true, value = "")
   @JsonProperty("number")
   @NotNull
  @DecimalMin("32.1") @DecimalMax("543.2")  public BigDecimal getNumber() {
     return number;
   }
+
   public void setNumber(BigDecimal number) {
     this.number = number;
   }
-
-  /**
-   * minimum: 54.3
-   * maximum: 987.6
-   **/
-  public FormatTest _float(Float _float) {
-    this._float = _float;
-    return this;
-  }
-
-  
   @ApiModelProperty(value = "")
   @JsonProperty("float")
  @DecimalMin("54.3") @DecimalMax("987.6")  public Float getFloat() {
     return _float;
   }
+
   public void setFloat(Float _float) {
     this._float = _float;
   }
-
-  /**
-   * minimum: 67.8
-   * maximum: 123.4
-   **/
-  public FormatTest _double(Double _double) {
-    this._double = _double;
-    return this;
-  }
-
-  
   @ApiModelProperty(value = "")
   @JsonProperty("double")
  @DecimalMin("67.8") @DecimalMax("123.4")  public Double getDouble() {
     return _double;
   }
+
   public void setDouble(Double _double) {
     this._double = _double;
   }
-
-  /**
-   **/
-  public FormatTest string(String string) {
-    this.string = string;
-    return this;
-  }
-
-  
   @ApiModelProperty(value = "")
   @JsonProperty("string")
  @Pattern(regexp="/[a-z]/i")  public String getString() {
     return string;
   }
+
   public void setString(String string) {
     this.string = string;
   }
-
-  /**
-   **/
-  public FormatTest _byte(byte[] _byte) {
-    this._byte = _byte;
-    return this;
-  }
-
-  
   @ApiModelProperty(required = true, value = "")
   @JsonProperty("byte")
   @NotNull
  @Pattern(regexp="^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$")  public byte[] getByte() {
     return _byte;
   }
+
   public void setByte(byte[] _byte) {
     this._byte = _byte;
   }
-
-  /**
-   **/
-  public FormatTest binary(File binary) {
-    this.binary = binary;
-    return this;
-  }
-
-  
   @ApiModelProperty(value = "")
   @JsonProperty("binary")
   public File getBinary() {
     return binary;
   }
+
   public void setBinary(File binary) {
     this.binary = binary;
   }
-
-  /**
-   **/
-  public FormatTest date(LocalDate date) {
-    this.date = date;
-    return this;
-  }
-
-  
   @ApiModelProperty(required = true, value = "")
   @JsonProperty("date")
   @NotNull
   public LocalDate getDate() {
     return date;
   }
+
   public void setDate(LocalDate date) {
     this.date = date;
   }
-
-  /**
-   **/
-  public FormatTest dateTime(Date dateTime) {
-    this.dateTime = dateTime;
-    return this;
-  }
-
-  
   @ApiModelProperty(value = "")
   @JsonProperty("dateTime")
   public Date getDateTime() {
     return dateTime;
   }
+
   public void setDateTime(Date dateTime) {
     this.dateTime = dateTime;
   }
-
-  /**
-   **/
-  public FormatTest uuid(UUID uuid) {
-    this.uuid = uuid;
-    return this;
-  }
-
-  
   @ApiModelProperty(example = "72f98069-206d-4f12-9f12-3d1e525a8e84", value = "")
   @JsonProperty("uuid")
   public UUID getUuid() {
     return uuid;
   }
+
   public void setUuid(UUID uuid) {
     this.uuid = uuid;
   }
-
-  /**
-   **/
-  public FormatTest password(String password) {
-    this.password = password;
-    return this;
-  }
-
-  
   @ApiModelProperty(required = true, value = "")
   @JsonProperty("password")
   @NotNull
  @Size(min=10,max=64)  public String getPassword() {
     return password;
   }
+
   public void setPassword(String password) {
     this.password = password;
   }
-
-  /**
-   **/
-  public FormatTest bigDecimal(BigDecimal bigDecimal) {
-    this.bigDecimal = bigDecimal;
-    return this;
-  }
-
-  
   @ApiModelProperty(value = "")
   @JsonProperty("BigDecimal")
   public BigDecimal getBigDecimal() {
     return bigDecimal;
   }
+
   public void setBigDecimal(BigDecimal bigDecimal) {
     this.bigDecimal = bigDecimal;
   }
 
-
   @Override
   public boolean equals(java.lang.Object o) {
     if (this == o) {
@@ -352,5 +248,125 @@ public class FormatTest  implements Serializable {
     }
     return o.toString().replace("\n", "\n    ");
   }
+
+  public static Builder builder() {
+    return new Builder();
+  }
+
+  public static class Builder {
+    private Integer integer;
+    private Integer int32;
+    private Long int64;
+    private BigDecimal number;
+    private Float _float;
+    private Double _double;
+    private String string;
+    private byte[] _byte;
+    private File binary;
+    private LocalDate date;
+    private Date dateTime;
+    private UUID uuid;
+    private String password;
+    private BigDecimal bigDecimal;
+
+    /**
+      * minimum: 10
+      * maximum: 100
+      **/
+    public Builder integer(Integer integer) {
+      this.integer = integer;
+      return this;
+    }
+    /**
+      * minimum: 20
+      * maximum: 200
+      **/
+    public Builder int32(Integer int32) {
+      this.int32 = int32;
+      return this;
+    }
+    /**
+      **/
+    public Builder int64(Long int64) {
+      this.int64 = int64;
+      return this;
+    }
+    /**
+      * minimum: 32.1
+      * maximum: 543.2
+      **/
+    public Builder number(BigDecimal number) {
+      this.number = number;
+      return this;
+    }
+    /**
+      * minimum: 54.3
+      * maximum: 987.6
+      **/
+    public Builder _float(Float _float) {
+      this._float = _float;
+      return this;
+    }
+    /**
+      * minimum: 67.8
+      * maximum: 123.4
+      **/
+    public Builder _double(Double _double) {
+      this._double = _double;
+      return this;
+    }
+    /**
+      **/
+    public Builder string(String string) {
+      this.string = string;
+      return this;
+    }
+    /**
+      **/
+    public Builder _byte(byte[] _byte) {
+      this._byte = _byte;
+      return this;
+    }
+    /**
+      **/
+    public Builder binary(File binary) {
+      this.binary = binary;
+      return this;
+    }
+    /**
+      **/
+    public Builder date(LocalDate date) {
+      this.date = date;
+      return this;
+    }
+    /**
+      **/
+    public Builder dateTime(Date dateTime) {
+      this.dateTime = dateTime;
+      return this;
+    }
+    /**
+      **/
+    public Builder uuid(UUID uuid) {
+      this.uuid = uuid;
+      return this;
+    }
+    /**
+      **/
+    public Builder password(String password) {
+      this.password = password;
+      return this;
+    }
+    /**
+      **/
+    public Builder bigDecimal(BigDecimal bigDecimal) {
+      this.bigDecimal = bigDecimal;
+      return this;
+    }
+
+    public FormatTest build() {
+      return new FormatTest(integer, int32, int64, number, _float, _double, string, _byte, binary, date, dateTime, uuid, password, bigDecimal);
+    }
+  }
 }
 
diff --git a/samples/server/petstore/jaxrs-spec/src/gen/java/org/openapitools/model/HasOnlyReadOnly.java b/samples/server/petstore/jaxrs-spec/src/gen/java/org/openapitools/model/HasOnlyReadOnly.java
index 76898a7831bc11d27d76754ba7eb375f85b5abda..fde65bcb888fbfb8d21cd17c2caaa4d69e072364 100644
--- a/samples/server/petstore/jaxrs-spec/src/gen/java/org/openapitools/model/HasOnlyReadOnly.java
+++ b/samples/server/petstore/jaxrs-spec/src/gen/java/org/openapitools/model/HasOnlyReadOnly.java
@@ -19,11 +19,9 @@ public class HasOnlyReadOnly  implements Serializable {
   private @Valid String bar;
   private @Valid String foo;
 
-  /**
-   **/
-  public HasOnlyReadOnly bar(String bar) {
+  public HasOnlyReadOnly(String bar, String foo) {
     this.bar = bar;
-    return this;
+    this.foo = foo;
   }
 
   
@@ -32,28 +30,20 @@ public class HasOnlyReadOnly  implements Serializable {
   public String getBar() {
     return bar;
   }
+
   public void setBar(String bar) {
     this.bar = bar;
   }
-
-  /**
-   **/
-  public HasOnlyReadOnly foo(String foo) {
-    this.foo = foo;
-    return this;
-  }
-
-  
   @ApiModelProperty(value = "")
   @JsonProperty("foo")
   public String getFoo() {
     return foo;
   }
+
   public void setFoo(String foo) {
     this.foo = foo;
   }
 
-
   @Override
   public boolean equals(java.lang.Object o) {
     if (this == o) {
@@ -93,5 +83,31 @@ public class HasOnlyReadOnly  implements Serializable {
     }
     return o.toString().replace("\n", "\n    ");
   }
+
+  public static Builder builder() {
+    return new Builder();
+  }
+
+  public static class Builder {
+    private String bar;
+    private String foo;
+
+    /**
+      **/
+    public Builder bar(String bar) {
+      this.bar = bar;
+      return this;
+    }
+    /**
+      **/
+    public Builder foo(String foo) {
+      this.foo = foo;
+      return this;
+    }
+
+    public HasOnlyReadOnly build() {
+      return new HasOnlyReadOnly(bar, foo);
+    }
+  }
 }
 
diff --git a/samples/server/petstore/jaxrs-spec/src/gen/java/org/openapitools/model/MapTest.java b/samples/server/petstore/jaxrs-spec/src/gen/java/org/openapitools/model/MapTest.java
index 059f500d097f4c36b8e90d08066dd3ae547f975f..ec60b349d3c1ad4b23b168035518670cfd0eb415 100644
--- a/samples/server/petstore/jaxrs-spec/src/gen/java/org/openapitools/model/MapTest.java
+++ b/samples/server/petstore/jaxrs-spec/src/gen/java/org/openapitools/model/MapTest.java
@@ -57,11 +57,11 @@ public enum InnerEnum {
   private @Valid Map<String, Boolean> directMap = new HashMap<String, Boolean>();
   private @Valid Map<String, Boolean> indirectMap = new HashMap<String, Boolean>();
 
-  /**
-   **/
-  public MapTest mapMapOfString(Map<String, Map<String, String>> mapMapOfString) {
+  public MapTest(Map<String, Map<String, String>> mapMapOfString, Map<String, InnerEnum> mapOfEnumString, Map<String, Boolean> directMap, Map<String, Boolean> indirectMap) {
     this.mapMapOfString = mapMapOfString;
-    return this;
+    this.mapOfEnumString = mapOfEnumString;
+    this.directMap = directMap;
+    this.indirectMap = indirectMap;
   }
 
   
@@ -70,62 +70,38 @@ public enum InnerEnum {
   public Map<String, Map<String, String>> getMapMapOfString() {
     return mapMapOfString;
   }
+
   public void setMapMapOfString(Map<String, Map<String, String>> mapMapOfString) {
     this.mapMapOfString = mapMapOfString;
   }
-
-  /**
-   **/
-  public MapTest mapOfEnumString(Map<String, InnerEnum> mapOfEnumString) {
-    this.mapOfEnumString = mapOfEnumString;
-    return this;
-  }
-
-  
   @ApiModelProperty(value = "")
   @JsonProperty("map_of_enum_string")
   public Map<String, InnerEnum> getMapOfEnumString() {
     return mapOfEnumString;
   }
+
   public void setMapOfEnumString(Map<String, InnerEnum> mapOfEnumString) {
     this.mapOfEnumString = mapOfEnumString;
   }
-
-  /**
-   **/
-  public MapTest directMap(Map<String, Boolean> directMap) {
-    this.directMap = directMap;
-    return this;
-  }
-
-  
   @ApiModelProperty(value = "")
   @JsonProperty("direct_map")
   public Map<String, Boolean> getDirectMap() {
     return directMap;
   }
+
   public void setDirectMap(Map<String, Boolean> directMap) {
     this.directMap = directMap;
   }
-
-  /**
-   **/
-  public MapTest indirectMap(Map<String, Boolean> indirectMap) {
-    this.indirectMap = indirectMap;
-    return this;
-  }
-
-  
   @ApiModelProperty(value = "")
   @JsonProperty("indirect_map")
   public Map<String, Boolean> getIndirectMap() {
     return indirectMap;
   }
+
   public void setIndirectMap(Map<String, Boolean> indirectMap) {
     this.indirectMap = indirectMap;
   }
 
-
   @Override
   public boolean equals(java.lang.Object o) {
     if (this == o) {
@@ -169,5 +145,45 @@ public enum InnerEnum {
     }
     return o.toString().replace("\n", "\n    ");
   }
+
+  public static Builder builder() {
+    return new Builder();
+  }
+
+  public static class Builder {
+    private Map<String, Map<String, String>> mapMapOfString = new HashMap<String, Map<String, String>>();
+    private Map<String, InnerEnum> mapOfEnumString = new HashMap<String, InnerEnum>();
+    private Map<String, Boolean> directMap = new HashMap<String, Boolean>();
+    private Map<String, Boolean> indirectMap = new HashMap<String, Boolean>();
+
+    /**
+      **/
+    public Builder mapMapOfString(Map<String, Map<String, String>> mapMapOfString) {
+      this.mapMapOfString = mapMapOfString;
+      return this;
+    }
+    /**
+      **/
+    public Builder mapOfEnumString(Map<String, InnerEnum> mapOfEnumString) {
+      this.mapOfEnumString = mapOfEnumString;
+      return this;
+    }
+    /**
+      **/
+    public Builder directMap(Map<String, Boolean> directMap) {
+      this.directMap = directMap;
+      return this;
+    }
+    /**
+      **/
+    public Builder indirectMap(Map<String, Boolean> indirectMap) {
+      this.indirectMap = indirectMap;
+      return this;
+    }
+
+    public MapTest build() {
+      return new MapTest(mapMapOfString, mapOfEnumString, directMap, indirectMap);
+    }
+  }
 }
 
diff --git a/samples/server/petstore/jaxrs-spec/src/gen/java/org/openapitools/model/MixedPropertiesAndAdditionalPropertiesClass.java b/samples/server/petstore/jaxrs-spec/src/gen/java/org/openapitools/model/MixedPropertiesAndAdditionalPropertiesClass.java
index 8467e42ead182ae18740912deaf90b97e5f20bf3..bd06524aec780a7aab85db2726de6334db10258a 100644
--- a/samples/server/petstore/jaxrs-spec/src/gen/java/org/openapitools/model/MixedPropertiesAndAdditionalPropertiesClass.java
+++ b/samples/server/petstore/jaxrs-spec/src/gen/java/org/openapitools/model/MixedPropertiesAndAdditionalPropertiesClass.java
@@ -26,11 +26,10 @@ public class MixedPropertiesAndAdditionalPropertiesClass  implements Serializabl
   private @Valid Date dateTime;
   private @Valid Map<String, Animal> map = new HashMap<String, Animal>();
 
-  /**
-   **/
-  public MixedPropertiesAndAdditionalPropertiesClass uuid(UUID uuid) {
+  public MixedPropertiesAndAdditionalPropertiesClass(UUID uuid, Date dateTime, Map<String, Animal> map) {
     this.uuid = uuid;
-    return this;
+    this.dateTime = dateTime;
+    this.map = map;
   }
 
   
@@ -39,45 +38,29 @@ public class MixedPropertiesAndAdditionalPropertiesClass  implements Serializabl
   public UUID getUuid() {
     return uuid;
   }
+
   public void setUuid(UUID uuid) {
     this.uuid = uuid;
   }
-
-  /**
-   **/
-  public MixedPropertiesAndAdditionalPropertiesClass dateTime(Date dateTime) {
-    this.dateTime = dateTime;
-    return this;
-  }
-
-  
   @ApiModelProperty(value = "")
   @JsonProperty("dateTime")
   public Date getDateTime() {
     return dateTime;
   }
+
   public void setDateTime(Date dateTime) {
     this.dateTime = dateTime;
   }
-
-  /**
-   **/
-  public MixedPropertiesAndAdditionalPropertiesClass map(Map<String, Animal> map) {
-    this.map = map;
-    return this;
-  }
-
-  
   @ApiModelProperty(value = "")
   @JsonProperty("map")
   public Map<String, Animal> getMap() {
     return map;
   }
+
   public void setMap(Map<String, Animal> map) {
     this.map = map;
   }
 
-
   @Override
   public boolean equals(java.lang.Object o) {
     if (this == o) {
@@ -119,5 +102,38 @@ public class MixedPropertiesAndAdditionalPropertiesClass  implements Serializabl
     }
     return o.toString().replace("\n", "\n    ");
   }
+
+  public static Builder builder() {
+    return new Builder();
+  }
+
+  public static class Builder {
+    private UUID uuid;
+    private Date dateTime;
+    private Map<String, Animal> map = new HashMap<String, Animal>();
+
+    /**
+      **/
+    public Builder uuid(UUID uuid) {
+      this.uuid = uuid;
+      return this;
+    }
+    /**
+      **/
+    public Builder dateTime(Date dateTime) {
+      this.dateTime = dateTime;
+      return this;
+    }
+    /**
+      **/
+    public Builder map(Map<String, Animal> map) {
+      this.map = map;
+      return this;
+    }
+
+    public MixedPropertiesAndAdditionalPropertiesClass build() {
+      return new MixedPropertiesAndAdditionalPropertiesClass(uuid, dateTime, map);
+    }
+  }
 }
 
diff --git a/samples/server/petstore/jaxrs-spec/src/gen/java/org/openapitools/model/Model200Response.java b/samples/server/petstore/jaxrs-spec/src/gen/java/org/openapitools/model/Model200Response.java
index d330491d413e46b6aee07db930d892d7b45d7280..1a0643d8cc621f5921a6c8dbae80f388ecf5b689 100644
--- a/samples/server/petstore/jaxrs-spec/src/gen/java/org/openapitools/model/Model200Response.java
+++ b/samples/server/petstore/jaxrs-spec/src/gen/java/org/openapitools/model/Model200Response.java
@@ -12,7 +12,6 @@ import com.fasterxml.jackson.annotation.JsonProperty;
 import com.fasterxml.jackson.annotation.JsonCreator;
 import com.fasterxml.jackson.annotation.JsonValue;
 
-
 /**
  * Model for testing model name starting with number
  **/
@@ -22,11 +21,9 @@ public class Model200Response  implements Serializable {
   private @Valid Integer name;
   private @Valid String propertyClass;
 
-  /**
-   **/
-  public Model200Response name(Integer name) {
+  public Model200Response(Integer name, String propertyClass) {
     this.name = name;
-    return this;
+    this.propertyClass = propertyClass;
   }
 
   
@@ -35,28 +32,20 @@ public class Model200Response  implements Serializable {
   public Integer getName() {
     return name;
   }
+
   public void setName(Integer name) {
     this.name = name;
   }
-
-  /**
-   **/
-  public Model200Response propertyClass(String propertyClass) {
-    this.propertyClass = propertyClass;
-    return this;
-  }
-
-  
   @ApiModelProperty(value = "")
   @JsonProperty("class")
   public String getPropertyClass() {
     return propertyClass;
   }
+
   public void setPropertyClass(String propertyClass) {
     this.propertyClass = propertyClass;
   }
 
-
   @Override
   public boolean equals(java.lang.Object o) {
     if (this == o) {
@@ -96,5 +85,31 @@ public class Model200Response  implements Serializable {
     }
     return o.toString().replace("\n", "\n    ");
   }
+
+  public static Builder builder() {
+    return new Builder();
+  }
+
+  public static class Builder {
+    private Integer name;
+    private String propertyClass;
+
+    /**
+      **/
+    public Builder name(Integer name) {
+      this.name = name;
+      return this;
+    }
+    /**
+      **/
+    public Builder propertyClass(String propertyClass) {
+      this.propertyClass = propertyClass;
+      return this;
+    }
+
+    public Model200Response build() {
+      return new Model200Response(name, propertyClass);
+    }
+  }
 }
 
diff --git a/samples/server/petstore/jaxrs-spec/src/gen/java/org/openapitools/model/ModelApiResponse.java b/samples/server/petstore/jaxrs-spec/src/gen/java/org/openapitools/model/ModelApiResponse.java
index 3aeaa2e80a8340ff92cb99f356aaf1dd7360e1b6..d6efe5a4a7c5d614ddd915bcb8c6d11f4518a0a3 100644
--- a/samples/server/petstore/jaxrs-spec/src/gen/java/org/openapitools/model/ModelApiResponse.java
+++ b/samples/server/petstore/jaxrs-spec/src/gen/java/org/openapitools/model/ModelApiResponse.java
@@ -20,11 +20,10 @@ public class ModelApiResponse  implements Serializable {
   private @Valid String type;
   private @Valid String message;
 
-  /**
-   **/
-  public ModelApiResponse code(Integer code) {
+  public ModelApiResponse(Integer code, String type, String message) {
     this.code = code;
-    return this;
+    this.type = type;
+    this.message = message;
   }
 
   
@@ -33,45 +32,29 @@ public class ModelApiResponse  implements Serializable {
   public Integer getCode() {
     return code;
   }
+
   public void setCode(Integer code) {
     this.code = code;
   }
-
-  /**
-   **/
-  public ModelApiResponse type(String type) {
-    this.type = type;
-    return this;
-  }
-
-  
   @ApiModelProperty(value = "")
   @JsonProperty("type")
   public String getType() {
     return type;
   }
+
   public void setType(String type) {
     this.type = type;
   }
-
-  /**
-   **/
-  public ModelApiResponse message(String message) {
-    this.message = message;
-    return this;
-  }
-
-  
   @ApiModelProperty(value = "")
   @JsonProperty("message")
   public String getMessage() {
     return message;
   }
+
   public void setMessage(String message) {
     this.message = message;
   }
 
-
   @Override
   public boolean equals(java.lang.Object o) {
     if (this == o) {
@@ -113,5 +96,38 @@ public class ModelApiResponse  implements Serializable {
     }
     return o.toString().replace("\n", "\n    ");
   }
+
+  public static Builder builder() {
+    return new Builder();
+  }
+
+  public static class Builder {
+    private Integer code;
+    private String type;
+    private String message;
+
+    /**
+      **/
+    public Builder code(Integer code) {
+      this.code = code;
+      return this;
+    }
+    /**
+      **/
+    public Builder type(String type) {
+      this.type = type;
+      return this;
+    }
+    /**
+      **/
+    public Builder message(String message) {
+      this.message = message;
+      return this;
+    }
+
+    public ModelApiResponse build() {
+      return new ModelApiResponse(code, type, message);
+    }
+  }
 }
 
diff --git a/samples/server/petstore/jaxrs-spec/src/gen/java/org/openapitools/model/ModelReturn.java b/samples/server/petstore/jaxrs-spec/src/gen/java/org/openapitools/model/ModelReturn.java
index b8ccb56ccd5d8a33cadb613f49a81555713bb32f..65e82e1c28888c3b85640b529f63d9647fa1dfd0 100644
--- a/samples/server/petstore/jaxrs-spec/src/gen/java/org/openapitools/model/ModelReturn.java
+++ b/samples/server/petstore/jaxrs-spec/src/gen/java/org/openapitools/model/ModelReturn.java
@@ -12,7 +12,6 @@ import com.fasterxml.jackson.annotation.JsonProperty;
 import com.fasterxml.jackson.annotation.JsonCreator;
 import com.fasterxml.jackson.annotation.JsonValue;
 
-
 /**
  * Model for testing reserved words
  **/
@@ -21,11 +20,8 @@ public class ModelReturn  implements Serializable {
   
   private @Valid Integer _return;
 
-  /**
-   **/
-  public ModelReturn _return(Integer _return) {
+  public ModelReturn(Integer _return) {
     this._return = _return;
-    return this;
   }
 
   
@@ -34,11 +30,11 @@ public class ModelReturn  implements Serializable {
   public Integer getReturn() {
     return _return;
   }
+
   public void setReturn(Integer _return) {
     this._return = _return;
   }
 
-
   @Override
   public boolean equals(java.lang.Object o) {
     if (this == o) {
@@ -76,5 +72,24 @@ public class ModelReturn  implements Serializable {
     }
     return o.toString().replace("\n", "\n    ");
   }
+
+  public static Builder builder() {
+    return new Builder();
+  }
+
+  public static class Builder {
+    private Integer _return;
+
+    /**
+      **/
+    public Builder _return(Integer _return) {
+      this._return = _return;
+      return this;
+    }
+
+    public ModelReturn build() {
+      return new ModelReturn(_return);
+    }
+  }
 }
 
diff --git a/samples/server/petstore/jaxrs-spec/src/gen/java/org/openapitools/model/Name.java b/samples/server/petstore/jaxrs-spec/src/gen/java/org/openapitools/model/Name.java
index 30f2f65ac65ee75dce3dc8838c7dd0c81c2893d1..f7713bf25d9e0fe86bcf1789c4a61b4f8169c821 100644
--- a/samples/server/petstore/jaxrs-spec/src/gen/java/org/openapitools/model/Name.java
+++ b/samples/server/petstore/jaxrs-spec/src/gen/java/org/openapitools/model/Name.java
@@ -12,7 +12,6 @@ import com.fasterxml.jackson.annotation.JsonProperty;
 import com.fasterxml.jackson.annotation.JsonCreator;
 import com.fasterxml.jackson.annotation.JsonValue;
 
-
 /**
  * Model for testing model name same as property name
  **/
@@ -24,11 +23,11 @@ public class Name  implements Serializable {
   private @Valid String property;
   private @Valid Integer _123number;
 
-  /**
-   **/
-  public Name name(Integer name) {
+  public Name(Integer name, Integer snakeCase, String property, Integer _123number) {
     this.name = name;
-    return this;
+    this.snakeCase = snakeCase;
+    this.property = property;
+    this._123number = _123number;
   }
 
   
@@ -38,62 +37,38 @@ public class Name  implements Serializable {
   public Integer getName() {
     return name;
   }
+
   public void setName(Integer name) {
     this.name = name;
   }
-
-  /**
-   **/
-  public Name snakeCase(Integer snakeCase) {
-    this.snakeCase = snakeCase;
-    return this;
-  }
-
-  
   @ApiModelProperty(value = "")
   @JsonProperty("snake_case")
   public Integer getSnakeCase() {
     return snakeCase;
   }
+
   public void setSnakeCase(Integer snakeCase) {
     this.snakeCase = snakeCase;
   }
-
-  /**
-   **/
-  public Name property(String property) {
-    this.property = property;
-    return this;
-  }
-
-  
   @ApiModelProperty(value = "")
   @JsonProperty("property")
   public String getProperty() {
     return property;
   }
+
   public void setProperty(String property) {
     this.property = property;
   }
-
-  /**
-   **/
-  public Name _123number(Integer _123number) {
-    this._123number = _123number;
-    return this;
-  }
-
-  
   @ApiModelProperty(value = "")
   @JsonProperty("123Number")
   public Integer get123number() {
     return _123number;
   }
+
   public void set123number(Integer _123number) {
     this._123number = _123number;
   }
 
-
   @Override
   public boolean equals(java.lang.Object o) {
     if (this == o) {
@@ -137,5 +112,45 @@ public class Name  implements Serializable {
     }
     return o.toString().replace("\n", "\n    ");
   }
+
+  public static Builder builder() {
+    return new Builder();
+  }
+
+  public static class Builder {
+    private Integer name;
+    private Integer snakeCase;
+    private String property;
+    private Integer _123number;
+
+    /**
+      **/
+    public Builder name(Integer name) {
+      this.name = name;
+      return this;
+    }
+    /**
+      **/
+    public Builder snakeCase(Integer snakeCase) {
+      this.snakeCase = snakeCase;
+      return this;
+    }
+    /**
+      **/
+    public Builder property(String property) {
+      this.property = property;
+      return this;
+    }
+    /**
+      **/
+    public Builder _123number(Integer _123number) {
+      this._123number = _123number;
+      return this;
+    }
+
+    public Name build() {
+      return new Name(name, snakeCase, property, _123number);
+    }
+  }
 }
 
diff --git a/samples/server/petstore/jaxrs-spec/src/gen/java/org/openapitools/model/NumberOnly.java b/samples/server/petstore/jaxrs-spec/src/gen/java/org/openapitools/model/NumberOnly.java
index b5ae07a3dfb02ea31af0be43aef91c2e2eda3a05..f4ac4b1bc52d5e13218d4117568f892b9b452ebd 100644
--- a/samples/server/petstore/jaxrs-spec/src/gen/java/org/openapitools/model/NumberOnly.java
+++ b/samples/server/petstore/jaxrs-spec/src/gen/java/org/openapitools/model/NumberOnly.java
@@ -19,11 +19,8 @@ public class NumberOnly  implements Serializable {
   
   private @Valid BigDecimal justNumber;
 
-  /**
-   **/
-  public NumberOnly justNumber(BigDecimal justNumber) {
+  public NumberOnly(BigDecimal justNumber) {
     this.justNumber = justNumber;
-    return this;
   }
 
   
@@ -32,11 +29,11 @@ public class NumberOnly  implements Serializable {
   public BigDecimal getJustNumber() {
     return justNumber;
   }
+
   public void setJustNumber(BigDecimal justNumber) {
     this.justNumber = justNumber;
   }
 
-
   @Override
   public boolean equals(java.lang.Object o) {
     if (this == o) {
@@ -74,5 +71,24 @@ public class NumberOnly  implements Serializable {
     }
     return o.toString().replace("\n", "\n    ");
   }
+
+  public static Builder builder() {
+    return new Builder();
+  }
+
+  public static class Builder {
+    private BigDecimal justNumber;
+
+    /**
+      **/
+    public Builder justNumber(BigDecimal justNumber) {
+      this.justNumber = justNumber;
+      return this;
+    }
+
+    public NumberOnly build() {
+      return new NumberOnly(justNumber);
+    }
+  }
 }
 
diff --git a/samples/server/petstore/jaxrs-spec/src/gen/java/org/openapitools/model/Order.java b/samples/server/petstore/jaxrs-spec/src/gen/java/org/openapitools/model/Order.java
index 4c88bb4d6ad65b0a2d4ff9c496fda2f3083f3776..4eb5d9871b14459a50135a4de44c7fa04c0ea0cc 100644
--- a/samples/server/petstore/jaxrs-spec/src/gen/java/org/openapitools/model/Order.java
+++ b/samples/server/petstore/jaxrs-spec/src/gen/java/org/openapitools/model/Order.java
@@ -57,11 +57,13 @@ public enum StatusEnum {
   private @Valid StatusEnum status;
   private @Valid Boolean complete = false;
 
-  /**
-   **/
-  public Order id(Long id) {
+  public Order(Long id, Long petId, Integer quantity, Date shipDate, StatusEnum status, Boolean complete) {
     this.id = id;
-    return this;
+    this.petId = petId;
+    this.quantity = quantity;
+    this.shipDate = shipDate;
+    this.status = status;
+    this.complete = complete;
   }
 
   
@@ -70,97 +72,56 @@ public enum StatusEnum {
   public Long getId() {
     return id;
   }
+
   public void setId(Long id) {
     this.id = id;
   }
-
-  /**
-   **/
-  public Order petId(Long petId) {
-    this.petId = petId;
-    return this;
-  }
-
-  
   @ApiModelProperty(value = "")
   @JsonProperty("petId")
   public Long getPetId() {
     return petId;
   }
+
   public void setPetId(Long petId) {
     this.petId = petId;
   }
-
-  /**
-   **/
-  public Order quantity(Integer quantity) {
-    this.quantity = quantity;
-    return this;
-  }
-
-  
   @ApiModelProperty(value = "")
   @JsonProperty("quantity")
   public Integer getQuantity() {
     return quantity;
   }
+
   public void setQuantity(Integer quantity) {
     this.quantity = quantity;
   }
-
-  /**
-   **/
-  public Order shipDate(Date shipDate) {
-    this.shipDate = shipDate;
-    return this;
-  }
-
-  
   @ApiModelProperty(value = "")
   @JsonProperty("shipDate")
   public Date getShipDate() {
     return shipDate;
   }
+
   public void setShipDate(Date shipDate) {
     this.shipDate = shipDate;
   }
-
-  /**
-   * Order Status
-   **/
-  public Order status(StatusEnum status) {
-    this.status = status;
-    return this;
-  }
-
-  
   @ApiModelProperty(value = "Order Status")
   @JsonProperty("status")
   public StatusEnum getStatus() {
     return status;
   }
+
   public void setStatus(StatusEnum status) {
     this.status = status;
   }
-
-  /**
-   **/
-  public Order complete(Boolean complete) {
-    this.complete = complete;
-    return this;
-  }
-
-  
   @ApiModelProperty(value = "")
   @JsonProperty("complete")
   public Boolean getComplete() {
     return complete;
   }
+
   public void setComplete(Boolean complete) {
     this.complete = complete;
   }
 
-
   @Override
   public boolean equals(java.lang.Object o) {
     if (this == o) {
@@ -208,5 +169,60 @@ public enum StatusEnum {
     }
     return o.toString().replace("\n", "\n    ");
   }
+
+  public static Builder builder() {
+    return new Builder();
+  }
+
+  public static class Builder {
+    private Long id;
+    private Long petId;
+    private Integer quantity;
+    private Date shipDate;
+    private StatusEnum status;
+    private Boolean complete = false;
+
+    /**
+      **/
+    public Builder id(Long id) {
+      this.id = id;
+      return this;
+    }
+    /**
+      **/
+    public Builder petId(Long petId) {
+      this.petId = petId;
+      return this;
+    }
+    /**
+      **/
+    public Builder quantity(Integer quantity) {
+      this.quantity = quantity;
+      return this;
+    }
+    /**
+      **/
+    public Builder shipDate(Date shipDate) {
+      this.shipDate = shipDate;
+      return this;
+    }
+    /**
+      * Order Status
+      **/
+    public Builder status(StatusEnum status) {
+      this.status = status;
+      return this;
+    }
+    /**
+      **/
+    public Builder complete(Boolean complete) {
+      this.complete = complete;
+      return this;
+    }
+
+    public Order build() {
+      return new Order(id, petId, quantity, shipDate, status, complete);
+    }
+  }
 }
 
diff --git a/samples/server/petstore/jaxrs-spec/src/gen/java/org/openapitools/model/OuterComposite.java b/samples/server/petstore/jaxrs-spec/src/gen/java/org/openapitools/model/OuterComposite.java
index 14e7f71319adceae9eb32a520fd8e47f93eef0bb..0e19cca8b2c9e24993b6f70d4541c6ef29ab0a42 100644
--- a/samples/server/petstore/jaxrs-spec/src/gen/java/org/openapitools/model/OuterComposite.java
+++ b/samples/server/petstore/jaxrs-spec/src/gen/java/org/openapitools/model/OuterComposite.java
@@ -21,11 +21,10 @@ public class OuterComposite  implements Serializable {
   private @Valid String myString;
   private @Valid Boolean myBoolean;
 
-  /**
-   **/
-  public OuterComposite myNumber(BigDecimal myNumber) {
+  public OuterComposite(BigDecimal myNumber, String myString, Boolean myBoolean) {
     this.myNumber = myNumber;
-    return this;
+    this.myString = myString;
+    this.myBoolean = myBoolean;
   }
 
   
@@ -34,45 +33,29 @@ public class OuterComposite  implements Serializable {
   public BigDecimal getMyNumber() {
     return myNumber;
   }
+
   public void setMyNumber(BigDecimal myNumber) {
     this.myNumber = myNumber;
   }
-
-  /**
-   **/
-  public OuterComposite myString(String myString) {
-    this.myString = myString;
-    return this;
-  }
-
-  
   @ApiModelProperty(value = "")
   @JsonProperty("my_string")
   public String getMyString() {
     return myString;
   }
+
   public void setMyString(String myString) {
     this.myString = myString;
   }
-
-  /**
-   **/
-  public OuterComposite myBoolean(Boolean myBoolean) {
-    this.myBoolean = myBoolean;
-    return this;
-  }
-
-  
   @ApiModelProperty(value = "")
   @JsonProperty("my_boolean")
   public Boolean getMyBoolean() {
     return myBoolean;
   }
+
   public void setMyBoolean(Boolean myBoolean) {
     this.myBoolean = myBoolean;
   }
 
-
   @Override
   public boolean equals(java.lang.Object o) {
     if (this == o) {
@@ -114,5 +97,38 @@ public class OuterComposite  implements Serializable {
     }
     return o.toString().replace("\n", "\n    ");
   }
+
+  public static Builder builder() {
+    return new Builder();
+  }
+
+  public static class Builder {
+    private BigDecimal myNumber;
+    private String myString;
+    private Boolean myBoolean;
+
+    /**
+      **/
+    public Builder myNumber(BigDecimal myNumber) {
+      this.myNumber = myNumber;
+      return this;
+    }
+    /**
+      **/
+    public Builder myString(String myString) {
+      this.myString = myString;
+      return this;
+    }
+    /**
+      **/
+    public Builder myBoolean(Boolean myBoolean) {
+      this.myBoolean = myBoolean;
+      return this;
+    }
+
+    public OuterComposite build() {
+      return new OuterComposite(myNumber, myString, myBoolean);
+    }
+  }
 }
 
diff --git a/samples/server/petstore/jaxrs-spec/src/gen/java/org/openapitools/model/Pet.java b/samples/server/petstore/jaxrs-spec/src/gen/java/org/openapitools/model/Pet.java
index 6718025e69265ef87c1ef90cfe6dc7e53f4ed723..af38297ae9c03337232cd110ff1517363e97c0be 100644
--- a/samples/server/petstore/jaxrs-spec/src/gen/java/org/openapitools/model/Pet.java
+++ b/samples/server/petstore/jaxrs-spec/src/gen/java/org/openapitools/model/Pet.java
@@ -60,11 +60,13 @@ public enum StatusEnum {
 
   private @Valid StatusEnum status;
 
-  /**
-   **/
-  public Pet id(Long id) {
+  public Pet(Long id, Category category, String name, List<String> photoUrls, List<Tag> tags, StatusEnum status) {
     this.id = id;
-    return this;
+    this.category = category;
+    this.name = name;
+    this.photoUrls = photoUrls;
+    this.tags = tags;
+    this.status = status;
   }
 
   
@@ -73,99 +75,58 @@ public enum StatusEnum {
   public Long getId() {
     return id;
   }
+
   public void setId(Long id) {
     this.id = id;
   }
-
-  /**
-   **/
-  public Pet category(Category category) {
-    this.category = category;
-    return this;
-  }
-
-  
   @ApiModelProperty(value = "")
   @JsonProperty("category")
   public Category getCategory() {
     return category;
   }
+
   public void setCategory(Category category) {
     this.category = category;
   }
-
-  /**
-   **/
-  public Pet name(String name) {
-    this.name = name;
-    return this;
-  }
-
-  
   @ApiModelProperty(example = "doggie", required = true, value = "")
   @JsonProperty("name")
   @NotNull
   public String getName() {
     return name;
   }
+
   public void setName(String name) {
     this.name = name;
   }
-
-  /**
-   **/
-  public Pet photoUrls(List<String> photoUrls) {
-    this.photoUrls = photoUrls;
-    return this;
-  }
-
-  
   @ApiModelProperty(required = true, value = "")
   @JsonProperty("photoUrls")
   @NotNull
   public List<String> getPhotoUrls() {
     return photoUrls;
   }
+
   public void setPhotoUrls(List<String> photoUrls) {
     this.photoUrls = photoUrls;
   }
-
-  /**
-   **/
-  public Pet tags(List<Tag> tags) {
-    this.tags = tags;
-    return this;
-  }
-
-  
   @ApiModelProperty(value = "")
   @JsonProperty("tags")
   public List<Tag> getTags() {
     return tags;
   }
+
   public void setTags(List<Tag> tags) {
     this.tags = tags;
   }
-
-  /**
-   * pet status in the store
-   **/
-  public Pet status(StatusEnum status) {
-    this.status = status;
-    return this;
-  }
-
-  
   @ApiModelProperty(value = "pet status in the store")
   @JsonProperty("status")
   public StatusEnum getStatus() {
     return status;
   }
+
   public void setStatus(StatusEnum status) {
     this.status = status;
   }
 
-
   @Override
   public boolean equals(java.lang.Object o) {
     if (this == o) {
@@ -213,5 +174,60 @@ public enum StatusEnum {
     }
     return o.toString().replace("\n", "\n    ");
   }
+
+  public static Builder builder() {
+    return new Builder();
+  }
+
+  public static class Builder {
+    private Long id;
+    private Category category;
+    private String name;
+    private List<String> photoUrls = new ArrayList<String>();
+    private List<Tag> tags = new ArrayList<Tag>();
+    private StatusEnum status;
+
+    /**
+      **/
+    public Builder id(Long id) {
+      this.id = id;
+      return this;
+    }
+    /**
+      **/
+    public Builder category(Category category) {
+      this.category = category;
+      return this;
+    }
+    /**
+      **/
+    public Builder name(String name) {
+      this.name = name;
+      return this;
+    }
+    /**
+      **/
+    public Builder photoUrls(List<String> photoUrls) {
+      this.photoUrls = photoUrls;
+      return this;
+    }
+    /**
+      **/
+    public Builder tags(List<Tag> tags) {
+      this.tags = tags;
+      return this;
+    }
+    /**
+      * pet status in the store
+      **/
+    public Builder status(StatusEnum status) {
+      this.status = status;
+      return this;
+    }
+
+    public Pet build() {
+      return new Pet(id, category, name, photoUrls, tags, status);
+    }
+  }
 }
 
diff --git a/samples/server/petstore/jaxrs-spec/src/gen/java/org/openapitools/model/ReadOnlyFirst.java b/samples/server/petstore/jaxrs-spec/src/gen/java/org/openapitools/model/ReadOnlyFirst.java
index 27b680b98690fb0d00f6e4ea8b52fe5861cac813..564f4882a9c602124783654633350090a79a6dee 100644
--- a/samples/server/petstore/jaxrs-spec/src/gen/java/org/openapitools/model/ReadOnlyFirst.java
+++ b/samples/server/petstore/jaxrs-spec/src/gen/java/org/openapitools/model/ReadOnlyFirst.java
@@ -19,11 +19,9 @@ public class ReadOnlyFirst  implements Serializable {
   private @Valid String bar;
   private @Valid String baz;
 
-  /**
-   **/
-  public ReadOnlyFirst bar(String bar) {
+  public ReadOnlyFirst(String bar, String baz) {
     this.bar = bar;
-    return this;
+    this.baz = baz;
   }
 
   
@@ -32,28 +30,20 @@ public class ReadOnlyFirst  implements Serializable {
   public String getBar() {
     return bar;
   }
+
   public void setBar(String bar) {
     this.bar = bar;
   }
-
-  /**
-   **/
-  public ReadOnlyFirst baz(String baz) {
-    this.baz = baz;
-    return this;
-  }
-
-  
   @ApiModelProperty(value = "")
   @JsonProperty("baz")
   public String getBaz() {
     return baz;
   }
+
   public void setBaz(String baz) {
     this.baz = baz;
   }
 
-
   @Override
   public boolean equals(java.lang.Object o) {
     if (this == o) {
@@ -93,5 +83,31 @@ public class ReadOnlyFirst  implements Serializable {
     }
     return o.toString().replace("\n", "\n    ");
   }
+
+  public static Builder builder() {
+    return new Builder();
+  }
+
+  public static class Builder {
+    private String bar;
+    private String baz;
+
+    /**
+      **/
+    public Builder bar(String bar) {
+      this.bar = bar;
+      return this;
+    }
+    /**
+      **/
+    public Builder baz(String baz) {
+      this.baz = baz;
+      return this;
+    }
+
+    public ReadOnlyFirst build() {
+      return new ReadOnlyFirst(bar, baz);
+    }
+  }
 }
 
diff --git a/samples/server/petstore/jaxrs-spec/src/gen/java/org/openapitools/model/SpecialModelName.java b/samples/server/petstore/jaxrs-spec/src/gen/java/org/openapitools/model/SpecialModelName.java
index 9e1984faaa05d33553b23b3254663ab0ab6e91e6..5e19a2deb4be3dc9b48fa52bf93e765b4f14ed82 100644
--- a/samples/server/petstore/jaxrs-spec/src/gen/java/org/openapitools/model/SpecialModelName.java
+++ b/samples/server/petstore/jaxrs-spec/src/gen/java/org/openapitools/model/SpecialModelName.java
@@ -18,11 +18,8 @@ public class SpecialModelName  implements Serializable {
   
   private @Valid Long $specialPropertyName;
 
-  /**
-   **/
-  public SpecialModelName $specialPropertyName(Long $specialPropertyName) {
+  public SpecialModelName(Long $specialPropertyName) {
     this.$specialPropertyName = $specialPropertyName;
-    return this;
   }
 
   
@@ -31,11 +28,11 @@ public class SpecialModelName  implements Serializable {
   public Long get$SpecialPropertyName() {
     return $specialPropertyName;
   }
+
   public void set$SpecialPropertyName(Long $specialPropertyName) {
     this.$specialPropertyName = $specialPropertyName;
   }
 
-
   @Override
   public boolean equals(java.lang.Object o) {
     if (this == o) {
@@ -73,5 +70,24 @@ public class SpecialModelName  implements Serializable {
     }
     return o.toString().replace("\n", "\n    ");
   }
+
+  public static Builder builder() {
+    return new Builder();
+  }
+
+  public static class Builder {
+    private Long $specialPropertyName;
+
+    /**
+      **/
+    public Builder $specialPropertyName(Long $specialPropertyName) {
+      this.$specialPropertyName = $specialPropertyName;
+      return this;
+    }
+
+    public SpecialModelName build() {
+      return new SpecialModelName($specialPropertyName);
+    }
+  }
 }
 
diff --git a/samples/server/petstore/jaxrs-spec/src/gen/java/org/openapitools/model/Tag.java b/samples/server/petstore/jaxrs-spec/src/gen/java/org/openapitools/model/Tag.java
index cec2b713130a8536047d9af6e53fbbf5e818b9a4..c0ac65054b2c86c1745134181095ae81ae8a4a0b 100644
--- a/samples/server/petstore/jaxrs-spec/src/gen/java/org/openapitools/model/Tag.java
+++ b/samples/server/petstore/jaxrs-spec/src/gen/java/org/openapitools/model/Tag.java
@@ -19,11 +19,9 @@ public class Tag  implements Serializable {
   private @Valid Long id;
   private @Valid String name;
 
-  /**
-   **/
-  public Tag id(Long id) {
+  public Tag(Long id, String name) {
     this.id = id;
-    return this;
+    this.name = name;
   }
 
   
@@ -32,28 +30,20 @@ public class Tag  implements Serializable {
   public Long getId() {
     return id;
   }
+
   public void setId(Long id) {
     this.id = id;
   }
-
-  /**
-   **/
-  public Tag name(String name) {
-    this.name = name;
-    return this;
-  }
-
-  
   @ApiModelProperty(value = "")
   @JsonProperty("name")
   public String getName() {
     return name;
   }
+
   public void setName(String name) {
     this.name = name;
   }
 
-
   @Override
   public boolean equals(java.lang.Object o) {
     if (this == o) {
@@ -93,5 +83,31 @@ public class Tag  implements Serializable {
     }
     return o.toString().replace("\n", "\n    ");
   }
+
+  public static Builder builder() {
+    return new Builder();
+  }
+
+  public static class Builder {
+    private Long id;
+    private String name;
+
+    /**
+      **/
+    public Builder id(Long id) {
+      this.id = id;
+      return this;
+    }
+    /**
+      **/
+    public Builder name(String name) {
+      this.name = name;
+      return this;
+    }
+
+    public Tag build() {
+      return new Tag(id, name);
+    }
+  }
 }
 
diff --git a/samples/server/petstore/jaxrs-spec/src/gen/java/org/openapitools/model/TypeHolderDefault.java b/samples/server/petstore/jaxrs-spec/src/gen/java/org/openapitools/model/TypeHolderDefault.java
index 957dd7c6cf3a3744da6b7abf68712026a175c83d..d615aa32eca0829cf5c47b3ea833450a3cf18e90 100644
--- a/samples/server/petstore/jaxrs-spec/src/gen/java/org/openapitools/model/TypeHolderDefault.java
+++ b/samples/server/petstore/jaxrs-spec/src/gen/java/org/openapitools/model/TypeHolderDefault.java
@@ -25,11 +25,12 @@ public class TypeHolderDefault  implements Serializable {
   private @Valid Boolean boolItem = true;
   private @Valid List<Integer> arrayItem = new ArrayList<Integer>();
 
-  /**
-   **/
-  public TypeHolderDefault stringItem(String stringItem) {
+  public TypeHolderDefault(String stringItem, BigDecimal numberItem, Integer integerItem, Boolean boolItem, List<Integer> arrayItem) {
     this.stringItem = stringItem;
-    return this;
+    this.numberItem = numberItem;
+    this.integerItem = integerItem;
+    this.boolItem = boolItem;
+    this.arrayItem = arrayItem;
   }
 
   
@@ -39,83 +40,51 @@ public class TypeHolderDefault  implements Serializable {
   public String getStringItem() {
     return stringItem;
   }
+
   public void setStringItem(String stringItem) {
     this.stringItem = stringItem;
   }
-
-  /**
-   **/
-  public TypeHolderDefault numberItem(BigDecimal numberItem) {
-    this.numberItem = numberItem;
-    return this;
-  }
-
-  
   @ApiModelProperty(required = true, value = "")
   @JsonProperty("number_item")
   @NotNull
   public BigDecimal getNumberItem() {
     return numberItem;
   }
+
   public void setNumberItem(BigDecimal numberItem) {
     this.numberItem = numberItem;
   }
-
-  /**
-   **/
-  public TypeHolderDefault integerItem(Integer integerItem) {
-    this.integerItem = integerItem;
-    return this;
-  }
-
-  
   @ApiModelProperty(required = true, value = "")
   @JsonProperty("integer_item")
   @NotNull
   public Integer getIntegerItem() {
     return integerItem;
   }
+
   public void setIntegerItem(Integer integerItem) {
     this.integerItem = integerItem;
   }
-
-  /**
-   **/
-  public TypeHolderDefault boolItem(Boolean boolItem) {
-    this.boolItem = boolItem;
-    return this;
-  }
-
-  
   @ApiModelProperty(required = true, value = "")
   @JsonProperty("bool_item")
   @NotNull
   public Boolean getBoolItem() {
     return boolItem;
   }
+
   public void setBoolItem(Boolean boolItem) {
     this.boolItem = boolItem;
   }
-
-  /**
-   **/
-  public TypeHolderDefault arrayItem(List<Integer> arrayItem) {
-    this.arrayItem = arrayItem;
-    return this;
-  }
-
-  
   @ApiModelProperty(required = true, value = "")
   @JsonProperty("array_item")
   @NotNull
   public List<Integer> getArrayItem() {
     return arrayItem;
   }
+
   public void setArrayItem(List<Integer> arrayItem) {
     this.arrayItem = arrayItem;
   }
 
-
   @Override
   public boolean equals(java.lang.Object o) {
     if (this == o) {
@@ -161,5 +130,52 @@ public class TypeHolderDefault  implements Serializable {
     }
     return o.toString().replace("\n", "\n    ");
   }
+
+  public static Builder builder() {
+    return new Builder();
+  }
+
+  public static class Builder {
+    private String stringItem = "what";
+    private BigDecimal numberItem;
+    private Integer integerItem;
+    private Boolean boolItem = true;
+    private List<Integer> arrayItem = new ArrayList<Integer>();
+
+    /**
+      **/
+    public Builder stringItem(String stringItem) {
+      this.stringItem = stringItem;
+      return this;
+    }
+    /**
+      **/
+    public Builder numberItem(BigDecimal numberItem) {
+      this.numberItem = numberItem;
+      return this;
+    }
+    /**
+      **/
+    public Builder integerItem(Integer integerItem) {
+      this.integerItem = integerItem;
+      return this;
+    }
+    /**
+      **/
+    public Builder boolItem(Boolean boolItem) {
+      this.boolItem = boolItem;
+      return this;
+    }
+    /**
+      **/
+    public Builder arrayItem(List<Integer> arrayItem) {
+      this.arrayItem = arrayItem;
+      return this;
+    }
+
+    public TypeHolderDefault build() {
+      return new TypeHolderDefault(stringItem, numberItem, integerItem, boolItem, arrayItem);
+    }
+  }
 }
 
diff --git a/samples/server/petstore/jaxrs-spec/src/gen/java/org/openapitools/model/TypeHolderExample.java b/samples/server/petstore/jaxrs-spec/src/gen/java/org/openapitools/model/TypeHolderExample.java
index d7c9125b74fa53238073e6f6ed4b79cc4bdfd503..1a6f043e254bf4e3da3a9243d68c3a78877d4f77 100644
--- a/samples/server/petstore/jaxrs-spec/src/gen/java/org/openapitools/model/TypeHolderExample.java
+++ b/samples/server/petstore/jaxrs-spec/src/gen/java/org/openapitools/model/TypeHolderExample.java
@@ -26,11 +26,13 @@ public class TypeHolderExample  implements Serializable {
   private @Valid Boolean boolItem;
   private @Valid List<Integer> arrayItem = new ArrayList<Integer>();
 
-  /**
-   **/
-  public TypeHolderExample stringItem(String stringItem) {
+  public TypeHolderExample(String stringItem, BigDecimal numberItem, Float floatItem, Integer integerItem, Boolean boolItem, List<Integer> arrayItem) {
     this.stringItem = stringItem;
-    return this;
+    this.numberItem = numberItem;
+    this.floatItem = floatItem;
+    this.integerItem = integerItem;
+    this.boolItem = boolItem;
+    this.arrayItem = arrayItem;
   }
 
   
@@ -40,101 +42,61 @@ public class TypeHolderExample  implements Serializable {
   public String getStringItem() {
     return stringItem;
   }
+
   public void setStringItem(String stringItem) {
     this.stringItem = stringItem;
   }
-
-  /**
-   **/
-  public TypeHolderExample numberItem(BigDecimal numberItem) {
-    this.numberItem = numberItem;
-    return this;
-  }
-
-  
   @ApiModelProperty(example = "1.234", required = true, value = "")
   @JsonProperty("number_item")
   @NotNull
   public BigDecimal getNumberItem() {
     return numberItem;
   }
+
   public void setNumberItem(BigDecimal numberItem) {
     this.numberItem = numberItem;
   }
-
-  /**
-   **/
-  public TypeHolderExample floatItem(Float floatItem) {
-    this.floatItem = floatItem;
-    return this;
-  }
-
-  
   @ApiModelProperty(example = "1.234", required = true, value = "")
   @JsonProperty("float_item")
   @NotNull
   public Float getFloatItem() {
     return floatItem;
   }
+
   public void setFloatItem(Float floatItem) {
     this.floatItem = floatItem;
   }
-
-  /**
-   **/
-  public TypeHolderExample integerItem(Integer integerItem) {
-    this.integerItem = integerItem;
-    return this;
-  }
-
-  
   @ApiModelProperty(example = "-2", required = true, value = "")
   @JsonProperty("integer_item")
   @NotNull
   public Integer getIntegerItem() {
     return integerItem;
   }
+
   public void setIntegerItem(Integer integerItem) {
     this.integerItem = integerItem;
   }
-
-  /**
-   **/
-  public TypeHolderExample boolItem(Boolean boolItem) {
-    this.boolItem = boolItem;
-    return this;
-  }
-
-  
   @ApiModelProperty(example = "true", required = true, value = "")
   @JsonProperty("bool_item")
   @NotNull
   public Boolean getBoolItem() {
     return boolItem;
   }
+
   public void setBoolItem(Boolean boolItem) {
     this.boolItem = boolItem;
   }
-
-  /**
-   **/
-  public TypeHolderExample arrayItem(List<Integer> arrayItem) {
-    this.arrayItem = arrayItem;
-    return this;
-  }
-
-  
   @ApiModelProperty(example = "[0, 1, 2, 3]", required = true, value = "")
   @JsonProperty("array_item")
   @NotNull
   public List<Integer> getArrayItem() {
     return arrayItem;
   }
+
   public void setArrayItem(List<Integer> arrayItem) {
     this.arrayItem = arrayItem;
   }
 
-
   @Override
   public boolean equals(java.lang.Object o) {
     if (this == o) {
@@ -182,5 +144,59 @@ public class TypeHolderExample  implements Serializable {
     }
     return o.toString().replace("\n", "\n    ");
   }
+
+  public static Builder builder() {
+    return new Builder();
+  }
+
+  public static class Builder {
+    private String stringItem;
+    private BigDecimal numberItem;
+    private Float floatItem;
+    private Integer integerItem;
+    private Boolean boolItem;
+    private List<Integer> arrayItem = new ArrayList<Integer>();
+
+    /**
+      **/
+    public Builder stringItem(String stringItem) {
+      this.stringItem = stringItem;
+      return this;
+    }
+    /**
+      **/
+    public Builder numberItem(BigDecimal numberItem) {
+      this.numberItem = numberItem;
+      return this;
+    }
+    /**
+      **/
+    public Builder floatItem(Float floatItem) {
+      this.floatItem = floatItem;
+      return this;
+    }
+    /**
+      **/
+    public Builder integerItem(Integer integerItem) {
+      this.integerItem = integerItem;
+      return this;
+    }
+    /**
+      **/
+    public Builder boolItem(Boolean boolItem) {
+      this.boolItem = boolItem;
+      return this;
+    }
+    /**
+      **/
+    public Builder arrayItem(List<Integer> arrayItem) {
+      this.arrayItem = arrayItem;
+      return this;
+    }
+
+    public TypeHolderExample build() {
+      return new TypeHolderExample(stringItem, numberItem, floatItem, integerItem, boolItem, arrayItem);
+    }
+  }
 }
 
diff --git a/samples/server/petstore/jaxrs-spec/src/gen/java/org/openapitools/model/User.java b/samples/server/petstore/jaxrs-spec/src/gen/java/org/openapitools/model/User.java
index 2ab19c284a3019218582bcbcddba0e6ac8948696..e85cdceee0bdec9387d3372a5aacb3452ece0787 100644
--- a/samples/server/petstore/jaxrs-spec/src/gen/java/org/openapitools/model/User.java
+++ b/samples/server/petstore/jaxrs-spec/src/gen/java/org/openapitools/model/User.java
@@ -25,11 +25,15 @@ public class User  implements Serializable {
   private @Valid String phone;
   private @Valid Integer userStatus;
 
-  /**
-   **/
-  public User id(Long id) {
+  public User(Long id, String username, String firstName, String lastName, String email, String password, String phone, Integer userStatus) {
     this.id = id;
-    return this;
+    this.username = username;
+    this.firstName = firstName;
+    this.lastName = lastName;
+    this.email = email;
+    this.password = password;
+    this.phone = phone;
+    this.userStatus = userStatus;
   }
 
   
@@ -38,131 +42,74 @@ public class User  implements Serializable {
   public Long getId() {
     return id;
   }
+
   public void setId(Long id) {
     this.id = id;
   }
-
-  /**
-   **/
-  public User username(String username) {
-    this.username = username;
-    return this;
-  }
-
-  
   @ApiModelProperty(value = "")
   @JsonProperty("username")
   public String getUsername() {
     return username;
   }
+
   public void setUsername(String username) {
     this.username = username;
   }
-
-  /**
-   **/
-  public User firstName(String firstName) {
-    this.firstName = firstName;
-    return this;
-  }
-
-  
   @ApiModelProperty(value = "")
   @JsonProperty("firstName")
   public String getFirstName() {
     return firstName;
   }
+
   public void setFirstName(String firstName) {
     this.firstName = firstName;
   }
-
-  /**
-   **/
-  public User lastName(String lastName) {
-    this.lastName = lastName;
-    return this;
-  }
-
-  
   @ApiModelProperty(value = "")
   @JsonProperty("lastName")
   public String getLastName() {
     return lastName;
   }
+
   public void setLastName(String lastName) {
     this.lastName = lastName;
   }
-
-  /**
-   **/
-  public User email(String email) {
-    this.email = email;
-    return this;
-  }
-
-  
   @ApiModelProperty(value = "")
   @JsonProperty("email")
   public String getEmail() {
     return email;
   }
+
   public void setEmail(String email) {
     this.email = email;
   }
-
-  /**
-   **/
-  public User password(String password) {
-    this.password = password;
-    return this;
-  }
-
-  
   @ApiModelProperty(value = "")
   @JsonProperty("password")
   public String getPassword() {
     return password;
   }
+
   public void setPassword(String password) {
     this.password = password;
   }
-
-  /**
-   **/
-  public User phone(String phone) {
-    this.phone = phone;
-    return this;
-  }
-
-  
   @ApiModelProperty(value = "")
   @JsonProperty("phone")
   public String getPhone() {
     return phone;
   }
+
   public void setPhone(String phone) {
     this.phone = phone;
   }
-
-  /**
-   * User Status
-   **/
-  public User userStatus(Integer userStatus) {
-    this.userStatus = userStatus;
-    return this;
-  }
-
-  
   @ApiModelProperty(value = "User Status")
   @JsonProperty("userStatus")
   public Integer getUserStatus() {
     return userStatus;
   }
+
   public void setUserStatus(Integer userStatus) {
     this.userStatus = userStatus;
   }
 
-
   @Override
   public boolean equals(java.lang.Object o) {
     if (this == o) {
@@ -214,5 +161,74 @@ public class User  implements Serializable {
     }
     return o.toString().replace("\n", "\n    ");
   }
+
+  public static Builder builder() {
+    return new Builder();
+  }
+
+  public static class Builder {
+    private Long id;
+    private String username;
+    private String firstName;
+    private String lastName;
+    private String email;
+    private String password;
+    private String phone;
+    private Integer userStatus;
+
+    /**
+      **/
+    public Builder id(Long id) {
+      this.id = id;
+      return this;
+    }
+    /**
+      **/
+    public Builder username(String username) {
+      this.username = username;
+      return this;
+    }
+    /**
+      **/
+    public Builder firstName(String firstName) {
+      this.firstName = firstName;
+      return this;
+    }
+    /**
+      **/
+    public Builder lastName(String lastName) {
+      this.lastName = lastName;
+      return this;
+    }
+    /**
+      **/
+    public Builder email(String email) {
+      this.email = email;
+      return this;
+    }
+    /**
+      **/
+    public Builder password(String password) {
+      this.password = password;
+      return this;
+    }
+    /**
+      **/
+    public Builder phone(String phone) {
+      this.phone = phone;
+      return this;
+    }
+    /**
+      * User Status
+      **/
+    public Builder userStatus(Integer userStatus) {
+      this.userStatus = userStatus;
+      return this;
+    }
+
+    public User build() {
+      return new User(id, username, firstName, lastName, email, password, phone, userStatus);
+    }
+  }
 }
 
diff --git a/samples/server/petstore/jaxrs-spec/src/gen/java/org/openapitools/model/XmlItem.java b/samples/server/petstore/jaxrs-spec/src/gen/java/org/openapitools/model/XmlItem.java
index 8c841c34f1108f4e500fcc98a5768d4d727096cc..6b90f7917489533cb0e4c9be43c53cbeee7fac29 100644
--- a/samples/server/petstore/jaxrs-spec/src/gen/java/org/openapitools/model/XmlItem.java
+++ b/samples/server/petstore/jaxrs-spec/src/gen/java/org/openapitools/model/XmlItem.java
@@ -49,11 +49,36 @@ public class XmlItem  implements Serializable {
   private @Valid List<Integer> prefixNsArray = new ArrayList<Integer>();
   private @Valid List<Integer> prefixNsWrappedArray = new ArrayList<Integer>();
 
-  /**
-   **/
-  public XmlItem attributeString(String attributeString) {
+  public XmlItem(String attributeString, BigDecimal attributeNumber, Integer attributeInteger, Boolean attributeBoolean, List<Integer> wrappedArray, String nameString, BigDecimal nameNumber, Integer nameInteger, Boolean nameBoolean, List<Integer> nameArray, List<Integer> nameWrappedArray, String prefixString, BigDecimal prefixNumber, Integer prefixInteger, Boolean prefixBoolean, List<Integer> prefixArray, List<Integer> prefixWrappedArray, String namespaceString, BigDecimal namespaceNumber, Integer namespaceInteger, Boolean namespaceBoolean, List<Integer> namespaceArray, List<Integer> namespaceWrappedArray, String prefixNsString, BigDecimal prefixNsNumber, Integer prefixNsInteger, Boolean prefixNsBoolean, List<Integer> prefixNsArray, List<Integer> prefixNsWrappedArray) {
     this.attributeString = attributeString;
-    return this;
+    this.attributeNumber = attributeNumber;
+    this.attributeInteger = attributeInteger;
+    this.attributeBoolean = attributeBoolean;
+    this.wrappedArray = wrappedArray;
+    this.nameString = nameString;
+    this.nameNumber = nameNumber;
+    this.nameInteger = nameInteger;
+    this.nameBoolean = nameBoolean;
+    this.nameArray = nameArray;
+    this.nameWrappedArray = nameWrappedArray;
+    this.prefixString = prefixString;
+    this.prefixNumber = prefixNumber;
+    this.prefixInteger = prefixInteger;
+    this.prefixBoolean = prefixBoolean;
+    this.prefixArray = prefixArray;
+    this.prefixWrappedArray = prefixWrappedArray;
+    this.namespaceString = namespaceString;
+    this.namespaceNumber = namespaceNumber;
+    this.namespaceInteger = namespaceInteger;
+    this.namespaceBoolean = namespaceBoolean;
+    this.namespaceArray = namespaceArray;
+    this.namespaceWrappedArray = namespaceWrappedArray;
+    this.prefixNsString = prefixNsString;
+    this.prefixNsNumber = prefixNsNumber;
+    this.prefixNsInteger = prefixNsInteger;
+    this.prefixNsBoolean = prefixNsBoolean;
+    this.prefixNsArray = prefixNsArray;
+    this.prefixNsWrappedArray = prefixNsWrappedArray;
   }
 
   
@@ -62,487 +87,263 @@ public class XmlItem  implements Serializable {
   public String getAttributeString() {
     return attributeString;
   }
+
   public void setAttributeString(String attributeString) {
     this.attributeString = attributeString;
   }
-
-  /**
-   **/
-  public XmlItem attributeNumber(BigDecimal attributeNumber) {
-    this.attributeNumber = attributeNumber;
-    return this;
-  }
-
-  
   @ApiModelProperty(example = "1.234", value = "")
   @JsonProperty("attribute_number")
   public BigDecimal getAttributeNumber() {
     return attributeNumber;
   }
+
   public void setAttributeNumber(BigDecimal attributeNumber) {
     this.attributeNumber = attributeNumber;
   }
-
-  /**
-   **/
-  public XmlItem attributeInteger(Integer attributeInteger) {
-    this.attributeInteger = attributeInteger;
-    return this;
-  }
-
-  
   @ApiModelProperty(example = "-2", value = "")
   @JsonProperty("attribute_integer")
   public Integer getAttributeInteger() {
     return attributeInteger;
   }
+
   public void setAttributeInteger(Integer attributeInteger) {
     this.attributeInteger = attributeInteger;
   }
-
-  /**
-   **/
-  public XmlItem attributeBoolean(Boolean attributeBoolean) {
-    this.attributeBoolean = attributeBoolean;
-    return this;
-  }
-
-  
   @ApiModelProperty(example = "true", value = "")
   @JsonProperty("attribute_boolean")
   public Boolean getAttributeBoolean() {
     return attributeBoolean;
   }
+
   public void setAttributeBoolean(Boolean attributeBoolean) {
     this.attributeBoolean = attributeBoolean;
   }
-
-  /**
-   **/
-  public XmlItem wrappedArray(List<Integer> wrappedArray) {
-    this.wrappedArray = wrappedArray;
-    return this;
-  }
-
-  
   @ApiModelProperty(value = "")
   @JsonProperty("wrapped_array")
   public List<Integer> getWrappedArray() {
     return wrappedArray;
   }
+
   public void setWrappedArray(List<Integer> wrappedArray) {
     this.wrappedArray = wrappedArray;
   }
-
-  /**
-   **/
-  public XmlItem nameString(String nameString) {
-    this.nameString = nameString;
-    return this;
-  }
-
-  
   @ApiModelProperty(example = "string", value = "")
   @JsonProperty("name_string")
   public String getNameString() {
     return nameString;
   }
+
   public void setNameString(String nameString) {
     this.nameString = nameString;
   }
-
-  /**
-   **/
-  public XmlItem nameNumber(BigDecimal nameNumber) {
-    this.nameNumber = nameNumber;
-    return this;
-  }
-
-  
   @ApiModelProperty(example = "1.234", value = "")
   @JsonProperty("name_number")
   public BigDecimal getNameNumber() {
     return nameNumber;
   }
+
   public void setNameNumber(BigDecimal nameNumber) {
     this.nameNumber = nameNumber;
   }
-
-  /**
-   **/
-  public XmlItem nameInteger(Integer nameInteger) {
-    this.nameInteger = nameInteger;
-    return this;
-  }
-
-  
   @ApiModelProperty(example = "-2", value = "")
   @JsonProperty("name_integer")
   public Integer getNameInteger() {
     return nameInteger;
   }
+
   public void setNameInteger(Integer nameInteger) {
     this.nameInteger = nameInteger;
   }
-
-  /**
-   **/
-  public XmlItem nameBoolean(Boolean nameBoolean) {
-    this.nameBoolean = nameBoolean;
-    return this;
-  }
-
-  
   @ApiModelProperty(example = "true", value = "")
   @JsonProperty("name_boolean")
   public Boolean getNameBoolean() {
     return nameBoolean;
   }
+
   public void setNameBoolean(Boolean nameBoolean) {
     this.nameBoolean = nameBoolean;
   }
-
-  /**
-   **/
-  public XmlItem nameArray(List<Integer> nameArray) {
-    this.nameArray = nameArray;
-    return this;
-  }
-
-  
   @ApiModelProperty(value = "")
   @JsonProperty("name_array")
   public List<Integer> getNameArray() {
     return nameArray;
   }
+
   public void setNameArray(List<Integer> nameArray) {
     this.nameArray = nameArray;
   }
-
-  /**
-   **/
-  public XmlItem nameWrappedArray(List<Integer> nameWrappedArray) {
-    this.nameWrappedArray = nameWrappedArray;
-    return this;
-  }
-
-  
   @ApiModelProperty(value = "")
   @JsonProperty("name_wrapped_array")
   public List<Integer> getNameWrappedArray() {
     return nameWrappedArray;
   }
+
   public void setNameWrappedArray(List<Integer> nameWrappedArray) {
     this.nameWrappedArray = nameWrappedArray;
   }
-
-  /**
-   **/
-  public XmlItem prefixString(String prefixString) {
-    this.prefixString = prefixString;
-    return this;
-  }
-
-  
   @ApiModelProperty(example = "string", value = "")
   @JsonProperty("prefix_string")
   public String getPrefixString() {
     return prefixString;
   }
+
   public void setPrefixString(String prefixString) {
     this.prefixString = prefixString;
   }
-
-  /**
-   **/
-  public XmlItem prefixNumber(BigDecimal prefixNumber) {
-    this.prefixNumber = prefixNumber;
-    return this;
-  }
-
-  
   @ApiModelProperty(example = "1.234", value = "")
   @JsonProperty("prefix_number")
   public BigDecimal getPrefixNumber() {
     return prefixNumber;
   }
+
   public void setPrefixNumber(BigDecimal prefixNumber) {
     this.prefixNumber = prefixNumber;
   }
-
-  /**
-   **/
-  public XmlItem prefixInteger(Integer prefixInteger) {
-    this.prefixInteger = prefixInteger;
-    return this;
-  }
-
-  
   @ApiModelProperty(example = "-2", value = "")
   @JsonProperty("prefix_integer")
   public Integer getPrefixInteger() {
     return prefixInteger;
   }
+
   public void setPrefixInteger(Integer prefixInteger) {
     this.prefixInteger = prefixInteger;
   }
-
-  /**
-   **/
-  public XmlItem prefixBoolean(Boolean prefixBoolean) {
-    this.prefixBoolean = prefixBoolean;
-    return this;
-  }
-
-  
   @ApiModelProperty(example = "true", value = "")
   @JsonProperty("prefix_boolean")
   public Boolean getPrefixBoolean() {
     return prefixBoolean;
   }
+
   public void setPrefixBoolean(Boolean prefixBoolean) {
     this.prefixBoolean = prefixBoolean;
   }
-
-  /**
-   **/
-  public XmlItem prefixArray(List<Integer> prefixArray) {
-    this.prefixArray = prefixArray;
-    return this;
-  }
-
-  
   @ApiModelProperty(value = "")
   @JsonProperty("prefix_array")
   public List<Integer> getPrefixArray() {
     return prefixArray;
   }
+
   public void setPrefixArray(List<Integer> prefixArray) {
     this.prefixArray = prefixArray;
   }
-
-  /**
-   **/
-  public XmlItem prefixWrappedArray(List<Integer> prefixWrappedArray) {
-    this.prefixWrappedArray = prefixWrappedArray;
-    return this;
-  }
-
-  
   @ApiModelProperty(value = "")
   @JsonProperty("prefix_wrapped_array")
   public List<Integer> getPrefixWrappedArray() {
     return prefixWrappedArray;
   }
+
   public void setPrefixWrappedArray(List<Integer> prefixWrappedArray) {
     this.prefixWrappedArray = prefixWrappedArray;
   }
-
-  /**
-   **/
-  public XmlItem namespaceString(String namespaceString) {
-    this.namespaceString = namespaceString;
-    return this;
-  }
-
-  
   @ApiModelProperty(example = "string", value = "")
   @JsonProperty("namespace_string")
   public String getNamespaceString() {
     return namespaceString;
   }
+
   public void setNamespaceString(String namespaceString) {
     this.namespaceString = namespaceString;
   }
-
-  /**
-   **/
-  public XmlItem namespaceNumber(BigDecimal namespaceNumber) {
-    this.namespaceNumber = namespaceNumber;
-    return this;
-  }
-
-  
   @ApiModelProperty(example = "1.234", value = "")
   @JsonProperty("namespace_number")
   public BigDecimal getNamespaceNumber() {
     return namespaceNumber;
   }
+
   public void setNamespaceNumber(BigDecimal namespaceNumber) {
     this.namespaceNumber = namespaceNumber;
   }
-
-  /**
-   **/
-  public XmlItem namespaceInteger(Integer namespaceInteger) {
-    this.namespaceInteger = namespaceInteger;
-    return this;
-  }
-
-  
   @ApiModelProperty(example = "-2", value = "")
   @JsonProperty("namespace_integer")
   public Integer getNamespaceInteger() {
     return namespaceInteger;
   }
+
   public void setNamespaceInteger(Integer namespaceInteger) {
     this.namespaceInteger = namespaceInteger;
   }
-
-  /**
-   **/
-  public XmlItem namespaceBoolean(Boolean namespaceBoolean) {
-    this.namespaceBoolean = namespaceBoolean;
-    return this;
-  }
-
-  
   @ApiModelProperty(example = "true", value = "")
   @JsonProperty("namespace_boolean")
   public Boolean getNamespaceBoolean() {
     return namespaceBoolean;
   }
+
   public void setNamespaceBoolean(Boolean namespaceBoolean) {
     this.namespaceBoolean = namespaceBoolean;
   }
-
-  /**
-   **/
-  public XmlItem namespaceArray(List<Integer> namespaceArray) {
-    this.namespaceArray = namespaceArray;
-    return this;
-  }
-
-  
   @ApiModelProperty(value = "")
   @JsonProperty("namespace_array")
   public List<Integer> getNamespaceArray() {
     return namespaceArray;
   }
+
   public void setNamespaceArray(List<Integer> namespaceArray) {
     this.namespaceArray = namespaceArray;
   }
-
-  /**
-   **/
-  public XmlItem namespaceWrappedArray(List<Integer> namespaceWrappedArray) {
-    this.namespaceWrappedArray = namespaceWrappedArray;
-    return this;
-  }
-
-  
   @ApiModelProperty(value = "")
   @JsonProperty("namespace_wrapped_array")
   public List<Integer> getNamespaceWrappedArray() {
     return namespaceWrappedArray;
   }
+
   public void setNamespaceWrappedArray(List<Integer> namespaceWrappedArray) {
     this.namespaceWrappedArray = namespaceWrappedArray;
   }
-
-  /**
-   **/
-  public XmlItem prefixNsString(String prefixNsString) {
-    this.prefixNsString = prefixNsString;
-    return this;
-  }
-
-  
   @ApiModelProperty(example = "string", value = "")
   @JsonProperty("prefix_ns_string")
   public String getPrefixNsString() {
     return prefixNsString;
   }
+
   public void setPrefixNsString(String prefixNsString) {
     this.prefixNsString = prefixNsString;
   }
-
-  /**
-   **/
-  public XmlItem prefixNsNumber(BigDecimal prefixNsNumber) {
-    this.prefixNsNumber = prefixNsNumber;
-    return this;
-  }
-
-  
   @ApiModelProperty(example = "1.234", value = "")
   @JsonProperty("prefix_ns_number")
   public BigDecimal getPrefixNsNumber() {
     return prefixNsNumber;
   }
+
   public void setPrefixNsNumber(BigDecimal prefixNsNumber) {
     this.prefixNsNumber = prefixNsNumber;
   }
-
-  /**
-   **/
-  public XmlItem prefixNsInteger(Integer prefixNsInteger) {
-    this.prefixNsInteger = prefixNsInteger;
-    return this;
-  }
-
-  
   @ApiModelProperty(example = "-2", value = "")
   @JsonProperty("prefix_ns_integer")
   public Integer getPrefixNsInteger() {
     return prefixNsInteger;
   }
+
   public void setPrefixNsInteger(Integer prefixNsInteger) {
     this.prefixNsInteger = prefixNsInteger;
   }
-
-  /**
-   **/
-  public XmlItem prefixNsBoolean(Boolean prefixNsBoolean) {
-    this.prefixNsBoolean = prefixNsBoolean;
-    return this;
-  }
-
-  
   @ApiModelProperty(example = "true", value = "")
   @JsonProperty("prefix_ns_boolean")
   public Boolean getPrefixNsBoolean() {
     return prefixNsBoolean;
   }
+
   public void setPrefixNsBoolean(Boolean prefixNsBoolean) {
     this.prefixNsBoolean = prefixNsBoolean;
   }
-
-  /**
-   **/
-  public XmlItem prefixNsArray(List<Integer> prefixNsArray) {
-    this.prefixNsArray = prefixNsArray;
-    return this;
-  }
-
-  
   @ApiModelProperty(value = "")
   @JsonProperty("prefix_ns_array")
   public List<Integer> getPrefixNsArray() {
     return prefixNsArray;
   }
+
   public void setPrefixNsArray(List<Integer> prefixNsArray) {
     this.prefixNsArray = prefixNsArray;
   }
-
-  /**
-   **/
-  public XmlItem prefixNsWrappedArray(List<Integer> prefixNsWrappedArray) {
-    this.prefixNsWrappedArray = prefixNsWrappedArray;
-    return this;
-  }
-
-  
   @ApiModelProperty(value = "")
   @JsonProperty("prefix_ns_wrapped_array")
   public List<Integer> getPrefixNsWrappedArray() {
     return prefixNsWrappedArray;
   }
+
   public void setPrefixNsWrappedArray(List<Integer> prefixNsWrappedArray) {
     this.prefixNsWrappedArray = prefixNsWrappedArray;
   }
 
-
   @Override
   public boolean equals(java.lang.Object o) {
     if (this == o) {
@@ -636,5 +437,220 @@ public class XmlItem  implements Serializable {
     }
     return o.toString().replace("\n", "\n    ");
   }
+
+  public static Builder builder() {
+    return new Builder();
+  }
+
+  public static class Builder {
+    private String attributeString;
+    private BigDecimal attributeNumber;
+    private Integer attributeInteger;
+    private Boolean attributeBoolean;
+    private List<Integer> wrappedArray = new ArrayList<Integer>();
+    private String nameString;
+    private BigDecimal nameNumber;
+    private Integer nameInteger;
+    private Boolean nameBoolean;
+    private List<Integer> nameArray = new ArrayList<Integer>();
+    private List<Integer> nameWrappedArray = new ArrayList<Integer>();
+    private String prefixString;
+    private BigDecimal prefixNumber;
+    private Integer prefixInteger;
+    private Boolean prefixBoolean;
+    private List<Integer> prefixArray = new ArrayList<Integer>();
+    private List<Integer> prefixWrappedArray = new ArrayList<Integer>();
+    private String namespaceString;
+    private BigDecimal namespaceNumber;
+    private Integer namespaceInteger;
+    private Boolean namespaceBoolean;
+    private List<Integer> namespaceArray = new ArrayList<Integer>();
+    private List<Integer> namespaceWrappedArray = new ArrayList<Integer>();
+    private String prefixNsString;
+    private BigDecimal prefixNsNumber;
+    private Integer prefixNsInteger;
+    private Boolean prefixNsBoolean;
+    private List<Integer> prefixNsArray = new ArrayList<Integer>();
+    private List<Integer> prefixNsWrappedArray = new ArrayList<Integer>();
+
+    /**
+      **/
+    public Builder attributeString(String attributeString) {
+      this.attributeString = attributeString;
+      return this;
+    }
+    /**
+      **/
+    public Builder attributeNumber(BigDecimal attributeNumber) {
+      this.attributeNumber = attributeNumber;
+      return this;
+    }
+    /**
+      **/
+    public Builder attributeInteger(Integer attributeInteger) {
+      this.attributeInteger = attributeInteger;
+      return this;
+    }
+    /**
+      **/
+    public Builder attributeBoolean(Boolean attributeBoolean) {
+      this.attributeBoolean = attributeBoolean;
+      return this;
+    }
+    /**
+      **/
+    public Builder wrappedArray(List<Integer> wrappedArray) {
+      this.wrappedArray = wrappedArray;
+      return this;
+    }
+    /**
+      **/
+    public Builder nameString(String nameString) {
+      this.nameString = nameString;
+      return this;
+    }
+    /**
+      **/
+    public Builder nameNumber(BigDecimal nameNumber) {
+      this.nameNumber = nameNumber;
+      return this;
+    }
+    /**
+      **/
+    public Builder nameInteger(Integer nameInteger) {
+      this.nameInteger = nameInteger;
+      return this;
+    }
+    /**
+      **/
+    public Builder nameBoolean(Boolean nameBoolean) {
+      this.nameBoolean = nameBoolean;
+      return this;
+    }
+    /**
+      **/
+    public Builder nameArray(List<Integer> nameArray) {
+      this.nameArray = nameArray;
+      return this;
+    }
+    /**
+      **/
+    public Builder nameWrappedArray(List<Integer> nameWrappedArray) {
+      this.nameWrappedArray = nameWrappedArray;
+      return this;
+    }
+    /**
+      **/
+    public Builder prefixString(String prefixString) {
+      this.prefixString = prefixString;
+      return this;
+    }
+    /**
+      **/
+    public Builder prefixNumber(BigDecimal prefixNumber) {
+      this.prefixNumber = prefixNumber;
+      return this;
+    }
+    /**
+      **/
+    public Builder prefixInteger(Integer prefixInteger) {
+      this.prefixInteger = prefixInteger;
+      return this;
+    }
+    /**
+      **/
+    public Builder prefixBoolean(Boolean prefixBoolean) {
+      this.prefixBoolean = prefixBoolean;
+      return this;
+    }
+    /**
+      **/
+    public Builder prefixArray(List<Integer> prefixArray) {
+      this.prefixArray = prefixArray;
+      return this;
+    }
+    /**
+      **/
+    public Builder prefixWrappedArray(List<Integer> prefixWrappedArray) {
+      this.prefixWrappedArray = prefixWrappedArray;
+      return this;
+    }
+    /**
+      **/
+    public Builder namespaceString(String namespaceString) {
+      this.namespaceString = namespaceString;
+      return this;
+    }
+    /**
+      **/
+    public Builder namespaceNumber(BigDecimal namespaceNumber) {
+      this.namespaceNumber = namespaceNumber;
+      return this;
+    }
+    /**
+      **/
+    public Builder namespaceInteger(Integer namespaceInteger) {
+      this.namespaceInteger = namespaceInteger;
+      return this;
+    }
+    /**
+      **/
+    public Builder namespaceBoolean(Boolean namespaceBoolean) {
+      this.namespaceBoolean = namespaceBoolean;
+      return this;
+    }
+    /**
+      **/
+    public Builder namespaceArray(List<Integer> namespaceArray) {
+      this.namespaceArray = namespaceArray;
+      return this;
+    }
+    /**
+      **/
+    public Builder namespaceWrappedArray(List<Integer> namespaceWrappedArray) {
+      this.namespaceWrappedArray = namespaceWrappedArray;
+      return this;
+    }
+    /**
+      **/
+    public Builder prefixNsString(String prefixNsString) {
+      this.prefixNsString = prefixNsString;
+      return this;
+    }
+    /**
+      **/
+    public Builder prefixNsNumber(BigDecimal prefixNsNumber) {
+      this.prefixNsNumber = prefixNsNumber;
+      return this;
+    }
+    /**
+      **/
+    public Builder prefixNsInteger(Integer prefixNsInteger) {
+      this.prefixNsInteger = prefixNsInteger;
+      return this;
+    }
+    /**
+      **/
+    public Builder prefixNsBoolean(Boolean prefixNsBoolean) {
+      this.prefixNsBoolean = prefixNsBoolean;
+      return this;
+    }
+    /**
+      **/
+    public Builder prefixNsArray(List<Integer> prefixNsArray) {
+      this.prefixNsArray = prefixNsArray;
+      return this;
+    }
+    /**
+      **/
+    public Builder prefixNsWrappedArray(List<Integer> prefixNsWrappedArray) {
+      this.prefixNsWrappedArray = prefixNsWrappedArray;
+      return this;
+    }
+
+    public XmlItem build() {
+      return new XmlItem(attributeString, attributeNumber, attributeInteger, attributeBoolean, wrappedArray, nameString, nameNumber, nameInteger, nameBoolean, nameArray, nameWrappedArray, prefixString, prefixNumber, prefixInteger, prefixBoolean, prefixArray, prefixWrappedArray, namespaceString, namespaceNumber, namespaceInteger, namespaceBoolean, namespaceArray, namespaceWrappedArray, prefixNsString, prefixNsNumber, prefixNsInteger, prefixNsBoolean, prefixNsArray, prefixNsWrappedArray);
+    }
+  }
 }