Implement incremental generation of coderules program.

Introduce SessionData, allow to keep arbitrary data with the session.
Extend RulesListTable with support for invalidation based on rule unique tags.
Introduce UpdatesRecorder to keep track of invalidated nodes.
Extend ApplyTemplatesStep with invalidate logic for typechecking.
Simplify design, drop unnecessary fields, minor refactorings.
This commit is contained in:
Fedor Isakov 2019-12-12 11:24:49 +01:00
parent 1e9e41601a
commit efd19aa45b
12 changed files with 8669 additions and 3591 deletions

View File

@ -1099,6 +1099,7 @@
<module ref="8865b7a8-5271-43d3-884c-6fd1d9cfdd34(MPS.OpenAPI)" kind="cl" />
<module ref="742f6602-5a2f-4313-aa6e-ae1cd4ffdc61(MPS.Platform)" kind="cl" />
<module ref="f97d84b2-8bad-4fdd-8ede-da17b3eacf4c(jetbrains.mps.coderules)" kind="cl" />
<module ref="26e8f4ce-2a35-4f44-8065-e5ba154b18e9(jetbrains.mps.lang.coderules.runtime)" kind="cl" />
<module ref="ff6372a2-2f45-4ec3-952b-02581666015f(jetbrains.mps.lang.coderules.template)" kind="cl" />
<module ref="ceab5195-25ea-4f22-9b92-103b95ca8c0c(jetbrains.mps.lang.core)" kind="cl" />
<module ref="f486b8aa-5b2d-4ec0-8ef5-8f45d773fb84(jetbrains.mps.lang.typechecking.runtime)" kind="cl" />
@ -1118,6 +1119,7 @@
<language id="l:ceab5195-25ea-4f22-9b92-103b95ca8c0c:jetbrains.mps.lang.core" />
<language id="l:ef7bf5ac-d06c-4342-b11d-e42104eb9343:jetbrains.mps.lang.plugin.standalone" />
<language id="l:7866978e-a0f0-4cc7-81bc-4d213d9375e1:jetbrains.mps.lang.smodel" />
<language id="l:c7fb639f-be78-4307-89b0-b5959c3fa8c8:jetbrains.mps.lang.text" />
<language id="l:0b80a2e8-f9f1-47b3-823f-56eb115bca42:jetbrains.mps.typechecking.annotation" />
</uses>
<classpath>
@ -2892,6 +2894,7 @@
<module ref="8865b7a8-5271-43d3-884c-6fd1d9cfdd34(MPS.OpenAPI)" kind="cl" />
<module ref="742f6602-5a2f-4313-aa6e-ae1cd4ffdc61(MPS.Platform)" kind="cl" />
<module ref="f97d84b2-8bad-4fdd-8ede-da17b3eacf4c(jetbrains.mps.coderules)" kind="cl" />
<module ref="26e8f4ce-2a35-4f44-8065-e5ba154b18e9(jetbrains.mps.lang.coderules.runtime)" kind="cl" />
<module ref="ff6372a2-2f45-4ec3-952b-02581666015f(jetbrains.mps.lang.coderules.template)" kind="cl" />
<module ref="ceab5195-25ea-4f22-9b92-103b95ca8c0c(jetbrains.mps.lang.core)" kind="cl" />
<module ref="f486b8aa-5b2d-4ec0-8ef5-8f45d773fb84(jetbrains.mps.lang.typechecking.runtime)" kind="cl" />
@ -2911,6 +2914,7 @@
<language id="l:ceab5195-25ea-4f22-9b92-103b95ca8c0c:jetbrains.mps.lang.core" />
<language id="l:ef7bf5ac-d06c-4342-b11d-e42104eb9343:jetbrains.mps.lang.plugin.standalone" />
<language id="l:7866978e-a0f0-4cc7-81bc-4d213d9375e1:jetbrains.mps.lang.smodel" />
<language id="l:c7fb639f-be78-4307-89b0-b5959c3fa8c8:jetbrains.mps.lang.text" />
<language id="l:0b80a2e8-f9f1-47b3-823f-56eb115bca42:jetbrains.mps.typechecking.annotation" />
</uses>
<classpath>

View File

@ -883,6 +883,11 @@
<ref role="3bR37D" node="7BVjoXzUx9d" resolve="jetbrains.mps.lang.coderules.template" />
</node>
</node>
<node concept="1SiIV0" id="7i3KM7gGRWE" role="3bR37C">
<node concept="3bR9La" id="7i3KM7gGRWF" role="1SiIV1">
<ref role="3bR37D" node="7BVjoXzUxee" resolve="jetbrains.mps.lang.coderules.runtime" />
</node>
</node>
</node>
<node concept="1E1JtA" id="55Q$YFtvwQY" role="2G$12L">
<property role="BnDLt" value="true" />

View File

@ -27,6 +27,7 @@
<import index="et5u" ref="6ed54515-acc8-4d1e-a16c-9fd6cfe951ea/java:jetbrains.mps.messages(MPS.Core/)" />
<import index="82uw" ref="6354ebe7-c22a-4a0f-ac54-50b52ab9b065/java:java.util.function(JDK/)" />
<import index="cxk7" ref="r:daa544a7-0a5c-49c0-a54c-4c2a5b4868aa(jetbrains.mps.logic.predicate)" />
<import index="ksgm" ref="r:6285678b-007f-4527-bcf5-6fd38ba8c969(jetbrains.mps.lang.coderules.program)" />
<import index="tpcu" ref="r:00000000-0000-4000-0000-011c89590282(jetbrains.mps.lang.core.behavior)" implicit="true" />
</imports>
<registry>
@ -49,6 +50,9 @@
<concept id="1188208481402" name="jetbrains.mps.baseLanguage.structure.HasAnnotation" flags="ng" index="2AJDlI">
<child id="1188208488637" name="annotation" index="2AJF6D" />
</concept>
<concept id="2820489544401957797" name="jetbrains.mps.baseLanguage.structure.DefaultClassCreator" flags="nn" index="HV5vD">
<reference id="2820489544401957798" name="classifier" index="HV5vE" />
</concept>
<concept id="1154032098014" name="jetbrains.mps.baseLanguage.structure.AbstractLoopStatement" flags="nn" index="2LF5Ji">
<child id="1154032183016" name="body" index="2LFqv$" />
</concept>
@ -614,6 +618,13 @@
</node>
</node>
</node>
<node concept="P$JXv" id="7i3KM7g6vhs" role="lGtFl">
<node concept="TZ5HA" id="7i3KM7g6vht" role="TZ5H$">
<node concept="1dT_AC" id="7i3KM7g6vhu" role="1dT_Ay">
<property role="1dT_AB" value="FIXME this constructor is unused, remove?" />
</node>
</node>
</node>
</node>
<node concept="2tJIrI" id="tyIfzC0ZQK" role="jymVt" />
<node concept="3clFbW" id="tyIfzC0ZVq" role="jymVt">
@ -1316,6 +1327,118 @@
<node concept="3Tqbb2" id="tyIfzC3xp4" role="1tU5fm" />
</node>
<node concept="3clFbS" id="tyIfzC3x3i" role="3clF47">
<node concept="3SKdUt" id="6nFpYlvrwWi" role="3cqZAp">
<node concept="1PaTwC" id="6nFpYlvryeM" role="3ndbpf">
<node concept="3oM_SD" id="6nFpYlvrwWl" role="1PaTwD">
<property role="3oM_SC" value="it" />
</node>
<node concept="3oM_SD" id="6nFpYlvry8I" role="1PaTwD">
<property role="3oM_SC" value="is" />
</node>
<node concept="3oM_SD" id="6nFpYlvry8T" role="1PaTwD">
<property role="3oM_SC" value="necessary" />
</node>
<node concept="3oM_SD" id="6nFpYlvry9l" role="1PaTwD">
<property role="3oM_SC" value="to" />
</node>
<node concept="3oM_SD" id="6nFpYlvry9q" role="1PaTwD">
<property role="3oM_SC" value="set" />
</node>
<node concept="3oM_SD" id="6nFpYlvryaf" role="1PaTwD">
<property role="3oM_SC" value="fresh" />
</node>
<node concept="3oM_SD" id="6nFpYlvryaA" role="1PaTwD">
<property role="3oM_SC" value="origin" />
</node>
<node concept="3oM_SD" id="6nFpYlvryaY" role="1PaTwD">
<property role="3oM_SC" value="index" />
</node>
<node concept="3oM_SD" id="6nFpYlvrybn" role="1PaTwD">
<property role="3oM_SC" value="before" />
</node>
<node concept="3oM_SD" id="6nFpYlvrybL" role="1PaTwD">
<property role="3oM_SC" value="calling" />
</node>
<node concept="3oM_SD" id="6nFpYlvrygm" role="1PaTwD">
<property role="3oM_SC" value="produce" />
</node>
</node>
</node>
<node concept="3SKdUt" id="6nFpYlvr$89" role="3cqZAp">
<node concept="1PaTwC" id="6nFpYlvr$8a" role="3ndbpf">
<node concept="3oM_SD" id="6nFpYlvr$8c" role="1PaTwD">
<property role="3oM_SC" value="otherwise" />
</node>
<node concept="3oM_SD" id="6nFpYlvr_Bk" role="1PaTwD">
<property role="3oM_SC" value="it" />
</node>
<node concept="3oM_SD" id="6nFpYlvr_Bv" role="1PaTwD">
<property role="3oM_SC" value="is" />
</node>
<node concept="3oM_SD" id="6nFpYlvr_BF" role="1PaTwD">
<property role="3oM_SC" value="not" />
</node>
<node concept="3oM_SD" id="6nFpYlvr_Cd" role="1PaTwD">
<property role="3oM_SC" value="going" />
</node>
<node concept="3oM_SD" id="6nFpYlvr_Da" role="1PaTwD">
<property role="3oM_SC" value="to" />
</node>
<node concept="3oM_SD" id="6nFpYlvr_Dp" role="1PaTwD">
<property role="3oM_SC" value="do" />
</node>
<node concept="3oM_SD" id="6nFpYlvr_DD" role="1PaTwD">
<property role="3oM_SC" value="anything" />
</node>
<node concept="3oM_SD" id="6nFpYlvr_Ea" role="1PaTwD">
<property role="3oM_SC" value="due" />
</node>
<node concept="3oM_SD" id="6nFpYlvr_EG" role="1PaTwD">
<property role="3oM_SC" value="to" />
</node>
<node concept="3oM_SD" id="6nFpYlvr_ER" role="1PaTwD">
<property role="3oM_SC" value="empty" />
</node>
<node concept="3oM_SD" id="6nFpYlvr_Ge" role="1PaTwD">
<property role="3oM_SC" value="invalidated" />
</node>
<node concept="3oM_SD" id="6nFpYlvr_Gz" role="1PaTwD">
<property role="3oM_SC" value="set" />
</node>
</node>
</node>
<node concept="3clFbF" id="6nFpYlv0TZv" role="3cqZAp">
<node concept="2OqwBi" id="6nFpYlv0UjV" role="3clFbG">
<node concept="37vLTw" id="6nFpYlv0TZt" role="2Oq$k0">
<ref role="3cqZAo" node="tyIfzC1aUL" resolve="tplApp" />
</node>
<node concept="liA8E" id="6nFpYlv0Ux7" role="2OqNvi">
<ref role="37wK5l" to="hano:6nFpYluWwIS" resolve="setOriginIndex" />
<node concept="2ShNRf" id="6nFpYlv0UyZ" role="37wK5m">
<node concept="HV5vD" id="6nFpYlv0UK1" role="2ShVmc">
<ref role="HV5vE" to="ksgm:70Wv0dJhQb2" resolve="OriginIndex" />
</node>
</node>
</node>
</node>
</node>
<node concept="3clFbF" id="4hQVL4fdQZO" role="3cqZAp">
<node concept="2OqwBi" id="4hQVL4fdSHQ" role="3clFbG">
<node concept="37vLTw" id="4hQVL4fdQZM" role="2Oq$k0">
<ref role="3cqZAo" node="tyIfzC1aUL" resolve="tplApp" />
</node>
<node concept="liA8E" id="4hQVL4fdSTC" role="2OqNvi">
<ref role="37wK5l" to="hano:6nFpYluW_Ik" resolve="setUpdatesRecorder" />
<node concept="2ShNRf" id="4hQVL4fdSWo" role="37wK5m">
<node concept="1pGfFk" id="4hQVL4fdT8Y" role="2ShVmc">
<ref role="37wK5l" to="ksgm:6nFpYlu7fpM" resolve="UpdatesRecorder" />
<node concept="10Nm6u" id="4hQVL4fdTaR" role="37wK5m" />
<node concept="10Nm6u" id="4hQVL4fdTe6" role="37wK5m" />
</node>
</node>
</node>
</node>
</node>
<node concept="3cpWs6" id="tyIfzC3$oV" role="3cqZAp">
<node concept="2OqwBi" id="tyIfzC3yak" role="3cqZAk">
<node concept="37vLTw" id="tyIfzC3yal" role="2Oq$k0">
@ -1323,6 +1446,11 @@
</node>
<node concept="liA8E" id="tyIfzC3yam" role="2OqNvi">
<ref role="37wK5l" to="hano:7kTeLbPojCz" resolve="produce" />
<node concept="2ShNRf" id="7i3KM7g6AYw" role="37wK5m">
<node concept="HV5vD" id="7i3KM7g6COo" role="2ShVmc">
<ref role="HV5vE" to="ksgm:7DvO2M9Uago" resolve="RulesListTable" />
</node>
</node>
<node concept="2ShNRf" id="tyIfzC3yan" role="37wK5m">
<node concept="2HTt$P" id="tyIfzC3yao" role="2ShVmc">
<node concept="3Tqbb2" id="tyIfzC3yap" role="2HTBi0" />

View File

@ -41,6 +41,7 @@
<import index="w7la" ref="bbf5c548-7111-4a53-a117-cdefc664cf34/java:jetbrains.mps.logic.reactor.evaluation(jetbrains.mps.logic.reactor/)" />
<import index="82uw" ref="6354ebe7-c22a-4a0f-ac54-50b52ab9b065/java:java.util.function(JDK/)" />
<import index="31yc" ref="r:0c18ff61-1cb9-4ff0-a899-c949ad03f97c(jetbrains.mps.coderules.plugin)" />
<import index="ksgm" ref="r:6285678b-007f-4527-bcf5-6fd38ba8c969(jetbrains.mps.lang.coderules.program)" />
</imports>
<registry>
<language id="8585453e-6bfb-4d80-98de-b16074f1d86c" name="jetbrains.mps.lang.test">
@ -1172,6 +1173,38 @@
</node>
</node>
</node>
<node concept="3clFbF" id="6nFpYlv0Vkh" role="3cqZAp">
<node concept="2OqwBi" id="6nFpYlv0VK9" role="3clFbG">
<node concept="37vLTw" id="6nFpYlv0Vkf" role="2Oq$k0">
<ref role="3cqZAo" node="6$7vuu2ugt3" resolve="tplApp" />
</node>
<node concept="liA8E" id="6nFpYlv0WkN" role="2OqNvi">
<ref role="37wK5l" to="hano:6nFpYluWwIS" resolve="setOriginIndex" />
<node concept="2ShNRf" id="6nFpYlv0WLN" role="37wK5m">
<node concept="HV5vD" id="6nFpYlv0XzE" role="2ShVmc">
<ref role="HV5vE" to="ksgm:70Wv0dJhQb2" resolve="OriginIndex" />
</node>
</node>
</node>
</node>
</node>
<node concept="3clFbF" id="4hQVL4feBXx" role="3cqZAp">
<node concept="2OqwBi" id="4hQVL4feBXy" role="3clFbG">
<node concept="37vLTw" id="4hQVL4feBXz" role="2Oq$k0">
<ref role="3cqZAo" node="6$7vuu2ugt3" resolve="tplApp" />
</node>
<node concept="liA8E" id="4hQVL4feBX$" role="2OqNvi">
<ref role="37wK5l" to="hano:6nFpYluW_Ik" resolve="setUpdatesRecorder" />
<node concept="2ShNRf" id="4hQVL4feBX_" role="37wK5m">
<node concept="1pGfFk" id="4hQVL4feE1o" role="2ShVmc">
<ref role="37wK5l" to="ksgm:6nFpYlu7fpM" resolve="UpdatesRecorder" />
<node concept="10Nm6u" id="4hQVL4feErQ" role="37wK5m" />
<node concept="10Nm6u" id="4hQVL4feF1B" role="37wK5m" />
</node>
</node>
</node>
</node>
</node>
<node concept="3cpWs8" id="6$7vuu2ujxQ" role="3cqZAp">
<node concept="3cpWsn" id="6$7vuu2ujxR" role="3cpWs9">
<property role="TrG5h" value="res" />
@ -1184,6 +1217,11 @@
</node>
<node concept="liA8E" id="6$7vuu2ujxU" role="2OqNvi">
<ref role="37wK5l" to="hano:7kTeLbPojCz" resolve="produce" />
<node concept="2ShNRf" id="7i3KM7g6AYw" role="37wK5m">
<node concept="HV5vD" id="7i3KM7g6COo" role="2ShVmc">
<ref role="HV5vE" to="ksgm:7DvO2M9Uago" resolve="RulesListTable" />
</node>
</node>
<node concept="2ShNRf" id="3IIf9O_jdGL" role="37wK5m">
<node concept="2HTt$P" id="3IIf9O_jgA8" role="2ShVmc">
<node concept="3Tqbb2" id="3IIf9O_jhoV" role="2HTBi0" />

View File

@ -59,6 +59,7 @@
<import index="fqlx" ref="r:2cc226a9-8a78-4010-b962-823343fd28ff(jetbrains.mps.lang.coderules.aspect)" />
<import index="31yc" ref="r:0c18ff61-1cb9-4ff0-a899-c949ad03f97c(jetbrains.mps.coderules.plugin)" />
<import index="82uw" ref="6354ebe7-c22a-4a0f-ac54-50b52ab9b065/java:java.util.function(JDK/)" />
<import index="ksgm" ref="r:6285678b-007f-4527-bcf5-6fd38ba8c969(jetbrains.mps.lang.coderules.program)" />
</imports>
<registry>
<language id="28f9e497-3b42-4291-aeba-0a1039153ab1" name="jetbrains.mps.lang.plugin">
@ -131,6 +132,9 @@
<child id="1188208488637" name="annotation" index="2AJF6D" />
</concept>
<concept id="1095950406618" name="jetbrains.mps.baseLanguage.structure.DivExpression" flags="nn" index="FJ1c_" />
<concept id="2820489544401957797" name="jetbrains.mps.baseLanguage.structure.DefaultClassCreator" flags="nn" index="HV5vD">
<reference id="2820489544401957798" name="classifier" index="HV5vE" />
</concept>
<concept id="1154032098014" name="jetbrains.mps.baseLanguage.structure.AbstractLoopStatement" flags="nn" index="2LF5Ji">
<child id="1154032183016" name="body" index="2LFqv$" />
</concept>
@ -357,6 +361,9 @@
<concept id="1151688443754" name="jetbrains.mps.baseLanguage.collections.structure.ListType" flags="in" index="_YKpA">
<child id="1151688676805" name="elementType" index="_ZDj9" />
</concept>
<concept id="1151689724996" name="jetbrains.mps.baseLanguage.collections.structure.SequenceType" flags="in" index="A3Dl8">
<child id="1151689745422" name="elementType" index="A3Ik2" />
</concept>
<concept id="1235573135402" name="jetbrains.mps.baseLanguage.collections.structure.SingletonSequenceCreator" flags="nn" index="2HTt$P">
<child id="1235573175711" name="elementType" index="2HTBi0" />
<child id="1235573187520" name="singletonValue" index="2HTEbv" />
@ -846,6 +853,25 @@
<node concept="3Tqbb2" id="6kREIVkWMXC" role="1tU5fm" />
</node>
</node>
<node concept="3cpWs8" id="6nFpYlun1LU" role="3cqZAp">
<node concept="3cpWsn" id="6nFpYlun1LV" role="3cpWs9">
<property role="TrG5h" value="repository" />
<node concept="3uibUv" id="6nFpYlun1hO" role="1tU5fm">
<ref role="3uigEE" to="lui2:~SRepository" resolve="SRepository" />
</node>
<node concept="2OqwBi" id="6nFpYlun1LW" role="33vP2m">
<node concept="2OqwBi" id="6nFpYlun1LX" role="2Oq$k0">
<node concept="2WthIp" id="6nFpYlun1LY" role="2Oq$k0" />
<node concept="1DTwFV" id="6nFpYlun1LZ" role="2OqNvi">
<ref role="2WH_rO" node="3YJ7yg2LgUn" resolve="mpsProject" />
</node>
</node>
<node concept="liA8E" id="6nFpYlun1M0" role="2OqNvi">
<ref role="37wK5l" to="z1c3:~Project.getRepository()" resolve="getRepository" />
</node>
</node>
</node>
</node>
<node concept="1QHqEK" id="3YJ7yg2LGli" role="3cqZAp">
<node concept="1QHqEC" id="3YJ7yg2LGlj" role="1QHqEI">
<node concept="3clFbS" id="3YJ7yg2LGlk" role="1bW5cS">
@ -869,16 +895,8 @@
</node>
</node>
</node>
<node concept="2OqwBi" id="3YJ7yg2LGlF" role="ukAjM">
<node concept="2OqwBi" id="3YJ7yg2LGlG" role="2Oq$k0">
<node concept="2WthIp" id="3YJ7yg2LGlH" role="2Oq$k0" />
<node concept="1DTwFV" id="3YJ7yg2LGlI" role="2OqNvi">
<ref role="2WH_rO" node="3YJ7yg2LgUn" resolve="mpsProject" />
</node>
</node>
<node concept="liA8E" id="3YJ7yg2LGlJ" role="2OqNvi">
<ref role="37wK5l" to="z1c3:~Project.getRepository()" resolve="getRepository" />
</node>
<node concept="37vLTw" id="6nFpYlun1M2" role="ukAjM">
<ref role="3cqZAo" node="6nFpYlun1LV" resolve="repository" />
</node>
</node>
<node concept="3clFbH" id="6kREIVkXLDT" role="3cqZAp" />
@ -922,22 +940,63 @@
</node>
</node>
</node>
<node concept="2OqwBi" id="3KN3A4vCTIP" role="37wK5m">
<node concept="2OqwBi" id="3KN3A4vCTIQ" role="2Oq$k0">
<node concept="2WthIp" id="3KN3A4vCTIR" role="2Oq$k0" />
<node concept="1DTwFV" id="3KN3A4vCTIS" role="2OqNvi">
<ref role="2WH_rO" node="3YJ7yg2LgUn" resolve="mpsProject" />
</node>
</node>
<node concept="liA8E" id="3KN3A4vCTIT" role="2OqNvi">
<ref role="37wK5l" to="z1c3:~Project.getRepository()" resolve="getRepository" />
</node>
<node concept="37vLTw" id="6nFpYlun1M3" role="37wK5m">
<ref role="3cqZAo" node="6nFpYlun1LV" resolve="repository" />
</node>
</node>
</node>
</node>
</node>
<node concept="3clFbH" id="3KN3A4vCYR8" role="3cqZAp" />
<node concept="3cpWs8" id="6nFpYlun4Ee" role="3cqZAp">
<node concept="3cpWsn" id="6nFpYlun4Ef" role="3cpWs9">
<property role="TrG5h" value="session" />
<node concept="3uibUv" id="6nFpYlun4qm" role="1tU5fm">
<ref role="3uigEE" to="hano:CGeqIk8WWU" resolve="RuleProcessingSession" />
</node>
<node concept="2ShNRf" id="6nFpYlun4Eg" role="33vP2m">
<node concept="1pGfFk" id="6nFpYlun4Eh" role="2ShVmc">
<ref role="37wK5l" to="hano:7DvO2M9VeM1" resolve="RuleProcessingSession" />
<node concept="1eOMI4" id="6nFpYlun4Ei" role="37wK5m">
<node concept="10QFUN" id="6nFpYlun4Ej" role="1eOMHV">
<node concept="A3Dl8" id="6nFpYlun4Ek" role="10QFUM">
<node concept="3qUE_q" id="6nFpYlun4El" role="A3Ik2">
<node concept="3uibUv" id="6nFpYlun4Em" role="3qUE_r">
<ref role="3uigEE" to="fqlx:NKt6yomNZE" resolve="CoderulesAspect" />
</node>
</node>
</node>
<node concept="2OqwBi" id="6nFpYlun4En" role="10QFUP">
<node concept="liA8E" id="6nFpYlun4Eo" role="2OqNvi">
<ref role="37wK5l" to="fqlx:3KN3A4uUhpW" resolve="aspects" />
</node>
<node concept="2OqwBi" id="6nFpYlun4Ep" role="2Oq$k0">
<node concept="37vLTw" id="6nFpYlun4Eq" role="2Oq$k0">
<ref role="3cqZAo" node="3KN3A4vCTIK" resolve="ac" />
</node>
<node concept="1uHKPH" id="6nFpYlun4Er" role="2OqNvi" />
</node>
</node>
</node>
</node>
<node concept="37vLTw" id="6nFpYlun4Es" role="37wK5m">
<ref role="3cqZAo" node="6nFpYlun1LV" resolve="repository" />
</node>
<node concept="2YIFZM" id="6nFpYlun4Et" role="37wK5m">
<ref role="1Pybhc" to="31yc:4MaHsBDdlvx" resolve="MessageLog" />
<ref role="37wK5l" to="31yc:2mhJggjuVj0" resolve="get" />
<node concept="2OqwBi" id="6nFpYlun4Eu" role="37wK5m">
<node concept="2WthIp" id="6nFpYlun4Ev" role="2Oq$k0" />
<node concept="1DTwFV" id="6nFpYlun4Ew" role="2OqNvi">
<ref role="2WH_rO" node="3YJ7yg2LgUn" resolve="mpsProject" />
</node>
</node>
</node>
</node>
</node>
</node>
</node>
<node concept="3clFbH" id="6nFpYlun0w_" role="3cqZAp" />
<node concept="3cpWs8" id="6kREIVkWRFp" role="3cqZAp">
<node concept="3cpWsn" id="6kREIVkWRFq" role="3cpWs9">
<property role="TrG5h" value="applyTemplatesStep" />
@ -948,11 +1007,8 @@
<node concept="2ShNRf" id="6kREIVkWRFr" role="33vP2m">
<node concept="1pGfFk" id="6kREIVkWRFs" role="2ShVmc">
<ref role="37wK5l" to="1yqb:7kTeLbPt4na" resolve="ApplyTemplatesStep" />
<node concept="2OqwBi" id="3KN3A4vCVx$" role="37wK5m">
<node concept="37vLTw" id="3KN3A4vCUwE" role="2Oq$k0">
<ref role="3cqZAo" node="3KN3A4vCTIK" resolve="ac" />
</node>
<node concept="1uHKPH" id="3KN3A4vCW$I" role="2OqNvi" />
<node concept="37vLTw" id="6nFpYlun6L_" role="37wK5m">
<ref role="3cqZAo" node="6nFpYlun4Ef" resolve="session" />
</node>
<node concept="2ShNRf" id="3IIf9O_rLCc" role="37wK5m">
<node concept="Tc6Ow" id="3IIf9O_rNYG" role="2ShVmc">
@ -962,25 +1018,12 @@
</node>
</node>
</node>
<node concept="2OqwBi" id="443LGHBTWfF" role="37wK5m">
<node concept="2OqwBi" id="6kREIVkWRFu" role="2Oq$k0">
<node concept="2WthIp" id="6kREIVkWRFv" role="2Oq$k0" />
<node concept="1DTwFV" id="6kREIVkWRFw" role="2OqNvi">
<ref role="2WH_rO" node="3YJ7yg2LgUn" resolve="mpsProject" />
</node>
</node>
<node concept="liA8E" id="443LGHBTXQ6" role="2OqNvi">
<ref role="37wK5l" to="z1c3:~Project.getRepository()" resolve="getRepository" />
</node>
<node concept="37vLTw" id="6nFpYlun1M1" role="37wK5m">
<ref role="3cqZAo" node="6nFpYlun1LV" resolve="repository" />
</node>
<node concept="2YIFZM" id="2Y70AYEbGrb" role="37wK5m">
<ref role="1Pybhc" to="31yc:4MaHsBDdlvx" resolve="MessageLog" />
<ref role="37wK5l" to="31yc:2mhJggjuVj0" resolve="get" />
<node concept="2OqwBi" id="2Y70AYEbGrc" role="37wK5m">
<node concept="2WthIp" id="2Y70AYEbGrd" role="2Oq$k0" />
<node concept="1DTwFV" id="2Y70AYEbGre" role="2OqNvi">
<ref role="2WH_rO" node="3YJ7yg2LgUn" resolve="mpsProject" />
</node>
<node concept="2ShNRf" id="6nFpYluqJHO" role="37wK5m">
<node concept="HV5vD" id="6nFpYluqNL_" role="2ShVmc">
<ref role="HV5vE" to="ksgm:7DvO2M9Uago" resolve="RulesListTable" />
</node>
</node>
</node>
@ -3087,6 +3130,53 @@
</node>
</node>
</node>
<node concept="3clFbH" id="6nFpYluogsH" role="3cqZAp" />
<node concept="3cpWs8" id="6nFpYluoeMU" role="3cqZAp">
<node concept="3cpWsn" id="6nFpYluoeMV" role="3cpWs9">
<property role="TrG5h" value="session" />
<node concept="3uibUv" id="6nFpYluoeMW" role="1tU5fm">
<ref role="3uigEE" to="hano:CGeqIk8WWU" resolve="RuleProcessingSession" />
</node>
<node concept="2ShNRf" id="6nFpYluoeMX" role="33vP2m">
<node concept="1pGfFk" id="6nFpYluoeMY" role="2ShVmc">
<ref role="37wK5l" to="hano:7DvO2M9VeM1" resolve="RuleProcessingSession" />
<node concept="1eOMI4" id="6nFpYluoeMZ" role="37wK5m">
<node concept="10QFUN" id="6nFpYluoeN0" role="1eOMHV">
<node concept="A3Dl8" id="6nFpYluoeN1" role="10QFUM">
<node concept="3qUE_q" id="6nFpYluoeN2" role="A3Ik2">
<node concept="3uibUv" id="6nFpYluoeN3" role="3qUE_r">
<ref role="3uigEE" to="fqlx:NKt6yomNZE" resolve="CoderulesAspect" />
</node>
</node>
</node>
<node concept="2OqwBi" id="6nFpYluoeN4" role="10QFUP">
<node concept="liA8E" id="6nFpYluoeN5" role="2OqNvi">
<ref role="37wK5l" to="fqlx:3KN3A4uUhpW" resolve="aspects" />
</node>
<node concept="2OqwBi" id="6nFpYluoeN6" role="2Oq$k0">
<node concept="37vLTw" id="6nFpYluohLZ" role="2Oq$k0">
<ref role="3cqZAo" node="3KN3A4vDlEh" resolve="acs" />
</node>
<node concept="1uHKPH" id="6nFpYluoeN8" role="2OqNvi" />
</node>
</node>
</node>
</node>
<node concept="37vLTw" id="6nFpYluoeN9" role="37wK5m">
<ref role="3cqZAo" node="7WKNeR8SQxI" resolve="repository" />
</node>
<node concept="2YIFZM" id="2Y70AYEc4aH" role="37wK5m">
<ref role="37wK5l" to="31yc:2mhJggjuVj0" resolve="get" />
<ref role="1Pybhc" to="31yc:4MaHsBDdlvx" resolve="MessageLog" />
<node concept="37vLTw" id="2Y70AYEc4nY" role="37wK5m">
<ref role="3cqZAo" node="6hqFpWnfkNg" resolve="mpsProject" />
</node>
</node>
</node>
</node>
</node>
</node>
<node concept="3clFbH" id="6nFpYluod$P" role="3cqZAp" />
<node concept="3clFbF" id="7WKNeR8TcXy" role="3cqZAp">
<node concept="2OqwBi" id="7WKNeR8TcXz" role="3clFbG">
<node concept="37vLTw" id="7WKNeR8TcX$" role="2Oq$k0">
@ -3096,8 +3186,8 @@
<node concept="2ShNRf" id="7WKNeR8TcXE" role="25WWJ7">
<node concept="1pGfFk" id="7WKNeR8TcXF" role="2ShVmc">
<ref role="37wK5l" to="1yqb:7WKNeR9fh8j" resolve="ApplyTemplatesStep" />
<node concept="37vLTw" id="5MNibEMWybD" role="37wK5m">
<ref role="3cqZAo" node="5MNibEMWyb_" resolve="clique" />
<node concept="37vLTw" id="6nFpYluoiGj" role="37wK5m">
<ref role="3cqZAo" node="6nFpYluoeMV" resolve="session" />
</node>
<node concept="2OqwBi" id="7WKNeR8TcXG" role="37wK5m">
<node concept="Xjq3P" id="7WKNeR8TcXH" role="2Oq$k0" />
@ -3108,11 +3198,9 @@
<node concept="37vLTw" id="7WKNeR8ThOi" role="37wK5m">
<ref role="3cqZAo" node="7WKNeR8SQxI" resolve="repository" />
</node>
<node concept="2YIFZM" id="2Y70AYEc4aH" role="37wK5m">
<ref role="1Pybhc" to="31yc:4MaHsBDdlvx" resolve="MessageLog" />
<ref role="37wK5l" to="31yc:2mhJggjuVj0" resolve="get" />
<node concept="37vLTw" id="2Y70AYEc4nY" role="37wK5m">
<ref role="3cqZAo" node="6hqFpWnfkNg" resolve="mpsProject" />
<node concept="2ShNRf" id="6nFpYluqYB0" role="37wK5m">
<node concept="HV5vD" id="6nFpYluqZMB" role="2ShVmc">
<ref role="HV5vE" to="ksgm:7DvO2M9Uago" resolve="RulesListTable" />
</node>
</node>
<node concept="37vLTw" id="7WKNeR9foS9" role="37wK5m">

View File

@ -19,6 +19,7 @@
<dependency reexport="false">7a5dda62-9140-4668-ab76-d5ed1746f2b2(jetbrains.mps.lang.typesystem)</dependency>
<dependency reexport="false">49808fad-9d41-4b96-83fa-9231640f6b2b(JUnit)</dependency>
<dependency reexport="false">ff6372a2-2f45-4ec3-952b-02581666015f(jetbrains.mps.lang.coderules.template)</dependency>
<dependency reexport="false">26e8f4ce-2a35-4f44-8065-e5ba154b18e9(jetbrains.mps.lang.coderules.runtime)</dependency>
</dependencies>
<languageVersions>
<language slang="l:f3061a53-9226-4cc5-a443-f952ceaf5816:jetbrains.mps.baseLanguage" version="9" />
@ -36,6 +37,7 @@
<language slang="l:28f9e497-3b42-4291-aeba-0a1039153ab1:jetbrains.mps.lang.plugin" version="4" />
<language slang="l:ef7bf5ac-d06c-4342-b11d-e42104eb9343:jetbrains.mps.lang.plugin.standalone" version="0" />
<language slang="l:7866978e-a0f0-4cc7-81bc-4d213d9375e1:jetbrains.mps.lang.smodel" version="17" />
<language slang="l:c7fb639f-be78-4307-89b0-b5959c3fa8c8:jetbrains.mps.lang.text" version="0" />
<language slang="l:9ded098b-ad6a-4657-bfd9-48636cfe8bc3:jetbrains.mps.lang.traceable" version="0" />
<language slang="l:0b80a2e8-f9f1-47b3-823f-56eb115bca42:jetbrains.mps.typechecking.annotation" version="0" />
</languageVersions>

View File

@ -33,6 +33,7 @@
<import index="31yc" ref="r:0c18ff61-1cb9-4ff0-a899-c949ad03f97c(jetbrains.mps.coderules.plugin)" />
<import index="et5u" ref="6ed54515-acc8-4d1e-a16c-9fd6cfe951ea/java:jetbrains.mps.messages(MPS.Core/)" />
<import index="2gg1" ref="6ed54515-acc8-4d1e-a16c-9fd6cfe951ea/java:jetbrains.mps.errors(MPS.Core/)" />
<import index="ksgm" ref="r:6285678b-007f-4527-bcf5-6fd38ba8c969(jetbrains.mps.lang.coderules.program)" />
</imports>
<registry>
<language id="a247e09e-2435-45ba-b8d2-07e93feba96a" name="jetbrains.mps.baseLanguage.tuples">
@ -239,9 +240,6 @@
<child id="5375687026011219971" name="member" index="jymVt" unordered="true" />
</concept>
<concept id="1171903607971" name="jetbrains.mps.baseLanguage.structure.WildCardType" flags="in" index="3qTvmN" />
<concept id="1171903916106" name="jetbrains.mps.baseLanguage.structure.UpperBoundType" flags="in" index="3qUE_q">
<child id="1171903916107" name="bound" index="3qUE_r" />
</concept>
<concept id="7812454656619025412" name="jetbrains.mps.baseLanguage.structure.LocalMethodCall" flags="nn" index="1rXfSq" />
<concept id="1107535904670" name="jetbrains.mps.baseLanguage.structure.ClassifierType" flags="in" index="3uibUv">
<reference id="1107535924139" name="classifier" index="3uigEE" />
@ -459,16 +457,16 @@
<node concept="3cqZAl" id="7kTeLbPt4nb" role="3clF45" />
<node concept="3Tm1VV" id="7kTeLbPt4nc" role="1B3o_S" />
<node concept="3clFbS" id="7kTeLbPt4nd" role="3clF47">
<node concept="3clFbF" id="78H58oeCDR7" role="3cqZAp">
<node concept="37vLTI" id="78H58oeCDR9" role="3clFbG">
<node concept="2OqwBi" id="78H58oeCETT" role="37vLTJ">
<node concept="Xjq3P" id="78H58oeCF2z" role="2Oq$k0" />
<node concept="2OwXpG" id="78H58oeCETW" role="2OqNvi">
<ref role="2Oxat5" node="78H58oeCDR1" resolve="aspectClique" />
<node concept="3clFbF" id="6nFpYluo50v" role="3cqZAp">
<node concept="37vLTI" id="6nFpYluo50x" role="3clFbG">
<node concept="2OqwBi" id="6nFpYluo7Rv" role="37vLTJ">
<node concept="Xjq3P" id="6nFpYluo7VR" role="2Oq$k0" />
<node concept="2OwXpG" id="6nFpYluo7Ry" role="2OqNvi">
<ref role="2Oxat5" node="6nFpYluo50r" resolve="session" />
</node>
</node>
<node concept="37vLTw" id="78H58oeCDRd" role="37vLTx">
<ref role="3cqZAo" node="78H58oeCC_9" resolve="aspectClique" />
<node concept="37vLTw" id="6nFpYluo50_" role="37vLTx">
<ref role="3cqZAo" node="6nFpYlumWDt" resolve="session" />
</node>
</node>
</node>
@ -498,27 +496,24 @@
</node>
</node>
</node>
<node concept="3clFbF" id="2Y70AYEbIyc" role="3cqZAp">
<node concept="37vLTI" id="2Y70AYEbIye" role="3clFbG">
<node concept="2OqwBi" id="2Y70AYEbKAH" role="37vLTJ">
<node concept="Xjq3P" id="2Y70AYEbKFu" role="2Oq$k0" />
<node concept="2OwXpG" id="2Y70AYEbKAK" role="2OqNvi">
<ref role="2Oxat5" node="2Y70AYEbIy8" resolve="messageHandler" />
<node concept="3clFbF" id="6nFpYluqFer" role="3cqZAp">
<node concept="37vLTI" id="6nFpYluqFet" role="3clFbG">
<node concept="2OqwBi" id="6nFpYluqGJ3" role="37vLTJ">
<node concept="Xjq3P" id="6nFpYluqGRk" role="2Oq$k0" />
<node concept="2OwXpG" id="6nFpYluqHj6" role="2OqNvi">
<ref role="2Oxat5" node="6nFpYluqFen" resolve="rules" />
</node>
</node>
<node concept="37vLTw" id="2Y70AYEbIyi" role="37vLTx">
<ref role="3cqZAo" node="2Y70AYEbHFt" resolve="messageHandler" />
<node concept="37vLTw" id="6nFpYluqFex" role="37vLTx">
<ref role="3cqZAo" node="6nFpYluqCFz" resolve="rules" />
</node>
</node>
</node>
</node>
<node concept="37vLTG" id="78H58oeCC_9" role="3clF46">
<property role="TrG5h" value="aspectClique" />
<node concept="3uibUv" id="78H58oeCCR1" role="1tU5fm">
<ref role="3uigEE" to="fqlx:3KN3A4uUhmW" resolve="AspectClique" />
<node concept="16syzq" id="3KN3A4vACD1" role="11_B2D">
<ref role="16sUi3" node="3KN3A4vA$Xq" resolve="T" />
</node>
<node concept="37vLTG" id="6nFpYlumWDt" role="3clF46">
<property role="TrG5h" value="session" />
<node concept="3uibUv" id="6nFpYlumX8t" role="1tU5fm">
<ref role="3uigEE" to="hano:CGeqIk8WWU" resolve="RuleProcessingSession" />
</node>
</node>
<node concept="37vLTG" id="7kTeLbPt4nq" role="3clF46">
@ -531,10 +526,10 @@
<ref role="3uigEE" to="lui2:~SRepository" resolve="SRepository" />
</node>
</node>
<node concept="37vLTG" id="2Y70AYEbHFt" role="3clF46">
<property role="TrG5h" value="messageHandler" />
<node concept="3uibUv" id="2Y70AYEbI0M" role="1tU5fm">
<ref role="3uigEE" to="et5u:~IMessageHandler" resolve="IMessageHandler" />
<node concept="37vLTG" id="6nFpYluqCFz" role="3clF46">
<property role="TrG5h" value="rules" />
<node concept="3uibUv" id="6nFpYluqD3K" role="1tU5fm">
<ref role="3uigEE" to="ksgm:7DvO2M9Uago" resolve="RulesListTable" />
</node>
</node>
</node>
@ -560,16 +555,16 @@
</node>
</node>
</node>
<node concept="3clFbF" id="78H58oeCFG7" role="3cqZAp">
<node concept="37vLTI" id="78H58oeCFG8" role="3clFbG">
<node concept="2OqwBi" id="78H58oeCFG9" role="37vLTJ">
<node concept="Xjq3P" id="78H58oeCFGa" role="2Oq$k0" />
<node concept="2OwXpG" id="78H58oeCFGb" role="2OqNvi">
<ref role="2Oxat5" node="78H58oeCDR1" resolve="aspectClique" />
<node concept="3clFbF" id="6nFpYluo9mg" role="3cqZAp">
<node concept="37vLTI" id="6nFpYluo9mh" role="3clFbG">
<node concept="2OqwBi" id="6nFpYluo9mi" role="37vLTJ">
<node concept="Xjq3P" id="6nFpYluo9mj" role="2Oq$k0" />
<node concept="2OwXpG" id="6nFpYluo9mk" role="2OqNvi">
<ref role="2Oxat5" node="6nFpYluo50r" resolve="session" />
</node>
</node>
<node concept="37vLTw" id="78H58oeCFGc" role="37vLTx">
<ref role="3cqZAo" node="78H58oeCDi5" resolve="aspectClique" />
<node concept="37vLTw" id="6nFpYluoap5" role="37vLTx">
<ref role="3cqZAo" node="6nFpYluo8Vd" resolve="session" />
</node>
</node>
</node>
@ -599,17 +594,17 @@
</node>
</node>
</node>
<node concept="3clFbF" id="2Y70AYEbLoH" role="3cqZAp">
<node concept="37vLTI" id="2Y70AYEbMxo" role="3clFbG">
<node concept="37vLTw" id="2Y70AYEbML6" role="37vLTx">
<ref role="3cqZAo" node="2Y70AYEbI3K" resolve="messageHandler" />
</node>
<node concept="2OqwBi" id="2Y70AYEbLRC" role="37vLTJ">
<node concept="Xjq3P" id="2Y70AYEbLoF" role="2Oq$k0" />
<node concept="2OwXpG" id="2Y70AYEbMe6" role="2OqNvi">
<ref role="2Oxat5" node="2Y70AYEbIy8" resolve="messageHandler" />
<node concept="3clFbF" id="6nFpYluqHOj" role="3cqZAp">
<node concept="37vLTI" id="6nFpYluqHOk" role="3clFbG">
<node concept="2OqwBi" id="6nFpYluqHOl" role="37vLTJ">
<node concept="Xjq3P" id="6nFpYluqHOm" role="2Oq$k0" />
<node concept="2OwXpG" id="6nFpYluqHOn" role="2OqNvi">
<ref role="2Oxat5" node="6nFpYluqFen" resolve="rules" />
</node>
</node>
<node concept="37vLTw" id="6nFpYluqHOo" role="37vLTx">
<ref role="3cqZAo" node="6nFpYluqHqg" resolve="rules" />
</node>
</node>
</node>
<node concept="3clFbF" id="7WKNeR9fkhk" role="3cqZAp">
@ -639,13 +634,10 @@
</node>
</node>
</node>
<node concept="37vLTG" id="78H58oeCDi5" role="3clF46">
<property role="TrG5h" value="aspectClique" />
<node concept="3uibUv" id="78H58oeCDi6" role="1tU5fm">
<ref role="3uigEE" to="fqlx:3KN3A4uUhmW" resolve="AspectClique" />
<node concept="16syzq" id="3KN3A4vACOO" role="11_B2D">
<ref role="16sUi3" node="3KN3A4vA$Xq" resolve="T" />
</node>
<node concept="37vLTG" id="6nFpYluo8Vd" role="3clF46">
<property role="TrG5h" value="session" />
<node concept="3uibUv" id="6nFpYluo8Ve" role="1tU5fm">
<ref role="3uigEE" to="hano:CGeqIk8WWU" resolve="RuleProcessingSession" />
</node>
</node>
<node concept="37vLTG" id="7WKNeR9fh8z" role="3clF46">
@ -658,10 +650,10 @@
<ref role="3uigEE" to="lui2:~SRepository" resolve="SRepository" />
</node>
</node>
<node concept="37vLTG" id="2Y70AYEbI3K" role="3clF46">
<property role="TrG5h" value="messageHandler" />
<node concept="3uibUv" id="2Y70AYEbIp4" role="1tU5fm">
<ref role="3uigEE" to="et5u:~IMessageHandler" resolve="IMessageHandler" />
<node concept="37vLTG" id="6nFpYluqHqg" role="3clF46">
<property role="TrG5h" value="rules" />
<node concept="3uibUv" id="6nFpYluqHIQ" role="1tU5fm">
<ref role="3uigEE" to="ksgm:7DvO2M9Uago" resolve="RulesListTable" />
</node>
</node>
<node concept="37vLTG" id="7WKNeR9fiNv" role="3clF46">
@ -734,15 +726,6 @@
</node>
</node>
</node>
<node concept="3cpWs8" id="3bpBM3QcQzg" role="3cqZAp">
<node concept="3cpWsn" id="3bpBM3QcQzh" role="3cpWs9">
<property role="TrG5h" value="queryTemplate" />
<node concept="3uibUv" id="3bpBM3QcPCH" role="1tU5fm">
<ref role="3uigEE" to="i348:6OXbTD$iNPP" resolve="QueryTemplate" />
</node>
<node concept="10Nm6u" id="3bpBM3Qdd_w" role="33vP2m" />
</node>
</node>
<node concept="3cpWs8" id="3bpBM3Qd2kZ" role="3cqZAp">
<node concept="3cpWsn" id="3bpBM3Qd2l0" role="3cpWs9">
<property role="TrG5h" value="programProducer" />
@ -838,49 +821,27 @@
</node>
</node>
<node concept="3clFbH" id="3KN3A4vCMHE" role="3cqZAp" />
<node concept="3cpWs8" id="12QmIoyMK_E" role="3cqZAp">
<node concept="3cpWsn" id="12QmIoyMK_F" role="3cpWs9">
<property role="TrG5h" value="session" />
<node concept="3uibUv" id="12QmIoyMK_t" role="1tU5fm">
<ref role="3uigEE" to="hano:CGeqIk8WWU" resolve="RuleProcessingSession" />
<node concept="3SKdUt" id="6nFpYluoz_Y" role="3cqZAp">
<node concept="1PaTwC" id="6nFpYluoz_Z" role="3ndbpf">
<node concept="3oM_SD" id="6nFpYluozA1" role="1PaTwD">
<property role="3oM_SC" value="TODO" />
</node>
<node concept="2ShNRf" id="78H58oeCt5l" role="33vP2m">
<node concept="1pGfFk" id="78H58oeCt1b" role="2ShVmc">
<ref role="37wK5l" to="hano:7DvO2M9VeM1" resolve="RuleProcessingSession" />
<node concept="1eOMI4" id="3KN3A4vAMyF" role="37wK5m">
<node concept="10QFUN" id="3KN3A4vAMyC" role="1eOMHV">
<node concept="A3Dl8" id="3KN3A4vAMyH" role="10QFUM">
<node concept="3qUE_q" id="3KN3A4vAMyI" role="A3Ik2">
<node concept="3uibUv" id="3KN3A4vAMyJ" role="3qUE_r">
<ref role="3uigEE" to="fqlx:NKt6yomNZE" resolve="CoderulesAspect" />
</node>
</node>
</node>
<node concept="2OqwBi" id="3KN3A4vAMyN" role="10QFUP">
<node concept="liA8E" id="3KN3A4vAMyO" role="2OqNvi">
<ref role="37wK5l" to="fqlx:3KN3A4uUhpW" resolve="aspects" />
</node>
<node concept="37vLTw" id="3KN3A4vCKAN" role="2Oq$k0">
<ref role="3cqZAo" node="78H58oeCDR1" resolve="aspectClique" />
</node>
</node>
</node>
</node>
<node concept="37vLTw" id="72RDgIN3WaB" role="37wK5m">
<ref role="3cqZAo" node="6kREIVkLEGt" resolve="repository" />
</node>
<node concept="37vLTw" id="2Y70AYEcIUh" role="37wK5m">
<ref role="3cqZAo" node="2Y70AYEbIy8" resolve="messageHandler" />
</node>
</node>
<node concept="3oM_SD" id="6nFpYluo$CQ" role="1PaTwD">
<property role="3oM_SC" value="move" />
</node>
<node concept="3oM_SD" id="6nFpYluo$CT" role="1PaTwD">
<property role="3oM_SC" value="to" />
</node>
<node concept="3oM_SD" id="6nFpYluo$CX" role="1PaTwD">
<property role="3oM_SC" value="effect" />
</node>
</node>
</node>
<node concept="3clFbF" id="12QmIoyMCZG" role="3cqZAp">
<node concept="37vLTI" id="12QmIoyMG$S" role="3clFbG">
<node concept="2OqwBi" id="12QmIoyMIwn" role="37vLTx">
<node concept="37vLTw" id="12QmIoyMLJe" role="2Oq$k0">
<ref role="3cqZAo" node="12QmIoyMK_F" resolve="session" />
<node concept="37vLTw" id="6nFpYluoxOE" role="2Oq$k0">
<ref role="3cqZAo" node="6nFpYluo50r" resolve="session" />
</node>
<node concept="liA8E" id="12QmIoyMJ_Z" role="2OqNvi">
<ref role="37wK5l" to="hano:20Ay2VeR9qk" resolve="ruleTemplates" />
@ -894,40 +855,7 @@
</node>
</node>
</node>
<node concept="3clFbF" id="3bpBM3QcX9C" role="3cqZAp">
<node concept="37vLTI" id="3bpBM3QcX9E" role="3clFbG">
<node concept="3K4zz7" id="3bpBM3QcQzi" role="37vLTx">
<node concept="10Nm6u" id="3bpBM3QcQzj" role="3K4GZi" />
<node concept="3y3z36" id="3bpBM3QcQzk" role="3K4Cdx">
<node concept="10Nm6u" id="3bpBM3QcQzl" role="3uHU7w" />
<node concept="37vLTw" id="3bpBM3QcQzm" role="3uHU7B">
<ref role="3cqZAo" node="7WKNeR9fj4f" resolve="queryKind" />
</node>
</node>
<node concept="1eOMI4" id="3bpBM3QcQzn" role="3K4E3e">
<node concept="2OqwBi" id="3bpBM3QcQzo" role="1eOMHV">
<node concept="2OqwBi" id="3bpBM3QcQzp" role="2Oq$k0">
<node concept="37vLTw" id="3bpBM3QcQzq" role="2Oq$k0">
<ref role="3cqZAo" node="12QmIoyMK_F" resolve="session" />
</node>
<node concept="liA8E" id="3bpBM3QcQzr" role="2OqNvi">
<ref role="37wK5l" to="hano:7WKNeR9alW4" resolve="queryTemplates" />
</node>
</node>
<node concept="liA8E" id="3bpBM3QcQzs" role="2OqNvi">
<ref role="37wK5l" to="hano:4t7Xo7inmSj" resolve="byKind" />
<node concept="37vLTw" id="3bpBM3QcQzt" role="37wK5m">
<ref role="3cqZAo" node="7WKNeR9fj4f" resolve="queryKind" />
</node>
</node>
</node>
</node>
</node>
<node concept="37vLTw" id="3bpBM3QcX9I" role="37vLTJ">
<ref role="3cqZAo" node="3bpBM3QcQzh" resolve="queryTemplate" />
</node>
</node>
</node>
<node concept="3clFbH" id="cmlg9OHFn3" role="3cqZAp" />
<node concept="3clFbF" id="3bpBM3Qd92Y" role="3cqZAp">
<node concept="37vLTI" id="3bpBM3Qd930" role="3clFbG">
<node concept="2ShNRf" id="3bpBM3Qd2l1" role="37vLTx">
@ -936,11 +864,11 @@
<node concept="37vLTw" id="3bpBM3Qd2l4" role="37wK5m">
<ref role="3cqZAo" node="Hg6Enc4Wb5" resolve="nameHint" />
</node>
<node concept="37vLTw" id="3bpBM3Qd2l6" role="37wK5m">
<ref role="3cqZAo" node="12QmIoyMK_F" resolve="session" />
<node concept="37vLTw" id="6nFpYluoAc4" role="37wK5m">
<ref role="3cqZAo" node="6nFpYluo50r" resolve="session" />
</node>
<node concept="37vLTw" id="3bpBM3Qd2l7" role="37wK5m">
<ref role="3cqZAo" node="3bpBM3QcQzh" resolve="queryTemplate" />
<node concept="1rXfSq" id="6nFpYluVY5_" role="37wK5m">
<ref role="37wK5l" node="6nFpYluVUvm" resolve="queryTemplate" />
</node>
</node>
</node>
@ -949,6 +877,15 @@
</node>
</node>
</node>
<node concept="3clFbF" id="6nFpYluZ8e2" role="3cqZAp">
<node concept="1rXfSq" id="6nFpYluZ8e0" role="3clFbG">
<ref role="37wK5l" node="6nFpYluWG8P" resolve="configureProgram" />
<node concept="37vLTw" id="6nFpYluZ9aA" role="37wK5m">
<ref role="3cqZAo" node="3bpBM3Qd2l0" resolve="programProducer" />
</node>
</node>
</node>
<node concept="3clFbH" id="6nFpYluZ9DC" role="3cqZAp" />
<node concept="3clFbF" id="7kTeLbPtIoT" role="3cqZAp">
<node concept="37vLTI" id="7kTeLbPtIoU" role="3clFbG">
<node concept="37vLTw" id="7kTeLbPtIoV" role="37vLTJ">
@ -957,6 +894,9 @@
<node concept="2OqwBi" id="7kTeLbPtIoW" role="37vLTx">
<node concept="liA8E" id="7kTeLbPtIoY" role="2OqNvi">
<ref role="37wK5l" to="hano:7kTeLbPojCz" resolve="produce" />
<node concept="37vLTw" id="6nFpYlur4Wi" role="37wK5m">
<ref role="3cqZAo" node="6nFpYluqFen" resolve="rules" />
</node>
<node concept="37vLTw" id="7kTeLbPtKEF" role="37wK5m">
<ref role="3cqZAo" node="7kTeLbPt5$3" resolve="nodes" />
</node>
@ -1001,8 +941,8 @@
</node>
<node concept="liA8E" id="2j1FRbx55Ua" role="2OqNvi">
<ref role="37wK5l" node="6BMBBPCRIcz" resolve="is" />
<node concept="37vLTw" id="2j1FRbx55Ub" role="37wK5m">
<ref role="3cqZAo" node="3bpBM3QcQzh" resolve="queryTemplate" />
<node concept="1rXfSq" id="6nFpYluVYFV" role="37wK5m">
<ref role="37wK5l" node="6nFpYluVUvm" resolve="queryTemplate" />
</node>
</node>
</node>
@ -1108,6 +1048,91 @@
<ref role="2AI5Lk" to="wyt6:~Override" resolve="Override" />
</node>
</node>
<node concept="2tJIrI" id="6nFpYluWEFF" role="jymVt" />
<node concept="3clFb_" id="6nFpYluWG8P" role="jymVt">
<property role="TrG5h" value="configureProgram" />
<node concept="37vLTG" id="6nFpYluWKou" role="3clF46">
<property role="TrG5h" value="programProducer" />
<node concept="3uibUv" id="6nFpYluWL8U" role="1tU5fm">
<ref role="3uigEE" to="hano:3GlpCDSxTG7" resolve="ProgramProducer" />
</node>
</node>
<node concept="3cqZAl" id="6nFpYluWG8R" role="3clF45" />
<node concept="3Tmbuc" id="6nFpYluWGVX" role="1B3o_S" />
<node concept="3clFbS" id="6nFpYluWG8T" role="3clF47">
<node concept="3clFbF" id="6nFpYluWLtJ" role="3cqZAp">
<node concept="2OqwBi" id="6nFpYluWLEt" role="3clFbG">
<node concept="37vLTw" id="6nFpYluWLtI" role="2Oq$k0">
<ref role="3cqZAo" node="6nFpYluWKou" resolve="programProducer" />
</node>
<node concept="liA8E" id="6nFpYluWLNT" role="2OqNvi">
<ref role="37wK5l" to="hano:6nFpYluWwIS" resolve="setOriginIndex" />
<node concept="2ShNRf" id="6nFpYluWLSR" role="37wK5m">
<node concept="HV5vD" id="6nFpYluWMw8" role="2ShVmc">
<ref role="HV5vE" to="ksgm:70Wv0dJhQb2" resolve="OriginIndex" />
</node>
</node>
</node>
</node>
</node>
<node concept="3clFbF" id="4hQVL4fgQu7" role="3cqZAp">
<node concept="2OqwBi" id="4hQVL4fgQu8" role="3clFbG">
<node concept="37vLTw" id="4hQVL4fgQu9" role="2Oq$k0">
<ref role="3cqZAo" node="6nFpYluWKou" resolve="programProducer" />
</node>
<node concept="liA8E" id="4hQVL4fgQua" role="2OqNvi">
<ref role="37wK5l" to="hano:6nFpYluW_Ik" resolve="setUpdatesRecorder" />
<node concept="2ShNRf" id="4hQVL4fgQub" role="37wK5m">
<node concept="1pGfFk" id="4hQVL4fgVyX" role="2ShVmc">
<ref role="37wK5l" to="ksgm:6nFpYlu7fpM" resolve="UpdatesRecorder" />
<node concept="10Nm6u" id="4hQVL4fgVDt" role="37wK5m" />
<node concept="10Nm6u" id="4hQVL4fgVKe" role="37wK5m" />
</node>
</node>
</node>
</node>
</node>
</node>
</node>
<node concept="2tJIrI" id="6nFpYluVVXi" role="jymVt" />
<node concept="3clFb_" id="6nFpYluVUvm" role="jymVt">
<property role="TrG5h" value="queryTemplate" />
<node concept="3Tmbuc" id="6nFpYluVWHE" role="1B3o_S" />
<node concept="3uibUv" id="6nFpYluVUvo" role="3clF45">
<ref role="3uigEE" to="i348:6OXbTD$iNPP" resolve="QueryTemplate" />
</node>
<node concept="3clFbS" id="6nFpYluVUv7" role="3clF47">
<node concept="3cpWs6" id="6nFpYluVUv8" role="3cqZAp">
<node concept="3K4zz7" id="6nFpYluVUv9" role="3cqZAk">
<node concept="10Nm6u" id="6nFpYluVUva" role="3K4GZi" />
<node concept="3y3z36" id="6nFpYluVUvb" role="3K4Cdx">
<node concept="10Nm6u" id="6nFpYluVUvc" role="3uHU7w" />
<node concept="37vLTw" id="6nFpYluVUvd" role="3uHU7B">
<ref role="3cqZAo" node="7WKNeR9fj4f" resolve="queryKind" />
</node>
</node>
<node concept="1eOMI4" id="6nFpYluVUve" role="3K4E3e">
<node concept="2OqwBi" id="6nFpYluVUvf" role="1eOMHV">
<node concept="2OqwBi" id="6nFpYluVUvg" role="2Oq$k0">
<node concept="37vLTw" id="6nFpYluVUvh" role="2Oq$k0">
<ref role="3cqZAo" node="6nFpYluo50r" resolve="session" />
</node>
<node concept="liA8E" id="6nFpYluVUvi" role="2OqNvi">
<ref role="37wK5l" to="hano:7WKNeR9alW4" resolve="queryTemplates" />
</node>
</node>
<node concept="liA8E" id="6nFpYluVUvj" role="2OqNvi">
<ref role="37wK5l" to="hano:4t7Xo7inmSj" resolve="byKind" />
<node concept="37vLTw" id="6nFpYluVUvk" role="37wK5m">
<ref role="3cqZAo" node="7WKNeR9fj4f" resolve="queryKind" />
</node>
</node>
</node>
</node>
</node>
</node>
</node>
</node>
<node concept="2tJIrI" id="Hg6Enc44mH" role="jymVt" />
<node concept="3clFb_" id="20Ay2VeR9qk" role="jymVt">
<property role="TrG5h" value="ruleTemplates" />
@ -1131,18 +1156,33 @@
<node concept="3qTvmN" id="2j1FRbwX8jV" role="11_B2D" />
</node>
</node>
<node concept="312cEg" id="6nFpYluo50r" role="jymVt">
<property role="TrG5h" value="session" />
<node concept="3Tmbuc" id="6nFpYlur$MU" role="1B3o_S" />
<node concept="3uibUv" id="6nFpYluo50u" role="1tU5fm">
<ref role="3uigEE" to="hano:CGeqIk8WWU" resolve="RuleProcessingSession" />
</node>
</node>
<node concept="312cEg" id="6nFpYluqFen" role="jymVt">
<property role="TrG5h" value="rules" />
<node concept="3Tmbuc" id="6nFpYlurNeP" role="1B3o_S" />
<node concept="3uibUv" id="6nFpYluqFeq" role="1tU5fm">
<ref role="3uigEE" to="ksgm:7DvO2M9Uago" resolve="RulesListTable" />
</node>
</node>
<node concept="312cEg" id="7kTeLbPt5$3" role="jymVt">
<property role="TrG5h" value="nodes" />
<node concept="3Tm6S6" id="7kTeLbPt5$4" role="1B3o_S" />
<node concept="3Tmbuc" id="6nFpYlurxZ8" role="1B3o_S" />
<node concept="2I9FWS" id="7kTeLbPt5$6" role="1tU5fm" />
</node>
<node concept="312cEg" id="6kREIVkLEGt" role="jymVt">
<property role="TrG5h" value="repository" />
<node concept="3Tm6S6" id="6kREIVkLEGu" role="1B3o_S" />
<node concept="3Tmbuc" id="6nFpYlurwNH" role="1B3o_S" />
<node concept="3uibUv" id="443LGHBTIi$" role="1tU5fm">
<ref role="3uigEE" to="lui2:~SRepository" resolve="SRepository" />
</node>
</node>
<node concept="2tJIrI" id="6nFpYlurNYs" role="jymVt" />
<node concept="312cEg" id="7WKNeR9fj4f" role="jymVt">
<property role="TrG5h" value="queryKind" />
<node concept="3Tm6S6" id="7WKNeR9fj4g" role="1B3o_S" />
@ -1159,36 +1199,20 @@
</node>
</node>
</node>
<node concept="312cEg" id="78H58oeCDR1" role="jymVt">
<property role="TrG5h" value="aspectClique" />
<node concept="3Tm6S6" id="78H58oeCDR2" role="1B3o_S" />
<node concept="3uibUv" id="78H58oeCDR4" role="1tU5fm">
<ref role="3uigEE" to="fqlx:3KN3A4uUhmW" resolve="AspectClique" />
<node concept="16syzq" id="3KN3A4vACWG" role="11_B2D">
<ref role="16sUi3" node="3KN3A4vA$Xq" resolve="T" />
</node>
</node>
</node>
<node concept="16euLQ" id="3KN3A4vA$Xq" role="16eVyc">
<property role="TrG5h" value="T" />
<node concept="3uibUv" id="3KN3A4vABPQ" role="3ztrMU">
<ref role="3uigEE" to="fqlx:NKt6yomNZE" resolve="CoderulesAspect" />
</node>
</node>
<node concept="2tJIrI" id="6nFpYlurIXk" role="jymVt" />
<node concept="312cEg" id="12QmIoyMACM" role="jymVt">
<property role="TrG5h" value="ruleTemplateIndex" />
<node concept="3Tm6S6" id="12QmIoyMACN" role="1B3o_S" />
<node concept="3Tm6S6" id="6nFpYlurCQq" role="1B3o_S" />
<node concept="3uibUv" id="12QmIoyMBE$" role="1tU5fm">
<ref role="3uigEE" to="hano:6fdr4UgftiG" resolve="RuleTemplateIndex" />
</node>
</node>
<node concept="312cEg" id="2Y70AYEbIy8" role="jymVt">
<property role="TrG5h" value="messageHandler" />
<node concept="3Tm6S6" id="2Y70AYEbIy9" role="1B3o_S" />
<node concept="3uibUv" id="2Y70AYEbIyb" role="1tU5fm">
<ref role="3uigEE" to="et5u:~IMessageHandler" resolve="IMessageHandler" />
</node>
</node>
</node>
<node concept="312cEu" id="1pPth$lAzAx">
<property role="2bfB8j" value="false" />

View File

@ -34,6 +34,7 @@
<import index="hano" ref="r:2b43b673-12f9-49ea-8e43-d0c7a401586a(jetbrains.mps.lang.coderules.eval)" />
<import index="fqlx" ref="r:2cc226a9-8a78-4010-b962-823343fd28ff(jetbrains.mps.lang.coderules.aspect)" />
<import index="31yc" ref="r:0c18ff61-1cb9-4ff0-a899-c949ad03f97c(jetbrains.mps.coderules.plugin)" />
<import index="ksgm" ref="r:6285678b-007f-4527-bcf5-6fd38ba8c969(jetbrains.mps.lang.coderules.program)" />
<import index="wyt6" ref="6354ebe7-c22a-4a0f-ac54-50b52ab9b065/java:java.lang(JDK/)" implicit="true" />
</imports>
<registry>
@ -102,6 +103,9 @@
<concept id="1188208481402" name="jetbrains.mps.baseLanguage.structure.HasAnnotation" flags="ng" index="2AJDlI">
<child id="1188208488637" name="annotation" index="2AJF6D" />
</concept>
<concept id="2820489544401957797" name="jetbrains.mps.baseLanguage.structure.DefaultClassCreator" flags="nn" index="HV5vD">
<reference id="2820489544401957798" name="classifier" index="HV5vE" />
</concept>
<concept id="1197027756228" name="jetbrains.mps.baseLanguage.structure.DotExpression" flags="nn" index="2OqwBi">
<child id="1197027771414" name="operand" index="2Oq$k0" />
<child id="1197027833540" name="operation" index="2OqNvi" />
@ -135,6 +139,10 @@
</concept>
<concept id="1070534058343" name="jetbrains.mps.baseLanguage.structure.NullLiteral" flags="nn" index="10Nm6u" />
<concept id="1070534644030" name="jetbrains.mps.baseLanguage.structure.BooleanType" flags="in" index="10P_77" />
<concept id="1070534934090" name="jetbrains.mps.baseLanguage.structure.CastExpression" flags="nn" index="10QFUN">
<child id="1070534934091" name="type" index="10QFUM" />
<child id="1070534934092" name="expression" index="10QFUP" />
</concept>
<concept id="1068390468200" name="jetbrains.mps.baseLanguage.structure.FieldDeclaration" flags="ig" index="312cEg" />
<concept id="1068390468198" name="jetbrains.mps.baseLanguage.structure.ClassConcept" flags="ig" index="312cEu">
<property id="1075300953594" name="abstractClass" index="1sVAO0" />
@ -197,6 +205,9 @@
<property id="521412098689998745" name="nonStatic" index="2bfB8j" />
<child id="5375687026011219971" name="member" index="jymVt" unordered="true" />
</concept>
<concept id="1171903916106" name="jetbrains.mps.baseLanguage.structure.UpperBoundType" flags="in" index="3qUE_q">
<child id="1171903916107" name="bound" index="3qUE_r" />
</concept>
<concept id="1107535904670" name="jetbrains.mps.baseLanguage.structure.ClassifierType" flags="in" index="3uibUv">
<reference id="1107535924139" name="classifier" index="3uigEE" />
<child id="1109201940907" name="parameter" index="11_B2D" />
@ -277,6 +288,9 @@
<concept id="1151688443754" name="jetbrains.mps.baseLanguage.collections.structure.ListType" flags="in" index="_YKpA">
<child id="1151688676805" name="elementType" index="_ZDj9" />
</concept>
<concept id="1151689724996" name="jetbrains.mps.baseLanguage.collections.structure.SequenceType" flags="in" index="A3Dl8">
<child id="1151689745422" name="elementType" index="A3Ik2" />
</concept>
<concept id="1237721394592" name="jetbrains.mps.baseLanguage.collections.structure.AbstractContainerCreator" flags="nn" index="HWqM0">
<child id="1237721435808" name="initValue" index="HW$Y0" />
<child id="1237721435807" name="elementType" index="HW$YZ" />
@ -932,6 +946,53 @@
</node>
</node>
</node>
<node concept="3clFbH" id="6nFpYluoqOC" role="3cqZAp" />
<node concept="3cpWs8" id="6nFpYlun4Ee" role="3cqZAp">
<node concept="3cpWsn" id="6nFpYlun4Ef" role="3cpWs9">
<property role="TrG5h" value="session" />
<node concept="3uibUv" id="6nFpYlun4qm" role="1tU5fm">
<ref role="3uigEE" to="hano:CGeqIk8WWU" resolve="RuleProcessingSession" />
</node>
<node concept="2ShNRf" id="6nFpYlun4Eg" role="33vP2m">
<node concept="1pGfFk" id="6nFpYlun4Eh" role="2ShVmc">
<ref role="37wK5l" to="hano:7DvO2M9VeM1" resolve="RuleProcessingSession" />
<node concept="1eOMI4" id="6nFpYlun4Ei" role="37wK5m">
<node concept="10QFUN" id="6nFpYlun4Ej" role="1eOMHV">
<node concept="A3Dl8" id="6nFpYlun4Ek" role="10QFUM">
<node concept="3qUE_q" id="6nFpYlun4El" role="A3Ik2">
<node concept="3uibUv" id="6nFpYlun4Em" role="3qUE_r">
<ref role="3uigEE" to="fqlx:NKt6yomNZE" resolve="CoderulesAspect" />
</node>
</node>
</node>
<node concept="2OqwBi" id="6nFpYlun4En" role="10QFUP">
<node concept="liA8E" id="6nFpYlun4Eo" role="2OqNvi">
<ref role="37wK5l" to="fqlx:3KN3A4uUhpW" resolve="aspects" />
</node>
<node concept="2OqwBi" id="6nFpYlun4Ep" role="2Oq$k0">
<node concept="37vLTw" id="6nFpYluoouI" role="2Oq$k0">
<ref role="3cqZAo" node="3KN3A4vD8oh" resolve="acs" />
</node>
<node concept="1uHKPH" id="6nFpYlun4Er" role="2OqNvi" />
</node>
</node>
</node>
</node>
<node concept="37vLTw" id="6nFpYlun4Es" role="37wK5m">
<ref role="3cqZAo" node="7WKNeR8SQxI" resolve="repository" />
</node>
<node concept="2YIFZM" id="6nFpYluopot" role="37wK5m">
<ref role="1Pybhc" to="31yc:4MaHsBDdlvx" resolve="MessageLog" />
<ref role="37wK5l" to="31yc:2mhJggjuVj0" resolve="get" />
<node concept="37vLTw" id="6nFpYluopou" role="37wK5m">
<ref role="3cqZAo" node="6hqFpWnfkNg" resolve="mpsProject" />
</node>
</node>
</node>
</node>
</node>
</node>
<node concept="3clFbH" id="6nFpYluojwy" role="3cqZAp" />
<node concept="3clFbF" id="7WKNeR8TcXy" role="3cqZAp">
<node concept="2OqwBi" id="7WKNeR8TcXz" role="3clFbG">
<node concept="37vLTw" id="7WKNeR8TcX$" role="2Oq$k0">
@ -941,8 +1002,8 @@
<node concept="2ShNRf" id="7WKNeR8TcXE" role="25WWJ7">
<node concept="1pGfFk" id="7WKNeR8TcXF" role="2ShVmc">
<ref role="37wK5l" to="1yqb:7WKNeR9fh8j" resolve="ApplyTemplatesStep" />
<node concept="37vLTw" id="5MNibEMW$5c" role="37wK5m">
<ref role="3cqZAo" node="5MNibEMW$58" resolve="clique" />
<node concept="37vLTw" id="6nFpYluoru8" role="37wK5m">
<ref role="3cqZAo" node="6nFpYlun4Ef" resolve="session" />
</node>
<node concept="2OqwBi" id="7WKNeR8TcXG" role="37wK5m">
<node concept="Xjq3P" id="7WKNeR8TcXH" role="2Oq$k0" />
@ -953,11 +1014,9 @@
<node concept="37vLTw" id="7WKNeR8ThOi" role="37wK5m">
<ref role="3cqZAo" node="7WKNeR8SQxI" resolve="repository" />
</node>
<node concept="2YIFZM" id="2Y70AYEc1s7" role="37wK5m">
<ref role="1Pybhc" to="31yc:4MaHsBDdlvx" resolve="MessageLog" />
<ref role="37wK5l" to="31yc:2mhJggjuVj0" resolve="get" />
<node concept="37vLTw" id="2Y70AYEc1Yz" role="37wK5m">
<ref role="3cqZAo" node="6hqFpWnfkNg" resolve="mpsProject" />
<node concept="2ShNRf" id="6nFpYlur12C" role="37wK5m">
<node concept="HV5vD" id="6nFpYlur2oF" role="2ShVmc">
<ref role="HV5vE" to="ksgm:7DvO2M9Uago" resolve="RulesListTable" />
</node>
</node>
<node concept="37vLTw" id="7WKNeR9foS9" role="37wK5m">

View File

@ -507,13 +507,16 @@
</node>
<node concept="liA8E" id="1zN1RIlhwhy" role="2OqNvi">
<ref role="37wK5l" node="5s497Vrh7Sb" resolve="g1" />
<node concept="37vLTw" id="1zN1RIlhwhz" role="37wK5m">
<node concept="37vLTw" id="9dktABGphU" role="37wK5m">
<ref role="3cqZAo" node="5s497Vrh7Te" resolve="h" />
</node>
</node>
</node>
</node>
<node concept="3clFbH" id="1zN1RIlhwl_" role="3cqZAp" />
<node concept="3clFbH" id="9dktABpQ0C" role="3cqZAp" />
<node concept="3clFbH" id="9dktABpwT0" role="3cqZAp" />
<node concept="3clFbH" id="9dktABoRIx" role="3cqZAp" />
<node concept="3clFbH" id="4Zz6A5Iio9Z" role="3cqZAp" />
<node concept="3cpWs8" id="5PpdwMfGzNT" role="3cqZAp">
<node concept="3cpWsn" id="5PpdwMfGzNU" role="3cpWs9">
<property role="TrG5h" value="b1" />