diff --git a/coderules/languages/jetbrains.mps.lang.typechecking/generator/template/jetbrains.mps.lang.typechecking.generator.genutil.mps b/coderules/languages/jetbrains.mps.lang.typechecking/generator/template/jetbrains.mps.lang.typechecking.generator.genutil.mps
new file mode 100644
index 00000000..3b1b754f
--- /dev/null
+++ b/coderules/languages/jetbrains.mps.lang.typechecking/generator/template/jetbrains.mps.lang.typechecking.generator.genutil.mps
@@ -0,0 +1,623 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/coderules/languages/jetbrains.mps.lang.typechecking/generator/template/main@generator.mps b/coderules/languages/jetbrains.mps.lang.typechecking/generator/template/main@generator.mps
index 7145bd50..30f3a23b 100644
--- a/coderules/languages/jetbrains.mps.lang.typechecking/generator/template/main@generator.mps
+++ b/coderules/languages/jetbrains.mps.lang.typechecking/generator/template/main@generator.mps
@@ -23,8 +23,10 @@
+
+
@@ -51,6 +53,9 @@
+
+
+
@@ -66,6 +71,8 @@
+
+
@@ -82,9 +89,6 @@
-
-
-
@@ -133,6 +137,7 @@
+
@@ -187,6 +192,12 @@
+
+
+
+
+
+
@@ -224,6 +235,9 @@
+
+
+
@@ -270,6 +284,9 @@
+
+
+
@@ -288,11 +305,15 @@
+
+
+
+
@@ -325,6 +346,13 @@
+
+
+
+
+
+
+
@@ -333,12 +361,11 @@
-
-
-
+
+
@@ -651,24 +678,28 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
@@ -777,17 +808,82 @@
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -849,15 +945,85 @@
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -940,15 +1106,85 @@
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -1036,6 +1272,44 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -1116,6 +1390,44 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -1330,6 +1642,7 @@
+
@@ -1337,13 +1650,8 @@
-
-
-
-
-
-
-
+
+
@@ -1367,101 +1675,88 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
-
-
-
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
-
+
-
-
+
+
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
@@ -1668,9 +1963,6 @@
-
-
-
@@ -1836,9 +2128,25 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -1851,6 +2159,21 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -2019,7 +2342,7 @@
-
+
@@ -2053,12 +2376,63 @@
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -2069,16 +2443,11 @@
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
@@ -2102,16 +2471,11 @@
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
@@ -2136,12 +2500,63 @@
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -2155,16 +2570,11 @@
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
@@ -2189,12 +2599,63 @@
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -2232,31 +2693,11 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
@@ -2282,19 +2723,14 @@
-
+
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
@@ -2327,20 +2763,15 @@
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
-
+
@@ -2354,16 +2785,11 @@
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
@@ -2391,20 +2817,15 @@
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
-
+
@@ -2418,16 +2839,11 @@
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
@@ -2460,20 +2876,15 @@
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
-
+
@@ -2487,16 +2898,11 @@
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
@@ -2524,20 +2930,15 @@
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
-
+
@@ -2620,37 +3021,32 @@
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
-
-
-
-
-
+
+
+
+
+
-
+
-
-
+
+
-
+
-
+
@@ -2673,12 +3069,77 @@
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -2693,12 +3154,63 @@
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -2711,31 +3223,11 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
@@ -2745,16 +3237,11 @@
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
@@ -2776,12 +3263,77 @@
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -2796,12 +3348,63 @@
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -2814,38 +3417,11 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
@@ -2855,16 +3431,11 @@
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
@@ -2905,6 +3476,134 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/coderules/languages/jetbrains.mps.lang.typechecking/jetbrains.mps.lang.typechecking.mpl b/coderules/languages/jetbrains.mps.lang.typechecking/jetbrains.mps.lang.typechecking.mpl
index 691e0a00..bbd90ebb 100644
--- a/coderules/languages/jetbrains.mps.lang.typechecking/jetbrains.mps.lang.typechecking.mpl
+++ b/coderules/languages/jetbrains.mps.lang.typechecking/jetbrains.mps.lang.typechecking.mpl
@@ -66,7 +66,6 @@
-
@@ -111,6 +110,8 @@
bfbdd672-7ff5-403f-af4f-16da5226f34c(jetbrains.mps.findUsages.runtime)
35320f26-77cb-4c55-be9f-a97a27770af1(jetbrains.mps.logic)
3a13115c-633c-4c5c-bbcc-75c4219e9555(jetbrains.mps.lang.quotation)
+ ceab5195-25ea-4f22-9b92-103b95ca8c0c(jetbrains.mps.lang.core)
+ c4803b19-6d89-4a3b-bf82-390769514add(jetbrains.mps.lang.coderules)
@@ -134,6 +135,7 @@
+
diff --git a/coderules/solutions/jetbrains.mps.lang.typechecking.runtime/models/jetbrains.mps.lang.descriptor.aspects.types@genplan.mps b/coderules/solutions/jetbrains.mps.lang.typechecking.runtime/models/jetbrains.mps.lang.descriptor.aspects.types@genplan.mps
index dd2d3f6c..11c2abf4 100644
--- a/coderules/solutions/jetbrains.mps.lang.typechecking.runtime/models/jetbrains.mps.lang.descriptor.aspects.types@genplan.mps
+++ b/coderules/solutions/jetbrains.mps.lang.typechecking.runtime/models/jetbrains.mps.lang.descriptor.aspects.types@genplan.mps
@@ -10,16 +10,26 @@
+
+
+
+
+
+
+
+
+
+
@@ -35,6 +45,9 @@
+
+
+
@@ -56,6 +69,16 @@
+
+
+
+
+
+
+
+
+
+