diff --git a/.mps/modules.xml b/.mps/modules.xml
index 82df3a3a..048bb6e3 100644
--- a/.mps/modules.xml
+++ b/.mps/modules.xml
@@ -7,23 +7,24 @@
-
-
-
-
-
+
+
+
+
+
+
-
-
-
-
-
-
+
+
+
+
+
+
diff --git a/languages/jetbrains.mps.lang.typesystem2/generator/template/main@generator.mps b/languages/jetbrains.mps.lang.typesystem2/generator/template/main@generator.mps
index f83d6dcd..f11e2cf5 100644
--- a/languages/jetbrains.mps.lang.typesystem2/generator/template/main@generator.mps
+++ b/languages/jetbrains.mps.lang.typesystem2/generator/template/main@generator.mps
@@ -13,7 +13,6 @@
-
@@ -26,6 +25,7 @@
+
@@ -1938,7 +1938,7 @@
-
+
@@ -1987,8 +1987,8 @@
-
-
+
+
@@ -2086,7 +2086,7 @@
-
+
@@ -2135,8 +2135,8 @@
-
-
+
+
@@ -2234,7 +2234,7 @@
-
+
@@ -2283,8 +2283,8 @@
-
-
+
+
@@ -2382,7 +2382,7 @@
-
+
@@ -2431,8 +2431,8 @@
-
-
+
+
@@ -2495,7 +2495,7 @@
-
+
@@ -2915,7 +2915,7 @@
-
+
@@ -3235,8 +3235,8 @@
-
-
+
+
@@ -3323,8 +3323,8 @@
-
-
+
+
@@ -3384,8 +3384,8 @@
-
-
+
+
@@ -3604,7 +3604,7 @@
-
+
@@ -3613,7 +3613,7 @@
-
+
@@ -3625,7 +3625,7 @@
-
+
@@ -3685,7 +3685,7 @@
-
+
@@ -4293,7 +4293,7 @@
-
+
@@ -4482,7 +4482,7 @@
-
+
@@ -4538,7 +4538,7 @@
-
+
@@ -4651,7 +4651,7 @@
-
+
@@ -4764,7 +4764,7 @@
-
+
@@ -4911,12 +4911,12 @@
-
+
-
+
-
-
+
+
@@ -6955,8 +6955,8 @@
-
-
+
+
@@ -7444,7 +7444,7 @@
-
+
@@ -7786,7 +7786,7 @@
-
+
diff --git a/languages/jetbrains.mps.lang.typesystem2/jetbrains.mps.lang.typesystem2.mpl b/languages/jetbrains.mps.lang.typesystem2/jetbrains.mps.lang.typesystem2.mpl
index aee398df..d0d6a0aa 100644
--- a/languages/jetbrains.mps.lang.typesystem2/jetbrains.mps.lang.typesystem2.mpl
+++ b/languages/jetbrains.mps.lang.typesystem2/jetbrains.mps.lang.typesystem2.mpl
@@ -19,6 +19,7 @@
7866978e-a0f0-4cc7-81bc-4d213d9375e1(jetbrains.mps.lang.smodel)
6354ebe7-c22a-4a0f-ac54-50b52ab9b065(JDK)
26e8f4ce-2a35-4f44-8065-e5ba154b18e9(jetbrains.mps.lang.typesystem2.runtime)
+ ff6372a2-2f45-4ec3-952b-02581666015f(jetbrains.mps.lang.typesystem2.template)
ed6d7656-532c-4bc2-81d1-af945aeb8280(jetbrains.mps.baseLanguage.blTypes)
@@ -66,6 +67,7 @@
2d3c70e9-aab2-4870-8d8d-6036800e4103(jetbrains.mps.kernel)
c4803b19-6d89-4a3b-bf82-390769514add(jetbrains.mps.lang.typesystem2)
c72da2b9-7cce-4447-8389-f407dc1158b7(jetbrains.mps.lang.structure)
+ ff6372a2-2f45-4ec3-952b-02581666015f(jetbrains.mps.lang.typesystem2.template)
daafa647-f1f7-4b0b-b096-69cd7c8408c0(jetbrains.mps.baseLanguage.regexp)
diff --git a/languages/jetbrains.mps.lang.typesystem2/languageModels/typesystem.mps b/languages/jetbrains.mps.lang.typesystem2/languageModels/typesystem.mps
index 5279b128..28d77d4c 100644
--- a/languages/jetbrains.mps.lang.typesystem2/languageModels/typesystem.mps
+++ b/languages/jetbrains.mps.lang.typesystem2/languageModels/typesystem.mps
@@ -7,8 +7,8 @@
-
+
@@ -56,7 +56,7 @@
-
+
@@ -358,7 +358,7 @@
-
+
@@ -497,7 +497,7 @@
-
+
@@ -648,8 +648,8 @@
-
-
+
+
@@ -706,8 +706,8 @@
-
-
+
+
@@ -750,8 +750,8 @@
-
-
+
+
@@ -794,8 +794,8 @@
-
-
+
+
diff --git a/languages/jetbrains.mps.lang.typesystem2/runtime/jetbrains.mps.lang.typesystem2.runtime.msd b/languages/jetbrains.mps.lang.typesystem2/runtime/jetbrains.mps.lang.typesystem2.runtime.msd
index 11b44a0a..f723c303 100644
--- a/languages/jetbrains.mps.lang.typesystem2/runtime/jetbrains.mps.lang.typesystem2.runtime.msd
+++ b/languages/jetbrains.mps.lang.typesystem2/runtime/jetbrains.mps.lang.typesystem2.runtime.msd
@@ -8,7 +8,6 @@
6354ebe7-c22a-4a0f-ac54-50b52ab9b065(JDK)
- 6ed54515-acc8-4d1e-a16c-9fd6cfe951ea(MPS.Core)
a5478664-6b44-4c62-a9f7-434f8aa57eee(jetbrains.mps.logic.runtime)
7526e0cf-1ce7-46f8-a555-9eca1e06c23b(jetbrains.mps.unification.tree)
f3061a53-9226-4cc5-a443-f952ceaf5816(jetbrains.mps.baseLanguage)
@@ -19,12 +18,10 @@
fbc25dd2-5da4-483a-8b19-70928e1b62d7(jetbrains.mps.devkit.general-purpose)
- 2677cb18-f558-4e33-bc38-a5139cee06dc(jetbrains.mps.devkit.language-design)
-
@@ -32,28 +29,10 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/languages/jetbrains.mps.lang.typesystem2/runtime/models/jetbrains/mps/lang/typesystem2/runtime/rule.mps b/languages/jetbrains.mps.lang.typesystem2/runtime/models/jetbrains/mps/lang/typesystem2/runtime/rule.mps
index bf974076..633f5c5e 100644
--- a/languages/jetbrains.mps.lang.typesystem2/runtime/models/jetbrains/mps/lang/typesystem2/runtime/rule.mps
+++ b/languages/jetbrains.mps.lang.typesystem2/runtime/models/jetbrains/mps/lang/typesystem2/runtime/rule.mps
@@ -9,15 +9,9 @@
-
-
-
-
-
-
diff --git a/languages/jetbrains.mps.lang.typesystem2/runtime/models/jetbrains/mps/lang/typesystem2/runtime/template.mps b/languages/jetbrains.mps.lang.typesystem2/runtime/models/jetbrains/mps/lang/typesystem2/runtime/template.mps
deleted file mode 100644
index 5fc80393..00000000
--- a/languages/jetbrains.mps.lang.typesystem2/runtime/models/jetbrains/mps/lang/typesystem2/runtime/template.mps
+++ /dev/null
@@ -1,1216 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/languages/jetbrains.mps.lang.typesystem2/runtime/models/jetbrains/mps/lang/typesystem2/runtime/util.mps b/languages/jetbrains.mps.lang.typesystem2/runtime/models/jetbrains/mps/lang/typesystem2/runtime/util.mps
index f332eda0..7e5d5a1c 100644
--- a/languages/jetbrains.mps.lang.typesystem2/runtime/models/jetbrains/mps/lang/typesystem2/runtime/util.mps
+++ b/languages/jetbrains.mps.lang.typesystem2/runtime/models/jetbrains/mps/lang/typesystem2/runtime/util.mps
@@ -2,19 +2,14 @@
-
-
-
-
-
@@ -43,7 +38,6 @@
-
@@ -131,7 +125,6 @@
-
@@ -232,63 +225,11 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -832,306 +773,6 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -1814,7 +1455,7 @@
-
+
@@ -2181,16 +1822,8 @@
-
-
-
-
-
-
-
-
-
-
+
+
diff --git a/languages/jetbrains.mps.lang.typesystem2/sandbox/jetbrains.mps.lang.typesystem2.samplechecker.runner/samplechecker.runner.iml b/languages/jetbrains.mps.lang.typesystem2/sandbox/jetbrains.mps.lang.typesystem2.samplechecker.runner/samplechecker.runner.iml
index b5a12c25..8ff3eeaf 100644
--- a/languages/jetbrains.mps.lang.typesystem2/sandbox/jetbrains.mps.lang.typesystem2.samplechecker.runner/samplechecker.runner.iml
+++ b/languages/jetbrains.mps.lang.typesystem2/sandbox/jetbrains.mps.lang.typesystem2.samplechecker.runner/samplechecker.runner.iml
@@ -12,5 +12,6 @@
+
\ No newline at end of file
diff --git a/languages/jetbrains.mps.lang.typesystem2/sandbox/jetbrains.mps.lang.typesystem2.samplechecker/jetbrains.mps.lang.typesystem2.samplechecker.msd b/languages/jetbrains.mps.lang.typesystem2/sandbox/jetbrains.mps.lang.typesystem2.samplechecker/jetbrains.mps.lang.typesystem2.samplechecker.msd
index 56c9175e..afb3a4d5 100644
--- a/languages/jetbrains.mps.lang.typesystem2/sandbox/jetbrains.mps.lang.typesystem2.samplechecker/jetbrains.mps.lang.typesystem2.samplechecker.msd
+++ b/languages/jetbrains.mps.lang.typesystem2/sandbox/jetbrains.mps.lang.typesystem2.samplechecker/jetbrains.mps.lang.typesystem2.samplechecker.msd
@@ -15,6 +15,7 @@
35320f26-77cb-4c55-be9f-a97a27770af1(jetbrains.mps.logic)
f3061a53-9226-4cc5-a443-f952ceaf5816(jetbrains.mps.baseLanguage)
b984ee52-f34d-4b6d-8812-866c1d3eae31(jetbrains.mps.jchr.runtime)
+ ff6372a2-2f45-4ec3-952b-02581666015f(jetbrains.mps.lang.typesystem2.template)
f3061a53-9226-4cc5-a443-f952ceaf5816(jetbrains.mps.baseLanguage)
diff --git a/languages/jetbrains.mps.lang.typesystem2/sandbox/jetbrains.mps.lang.typesystem2.sampleplugin/jetbrains.mps.lang.typesystem2.sampleplugin.msd b/languages/jetbrains.mps.lang.typesystem2/sandbox/jetbrains.mps.lang.typesystem2.sampleplugin/jetbrains.mps.lang.typesystem2.sampleplugin.msd
index c00c50e4..3037fbeb 100644
--- a/languages/jetbrains.mps.lang.typesystem2/sandbox/jetbrains.mps.lang.typesystem2.sampleplugin/jetbrains.mps.lang.typesystem2.sampleplugin.msd
+++ b/languages/jetbrains.mps.lang.typesystem2/sandbox/jetbrains.mps.lang.typesystem2.sampleplugin/jetbrains.mps.lang.typesystem2.sampleplugin.msd
@@ -23,6 +23,7 @@
6ed54515-acc8-4d1e-a16c-9fd6cfe951ea(MPS.Core)
7526e0cf-1ce7-46f8-a555-9eca1e06c23b(jetbrains.mps.unification.tree)
5b1f863d-65a0-41a6-a801-33896be24202(jetbrains.mps.ide.editor)
+ ff6372a2-2f45-4ec3-952b-02581666015f(jetbrains.mps.lang.typesystem2.template)
f3061a53-9226-4cc5-a443-f952ceaf5816(jetbrains.mps.baseLanguage)
diff --git a/languages/jetbrains.mps.lang.typesystem2/sandbox/jetbrains.mps.lang.typesystem2.sampleplugin/models/jetbrains/mps/lang/typesystem2/sampleplugin/plugin.mps b/languages/jetbrains.mps.lang.typesystem2/sandbox/jetbrains.mps.lang.typesystem2.sampleplugin/models/jetbrains/mps/lang/typesystem2/sampleplugin/plugin.mps
index 461c353c..66f51e14 100644
--- a/languages/jetbrains.mps.lang.typesystem2/sandbox/jetbrains.mps.lang.typesystem2.sampleplugin/models/jetbrains/mps/lang/typesystem2/sampleplugin/plugin.mps
+++ b/languages/jetbrains.mps.lang.typesystem2/sandbox/jetbrains.mps.lang.typesystem2.sampleplugin/models/jetbrains/mps/lang/typesystem2/sampleplugin/plugin.mps
@@ -20,7 +20,6 @@
-
@@ -56,6 +55,7 @@
+
@@ -432,7 +432,7 @@
-
+
@@ -1240,7 +1240,7 @@
-
+
@@ -1267,7 +1267,7 @@
-
+
@@ -1280,14 +1280,14 @@
-
+
-
+
@@ -2531,8 +2531,8 @@
-
-
+
+
diff --git a/languages/jetbrains.mps.lang.typesystem2/template/jetbrains.mps.lang.typesystem2.template.msd b/languages/jetbrains.mps.lang.typesystem2/template/jetbrains.mps.lang.typesystem2.template.msd
new file mode 100644
index 00000000..54ffa3cd
--- /dev/null
+++ b/languages/jetbrains.mps.lang.typesystem2/template/jetbrains.mps.lang.typesystem2.template.msd
@@ -0,0 +1,35 @@
+
+
+
+
+
+
+
+
+
+ 26e8f4ce-2a35-4f44-8065-e5ba154b18e9(jetbrains.mps.lang.typesystem2.runtime)
+ ceab5195-25ea-4f22-9b92-103b95ca8c0c(jetbrains.mps.lang.core)
+ 6ed54515-acc8-4d1e-a16c-9fd6cfe951ea(MPS.Core)
+ a5478664-6b44-4c62-a9f7-434f8aa57eee(jetbrains.mps.logic.runtime)
+ 8865b7a8-5271-43d3-884c-6fd1d9cfdd34(MPS.OpenAPI)
+ 6354ebe7-c22a-4a0f-ac54-50b52ab9b065(JDK)
+ 7526e0cf-1ce7-46f8-a555-9eca1e06c23b(jetbrains.mps.unification.tree)
+
+
+ f3061a53-9226-4cc5-a443-f952ceaf5816(jetbrains.mps.baseLanguage)
+ 83888646-71ce-4f1c-9c53-c54016f6ad4f(jetbrains.mps.baseLanguage.collections)
+ 7866978e-a0f0-4cc7-81bc-4d213d9375e1(jetbrains.mps.lang.smodel)
+ daafa647-f1f7-4b0b-b096-69cd7c8408c0(jetbrains.mps.baseLanguage.regexp)
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/languages/jetbrains.mps.lang.typesystem2/template/models/jetbrains/mps/lang/typesystem2/template.mps b/languages/jetbrains.mps.lang.typesystem2/template/models/jetbrains/mps/lang/typesystem2/template.mps
new file mode 100644
index 00000000..799396f1
--- /dev/null
+++ b/languages/jetbrains.mps.lang.typesystem2/template/models/jetbrains/mps/lang/typesystem2/template.mps
@@ -0,0 +1,1567 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/languages/jetbrains.mps.logic/jetbrains.mps.logic.mpl b/languages/jetbrains.mps.logic/jetbrains.mps.logic.mpl
index 5c05eeeb..a9297fc3 100644
--- a/languages/jetbrains.mps.logic/jetbrains.mps.logic.mpl
+++ b/languages/jetbrains.mps.logic/jetbrains.mps.logic.mpl
@@ -37,6 +37,7 @@
+
@@ -77,6 +78,7 @@
e39e4a59-8cb6-498e-860e-8fa8361c0d90(jetbrains.mps.baseLanguage.scopes)
ceab5195-25ea-4f22-9b92-103b95ca8c0c(jetbrains.mps.lang.core)
a5478664-6b44-4c62-a9f7-434f8aa57eee(jetbrains.mps.logic.runtime)
+ 894463aa-8754-49c0-bf4b-6a32af66b376(jetbrains.mps.jchr)
daafa647-f1f7-4b0b-b096-69cd7c8408c0(jetbrains.mps.baseLanguage.regexp)
@@ -124,6 +126,7 @@
f3061a53-9226-4cc5-a443-f952ceaf5816(jetbrains.mps.baseLanguage)
+ 894463aa-8754-49c0-bf4b-6a32af66b376(jetbrains.mps.jchr)
diff --git a/languages/jetbrains.mps.logic/languageModels/typesystem.mps b/languages/jetbrains.mps.logic/languageModels/typesystem.mps
index 6c76fcb7..20444b5f 100644
--- a/languages/jetbrains.mps.logic/languageModels/typesystem.mps
+++ b/languages/jetbrains.mps.logic/languageModels/typesystem.mps
@@ -10,7 +10,10 @@
-
+
+
+
+
@@ -21,15 +24,24 @@
+
+
+
+
+
+
+
+
+
@@ -106,6 +118,18 @@
+
+
+
+
+
+
+
+
+
+
+
+
@@ -206,5 +230,66 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/solutions/jetbrains.mps.typechecking.rules/jetbrains.mps.typechecking.rules.msd b/solutions/jetbrains.mps.typechecking.rules/jetbrains.mps.typechecking.rules.msd
index 07abac29..91382715 100644
--- a/solutions/jetbrains.mps.typechecking.rules/jetbrains.mps.typechecking.rules.msd
+++ b/solutions/jetbrains.mps.typechecking.rules/jetbrains.mps.typechecking.rules.msd
@@ -8,6 +8,7 @@
26e8f4ce-2a35-4f44-8065-e5ba154b18e9(jetbrains.mps.lang.typesystem2.runtime)
+ ff6372a2-2f45-4ec3-952b-02581666015f(jetbrains.mps.lang.typesystem2.template)
f2801650-65d5-424e-bb1b-463a8781b786(jetbrains.mps.baseLanguage.javadoc)
diff --git a/solutions/jetbrains.mps.typechecking.rules/models/jetbrains/mps/typechecking/rule/collection.mps b/solutions/jetbrains.mps.typechecking.rules/models/jetbrains/mps/typechecking/rule/collection.mps
index 641c735d..96ccb958 100644
--- a/solutions/jetbrains.mps.typechecking.rules/models/jetbrains/mps/typechecking/rule/collection.mps
+++ b/solutions/jetbrains.mps.typechecking.rules/models/jetbrains/mps/typechecking/rule/collection.mps
@@ -7,7 +7,7 @@
-
+
@@ -272,7 +272,7 @@
-
+
@@ -285,7 +285,7 @@
-
+
@@ -306,7 +306,7 @@
-
+
@@ -334,7 +334,7 @@
-
+
@@ -344,13 +344,13 @@
-
+
-
+
@@ -434,7 +434,7 @@
-
+
@@ -460,7 +460,7 @@
-
+
@@ -503,7 +503,7 @@
-
+
@@ -588,7 +588,7 @@
-
+
@@ -598,13 +598,13 @@
-
+
-
+
@@ -618,7 +618,7 @@
-
+
@@ -659,7 +659,7 @@
-
+
@@ -779,7 +779,7 @@
-
+
@@ -800,7 +800,7 @@
-
+
@@ -820,7 +820,7 @@
-
+
@@ -831,7 +831,7 @@
-
+
@@ -840,7 +840,7 @@
-
+
@@ -858,7 +858,7 @@
-
+
@@ -873,7 +873,7 @@
-
+
@@ -907,7 +907,7 @@
-
+
@@ -918,7 +918,7 @@
-
+
diff --git a/solutions/jetbrains.mps.typechecking.rules/models/jetbrains/mps/typechecking/rule/generator.mps b/solutions/jetbrains.mps.typechecking.rules/models/jetbrains/mps/typechecking/rule/generator.mps
index 0ccbe458..4cc50115 100644
--- a/solutions/jetbrains.mps.typechecking.rules/models/jetbrains/mps/typechecking/rule/generator.mps
+++ b/solutions/jetbrains.mps.typechecking.rules/models/jetbrains/mps/typechecking/rule/generator.mps
@@ -8,9 +8,9 @@
-
+
@@ -333,7 +333,7 @@
-
+
@@ -931,7 +931,7 @@
-
+
@@ -956,7 +956,7 @@
-
+
@@ -965,7 +965,7 @@
-
+
@@ -1034,7 +1034,7 @@
-
+
@@ -1143,7 +1143,7 @@
-
+
@@ -1191,7 +1191,7 @@
-
+
@@ -1204,7 +1204,7 @@
-
+
@@ -1285,7 +1285,7 @@
-
+