diff --git a/.mps/modules.xml b/.mps/modules.xml
index b17052e5..7aff09fb 100644
--- a/.mps/modules.xml
+++ b/.mps/modules.xml
@@ -11,6 +11,7 @@
+
diff --git a/build.xml b/build.xml
index 6b43a2b1..474b17f1 100644
--- a/build.xml
+++ b/build.xml
@@ -595,6 +595,7 @@
+
@@ -699,6 +700,43 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -2541,6 +2579,7 @@
+
@@ -2645,6 +2684,43 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -3756,7 +3832,7 @@
-
+
@@ -3906,6 +3982,7 @@
+
@@ -5238,7 +5315,7 @@
-
+
@@ -5251,20 +5328,21 @@
-
-
-
-
+
+
+
+
+
@@ -5282,6 +5360,42 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -5591,6 +5705,7 @@
+
@@ -5673,6 +5788,7 @@
+
diff --git a/coderules/languages/jetbrains.mps.lang.coderules/runtime/jetbrains.mps.lang.coderules.runtime.msd b/coderules/languages/jetbrains.mps.lang.coderules/runtime/jetbrains.mps.lang.coderules.runtime.msd
index 0e71336c..c4aee27d 100644
--- a/coderules/languages/jetbrains.mps.lang.coderules/runtime/jetbrains.mps.lang.coderules.runtime.msd
+++ b/coderules/languages/jetbrains.mps.lang.coderules/runtime/jetbrains.mps.lang.coderules.runtime.msd
@@ -18,6 +18,7 @@
8865b7a8-5271-43d3-884c-6fd1d9cfdd34(MPS.OpenAPI)
6ed54515-acc8-4d1e-a16c-9fd6cfe951ea(MPS.Core)
ceab5195-25ea-4f22-9b92-103b95ca8c0c(jetbrains.mps.lang.core)
+ f113d56b-63e3-4120-a89c-2f5dcb8c6290(jetbrains.mps.coderules.runtime)
@@ -41,6 +42,7 @@
+
diff --git a/coderules/languages/jetbrains.mps.lang.coderules/runtime/models/jetbrains.mps.lang.coderules.eval.mps b/coderules/languages/jetbrains.mps.lang.coderules/runtime/models/jetbrains.mps.lang.coderules.eval.mps
index 7b9e861a..ef9c4109 100644
--- a/coderules/languages/jetbrains.mps.lang.coderules/runtime/models/jetbrains.mps.lang.coderules.eval.mps
+++ b/coderules/languages/jetbrains.mps.lang.coderules/runtime/models/jetbrains.mps.lang.coderules.eval.mps
@@ -37,6 +37,7 @@
+
@@ -294,7 +295,6 @@
-
@@ -1009,9 +1009,9 @@
-
-
-
+
+
+
@@ -1369,9 +1369,9 @@
-
-
-
+
+
+
@@ -1692,672 +1692,6 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -6722,9 +6056,9 @@
-
-
-
+
+
+
@@ -6741,9 +6075,9 @@
-
-
-
+
+
+
diff --git a/coderules/solutions/jetbrains.mps.coderules.build/models/jetbrains.mps.coderules.build.mps b/coderules/solutions/jetbrains.mps.coderules.build/models/jetbrains.mps.coderules.build.mps
index 12af37b2..24efd91e 100644
--- a/coderules/solutions/jetbrains.mps.coderules.build/models/jetbrains.mps.coderules.build.mps
+++ b/coderules/solutions/jetbrains.mps.coderules.build/models/jetbrains.mps.coderules.build.mps
@@ -2572,6 +2572,65 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -3014,6 +3073,9 @@
+
+
+
@@ -3204,20 +3266,23 @@
+
+
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
@@ -3226,19 +3291,19 @@
-
+
-
+
-
+
-
+
-
+
-
+
-
+
@@ -3247,19 +3312,19 @@
-
+
-
+
-
+
-
+
-
+
-
+
-
+
diff --git a/coderules/solutions/jetbrains.mps.coderules.runtime/jetbrains.mps.coderules.runtime.msd b/coderules/solutions/jetbrains.mps.coderules.runtime/jetbrains.mps.coderules.runtime.msd
new file mode 100644
index 00000000..0ea81900
--- /dev/null
+++ b/coderules/solutions/jetbrains.mps.coderules.runtime/jetbrains.mps.coderules.runtime.msd
@@ -0,0 +1,32 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 6354ebe7-c22a-4a0f-ac54-50b52ab9b065(JDK)
+ 6ed54515-acc8-4d1e-a16c-9fd6cfe951ea(MPS.Core)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/coderules/solutions/jetbrains.mps.coderules.runtime/models/jetbrains.mps.coderules.runtime.memoizer.mps b/coderules/solutions/jetbrains.mps.coderules.runtime/models/jetbrains.mps.coderules.runtime.memoizer.mps
new file mode 100644
index 00000000..49440fd3
--- /dev/null
+++ b/coderules/solutions/jetbrains.mps.coderules.runtime/models/jetbrains.mps.coderules.runtime.memoizer.mps
@@ -0,0 +1,822 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/samples/fitch/build.xml b/samples/fitch/build.xml
index 0432d267..bea53d4f 100644
--- a/samples/fitch/build.xml
+++ b/samples/fitch/build.xml
@@ -742,6 +742,7 @@
+
@@ -1475,6 +1476,7 @@
+
diff --git a/samples/lambdacalc/build.xml b/samples/lambdacalc/build.xml
index e70c6730..688b50f1 100644
--- a/samples/lambdacalc/build.xml
+++ b/samples/lambdacalc/build.xml
@@ -65,6 +65,7 @@
+
@@ -230,6 +231,7 @@
+
@@ -418,6 +420,7 @@
+
@@ -510,6 +513,7 @@
+
diff --git a/samples/lambdacalc/languages/samples.lambdacalc/models/types.mps b/samples/lambdacalc/languages/samples.lambdacalc/models/types.mps
index a681b2d0..7ddb50e7 100644
--- a/samples/lambdacalc/languages/samples.lambdacalc/models/types.mps
+++ b/samples/lambdacalc/languages/samples.lambdacalc/models/types.mps
@@ -22,6 +22,7 @@
+
@@ -3156,9 +3157,9 @@
-
-
-
+
+
+
diff --git a/samples/lambdacalc/languages/samples.lambdacalc/samples.lambdacalc.mpl b/samples/lambdacalc/languages/samples.lambdacalc/samples.lambdacalc.mpl
index 06eefbec..99062f2c 100644
--- a/samples/lambdacalc/languages/samples.lambdacalc/samples.lambdacalc.mpl
+++ b/samples/lambdacalc/languages/samples.lambdacalc/samples.lambdacalc.mpl
@@ -21,6 +21,7 @@
498d89d2-c2e9-11e2-ad49-6cf049e62fe5(MPS.IDEA)
bbf5c548-7111-4a53-a117-cdefc664cf34(jetbrains.mps.logic.reactor)
6998f568-f0e9-473b-b4a8-9efb6499fc8d(jetbrains.mps.coderules.typechecking)
+ f113d56b-63e3-4120-a89c-2f5dcb8c6290(jetbrains.mps.coderules.runtime)
@@ -81,6 +82,7 @@
+
diff --git a/samples/lambdacalc/solutions/samples.lambdacalc.build/models/samples.lamdacalc.build.mps b/samples/lambdacalc/solutions/samples.lambdacalc.build/models/samples.lamdacalc.build.mps
index ebf36996..444e4f14 100644
--- a/samples/lambdacalc/solutions/samples.lambdacalc.build/models/samples.lamdacalc.build.mps
+++ b/samples/lambdacalc/solutions/samples.lambdacalc.build/models/samples.lamdacalc.build.mps
@@ -225,6 +225,11 @@
+
+
+
+
+
diff --git a/samples/mpscore/build.xml b/samples/mpscore/build.xml
index 85806341..6352af7b 100644
--- a/samples/mpscore/build.xml
+++ b/samples/mpscore/build.xml
@@ -61,6 +61,7 @@
+
@@ -1412,6 +1413,7 @@
+
@@ -1628,6 +1630,7 @@
+
@@ -2941,6 +2944,7 @@
+
diff --git a/samples/mpscore/languages/jetbrains.mps.baseLanguageExt/jetbrains.mps.baseLanguageExt.mpl b/samples/mpscore/languages/jetbrains.mps.baseLanguageExt/jetbrains.mps.baseLanguageExt.mpl
index bf282b3f..4ca2e709 100644
--- a/samples/mpscore/languages/jetbrains.mps.baseLanguageExt/jetbrains.mps.baseLanguageExt.mpl
+++ b/samples/mpscore/languages/jetbrains.mps.baseLanguageExt/jetbrains.mps.baseLanguageExt.mpl
@@ -23,6 +23,7 @@
498d89d2-c2e9-11e2-ad49-6cf049e62fe5(MPS.IDEA)
4b5b4f8d-d30a-4ef8-9bf4-dfd26af9d462(jetbrains.mps.lang.typechecking)
c7d01124-66d5-486d-8b50-7fdccb60b839(jetbrains.mps.baseLanguage.util)
+ f113d56b-63e3-4120-a89c-2f5dcb8c6290(jetbrains.mps.coderules.runtime)
@@ -75,6 +76,7 @@
+
diff --git a/samples/mpscore/languages/jetbrains.mps.baseLanguageExt/models/jetbrains.mps.baseLanguageExt.types.mps b/samples/mpscore/languages/jetbrains.mps.baseLanguageExt/models/jetbrains.mps.baseLanguageExt.types.mps
index 3bb1fa91..ef06b14f 100644
--- a/samples/mpscore/languages/jetbrains.mps.baseLanguageExt/models/jetbrains.mps.baseLanguageExt.types.mps
+++ b/samples/mpscore/languages/jetbrains.mps.baseLanguageExt/models/jetbrains.mps.baseLanguageExt.types.mps
@@ -32,6 +32,7 @@
+
@@ -1946,9 +1947,9 @@
-
-
-
+
+
+
@@ -38078,9 +38079,9 @@
-
-
-
+
+
+
diff --git a/samples/mpscore/solutions/samples.mpscore.build/models/samples.mpscore.build.mps b/samples/mpscore/solutions/samples.mpscore.build/models/samples.mpscore.build.mps
index 06d8d2db..f85398d5 100644
--- a/samples/mpscore/solutions/samples.mpscore.build/models/samples.mpscore.build.mps
+++ b/samples/mpscore/solutions/samples.mpscore.build/models/samples.mpscore.build.mps
@@ -347,6 +347,11 @@
+
+
+
+
+