From f2b6a3447b7a27b35de688fdb05c84eda0e67e15 Mon Sep 17 00:00:00 2001
From: Jueun Park <s5616012@mailbox.tu-dresden.de>
Date: Sat, 9 Oct 2021 22:22:22 +0900
Subject: [PATCH] NullPointerException

---
 .../6.8/executionHistory/executionHistory.bin | Bin 5678547 -> 5678547 bytes
 .../executionHistory/executionHistory.lock    | Bin 17 -> 17 bytes
 .gradle/6.8/fileHashes/fileHashes.bin         | Bin 803049 -> 803049 bytes
 .gradle/6.8/fileHashes/fileHashes.lock        | Bin 17 -> 17 bytes
 .../6.8/fileHashes/resourceHashesCache.bin    | Bin 393091 -> 395097 bytes
 .gradle/6.8/javaCompile/classAnalysis.bin     | Bin 2038062 -> 2087334 bytes
 .gradle/6.8/javaCompile/jarAnalysis.bin       | Bin 1721762 -> 1981770 bytes
 .gradle/6.8/javaCompile/javaCompile.lock      | Bin 17 -> 17 bytes
 .gradle/6.8/javaCompile/taskHistory.bin       | Bin 32828 -> 32828 bytes
 .../buildOutputCleanup.lock                   | Bin 17 -> 17 bytes
 .../inf/st/openapi/ast/ASTNode.class          | Bin 13454 -> 13454 bytes
 .../tudresden/inf/st/openapi/ast/Delete.class | Bin 7326 -> 7326 bytes
 .../de/tudresden/inf/st/openapi/ast/Get.class | Bin 11995 -> 11995 bytes
 .../tudresden/inf/st/openapi/ast/Head.class   | Bin 7318 -> 7318 bytes
 .../inf/st/openapi/ast/OpenAPIObject.class    | Bin 35824 -> 35824 bytes
 .../inf/st/openapi/ast/OperationOb.class      | Bin 3155 -> 3155 bytes
 .../inf/st/openapi/ast/OperationObject.class  | Bin 40409 -> 40192 bytes
 .../inf/st/openapi/ast/Options.class          | Bin 7330 -> 7330 bytes
 .../inf/st/openapi/ast/ParameterObject.class  | Bin 22668 -> 22129 bytes
 .../tudresden/inf/st/openapi/ast/Patch.class  | Bin 7322 -> 7322 bytes
 .../inf/st/openapi/ast/PathsObject.class      | Bin 7761 -> 7761 bytes
 .../tudresden/inf/st/openapi/ast/Post.class   | Bin 12157 -> 12157 bytes
 .../de/tudresden/inf/st/openapi/ast/Put.class | Bin 7314 -> 7314 bytes
 .../tudresden/inf/st/openapi/ast/Trace.class  | Bin 7322 -> 7322 bytes
 .../java/test/openapi/OpenAPIMain_test.class  | Bin 6182 -> 6381 bytes
 .../classes/openapi.OpenAPIMain_test.html     | 150 ++-
 build/reports/tests/test/index.html           |  44 +-
 .../reports/tests/test/packages/openapi.html  |  32 +-
 .../main/1password.com-events-1.0.0.json      | 518 ---------
 .../main/6-dot-authentiqio.appspot.com-6.json | 998 ------------------
 .../abstractapi.com-geolocation-1.0.0.json    | 233 ----
 .../adyen.com-CheckoutUtilityService-1.json   | 117 --
 .../test/TEST-openapi.OpenAPIMain_test.xml    | 118 ++-
 build/test-results/test/binary/output.bin     | Bin 577 -> 60 bytes
 build/test-results/test/binary/output.bin.idx | Bin 36 -> 36 bytes
 build/test-results/test/binary/results.bin    | Bin 81 -> 10717 bytes
 .../1password.com-events-1.0.0-actual.json    |   0
 .../1password.com-events-1.0.0-expected.json  | 449 ++++++++
 ...-dot-authentiqio.appspot.com-6-actual.json | 910 ++++++++++++++++
 ...ot-authentiqio.appspot.com-6-expected.json | 910 ++++++++++++++++
 ...tractapi.com-geolocation-1.0.0-actual.json | 219 ++++
 ...actapi.com-geolocation-1.0.0-expected.json | 219 ++++
 ...n.com-CheckoutUtilityService-1-actual.json | 107 ++
 ...com-CheckoutUtilityService-1-expected.json | 107 ++
 gen-api-ex/petstore-v2-actual.json            |   0
 gen-api-ex/petstore-v2-expected.json          | 992 +++++++++++++++++
 .../tudresden/inf/st/openapi/ast/ASTNode.java |  14 +-
 .../tudresden/inf/st/openapi/ast/Delete.java  |   8 +-
 .../de/tudresden/inf/st/openapi/ast/Get.java  |   8 +-
 .../de/tudresden/inf/st/openapi/ast/Head.java |   8 +-
 .../inf/st/openapi/ast/OpenAPIObject.java     |  33 +-
 .../inf/st/openapi/ast/OperationOb.java       |   8 +-
 .../inf/st/openapi/ast/OperationObject.java   |  34 +-
 .../tudresden/inf/st/openapi/ast/Options.java |   8 +-
 .../inf/st/openapi/ast/ParameterObject.java   |  18 -
 .../tudresden/inf/st/openapi/ast/Patch.java   |   8 +-
 .../inf/st/openapi/ast/PathsObject.java       |   8 +-
 .../de/tudresden/inf/st/openapi/ast/Post.java |   8 +-
 .../de/tudresden/inf/st/openapi/ast/Put.java  |   8 +-
 .../inf/st/openapi/ast/SchemaTuple.java       |   4 +-
 .../tudresden/inf/st/openapi/ast/Trace.java   |   8 +-
 src/main/jastadd/InfSchema.jrag               |  13 +-
 .../resources/1password.com-events-1.0.0.json | 518 ---------
 .../6-dot-authentiqio.appspot.com-6.json      | 998 ------------------
 .../abstractapi.com-geolocation-1.0.0.json    | 233 ----
 .../adyen.com-CheckoutUtilityService-1.json   | 117 --
 src/test/java/openapi/OpenAPIMain_test.java   |   3 +
 67 files changed, 4285 insertions(+), 3903 deletions(-)
 delete mode 100644 build/resources/main/1password.com-events-1.0.0.json
 delete mode 100644 build/resources/main/6-dot-authentiqio.appspot.com-6.json
 delete mode 100644 build/resources/main/abstractapi.com-geolocation-1.0.0.json
 delete mode 100644 build/resources/main/adyen.com-CheckoutUtilityService-1.json
 create mode 100644 gen-api-ex/1password.com-events-1.0.0-actual.json
 create mode 100644 gen-api-ex/1password.com-events-1.0.0-expected.json
 create mode 100644 gen-api-ex/6-dot-authentiqio.appspot.com-6-actual.json
 create mode 100644 gen-api-ex/6-dot-authentiqio.appspot.com-6-expected.json
 create mode 100644 gen-api-ex/abstractapi.com-geolocation-1.0.0-actual.json
 create mode 100644 gen-api-ex/abstractapi.com-geolocation-1.0.0-expected.json
 create mode 100644 gen-api-ex/adyen.com-CheckoutUtilityService-1-actual.json
 create mode 100644 gen-api-ex/adyen.com-CheckoutUtilityService-1-expected.json
 create mode 100644 gen-api-ex/petstore-v2-actual.json
 create mode 100644 gen-api-ex/petstore-v2-expected.json
 delete mode 100644 src/main/resources/1password.com-events-1.0.0.json
 delete mode 100644 src/main/resources/6-dot-authentiqio.appspot.com-6.json
 delete mode 100644 src/main/resources/abstractapi.com-geolocation-1.0.0.json
 delete mode 100644 src/main/resources/adyen.com-CheckoutUtilityService-1.json

diff --git a/.gradle/6.8/executionHistory/executionHistory.bin b/.gradle/6.8/executionHistory/executionHistory.bin
index ffab960dc1f554d2837a9906cd3de687d5d022ad..a499544384f3abbdc40b9561ceefff3753b3016b 100644
GIT binary patch
delta 8295
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

delta 7991
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
Z+Qb9f#Dm(zgWJSI+QdV*iHBY80{~yVN{j#i

diff --git a/.gradle/6.8/executionHistory/executionHistory.lock b/.gradle/6.8/executionHistory/executionHistory.lock
index c0602a52accc5782ea61c5d64529ca8301ab2c00..59ea3d89546ac9cc38d3a8072cdddbd5f9c35126 100644
GIT binary patch
literal 17
VcmZQp+O{L7ZHdZl1~3q>0su3y1iAnK

literal 17
VcmZQp+O{L7ZHdZl1~3pi3;;9u1p)v7

diff --git a/.gradle/6.8/fileHashes/fileHashes.bin b/.gradle/6.8/fileHashes/fileHashes.bin
index 2b24e898e3dffcdc620416fb863461b44bb11339..f30fa9596b32845baa38429dc3994ec8e2dd15d5 100644
GIT binary patch
delta 5474
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

delta 5495
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

diff --git a/.gradle/6.8/fileHashes/fileHashes.lock b/.gradle/6.8/fileHashes/fileHashes.lock
index f7069599a742f78b42e0afd0e5d7412fb1f15cbc..21d91eace8079df466ca307e4dcde4cd7b8f22c1 100644
GIT binary patch
literal 17
WcmZP;t>XHyYn^sA0|+orm<|9fX#~Xp

literal 17
WcmZP;t>XHyYn^sA0|+oze*yq4ngt60

diff --git a/.gradle/6.8/fileHashes/resourceHashesCache.bin b/.gradle/6.8/fileHashes/resourceHashesCache.bin
index ad8cc79532afd419634d4332784c1b440103b024..81b32a3cf37a2a7cfd402c3d514832dea26b8ac5 100644
GIT binary patch
delta 3428
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

delta 837
zcmccFC(-<0e1nMuW9DR2iG!Q@Br_N{_eniqoZKekvH6+I3jWQ@bTU{rs~KKk+RSIN
zk&Q|5<@8s!EGpC0>{ukHhug7uY~OCj!ofKGx;;z9W;vUr21c*VjeBnLY%V%^o@sOB
znP7fK#_0i<m|Hh9-I*H1Xf=I?9;4y(hkA@2+a2{8Z?J7QG-G_hwB68>u|jD2L2t%W
zjE&RtbXZ%r&-7t@E6QlQy*-Ihl5P8r48|FZ+cUBlCHS|`sAN3AyuF~7(UO@>_9O$d
zxAXM99W0sKcQi1*?Pt{9zD$6rl4rZQEYkv}<?rR0c&4-KF#TecWMHT=oW4GV_2>5O
zx=hn07|o{pyD@og-{8h1!N2`MC{qB-c8@5gEKWwn?UmnImNIS^NM#BXW=z_iRKb+V
zxczY@QvmOD?{=mY+qpZK40yH&Phm=6-hO&IlNS@KBLfrb-|4m7EP>OXakEHF*W+RF
z*d9EKDO;M+e)|5cOdq$O*v6#6x1HlC(@j1m*`L$*>}J_Iy>kzX!S)$fn7ThRCQny6
z!F*%8$Vuix*6nl8F*h)7H@(2zz&rWZV~_2k_m~fHGe&My+`+fq;0N;>HpY<ccmFYK
zvTm1SVL2$pB>!=vqJjWODui)*zaAq8WAt`60~Slh?b8ieRxnQwH)ZkMzQdH|KhyT}
z7Azc$+uvKVaIjCVvys@Y?#SXOz@#v9qhbX=$bcnm+Z_^Fo=HNCaoPT~fhCh`dqWc_
z^#Ap+Nbpaaz&K(1zBw!oOw%JKG3rluozD`?Sh!JffgnixG-ilK)9n+suyC?$-?)Q?
zgJt@RD@-f4SMFuuV4p5<n<-)Y&m$}fT+>fHW|G+Md7j0bar%r4ES}qcUSQE;WaQka
z$RP|e3gnWX%yU>7Ew<nNz{1J6{ohBH8N$;&@|hC0^RcnMV4D7-km<nobDXS;SQrC0
zDjpC5={mszae&qKU8<}<*{5szGD>WJtjo$Fyq(#RRe^DOWh|q__FyMgc}AZ9P{6<-
z+qhA20$BeNw(SiGj1G+3SH-e!VPrJi9v{#8kbQeZI_n`3#+4ftGhl9;u!3nG=k~Sp
IS+B(d0K`8suK)l5

diff --git a/.gradle/6.8/javaCompile/classAnalysis.bin b/.gradle/6.8/javaCompile/classAnalysis.bin
index 9dadb4773c8bad3f1937fd82af4c06f892b88a84..a7e0e4e7e8ae9d7ee1345318ebc2f6c7f8bcefd6 100644
GIT binary patch
delta 2718
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
Cx1H7i

delta 870
zcmZ3sxqjWInhhorj0&4gB_dfjFO%)y*zBgZgLSi*P6yNGZF(~pH>Vi{F*6EIzqVdF
zcY5>&=@rdkChcJ+jO}42Oxwdun9pc23T#)7XTHd>ohO4?pKW_^9`j7b?JNb%9ZcJo
z6ftM9F;1KwI9q0GdrBp9drBosdrBp1drBqS_LNHYyQ+-8w>!;e=M>nUyq^6b%l4Qp
z?Dg#1KksI*;Mv}Mf_)Pk>r4iYn<uBc7w`v8-%!9WKHW`=kAHjMdG@;PjFQ_gv~gsz
zY!B?_C}7(Dv6mx&YkTAj4h@d&GZ%0OF|uYdNMx8!ZxWQ5x!qVu#)7e(b1_Fd=VH!w
z&c$5qoQt`)b1vrbTF2-xJtUC#;C9_0UI(V_ts%S?jMJ}%@_yKUH;k8qcl+ODUIEta
zs+qhe7^kyl^Ga+t&E{2L+@71mdkPdRR-#g8x66x3&0ySqw2-%<gHdq0+b>?j?ft)a
z3s|>`^F3hP&d<d6fqA<)8{Z1H?bmtuI@y^dS57aAkUhJ7y9nQ`cZ@9CgP8eOGH(}V
z=ikA%{jn%N7aL>Y_6}w_QO50CS>$FgZqJtEFIHld+kW4H|0m=24^I37Oxq<~`4@0+
zzYxIhz_DE;lK&$UlhniQ@0?}cFt#s`<!@geE6~0?R<M0}tWf*%SmE~Nu_EouV@2DS
z$BMNtj}>oU9xJhZd90-021f1e-*}}2IY6HH!MI&tLh1(d_RvyZ4W{kxa#9JL)1TJy
zPT20RA(g>6{b&Pk|MWO5DP=~<jfy{n+nMa7wlmpD`{yyrZ4X)_{gZKf@;d1UjLV}p
zNHb5KW|px1@@DA_md($sEEuQn-YH$NIn9QHaeMG?>F<o&llDq?a!d|$tJq$BOuCbi
zN$TN7MFY|8ad)JJjTj}i7xBqtGH(COFY`!Z`-9CgM?|+b+R1n@F-mMd<sf6pJN-ur
zzsL4uKbZr}+b?ABFJRjKIYcIl4W#s_==NI$GP^VwMW;`lDPy?(-b|SQ;q7i~WnM6C
zciSK{i+TIY0$Coh?MqI|IQB9MZhsag>&d*mUzG0!({}e*SqIkb>au(mjN7j#%kJRV
zzC1_Pk%dWe<wnH}vF)GQWHoCTxwgwN%Na6H&z9q_*nXEy?gi`iyF79nEZd7U_-`<8
WzbYcv#m>mMQBgpAyN0nG+cN;kJUKJ~

diff --git a/.gradle/6.8/javaCompile/jarAnalysis.bin b/.gradle/6.8/javaCompile/jarAnalysis.bin
index 6eb85caa5e133a1cfd73295bfdfbda678b798952..efcc0bb0aae97a68b965ff0ecccce97d66c979cc 100644
GIT binary patch
delta 4716
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
RLExzXa3qM~Qvonu0061W(;5H(

delta 173
zcmX^0t71`i<^~f9#`Mjm5(<o)TO}tjZ`PHa!8rM@oWx{a`Hz#u6jn^WrqI86s-glT
z&wnUjVBp-jQSpcPMuP;tW=D^9M-Rq!M-QfUM-S$9M-P^EM-SF^M-R4kM-TRPM-Ps6
zM-R?+M-Q%cM-T3HM-QHMM-Se1M-RSsM-TpXM-PE^M-RbvM-QQPM-Sn4M-P#9M-S0<
VM-Q=fM-TCKM-PeZjvkVUe*tVwJfHvo

diff --git a/.gradle/6.8/javaCompile/javaCompile.lock b/.gradle/6.8/javaCompile/javaCompile.lock
index c73fbee5fde729b4cbc8e25e5fdecf19ef72723c..b01e4c9381f02895d9d91919b447a4a3c89a7bf3 100644
GIT binary patch
literal 17
UcmZS9_jn)L_pnKx0Sx4M0WX*X`v3p{

literal 17
UcmZS9_jn)L_pnKx0Sx540WZ`9H~;_u

diff --git a/.gradle/6.8/javaCompile/taskHistory.bin b/.gradle/6.8/javaCompile/taskHistory.bin
index ec6a3ba5c645e73fb30bb4472d5e1064fd436005..5908545b1ffb6056bb1699e06e1fefed16243906 100644
GIT binary patch
delta 57
zcmdnfz_h1<X@hZ*fWaZnLzAvu>b7k5IG|@gw|esaG%o?iKe5}NN2muRpB1vZw1z`r
OGh?6~>*m|#i5vju#2CT=

delta 41
ycmdnfz_h1<X@hZ*z{544cpfus@(sN&EOAwI%FfOE(>fS8>jw$2Y`$Hd$N>O{&Jp|o

diff --git a/.gradle/buildOutputCleanup/buildOutputCleanup.lock b/.gradle/buildOutputCleanup/buildOutputCleanup.lock
index 4b009fbd78769ba1eb5c2cc8d77dbd72aad7f96e..5074092233a6914190b42f834c58c8e3b895b6a1 100644
GIT binary patch
literal 17
UcmZRMRkTpz>bjrL00zp203b&L5&!@I

literal 17
UcmZRMRkTpz>bjrL00v4@03a>``Tzg`

diff --git a/build/classes/java/main/de/tudresden/inf/st/openapi/ast/ASTNode.class b/build/classes/java/main/de/tudresden/inf/st/openapi/ast/ASTNode.class
index bbafc00bead5f748f5d05c59a62b9a77187a0ab8..48ae3e244a16d4f7eda03a61f45b99951758cdc3 100644
GIT binary patch
delta 14
VcmeCn?91G6gNM<0^G%+u>HskN1}gvn

delta 14
VcmeCn?91G6gNM;#^G%+u>Hskr1~32s

diff --git a/build/classes/java/main/de/tudresden/inf/st/openapi/ast/Delete.class b/build/classes/java/main/de/tudresden/inf/st/openapi/ast/Delete.class
index 355c6e77d3593438ec23a7bbe977a50ea709dfeb..2b80a03b34d05b692f88091e05647c8b8fe491b2 100644
GIT binary patch
delta 21
dcmbPdInQ##8g@qG&1=~mm>A7BzvJ8>1OQhz2a^B*

delta 21
dcmbPdInQ##8g@pL&1=~mm>A7AzvJ8>1OQh)2a^B*

diff --git a/build/classes/java/main/de/tudresden/inf/st/openapi/ast/Get.class b/build/classes/java/main/de/tudresden/inf/st/openapi/ast/Get.class
index 44705924060ce907bf00de024c29530b15025d67..2df7717cf9d22f19130a0b4841a419f61185dbb0 100644
GIT binary patch
delta 21
dcmcZ|dpmZ+H4aAO&DS{$Ss2YXbMjtN1OR682krm>

delta 21
dcmcZ|dpmZ+H4a9T&DS{$Ss2YWbMjtN1OR6F2krm>

diff --git a/build/classes/java/main/de/tudresden/inf/st/openapi/ast/Head.class b/build/classes/java/main/de/tudresden/inf/st/openapi/ast/Head.class
index 59b0b3a31b91e6cb92baaca2fa592ee046662124..6c1f42d202663b957867d3217122ba0d124a79b8 100644
GIT binary patch
delta 21
dcmbPcIn8pz3U)^0%`4d*m>A7Bzv5gY1OQcY2Xg=b

delta 21
dcmbPcIn8pz3U)@5%`4d*m>A7Azv5gY1OQcf2Xg=b

diff --git a/build/classes/java/main/de/tudresden/inf/st/openapi/ast/OpenAPIObject.class b/build/classes/java/main/de/tudresden/inf/st/openapi/ast/OpenAPIObject.class
index 6a6bd1034e9760e821e8f5b3ddae0809d65df9b5..571e0e1a103569df6736cdbfb429b22df713dfdd 100644
GIT binary patch
delta 1562
zcmew`o$14LrVS}(jAolt%}%N^9+<2jvrh0B0}G1>11HN`20oTs48jb@C%=nXta^cg
zli?zRD8nTNMTW}^x(rtsEE%pcxH4R02xPd<5XW$XA)Ddm<ZZEimXFZ%KW30%c)}pZ
z@RUJ?;TeNA!*d2Bh8GN$3@;fR7+x`WFuZ2)V|c?5#_)D?ZCo)U<EP0V<1HC~PS#Ga
zVg1j*!pJZ=Cm}$Tm4Stkje(Pqoq>;$gF%>)lR<)!Yx2beM^=6Y4n~2=AFG8YYb7>I
ziZie>N-%ISN-_vCN-@YY$}lK0$}%W1%1u6&n9Zm?*(j+_(UgIe(TstI(VRh?(Skva
z(UL)l(TYKx(V9V*(VW4U(SGv9q&bRS46Kaa3_OfJ4C0Kw46=-V42q2Y3~G!43_6TH
z3`UG0llzh<F-A>RObKF5Vqj%Vo?MX<#F#hvbV>|sIRhJG#bnuZ@yP`RB9p^Ytyt?B
zI2juzf2@|Aygt=}v3;_Cy~1RUG(E=t$>wPej58+xFO-}-G0lN-A(-_#O_y~g0~_P2
z$+GFmj2kC6rrR^_ntU+bnep&s!7};DDj7zMr@>~FXIOJyW)Nn)!XUwTb@J|vQqG$U
ztc<r9xEOCwHf)fb9F!Tr`Iv!~@d*Pr<I~BjGmBW?GH^1!n|vTod$Mnq7vp!ZeH*ik
z82^DyX3kb;WSd-&Ej!sGTb+@AazVBmt2hH2lf-1%bnVH{vMm_pCpV^xPBzKWV$=Y$
zN^<lV4Z(U3<rpzqf?Xw=Yt8A%Ak5^%Ai?B3d3T27<f7adPIm@YCJzQKCQq=-KI8^)
z1~RZR1u<|l1y5d`DLFYQFOoHyfs-j_@`1ck##FG&{PT?%bHJuA%vWbDnOu-9Ir&k(
zHe)TArCy-R+Qz`f)D8`6Kh{15PNsfvINvF-V4MbajcK7C<Gjf!g$|6%C;u;$n!LZz
zo^iwE|AlU>I~drQc7lCYT4cd^0PLT`MOus}!7S!tJ;qC5y90}j7;k~iT2gGy`G`T7
z=`n)@(-W}I7)xR}UofyTy=35GdIk1beMtc4Ck9rg&kWp5U%)>5SQ5$lhk=vnFF4$*
zO1&7_z`nazYQ)GpS+LBFQ55W-!ZK|}IWTKmnJ%ju0~@nC*mc6?7L0meHzk&9F`9!}
z3(NHw9l)-8Uv9+c0d}2Jg*9gYgD`U-g9LLB*md(OVmQMXSee5axR@iru9K|{;7nj(
zWlm(^W=;aTuD>#pHH(3hIUDRci7GF~60qxPs*D(`!8V+$QfF)iyNkbCo3RJX3aQp(
zoyx$@JZ*A&bt>yz22SRAlRs7mGA;$XB)LY9aqZ+uHI9tiChONqO@3G7z_@?1eyuC(
zaRyfA6O$`z-54)VK2RILdYgfr`Oaj~x@5-3V1M=1X)(S5v(DA&F@6QxFH>*C_;<2@
zeKaR4gD?vlg9HmZ*mq~@V>r1PSXp=&xL9~68#ZKeiZZaWh%s=ph=YB$ry+_}o`H)+
zVX|PE@MOKlWJb-&`n8giS2r3l8h}my+o;ZH0rrnwlQyFxnAP0m#OuSr&f?1;#Nx*w
z%@Q#AQj-U3I0G9?#ANyAaLxpVCkzY>3JlDX9a`ll&uc!fn$Ez%lF7i&lFcB^lEa|Q
zlE+}olFyLFQoxYMQphlmrI=v>OZntUElU|2CiAvyPfl*VuiDPQ!P3dV&(h5x&C<i5
z%F@T6%hJyf%`%Z8nPn0~AInsR2`n=wr?)L-Tr`=ty@YYu<fe8@##NK|v@g)z#=y$5
zok5mm2ZIvJE(T4O-3-Podl@WP_AxlH>}T*|IlvIXa+o2W<rqT>%kjyb9Zxh*Gcd87
vVc=ys%OJ{fo<WM`0)rgOMFusNOAN*=ml<MNt}rCCTxCdOxxRT?XA~0vgPz|6

delta 1562
zcmew`o$14LrVS}(jHa7Y%}%N^?w_n5vrh0R0}G2g11HNG20oUX48jb@CcleWta_e-
zli>n`D8oetMTScZx(t^YEE%paxH4R22xPd%5XW$xA)DdG<ZZEimJiYNKVpzzc+4Qj
z@Pt8y;VFYQ!!rgWhUW~H3@;cQ7+x}XFuY>$V|dLF#_(oyZCo)U<HyM#<1HC~Ox8}Y
zVg1Lz!tj4`PC|ev3j+%yD+4DZ8v`FBJA*JI2ZID7=j4kCj;wqP9E|*vKUND*)=F%a
z6k}jz6ldUKlwc5Klw^=+lx9$5lwnX}l%0GmF`H3qvQbi<q6q^lqbUOqqZxxZqd9{d
zqXmN!qa}knqZNZLqZxxSquu0-NploE8CV&;7<d@H8N?ZV7-SiJ859})7}Oa38FU!E
z8H^Z%C-)^!VvL-um=eUA$iT{&G`S)rh%tBa>694OG6pur^2xI4;*$#sL?(x)TCvtK
za5C0U{#Y$Jd3~w{W7}l^dWFdxX?l!(lg-l{7^hGEUnn_wVwwZv0x;`!nl9@K1~$f(
zlV#JB88=LBOt)v;Ir(6^GvlGjf@SiPRWghiPl3%S&#>ma#30OgnL&c_%H-V{rJOey
zSQ&3Ja53JRY}g<<IVdxL^AQ6p<6{PH#wU|kXBM%(Vc=wZJNZDK_GI5IFUD_R`!;47
zG5!Uc%$%*x$U3<oTXwQXwmKu<<brHBRxt)PCh^I#>DrT@Wm_=HO>RsVoote$#i$Nu
zmE`C#8i4g4$}wWJ0J};w*P7FTL72&rL4wI?^6m`D$wj#_oNf%POzsR^OdepDeaH>q
z3}9eo3S{7B3Yxq+Q*v@rUL<Q211D4T<O6x7j45E3`R5xkW`j*%n6J)QJh>oSa`K~m
zZN?ffOT9pswUvR5sSO&|eyqI=oJ@V-aK2Mu!8jG{8q-2O#<`PI3LO}iP5xgfHF<xb
zJ>&Yx{|nt%w==LY?Ew3%w8(;SKiEHqi?kR|fLYANdW;vrb_W(4G2R55wWQdZ^C5#U
z(<256rpI8PF_y$|K4)NMdcnZO^b+i|`jP<7j|{9#pBT8AK7)Psu_Ti9Hv=crA8@!=
zm3lF<f_-<d)QFL1vS67TqX^hPg=N}|vS8M>GF?_x1~z6ju<L}&Ef{sdZb~fIVl)G@
z7MANV+Jjy9zTAk>9qc-%3TsY(24Us^1_|asu<Pbm#Bhc(urh}+a50C2T_;-^z!}fL
z%ACN!&725!U4LaHYbFCHa~9Zj5>;M|#bDRfR2eZ=fo(WfrOwy{b{BuOHe)xK6;iFo
zI)#CqdFtf$>QvS_44lk!Cx5ICWLyGvNpg)I<C@8nY8)B2PS&rLn*6TDfpOnt{aRPn
zV+^d!$0t|Tx-njwe4sXf^%es=^X<u^b;*p6!2as1(_(xLW}U0kWBdZPU#8xO@y}%c
z`e;rT24NOf1_>56u<y>)$8d5nu(EJ7aIx@AHf+e`6k%Xx5oO?J5d-^dPeT-|90M1N
z{A9s0;mLZ9$&4D4^=l<3uWmGA)CZgVw^5zZ9PA&vCT&IsFsr%AiPxKfoyCVih{cyd
zn#F(er6v#7Fa|c3@X7Mc;hgadPZ$^&6d0H%JG9DAp4WU{HI0FTC4+&VC5u6tC7VH;
zC6~dNC66JEC7&UWrGQ}`OA*5Yma@r{T9z`_Pv&jco}AozU$u>agQbIkpQVdInx&gT
zm8F+Km!*#(nq>k*GRs7UK9(sA6If<UPH$VvxNtIWdkN#x$xZE+j4LPaX<wkbm4TII
z8-py%b_OMuoeY{RyBLgF_Apqm>}7CZ*~j3;vY#P><q$(W%Tb0DmSdAUJDzBsVqju9
v&A`iYhC!6&9D@|gc?LO_3k+&37a5FME-}QiTxLjSxx$dfa&7ap&L}1T%JSa-

diff --git a/build/classes/java/main/de/tudresden/inf/st/openapi/ast/OperationOb.class b/build/classes/java/main/de/tudresden/inf/st/openapi/ast/OperationOb.class
index c4e68e17cc1c8b5c83dedd72fe59f5e8eade17ba..0354176d216a6f682343d291ca9c3d1235c2adee 100644
GIT binary patch
delta 21
dcmcaCaam%+W@bj?&0Cl^GcuZQ&R~7b1^`_<2iO1r

delta 21
dcmcaCaam%+W@bi{&0Cl^GcuZO&R~7b1^`_`2iO1r

diff --git a/build/classes/java/main/de/tudresden/inf/st/openapi/ast/OperationObject.class b/build/classes/java/main/de/tudresden/inf/st/openapi/ast/OperationObject.class
index 62442c106146b74228612030479cf8dabce6c304..65701bdb3c6e361e6703386d5801c88a6f993c5f 100644
GIT binary patch
delta 1510
zcmcb)o2g+J6W6JKyY?|KFqkl(-pFOnRPW4mjEm_Y({WY?2;kyoI>B^Oh=GCWybuE;
z(`6wBCZ_8ku^a46H@O%ZnT~NWxHH`X>AB6taE&RLo#_rIgCo;jcBXq=3>{3tTnvs(
z_t}{qa4~d4I1fR}9)XC*AmRx~!BdcyXIxCr>zQ7#GreSIdd1H48f1Df2h$r6{g#W#
zndu!D(|e{5Tny8gK7urT0ui6N7}}V=fLMn?tgj#=zky8q4kCVlh@T+h7l`-`QuhZ$
z`~|t~ABgx5BJOiBI5IPEF?1L*GjK37f_O|I2j2$~2SCJOc4lUfFbjxa1rcoQ%<NnY
zj+3*Q^&{Dtg}4|FGYfMw=`xFOGB`4evNMZuF&qbptY8*rXO`e#mgHhM#q^PzX$7+g
zh>!v)ljdNS0nxG?%yL`|*O=u&1}lIFMRsN-c4p<tKbSwUX(y(nxMWTaVAa^H$y&t1
zqQcIsx_LgQF%yd#Bg5Ir7kw2bzh&jx#G}Q-sIggFf}f31bF#JED;6zA2FuBeTpE-4
z-MA+|aAn<`C?C(nsJ;21;u&Ff9d>42c4ocFQ%wE1^%)shyfgDs7#S?!>J`j*84V`u
zneFE{W@KOoyCAuQkwHOY@&-#WiPDnH9DU!!0&7MF&Z5-fg8aPV)M7>kp~(f_B9k4>
zy(XVA4`F9#He_U&qcQocdGO?|7V{ZRHiud+XJj<r{MSm3Rfvaq660hZ=E=-c*qNvD
zFi&HiKH0!Q%xs1LlRrNP!*l`WnLNxL%(DcTXY;c%&k<mr%fmd6dA<Pi0)AHJg#yfr
zK-|SV%uAS;GBSuyo)9k1%fq~kc{vYrFJlrTgZkvgNOcY#<`qmY85y)EU*yqd<zZgQ
zylV1)2S@(ZjD_q>FL@Z#nfw_Uw4x^;4AY)m<rvMkhIuUy^E&4B?93Z@m^V&-?C2`7
zi7|<Xc{B4C9_Fpg6Brp7co-KkE@osfoa`u~GC5y?cXFXqx5_pi=IzWoco^<8JYZxH
z%t|av)CUKUM`CeCaB2w;^G@a+lNFrHxOah6Jp`!=o4nB3kOLa58k=7`J2JBDW@NAh
zIU5{bbrRg0b6qDe3JQSD%Sp^j*Y{7#N=+`={M+p>|77m)8s<IBdnb2=$FlBYWRTUE
z+#fDEnKdGbbw4A6DVVppHKLA5-~bQvLFOYo%tx7z@i4DpK0aAE+LZC+X3uCxMwU~I
z462hSM2k<(i{{(BIp(mHGCu<g0~-SaLxQ%i))t2I#~Jvwb~7B0WZ%wkVk^UWkdV&g
z4b#Qyb#^kGWnu{5&7csuok7u0*NO!!x0B%<6GONp%LXe}WIpSD1||k`1}BC91_p)z
zh9EG_!tjiNfkBUfn}LB<kAaC*pFxz>fI*4XkU@vln8BRYl);|WoWY6JiouuFoFRbK
ziXoQOn&CME1A`VrC<}u<gCN6ChIb6iAlEXAF#G@)SP4w_4DT2i8JHO2n6#N37?>FT
zFfcHPF)%^YGdV)kGubmaF)%VRGB7akGBE#P5M^g_7E7MIW5z>6cLpw24+ddYPX-xQ
zF9uasZw3oi9|kv8Uxolye})*=K!ya?5QZGqK!$wQ5QbXT(8;G}YRiLc1(hIWOxjF3
z3@l(<c^E+EH-PM#EHW#DF>><7G?B>@XQ?vAZr(m?KU1<gqrDm@V+XT3W2YJ?;}m9f
z#&|VO#-+^ajLXzGne>^}nGDo8nT(j#nT#DInar5gnatHVnGZ3aU_Q(s$#jZ=fkA<R
endvkGGt(KSvrOl}tP4yRnJ$4@SD3CcT>}7sY;qU?

delta 1667
zcmZqJ#dLEw6W6JKyY?|KFqkl(*~n$iRDX==I2Y4FrW33T5WvOFbdu?m5Ca3#1tA7T
zrYk}WOiVXGVmH~DZgDX*G9Bk)aA&#=(sPH4;TlsgJJVfG21llQ>`eE$7&@4OxfmRo
z9<Vb#<YMTCa2|n_Jq8g^K*Up!f@dHt&$*ah)HA(gXL`lX^qQUN4aoFh4yLyt`W+Y3
zF{bxiOdps&axqL}`UKMS8AN>HVrXOf3Su1wvA%(f{0=hh2Z;CyB7T90-yq@-NZnr$
z@eky-|6B|m%nTsb11<(fW=1ZC4jpDj4rV40j~V3P2O#1Ah&as7%mNZ-1rcl@f}MSG
z0keJ_h$+O*EX>7lm|29INtaoalfjW$jGbAWi{Us(WCgPXJF_GQvlJJ@DW*@{Oe>g0
zL4-6&nG6TBEQprlV3y}%xW=piGEEUgD6umuvootq{=xi7(k4B%#3eJiBtAH`BtAGf
zBQ-ZMq_iL>HGZ-qtJ-D>)*==bRd!~z&3&B4OswjR3}-bafAo=`e20~5^LuVB9!Aa0
zQWE@Zj9Qbm<X*98Gcs6CPUKOXd?Av3vx9s-6Qj=N4T@)k*>%~O_1Ky9CpVk=aT_o)
zuy|+Yr7$vBz|>B5kmsJvZ^p}LI9b+gzl;eZ13T1Nj12l3K3R!niTb4_nK}Bwsgva_
zB^1GI-^2oIMh3PLkZX$>890kliwpAeic^aj8QdqI=aic4V4=@vhpKs@j*0-nkJfh9
zj10k(J1v6+85wS&*|Shbg$G&b<POW|$vPG@7)>`HwOG!`Xtp`mN{+Rjop}-u^JK=!
zJj_#=r?N9o<6)l8JcE%zz$rh!q`0IgvA{RABqKkin4gV#rT~*aKL^8f0p?je%pJ_L
z1(@gXvog;WV4larJfC@i0P{kAR^~+l%!@(XB|OYanU^s#h=V<!lbDyTA6!zDnV0TV
znwgW5TExS=oOuNgGg~iX5+j59<d2-{96Zb`nO-q6XirWQ(dOV`Ud6nckwJMfBfs+G
zNe<HdYZwdJnO^ZQrZf37GH69ZgPvpZQ-@f-wan{ynAbCJU}xUQ!@Oy7fTJt-X2v8Q
z<}J)yd6>6NUf_6=Z95P14(6Sc^PQxbcQNmr-0M`vy_<O_55q%-2aF8qllhztC7@BJ
zfsv99I?HcPbyj9%*~7?S3vwzbzBli4na#L4$L%-2pa8;;{z+M>$t9Ch!|K@gGVfz#
zkk*)N5Gga6E!>uMKO=*z#^i_Ll9Lm|lUNThGMIvSn;(YPF$o;xVLrrsl!y5k^Kl;L
zwah0b=SP_`p4z-L%8`-r^ycT$udS3^7+4tC85kHUcQYK0WZlki#7|dyC&N)DhHzaS
z2tE1kH1T@foeU?L7-ll??q)a@DRf~w!<qeBTNuvk?qoR2#1OulK_PNGgQ69SB#RX*
zRQwzhL%1aC1}ipXKHGi<CI&x-XogG%28K+AY%tBj@Qi_h!Hj{Ifq_+zfs<9AL6Fse
zL6X&wL5J0d!IIUO!MUE*l);bHoFSamk|CPah9QmBk|C4ThM|nrmf<<5EM;J22xkyt
z_{s2&fd%9nMiGV|;NrBB$)4c>10zU`$${Y=0}}%$LjjXElMVwj!yg6)1_cIYh)yO)
zh)yPZCMTGBCT9jFMvz`^UIykr3_9#gx?-u5?@xbd=*hsv>ct?;>dhd->cgPQ>dRok
z>c`;5>dz3s8psgC8qAQu8pe>r8qAQ-8pcq|8b0~s3~fe-$+9!0nH`v%CtJ_VV2qxu
zm?biK$4phm_|5lb?q^EYV6<1`Wb9zpVC+=mWSqjR!5FW`$+(nRgK?P}CzC$229tpr
zCzBDg29vRaB$FAl29voOC-Y(ElgvjLB$-Y_e8Y5xftl$n(>bQ|VAe&ZOH7x+tgB4d
Hn63i=*NU#`

diff --git a/build/classes/java/main/de/tudresden/inf/st/openapi/ast/Options.class b/build/classes/java/main/de/tudresden/inf/st/openapi/ast/Options.class
index b475b99ce754c49b4fcc8b4eef0f6d2b9328a469..12e8b784823ef3119be920dec98a205820fb54ed 100644
GIT binary patch
delta 21
dcmZ2vxyW+EI(A0m&Fk46m>A7Bf8g9C1OQkW2crN0

delta 21
dcmZ2vxyW+EI(9~r&Fk46m>A7Af8g9C1OQkd2crN0

diff --git a/build/classes/java/main/de/tudresden/inf/st/openapi/ast/ParameterObject.class b/build/classes/java/main/de/tudresden/inf/st/openapi/ast/ParameterObject.class
index c735aa730843498b274618633dd32d5ee62b9b6b..846fd0a4863b1ee61eba7d99967934c62adf2953 100644
GIT binary patch
literal 22129
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

literal 22668
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

diff --git a/build/classes/java/main/de/tudresden/inf/st/openapi/ast/Patch.class b/build/classes/java/main/de/tudresden/inf/st/openapi/ast/Patch.class
index f680f1ebd2ad03a4c330e1cf1f4768952676a282..b6566150b3f9f4122597a541cbbfc43447f63f37 100644
GIT binary patch
delta 21
dcmbPbIm>dxDt1QW&8yiRm>A7Bzu{ab1OQf52ZI0r

delta 21
dcmbPbIm>dxDt1Pb&8yiRm>A7Azu{ab1OQfC2ZI0r

diff --git a/build/classes/java/main/de/tudresden/inf/st/openapi/ast/PathsObject.class b/build/classes/java/main/de/tudresden/inf/st/openapi/ast/PathsObject.class
index 6fe7326c466402b960d4f3232dbd090dce48f0c0..b8d3036127d5729fc7a39ee97ae6fcfc7be49291 100644
GIT binary patch
delta 21
dcmca;bJ1qQUJgcs&HFh1GBO%(-orIj7yxGJ2#o*$

delta 21
dcmca;bJ1qQUJgdX&HFh1GBO%%-orIj7yxGQ2#o*$

diff --git a/build/classes/java/main/de/tudresden/inf/st/openapi/ast/Post.class b/build/classes/java/main/de/tudresden/inf/st/openapi/ast/Post.class
index d33e7eb467fc48f8c041aba27310294d0f6c3826..73bafd4599843bd81823d2b41379565eaf0aab8b 100644
GIT binary patch
delta 21
dcmewx_cw0C0}e*x%?~-uSs2YXOY){D0RU|g2k`&^

delta 21
dcmewx_cw0C0}e)$%?~-uSs2YWOY){D0RU|n2k`&^

diff --git a/build/classes/java/main/de/tudresden/inf/st/openapi/ast/Put.class b/build/classes/java/main/de/tudresden/inf/st/openapi/ast/Put.class
index ba73674a9d8eb25f101a2e25cfb758d6a511b28b..a1bead1590236f3dbf6add4b73ccaec962e26dc0 100644
GIT binary patch
delta 21
dcmbPaImvRvGImDe&CA&xm>A7Bzu;UY1OQZ#2V(#L

delta 21
dcmbPaImvRvGImCj&CA&xm>A7Azu;UY1OQZ+2V(#L

diff --git a/build/classes/java/main/de/tudresden/inf/st/openapi/ast/Trace.class b/build/classes/java/main/de/tudresden/inf/st/openapi/ast/Trace.class
index df82d8488e72e2cef1dac07efc3c6655f95a8233..07b1212b1c59fa2804e6d55a355a37f2fa0af8b9 100644
GIT binary patch
delta 21
dcmbPbIm>dxDt1QW&8yiRm>A7Bzu{ab1OQf52ZI0r

delta 21
dcmbPbIm>dxDt1Pb&8yiRm>A7Azu{ab1OQfC2ZI0r

diff --git a/build/classes/java/test/openapi/OpenAPIMain_test.class b/build/classes/java/test/openapi/OpenAPIMain_test.class
index 8a64de368fe8743d13ff8370cebdac1ea3a4ac8a..862b12ddb39f7be5a4c1e6d041acc9b6a5a27845 100644
GIT binary patch
delta 2216
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

delta 2130
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

diff --git a/build/reports/tests/test/classes/openapi.OpenAPIMain_test.html b/build/reports/tests/test/classes/openapi.OpenAPIMain_test.html
index 709702c1..954849ea 100644
--- a/build/reports/tests/test/classes/openapi.OpenAPIMain_test.html
+++ b/build/reports/tests/test/classes/openapi.OpenAPIMain_test.html
@@ -29,7 +29,7 @@
 </td>
 <td>
 <div class="infoBox" id="failures">
-<div class="counter">0</div>
+<div class="counter">1</div>
 <p>failures</p>
 </div>
 </td>
@@ -41,7 +41,7 @@
 </td>
 <td>
 <div class="infoBox" id="duration">
-<div class="counter">0.633s</div>
+<div class="counter">0.401s</div>
 <p>duration</p>
 </div>
 </td>
@@ -50,8 +50,8 @@
 </div>
 </td>
 <td>
-<div class="infoBox success" id="successRate">
-<div class="percent">100%</div>
+<div class="infoBox failures" id="successRate">
+<div class="percent">0%</div>
 <p>successful</p>
 </div>
 </td>
@@ -61,16 +61,127 @@
 <div id="tabs">
 <ul class="tabLinks">
 <li>
-<a href="#tab0">Tests</a>
+<a href="#tab0">Failed tests</a>
 </li>
 <li>
-<a href="#tab1">Standard output</a>
+<a href="#tab1">Tests</a>
 </li>
 <li>
-<a href="#tab2">Standard error</a>
+<a href="#tab2">Standard output</a>
 </li>
 </ul>
 <div id="tab0" class="tab">
+<h2>Failed tests</h2>
+<div class="test">
+<a name="test()"></a>
+<h3 class="failures">test()</h3>
+<span class="code">
+<pre>java.lang.NullPointerException
+	at de.tudresden.inf.st.openapi.ast.ASTNode.collect_contributors_OpenAPIObject_schemaTuples(ASTNode.java:494)
+	at de.tudresden.inf.st.openapi.ast.ASTNode.collect_contributors_OpenAPIObject_schemaTuples(ASTNode.java:494)
+	at de.tudresden.inf.st.openapi.ast.ASTNode.collect_contributors_OpenAPIObject_schemaTuples(ASTNode.java:494)
+	at de.tudresden.inf.st.openapi.ast.ASTNode.collect_contributors_OpenAPIObject_schemaTuples(ASTNode.java:494)
+	at de.tudresden.inf.st.openapi.ast.ASTNode.collect_contributors_OpenAPIObject_schemaTuples(ASTNode.java:494)
+	at de.tudresden.inf.st.openapi.ast.ASTNode.collect_contributors_OpenAPIObject_schemaTuples(ASTNode.java:494)
+	at de.tudresden.inf.st.openapi.ast.OpenAPIObject.survey_OpenAPIObject_schemaTuples(OpenAPIObject.java:1102)
+	at de.tudresden.inf.st.openapi.ast.OpenAPIObject.schemaTuples_compute(OpenAPIObject.java:1232)
+	at de.tudresden.inf.st.openapi.ast.OpenAPIObject.schemaTuples(OpenAPIObject.java:1214)
+	at openapi.OpenAPIMain_test.test(OpenAPIMain_test.java:72)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:688)
+	at org.junit.jupiter.engine.execution.MethodInvocation.proceed(MethodInvocation.java:60)
+	at org.junit.jupiter.engine.execution.InvocationInterceptorChain$ValidatingInvocation.proceed(InvocationInterceptorChain.java:131)
+	at org.junit.jupiter.engine.extension.TimeoutExtension.intercept(TimeoutExtension.java:149)
+	at org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestableMethod(TimeoutExtension.java:140)
+	at org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestMethod(TimeoutExtension.java:84)
+	at org.junit.jupiter.engine.execution.ExecutableInvoker$ReflectiveInterceptorCall.lambda$ofVoidMethod$0(ExecutableInvoker.java:115)
+	at org.junit.jupiter.engine.execution.ExecutableInvoker.lambda$invoke$0(ExecutableInvoker.java:105)
+	at org.junit.jupiter.engine.execution.InvocationInterceptorChain$InterceptedInvocation.proceed(InvocationInterceptorChain.java:106)
+	at org.junit.jupiter.engine.execution.InvocationInterceptorChain.proceed(InvocationInterceptorChain.java:64)
+	at org.junit.jupiter.engine.execution.InvocationInterceptorChain.chainAndInvoke(InvocationInterceptorChain.java:45)
+	at org.junit.jupiter.engine.execution.InvocationInterceptorChain.invoke(InvocationInterceptorChain.java:37)
+	at org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(ExecutableInvoker.java:104)
+	at org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(ExecutableInvoker.java:98)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeTestMethod$6(TestMethodTestDescriptor.java:210)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeTestMethod(TestMethodTestDescriptor.java:206)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:131)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:65)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:139)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:129)
+	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:127)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:126)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:84)
+	at java.base/java.util.ArrayList.forEach(ArrayList.java:1541)
+	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:143)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:129)
+	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:127)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:126)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:84)
+	at java.base/java.util.ArrayList.forEach(ArrayList.java:1541)
+	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:143)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:129)
+	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:127)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:126)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:84)
+	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(SameThreadHierarchicalTestExecutorService.java:32)
+	at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:57)
+	at org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:51)
+	at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:108)
+	at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:88)
+	at org.junit.platform.launcher.core.EngineExecutionOrchestrator.lambda$execute$0(EngineExecutionOrchestrator.java:54)
+	at org.junit.platform.launcher.core.EngineExecutionOrchestrator.withInterceptedStreams(EngineExecutionOrchestrator.java:67)
+	at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:52)
+	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:96)
+	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:75)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.processAllTestClasses(JUnitPlatformTestClassProcessor.java:99)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.access$000(JUnitPlatformTestClassProcessor.java:79)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor.stop(JUnitPlatformTestClassProcessor.java:75)
+	at org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.stop(SuiteTestClassProcessor.java:61)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:36)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
+	at org.gradle.internal.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:33)
+	at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:94)
+	at com.sun.proxy.$Proxy2.stop(Unknown Source)
+	at org.gradle.api.internal.tasks.testing.worker.TestWorker.stop(TestWorker.java:133)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:36)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
+	at org.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection$DispatchWrapper.dispatch(MessageHubBackedObjectConnection.java:182)
+	at org.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection$DispatchWrapper.dispatch(MessageHubBackedObjectConnection.java:164)
+	at org.gradle.internal.remote.internal.hub.MessageHub$Handler.run(MessageHub.java:414)
+	at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:64)
+	at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:48)
+	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
+	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
+	at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:56)
+	at java.base/java.lang.Thread.run(Thread.java:829)
+</pre>
+</span>
+</div>
+</div>
+<div id="tab1" class="tab">
 <h2>Tests</h2>
 <table>
 <thead>
@@ -81,33 +192,20 @@
 </tr>
 </thead>
 <tr>
-<td class="success">test()</td>
-<td class="success">0.633s</td>
-<td class="success">passed</td>
+<td class="failures">test()</td>
+<td class="failures">0.401s</td>
+<td class="failures">failed</td>
 </tr>
 </table>
 </div>
-<div id="tab1" class="tab">
+<div id="tab2" class="tab">
 <h2>Standard output</h2>
 <span class="code">
-<pre>5
-Loading expression DSL file '1password.com-events-1.0.0.json'.
-Loading expression DSL file '6-dot-authentiqio.appspot.com-6.json'.
-Loading expression DSL file 'abstractapi.com-geolocation-1.0.0.json'.
-Loading expression DSL file 'adyen.com-CheckoutUtilityService-1.json'.
+<pre>1
 Loading expression DSL file 'petstore-v2.yaml'.
 </pre>
 </span>
 </div>
-<div id="tab2" class="tab">
-<h2>Standard error</h2>
-<span class="code">
-<pre>SLF4J: Failed to load class &quot;org.slf4j.impl.StaticLoggerBinder&quot;.
-SLF4J: Defaulting to no-operation (NOP) logger implementation
-SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
-</pre>
-</span>
-</div>
 </div>
 <div id="footer">
 <p>
@@ -116,7 +214,7 @@ SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further detail
 <input id="line-wrapping-toggle" type="checkbox" autocomplete="off"/>
 </label>
 </div>Generated by 
-<a href="http://www.gradle.org">Gradle 6.8</a> at 2021. 10. 9. 오전 8:15:11</p>
+<a href="http://www.gradle.org">Gradle 6.8</a> at 2021. 10. 9. 오후 10:17:33</p>
 </div>
 </div>
 </body>
diff --git a/build/reports/tests/test/index.html b/build/reports/tests/test/index.html
index 3f9de5cc..38a8e8ca 100644
--- a/build/reports/tests/test/index.html
+++ b/build/reports/tests/test/index.html
@@ -26,7 +26,7 @@
 </td>
 <td>
 <div class="infoBox" id="failures">
-<div class="counter">0</div>
+<div class="counter">1</div>
 <p>failures</p>
 </div>
 </td>
@@ -38,7 +38,7 @@
 </td>
 <td>
 <div class="infoBox" id="duration">
-<div class="counter">0.633s</div>
+<div class="counter">0.401s</div>
 <p>duration</p>
 </div>
 </td>
@@ -47,8 +47,8 @@
 </div>
 </td>
 <td>
-<div class="infoBox success" id="successRate">
-<div class="percent">100%</div>
+<div class="infoBox failures" id="successRate">
+<div class="percent">0%</div>
 <p>successful</p>
 </div>
 </td>
@@ -58,13 +58,25 @@
 <div id="tabs">
 <ul class="tabLinks">
 <li>
-<a href="#tab0">Packages</a>
+<a href="#tab0">Failed tests</a>
+</li>
+<li>
+<a href="#tab1">Packages</a>
 </li>
 <li>
-<a href="#tab1">Classes</a>
+<a href="#tab2">Classes</a>
 </li>
 </ul>
 <div id="tab0" class="tab">
+<h2>Failed tests</h2>
+<ul class="linkList">
+<li>
+<a href="classes/openapi.OpenAPIMain_test.html">OpenAPIMain_test</a>.
+<a href="classes/openapi.OpenAPIMain_test.html#test()">test()</a>
+</li>
+</ul>
+</div>
+<div id="tab1" class="tab">
 <h2>Packages</h2>
 <table>
 <thead>
@@ -79,19 +91,19 @@
 </thead>
 <tbody>
 <tr>
-<td class="success">
+<td class="failures">
 <a href="packages/openapi.html">openapi</a>
 </td>
 <td>1</td>
+<td>1</td>
 <td>0</td>
-<td>0</td>
-<td>0.633s</td>
-<td class="success">100%</td>
+<td>0.401s</td>
+<td class="failures">0%</td>
 </tr>
 </tbody>
 </table>
 </div>
-<div id="tab1" class="tab">
+<div id="tab2" class="tab">
 <h2>Classes</h2>
 <table>
 <thead>
@@ -106,14 +118,14 @@
 </thead>
 <tbody>
 <tr>
-<td class="success">
+<td class="failures">
 <a href="classes/openapi.OpenAPIMain_test.html">openapi.OpenAPIMain_test</a>
 </td>
 <td>1</td>
+<td>1</td>
 <td>0</td>
-<td>0</td>
-<td>0.633s</td>
-<td class="success">100%</td>
+<td>0.401s</td>
+<td class="failures">0%</td>
 </tr>
 </tbody>
 </table>
@@ -126,7 +138,7 @@
 <input id="line-wrapping-toggle" type="checkbox" autocomplete="off"/>
 </label>
 </div>Generated by 
-<a href="http://www.gradle.org">Gradle 6.8</a> at 2021. 10. 9. 오전 8:15:11</p>
+<a href="http://www.gradle.org">Gradle 6.8</a> at 2021. 10. 9. 오후 10:17:33</p>
 </div>
 </div>
 </body>
diff --git a/build/reports/tests/test/packages/openapi.html b/build/reports/tests/test/packages/openapi.html
index b4f04ceb..bb6322e9 100644
--- a/build/reports/tests/test/packages/openapi.html
+++ b/build/reports/tests/test/packages/openapi.html
@@ -28,7 +28,7 @@
 </td>
 <td>
 <div class="infoBox" id="failures">
-<div class="counter">0</div>
+<div class="counter">1</div>
 <p>failures</p>
 </div>
 </td>
@@ -40,7 +40,7 @@
 </td>
 <td>
 <div class="infoBox" id="duration">
-<div class="counter">0.633s</div>
+<div class="counter">0.401s</div>
 <p>duration</p>
 </div>
 </td>
@@ -49,8 +49,8 @@
 </div>
 </td>
 <td>
-<div class="infoBox success" id="successRate">
-<div class="percent">100%</div>
+<div class="infoBox failures" id="successRate">
+<div class="percent">0%</div>
 <p>successful</p>
 </div>
 </td>
@@ -60,10 +60,22 @@
 <div id="tabs">
 <ul class="tabLinks">
 <li>
-<a href="#tab0">Classes</a>
+<a href="#tab0">Failed tests</a>
+</li>
+<li>
+<a href="#tab1">Classes</a>
 </li>
 </ul>
 <div id="tab0" class="tab">
+<h2>Failed tests</h2>
+<ul class="linkList">
+<li>
+<a href="../classes/openapi.OpenAPIMain_test.html">OpenAPIMain_test</a>.
+<a href="../classes/openapi.OpenAPIMain_test.html#test()">test()</a>
+</li>
+</ul>
+</div>
+<div id="tab1" class="tab">
 <h2>Classes</h2>
 <table>
 <thread>
@@ -77,14 +89,14 @@
 </tr>
 </thread>
 <tr>
-<td class="success">
+<td class="failures">
 <a href="../classes/openapi.OpenAPIMain_test.html">OpenAPIMain_test</a>
 </td>
 <td>1</td>
+<td>1</td>
 <td>0</td>
-<td>0</td>
-<td>0.633s</td>
-<td class="success">100%</td>
+<td>0.401s</td>
+<td class="failures">0%</td>
 </tr>
 </table>
 </div>
@@ -96,7 +108,7 @@
 <input id="line-wrapping-toggle" type="checkbox" autocomplete="off"/>
 </label>
 </div>Generated by 
-<a href="http://www.gradle.org">Gradle 6.8</a> at 2021. 10. 9. 오전 8:15:11</p>
+<a href="http://www.gradle.org">Gradle 6.8</a> at 2021. 10. 9. 오후 10:17:33</p>
 </div>
 </div>
 </body>
diff --git a/build/resources/main/1password.com-events-1.0.0.json b/build/resources/main/1password.com-events-1.0.0.json
deleted file mode 100644
index 503bd16f..00000000
--- a/build/resources/main/1password.com-events-1.0.0.json
+++ /dev/null
@@ -1,518 +0,0 @@
-{
-  "openapi": "3.0.0",
-  "servers": [
-    {
-      "description": "1Password",
-      "url": "https://events.1password.com"
-    },
-    {
-      "description": "1Password CA",
-      "url": "https://events.1password.ca"
-    },
-    {
-      "description": "1Password EU",
-      "url": "https://events.1password.eu"
-    },
-    {
-      "description": "1Password Enterprise",
-      "url": "https://events.ent.1password.com"
-    }
-  ],
-  "info": {
-    "description": "1Password Events API Specification.",
-    "title": "Events API",
-    "version": "1.0.0",
-    "x-apisguru-categories": [
-      "security"
-    ],
-    "x-logo": {
-      "url": "https://api.apis.guru/v2/cache/logo/https_upload.wikimedia.org_wikipedia_commons_thumb_e_e3_1password-logo.svg_1280px-1password-logo.svg.png"
-    },
-    "x-origin": [
-      {
-        "format": "openapi",
-        "url": "https://i.1password.com/media/1password-events-reporting/1password-events-api.yaml",
-        "version": "3.0"
-      }
-    ],
-    "x-providerName": "1password.com",
-    "x-serviceName": "events"
-  },
-  "paths": {
-    "/api/auth/introspect": {
-      "get": {
-        "operationId": "getAuthIntrospect",
-        "responses": {
-          "200": {
-            "$ref": "#/components/responses/IntrospectResponse"
-          },
-          "401": {
-            "$ref": "#/components/responses/UnauthorizedErrorResponse"
-          },
-          "default": {
-            "$ref": "#/components/responses/GenericErrorResponse"
-          }
-        },
-        "security": [
-          {
-            "jwtsa": []
-          }
-        ],
-        "summary": "Performs introspection of the provided Bearer JWT token",
-        "tags": [
-          "auth"
-        ]
-      }
-    },
-    "/api/v1/itemusages": {
-      "post": {
-        "description": "This endpoint requires your JSON Web Token to have the *itemusages* feature.",
-        "operationId": "getItemUsages",
-        "requestBody": {
-          "$ref": "#/components/requestBodies/ItemUsagesRequest"
-        },
-        "responses": {
-          "200": {
-            "$ref": "#/components/responses/ItemUsagesResponse"
-          },
-          "401": {
-            "$ref": "#/components/responses/UnauthorizedErrorResponse"
-          },
-          "default": {
-            "$ref": "#/components/responses/GenericErrorResponse"
-          }
-        },
-        "security": [
-          {
-            "jwtsa": []
-          }
-        ],
-        "summary": "Retrieves item usages",
-        "tags": [
-          "api-v1"
-        ]
-      }
-    },
-    "/api/v1/signinattempts": {
-      "post": {
-        "description": "This endpoint requires your JSON Web Token to have the *signinattempts* feature.",
-        "operationId": "getSignInAttempts",
-        "requestBody": {
-          "$ref": "#/components/requestBodies/SignInAttemptsRequest"
-        },
-        "responses": {
-          "200": {
-            "$ref": "#/components/responses/SignInAttemptsResponse"
-          },
-          "401": {
-            "$ref": "#/components/responses/UnauthorizedErrorResponse"
-          },
-          "default": {
-            "$ref": "#/components/responses/GenericErrorResponse"
-          }
-        },
-        "security": [
-          {
-            "jwtsa": []
-          }
-        ],
-        "summary": "Retrieves sign-in attempts",
-        "tags": [
-          "api-v1"
-        ]
-      }
-    }
-  },
-  "components": {
-    "examples": {
-      "Cursor": {
-        "summary": "Used for continued calling with a cursor",
-        "value": {
-          "cursor": "aGVsbG8hIGlzIGl0IG1lIHlvdSBhcmUgbG9va2luZyBmb3IK"
-        }
-      },
-      "ResetCursor": {
-        "summary": "Used for reseting the cursor",
-        "value": {
-          "limit": 100,
-          "start_time": "2021-06-11T16:32:50-03:00"
-        }
-      }
-    },
-    "requestBodies": {
-      "CursorRequest": {
-        "content": {
-          "application/json": {
-            "examples": {
-              "Continuing cursor": {
-                "$ref": "#/components/examples/Cursor"
-              },
-              "Resetting cursor": {
-                "$ref": "#/components/examples/ResetCursor"
-              }
-            },
-            "schema": {
-              "oneOf": [
-                {
-                  "$ref": "#/components/schemas/Cursor"
-                },
-                {
-                  "$ref": "#/components/schemas/ResetCursor"
-                }
-              ]
-            }
-          }
-        }
-      },
-      "ItemUsagesRequest": {
-        "$ref": "#/components/requestBodies/CursorRequest"
-      },
-      "SignInAttemptsRequest": {
-        "$ref": "#/components/requestBodies/CursorRequest"
-      }
-    },
-    "responses": {
-      "GenericErrorResponse": {
-        "content": {
-          "application/json": {
-            "schema": {
-              "$ref": "#/components/schemas/Error"
-            }
-          }
-        },
-        "description": "Generic error"
-      },
-      "IntrospectResponse": {
-        "content": {
-          "application/json": {
-            "schema": {
-              "$ref": "#/components/schemas/Introspection"
-            }
-          }
-        },
-        "description": "Introspection object"
-      },
-      "ItemUsagesResponse": {
-        "content": {
-          "application/json": {
-            "schema": {
-              "$ref": "#/components/schemas/ItemUsageItems"
-            }
-          }
-        },
-        "description": "Item usages response object"
-      },
-      "SignInAttemptsResponse": {
-        "content": {
-          "application/json": {
-            "schema": {
-              "$ref": "#/components/schemas/SignInAttemptItems"
-            }
-          }
-        },
-        "description": "Sign-in attempts response object"
-      },
-      "UnauthorizedErrorResponse": {
-        "content": {
-          "application/json": {
-            "schema": {
-              "$ref": "#/components/schemas/Error"
-            }
-          }
-        },
-        "description": "Unauthorized"
-      }
-    },
-    "schemas": {
-      "Client": {
-        "description": "Metadata gathered about the client",
-        "properties": {
-          "app_name": {
-            "example": "1Password Extension",
-            "type": "string"
-          },
-          "app_version": {
-            "example": "20127",
-            "type": "string"
-          },
-          "ip_address": {
-            "example": "13.227.95.22",
-            "type": "string"
-          },
-          "os_name": {
-            "example": "MacOSX",
-            "type": "string"
-          },
-          "os_version": {
-            "example": "10.15.6",
-            "type": "string"
-          },
-          "platform_name": {
-            "example": "Chrome",
-            "type": "string"
-          },
-          "platform_version": {
-            "description": "Depending on the platform used, this can be the version of the browser that the client extension is installed, the model of computer that the native application is installed or the machine's CPU version that the CLI was installed",
-            "type": "string"
-          }
-        }
-      },
-      "Cursor": {
-        "description": "Cursor",
-        "properties": {
-          "cursor": {
-            "description": "Cursor to fetch more data if available or continue the polling process if required",
-            "example": "aGVsbG8hIGlzIGl0IG1lIHlvdSBhcmUgbG9va2luZyBmb3IK",
-            "type": "string"
-          }
-        }
-      },
-      "CursorCollection": {
-        "allOf": [
-          {
-            "$ref": "#/components/schemas/Cursor"
-          },
-          {
-            "properties": {
-              "has_more": {
-                "description": "Whether there may still be more data to fetch using the returned cursor. If true, the subsequent request could still be empty.",
-                "type": "boolean"
-              }
-            }
-          }
-        ],
-        "description": "Common cursor properties for collection responses"
-      },
-      "DateTimeRFC3339": {
-        "example": "2020-06-11T16:32:50-03:00",
-        "format": "date-time",
-        "type": "string"
-      },
-      "Details": {
-        "description": "Additional information about the sign-in attempt",
-        "properties": {
-          "value": {
-            "description": "For firewall prevented sign-ins, the value is the chosen continent, country, etc. that blocked the sign-in attempt",
-            "example": "Europe",
-            "type": "string"
-          }
-        }
-      },
-      "Error": {
-        "properties": {
-          "Error": {
-            "properties": {
-              "Message": {
-                "description": "The error message.",
-                "type": "string"
-              }
-            },
-            "type": "object"
-          }
-        },
-        "type": "object"
-      },
-      "Introspection": {
-        "properties": {
-          "Features": {
-            "example": [
-              "itemusages",
-              "signinattempts"
-            ],
-            "items": {
-              "type": "string"
-            },
-            "type": "array"
-          },
-          "IssuedAt": {
-            "$ref": "#/components/schemas/DateTimeRFC3339"
-          },
-          "UUID": {
-            "type": "string"
-          }
-        },
-        "type": "object"
-      },
-      "ItemUsage": {
-        "description": "A single item usage object",
-        "properties": {
-          "client": {
-            "$ref": "#/components/schemas/Client"
-          },
-          "item_uuid": {
-            "$ref": "#/components/schemas/UUID"
-          },
-          "timestamp": {
-            "$ref": "#/components/schemas/DateTimeRFC3339"
-          },
-          "used_version": {
-            "type": "integer"
-          },
-          "user": {
-            "$ref": "#/components/schemas/User"
-          },
-          "uuid": {
-            "$ref": "#/components/schemas/UUID"
-          },
-          "vault_uuid": {
-            "$ref": "#/components/schemas/UUID"
-          }
-        }
-      },
-      "ItemUsageItems": {
-        "allOf": [
-          {
-            "properties": {
-              "items": {
-                "items": {
-                  "$ref": "#/components/schemas/ItemUsage"
-                },
-                "type": "array"
-              }
-            }
-          },
-          {
-            "$ref": "#/components/schemas/CursorCollection"
-          }
-        ],
-        "description": "An object wrapping cursor properties and a list of items usages"
-      },
-      "ResetCursor": {
-        "description": "Reset cursor",
-        "properties": {
-          "end_time": {
-            "$ref": "#/components/schemas/DateTimeRFC3339"
-          },
-          "limit": {
-            "maximum": 1000,
-            "minimum": 1,
-            "type": "number"
-          },
-          "start_time": {
-            "$ref": "#/components/schemas/DateTimeRFC3339"
-          }
-        }
-      },
-      "SignInAttempt": {
-        "description": "A single sign-in attempt object",
-        "properties": {
-          "category": {
-            "enum": [
-              "success",
-              "credentials_failed",
-              "mfa_failed",
-              "modern_version_failed",
-              "firewall_failed",
-              "firewall_reported_success"
-            ],
-            "example": "firewall_failed",
-            "type": "string"
-          },
-          "client": {
-            "$ref": "#/components/schemas/Client"
-          },
-          "country": {
-            "description": "Country ISO Code",
-            "example": "France",
-            "type": "string"
-          },
-          "details": {
-            "$ref": "#/components/schemas/Details"
-          },
-          "session_uuid": {
-            "$ref": "#/components/schemas/UUID"
-          },
-          "target_user": {
-            "$ref": "#/components/schemas/User"
-          },
-          "timestamp": {
-            "$ref": "#/components/schemas/DateTimeRFC3339"
-          },
-          "type": {
-            "enum": [
-              "credentials_ok",
-              "mfa_ok",
-              "password_secret_bad",
-              "mfa_missing",
-              "totp_disabled",
-              "totp_bad",
-              "totp_timeout",
-              "u2f_disabled",
-              "u2f_bad",
-              "u2f_timout",
-              "duo_disabled",
-              "duo_bad",
-              "duo_timeout",
-              "duo_native_bad",
-              "platform_secret_disabled",
-              "platform_secret_bad",
-              "platform_secret_proxy",
-              "code_disabled",
-              "code_bad",
-              "code_timeout",
-              "ip_blocked",
-              "continent_blocked",
-              "country_blocked",
-              "anonymous_blocked",
-              "all_blocked",
-              "modern_version_missing",
-              "modern_version_old"
-            ],
-            "example": "continent_blocked",
-            "type": "string"
-          },
-          "uuid": {
-            "$ref": "#/components/schemas/UUID"
-          }
-        }
-      },
-      "SignInAttemptItems": {
-        "allOf": [
-          {
-            "properties": {
-              "items": {
-                "items": {
-                  "$ref": "#/components/schemas/SignInAttempt"
-                },
-                "type": "array"
-              }
-            }
-          },
-          {
-            "$ref": "#/components/schemas/CursorCollection"
-          }
-        ],
-        "description": "An object wrapping cursor properties and a list of sign-in attempts"
-      },
-      "UUID": {
-        "example": "56YE2TYN2VFYRLNSHKPW5NVT5E",
-        "type": "string"
-      },
-      "User": {
-        "description": "User object",
-        "properties": {
-          "email": {
-            "format": "email",
-            "type": "string"
-          },
-          "name": {
-            "description": "Full name",
-            "example": "Jack O'Neill",
-            "type": "string"
-          },
-          "uuid": {
-            "$ref": "#/components/schemas/UUID"
-          }
-        }
-      }
-    },
-    "securitySchemes": {
-      "jwtsa": {
-        "bearerFormat": "JWT-SA",
-        "description": "A JWT SA token issued to this service",
-        "scheme": "bearer",
-        "type": "http"
-      }
-    }
-  }
-}
\ No newline at end of file
diff --git a/build/resources/main/6-dot-authentiqio.appspot.com-6.json b/build/resources/main/6-dot-authentiqio.appspot.com-6.json
deleted file mode 100644
index a59849b1..00000000
--- a/build/resources/main/6-dot-authentiqio.appspot.com-6.json
+++ /dev/null
@@ -1,998 +0,0 @@
-{
-  "openapi": "3.0.0",
-  "servers": [
-    {
-      "url": "https://6-dot-authentiqio.appspot.com"
-    }
-  ],
-  "info": {
-    "contact": {
-      "email": "hello@authentiq.com",
-      "name": "Authentiq team",
-      "url": "http://authentiq.io/support"
-    },
-    "description": "Strong authentication, without the passwords.",
-    "license": {
-      "name": "Apache 2.0",
-      "url": "http://www.apache.org/licenses/LICENSE-2.0.html"
-    },
-    "termsOfService": "http://authentiq.com/terms/",
-    "title": "Authentiq API",
-    "version": "6",
-    "x-apisguru-categories": [
-      "security"
-    ],
-    "x-logo": {
-      "backgroundColor": "#F26641",
-      "url": "https://api.apis.guru/v2/cache/logo/https_www.authentiq.com_theme_images_authentiq-logo-a-inverse.svg"
-    },
-    "x-origin": [
-      {
-        "format": "openapi",
-        "url": "https://raw.githubusercontent.com/AuthentiqID/authentiq-docs/master/docs/swagger/issuer.yaml",
-        "version": "3.0"
-      }
-    ],
-    "x-providerName": "6-dot-authentiqio.appspot.com"
-  },
-  "paths": {
-    "/key": {
-      "delete": {
-        "description": "Revoke an Authentiq ID using email & phone.\n\nIf called with `email` and `phone` only, a verification code \nwill be sent by email. Do a second call adding `code` to \ncomplete the revocation.\n",
-        "operationId": "key_revoke_nosecret",
-        "parameters": [
-          {
-            "description": "primary email associated to Key (ID)",
-            "in": "query",
-            "name": "email",
-            "required": true,
-            "schema": {
-              "type": "string"
-            }
-          },
-          {
-            "description": "primary phone number, international representation",
-            "in": "query",
-            "name": "phone",
-            "required": true,
-            "schema": {
-              "type": "string"
-            }
-          },
-          {
-            "description": "verification code sent by email",
-            "in": "query",
-            "name": "code",
-            "required": false,
-            "schema": {
-              "type": "string"
-            }
-          }
-        ],
-        "responses": {
-          "200": {
-            "content": {
-              "application/json": {
-                "schema": {
-                  "properties": {
-                    "status": {
-                      "description": "pending or done",
-                      "type": "string"
-                    }
-                  },
-                  "type": "object"
-                }
-              }
-            },
-            "description": "Successfully deleted"
-          },
-          "401": {
-            "content": {
-              "application/json": {
-                "schema": {
-                  "$ref": "#/components/schemas/Error"
-                }
-              }
-            },
-            "description": "Authentication error `auth-error`"
-          },
-          "404": {
-            "content": {
-              "application/json": {
-                "schema": {
-                  "$ref": "#/components/schemas/Error"
-                }
-              }
-            },
-            "description": "Unknown key `unknown-key`"
-          },
-          "409": {
-            "content": {
-              "application/json": {
-                "schema": {
-                  "$ref": "#/components/schemas/Error"
-                }
-              }
-            },
-            "description": "Confirm with code sent `confirm-first`"
-          },
-          "default": {
-            "$ref": "#/components/responses/ErrorResponse"
-          }
-        },
-        "tags": [
-          "key",
-          "delete"
-        ]
-      },
-      "post": {
-        "description": "Register a new ID `JWT(sub, devtoken)`\n\nv5: `JWT(sub, pk, devtoken, ...)`\n\nSee: https://github.com/skion/authentiq/wiki/JWT-Examples\n",
-        "operationId": "key_register",
-        "requestBody": {
-          "$ref": "#/components/requestBodies/AuthentiqID"
-        },
-        "responses": {
-          "201": {
-            "content": {
-              "application/json": {
-                "schema": {
-                  "properties": {
-                    "secret": {
-                      "description": "revoke key",
-                      "type": "string"
-                    },
-                    "status": {
-                      "description": "registered",
-                      "type": "string"
-                    }
-                  },
-                  "type": "object"
-                }
-              }
-            },
-            "description": "Successfully registered"
-          },
-          "409": {
-            "content": {
-              "application/json": {
-                "schema": {
-                  "$ref": "#/components/schemas/Error"
-                }
-              }
-            },
-            "description": "Key already registered `duplicate-key`"
-          },
-          "default": {
-            "$ref": "#/components/responses/ErrorResponse"
-          }
-        },
-        "tags": [
-          "key",
-          "post"
-        ]
-      }
-    },
-    "/key/{PK}": {
-      "delete": {
-        "description": "Revoke an Identity (Key) with a revocation secret",
-        "operationId": "key_revoke",
-        "parameters": [
-          {
-            "$ref": "#/components/parameters/PK"
-          },
-          {
-            "description": "revokation secret",
-            "in": "query",
-            "name": "secret",
-            "required": true,
-            "schema": {
-              "type": "string"
-            }
-          }
-        ],
-        "responses": {
-          "200": {
-            "content": {
-              "application/json": {
-                "schema": {
-                  "properties": {
-                    "status": {
-                      "description": "done",
-                      "type": "string"
-                    }
-                  },
-                  "type": "object"
-                }
-              }
-            },
-            "description": "Successful response"
-          },
-          "401": {
-            "content": {
-              "application/json": {
-                "schema": {
-                  "$ref": "#/components/schemas/Error"
-                }
-              }
-            },
-            "description": "Key not found / wrong code `auth-error`"
-          },
-          "404": {
-            "content": {
-              "application/json": {
-                "schema": {
-                  "$ref": "#/components/schemas/Error"
-                }
-              }
-            },
-            "description": "Unknown key `unknown-key`"
-          },
-          "default": {
-            "$ref": "#/components/responses/ErrorResponse"
-          }
-        },
-        "tags": [
-          "key",
-          "delete"
-        ]
-      },
-      "get": {
-        "description": "Get public details of an Authentiq ID.\n",
-        "operationId": "key_retrieve",
-        "parameters": [
-          {
-            "$ref": "#/components/parameters/PK"
-          }
-        ],
-        "responses": {
-          "200": {
-            "content": {
-              "application/json": {
-                "schema": {
-                  "properties": {
-                    "since": {
-                      "format": "date-time",
-                      "type": "string"
-                    },
-                    "status": {
-                      "type": "string"
-                    },
-                    "sub": {
-                      "description": "base64safe encoded public signing key",
-                      "type": "string"
-                    }
-                  },
-                  "title": "JWT",
-                  "type": "object"
-                }
-              }
-            },
-            "description": "Successfully retrieved"
-          },
-          "404": {
-            "content": {
-              "application/json": {
-                "schema": {
-                  "$ref": "#/components/schemas/Error"
-                }
-              }
-            },
-            "description": "Unknown key `unknown-key`"
-          },
-          "410": {
-            "content": {
-              "application/json": {
-                "schema": {
-                  "$ref": "#/components/schemas/Error"
-                }
-              }
-            },
-            "description": "Key is revoked (gone). `revoked-key`"
-          },
-          "default": {
-            "$ref": "#/components/responses/ErrorResponse"
-          }
-        },
-        "tags": [
-          "key",
-          "get"
-        ]
-      },
-      "head": {
-        "description": "HEAD info on Authentiq ID\n",
-        "parameters": [
-          {
-            "$ref": "#/components/parameters/PK"
-          }
-        ],
-        "responses": {
-          "200": {
-            "description": "Key exists"
-          },
-          "404": {
-            "content": {
-              "*/*": {
-                "schema": {
-                  "$ref": "#/components/schemas/Error"
-                }
-              }
-            },
-            "description": "Unknown key `unknown-key`"
-          },
-          "410": {
-            "content": {
-              "*/*": {
-                "schema": {
-                  "$ref": "#/components/schemas/Error"
-                }
-              }
-            },
-            "description": "Key is revoked `revoked-key`"
-          },
-          "default": {
-            "$ref": "#/components/responses/ErrorResponse"
-          }
-        },
-        "tags": [
-          "key",
-          "head"
-        ]
-      },
-      "post": {
-        "description": "update properties of an Authentiq ID.\n(not operational in v4; use PUT for now)\n\nv5: POST issuer-signed email & phone scopes in\na self-signed JWT\n\nSee: https://github.com/skion/authentiq/wiki/JWT-Examples\n",
-        "operationId": "key_update",
-        "parameters": [
-          {
-            "$ref": "#/components/parameters/PK"
-          }
-        ],
-        "requestBody": {
-          "$ref": "#/components/requestBodies/AuthentiqID"
-        },
-        "responses": {
-          "200": {
-            "content": {
-              "application/json": {
-                "schema": {
-                  "properties": {
-                    "status": {
-                      "description": "confirmed",
-                      "type": "string"
-                    }
-                  },
-                  "type": "object"
-                }
-              }
-            },
-            "description": "Successfully updated"
-          },
-          "404": {
-            "content": {
-              "application/json": {
-                "schema": {
-                  "$ref": "#/components/schemas/Error"
-                }
-              }
-            },
-            "description": "Unknown key `unknown-key`"
-          },
-          "default": {
-            "$ref": "#/components/responses/ErrorResponse"
-          }
-        },
-        "tags": [
-          "key",
-          "post"
-        ]
-      },
-      "put": {
-        "description": "Update Authentiq ID by replacing the object.\n\nv4: `JWT(sub,email,phone)` to bind email/phone hash; \n\nv5: POST issuer-signed email & phone scopes\nand PUT to update registration `JWT(sub, pk, devtoken, ...)`\n\nSee: https://github.com/skion/authentiq/wiki/JWT-Examples\n",
-        "operationId": "key_bind",
-        "parameters": [
-          {
-            "$ref": "#/components/parameters/PK"
-          }
-        ],
-        "requestBody": {
-          "$ref": "#/components/requestBodies/AuthentiqID"
-        },
-        "responses": {
-          "200": {
-            "content": {
-              "application/json": {
-                "schema": {
-                  "properties": {
-                    "status": {
-                      "description": "confirmed",
-                      "type": "string"
-                    }
-                  },
-                  "type": "object"
-                }
-              }
-            },
-            "description": "Successfully updated"
-          },
-          "404": {
-            "content": {
-              "application/json": {
-                "schema": {
-                  "$ref": "#/components/schemas/Error"
-                }
-              }
-            },
-            "description": "Unknown key `unknown-key`"
-          },
-          "409": {
-            "content": {
-              "application/json": {
-                "schema": {
-                  "$ref": "#/components/schemas/Error"
-                }
-              }
-            },
-            "description": "Already bound to another key `duplicate-hash`"
-          },
-          "default": {
-            "$ref": "#/components/responses/ErrorResponse"
-          }
-        },
-        "tags": [
-          "key",
-          "put"
-        ]
-      }
-    },
-    "/login": {
-      "post": {
-        "description": "push sign-in request\nSee: https://github.com/skion/authentiq/wiki/JWT-Examples\n",
-        "operationId": "push_login_request",
-        "parameters": [
-          {
-            "description": "URI App will connect to",
-            "in": "query",
-            "name": "callback",
-            "required": true,
-            "schema": {
-              "type": "string"
-            }
-          }
-        ],
-        "requestBody": {
-          "content": {
-            "application/jwt": {
-              "schema": {
-                "$ref": "#/components/schemas/PushToken"
-              }
-            }
-          },
-          "description": "Push Token.",
-          "required": true
-        },
-        "responses": {
-          "200": {
-            "content": {
-              "application/json": {
-                "schema": {
-                  "properties": {
-                    "status": {
-                      "description": "sent",
-                      "type": "string"
-                    }
-                  },
-                  "type": "object"
-                }
-              }
-            },
-            "description": "Successful response"
-          },
-          "401": {
-            "content": {
-              "application/json": {
-                "schema": {
-                  "$ref": "#/components/schemas/Error"
-                }
-              }
-            },
-            "description": "Unauthorized for this callback audience `aud-error` or JWT should be self-signed `auth-error`"
-          },
-          "default": {
-            "$ref": "#/components/responses/ErrorResponse"
-          }
-        },
-        "tags": [
-          "login",
-          "post"
-        ]
-      }
-    },
-    "/scope": {
-      "post": {
-        "description": "scope verification request\nSee: https://github.com/skion/authentiq/wiki/JWT-Examples\n",
-        "operationId": "sign_request",
-        "parameters": [
-          {
-            "description": "test only mode, using test issuer",
-            "in": "query",
-            "name": "test",
-            "required": false,
-            "schema": {
-              "type": "integer"
-            }
-          }
-        ],
-        "requestBody": {
-          "content": {
-            "application/jwt": {
-              "schema": {
-                "$ref": "#/components/schemas/Claims"
-              }
-            }
-          },
-          "description": "Claims of scope",
-          "required": true
-        },
-        "responses": {
-          "201": {
-            "content": {
-              "application/json": {
-                "schema": {
-                  "properties": {
-                    "job": {
-                      "description": "20-character ID",
-                      "type": "string"
-                    },
-                    "status": {
-                      "description": "waiting",
-                      "type": "string"
-                    }
-                  },
-                  "type": "object"
-                }
-              }
-            },
-            "description": "Successful response"
-          },
-          "429": {
-            "content": {
-              "application/json": {
-                "schema": {
-                  "$ref": "#/components/schemas/Error"
-                }
-              }
-            },
-            "description": "Too Many Requests on same address / number `rate-limit`"
-          },
-          "default": {
-            "$ref": "#/components/responses/ErrorResponse"
-          }
-        },
-        "tags": [
-          "scope",
-          "post"
-        ]
-      }
-    },
-    "/scope/{job}": {
-      "delete": {
-        "description": "delete a verification job",
-        "operationId": "sign_delete",
-        "parameters": [
-          {
-            "$ref": "#/components/parameters/JobID"
-          }
-        ],
-        "responses": {
-          "200": {
-            "content": {
-              "application/json": {
-                "schema": {
-                  "properties": {
-                    "status": {
-                      "description": "done",
-                      "type": "string"
-                    }
-                  },
-                  "type": "object"
-                }
-              }
-            },
-            "description": "Successfully deleted"
-          },
-          "404": {
-            "content": {
-              "application/json": {
-                "schema": {
-                  "$ref": "#/components/schemas/Error"
-                }
-              }
-            },
-            "description": "Job not found `unknown-job`"
-          },
-          "default": {
-            "$ref": "#/components/responses/ErrorResponse"
-          }
-        },
-        "tags": [
-          "scope",
-          "delete"
-        ]
-      },
-      "get": {
-        "description": "get the status / current content of a verification job",
-        "operationId": "sign_retrieve",
-        "parameters": [
-          {
-            "$ref": "#/components/parameters/JobID"
-          }
-        ],
-        "responses": {
-          "200": {
-            "content": {
-              "application/json": {
-                "schema": {
-                  "properties": {
-                    "exp": {
-                      "type": "integer"
-                    },
-                    "field": {
-                      "type": "string"
-                    },
-                    "sub": {
-                      "description": "base64safe encoded public signing key",
-                      "type": "string"
-                    }
-                  },
-                  "title": "JWT",
-                  "type": "object"
-                }
-              },
-              "application/jwt": {
-                "schema": {
-                  "properties": {
-                    "exp": {
-                      "type": "integer"
-                    },
-                    "field": {
-                      "type": "string"
-                    },
-                    "sub": {
-                      "description": "base64safe encoded public signing key",
-                      "type": "string"
-                    }
-                  },
-                  "title": "JWT",
-                  "type": "object"
-                }
-              }
-            },
-            "description": "Successful response (JWT)"
-          },
-          "204": {
-            "description": "Confirmed, waiting for signing"
-          },
-          "404": {
-            "content": {
-              "application/json": {
-                "schema": {
-                  "$ref": "#/components/schemas/Error"
-                }
-              },
-              "application/jwt": {
-                "schema": {
-                  "$ref": "#/components/schemas/Error"
-                }
-              }
-            },
-            "description": "Job not found `unknown-job`"
-          },
-          "default": {
-            "$ref": "#/components/responses/ErrorResponse"
-          }
-        },
-        "tags": [
-          "scope",
-          "get"
-        ]
-      },
-      "head": {
-        "description": "HEAD to get the status of a verification job",
-        "operationId": "sign_retrieve_head",
-        "parameters": [
-          {
-            "$ref": "#/components/parameters/JobID"
-          }
-        ],
-        "responses": {
-          "200": {
-            "description": "Confirmed and signed"
-          },
-          "204": {
-            "description": "Confirmed, waiting for signing"
-          },
-          "404": {
-            "content": {
-              "application/json": {
-                "schema": {
-                  "$ref": "#/components/schemas/Error"
-                }
-              }
-            },
-            "description": "Job not found `unknown-job`"
-          },
-          "default": {
-            "$ref": "#/components/responses/ErrorResponse"
-          }
-        },
-        "tags": [
-          "scope",
-          "head"
-        ]
-      },
-      "post": {
-        "description": "this is a scope confirmation",
-        "operationId": "sign_confirm",
-        "parameters": [
-          {
-            "$ref": "#/components/parameters/JobID"
-          }
-        ],
-        "responses": {
-          "202": {
-            "content": {
-              "application/json": {
-                "schema": {
-                  "properties": {
-                    "status": {
-                      "description": "confirmed",
-                      "type": "string"
-                    }
-                  },
-                  "type": "object"
-                }
-              }
-            },
-            "description": "Successfully confirmed"
-          },
-          "401": {
-            "content": {
-              "application/json": {
-                "schema": {
-                  "$ref": "#/components/schemas/Error"
-                }
-              }
-            },
-            "description": "Confirmation error `auth-error`"
-          },
-          "404": {
-            "content": {
-              "application/json": {
-                "schema": {
-                  "$ref": "#/components/schemas/Error"
-                }
-              }
-            },
-            "description": "Job not found `unknown-job`"
-          },
-          "405": {
-            "content": {
-              "application/json": {
-                "schema": {
-                  "$ref": "#/components/schemas/Error"
-                }
-              }
-            },
-            "description": "JWT POSTed to scope `not-supported`"
-          },
-          "default": {
-            "$ref": "#/components/responses/ErrorResponse"
-          }
-        },
-        "tags": [
-          "scope",
-          "post"
-        ]
-      },
-      "put": {
-        "description": "authority updates a JWT with its signature\nSee: https://github.com/skion/authentiq/wiki/JWT-Examples\n",
-        "operationId": "sign_update",
-        "parameters": [
-          {
-            "$ref": "#/components/parameters/JobID"
-          }
-        ],
-        "responses": {
-          "200": {
-            "content": {
-              "application/jwt": {
-                "schema": {
-                  "properties": {
-                    "jwt": {
-                      "description": "result is JWT or JSON??",
-                      "type": "string"
-                    },
-                    "status": {
-                      "description": "ready",
-                      "type": "string"
-                    }
-                  },
-                  "type": "object"
-                }
-              }
-            },
-            "description": "Successfully updated"
-          },
-          "404": {
-            "content": {
-              "application/jwt": {
-                "schema": {
-                  "$ref": "#/components/schemas/Error"
-                }
-              }
-            },
-            "description": "Job not found `unknown-job`"
-          },
-          "409": {
-            "content": {
-              "application/jwt": {
-                "schema": {
-                  "$ref": "#/components/schemas/Error"
-                }
-              }
-            },
-            "description": "Job not confirmed yet `confirm-first`"
-          },
-          "default": {
-            "$ref": "#/components/responses/ErrorResponse"
-          }
-        },
-        "tags": [
-          "scope",
-          "put"
-        ]
-      }
-    }
-  },
-  "components": {
-    "parameters": {
-      "JobID": {
-        "description": "Job ID (20 chars)",
-        "in": "path",
-        "name": "job",
-        "required": true,
-        "schema": {
-          "type": "string"
-        }
-      },
-      "PK": {
-        "description": "Public Signing Key - Authentiq ID (43 chars)",
-        "in": "path",
-        "name": "PK",
-        "required": true,
-        "schema": {
-          "type": "string"
-        }
-      }
-    },
-    "requestBodies": {
-      "AuthentiqID": {
-        "content": {
-          "application/jwt": {
-            "schema": {
-              "$ref": "#/components/schemas/AuthentiqID"
-            }
-          }
-        },
-        "description": "Authentiq ID to register",
-        "required": true
-      }
-    },
-    "responses": {
-      "ErrorResponse": {
-        "content": {
-          "*/*": {
-            "schema": {
-              "$ref": "#/components/schemas/Error"
-            }
-          }
-        },
-        "description": "Error response"
-      }
-    },
-    "schemas": {
-      "AuthentiqID": {
-        "description": "Authentiq ID in JWT format, self-signed.\n",
-        "properties": {
-          "devtoken": {
-            "description": "device token for push messages",
-            "type": "string"
-          },
-          "sub": {
-            "description": "UUID and public signing key",
-            "type": "string"
-          }
-        },
-        "required": [
-          "sub"
-        ]
-      },
-      "Claims": {
-        "description": "Claim in JWT format, self- or issuer-signed. \n",
-        "properties": {
-          "email": {
-            "type": "string"
-          },
-          "phone": {
-            "type": "string"
-          },
-          "scope": {
-            "description": "claim scope",
-            "type": "string"
-          },
-          "sub": {
-            "description": "UUID",
-            "type": "string"
-          },
-          "type": {
-            "type": "string"
-          }
-        },
-        "required": [
-          "sub",
-          "scope"
-        ]
-      },
-      "Error": {
-        "properties": {
-          "detail": {
-            "type": "string"
-          },
-          "error": {
-            "type": "integer"
-          },
-          "title": {
-            "type": "string"
-          },
-          "type": {
-            "description": "unique uri for this error",
-            "type": "string"
-          }
-        },
-        "required": [
-          "error"
-        ]
-      },
-      "PushToken": {
-        "description": "PushToken in JWT format, self-signed. \n",
-        "properties": {
-          "aud": {
-            "description": "audience (URI)",
-            "type": "string"
-          },
-          "exp": {
-            "type": "integer"
-          },
-          "iat": {
-            "type": "integer"
-          },
-          "iss": {
-            "description": "issuer (URI)",
-            "type": "string"
-          },
-          "nbf": {
-            "type": "integer"
-          },
-          "sub": {
-            "description": "UUID and public signing key",
-            "type": "string"
-          }
-        },
-        "required": [
-          "sub",
-          "iss",
-          "aud"
-        ]
-      }
-    }
-  }
-}
\ No newline at end of file
diff --git a/build/resources/main/abstractapi.com-geolocation-1.0.0.json b/build/resources/main/abstractapi.com-geolocation-1.0.0.json
deleted file mode 100644
index 48bc4de4..00000000
--- a/build/resources/main/abstractapi.com-geolocation-1.0.0.json
+++ /dev/null
@@ -1,233 +0,0 @@
-{
-  "openapi": "3.0.1",
-  "servers": [
-    {
-      "url": "https://ipgeolocation.abstractapi.com"
-    }
-  ],
-  "info": {
-    "description": "Abstract IP geolocation API allows developers to retrieve the region, country and city behind any IP worldwide. The API covers the geolocation of IPv4 and IPv6 addresses in 180+ countries worldwide. Extra information can be retrieved like the currency, flag or language associated to an IP.",
-    "title": "IP geolocation API",
-    "version": "1.0.0",
-    "x-apisguru-categories": [
-      "location"
-    ],
-    "x-logo": {
-      "url": "https://api.apis.guru/v2/cache/logo/https_global-uploads.webflow.com_5ebbd0a566a3996636e55959_5ec2ba29feeeb05d69160e7b_webclip.png"
-    },
-    "x-origin": [
-      {
-        "format": "openapi",
-        "url": "https://documentation.abstractapi.com/ip-geolocation-openapi.json",
-        "version": "3.0"
-      }
-    ],
-    "x-providerName": "abstractapi.com",
-    "x-serviceName": "geolocation"
-  },
-  "externalDocs": {
-    "description": "API Documentation",
-    "url": "https://www.abstractapi.com/ip-geolocation-api#docs"
-  },
-  "paths": {
-    "/v1": {
-      "get": {
-        "description": "Retrieve the location of an IP address",
-        "parameters": [
-          {
-            "explode": true,
-            "in": "query",
-            "name": "api_key",
-            "required": true,
-            "schema": {
-              "type": "string"
-            },
-            "style": "form"
-          },
-          {
-            "explode": true,
-            "in": "query",
-            "name": "ip_address",
-            "required": false,
-            "schema": {
-              "example": "195.154.25.40",
-              "type": "string"
-            },
-            "style": "form"
-          },
-          {
-            "explode": true,
-            "in": "query",
-            "name": "fields",
-            "required": false,
-            "schema": {
-              "example": "country,city,timezone",
-              "type": "string"
-            },
-            "style": "form"
-          }
-        ],
-        "responses": {
-          "200": {
-            "content": {
-              "application/json": {
-                "examples": {
-                  "0": {
-                    "value": "{\"ip_address\":\"195.154.25.40\",\"city\":\"Paris\",\"city_geoname_id\":2988507,\"region\":\"Île-de-France\",\"region_iso_code\":\"IDF\",\"region_geoname_id\":3012874,\"postal_code\":\"75008\",\"country\":\"France\",\"country_code\":\"FR\",\"country_geoname_id\":3017382,\"country_is_eu\":true,\"continent\":\"Europe\",\"continent_code\":\"EU\",\"continent_geoname_id\":6255148,\"longitude\":2.4075,\"latitude\":48.8323,\"security\":{\"is_vpn\":false},\"timezone\":{\"name\":\"Europe/Paris\",\"abbreviation\":\"CEST\",\"gmt_offset\":2,\"current_time\":\"15:42:18\",\"is_dst\":true},\"flag\":{\"emoji\":\"<ë<÷\",\"unicode\":\"U+1F1EB U+1F1F7\",\"png\":\"https://static.abstractapi.com/country-flags/FR_flag.png\",\"svg\":\"https://static.abstractapi.com/country-flags/FR_flag.svg\"},\"currency\":{\"currency_name\":\"Euros\",\"currency_code\":\"EUR\"},\"connection\":{\"autonomous_system_number\":12876,\"autonomous_system_organization\":\"Online S.a.s.\",\"connection_type\":\"Corporate\",\"isp_name\":\"Online S.A.S.\",\"organization_name\":\"ONLINE\"}}"
-                  }
-                },
-                "schema": {
-                  "$ref": "#/components/schemas/inline_response_200"
-                }
-              }
-            },
-            "description": "Location of geolocated IP"
-          }
-        },
-        "servers": [
-          {
-            "url": "https://ipgeolocation.abstractapi.com"
-          }
-        ]
-      },
-      "servers": [
-        {
-          "url": "https://ipgeolocation.abstractapi.com"
-        }
-      ]
-    }
-  },
-  "components": {
-    "schemas": {
-      "inline_response_200": {
-        "properties": {
-          "city": {
-            "type": "string"
-          },
-          "city_geoname_id": {
-            "type": "integer"
-          },
-          "connection": {
-            "properties": {
-              "autonomous_system_number": {
-                "type": "integer"
-              },
-              "autonomous_system_organization": {
-                "type": "string"
-              },
-              "connection_type": {
-                "type": "string"
-              },
-              "isp_name": {
-                "type": "string"
-              },
-              "organization_name": {
-                "type": "string"
-              }
-            },
-            "type": "object"
-          },
-          "continent": {
-            "type": "string"
-          },
-          "continent_code": {
-            "type": "string"
-          },
-          "continent_geoname_id": {
-            "type": "integer"
-          },
-          "country": {
-            "type": "string"
-          },
-          "country_code": {
-            "type": "string"
-          },
-          "country_geoname_id": {
-            "type": "integer"
-          },
-          "country_is_eu": {
-            "type": "boolean"
-          },
-          "currency": {
-            "properties": {
-              "currency_code": {
-                "type": "string"
-              },
-              "currency_name": {
-                "type": "string"
-              }
-            },
-            "type": "object"
-          },
-          "flag": {
-            "properties": {
-              "emoji": {
-                "type": "string"
-              },
-              "png": {
-                "type": "string"
-              },
-              "svg": {
-                "type": "string"
-              },
-              "unicode": {
-                "type": "string"
-              }
-            },
-            "type": "object"
-          },
-          "ip_address": {
-            "type": "string"
-          },
-          "latitude": {
-            "type": "number"
-          },
-          "longitude": {
-            "type": "number"
-          },
-          "postal_code": {
-            "type": "string"
-          },
-          "region": {
-            "type": "string"
-          },
-          "region_geoname_id": {
-            "type": "integer"
-          },
-          "region_iso_code": {
-            "type": "string"
-          },
-          "security": {
-            "properties": {
-              "is_vpn": {
-                "type": "boolean"
-              }
-            },
-            "type": "object"
-          },
-          "timezone": {
-            "properties": {
-              "abbreviation": {
-                "type": "string"
-              },
-              "current_time": {
-                "type": "string"
-              },
-              "gmt_offset": {
-                "type": "integer"
-              },
-              "is_dst": {
-                "type": "boolean"
-              },
-              "name": {
-                "type": "string"
-              }
-            },
-            "type": "object"
-          }
-        },
-        "type": "object"
-      }
-    }
-  }
-}
\ No newline at end of file
diff --git a/build/resources/main/adyen.com-CheckoutUtilityService-1.json b/build/resources/main/adyen.com-CheckoutUtilityService-1.json
deleted file mode 100644
index f673d455..00000000
--- a/build/resources/main/adyen.com-CheckoutUtilityService-1.json
+++ /dev/null
@@ -1,117 +0,0 @@
-{
-  "openapi": "3.0.0",
-  "servers": [
-    {
-      "url": "https://checkout-test.adyen.com/v1"
-    }
-  ],
-  "info": {
-    "contact": {
-      "email": "support@adyen.com",
-      "name": "Adyen Support",
-      "url": "https://support.adyen.com/",
-      "x-twitter": "Adyen"
-    },
-    "description": "A web service containing utility functions available for merchants integrating with Checkout APIs.\n## Authentication\nEach request to the Checkout Utility API must be signed with an API key. For this, obtain an API Key from your Customer Area, as described in [How to get the Checkout API key](https://docs.adyen.com/developers/user-management/how-to-get-the-checkout-api-key). Then set this key to the `X-API-Key` header value, for example:\n\n```\ncurl\n-H \"Content-Type: application/json\" \\\n-H \"X-API-Key: Your_Checkout_API_key\" \\\n...\n```\nNote that when going live, you need to generate a new API Key to access the [live endpoints](https://docs.adyen.com/developers/api-reference/live-endpoints).\n\n## Versioning\nCheckout API supports versioning of its endpoints through a version suffix in the endpoint URL. This suffix has the following format: \"vXX\", where XX is the version number.\n\nFor example:\n```\nhttps://checkout-test.adyen.com/v1/originKeys\n```",
-    "termsOfService": "https://docs.adyen.com/legal/terms-conditions",
-    "title": "Adyen Checkout Utility Service",
-    "version": "1",
-    "x-apisguru-categories": [
-      "payment"
-    ],
-    "x-logo": {
-      "url": "https://api.apis.guru/v2/cache/logo/https_twitter.com_Adyen_profile_image.jpeg"
-    },
-    "x-origin": [
-      {
-        "converter": {
-          "url": "https://github.com/lucybot/api-spec-converter",
-          "version": "2.7.11"
-        },
-        "format": "openapi",
-        "url": "https://raw.githubusercontent.com/adyen/adyen-openapi/master/specs/3.0/CheckoutUtilityService-v1.json",
-        "version": "3.0"
-      }
-    ],
-    "x-providerName": "adyen.com",
-    "x-serviceName": "CheckoutUtilityService"
-  },
-  "paths": {
-    "/originKeys": {
-      "post": {
-        "description": "This operation takes the origin domains and returns a JSON object containing the corresponding origin keys for the domains.",
-        "requestBody": {
-          "content": {
-            "application/json": {
-              "schema": {
-                "$ref": "#/components/schemas/CheckoutUtilityRequest"
-              }
-            }
-          }
-        },
-        "responses": {
-          "200": {
-            "content": {
-              "application/json": {
-                "schema": {
-                  "$ref": "#/components/schemas/CheckoutUtilityResponse"
-                }
-              }
-            },
-            "description": "OK - the request has succeeded."
-          },
-          "400": {
-            "description": "Bad Request - a problem reading or understanding the request."
-          },
-          "401": {
-            "description": "Unauthorized - authentication required."
-          },
-          "403": {
-            "description": "Forbidden - insufficient permissions to process the request."
-          },
-          "422": {
-            "description": "Unprocessable Entity - a request validation error."
-          },
-          "500": {
-            "description": "Internal Server Error - the server could not process the request."
-          }
-        },
-        "summary": "Create originKey values for one or more merchant domains.",
-        "x-groupName": "General",
-        "x-sortIndex": 0
-      }
-    }
-  },
-  "components": {
-    "schemas": {
-      "CheckoutUtilityRequest": {
-        "properties": {
-          "originDomains": {
-            "description": "The list of origin domains, for which origin keys are requested.",
-            "items": {
-              "type": "string"
-            },
-            "type": "array"
-          }
-        },
-        "required": [
-          "originDomains"
-        ]
-      },
-      "CheckoutUtilityResponse": {
-        "properties": {
-          "originKeys": {
-            "additionalProperties": {
-              "type": "string"
-            },
-            "description": "The list of origin keys for all requested domains. For each list item, the key is the domain and the value is the origin key.",
-            "type": "object"
-          }
-        }
-      }
-    }
-  },
-  "x-groups": [
-    "General"
-  ]
-}
\ No newline at end of file
diff --git a/build/test-results/test/TEST-openapi.OpenAPIMain_test.xml b/build/test-results/test/TEST-openapi.OpenAPIMain_test.xml
index 95c28d39..c3a8822f 100644
--- a/build/test-results/test/TEST-openapi.OpenAPIMain_test.xml
+++ b/build/test-results/test/TEST-openapi.OpenAPIMain_test.xml
@@ -1,16 +1,112 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<testsuite name="openapi.OpenAPIMain_test" tests="1" skipped="0" failures="0" errors="0" timestamp="2021-10-08T23:15:10" hostname="DESKTOP-7SEB5SB" time="0.633">
+<testsuite name="openapi.OpenAPIMain_test" tests="1" skipped="0" failures="1" errors="0" timestamp="2021-10-09T13:17:32" hostname="DESKTOP-7SEB5SB" time="0.401">
   <properties/>
-  <testcase name="test()" classname="openapi.OpenAPIMain_test" time="0.633"/>
-  <system-out><![CDATA[5
-Loading expression DSL file '1password.com-events-1.0.0.json'.
-Loading expression DSL file '6-dot-authentiqio.appspot.com-6.json'.
-Loading expression DSL file 'abstractapi.com-geolocation-1.0.0.json'.
-Loading expression DSL file 'adyen.com-CheckoutUtilityService-1.json'.
+  <testcase name="test()" classname="openapi.OpenAPIMain_test" time="0.401">
+    <failure message="java.lang.NullPointerException" type="java.lang.NullPointerException">java.lang.NullPointerException
+	at de.tudresden.inf.st.openapi.ast.ASTNode.collect_contributors_OpenAPIObject_schemaTuples(ASTNode.java:494)
+	at de.tudresden.inf.st.openapi.ast.ASTNode.collect_contributors_OpenAPIObject_schemaTuples(ASTNode.java:494)
+	at de.tudresden.inf.st.openapi.ast.ASTNode.collect_contributors_OpenAPIObject_schemaTuples(ASTNode.java:494)
+	at de.tudresden.inf.st.openapi.ast.ASTNode.collect_contributors_OpenAPIObject_schemaTuples(ASTNode.java:494)
+	at de.tudresden.inf.st.openapi.ast.ASTNode.collect_contributors_OpenAPIObject_schemaTuples(ASTNode.java:494)
+	at de.tudresden.inf.st.openapi.ast.ASTNode.collect_contributors_OpenAPIObject_schemaTuples(ASTNode.java:494)
+	at de.tudresden.inf.st.openapi.ast.OpenAPIObject.survey_OpenAPIObject_schemaTuples(OpenAPIObject.java:1102)
+	at de.tudresden.inf.st.openapi.ast.OpenAPIObject.schemaTuples_compute(OpenAPIObject.java:1232)
+	at de.tudresden.inf.st.openapi.ast.OpenAPIObject.schemaTuples(OpenAPIObject.java:1214)
+	at openapi.OpenAPIMain_test.test(OpenAPIMain_test.java:72)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:688)
+	at org.junit.jupiter.engine.execution.MethodInvocation.proceed(MethodInvocation.java:60)
+	at org.junit.jupiter.engine.execution.InvocationInterceptorChain$ValidatingInvocation.proceed(InvocationInterceptorChain.java:131)
+	at org.junit.jupiter.engine.extension.TimeoutExtension.intercept(TimeoutExtension.java:149)
+	at org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestableMethod(TimeoutExtension.java:140)
+	at org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestMethod(TimeoutExtension.java:84)
+	at org.junit.jupiter.engine.execution.ExecutableInvoker$ReflectiveInterceptorCall.lambda$ofVoidMethod$0(ExecutableInvoker.java:115)
+	at org.junit.jupiter.engine.execution.ExecutableInvoker.lambda$invoke$0(ExecutableInvoker.java:105)
+	at org.junit.jupiter.engine.execution.InvocationInterceptorChain$InterceptedInvocation.proceed(InvocationInterceptorChain.java:106)
+	at org.junit.jupiter.engine.execution.InvocationInterceptorChain.proceed(InvocationInterceptorChain.java:64)
+	at org.junit.jupiter.engine.execution.InvocationInterceptorChain.chainAndInvoke(InvocationInterceptorChain.java:45)
+	at org.junit.jupiter.engine.execution.InvocationInterceptorChain.invoke(InvocationInterceptorChain.java:37)
+	at org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(ExecutableInvoker.java:104)
+	at org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(ExecutableInvoker.java:98)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeTestMethod$6(TestMethodTestDescriptor.java:210)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeTestMethod(TestMethodTestDescriptor.java:206)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:131)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:65)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:139)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:129)
+	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:127)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:126)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:84)
+	at java.base/java.util.ArrayList.forEach(ArrayList.java:1541)
+	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:143)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:129)
+	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:127)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:126)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:84)
+	at java.base/java.util.ArrayList.forEach(ArrayList.java:1541)
+	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:143)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:129)
+	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:127)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:126)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:84)
+	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(SameThreadHierarchicalTestExecutorService.java:32)
+	at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:57)
+	at org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:51)
+	at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:108)
+	at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:88)
+	at org.junit.platform.launcher.core.EngineExecutionOrchestrator.lambda$execute$0(EngineExecutionOrchestrator.java:54)
+	at org.junit.platform.launcher.core.EngineExecutionOrchestrator.withInterceptedStreams(EngineExecutionOrchestrator.java:67)
+	at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:52)
+	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:96)
+	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:75)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.processAllTestClasses(JUnitPlatformTestClassProcessor.java:99)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.access$000(JUnitPlatformTestClassProcessor.java:79)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor.stop(JUnitPlatformTestClassProcessor.java:75)
+	at org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.stop(SuiteTestClassProcessor.java:61)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:36)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
+	at org.gradle.internal.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:33)
+	at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:94)
+	at com.sun.proxy.$Proxy2.stop(Unknown Source)
+	at org.gradle.api.internal.tasks.testing.worker.TestWorker.stop(TestWorker.java:133)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:36)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
+	at org.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection$DispatchWrapper.dispatch(MessageHubBackedObjectConnection.java:182)
+	at org.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection$DispatchWrapper.dispatch(MessageHubBackedObjectConnection.java:164)
+	at org.gradle.internal.remote.internal.hub.MessageHub$Handler.run(MessageHub.java:414)
+	at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:64)
+	at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:48)
+	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
+	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
+	at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:56)
+	at java.base/java.lang.Thread.run(Thread.java:829)
+</failure>
+  </testcase>
+  <system-out><![CDATA[1
 Loading expression DSL file 'petstore-v2.yaml'.
 ]]></system-out>
-  <system-err><![CDATA[SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
-SLF4J: Defaulting to no-operation (NOP) logger implementation
-SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
-]]></system-err>
+  <system-err><![CDATA[]]></system-err>
 </testsuite>
diff --git a/build/test-results/test/binary/output.bin b/build/test-results/test/binary/output.bin
index 771876248854dcd16aa4dd7dca804351fe458c0c..b2cafb86a330d768ceb0ed22fa2b81c8e6f3f8be 100644
GIT binary patch
delta 13
UcmX@eV#CVF#K>$oS(DKm01)>AGXMYp

literal 577
zcmZQ%Vq`Yu<zi%FbnwYfOv%hkS4gcWC`v6Z&dkqKa0&KNNXyJgRZur9NGvWc&o4^R
zOU}>LO)X2!D=F4B)HBdC(90^$&r{a}o8gMr3^U!7{1V;7(vpnSypqhq%zVAXf`a0L
z{1UL4X2=G)<25KTsko#lF}WnMAQP-LJvBckKRK}^Gd~a0O&<7-N~uiE0~_L;k(!*H
zUs@7cl9`iPQW>0DRF;{Xs%wbsEJM6z6{MCFm*f|v>XsSlRVL=<fC7bqiP0(8$IZmc
zO2I8LGbc4gp(I}+CqFSoAvq_pxL83czbIX=I48{{OD{9GAV)8_B(Wqj*(X0eJ+;Uw
zGcP5zNJ)>Ei-C#J9%_n9YFc7xP6;TYO7a!*@^$kIQj5S|SJ3eD571P|0qa!&nU<QH
zng=p3KM!m~2-Jw+)KrCxl9B=|ef{$Ca;WY3Md|v<`6;QzdKo3TIm(#sP)N%!Qb;Q;
UD#=JKQb<WHNzBYC*5l;@00J+(NB{r;

diff --git a/build/test-results/test/binary/output.bin.idx b/build/test-results/test/binary/output.bin.idx
index 9706eed18037e5fadeb6cba0825aa2d189605b66..42aeebea8d46c35d355eb76aef19d1abdb6becfc 100644
GIT binary patch
literal 36
RcmZQ%Vq|1M1?>OP004-<5B&fD

literal 36
WcmZQ%Vq|1M0gT!ZE@J|eehB~w69Ihy

diff --git a/build/test-results/test/binary/results.bin b/build/test-results/test/binary/results.bin
index 6530dd67ad20d1d227125da75a2bd76f3a62c9df..d4ad4c7c961d027b3b361fa11d92845108376246 100644
GIT binary patch
literal 10717
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
GCIJAFCuNHO

delta 38
ocmcZ`95}&HA;}<lIwNCyNosM4h9;C^_{qY+z*v)HkS4$Y0RPzwqW}N^

diff --git a/gen-api-ex/1password.com-events-1.0.0-actual.json b/gen-api-ex/1password.com-events-1.0.0-actual.json
new file mode 100644
index 00000000..e69de29b
diff --git a/gen-api-ex/1password.com-events-1.0.0-expected.json b/gen-api-ex/1password.com-events-1.0.0-expected.json
new file mode 100644
index 00000000..5621a5d9
--- /dev/null
+++ b/gen-api-ex/1password.com-events-1.0.0-expected.json
@@ -0,0 +1,449 @@
+{
+  "openapi" : "3.0.0",
+  "info" : {
+    "description" : "1Password Events API Specification.",
+    "title" : "Events API",
+    "version" : "1.0.0",
+    "x-providerName" : "1password.com",
+    "x-logo" : {
+      "url" : "https://api.apis.guru/v2/cache/logo/https_upload.wikimedia.org_wikipedia_commons_thumb_e_e3_1password-logo.svg_1280px-1password-logo.svg.png"
+    },
+    "x-apisguru-categories" : [ "security" ],
+    "x-serviceName" : "events",
+    "x-origin" : [ {
+      "format" : "openapi",
+      "url" : "https://i.1password.com/media/1password-events-reporting/1password-events-api.yaml",
+      "version" : "3.0"
+    } ]
+  },
+  "servers" : [ {
+    "url" : "https://events.1password.com",
+    "description" : "1Password"
+  }, {
+    "url" : "https://events.1password.ca",
+    "description" : "1Password CA"
+  }, {
+    "url" : "https://events.1password.eu",
+    "description" : "1Password EU"
+  }, {
+    "url" : "https://events.ent.1password.com",
+    "description" : "1Password Enterprise"
+  } ],
+  "paths" : {
+    "/api/auth/introspect" : {
+      "get" : {
+        "tags" : [ "auth" ],
+        "summary" : "Performs introspection of the provided Bearer JWT token",
+        "operationId" : "getAuthIntrospect",
+        "responses" : {
+          "200" : {
+            "$ref" : "#/components/responses/IntrospectResponse"
+          },
+          "401" : {
+            "$ref" : "#/components/responses/UnauthorizedErrorResponse"
+          },
+          "default" : {
+            "$ref" : "#/components/responses/GenericErrorResponse"
+          }
+        },
+        "security" : [ {
+          "jwtsa" : [ ]
+        } ]
+      }
+    },
+    "/api/v1/itemusages" : {
+      "post" : {
+        "tags" : [ "api-v1" ],
+        "summary" : "Retrieves item usages",
+        "description" : "This endpoint requires your JSON Web Token to have the *itemusages* feature.",
+        "operationId" : "getItemUsages",
+        "requestBody" : {
+          "$ref" : "#/components/requestBodies/ItemUsagesRequest"
+        },
+        "responses" : {
+          "200" : {
+            "$ref" : "#/components/responses/ItemUsagesResponse"
+          },
+          "401" : {
+            "$ref" : "#/components/responses/UnauthorizedErrorResponse"
+          },
+          "default" : {
+            "$ref" : "#/components/responses/GenericErrorResponse"
+          }
+        },
+        "security" : [ {
+          "jwtsa" : [ ]
+        } ]
+      }
+    },
+    "/api/v1/signinattempts" : {
+      "post" : {
+        "tags" : [ "api-v1" ],
+        "summary" : "Retrieves sign-in attempts",
+        "description" : "This endpoint requires your JSON Web Token to have the *signinattempts* feature.",
+        "operationId" : "getSignInAttempts",
+        "requestBody" : {
+          "$ref" : "#/components/requestBodies/SignInAttemptsRequest"
+        },
+        "responses" : {
+          "200" : {
+            "$ref" : "#/components/responses/SignInAttemptsResponse"
+          },
+          "401" : {
+            "$ref" : "#/components/responses/UnauthorizedErrorResponse"
+          },
+          "default" : {
+            "$ref" : "#/components/responses/GenericErrorResponse"
+          }
+        },
+        "security" : [ {
+          "jwtsa" : [ ]
+        } ]
+      }
+    }
+  },
+  "components" : {
+    "examples" : {
+      "Cursor" : {
+        "summary" : "Used for continued calling with a cursor",
+        "value" : {
+          "cursor" : "aGVsbG8hIGlzIGl0IG1lIHlvdSBhcmUgbG9va2luZyBmb3IK"
+        }
+      },
+      "ResetCursor" : {
+        "summary" : "Used for reseting the cursor",
+        "value" : {
+          "limit" : 100,
+          "start_time" : "2021-06-11T16:32:50-03:00"
+        }
+      }
+    },
+    "requestBodies" : {
+      "CursorRequest" : {
+        "content" : {
+          "application/json" : {
+            "examples" : {
+              "Continuing cursor" : {
+                "$ref" : "#/components/examples/Cursor",
+                "abs$ref" : "file:/E:/bachelor-thesis/SigTest/bachelor-thesis-jastadd/build/resources/main/1password.com-events-1.0.0.json#/components/examples/Cursor"
+              },
+              "Resetting cursor" : {
+                "$ref" : "#/components/examples/ResetCursor",
+                "abs$ref" : "file:/E:/bachelor-thesis/SigTest/bachelor-thesis-jastadd/build/resources/main/1password.com-events-1.0.0.json#/components/examples/ResetCursor"
+              }
+            },
+            "schema" : {
+              "oneOf" : [ {
+                "$ref" : "#/components/schemas/Cursor"
+              }, {
+                "$ref" : "#/components/schemas/ResetCursor"
+              } ]
+            }
+          }
+        }
+      },
+      "ItemUsagesRequest" : {
+        "$ref" : "#/components/requestBodies/CursorRequest"
+      },
+      "SignInAttemptsRequest" : {
+        "$ref" : "#/components/requestBodies/CursorRequest"
+      }
+    },
+    "responses" : {
+      "GenericErrorResponse" : {
+        "description" : "Generic error",
+        "content" : {
+          "application/json" : {
+            "schema" : {
+              "$ref" : "#/components/schemas/Error"
+            }
+          }
+        }
+      },
+      "IntrospectResponse" : {
+        "description" : "Introspection object",
+        "content" : {
+          "application/json" : {
+            "schema" : {
+              "$ref" : "#/components/schemas/Introspection"
+            }
+          }
+        }
+      },
+      "ItemUsagesResponse" : {
+        "description" : "Item usages response object",
+        "content" : {
+          "application/json" : {
+            "schema" : {
+              "$ref" : "#/components/schemas/ItemUsageItems"
+            }
+          }
+        }
+      },
+      "SignInAttemptsResponse" : {
+        "description" : "Sign-in attempts response object",
+        "content" : {
+          "application/json" : {
+            "schema" : {
+              "$ref" : "#/components/schemas/SignInAttemptItems"
+            }
+          }
+        }
+      },
+      "UnauthorizedErrorResponse" : {
+        "description" : "Unauthorized",
+        "content" : {
+          "application/json" : {
+            "schema" : {
+              "$ref" : "#/components/schemas/Error"
+            }
+          }
+        }
+      }
+    },
+    "schemas" : {
+      "Client" : {
+        "description" : "Metadata gathered about the client",
+        "properties" : {
+          "app_name" : {
+            "example" : "1Password Extension",
+            "type" : "string"
+          },
+          "app_version" : {
+            "example" : "20127",
+            "type" : "string"
+          },
+          "ip_address" : {
+            "example" : "13.227.95.22",
+            "type" : "string"
+          },
+          "os_name" : {
+            "example" : "MacOSX",
+            "type" : "string"
+          },
+          "os_version" : {
+            "example" : "10.15.6",
+            "type" : "string"
+          },
+          "platform_name" : {
+            "example" : "Chrome",
+            "type" : "string"
+          },
+          "platform_version" : {
+            "description" : "Depending on the platform used, this can be the version of the browser that the client extension is installed, the model of computer that the native application is installed or the machine's CPU version that the CLI was installed",
+            "type" : "string"
+          }
+        }
+      },
+      "Cursor" : {
+        "description" : "Cursor",
+        "properties" : {
+          "cursor" : {
+            "description" : "Cursor to fetch more data if available or continue the polling process if required",
+            "example" : "aGVsbG8hIGlzIGl0IG1lIHlvdSBhcmUgbG9va2luZyBmb3IK",
+            "type" : "string"
+          }
+        }
+      },
+      "CursorCollection" : {
+        "description" : "Common cursor properties for collection responses",
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/Cursor"
+        }, {
+          "properties" : {
+            "has_more" : {
+              "description" : "Whether there may still be more data to fetch using the returned cursor. If true, the subsequent request could still be empty.",
+              "type" : "boolean"
+            }
+          }
+        } ]
+      },
+      "DateTimeRFC3339" : {
+        "example" : "2020-06-11T16:32:50-03:00",
+        "format" : "date-time",
+        "type" : "string"
+      },
+      "Details" : {
+        "description" : "Additional information about the sign-in attempt",
+        "properties" : {
+          "value" : {
+            "description" : "For firewall prevented sign-ins, the value is the chosen continent, country, etc. that blocked the sign-in attempt",
+            "example" : "Europe",
+            "type" : "string"
+          }
+        }
+      },
+      "Error" : {
+        "properties" : {
+          "Error" : {
+            "properties" : {
+              "Message" : {
+                "description" : "The error message.",
+                "type" : "string"
+              }
+            },
+            "type" : "object"
+          }
+        },
+        "type" : "object"
+      },
+      "Introspection" : {
+        "properties" : {
+          "Features" : {
+            "example" : [ "itemusages", "signinattempts" ],
+            "type" : "array",
+            "items" : {
+              "type" : "string"
+            }
+          },
+          "IssuedAt" : {
+            "$ref" : "#/components/schemas/DateTimeRFC3339"
+          },
+          "UUID" : {
+            "type" : "string"
+          }
+        },
+        "type" : "object"
+      },
+      "ItemUsage" : {
+        "description" : "A single item usage object",
+        "properties" : {
+          "client" : {
+            "$ref" : "#/components/schemas/Client"
+          },
+          "item_uuid" : {
+            "$ref" : "#/components/schemas/UUID"
+          },
+          "timestamp" : {
+            "$ref" : "#/components/schemas/DateTimeRFC3339"
+          },
+          "used_version" : {
+            "type" : "integer"
+          },
+          "user" : {
+            "$ref" : "#/components/schemas/User"
+          },
+          "uuid" : {
+            "$ref" : "#/components/schemas/UUID"
+          },
+          "vault_uuid" : {
+            "$ref" : "#/components/schemas/UUID"
+          }
+        }
+      },
+      "ItemUsageItems" : {
+        "description" : "An object wrapping cursor properties and a list of items usages",
+        "allOf" : [ {
+          "properties" : {
+            "items" : {
+              "type" : "array",
+              "items" : {
+                "$ref" : "#/components/schemas/ItemUsage"
+              }
+            }
+          }
+        }, {
+          "$ref" : "#/components/schemas/CursorCollection"
+        } ]
+      },
+      "ResetCursor" : {
+        "description" : "Reset cursor",
+        "properties" : {
+          "end_time" : {
+            "$ref" : "#/components/schemas/DateTimeRFC3339"
+          },
+          "limit" : {
+            "maximum" : 1000,
+            "minimum" : 1,
+            "type" : "number"
+          },
+          "start_time" : {
+            "$ref" : "#/components/schemas/DateTimeRFC3339"
+          }
+        }
+      },
+      "SignInAttempt" : {
+        "description" : "A single sign-in attempt object",
+        "properties" : {
+          "category" : {
+            "example" : "firewall_failed",
+            "type" : "string",
+            "enum" : [ "success", "credentials_failed", "mfa_failed", "modern_version_failed", "firewall_failed", "firewall_reported_success" ]
+          },
+          "client" : {
+            "$ref" : "#/components/schemas/Client"
+          },
+          "country" : {
+            "description" : "Country ISO Code",
+            "example" : "France",
+            "type" : "string"
+          },
+          "details" : {
+            "$ref" : "#/components/schemas/Details"
+          },
+          "session_uuid" : {
+            "$ref" : "#/components/schemas/UUID"
+          },
+          "target_user" : {
+            "$ref" : "#/components/schemas/User"
+          },
+          "timestamp" : {
+            "$ref" : "#/components/schemas/DateTimeRFC3339"
+          },
+          "type" : {
+            "example" : "continent_blocked",
+            "type" : "string",
+            "enum" : [ "credentials_ok", "mfa_ok", "password_secret_bad", "mfa_missing", "totp_disabled", "totp_bad", "totp_timeout", "u2f_disabled", "u2f_bad", "u2f_timout", "duo_disabled", "duo_bad", "duo_timeout", "duo_native_bad", "platform_secret_disabled", "platform_secret_bad", "platform_secret_proxy", "code_disabled", "code_bad", "code_timeout", "ip_blocked", "continent_blocked", "country_blocked", "anonymous_blocked", "all_blocked", "modern_version_missing", "modern_version_old" ]
+          },
+          "uuid" : {
+            "$ref" : "#/components/schemas/UUID"
+          }
+        }
+      },
+      "SignInAttemptItems" : {
+        "description" : "An object wrapping cursor properties and a list of sign-in attempts",
+        "allOf" : [ {
+          "properties" : {
+            "items" : {
+              "type" : "array",
+              "items" : {
+                "$ref" : "#/components/schemas/SignInAttempt"
+              }
+            }
+          }
+        }, {
+          "$ref" : "#/components/schemas/CursorCollection"
+        } ]
+      },
+      "UUID" : {
+        "example" : "56YE2TYN2VFYRLNSHKPW5NVT5E",
+        "type" : "string"
+      },
+      "User" : {
+        "description" : "User object",
+        "properties" : {
+          "email" : {
+            "format" : "email",
+            "type" : "string"
+          },
+          "name" : {
+            "description" : "Full name",
+            "example" : "Jack O'Neill",
+            "type" : "string"
+          },
+          "uuid" : {
+            "$ref" : "#/components/schemas/UUID"
+          }
+        }
+      }
+    },
+    "securitySchemes" : {
+      "jwtsa" : {
+        "type" : "http",
+        "description" : "A JWT SA token issued to this service",
+        "scheme" : "bearer",
+        "bearerFormat" : "JWT-SA"
+      }
+    }
+  }
+}
\ No newline at end of file
diff --git a/gen-api-ex/6-dot-authentiqio.appspot.com-6-actual.json b/gen-api-ex/6-dot-authentiqio.appspot.com-6-actual.json
new file mode 100644
index 00000000..f9464ad0
--- /dev/null
+++ b/gen-api-ex/6-dot-authentiqio.appspot.com-6-actual.json
@@ -0,0 +1,910 @@
+{
+  "openapi" : "3.0.0",
+  "info" : {
+    "contact" : {
+      "email" : "hello@authentiq.com",
+      "name" : "Authentiq team",
+      "url" : "http://authentiq.io/support"
+    },
+    "description" : "Strong authentication, without the passwords.",
+    "license" : {
+      "name" : "Apache 2.0",
+      "url" : "http://www.apache.org/licenses/LICENSE-2.0.html"
+    },
+    "termsOfService" : "http://authentiq.com/terms/",
+    "title" : "Authentiq API",
+    "version" : "6",
+    "x-providerName" : "6-dot-authentiqio.appspot.com",
+    "x-logo" : {
+      "backgroundColor" : "#F26641",
+      "url" : "https://api.apis.guru/v2/cache/logo/https_www.authentiq.com_theme_images_authentiq-logo-a-inverse.svg"
+    },
+    "x-apisguru-categories" : [ "security" ],
+    "x-origin" : [ {
+      "format" : "openapi",
+      "url" : "https://raw.githubusercontent.com/AuthentiqID/authentiq-docs/master/docs/swagger/issuer.yaml",
+      "version" : "3.0"
+    } ]
+  },
+  "servers" : [ {
+    "url" : "https://6-dot-authentiqio.appspot.com"
+  } ],
+  "paths" : {
+    "/scope/{job}" : {
+      "head" : {
+        "tags" : [ "scope", "head" ],
+        "description" : "HEAD to get the status of a verification job",
+        "operationId" : "sign_retrieve_head",
+        "parameters" : [ {
+          "$ref" : "#/components/parameters/JobID"
+        } ],
+        "responses" : {
+          "200" : {
+            "description" : "Confirmed and signed"
+          },
+          "default" : {
+            "$ref" : "#/components/responses/ErrorResponse"
+          },
+          "204" : {
+            "description" : "Confirmed, waiting for signing"
+          },
+          "404" : {
+            "description" : "Job not found `unknown-job`",
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/Error"
+                }
+              }
+            }
+          }
+        }
+      },
+      "get" : {
+        "tags" : [ "scope", "get" ],
+        "description" : "get the status / current content of a verification job",
+        "operationId" : "sign_retrieve",
+        "parameters" : [ {
+          "$ref" : "#/components/parameters/JobID"
+        } ],
+        "responses" : {
+          "200" : {
+            "description" : "Successful response (JWT)",
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "properties" : {
+                    "sub" : {
+                      "description" : "base64safe encoded public signing key",
+                      "type" : "string"
+                    },
+                    "field" : {
+                      "type" : "string"
+                    },
+                    "exp" : {
+                      "type" : "integer"
+                    }
+                  },
+                  "type" : "object",
+                  "title" : "JWT"
+                }
+              },
+              "application/jwt" : {
+                "schema" : {
+                  "properties" : {
+                    "sub" : {
+                      "description" : "base64safe encoded public signing key",
+                      "type" : "string"
+                    },
+                    "field" : {
+                      "type" : "string"
+                    },
+                    "exp" : {
+                      "type" : "integer"
+                    }
+                  },
+                  "type" : "object",
+                  "title" : "JWT"
+                }
+              }
+            }
+          },
+          "default" : {
+            "$ref" : "#/components/responses/ErrorResponse"
+          },
+          "204" : {
+            "description" : "Confirmed, waiting for signing"
+          },
+          "404" : {
+            "description" : "Job not found `unknown-job`",
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/Error"
+                }
+              },
+              "application/jwt" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/Error"
+                }
+              }
+            }
+          }
+        }
+      },
+      "put" : {
+        "tags" : [ "scope", "put" ],
+        "description" : "authority updates a JWT with its signature\nSee: https://github.com/skion/authentiq/wiki/JWT-Examples\n",
+        "operationId" : "sign_update",
+        "parameters" : [ {
+          "$ref" : "#/components/parameters/JobID"
+        } ],
+        "responses" : {
+          "200" : {
+            "description" : "Successfully updated",
+            "content" : {
+              "application/jwt" : {
+                "schema" : {
+                  "properties" : {
+                    "jwt" : {
+                      "description" : "result is JWT or JSON??",
+                      "type" : "string"
+                    },
+                    "status" : {
+                      "description" : "ready",
+                      "type" : "string"
+                    }
+                  },
+                  "type" : "object"
+                }
+              }
+            }
+          },
+          "default" : {
+            "$ref" : "#/components/responses/ErrorResponse"
+          },
+          "404" : {
+            "description" : "Job not found `unknown-job`",
+            "content" : {
+              "application/jwt" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/Error"
+                }
+              }
+            }
+          },
+          "409" : {
+            "description" : "Job not confirmed yet `confirm-first`",
+            "content" : {
+              "application/jwt" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/Error"
+                }
+              }
+            }
+          }
+        }
+      },
+      "post" : {
+        "tags" : [ "scope", "post" ],
+        "description" : "this is a scope confirmation",
+        "operationId" : "sign_confirm",
+        "parameters" : [ {
+          "$ref" : "#/components/parameters/JobID"
+        } ],
+        "responses" : {
+          "default" : {
+            "$ref" : "#/components/responses/ErrorResponse"
+          },
+          "202" : {
+            "description" : "Successfully confirmed",
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "properties" : {
+                    "status" : {
+                      "description" : "confirmed",
+                      "type" : "string"
+                    }
+                  },
+                  "type" : "object"
+                }
+              }
+            }
+          },
+          "401" : {
+            "description" : "Confirmation error `auth-error`",
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/Error"
+                }
+              }
+            }
+          },
+          "404" : {
+            "description" : "Job not found `unknown-job`",
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/Error"
+                }
+              }
+            }
+          },
+          "405" : {
+            "description" : "JWT POSTed to scope `not-supported`",
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/Error"
+                }
+              }
+            }
+          }
+        }
+      },
+      "delete" : {
+        "tags" : [ "scope", "delete" ],
+        "description" : "delete a verification job",
+        "operationId" : "sign_delete",
+        "parameters" : [ {
+          "$ref" : "#/components/parameters/JobID"
+        } ],
+        "responses" : {
+          "200" : {
+            "description" : "Successfully deleted",
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "properties" : {
+                    "status" : {
+                      "description" : "done",
+                      "type" : "string"
+                    }
+                  },
+                  "type" : "object"
+                }
+              }
+            }
+          },
+          "default" : {
+            "$ref" : "#/components/responses/ErrorResponse"
+          },
+          "404" : {
+            "description" : "Job not found `unknown-job`",
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/Error"
+                }
+              }
+            }
+          }
+        }
+      }
+    },
+    "/scope" : {
+      "post" : {
+        "tags" : [ "scope", "post" ],
+        "description" : "scope verification request\nSee: https://github.com/skion/authentiq/wiki/JWT-Examples\n",
+        "operationId" : "sign_request",
+        "parameters" : [ {
+          "description" : "test only mode, using test issuer",
+          "required" : false,
+          "schema" : {
+            "type" : "integer"
+          },
+          "in" : "query",
+          "name" : "test"
+        } ],
+        "requestBody" : {
+          "description" : "Claims of scope",
+          "required" : true,
+          "content" : {
+            "application/jwt" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/Claims"
+              }
+            }
+          }
+        },
+        "responses" : {
+          "default" : {
+            "$ref" : "#/components/responses/ErrorResponse"
+          },
+          "201" : {
+            "description" : "Successful response",
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "properties" : {
+                    "job" : {
+                      "description" : "20-character ID",
+                      "type" : "string"
+                    },
+                    "status" : {
+                      "description" : "waiting",
+                      "type" : "string"
+                    }
+                  },
+                  "type" : "object"
+                }
+              }
+            }
+          },
+          "429" : {
+            "description" : "Too Many Requests on same address / number `rate-limit`",
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/Error"
+                }
+              }
+            }
+          }
+        }
+      }
+    },
+    "/login" : {
+      "post" : {
+        "tags" : [ "login", "post" ],
+        "description" : "push sign-in request\nSee: https://github.com/skion/authentiq/wiki/JWT-Examples\n",
+        "operationId" : "push_login_request",
+        "parameters" : [ {
+          "description" : "URI App will connect to",
+          "required" : true,
+          "schema" : {
+            "type" : "string"
+          },
+          "in" : "query",
+          "name" : "callback"
+        } ],
+        "requestBody" : {
+          "description" : "Push Token.",
+          "required" : true,
+          "content" : {
+            "application/jwt" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/PushToken"
+              }
+            }
+          }
+        },
+        "responses" : {
+          "200" : {
+            "description" : "Successful response",
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "properties" : {
+                    "status" : {
+                      "description" : "sent",
+                      "type" : "string"
+                    }
+                  },
+                  "type" : "object"
+                }
+              }
+            }
+          },
+          "default" : {
+            "$ref" : "#/components/responses/ErrorResponse"
+          },
+          "401" : {
+            "description" : "Unauthorized for this callback audience `aud-error` or JWT should be self-signed `auth-error`",
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/Error"
+                }
+              }
+            }
+          }
+        }
+      }
+    },
+    "/key" : {
+      "post" : {
+        "tags" : [ "key", "post" ],
+        "description" : "Register a new ID `JWT(sub, devtoken)`\n\nv5: `JWT(sub, pk, devtoken, ...)`\n\nSee: https://github.com/skion/authentiq/wiki/JWT-Examples\n",
+        "operationId" : "key_register",
+        "requestBody" : {
+          "$ref" : "#/components/requestBodies/AuthentiqID"
+        },
+        "responses" : {
+          "default" : {
+            "$ref" : "#/components/responses/ErrorResponse"
+          },
+          "201" : {
+            "description" : "Successfully registered",
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "properties" : {
+                    "secret" : {
+                      "description" : "revoke key",
+                      "type" : "string"
+                    },
+                    "status" : {
+                      "description" : "registered",
+                      "type" : "string"
+                    }
+                  },
+                  "type" : "object"
+                }
+              }
+            }
+          },
+          "409" : {
+            "description" : "Key already registered `duplicate-key`",
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/Error"
+                }
+              }
+            }
+          }
+        }
+      },
+      "delete" : {
+        "tags" : [ "key", "delete" ],
+        "description" : "Revoke an Authentiq ID using email & phone.\n\nIf called with `email` and `phone` only, a verification code \nwill be sent by email. Do a second call adding `code` to \ncomplete the revocation.\n",
+        "operationId" : "key_revoke_nosecret",
+        "parameters" : [ {
+          "description" : "primary email associated to Key (ID)",
+          "required" : true,
+          "schema" : {
+            "type" : "string"
+          },
+          "in" : "query",
+          "name" : "email"
+        }, {
+          "description" : "primary phone number, international representation",
+          "required" : true,
+          "schema" : {
+            "type" : "string"
+          },
+          "in" : "query",
+          "name" : "phone"
+        }, {
+          "description" : "verification code sent by email",
+          "required" : false,
+          "schema" : {
+            "type" : "string"
+          },
+          "in" : "query",
+          "name" : "code"
+        } ],
+        "responses" : {
+          "200" : {
+            "description" : "Successfully deleted",
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "properties" : {
+                    "status" : {
+                      "description" : "pending or done",
+                      "type" : "string"
+                    }
+                  },
+                  "type" : "object"
+                }
+              }
+            }
+          },
+          "default" : {
+            "$ref" : "#/components/responses/ErrorResponse"
+          },
+          "401" : {
+            "description" : "Authentication error `auth-error`",
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/Error"
+                }
+              }
+            }
+          },
+          "404" : {
+            "description" : "Unknown key `unknown-key`",
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/Error"
+                }
+              }
+            }
+          },
+          "409" : {
+            "description" : "Confirm with code sent `confirm-first`",
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/Error"
+                }
+              }
+            }
+          }
+        }
+      }
+    },
+    "/key/{PK}" : {
+      "head" : {
+        "tags" : [ "key", "head" ],
+        "description" : "HEAD info on Authentiq ID\n",
+        "parameters" : [ {
+          "$ref" : "#/components/parameters/PK"
+        } ],
+        "responses" : {
+          "200" : {
+            "description" : "Key exists"
+          },
+          "default" : {
+            "$ref" : "#/components/responses/ErrorResponse"
+          },
+          "410" : {
+            "description" : "Key is revoked `revoked-key`",
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/Error"
+                }
+              }
+            }
+          },
+          "404" : {
+            "description" : "Unknown key `unknown-key`",
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/Error"
+                }
+              }
+            }
+          }
+        }
+      },
+      "get" : {
+        "tags" : [ "key", "get" ],
+        "description" : "Get public details of an Authentiq ID.\n",
+        "operationId" : "key_retrieve",
+        "parameters" : [ {
+          "$ref" : "#/components/parameters/PK"
+        } ],
+        "responses" : {
+          "200" : {
+            "description" : "Successfully retrieved",
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "properties" : {
+                    "sub" : {
+                      "description" : "base64safe encoded public signing key",
+                      "type" : "string"
+                    },
+                    "since" : {
+                      "format" : "date-time",
+                      "type" : "string"
+                    },
+                    "status" : {
+                      "type" : "string"
+                    }
+                  },
+                  "type" : "object",
+                  "title" : "JWT"
+                }
+              }
+            }
+          },
+          "default" : {
+            "$ref" : "#/components/responses/ErrorResponse"
+          },
+          "410" : {
+            "description" : "Key is revoked (gone). `revoked-key`",
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/Error"
+                }
+              }
+            }
+          },
+          "404" : {
+            "description" : "Unknown key `unknown-key`",
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/Error"
+                }
+              }
+            }
+          }
+        }
+      },
+      "put" : {
+        "tags" : [ "key", "put" ],
+        "description" : "Update Authentiq ID by replacing the object.\n\nv4: `JWT(sub,email,phone)` to bind email/phone hash; \n\nv5: POST issuer-signed email & phone scopes\nand PUT to update registration `JWT(sub, pk, devtoken, ...)`\n\nSee: https://github.com/skion/authentiq/wiki/JWT-Examples\n",
+        "operationId" : "key_bind",
+        "parameters" : [ {
+          "$ref" : "#/components/parameters/PK"
+        } ],
+        "requestBody" : {
+          "$ref" : "#/components/requestBodies/AuthentiqID"
+        },
+        "responses" : {
+          "200" : {
+            "description" : "Successfully updated",
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "properties" : {
+                    "status" : {
+                      "description" : "confirmed",
+                      "type" : "string"
+                    }
+                  },
+                  "type" : "object"
+                }
+              }
+            }
+          },
+          "default" : {
+            "$ref" : "#/components/responses/ErrorResponse"
+          },
+          "404" : {
+            "description" : "Unknown key `unknown-key`",
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/Error"
+                }
+              }
+            }
+          },
+          "409" : {
+            "description" : "Already bound to another key `duplicate-hash`",
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/Error"
+                }
+              }
+            }
+          }
+        }
+      },
+      "post" : {
+        "tags" : [ "key", "post" ],
+        "description" : "update properties of an Authentiq ID.\n(not operational in v4; use PUT for now)\n\nv5: POST issuer-signed email & phone scopes in\na self-signed JWT\n\nSee: https://github.com/skion/authentiq/wiki/JWT-Examples\n",
+        "operationId" : "key_update",
+        "parameters" : [ {
+          "$ref" : "#/components/parameters/PK"
+        } ],
+        "requestBody" : {
+          "$ref" : "#/components/requestBodies/AuthentiqID"
+        },
+        "responses" : {
+          "200" : {
+            "description" : "Successfully updated",
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "properties" : {
+                    "status" : {
+                      "description" : "confirmed",
+                      "type" : "string"
+                    }
+                  },
+                  "type" : "object"
+                }
+              }
+            }
+          },
+          "default" : {
+            "$ref" : "#/components/responses/ErrorResponse"
+          },
+          "404" : {
+            "description" : "Unknown key `unknown-key`",
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/Error"
+                }
+              }
+            }
+          }
+        }
+      },
+      "delete" : {
+        "tags" : [ "key", "delete" ],
+        "description" : "Revoke an Identity (Key) with a revocation secret",
+        "operationId" : "key_revoke",
+        "parameters" : [ {
+          "$ref" : "#/components/parameters/PK"
+        }, {
+          "description" : "revokation secret",
+          "required" : true,
+          "schema" : {
+            "type" : "string"
+          },
+          "in" : "query",
+          "name" : "secret"
+        } ],
+        "responses" : {
+          "200" : {
+            "description" : "Successful response",
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "properties" : {
+                    "status" : {
+                      "description" : "done",
+                      "type" : "string"
+                    }
+                  },
+                  "type" : "object"
+                }
+              }
+            }
+          },
+          "default" : {
+            "$ref" : "#/components/responses/ErrorResponse"
+          },
+          "401" : {
+            "description" : "Key not found / wrong code `auth-error`",
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/Error"
+                }
+              }
+            }
+          },
+          "404" : {
+            "description" : "Unknown key `unknown-key`",
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/Error"
+                }
+              }
+            }
+          }
+        }
+      }
+    }
+  },
+  "components" : {
+    "parameters" : {
+      "PK" : {
+        "description" : "Public Signing Key - Authentiq ID (43 chars)",
+        "required" : true,
+        "schema" : {
+          "type" : "string"
+        },
+        "in" : "path",
+        "name" : "PK"
+      },
+      "JobID" : {
+        "description" : "Job ID (20 chars)",
+        "required" : true,
+        "schema" : {
+          "type" : "string"
+        },
+        "in" : "path",
+        "name" : "job"
+      }
+    },
+    "requestBodies" : {
+      "AuthentiqID" : {
+        "description" : "Authentiq ID to register",
+        "required" : true,
+        "content" : {
+          "application/jwt" : {
+            "schema" : {
+              "$ref" : "#/components/schemas/AuthentiqID"
+            }
+          }
+        }
+      }
+    },
+    "responses" : {
+      "ErrorResponse" : {
+        "description" : "Error response",
+        "content" : {
+          "*/*" : {
+            "schema" : {
+              "$ref" : "#/components/schemas/Error"
+            }
+          }
+        }
+      }
+    },
+    "schemas" : {
+      "Claims" : {
+        "description" : "Claim in JWT format, self- or issuer-signed. \n",
+        "properties" : {
+          "sub" : {
+            "description" : "UUID",
+            "type" : "string"
+          },
+          "phone" : {
+            "type" : "string"
+          },
+          "scope" : {
+            "description" : "claim scope",
+            "type" : "string"
+          },
+          "type" : {
+            "type" : "string"
+          },
+          "email" : {
+            "type" : "string"
+          }
+        },
+        "required" : [ "sub", "scope" ]
+      },
+      "Error" : {
+        "properties" : {
+          "detail" : {
+            "type" : "string"
+          },
+          "error" : {
+            "type" : "integer"
+          },
+          "title" : {
+            "type" : "string"
+          },
+          "type" : {
+            "description" : "unique uri for this error",
+            "type" : "string"
+          }
+        },
+        "required" : [ "error" ]
+      },
+      "AuthentiqID" : {
+        "description" : "Authentiq ID in JWT format, self-signed.\n",
+        "properties" : {
+          "sub" : {
+            "description" : "UUID and public signing key",
+            "type" : "string"
+          },
+          "devtoken" : {
+            "description" : "device token for push messages",
+            "type" : "string"
+          }
+        },
+        "required" : [ "sub" ]
+      },
+      "PushToken" : {
+        "description" : "PushToken in JWT format, self-signed. \n",
+        "properties" : {
+          "aud" : {
+            "description" : "audience (URI)",
+            "type" : "string"
+          },
+          "sub" : {
+            "description" : "UUID and public signing key",
+            "type" : "string"
+          },
+          "nbf" : {
+            "type" : "integer"
+          },
+          "iss" : {
+            "description" : "issuer (URI)",
+            "type" : "string"
+          },
+          "exp" : {
+            "type" : "integer"
+          },
+          "iat" : {
+            "type" : "integer"
+          }
+        },
+        "required" : [ "sub", "iss", "aud" ]
+      }
+    }
+  }
+}
\ No newline at end of file
diff --git a/gen-api-ex/6-dot-authentiqio.appspot.com-6-expected.json b/gen-api-ex/6-dot-authentiqio.appspot.com-6-expected.json
new file mode 100644
index 00000000..85303162
--- /dev/null
+++ b/gen-api-ex/6-dot-authentiqio.appspot.com-6-expected.json
@@ -0,0 +1,910 @@
+{
+  "openapi" : "3.0.0",
+  "info" : {
+    "contact" : {
+      "email" : "hello@authentiq.com",
+      "name" : "Authentiq team",
+      "url" : "http://authentiq.io/support"
+    },
+    "description" : "Strong authentication, without the passwords.",
+    "license" : {
+      "name" : "Apache 2.0",
+      "url" : "http://www.apache.org/licenses/LICENSE-2.0.html"
+    },
+    "termsOfService" : "http://authentiq.com/terms/",
+    "title" : "Authentiq API",
+    "version" : "6",
+    "x-providerName" : "6-dot-authentiqio.appspot.com",
+    "x-logo" : {
+      "backgroundColor" : "#F26641",
+      "url" : "https://api.apis.guru/v2/cache/logo/https_www.authentiq.com_theme_images_authentiq-logo-a-inverse.svg"
+    },
+    "x-apisguru-categories" : [ "security" ],
+    "x-origin" : [ {
+      "format" : "openapi",
+      "url" : "https://raw.githubusercontent.com/AuthentiqID/authentiq-docs/master/docs/swagger/issuer.yaml",
+      "version" : "3.0"
+    } ]
+  },
+  "servers" : [ {
+    "url" : "https://6-dot-authentiqio.appspot.com"
+  } ],
+  "paths" : {
+    "/key" : {
+      "post" : {
+        "tags" : [ "key", "post" ],
+        "description" : "Register a new ID `JWT(sub, devtoken)`\n\nv5: `JWT(sub, pk, devtoken, ...)`\n\nSee: https://github.com/skion/authentiq/wiki/JWT-Examples\n",
+        "operationId" : "key_register",
+        "requestBody" : {
+          "$ref" : "#/components/requestBodies/AuthentiqID"
+        },
+        "responses" : {
+          "201" : {
+            "description" : "Successfully registered",
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "properties" : {
+                    "secret" : {
+                      "description" : "revoke key",
+                      "type" : "string"
+                    },
+                    "status" : {
+                      "description" : "registered",
+                      "type" : "string"
+                    }
+                  },
+                  "type" : "object"
+                }
+              }
+            }
+          },
+          "409" : {
+            "description" : "Key already registered `duplicate-key`",
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/Error"
+                }
+              }
+            }
+          },
+          "default" : {
+            "$ref" : "#/components/responses/ErrorResponse"
+          }
+        }
+      },
+      "delete" : {
+        "tags" : [ "key", "delete" ],
+        "description" : "Revoke an Authentiq ID using email & phone.\n\nIf called with `email` and `phone` only, a verification code \nwill be sent by email. Do a second call adding `code` to \ncomplete the revocation.\n",
+        "operationId" : "key_revoke_nosecret",
+        "parameters" : [ {
+          "description" : "primary email associated to Key (ID)",
+          "required" : true,
+          "schema" : {
+            "type" : "string"
+          },
+          "in" : "query",
+          "name" : "email"
+        }, {
+          "description" : "primary phone number, international representation",
+          "required" : true,
+          "schema" : {
+            "type" : "string"
+          },
+          "in" : "query",
+          "name" : "phone"
+        }, {
+          "description" : "verification code sent by email",
+          "required" : false,
+          "schema" : {
+            "type" : "string"
+          },
+          "in" : "query",
+          "name" : "code"
+        } ],
+        "responses" : {
+          "200" : {
+            "description" : "Successfully deleted",
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "properties" : {
+                    "status" : {
+                      "description" : "pending or done",
+                      "type" : "string"
+                    }
+                  },
+                  "type" : "object"
+                }
+              }
+            }
+          },
+          "401" : {
+            "description" : "Authentication error `auth-error`",
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/Error"
+                }
+              }
+            }
+          },
+          "404" : {
+            "description" : "Unknown key `unknown-key`",
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/Error"
+                }
+              }
+            }
+          },
+          "409" : {
+            "description" : "Confirm with code sent `confirm-first`",
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/Error"
+                }
+              }
+            }
+          },
+          "default" : {
+            "$ref" : "#/components/responses/ErrorResponse"
+          }
+        }
+      }
+    },
+    "/key/{PK}" : {
+      "head" : {
+        "tags" : [ "key", "head" ],
+        "description" : "HEAD info on Authentiq ID\n",
+        "parameters" : [ {
+          "$ref" : "#/components/parameters/PK"
+        } ],
+        "responses" : {
+          "200" : {
+            "description" : "Key exists"
+          },
+          "404" : {
+            "description" : "Unknown key `unknown-key`",
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/Error"
+                }
+              }
+            }
+          },
+          "410" : {
+            "description" : "Key is revoked `revoked-key`",
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/Error"
+                }
+              }
+            }
+          },
+          "default" : {
+            "$ref" : "#/components/responses/ErrorResponse"
+          }
+        }
+      },
+      "get" : {
+        "tags" : [ "key", "get" ],
+        "description" : "Get public details of an Authentiq ID.\n",
+        "operationId" : "key_retrieve",
+        "parameters" : [ {
+          "$ref" : "#/components/parameters/PK"
+        } ],
+        "responses" : {
+          "200" : {
+            "description" : "Successfully retrieved",
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "properties" : {
+                    "since" : {
+                      "format" : "date-time",
+                      "type" : "string"
+                    },
+                    "status" : {
+                      "type" : "string"
+                    },
+                    "sub" : {
+                      "description" : "base64safe encoded public signing key",
+                      "type" : "string"
+                    }
+                  },
+                  "type" : "object",
+                  "title" : "JWT"
+                }
+              }
+            }
+          },
+          "404" : {
+            "description" : "Unknown key `unknown-key`",
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/Error"
+                }
+              }
+            }
+          },
+          "410" : {
+            "description" : "Key is revoked (gone). `revoked-key`",
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/Error"
+                }
+              }
+            }
+          },
+          "default" : {
+            "$ref" : "#/components/responses/ErrorResponse"
+          }
+        }
+      },
+      "put" : {
+        "tags" : [ "key", "put" ],
+        "description" : "Update Authentiq ID by replacing the object.\n\nv4: `JWT(sub,email,phone)` to bind email/phone hash; \n\nv5: POST issuer-signed email & phone scopes\nand PUT to update registration `JWT(sub, pk, devtoken, ...)`\n\nSee: https://github.com/skion/authentiq/wiki/JWT-Examples\n",
+        "operationId" : "key_bind",
+        "parameters" : [ {
+          "$ref" : "#/components/parameters/PK"
+        } ],
+        "requestBody" : {
+          "$ref" : "#/components/requestBodies/AuthentiqID"
+        },
+        "responses" : {
+          "200" : {
+            "description" : "Successfully updated",
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "properties" : {
+                    "status" : {
+                      "description" : "confirmed",
+                      "type" : "string"
+                    }
+                  },
+                  "type" : "object"
+                }
+              }
+            }
+          },
+          "404" : {
+            "description" : "Unknown key `unknown-key`",
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/Error"
+                }
+              }
+            }
+          },
+          "409" : {
+            "description" : "Already bound to another key `duplicate-hash`",
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/Error"
+                }
+              }
+            }
+          },
+          "default" : {
+            "$ref" : "#/components/responses/ErrorResponse"
+          }
+        }
+      },
+      "post" : {
+        "tags" : [ "key", "post" ],
+        "description" : "update properties of an Authentiq ID.\n(not operational in v4; use PUT for now)\n\nv5: POST issuer-signed email & phone scopes in\na self-signed JWT\n\nSee: https://github.com/skion/authentiq/wiki/JWT-Examples\n",
+        "operationId" : "key_update",
+        "parameters" : [ {
+          "$ref" : "#/components/parameters/PK"
+        } ],
+        "requestBody" : {
+          "$ref" : "#/components/requestBodies/AuthentiqID"
+        },
+        "responses" : {
+          "200" : {
+            "description" : "Successfully updated",
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "properties" : {
+                    "status" : {
+                      "description" : "confirmed",
+                      "type" : "string"
+                    }
+                  },
+                  "type" : "object"
+                }
+              }
+            }
+          },
+          "404" : {
+            "description" : "Unknown key `unknown-key`",
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/Error"
+                }
+              }
+            }
+          },
+          "default" : {
+            "$ref" : "#/components/responses/ErrorResponse"
+          }
+        }
+      },
+      "delete" : {
+        "tags" : [ "key", "delete" ],
+        "description" : "Revoke an Identity (Key) with a revocation secret",
+        "operationId" : "key_revoke",
+        "parameters" : [ {
+          "$ref" : "#/components/parameters/PK"
+        }, {
+          "description" : "revokation secret",
+          "required" : true,
+          "schema" : {
+            "type" : "string"
+          },
+          "in" : "query",
+          "name" : "secret"
+        } ],
+        "responses" : {
+          "200" : {
+            "description" : "Successful response",
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "properties" : {
+                    "status" : {
+                      "description" : "done",
+                      "type" : "string"
+                    }
+                  },
+                  "type" : "object"
+                }
+              }
+            }
+          },
+          "401" : {
+            "description" : "Key not found / wrong code `auth-error`",
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/Error"
+                }
+              }
+            }
+          },
+          "404" : {
+            "description" : "Unknown key `unknown-key`",
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/Error"
+                }
+              }
+            }
+          },
+          "default" : {
+            "$ref" : "#/components/responses/ErrorResponse"
+          }
+        }
+      }
+    },
+    "/login" : {
+      "post" : {
+        "tags" : [ "login", "post" ],
+        "description" : "push sign-in request\nSee: https://github.com/skion/authentiq/wiki/JWT-Examples\n",
+        "operationId" : "push_login_request",
+        "parameters" : [ {
+          "description" : "URI App will connect to",
+          "required" : true,
+          "schema" : {
+            "type" : "string"
+          },
+          "in" : "query",
+          "name" : "callback"
+        } ],
+        "requestBody" : {
+          "description" : "Push Token.",
+          "required" : true,
+          "content" : {
+            "application/jwt" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/PushToken"
+              }
+            }
+          }
+        },
+        "responses" : {
+          "200" : {
+            "description" : "Successful response",
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "properties" : {
+                    "status" : {
+                      "description" : "sent",
+                      "type" : "string"
+                    }
+                  },
+                  "type" : "object"
+                }
+              }
+            }
+          },
+          "401" : {
+            "description" : "Unauthorized for this callback audience `aud-error` or JWT should be self-signed `auth-error`",
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/Error"
+                }
+              }
+            }
+          },
+          "default" : {
+            "$ref" : "#/components/responses/ErrorResponse"
+          }
+        }
+      }
+    },
+    "/scope" : {
+      "post" : {
+        "tags" : [ "scope", "post" ],
+        "description" : "scope verification request\nSee: https://github.com/skion/authentiq/wiki/JWT-Examples\n",
+        "operationId" : "sign_request",
+        "parameters" : [ {
+          "description" : "test only mode, using test issuer",
+          "required" : false,
+          "schema" : {
+            "type" : "integer"
+          },
+          "in" : "query",
+          "name" : "test"
+        } ],
+        "requestBody" : {
+          "description" : "Claims of scope",
+          "required" : true,
+          "content" : {
+            "application/jwt" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/Claims"
+              }
+            }
+          }
+        },
+        "responses" : {
+          "201" : {
+            "description" : "Successful response",
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "properties" : {
+                    "job" : {
+                      "description" : "20-character ID",
+                      "type" : "string"
+                    },
+                    "status" : {
+                      "description" : "waiting",
+                      "type" : "string"
+                    }
+                  },
+                  "type" : "object"
+                }
+              }
+            }
+          },
+          "429" : {
+            "description" : "Too Many Requests on same address / number `rate-limit`",
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/Error"
+                }
+              }
+            }
+          },
+          "default" : {
+            "$ref" : "#/components/responses/ErrorResponse"
+          }
+        }
+      }
+    },
+    "/scope/{job}" : {
+      "head" : {
+        "tags" : [ "scope", "head" ],
+        "description" : "HEAD to get the status of a verification job",
+        "operationId" : "sign_retrieve_head",
+        "parameters" : [ {
+          "$ref" : "#/components/parameters/JobID"
+        } ],
+        "responses" : {
+          "200" : {
+            "description" : "Confirmed and signed"
+          },
+          "204" : {
+            "description" : "Confirmed, waiting for signing"
+          },
+          "404" : {
+            "description" : "Job not found `unknown-job`",
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/Error"
+                }
+              }
+            }
+          },
+          "default" : {
+            "$ref" : "#/components/responses/ErrorResponse"
+          }
+        }
+      },
+      "get" : {
+        "tags" : [ "scope", "get" ],
+        "description" : "get the status / current content of a verification job",
+        "operationId" : "sign_retrieve",
+        "parameters" : [ {
+          "$ref" : "#/components/parameters/JobID"
+        } ],
+        "responses" : {
+          "200" : {
+            "description" : "Successful response (JWT)",
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "properties" : {
+                    "exp" : {
+                      "type" : "integer"
+                    },
+                    "field" : {
+                      "type" : "string"
+                    },
+                    "sub" : {
+                      "description" : "base64safe encoded public signing key",
+                      "type" : "string"
+                    }
+                  },
+                  "type" : "object",
+                  "title" : "JWT"
+                }
+              },
+              "application/jwt" : {
+                "schema" : {
+                  "properties" : {
+                    "exp" : {
+                      "type" : "integer"
+                    },
+                    "field" : {
+                      "type" : "string"
+                    },
+                    "sub" : {
+                      "description" : "base64safe encoded public signing key",
+                      "type" : "string"
+                    }
+                  },
+                  "type" : "object",
+                  "title" : "JWT"
+                }
+              }
+            }
+          },
+          "204" : {
+            "description" : "Confirmed, waiting for signing"
+          },
+          "404" : {
+            "description" : "Job not found `unknown-job`",
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/Error"
+                }
+              },
+              "application/jwt" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/Error"
+                }
+              }
+            }
+          },
+          "default" : {
+            "$ref" : "#/components/responses/ErrorResponse"
+          }
+        }
+      },
+      "put" : {
+        "tags" : [ "scope", "put" ],
+        "description" : "authority updates a JWT with its signature\nSee: https://github.com/skion/authentiq/wiki/JWT-Examples\n",
+        "operationId" : "sign_update",
+        "parameters" : [ {
+          "$ref" : "#/components/parameters/JobID"
+        } ],
+        "responses" : {
+          "200" : {
+            "description" : "Successfully updated",
+            "content" : {
+              "application/jwt" : {
+                "schema" : {
+                  "properties" : {
+                    "jwt" : {
+                      "description" : "result is JWT or JSON??",
+                      "type" : "string"
+                    },
+                    "status" : {
+                      "description" : "ready",
+                      "type" : "string"
+                    }
+                  },
+                  "type" : "object"
+                }
+              }
+            }
+          },
+          "404" : {
+            "description" : "Job not found `unknown-job`",
+            "content" : {
+              "application/jwt" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/Error"
+                }
+              }
+            }
+          },
+          "409" : {
+            "description" : "Job not confirmed yet `confirm-first`",
+            "content" : {
+              "application/jwt" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/Error"
+                }
+              }
+            }
+          },
+          "default" : {
+            "$ref" : "#/components/responses/ErrorResponse"
+          }
+        }
+      },
+      "post" : {
+        "tags" : [ "scope", "post" ],
+        "description" : "this is a scope confirmation",
+        "operationId" : "sign_confirm",
+        "parameters" : [ {
+          "$ref" : "#/components/parameters/JobID"
+        } ],
+        "responses" : {
+          "202" : {
+            "description" : "Successfully confirmed",
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "properties" : {
+                    "status" : {
+                      "description" : "confirmed",
+                      "type" : "string"
+                    }
+                  },
+                  "type" : "object"
+                }
+              }
+            }
+          },
+          "401" : {
+            "description" : "Confirmation error `auth-error`",
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/Error"
+                }
+              }
+            }
+          },
+          "404" : {
+            "description" : "Job not found `unknown-job`",
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/Error"
+                }
+              }
+            }
+          },
+          "405" : {
+            "description" : "JWT POSTed to scope `not-supported`",
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/Error"
+                }
+              }
+            }
+          },
+          "default" : {
+            "$ref" : "#/components/responses/ErrorResponse"
+          }
+        }
+      },
+      "delete" : {
+        "tags" : [ "scope", "delete" ],
+        "description" : "delete a verification job",
+        "operationId" : "sign_delete",
+        "parameters" : [ {
+          "$ref" : "#/components/parameters/JobID"
+        } ],
+        "responses" : {
+          "200" : {
+            "description" : "Successfully deleted",
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "properties" : {
+                    "status" : {
+                      "description" : "done",
+                      "type" : "string"
+                    }
+                  },
+                  "type" : "object"
+                }
+              }
+            }
+          },
+          "404" : {
+            "description" : "Job not found `unknown-job`",
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/Error"
+                }
+              }
+            }
+          },
+          "default" : {
+            "$ref" : "#/components/responses/ErrorResponse"
+          }
+        }
+      }
+    }
+  },
+  "components" : {
+    "parameters" : {
+      "JobID" : {
+        "description" : "Job ID (20 chars)",
+        "required" : true,
+        "schema" : {
+          "type" : "string"
+        },
+        "in" : "path",
+        "name" : "job"
+      },
+      "PK" : {
+        "description" : "Public Signing Key - Authentiq ID (43 chars)",
+        "required" : true,
+        "schema" : {
+          "type" : "string"
+        },
+        "in" : "path",
+        "name" : "PK"
+      }
+    },
+    "requestBodies" : {
+      "AuthentiqID" : {
+        "description" : "Authentiq ID to register",
+        "required" : true,
+        "content" : {
+          "application/jwt" : {
+            "schema" : {
+              "$ref" : "#/components/schemas/AuthentiqID"
+            }
+          }
+        }
+      }
+    },
+    "responses" : {
+      "ErrorResponse" : {
+        "description" : "Error response",
+        "content" : {
+          "*/*" : {
+            "schema" : {
+              "$ref" : "#/components/schemas/Error"
+            }
+          }
+        }
+      }
+    },
+    "schemas" : {
+      "AuthentiqID" : {
+        "description" : "Authentiq ID in JWT format, self-signed.\n",
+        "properties" : {
+          "devtoken" : {
+            "description" : "device token for push messages",
+            "type" : "string"
+          },
+          "sub" : {
+            "description" : "UUID and public signing key",
+            "type" : "string"
+          }
+        },
+        "required" : [ "sub" ]
+      },
+      "Claims" : {
+        "description" : "Claim in JWT format, self- or issuer-signed. \n",
+        "properties" : {
+          "email" : {
+            "type" : "string"
+          },
+          "phone" : {
+            "type" : "string"
+          },
+          "scope" : {
+            "description" : "claim scope",
+            "type" : "string"
+          },
+          "sub" : {
+            "description" : "UUID",
+            "type" : "string"
+          },
+          "type" : {
+            "type" : "string"
+          }
+        },
+        "required" : [ "sub", "scope" ]
+      },
+      "Error" : {
+        "properties" : {
+          "detail" : {
+            "type" : "string"
+          },
+          "error" : {
+            "type" : "integer"
+          },
+          "title" : {
+            "type" : "string"
+          },
+          "type" : {
+            "description" : "unique uri for this error",
+            "type" : "string"
+          }
+        },
+        "required" : [ "error" ]
+      },
+      "PushToken" : {
+        "description" : "PushToken in JWT format, self-signed. \n",
+        "properties" : {
+          "aud" : {
+            "description" : "audience (URI)",
+            "type" : "string"
+          },
+          "exp" : {
+            "type" : "integer"
+          },
+          "iat" : {
+            "type" : "integer"
+          },
+          "iss" : {
+            "description" : "issuer (URI)",
+            "type" : "string"
+          },
+          "nbf" : {
+            "type" : "integer"
+          },
+          "sub" : {
+            "description" : "UUID and public signing key",
+            "type" : "string"
+          }
+        },
+        "required" : [ "sub", "iss", "aud" ]
+      }
+    }
+  }
+}
\ No newline at end of file
diff --git a/gen-api-ex/abstractapi.com-geolocation-1.0.0-actual.json b/gen-api-ex/abstractapi.com-geolocation-1.0.0-actual.json
new file mode 100644
index 00000000..59e7e531
--- /dev/null
+++ b/gen-api-ex/abstractapi.com-geolocation-1.0.0-actual.json
@@ -0,0 +1,219 @@
+{
+  "openapi" : "3.0.1",
+  "info" : {
+    "description" : "Abstract IP geolocation API allows developers to retrieve the region, country and city behind any IP worldwide. The API covers the geolocation of IPv4 and IPv6 addresses in 180+ countries worldwide. Extra information can be retrieved like the currency, flag or language associated to an IP.",
+    "title" : "IP geolocation API",
+    "version" : "1.0.0",
+    "x-providerName" : "abstractapi.com",
+    "x-logo" : {
+      "url" : "https://api.apis.guru/v2/cache/logo/https_global-uploads.webflow.com_5ebbd0a566a3996636e55959_5ec2ba29feeeb05d69160e7b_webclip.png"
+    },
+    "x-apisguru-categories" : [ "location" ],
+    "x-serviceName" : "geolocation",
+    "x-origin" : [ {
+      "format" : "openapi",
+      "url" : "https://documentation.abstractapi.com/ip-geolocation-openapi.json",
+      "version" : "3.0"
+    } ]
+  },
+  "servers" : [ {
+    "url" : "https://ipgeolocation.abstractapi.com"
+  } ],
+  "paths" : {
+    "/v1" : {
+      "servers" : [ {
+        "url" : "https://ipgeolocation.abstractapi.com"
+      } ],
+      "get" : {
+        "description" : "Retrieve the location of an IP address",
+        "parameters" : [ {
+          "explode" : true,
+          "required" : true,
+          "schema" : {
+            "type" : "string"
+          },
+          "style" : "form",
+          "in" : "query",
+          "name" : "api_key"
+        }, {
+          "explode" : true,
+          "required" : false,
+          "schema" : {
+            "example" : "195.154.25.40",
+            "type" : "string"
+          },
+          "style" : "form",
+          "in" : "query",
+          "name" : "ip_address"
+        }, {
+          "explode" : true,
+          "required" : false,
+          "schema" : {
+            "example" : "country,city,timezone",
+            "type" : "string"
+          },
+          "style" : "form",
+          "in" : "query",
+          "name" : "fields"
+        } ],
+        "responses" : {
+          "200" : {
+            "description" : "Location of geolocated IP",
+            "content" : {
+              "application/json" : {
+                "examples" : {
+                  "0" : {
+                    "value" : "{\"ip_address\":\"195.154.25.40\",\"city\":\"Paris\",\"city_geoname_id\":2988507,\"region\":\"?le-de-France\",\"region_iso_code\":\"IDF\",\"region_geoname_id\":3012874,\"postal_code\":\"75008\",\"country\":\"France\",\"country_code\":\"FR\",\"country_geoname_id\":3017382,\"country_is_eu\":true,\"continent\":\"Europe\",\"continent_code\":\"EU\",\"continent_geoname_id\":6255148,\"longitude\":2.4075,\"latitude\":48.8323,\"security\":{\"is_vpn\":false},\"timezone\":{\"name\":\"Europe/Paris\",\"abbreviation\":\"CEST\",\"gmt_offset\":2,\"current_time\":\"15:42:18\",\"is_dst\":true},\"flag\":{\"emoji\":\"<?<��\",\"unicode\":\"U+1F1EB U+1F1F7\",\"png\":\"https://static.abstractapi.com/country-flags/FR_flag.png\",\"svg\":\"https://static.abstractapi.com/country-flags/FR_flag.svg\"},\"currency\":{\"currency_name\":\"Euros\",\"currency_code\":\"EUR\"},\"connection\":{\"autonomous_system_number\":12876,\"autonomous_system_organization\":\"Online S.a.s.\",\"connection_type\":\"Corporate\",\"isp_name\":\"Online S.A.S.\",\"organization_name\":\"ONLINE\"}}"
+                  }
+                },
+                "schema" : {
+                  "$ref" : "#/components/schemas/inline_response_200"
+                }
+              }
+            }
+          }
+        },
+        "servers" : [ {
+          "url" : "https://ipgeolocation.abstractapi.com"
+        } ]
+      }
+    }
+  },
+  "components" : {
+    "schemas" : {
+      "inline_response_200" : {
+        "properties" : {
+          "continent" : {
+            "type" : "string"
+          },
+          "country" : {
+            "type" : "string"
+          },
+          "flag" : {
+            "properties" : {
+              "emoji" : {
+                "type" : "string"
+              },
+              "svg" : {
+                "type" : "string"
+              },
+              "png" : {
+                "type" : "string"
+              },
+              "unicode" : {
+                "type" : "string"
+              }
+            },
+            "type" : "object"
+          },
+          "country_geoname_id" : {
+            "type" : "integer"
+          },
+          "city" : {
+            "type" : "string"
+          },
+          "city_geoname_id" : {
+            "type" : "integer"
+          },
+          "country_is_eu" : {
+            "type" : "boolean"
+          },
+          "timezone" : {
+            "properties" : {
+              "name" : {
+                "type" : "string"
+              },
+              "gmt_offset" : {
+                "type" : "integer"
+              },
+              "abbreviation" : {
+                "type" : "string"
+              },
+              "current_time" : {
+                "type" : "string"
+              },
+              "is_dst" : {
+                "type" : "boolean"
+              }
+            },
+            "type" : "object"
+          },
+          "latitude" : {
+            "type" : "number"
+          },
+          "continent_code" : {
+            "type" : "string"
+          },
+          "ip_address" : {
+            "type" : "string"
+          },
+          "region_geoname_id" : {
+            "type" : "integer"
+          },
+          "region_iso_code" : {
+            "type" : "string"
+          },
+          "country_code" : {
+            "type" : "string"
+          },
+          "security" : {
+            "properties" : {
+              "is_vpn" : {
+                "type" : "boolean"
+              }
+            },
+            "type" : "object"
+          },
+          "connection" : {
+            "properties" : {
+              "isp_name" : {
+                "type" : "string"
+              },
+              "connection_type" : {
+                "type" : "string"
+              },
+              "organization_name" : {
+                "type" : "string"
+              },
+              "autonomous_system_organization" : {
+                "type" : "string"
+              },
+              "autonomous_system_number" : {
+                "type" : "integer"
+              }
+            },
+            "type" : "object"
+          },
+          "currency" : {
+            "properties" : {
+              "currency_name" : {
+                "type" : "string"
+              },
+              "currency_code" : {
+                "type" : "string"
+              }
+            },
+            "type" : "object"
+          },
+          "continent_geoname_id" : {
+            "type" : "integer"
+          },
+          "postal_code" : {
+            "type" : "string"
+          },
+          "region" : {
+            "type" : "string"
+          },
+          "longitude" : {
+            "type" : "number"
+          }
+        },
+        "type" : "object"
+      }
+    }
+  },
+  "externalDocs" : {
+    "description" : "API Documentation",
+    "url" : "https://www.abstractapi.com/ip-geolocation-api#docs"
+  }
+}
\ No newline at end of file
diff --git a/gen-api-ex/abstractapi.com-geolocation-1.0.0-expected.json b/gen-api-ex/abstractapi.com-geolocation-1.0.0-expected.json
new file mode 100644
index 00000000..78f32585
--- /dev/null
+++ b/gen-api-ex/abstractapi.com-geolocation-1.0.0-expected.json
@@ -0,0 +1,219 @@
+{
+  "openapi" : "3.0.1",
+  "info" : {
+    "description" : "Abstract IP geolocation API allows developers to retrieve the region, country and city behind any IP worldwide. The API covers the geolocation of IPv4 and IPv6 addresses in 180+ countries worldwide. Extra information can be retrieved like the currency, flag or language associated to an IP.",
+    "title" : "IP geolocation API",
+    "version" : "1.0.0",
+    "x-providerName" : "abstractapi.com",
+    "x-logo" : {
+      "url" : "https://api.apis.guru/v2/cache/logo/https_global-uploads.webflow.com_5ebbd0a566a3996636e55959_5ec2ba29feeeb05d69160e7b_webclip.png"
+    },
+    "x-apisguru-categories" : [ "location" ],
+    "x-serviceName" : "geolocation",
+    "x-origin" : [ {
+      "format" : "openapi",
+      "url" : "https://documentation.abstractapi.com/ip-geolocation-openapi.json",
+      "version" : "3.0"
+    } ]
+  },
+  "servers" : [ {
+    "url" : "https://ipgeolocation.abstractapi.com"
+  } ],
+  "paths" : {
+    "/v1" : {
+      "servers" : [ {
+        "url" : "https://ipgeolocation.abstractapi.com"
+      } ],
+      "get" : {
+        "description" : "Retrieve the location of an IP address",
+        "parameters" : [ {
+          "explode" : true,
+          "required" : true,
+          "schema" : {
+            "type" : "string"
+          },
+          "style" : "form",
+          "in" : "query",
+          "name" : "api_key"
+        }, {
+          "explode" : true,
+          "required" : false,
+          "schema" : {
+            "example" : "195.154.25.40",
+            "type" : "string"
+          },
+          "style" : "form",
+          "in" : "query",
+          "name" : "ip_address"
+        }, {
+          "explode" : true,
+          "required" : false,
+          "schema" : {
+            "example" : "country,city,timezone",
+            "type" : "string"
+          },
+          "style" : "form",
+          "in" : "query",
+          "name" : "fields"
+        } ],
+        "responses" : {
+          "200" : {
+            "description" : "Location of geolocated IP",
+            "content" : {
+              "application/json" : {
+                "examples" : {
+                  "0" : {
+                    "value" : "{\"ip_address\":\"195.154.25.40\",\"city\":\"Paris\",\"city_geoname_id\":2988507,\"region\":\"?le-de-France\",\"region_iso_code\":\"IDF\",\"region_geoname_id\":3012874,\"postal_code\":\"75008\",\"country\":\"France\",\"country_code\":\"FR\",\"country_geoname_id\":3017382,\"country_is_eu\":true,\"continent\":\"Europe\",\"continent_code\":\"EU\",\"continent_geoname_id\":6255148,\"longitude\":2.4075,\"latitude\":48.8323,\"security\":{\"is_vpn\":false},\"timezone\":{\"name\":\"Europe/Paris\",\"abbreviation\":\"CEST\",\"gmt_offset\":2,\"current_time\":\"15:42:18\",\"is_dst\":true},\"flag\":{\"emoji\":\"<?<��\",\"unicode\":\"U+1F1EB U+1F1F7\",\"png\":\"https://static.abstractapi.com/country-flags/FR_flag.png\",\"svg\":\"https://static.abstractapi.com/country-flags/FR_flag.svg\"},\"currency\":{\"currency_name\":\"Euros\",\"currency_code\":\"EUR\"},\"connection\":{\"autonomous_system_number\":12876,\"autonomous_system_organization\":\"Online S.a.s.\",\"connection_type\":\"Corporate\",\"isp_name\":\"Online S.A.S.\",\"organization_name\":\"ONLINE\"}}"
+                  }
+                },
+                "schema" : {
+                  "$ref" : "#/components/schemas/inline_response_200"
+                }
+              }
+            }
+          }
+        },
+        "servers" : [ {
+          "url" : "https://ipgeolocation.abstractapi.com"
+        } ]
+      }
+    }
+  },
+  "components" : {
+    "schemas" : {
+      "inline_response_200" : {
+        "properties" : {
+          "city" : {
+            "type" : "string"
+          },
+          "city_geoname_id" : {
+            "type" : "integer"
+          },
+          "connection" : {
+            "properties" : {
+              "autonomous_system_number" : {
+                "type" : "integer"
+              },
+              "autonomous_system_organization" : {
+                "type" : "string"
+              },
+              "connection_type" : {
+                "type" : "string"
+              },
+              "isp_name" : {
+                "type" : "string"
+              },
+              "organization_name" : {
+                "type" : "string"
+              }
+            },
+            "type" : "object"
+          },
+          "continent" : {
+            "type" : "string"
+          },
+          "continent_code" : {
+            "type" : "string"
+          },
+          "continent_geoname_id" : {
+            "type" : "integer"
+          },
+          "country" : {
+            "type" : "string"
+          },
+          "country_code" : {
+            "type" : "string"
+          },
+          "country_geoname_id" : {
+            "type" : "integer"
+          },
+          "country_is_eu" : {
+            "type" : "boolean"
+          },
+          "currency" : {
+            "properties" : {
+              "currency_code" : {
+                "type" : "string"
+              },
+              "currency_name" : {
+                "type" : "string"
+              }
+            },
+            "type" : "object"
+          },
+          "flag" : {
+            "properties" : {
+              "emoji" : {
+                "type" : "string"
+              },
+              "png" : {
+                "type" : "string"
+              },
+              "svg" : {
+                "type" : "string"
+              },
+              "unicode" : {
+                "type" : "string"
+              }
+            },
+            "type" : "object"
+          },
+          "ip_address" : {
+            "type" : "string"
+          },
+          "latitude" : {
+            "type" : "number"
+          },
+          "longitude" : {
+            "type" : "number"
+          },
+          "postal_code" : {
+            "type" : "string"
+          },
+          "region" : {
+            "type" : "string"
+          },
+          "region_geoname_id" : {
+            "type" : "integer"
+          },
+          "region_iso_code" : {
+            "type" : "string"
+          },
+          "security" : {
+            "properties" : {
+              "is_vpn" : {
+                "type" : "boolean"
+              }
+            },
+            "type" : "object"
+          },
+          "timezone" : {
+            "properties" : {
+              "abbreviation" : {
+                "type" : "string"
+              },
+              "current_time" : {
+                "type" : "string"
+              },
+              "gmt_offset" : {
+                "type" : "integer"
+              },
+              "is_dst" : {
+                "type" : "boolean"
+              },
+              "name" : {
+                "type" : "string"
+              }
+            },
+            "type" : "object"
+          }
+        },
+        "type" : "object"
+      }
+    }
+  },
+  "externalDocs" : {
+    "description" : "API Documentation",
+    "url" : "https://www.abstractapi.com/ip-geolocation-api#docs"
+  }
+}
\ No newline at end of file
diff --git a/gen-api-ex/adyen.com-CheckoutUtilityService-1-actual.json b/gen-api-ex/adyen.com-CheckoutUtilityService-1-actual.json
new file mode 100644
index 00000000..47f0f252
--- /dev/null
+++ b/gen-api-ex/adyen.com-CheckoutUtilityService-1-actual.json
@@ -0,0 +1,107 @@
+{
+  "openapi" : "3.0.0",
+  "info" : {
+    "contact" : {
+      "email" : "support@adyen.com",
+      "name" : "Adyen Support",
+      "url" : "https://support.adyen.com/",
+      "x-twitter" : "Adyen"
+    },
+    "description" : "A web service containing utility functions available for merchants integrating with Checkout APIs.\n## Authentication\nEach request to the Checkout Utility API must be signed with an API key. For this, obtain an API Key from your Customer Area, as described in [How to get the Checkout API key](https://docs.adyen.com/developers/user-management/how-to-get-the-checkout-api-key). Then set this key to the `X-API-Key` header value, for example:\n\n```\ncurl\n-H \"Content-Type: application/json\" \\\n-H \"X-API-Key: Your_Checkout_API_key\" \\\n...\n```\nNote that when going live, you need to generate a new API Key to access the [live endpoints](https://docs.adyen.com/developers/api-reference/live-endpoints).\n\n## Versioning\nCheckout API supports versioning of its endpoints through a version suffix in the endpoint URL. This suffix has the following format: \"vXX\", where XX is the version number.\n\nFor example:\n```\nhttps://checkout-test.adyen.com/v1/originKeys\n```",
+    "termsOfService" : "https://docs.adyen.com/legal/terms-conditions",
+    "title" : "Adyen Checkout Utility Service",
+    "version" : "1",
+    "x-providerName" : "adyen.com",
+    "x-logo" : {
+      "url" : "https://api.apis.guru/v2/cache/logo/https_twitter.com_Adyen_profile_image.jpeg"
+    },
+    "x-apisguru-categories" : [ "payment" ],
+    "x-serviceName" : "CheckoutUtilityService",
+    "x-origin" : [ {
+      "converter" : {
+        "url" : "https://github.com/lucybot/api-spec-converter",
+        "version" : "2.7.11"
+      },
+      "format" : "openapi",
+      "url" : "https://raw.githubusercontent.com/adyen/adyen-openapi/master/specs/3.0/CheckoutUtilityService-v1.json",
+      "version" : "3.0"
+    } ]
+  },
+  "servers" : [ {
+    "url" : "https://checkout-test.adyen.com/v1"
+  } ],
+  "paths" : {
+    "/originKeys" : {
+      "post" : {
+        "summary" : "Create originKey values for one or more merchant domains.",
+        "description" : "This operation takes the origin domains and returns a JSON object containing the corresponding origin keys for the domains.",
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/CheckoutUtilityRequest"
+              }
+            }
+          }
+        },
+        "responses" : {
+          "200" : {
+            "description" : "OK - the request has succeeded.",
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/CheckoutUtilityResponse"
+                }
+              }
+            }
+          },
+          "400" : {
+            "description" : "Bad Request - a problem reading or understanding the request."
+          },
+          "422" : {
+            "description" : "Unprocessable Entity - a request validation error."
+          },
+          "401" : {
+            "description" : "Unauthorized - authentication required."
+          },
+          "500" : {
+            "description" : "Internal Server Error - the server could not process the request."
+          },
+          "403" : {
+            "description" : "Forbidden - insufficient permissions to process the request."
+          }
+        },
+        "x-groupName" : "General",
+        "x-sortIndex" : 0
+      }
+    }
+  },
+  "components" : {
+    "schemas" : {
+      "CheckoutUtilityRequest" : {
+        "properties" : {
+          "originDomains" : {
+            "description" : "The list of origin domains, for which origin keys are requested.",
+            "type" : "array",
+            "items" : {
+              "type" : "string"
+            }
+          }
+        },
+        "required" : [ "originDomains" ]
+      },
+      "CheckoutUtilityResponse" : {
+        "properties" : {
+          "originKeys" : {
+            "description" : "The list of origin keys for all requested domains. For each list item, the key is the domain and the value is the origin key.",
+            "type" : "object",
+            "additionalProperties" : {
+              "type" : "string"
+            }
+          }
+        }
+      }
+    }
+  },
+  "x-groups" : [ "General" ]
+}
\ No newline at end of file
diff --git a/gen-api-ex/adyen.com-CheckoutUtilityService-1-expected.json b/gen-api-ex/adyen.com-CheckoutUtilityService-1-expected.json
new file mode 100644
index 00000000..cd12a310
--- /dev/null
+++ b/gen-api-ex/adyen.com-CheckoutUtilityService-1-expected.json
@@ -0,0 +1,107 @@
+{
+  "openapi" : "3.0.0",
+  "info" : {
+    "contact" : {
+      "email" : "support@adyen.com",
+      "name" : "Adyen Support",
+      "url" : "https://support.adyen.com/",
+      "x-twitter" : "Adyen"
+    },
+    "description" : "A web service containing utility functions available for merchants integrating with Checkout APIs.\n## Authentication\nEach request to the Checkout Utility API must be signed with an API key. For this, obtain an API Key from your Customer Area, as described in [How to get the Checkout API key](https://docs.adyen.com/developers/user-management/how-to-get-the-checkout-api-key). Then set this key to the `X-API-Key` header value, for example:\n\n```\ncurl\n-H \"Content-Type: application/json\" \\\n-H \"X-API-Key: Your_Checkout_API_key\" \\\n...\n```\nNote that when going live, you need to generate a new API Key to access the [live endpoints](https://docs.adyen.com/developers/api-reference/live-endpoints).\n\n## Versioning\nCheckout API supports versioning of its endpoints through a version suffix in the endpoint URL. This suffix has the following format: \"vXX\", where XX is the version number.\n\nFor example:\n```\nhttps://checkout-test.adyen.com/v1/originKeys\n```",
+    "termsOfService" : "https://docs.adyen.com/legal/terms-conditions",
+    "title" : "Adyen Checkout Utility Service",
+    "version" : "1",
+    "x-providerName" : "adyen.com",
+    "x-logo" : {
+      "url" : "https://api.apis.guru/v2/cache/logo/https_twitter.com_Adyen_profile_image.jpeg"
+    },
+    "x-apisguru-categories" : [ "payment" ],
+    "x-serviceName" : "CheckoutUtilityService",
+    "x-origin" : [ {
+      "converter" : {
+        "url" : "https://github.com/lucybot/api-spec-converter",
+        "version" : "2.7.11"
+      },
+      "format" : "openapi",
+      "url" : "https://raw.githubusercontent.com/adyen/adyen-openapi/master/specs/3.0/CheckoutUtilityService-v1.json",
+      "version" : "3.0"
+    } ]
+  },
+  "servers" : [ {
+    "url" : "https://checkout-test.adyen.com/v1"
+  } ],
+  "paths" : {
+    "/originKeys" : {
+      "post" : {
+        "summary" : "Create originKey values for one or more merchant domains.",
+        "description" : "This operation takes the origin domains and returns a JSON object containing the corresponding origin keys for the domains.",
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/CheckoutUtilityRequest"
+              }
+            }
+          }
+        },
+        "responses" : {
+          "200" : {
+            "description" : "OK - the request has succeeded.",
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/CheckoutUtilityResponse"
+                }
+              }
+            }
+          },
+          "400" : {
+            "description" : "Bad Request - a problem reading or understanding the request."
+          },
+          "401" : {
+            "description" : "Unauthorized - authentication required."
+          },
+          "403" : {
+            "description" : "Forbidden - insufficient permissions to process the request."
+          },
+          "422" : {
+            "description" : "Unprocessable Entity - a request validation error."
+          },
+          "500" : {
+            "description" : "Internal Server Error - the server could not process the request."
+          }
+        },
+        "x-groupName" : "General",
+        "x-sortIndex" : 0
+      }
+    }
+  },
+  "components" : {
+    "schemas" : {
+      "CheckoutUtilityRequest" : {
+        "properties" : {
+          "originDomains" : {
+            "description" : "The list of origin domains, for which origin keys are requested.",
+            "type" : "array",
+            "items" : {
+              "type" : "string"
+            }
+          }
+        },
+        "required" : [ "originDomains" ]
+      },
+      "CheckoutUtilityResponse" : {
+        "properties" : {
+          "originKeys" : {
+            "description" : "The list of origin keys for all requested domains. For each list item, the key is the domain and the value is the origin key.",
+            "type" : "object",
+            "additionalProperties" : {
+              "type" : "string"
+            }
+          }
+        }
+      }
+    }
+  },
+  "x-groups" : [ "General" ]
+}
\ No newline at end of file
diff --git a/gen-api-ex/petstore-v2-actual.json b/gen-api-ex/petstore-v2-actual.json
new file mode 100644
index 00000000..e69de29b
diff --git a/gen-api-ex/petstore-v2-expected.json b/gen-api-ex/petstore-v2-expected.json
new file mode 100644
index 00000000..59ea6f3d
--- /dev/null
+++ b/gen-api-ex/petstore-v2-expected.json
@@ -0,0 +1,992 @@
+{
+  "openapi" : "3.0.0",
+  "info" : {
+    "description" : "This is a sample server Petstore server. For this sample, you can use the api key `special-key` to test the authorization filters.",
+    "license" : {
+      "name" : "Apache-2.0",
+      "url" : "https://www.apache.org/licenses/LICENSE-2.0.html"
+    },
+    "title" : "OpenAPI Petstore",
+    "version" : "1.0.0"
+  },
+  "servers" : [ {
+    "url" : "https://petstore.swagger.io/v2"
+  } ],
+  "tags" : [ {
+    "name" : "pet",
+    "description" : "Everything about your Pets"
+  }, {
+    "name" : "store",
+    "description" : "Access to Petstore orders"
+  }, {
+    "name" : "user",
+    "description" : "Operations about user"
+  } ],
+  "paths" : {
+    "/pet" : {
+      "put" : {
+        "tags" : [ "pet" ],
+        "summary" : "Update an existing pet",
+        "description" : "",
+        "operationId" : "updatePet",
+        "requestBody" : {
+          "$ref" : "#/components/requestBodies/Pet"
+        },
+        "responses" : {
+          "200" : {
+            "description" : "successful operation",
+            "content" : {
+              "application/xml" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/Pet"
+                }
+              },
+              "application/json" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/Pet"
+                }
+              }
+            }
+          },
+          "400" : {
+            "description" : "Invalid ID supplied"
+          },
+          "404" : {
+            "description" : "Pet not found"
+          },
+          "405" : {
+            "description" : "Validation exception"
+          }
+        },
+        "security" : [ {
+          "petstore_auth" : [ "write:pets", "read:pets" ]
+        } ]
+      },
+      "post" : {
+        "tags" : [ "pet" ],
+        "summary" : "Add a new pet to the store",
+        "description" : "",
+        "operationId" : "addPet",
+        "requestBody" : {
+          "$ref" : "#/components/requestBodies/Pet"
+        },
+        "responses" : {
+          "200" : {
+            "description" : "successful operation",
+            "content" : {
+              "application/xml" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/Pet"
+                }
+              },
+              "application/json" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/Pet"
+                }
+              }
+            }
+          },
+          "405" : {
+            "description" : "Invalid input"
+          }
+        },
+        "security" : [ {
+          "petstore_auth" : [ "write:pets", "read:pets" ]
+        } ]
+      }
+    },
+    "/pet/findByStatus" : {
+      "get" : {
+        "tags" : [ "pet" ],
+        "summary" : "Finds Pets by status",
+        "description" : "Multiple status values can be provided with comma separated strings",
+        "operationId" : "findPetsByStatus",
+        "parameters" : [ {
+          "deprecated" : true,
+          "description" : "Status values that need to be considered for filter",
+          "explode" : false,
+          "required" : true,
+          "schema" : {
+            "type" : "array",
+            "items" : {
+              "type" : "string",
+              "default" : "available",
+              "enum" : [ "available", "pending", "sold" ]
+            }
+          },
+          "style" : "form",
+          "in" : "query",
+          "name" : "status"
+        } ],
+        "responses" : {
+          "200" : {
+            "description" : "successful operation",
+            "content" : {
+              "application/xml" : {
+                "schema" : {
+                  "type" : "array",
+                  "items" : {
+                    "$ref" : "#/components/schemas/Pet"
+                  }
+                }
+              },
+              "application/json" : {
+                "schema" : {
+                  "type" : "array",
+                  "items" : {
+                    "$ref" : "#/components/schemas/Pet"
+                  }
+                }
+              }
+            }
+          },
+          "400" : {
+            "description" : "Invalid status value"
+          }
+        },
+        "security" : [ {
+          "petstore_auth" : [ "read:pets" ]
+        } ]
+      }
+    },
+    "/pet/findByTags" : {
+      "get" : {
+        "tags" : [ "pet" ],
+        "summary" : "Finds Pets by tags",
+        "description" : "Multiple tags can be provided with comma separated strings. Use tag1, tag2, tag3 for testing.",
+        "operationId" : "findPetsByTags",
+        "parameters" : [ {
+          "description" : "Tags to filter by",
+          "explode" : false,
+          "required" : true,
+          "schema" : {
+            "type" : "array",
+            "items" : {
+              "type" : "string"
+            }
+          },
+          "style" : "form",
+          "in" : "query",
+          "name" : "tags"
+        } ],
+        "responses" : {
+          "200" : {
+            "description" : "successful operation",
+            "content" : {
+              "application/xml" : {
+                "schema" : {
+                  "type" : "array",
+                  "items" : {
+                    "$ref" : "#/components/schemas/Pet"
+                  }
+                }
+              },
+              "application/json" : {
+                "schema" : {
+                  "type" : "array",
+                  "items" : {
+                    "$ref" : "#/components/schemas/Pet"
+                  }
+                }
+              }
+            }
+          },
+          "400" : {
+            "description" : "Invalid tag value"
+          }
+        },
+        "deprecated" : true,
+        "security" : [ {
+          "petstore_auth" : [ "read:pets" ]
+        } ]
+      }
+    },
+    "/pet/{petId}" : {
+      "get" : {
+        "tags" : [ "pet" ],
+        "summary" : "Find pet by ID",
+        "description" : "Returns a single pet",
+        "operationId" : "getPetById",
+        "parameters" : [ {
+          "description" : "ID of pet to return",
+          "required" : true,
+          "schema" : {
+            "format" : "int64",
+            "type" : "integer"
+          },
+          "in" : "path",
+          "name" : "petId"
+        } ],
+        "responses" : {
+          "200" : {
+            "description" : "successful operation",
+            "content" : {
+              "application/xml" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/Pet"
+                }
+              },
+              "application/json" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/Pet"
+                }
+              }
+            }
+          },
+          "400" : {
+            "description" : "Invalid ID supplied"
+          },
+          "404" : {
+            "description" : "Pet not found"
+          }
+        },
+        "security" : [ {
+          "api_key" : [ ]
+        } ]
+      },
+      "post" : {
+        "tags" : [ "pet" ],
+        "summary" : "Updates a pet in the store with form data",
+        "description" : "",
+        "operationId" : "updatePetWithForm",
+        "parameters" : [ {
+          "description" : "ID of pet that needs to be updated",
+          "required" : true,
+          "schema" : {
+            "format" : "int64",
+            "type" : "integer"
+          },
+          "in" : "path",
+          "name" : "petId"
+        } ],
+        "requestBody" : {
+          "content" : {
+            "application/x-www-form-urlencoded" : {
+              "schema" : {
+                "properties" : {
+                  "name" : {
+                    "description" : "Updated name of the pet",
+                    "type" : "string"
+                  },
+                  "status" : {
+                    "description" : "Updated status of the pet",
+                    "type" : "string"
+                  }
+                },
+                "type" : "object"
+              }
+            }
+          }
+        },
+        "responses" : {
+          "405" : {
+            "description" : "Invalid input"
+          }
+        },
+        "security" : [ {
+          "petstore_auth" : [ "write:pets", "read:pets" ]
+        } ]
+      },
+      "delete" : {
+        "tags" : [ "pet" ],
+        "summary" : "Deletes a pet",
+        "description" : "",
+        "operationId" : "deletePet",
+        "parameters" : [ {
+          "required" : false,
+          "schema" : {
+            "type" : "string"
+          },
+          "in" : "header",
+          "name" : "api_key"
+        }, {
+          "description" : "Pet id to delete",
+          "required" : true,
+          "schema" : {
+            "format" : "int64",
+            "type" : "integer"
+          },
+          "in" : "path",
+          "name" : "petId"
+        } ],
+        "responses" : {
+          "400" : {
+            "description" : "Invalid pet value"
+          }
+        },
+        "security" : [ {
+          "petstore_auth" : [ "write:pets", "read:pets" ]
+        } ]
+      }
+    },
+    "/pet/{petId}/uploadImage" : {
+      "post" : {
+        "tags" : [ "pet" ],
+        "summary" : "uploads an image",
+        "description" : "",
+        "operationId" : "uploadFile",
+        "parameters" : [ {
+          "description" : "ID of pet to update",
+          "required" : true,
+          "schema" : {
+            "format" : "int64",
+            "type" : "integer"
+          },
+          "in" : "path",
+          "name" : "petId"
+        } ],
+        "requestBody" : {
+          "content" : {
+            "multipart/form-data" : {
+              "schema" : {
+                "properties" : {
+                  "additionalMetadata" : {
+                    "description" : "Additional data to pass to server",
+                    "type" : "string"
+                  },
+                  "file" : {
+                    "description" : "file to upload",
+                    "format" : "binary",
+                    "type" : "string"
+                  }
+                },
+                "type" : "object"
+              }
+            }
+          }
+        },
+        "responses" : {
+          "200" : {
+            "description" : "successful operation",
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/ApiResponse"
+                }
+              }
+            }
+          }
+        },
+        "security" : [ {
+          "petstore_auth" : [ "write:pets", "read:pets" ]
+        } ]
+      }
+    },
+    "/store/inventory" : {
+      "get" : {
+        "tags" : [ "store" ],
+        "summary" : "Returns pet inventories by status",
+        "description" : "Returns a map of status codes to quantities",
+        "operationId" : "getInventory",
+        "responses" : {
+          "200" : {
+            "description" : "successful operation",
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "type" : "object",
+                  "additionalProperties" : {
+                    "format" : "int32",
+                    "type" : "integer"
+                  }
+                }
+              }
+            }
+          }
+        },
+        "security" : [ {
+          "api_key" : [ ]
+        } ]
+      }
+    },
+    "/store/order" : {
+      "post" : {
+        "tags" : [ "store" ],
+        "summary" : "Place an order for a pet",
+        "description" : "",
+        "operationId" : "placeOrder",
+        "requestBody" : {
+          "description" : "order placed for purchasing the pet",
+          "required" : true,
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/Order"
+              }
+            }
+          }
+        },
+        "responses" : {
+          "200" : {
+            "description" : "successful operation",
+            "content" : {
+              "application/xml" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/Order"
+                }
+              },
+              "application/json" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/Order"
+                }
+              }
+            }
+          },
+          "400" : {
+            "description" : "Invalid Order"
+          }
+        }
+      }
+    },
+    "/store/order/{orderId}" : {
+      "get" : {
+        "tags" : [ "store" ],
+        "summary" : "Find purchase order by ID",
+        "description" : "For valid response try integer IDs with value <= 5 or > 10. Other values will generated exceptions",
+        "operationId" : "getOrderById",
+        "parameters" : [ {
+          "description" : "ID of pet that needs to be fetched",
+          "required" : true,
+          "schema" : {
+            "format" : "int64",
+            "maximum" : 10,
+            "minimum" : 1,
+            "type" : "integer"
+          },
+          "in" : "path",
+          "name" : "orderId"
+        } ],
+        "responses" : {
+          "200" : {
+            "description" : "successful operation",
+            "content" : {
+              "application/xml" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/Order"
+                }
+              },
+              "application/json" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/Order"
+                }
+              }
+            }
+          },
+          "400" : {
+            "description" : "Invalid ID supplied"
+          },
+          "404" : {
+            "description" : "Order not found"
+          }
+        }
+      },
+      "delete" : {
+        "tags" : [ "store" ],
+        "summary" : "Delete purchase order by ID",
+        "description" : "For valid response try integer IDs with value < 1000. Anything above 1000 or nonintegers will generate API errors",
+        "operationId" : "deleteOrder",
+        "parameters" : [ {
+          "description" : "ID of the order that needs to be deleted",
+          "required" : true,
+          "schema" : {
+            "type" : "string"
+          },
+          "in" : "path",
+          "name" : "orderId"
+        } ],
+        "responses" : {
+          "400" : {
+            "description" : "Invalid ID supplied"
+          },
+          "404" : {
+            "description" : "Order not found"
+          }
+        }
+      }
+    },
+    "/user" : {
+      "post" : {
+        "tags" : [ "user" ],
+        "summary" : "Create user",
+        "description" : "This can only be done by the logged in user.",
+        "operationId" : "createUser",
+        "requestBody" : {
+          "description" : "Created user object",
+          "required" : true,
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/User"
+              }
+            }
+          }
+        },
+        "responses" : {
+          "default" : {
+            "description" : "successful operation"
+          }
+        },
+        "security" : [ {
+          "api_key" : [ ]
+        } ]
+      }
+    },
+    "/user/createWithArray" : {
+      "post" : {
+        "tags" : [ "user" ],
+        "summary" : "Creates list of users with given input array",
+        "description" : "",
+        "operationId" : "createUsersWithArrayInput",
+        "requestBody" : {
+          "$ref" : "#/components/requestBodies/UserArray"
+        },
+        "responses" : {
+          "default" : {
+            "description" : "successful operation"
+          }
+        },
+        "security" : [ {
+          "api_key" : [ ]
+        } ]
+      }
+    },
+    "/user/createWithList" : {
+      "post" : {
+        "tags" : [ "user" ],
+        "summary" : "Creates list of users with given input array",
+        "description" : "",
+        "operationId" : "createUsersWithListInput",
+        "requestBody" : {
+          "$ref" : "#/components/requestBodies/UserArray"
+        },
+        "responses" : {
+          "default" : {
+            "description" : "successful operation"
+          }
+        },
+        "security" : [ {
+          "api_key" : [ ]
+        } ]
+      }
+    },
+    "/user/login" : {
+      "get" : {
+        "tags" : [ "user" ],
+        "summary" : "Logs user into the system",
+        "description" : "",
+        "operationId" : "loginUser",
+        "parameters" : [ {
+          "description" : "The user name for login",
+          "required" : true,
+          "schema" : {
+            "pattern" : "^[a-zA-Z0-9]+[a-zA-Z0-9\\.\\-_]*[a-zA-Z0-9]+$",
+            "type" : "string"
+          },
+          "in" : "query",
+          "name" : "username"
+        }, {
+          "description" : "The password for login in clear text",
+          "required" : true,
+          "schema" : {
+            "type" : "string"
+          },
+          "in" : "query",
+          "name" : "password"
+        } ],
+        "responses" : {
+          "200" : {
+            "description" : "successful operation",
+            "headers" : {
+              "Set-Cookie" : {
+                "description" : "Cookie authentication key for use with the `api_key` apiKey authentication.",
+                "schema" : {
+                  "example" : "AUTH_KEY=abcde12345; Path=/; HttpOnly",
+                  "type" : "string"
+                }
+              },
+              "X-Rate-Limit" : {
+                "description" : "calls per hour allowed by the user",
+                "schema" : {
+                  "format" : "int32",
+                  "type" : "integer"
+                }
+              },
+              "X-Expires-After" : {
+                "description" : "date in UTC when token expires",
+                "schema" : {
+                  "format" : "date-time",
+                  "type" : "string"
+                }
+              }
+            },
+            "content" : {
+              "application/xml" : {
+                "schema" : {
+                  "type" : "string"
+                }
+              },
+              "application/json" : {
+                "schema" : {
+                  "type" : "string"
+                }
+              }
+            }
+          },
+          "400" : {
+            "description" : "Invalid username/password supplied"
+          }
+        }
+      }
+    },
+    "/user/logout" : {
+      "get" : {
+        "tags" : [ "user" ],
+        "summary" : "Logs out current logged in user session",
+        "description" : "",
+        "operationId" : "logoutUser",
+        "responses" : {
+          "default" : {
+            "description" : "successful operation"
+          }
+        },
+        "security" : [ {
+          "api_key" : [ ]
+        } ]
+      }
+    },
+    "/user/{username}" : {
+      "get" : {
+        "tags" : [ "user" ],
+        "summary" : "Get user by user name",
+        "description" : "",
+        "operationId" : "getUserByName",
+        "parameters" : [ {
+          "description" : "The name that needs to be fetched. Use user1 for testing.",
+          "required" : true,
+          "schema" : {
+            "type" : "string"
+          },
+          "in" : "path",
+          "name" : "username"
+        } ],
+        "responses" : {
+          "200" : {
+            "description" : "successful operation",
+            "content" : {
+              "application/xml" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/User"
+                }
+              },
+              "application/json" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/User"
+                }
+              }
+            }
+          },
+          "400" : {
+            "description" : "Invalid username supplied"
+          },
+          "404" : {
+            "description" : "User not found"
+          }
+        }
+      },
+      "put" : {
+        "tags" : [ "user" ],
+        "summary" : "Updated user",
+        "description" : "This can only be done by the logged in user.",
+        "operationId" : "updateUser",
+        "parameters" : [ {
+          "description" : "name that need to be deleted",
+          "required" : true,
+          "schema" : {
+            "type" : "string"
+          },
+          "in" : "path",
+          "name" : "username"
+        } ],
+        "requestBody" : {
+          "description" : "Updated user object",
+          "required" : true,
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/User"
+              }
+            }
+          }
+        },
+        "responses" : {
+          "400" : {
+            "description" : "Invalid user supplied"
+          },
+          "404" : {
+            "description" : "User not found"
+          }
+        },
+        "security" : [ {
+          "api_key" : [ ]
+        } ]
+      },
+      "delete" : {
+        "tags" : [ "user" ],
+        "summary" : "Delete user",
+        "description" : "This can only be done by the logged in user.",
+        "operationId" : "deleteUser",
+        "parameters" : [ {
+          "description" : "The name that needs to be deleted",
+          "required" : true,
+          "schema" : {
+            "type" : "string"
+          },
+          "in" : "path",
+          "name" : "username"
+        } ],
+        "responses" : {
+          "400" : {
+            "description" : "Invalid username supplied"
+          },
+          "404" : {
+            "description" : "User not found"
+          }
+        },
+        "security" : [ {
+          "api_key" : [ ]
+        } ]
+      }
+    }
+  },
+  "components" : {
+    "requestBodies" : {
+      "UserArray" : {
+        "description" : "List of user object",
+        "required" : true,
+        "content" : {
+          "application/json" : {
+            "schema" : {
+              "type" : "array",
+              "items" : {
+                "$ref" : "#/components/schemas/User"
+              }
+            }
+          }
+        }
+      },
+      "Pet" : {
+        "description" : "Pet object that needs to be added to the store",
+        "required" : true,
+        "content" : {
+          "application/json" : {
+            "schema" : {
+              "$ref" : "#/components/schemas/Pet"
+            }
+          },
+          "application/xml" : {
+            "schema" : {
+              "$ref" : "#/components/schemas/Pet"
+            }
+          }
+        }
+      }
+    },
+    "schemas" : {
+      "Order" : {
+        "description" : "An order for a pets from the pet store",
+        "properties" : {
+          "id" : {
+            "format" : "int64",
+            "type" : "integer"
+          },
+          "petId" : {
+            "format" : "int64",
+            "type" : "integer"
+          },
+          "quantity" : {
+            "format" : "int32",
+            "type" : "integer"
+          },
+          "shipDate" : {
+            "format" : "date-time",
+            "type" : "string"
+          },
+          "status" : {
+            "description" : "Order Status",
+            "type" : "string",
+            "enum" : [ "placed", "approved", "delivered" ]
+          },
+          "complete" : {
+            "type" : "boolean",
+            "default" : false
+          }
+        },
+        "type" : "object",
+        "title" : "Pet Order",
+        "xml" : {
+          "name" : "Order"
+        }
+      },
+      "Category" : {
+        "description" : "A category for a pet",
+        "properties" : {
+          "id" : {
+            "format" : "int64",
+            "type" : "integer"
+          },
+          "name" : {
+            "pattern" : "^[a-zA-Z0-9]+[a-zA-Z0-9\\.\\-_]*[a-zA-Z0-9]+$",
+            "type" : "string"
+          }
+        },
+        "type" : "object",
+        "title" : "Pet category",
+        "xml" : {
+          "name" : "Category"
+        }
+      },
+      "User" : {
+        "description" : "A User who is purchasing from the pet store",
+        "properties" : {
+          "id" : {
+            "format" : "int64",
+            "type" : "integer"
+          },
+          "username" : {
+            "type" : "string"
+          },
+          "firstName" : {
+            "type" : "string"
+          },
+          "lastName" : {
+            "type" : "string"
+          },
+          "email" : {
+            "type" : "string"
+          },
+          "password" : {
+            "type" : "string"
+          },
+          "phone" : {
+            "type" : "string"
+          },
+          "userStatus" : {
+            "description" : "User Status",
+            "format" : "int32",
+            "type" : "integer"
+          }
+        },
+        "type" : "object",
+        "title" : "a User",
+        "xml" : {
+          "name" : "User"
+        }
+      },
+      "Tag" : {
+        "description" : "A tag for a pet",
+        "properties" : {
+          "id" : {
+            "format" : "int64",
+            "type" : "integer"
+          },
+          "name" : {
+            "type" : "string"
+          }
+        },
+        "type" : "object",
+        "title" : "Pet Tag",
+        "xml" : {
+          "name" : "Tag"
+        }
+      },
+      "Pet" : {
+        "description" : "A pet for sale in the pet store",
+        "properties" : {
+          "id" : {
+            "format" : "int64",
+            "type" : "integer"
+          },
+          "category" : {
+            "$ref" : "#/components/schemas/Category"
+          },
+          "name" : {
+            "example" : "doggie",
+            "type" : "string"
+          },
+          "photoUrls" : {
+            "type" : "array",
+            "xml" : {
+              "name" : "photoUrl",
+              "wrapped" : true
+            },
+            "items" : {
+              "type" : "string"
+            }
+          },
+          "tags" : {
+            "type" : "array",
+            "xml" : {
+              "name" : "tag",
+              "wrapped" : true
+            },
+            "items" : {
+              "$ref" : "#/components/schemas/Tag"
+            }
+          },
+          "status" : {
+            "description" : "pet status in the store",
+            "deprecated" : true,
+            "type" : "string",
+            "enum" : [ "available", "pending", "sold" ]
+          }
+        },
+        "type" : "object",
+        "title" : "a Pet",
+        "xml" : {
+          "name" : "Pet"
+        },
+        "required" : [ "name", "photoUrls" ]
+      },
+      "ApiResponse" : {
+        "description" : "Describes the result of uploading an image resource",
+        "properties" : {
+          "code" : {
+            "format" : "int32",
+            "type" : "integer"
+          },
+          "type" : {
+            "type" : "string"
+          },
+          "message" : {
+            "type" : "string"
+          }
+        },
+        "type" : "object",
+        "title" : "An uploaded response"
+      }
+    },
+    "securitySchemes" : {
+      "petstore_auth" : {
+        "type" : "oauth2",
+        "flows" : {
+          "implicit" : {
+            "authorizationUrl" : "http://petstore.swagger.io/api/oauth/dialog",
+            "scopes" : {
+              "write:pets" : "modify pets in your account",
+              "read:pets" : "read your pets"
+            }
+          }
+        }
+      },
+      "api_key" : {
+        "type" : "apiKey",
+        "name" : "api_key",
+        "in" : "header"
+      }
+    }
+  },
+  "externalDocs" : {
+    "description" : "Find out more about Swagger",
+    "url" : "http://swagger.io"
+  }
+}
\ No newline at end of file
diff --git a/src/gen/java/de/tudresden/inf/st/openapi/ast/ASTNode.java b/src/gen/java/de/tudresden/inf/st/openapi/ast/ASTNode.java
index 6337e90e..9e6d4b58 100644
--- a/src/gen/java/de/tudresden/inf/st/openapi/ast/ASTNode.java
+++ b/src/gen/java/de/tudresden/inf/st/openapi/ast/ASTNode.java
@@ -486,7 +486,7 @@ public class ASTNode<T extends ASTNode> implements Cloneable {
   }
   /**
    * @aspect <NoAspect>
-   * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\InfSchema.jrag:15
+   * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\InfSchema.jrag:16
    */
     /** @apilevel internal */
   protected void collect_contributors_OpenAPIObject_schemaTuples(OpenAPIObject _root, java.util.Map<ASTNode, java.util.Set<ASTNode>> _map) {
@@ -495,16 +495,16 @@ public class ASTNode<T extends ASTNode> implements Cloneable {
     }
   }
   /** @apilevel internal */
-  protected void contributeTo_OpenAPIObject_schemaTuples(java.util.Set<SchemaTuple> collection) {
+  protected void contributeTo_OpenAPIObject_schemaTuples(Set<SchemaTuple> collection) {
   }
 
   /**
    * @attribute inh
    * @aspect InfSchema
-   * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\InfSchema.jrag:18
+   * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\InfSchema.jrag:13
    */
   @ASTNodeAnnotation.Attribute(kind=ASTNodeAnnotation.Kind.INH)
-  @ASTNodeAnnotation.Source(aspect="InfSchema", declaredAt="E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\InfSchema.jrag:18")
+  @ASTNodeAnnotation.Source(aspect="InfSchema", declaredAt="E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\InfSchema.jrag:13")
   public OpenAPIObject root() {
     if (root_visited) {
       throw new RuntimeException("Circular definition of attribute ASTNode.root().");
@@ -537,7 +537,7 @@ protected boolean root_visited = false;
   }
 
   /**
-   * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\InfSchema.jrag:19
+   * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\InfSchema.jrag:14
    * @apilevel internal
    * @return {@code true} if this node has an equation for the inherited attribute root
    */
@@ -557,7 +557,7 @@ protected boolean root_visited = false;
   }
 
   /**
-   * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\InfSchema.jrag:22
+   * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\InfSchema.jrag:21
    * @apilevel internal
    * @return {@code true} if this node has an equation for the inherited attribute inferUrl
    */
@@ -577,7 +577,7 @@ protected boolean root_visited = false;
   }
 
   /**
-   * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\RandomRequestGenerator.jrag:83
+   * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\RandomRequestGenerator.jrag:84
    * @apilevel internal
    * @return {@code true} if this node has an equation for the inherited attribute generateUrl
    */
diff --git a/src/gen/java/de/tudresden/inf/st/openapi/ast/Delete.java b/src/gen/java/de/tudresden/inf/st/openapi/ast/Delete.java
index c59221f3..f44a1adf 100644
--- a/src/gen/java/de/tudresden/inf/st/openapi/ast/Delete.java
+++ b/src/gen/java/de/tudresden/inf/st/openapi/ast/Delete.java
@@ -181,10 +181,10 @@ protected java.util.Set inferRandomUrl_String_OperationObject_visited;
   /**
    * @attribute syn
    * @aspect InfSchema
-   * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\InfSchema.jrag:34
+   * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\InfSchema.jrag:33
    */
   @ASTNodeAnnotation.Attribute(kind=ASTNodeAnnotation.Kind.SYN)
-  @ASTNodeAnnotation.Source(aspect="InfSchema", declaredAt="E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\InfSchema.jrag:34")
+  @ASTNodeAnnotation.Source(aspect="InfSchema", declaredAt="E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\InfSchema.jrag:33")
   public String inferRandomUrl(String pathRef, OperationObject operationObject) {
     java.util.List _parameters = new java.util.ArrayList(2);
     _parameters.add(pathRef);
@@ -206,10 +206,10 @@ protected java.util.Set generateRandomUrl_String_OperationObject_Map_ResponseObj
   /**
    * @attribute syn
    * @aspect RandomRequestGenerator
-   * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\RandomRequestGenerator.jrag:96
+   * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\RandomRequestGenerator.jrag:97
    */
   @ASTNodeAnnotation.Attribute(kind=ASTNodeAnnotation.Kind.SYN)
-  @ASTNodeAnnotation.Source(aspect="RandomRequestGenerator", declaredAt="E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\RandomRequestGenerator.jrag:96")
+  @ASTNodeAnnotation.Source(aspect="RandomRequestGenerator", declaredAt="E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\RandomRequestGenerator.jrag:97")
   public String generateRandomUrl(String pathRef, OperationObject operationObject, Map<ResponseObject, String> responses) {
     java.util.List _parameters = new java.util.ArrayList(3);
     _parameters.add(pathRef);
diff --git a/src/gen/java/de/tudresden/inf/st/openapi/ast/Get.java b/src/gen/java/de/tudresden/inf/st/openapi/ast/Get.java
index 2ae57182..c79388d2 100644
--- a/src/gen/java/de/tudresden/inf/st/openapi/ast/Get.java
+++ b/src/gen/java/de/tudresden/inf/st/openapi/ast/Get.java
@@ -181,10 +181,10 @@ protected java.util.Set inferRandomUrl_String_OperationObject_visited;
   /**
    * @attribute syn
    * @aspect InfSchema
-   * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\InfSchema.jrag:34
+   * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\InfSchema.jrag:33
    */
   @ASTNodeAnnotation.Attribute(kind=ASTNodeAnnotation.Kind.SYN)
-  @ASTNodeAnnotation.Source(aspect="InfSchema", declaredAt="E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\InfSchema.jrag:34")
+  @ASTNodeAnnotation.Source(aspect="InfSchema", declaredAt="E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\InfSchema.jrag:33")
   public String inferRandomUrl(String pathRef, OperationObject operationObject) {
     java.util.List _parameters = new java.util.ArrayList(2);
     _parameters.add(pathRef);
@@ -207,10 +207,10 @@ protected java.util.Set generateRandomUrl_String_OperationObject_Map_ResponseObj
   /**
    * @attribute syn
    * @aspect RandomRequestGenerator
-   * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\RandomRequestGenerator.jrag:96
+   * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\RandomRequestGenerator.jrag:97
    */
   @ASTNodeAnnotation.Attribute(kind=ASTNodeAnnotation.Kind.SYN)
-  @ASTNodeAnnotation.Source(aspect="RandomRequestGenerator", declaredAt="E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\RandomRequestGenerator.jrag:96")
+  @ASTNodeAnnotation.Source(aspect="RandomRequestGenerator", declaredAt="E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\RandomRequestGenerator.jrag:97")
   public String generateRandomUrl(String pathRef, OperationObject operationObject, Map<ResponseObject, String> responses) {
     java.util.List _parameters = new java.util.ArrayList(3);
     _parameters.add(pathRef);
diff --git a/src/gen/java/de/tudresden/inf/st/openapi/ast/Head.java b/src/gen/java/de/tudresden/inf/st/openapi/ast/Head.java
index 1aa23269..9d818573 100644
--- a/src/gen/java/de/tudresden/inf/st/openapi/ast/Head.java
+++ b/src/gen/java/de/tudresden/inf/st/openapi/ast/Head.java
@@ -181,10 +181,10 @@ protected java.util.Set inferRandomUrl_String_OperationObject_visited;
   /**
    * @attribute syn
    * @aspect InfSchema
-   * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\InfSchema.jrag:34
+   * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\InfSchema.jrag:33
    */
   @ASTNodeAnnotation.Attribute(kind=ASTNodeAnnotation.Kind.SYN)
-  @ASTNodeAnnotation.Source(aspect="InfSchema", declaredAt="E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\InfSchema.jrag:34")
+  @ASTNodeAnnotation.Source(aspect="InfSchema", declaredAt="E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\InfSchema.jrag:33")
   public String inferRandomUrl(String pathRef, OperationObject operationObject) {
     java.util.List _parameters = new java.util.ArrayList(2);
     _parameters.add(pathRef);
@@ -206,10 +206,10 @@ protected java.util.Set generateRandomUrl_String_OperationObject_Map_ResponseObj
   /**
    * @attribute syn
    * @aspect RandomRequestGenerator
-   * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\RandomRequestGenerator.jrag:96
+   * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\RandomRequestGenerator.jrag:97
    */
   @ASTNodeAnnotation.Attribute(kind=ASTNodeAnnotation.Kind.SYN)
-  @ASTNodeAnnotation.Source(aspect="RandomRequestGenerator", declaredAt="E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\RandomRequestGenerator.jrag:96")
+  @ASTNodeAnnotation.Source(aspect="RandomRequestGenerator", declaredAt="E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\RandomRequestGenerator.jrag:97")
   public String generateRandomUrl(String pathRef, OperationObject operationObject, Map<ResponseObject, String> responses) {
     java.util.List _parameters = new java.util.ArrayList(3);
     _parameters.add(pathRef);
diff --git a/src/gen/java/de/tudresden/inf/st/openapi/ast/OpenAPIObject.java b/src/gen/java/de/tudresden/inf/st/openapi/ast/OpenAPIObject.java
index 0ea8197f..ff1db0e6 100644
--- a/src/gen/java/de/tudresden/inf/st/openapi/ast/OpenAPIObject.java
+++ b/src/gen/java/de/tudresden/inf/st/openapi/ast/OpenAPIObject.java
@@ -128,7 +128,8 @@ public class OpenAPIObject extends ASTNode<ASTNode> implements Cloneable {
         for( PathsObject p : this.getPathsObjects() )
             p.generateUrl(responses);
 
-        System.out.println(responses.size());        /*
+        System.out.println(responses.size());
+        /*
         for( String path : urls ){
         if( path.endsWith("GET") ){
         System.out.println(this.getServerObject(0).getUrl() + path.substring(0, path.length()-3));
@@ -1089,7 +1090,7 @@ public class OpenAPIObject extends ASTNode<ASTNode> implements Cloneable {
   }
   /**
    * @aspect <NoAspect>
-   * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\InfSchema.jrag:15
+   * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\InfSchema.jrag:16
    */
   /** @apilevel internal */
 protected java.util.Map<ASTNode, java.util.Set<ASTNode>> contributorMap_OpenAPIObject_schemaTuples = null;
@@ -1103,7 +1104,7 @@ protected java.util.Map<ASTNode, java.util.Set<ASTNode>> contributorMap_OpenAPIO
   }
 
   /**
-   * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\InfSchema.jrag:18
+   * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\InfSchema.jrag:13
    * @apilevel internal
    */
   public OpenAPIObject Define_root(ASTNode _callerNode, ASTNode _childNode) {
@@ -1111,7 +1112,7 @@ protected java.util.Map<ASTNode, java.util.Set<ASTNode>> contributorMap_OpenAPIO
     return this;
   }
   /**
-   * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\InfSchema.jrag:18
+   * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\InfSchema.jrag:13
    * @apilevel internal
    * @return {@code true} if this node has an equation for the inherited attribute root
    */
@@ -1119,12 +1120,12 @@ protected java.util.Map<ASTNode, java.util.Set<ASTNode>> contributorMap_OpenAPIO
     return true;
   }
   /**
-   * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\InfSchema.jrag:21
+   * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\InfSchema.jrag:20
    * @apilevel internal
    */
   public Set<String> Define_inferUrl(ASTNode _callerNode, ASTNode _childNode, Set<String> urls) {
     if (_callerNode == getPathsObjectListNoTransform()) {
-      // @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\InfSchema.jrag:22
+      // @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\InfSchema.jrag:21
       int i = _callerNode.getIndexOfChild(_childNode);
       {
               PathItemObject p = ((PathsObject) _childNode).getPathItemOb().pathItemObject();
@@ -1143,7 +1144,7 @@ protected java.util.Map<ASTNode, java.util.Set<ASTNode>> contributorMap_OpenAPIO
     }
   }
   /**
-   * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\InfSchema.jrag:21
+   * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\InfSchema.jrag:20
    * @apilevel internal
    * @return {@code true} if this node has an equation for the inherited attribute inferUrl
    */
@@ -1151,12 +1152,12 @@ protected java.util.Map<ASTNode, java.util.Set<ASTNode>> contributorMap_OpenAPIO
     return true;
   }
   /**
-   * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\RandomRequestGenerator.jrag:82
+   * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\RandomRequestGenerator.jrag:83
    * @apilevel internal
    */
   public Map<ResponseObject, String> Define_generateUrl(ASTNode _callerNode, ASTNode _childNode, Map<ResponseObject, String> responses) {
     if (_callerNode == getPathsObjectListNoTransform()) {
-      // @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\RandomRequestGenerator.jrag:83
+      // @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\RandomRequestGenerator.jrag:84
       int i = _callerNode.getIndexOfChild(_childNode);
       {
               PathItemObject p = ((PathsObject) _childNode).getPathItemOb().pathItemObject();
@@ -1177,7 +1178,7 @@ protected java.util.Map<ASTNode, java.util.Set<ASTNode>> contributorMap_OpenAPIO
     }
   }
   /**
-   * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\RandomRequestGenerator.jrag:82
+   * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\RandomRequestGenerator.jrag:83
    * @apilevel internal
    * @return {@code true} if this node has an equation for the inherited attribute generateUrl
    */
@@ -1197,11 +1198,11 @@ protected boolean OpenAPIObject_schemaTuples_visited = false;
   /**
    * @attribute coll
    * @aspect InfSchema
-   * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\InfSchema.jrag:15
+   * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\InfSchema.jrag:16
    */
   @ASTNodeAnnotation.Attribute(kind=ASTNodeAnnotation.Kind.COLL)
-  @ASTNodeAnnotation.Source(aspect="InfSchema", declaredAt="E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\InfSchema.jrag:15")
-  public java.util.Set<SchemaTuple> schemaTuples() {
+  @ASTNodeAnnotation.Source(aspect="InfSchema", declaredAt="E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\InfSchema.jrag:16")
+  public Set<SchemaTuple> schemaTuples() {
     ASTState state = state();
     if (OpenAPIObject_schemaTuples_computed == ASTState.NON_CYCLE || OpenAPIObject_schemaTuples_computed == state().cycle()) {
       return OpenAPIObject_schemaTuples_value;
@@ -1222,14 +1223,14 @@ protected boolean OpenAPIObject_schemaTuples_visited = false;
     return OpenAPIObject_schemaTuples_value;
   }
   /** @apilevel internal */
-  private java.util.Set<SchemaTuple> schemaTuples_compute() {
+  private Set<SchemaTuple> schemaTuples_compute() {
     ASTNode node = this;
     while (node != null && !(node instanceof OpenAPIObject)) {
       node = node.getParent();
     }
     OpenAPIObject root = (OpenAPIObject) node;
     root.survey_OpenAPIObject_schemaTuples();
-    java.util.Set<SchemaTuple> _computedValue = new java.util.HashSet<>();
+    Set<SchemaTuple> _computedValue = new HashSet<>();
     if (root.contributorMap_OpenAPIObject_schemaTuples.containsKey(this)) {
       for (ASTNode contributor : root.contributorMap_OpenAPIObject_schemaTuples.get(this)) {
         contributor.contributeTo_OpenAPIObject_schemaTuples(_computedValue);
@@ -1241,6 +1242,6 @@ protected boolean OpenAPIObject_schemaTuples_visited = false;
   protected ASTState.Cycle OpenAPIObject_schemaTuples_computed = null;
 
   /** @apilevel internal */
-  protected java.util.Set<SchemaTuple> OpenAPIObject_schemaTuples_value;
+  protected Set<SchemaTuple> OpenAPIObject_schemaTuples_value;
 
 }
diff --git a/src/gen/java/de/tudresden/inf/st/openapi/ast/OperationOb.java b/src/gen/java/de/tudresden/inf/st/openapi/ast/OperationOb.java
index 23953274..e4a48bdc 100644
--- a/src/gen/java/de/tudresden/inf/st/openapi/ast/OperationOb.java
+++ b/src/gen/java/de/tudresden/inf/st/openapi/ast/OperationOb.java
@@ -101,18 +101,18 @@ public abstract class OperationOb extends ASTNode<ASTNode> implements Cloneable
   /**
    * @attribute syn
    * @aspect InfSchema
-   * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\InfSchema.jrag:34
+   * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\InfSchema.jrag:33
    */
   @ASTNodeAnnotation.Attribute(kind=ASTNodeAnnotation.Kind.SYN)
-  @ASTNodeAnnotation.Source(aspect="InfSchema", declaredAt="E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\InfSchema.jrag:34")
+  @ASTNodeAnnotation.Source(aspect="InfSchema", declaredAt="E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\InfSchema.jrag:33")
   public abstract String inferRandomUrl(String pathRef, OperationObject operationObject);
   /**
    * @attribute syn
    * @aspect RandomRequestGenerator
-   * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\RandomRequestGenerator.jrag:96
+   * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\RandomRequestGenerator.jrag:97
    */
   @ASTNodeAnnotation.Attribute(kind=ASTNodeAnnotation.Kind.SYN)
-  @ASTNodeAnnotation.Source(aspect="RandomRequestGenerator", declaredAt="E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\RandomRequestGenerator.jrag:96")
+  @ASTNodeAnnotation.Source(aspect="RandomRequestGenerator", declaredAt="E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\RandomRequestGenerator.jrag:97")
   public abstract String generateRandomUrl(String pathRef, OperationObject operationObject, Map<ResponseObject, String> responses);
   /** @apilevel internal */
   public ASTNode rewriteTo() {
diff --git a/src/gen/java/de/tudresden/inf/st/openapi/ast/OperationObject.java b/src/gen/java/de/tudresden/inf/st/openapi/ast/OperationObject.java
index 8104e7f3..37781338 100644
--- a/src/gen/java/de/tudresden/inf/st/openapi/ast/OperationObject.java
+++ b/src/gen/java/de/tudresden/inf/st/openapi/ast/OperationObject.java
@@ -136,7 +136,7 @@ public class OperationObject extends OperationOb implements Cloneable {
         }
   /**
    * @aspect RandomRequestGenerator
-   * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\RandomRequestGenerator.jrag:376
+   * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\RandomRequestGenerator.jrag:377
    */
   public String generateRandomString(Random rand, JastAddList<EnumObj> objs) {
         if( objs.getNumChild() != 0 )
@@ -150,7 +150,7 @@ public class OperationObject extends OperationOb implements Cloneable {
     }
   /**
    * @aspect RandomRequestGenerator
-   * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\RandomRequestGenerator.jrag:387
+   * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\RandomRequestGenerator.jrag:388
    */
   public String generateRandomInt(Random rand, int minimum, int maximum){
         if( minimum > -1 && maximum > 0 )
@@ -1293,10 +1293,10 @@ protected java.util.Set inferRandomUrl_String_OperationObject_visited;
   /**
    * @attribute syn
    * @aspect InfSchema
-   * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\InfSchema.jrag:34
+   * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\InfSchema.jrag:33
    */
   @ASTNodeAnnotation.Attribute(kind=ASTNodeAnnotation.Kind.SYN)
-  @ASTNodeAnnotation.Source(aspect="InfSchema", declaredAt="E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\InfSchema.jrag:34")
+  @ASTNodeAnnotation.Source(aspect="InfSchema", declaredAt="E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\InfSchema.jrag:33")
   public String inferRandomUrl(String pathRef, OperationObject operationObject) {
     java.util.List _parameters = new java.util.ArrayList(2);
     _parameters.add(pathRef);
@@ -1314,30 +1314,28 @@ protected java.util.Set inferRandomUrl_String_OperationObject_visited;
     }
   }
 /** @apilevel internal */
-protected java.util.Set getDict_Set_SchemaTuple__Map_ResponseObject__String__visited;
+protected java.util.Set addDict_Map_ResponseObject__String__visited;
   /**
    * @attribute syn
    * @aspect InfSchema
-   * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\InfSchema.jrag:65
+   * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\InfSchema.jrag:64
    */
   @ASTNodeAnnotation.Attribute(kind=ASTNodeAnnotation.Kind.SYN)
-  @ASTNodeAnnotation.Source(aspect="InfSchema", declaredAt="E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\InfSchema.jrag:65")
-  public Map<String, List<String>> getDict(Set<SchemaTuple> tuples, Map<ResponseObject, String> responses) {
-    java.util.List _parameters = new java.util.ArrayList(2);
-    _parameters.add(tuples);
-    _parameters.add(responses);
-    if (getDict_Set_SchemaTuple__Map_ResponseObject__String__visited == null) getDict_Set_SchemaTuple__Map_ResponseObject__String__visited = new java.util.HashSet(4);
-    if (getDict_Set_SchemaTuple__Map_ResponseObject__String__visited.contains(_parameters)) {
-      throw new RuntimeException("Circular definition of attribute OperationObject.getDict(Set_SchemaTuple_,Map_ResponseObject__String_).");
+  @ASTNodeAnnotation.Source(aspect="InfSchema", declaredAt="E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\InfSchema.jrag:64")
+  public Map<String, List<String>> addDict(Map<ResponseObject, String> responses) {
+    Object _parameters = responses;
+    if (addDict_Map_ResponseObject__String__visited == null) addDict_Map_ResponseObject__String__visited = new java.util.HashSet(4);
+    if (addDict_Map_ResponseObject__String__visited.contains(_parameters)) {
+      throw new RuntimeException("Circular definition of attribute OperationObject.addDict(Map_ResponseObject__String_).");
     }
-    getDict_Set_SchemaTuple__Map_ResponseObject__String__visited.add(_parameters);
+    addDict_Map_ResponseObject__String__visited.add(_parameters);
     try {
             Map<String, List<String>> map = new HashMap<>();
     
             return map;
         }
     finally {
-      getDict_Set_SchemaTuple__Map_ResponseObject__String__visited.remove(_parameters);
+      addDict_Map_ResponseObject__String__visited.remove(_parameters);
     }
   }
 /** @apilevel internal */
@@ -1345,10 +1343,10 @@ protected java.util.Set generateRandomUrl_String_OperationObject_Map_ResponseObj
   /**
    * @attribute syn
    * @aspect RandomRequestGenerator
-   * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\RandomRequestGenerator.jrag:96
+   * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\RandomRequestGenerator.jrag:97
    */
   @ASTNodeAnnotation.Attribute(kind=ASTNodeAnnotation.Kind.SYN)
-  @ASTNodeAnnotation.Source(aspect="RandomRequestGenerator", declaredAt="E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\RandomRequestGenerator.jrag:96")
+  @ASTNodeAnnotation.Source(aspect="RandomRequestGenerator", declaredAt="E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\RandomRequestGenerator.jrag:97")
   public String generateRandomUrl(String pathRef, OperationObject operationObject, Map<ResponseObject, String> responses) {
     java.util.List _parameters = new java.util.ArrayList(3);
     _parameters.add(pathRef);
diff --git a/src/gen/java/de/tudresden/inf/st/openapi/ast/Options.java b/src/gen/java/de/tudresden/inf/st/openapi/ast/Options.java
index 07a19195..95f709cd 100644
--- a/src/gen/java/de/tudresden/inf/st/openapi/ast/Options.java
+++ b/src/gen/java/de/tudresden/inf/st/openapi/ast/Options.java
@@ -181,10 +181,10 @@ protected java.util.Set inferRandomUrl_String_OperationObject_visited;
   /**
    * @attribute syn
    * @aspect InfSchema
-   * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\InfSchema.jrag:34
+   * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\InfSchema.jrag:33
    */
   @ASTNodeAnnotation.Attribute(kind=ASTNodeAnnotation.Kind.SYN)
-  @ASTNodeAnnotation.Source(aspect="InfSchema", declaredAt="E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\InfSchema.jrag:34")
+  @ASTNodeAnnotation.Source(aspect="InfSchema", declaredAt="E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\InfSchema.jrag:33")
   public String inferRandomUrl(String pathRef, OperationObject operationObject) {
     java.util.List _parameters = new java.util.ArrayList(2);
     _parameters.add(pathRef);
@@ -206,10 +206,10 @@ protected java.util.Set generateRandomUrl_String_OperationObject_Map_ResponseObj
   /**
    * @attribute syn
    * @aspect RandomRequestGenerator
-   * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\RandomRequestGenerator.jrag:96
+   * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\RandomRequestGenerator.jrag:97
    */
   @ASTNodeAnnotation.Attribute(kind=ASTNodeAnnotation.Kind.SYN)
-  @ASTNodeAnnotation.Source(aspect="RandomRequestGenerator", declaredAt="E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\RandomRequestGenerator.jrag:96")
+  @ASTNodeAnnotation.Source(aspect="RandomRequestGenerator", declaredAt="E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\RandomRequestGenerator.jrag:97")
   public String generateRandomUrl(String pathRef, OperationObject operationObject, Map<ResponseObject, String> responses) {
     java.util.List _parameters = new java.util.ArrayList(3);
     _parameters.add(pathRef);
diff --git a/src/gen/java/de/tudresden/inf/st/openapi/ast/ParameterObject.java b/src/gen/java/de/tudresden/inf/st/openapi/ast/ParameterObject.java
index a00d115e..e352fe27 100644
--- a/src/gen/java/de/tudresden/inf/st/openapi/ast/ParameterObject.java
+++ b/src/gen/java/de/tudresden/inf/st/openapi/ast/ParameterObject.java
@@ -825,24 +825,6 @@ protected java.util.Set composeParameter_ParameterOb_Map_Object__ASTNode__visite
     }
   }
 /** @apilevel internal */
-protected boolean schemaObject_visited = false;
-  /**
-   * @attribute syn
-   * @aspect InfSchema
-   * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\InfSchema.jrag:3
-   */
-  @ASTNodeAnnotation.Attribute(kind=ASTNodeAnnotation.Kind.SYN)
-  @ASTNodeAnnotation.Source(aspect="InfSchema", declaredAt="E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\InfSchema.jrag:3")
-  public SchemaObject schemaObject() {
-    if (schemaObject_visited) {
-      throw new RuntimeException("Circular definition of attribute ParameterObject.schemaObject().");
-    }
-    schemaObject_visited = true;
-    SchemaObject schemaObject_value = getSchemaOb().schemaObject();
-    schemaObject_visited = false;
-    return schemaObject_value;
-  }
-/** @apilevel internal */
 protected boolean parameterObject_visited = false;
   /**
    * @attribute syn
diff --git a/src/gen/java/de/tudresden/inf/st/openapi/ast/Patch.java b/src/gen/java/de/tudresden/inf/st/openapi/ast/Patch.java
index 52722173..f70f6436 100644
--- a/src/gen/java/de/tudresden/inf/st/openapi/ast/Patch.java
+++ b/src/gen/java/de/tudresden/inf/st/openapi/ast/Patch.java
@@ -181,10 +181,10 @@ protected java.util.Set inferRandomUrl_String_OperationObject_visited;
   /**
    * @attribute syn
    * @aspect InfSchema
-   * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\InfSchema.jrag:34
+   * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\InfSchema.jrag:33
    */
   @ASTNodeAnnotation.Attribute(kind=ASTNodeAnnotation.Kind.SYN)
-  @ASTNodeAnnotation.Source(aspect="InfSchema", declaredAt="E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\InfSchema.jrag:34")
+  @ASTNodeAnnotation.Source(aspect="InfSchema", declaredAt="E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\InfSchema.jrag:33")
   public String inferRandomUrl(String pathRef, OperationObject operationObject) {
     java.util.List _parameters = new java.util.ArrayList(2);
     _parameters.add(pathRef);
@@ -206,10 +206,10 @@ protected java.util.Set generateRandomUrl_String_OperationObject_Map_ResponseObj
   /**
    * @attribute syn
    * @aspect RandomRequestGenerator
-   * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\RandomRequestGenerator.jrag:96
+   * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\RandomRequestGenerator.jrag:97
    */
   @ASTNodeAnnotation.Attribute(kind=ASTNodeAnnotation.Kind.SYN)
-  @ASTNodeAnnotation.Source(aspect="RandomRequestGenerator", declaredAt="E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\RandomRequestGenerator.jrag:96")
+  @ASTNodeAnnotation.Source(aspect="RandomRequestGenerator", declaredAt="E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\RandomRequestGenerator.jrag:97")
   public String generateRandomUrl(String pathRef, OperationObject operationObject, Map<ResponseObject, String> responses) {
     java.util.List _parameters = new java.util.ArrayList(3);
     _parameters.add(pathRef);
diff --git a/src/gen/java/de/tudresden/inf/st/openapi/ast/PathsObject.java b/src/gen/java/de/tudresden/inf/st/openapi/ast/PathsObject.java
index 6b24d4f0..a160031a 100644
--- a/src/gen/java/de/tudresden/inf/st/openapi/ast/PathsObject.java
+++ b/src/gen/java/de/tudresden/inf/st/openapi/ast/PathsObject.java
@@ -207,10 +207,10 @@ public class PathsObject extends ASTNode<ASTNode> implements Cloneable {
   /**
    * @attribute inh
    * @aspect InfSchema
-   * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\InfSchema.jrag:21
+   * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\InfSchema.jrag:20
    */
   @ASTNodeAnnotation.Attribute(kind=ASTNodeAnnotation.Kind.INH)
-  @ASTNodeAnnotation.Source(aspect="InfSchema", declaredAt="E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\InfSchema.jrag:21")
+  @ASTNodeAnnotation.Source(aspect="InfSchema", declaredAt="E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\InfSchema.jrag:20")
   public Set<String> inferUrl(Set<String> urls) {
     Object _parameters = urls;
     if (inferUrl_Set_String__visited == null) inferUrl_Set_String__visited = new java.util.HashSet(4);
@@ -227,10 +227,10 @@ protected java.util.Set inferUrl_Set_String__visited;
   /**
    * @attribute inh
    * @aspect RandomRequestGenerator
-   * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\RandomRequestGenerator.jrag:82
+   * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\RandomRequestGenerator.jrag:83
    */
   @ASTNodeAnnotation.Attribute(kind=ASTNodeAnnotation.Kind.INH)
-  @ASTNodeAnnotation.Source(aspect="RandomRequestGenerator", declaredAt="E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\RandomRequestGenerator.jrag:82")
+  @ASTNodeAnnotation.Source(aspect="RandomRequestGenerator", declaredAt="E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\RandomRequestGenerator.jrag:83")
   public Map<ResponseObject, String> generateUrl(Map<ResponseObject, String> responses) {
     Object _parameters = responses;
     if (generateUrl_Map_ResponseObject__String__visited == null) generateUrl_Map_ResponseObject__String__visited = new java.util.HashSet(4);
diff --git a/src/gen/java/de/tudresden/inf/st/openapi/ast/Post.java b/src/gen/java/de/tudresden/inf/st/openapi/ast/Post.java
index 4e567100..ddab0d5b 100644
--- a/src/gen/java/de/tudresden/inf/st/openapi/ast/Post.java
+++ b/src/gen/java/de/tudresden/inf/st/openapi/ast/Post.java
@@ -181,10 +181,10 @@ protected java.util.Set inferRandomUrl_String_OperationObject_visited;
   /**
    * @attribute syn
    * @aspect InfSchema
-   * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\InfSchema.jrag:34
+   * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\InfSchema.jrag:33
    */
   @ASTNodeAnnotation.Attribute(kind=ASTNodeAnnotation.Kind.SYN)
-  @ASTNodeAnnotation.Source(aspect="InfSchema", declaredAt="E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\InfSchema.jrag:34")
+  @ASTNodeAnnotation.Source(aspect="InfSchema", declaredAt="E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\InfSchema.jrag:33")
   public String inferRandomUrl(String pathRef, OperationObject operationObject) {
     java.util.List _parameters = new java.util.ArrayList(2);
     _parameters.add(pathRef);
@@ -207,10 +207,10 @@ protected java.util.Set generateRandomUrl_String_OperationObject_Map_ResponseObj
   /**
    * @attribute syn
    * @aspect RandomRequestGenerator
-   * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\RandomRequestGenerator.jrag:96
+   * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\RandomRequestGenerator.jrag:97
    */
   @ASTNodeAnnotation.Attribute(kind=ASTNodeAnnotation.Kind.SYN)
-  @ASTNodeAnnotation.Source(aspect="RandomRequestGenerator", declaredAt="E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\RandomRequestGenerator.jrag:96")
+  @ASTNodeAnnotation.Source(aspect="RandomRequestGenerator", declaredAt="E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\RandomRequestGenerator.jrag:97")
   public String generateRandomUrl(String pathRef, OperationObject operationObject, Map<ResponseObject, String> responses) {
     java.util.List _parameters = new java.util.ArrayList(3);
     _parameters.add(pathRef);
diff --git a/src/gen/java/de/tudresden/inf/st/openapi/ast/Put.java b/src/gen/java/de/tudresden/inf/st/openapi/ast/Put.java
index 3f15eda0..24bd11ab 100644
--- a/src/gen/java/de/tudresden/inf/st/openapi/ast/Put.java
+++ b/src/gen/java/de/tudresden/inf/st/openapi/ast/Put.java
@@ -181,10 +181,10 @@ protected java.util.Set inferRandomUrl_String_OperationObject_visited;
   /**
    * @attribute syn
    * @aspect InfSchema
-   * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\InfSchema.jrag:34
+   * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\InfSchema.jrag:33
    */
   @ASTNodeAnnotation.Attribute(kind=ASTNodeAnnotation.Kind.SYN)
-  @ASTNodeAnnotation.Source(aspect="InfSchema", declaredAt="E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\InfSchema.jrag:34")
+  @ASTNodeAnnotation.Source(aspect="InfSchema", declaredAt="E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\InfSchema.jrag:33")
   public String inferRandomUrl(String pathRef, OperationObject operationObject) {
     java.util.List _parameters = new java.util.ArrayList(2);
     _parameters.add(pathRef);
@@ -206,10 +206,10 @@ protected java.util.Set generateRandomUrl_String_OperationObject_Map_ResponseObj
   /**
    * @attribute syn
    * @aspect RandomRequestGenerator
-   * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\RandomRequestGenerator.jrag:96
+   * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\RandomRequestGenerator.jrag:97
    */
   @ASTNodeAnnotation.Attribute(kind=ASTNodeAnnotation.Kind.SYN)
-  @ASTNodeAnnotation.Source(aspect="RandomRequestGenerator", declaredAt="E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\RandomRequestGenerator.jrag:96")
+  @ASTNodeAnnotation.Source(aspect="RandomRequestGenerator", declaredAt="E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\RandomRequestGenerator.jrag:97")
   public String generateRandomUrl(String pathRef, OperationObject operationObject, Map<ResponseObject, String> responses) {
     java.util.List _parameters = new java.util.ArrayList(3);
     _parameters.add(pathRef);
diff --git a/src/gen/java/de/tudresden/inf/st/openapi/ast/SchemaTuple.java b/src/gen/java/de/tudresden/inf/st/openapi/ast/SchemaTuple.java
index 3f676540..2529060d 100644
--- a/src/gen/java/de/tudresden/inf/st/openapi/ast/SchemaTuple.java
+++ b/src/gen/java/de/tudresden/inf/st/openapi/ast/SchemaTuple.java
@@ -214,7 +214,7 @@ public class SchemaTuple extends ASTNode<ASTNode> implements Cloneable {
   }
   /** @apilevel internal */
   protected void collect_contributors_OpenAPIObject_schemaTuples(OpenAPIObject _root, java.util.Map<ASTNode, java.util.Set<ASTNode>> _map) {
-    // @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\InfSchema.jrag:16
+    // @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\InfSchema.jrag:17
     {
       java.util.Set<ASTNode> contributors = _map.get(_root);
       if (contributors == null) {
@@ -226,7 +226,7 @@ public class SchemaTuple extends ASTNode<ASTNode> implements Cloneable {
     super.collect_contributors_OpenAPIObject_schemaTuples(_root, _map);
   }
   /** @apilevel internal */
-  protected void contributeTo_OpenAPIObject_schemaTuples(java.util.Set<SchemaTuple> collection) {
+  protected void contributeTo_OpenAPIObject_schemaTuples(Set<SchemaTuple> collection) {
     super.contributeTo_OpenAPIObject_schemaTuples(collection);
     collection.add(this);
   }
diff --git a/src/gen/java/de/tudresden/inf/st/openapi/ast/Trace.java b/src/gen/java/de/tudresden/inf/st/openapi/ast/Trace.java
index 3d747775..88c142f2 100644
--- a/src/gen/java/de/tudresden/inf/st/openapi/ast/Trace.java
+++ b/src/gen/java/de/tudresden/inf/st/openapi/ast/Trace.java
@@ -181,10 +181,10 @@ protected java.util.Set inferRandomUrl_String_OperationObject_visited;
   /**
    * @attribute syn
    * @aspect InfSchema
-   * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\InfSchema.jrag:34
+   * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\InfSchema.jrag:33
    */
   @ASTNodeAnnotation.Attribute(kind=ASTNodeAnnotation.Kind.SYN)
-  @ASTNodeAnnotation.Source(aspect="InfSchema", declaredAt="E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\InfSchema.jrag:34")
+  @ASTNodeAnnotation.Source(aspect="InfSchema", declaredAt="E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\InfSchema.jrag:33")
   public String inferRandomUrl(String pathRef, OperationObject operationObject) {
     java.util.List _parameters = new java.util.ArrayList(2);
     _parameters.add(pathRef);
@@ -206,10 +206,10 @@ protected java.util.Set generateRandomUrl_String_OperationObject_Map_ResponseObj
   /**
    * @attribute syn
    * @aspect RandomRequestGenerator
-   * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\RandomRequestGenerator.jrag:96
+   * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\RandomRequestGenerator.jrag:97
    */
   @ASTNodeAnnotation.Attribute(kind=ASTNodeAnnotation.Kind.SYN)
-  @ASTNodeAnnotation.Source(aspect="RandomRequestGenerator", declaredAt="E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\RandomRequestGenerator.jrag:96")
+  @ASTNodeAnnotation.Source(aspect="RandomRequestGenerator", declaredAt="E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\RandomRequestGenerator.jrag:97")
   public String generateRandomUrl(String pathRef, OperationObject operationObject, Map<ResponseObject, String> responses) {
     java.util.List _parameters = new java.util.ArrayList(3);
     _parameters.add(pathRef);
diff --git a/src/main/jastadd/InfSchema.jrag b/src/main/jastadd/InfSchema.jrag
index 0685d401..13750b83 100644
--- a/src/main/jastadd/InfSchema.jrag
+++ b/src/main/jastadd/InfSchema.jrag
@@ -1,7 +1,5 @@
 aspect InfSchema {
 
-    syn SchemaObject ParameterObject.schemaObject() = getSchemaOb().schemaObject();
-
     // syn Set<SchemaObject> ResponseObject.schemaObject () = for( ContentTuple c : getContentTuples() ) add.SchemaObject();
 
 
@@ -10,14 +8,15 @@ aspect InfSchema {
     SchemaOb contributes this
       when schemaObject()
       to OpenAPIObject.collectSchemaObs();
-         */
-
-    coll java.util.Set<SchemaTuple> OpenAPIObject.schemaTuples() [new java.util.HashSet<>()] root OpenAPIObject;
-        SchemaTuple contributes this to OpenAPIObject.schemaTuples();
+    */
 
     inh OpenAPIObject ASTNode.root();
     eq OpenAPIObject.getChild().root() = this;
 
+    coll Set<SchemaTuple> OpenAPIObject.schemaTuples() [new HashSet<>()] root OpenAPIObject;
+        SchemaTuple contributes this
+        to OpenAPIObject.schemaTuples();
+
     inh Set<String> PathsObject.inferUrl(Set<String> urls);
     eq OpenAPIObject.getPathsObject(int i).inferUrl(Set<String> urls) {
         PathItemObject p = ((PathsObject) _childNode).getPathItemOb().pathItemObject();
@@ -62,7 +61,7 @@ aspect InfSchema {
         return "";
     }
 
-    syn Map<String, List<String>> OperationObject.getDict (Set<SchemaTuple> tuples, Map<ResponseObject, String> responses){
+    syn Map<String, List<String>> OperationObject.addDict (Map<ResponseObject, String> responses){
         Map<String, List<String>> map = new HashMap<>();
 
         return map;
diff --git a/src/main/resources/1password.com-events-1.0.0.json b/src/main/resources/1password.com-events-1.0.0.json
deleted file mode 100644
index 503bd16f..00000000
--- a/src/main/resources/1password.com-events-1.0.0.json
+++ /dev/null
@@ -1,518 +0,0 @@
-{
-  "openapi": "3.0.0",
-  "servers": [
-    {
-      "description": "1Password",
-      "url": "https://events.1password.com"
-    },
-    {
-      "description": "1Password CA",
-      "url": "https://events.1password.ca"
-    },
-    {
-      "description": "1Password EU",
-      "url": "https://events.1password.eu"
-    },
-    {
-      "description": "1Password Enterprise",
-      "url": "https://events.ent.1password.com"
-    }
-  ],
-  "info": {
-    "description": "1Password Events API Specification.",
-    "title": "Events API",
-    "version": "1.0.0",
-    "x-apisguru-categories": [
-      "security"
-    ],
-    "x-logo": {
-      "url": "https://api.apis.guru/v2/cache/logo/https_upload.wikimedia.org_wikipedia_commons_thumb_e_e3_1password-logo.svg_1280px-1password-logo.svg.png"
-    },
-    "x-origin": [
-      {
-        "format": "openapi",
-        "url": "https://i.1password.com/media/1password-events-reporting/1password-events-api.yaml",
-        "version": "3.0"
-      }
-    ],
-    "x-providerName": "1password.com",
-    "x-serviceName": "events"
-  },
-  "paths": {
-    "/api/auth/introspect": {
-      "get": {
-        "operationId": "getAuthIntrospect",
-        "responses": {
-          "200": {
-            "$ref": "#/components/responses/IntrospectResponse"
-          },
-          "401": {
-            "$ref": "#/components/responses/UnauthorizedErrorResponse"
-          },
-          "default": {
-            "$ref": "#/components/responses/GenericErrorResponse"
-          }
-        },
-        "security": [
-          {
-            "jwtsa": []
-          }
-        ],
-        "summary": "Performs introspection of the provided Bearer JWT token",
-        "tags": [
-          "auth"
-        ]
-      }
-    },
-    "/api/v1/itemusages": {
-      "post": {
-        "description": "This endpoint requires your JSON Web Token to have the *itemusages* feature.",
-        "operationId": "getItemUsages",
-        "requestBody": {
-          "$ref": "#/components/requestBodies/ItemUsagesRequest"
-        },
-        "responses": {
-          "200": {
-            "$ref": "#/components/responses/ItemUsagesResponse"
-          },
-          "401": {
-            "$ref": "#/components/responses/UnauthorizedErrorResponse"
-          },
-          "default": {
-            "$ref": "#/components/responses/GenericErrorResponse"
-          }
-        },
-        "security": [
-          {
-            "jwtsa": []
-          }
-        ],
-        "summary": "Retrieves item usages",
-        "tags": [
-          "api-v1"
-        ]
-      }
-    },
-    "/api/v1/signinattempts": {
-      "post": {
-        "description": "This endpoint requires your JSON Web Token to have the *signinattempts* feature.",
-        "operationId": "getSignInAttempts",
-        "requestBody": {
-          "$ref": "#/components/requestBodies/SignInAttemptsRequest"
-        },
-        "responses": {
-          "200": {
-            "$ref": "#/components/responses/SignInAttemptsResponse"
-          },
-          "401": {
-            "$ref": "#/components/responses/UnauthorizedErrorResponse"
-          },
-          "default": {
-            "$ref": "#/components/responses/GenericErrorResponse"
-          }
-        },
-        "security": [
-          {
-            "jwtsa": []
-          }
-        ],
-        "summary": "Retrieves sign-in attempts",
-        "tags": [
-          "api-v1"
-        ]
-      }
-    }
-  },
-  "components": {
-    "examples": {
-      "Cursor": {
-        "summary": "Used for continued calling with a cursor",
-        "value": {
-          "cursor": "aGVsbG8hIGlzIGl0IG1lIHlvdSBhcmUgbG9va2luZyBmb3IK"
-        }
-      },
-      "ResetCursor": {
-        "summary": "Used for reseting the cursor",
-        "value": {
-          "limit": 100,
-          "start_time": "2021-06-11T16:32:50-03:00"
-        }
-      }
-    },
-    "requestBodies": {
-      "CursorRequest": {
-        "content": {
-          "application/json": {
-            "examples": {
-              "Continuing cursor": {
-                "$ref": "#/components/examples/Cursor"
-              },
-              "Resetting cursor": {
-                "$ref": "#/components/examples/ResetCursor"
-              }
-            },
-            "schema": {
-              "oneOf": [
-                {
-                  "$ref": "#/components/schemas/Cursor"
-                },
-                {
-                  "$ref": "#/components/schemas/ResetCursor"
-                }
-              ]
-            }
-          }
-        }
-      },
-      "ItemUsagesRequest": {
-        "$ref": "#/components/requestBodies/CursorRequest"
-      },
-      "SignInAttemptsRequest": {
-        "$ref": "#/components/requestBodies/CursorRequest"
-      }
-    },
-    "responses": {
-      "GenericErrorResponse": {
-        "content": {
-          "application/json": {
-            "schema": {
-              "$ref": "#/components/schemas/Error"
-            }
-          }
-        },
-        "description": "Generic error"
-      },
-      "IntrospectResponse": {
-        "content": {
-          "application/json": {
-            "schema": {
-              "$ref": "#/components/schemas/Introspection"
-            }
-          }
-        },
-        "description": "Introspection object"
-      },
-      "ItemUsagesResponse": {
-        "content": {
-          "application/json": {
-            "schema": {
-              "$ref": "#/components/schemas/ItemUsageItems"
-            }
-          }
-        },
-        "description": "Item usages response object"
-      },
-      "SignInAttemptsResponse": {
-        "content": {
-          "application/json": {
-            "schema": {
-              "$ref": "#/components/schemas/SignInAttemptItems"
-            }
-          }
-        },
-        "description": "Sign-in attempts response object"
-      },
-      "UnauthorizedErrorResponse": {
-        "content": {
-          "application/json": {
-            "schema": {
-              "$ref": "#/components/schemas/Error"
-            }
-          }
-        },
-        "description": "Unauthorized"
-      }
-    },
-    "schemas": {
-      "Client": {
-        "description": "Metadata gathered about the client",
-        "properties": {
-          "app_name": {
-            "example": "1Password Extension",
-            "type": "string"
-          },
-          "app_version": {
-            "example": "20127",
-            "type": "string"
-          },
-          "ip_address": {
-            "example": "13.227.95.22",
-            "type": "string"
-          },
-          "os_name": {
-            "example": "MacOSX",
-            "type": "string"
-          },
-          "os_version": {
-            "example": "10.15.6",
-            "type": "string"
-          },
-          "platform_name": {
-            "example": "Chrome",
-            "type": "string"
-          },
-          "platform_version": {
-            "description": "Depending on the platform used, this can be the version of the browser that the client extension is installed, the model of computer that the native application is installed or the machine's CPU version that the CLI was installed",
-            "type": "string"
-          }
-        }
-      },
-      "Cursor": {
-        "description": "Cursor",
-        "properties": {
-          "cursor": {
-            "description": "Cursor to fetch more data if available or continue the polling process if required",
-            "example": "aGVsbG8hIGlzIGl0IG1lIHlvdSBhcmUgbG9va2luZyBmb3IK",
-            "type": "string"
-          }
-        }
-      },
-      "CursorCollection": {
-        "allOf": [
-          {
-            "$ref": "#/components/schemas/Cursor"
-          },
-          {
-            "properties": {
-              "has_more": {
-                "description": "Whether there may still be more data to fetch using the returned cursor. If true, the subsequent request could still be empty.",
-                "type": "boolean"
-              }
-            }
-          }
-        ],
-        "description": "Common cursor properties for collection responses"
-      },
-      "DateTimeRFC3339": {
-        "example": "2020-06-11T16:32:50-03:00",
-        "format": "date-time",
-        "type": "string"
-      },
-      "Details": {
-        "description": "Additional information about the sign-in attempt",
-        "properties": {
-          "value": {
-            "description": "For firewall prevented sign-ins, the value is the chosen continent, country, etc. that blocked the sign-in attempt",
-            "example": "Europe",
-            "type": "string"
-          }
-        }
-      },
-      "Error": {
-        "properties": {
-          "Error": {
-            "properties": {
-              "Message": {
-                "description": "The error message.",
-                "type": "string"
-              }
-            },
-            "type": "object"
-          }
-        },
-        "type": "object"
-      },
-      "Introspection": {
-        "properties": {
-          "Features": {
-            "example": [
-              "itemusages",
-              "signinattempts"
-            ],
-            "items": {
-              "type": "string"
-            },
-            "type": "array"
-          },
-          "IssuedAt": {
-            "$ref": "#/components/schemas/DateTimeRFC3339"
-          },
-          "UUID": {
-            "type": "string"
-          }
-        },
-        "type": "object"
-      },
-      "ItemUsage": {
-        "description": "A single item usage object",
-        "properties": {
-          "client": {
-            "$ref": "#/components/schemas/Client"
-          },
-          "item_uuid": {
-            "$ref": "#/components/schemas/UUID"
-          },
-          "timestamp": {
-            "$ref": "#/components/schemas/DateTimeRFC3339"
-          },
-          "used_version": {
-            "type": "integer"
-          },
-          "user": {
-            "$ref": "#/components/schemas/User"
-          },
-          "uuid": {
-            "$ref": "#/components/schemas/UUID"
-          },
-          "vault_uuid": {
-            "$ref": "#/components/schemas/UUID"
-          }
-        }
-      },
-      "ItemUsageItems": {
-        "allOf": [
-          {
-            "properties": {
-              "items": {
-                "items": {
-                  "$ref": "#/components/schemas/ItemUsage"
-                },
-                "type": "array"
-              }
-            }
-          },
-          {
-            "$ref": "#/components/schemas/CursorCollection"
-          }
-        ],
-        "description": "An object wrapping cursor properties and a list of items usages"
-      },
-      "ResetCursor": {
-        "description": "Reset cursor",
-        "properties": {
-          "end_time": {
-            "$ref": "#/components/schemas/DateTimeRFC3339"
-          },
-          "limit": {
-            "maximum": 1000,
-            "minimum": 1,
-            "type": "number"
-          },
-          "start_time": {
-            "$ref": "#/components/schemas/DateTimeRFC3339"
-          }
-        }
-      },
-      "SignInAttempt": {
-        "description": "A single sign-in attempt object",
-        "properties": {
-          "category": {
-            "enum": [
-              "success",
-              "credentials_failed",
-              "mfa_failed",
-              "modern_version_failed",
-              "firewall_failed",
-              "firewall_reported_success"
-            ],
-            "example": "firewall_failed",
-            "type": "string"
-          },
-          "client": {
-            "$ref": "#/components/schemas/Client"
-          },
-          "country": {
-            "description": "Country ISO Code",
-            "example": "France",
-            "type": "string"
-          },
-          "details": {
-            "$ref": "#/components/schemas/Details"
-          },
-          "session_uuid": {
-            "$ref": "#/components/schemas/UUID"
-          },
-          "target_user": {
-            "$ref": "#/components/schemas/User"
-          },
-          "timestamp": {
-            "$ref": "#/components/schemas/DateTimeRFC3339"
-          },
-          "type": {
-            "enum": [
-              "credentials_ok",
-              "mfa_ok",
-              "password_secret_bad",
-              "mfa_missing",
-              "totp_disabled",
-              "totp_bad",
-              "totp_timeout",
-              "u2f_disabled",
-              "u2f_bad",
-              "u2f_timout",
-              "duo_disabled",
-              "duo_bad",
-              "duo_timeout",
-              "duo_native_bad",
-              "platform_secret_disabled",
-              "platform_secret_bad",
-              "platform_secret_proxy",
-              "code_disabled",
-              "code_bad",
-              "code_timeout",
-              "ip_blocked",
-              "continent_blocked",
-              "country_blocked",
-              "anonymous_blocked",
-              "all_blocked",
-              "modern_version_missing",
-              "modern_version_old"
-            ],
-            "example": "continent_blocked",
-            "type": "string"
-          },
-          "uuid": {
-            "$ref": "#/components/schemas/UUID"
-          }
-        }
-      },
-      "SignInAttemptItems": {
-        "allOf": [
-          {
-            "properties": {
-              "items": {
-                "items": {
-                  "$ref": "#/components/schemas/SignInAttempt"
-                },
-                "type": "array"
-              }
-            }
-          },
-          {
-            "$ref": "#/components/schemas/CursorCollection"
-          }
-        ],
-        "description": "An object wrapping cursor properties and a list of sign-in attempts"
-      },
-      "UUID": {
-        "example": "56YE2TYN2VFYRLNSHKPW5NVT5E",
-        "type": "string"
-      },
-      "User": {
-        "description": "User object",
-        "properties": {
-          "email": {
-            "format": "email",
-            "type": "string"
-          },
-          "name": {
-            "description": "Full name",
-            "example": "Jack O'Neill",
-            "type": "string"
-          },
-          "uuid": {
-            "$ref": "#/components/schemas/UUID"
-          }
-        }
-      }
-    },
-    "securitySchemes": {
-      "jwtsa": {
-        "bearerFormat": "JWT-SA",
-        "description": "A JWT SA token issued to this service",
-        "scheme": "bearer",
-        "type": "http"
-      }
-    }
-  }
-}
\ No newline at end of file
diff --git a/src/main/resources/6-dot-authentiqio.appspot.com-6.json b/src/main/resources/6-dot-authentiqio.appspot.com-6.json
deleted file mode 100644
index a59849b1..00000000
--- a/src/main/resources/6-dot-authentiqio.appspot.com-6.json
+++ /dev/null
@@ -1,998 +0,0 @@
-{
-  "openapi": "3.0.0",
-  "servers": [
-    {
-      "url": "https://6-dot-authentiqio.appspot.com"
-    }
-  ],
-  "info": {
-    "contact": {
-      "email": "hello@authentiq.com",
-      "name": "Authentiq team",
-      "url": "http://authentiq.io/support"
-    },
-    "description": "Strong authentication, without the passwords.",
-    "license": {
-      "name": "Apache 2.0",
-      "url": "http://www.apache.org/licenses/LICENSE-2.0.html"
-    },
-    "termsOfService": "http://authentiq.com/terms/",
-    "title": "Authentiq API",
-    "version": "6",
-    "x-apisguru-categories": [
-      "security"
-    ],
-    "x-logo": {
-      "backgroundColor": "#F26641",
-      "url": "https://api.apis.guru/v2/cache/logo/https_www.authentiq.com_theme_images_authentiq-logo-a-inverse.svg"
-    },
-    "x-origin": [
-      {
-        "format": "openapi",
-        "url": "https://raw.githubusercontent.com/AuthentiqID/authentiq-docs/master/docs/swagger/issuer.yaml",
-        "version": "3.0"
-      }
-    ],
-    "x-providerName": "6-dot-authentiqio.appspot.com"
-  },
-  "paths": {
-    "/key": {
-      "delete": {
-        "description": "Revoke an Authentiq ID using email & phone.\n\nIf called with `email` and `phone` only, a verification code \nwill be sent by email. Do a second call adding `code` to \ncomplete the revocation.\n",
-        "operationId": "key_revoke_nosecret",
-        "parameters": [
-          {
-            "description": "primary email associated to Key (ID)",
-            "in": "query",
-            "name": "email",
-            "required": true,
-            "schema": {
-              "type": "string"
-            }
-          },
-          {
-            "description": "primary phone number, international representation",
-            "in": "query",
-            "name": "phone",
-            "required": true,
-            "schema": {
-              "type": "string"
-            }
-          },
-          {
-            "description": "verification code sent by email",
-            "in": "query",
-            "name": "code",
-            "required": false,
-            "schema": {
-              "type": "string"
-            }
-          }
-        ],
-        "responses": {
-          "200": {
-            "content": {
-              "application/json": {
-                "schema": {
-                  "properties": {
-                    "status": {
-                      "description": "pending or done",
-                      "type": "string"
-                    }
-                  },
-                  "type": "object"
-                }
-              }
-            },
-            "description": "Successfully deleted"
-          },
-          "401": {
-            "content": {
-              "application/json": {
-                "schema": {
-                  "$ref": "#/components/schemas/Error"
-                }
-              }
-            },
-            "description": "Authentication error `auth-error`"
-          },
-          "404": {
-            "content": {
-              "application/json": {
-                "schema": {
-                  "$ref": "#/components/schemas/Error"
-                }
-              }
-            },
-            "description": "Unknown key `unknown-key`"
-          },
-          "409": {
-            "content": {
-              "application/json": {
-                "schema": {
-                  "$ref": "#/components/schemas/Error"
-                }
-              }
-            },
-            "description": "Confirm with code sent `confirm-first`"
-          },
-          "default": {
-            "$ref": "#/components/responses/ErrorResponse"
-          }
-        },
-        "tags": [
-          "key",
-          "delete"
-        ]
-      },
-      "post": {
-        "description": "Register a new ID `JWT(sub, devtoken)`\n\nv5: `JWT(sub, pk, devtoken, ...)`\n\nSee: https://github.com/skion/authentiq/wiki/JWT-Examples\n",
-        "operationId": "key_register",
-        "requestBody": {
-          "$ref": "#/components/requestBodies/AuthentiqID"
-        },
-        "responses": {
-          "201": {
-            "content": {
-              "application/json": {
-                "schema": {
-                  "properties": {
-                    "secret": {
-                      "description": "revoke key",
-                      "type": "string"
-                    },
-                    "status": {
-                      "description": "registered",
-                      "type": "string"
-                    }
-                  },
-                  "type": "object"
-                }
-              }
-            },
-            "description": "Successfully registered"
-          },
-          "409": {
-            "content": {
-              "application/json": {
-                "schema": {
-                  "$ref": "#/components/schemas/Error"
-                }
-              }
-            },
-            "description": "Key already registered `duplicate-key`"
-          },
-          "default": {
-            "$ref": "#/components/responses/ErrorResponse"
-          }
-        },
-        "tags": [
-          "key",
-          "post"
-        ]
-      }
-    },
-    "/key/{PK}": {
-      "delete": {
-        "description": "Revoke an Identity (Key) with a revocation secret",
-        "operationId": "key_revoke",
-        "parameters": [
-          {
-            "$ref": "#/components/parameters/PK"
-          },
-          {
-            "description": "revokation secret",
-            "in": "query",
-            "name": "secret",
-            "required": true,
-            "schema": {
-              "type": "string"
-            }
-          }
-        ],
-        "responses": {
-          "200": {
-            "content": {
-              "application/json": {
-                "schema": {
-                  "properties": {
-                    "status": {
-                      "description": "done",
-                      "type": "string"
-                    }
-                  },
-                  "type": "object"
-                }
-              }
-            },
-            "description": "Successful response"
-          },
-          "401": {
-            "content": {
-              "application/json": {
-                "schema": {
-                  "$ref": "#/components/schemas/Error"
-                }
-              }
-            },
-            "description": "Key not found / wrong code `auth-error`"
-          },
-          "404": {
-            "content": {
-              "application/json": {
-                "schema": {
-                  "$ref": "#/components/schemas/Error"
-                }
-              }
-            },
-            "description": "Unknown key `unknown-key`"
-          },
-          "default": {
-            "$ref": "#/components/responses/ErrorResponse"
-          }
-        },
-        "tags": [
-          "key",
-          "delete"
-        ]
-      },
-      "get": {
-        "description": "Get public details of an Authentiq ID.\n",
-        "operationId": "key_retrieve",
-        "parameters": [
-          {
-            "$ref": "#/components/parameters/PK"
-          }
-        ],
-        "responses": {
-          "200": {
-            "content": {
-              "application/json": {
-                "schema": {
-                  "properties": {
-                    "since": {
-                      "format": "date-time",
-                      "type": "string"
-                    },
-                    "status": {
-                      "type": "string"
-                    },
-                    "sub": {
-                      "description": "base64safe encoded public signing key",
-                      "type": "string"
-                    }
-                  },
-                  "title": "JWT",
-                  "type": "object"
-                }
-              }
-            },
-            "description": "Successfully retrieved"
-          },
-          "404": {
-            "content": {
-              "application/json": {
-                "schema": {
-                  "$ref": "#/components/schemas/Error"
-                }
-              }
-            },
-            "description": "Unknown key `unknown-key`"
-          },
-          "410": {
-            "content": {
-              "application/json": {
-                "schema": {
-                  "$ref": "#/components/schemas/Error"
-                }
-              }
-            },
-            "description": "Key is revoked (gone). `revoked-key`"
-          },
-          "default": {
-            "$ref": "#/components/responses/ErrorResponse"
-          }
-        },
-        "tags": [
-          "key",
-          "get"
-        ]
-      },
-      "head": {
-        "description": "HEAD info on Authentiq ID\n",
-        "parameters": [
-          {
-            "$ref": "#/components/parameters/PK"
-          }
-        ],
-        "responses": {
-          "200": {
-            "description": "Key exists"
-          },
-          "404": {
-            "content": {
-              "*/*": {
-                "schema": {
-                  "$ref": "#/components/schemas/Error"
-                }
-              }
-            },
-            "description": "Unknown key `unknown-key`"
-          },
-          "410": {
-            "content": {
-              "*/*": {
-                "schema": {
-                  "$ref": "#/components/schemas/Error"
-                }
-              }
-            },
-            "description": "Key is revoked `revoked-key`"
-          },
-          "default": {
-            "$ref": "#/components/responses/ErrorResponse"
-          }
-        },
-        "tags": [
-          "key",
-          "head"
-        ]
-      },
-      "post": {
-        "description": "update properties of an Authentiq ID.\n(not operational in v4; use PUT for now)\n\nv5: POST issuer-signed email & phone scopes in\na self-signed JWT\n\nSee: https://github.com/skion/authentiq/wiki/JWT-Examples\n",
-        "operationId": "key_update",
-        "parameters": [
-          {
-            "$ref": "#/components/parameters/PK"
-          }
-        ],
-        "requestBody": {
-          "$ref": "#/components/requestBodies/AuthentiqID"
-        },
-        "responses": {
-          "200": {
-            "content": {
-              "application/json": {
-                "schema": {
-                  "properties": {
-                    "status": {
-                      "description": "confirmed",
-                      "type": "string"
-                    }
-                  },
-                  "type": "object"
-                }
-              }
-            },
-            "description": "Successfully updated"
-          },
-          "404": {
-            "content": {
-              "application/json": {
-                "schema": {
-                  "$ref": "#/components/schemas/Error"
-                }
-              }
-            },
-            "description": "Unknown key `unknown-key`"
-          },
-          "default": {
-            "$ref": "#/components/responses/ErrorResponse"
-          }
-        },
-        "tags": [
-          "key",
-          "post"
-        ]
-      },
-      "put": {
-        "description": "Update Authentiq ID by replacing the object.\n\nv4: `JWT(sub,email,phone)` to bind email/phone hash; \n\nv5: POST issuer-signed email & phone scopes\nand PUT to update registration `JWT(sub, pk, devtoken, ...)`\n\nSee: https://github.com/skion/authentiq/wiki/JWT-Examples\n",
-        "operationId": "key_bind",
-        "parameters": [
-          {
-            "$ref": "#/components/parameters/PK"
-          }
-        ],
-        "requestBody": {
-          "$ref": "#/components/requestBodies/AuthentiqID"
-        },
-        "responses": {
-          "200": {
-            "content": {
-              "application/json": {
-                "schema": {
-                  "properties": {
-                    "status": {
-                      "description": "confirmed",
-                      "type": "string"
-                    }
-                  },
-                  "type": "object"
-                }
-              }
-            },
-            "description": "Successfully updated"
-          },
-          "404": {
-            "content": {
-              "application/json": {
-                "schema": {
-                  "$ref": "#/components/schemas/Error"
-                }
-              }
-            },
-            "description": "Unknown key `unknown-key`"
-          },
-          "409": {
-            "content": {
-              "application/json": {
-                "schema": {
-                  "$ref": "#/components/schemas/Error"
-                }
-              }
-            },
-            "description": "Already bound to another key `duplicate-hash`"
-          },
-          "default": {
-            "$ref": "#/components/responses/ErrorResponse"
-          }
-        },
-        "tags": [
-          "key",
-          "put"
-        ]
-      }
-    },
-    "/login": {
-      "post": {
-        "description": "push sign-in request\nSee: https://github.com/skion/authentiq/wiki/JWT-Examples\n",
-        "operationId": "push_login_request",
-        "parameters": [
-          {
-            "description": "URI App will connect to",
-            "in": "query",
-            "name": "callback",
-            "required": true,
-            "schema": {
-              "type": "string"
-            }
-          }
-        ],
-        "requestBody": {
-          "content": {
-            "application/jwt": {
-              "schema": {
-                "$ref": "#/components/schemas/PushToken"
-              }
-            }
-          },
-          "description": "Push Token.",
-          "required": true
-        },
-        "responses": {
-          "200": {
-            "content": {
-              "application/json": {
-                "schema": {
-                  "properties": {
-                    "status": {
-                      "description": "sent",
-                      "type": "string"
-                    }
-                  },
-                  "type": "object"
-                }
-              }
-            },
-            "description": "Successful response"
-          },
-          "401": {
-            "content": {
-              "application/json": {
-                "schema": {
-                  "$ref": "#/components/schemas/Error"
-                }
-              }
-            },
-            "description": "Unauthorized for this callback audience `aud-error` or JWT should be self-signed `auth-error`"
-          },
-          "default": {
-            "$ref": "#/components/responses/ErrorResponse"
-          }
-        },
-        "tags": [
-          "login",
-          "post"
-        ]
-      }
-    },
-    "/scope": {
-      "post": {
-        "description": "scope verification request\nSee: https://github.com/skion/authentiq/wiki/JWT-Examples\n",
-        "operationId": "sign_request",
-        "parameters": [
-          {
-            "description": "test only mode, using test issuer",
-            "in": "query",
-            "name": "test",
-            "required": false,
-            "schema": {
-              "type": "integer"
-            }
-          }
-        ],
-        "requestBody": {
-          "content": {
-            "application/jwt": {
-              "schema": {
-                "$ref": "#/components/schemas/Claims"
-              }
-            }
-          },
-          "description": "Claims of scope",
-          "required": true
-        },
-        "responses": {
-          "201": {
-            "content": {
-              "application/json": {
-                "schema": {
-                  "properties": {
-                    "job": {
-                      "description": "20-character ID",
-                      "type": "string"
-                    },
-                    "status": {
-                      "description": "waiting",
-                      "type": "string"
-                    }
-                  },
-                  "type": "object"
-                }
-              }
-            },
-            "description": "Successful response"
-          },
-          "429": {
-            "content": {
-              "application/json": {
-                "schema": {
-                  "$ref": "#/components/schemas/Error"
-                }
-              }
-            },
-            "description": "Too Many Requests on same address / number `rate-limit`"
-          },
-          "default": {
-            "$ref": "#/components/responses/ErrorResponse"
-          }
-        },
-        "tags": [
-          "scope",
-          "post"
-        ]
-      }
-    },
-    "/scope/{job}": {
-      "delete": {
-        "description": "delete a verification job",
-        "operationId": "sign_delete",
-        "parameters": [
-          {
-            "$ref": "#/components/parameters/JobID"
-          }
-        ],
-        "responses": {
-          "200": {
-            "content": {
-              "application/json": {
-                "schema": {
-                  "properties": {
-                    "status": {
-                      "description": "done",
-                      "type": "string"
-                    }
-                  },
-                  "type": "object"
-                }
-              }
-            },
-            "description": "Successfully deleted"
-          },
-          "404": {
-            "content": {
-              "application/json": {
-                "schema": {
-                  "$ref": "#/components/schemas/Error"
-                }
-              }
-            },
-            "description": "Job not found `unknown-job`"
-          },
-          "default": {
-            "$ref": "#/components/responses/ErrorResponse"
-          }
-        },
-        "tags": [
-          "scope",
-          "delete"
-        ]
-      },
-      "get": {
-        "description": "get the status / current content of a verification job",
-        "operationId": "sign_retrieve",
-        "parameters": [
-          {
-            "$ref": "#/components/parameters/JobID"
-          }
-        ],
-        "responses": {
-          "200": {
-            "content": {
-              "application/json": {
-                "schema": {
-                  "properties": {
-                    "exp": {
-                      "type": "integer"
-                    },
-                    "field": {
-                      "type": "string"
-                    },
-                    "sub": {
-                      "description": "base64safe encoded public signing key",
-                      "type": "string"
-                    }
-                  },
-                  "title": "JWT",
-                  "type": "object"
-                }
-              },
-              "application/jwt": {
-                "schema": {
-                  "properties": {
-                    "exp": {
-                      "type": "integer"
-                    },
-                    "field": {
-                      "type": "string"
-                    },
-                    "sub": {
-                      "description": "base64safe encoded public signing key",
-                      "type": "string"
-                    }
-                  },
-                  "title": "JWT",
-                  "type": "object"
-                }
-              }
-            },
-            "description": "Successful response (JWT)"
-          },
-          "204": {
-            "description": "Confirmed, waiting for signing"
-          },
-          "404": {
-            "content": {
-              "application/json": {
-                "schema": {
-                  "$ref": "#/components/schemas/Error"
-                }
-              },
-              "application/jwt": {
-                "schema": {
-                  "$ref": "#/components/schemas/Error"
-                }
-              }
-            },
-            "description": "Job not found `unknown-job`"
-          },
-          "default": {
-            "$ref": "#/components/responses/ErrorResponse"
-          }
-        },
-        "tags": [
-          "scope",
-          "get"
-        ]
-      },
-      "head": {
-        "description": "HEAD to get the status of a verification job",
-        "operationId": "sign_retrieve_head",
-        "parameters": [
-          {
-            "$ref": "#/components/parameters/JobID"
-          }
-        ],
-        "responses": {
-          "200": {
-            "description": "Confirmed and signed"
-          },
-          "204": {
-            "description": "Confirmed, waiting for signing"
-          },
-          "404": {
-            "content": {
-              "application/json": {
-                "schema": {
-                  "$ref": "#/components/schemas/Error"
-                }
-              }
-            },
-            "description": "Job not found `unknown-job`"
-          },
-          "default": {
-            "$ref": "#/components/responses/ErrorResponse"
-          }
-        },
-        "tags": [
-          "scope",
-          "head"
-        ]
-      },
-      "post": {
-        "description": "this is a scope confirmation",
-        "operationId": "sign_confirm",
-        "parameters": [
-          {
-            "$ref": "#/components/parameters/JobID"
-          }
-        ],
-        "responses": {
-          "202": {
-            "content": {
-              "application/json": {
-                "schema": {
-                  "properties": {
-                    "status": {
-                      "description": "confirmed",
-                      "type": "string"
-                    }
-                  },
-                  "type": "object"
-                }
-              }
-            },
-            "description": "Successfully confirmed"
-          },
-          "401": {
-            "content": {
-              "application/json": {
-                "schema": {
-                  "$ref": "#/components/schemas/Error"
-                }
-              }
-            },
-            "description": "Confirmation error `auth-error`"
-          },
-          "404": {
-            "content": {
-              "application/json": {
-                "schema": {
-                  "$ref": "#/components/schemas/Error"
-                }
-              }
-            },
-            "description": "Job not found `unknown-job`"
-          },
-          "405": {
-            "content": {
-              "application/json": {
-                "schema": {
-                  "$ref": "#/components/schemas/Error"
-                }
-              }
-            },
-            "description": "JWT POSTed to scope `not-supported`"
-          },
-          "default": {
-            "$ref": "#/components/responses/ErrorResponse"
-          }
-        },
-        "tags": [
-          "scope",
-          "post"
-        ]
-      },
-      "put": {
-        "description": "authority updates a JWT with its signature\nSee: https://github.com/skion/authentiq/wiki/JWT-Examples\n",
-        "operationId": "sign_update",
-        "parameters": [
-          {
-            "$ref": "#/components/parameters/JobID"
-          }
-        ],
-        "responses": {
-          "200": {
-            "content": {
-              "application/jwt": {
-                "schema": {
-                  "properties": {
-                    "jwt": {
-                      "description": "result is JWT or JSON??",
-                      "type": "string"
-                    },
-                    "status": {
-                      "description": "ready",
-                      "type": "string"
-                    }
-                  },
-                  "type": "object"
-                }
-              }
-            },
-            "description": "Successfully updated"
-          },
-          "404": {
-            "content": {
-              "application/jwt": {
-                "schema": {
-                  "$ref": "#/components/schemas/Error"
-                }
-              }
-            },
-            "description": "Job not found `unknown-job`"
-          },
-          "409": {
-            "content": {
-              "application/jwt": {
-                "schema": {
-                  "$ref": "#/components/schemas/Error"
-                }
-              }
-            },
-            "description": "Job not confirmed yet `confirm-first`"
-          },
-          "default": {
-            "$ref": "#/components/responses/ErrorResponse"
-          }
-        },
-        "tags": [
-          "scope",
-          "put"
-        ]
-      }
-    }
-  },
-  "components": {
-    "parameters": {
-      "JobID": {
-        "description": "Job ID (20 chars)",
-        "in": "path",
-        "name": "job",
-        "required": true,
-        "schema": {
-          "type": "string"
-        }
-      },
-      "PK": {
-        "description": "Public Signing Key - Authentiq ID (43 chars)",
-        "in": "path",
-        "name": "PK",
-        "required": true,
-        "schema": {
-          "type": "string"
-        }
-      }
-    },
-    "requestBodies": {
-      "AuthentiqID": {
-        "content": {
-          "application/jwt": {
-            "schema": {
-              "$ref": "#/components/schemas/AuthentiqID"
-            }
-          }
-        },
-        "description": "Authentiq ID to register",
-        "required": true
-      }
-    },
-    "responses": {
-      "ErrorResponse": {
-        "content": {
-          "*/*": {
-            "schema": {
-              "$ref": "#/components/schemas/Error"
-            }
-          }
-        },
-        "description": "Error response"
-      }
-    },
-    "schemas": {
-      "AuthentiqID": {
-        "description": "Authentiq ID in JWT format, self-signed.\n",
-        "properties": {
-          "devtoken": {
-            "description": "device token for push messages",
-            "type": "string"
-          },
-          "sub": {
-            "description": "UUID and public signing key",
-            "type": "string"
-          }
-        },
-        "required": [
-          "sub"
-        ]
-      },
-      "Claims": {
-        "description": "Claim in JWT format, self- or issuer-signed. \n",
-        "properties": {
-          "email": {
-            "type": "string"
-          },
-          "phone": {
-            "type": "string"
-          },
-          "scope": {
-            "description": "claim scope",
-            "type": "string"
-          },
-          "sub": {
-            "description": "UUID",
-            "type": "string"
-          },
-          "type": {
-            "type": "string"
-          }
-        },
-        "required": [
-          "sub",
-          "scope"
-        ]
-      },
-      "Error": {
-        "properties": {
-          "detail": {
-            "type": "string"
-          },
-          "error": {
-            "type": "integer"
-          },
-          "title": {
-            "type": "string"
-          },
-          "type": {
-            "description": "unique uri for this error",
-            "type": "string"
-          }
-        },
-        "required": [
-          "error"
-        ]
-      },
-      "PushToken": {
-        "description": "PushToken in JWT format, self-signed. \n",
-        "properties": {
-          "aud": {
-            "description": "audience (URI)",
-            "type": "string"
-          },
-          "exp": {
-            "type": "integer"
-          },
-          "iat": {
-            "type": "integer"
-          },
-          "iss": {
-            "description": "issuer (URI)",
-            "type": "string"
-          },
-          "nbf": {
-            "type": "integer"
-          },
-          "sub": {
-            "description": "UUID and public signing key",
-            "type": "string"
-          }
-        },
-        "required": [
-          "sub",
-          "iss",
-          "aud"
-        ]
-      }
-    }
-  }
-}
\ No newline at end of file
diff --git a/src/main/resources/abstractapi.com-geolocation-1.0.0.json b/src/main/resources/abstractapi.com-geolocation-1.0.0.json
deleted file mode 100644
index 48bc4de4..00000000
--- a/src/main/resources/abstractapi.com-geolocation-1.0.0.json
+++ /dev/null
@@ -1,233 +0,0 @@
-{
-  "openapi": "3.0.1",
-  "servers": [
-    {
-      "url": "https://ipgeolocation.abstractapi.com"
-    }
-  ],
-  "info": {
-    "description": "Abstract IP geolocation API allows developers to retrieve the region, country and city behind any IP worldwide. The API covers the geolocation of IPv4 and IPv6 addresses in 180+ countries worldwide. Extra information can be retrieved like the currency, flag or language associated to an IP.",
-    "title": "IP geolocation API",
-    "version": "1.0.0",
-    "x-apisguru-categories": [
-      "location"
-    ],
-    "x-logo": {
-      "url": "https://api.apis.guru/v2/cache/logo/https_global-uploads.webflow.com_5ebbd0a566a3996636e55959_5ec2ba29feeeb05d69160e7b_webclip.png"
-    },
-    "x-origin": [
-      {
-        "format": "openapi",
-        "url": "https://documentation.abstractapi.com/ip-geolocation-openapi.json",
-        "version": "3.0"
-      }
-    ],
-    "x-providerName": "abstractapi.com",
-    "x-serviceName": "geolocation"
-  },
-  "externalDocs": {
-    "description": "API Documentation",
-    "url": "https://www.abstractapi.com/ip-geolocation-api#docs"
-  },
-  "paths": {
-    "/v1": {
-      "get": {
-        "description": "Retrieve the location of an IP address",
-        "parameters": [
-          {
-            "explode": true,
-            "in": "query",
-            "name": "api_key",
-            "required": true,
-            "schema": {
-              "type": "string"
-            },
-            "style": "form"
-          },
-          {
-            "explode": true,
-            "in": "query",
-            "name": "ip_address",
-            "required": false,
-            "schema": {
-              "example": "195.154.25.40",
-              "type": "string"
-            },
-            "style": "form"
-          },
-          {
-            "explode": true,
-            "in": "query",
-            "name": "fields",
-            "required": false,
-            "schema": {
-              "example": "country,city,timezone",
-              "type": "string"
-            },
-            "style": "form"
-          }
-        ],
-        "responses": {
-          "200": {
-            "content": {
-              "application/json": {
-                "examples": {
-                  "0": {
-                    "value": "{\"ip_address\":\"195.154.25.40\",\"city\":\"Paris\",\"city_geoname_id\":2988507,\"region\":\"Île-de-France\",\"region_iso_code\":\"IDF\",\"region_geoname_id\":3012874,\"postal_code\":\"75008\",\"country\":\"France\",\"country_code\":\"FR\",\"country_geoname_id\":3017382,\"country_is_eu\":true,\"continent\":\"Europe\",\"continent_code\":\"EU\",\"continent_geoname_id\":6255148,\"longitude\":2.4075,\"latitude\":48.8323,\"security\":{\"is_vpn\":false},\"timezone\":{\"name\":\"Europe/Paris\",\"abbreviation\":\"CEST\",\"gmt_offset\":2,\"current_time\":\"15:42:18\",\"is_dst\":true},\"flag\":{\"emoji\":\"<ë<÷\",\"unicode\":\"U+1F1EB U+1F1F7\",\"png\":\"https://static.abstractapi.com/country-flags/FR_flag.png\",\"svg\":\"https://static.abstractapi.com/country-flags/FR_flag.svg\"},\"currency\":{\"currency_name\":\"Euros\",\"currency_code\":\"EUR\"},\"connection\":{\"autonomous_system_number\":12876,\"autonomous_system_organization\":\"Online S.a.s.\",\"connection_type\":\"Corporate\",\"isp_name\":\"Online S.A.S.\",\"organization_name\":\"ONLINE\"}}"
-                  }
-                },
-                "schema": {
-                  "$ref": "#/components/schemas/inline_response_200"
-                }
-              }
-            },
-            "description": "Location of geolocated IP"
-          }
-        },
-        "servers": [
-          {
-            "url": "https://ipgeolocation.abstractapi.com"
-          }
-        ]
-      },
-      "servers": [
-        {
-          "url": "https://ipgeolocation.abstractapi.com"
-        }
-      ]
-    }
-  },
-  "components": {
-    "schemas": {
-      "inline_response_200": {
-        "properties": {
-          "city": {
-            "type": "string"
-          },
-          "city_geoname_id": {
-            "type": "integer"
-          },
-          "connection": {
-            "properties": {
-              "autonomous_system_number": {
-                "type": "integer"
-              },
-              "autonomous_system_organization": {
-                "type": "string"
-              },
-              "connection_type": {
-                "type": "string"
-              },
-              "isp_name": {
-                "type": "string"
-              },
-              "organization_name": {
-                "type": "string"
-              }
-            },
-            "type": "object"
-          },
-          "continent": {
-            "type": "string"
-          },
-          "continent_code": {
-            "type": "string"
-          },
-          "continent_geoname_id": {
-            "type": "integer"
-          },
-          "country": {
-            "type": "string"
-          },
-          "country_code": {
-            "type": "string"
-          },
-          "country_geoname_id": {
-            "type": "integer"
-          },
-          "country_is_eu": {
-            "type": "boolean"
-          },
-          "currency": {
-            "properties": {
-              "currency_code": {
-                "type": "string"
-              },
-              "currency_name": {
-                "type": "string"
-              }
-            },
-            "type": "object"
-          },
-          "flag": {
-            "properties": {
-              "emoji": {
-                "type": "string"
-              },
-              "png": {
-                "type": "string"
-              },
-              "svg": {
-                "type": "string"
-              },
-              "unicode": {
-                "type": "string"
-              }
-            },
-            "type": "object"
-          },
-          "ip_address": {
-            "type": "string"
-          },
-          "latitude": {
-            "type": "number"
-          },
-          "longitude": {
-            "type": "number"
-          },
-          "postal_code": {
-            "type": "string"
-          },
-          "region": {
-            "type": "string"
-          },
-          "region_geoname_id": {
-            "type": "integer"
-          },
-          "region_iso_code": {
-            "type": "string"
-          },
-          "security": {
-            "properties": {
-              "is_vpn": {
-                "type": "boolean"
-              }
-            },
-            "type": "object"
-          },
-          "timezone": {
-            "properties": {
-              "abbreviation": {
-                "type": "string"
-              },
-              "current_time": {
-                "type": "string"
-              },
-              "gmt_offset": {
-                "type": "integer"
-              },
-              "is_dst": {
-                "type": "boolean"
-              },
-              "name": {
-                "type": "string"
-              }
-            },
-            "type": "object"
-          }
-        },
-        "type": "object"
-      }
-    }
-  }
-}
\ No newline at end of file
diff --git a/src/main/resources/adyen.com-CheckoutUtilityService-1.json b/src/main/resources/adyen.com-CheckoutUtilityService-1.json
deleted file mode 100644
index f673d455..00000000
--- a/src/main/resources/adyen.com-CheckoutUtilityService-1.json
+++ /dev/null
@@ -1,117 +0,0 @@
-{
-  "openapi": "3.0.0",
-  "servers": [
-    {
-      "url": "https://checkout-test.adyen.com/v1"
-    }
-  ],
-  "info": {
-    "contact": {
-      "email": "support@adyen.com",
-      "name": "Adyen Support",
-      "url": "https://support.adyen.com/",
-      "x-twitter": "Adyen"
-    },
-    "description": "A web service containing utility functions available for merchants integrating with Checkout APIs.\n## Authentication\nEach request to the Checkout Utility API must be signed with an API key. For this, obtain an API Key from your Customer Area, as described in [How to get the Checkout API key](https://docs.adyen.com/developers/user-management/how-to-get-the-checkout-api-key). Then set this key to the `X-API-Key` header value, for example:\n\n```\ncurl\n-H \"Content-Type: application/json\" \\\n-H \"X-API-Key: Your_Checkout_API_key\" \\\n...\n```\nNote that when going live, you need to generate a new API Key to access the [live endpoints](https://docs.adyen.com/developers/api-reference/live-endpoints).\n\n## Versioning\nCheckout API supports versioning of its endpoints through a version suffix in the endpoint URL. This suffix has the following format: \"vXX\", where XX is the version number.\n\nFor example:\n```\nhttps://checkout-test.adyen.com/v1/originKeys\n```",
-    "termsOfService": "https://docs.adyen.com/legal/terms-conditions",
-    "title": "Adyen Checkout Utility Service",
-    "version": "1",
-    "x-apisguru-categories": [
-      "payment"
-    ],
-    "x-logo": {
-      "url": "https://api.apis.guru/v2/cache/logo/https_twitter.com_Adyen_profile_image.jpeg"
-    },
-    "x-origin": [
-      {
-        "converter": {
-          "url": "https://github.com/lucybot/api-spec-converter",
-          "version": "2.7.11"
-        },
-        "format": "openapi",
-        "url": "https://raw.githubusercontent.com/adyen/adyen-openapi/master/specs/3.0/CheckoutUtilityService-v1.json",
-        "version": "3.0"
-      }
-    ],
-    "x-providerName": "adyen.com",
-    "x-serviceName": "CheckoutUtilityService"
-  },
-  "paths": {
-    "/originKeys": {
-      "post": {
-        "description": "This operation takes the origin domains and returns a JSON object containing the corresponding origin keys for the domains.",
-        "requestBody": {
-          "content": {
-            "application/json": {
-              "schema": {
-                "$ref": "#/components/schemas/CheckoutUtilityRequest"
-              }
-            }
-          }
-        },
-        "responses": {
-          "200": {
-            "content": {
-              "application/json": {
-                "schema": {
-                  "$ref": "#/components/schemas/CheckoutUtilityResponse"
-                }
-              }
-            },
-            "description": "OK - the request has succeeded."
-          },
-          "400": {
-            "description": "Bad Request - a problem reading or understanding the request."
-          },
-          "401": {
-            "description": "Unauthorized - authentication required."
-          },
-          "403": {
-            "description": "Forbidden - insufficient permissions to process the request."
-          },
-          "422": {
-            "description": "Unprocessable Entity - a request validation error."
-          },
-          "500": {
-            "description": "Internal Server Error - the server could not process the request."
-          }
-        },
-        "summary": "Create originKey values for one or more merchant domains.",
-        "x-groupName": "General",
-        "x-sortIndex": 0
-      }
-    }
-  },
-  "components": {
-    "schemas": {
-      "CheckoutUtilityRequest": {
-        "properties": {
-          "originDomains": {
-            "description": "The list of origin domains, for which origin keys are requested.",
-            "items": {
-              "type": "string"
-            },
-            "type": "array"
-          }
-        },
-        "required": [
-          "originDomains"
-        ]
-      },
-      "CheckoutUtilityResponse": {
-        "properties": {
-          "originKeys": {
-            "additionalProperties": {
-              "type": "string"
-            },
-            "description": "The list of origin keys for all requested domains. For each list item, the key is the domain and the value is the origin key.",
-            "type": "object"
-          }
-        }
-      }
-    }
-  },
-  "x-groups": [
-    "General"
-  ]
-}
\ No newline at end of file
diff --git a/src/test/java/openapi/OpenAPIMain_test.java b/src/test/java/openapi/OpenAPIMain_test.java
index 88b33091..786273e0 100644
--- a/src/test/java/openapi/OpenAPIMain_test.java
+++ b/src/test/java/openapi/OpenAPIMain_test.java
@@ -26,6 +26,7 @@ import java.nio.file.Path;
 import java.nio.file.Paths;
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Set;
 
 import org.junit.jupiter.api.Test;
 import org.opentest4j.TestAbortedException;
@@ -68,6 +69,8 @@ public class OpenAPIMain_test {
 
             // openAPI object is integrated in JastAdd grammar
             openApi = OpenAPIObject.parseOpenAPI(api);
+            Set<SchemaTuple> s = openApi.schemaTuples();
+            System.out.println(s.size());
 
             // composed openAPI object, it is expected to be equivalent to parsed source object
             api3 = OpenAPIObject.composeOpenAPI(openApi);
-- 
GitLab