From bc6976bc769af848c8a49c542a6625e16cd99592 Mon Sep 17 00:00:00 2001
From: Jueun Park <s5616012@mailbox.tu-dresden.de>
Date: Tue, 1 Mar 2022 16:53:38 +0900
Subject: [PATCH] edited OpenAPISpecification.relast, Parser.jrag,
 ReverseParser.jrag

---
 src/main/jastadd/OpenAPISpecification.relast |  130 +-
 src/main/jastadd/Parser.jrag                 |   78 +-
 src/main/jastadd/ReverseParser.jrag          | 1142 +++++++++---------
 3 files changed, 674 insertions(+), 676 deletions(-)

diff --git a/src/main/jastadd/OpenAPISpecification.relast b/src/main/jastadd/OpenAPISpecification.relast
index 23d70728..bf5e3281 100644
--- a/src/main/jastadd/OpenAPISpecification.relast
+++ b/src/main/jastadd/OpenAPISpecification.relast
@@ -1,109 +1,109 @@
 //OpenAPI Object
-OpenAPIObject ::= <OpenAPI> <JsonSchemaDialect> [i:InfoObject] s:ServerObject* p:PathsObject* w:Webhook* [c:ComponentsObject] sr:SecurityRequirementObject* t:TagObject* [e:ExternalDocObject] ex:Extension* ;
+OpenAPIObject ::= <OpenAPI> <JsonSchemaDialect> [I:InfoObject] Serv:ServerObject* P:PathsObject* W:Webhook* [C:ComponentsObject] Sr:SecurityRequirementObject* T:TagObject* [E:ExternalDocObject] Ex:Extension* ;
 Webhook ::= <Key> p:PathItemOb;
 
 //Info Object
-InfoObject ::= <Title> <Summary> <Description> <TermsOfService> <Version> [c:ContactObject] [l:LicenseObject] ex:Extension*;
+InfoObject ::= <Title> <Summary> <Description> <TermsOfService> <Version> [C:ContactObject] [L:LicenseObject] Ex:Extension*;
 
 //Contact Object
-ContactObject ::= <Name> <Url> <Email> ex:Extension*;
+ContactObject ::= <Name> <Url> <Email> Ex:Extension*;
 
 //License Object
-LicenseObject ::= <Name> <Identifier> <Url> ex:Extension*;
+LicenseObject ::= <Name> <Identifier> <Url> Ex:Extension*;
 
 //Server Object
-ServerObject ::= <Url> <Description> st:ServerVariablesTuple* ex:Extension*;
-ServerVariablesTuple ::= <Name> s:ServerVariableObject;
+ServerObject ::= <Url> <Description> St:ServerVariablesTuple* Ex:Extension*;
+ServerVariablesTuple ::= <Name> S:ServerVariableObject;
 
 //Server Variable Object
-ServerVariableObject ::= <Default> <Description> e:Enum* ex:Extension*;
+ServerVariableObject ::= <Default> <Description> E:Enum* Ex:Extension*;
 Enum ::= <EnumValue>;
 
 //Components Object
-ComponentsObject ::= s:SchemaTuple* r:ResponseTuple* p:ParameterTuple* e:ExampleTuple* rb:RequestBodyTuple* h:HeaderTuple* sc:SecuritySchemeObject* l:LinkTuple* c:CallbackTuple* pi:PathItemTuple* ex:Extension*;
-
-SchemaTuple ::= <Key> o:SchemaOb;
-ResponseTuple ::= <Key> o:ResponseOb;
-ParameterTuple ::= <Key> o:ParameterOb;
-ExampleTuple ::= <Key> o:ExampleObject;
-RequestBodyTuple ::= <Key> o:RequestBodyOb;
-HeaderTuple ::= <Key> o:HeaderOb;
-SecuritySchemeTuple ::= <Key> o:SecuritySchemeOb;
-LinkTuple ::= <Key> o:LinkOb;
-CallbackTuple ::= <Key> o:CallbackOb;
-PathItemTuple ::= <Key> o:PathItemOb;
+ComponentsObject ::= S:SchemaTuple* R:ResponseTuple* P:ParameterTuple* E:ExampleTuple* Rb:RequestBodyTuple* H:HeaderTuple* Sc:SecuritySchemeTuple* L:LinkTuple* C:CallbackTuple* Pi:PathItemTuple* Ex:Extension*;
+
+SchemaTuple ::= <Key> O:SchemaOb;
+ResponseTuple ::= <Key> O:ResponseOb;
+ParameterTuple ::= <Key> O:ParameterOb;
+ExampleTuple ::= <Key> O:ExampleObject;
+RequestBodyTuple ::= <Key> O:RequestBodyOb;
+HeaderTuple ::= <Key> O:HeaderOb;
+SecuritySchemeTuple ::= <Key> O:SecuritySchemeOb;
+LinkTuple ::= <Key> O:LinkOb;
+CallbackTuple ::= <Key> O:CallbackOb;
+PathItemTuple ::= <Key> O:PathItemOb;
 
 //Paths Object
-PathsObject ::= <Ref> p:PathItemOb;
+PathsObject ::= <Ref> P:PathItemOb;
 
 //Path Item Object
 abstract PathItemOb;
 PathItemReference : PathItemOb ::= <Ref> <Summary> <Description>;
 rel PathItemReference.r -> PathItemObject;
-PathItemObject : PathItemOb ::= <Ref> <Summary> <Description> [g:Get] [put:Put] [post:Post] [d:Delete] [o:Options] [h:Head] [p:Patch] [t:Trace] s:ServerObject* po:ParameterOb* ex:Extension*;
+PathItemObject : PathItemOb ::= <Ref> <Summary> <Description> [G:Get] [PutOb:Put] [PostOb:Post] [D:Delete] [O:Options] [H:Head] [PatchOb:Patch] [T:Trace] S:ServerObject* Po:ParameterOb* Ex:Extension*;
 
 //Operation Object
-OperationObject ::= <Summary> <Description> <OperationID> <DeprecatedBoolean:Boolean> t:Tag* [ed:ExternalDocObject] p:ParameterOb* [rb:RequestBodyOb] r:ResponsesObject c:CallbackTuple* sr:SecurityRequirementObject* s:ServerObject* ex:Extension*;
-
-Get ::= o:OperationObject;
-Put ::= o:OperationObject;
-Post ::= o:OperationObject;
-Delete ::= o:OperationObject;
-Options ::= o:OperationObject;
-Head ::= o:OperationObject;
-Patch ::= o:OperationObject;
-Trace ::= o:OperationObject;
+OperationObject ::= <Summary> <Description> <OperationID> <DeprecatedBoolean:Boolean> T:Tag* [Ed:ExternalDocObject] P:ParameterOb* [Rb:RequestBodyOb] R:ResponsesObject C:CallbackTuple* Sr:SecurityRequirementObject* S:ServerObject* Ex:Extension*;
+
+Get ::= O:OperationObject;
+Put ::= O:OperationObject;
+Post ::= O:OperationObject;
+Delete ::= O:OperationObject;
+Options ::= O:OperationObject;
+Head ::= O:OperationObject;
+Patch ::= O:OperationObject;
+Trace ::= O:OperationObject;
 Tag ::= <Tag>;
 
 //External Documentation Object
-ExternalDocObject ::= <Description> <Url> ex:Extension*;
+ExternalDocObject ::= <Description> <Url> Ex:Extension*;
 
 //Parameter Object
 abstract ParameterOb;
 ParameterReference : ParameterOb ::= <Ref> <Summary> <Description>;
 rel ParameterReference.p -> ParameterObject;
-ParameterObject : ParameterOb ::= <Name> <In> <Description> <Required:Boolean> <DeprecatedBoolean:Boolean> <AllowEmptyValue:Boolean> <Style> <Explode:Boolean> <AllowReserved:Boolean> <Example:Object> [s:SchemaOb] e:ExampleTuple* c:ContentTuple* ex:Extension*;
-ContentTuple ::= <Key> m:MediaTypeObject;
+ParameterObject : ParameterOb ::= <Name> <In> <Description> <Required:Boolean> <DeprecatedBoolean:Boolean> <AllowEmptyValue:Boolean> <Style> <Explode:Boolean> <AllowReserved:Boolean> <Example:Object> [Schema:SchemaOb] E:ExampleTuple* C:ContentTuple* Ex:Extension*;
+ContentTuple ::= <Key> M:MediaTypeObject;
 
 //Request Body Object
 abstract RequestBodyOb;
 RequestBodyReference : RequestBodyOb ::= <Ref> <Summary> <Description>;
 rel RequestBodyReference.r -> RequestBodyObject;
-RequestBodyObject : RequestBodyOb ::= <Description> <Required:Boolean> c:ContentTuple* ex:Extension*;
+RequestBodyObject : RequestBodyOb ::= <Description> <Required:Boolean> C:ContentTuple* Ex:Extension*;
 
 //Media Type Object
-MediaTypeObject ::= <Example:Object> [s:SchemaOb] e:ExampleTuple* en:EncodingTuple* ex:Extension*;
-EncodingTuple ::= <Key> e:EncodingTuple;
+MediaTypeObject ::= <Example:Object> [S:SchemaOb] E:ExampleTuple* En:EncodingTuple* Ex:Extension*;
+EncodingTuple ::= <Key> E:EncodingObject;
 
 //Encoding Object
-EncodingObject ::= <ContentType> <Style> <Explode:Boolean> <AllowReserved:Boolean> h:HeaderTuple* ex:Extension*;
+EncodingObject ::= <ContentType> <Style> <Explode:Boolean> <AllowReserved:Boolean> H:HeaderTuple* Ex:Extension*;
 
 //Responses Object (ResponseTuple is used for HTTPStatusCode)
-ResponsesObject ::= r:ResponseTuple*;
+ResponsesObject ::= R:ResponseTuple*;
 
 //Response Object
 abstract ResponseOb;
 ResponseReference : ResponseOb ::= <Ref> <Summary> <Description>;
 rel ResponseReference.r -> ResponseObject;
-ResponseObject : ResponseOb ::= <Description> h:HeaderTuple* c:ContentTuple* l:LinkTuple* ex:Extension*;
+ResponseObject : ResponseOb ::= <Description> H:HeaderTuple* C:ContentTuple* L:LinkTuple* Ex:Extension*;
 
 //Callback Object
 abstract CallbackOb;
 CallbackReference : CallbackOb ::= <Ref> <Summary> <Description>;
 rel CallbackReference.r -> CallbackObject;
-CallbackObject : CallbackOb ::= e:Expression* ex:Extension*;
+CallbackObject : CallbackOb ::= E:Expression* Ex:Extension*;
 
 Extension ::= <Key> <Value:Object>;
-Expression ::= <Name> p:PathItemOb;
+Expression ::= <Name> P:PathItemOb;
 
 //Example Object
-ExampleObject ::= <Summary> <Description> <Value:Object> <ExternalValue> ex:Extension*;
+ExampleObject ::= <Summary> <Description> <Value:Object> <ExternalValue> Ex:Extension*;
 
 //Link Object
 abstract LinkOb;
 LinkReference : LinkOb ::= <Ref> <Summary> <Description>;
 rel LinkReference.r -> LinkObject;
-LinkObject : LinkOb ::= <OperationRef> <OperationID> <LinkRequestBody:Object> <Description> l:LinkParameterTuple* [s:ServerObject] ex:Extension*;
+LinkObject : LinkOb ::= <OperationRef> <OperationID> <LinkRequestBody:Object> <Description> L:LinkParameterTuple* [S:ServerObject] Ex:Extension*;
 
 LinkParameterTuple ::= <Key> <Value>;
 
@@ -111,55 +111,55 @@ LinkParameterTuple ::= <Key> <Value>;
 abstract HeaderOb;
 HeaderReference : HeaderOb ::= <Ref> <Summary> <Description>;
 rel HeaderReference.r -> HeaderObject;
-HeaderObject : HeaderOb ::= <Description> <Required:Boolean> <DeprecatedBoolean:Boolean> <AllowEmptyValue:Boolean> <Style> <Explode:Boolean> <AllowReserved:Boolean> <Example:Object> [s:SchemaOb] e:ExampleTuple* c:ContentTuple* ex:Extension*;
+HeaderObject : HeaderOb ::= <Description> <Required:Boolean> <DeprecatedBoolean:Boolean> <AllowEmptyValue:Boolean> <Style> <Explode:Boolean> <AllowReserved:Boolean> <Example:Object> [S:SchemaOb] E:ExampleTuple* C:ContentTuple* Ex:Extension*;
 
 //Tag Object
-TagObject ::= <Name> <Description> [e:ExternalDocObject] ex:Extension*;
+TagObject ::= <Name> <Description> [E:ExternalDocObject] Ex:Extension*;
 
 //Schema Object
 abstract SchemaOb;
 SchemaReference : SchemaOb ::= <Ref> <Summary> <Description>;
 rel SchemaReference.r -> SchemaObject;
-SchemaObject : SchemaOb ::= <AdditionalProperties:Object> <DefaultValue:Object> <Description> <DeprecatedBoolean:Boolean> <ExclusiveMaximum:Number> <ExclusiveMinimum:Number> <Format> <Maximum:Number> <Minimum:Number> <MaxItems:Integer> <MinItems:Integer> <MaxLength:Integer> <MinLength:Integer> <MaxProperties:Integer> <MinProperties:Integer> <MultipleOf:Number> <Pattern> <ReadOnly:Boolean> <WriteOnly:Boolean> <Type> <Title> <UniqueItems:Boolean> <MaxContains:Integer> <MinContains:Integer> <DependentRequired:Object> <DependentSchema:SchemaOb> <Const:Object> [d:DiscriminatorObject] e:EnumObj* el:ExampleElement* [ext:ExternalDocObject] [i:ItemsSchema] [n:NotSchema] p:PropertyItem* r:RequiredField* all:AllOfSchema* any:AnyOfSchema* one:OneOfSchema* t:TypeArray* [x:XmlObject] ex:Extension*;
-
-ItemsSchema ::= s:SchemaOb;
-NotSchema ::= s:SchemaOb;
-PropertyItem ::= <Name> s:SchemaOb;
-AllOfSchema ::= s:SchemaOb;
-AnyOfSchema ::= s:SchemaOb;
-OneOfSchema ::= s:SchemaOb;
+SchemaObject : SchemaOb ::= <AdditionalProperties:Object> <DefaultValue:Object> <Description> <DeprecatedBoolean:Boolean> <ExclusiveMaximum:Number> <ExclusiveMinimum:Number> <Format> <Maximum:Number> <Minimum:Number> <MaxItems:Integer> <MinItems:Integer> <MaxLength:Integer> <MinLength:Integer> <MaxProperties:Integer> <MinProperties:Integer> <MultipleOf:Number> <Pattern> <ReadOnly:Boolean> <WriteOnly:Boolean> <Type> <Title> <UniqueItems:Boolean> <MaxContains:Integer> <MinContains:Integer> <DependentRequired:Object> <DependentSchema:SchemaOb> <Const:Object> [D:DiscriminatorObject] E:EnumObj* El:ExampleElement* [Ext:ExternalDocObject] [I:ItemsSchema] [N:NotSchema] P:PropertyItem* R:RequiredField* All:AllOfSchema* Any:AnyOfSchema* One:OneOfSchema* T:TypeArray* [X:XmlObject] Ex:Extension*;
+
+ItemsSchema ::= Schema:SchemaOb;
+NotSchema ::= Schema:SchemaOb;
+PropertyItem ::= <Name> Schema:SchemaOb;
+AllOfSchema ::= Schema:SchemaOb;
+AnyOfSchema ::= Schema:SchemaOb;
+OneOfSchema ::= Schema:SchemaOb;
 ExampleElement ::= <Example:Object>;
 TypeArray ::= <TypeElements:Object>;
 EnumObj ::= <EnumOb:Object>;
 RequiredField ::= <Value>;
 
 //Discriminator Object
-DiscriminatorObject ::= <PropertyName> m:MappingTuple* ex:Extension*;
+DiscriminatorObject ::= <PropertyName> M:MappingTuple* Ex:Extension*;
 MappingTuple ::= <Key> <Value>;
 
 //XML Object
-XmlObject ::= <Name> <Namespace> <Prefix> <Attribute:Boolean> <Wrapped:Boolean> ex:Extension*;
+XmlObject ::= <Name> <Namespace> <Prefix> <Attribute:Boolean> <Wrapped:Boolean> Ex:Extension*;
 
 //Security Scheme Object
 abstract SecuritySchemeOb;
 SecuritySchemeReference : SecuritySchemeOb ::= <Ref> <Summary> <Description>;
 rel SecuritySchemeReference.r -> SecuritySchemeObject;
-SecuritySchemeObject : SecuritySchemeOb ::= <Type> <Description> <Name> <In> <Scheme> <BearerFormat> <OpenIdConnectUrl> [o:OAuthFlowsObject] ex:Extension*;
+SecuritySchemeObject : SecuritySchemeOb ::= <Type> <Description> <Name> <In> <Scheme> <BearerFormat> <OpenIdConnectUrl> [O:OAuthFlowsObject] Ex:Extension*;
 
 //OAuth Flows Object
-OAuthFlowsObject ::= [i:Implicit] [p:Password] [c:ClientCredentials] [a:AuthorizationCode] ex:Extension*;
+OAuthFlowsObject ::= [I:Implicit] [P:Password] [C:ClientCredentials] [A:AuthorizationCode] Ex:Extension*;
 
-Implicit ::= o:OAuthFlowObject;
-Password ::= o:OAuthFlowObject;
-ClientCredentials ::= o:OAuthFlowObject;
-AuthorizationCode ::= o:OAuthFlowObject;
+Implicit ::= O:OAuthFlowObject;
+Password ::= O:OAuthFlowObject;
+ClientCredentials ::= O:OAuthFlowObject;
+AuthorizationCode ::= O:OAuthFlowObject;
 
 //OAuth Flow Object
-OAuthFlowObject ::= <AuthorizationUrl> <TokenUrl> <RefreshUrl> s:ScopesTuple* ex:Extension*;
+OAuthFlowObject ::= <AuthorizationUrl> <TokenUrl> <RefreshUrl> S:ScopesTuple* Ex:Extension*;
 ScopesTuple ::= <ScopesKey> <ScopesValue>;
 
 //Security Requirement Object
-SecurityRequirementObject ::= t:SecurityRequirementTuple*;
+SecurityRequirementObject ::= Tuple:SecurityRequirementTuple*;
 
-SecurityRequirementTuple ::= <Name> v:SecurityRequirementValue*;
+SecurityRequirementTuple ::= <Name> Value:SecurityRequirementValue*;
 SecurityRequirementValue ::= <Value>;
\ No newline at end of file
diff --git a/src/main/jastadd/Parser.jrag b/src/main/jastadd/Parser.jrag
index c74c6564..ceae8249 100644
--- a/src/main/jastadd/Parser.jrag
+++ b/src/main/jastadd/Parser.jrag
@@ -22,17 +22,17 @@ public static OpenAPIObject OpenAPIObject.parseOpenAPI(OpenAPI api) {
         if (api.getOpenapi() != null)
         openapi.setOpenAPI(api.getOpenapi());
         if (api.getInfo() != null)
-        openapi.set_impl_i(InfoObject.parseInfo(api.getInfo()));
+        openapi.setI(InfoObject.parseInfo(api.getInfo()));
         if (api.getPaths() != null) {
         for (String key : api.getPaths().keySet())
         openapi.addP(new PathsObject(key, PathItemObject.parsePath(api.getPaths().get(key))));
         }
         if (api.getServers() != null) {
         for (io.swagger.v3.oas.models.servers.Server s : api.getServers())
-        openapi.addS(ServerObject.parseServer(s));
+        openapi.addServ(ServerObject.parseServer(s));
         }
         if (api.getComponents() != null)
-        openapi.set_impl_c(ComponentsObject.parseComponents(api.getComponents()));
+        openapi.setC(ComponentsObject.parseComponents(api.getComponents()));
         if (api.getSecurity() != null) {
         for (io.swagger.v3.oas.models.security.SecurityRequirement s : api.getSecurity())
         openapi.addSr(SecurityRequirementObject.parseSecurityRequirement(s));
@@ -42,7 +42,7 @@ public static OpenAPIObject OpenAPIObject.parseOpenAPI(OpenAPI api) {
         openapi.addT(TagObject.parseTag(t));
         }
         if (api.getExternalDocs() != null)
-        openapi.set_impl_e(ExternalDocObject.parseExternalDocs(api.getExternalDocs()));
+        openapi.setE(ExternalDocObject.parseExternalDocs(api.getExternalDocs()));
         if (api.getExtensions().size() != 0) {
         for (String key : api.getExtensions().keySet())
         openapi.addEx(new Extension(key, api.getExtensions().get(key)));
@@ -67,9 +67,9 @@ public static InfoObject InfoObject.parseInfo(io.swagger.v3.oas.models.info.Info
         if (info.getTermsOfService() != null)
         infoObject.setTermsOfService(info.getTermsOfService());
         if (info.getContact() != null)
-        infoObject.set_impl_c(ContactObject.parseContact(info.getContact()));
+        infoObject.setC(ContactObject.parseContact(info.getContact()));
         if (info.getLicense() != null)
-        infoObject.set_impl_l(LicenseObject.parseLicense(info.getLicense()));
+        infoObject.setL(LicenseObject.parseLicense(info.getLicense()));
         if (info.getExtensions().size() != 0) {
         for (String key : info.getExtensions().keySet())
         infoObject.addEx(new Extension(key, info.getExtensions().get(key)));
@@ -229,42 +229,42 @@ public static PathItemOb PathItemOb.parsePath(PathItem path) {
         pathItem.setDescription(path.getDescription());
         if (path.getGet() != null) {
         Get get = new Get();
-        get.set_impl_o(OperationObject.parseOperation(path.getGet()));
+        get.setO(OperationObject.parseOperation(path.getGet()));
         pathItem.setG(get);
         }
         if (path.getPut() != null) {
         Put put = new Put();
-        put.set_impl_o(OperationObject.parseOperation(path.getPut()));
-        pathItem.setPut(put);
+        put.setO(OperationObject.parseOperation(path.getPut()));
+        pathItem.setPutOb(put);
         }
         if (path.getPost() != null) {
         Post post = new Post();
-        post.set_impl_o(OperationObject.parseOperation(path.getPost()));
-        pathItem.setPost(post);
+        post.setO(OperationObject.parseOperation(path.getPost()));
+        pathItem.setPostOb(post);
         }
         if (path.getDelete() != null) {
         Delete delete = new Delete();
-        delete.set_impl_o(OperationObject.parseOperation(path.getDelete()));
-        pathItem.set_impl_d(delete);
+        delete.setO(OperationObject.parseOperation(path.getDelete()));
+        pathItem.setD(delete);
         }
         if (path.getOptions() != null) {
         Options options = new Options();
-        options.set_impl_o(OperationObject.parseOperation(path.getOptions()));
-        pathItem.set_impl_o(options);
+        options.setO(OperationObject.parseOperation(path.getOptions()));
+        pathItem.setO(options);
         }
         if (path.getHead() != null) {
         Head head = new Head();
-        head.set_impl_o(OperationObject.parseOperation(path.getHead()));
+        head.setO(OperationObject.parseOperation(path.getHead()));
         pathItem.setH(head);
         }
         if (path.getPatch() != null) {
         Patch patch = new Patch();
-        patch.set_impl_o(OperationObject.parseOperation(path.getPatch()));
-        pathItem.setP(patch);
+        patch.setO(OperationObject.parseOperation(path.getPatch()));
+        pathItem.setPatchOb(patch);
         }
         if (path.getTrace() != null) {
         Trace trace = new Trace();
-        trace.set_impl_o(OperationObject.parseOperation(path.getTrace()));
+        trace.setO(OperationObject.parseOperation(path.getTrace()));
         pathItem.setT(trace);
         }
         if (path.getServers() != null) {
@@ -300,7 +300,7 @@ public static OperationObject OperationObject.parseOperation(io.swagger.v3.oas.m
         if (operation.getDescription() != null)
         operationObject.setDescription(operation.getDescription());
         if (operation.getExternalDocs() != null)
-        operationObject.set_impl_ed(ExternalDocObject.parseExternalDocs(operation.getExternalDocs()));
+        operationObject.setEd(ExternalDocObject.parseExternalDocs(operation.getExternalDocs()));
         if (operation.getOperationId() != null)
         operationObject.setOperationID(operation.getOperationId());
         if (operation.getParameters() != null) {
@@ -308,12 +308,12 @@ public static OperationObject OperationObject.parseOperation(io.swagger.v3.oas.m
         operationObject.addP(ParameterOb.parseParameter(p));
         }
         if (operation.getRequestBody() != null)
-        operationObject.set_impl_rb(RequestBodyOb.parseRequestBody(operation.getRequestBody()));
+        operationObject.setRb(RequestBodyOb.parseRequestBody(operation.getRequestBody()));
         if (operation.getResponses().size() != 0) {
         ResponsesObject r = new ResponsesObject();
         for (String key : operation.getResponses().keySet())
         r.addR(new ResponseTuple(key, ResponseObject.parseResponse(operation.getResponses().get(key))));
-        operationObject.set_impl_r(r);
+        operationObject.setR(r);
         }
         if (operation.getCallbacks().size() != 0) {
         for (String key : operation.getCallbacks().keySet())
@@ -380,7 +380,7 @@ public static ParameterOb ParameterOb.parseParameter(Parameter parameter) {
         if (parameter.getAllowReserved() != null)
         parameterObject.setAllowReserved(parameter.getAllowReserved());
         if (parameter.getSchema() != null)
-        parameterObject.set_impl_s(SchemaOb.parseSchema(parameter.getSchema()));
+        parameterObject.setSchema(SchemaOb.parseSchema(parameter.getSchema()));
         if (parameter.getExample() != null)
         parameterObject.setExample(parameter.getExample());
         if (parameter.getExamples() != null) {
@@ -437,7 +437,7 @@ public static MediaTypeObject MediaTypeObject.parseMediaType(MediaType mediaType
         MediaTypeObject mediaTypeObject = new MediaTypeObject();
 
         if (mediaType.getSchema() != null)
-        mediaTypeObject.set_impl_s(SchemaObject.parseSchema(mediaType.getSchema()));
+        mediaTypeObject.setS(SchemaObject.parseSchema(mediaType.getSchema()));
         if (mediaType.getExample() != null)
         mediaTypeObject.setExample(mediaType.getExample());
         if (mediaType.getExamples().size() != 0) {
@@ -587,7 +587,7 @@ public static LinkOb LinkOb.parseLink(Link link) {
         if (link.getDescription() != null)
         linkObject.setDescription(link.getDescription());
         if (link.getServer() != null)
-        linkObject.set_impl_s(ServerObject.parseServer(link.getServer()));
+        linkObject.setS(ServerObject.parseServer(link.getServer()));
         if (link.getExtensions().size() != 0) {
         for (String key : link.getExtensions().keySet())
         linkObject.addEx(new Extension(key, link.getExtensions().get(key)));
@@ -632,7 +632,7 @@ public static HeaderOb HeaderOb.parseHeader(Header header) {
         headerObject.addC(new ContentTuple(key, MediaTypeObject.parseMediaType(header.getContent().get(key))));
         }
         if (header.getSchema() != null)
-        headerObject.set_impl_s(SchemaOb.parseSchema(header.getSchema()));
+        headerObject.setS(SchemaOb.parseSchema(header.getSchema()));
         if (header.getExtensions() != null) {
         for (String key : header.getExtensions().keySet())
         headerObject.addEx(new Extension(key, header.getExtensions().get(key)));
@@ -650,7 +650,7 @@ public static TagObject TagObject.parseTag(io.swagger.v3.oas.models.tags.Tag tag
         if (tag.getDescription() != null)
         tagObject.setDescription(tag.getDescription());
         if (tag.getExternalDocs() != null)
-        tagObject.set_impl_e(ExternalDocObject.parseExternalDocs(tag.getExternalDocs()));
+        tagObject.setE(ExternalDocObject.parseExternalDocs(tag.getExternalDocs()));
         if (tag.getExtensions().size() != 0) {
         for (String key : tag.getExtensions().keySet())
         tagObject.addEx(new Extension(key, tag.getExtensions().get(key)));
@@ -723,8 +723,8 @@ public static SchemaOb SchemaOb.parseSchema (Schema<?> schema) {
         schemaObject.setMultipleOf(schema.getMultipleOf());
         if (schema.getNot() != null) {
         NotSchema notSchema = new NotSchema();
-        notSchema.set_impl_s(parseSchema(schema.getNot()));
-        schemaObject.set_impl_n(notSchema);
+        notSchema.setSchema(parseSchema(schema.getNot()));
+        schemaObject.setN(notSchema);
         }
         if (schema.getPattern() != null)
         schemaObject.setPattern(schema.getPattern());
@@ -875,20 +875,20 @@ public static OAuthFlowsObject OAuthFlowsObject.parseOAuthFlows(OAuthFlows oAuth
         AuthorizationCode authorizationCode = new AuthorizationCode();
 
         if (oAuthFlows.getImplicit() != null) {
-        implicit.set_impl_o(OAuthFlowObject.parseOAuthFlow(oAuthFlows.getImplicit()));
-        oAuthFlowsObject.set_impl_i(implicit);
+        implicit.setO(OAuthFlowObject.parseOAuthFlow(oAuthFlows.getImplicit()));
+        oAuthFlowsObject.setI(implicit);
         }
         if (oAuthFlows.getPassword() != null) {
-        password.set_impl_o(OAuthFlowObject.parseOAuthFlow(oAuthFlows.getPassword()));
-        oAuthFlowsObject.set_impl_p(password);
+        password.setO(OAuthFlowObject.parseOAuthFlow(oAuthFlows.getPassword()));
+        oAuthFlowsObject.setP(password);
         }
         if (oAuthFlows.getClientCredentials() != null) {
-        clientCredentials.set_impl_o(OAuthFlowObject.parseOAuthFlow(oAuthFlows.getClientCredentials()));
-        oAuthFlowsObject.set_impl_c(clientCredentials);
+        clientCredentials.setO(OAuthFlowObject.parseOAuthFlow(oAuthFlows.getClientCredentials()));
+        oAuthFlowsObject.setC(clientCredentials);
         }
         if (oAuthFlows.getAuthorizationCode() != null) {
-        authorizationCode.set_impl_o(OAuthFlowObject.parseOAuthFlow(oAuthFlows.getAuthorizationCode()));
-        oAuthFlowsObject.set_impl_a(authorizationCode);
+        authorizationCode.setO(OAuthFlowObject.parseOAuthFlow(oAuthFlows.getAuthorizationCode()));
+        oAuthFlowsObject.setA(authorizationCode);
         }
         if (oAuthFlows.getExtensions() != null) {
         for (String key : oAuthFlows.getExtensions().keySet())
@@ -922,10 +922,10 @@ public static SecurityRequirementObject SecurityRequirementObject.parseSecurityR
 
         if (securityRequirement != null) {
         for (String key : securityRequirement.keySet()) {
-        List<SecurityRequirementValue> values = new ArrayList<>();
+        JastAddList<SecurityRequirementValue> values = new JastAddList<>();
         for (String v : securityRequirement.get(key))
         values.add(new SecurityRequirementValue(v));
-        securityRequirementObject.addT(new SecurityRequirementTuple(key, values));
+        securityRequirementObject.addTuple(new SecurityRequirementTuple(key, values));
         }
         }
 
diff --git a/src/main/jastadd/ReverseParser.jrag b/src/main/jastadd/ReverseParser.jrag
index a70fc669..7c0484c5 100644
--- a/src/main/jastadd/ReverseParser.jrag
+++ b/src/main/jastadd/ReverseParser.jrag
@@ -1,47 +1,47 @@
 import java.util.*;
-aspect ReverseParser {
+aspect ReverseParser{
 
-public static OpenAPI OpenAPIObject.reverseOpenAPI (OpenAPIObject openapi){
-        OpenAPI api = new OpenAPI();
+public static OpenAPI OpenAPIObject.reverseOpenAPI(OpenAPIObject openapi){
+        OpenAPI api=new OpenAPI();
 
-        if (!openapi.getOpenAPI().isEmpty())
+        if(!openapi.getOpenAPI().isEmpty())
         api.setOpenapi(openapi.getOpenAPI());
-        if (openapi.hasI())
-        api.setInfo(InfoObject.reverseInfo(openapi.get_impl_i()));
-        if (openapi.get_impl_s().size() != 0) {
-        List<Server> servers = new ArrayList<>();
-        for (ServerObject s : openapi.get_impl_s())
+        if(openapi.hasI())
+        api.setInfo(InfoObject.reverseInfo(openapi.getI()));
+        if(openapi.getNumServ()!=0){
+        List<Server> servers=new ArrayList<>();
+        for(ServerObject s:openapi.getServList())
         servers.add(ServerObject.reverseServer(s));
         api.setServers(servers);
         }
-        if (openapi.get_impl_p().size() != 0) {
-        Paths paths = new Paths();
-        for (PathsObject p : openapi.getPList()){
-        //if (p.get_impl_p() instanceof PathItemObject)
+        if(openapi.getNumP()!=0){
+            Paths paths=new Paths();
+        for(PathsObject p:openapi.getPList()){
+        //if (p.getP() instanceof PathItemObject)
         //paths.addPathItem(p.getRef(), PathIte)
         }
         api.setPaths(paths);
         }
-        if (openapi.hasC())
-        api.setComponents(ComponentsObject.reverseComponents(openapi.get_impl_c()));
-        if (openapi.getSrList().size() != 0) {
-        List<io.swagger.v3.oas.models.security.SecurityRequirement> securityRequirements = new ArrayList<>();
-        for (SecurityRequirementObject s : openapi.getSrList())
+        if(openapi.hasC())
+        api.setComponents(ComponentsObject.reverseComponents(openapi.getC()));
+        if(openapi.getNumSr()!=0){
+        List<io.swagger.v3.oas.models.security.SecurityRequirement>securityRequirements=new ArrayList<>();
+        for(SecurityRequirementObject s:openapi.getSrList())
         securityRequirements.add(SecurityRequirementObject.reverseSecurityRequirement(s));
         api.setSecurity(securityRequirements);
         }
-        if (openapi.getTList().size() != 0) {
-        List<io.swagger.v3.oas.models.tags.Tag> tags = new ArrayList<>();
-        for (TagObject t : openapi.getTList())
+        if(openapi.getNumT()!=0){
+        List<io.swagger.v3.oas.models.tags.Tag>tags=new ArrayList<>();
+        for(TagObject t:openapi.getTList())
         tags.add(TagObject.reverseTag(t));
         api.setTags(tags);
         }
-        if (openapi.hasE())
+        if(openapi.hasE())
         api.setExternalDocs(ExternalDocObject.reverseExternalDocs(openapi.getE()));
-        if (openapi.getExList().size() != 0) {
-        Map<String, Object> extensionMap = new HashMap<>();
-        for (Extension e : openapi.getExList())
-        extensionMap.put(e.getKey(), e.getValue());
+        if(openapi.getNumEx()!=0){
+        Map<String, Object> extensionMap=new HashMap<>();
+        for(Extension e:openapi.getExList())
+        extensionMap.put(e.getKey(),e.getValue());
         api.setExtensions(extensionMap);
         }
 
@@ -53,211 +53,211 @@ public static OpenAPI OpenAPIObject.reverseOpenAPI (OpenAPIObject openapi){
         return api;
         }
 
-public static io.swagger.v3.oas.models.info.Info InfoObject.reverseInfo (InfoObject infoObject){
-        io.swagger.v3.oas.models.info.Info info = new io.swagger.v3.oas.models.info.Info();
+public static io.swagger.v3.oas.models.info.Info InfoObject.reverseInfo(InfoObject infoObject){
+        io.swagger.v3.oas.models.info.Info info=new io.swagger.v3.oas.models.info.Info();
 
-        if (!infoObject.getTitle().isEmpty())
+        if(!infoObject.getTitle().isEmpty())
         info.setTitle(infoObject.getTitle());
-        if (!infoObject.getVersion().isEmpty())
+        if(!infoObject.getVersion().isEmpty())
         info.setVersion(infoObject.getVersion());
-        if (!infoObject.getDescription().isEmpty())
+        if(!infoObject.getDescription().isEmpty())
         info.setDescription(infoObject.getDescription());
-        if (!infoObject.getTermsOfService().isEmpty())
+        if(!infoObject.getTermsOfService().isEmpty())
         info.setTermsOfService(infoObject.getTermsOfService());
-        if (infoObject.hasC())
-        info.setContact(ContactObject.reverseContact(infoObject.get_impl_c()));
-        if (infoObject.hasL())
-        info.setLicense(LicenseObject.reverseLicense(infoObject.get_impl_l()));
-        if (infoObject.getExList().size() != 0) {
-        Map<String, Object> extension = new HashMap<>();
-        for (Extension e : infoObject.getExList())
-        extension.put(e.getKey(), e.getValue());
+        if(infoObject.hasC())
+        info.setContact(ContactObject.reverseContact(infoObject.getC()));
+        if(infoObject.hasL())
+        info.setLicense(LicenseObject.reverseLicense(infoObject.getL()));
+        if(infoObject.getNumEx()!=0){
+        Map<String, Object> extension=new HashMap<>();
+        for(Extension e:infoObject.getExList())
+        extension.put(e.getKey(),e.getValue());
         info.setExtensions(extension);
         }
 
         return info;
         }
 
-public static io.swagger.v3.oas.models.info.Contact ContactObject.reverseContact (ContactObject contactObject){
-        io.swagger.v3.oas.models.info.Contact contact = new io.swagger.v3.oas.models.info.Contact();
+public static io.swagger.v3.oas.models.info.Contact ContactObject.reverseContact(ContactObject contactObject){
+        io.swagger.v3.oas.models.info.Contact contact=new io.swagger.v3.oas.models.info.Contact();
 
-        if (!contactObject.getName().isEmpty())
+        if(!contactObject.getName().isEmpty())
         contact.setName(contactObject.getName());
-        if (!contactObject.getUrl().isEmpty())
+        if(!contactObject.getUrl().isEmpty())
         contact.setUrl(contactObject.getUrl());
-        if (!contactObject.getEmail().isEmpty())
+        if(!contactObject.getEmail().isEmpty())
         contact.setEmail(contactObject.getEmail());
-        if (contactObject.getExList().size() != 0) {
-        Map<String, Object> extensions = new HashMap<>();
-        for (Extension e : contactObject.getExList())
-        extensions.put(e.getKey(), e.getValue());
+        if(contactObject.getNumEx()!=0){
+            Map<String, Object> extensions=new HashMap<>();
+        for(Extension e:contactObject.getExList())
+        extensions.put(e.getKey(),e.getValue());
         contact.setExtensions(extensions);
         }
 
         return contact;
         }
 
-public static io.swagger.v3.oas.models.info.License LicenseObject.reverseLicense (LicenseObject licenseObject){
-        io.swagger.v3.oas.models.info.License license = new io.swagger.v3.oas.models.info.License();
+public static io.swagger.v3.oas.models.info.License LicenseObject.reverseLicense(LicenseObject licenseObject){
+        io.swagger.v3.oas.models.info.License license=new io.swagger.v3.oas.models.info.License();
 
-        if (!licenseObject.getName().isEmpty())
+        if(!licenseObject.getName().isEmpty())
         license.setName(licenseObject.getName());
-        if (!licenseObject.getUrl().isEmpty())
+        if(!licenseObject.getUrl().isEmpty())
         license.setUrl(licenseObject.getUrl());
-        if (licenseObject.getExList().size() != 0) {
-        Map<String, Object> extensions = new HashMap<>();
-        for (Extension e : licenseObject.getExList())
-        extensions.put(e.getKey(), e.getValue());
+        if(licenseObject.getNumEx()!=0){
+        Map<String, Object> extensions=new HashMap<>();
+        for(Extension e:licenseObject.getExList())
+        extensions.put(e.getKey(),e.getValue());
         license.setExtensions(extensions);
         }
 
         return license;
         }
 
-public static Server ServerObject.reverseServer (ServerObject serverObject){
-        Server server = new Server();
+public static Server ServerObject.reverseServer(ServerObject serverObject){
+        Server server=new Server();
 
-        if (!serverObject.getUrl().isEmpty())
+        if(!serverObject.getUrl().isEmpty())
         server.setUrl(serverObject.getUrl());
-        if (!serverObject.getDescription().isEmpty())
+        if(!serverObject.getDescription().isEmpty())
         server.setDescription(serverObject.getDescription());
-        if (serverObject.get_impl_st().size() != 0) {
-        ServerVariables serverVariables = new ServerVariables();
-        for (ServerVariablesTuple s : serverObject.get_impl_st())
-        serverVariables.addServerVariable(s.getName(), ServerVariableObject.reverseServerVariable(s.get_impl_s()));
+        if(serverObject.getNumSt()!=0){
+        ServerVariables serverVariables=new ServerVariables();
+        for(ServerVariablesTuple s:serverObject.getStList())
+        serverVariables.addServerVariable(s.getName(),ServerVariableObject.reverseServerVariable(s.getS()));
         server.setVariables(serverVariables);
         }
-        if (serverObject.getExList().size() != 0) {
-        Map<String, Object> extensions = new HashMap<>();
-        for (Extension e : serverObject.getExList())
-        extensions.put(e.getKey(), e.getValue());
+        if(serverObject.getNumEx()!=0){
+        Map<String, Object> extensions=new HashMap<>();
+        for(Extension e:serverObject.getExList())
+        extensions.put(e.getKey(),e.getValue());
         server.setExtensions(extensions);
         }
 
         return server;
         }
 
-public static ServerVariable ServerVariableObject.reverseServerVariable (ServerVariableObject serverVariableObject){
-        ServerVariable serverVariable = new ServerVariable();
+public static ServerVariable ServerVariableObject.reverseServerVariable(ServerVariableObject serverVariableObject){
+        ServerVariable serverVariable=new ServerVariable();
 
-        if (!serverVariableObject.getDefault().isEmpty())
+        if(!serverVariableObject.getDefault().isEmpty())
         serverVariable.setDefault(serverVariableObject.getDefault());
-        if (!serverVariableObject.getDescription().isEmpty())
+        if(!serverVariableObject.getDescription().isEmpty())
         serverVariable.setDescription(serverVariableObject.getDescription());
-        if (serverVariableObject.get_impl_e().size() != 0) {
-        List<String> enums = new ArrayList<>();
-        for (Enum e : serverVariableObject.getEList())
+        if(serverVariableObject.getNumE()!=0){
+        List<String> enums=new ArrayList<>();
+        for(Enum e:serverVariableObject.getEList())
         enums.add(e.getEnumValue());
         serverVariable.setEnum(enums);
         }
-        if (serverVariableObject.getEList().size() != 0) {
-        Map<String, Object> extensions = new HashMap<>();
-        for (Extension e : serverVariableObject.getExList())
-        extensions.put(e.getKey(), e.getValue());
+        if(serverVariableObject.getNumEx()!=0){
+        Map<String, Object> extensions=new HashMap<>();
+        for(Extension e:serverVariableObject.getExList())
+        extensions.put(e.getKey(),e.getValue());
         serverVariable.setExtensions(extensions);
         }
 
         return serverVariable;
         }
 
-public static Components ComponentsObject.reverseComponents (ComponentsObject componentsObject){
-        Components components = new Components();
+public static Components ComponentsObject.reverseComponents(ComponentsObject componentsObject){
+        Components components=new Components();
 
-        if (componentsObject.getSList().size() != 0) {
-        Map<String, io.swagger.v3.oas.models.media.Schema> schemaMap = new HashMap<>();
+        if(componentsObject.getNumS()!=0){
+        Map<String, io.swagger.v3.oas.models.media.Schema>schemaMap=new HashMap<>();
         SchemaOb s;
-        for (SchemaTuple t : componentsObject.getSList()) {
-        s = t.get_impl_o();
-        if (s instanceof SchemaObject)
-        schemaMap.put(t.getKey(), ((SchemaObject) s).reverseSchema(s));
+        for(SchemaTuple t:componentsObject.getSList()){
+        s=t.getO();
+        if(s instanceof SchemaObject)
+        schemaMap.put(t.getKey(),((SchemaObject)s).reverseSchema(s));
         else
-        schemaMap.put(t.getKey(), ((SchemaReference) s).reverseSchema(s));
+        schemaMap.put(t.getKey(),((SchemaReference)s).reverseSchema(s));
         }
         components.setSchemas(schemaMap);
         }
-        if (componentsObject.getRList().size() != 0) {
-        Map<String, ApiResponse> responseMap = new HashMap<>();
+        if(componentsObject.getNumR()!=0){
+        Map<String, ApiResponse> responseMap=new HashMap<>();
         ResponseOb r;
-        for (ResponseTuple t : componentsObject.getRList()) {
-        r = t.get_impl_o();
-        responseMap.put(t.getKey(), r.reverseResponse(r));
+        for(ResponseTuple t:componentsObject.getRList()){
+        r=t.getO();
+        responseMap.put(t.getKey(),r.reverseResponse(r));
         }
         components.setResponses(responseMap);
         }
-        if (componentsObject.getPList().size() != 0) {
-        Map<String, Parameter> parameterMap = new HashMap<>();
+        if(componentsObject.getNumP()!=0){
+        Map<String, Parameter> parameterMap=new HashMap<>();
         ParameterOb p;
-        for (ParameterTuple t : componentsObject.getPList()) {
-        p = t.get_impl_o();
-        parameterMap.put(t.getKey(), p.reverseParameter(p));
+        for(ParameterTuple t:componentsObject.getPList()){
+        p=t.getO();
+        parameterMap.put(t.getKey(),p.reverseParameter(p));
         }
         components.setParameters(parameterMap);
         }
-        if (componentsObject.getEList().size() != 0) {
-        Map<String, Example> exampleMap = new HashMap<>();
-        for (ExampleTuple t : componentsObject.getEList())
-        exampleMap.put(t.getKey(), ExampleObject.reverseExample(t.get_impl_o()));
+        if(componentsObject.getNumE()!=0){
+        Map<String, Example> exampleMap=new HashMap<>();
+        for(ExampleTuple t:componentsObject.getEList())
+        exampleMap.put(t.getKey(),ExampleObject.reverseExample(t.getO()));
         components.setExamples(exampleMap);
         }
-        if (componentsObject.getRbList().size() != 0) {
-        Map<String, RequestBody> requestBodyMap = new HashMap<>();
+        if(componentsObject.getNumRb()!=0){
+        Map<String, RequestBody> requestBodyMap=new HashMap<>();
         RequestBodyOb r;
-        for (RequestBodyTuple t : componentsObject.getRbList()) {
-        r = t.get_impl_o();
-        requestBodyMap.put(t.getKey(), r.reverseRequestBody(r));
+        for(RequestBodyTuple t:componentsObject.getRbList()){
+        r=t.getO();
+        requestBodyMap.put(t.getKey(),r.reverseRequestBody(r));
         }
         components.setRequestBodies(requestBodyMap);
         }
-        if (componentsObject.getHList().size() != 0) {
-        Map<String, Header> headerMap = new HashMap<>();
+        if(componentsObject.getNumH()!=0){
+        Map<String, Header> headerMap=new HashMap<>();
         HeaderOb h;
-        for (HeaderTuple t : componentsObject.getHList()) {
-        h = t.get_impl_o();
-        headerMap.put(t.getKey(), h.reverseHeader(h));
+        for(HeaderTuple t:componentsObject.getHList()){
+        h=t.getO();
+        headerMap.put(t.getKey(),h.reverseHeader(h));
         }
         components.setHeaders(headerMap);
         }
-        if (componentsObject.getScList().size() != 0) {
-        Map<String, SecurityScheme> securitySchemeMap = new HashMap<>();
+        if(componentsObject.getNumSc()!=0){
+        Map<String, SecurityScheme> securitySchemeMap=new HashMap<>();
         SecuritySchemeOb s;
-        for (SecuritySchemeTuple t : componentsObject.getScList()) {
-        s = t.get_impl_o();
-        securitySchemeMap.put(t.getKey(), s.reverseSecurityScheme(s));
+        for(SecuritySchemeTuple t:componentsObject.getScList()){
+        s=t.getO();
+        securitySchemeMap.put(t.getKey(),s.reverseSecurityScheme(s));
         }
         components.setSecuritySchemes(securitySchemeMap);
         }
-        if (componentsObject.getLList().size() != 0) {
-        Map<String, Link> linkMap = new HashMap<>();
+        if(componentsObject.getNumL()!=0){
+        Map<String, Link> linkMap=new HashMap<>();
         LinkOb l;
-        for (LinkTuple t : componentsObject.getLList()) {
-        l = t.get_impl_o();
-        linkMap.put(t.getKey(), l.reverseLink(l));
+        for(LinkTuple t:componentsObject.getLList()){
+        l=t.getO();
+        linkMap.put(t.getKey(),l.reverseLink(l));
         }
         components.setLinks(linkMap);
         }
-        if (componentsObject.getCList().size() != 0) {
-        Map<String, Callback> callbackMap = new HashMap<>();
+        if(componentsObject.getNumC()!=0){
+        Map<String, Callback> callbackMap=new HashMap<>();
         CallbackOb c;
-        for (CallbackTuple t : componentsObject.getCList()) {
-        c = t.get_impl_o();
-        callbackMap.put(t.getKey(), c.reverseCallback(c));
+        for(CallbackTuple t:componentsObject.getCList()){
+        c=t.getO();
+        callbackMap.put(t.getKey(),c.reverseCallback(c));
         }
         components.setCallbacks(callbackMap);
         }
-        if (componentsObject.getExList().size() != 0) {
-        Map<String, Object> extensions = new HashMap<>();
-        for (Extension e : componentsObject.getExList())
-        extensions.put(e.getKey(), e.getValue());
+        if(componentsObject.getNumEx()!=0){
+        Map<String, Object> extensions=new HashMap<>();
+        for(Extension e:componentsObject.getExList())
+        extensions.put(e.getKey(),e.getValue());
         components.setExtensions(extensions);
         }
 
         return components;
         }
 
-        syn PathItem PathItemOb.reversePath (PathItemOb pathItemOb);
-        eq PathItemReference.reversePath (PathItemOb pathItemOb) {
-        PathItem pathItem = new PathItem();
-        PathItemReference p = (PathItemReference) pathItemOb;
+        syn PathItem PathItemOb.reversePath(PathItemOb pathItemOb);
+        eq PathItemReference.reversePath(PathItemOb pathItemOb){
+        PathItem pathItem=new PathItem();
+        PathItemReference p=(PathItemReference)pathItemOb;
 
         /* implement after reference implementation
         if (!p.getRef().isEmpty()) {
@@ -271,706 +271,704 @@ public static Components ComponentsObject.reverseComponents (ComponentsObject co
 
         return pathItem;
         }
-        eq PathItemObject.reversePath (PathItemOb pathItemOb) {
-        PathItem path = new PathItem();
-        PathItemObject p = (PathItemObject) pathItemOb;
+        eq PathItemObject.reversePath(PathItemOb pathItemOb){
+        PathItem path=new PathItem();
+        PathItemObject p=(PathItemObject)pathItemOb;
 
-        if (!p.getSummary().isEmpty())
+        if(!p.getSummary().isEmpty())
         path.setSummary(p.getSummary());
-        if (!p.getDescription().isEmpty())
+        if(!p.getDescription().isEmpty())
         path.setDescription(p.getDescription());
-        if (p.hasG())
-        path.setGet(OperationObject.reverseOperation(p.getG().get_impl_o()));
-        if (p.hasPut())
-        path.setPut(OperationObject.reverseOperation(p.getPut().get_impl_o()));
-        if (p.hasPost())
-        path.setPost(OperationObject.reverseOperation(p.getPost().get_impl_o()));
-        if (p.hasD())
-        path.setDelete(OperationObject.reverseOperation(p.getD().get_impl_o()));
-        if (p.hasO())
-        path.setOptions(OperationObject.reverseOperation(p.getO().get_impl_o()));
-        if (p.hasH())
-        path.setHead(OperationObject.reverseOperation(p.getH().get_impl_o()));
-        if (p.hasP())
-        path.setPatch(OperationObject.reverseOperation(p.getP().get_impl_o()));
-        if (p.getSList().size() != 0) {
-        for (ServerObject s : p.getSList())
+        if(p.hasG())
+        path.setGet(OperationObject.reverseOperation(p.getG().getO()));
+        if(p.hasPutOb())
+        path.setPut(OperationObject.reverseOperation(p.getPutOb().getO()));
+        if(p.hasPostOb())
+        path.setPost(OperationObject.reverseOperation(p.getPostOb().getO()));
+        if(p.hasD())
+        path.setDelete(OperationObject.reverseOperation(p.getD().getO()));
+        if(p.hasO())
+        path.setOptions(OperationObject.reverseOperation(p.getO().getO()));
+        if(p.hasH())
+        path.setHead(OperationObject.reverseOperation(p.getH().getO()));
+        if(p.hasPatchOb())
+        path.setPatch(OperationObject.reverseOperation(p.getPatchOb().getO()));
+        if(p.getNumS()!=0){
+        for(ServerObject s:p.getSList())
         path.addServersItem(ServerObject.reverseServer(s));
         }
-        if (p.getPoList().size() != 0) {
-        for (ParameterOb e : p.getPoList())
+        if(p.getNumPo()!=0){
+        for(ParameterOb e:p.getPoList())
         path.addParametersItem(e.reverseParameter(e));
         }
-        if (p.getExList().size() != 0) {
-        Map<String, Object> extensionMap = new HashMap<>();
-        for (Extension e : p.getExList())
-        extensionMap.put(e.getKey(), e.getValue());
+        if(p.getNumEx()!=0){
+        Map<String, Object> extensionMap=new HashMap<>();
+        for(Extension e:p.getExList())
+        extensionMap.put(e.getKey(),e.getValue());
         path.setExtensions(extensionMap);
         }
 
         return path;
         }
 
-public static io.swagger.v3.oas.models.Operation OperationObject.reverseOperation (OperationObject operationObject){
-        io.swagger.v3.oas.models.Operation operation = new io.swagger.v3.oas.models.Operation();
+public static io.swagger.v3.oas.models.Operation OperationObject.reverseOperation(OperationObject operationObject){
+        io.swagger.v3.oas.models.Operation operation=new io.swagger.v3.oas.models.Operation();
 
-        if (operationObject.getTList().size() != 0) {
-        for (de.tudresden.inf.st.openapi.ast.Tag t : operationObject.getTList())
+        if(operationObject.getNumT()!=0){
+        for(de.tudresden.inf.st.openapi.ast.Tag t:operationObject.getTList())
         operation.addTagsItem(t.getTag());
         }
-        if (!operationObject.getSummary().isEmpty())
+        if(!operationObject.getSummary().isEmpty())
         operation.setSummary(operationObject.getSummary());
-        if (!operationObject.getDescription().isEmpty())
+        if(!operationObject.getDescription().isEmpty())
         operation.setDescription(operationObject.getDescription());
-        if (operationObject.hasEd())
-        operation.setExternalDocs(ExternalDocObject.reverseExternalDocs(operationObject.get_impl_ed()));
-        if (!operationObject.getOperationID().isEmpty())
+        if(operationObject.hasEd())
+        operation.setExternalDocs(ExternalDocObject.reverseExternalDocs(operationObject.getEd()));
+        if(!operationObject.getOperationID().isEmpty())
         operation.setOperationId(operationObject.getOperationID());
-        if (operationObject.getPList().size() != 0) {
-        for (ParameterOb p : operationObject.getPList())
+        if(operationObject.getNumP()!=0){
+        for(ParameterOb p:operationObject.getPList())
         operation.addParametersItem(p.reverseParameter(p));
         }
-        if (operationObject.hasRb())
-        operation.setRequestBody(operationObject.get_impl_rb().reverseRequestBody(operationObject.get_impl_rb()));
-        if (operationObject.getR().getRList().size() != 0) {
-        ApiResponses responses = new ApiResponses();
-        for (ResponseTuple t : operationObject.getR().getRList())
-        responses.put(t.getKey(), t.get_impl_o().reverseResponse(t.get_impl_o()));
+        if(operationObject.hasRb())
+        operation.setRequestBody(operationObject.getRb().reverseRequestBody(operationObject.getRb()));
+        if(operationObject.getR().getNumR()!=0){
+        ApiResponses responses=new ApiResponses();
+        for(ResponseTuple t:operationObject.getR().getRList())
+        responses.put(t.getKey(),t.getO().reverseResponse(t.getO()));
         operation.setResponses(responses);
         }
-        if (operationObject.getCList().size() != 0) {
-        Map<String, Callback> callbacks = new HashMap<>();
-        for (CallbackTuple t : operationObject.getCList())
-        callbacks.put(t.getKey(), t.get_impl_o().reverseCallback(t.get_impl_o()));
+        if(operationObject.getNumC()!=0){
+        Map<String, Callback> callbacks=new HashMap<>();
+        for(CallbackTuple t:operationObject.getCList())
+        callbacks.put(t.getKey(),t.getO().reverseCallback(t.getO()));
         operation.setCallbacks(callbacks);
         }
-        if (operationObject.getDeprecatedBoolean() != null)
+        if(operationObject.getDeprecatedBoolean()!=null)
         operation.setDeprecated(operationObject.getDeprecatedBoolean());
-        if (operationObject.getSrList().size() != 0) {
-        for (SecurityRequirementObject s : operationObject.getSrList())
+        if(operationObject.getNumSr()!=0){
+        for(SecurityRequirementObject s:operationObject.getSrList())
         operation.addSecurityItem(SecurityRequirementObject.reverseSecurityRequirement(s));
         }
-        if (operationObject.getSList().size() != 0) {
-        for (ServerObject s : operationObject.getSList())
+        if(operationObject.getNumS()!=0){
+        for(ServerObject s:operationObject.getSList())
         operation.addServersItem(ServerObject.reverseServer(s));
         }
-        if (operationObject.getExList().size() != 0) {
-        Map<String, Object> extensionMap = new HashMap<>();
-        for (Extension e : operationObject.getExList())
-        extensionMap.put(e.getKey(), e.getValue());
+        if(operationObject.getNumEx()!=0){
+        Map<String, Object> extensionMap=new HashMap<>();
+        for(Extension e:operationObject.getExList())
+        extensionMap.put(e.getKey(),e.getValue());
         operation.setExtensions(extensionMap);
         }
 
         return operation;
         }
 
-public static io.swagger.v3.oas.models.ExternalDocumentation ExternalDocObject.reverseExternalDocs (ExternalDocObject externalDocObject){
-        ExternalDocumentation externalDocs = new ExternalDocumentation();
+public static io.swagger.v3.oas.models.ExternalDocumentation ExternalDocObject.reverseExternalDocs(ExternalDocObject externalDocObject){
+        ExternalDocumentation externalDocs=new ExternalDocumentation();
 
-        if (!externalDocObject.getDescription().isEmpty())
+        if(!externalDocObject.getDescription().isEmpty())
         externalDocs.setDescription(externalDocObject.getDescription());
-        if (!externalDocObject.getUrl().isEmpty())
+        if(!externalDocObject.getUrl().isEmpty())
         externalDocs.setUrl(externalDocObject.getUrl());
-        if (externalDocObject.getExList().size() != 0) {
-        Map<String, Object> extensionMap = new HashMap<>();
-        for (Extension e : externalDocObject.getExList())
-        extensionMap.put(e.getKey(), e.getValue());
+        if(externalDocObject.getNumEx()!=0){
+        Map<String, Object> extensionMap=new HashMap<>();
+        for(Extension e:externalDocObject.getExList())
+        extensionMap.put(e.getKey(),e.getValue());
         externalDocs.setExtensions(extensionMap);
         }
 
         return externalDocs;
         }
 
-        syn io.swagger.v3.oas.models.parameters.Parameter ParameterOb.reverseParameter (ParameterOb parameterOb);
-        eq ParameterReference.reverseParameter (ParameterOb parameterOb) {
-        io.swagger.v3.oas.models.parameters.Parameter parameter = new io.swagger.v3.oas.models.parameters.Parameter();
-        ParameterReference p = (ParameterReference) parameterOb;
+        syn io.swagger.v3.oas.models.parameters.Parameter ParameterOb.reverseParameter(ParameterOb parameterOb);
+        eq ParameterReference.reverseParameter(ParameterOb parameterOb){
+        io.swagger.v3.oas.models.parameters.Parameter parameter=new io.swagger.v3.oas.models.parameters.Parameter();
+        ParameterReference p=(ParameterReference)parameterOb;
 
-        if (!p.getRef().isEmpty()) {
+        if(!p.getRef().isEmpty()){
         parameter.set$ref(p.getRef());
         }
 
         return parameter;
         }
-        eq ParameterObject.reverseParameter (ParameterOb parameterOb) {
-        io.swagger.v3.oas.models.parameters.Parameter parameter = new io.swagger.v3.oas.models.parameters.Parameter();
-        ParameterObject p = (ParameterObject) parameterOb;
+        eq ParameterObject.reverseParameter(ParameterOb parameterOb){
+        io.swagger.v3.oas.models.parameters.Parameter parameter=new io.swagger.v3.oas.models.parameters.Parameter();
+        ParameterObject p=(ParameterObject)parameterOb;
 
-        if (!p.getName().isEmpty())
+        if(!p.getName().isEmpty())
         parameter.setName(p.getName());
-        if (!p.getIn().isEmpty())
+        if(!p.getIn().isEmpty())
         parameter.setIn(p.getIn());
-        if (p.getRequired() != null)
+        if(p.getRequired()!=null)
         parameter.setRequired(p.getRequired());
-        if (!p.getDescription().isEmpty())
+        if(!p.getDescription().isEmpty())
         parameter.setDescription(p.getDescription());
-        if (p.getDeprecatedBoolean() != null)
+        if(p.getDeprecatedBoolean()!=null)
         parameter.setDeprecated(p.getDeprecatedBoolean());
-        if (!p.getStyle().isEmpty())
+        if(!p.getStyle().isEmpty())
         parameter.setStyle(Parameter.StyleEnum.valueOf(p.getStyle()));
-        if (p.getAllowReserved() != null)
+        if(p.getAllowReserved()!=null)
         parameter.setAllowReserved(p.getAllowReserved());
-        if (p.getExplode() != null)
+        if(p.getExplode()!=null)
         parameter.setExplode(p.getExplode());
-        if (p.getS() != null)
-        parameter.setSchema(p.get_impl_s().reverseSchema(p.get_impl_s()));
-        if (p.getExample() != null)
+        if(p.getSchema()!=null)
+        parameter.setSchema(p.getSchema().reverseSchema(p.getSchema()));
+        if(p.getExample()!=null)
         parameter.setExample(p.getExample());
-        if (p.getEList().size() != 0) {
-        Map<String, Example> exampleMap = new HashMap<>();
-        for (ExampleTuple t : p.getEList())
-        exampleMap.put(t.getKey(), ExampleObject.reverseExample(t.get_impl_o()));
+        if(p.getNumE()!=0){
+        Map<String, Example> exampleMap=new HashMap<>();
+        for(ExampleTuple t:p.getEList())
+        exampleMap.put(t.getKey(),ExampleObject.reverseExample(t.getO()));
         parameter.setExamples(exampleMap);
         }
-        if (p.getCList().size() != 0) {
-        io.swagger.v3.oas.models.media.Content content = new Content();
-        for (ContentTuple t : p.getCList())
-        content.put(t.getKey(), MediaTypeObject.reverseMediaType(t.get_impl_m()));
+        if(p.getNumC()!=0){
+        io.swagger.v3.oas.models.media.Content content=new Content();
+        for(ContentTuple t:p.getCList())
+        content.put(t.getKey(),MediaTypeObject.reverseMediaType(t.getM()));
         parameter.setContent(content);
         }
-        if (p.getRequired() != null)
+        if(p.getRequired()!=null)
         parameter.setRequired(p.getRequired());
-        if (p.getExList().size() != 0) {
-        Map<String, Object> extensionMap = new HashMap<>();
-        for (Extension e : p.getExList())
-        extensionMap.put(e.getKey(), e.getValue());
+        if(p.getNumEx()!=0){
+        Map<String, Object> extensionMap=new HashMap<>();
+        for(Extension e:p.getExList())
+        extensionMap.put(e.getKey(),e.getValue());
         parameter.setExtensions(extensionMap);
         }
 
         return parameter;
         }
 
-        syn RequestBody RequestBodyOb.reverseRequestBody (RequestBodyOb requestBodyOb);
-        eq RequestBodyReference.reverseRequestBody (RequestBodyOb requestBodyOb) {
-        RequestBody requestBody = new RequestBody();
-        RequestBodyReference r = (RequestBodyReference) requestBodyOb;
+        syn RequestBody RequestBodyOb.reverseRequestBody(RequestBodyOb requestBodyOb);
+        eq RequestBodyReference.reverseRequestBody(RequestBodyOb requestBodyOb){
+        RequestBody requestBody=new RequestBody();
+        RequestBodyReference r=(RequestBodyReference)requestBodyOb;
 
-        if (!r.getRef().isEmpty()) {
+        if(!r.getRef().isEmpty()){
         requestBody.set$ref(r.getRef());
         }
 
         return requestBody;
         }
-        eq RequestBodyObject.reverseRequestBody (RequestBodyOb requestBodyOb) {
-        RequestBody requestBody = new RequestBody();
-        RequestBodyObject r = (RequestBodyObject) requestBodyOb;
+        eq RequestBodyObject.reverseRequestBody(RequestBodyOb requestBodyOb){
+        RequestBody requestBody=new RequestBody();
+        RequestBodyObject r=(RequestBodyObject)requestBodyOb;
 
-        if (r.getCList().size() != 0) {
-        io.swagger.v3.oas.models.media.Content contents = new Content();
-        for (ContentTuple t : r.getCList())
-        contents.put(t.getKey(), MediaTypeObject.reverseMediaType(t.get_impl_m()));
+        if(r.getNumC()!=0){
+        io.swagger.v3.oas.models.media.Content contents=new Content();
+        for(ContentTuple t:r.getCList())
+        contents.put(t.getKey(),MediaTypeObject.reverseMediaType(t.getM()));
         requestBody.setContent(contents);
         }
-        if (!r.getDescription().isEmpty())
+        if(!r.getDescription().isEmpty())
         requestBody.setDescription(r.getDescription());
-        if (r.getRequired() != null)
+        if(r.getRequired()!=null)
         requestBody.setRequired(r.getRequired());
 
         return requestBody;
         }
 
-public static io.swagger.v3.oas.models.media.MediaType MediaTypeObject.reverseMediaType (MediaTypeObject mediaTypeObject){
-        MediaType mediaType = new MediaType();
+public static io.swagger.v3.oas.models.media.MediaType MediaTypeObject.reverseMediaType(MediaTypeObject mediaTypeObject){
+        MediaType mediaType=new MediaType();
         SchemaOb s;
 
-        if (mediaTypeObject.get_impl_s() != null) {
-        s = mediaTypeObject.get_impl_s();
+        if(mediaTypeObject.getS()!=null){
+        s=mediaTypeObject.getS();
         mediaType.setSchema(s.reverseSchema(s));
         }
-        if (mediaTypeObject.getExample() != null)
+        if(mediaTypeObject.getExample()!=null)
         mediaType.setExample(mediaTypeObject.getExample());
-        if (mediaTypeObject.getEList().size() != 0) {
-        Map<String, Example> exampleMap = new HashMap<>();
-        for (ExampleTuple t : mediaTypeObject.getEList())
-        exampleMap.put(t.getKey(), ExampleObject.reverseExample(t.get_impl_o()));
+        if(mediaTypeObject.getNumE()!=0){
+        Map<String, Example> exampleMap=new HashMap<>();
+        for(ExampleTuple t:mediaTypeObject.getEList())
+        exampleMap.put(t.getKey(),ExampleObject.reverseExample(t.getO()));
         mediaType.setExamples(exampleMap);
         }
-        if (mediaTypeObject.getEnList().size() != 0) {
-        Map<String, io.swagger.v3.oas.models.media.Encoding> encodingMap = new HashMap<>();
-        for (EncodingTuple t : mediaTypeObject.getEnList())
-        encodingMap.put(t.getKey(), EncodingObject.reverseEncoding(t.get_impl_e()));
+        if(mediaTypeObject.getNumEn()!=0){
+        Map<String, io.swagger.v3.oas.models.media.Encoding>encodingMap=new HashMap<>();
+        for(EncodingTuple t:mediaTypeObject.getEnList())
+        encodingMap.put(t.getKey(),EncodingObject.reverseEncoding(t.getE()));
         mediaType.setEncoding(encodingMap);
         }
 
         return mediaType;
         }
 
-public static io.swagger.v3.oas.models.media.Encoding EncodingObject.reverseEncoding (EncodingObject encodingObject){
-        io.swagger.v3.oas.models.media.Encoding encodingProperty = new io.swagger.v3.oas.models.media.Encoding();
+public static io.swagger.v3.oas.models.media.Encoding EncodingObject.reverseEncoding(EncodingObject encodingObject){
+        io.swagger.v3.oas.models.media.Encoding encodingProperty=new io.swagger.v3.oas.models.media.Encoding();
         HeaderOb h;
 
-        if (!encodingObject.getContentType().isEmpty())
+        if(!encodingObject.getContentType().isEmpty())
         encodingProperty.setContentType(encodingObject.getContentType());
-        if (encodingObject.get_impl_h().size() != 0) {
-        Map<String, Header> headers = new HashMap<>();
-        for (HeaderTuple t : encodingObject.get_impl_h()) {
-        h = t.get_impl_o();
-        headers.put(t.getKey(), h.reverseHeader(h));
+        if(encodingObject.getNumH()!=0){
+        Map<String, Header> headers=new HashMap<>();
+        for(HeaderTuple t:encodingObject.getHList()){
+        h=t.getO();
+        headers.put(t.getKey(),h.reverseHeader(h));
         }
         encodingProperty.setHeaders(headers);
         }
         //if (!encodingObject.getStyle().isEmpty())
         //  encodingProperty.setStyle(Encoding.StyleEnum.valueOf());
-        if (encodingObject.getExplode() != null)
+        if(encodingObject.getExplode()!=null)
         encodingProperty.setExplode(encodingObject.getExplode());
-        if (encodingObject.getExList().size() != 0) {
-        Map<String, Object> extensionMap = new HashMap<>();
-        for (Extension e : encodingObject.getExList())
-        extensionMap.put(e.getKey(), e.getValue());
+        if(encodingObject.getNumEx()!=0){
+        Map<String, Object> extensionMap=new HashMap<>();
+        for(Extension e:encodingObject.getExList())
+        extensionMap.put(e.getKey(),e.getValue());
         encodingProperty.setExtensions(extensionMap);
         }
 
         return encodingProperty;
         }
 
-        syn ApiResponse ResponseOb.reverseResponse (ResponseOb responseOb);
-        eq ResponseReference.reverseResponse (ResponseOb responseOb){
-        ApiResponse response = new ApiResponse();
-        ResponseReference r = (ResponseReference) responseOb;
+        syn ApiResponse ResponseOb.reverseResponse(ResponseOb responseOb);
+        eq ResponseReference.reverseResponse(ResponseOb responseOb){
+        ApiResponse response=new ApiResponse();
+        ResponseReference r=(ResponseReference)responseOb;
 
-        if (!r.getRef().isEmpty()) {
+        if(!r.getRef().isEmpty()){
         response.set$ref(r.getRef());
         }
 
         return response;
         }
-        eq ResponseObject.reverseResponse (ResponseOb responseOb){
-        ApiResponse response = new ApiResponse();
-        ResponseObject r = (ResponseObject) responseOb;
+        eq ResponseObject.reverseResponse(ResponseOb responseOb){
+        ApiResponse response=new ApiResponse();
+        ResponseObject r=(ResponseObject)responseOb;
 
-        if (!r.getDescription().isEmpty())
+        if(!r.getDescription().isEmpty())
         response.setDescription(r.getDescription());
-        if (r.get_impl_h().size() != 0) {
-        Map<String, Header> headers = new HashMap<>();
-        for (HeaderTuple t : r.get_impl_h())
-        headers.put(t.getKey(), t.get_impl_o().reverseHeader(t.get_impl_o()));
+        if(r.getNumH()!=0){
+        Map<String, Header> headers=new HashMap<>();
+        for(HeaderTuple t:r.getHList())
+        headers.put(t.getKey(),t.getO().reverseHeader(t.getO()));
         response.setHeaders(headers);
         }
-        if (r.getCList().size() != 0) {
-        io.swagger.v3.oas.models.media.Content contents = new io.swagger.v3.oas.models.media.Content();
-        for (ContentTuple t : r.getCList())
-        contents.put(t.getKey(), MediaTypeObject.reverseMediaType(t.get_impl_m()));
+        if(r.getNumC()!=0){
+        io.swagger.v3.oas.models.media.Content contents=new io.swagger.v3.oas.models.media.Content();
+        for(ContentTuple t:r.getCList())
+        contents.put(t.getKey(),MediaTypeObject.reverseMediaType(t.getM()));
         response.setContent(contents);
         }
-        if (r.get_impl_l().size() != 0) {
-        Map<String, Link> links = new HashMap<>();
-        for (LinkTuple t : r.get_impl_l())
-        links.put(t.getKey(), t.get_impl_o().reverseLink(t.get_impl_o()));
+        if(r.getNumL()!=0){
+        Map<String, Link> links=new HashMap<>();
+        for(LinkTuple t:r.getLList())
+        links.put(t.getKey(),t.getO().reverseLink(t.getO()));
         response.setLinks(links);
         }
 
         return response;
         }
 
-        syn io.swagger.v3.oas.models.callbacks.Callback CallbackOb.reverseCallback (CallbackOb callbackOb);
-        eq CallbackReference.reverseCallback (CallbackOb callbackOb) {
-        io.swagger.v3.oas.models.callbacks.Callback callback = new io.swagger.v3.oas.models.callbacks.Callback();
-        CallbackReference c = (CallbackReference) callbackOb;
+        syn io.swagger.v3.oas.models.callbacks.Callback CallbackOb.reverseCallback(CallbackOb callbackOb);
+        eq CallbackReference.reverseCallback(CallbackOb callbackOb){
+        io.swagger.v3.oas.models.callbacks.Callback callback=new io.swagger.v3.oas.models.callbacks.Callback();
+        CallbackReference c=(CallbackReference)callbackOb;
 
-        if (!c.getRef().isEmpty()) {
+        if(!c.getRef().isEmpty()){
         callback.set$ref(c.getRef());
         }
 
         return callback;
         }
-        eq CallbackObject.reverseCallback (CallbackOb callbackOb) {
-        io.swagger.v3.oas.models.callbacks.Callback callback = new io.swagger.v3.oas.models.callbacks.Callback();
-        CallbackObject c = (CallbackObject) callbackOb;
+        eq CallbackObject.reverseCallback(CallbackOb callbackOb){
+        io.swagger.v3.oas.models.callbacks.Callback callback=new io.swagger.v3.oas.models.callbacks.Callback();
+        CallbackObject c=(CallbackObject)callbackOb;
 
-        if (c.getEList().size() != 0) {
-        Map<String, Path> paths = new HashMap<>();
+        if(c.getNumE()!=0){
+        Map<String, Path> paths=new HashMap<>();
         PathItemOb p;
-        for (Expression e : c.getEList())
-        callback.addPathItem(e.getName(), e.get_impl_p().reversePath(e.get_impl_p()));
+        for(Expression e:c.getEList())
+        callback.addPathItem(e.getName(),e.getP().reversePath(e.getP()));
         }
 
         return callback;
         }
 
-public static Example ExampleObject.reverseExample (ExampleObject exampleObject){
-        Example example = new Example();
+public static Example ExampleObject.reverseExample(ExampleObject exampleObject){
+        Example example=new Example();
 
-        if (!exampleObject.getSummary().isEmpty())
+        if(!exampleObject.getSummary().isEmpty())
         example.setSummary(exampleObject.getSummary());
-        if (!exampleObject.getDescription().isEmpty())
+        if(!exampleObject.getDescription().isEmpty())
         example.setDescription(exampleObject.getDescription());
-        if (exampleObject.getValue() != null)
+        if(exampleObject.getValue()!=null)
         example.setValue(exampleObject.getValue());
-        if (!exampleObject.getExternalValue().isEmpty())
+        if(!exampleObject.getExternalValue().isEmpty())
         example.setExternalValue(exampleObject.getExternalValue());
-        if (exampleObject.getExList().size() != 0) {
-        Map<String, Object> extension = new HashMap<>();
-        for (Extension e : exampleObject.getExList())
-        extension.put(e.getKey(), e.getValue());
+        if(exampleObject.getNumEx()!=0){
+        Map<String, Object> extension=new HashMap<>();
+        for(Extension e:exampleObject.getExList())
+        extension.put(e.getKey(),e.getValue());
         example.setExtensions(extension);
         }
 
         return example;
         }
 
-        syn io.swagger.v3.oas.models.links.Link LinkOb.reverseLink (LinkOb linkOb);
-        eq LinkReference.reverseLink (LinkOb linkOb){
-        io.swagger.v3.oas.models.links.Link link = new io.swagger.v3.oas.models.links.Link();
-        LinkReference l = (LinkReference) linkOb;
+        syn io.swagger.v3.oas.models.links.Link LinkOb.reverseLink(LinkOb linkOb);
+        eq LinkReference.reverseLink(LinkOb linkOb){
+        io.swagger.v3.oas.models.links.Link link=new io.swagger.v3.oas.models.links.Link();
+        LinkReference l=(LinkReference)linkOb;
 
-        if (!l.getRef().isEmpty())
+        if(!l.getRef().isEmpty())
         link.set$ref(l.getRef());
 
         return link;
         }
-        eq LinkObject.reverseLink (LinkOb linkOb){
-        io.swagger.v3.oas.models.links.Link link = new io.swagger.v3.oas.models.links.Link();
-        LinkObject l = (LinkObject) linkOb;
+        eq LinkObject.reverseLink(LinkOb linkOb){
+        io.swagger.v3.oas.models.links.Link link=new io.swagger.v3.oas.models.links.Link();
+        LinkObject l=(LinkObject)linkOb;
 
-        if (!l.getOperationRef().isEmpty())
+        if(!l.getOperationRef().isEmpty())
         link.setOperationRef(l.getOperationRef());
-        if (!l.getOperationID().isEmpty())
+        if(!l.getOperationID().isEmpty())
         link.setOperationId(l.getOperationID());
-        if (l.get_impl_l().size() != 0) {
-        Map<String, String> parameters = new HashMap<>();
-        for (LinkParameterTuple t : l.get_impl_l())
-        parameters.put(t.getKey(), t.getValue());
+        if(l.getNumL()!=0){
+        Map<String, String> parameters=new HashMap<>();
+        for(LinkParameterTuple t:l.getLList())
+        parameters.put(t.getKey(),t.getValue());
         link.setParameters(parameters);
         }
-        if (!l.getDescription().isEmpty())
+        if(!l.getDescription().isEmpty())
         link.setDescription(l.getDescription());
-        if (l.hasS())
-        link.setServer(ServerObject.reverseServer(l.get_impl_s()));
-        if (l.getExList().size() != 0){
-        for(Extension e : l.getExList())
-        link.addExtension(e.getKey(), e.getValue());
+        if(l.hasS())
+        link.setServer(ServerObject.reverseServer(l.getS()));
+        if(l.getNumEx()!=0){
+        for(Extension e:l.getExList())
+        link.addExtension(e.getKey(),e.getValue());
         }
 
         return link;
         }
 
-        syn io.swagger.v3.oas.models.headers.Header HeaderOb.reverseHeader (HeaderOb headerOb);
-        eq HeaderReference.reverseHeader (HeaderOb headerOb) {
-        io.swagger.v3.oas.models.headers.Header header = new io.swagger.v3.oas.models.headers.Header();
-        HeaderReference h = new HeaderReference();
+        syn io.swagger.v3.oas.models.headers.Header HeaderOb.reverseHeader(HeaderOb headerOb);
+        eq HeaderReference.reverseHeader(HeaderOb headerOb){
+        io.swagger.v3.oas.models.headers.Header header=new io.swagger.v3.oas.models.headers.Header();
+        HeaderReference h=new HeaderReference();
 
-        if (!h.getRef().isEmpty()) {
+        if(!h.getRef().isEmpty()){
         header.set$ref(h.getRef());
         }
 
         return header;
         }
-        eq HeaderObject.reverseHeader (HeaderOb headerOb) {
-        io.swagger.v3.oas.models.headers.Header header = new io.swagger.v3.oas.models.headers.Header();
-        HeaderObject h = (HeaderObject) headerOb;
+        eq HeaderObject.reverseHeader(HeaderOb headerOb){
+        io.swagger.v3.oas.models.headers.Header header=new io.swagger.v3.oas.models.headers.Header();
+        HeaderObject h=(HeaderObject)headerOb;
 
-        if (h.getRequired() != null)
+        if(h.getRequired()!=null)
         header.setRequired(h.getRequired());
-        if (!h.getDescription().isEmpty())
+        if(!h.getDescription().isEmpty())
         header.setDescription(h.getDescription());
-        if (!h.getStyle().isEmpty())
+        if(!h.getStyle().isEmpty())
         header.setStyle(Header.StyleEnum.valueOf(h.getStyle()));
-        if (h.getExplode() != null)
+        if(h.getExplode()!=null)
         header.setExplode(h.getExplode());
         //if (h.getAllowReserved() != null)
         //  header.setAllowReserved(h.getAllowReserved());
-        if (h.getExample() != null)
+        if(h.getExample()!=null)
         header.setExample(h.getExample());
-        if (h.getEList().size() != 0) {
-        Map<String, Example> examples = new HashMap<>();
-        for (ExampleTuple t : h.getEList())
-        examples.put(t.getKey(), ExampleObject.reverseExample(t.get_impl_o()));
+        if(h.getNumE()!=0){
+        Map<String, Example> examples=new HashMap<>();
+        for(ExampleTuple t:h.getEList())
+        examples.put(t.getKey(),ExampleObject.reverseExample(t.getO()));
         header.setExample(examples);
         }
-        if (h.getCList().size() != 0) {
-        io.swagger.v3.oas.models.media.Content contents = new io.swagger.v3.oas.models.media.Content();
-        for (ContentTuple t : h.getCList())
-        contents.put(t.getKey(), MediaTypeObject.reverseMediaType(t.get_impl_m()));
+        if(h.getNumChild()!=0){
+        io.swagger.v3.oas.models.media.Content contents=new io.swagger.v3.oas.models.media.Content();
+        for(ContentTuple t:h.getCList())
+        contents.put(t.getKey(),MediaTypeObject.reverseMediaType(t.getM()));
         header.setContent(contents);
         }
-        if (h.hasS())
-        header.setSchema(h.get_impl_s().reverseSchema(h.get_impl_s()));
+        if(h.hasS())
+        header.setSchema(h.getS().reverseSchema(h.getS()));
 
         return header;
         }
 
-public static io.swagger.v3.oas.models.tags.Tag TagObject.reverseTag (TagObject tagObject){
-        io.swagger.v3.oas.models.tags.Tag tag = new io.swagger.v3.oas.models.tags.Tag();
+public static io.swagger.v3.oas.models.tags.Tag TagObject.reverseTag(TagObject tagObject){
+        io.swagger.v3.oas.models.tags.Tag tag=new io.swagger.v3.oas.models.tags.Tag();
 
         tag.setName(tagObject.getName());
 
-        if (!tagObject.getDescription().isEmpty())
+        if(!tagObject.getDescription().isEmpty())
         tag.setDescription(tagObject.getDescription());
-        if (tagObject.hasE())
-        tag.setExternalDocs(ExternalDocObject.reverseExternalDocs(tagObject.get_impl_e()));
-        if (tagObject.getExList().size() != 0) {
-        Map<String, Object> extensionMap = new HashMap<>();
-        for (Extension e : tagObject.getExList())
-        extensionMap.put(e.getKey(), e.getValue());
+        if(tagObject.hasE())
+        tag.setExternalDocs(ExternalDocObject.reverseExternalDocs(tagObject.getE()));
+        if(tagObject.getNumEx()!=0){
+        Map<String, Object> extensionMap=new HashMap<>();
+        for(Extension e:tagObject.getExList())
+        extensionMap.put(e.getKey(),e.getValue());
         tag.setExtensions(extensionMap);
         }
 
         return tag;
         }
 
-  /*
-  syn org.openapi4j.parser.model.v3.Schema SchemaOb.reverseSchema (SchemaOb schemaOb);
+
+  syn io.swagger.v3.oas.models.media.Schema SchemaOb.reverseSchema (SchemaOb schemaOb);
   eq SchemaReference.reverseSchema (SchemaOb schemaOb){
-    org.openapi4j.parser.model.v3.Schema schema = new org.openapi4j.parser.model.v3.Schema();
-    SchemaReference s = (SchemaReference) schemaOb;
+        io.swagger.v3.oas.models.media.Schema schema = new io.swagger.v3.oas.models.media.Schema();
+        SchemaReference s = (SchemaReference) schemaOb;
 
-    if (!s.getRef().isEmpty()) {
-      try {
-        schema.setReference(new org.openapi4j.core.model.v3.OAI3Context(new URL("")), new URL(""), s.getRef());
-      } catch (Exception e) {
-        e.printStackTrace();
-      }
-    }
+        if (!s.getRef().isEmpty()) {
+        schema.set$ref(schema.get$ref());
+        }
 
-    return schema;
+        return schema;
   }
   eq SchemaObject.reverseSchema (SchemaOb schemaOb){
-    org.openapi4j.parser.model.v3.Schema schema = new org.openapi4j.parser.model.v3.Schema();
-    SchemaObject s = (SchemaObject) schemaOb;
-
-    if (s.hasAdditionalProperties()) {
-      SchemaOb o = s.getAdditionalProperties().getSchemaOb();
-      if (o instanceof SchemaObject)
-        schema.setAdditionalProperties(((SchemaObject) o).reverseSchema(o, map));
-      else
-        schema.setAdditionalProperties(((SchemaReference) o).reverseSchema(o, map));
-    }
-    if (s.getAdditionalPropertiesAllowed() != null)
-      schema.setAdditionalPropertiesAllowed(s.getAdditionalPropertiesAllowed());
-    if (s.getDefaultValue() != null)
-      schema.setDefault(s.getDefaultValue());
-    if (!s.getDescription().isEmpty())
-      schema.setDescription(s.getDescription());
-    if (s.getDeprecatedBoolean() != null)
-      schema.setDeprecated(s.getDeprecatedBoolean());
-    if (s.hasDiscriminatorObject())
-      schema.setDiscriminator(DiscriminatorObject.reverseDiscriminator(s.getDiscriminatorObject(), map));
-    if (s.getNumEnumObj() != 0) {
-      for (EnumObj e : s.getEnumObjs())
-        schema.addEnum(e.getEnumOb());
-    }
-
-    if (s.getExample() != null)
-      schema.setExample(s.getExample());
-    if (s.getExclusiveMaximum() != null)
-      schema.setExclusiveMaximum(s.getExclusiveMaximum());
-    if (s.getExclusiveMinimum() != null)
-      schema.setExclusiveMinimum(s.getExclusiveMinimum());
-    if (s.hasExternalDocObject())
-      schema.setExternalDocs(ExternalDocObject.reverseExternalDocs(s.getExternalDocObject(), map));
-    if (!s.getFormat().isEmpty())
-      schema.setFormat(s.getFormat());
-    if (s.hasItemsSchema()) {
-      if (s.getItemsSchema().getSchemaOb() instanceof SchemaObject)
-        schema.setItemsSchema(((SchemaObject) s.getItemsSchema().getSchemaOb()).reverseSchema(s.getItemsSchema().getSchemaOb(), map));
-      else
-        schema.setItemsSchema(((SchemaReference) s.getItemsSchema().getSchemaOb()).reverseSchema(s.getItemsSchema().getSchemaOb(), map));
-    }
-    if (s.getMaximum() != null)
-      schema.setMaximum(s.getMaximum());
-    if (s.getMinimum() != null)
-      schema.setMinimum(s.getMinimum());
-    if (s.getMaxItems() != null)
-      schema.setMaxItems(s.getMaxItems());
-    if (s.getMinItems() != null)
-      schema.setMinItems(s.getMinItems());
-    if (s.getMaxLength() != null)
-      schema.setMaxLength(s.getMaxLength());
-    if (s.getMinLength() != null)
-      schema.setMinLength(s.getMinLength());
-    if (s.getMaxProperties() != null)
-      schema.setMaxProperties(s.getMaxProperties());
-    if (s.getMinProperties() != null)
-      schema.setMinProperties(s.getMinProperties());
-    if (s.getMultipleOf() != null)
-      schema.setMultipleOf(s.getMultipleOf());
-    if (s.hasNotSchema()) {
-      if (s.getNotSchema().getSchemaOb() instanceof SchemaObject)
-        schema.setNotSchema(((SchemaObject) s.getNotSchema().getSchemaOb()).reverseSchema(s.getNotSchema().getSchemaOb(), map));
-      else
-        schema.setNotSchema(((SchemaReference) s.getNotSchema().getSchemaOb()).reverseSchema(s.getNotSchema().getSchemaOb(), map));
-    }
-    if (s.getNullable() != null)
-      schema.setNullable(s.getNullable());
-    if (!s.getPattern().isEmpty())
-      schema.setPattern(s.getPattern());
-    if (s.getNumPropertyItem() != 0) {
-      Map<String, org.openapi4j.parser.model.v3.Schema> properties = new HashMap<>();
-      for (PropertyItem p : s.getPropertyItemList()) {
-        if (p.getSchemaOb() instanceof SchemaObject)
-          properties.put(p.getName(), ((SchemaObject) p.getSchemaOb()).reverseSchema(p.getSchemaOb(), map));
-        else
-          properties.put(p.getName(), ((SchemaReference) p.getSchemaOb()).reverseSchema(p.getSchemaOb(), map));
-      }
-      schema.setProperties(properties);
-    }
-    if (s.getNumRequiredField() != 0) {
-      for (RequiredField r : s.getRequiredFields())
-        schema.addRequiredField(r.getValue());
-    }
-    if (s.getNumAllOfSchema() != 0) {
-      for (AllOfSchema a : s.getAllOfSchemas()) {
-        if (a.getSchemaOb() instanceof SchemaObject)
-          schema.addAllOfSchema(((SchemaObject) a.getSchemaOb()).reverseSchema(a.getSchemaOb(), map));
-        else
-          schema.addAllOfSchema(((SchemaReference) a.getSchemaOb()).reverseSchema(a.getSchemaOb(), map));
-      }
-    }
-    if (s.getNumAnyOfSchema() != 0) {
-      for (AnyOfSchema a : s.getAnyOfSchemas()) {
-        if (a.getSchemaOb() instanceof SchemaObject)
-          schema.addAnyOfSchema(((SchemaObject) a.getSchemaOb()).reverseSchema(a.getSchemaOb(), map));
-        else
-          schema.addAnyOfSchema(((SchemaReference) a.getSchemaOb()).reverseSchema(a.getSchemaOb(), map));
-      }
-    }
-    if (s.getNumOneOfSchema() != 0) {
-      for (OneOfSchema o : s.getOneOfSchemas()) {
-        if (o.getSchemaOb() instanceof SchemaObject)
-          schema.addOneOfSchema(((SchemaObject) o.getSchemaOb()).reverseSchema(o.getSchemaOb(), map));
-        else
-          schema.addOneOfSchema(((SchemaReference) o.getSchemaOb()).reverseSchema(o.getSchemaOb(), map));
-      }
-    }
-    if (s.getReadOnly() != null)
-      schema.setReadOnly(s.getReadOnly());
-    if (s.getWriteOnly() != null)
-      schema.setWriteOnly(s.getWriteOnly());
-    if (!s.getType().isEmpty())
-      schema.setType(s.getType());
-    if (!s.getTitle().isEmpty())
-      schema.setTitle(s.getTitle());
-    if (s.getUniqueItems() != null)
-      schema.setUniqueItems(s.getUniqueItems());
-    if (s.hasXmlObject())
-      schema.setXml(XmlObject.reverseXml(s.getXmlObject(), map));
-    if (s.getNumExtension() != 0) {
-      Map<String, Object> extensionMap = new HashMap<>();
-      for (Extension e : s.getExtensions())
-        extensionMap.put(e.getKey(), e.getValue());
-      schema.setExtensions(extensionMap);
-    }
-
-    return schema;
-  }
-   */
-
-public static io.swagger.v3.oas.models.media.Discriminator DiscriminatorObject.reverseDiscriminator (DiscriminatorObject discriminatorObject) {
-        io.swagger.v3.oas.models.media.Discriminator discriminator = new io.swagger.v3.oas.models.media.Discriminator();
-
-        if (!discriminatorObject.getPropertyName().isEmpty())
+        io.swagger.v3.oas.models.media.Schema schema=new io.swagger.v3.oas.models.media.Schema();
+        SchemaObject s=(SchemaObject)schemaOb;
+
+            /*
+            if(s.hasAdditionalProperties()){
+            SchemaOb o=s.getAdditionalProperties().getSchemaOb();
+            if(o instanceof SchemaObject)
+            schema.setAdditionalProperties(((SchemaObject)o).reverseSchema(o,map));
+            else
+            schema.setAdditionalProperties(((SchemaReference)o).reverseSchema(o,map));
+            }
+            if(s.getAdditionalPropertiesAllowed()!=null)
+            schema.setAdditionalPropertiesAllowed(s.getAdditionalPropertiesAllowed());
+            if(s.getDefaultValue()!=null)
+            schema.setDefault(s.getDefaultValue());
+            if(!s.getDescription().isEmpty())
+            schema.setDescription(s.getDescription());
+            if(s.getDeprecatedBoolean()!=null)
+            schema.setDeprecated(s.getDeprecatedBoolean());
+            if(s.hasDiscriminatorObject())
+            schema.setDiscriminator(DiscriminatorObject.reverseDiscriminator(s.getDiscriminatorObject(),map));
+            if(s.getNumEnumObj()!=0){
+            for(EnumObj e:s.getEnumObjs())
+            schema.addEnum(e.getEnumOb());
+            }
+
+            if(s.getExample()!=null)
+            schema.setExample(s.getExample());
+            if(s.getExclusiveMaximum()!=null)
+            schema.setExclusiveMaximum(s.getExclusiveMaximum());
+            if(s.getExclusiveMinimum()!=null)
+            schema.setExclusiveMinimum(s.getExclusiveMinimum());
+            if(s.hasExternalDocObject())
+            schema.setExternalDocs(ExternalDocObject.reverseExternalDocs(s.getExternalDocObject(),map));
+            if(!s.getFormat().isEmpty())
+            schema.setFormat(s.getFormat());
+            if(s.hasItemsSchema()){
+            if(s.getItemsSchema().getSchemaOb()instanceof SchemaObject)
+            schema.setItemsSchema(((SchemaObject)s.getItemsSchema().getSchemaOb()).reverseSchema(s.getItemsSchema().getSchemaOb(),map));
+            else
+            schema.setItemsSchema(((SchemaReference)s.getItemsSchema().getSchemaOb()).reverseSchema(s.getItemsSchema().getSchemaOb(),map));
+            }
+            if(s.getMaximum()!=null)
+            schema.setMaximum(s.getMaximum());
+            if(s.getMinimum()!=null)
+            schema.setMinimum(s.getMinimum());
+            if(s.getMaxItems()!=null)
+            schema.setMaxItems(s.getMaxItems());
+            if(s.getMinItems()!=null)
+            schema.setMinItems(s.getMinItems());
+            if(s.getMaxLength()!=null)
+            schema.setMaxLength(s.getMaxLength());
+            if(s.getMinLength()!=null)
+            schema.setMinLength(s.getMinLength());
+            if(s.getMaxProperties()!=null)
+            schema.setMaxProperties(s.getMaxProperties());
+            if(s.getMinProperties()!=null)
+            schema.setMinProperties(s.getMinProperties());
+            if(s.getMultipleOf()!=null)
+            schema.setMultipleOf(s.getMultipleOf());
+            if(s.hasNotSchema()){
+            if(s.getNotSchema().getSchemaOb()instanceof SchemaObject)
+            schema.setNotSchema(((SchemaObject)s.getNotSchema().getSchemaOb()).reverseSchema(s.getNotSchema().getSchemaOb(),map));
+            else
+            schema.setNotSchema(((SchemaReference)s.getNotSchema().getSchemaOb()).reverseSchema(s.getNotSchema().getSchemaOb(),map));
+            }
+            if(s.getNullable()!=null)
+            schema.setNullable(s.getNullable());
+            if(!s.getPattern().isEmpty())
+            schema.setPattern(s.getPattern());
+            if(s.getNumPropertyItem()!=0){
+            Map<String, org.openapi4j.parser.model.v3.Schema>properties=new HashMap<>();
+            for(PropertyItem p:s.getPropertyItemList()){
+            if(p.getSchemaOb()instanceof SchemaObject)
+            properties.put(p.getName(),((SchemaObject)p.getSchemaOb()).reverseSchema(p.getSchemaOb(),map));
+            else
+            properties.put(p.getName(),((SchemaReference)p.getSchemaOb()).reverseSchema(p.getSchemaOb(),map));
+            }
+            schema.setProperties(properties);
+            }
+            if(s.getNumRequiredField()!=0){
+            for(RequiredField r:s.getRequiredFields())
+            schema.addRequiredField(r.getValue());
+            }
+            if(s.getNumAllOfSchema()!=0){
+            for(AllOfSchema a:s.getAllOfSchemas()){
+            if(a.getSchemaOb()instanceof SchemaObject)
+            schema.addAllOfSchema(((SchemaObject)a.getSchemaOb()).reverseSchema(a.getSchemaOb(),map));
+            else
+            schema.addAllOfSchema(((SchemaReference)a.getSchemaOb()).reverseSchema(a.getSchemaOb(),map));
+            }
+            }
+            if(s.getNumAnyOfSchema()!=0){
+            for(AnyOfSchema a:s.getAnyOfSchemas()){
+            if(a.getSchemaOb()instanceof SchemaObject)
+            schema.addAnyOfSchema(((SchemaObject)a.getSchemaOb()).reverseSchema(a.getSchemaOb(),map));
+            else
+            schema.addAnyOfSchema(((SchemaReference)a.getSchemaOb()).reverseSchema(a.getSchemaOb(),map));
+            }
+            }
+            if(s.getNumOneOfSchema()!=0){
+            for(OneOfSchema o:s.getOneOfSchemas()){
+            if(o.getSchemaOb()instanceof SchemaObject)
+            schema.addOneOfSchema(((SchemaObject)o.getSchemaOb()).reverseSchema(o.getSchemaOb(),map));
+            else
+            schema.addOneOfSchema(((SchemaReference)o.getSchemaOb()).reverseSchema(o.getSchemaOb(),map));
+            }
+            }
+            if(s.getReadOnly()!=null)
+            schema.setReadOnly(s.getReadOnly());
+            if(s.getWriteOnly()!=null)
+            schema.setWriteOnly(s.getWriteOnly());
+            if(!s.getType().isEmpty())
+            schema.setType(s.getType());
+            if(!s.getTitle().isEmpty())
+            schema.setTitle(s.getTitle());
+            if(s.getUniqueItems()!=null)
+            schema.setUniqueItems(s.getUniqueItems());
+            if(s.hasXmlObject())
+            schema.setXml(XmlObject.reverseXml(s.getXmlObject(),map));
+            if(s.getNumExtension()!=0){
+            Map<String, Object> extensionMap=new HashMap<>();
+            for(Extension e:s.getExtensions())
+            extensionMap.put(e.getKey(),e.getValue());
+            schema.setExtensions(extensionMap);
+            }
+             */
+
+        return schema;
+        }
+
+public static io.swagger.v3.oas.models.media.Discriminator DiscriminatorObject.reverseDiscriminator(DiscriminatorObject discriminatorObject){
+        io.swagger.v3.oas.models.media.Discriminator discriminator=new io.swagger.v3.oas.models.media.Discriminator();
+
+        if(!discriminatorObject.getPropertyName().isEmpty())
         discriminator.setPropertyName(discriminatorObject.getPropertyName());
-        if (discriminatorObject.get_impl_m().size() != 0) {
-        Map<String, String> mapping = new HashMap<>();
-        for (MappingTuple m : discriminatorObject.get_impl_m())
-        mapping.put(m.getKey(), m.getValue());
+        if(discriminatorObject.getNumM()!=0){
+        Map<String, String> mapping=new HashMap<>();
+        for(MappingTuple m:discriminatorObject.getMList())
+        mapping.put(m.getKey(),m.getValue());
         discriminator.setMapping(mapping);
         }
 
         return discriminator;
         }
 
-public static io.swagger.v3.oas.models.media.XML XmlObject.reverseXml (XmlObject xmlObject) {
-        io.swagger.v3.oas.models.media.XML xml = new io.swagger.v3.oas.models.media.XML();
+public static io.swagger.v3.oas.models.media.XML XmlObject.reverseXml(XmlObject xmlObject){
+        io.swagger.v3.oas.models.media.XML xml=new io.swagger.v3.oas.models.media.XML();
 
-        if (!xmlObject.getName().isEmpty())
+        if(!xmlObject.getName().isEmpty())
         xml.setName(xmlObject.getName());
-        if (!xmlObject.getNamespace().isEmpty())
+        if(!xmlObject.getNamespace().isEmpty())
         xml.setNamespace(xmlObject.getNamespace());
-        if (!xmlObject.getPrefix().isEmpty())
+        if(!xmlObject.getPrefix().isEmpty())
         xml.setPrefix(xmlObject.getPrefix());
-        if (xmlObject.getAttribute() != null)
+        if(xmlObject.getAttribute()!=null)
         xml.setAttribute(xmlObject.getAttribute());
-        if (xmlObject.getWrapped() != null)
+        if(xmlObject.getWrapped()!=null)
         xml.setWrapped(xmlObject.getWrapped());
 
         return xml;
         }
 
-        syn io.swagger.v3.oas.models.security.SecurityScheme SecuritySchemeOb.reverseSecurityScheme (SecuritySchemeOb securitySchemeOb);
-        eq SecuritySchemeReference.reverseSecurityScheme (SecuritySchemeOb securitySchemeOb){
-        io.swagger.v3.oas.models.security.SecurityScheme securityScheme = new io.swagger.v3.oas.models.security.SecurityScheme();
-        SecuritySchemeReference s = (SecuritySchemeReference) securitySchemeOb;
+        syn io.swagger.v3.oas.models.security.SecurityScheme SecuritySchemeOb.reverseSecurityScheme(SecuritySchemeOb securitySchemeOb);
+        eq SecuritySchemeReference.reverseSecurityScheme(SecuritySchemeOb securitySchemeOb){
+        io.swagger.v3.oas.models.security.SecurityScheme securityScheme=new io.swagger.v3.oas.models.security.SecurityScheme();
+        SecuritySchemeReference s=(SecuritySchemeReference)securitySchemeOb;
 
-        if (!s.getRef().isEmpty()) {securityScheme.set$ref(s.getRef());
+        if(!s.getRef().isEmpty()){securityScheme.set$ref(s.getRef());
         }
 
         return securityScheme;
         }
-        eq SecuritySchemeObject.reverseSecurityScheme (SecuritySchemeOb securitySchemeOb){
-        io.swagger.v3.oas.models.security.SecurityScheme securityScheme = new io.swagger.v3.oas.models.security.SecurityScheme();
-        SecuritySchemeObject s = (SecuritySchemeObject) securitySchemeOb;
+        eq SecuritySchemeObject.reverseSecurityScheme(SecuritySchemeOb securitySchemeOb){
+        io.swagger.v3.oas.models.security.SecurityScheme securityScheme=new io.swagger.v3.oas.models.security.SecurityScheme();
+        SecuritySchemeObject s=(SecuritySchemeObject)securitySchemeOb;
 
-        if (!s.getType().isEmpty())
+        if(!s.getType().isEmpty())
         securityScheme.setType(SecurityScheme.Type.valueOf(s.getType()));
-        if (!s.getName().isEmpty())
+        if(!s.getName().isEmpty())
         securityScheme.setName(s.getName());
-        if (!s.getIn().isEmpty())
+        if(!s.getIn().isEmpty())
         securityScheme.setIn(SecurityScheme.In.valueOf(s.getIn()));
-        if (!s.getScheme().isEmpty())
+        if(!s.getScheme().isEmpty())
         securityScheme.setScheme(s.getScheme());
-        if (!s.getOpenIdConnectUrl().isEmpty())
+        if(!s.getOpenIdConnectUrl().isEmpty())
         securityScheme.setOpenIdConnectUrl(s.getOpenIdConnectUrl());
-        if (s.get_impl_o() != null)
-        securityScheme.setFlows(OAuthFlowsObject.reverseOAuthFlows(s.get_impl_o()));
-        if (!s.getDescription().isEmpty())
+        if(s.getO()!=null)
+        securityScheme.setFlows(OAuthFlowsObject.reverseOAuthFlows(s.getO()));
+        if(!s.getDescription().isEmpty())
         securityScheme.setDescription(s.getDescription());
-        if (!s.getBearerFormat().isEmpty())
+        if(!s.getBearerFormat().isEmpty())
         securityScheme.setBearerFormat(s.getBearerFormat());
-        if (s.getExList().size() != 0) {
-        Map<String, Object> extensionMap = new HashMap<>();
-        for (Extension e : s.getExList())
-        extensionMap.put(e.getKey(), e.getValue());
+        if(s.getNumEx()!=0){
+        Map<String, Object> extensionMap=new HashMap<>();
+        for(Extension e:s.getExList())
+        extensionMap.put(e.getKey(),e.getValue());
         securityScheme.setExtensions(extensionMap);
         }
 
         return securityScheme;
         }
 
-public static io.swagger.v3.oas.models.security.OAuthFlows OAuthFlowsObject.reverseOAuthFlows (OAuthFlowsObject oAuthFlowsObject){
-        io.swagger.v3.oas.models.security.OAuthFlows oAuthFlows = new io.swagger.v3.oas.models.security.OAuthFlows();
+public static io.swagger.v3.oas.models.security.OAuthFlows OAuthFlowsObject.reverseOAuthFlows(OAuthFlowsObject oAuthFlowsObject){
+        io.swagger.v3.oas.models.security.OAuthFlows oAuthFlows=new io.swagger.v3.oas.models.security.OAuthFlows();
 
-        if (oAuthFlowsObject.hasI())
-        oAuthFlows.setImplicit(OAuthFlowObject.reverseOAuthFlow(oAuthFlowsObject.get_impl_i().get_impl_o()));
-        if (oAuthFlowsObject.hasP())
-        oAuthFlows.setPassword(OAuthFlowObject.reverseOAuthFlow(oAuthFlowsObject.get_impl_p().get_impl_o()));
-        if (oAuthFlowsObject.hasC())
-        oAuthFlows.setClientCredentials(OAuthFlowObject.reverseOAuthFlow(oAuthFlowsObject.get_impl_c().get_impl_o()));
-        if (oAuthFlowsObject.hasA())
-        oAuthFlows.setAuthorizationCode(OAuthFlowObject.reverseOAuthFlow(oAuthFlowsObject.get_impl_a().get_impl_o()));
+        if(oAuthFlowsObject.hasI())
+        oAuthFlows.setImplicit(OAuthFlowObject.reverseOAuthFlow(oAuthFlowsObject.getI().getO()));
+        if(oAuthFlowsObject.hasP())
+        oAuthFlows.setPassword(OAuthFlowObject.reverseOAuthFlow(oAuthFlowsObject.getP().getO()));
+        if(oAuthFlowsObject.hasC())
+        oAuthFlows.setClientCredentials(OAuthFlowObject.reverseOAuthFlow(oAuthFlowsObject.getC().getO()));
+        if(oAuthFlowsObject.hasA())
+        oAuthFlows.setAuthorizationCode(OAuthFlowObject.reverseOAuthFlow(oAuthFlowsObject.getA().getO()));
 
         return oAuthFlows;
         }
 
-public static io.swagger.v3.oas.models.security.OAuthFlow OAuthFlowObject.reverseOAuthFlow (OAuthFlowObject oAuthFlowObject){
-        io.swagger.v3.oas.models.security.OAuthFlow oAuthFlow = new io.swagger.v3.oas.models.security.OAuthFlow();
-        Scopes scopes = new Scopes();
+public static io.swagger.v3.oas.models.security.OAuthFlow OAuthFlowObject.reverseOAuthFlow(OAuthFlowObject oAuthFlowObject){
+        io.swagger.v3.oas.models.security.OAuthFlow oAuthFlow=new io.swagger.v3.oas.models.security.OAuthFlow();
+        Scopes scopes=new Scopes();
 
-        if (oAuthFlowObject.getAuthorizationUrl() != null)
+        if(oAuthFlowObject.getAuthorizationUrl()!=null)
         oAuthFlow.setAuthorizationUrl(oAuthFlowObject.getAuthorizationUrl());
-        if (oAuthFlowObject.getTokenUrl() != null)
+        if(oAuthFlowObject.getTokenUrl()!=null)
         oAuthFlow.setTokenUrl(oAuthFlowObject.getTokenUrl());
-        for (ScopesTuple t : oAuthFlowObject.getSList())
-        scopes.put(t.getScopesKey(), t.getScopesValue());
+        for(ScopesTuple t:oAuthFlowObject.getSList())
+        scopes.put(t.getScopesKey(),t.getScopesValue());
         oAuthFlow.setScopes(scopes);
-        if (oAuthFlowObject.getRefreshUrl() != null)
+        if(oAuthFlowObject.getRefreshUrl()!=null)
         oAuthFlow.setRefreshUrl(oAuthFlowObject.getRefreshUrl());
 
         return oAuthFlow;
         }
 
-public static io.swagger.v3.oas.models.security.SecurityRequirement SecurityRequirementObject.reverseSecurityRequirement (SecurityRequirementObject securityRequirementObject){
-        io.swagger.v3.oas.models.security.SecurityRequirement securityRequirement = new io.swagger.v3.oas.models.security.SecurityRequirement();
+public static io.swagger.v3.oas.models.security.SecurityRequirement SecurityRequirementObject.reverseSecurityRequirement(SecurityRequirementObject securityRequirementObject){
+        io.swagger.v3.oas.models.security.SecurityRequirement securityRequirement=new io.swagger.v3.oas.models.security.SecurityRequirement();
 
-        if (securityRequirementObject.get_impl_t().size() != 0) {
-        Map<String, List<String>> requirements = new HashMap<>();
-        for (SecurityRequirementTuple t : securityRequirementObject.get_impl_t()) {
-        List<String> values = new ArrayList<>();
-        for (SecurityRequirementValue v : t.get_impl_v())
+        if(securityRequirementObject.getNumTuple()!=0){
+        Map<String, List<String>>requirements=new HashMap<>();
+        for(SecurityRequirementTuple t:securityRequirementObject.getTupleList()){
+        List<String> values=new ArrayList<>();
+        for(SecurityRequirementValue v:t.getValueList())
         values.add(v.getValue());
-        securityRequirement.addList(t.getName(), values);
+        securityRequirement.addList(t.getName(),values);
         }
         }
 
         return securityRequirement;
         }
+}
-- 
GitLab