diff --git a/build.gradle b/build.gradle
index 64f5adbb..a3589eaa 100644
--- a/build.gradle
+++ b/build.gradle
@@ -72,8 +72,7 @@ def allInitDependencies = [
'coderules:solutions:jetbrains.mps.logic.reactor:copyDependencies',
'coderules:solutions:jetbrains.mps.logic.test:copyDependencies',
'coderules:solutions:jetbrains.mps.coderules.typechecking:copyDependencies',
- 'coderules:solutions:jetbrains.mps.coderules:copyDependencies',
- 'coderules:solutions:jetbrains.mps.coderules.ideaplugin:makeDependencies' ]
+ 'coderules:solutions:jetbrains.mps.coderules:copyDependencies' ]
task setup(dependsOn: allInitDependencies) {
doLast {
diff --git a/build.xml b/build.xml
index 65e7f871..c3700c6c 100644
--- a/build.xml
+++ b/build.xml
@@ -48,23 +48,34 @@
+
+
+
+
-
+
+
+
+
+
+
+
+
-
+
-
+
@@ -833,6 +844,7 @@
+
@@ -1513,30 +1525,41 @@
+
+
+
+
-
+
+
+
+
+
+
+
+
-
+
-
+
-
+
@@ -1563,6 +1586,7 @@
+
@@ -2334,6 +2358,7 @@
+
@@ -2713,30 +2738,41 @@
+
+
+
+
-
+
+
+
+
+
+
+
+
-
+
-
+
-
+
@@ -2763,6 +2799,7 @@
+
@@ -3699,7 +3736,7 @@
-
+
@@ -3863,17 +3900,15 @@
-
-
-
-
+
+
@@ -3881,6 +3916,8 @@
+
+
@@ -3908,7 +3945,7 @@
-
+
@@ -4736,7 +4773,85 @@
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -4769,9 +4884,7 @@
-
-
@@ -4811,6 +4924,7 @@
+
@@ -5772,7 +5886,7 @@
-
+
@@ -5797,9 +5911,6 @@
-
-
-
@@ -5809,6 +5920,10 @@
+
+
+
+
@@ -5828,11 +5943,12 @@
+
-
+
@@ -5865,7 +5981,6 @@
-
@@ -5889,6 +6004,7 @@
+
@@ -6233,12 +6349,8 @@
-
+
-
-
-
-
@@ -6248,6 +6360,8 @@
+
+
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 61398b97..71238f69 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
@@ -456,7 +456,7 @@
-
+
@@ -1714,6 +1714,11 @@
+
+
+
+
+
@@ -3379,6 +3384,11 @@
+
+
+
+
+
@@ -3801,8 +3811,8 @@
-
-
+
+
@@ -4083,8 +4093,8 @@
-
-
+
+
diff --git a/coderules/solutions/jetbrains.mps.coderules.ideaplugin/build.gradle b/coderules/solutions/jetbrains.mps.coderules.ideaplugin/build.gradle
deleted file mode 100644
index befe08cf..00000000
--- a/coderules/solutions/jetbrains.mps.coderules.ideaplugin/build.gradle
+++ /dev/null
@@ -1,12 +0,0 @@
-configurations {
- codeRules
-}
-
-dependencies {
-}
-
-task makeDependencies (type: JavaCompile) {
- source = fileTree(dir: 'source', include: '**/*.java')
- destinationDirectory = file('classes')
- classpath = fileTree(dir: '../../../MPS_HOME/lib', include: '**/*.jar')
-}
diff --git a/coderules/solutions/jetbrains.mps.coderules.ideaplugin/jetbrains.mps.coderules.ideaplugin.msd b/coderules/solutions/jetbrains.mps.coderules.ideaplugin/jetbrains.mps.coderules.ideaplugin.msd
index cbfae1ca..ce49fda2 100644
--- a/coderules/solutions/jetbrains.mps.coderules.ideaplugin/jetbrains.mps.coderules.ideaplugin.msd
+++ b/coderules/solutions/jetbrains.mps.coderules.ideaplugin/jetbrains.mps.coderules.ideaplugin.msd
@@ -1,5 +1,5 @@
-
+
@@ -9,7 +9,7 @@
-
+
diff --git a/coderules/solutions/jetbrains.mps.coderules.ideaplugin/models/jetbrains.mps.coderules.ideaplugin.mps b/coderules/solutions/jetbrains.mps.coderules.ideaplugin/models/jetbrains.mps.coderules.ideaplugin.mps
index 734031ba..20e5f30b 100644
--- a/coderules/solutions/jetbrains.mps.coderules.ideaplugin/models/jetbrains.mps.coderules.ideaplugin.mps
+++ b/coderules/solutions/jetbrains.mps.coderules.ideaplugin/models/jetbrains.mps.coderules.ideaplugin.mps
@@ -1,7 +1,6 @@
-
@@ -24,6 +23,8 @@
+
+
@@ -34,25 +35,11 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -67,9 +54,6 @@
-
-
-
@@ -77,14 +61,6 @@
-
-
-
-
-
-
-
-
@@ -104,43 +80,28 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -166,25 +127,19 @@
-
-
-
-
-
-
-
+
@@ -198,66 +153,35 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -275,2594 +199,7 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/coderules/solutions/jetbrains.mps.coderules.ideaplugin/source.caches/deps.cp b/coderules/solutions/jetbrains.mps.coderules.ideaplugin/source.caches/deps.cp
deleted file mode 100644
index 0280e3f4..00000000
--- a/coderules/solutions/jetbrains.mps.coderules.ideaplugin/source.caches/deps.cp
+++ /dev/null
@@ -1,17 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/coderules/solutions/jetbrains.mps.coderules.ideaplugin/source.caches/jetbrains/mps/coderules/ideaplugin/dependencies b/coderules/solutions/jetbrains.mps.coderules.ideaplugin/source.caches/jetbrains/mps/coderules/ideaplugin/dependencies
deleted file mode 100644
index 0280e3f4..00000000
--- a/coderules/solutions/jetbrains.mps.coderules.ideaplugin/source.caches/jetbrains/mps/coderules/ideaplugin/dependencies
+++ /dev/null
@@ -1,17 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/coderules/solutions/jetbrains.mps.coderules.ideaplugin/source.caches/jetbrains/mps/coderules/ideaplugin/generated b/coderules/solutions/jetbrains.mps.coderules.ideaplugin/source.caches/jetbrains/mps/coderules/ideaplugin/generated
deleted file mode 100644
index bd2f5ba1..00000000
--- a/coderules/solutions/jetbrains.mps.coderules.ideaplugin/source.caches/jetbrains/mps/coderules/ideaplugin/generated
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
-
-
-
diff --git a/coderules/solutions/jetbrains.mps.coderules.ideaplugin/source/jetbrains/mps/coderules/ideaplugin/CoderulesOptions.java b/coderules/solutions/jetbrains.mps.coderules.ideaplugin/source/jetbrains/mps/coderules/ideaplugin/CoderulesOptions.java
deleted file mode 100644
index 20dab5d3..00000000
--- a/coderules/solutions/jetbrains.mps.coderules.ideaplugin/source/jetbrains/mps/coderules/ideaplugin/CoderulesOptions.java
+++ /dev/null
@@ -1,32 +0,0 @@
-package jetbrains.mps.coderules.ideaplugin;
-
-/*Generated by MPS */
-
-import jetbrains.mps.annotations.GeneratedClass;
-
-@GeneratedClass(node = "r:835f8ea3-a800-4588-a80b-1de6d47c2098(jetbrains.mps.coderules.ideaplugin)/3625063056952761380", model = "r:835f8ea3-a800-4588-a80b-1de6d47c2098(jetbrains.mps.coderules.ideaplugin)")
-public class CoderulesOptions {
- public static final String PREFIX = "mps.coderules.";
-
- public static final String OPTION_PROFILING_ENABLED = PREFIX + "profiling";
-
- public static final Config.Option PROFILING_ENABLED = new Config.Option() {
- @Override
- public Boolean get(Config config) {
- return (Boolean) config.getOption(OPTION_PROFILING_ENABLED);
- }
- };
-
- public static void registerDefaultProviders(Config config) {
- config.registerProvider(Config.Level.USER, PREFIX, (String key) -> {
-
- if (OPTION_PROFILING_ENABLED.equals(key)) {
- return Boolean.valueOf(System.getProperty(OPTION_PROFILING_ENABLED, "false"));
-
- }
-
- return null;
- });
- }
-
-}
diff --git a/coderules/solutions/jetbrains.mps.coderules.ideaplugin/source/jetbrains/mps/coderules/ideaplugin/Config.java b/coderules/solutions/jetbrains.mps.coderules.ideaplugin/source/jetbrains/mps/coderules/ideaplugin/Config.java
deleted file mode 100644
index ffe9663b..00000000
--- a/coderules/solutions/jetbrains.mps.coderules.ideaplugin/source/jetbrains/mps/coderules/ideaplugin/Config.java
+++ /dev/null
@@ -1,249 +0,0 @@
-package jetbrains.mps.coderules.ideaplugin;
-
-/*Generated by MPS */
-
-import jetbrains.mps.annotations.GeneratedClass;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import jetbrains.mps.internal.collections.runtime.MapSequence;
-import jetbrains.mps.internal.collections.runtime.ListSequence;
-import java.util.ArrayList;
-
-/**
- * Represents options as key-value pairs. Supports traditional levels of overrides: default/system/user/ui.
- * Every level allows any number of providers, each responsible for a specific key prefix.
- */
-@GeneratedClass(node = "r:835f8ea3-a800-4588-a80b-1de6d47c2098(jetbrains.mps.coderules.ideaplugin)/8406119028231319109", model = "r:835f8ea3-a800-4588-a80b-1de6d47c2098(jetbrains.mps.coderules.ideaplugin)")
-public class Config {
-
- /**
- * DEFAULT - options built in into code
- * SYSTEM - options delivered with the app
- * USER - options overridden by user
- * UI - options overridden in the UI
- */
- public enum Level {
- DEFAULT(),
- SYSTEM(),
- USER(),
- UI(),
- TEST()
- }
-
- public interface OptionsProvider {
-
- Object getOption(String key);
-
- }
-
- public interface Option {
-
- T get(Config config);
-
- }
-
- private static Config INSTANCE = null;
-
- public static void init() {
- if (INSTANCE == null) {
- INSTANCE = new Config(new EffectiveOptions());
- }
- }
-
- public static void dispose() {
- INSTANCE.clearAll();
- INSTANCE = null;
- }
-
- /**
- * Returns the instance to share the default (hardcoded) options.
- *
- * @deprecated
- */
- @Deprecated
- public static Config getInstance() {
- return INSTANCE;
- }
-
- /**
- * Returns a copy of this instance with the state that is not shared. All updates to either this or the
- * returned instance will not reflect in the other one.
- */
- public Config copy() {
- return new Config(effectiveOptions);
- }
-
- /**
- * Creates new instance with hardcoded default options.
- * Used from tests.
- */
- public static Config create() {
- return new Config(new EffectiveOptions());
- }
-
- /**
- * Used from tests.
- */
- public void reset(Level lvl) {
- this.effectiveOptions = effectiveOptions.reset(lvl);
- }
-
- /**
- * A prefix is defined as a string matching the following RE: "([a-zA-Z0-9]*\.)+" .
- */
- public void registerProvider(Level level, String prefix, OptionsProvider provider) {
- this.effectiveOptions = effectiveOptions.registerProvider(level, prefix, provider);
- }
-
- public void clearProvider(Level lvl, String prefix) {
- this.effectiveOptions = effectiveOptions.clearProvider(lvl, prefix);
- }
-
- public final Object getOption(String key) {
- return effectiveOptions.getOption(key);
- }
-
- protected void clearAll() {
- if (effectiveOptions != null) {
- effectiveOptions.clearAll();
- }
- }
-
- private Config(EffectiveOptions options) {
- this.effectiveOptions = options;
- }
-
- private static class Options {
-
- protected Options() {
- this.prefix2provider = new HashMap<>();
- }
-
- private Options(Options copyFrom) {
- this.prefix2provider = new HashMap(copyFrom.prefix2provider);
- }
-
- protected final Object primGetOption(String key, List allPrefixes) {
- OptionsProvider lookupProvider = lookupProvider(allPrefixes);
- if (lookupProvider != null) {
- Object option = lookupProvider.getOption(key);
- if (option != null) {
- return option;
- }
- }
- return null;
- }
-
- protected Options putProvider(String prefix, OptionsProvider provider) {
- Options newOptions = new Options(this);
- newOptions.prefix2provider.put(prefix, provider);
- return newOptions;
- }
-
- protected Options clearProvider(String prefix) {
- Options newOptions = new Options(this);
- newOptions.prefix2provider.remove(prefix);
- return newOptions;
- }
-
- protected OptionsProvider lookupProvider(List prefixes) {
- for (String p : prefixes) {
- if (prefix2provider.containsKey(p)) {
- return prefix2provider.get(p);
- }
- }
- return null;
- }
-
- private Map prefix2provider;
-
- }
-
- private static class EffectiveOptions {
-
- protected EffectiveOptions() {
- this.allOptions = MapSequence.fromMap(new HashMap());
- for (Config.Level lvl : Config.Level.values()) {
- MapSequence.fromMap(allOptions).put(lvl, new Options());
- }
- }
-
- private EffectiveOptions(EffectiveOptions copyFrom) {
- this.allOptions = new HashMap(copyFrom.allOptions);
- }
-
- protected Object getOption(String key) {
- List allPrefixes = allPrefixes(key);
- for (int i = Config.Level.values().length - 1; i >= 0; i--) {
- Config.Level level = Config.Level.values()[i];
- Object option = check_gqj4j5_a0b0b0f33(MapSequence.fromMap(allOptions).get(level), key, allPrefixes);
- if (option != null) {
- return option;
- }
- }
- return null;
- }
-
- protected final EffectiveOptions reset(Config.Level startFrom) {
- EffectiveOptions newEffOptions = new EffectiveOptions(this);
- for (Config.Level lvl : Config.Level.values()) {
- if (lvl.ordinal() >= startFrom.ordinal()) {
- MapSequence.fromMap(newEffOptions.allOptions).put(lvl, new Options());
- }
- }
- return newEffOptions;
- }
-
- protected EffectiveOptions registerProvider(Config.Level level, String prefix, OptionsProvider provider) {
- EffectiveOptions newEffOptions = new EffectiveOptions(this);
- MapSequence.fromMap(newEffOptions.allOptions).put(level, check_gqj4j5_a0b0j33(MapSequence.fromMap(newEffOptions.allOptions).get(level), prefix, provider));
- return newEffOptions;
- }
-
- protected EffectiveOptions clearProvider(Config.Level level, String prefix) {
- EffectiveOptions newEffOptions = new EffectiveOptions(this);
- MapSequence.fromMap(newEffOptions.allOptions).put(level, check_gqj4j5_a0b0l33(MapSequence.fromMap(newEffOptions.allOptions).get(level), prefix));
- return newEffOptions;
- }
-
- protected void clearAll() {
- MapSequence.fromMap(allOptions).clear();
- }
-
- private List allPrefixes(String key) {
- List result = ListSequence.fromList(new ArrayList());
- while (key.length() > 0) {
- int lastDot = key.lastIndexOf(".");
- if (lastDot < 0) {
- break;
- }
- ListSequence.fromList(result).addElement(key.substring(0, lastDot + 1));
- key = key.substring(0, lastDot);
- }
- return result;
- }
-
- private Map allOptions;
- private static Object check_gqj4j5_a0b0b0f33(Options checkedDotOperand, String key, List allPrefixes) {
- if (null != checkedDotOperand) {
- return checkedDotOperand.primGetOption(key, allPrefixes);
- }
- return null;
- }
- private static Options check_gqj4j5_a0b0j33(Options checkedDotOperand, String prefix, OptionsProvider provider) {
- if (null != checkedDotOperand) {
- return checkedDotOperand.putProvider(prefix, provider);
- }
- return null;
- }
- private static Options check_gqj4j5_a0b0l33(Options checkedDotOperand, String prefix) {
- if (null != checkedDotOperand) {
- return checkedDotOperand.clearProvider(prefix);
- }
- return null;
- }
- }
-
- private EffectiveOptions effectiveOptions;
-}
diff --git a/coderules/solutions/jetbrains.mps.coderules.ideaplugin/source/jetbrains/mps/coderules/ideaplugin/TypecheckingOptions.java b/coderules/solutions/jetbrains.mps.coderules.ideaplugin/source/jetbrains/mps/coderules/ideaplugin/TypecheckingOptions.java
deleted file mode 100644
index 4858b225..00000000
--- a/coderules/solutions/jetbrains.mps.coderules.ideaplugin/source/jetbrains/mps/coderules/ideaplugin/TypecheckingOptions.java
+++ /dev/null
@@ -1,133 +0,0 @@
-package jetbrains.mps.coderules.ideaplugin;
-
-/*Generated by MPS */
-
-import jetbrains.mps.annotations.GeneratedClass;
-
-@GeneratedClass(node = "r:835f8ea3-a800-4588-a80b-1de6d47c2098(jetbrains.mps.coderules.ideaplugin)/8406119028234017931", model = "r:835f8ea3-a800-4588-a80b-1de6d47c2098(jetbrains.mps.coderules.ideaplugin)")
-public class TypecheckingOptions {
- public static final String PREFIX = "mps.coderules.typechecking.";
-
- public static final String OPTION_TYPECHECKING_ENABLED = PREFIX + "enabled";
- public static final String OPTION_TYPECHECKING_WATCHING = PREFIX + "watching";
- public static final String OPTION_TYPECHECKING_REPORTING = PREFIX + "report";
- public static final String OPTION_TYPECHECKING_TRACE = PREFIX + "trace";
-
- public static final Config.Option TYPECHECKING_ENABLED = new Config.Option() {
- @Override
- public Boolean get(Config config) {
- return (Boolean) config.getOption(OPTION_TYPECHECKING_ENABLED);
- }
- };
- public static final Config.Option TYPECHECKING_WATCHING = new Config.Option() {
- @Override
- public Boolean get(Config config) {
- return (Boolean) config.getOption(OPTION_TYPECHECKING_WATCHING);
- }
- };
- public static final Config.Option TYPECHECKING_REPORTING = new Config.Option() {
- @Override
- public Boolean get(Config config) {
- return (Boolean) config.getOption(OPTION_TYPECHECKING_REPORTING);
- }
- };
- public static final Config.Option TYPECHECKING_TRACE = new Config.Option() {
- @Override
- public Boolean get(Config config) {
- return (Boolean) config.getOption(OPTION_TYPECHECKING_TRACE);
- }
- };
- public static final Config.Option COLLECT_TRACES = new Config.Option() {
- @Override
- public Boolean get(Config config) {
- if (Boolean.TRUE != config.getOption(OPTION_TYPECHECKING_REPORTING)) {
- return Boolean.FALSE;
- }
- return (Boolean) config.getOption(OPTION_TYPECHECKING_TRACE);
- }
- };
-
- private static Config USER_CONFIG;
-
- private TypecheckingOptions() {
- }
-
- public static Config getUserConfig() {
- if (USER_CONFIG == null) {
- USER_CONFIG = Config.create();
- registerDefaultProviders(USER_CONFIG);
- }
- return USER_CONFIG;
- }
-
- public static Config getUiConfig() {
- Config config = TypecheckingOptions.getUserConfig().copy();
- registerUiProvider(config);
- return config;
- }
-
- private static void registerUiProvider(Config config) {
-
- config.registerProvider(Config.Level.UI, PREFIX, (String key) -> {
-
- TypecheckingSettings settings = TypecheckingSettings.getInstace();
- if (OPTION_TYPECHECKING_ENABLED.equals(key)) {
- return settings.isTypecheckingEnabled();
- }
-
- if (OPTION_TYPECHECKING_WATCHING.equals(key)) {
- return settings.isWatchingEnabled();
- }
-
- if (OPTION_TYPECHECKING_REPORTING.equals(key)) {
- return settings.isReportingEnabled();
- }
-
- if (OPTION_TYPECHECKING_TRACE.equals(key)) {
- return settings.isTracingEnabled();
- }
-
- return null;
- });
-
- config.registerProvider(Config.Level.USER, CoderulesOptions.PREFIX, (String key) -> {
- TypecheckingSettings settings = TypecheckingSettings.getInstace();
- if (CoderulesOptions.OPTION_PROFILING_ENABLED.equals(key)) {
- return settings.isProfilingEnabled();
- }
-
- return null;
- });
-
- }
-
- private static void registerDefaultProviders(Config config) {
- CoderulesOptions.registerDefaultProviders(config);
-
- config.registerProvider(Config.Level.USER, PREFIX, (String key) -> {
-
- if (OPTION_TYPECHECKING_ENABLED.equals(key)) {
- return Boolean.valueOf(System.getProperty(OPTION_TYPECHECKING_ENABLED, "false"));
-
- }
-
- if (OPTION_TYPECHECKING_WATCHING.equals(key)) {
- return Boolean.valueOf(System.getProperty(OPTION_TYPECHECKING_WATCHING, "false"));
-
- }
-
- if (OPTION_TYPECHECKING_REPORTING.equals(key)) {
- return Boolean.valueOf(System.getProperty(OPTION_TYPECHECKING_REPORTING, "false"));
-
- }
-
- if (OPTION_TYPECHECKING_TRACE.equals(key)) {
- return Boolean.valueOf(System.getProperty(OPTION_TYPECHECKING_TRACE, "false"));
-
- }
-
- return null;
- });
- }
-
-}
diff --git a/coderules/solutions/jetbrains.mps.coderules.ideaplugin/source/jetbrains/mps/coderules/ideaplugin/TypecheckingSettings.java b/coderules/solutions/jetbrains.mps.coderules.ideaplugin/source/jetbrains/mps/coderules/ideaplugin/TypecheckingSettings.java
deleted file mode 100644
index 45186096..00000000
--- a/coderules/solutions/jetbrains.mps.coderules.ideaplugin/source/jetbrains/mps/coderules/ideaplugin/TypecheckingSettings.java
+++ /dev/null
@@ -1,94 +0,0 @@
-package jetbrains.mps.coderules.ideaplugin;
-
-/*Generated by MPS */
-
-import com.intellij.openapi.components.Storage;
-import jetbrains.mps.annotations.GeneratedClass;
-import com.intellij.openapi.components.PersistentStateComponent;
-import com.intellij.openapi.application.ApplicationManager;
-import org.jetbrains.annotations.Nullable;
-import org.jetbrains.annotations.NotNull;
-
-@com.intellij.openapi.components.State(name = "TypecheckingSettings", storages = @Storage(value = "typecheckingSettings.xml")
-)
-@GeneratedClass(node = "r:835f8ea3-a800-4588-a80b-1de6d47c2098(jetbrains.mps.coderules.ideaplugin)/3041510341143971994", model = "r:835f8ea3-a800-4588-a80b-1de6d47c2098(jetbrains.mps.coderules.ideaplugin)")
-public class TypecheckingSettings implements PersistentStateComponent {
-
- public static class State {
- public boolean myIsEnabled;
- public boolean myIsWatching;
- public boolean myIsReporting;
- public boolean myIsTracing;
- public boolean myIsProfiling;
- }
-
- /**
- * Only available in case the plugin is not loaded, that is when the code is loaded from source module
- */
- private static TypecheckingSettings SINGLETON_INSTANCE = new TypecheckingSettings();
-
- private State myState = new State();
-
- public TypecheckingSettings() {
- }
-
- public static TypecheckingSettings getInstace() {
- TypecheckingSettings service = ApplicationManager.getApplication().getService(TypecheckingSettings.class);
- if (service == null) {
- // workaround for running from sources
- return SINGLETON_INSTANCE;
- }
- return service;
- }
-
- @Nullable
- @Override
- public State getState() {
- return myState;
- }
-
- @Override
- public void loadState(@NotNull State state) {
- this.myState = state;
- }
-
- public boolean isTypecheckingEnabled() {
- return myState.myIsEnabled;
- }
-
- public boolean setTypecheckingEnabled(boolean yes) {
- return myState.myIsEnabled = yes;
- }
-
- public boolean isWatchingEnabled() {
- return myState.myIsWatching;
- }
-
- public boolean setWatchingEnabled(boolean yes) {
- return myState.myIsWatching = yes;
- }
-
- public boolean isReportingEnabled() {
- return myState.myIsReporting;
- }
-
- public boolean setReportingEnabled(boolean yes) {
- return myState.myIsReporting = yes;
- }
-
- public boolean isTracingEnabled() {
- return myState.myIsTracing;
- }
-
- public boolean setTracingEnabled(boolean yes) {
- return myState.myIsTracing = yes;
- }
-
- public boolean isProfilingEnabled() {
- return myState.myIsProfiling;
- }
-
- public boolean setProfilingEnabled(boolean yes) {
- return myState.myIsProfiling = yes;
- }
-}
diff --git a/coderules/solutions/jetbrains.mps.coderules.ideaplugin/source/jetbrains/mps/coderules/ideaplugin/TypecheckingSettingsPage.java b/coderules/solutions/jetbrains.mps.coderules.ideaplugin/source/jetbrains/mps/coderules/ideaplugin/TypecheckingSettingsPage.java
deleted file mode 100644
index 937a565d..00000000
--- a/coderules/solutions/jetbrains.mps.coderules.ideaplugin/source/jetbrains/mps/coderules/ideaplugin/TypecheckingSettingsPage.java
+++ /dev/null
@@ -1,246 +0,0 @@
-package jetbrains.mps.coderules.ideaplugin;
-
-/*Generated by MPS */
-
-import jetbrains.mps.annotations.GeneratedClass;
-import javax.swing.JPanel;
-import com.intellij.openapi.options.SearchableConfigurable;
-import org.jetbrains.annotations.NotNull;
-import org.jetbrains.annotations.NonNls;
-import com.intellij.openapi.util.NlsContexts;
-import org.jetbrains.annotations.Contract;
-import org.jetbrains.annotations.Nullable;
-import javax.swing.JComponent;
-import com.intellij.openapi.options.ConfigurationException;
-import javax.swing.BoxLayout;
-import com.intellij.ui.components.JBCheckBox;
-import java.awt.event.ItemListener;
-import java.awt.event.ItemEvent;
-import javax.swing.Box;
-import com.intellij.ui.IdeBorderFactory;
-import com.intellij.util.ui.JBUI;
-import javax.swing.JLabel;
-import java.awt.Font;
-import javax.swing.JCheckBox;
-
-@GeneratedClass(node = "r:835f8ea3-a800-4588-a80b-1de6d47c2098(jetbrains.mps.coderules.ideaplugin)/551453226825312425", model = "r:835f8ea3-a800-4588-a80b-1de6d47c2098(jetbrains.mps.coderules.ideaplugin)")
-public class TypecheckingSettingsPage extends JPanel implements SearchableConfigurable {
-
- public TypecheckingSettingsPage() {
- TypecheckingSettings settings = TypecheckingSettings.getInstace();
- init();
- }
-
- @NotNull
- @NonNls
- @Override
- public String getId() {
- return "preferences.typecheckingSettings";
- }
- @NlsContexts.ConfigurableName
- @Contract(pure = true)
- @Override
- public String getDisplayName() {
- return "Typechecking";
- }
- @Nullable
- @Override
- public JComponent createComponent() {
- return this;
- }
- @Override
- public boolean isModified() {
- TypecheckingSettings settings = TypecheckingSettings.getInstace();
- boolean modified = false;
- modified |= settings.isTypecheckingEnabled() != this.isTypecheckingEnabled();
- modified |= settings.isWatchingEnabled() != this.isWatchingEnabled();
- modified |= settings.isReportingEnabled() != this.isReportingEnabled();
- modified |= settings.isTracingEnabled() != this.isTracingEnabled();
- modified |= settings.isProfilingEnabled() != this.isProfilingEnabled();
- return modified;
- }
- @Override
- public void apply() throws ConfigurationException {
- TypecheckingSettings settings = TypecheckingSettings.getInstace();
- settings.setTypecheckingEnabled(this.isTypecheckingEnabled());
- settings.setWatchingEnabled(this.isWatchingEnabled());
- settings.setReportingEnabled(this.isReportingEnabled());
- settings.setTracingEnabled(this.isTracingEnabled());
- settings.setProfilingEnabled(this.isProfilingEnabled());
- }
- @Override
- public void reset() {
- TypecheckingSettings settings = TypecheckingSettings.getInstace();
- this.setTypecheckingEnabled(settings.isTypecheckingEnabled());
- this.setWatchingEnabled(settings.isWatchingEnabled());
- this.setReportingEnabled(settings.isReportingEnabled());
- this.setTracingEnabled(settings.isTracingEnabled());
- this.setProfilingEnabled(settings.isProfilingEnabled());
- }
- private void init() {
- setLayout(new BoxLayout(this, BoxLayout.Y_AXIS));
-
- this.enableTypecheckingCheckbox = new JBCheckBox("Enable experimental typechecking with Coderules");
- this.enableWatchingCheckbox = new JBCheckBox("Watch model changes and collect updates");
- this.enableReportingCheckbox = new JBCheckBox("Report evaluation results");
- this.enableTraceCheckbox = new JBCheckBox("Collect trace events");
- this.enableProfilingCheckbox = new JBCheckBox("Collect profiling data");
-
- ItemListener updater = new ItemListener() {
- @Override
- public void itemStateChanged(ItemEvent e) {
- updateEnabledState();
- }
- };
- enableTypecheckingCheckbox.addItemListener(updater);
- enableWatchingCheckbox.addItemListener(updater);
- enableReportingCheckbox.addItemListener(updater);
-
- {
- JPanel mainPanel = new JPanel();
- mainPanel.setLayout(new BoxLayout(mainPanel, BoxLayout.Y_AXIS));
- mainPanel.add(Box.createHorizontalGlue());
- mainPanel.setBorder(IdeBorderFactory.createTitledBorder("Typechecking", false));
-
- {
- JPanel subpanel = new JPanel();
- subpanel.setLayout(new BoxLayout(subpanel, BoxLayout.Y_AXIS));
- subpanel.add(Box.createVerticalStrut(0));
- subpanel.setBorder(JBUI.Borders.emptyLeft(20));
-
- subpanel.add(this.enableTypecheckingCheckbox);
-
- mainPanel.add(subpanel);
- }
-
- add(mainPanel);
-
- // ----------
-
- JPanel editorPanel = new JPanel();
- editorPanel.setLayout(new BoxLayout(editorPanel, BoxLayout.Y_AXIS));
- editorPanel.add(Box.createHorizontalGlue());
- editorPanel.setBorder(IdeBorderFactory.createTitledBorder("Editor integration", false));
-
- {
- JPanel subpanel = new JPanel();
- subpanel.setLayout(new BoxLayout(subpanel, BoxLayout.Y_AXIS));
- subpanel.add(Box.createVerticalStrut(0));
- subpanel.setBorder(JBUI.Borders.emptyLeft(20));
-
- subpanel.add(this.enableWatchingCheckbox);
-
- editorPanel.add(subpanel);
- }
-
- add(editorPanel);
-
- // ---------
-
- JPanel advancedPanel = new JPanel();
- advancedPanel.setLayout(new BoxLayout(advancedPanel, BoxLayout.Y_AXIS));
- advancedPanel.add(Box.createHorizontalGlue());
- advancedPanel.setBorder(IdeBorderFactory.createTitledBorder("Advanced", false));
-
- {
- JPanel subpanel = new JPanel();
- subpanel.setLayout(new BoxLayout(subpanel, BoxLayout.Y_AXIS));
- subpanel.add(Box.createVerticalStrut(0));
- subpanel.setBorder(JBUI.Borders.emptyLeft(20));
-
- subpanel.add(new JLabel("When evaluating Coderules program:"));
-
- {
- JPanel subsubpanel = new JPanel();
- subsubpanel.setLayout(new BoxLayout(subsubpanel, BoxLayout.Y_AXIS));
- subsubpanel.add(Box.createVerticalStrut(0));
- subsubpanel.setBorder(JBUI.Borders.emptyLeft(20));
-
- subsubpanel.add(this.enableReportingCheckbox);
-
- subsubpanel.add(this.enableTraceCheckbox);
-
- JPanel warnPanel = new JPanel();
- warnPanel.setLayout(new BoxLayout(warnPanel, BoxLayout.Y_AXIS));
- warnPanel.add(Box.createVerticalStrut(5));
- warnPanel.setBorder(JBUI.Borders.emptyLeft(25));
-
- {
- JLabel warnLabel = new JLabel("Using this option may result in excessive memory consumption");
- Font font = warnLabel.getFont();
- warnLabel.setFont(font.deriveFont(font.getSize2D() * 0.9f));
- warnLabel.setEnabled(false);
-
- warnPanel.add(warnLabel);
- }
-
- subsubpanel.add(warnPanel);
-
- subsubpanel.add(this.enableProfilingCheckbox);
-
- subpanel.add(subsubpanel);
- }
-
- advancedPanel.add(subpanel);
- }
-
- add(advancedPanel);
- }
- }
-
- public boolean isTypecheckingEnabled() {
- return enableTypecheckingCheckbox.isSelected();
- }
-
- public boolean isWatchingEnabled() {
- return enableWatchingCheckbox.isSelected();
- }
-
- public boolean isTracingEnabled() {
- return enableTraceCheckbox.isSelected();
- }
-
- public boolean isProfilingEnabled() {
- return enableProfilingCheckbox.isSelected();
- }
-
- public boolean isReportingEnabled() {
- return enableReportingCheckbox.isSelected();
- }
-
- public void setTypecheckingEnabled(boolean yes) {
- this.enableTypecheckingCheckbox.setSelected(yes);
- updateEnabledState();
- }
-
- public void setWatchingEnabled(boolean yes) {
- this.enableWatchingCheckbox.setSelected(yes);
- updateEnabledState();
- }
-
- public void setReportingEnabled(boolean yes) {
- this.enableReportingCheckbox.setSelected(yes);
- }
-
- public void setTracingEnabled(boolean yes) {
- this.enableTraceCheckbox.setSelected(yes);
- }
-
- public void setProfilingEnabled(boolean yes) {
- this.enableProfilingCheckbox.setSelected(yes);
- }
-
- private void updateEnabledState() {
- this.enableWatchingCheckbox.setEnabled(this.enableTypecheckingCheckbox.isSelected());
- this.enableReportingCheckbox.setEnabled(this.enableTypecheckingCheckbox.isSelected());
- this.enableTraceCheckbox.setEnabled(this.enableTypecheckingCheckbox.isSelected() && this.enableReportingCheckbox.isSelected());
- this.enableProfilingCheckbox.setEnabled(this.enableTypecheckingCheckbox.isSelected() && this.enableReportingCheckbox.isSelected());
- }
-
- private JCheckBox enableTypecheckingCheckbox;
- private JCheckBox enableWatchingCheckbox;
- private JCheckBox enableReportingCheckbox;
- private JCheckBox enableTraceCheckbox;
- private JCheckBox enableProfilingCheckbox;
-
-}
diff --git a/coderules/solutions/jetbrains.mps.coderules.ideaplugin/source/jetbrains/mps/coderules/ideaplugin/trace.info b/coderules/solutions/jetbrains.mps.coderules.ideaplugin/source/jetbrains/mps/coderules/ideaplugin/trace.info
deleted file mode 100644
index 36b082db..00000000
--- a/coderules/solutions/jetbrains.mps.coderules.ideaplugin/source/jetbrains/mps/coderules/ideaplugin/trace.info
+++ /dev/null
@@ -1,816 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/coderules/solutions/jetbrains.mps.coderules.ideaplugin/source_off/.keep b/coderules/solutions/jetbrains.mps.coderules.ideaplugin/source_off/.keep
deleted file mode 100644
index 8b137891..00000000
--- a/coderules/solutions/jetbrains.mps.coderules.ideaplugin/source_off/.keep
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/coderules/solutions/jetbrains.mps.coderules.test/models/jetbrains.mps.coderules.plugin@tests.mps b/coderules/solutions/jetbrains.mps.coderules.test/models/jetbrains.mps.coderules.plugin@tests.mps
index 6a9e6015..72636e9e 100644
--- a/coderules/solutions/jetbrains.mps.coderules.test/models/jetbrains.mps.coderules.plugin@tests.mps
+++ b/coderules/solutions/jetbrains.mps.coderules.test/models/jetbrains.mps.coderules.plugin@tests.mps
@@ -11,6 +11,7 @@
+
@@ -129,11 +130,11 @@
-
+
-
-
-
+
+
+
@@ -149,10 +150,10 @@
-
+
-
-
+
+
@@ -198,7 +199,7 @@
-
+
@@ -211,7 +212,7 @@
-
+
@@ -224,7 +225,7 @@
-
+
@@ -244,10 +245,10 @@
-
+
-
-
+
+
@@ -290,7 +291,7 @@
-
+
@@ -304,10 +305,10 @@
-
+
-
-
+
+
@@ -353,7 +354,7 @@
-
+
@@ -366,7 +367,7 @@
-
+
@@ -382,7 +383,7 @@
-
+
@@ -402,10 +403,10 @@
-
+
-
-
+
+
@@ -451,7 +452,7 @@
-
+
@@ -465,10 +466,10 @@
-
+
-
-
+
+
@@ -514,7 +515,7 @@
-
+
@@ -533,10 +534,10 @@
-
+
-
-
+
+
@@ -551,10 +552,10 @@
-
+
-
-
+
+
diff --git a/coderules/solutions/jetbrains.mps.coderules.test/models/modelcheck@tests.mps b/coderules/solutions/jetbrains.mps.coderules.test/models/modelcheck@tests.mps
index afb9d5e4..b5c1273d 100644
--- a/coderules/solutions/jetbrains.mps.coderules.test/models/modelcheck@tests.mps
+++ b/coderules/solutions/jetbrains.mps.coderules.test/models/modelcheck@tests.mps
@@ -40,6 +40,7 @@
+
@@ -956,19 +957,19 @@
-
-
-
+
+
+
-
+
-
-
+
+
-
-
-
+
+
+
@@ -980,9 +981,9 @@
-
-
-
+
+
+
@@ -1011,15 +1012,15 @@
-
-
-
+
+
+
-
+
-
-
+
+
diff --git a/coderules/solutions/jetbrains.mps.coderules.typechecking.test/models/jetbrains.mps.coderules.typechecking@tests.mps b/coderules/solutions/jetbrains.mps.coderules.typechecking.test/models/jetbrains.mps.coderules.typechecking@tests.mps
index 5fa98700..52efd812 100644
--- a/coderules/solutions/jetbrains.mps.coderules.typechecking.test/models/jetbrains.mps.coderules.typechecking@tests.mps
+++ b/coderules/solutions/jetbrains.mps.coderules.typechecking.test/models/jetbrains.mps.coderules.typechecking@tests.mps
@@ -4324,9 +4324,9 @@
-
-
-
+
+
+
@@ -4656,11 +4656,11 @@
-
+
-
-
-
+
+
+
@@ -4670,14 +4670,14 @@
-
+
-
-
+
+
-
-
-
+
+
+
@@ -4690,9 +4690,9 @@
-
-
-
+
+
+
@@ -4711,9 +4711,9 @@
-
-
-
+
+
+
diff --git a/coderules/solutions/jetbrains.mps.coderules.typechecking/jetbrains.mps.coderules.typechecking.msd b/coderules/solutions/jetbrains.mps.coderules.typechecking/jetbrains.mps.coderules.typechecking.msd
index 7b15ed77..0025bdd8 100644
--- a/coderules/solutions/jetbrains.mps.coderules.typechecking/jetbrains.mps.coderules.typechecking.msd
+++ b/coderules/solutions/jetbrains.mps.coderules.typechecking/jetbrains.mps.coderules.typechecking.msd
@@ -32,6 +32,7 @@
019b622b-0aef-4dd3-86d0-4eef01f3f6bb(jetbrains.mps.ide)
1ed103c3-3aa6-49b7-9c21-6765ee11f224(MPS.Editor)
bfbdd672-7ff5-403f-af4f-16da5226f34c(jetbrains.mps.findUsages.runtime)
+ 498d89d2-c2e9-11e2-ad49-6cf049e62fe5(MPS.IDEA)
diff --git a/coderules/solutions/jetbrains.mps.coderules.typechecking/models/jetbrains.mps.coderules.typechecking.plugin.mps b/coderules/solutions/jetbrains.mps.coderules.typechecking/models/jetbrains.mps.coderules.typechecking.plugin.mps
index 027cc183..3a380418 100644
--- a/coderules/solutions/jetbrains.mps.coderules.typechecking/models/jetbrains.mps.coderules.typechecking.plugin.mps
+++ b/coderules/solutions/jetbrains.mps.coderules.typechecking/models/jetbrains.mps.coderules.typechecking.plugin.mps
@@ -102,6 +102,8 @@
+
+
@@ -820,11 +822,11 @@
-
+
-
-
-
+
+
+
@@ -844,12 +846,12 @@
-
-
-
+
+
+
-
+
@@ -1261,11 +1263,11 @@
-
+
-
-
-
+
+
+
@@ -4270,7 +4272,7 @@
-
+
@@ -4301,9 +4303,9 @@
-
-
-
+
+
+
@@ -4635,7 +4637,7 @@
-
+
@@ -4755,7 +4757,7 @@
-
+
@@ -5351,18 +5353,21 @@
-
-
-
-
-
+
+
+
+
+
-
-
+
+
+
+
+
+
-
@@ -5375,56 +5380,64 @@
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
+
+
+
+
+
-
-
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
@@ -6020,12 +6033,9 @@
-
-
-
-
-
-
+
+
+
@@ -6752,9 +6762,9 @@
-
-
-
+
+
+
@@ -9017,9 +9027,9 @@
-
-
-
+
+
+
@@ -10408,5 +10418,31 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/coderules/solutions/jetbrains.mps.coderules.typechecking/models/jetbrains.mps.coderules.typechecking.service.mps b/coderules/solutions/jetbrains.mps.coderules.typechecking/models/jetbrains.mps.coderules.typechecking.service.mps
index 84b8cc4d..4988be02 100644
--- a/coderules/solutions/jetbrains.mps.coderules.typechecking/models/jetbrains.mps.coderules.typechecking.service.mps
+++ b/coderules/solutions/jetbrains.mps.coderules.typechecking/models/jetbrains.mps.coderules.typechecking.service.mps
@@ -64,6 +64,8 @@
+
+
@@ -92,15 +94,26 @@
+
+
+
+
+
+
+
+
+
+
+
@@ -126,6 +139,10 @@
+
+
+
+
@@ -257,6 +274,7 @@
+
@@ -286,6 +304,7 @@
+
@@ -305,6 +324,10 @@
+
+
+
+
@@ -323,6 +346,7 @@
+
@@ -382,6 +406,9 @@
+
+
+
@@ -944,11 +971,11 @@
-
+
-
-
-
+
+
+
@@ -988,14 +1015,14 @@
-
+
-
-
+
+
-
-
-
+
+
+
@@ -1008,9 +1035,9 @@
-
-
-
+
+
+
@@ -2287,10 +2314,10 @@
-
+
-
-
+
+
@@ -5519,7 +5546,7 @@
-
+
@@ -5756,12 +5783,12 @@
-
-
-
+
+
+
-
+
@@ -6340,14 +6367,14 @@
-
+
-
+
@@ -6382,7 +6409,7 @@
-
+
@@ -6495,7 +6522,7 @@
-
+
@@ -6678,7 +6705,7 @@
-
+
@@ -6787,7 +6814,7 @@
-
+
@@ -6855,7 +6882,7 @@
-
+
@@ -6910,7 +6937,7 @@
-
+
@@ -7727,7 +7754,7 @@
-
+
@@ -7975,7 +8002,7 @@
-
+
@@ -15248,7 +15275,7 @@
-
+
@@ -15659,12 +15686,12 @@
-
-
-
+
+
+
-
+
@@ -15679,12 +15706,12 @@
-
-
-
+
+
+
-
+
@@ -16410,7 +16437,7 @@
-
+
@@ -16541,7 +16568,7 @@
-
+
@@ -16601,12 +16628,12 @@
-
-
-
+
+
+
-
+
@@ -16783,7 +16810,7 @@
-
+
@@ -17211,7 +17238,7 @@
-
+
@@ -17711,12 +17738,12 @@
-
-
-
+
+
+
-
+
@@ -17949,7 +17976,7 @@
-
+
@@ -18169,12 +18196,12 @@
-
-
-
+
+
+
-
+
@@ -18450,7 +18477,7 @@
-
+
@@ -18885,7 +18912,7 @@
-
+
@@ -19295,7 +19322,7 @@
-
+
@@ -19797,7 +19824,7 @@
-
+
@@ -20245,7 +20272,7 @@
-
+
@@ -20470,7 +20497,7 @@
-
+
@@ -20756,7 +20783,7 @@
-
+
@@ -21150,7 +21177,7 @@
-
+
@@ -21184,5 +21211,2574 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/coderules/solutions/jetbrains.mps.coderules/jetbrains.mps.coderules.msd b/coderules/solutions/jetbrains.mps.coderules/jetbrains.mps.coderules.msd
index e6096ad8..acdece26 100644
--- a/coderules/solutions/jetbrains.mps.coderules/jetbrains.mps.coderules.msd
+++ b/coderules/solutions/jetbrains.mps.coderules/jetbrains.mps.coderules.msd
@@ -30,6 +30,7 @@
742f6602-5a2f-4313-aa6e-ae1cd4ffdc61(MPS.Platform)
f113d56b-63e3-4120-a89c-2f5dcb8c6290(jetbrains.mps.coderules.runtime)
66887915-4d9e-4e24-bd35-19eb55fb75c2(jetbrains.mps.coderules.ideaplugin)
+ 6998f568-f0e9-473b-b4a8-9efb6499fc8d(jetbrains.mps.coderules.typechecking)
@@ -60,9 +61,12 @@
+
+
+
diff --git a/coderules/solutions/jetbrains.mps.coderules/models/plugin.mps b/coderules/solutions/jetbrains.mps.coderules/models/plugin.mps
index c86dabb5..0ac1299e 100644
--- a/coderules/solutions/jetbrains.mps.coderules/models/plugin.mps
+++ b/coderules/solutions/jetbrains.mps.coderules/models/plugin.mps
@@ -37,6 +37,7 @@
+
@@ -7257,9 +7258,9 @@
-
-
-
+
+
+
@@ -7267,9 +7268,9 @@
-
-
-
+
+
+
diff --git a/coderules/solutions/jetbrains.mps.coderules/models/service.mps b/coderules/solutions/jetbrains.mps.coderules/models/service.mps
index 713b24b5..2efccd9c 100644
--- a/coderules/solutions/jetbrains.mps.coderules/models/service.mps
+++ b/coderules/solutions/jetbrains.mps.coderules/models/service.mps
@@ -43,6 +43,7 @@
+
@@ -1252,7 +1253,7 @@
-
+
@@ -1262,7 +1263,7 @@
-
+
@@ -4318,7 +4319,7 @@
-
+
@@ -4714,12 +4715,12 @@
-
-
-
+
+
+
-
+
@@ -5378,7 +5379,7 @@
-
+
diff --git a/settings.gradle b/settings.gradle
index 4688c804..d7eec2a5 100644
--- a/settings.gradle
+++ b/settings.gradle
@@ -2,7 +2,6 @@ include 'coderules:solutions:jetbrains.mps.logic.reactor'
include 'coderules:solutions:jetbrains.mps.logic.test'
include 'coderules:solutions:jetbrains.mps.coderules.typechecking'
include 'coderules:solutions:jetbrains.mps.coderules'
-include 'coderules:solutions:jetbrains.mps.coderules.ideaplugin'
include 'samples:mpscore'
include 'samples:lambdacalc'
include 'samples:fitch'