diff --git a/.gradle/6.8/executionHistory/executionHistory.bin b/.gradle/6.8/executionHistory/executionHistory.bin
index 478d11bc368cef795bfdeee0b3bccb2791045bad..ffab960dc1f554d2837a9906cd3de687d5d022ad 100644
Binary files a/.gradle/6.8/executionHistory/executionHistory.bin and b/.gradle/6.8/executionHistory/executionHistory.bin differ
diff --git a/.gradle/6.8/executionHistory/executionHistory.lock b/.gradle/6.8/executionHistory/executionHistory.lock
index 0eebdf229250095aa579d02d9327c3e630b3f9fe..c0602a52accc5782ea61c5d64529ca8301ab2c00 100644
Binary files a/.gradle/6.8/executionHistory/executionHistory.lock and b/.gradle/6.8/executionHistory/executionHistory.lock differ
diff --git a/.gradle/6.8/fileHashes/fileHashes.bin b/.gradle/6.8/fileHashes/fileHashes.bin
index 5c3781c89e9b05dc34782e028bd899ac5a2885de..2b24e898e3dffcdc620416fb863461b44bb11339 100644
Binary files a/.gradle/6.8/fileHashes/fileHashes.bin and b/.gradle/6.8/fileHashes/fileHashes.bin differ
diff --git a/.gradle/6.8/fileHashes/fileHashes.lock b/.gradle/6.8/fileHashes/fileHashes.lock
index c3e0d252b4c3fd4d14fded1733a7145bcc340e1d..f7069599a742f78b42e0afd0e5d7412fb1f15cbc 100644
Binary files a/.gradle/6.8/fileHashes/fileHashes.lock and b/.gradle/6.8/fileHashes/fileHashes.lock differ
diff --git a/.gradle/6.8/fileHashes/resourceHashesCache.bin b/.gradle/6.8/fileHashes/resourceHashesCache.bin
index 3a279e6aed55fca0ac25801ff0f19a04fe5ba51e..ad8cc79532afd419634d4332784c1b440103b024 100644
Binary files a/.gradle/6.8/fileHashes/resourceHashesCache.bin and b/.gradle/6.8/fileHashes/resourceHashesCache.bin differ
diff --git a/.gradle/6.8/javaCompile/classAnalysis.bin b/.gradle/6.8/javaCompile/classAnalysis.bin
index e495b8a1d937fa84e95d5db00addf671da35a0f2..9dadb4773c8bad3f1937fd82af4c06f892b88a84 100644
Binary files a/.gradle/6.8/javaCompile/classAnalysis.bin and b/.gradle/6.8/javaCompile/classAnalysis.bin differ
diff --git a/.gradle/6.8/javaCompile/jarAnalysis.bin b/.gradle/6.8/javaCompile/jarAnalysis.bin
index e8a1869fef3971648bd72d9f19273cca4bdaff63..6eb85caa5e133a1cfd73295bfdfbda678b798952 100644
Binary files a/.gradle/6.8/javaCompile/jarAnalysis.bin and b/.gradle/6.8/javaCompile/jarAnalysis.bin differ
diff --git a/.gradle/6.8/javaCompile/javaCompile.lock b/.gradle/6.8/javaCompile/javaCompile.lock
index 6bd9df2669e58764f6799e800cfaf873fea10abb..c73fbee5fde729b4cbc8e25e5fdecf19ef72723c 100644
Binary files a/.gradle/6.8/javaCompile/javaCompile.lock and b/.gradle/6.8/javaCompile/javaCompile.lock differ
diff --git a/.gradle/6.8/javaCompile/taskHistory.bin b/.gradle/6.8/javaCompile/taskHistory.bin
index 25976929d39ef8ff603d655b147940a2f7f36e91..ec6a3ba5c645e73fb30bb4472d5e1064fd436005 100644
Binary files a/.gradle/6.8/javaCompile/taskHistory.bin and b/.gradle/6.8/javaCompile/taskHistory.bin differ
diff --git a/.gradle/buildOutputCleanup/buildOutputCleanup.lock b/.gradle/buildOutputCleanup/buildOutputCleanup.lock
index d104d6527137be9578c2fc5101fd49b45274d8af..4b009fbd78769ba1eb5c2cc8d77dbd72aad7f96e 100644
Binary files a/.gradle/buildOutputCleanup/buildOutputCleanup.lock and b/.gradle/buildOutputCleanup/buildOutputCleanup.lock differ
diff --git a/build/classes/java/main/de/tudresden/inf/st/openapi/OpenAPIMain.class b/build/classes/java/main/de/tudresden/inf/st/openapi/OpenAPIMain.class
index b0c4303d8642ede6332692e6859d50f0a97d8376..abae77c242d23ef8694fa9577f49f8353d247ba2 100644
Binary files a/build/classes/java/main/de/tudresden/inf/st/openapi/OpenAPIMain.class and b/build/classes/java/main/de/tudresden/inf/st/openapi/OpenAPIMain.class differ
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 47a471075b887f0e4ed581d488505ea079b7c43c..bbafc00bead5f748f5d05c59a62b9a77187a0ab8 100644
Binary files a/build/classes/java/main/de/tudresden/inf/st/openapi/ast/ASTNode.class and b/build/classes/java/main/de/tudresden/inf/st/openapi/ast/ASTNode.class differ
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 946a75819f5c31b2d60e931d051c567a5a8a5b7a..355c6e77d3593438ec23a7bbe977a50ea709dfeb 100644
Binary files a/build/classes/java/main/de/tudresden/inf/st/openapi/ast/Delete.class and b/build/classes/java/main/de/tudresden/inf/st/openapi/ast/Delete.class differ
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 8b0319c47ef4c9eff0ee8eefd5e612cd92504b32..44705924060ce907bf00de024c29530b15025d67 100644
Binary files a/build/classes/java/main/de/tudresden/inf/st/openapi/ast/Get.class and b/build/classes/java/main/de/tudresden/inf/st/openapi/ast/Get.class differ
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 68fc64e7f95988140ab4cb1bd8566590133d3d63..59b0b3a31b91e6cb92baaca2fa592ee046662124 100644
Binary files a/build/classes/java/main/de/tudresden/inf/st/openapi/ast/Head.class and b/build/classes/java/main/de/tudresden/inf/st/openapi/ast/Head.class differ
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 cb4d21cda85277f3de32466ba20e3864fc3dc683..6a6bd1034e9760e821e8f5b3ddae0809d65df9b5 100644
Binary files a/build/classes/java/main/de/tudresden/inf/st/openapi/ast/OpenAPIObject.class and b/build/classes/java/main/de/tudresden/inf/st/openapi/ast/OpenAPIObject.class differ
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 cb9fad66d58723b48f07b10c199ba768e2709dec..c4e68e17cc1c8b5c83dedd72fe59f5e8eade17ba 100644
Binary files a/build/classes/java/main/de/tudresden/inf/st/openapi/ast/OperationOb.class and b/build/classes/java/main/de/tudresden/inf/st/openapi/ast/OperationOb.class differ
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 960c9e9a8df64bc50d00b061b12b284a38d5c51b..62442c106146b74228612030479cf8dabce6c304 100644
Binary files a/build/classes/java/main/de/tudresden/inf/st/openapi/ast/OperationObject.class and b/build/classes/java/main/de/tudresden/inf/st/openapi/ast/OperationObject.class differ
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 abc57dc2765cdc169b420c27b750b55651c3c1d6..b475b99ce754c49b4fcc8b4eef0f6d2b9328a469 100644
Binary files a/build/classes/java/main/de/tudresden/inf/st/openapi/ast/Options.class and b/build/classes/java/main/de/tudresden/inf/st/openapi/ast/Options.class differ
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 461d0d8e6ea55995122bcfbeaad3e7c136dfd684..f680f1ebd2ad03a4c330e1cf1f4768952676a282 100644
Binary files a/build/classes/java/main/de/tudresden/inf/st/openapi/ast/Patch.class and b/build/classes/java/main/de/tudresden/inf/st/openapi/ast/Patch.class differ
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 6ba1cc486b08744da8e45d4b7298180a3d38ab39..6fe7326c466402b960d4f3232dbd090dce48f0c0 100644
Binary files a/build/classes/java/main/de/tudresden/inf/st/openapi/ast/PathsObject.class and b/build/classes/java/main/de/tudresden/inf/st/openapi/ast/PathsObject.class differ
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 6e3f6a9c3f1e6df718ce7555ca15e7eb1c3c4969..d33e7eb467fc48f8c041aba27310294d0f6c3826 100644
Binary files a/build/classes/java/main/de/tudresden/inf/st/openapi/ast/Post.class and b/build/classes/java/main/de/tudresden/inf/st/openapi/ast/Post.class differ
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 890a9ece0697a97dd75126ceabb5d629e0c1811c..ba73674a9d8eb25f101a2e25cfb758d6a511b28b 100644
Binary files a/build/classes/java/main/de/tudresden/inf/st/openapi/ast/Put.class and b/build/classes/java/main/de/tudresden/inf/st/openapi/ast/Put.class differ
diff --git a/build/classes/java/main/de/tudresden/inf/st/openapi/ast/SchemaObject.class b/build/classes/java/main/de/tudresden/inf/st/openapi/ast/SchemaObject.class
index 6b895842997a5244a403e943cca4204c684c5524..a1a90d0072063c7d0ec701bd72f1ee6f003558df 100644
Binary files a/build/classes/java/main/de/tudresden/inf/st/openapi/ast/SchemaObject.class and b/build/classes/java/main/de/tudresden/inf/st/openapi/ast/SchemaObject.class differ
diff --git a/build/classes/java/main/de/tudresden/inf/st/openapi/ast/SchemaTuple.class b/build/classes/java/main/de/tudresden/inf/st/openapi/ast/SchemaTuple.class
index 630614ff492f35406af5c248a4d7700b60596275..25b030c211f37975fdee89f5bb769317b94a8a13 100644
Binary files a/build/classes/java/main/de/tudresden/inf/st/openapi/ast/SchemaTuple.class and b/build/classes/java/main/de/tudresden/inf/st/openapi/ast/SchemaTuple.class differ
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 3587580120f04a5e40733cb0129a34eca1b14079..df82d8488e72e2cef1dac07efc3c6655f95a8233 100644
Binary files a/build/classes/java/main/de/tudresden/inf/st/openapi/ast/Trace.class and b/build/classes/java/main/de/tudresden/inf/st/openapi/ast/Trace.class differ
diff --git a/build/reports/tests/test/classes/openapi.OpenAPIMain_test.html b/build/reports/tests/test/classes/openapi.OpenAPIMain_test.html
index a81f6e97a63513fd8ed20b6b6f1c5457e4c5b83b..709702c12c53e2942ab8dd7e59a9c3e297bf07ad 100644
--- a/build/reports/tests/test/classes/openapi.OpenAPIMain_test.html
+++ b/build/reports/tests/test/classes/openapi.OpenAPIMain_test.html
@@ -41,7 +41,7 @@
 </td>
 <td>
 <div class="infoBox" id="duration">
-<div class="counter">0.671s</div>
+<div class="counter">0.633s</div>
 <p>duration</p>
 </div>
 </td>
@@ -82,7 +82,7 @@
 </thead>
 <tr>
 <td class="success">test()</td>
-<td class="success">0.671s</td>
+<td class="success">0.633s</td>
 <td class="success">passed</td>
 </tr>
 </table>
@@ -116,7 +116,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. 오전 1:37:31</p>
+<a href="http://www.gradle.org">Gradle 6.8</a> at 2021. 10. 9. 오전 8:15:11</p>
 </div>
 </div>
 </body>
diff --git a/build/reports/tests/test/index.html b/build/reports/tests/test/index.html
index cdf9555c256f0a7e8826d269d33d5842a4041fe3..3f9de5cc7bfd94f859e1c72963dadb0f151a47fd 100644
--- a/build/reports/tests/test/index.html
+++ b/build/reports/tests/test/index.html
@@ -38,7 +38,7 @@
 </td>
 <td>
 <div class="infoBox" id="duration">
-<div class="counter">0.671s</div>
+<div class="counter">0.633s</div>
 <p>duration</p>
 </div>
 </td>
@@ -85,7 +85,7 @@
 <td>1</td>
 <td>0</td>
 <td>0</td>
-<td>0.671s</td>
+<td>0.633s</td>
 <td class="success">100%</td>
 </tr>
 </tbody>
@@ -112,7 +112,7 @@
 <td>1</td>
 <td>0</td>
 <td>0</td>
-<td>0.671s</td>
+<td>0.633s</td>
 <td class="success">100%</td>
 </tr>
 </tbody>
@@ -126,7 +126,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. 오전 1:37:31</p>
+<a href="http://www.gradle.org">Gradle 6.8</a> at 2021. 10. 9. 오전 8:15:11</p>
 </div>
 </div>
 </body>
diff --git a/build/reports/tests/test/packages/openapi.html b/build/reports/tests/test/packages/openapi.html
index a0da8617714589aaa412831122cb78c4817893a4..b4f04ceb5f0da60de3dcab160badd3856607b069 100644
--- a/build/reports/tests/test/packages/openapi.html
+++ b/build/reports/tests/test/packages/openapi.html
@@ -40,7 +40,7 @@
 </td>
 <td>
 <div class="infoBox" id="duration">
-<div class="counter">0.671s</div>
+<div class="counter">0.633s</div>
 <p>duration</p>
 </div>
 </td>
@@ -83,7 +83,7 @@
 <td>1</td>
 <td>0</td>
 <td>0</td>
-<td>0.671s</td>
+<td>0.633s</td>
 <td class="success">100%</td>
 </tr>
 </table>
@@ -96,7 +96,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. 오전 1:37:31</p>
+<a href="http://www.gradle.org">Gradle 6.8</a> at 2021. 10. 9. 오전 8:15:11</p>
 </div>
 </div>
 </body>
diff --git a/build/test-results/test/TEST-openapi.OpenAPIMain_test.xml b/build/test-results/test/TEST-openapi.OpenAPIMain_test.xml
index 7ba802a589ef0ee93f21c19d0a782d19d9511507..95c28d39c62d627bd2f73c62fc9b4c9b5fb24395 100644
--- a/build/test-results/test/TEST-openapi.OpenAPIMain_test.xml
+++ b/build/test-results/test/TEST-openapi.OpenAPIMain_test.xml
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<testsuite name="openapi.OpenAPIMain_test" tests="1" skipped="0" failures="0" errors="0" timestamp="2021-10-08T16:37:30" hostname="DESKTOP-7SEB5SB" time="0.671">
+<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">
   <properties/>
-  <testcase name="test()" classname="openapi.OpenAPIMain_test" time="0.671"/>
+  <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'.
diff --git a/build/test-results/test/binary/results.bin b/build/test-results/test/binary/results.bin
index 882f4c48728c3da374daba0cb812f8e0bbfa948c..6530dd67ad20d1d227125da75a2bd76f3a62c9df 100644
Binary files a/build/test-results/test/binary/results.bin and b/build/test-results/test/binary/results.bin differ
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 549b93a58092fd7144526260d870c0c023b11ca4..6337e90ea0c765c8009b7954ec1b6a29e7c743ca 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,18 +486,36 @@ public class ASTNode<T extends ASTNode> implements Cloneable {
   }
   /**
    * @aspect <NoAspect>
-   * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\InfSchema.jrag:14
+   * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\InfSchema.jrag:15
    */
     /** @apilevel internal */
-  protected void collect_contributors_OpenAPIObject_schemas(OpenAPIObject _root, java.util.Map<ASTNode, java.util.Set<ASTNode>> _map) {
+  protected void collect_contributors_OpenAPIObject_schemaTuples(OpenAPIObject _root, java.util.Map<ASTNode, java.util.Set<ASTNode>> _map) {
     for (int i = 0; i < getNumChild(); i++) {
-      getChild(i).collect_contributors_OpenAPIObject_schemas(_root, _map);
+      getChild(i).collect_contributors_OpenAPIObject_schemaTuples(_root, _map);
     }
   }
   /** @apilevel internal */
-  protected void contributeTo_OpenAPIObject_schemas(java.util.Set<SchemaObject> collection) {
+  protected void contributeTo_OpenAPIObject_schemaTuples(java.util.Set<SchemaTuple> collection) {
   }
 
+  /**
+   * @attribute inh
+   * @aspect InfSchema
+   * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\InfSchema.jrag:18
+   */
+  @ASTNodeAnnotation.Attribute(kind=ASTNodeAnnotation.Kind.INH)
+  @ASTNodeAnnotation.Source(aspect="InfSchema", declaredAt="E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\InfSchema.jrag:18")
+  public OpenAPIObject root() {
+    if (root_visited) {
+      throw new RuntimeException("Circular definition of attribute ASTNode.root().");
+    }
+    root_visited = true;
+    OpenAPIObject root_value = getParent().Define_root(this, null);
+    root_visited = false;
+    return root_value;
+  }
+/** @apilevel internal */
+protected boolean root_visited = false;
   /** @apilevel internal */
   public ASTNode rewriteTo() {
     return this;
@@ -507,23 +525,63 @@ public class ASTNode<T extends ASTNode> implements Cloneable {
     return false;
   }
   /** @apilevel internal */
-  public Set<String> Define_generateUrl(ASTNode _callerNode, ASTNode _childNode, Set<String> urls) {
+  public OpenAPIObject Define_root(ASTNode _callerNode, ASTNode _childNode) {
+    ASTNode self = this;
+    ASTNode parent = getParent();
+    while (parent != null && !parent.canDefine_root(self, _callerNode)) {
+      _callerNode = self;
+      self = parent;
+      parent = self.getParent();
+    }
+    return parent.Define_root(self, _callerNode);
+  }
+
+  /**
+   * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\InfSchema.jrag:19
+   * @apilevel internal
+   * @return {@code true} if this node has an equation for the inherited attribute root
+   */
+  protected boolean canDefine_root(ASTNode _callerNode, ASTNode _childNode) {
+    return false;
+  }
+  /** @apilevel internal */
+  public Set<String> Define_inferUrl(ASTNode _callerNode, ASTNode _childNode, Set<String> urls) {
+    ASTNode self = this;
+    ASTNode parent = getParent();
+    while (parent != null && !parent.canDefine_inferUrl(self, _callerNode, urls)) {
+      _callerNode = self;
+      self = parent;
+      parent = self.getParent();
+    }
+    return parent.Define_inferUrl(self, _callerNode, urls);
+  }
+
+  /**
+   * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\InfSchema.jrag:22
+   * @apilevel internal
+   * @return {@code true} if this node has an equation for the inherited attribute inferUrl
+   */
+  protected boolean canDefine_inferUrl(ASTNode _callerNode, ASTNode _childNode, Set<String> urls) {
+    return false;
+  }
+  /** @apilevel internal */
+  public Map<ResponseObject, String> Define_generateUrl(ASTNode _callerNode, ASTNode _childNode, Map<ResponseObject, String> responses) {
     ASTNode self = this;
     ASTNode parent = getParent();
-    while (parent != null && !parent.canDefine_generateUrl(self, _callerNode, urls)) {
+    while (parent != null && !parent.canDefine_generateUrl(self, _callerNode, responses)) {
       _callerNode = self;
       self = parent;
       parent = self.getParent();
     }
-    return parent.Define_generateUrl(self, _callerNode, urls);
+    return parent.Define_generateUrl(self, _callerNode, responses);
   }
 
   /**
-   * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\RandomRequestGenerator.jrag:85
+   * @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
    */
-  protected boolean canDefine_generateUrl(ASTNode _callerNode, ASTNode _childNode, Set<String> urls) {
+  protected boolean canDefine_generateUrl(ASTNode _callerNode, ASTNode _childNode, Map<ResponseObject, String> responses) {
     return false;
   }
 public ASTNode rewrittenNode() { throw new Error("rewrittenNode is undefined for ASTNode"); }
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 d79dba97aa4dc7fd4732645d4a74f363d6902226..c59221f39359a1ecb9b27aedab5e2f91249d3e14 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
@@ -177,28 +177,54 @@ public class Delete extends OperationOb implements Cloneable {
     return tokenOperationObject_OperationObject;
   }
 /** @apilevel internal */
-protected java.util.Set generateRandomUrl_String_OperationObject_visited;
+protected java.util.Set inferRandomUrl_String_OperationObject_visited;
   /**
    * @attribute syn
-   * @aspect RandomRequestGenerator
-   * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\RandomRequestGenerator.jrag:95
+   * @aspect InfSchema
+   * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\InfSchema.jrag:34
    */
   @ASTNodeAnnotation.Attribute(kind=ASTNodeAnnotation.Kind.SYN)
-  @ASTNodeAnnotation.Source(aspect="RandomRequestGenerator", declaredAt="E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\RandomRequestGenerator.jrag:95")
-  public String generateRandomUrl(String pathRef, OperationObject operationObject) {
+  @ASTNodeAnnotation.Source(aspect="InfSchema", declaredAt="E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\InfSchema.jrag:34")
+  public String inferRandomUrl(String pathRef, OperationObject operationObject) {
     java.util.List _parameters = new java.util.ArrayList(2);
     _parameters.add(pathRef);
     _parameters.add(operationObject);
-    if (generateRandomUrl_String_OperationObject_visited == null) generateRandomUrl_String_OperationObject_visited = new java.util.HashSet(4);
-    if (generateRandomUrl_String_OperationObject_visited.contains(_parameters)) {
-      throw new RuntimeException("Circular definition of attribute OperationOb.generateRandomUrl(String,OperationObject).");
+    if (inferRandomUrl_String_OperationObject_visited == null) inferRandomUrl_String_OperationObject_visited = new java.util.HashSet(4);
+    if (inferRandomUrl_String_OperationObject_visited.contains(_parameters)) {
+      throw new RuntimeException("Circular definition of attribute OperationOb.inferRandomUrl(String,OperationObject).");
+    }
+    inferRandomUrl_String_OperationObject_visited.add(_parameters);
+    try {
+            return "";
+        }
+    finally {
+      inferRandomUrl_String_OperationObject_visited.remove(_parameters);
+    }
+  }
+/** @apilevel internal */
+protected java.util.Set generateRandomUrl_String_OperationObject_Map_ResponseObject__String__visited;
+  /**
+   * @attribute syn
+   * @aspect RandomRequestGenerator
+   * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\RandomRequestGenerator.jrag:96
+   */
+  @ASTNodeAnnotation.Attribute(kind=ASTNodeAnnotation.Kind.SYN)
+  @ASTNodeAnnotation.Source(aspect="RandomRequestGenerator", declaredAt="E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\RandomRequestGenerator.jrag:96")
+  public String generateRandomUrl(String pathRef, OperationObject operationObject, Map<ResponseObject, String> responses) {
+    java.util.List _parameters = new java.util.ArrayList(3);
+    _parameters.add(pathRef);
+    _parameters.add(operationObject);
+    _parameters.add(responses);
+    if (generateRandomUrl_String_OperationObject_Map_ResponseObject__String__visited == null) generateRandomUrl_String_OperationObject_Map_ResponseObject__String__visited = new java.util.HashSet(4);
+    if (generateRandomUrl_String_OperationObject_Map_ResponseObject__String__visited.contains(_parameters)) {
+      throw new RuntimeException("Circular definition of attribute OperationOb.generateRandomUrl(String,OperationObject,Map_ResponseObject__String_).");
     }
-    generateRandomUrl_String_OperationObject_visited.add(_parameters);
+    generateRandomUrl_String_OperationObject_Map_ResponseObject__String__visited.add(_parameters);
     try {
             return "";
             }
     finally {
-      generateRandomUrl_String_OperationObject_visited.remove(_parameters);
+      generateRandomUrl_String_OperationObject_Map_ResponseObject__String__visited.remove(_parameters);
     }
   }
   /** @apilevel internal */
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 f696d4754504c8a74da68ebe37395da1962d624e..2ae57182ecf8f22cf7873b675425b6c5e2eba8c4 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
@@ -177,24 +177,52 @@ public class Get extends OperationOb implements Cloneable {
     return tokenOperationObject_OperationObject;
   }
 /** @apilevel internal */
-protected java.util.Set generateRandomUrl_String_OperationObject_visited;
+protected java.util.Set inferRandomUrl_String_OperationObject_visited;
   /**
    * @attribute syn
-   * @aspect RandomRequestGenerator
-   * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\RandomRequestGenerator.jrag:95
+   * @aspect InfSchema
+   * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\InfSchema.jrag:34
    */
   @ASTNodeAnnotation.Attribute(kind=ASTNodeAnnotation.Kind.SYN)
-  @ASTNodeAnnotation.Source(aspect="RandomRequestGenerator", declaredAt="E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\RandomRequestGenerator.jrag:95")
-  public String generateRandomUrl(String pathRef, OperationObject operationObject) {
+  @ASTNodeAnnotation.Source(aspect="InfSchema", declaredAt="E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\InfSchema.jrag:34")
+  public String inferRandomUrl(String pathRef, OperationObject operationObject) {
     java.util.List _parameters = new java.util.ArrayList(2);
     _parameters.add(pathRef);
     _parameters.add(operationObject);
-    if (generateRandomUrl_String_OperationObject_visited == null) generateRandomUrl_String_OperationObject_visited = new java.util.HashSet(4);
-    if (generateRandomUrl_String_OperationObject_visited.contains(_parameters)) {
-      throw new RuntimeException("Circular definition of attribute OperationOb.generateRandomUrl(String,OperationObject).");
+    if (inferRandomUrl_String_OperationObject_visited == null) inferRandomUrl_String_OperationObject_visited = new java.util.HashSet(4);
+    if (inferRandomUrl_String_OperationObject_visited.contains(_parameters)) {
+      throw new RuntimeException("Circular definition of attribute OperationOb.inferRandomUrl(String,OperationObject).");
     }
-    generateRandomUrl_String_OperationObject_visited.add(_parameters);
+    inferRandomUrl_String_OperationObject_visited.add(_parameters);
     try {
+    
+            return "";
+        }
+    finally {
+      inferRandomUrl_String_OperationObject_visited.remove(_parameters);
+    }
+  }
+/** @apilevel internal */
+protected java.util.Set generateRandomUrl_String_OperationObject_Map_ResponseObject__String__visited;
+  /**
+   * @attribute syn
+   * @aspect RandomRequestGenerator
+   * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\RandomRequestGenerator.jrag:96
+   */
+  @ASTNodeAnnotation.Attribute(kind=ASTNodeAnnotation.Kind.SYN)
+  @ASTNodeAnnotation.Source(aspect="RandomRequestGenerator", declaredAt="E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\RandomRequestGenerator.jrag:96")
+  public String generateRandomUrl(String pathRef, OperationObject operationObject, Map<ResponseObject, String> responses) {
+    java.util.List _parameters = new java.util.ArrayList(3);
+    _parameters.add(pathRef);
+    _parameters.add(operationObject);
+    _parameters.add(responses);
+    if (generateRandomUrl_String_OperationObject_Map_ResponseObject__String__visited == null) generateRandomUrl_String_OperationObject_Map_ResponseObject__String__visited = new java.util.HashSet(4);
+    if (generateRandomUrl_String_OperationObject_Map_ResponseObject__String__visited.contains(_parameters)) {
+      throw new RuntimeException("Circular definition of attribute OperationOb.generateRandomUrl(String,OperationObject,Map_ResponseObject__String_).");
+    }
+    generateRandomUrl_String_OperationObject_Map_ResponseObject__String__visited.add(_parameters);
+    try {
+            try {
             Random rand = new Random();
     
             for( ParameterOb o : operationObject.getParameterObs() ){
@@ -234,23 +262,39 @@ protected java.util.Set generateRandomUrl_String_OperationObject_visited;
             }
             }
             }
-            pathRef = pathRef.replaceFirst("&", "?") + "GET";
+            pathRef = pathRef.replaceFirst("&", "?") ;
+            System.out.println("Generated path : " + pathRef);
     
-                /*
-                URL url = new URL(pathRef);
-                HttpURLConnection con = (HttpURLConnection) url.openConnection();
+            URL url = new URL(pathRef);
+            HttpURLConnection con = (HttpURLConnection) url.openConnection();
     
-                con.setRequestMethod("GET"); // HTTP GET
-                con.setDoOutput(true); // GET
+            con.setRequestMethod("GET"); // optional default is GET
     
-                int responseCode = con.getResponseCode();
+            int responseCode = con.getResponseCode();
+            BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
+            String inputLine;
+            StringBuffer response = new StringBuffer();
     
-                // print result
-                System.out.println("HTTP status code (GET) : " + responseCode);*/
+            while ((inputLine = in.readLine()) != null) {
+            response.append(inputLine);
+            }
+            in.close();
+    
+            // print result
+            System.out.println("HTTP status code (GET) : " + responseCode);
+            for( ResponseTuple t : operationObject.getResponseTuples() ){
+            if( t.getKey().equals("200") && responseCode == 200 ) {
+            System.out.println("Response successfully saved!");
+            responses.put(t.getResponseOb().responseObject(), response.toString());
+            }
+            }
             return pathRef;
+            }catch (Exception e) {
+            return "";
+            }
             }
     finally {
-      generateRandomUrl_String_OperationObject_visited.remove(_parameters);
+      generateRandomUrl_String_OperationObject_Map_ResponseObject__String__visited.remove(_parameters);
     }
   }
   /** @apilevel internal */
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 5ece025707cc2873f0701a7fc193d549c965d61d..1aa2326979af9d5d2fe885667d09e7075355bbc2 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
@@ -177,28 +177,54 @@ public class Head extends OperationOb implements Cloneable {
     return tokenOperationObject_OperationObject;
   }
 /** @apilevel internal */
-protected java.util.Set generateRandomUrl_String_OperationObject_visited;
+protected java.util.Set inferRandomUrl_String_OperationObject_visited;
   /**
    * @attribute syn
-   * @aspect RandomRequestGenerator
-   * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\RandomRequestGenerator.jrag:95
+   * @aspect InfSchema
+   * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\InfSchema.jrag:34
    */
   @ASTNodeAnnotation.Attribute(kind=ASTNodeAnnotation.Kind.SYN)
-  @ASTNodeAnnotation.Source(aspect="RandomRequestGenerator", declaredAt="E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\RandomRequestGenerator.jrag:95")
-  public String generateRandomUrl(String pathRef, OperationObject operationObject) {
+  @ASTNodeAnnotation.Source(aspect="InfSchema", declaredAt="E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\InfSchema.jrag:34")
+  public String inferRandomUrl(String pathRef, OperationObject operationObject) {
     java.util.List _parameters = new java.util.ArrayList(2);
     _parameters.add(pathRef);
     _parameters.add(operationObject);
-    if (generateRandomUrl_String_OperationObject_visited == null) generateRandomUrl_String_OperationObject_visited = new java.util.HashSet(4);
-    if (generateRandomUrl_String_OperationObject_visited.contains(_parameters)) {
-      throw new RuntimeException("Circular definition of attribute OperationOb.generateRandomUrl(String,OperationObject).");
+    if (inferRandomUrl_String_OperationObject_visited == null) inferRandomUrl_String_OperationObject_visited = new java.util.HashSet(4);
+    if (inferRandomUrl_String_OperationObject_visited.contains(_parameters)) {
+      throw new RuntimeException("Circular definition of attribute OperationOb.inferRandomUrl(String,OperationObject).");
+    }
+    inferRandomUrl_String_OperationObject_visited.add(_parameters);
+    try {
+            return "";
+        }
+    finally {
+      inferRandomUrl_String_OperationObject_visited.remove(_parameters);
+    }
+  }
+/** @apilevel internal */
+protected java.util.Set generateRandomUrl_String_OperationObject_Map_ResponseObject__String__visited;
+  /**
+   * @attribute syn
+   * @aspect RandomRequestGenerator
+   * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\RandomRequestGenerator.jrag:96
+   */
+  @ASTNodeAnnotation.Attribute(kind=ASTNodeAnnotation.Kind.SYN)
+  @ASTNodeAnnotation.Source(aspect="RandomRequestGenerator", declaredAt="E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\RandomRequestGenerator.jrag:96")
+  public String generateRandomUrl(String pathRef, OperationObject operationObject, Map<ResponseObject, String> responses) {
+    java.util.List _parameters = new java.util.ArrayList(3);
+    _parameters.add(pathRef);
+    _parameters.add(operationObject);
+    _parameters.add(responses);
+    if (generateRandomUrl_String_OperationObject_Map_ResponseObject__String__visited == null) generateRandomUrl_String_OperationObject_Map_ResponseObject__String__visited = new java.util.HashSet(4);
+    if (generateRandomUrl_String_OperationObject_Map_ResponseObject__String__visited.contains(_parameters)) {
+      throw new RuntimeException("Circular definition of attribute OperationOb.generateRandomUrl(String,OperationObject,Map_ResponseObject__String_).");
     }
-    generateRandomUrl_String_OperationObject_visited.add(_parameters);
+    generateRandomUrl_String_OperationObject_Map_ResponseObject__String__visited.add(_parameters);
     try {
             return "";
             }
     finally {
-      generateRandomUrl_String_OperationObject_visited.remove(_parameters);
+      generateRandomUrl_String_OperationObject_Map_ResponseObject__String__visited.remove(_parameters);
     }
   }
   /** @apilevel internal */
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 3e039530308b4e766dcf40b305cbb7fee56c76f0..0ea8197f3a44cb799d6ff8353e92df281b20e732 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
@@ -119,19 +119,21 @@ public class OpenAPIObject extends ASTNode<ASTNode> implements Cloneable {
         }
   /**
    * @aspect RandomRequestGenerator
-   * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\RandomRequestGenerator.jrag:20
+   * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\RandomRequestGenerator.jrag:12
    */
-  public String generateRequests() throws Exception {
+  public Map<ResponseObject, String> generateRequests() throws Exception {
         Set<String> urls = new HashSet<>();
+        Map<ResponseObject, String> responses = new HashMap<>();
 
         for( PathsObject p : this.getPathsObjects() )
-        p.generateUrl(urls);
+            p.generateUrl(responses);
 
+        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));
 
-        /* */
+
         URL url = new URL(this.getServerObject(0).getUrl() + path.substring(0, path.length()-3));
         HttpURLConnection con = (HttpURLConnection) url.openConnection();
 
@@ -139,8 +141,8 @@ public class OpenAPIObject extends ASTNode<ASTNode> implements Cloneable {
         con.setDoOutput(true); // GET
 
         int responseCode = con.getResponseCode();
-        System.out.println("HTTP status code (GET) : " + responseCode);
-        if( responseCode < 300 ){
+        //System.out.println("HTTP status code (GET) : " + responseCode);
+        if( responseCode < 300 && responseCode >= 200 ){
         BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
         String inputLine;
         StringBuffer response = new StringBuffer();
@@ -150,12 +152,13 @@ public class OpenAPIObject extends ASTNode<ASTNode> implements Cloneable {
         }
         in.close();
 
-        System.out.println("HTTP body : " + response.toString());
-        }/* */
+        //System.out.println("HTTP body : " + response.toString());
+        responses.add(response.toString());
+        }
         } else if( path.endsWith("POST") ) {
-        System.out.println(this.getServerObject(0).getUrl() + path.substring(0, path.length()-4));
+        //System.out.println(this.getServerObject(0).getUrl() + path.substring(0, path.length()-4));
+
 
-        /* */
         URL url = new URL(this.getServerObject(0).getUrl() + path.substring(0, path.length()-4));
         HttpURLConnection con = (HttpURLConnection) url.openConnection();
 
@@ -163,9 +166,9 @@ public class OpenAPIObject extends ASTNode<ASTNode> implements Cloneable {
         con.setDoOutput(true); // POST
 
         int responseCode = con.getResponseCode();
-        System.out.println("HTTP status code (POST) : " + responseCode);
+        //System.out.println("HTTP status code (POST) : " + responseCode);
 
-        if( responseCode < 300 ){
+        if( responseCode < 300 && responseCode >= 200 ){
         BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
         String inputLine;
         StringBuffer response = new StringBuffer();
@@ -176,13 +179,16 @@ public class OpenAPIObject extends ASTNode<ASTNode> implements Cloneable {
         in.close();
 
 
-        System.out.println("HTTP body : " + response.toString());
-        }/* */
+        //System.out.println("HTTP body : " + response.toString());
+        responses.add(response.toString());
         }
-
         }
 
-        return "";
+        }*/
+
+        //for( String s : responses )
+        //    System.out.println("Response : " + s.toString());
+        return responses;
     }
   /**
    * @declaredat ASTNode:1
@@ -252,10 +258,10 @@ public class OpenAPIObject extends ASTNode<ASTNode> implements Cloneable {
    */
   public void flushCollectionCache() {
     super.flushCollectionCache();
-    OpenAPIObject_schemas_visited = false;
-    OpenAPIObject_schemas_computed = null;
-    OpenAPIObject_schemas_value = null;
-    contributorMap_OpenAPIObject_schemas = null;
+    OpenAPIObject_schemaTuples_visited = false;
+    OpenAPIObject_schemaTuples_computed = null;
+    OpenAPIObject_schemaTuples_value = null;
+    contributorMap_OpenAPIObject_schemaTuples = null;
   }
   /** @apilevel internal 
    * @declaredat ASTNode:61
@@ -1083,47 +1089,99 @@ public class OpenAPIObject extends ASTNode<ASTNode> implements Cloneable {
   }
   /**
    * @aspect <NoAspect>
-   * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\InfSchema.jrag:14
+   * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\InfSchema.jrag:15
    */
   /** @apilevel internal */
-protected java.util.Map<ASTNode, java.util.Set<ASTNode>> contributorMap_OpenAPIObject_schemas = null;
+protected java.util.Map<ASTNode, java.util.Set<ASTNode>> contributorMap_OpenAPIObject_schemaTuples = null;
 
   /** @apilevel internal */
-  protected void survey_OpenAPIObject_schemas() {
-    if (contributorMap_OpenAPIObject_schemas == null) {
-      contributorMap_OpenAPIObject_schemas = new java.util.IdentityHashMap<ASTNode, java.util.Set<ASTNode>>();
-      collect_contributors_OpenAPIObject_schemas(this, contributorMap_OpenAPIObject_schemas);
+  protected void survey_OpenAPIObject_schemaTuples() {
+    if (contributorMap_OpenAPIObject_schemaTuples == null) {
+      contributorMap_OpenAPIObject_schemaTuples = new java.util.IdentityHashMap<ASTNode, java.util.Set<ASTNode>>();
+      collect_contributors_OpenAPIObject_schemaTuples(this, contributorMap_OpenAPIObject_schemaTuples);
     }
   }
 
   /**
-   * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\RandomRequestGenerator.jrag:84
+   * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\InfSchema.jrag:18
+   * @apilevel internal
+   */
+  public OpenAPIObject Define_root(ASTNode _callerNode, ASTNode _childNode) {
+    int childIndex = this.getIndexOfChild(_callerNode);
+    return this;
+  }
+  /**
+   * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\InfSchema.jrag:18
    * @apilevel internal
+   * @return {@code true} if this node has an equation for the inherited attribute root
    */
-  public Set<String> Define_generateUrl(ASTNode _callerNode, ASTNode _childNode, Set<String> urls) {
+  protected boolean canDefine_root(ASTNode _callerNode, ASTNode _childNode) {
+    return true;
+  }
+  /**
+   * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\InfSchema.jrag:21
+   * @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\\RandomRequestGenerator.jrag:85
+      // @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\InfSchema.jrag:22
       int i = _callerNode.getIndexOfChild(_childNode);
       {
               PathItemObject p = ((PathsObject) _childNode).getPathItemOb().pathItemObject();
+              String path = ((OpenAPIObject) getParent()).getServerObject(0).getUrl();
+      
               if( p.hasGet() )
-              urls.add(p.getGet().generateRandomUrl(((PathsObject) _childNode).getRef(), p.getGet().getOperationObject()));
+                  urls.add(p.getGet().inferRandomUrl(path + ((PathsObject) _childNode).getRef(), p.getGet().getOperationObject()));
               else if( p.hasPost() )
-              urls.add(p.getPost().generateRandomUrl(((PathsObject) _childNode).getRef(), p.getPost().getOperationObject()));
+                  urls.add(p.getPost().inferRandomUrl(path + ((PathsObject) _childNode).getRef(), p.getPost().getOperationObject()));
       
               return urls;
+          }
+    }
+    else {
+      return getParent().Define_inferUrl(this, _callerNode, urls);
+    }
+  }
+  /**
+   * @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
+   */
+  protected boolean canDefine_inferUrl(ASTNode _callerNode, ASTNode _childNode, Set<String> urls) {
+    return true;
+  }
+  /**
+   * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\RandomRequestGenerator.jrag:82
+   * @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
+      int i = _callerNode.getIndexOfChild(_childNode);
+      {
+              PathItemObject p = ((PathsObject) _childNode).getPathItemOb().pathItemObject();
+              String path = getServerObject(0).getUrl();
+      
+              if( p.hasGet() )
+              p.getGet().generateRandomUrl(path + ((PathsObject) _childNode).getRef(), p.getGet().getOperationObject(), responses);
+              //urls.add(p.getGet().generateRandomUrl(((PathsObject) _childNode).getRef(), p.getGet().getOperationObject()));
+              else if( p.hasPost() )
+              p.getPost().generateRandomUrl(path + ((PathsObject) _childNode).getRef(), p.getPost().getOperationObject(), responses);
+              //urls.add(p.getPost().generateRandomUrl(((PathsObject) _childNode).getRef(), p.getPost().getOperationObject()));
+      
+              return responses;
               }
     }
     else {
-      return getParent().Define_generateUrl(this, _callerNode, urls);
+      return getParent().Define_generateUrl(this, _callerNode, responses);
     }
   }
   /**
-   * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\RandomRequestGenerator.jrag:84
+   * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\RandomRequestGenerator.jrag:82
    * @apilevel internal
    * @return {@code true} if this node has an equation for the inherited attribute generateUrl
    */
-  protected boolean canDefine_generateUrl(ASTNode _callerNode, ASTNode _childNode, Set<String> urls) {
+  protected boolean canDefine_generateUrl(ASTNode _callerNode, ASTNode _childNode, Map<ResponseObject, String> responses) {
     return true;
   }
   /** @apilevel internal */
@@ -1135,54 +1193,54 @@ protected java.util.Map<ASTNode, java.util.Set<ASTNode>> contributorMap_OpenAPIO
     return false;
   }
 /** @apilevel internal */
-protected boolean OpenAPIObject_schemas_visited = false;
+protected boolean OpenAPIObject_schemaTuples_visited = false;
   /**
    * @attribute coll
    * @aspect InfSchema
-   * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\InfSchema.jrag:14
+   * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\InfSchema.jrag:15
    */
   @ASTNodeAnnotation.Attribute(kind=ASTNodeAnnotation.Kind.COLL)
-  @ASTNodeAnnotation.Source(aspect="InfSchema", declaredAt="E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\InfSchema.jrag:14")
-  public java.util.Set<SchemaObject> schemas() {
+  @ASTNodeAnnotation.Source(aspect="InfSchema", declaredAt="E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\InfSchema.jrag:15")
+  public java.util.Set<SchemaTuple> schemaTuples() {
     ASTState state = state();
-    if (OpenAPIObject_schemas_computed == ASTState.NON_CYCLE || OpenAPIObject_schemas_computed == state().cycle()) {
-      return OpenAPIObject_schemas_value;
+    if (OpenAPIObject_schemaTuples_computed == ASTState.NON_CYCLE || OpenAPIObject_schemaTuples_computed == state().cycle()) {
+      return OpenAPIObject_schemaTuples_value;
     }
-    if (OpenAPIObject_schemas_visited) {
-      throw new RuntimeException("Circular definition of attribute OpenAPIObject.schemas().");
+    if (OpenAPIObject_schemaTuples_visited) {
+      throw new RuntimeException("Circular definition of attribute OpenAPIObject.schemaTuples().");
     }
-    OpenAPIObject_schemas_visited = true;
-    OpenAPIObject_schemas_value = schemas_compute();
+    OpenAPIObject_schemaTuples_visited = true;
+    OpenAPIObject_schemaTuples_value = schemaTuples_compute();
     if (state().inCircle()) {
-      OpenAPIObject_schemas_computed = state().cycle();
+      OpenAPIObject_schemaTuples_computed = state().cycle();
     
     } else {
-      OpenAPIObject_schemas_computed = ASTState.NON_CYCLE;
+      OpenAPIObject_schemaTuples_computed = ASTState.NON_CYCLE;
     
     }
-    OpenAPIObject_schemas_visited = false;
-    return OpenAPIObject_schemas_value;
+    OpenAPIObject_schemaTuples_visited = false;
+    return OpenAPIObject_schemaTuples_value;
   }
   /** @apilevel internal */
-  private java.util.Set<SchemaObject> schemas_compute() {
+  private java.util.Set<SchemaTuple> schemaTuples_compute() {
     ASTNode node = this;
     while (node != null && !(node instanceof OpenAPIObject)) {
       node = node.getParent();
     }
     OpenAPIObject root = (OpenAPIObject) node;
-    root.survey_OpenAPIObject_schemas();
-    java.util.Set<SchemaObject> _computedValue = new java.util.HashSet<>();
-    if (root.contributorMap_OpenAPIObject_schemas.containsKey(this)) {
-      for (ASTNode contributor : root.contributorMap_OpenAPIObject_schemas.get(this)) {
-        contributor.contributeTo_OpenAPIObject_schemas(_computedValue);
+    root.survey_OpenAPIObject_schemaTuples();
+    java.util.Set<SchemaTuple> _computedValue = new java.util.HashSet<>();
+    if (root.contributorMap_OpenAPIObject_schemaTuples.containsKey(this)) {
+      for (ASTNode contributor : root.contributorMap_OpenAPIObject_schemaTuples.get(this)) {
+        contributor.contributeTo_OpenAPIObject_schemaTuples(_computedValue);
       }
     }
     return _computedValue;
   }
   /** @apilevel internal */
-  protected ASTState.Cycle OpenAPIObject_schemas_computed = null;
+  protected ASTState.Cycle OpenAPIObject_schemaTuples_computed = null;
 
   /** @apilevel internal */
-  protected java.util.Set<SchemaObject> OpenAPIObject_schemas_value;
+  protected java.util.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 a6166bb499cd120862abc0de0c2bf5f129f51092..23953274f5ccbadac5b67344aa4affd4cc1bc719 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
@@ -98,14 +98,22 @@ public abstract class OperationOb extends ASTNode<ASTNode> implements Cloneable
    * @declaredat ASTNode:58
    */
   public abstract OperationOb treeCopy();
+  /**
+   * @attribute syn
+   * @aspect InfSchema
+   * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\InfSchema.jrag:34
+   */
+  @ASTNodeAnnotation.Attribute(kind=ASTNodeAnnotation.Kind.SYN)
+  @ASTNodeAnnotation.Source(aspect="InfSchema", declaredAt="E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\InfSchema.jrag:34")
+  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:95
+   * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\RandomRequestGenerator.jrag:96
    */
   @ASTNodeAnnotation.Attribute(kind=ASTNodeAnnotation.Kind.SYN)
-  @ASTNodeAnnotation.Source(aspect="RandomRequestGenerator", declaredAt="E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\RandomRequestGenerator.jrag:95")
-  public abstract String generateRandomUrl(String pathRef, OperationObject operationObject);
+  @ASTNodeAnnotation.Source(aspect="RandomRequestGenerator", declaredAt="E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\RandomRequestGenerator.jrag:96")
+  public abstract String generateRandomUrl(String pathRef, OperationObject operationObject, Map<ResponseObject, String> responses);
   /** @apilevel internal */
   public ASTNode rewriteTo() {
     return super.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 c810e93d8671577df5d5748810eb6dc81b3f8952..8104e7f30936d994aeb234e9f236c1487ffcb8c8 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:229
+   * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\RandomRequestGenerator.jrag:376
    */
   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:240
+   * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\RandomRequestGenerator.jrag:387
    */
   public String generateRandomInt(Random rand, int minimum, int maximum){
         if( minimum > -1 && maximum > 0 )
@@ -1289,28 +1289,81 @@ public class OperationObject extends OperationOb implements Cloneable {
     return getExtensionListNoTransform();
   }
 /** @apilevel internal */
-protected java.util.Set generateRandomUrl_String_OperationObject_visited;
+protected java.util.Set inferRandomUrl_String_OperationObject_visited;
   /**
    * @attribute syn
-   * @aspect RandomRequestGenerator
-   * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\RandomRequestGenerator.jrag:95
+   * @aspect InfSchema
+   * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\InfSchema.jrag:34
+   */
+  @ASTNodeAnnotation.Attribute(kind=ASTNodeAnnotation.Kind.SYN)
+  @ASTNodeAnnotation.Source(aspect="InfSchema", declaredAt="E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\InfSchema.jrag:34")
+  public String inferRandomUrl(String pathRef, OperationObject operationObject) {
+    java.util.List _parameters = new java.util.ArrayList(2);
+    _parameters.add(pathRef);
+    _parameters.add(operationObject);
+    if (inferRandomUrl_String_OperationObject_visited == null) inferRandomUrl_String_OperationObject_visited = new java.util.HashSet(4);
+    if (inferRandomUrl_String_OperationObject_visited.contains(_parameters)) {
+      throw new RuntimeException("Circular definition of attribute OperationOb.inferRandomUrl(String,OperationObject).");
+    }
+    inferRandomUrl_String_OperationObject_visited.add(_parameters);
+    try {
+            return "";
+        }
+    finally {
+      inferRandomUrl_String_OperationObject_visited.remove(_parameters);
+    }
+  }
+/** @apilevel internal */
+protected java.util.Set getDict_Set_SchemaTuple__Map_ResponseObject__String__visited;
+  /**
+   * @attribute syn
+   * @aspect InfSchema
+   * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\InfSchema.jrag:65
    */
   @ASTNodeAnnotation.Attribute(kind=ASTNodeAnnotation.Kind.SYN)
-  @ASTNodeAnnotation.Source(aspect="RandomRequestGenerator", declaredAt="E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\RandomRequestGenerator.jrag:95")
-  public String generateRandomUrl(String pathRef, OperationObject operationObject) {
+  @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_).");
+    }
+    getDict_Set_SchemaTuple__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);
+    }
+  }
+/** @apilevel internal */
+protected java.util.Set generateRandomUrl_String_OperationObject_Map_ResponseObject__String__visited;
+  /**
+   * @attribute syn
+   * @aspect RandomRequestGenerator
+   * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\RandomRequestGenerator.jrag:96
+   */
+  @ASTNodeAnnotation.Attribute(kind=ASTNodeAnnotation.Kind.SYN)
+  @ASTNodeAnnotation.Source(aspect="RandomRequestGenerator", declaredAt="E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\RandomRequestGenerator.jrag:96")
+  public String generateRandomUrl(String pathRef, OperationObject operationObject, Map<ResponseObject, String> responses) {
+    java.util.List _parameters = new java.util.ArrayList(3);
     _parameters.add(pathRef);
     _parameters.add(operationObject);
-    if (generateRandomUrl_String_OperationObject_visited == null) generateRandomUrl_String_OperationObject_visited = new java.util.HashSet(4);
-    if (generateRandomUrl_String_OperationObject_visited.contains(_parameters)) {
-      throw new RuntimeException("Circular definition of attribute OperationOb.generateRandomUrl(String,OperationObject).");
+    _parameters.add(responses);
+    if (generateRandomUrl_String_OperationObject_Map_ResponseObject__String__visited == null) generateRandomUrl_String_OperationObject_Map_ResponseObject__String__visited = new java.util.HashSet(4);
+    if (generateRandomUrl_String_OperationObject_Map_ResponseObject__String__visited.contains(_parameters)) {
+      throw new RuntimeException("Circular definition of attribute OperationOb.generateRandomUrl(String,OperationObject,Map_ResponseObject__String_).");
     }
-    generateRandomUrl_String_OperationObject_visited.add(_parameters);
+    generateRandomUrl_String_OperationObject_Map_ResponseObject__String__visited.add(_parameters);
     try {
             return "";
             }
     finally {
-      generateRandomUrl_String_OperationObject_visited.remove(_parameters);
+      generateRandomUrl_String_OperationObject_Map_ResponseObject__String__visited.remove(_parameters);
     }
   }
   /** @apilevel internal */
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 7cd649723094719fbbdd215ee2a1372b7df7e479..07a19195e9c30a83def03eee34caeb2740291c42 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
@@ -177,28 +177,54 @@ public class Options extends OperationOb implements Cloneable {
     return tokenOperationObject_OperationObject;
   }
 /** @apilevel internal */
-protected java.util.Set generateRandomUrl_String_OperationObject_visited;
+protected java.util.Set inferRandomUrl_String_OperationObject_visited;
   /**
    * @attribute syn
-   * @aspect RandomRequestGenerator
-   * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\RandomRequestGenerator.jrag:95
+   * @aspect InfSchema
+   * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\InfSchema.jrag:34
    */
   @ASTNodeAnnotation.Attribute(kind=ASTNodeAnnotation.Kind.SYN)
-  @ASTNodeAnnotation.Source(aspect="RandomRequestGenerator", declaredAt="E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\RandomRequestGenerator.jrag:95")
-  public String generateRandomUrl(String pathRef, OperationObject operationObject) {
+  @ASTNodeAnnotation.Source(aspect="InfSchema", declaredAt="E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\InfSchema.jrag:34")
+  public String inferRandomUrl(String pathRef, OperationObject operationObject) {
     java.util.List _parameters = new java.util.ArrayList(2);
     _parameters.add(pathRef);
     _parameters.add(operationObject);
-    if (generateRandomUrl_String_OperationObject_visited == null) generateRandomUrl_String_OperationObject_visited = new java.util.HashSet(4);
-    if (generateRandomUrl_String_OperationObject_visited.contains(_parameters)) {
-      throw new RuntimeException("Circular definition of attribute OperationOb.generateRandomUrl(String,OperationObject).");
+    if (inferRandomUrl_String_OperationObject_visited == null) inferRandomUrl_String_OperationObject_visited = new java.util.HashSet(4);
+    if (inferRandomUrl_String_OperationObject_visited.contains(_parameters)) {
+      throw new RuntimeException("Circular definition of attribute OperationOb.inferRandomUrl(String,OperationObject).");
+    }
+    inferRandomUrl_String_OperationObject_visited.add(_parameters);
+    try {
+            return "";
+        }
+    finally {
+      inferRandomUrl_String_OperationObject_visited.remove(_parameters);
+    }
+  }
+/** @apilevel internal */
+protected java.util.Set generateRandomUrl_String_OperationObject_Map_ResponseObject__String__visited;
+  /**
+   * @attribute syn
+   * @aspect RandomRequestGenerator
+   * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\RandomRequestGenerator.jrag:96
+   */
+  @ASTNodeAnnotation.Attribute(kind=ASTNodeAnnotation.Kind.SYN)
+  @ASTNodeAnnotation.Source(aspect="RandomRequestGenerator", declaredAt="E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\RandomRequestGenerator.jrag:96")
+  public String generateRandomUrl(String pathRef, OperationObject operationObject, Map<ResponseObject, String> responses) {
+    java.util.List _parameters = new java.util.ArrayList(3);
+    _parameters.add(pathRef);
+    _parameters.add(operationObject);
+    _parameters.add(responses);
+    if (generateRandomUrl_String_OperationObject_Map_ResponseObject__String__visited == null) generateRandomUrl_String_OperationObject_Map_ResponseObject__String__visited = new java.util.HashSet(4);
+    if (generateRandomUrl_String_OperationObject_Map_ResponseObject__String__visited.contains(_parameters)) {
+      throw new RuntimeException("Circular definition of attribute OperationOb.generateRandomUrl(String,OperationObject,Map_ResponseObject__String_).");
     }
-    generateRandomUrl_String_OperationObject_visited.add(_parameters);
+    generateRandomUrl_String_OperationObject_Map_ResponseObject__String__visited.add(_parameters);
     try {
             return "";
             }
     finally {
-      generateRandomUrl_String_OperationObject_visited.remove(_parameters);
+      generateRandomUrl_String_OperationObject_Map_ResponseObject__String__visited.remove(_parameters);
     }
   }
   /** @apilevel internal */
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 33502f9ac7b65d4f40305349137fa70603822d25..5272217392c1caf8753f25be18c1f2805d5be001 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
@@ -177,28 +177,54 @@ public class Patch extends OperationOb implements Cloneable {
     return tokenOperationObject_OperationObject;
   }
 /** @apilevel internal */
-protected java.util.Set generateRandomUrl_String_OperationObject_visited;
+protected java.util.Set inferRandomUrl_String_OperationObject_visited;
   /**
    * @attribute syn
-   * @aspect RandomRequestGenerator
-   * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\RandomRequestGenerator.jrag:95
+   * @aspect InfSchema
+   * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\InfSchema.jrag:34
    */
   @ASTNodeAnnotation.Attribute(kind=ASTNodeAnnotation.Kind.SYN)
-  @ASTNodeAnnotation.Source(aspect="RandomRequestGenerator", declaredAt="E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\RandomRequestGenerator.jrag:95")
-  public String generateRandomUrl(String pathRef, OperationObject operationObject) {
+  @ASTNodeAnnotation.Source(aspect="InfSchema", declaredAt="E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\InfSchema.jrag:34")
+  public String inferRandomUrl(String pathRef, OperationObject operationObject) {
     java.util.List _parameters = new java.util.ArrayList(2);
     _parameters.add(pathRef);
     _parameters.add(operationObject);
-    if (generateRandomUrl_String_OperationObject_visited == null) generateRandomUrl_String_OperationObject_visited = new java.util.HashSet(4);
-    if (generateRandomUrl_String_OperationObject_visited.contains(_parameters)) {
-      throw new RuntimeException("Circular definition of attribute OperationOb.generateRandomUrl(String,OperationObject).");
+    if (inferRandomUrl_String_OperationObject_visited == null) inferRandomUrl_String_OperationObject_visited = new java.util.HashSet(4);
+    if (inferRandomUrl_String_OperationObject_visited.contains(_parameters)) {
+      throw new RuntimeException("Circular definition of attribute OperationOb.inferRandomUrl(String,OperationObject).");
+    }
+    inferRandomUrl_String_OperationObject_visited.add(_parameters);
+    try {
+            return "";
+        }
+    finally {
+      inferRandomUrl_String_OperationObject_visited.remove(_parameters);
+    }
+  }
+/** @apilevel internal */
+protected java.util.Set generateRandomUrl_String_OperationObject_Map_ResponseObject__String__visited;
+  /**
+   * @attribute syn
+   * @aspect RandomRequestGenerator
+   * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\RandomRequestGenerator.jrag:96
+   */
+  @ASTNodeAnnotation.Attribute(kind=ASTNodeAnnotation.Kind.SYN)
+  @ASTNodeAnnotation.Source(aspect="RandomRequestGenerator", declaredAt="E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\RandomRequestGenerator.jrag:96")
+  public String generateRandomUrl(String pathRef, OperationObject operationObject, Map<ResponseObject, String> responses) {
+    java.util.List _parameters = new java.util.ArrayList(3);
+    _parameters.add(pathRef);
+    _parameters.add(operationObject);
+    _parameters.add(responses);
+    if (generateRandomUrl_String_OperationObject_Map_ResponseObject__String__visited == null) generateRandomUrl_String_OperationObject_Map_ResponseObject__String__visited = new java.util.HashSet(4);
+    if (generateRandomUrl_String_OperationObject_Map_ResponseObject__String__visited.contains(_parameters)) {
+      throw new RuntimeException("Circular definition of attribute OperationOb.generateRandomUrl(String,OperationObject,Map_ResponseObject__String_).");
     }
-    generateRandomUrl_String_OperationObject_visited.add(_parameters);
+    generateRandomUrl_String_OperationObject_Map_ResponseObject__String__visited.add(_parameters);
     try {
             return "";
             }
     finally {
-      generateRandomUrl_String_OperationObject_visited.remove(_parameters);
+      generateRandomUrl_String_OperationObject_Map_ResponseObject__String__visited.remove(_parameters);
     }
   }
   /** @apilevel internal */
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 a95c6550a2de4030d2c0e0dea40b35f6dc909b46..6b24d4f0b56d5aed9798dd8d21a7904f87e3156e 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
@@ -206,24 +206,44 @@ public class PathsObject extends ASTNode<ASTNode> implements Cloneable {
   }
   /**
    * @attribute inh
-   * @aspect RandomRequestGenerator
-   * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\RandomRequestGenerator.jrag:84
+   * @aspect InfSchema
+   * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\InfSchema.jrag:21
    */
   @ASTNodeAnnotation.Attribute(kind=ASTNodeAnnotation.Kind.INH)
-  @ASTNodeAnnotation.Source(aspect="RandomRequestGenerator", declaredAt="E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\RandomRequestGenerator.jrag:84")
-  public Set<String> generateUrl(Set<String> urls) {
+  @ASTNodeAnnotation.Source(aspect="InfSchema", declaredAt="E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\InfSchema.jrag:21")
+  public Set<String> inferUrl(Set<String> urls) {
     Object _parameters = urls;
-    if (generateUrl_Set_String__visited == null) generateUrl_Set_String__visited = new java.util.HashSet(4);
-    if (generateUrl_Set_String__visited.contains(_parameters)) {
-      throw new RuntimeException("Circular definition of attribute PathsObject.generateUrl(Set_String_).");
+    if (inferUrl_Set_String__visited == null) inferUrl_Set_String__visited = new java.util.HashSet(4);
+    if (inferUrl_Set_String__visited.contains(_parameters)) {
+      throw new RuntimeException("Circular definition of attribute PathsObject.inferUrl(Set_String_).");
+    }
+    inferUrl_Set_String__visited.add(_parameters);
+    Set<String> inferUrl_Set_String__value = getParent().Define_inferUrl(this, null, urls);
+    inferUrl_Set_String__visited.remove(_parameters);
+    return inferUrl_Set_String__value;
+  }
+/** @apilevel internal */
+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
+   */
+  @ASTNodeAnnotation.Attribute(kind=ASTNodeAnnotation.Kind.INH)
+  @ASTNodeAnnotation.Source(aspect="RandomRequestGenerator", declaredAt="E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\RandomRequestGenerator.jrag:82")
+  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);
+    if (generateUrl_Map_ResponseObject__String__visited.contains(_parameters)) {
+      throw new RuntimeException("Circular definition of attribute PathsObject.generateUrl(Map_ResponseObject__String_).");
     }
-    generateUrl_Set_String__visited.add(_parameters);
-    Set<String> generateUrl_Set_String__value = getParent().Define_generateUrl(this, null, urls);
-    generateUrl_Set_String__visited.remove(_parameters);
-    return generateUrl_Set_String__value;
+    generateUrl_Map_ResponseObject__String__visited.add(_parameters);
+    Map<ResponseObject, String> generateUrl_Map_ResponseObject__String__value = getParent().Define_generateUrl(this, null, responses);
+    generateUrl_Map_ResponseObject__String__visited.remove(_parameters);
+    return generateUrl_Map_ResponseObject__String__value;
   }
 /** @apilevel internal */
-protected java.util.Set generateUrl_Set_String__visited;
+protected java.util.Set generateUrl_Map_ResponseObject__String__visited;
   /** @apilevel internal */
   public ASTNode rewriteTo() {
     return super.rewriteTo();
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 41789618e795127d2822a2f0e0e77d97c5122f3e..4e56710065a02ad3cf3df460848e489f5b1caecb 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
@@ -177,26 +177,54 @@ public class Post extends OperationOb implements Cloneable {
     return tokenOperationObject_OperationObject;
   }
 /** @apilevel internal */
-protected java.util.Set generateRandomUrl_String_OperationObject_visited;
+protected java.util.Set inferRandomUrl_String_OperationObject_visited;
   /**
    * @attribute syn
-   * @aspect RandomRequestGenerator
-   * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\RandomRequestGenerator.jrag:95
+   * @aspect InfSchema
+   * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\InfSchema.jrag:34
    */
   @ASTNodeAnnotation.Attribute(kind=ASTNodeAnnotation.Kind.SYN)
-  @ASTNodeAnnotation.Source(aspect="RandomRequestGenerator", declaredAt="E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\RandomRequestGenerator.jrag:95")
-  public String generateRandomUrl(String pathRef, OperationObject operationObject) {
+  @ASTNodeAnnotation.Source(aspect="InfSchema", declaredAt="E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\InfSchema.jrag:34")
+  public String inferRandomUrl(String pathRef, OperationObject operationObject) {
     java.util.List _parameters = new java.util.ArrayList(2);
     _parameters.add(pathRef);
     _parameters.add(operationObject);
-    if (generateRandomUrl_String_OperationObject_visited == null) generateRandomUrl_String_OperationObject_visited = new java.util.HashSet(4);
-    if (generateRandomUrl_String_OperationObject_visited.contains(_parameters)) {
-      throw new RuntimeException("Circular definition of attribute OperationOb.generateRandomUrl(String,OperationObject).");
+    if (inferRandomUrl_String_OperationObject_visited == null) inferRandomUrl_String_OperationObject_visited = new java.util.HashSet(4);
+    if (inferRandomUrl_String_OperationObject_visited.contains(_parameters)) {
+      throw new RuntimeException("Circular definition of attribute OperationOb.inferRandomUrl(String,OperationObject).");
     }
-    generateRandomUrl_String_OperationObject_visited.add(_parameters);
+    inferRandomUrl_String_OperationObject_visited.add(_parameters);
+    try {
+    
+            return "";
+        }
+    finally {
+      inferRandomUrl_String_OperationObject_visited.remove(_parameters);
+    }
+  }
+/** @apilevel internal */
+protected java.util.Set generateRandomUrl_String_OperationObject_Map_ResponseObject__String__visited;
+  /**
+   * @attribute syn
+   * @aspect RandomRequestGenerator
+   * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\RandomRequestGenerator.jrag:96
+   */
+  @ASTNodeAnnotation.Attribute(kind=ASTNodeAnnotation.Kind.SYN)
+  @ASTNodeAnnotation.Source(aspect="RandomRequestGenerator", declaredAt="E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\RandomRequestGenerator.jrag:96")
+  public String generateRandomUrl(String pathRef, OperationObject operationObject, Map<ResponseObject, String> responses) {
+    java.util.List _parameters = new java.util.ArrayList(3);
+    _parameters.add(pathRef);
+    _parameters.add(operationObject);
+    _parameters.add(responses);
+    if (generateRandomUrl_String_OperationObject_Map_ResponseObject__String__visited == null) generateRandomUrl_String_OperationObject_Map_ResponseObject__String__visited = new java.util.HashSet(4);
+    if (generateRandomUrl_String_OperationObject_Map_ResponseObject__String__visited.contains(_parameters)) {
+      throw new RuntimeException("Circular definition of attribute OperationOb.generateRandomUrl(String,OperationObject,Map_ResponseObject__String_).");
+    }
+    generateRandomUrl_String_OperationObject_Map_ResponseObject__String__visited.add(_parameters);
     try {
             Random rand = new Random();
     
+            try{
             for( ParameterOb o : operationObject.getParameterObs() ){
             ParameterObject p = o.parameterObject();
             SchemaObject s = p.getSchemaOb().schemaObject();
@@ -234,23 +262,42 @@ protected java.util.Set generateRandomUrl_String_OperationObject_visited;
             }
             }
             }
-            pathRef = pathRef.replaceFirst("&", "?") + "POST";
+            pathRef = pathRef.replaceFirst("&", "?");
+            System.out.println("Generated path : " + pathRef);
     
-    /*
-                URL url = new URL(pathRef);
-                HttpURLConnection con = (HttpURLConnection) url.openConnection();
+            URL url = new URL(pathRef);
+            HttpsURLConnection con = (HttpsURLConnection) url.openConnection();
     
-                con.setRequestMethod("POST"); // HTTP POST
-                con.setDoOutput(true); // POST
+            con.setRequestMethod("POST"); // HTTP POST
+            con.setDoOutput(true); // POST
     
-                int responseCode = con.getResponseCode();
+            int responseCode = con.getResponseCode();
+            BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
+            String inputLine;
+            StringBuffer response = new StringBuffer();
     
-                // print result
-                System.out.println("HTTP status code (POST) : " + responseCode);*/
-            return pathRef;
+            while ((inputLine = in.readLine()) != null) {
+            response.append(inputLine);
+            }
+            in.close();
+    
+            // print result
+            System.out.println("HTTP status code (POST) : " + responseCode);
+            for( ResponseTuple t : operationObject.getResponseTuples() ){
+            if( t.getKey().equals("200") && responseCode == 200 ) {
+            System.out.println("Response successfully saved!");
+            responses.put(t.getResponseOb().responseObject(), response.toString());
+            } else if ( t.getKey().equals("default") && responseCode == 200 ){
+            System.out.println("Response successfully saved!");
+            responses.put(t.getResponseOb().responseObject(), response.toString());
+            }
+            }
+            return pathRef;} catch (Exception e) {
+                return "";
+            }
             }
     finally {
-      generateRandomUrl_String_OperationObject_visited.remove(_parameters);
+      generateRandomUrl_String_OperationObject_Map_ResponseObject__String__visited.remove(_parameters);
     }
   }
   /** @apilevel internal */
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 133e67b48da78927a831c5e820713c0e34a8d04b..3f15eda0eeee8250639fc2a103fc788d7e94a4c4 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
@@ -177,28 +177,54 @@ public class Put extends OperationOb implements Cloneable {
     return tokenOperationObject_OperationObject;
   }
 /** @apilevel internal */
-protected java.util.Set generateRandomUrl_String_OperationObject_visited;
+protected java.util.Set inferRandomUrl_String_OperationObject_visited;
   /**
    * @attribute syn
-   * @aspect RandomRequestGenerator
-   * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\RandomRequestGenerator.jrag:95
+   * @aspect InfSchema
+   * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\InfSchema.jrag:34
    */
   @ASTNodeAnnotation.Attribute(kind=ASTNodeAnnotation.Kind.SYN)
-  @ASTNodeAnnotation.Source(aspect="RandomRequestGenerator", declaredAt="E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\RandomRequestGenerator.jrag:95")
-  public String generateRandomUrl(String pathRef, OperationObject operationObject) {
+  @ASTNodeAnnotation.Source(aspect="InfSchema", declaredAt="E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\InfSchema.jrag:34")
+  public String inferRandomUrl(String pathRef, OperationObject operationObject) {
     java.util.List _parameters = new java.util.ArrayList(2);
     _parameters.add(pathRef);
     _parameters.add(operationObject);
-    if (generateRandomUrl_String_OperationObject_visited == null) generateRandomUrl_String_OperationObject_visited = new java.util.HashSet(4);
-    if (generateRandomUrl_String_OperationObject_visited.contains(_parameters)) {
-      throw new RuntimeException("Circular definition of attribute OperationOb.generateRandomUrl(String,OperationObject).");
+    if (inferRandomUrl_String_OperationObject_visited == null) inferRandomUrl_String_OperationObject_visited = new java.util.HashSet(4);
+    if (inferRandomUrl_String_OperationObject_visited.contains(_parameters)) {
+      throw new RuntimeException("Circular definition of attribute OperationOb.inferRandomUrl(String,OperationObject).");
+    }
+    inferRandomUrl_String_OperationObject_visited.add(_parameters);
+    try {
+            return "";
+        }
+    finally {
+      inferRandomUrl_String_OperationObject_visited.remove(_parameters);
+    }
+  }
+/** @apilevel internal */
+protected java.util.Set generateRandomUrl_String_OperationObject_Map_ResponseObject__String__visited;
+  /**
+   * @attribute syn
+   * @aspect RandomRequestGenerator
+   * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\RandomRequestGenerator.jrag:96
+   */
+  @ASTNodeAnnotation.Attribute(kind=ASTNodeAnnotation.Kind.SYN)
+  @ASTNodeAnnotation.Source(aspect="RandomRequestGenerator", declaredAt="E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\RandomRequestGenerator.jrag:96")
+  public String generateRandomUrl(String pathRef, OperationObject operationObject, Map<ResponseObject, String> responses) {
+    java.util.List _parameters = new java.util.ArrayList(3);
+    _parameters.add(pathRef);
+    _parameters.add(operationObject);
+    _parameters.add(responses);
+    if (generateRandomUrl_String_OperationObject_Map_ResponseObject__String__visited == null) generateRandomUrl_String_OperationObject_Map_ResponseObject__String__visited = new java.util.HashSet(4);
+    if (generateRandomUrl_String_OperationObject_Map_ResponseObject__String__visited.contains(_parameters)) {
+      throw new RuntimeException("Circular definition of attribute OperationOb.generateRandomUrl(String,OperationObject,Map_ResponseObject__String_).");
     }
-    generateRandomUrl_String_OperationObject_visited.add(_parameters);
+    generateRandomUrl_String_OperationObject_Map_ResponseObject__String__visited.add(_parameters);
     try {
             return "";
             }
     finally {
-      generateRandomUrl_String_OperationObject_visited.remove(_parameters);
+      generateRandomUrl_String_OperationObject_Map_ResponseObject__String__visited.remove(_parameters);
     }
   }
   /** @apilevel internal */
diff --git a/src/gen/java/de/tudresden/inf/st/openapi/ast/SchemaObject.java b/src/gen/java/de/tudresden/inf/st/openapi/ast/SchemaObject.java
index 3e10c0f0c75a910d536057a391d3cda2a1e601cd..b33a59dc0d299ee29ae9d7ce77b27474d0de6029 100644
--- a/src/gen/java/de/tudresden/inf/st/openapi/ast/SchemaObject.java
+++ b/src/gen/java/de/tudresden/inf/st/openapi/ast/SchemaObject.java
@@ -1938,22 +1938,4 @@ protected boolean schemaObject_visited = false;
   public boolean canRewrite() {
     return false;
   }
-  /** @apilevel internal */
-  protected void collect_contributors_OpenAPIObject_schemas(OpenAPIObject _root, java.util.Map<ASTNode, java.util.Set<ASTNode>> _map) {
-    // @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\InfSchema.jrag:15
-    {
-      java.util.Set<ASTNode> contributors = _map.get(_root);
-      if (contributors == null) {
-        contributors = new java.util.LinkedHashSet<ASTNode>();
-        _map.put((ASTNode) _root, contributors);
-      }
-      contributors.add(this);
-    }
-    super.collect_contributors_OpenAPIObject_schemas(_root, _map);
-  }
-  /** @apilevel internal */
-  protected void contributeTo_OpenAPIObject_schemas(java.util.Set<SchemaObject> collection) {
-    super.contributeTo_OpenAPIObject_schemas(collection);
-    collection.add(this);
-  }
 }
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 c93b736d0719d1c69e4ceca012d7c9b92fb7e2ee..3f676540ecaff3eb8c820a700769c623388b43d7 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
@@ -212,4 +212,22 @@ public class SchemaTuple extends ASTNode<ASTNode> implements Cloneable {
   public boolean canRewrite() {
     return false;
   }
+  /** @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
+    {
+      java.util.Set<ASTNode> contributors = _map.get(_root);
+      if (contributors == null) {
+        contributors = new java.util.LinkedHashSet<ASTNode>();
+        _map.put((ASTNode) _root, contributors);
+      }
+      contributors.add(this);
+    }
+    super.collect_contributors_OpenAPIObject_schemaTuples(_root, _map);
+  }
+  /** @apilevel internal */
+  protected void contributeTo_OpenAPIObject_schemaTuples(java.util.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 e2df33b4b81485a78f98c0e7c167f3ee7375a13a..3d747775b2322550e4bee8896043bc6a878308f7 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
@@ -177,28 +177,54 @@ public class Trace extends OperationOb implements Cloneable {
     return tokenOperationObject_OperationObject;
   }
 /** @apilevel internal */
-protected java.util.Set generateRandomUrl_String_OperationObject_visited;
+protected java.util.Set inferRandomUrl_String_OperationObject_visited;
   /**
    * @attribute syn
-   * @aspect RandomRequestGenerator
-   * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\RandomRequestGenerator.jrag:95
+   * @aspect InfSchema
+   * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\InfSchema.jrag:34
    */
   @ASTNodeAnnotation.Attribute(kind=ASTNodeAnnotation.Kind.SYN)
-  @ASTNodeAnnotation.Source(aspect="RandomRequestGenerator", declaredAt="E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\RandomRequestGenerator.jrag:95")
-  public String generateRandomUrl(String pathRef, OperationObject operationObject) {
+  @ASTNodeAnnotation.Source(aspect="InfSchema", declaredAt="E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\InfSchema.jrag:34")
+  public String inferRandomUrl(String pathRef, OperationObject operationObject) {
     java.util.List _parameters = new java.util.ArrayList(2);
     _parameters.add(pathRef);
     _parameters.add(operationObject);
-    if (generateRandomUrl_String_OperationObject_visited == null) generateRandomUrl_String_OperationObject_visited = new java.util.HashSet(4);
-    if (generateRandomUrl_String_OperationObject_visited.contains(_parameters)) {
-      throw new RuntimeException("Circular definition of attribute OperationOb.generateRandomUrl(String,OperationObject).");
+    if (inferRandomUrl_String_OperationObject_visited == null) inferRandomUrl_String_OperationObject_visited = new java.util.HashSet(4);
+    if (inferRandomUrl_String_OperationObject_visited.contains(_parameters)) {
+      throw new RuntimeException("Circular definition of attribute OperationOb.inferRandomUrl(String,OperationObject).");
+    }
+    inferRandomUrl_String_OperationObject_visited.add(_parameters);
+    try {
+            return "";
+        }
+    finally {
+      inferRandomUrl_String_OperationObject_visited.remove(_parameters);
+    }
+  }
+/** @apilevel internal */
+protected java.util.Set generateRandomUrl_String_OperationObject_Map_ResponseObject__String__visited;
+  /**
+   * @attribute syn
+   * @aspect RandomRequestGenerator
+   * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\RandomRequestGenerator.jrag:96
+   */
+  @ASTNodeAnnotation.Attribute(kind=ASTNodeAnnotation.Kind.SYN)
+  @ASTNodeAnnotation.Source(aspect="RandomRequestGenerator", declaredAt="E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\RandomRequestGenerator.jrag:96")
+  public String generateRandomUrl(String pathRef, OperationObject operationObject, Map<ResponseObject, String> responses) {
+    java.util.List _parameters = new java.util.ArrayList(3);
+    _parameters.add(pathRef);
+    _parameters.add(operationObject);
+    _parameters.add(responses);
+    if (generateRandomUrl_String_OperationObject_Map_ResponseObject__String__visited == null) generateRandomUrl_String_OperationObject_Map_ResponseObject__String__visited = new java.util.HashSet(4);
+    if (generateRandomUrl_String_OperationObject_Map_ResponseObject__String__visited.contains(_parameters)) {
+      throw new RuntimeException("Circular definition of attribute OperationOb.generateRandomUrl(String,OperationObject,Map_ResponseObject__String_).");
     }
-    generateRandomUrl_String_OperationObject_visited.add(_parameters);
+    generateRandomUrl_String_OperationObject_Map_ResponseObject__String__visited.add(_parameters);
     try {
             return "";
             }
     finally {
-      generateRandomUrl_String_OperationObject_visited.remove(_parameters);
+      generateRandomUrl_String_OperationObject_Map_ResponseObject__String__visited.remove(_parameters);
     }
   }
   /** @apilevel internal */
diff --git a/src/main/jastadd/InfSchema.jrag b/src/main/jastadd/InfSchema.jrag
index 6ead1e42ab1642ee1c4e072dbf906beb2ac462bf..0685d401d38e98815c19eefe85811fc023778182 100644
--- a/src/main/jastadd/InfSchema.jrag
+++ b/src/main/jastadd/InfSchema.jrag
@@ -11,9 +11,60 @@ aspect InfSchema {
       when schemaObject()
       to OpenAPIObject.collectSchemaObs();
          */
-        coll java.util.Set<SchemaObject> OpenAPIObject.schemas() [new java.util.HashSet<>()] root OpenAPIObject;
-        SchemaObject contributes this to OpenAPIObject.schemas();
 
-        inh OpenAPIObject ASTNode.root();
-        eq OpenAPIObject.getChild().root() = this;
+    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;
+
+    inh Set<String> PathsObject.inferUrl(Set<String> urls);
+    eq OpenAPIObject.getPathsObject(int i).inferUrl(Set<String> urls) {
+        PathItemObject p = ((PathsObject) _childNode).getPathItemOb().pathItemObject();
+        String path = ((OpenAPIObject) getParent()).getServerObject(0).getUrl();
+
+        if( p.hasGet() )
+            urls.add(p.getGet().inferRandomUrl(path + ((PathsObject) _childNode).getRef(), p.getGet().getOperationObject()));
+        else if( p.hasPost() )
+            urls.add(p.getPost().inferRandomUrl(path + ((PathsObject) _childNode).getRef(), p.getPost().getOperationObject()));
+
+        return urls;
+    }
+
+    syn String OperationOb.inferRandomUrl(String pathRef, OperationObject operationObject);
+    eq Get.inferRandomUrl(String pathRef, OperationObject operationObject) {
+
+        return "";
+    }
+    eq Post.inferRandomUrl(String pathRef, OperationObject operationObject) {
+
+        return "";
+    }
+    eq Put.inferRandomUrl(String pathRef, OperationObject operationObject){
+        return "";
+    }
+    eq Delete.inferRandomUrl(String pathRef, OperationObject operationObject){
+        return "";
+    }
+    eq Options.inferRandomUrl(String pathRef, OperationObject operationObject){
+        return "";
+    }
+    eq Head.inferRandomUrl(String pathRef, OperationObject operationObject){
+        return "";
+    }
+    eq Patch.inferRandomUrl(String pathRef, OperationObject operationObject){
+        return "";
+    }
+    eq Trace.inferRandomUrl(String pathRef, OperationObject operationObject){
+        return "";
+    }
+    eq OperationObject.inferRandomUrl(String pathRef, OperationObject operationObject){
+        return "";
+    }
+
+    syn Map<String, List<String>> OperationObject.getDict (Set<SchemaTuple> tuples, Map<ResponseObject, String> responses){
+        Map<String, List<String>> map = new HashMap<>();
+
+        return map;
+    }
 }
\ No newline at end of file
diff --git a/src/main/jastadd/RandomRequestGenerator.jrag b/src/main/jastadd/RandomRequestGenerator.jrag
index a6c5eaae630c11bcc87ecc448a8e0cbdd3ec9755..bc6200771bf811ba753ff5d23c08cb3f49d81d83 100644
--- a/src/main/jastadd/RandomRequestGenerator.jrag
+++ b/src/main/jastadd/RandomRequestGenerator.jrag
@@ -9,25 +9,20 @@ import java.util.stream.IntStream;
 
 aspect RandomRequestGenerator {
 
-    /*
-    syn String PathObject.getRequestURI(Ramdom r);
-    coll Set OpenAPI.requestURIs(Random r);
-    uncache PathObject.getRequestURI();
-    syn Set OpenAPI.requestURIs();
-
-     */
-
-    public String OpenAPIObject.generateRequests() throws Exception {
+    public Map<ResponseObject, String> OpenAPIObject.generateRequests() throws Exception {
         Set<String> urls = new HashSet<>();
+        Map<ResponseObject, String> responses = new HashMap<>();
 
         for( PathsObject p : this.getPathsObjects() )
-        p.generateUrl(urls);
+            p.generateUrl(responses);
 
+        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));
 
-        /* */
+
         URL url = new URL(this.getServerObject(0).getUrl() + path.substring(0, path.length()-3));
         HttpURLConnection con = (HttpURLConnection) url.openConnection();
 
@@ -35,8 +30,8 @@ aspect RandomRequestGenerator {
         con.setDoOutput(true); // GET
 
         int responseCode = con.getResponseCode();
-        System.out.println("HTTP status code (GET) : " + responseCode);
-        if( responseCode < 300 ){
+        //System.out.println("HTTP status code (GET) : " + responseCode);
+        if( responseCode < 300 && responseCode >= 200 ){
         BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
         String inputLine;
         StringBuffer response = new StringBuffer();
@@ -46,12 +41,13 @@ aspect RandomRequestGenerator {
         }
         in.close();
 
-        System.out.println("HTTP body : " + response.toString());
-        }/* */
+        //System.out.println("HTTP body : " + response.toString());
+        responses.add(response.toString());
+        }
         } else if( path.endsWith("POST") ) {
-        System.out.println(this.getServerObject(0).getUrl() + path.substring(0, path.length()-4));
+        //System.out.println(this.getServerObject(0).getUrl() + path.substring(0, path.length()-4));
+
 
-        /* */
         URL url = new URL(this.getServerObject(0).getUrl() + path.substring(0, path.length()-4));
         HttpURLConnection con = (HttpURLConnection) url.openConnection();
 
@@ -59,9 +55,9 @@ aspect RandomRequestGenerator {
         con.setDoOutput(true); // POST
 
         int responseCode = con.getResponseCode();
-        System.out.println("HTTP status code (POST) : " + responseCode);
+        //System.out.println("HTTP status code (POST) : " + responseCode);
 
-        if( responseCode < 300 ){
+        if( responseCode < 300 && responseCode >= 200 ){
         BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
         String inputLine;
         StringBuffer response = new StringBuffer();
@@ -72,28 +68,144 @@ aspect RandomRequestGenerator {
         in.close();
 
 
-        System.out.println("HTTP body : " + response.toString());
-        }/* */
+        //System.out.println("HTTP body : " + response.toString());
+        responses.add(response.toString());
         }
-
         }
 
-        return "";
+        }*/
+
+        //for( String s : responses )
+        //    System.out.println("Response : " + s.toString());
+        return responses;
     }
 
-    inh Set<String> PathsObject.generateUrl(Set<String> urls);
-    eq OpenAPIObject.getPathsObject(int i).generateUrl(Set<String> urls) {
+    inh Map<ResponseObject, String> PathsObject.generateUrl(Map<ResponseObject, String> responses);
+    eq OpenAPIObject.getPathsObject(int i).generateUrl(Map<ResponseObject, String> responses) {
         PathItemObject p = ((PathsObject) _childNode).getPathItemOb().pathItemObject();
+        String path = getServerObject(0).getUrl();
+
         if( p.hasGet() )
-        urls.add(p.getGet().generateRandomUrl(((PathsObject) _childNode).getRef(), p.getGet().getOperationObject()));
+        p.getGet().generateRandomUrl(path + ((PathsObject) _childNode).getRef(), p.getGet().getOperationObject(), responses);
+        //urls.add(p.getGet().generateRandomUrl(((PathsObject) _childNode).getRef(), p.getGet().getOperationObject()));
         else if( p.hasPost() )
-        urls.add(p.getPost().generateRandomUrl(((PathsObject) _childNode).getRef(), p.getPost().getOperationObject()));
+        p.getPost().generateRandomUrl(path + ((PathsObject) _childNode).getRef(), p.getPost().getOperationObject(), responses);
+        //urls.add(p.getPost().generateRandomUrl(((PathsObject) _childNode).getRef(), p.getPost().getOperationObject()));
+
+        return responses;
+        }
+        syn String OperationOb.generateRandomUrl(String pathRef, OperationObject operationObject, Map<ResponseObject, String> responses);
+/*
+        eq Get.generateRandomUrl(String pathRef, OperationObject operationObject, Map<ResponseObject, String> responses) {
+        Random rand = new Random();
+
+        for( ParameterOb o : operationObject.getParameterObs() ){
+        ParameterObject p = o.parameterObject();
+        SchemaObject s = p.getSchemaOb().schemaObject();
+        if( p.getIn().equals("path") ){
+        String pathPart = pathRef.substring(pathRef.indexOf("{") ,pathRef.indexOf("}") + 1);
+
+        if( s.getType().equals("string") )
+        pathRef = pathRef.replace(pathPart, operationObject.generateRandomString(rand, s.getEnumObjs()));
+        else if( s.getType().equals("integer") )
+        pathRef = pathRef.replace(pathPart, operationObject.generateRandomInt( rand,
+        -1, // s.getMinimum() != null ? s.getMinimum().intValue() : -1,
+        10 // s.getMaximum() != null ? s.getMaximum().intValue() : -1
+        ));
+        }
+        else if( p.getIn().equals("query") ){
+
+        if( s.getType().equals("string") )
+        pathRef = pathRef + "&" + p.getName() + "=" + operationObject.generateRandomString(rand, s.getEnumObjs());
+        else if( s.getType().equals("integer") )
+        pathRef = pathRef + "&" + p.getName() + "=" + operationObject.generateRandomInt(  rand,
+        -1, // s.getMinimum() != null ? s.getMinimum().intValue() : -1,
+        10); // s.getMaximum() != null ? s.getMaximum().intValue() : -1
+        else if( s.getType().equals("array") ){
+        if( s.getItemsSchema().getSchemaOb().schemaObject().getType().equals("string") ){
+        for( EnumObj e : s.getItemsSchema().getSchemaOb().schemaObject().getEnumObjs() )
+        pathRef=rand.nextDouble()< 0.5?pathRef+"&"+p.getName()+"="+e.getEnumOb():pathRef;
+        }
+        else if( s.getItemsSchema().getSchemaOb().schemaObject().getType().equals("integer") ){
+        for( int i = 0 ; i < 5 ; i++ )
+        pathRef = pathRef + "&" + p.getName() + "=" + operationObject.generateRandomInt(  rand,
+        -1, // s.getMinimum() != null ? s.getMinimum().intValue() : -1,
+        10); // s.getMaximum() != null ? s.getMaximum().intValue() : -1
+        }
+
+        }
+        }
+        }
+        pathRef = pathRef.replaceFirst("&", "?") ;
+        System.out.println(pathRef);
+        URL url = new URL(pathRef);
+        HttpURLConnection con = (HttpURLConnection) url.openConnection();
+
+        con.setRequestMethod("GET"); // HTTP GET
+        con.setDoOutput(true); // GET
+
+        int responseCode = con.getResponseCode();
+
+        // print result
+        System.out.println("HTTP status code (GET) : " + responseCode);
+        }
+public void Post.generateRandomUrl(String pathRef, OperationObject operationObject, Map<ResponseObject, String> responses) throws Exception{
+        Random rand = new Random();
+
+        System.out.println(1);
+        for( ParameterOb o : operationObject.getParameterObs() ){
+        ParameterObject p = o.parameterObject();
+        SchemaObject s = p.getSchemaOb().schemaObject();
+        if( p.getIn().equals("path") ){
+        String pathPart = pathRef.substring(pathRef.indexOf("{") ,pathRef.indexOf("}") + 1);
+
+        if( s.getType().equals("string") )
+        pathRef = pathRef.replace(pathPart, operationObject.generateRandomString(rand, s.getEnumObjs()));
+        else if( s.getType().equals("integer") )
+        pathRef = pathRef.replace(pathPart, operationObject.generateRandomInt( rand,
+        -1, // s.getMinimum() != null ? s.getMinimum().intValue() : -1,
+        10 // s.getMaximum() != null ? s.getMaximum().intValue() : -1
+        ));
+        }
+        else if( p.getIn().equals("query") ){
+
+        if( s.getType().equals("string") )
+        pathRef = pathRef + "&" + p.getName() + "=" + operationObject.generateRandomString(rand, s.getEnumObjs());
+        else if( s.getType().equals("integer") )
+        pathRef = pathRef + "&" + p.getName() + "=" + operationObject.generateRandomInt(  rand,
+        -1, // s.getMinimum() != null ? s.getMinimum().intValue() : -1,
+        10); // s.getMaximum() != null ? s.getMaximum().intValue() : -1
+        else if( s.getType().equals("array") ){
+        if( s.getItemsSchema().getSchemaOb().schemaObject().getType().equals("string") ){
+        for( EnumObj e : s.getItemsSchema().getSchemaOb().schemaObject().getEnumObjs() )
+        pathRef=rand.nextDouble()< 0.5?pathRef+"&"+p.getName()+"="+e.getEnumOb():pathRef;
+        }
+        else if( s.getItemsSchema().getSchemaOb().schemaObject().getType().equals("integer") ){
+        for( int i = 0 ; i < 5 ; i++ )
+        pathRef = pathRef + "&" + p.getName() + "=" + operationObject.generateRandomInt(  rand,
+        -1, // s.getMinimum() != null ? s.getMinimum().intValue() : -1,
+        10); // s.getMaximum() != null ? s.getMaximum().intValue() : -1
+        }
+
+        }
+        }
+        }
+        pathRef = pathRef.replaceFirst("&", "?") ;
+        URL url = new URL(pathRef);
+        HttpURLConnection con = (HttpURLConnection) url.openConnection();
+
+        con.setRequestMethod("POST"); // HTTP POST
+        con.setDoOutput(true); // POST
 
-        return urls;
+        int responseCode = con.getResponseCode();
+
+        // print result
+        System.out.println("HTTP status code (POST) : " + responseCode);
         }
 
-    syn String OperationOb.generateRandomUrl(String pathRef, OperationObject operationObject);
-    eq Get.generateRandomUrl(String pathRef, OperationObject operationObject) {
+ */
+    eq Get.generateRandomUrl(String pathRef, OperationObject operationObject, Map<ResponseObject, String> responses) {
+        try {
         Random rand = new Random();
 
         for( ParameterOb o : operationObject.getParameterObs() ){
@@ -133,24 +245,41 @@ aspect RandomRequestGenerator {
         }
         }
         }
-        pathRef = pathRef.replaceFirst("&", "?") + "GET";
+        pathRef = pathRef.replaceFirst("&", "?") ;
+        System.out.println("Generated path : " + pathRef);
+
+        URL url = new URL(pathRef);
+        HttpURLConnection con = (HttpURLConnection) url.openConnection();
 
-            /*
-            URL url = new URL(pathRef);
-            HttpURLConnection con = (HttpURLConnection) url.openConnection();
+        con.setRequestMethod("GET"); // optional default is GET
 
-            con.setRequestMethod("GET"); // HTTP GET
-            con.setDoOutput(true); // GET
+        int responseCode = con.getResponseCode();
+        BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
+        String inputLine;
+        StringBuffer response = new StringBuffer();
 
-            int responseCode = con.getResponseCode();
+        while ((inputLine = in.readLine()) != null) {
+        response.append(inputLine);
+        }
+        in.close();
 
-            // print result
-            System.out.println("HTTP status code (GET) : " + responseCode);*/
+        // print result
+        System.out.println("HTTP status code (GET) : " + responseCode);
+        for( ResponseTuple t : operationObject.getResponseTuples() ){
+        if( t.getKey().equals("200") && responseCode == 200 ) {
+        System.out.println("Response successfully saved!");
+        responses.put(t.getResponseOb().responseObject(), response.toString());
+        }
+        }
         return pathRef;
+        }catch (Exception e) {
+        return "";
+        }
         }
-        eq Post.generateRandomUrl(String pathRef, OperationObject operationObject){
+        eq Post.generateRandomUrl(String pathRef, OperationObject operationObject, Map<ResponseObject, String> responses){
         Random rand = new Random();
 
+        try{
         for( ParameterOb o : operationObject.getParameterObs() ){
         ParameterObject p = o.parameterObject();
         SchemaObject s = p.getSchemaOb().schemaObject();
@@ -188,41 +317,60 @@ aspect RandomRequestGenerator {
         }
         }
         }
-        pathRef = pathRef.replaceFirst("&", "?") + "POST";
+        pathRef = pathRef.replaceFirst("&", "?");
+        System.out.println("Generated path : " + pathRef);
 
-/*
-            URL url = new URL(pathRef);
-            HttpURLConnection con = (HttpURLConnection) url.openConnection();
+        URL url = new URL(pathRef);
+        HttpsURLConnection con = (HttpsURLConnection) url.openConnection();
 
-            con.setRequestMethod("POST"); // HTTP POST
-            con.setDoOutput(true); // POST
+        con.setRequestMethod("POST"); // HTTP POST
+        con.setDoOutput(true); // POST
 
-            int responseCode = con.getResponseCode();
+        int responseCode = con.getResponseCode();
+        BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
+        String inputLine;
+        StringBuffer response = new StringBuffer();
 
-            // print result
-            System.out.println("HTTP status code (POST) : " + responseCode);*/
-        return pathRef;
+        while ((inputLine = in.readLine()) != null) {
+        response.append(inputLine);
+        }
+        in.close();
+
+        // print result
+        System.out.println("HTTP status code (POST) : " + responseCode);
+        for( ResponseTuple t : operationObject.getResponseTuples() ){
+        if( t.getKey().equals("200") && responseCode == 200 ) {
+        System.out.println("Response successfully saved!");
+        responses.put(t.getResponseOb().responseObject(), response.toString());
+        } else if ( t.getKey().equals("default") && responseCode == 200 ){
+        System.out.println("Response successfully saved!");
+        responses.put(t.getResponseOb().responseObject(), response.toString());
+        }
+        }
+        return pathRef;} catch (Exception e) {
+            return "";
+        }
         }
 
-        eq Put.generateRandomUrl(String pathRef, OperationObject operationObject){
+        eq Put.generateRandomUrl(String pathRef, OperationObject operationObject, Map<ResponseObject, String> responses){
         return "";
         }
-        eq Delete.generateRandomUrl(String pathRef, OperationObject operationObject){
+        eq Delete.generateRandomUrl(String pathRef, OperationObject operationObject, Map<ResponseObject, String> responses){
         return "";
         }
-        eq Options.generateRandomUrl(String pathRef, OperationObject operationObject){
+        eq Options.generateRandomUrl(String pathRef, OperationObject operationObject, Map<ResponseObject, String> responses){
         return "";
         }
-        eq Head.generateRandomUrl(String pathRef, OperationObject operationObject){
+        eq Head.generateRandomUrl(String pathRef, OperationObject operationObject, Map<ResponseObject, String> responses){
         return "";
         }
-        eq Patch.generateRandomUrl(String pathRef, OperationObject operationObject){
+        eq Patch.generateRandomUrl(String pathRef, OperationObject operationObject, Map<ResponseObject, String> responses){
         return "";
         }
-        eq Trace.generateRandomUrl(String pathRef, OperationObject operationObject){
+        eq Trace.generateRandomUrl(String pathRef, OperationObject operationObject, Map<ResponseObject, String> responses){
         return "";
         }
-        eq OperationObject.generateRandomUrl(String pathRef, OperationObject operationObject){
+        eq OperationObject.generateRandomUrl(String pathRef, OperationObject operationObject, Map<ResponseObject, String> responses){
         return "";
         }
 
diff --git a/src/main/java/de/tudresden/inf/st/openapi/OpenAPIMain.java b/src/main/java/de/tudresden/inf/st/openapi/OpenAPIMain.java
index 1a91ba268d95cf1897305f4f56d72babe1ff1b62..ecddff6a4e90c9ab774de8a1298e994cdb597c1c 100644
--- a/src/main/java/de/tudresden/inf/st/openapi/OpenAPIMain.java
+++ b/src/main/java/de/tudresden/inf/st/openapi/OpenAPIMain.java
@@ -44,6 +44,7 @@ public class OpenAPIMain {
             filenames.add(file.getName());
         System.out.println(filenames.size());
 
+        /*
         for( String file : filenames ){
             String writerName = genDir + file;
 
@@ -56,6 +57,7 @@ public class OpenAPIMain {
             openApi.generateRequests();
 
         }
+         */
 
         String fileName = "petstore-v2.yaml";
         //FileWriter writer = new FileWriter("./gen-api-ex/callback-example_generated.json");
@@ -71,25 +73,17 @@ public class OpenAPIMain {
             throw new FileNotFoundException("Could not load JSON file " + fileName);
         }
 
-        /*
         OpenApi3 api = new OpenApi3Parser().parse(expUrl, new ArrayList<>(), true);
         System.out.println("Loading expression DSL file '" + fileName + "'.");
 
         openApi = OpenAPIObject.parseOpenAPI(api);
         openApi.generateRequests();
 
-        api3 = OpenAPIObject.composeOpenAPI(openApi);
-
-        results = OpenApi3Validator.instance().validate(api);
-
-        openApi.generateRequests();*/
-
-
         //writer.write(api3.toNode().toPrettyString());
         //writer.close();
 
 
-        Map<String, String> s = new HashMap<>();
+        Map<String, List<String>> s = new HashMap<>();
 
         if (args.length > 0) {
             fileName = args[0];