Introduce expand/call macro pseudo constraints.

The old expand/call constructs are to be replaced by these.
Expand macro constraint refers to a named prototype, which
is specified in a macro table for matching concept.
Call macro constraint refers directly to a macro template.
Contex parameters are to be retired and explicit
parameters to expand macro constraint are to be used instead.
This commit is contained in:
Fedor Isakov 2020-03-25 17:46:56 +01:00
parent 6672ab21e8
commit 4260346cb9
5 changed files with 1589 additions and 43 deletions

View File

@ -46,6 +46,7 @@
<import index="xnrr" ref="r:4fd33103-fc30-42f4-a8cf-d1e858f21988(jetbrains.mps.lang.coderules.program.analysis)" />
<import index="7ed7" ref="r:48788b84-8ecd-41f5-ad03-cc8c09b1f186(jetbrains.mps.lang.coderules.analysis)" />
<import index="i8bi" ref="r:c3548bac-30eb-4a2a-937c-0111d5697309(jetbrains.mps.lang.smodel.generator.smodelAdapter)" />
<import index="82uw" ref="6354ebe7-c22a-4a0f-ac54-50b52ab9b065/java:java.util.function(JDK/)" />
<import index="tpcu" ref="r:00000000-0000-4000-0000-011c89590282(jetbrains.mps.lang.core.behavior)" implicit="true" />
</imports>
<registry>
@ -4929,9 +4930,9 @@
<ref role="2rZz_L" to="tpee:fz12cDC" resolve="FieldDeclaration" />
</node>
<node concept="2rT7sh" id="7XmdqtdHiM8" role="2rTMjI">
<property role="TrG5h" value="macro_class" />
<ref role="2rTdP9" to="wq2x:1pPth$m5Bbz" resolve="MacroDeclaration" />
<property role="TrG5h" value="macro_token_class" />
<ref role="2rZz_L" to="tpee:fz12cDA" resolve="ClassConcept" />
<ref role="2rTdP9" to="wq2x:5itBwM56wgT" resolve="MacroTemplate" />
</node>
<node concept="2rT7sh" id="7IysFeAiAcO" role="2rTMjI">
<property role="TrG5h" value="macro_inputNode_variable" />
@ -4940,8 +4941,8 @@
</node>
<node concept="2rT7sh" id="6EY0p2x1Uxb" role="2rTMjI">
<property role="TrG5h" value="macro_inputNode_field" />
<ref role="2rTdP9" to="wq2x:1pPth$m5Bbz" resolve="MacroDeclaration" />
<ref role="2rZz_L" to="tpee:fz12cDC" resolve="FieldDeclaration" />
<ref role="2rTdP9" to="wq2x:5itBwM56wgT" resolve="MacroTemplate" />
</node>
<node concept="2rT7sh" id="4JJCDIm$O$I" role="2rTMjI">
<property role="TrG5h" value="macro_template_constructor" />
@ -4954,15 +4955,10 @@
<ref role="2rZz_L" to="tpee:fz7vLUk" resolve="ParameterDeclaration" />
</node>
<node concept="2rT7sh" id="5itBwM61GZv" role="2rTMjI">
<property role="TrG5h" value="param_field" />
<property role="TrG5h" value="macro_param_field" />
<ref role="2rZz_L" to="tpee:fz12cDC" resolve="FieldDeclaration" />
<ref role="2rTdP9" to="tpee:4H$HgYMZ7sw" resolve="IVariableDeclaration" />
</node>
<node concept="2rT7sh" id="5itBwM6Miwn" role="2rTMjI">
<property role="TrG5h" value="expand_token" />
<ref role="2rZz_L" to="tpee:fz12cDA" resolve="ClassConcept" />
<ref role="2rTdP9" to="wq2x:5itBwM65AQ4" resolve="ExpandMacroTemplate" />
</node>
<node concept="3lhOvk" id="2N2MQGCMWNw" role="3lj3bC">
<ref role="30HIoZ" to="wq2x:1pPth$m5B4X" resolve="MacroTable" />
<ref role="3lhOvi" node="2N2MQGCMHqo" resolve="_MacroTable" />
@ -5389,6 +5385,68 @@
</node>
</node>
</node>
<node concept="3aamgX" id="5itBwM7K1kc" role="3acgRq">
<ref role="30HIoZ" to="wq2x:5itBwM7J4Oh" resolve="ExpandMacroInputReference" />
<node concept="1Koe21" id="5itBwM7K9HW" role="1lVwrX">
<node concept="312cEu" id="5itBwM7K9HX" role="1Koe22">
<property role="TrG5h" value="Context" />
<node concept="312cEg" id="5itBwM7K9HY" role="jymVt">
<property role="TrG5h" value="field" />
<node concept="3Tm6S6" id="5itBwM7K9HZ" role="1B3o_S" />
<node concept="3uibUv" id="5itBwM7K9I0" role="1tU5fm">
<ref role="3uigEE" to="wyt6:~Object" resolve="Object" />
</node>
</node>
<node concept="3clFb_" id="5itBwM7K9I1" role="jymVt">
<property role="TrG5h" value="context" />
<node concept="3uibUv" id="5itBwM7K9I2" role="3clF45">
<ref role="3uigEE" to="wyt6:~Object" resolve="Object" />
</node>
<node concept="3Tm6S6" id="5itBwM7K9I3" role="1B3o_S" />
<node concept="3clFbS" id="5itBwM7K9I4" role="3clF47">
<node concept="3clFbF" id="5itBwM7K9I5" role="3cqZAp">
<node concept="37vLTw" id="5itBwM7K9I6" role="3clFbG">
<ref role="3cqZAo" node="5itBwM7K9HY" resolve="field" />
<node concept="raruj" id="5itBwM7K9I7" role="lGtFl" />
<node concept="1ZhdrF" id="5itBwM7K9I8" role="lGtFl">
<property role="P3scX" value="f3061a53-9226-4cc5-a443-f952ceaf5816/1068498886296/1068581517664" />
<property role="2qtEX8" value="variableDeclaration" />
<node concept="3$xsQk" id="5itBwM7K9I9" role="3$ytzL">
<node concept="3clFbS" id="5itBwM7K9Ia" role="2VODD2">
<node concept="3clFbF" id="5itBwM7K9Ib" role="3cqZAp">
<node concept="2OqwBi" id="5itBwM7K9Ic" role="3clFbG">
<node concept="1iwH7S" id="5itBwM7K9Id" role="2Oq$k0" />
<node concept="1iwH70" id="5itBwM7K9Ie" role="2OqNvi">
<ref role="1iwH77" node="6EY0p2x1Uxb" resolve="macro_inputNode_field" />
<node concept="2OqwBi" id="5itBwM7KbG0" role="1iwH7V">
<node concept="2OqwBi" id="5itBwM7K9If" role="2Oq$k0">
<node concept="30H73N" id="5itBwM7K9Ig" role="2Oq$k0" />
<node concept="3TrEf2" id="5itBwM7Kaze" role="2OqNvi">
<ref role="3Tt5mk" to="wq2x:5itBwM7J4Oi" resolve="declaration" />
</node>
</node>
<node concept="2Xjw5R" id="5itBwM7KbYJ" role="2OqNvi">
<node concept="1xMEDy" id="5itBwM7KbYL" role="1xVPHs">
<node concept="chp4Y" id="5itBwM7Kc2F" role="ri$Ld">
<ref role="cht4Q" to="wq2x:5itBwM65AQ4" resolve="ExpandMacroTemplate" />
</node>
</node>
</node>
</node>
</node>
</node>
</node>
</node>
</node>
</node>
</node>
</node>
</node>
</node>
<node concept="3Tm6S6" id="5itBwM7K9Ii" role="1B3o_S" />
</node>
</node>
</node>
<node concept="3aamgX" id="5itBwM6Z77s" role="3acgRq">
<ref role="30HIoZ" to="wq2x:5itBwM6_4x3" resolve="ExpandMacroParameterReference" />
<node concept="1Koe21" id="5itBwM6ZbCV" role="1lVwrX">
@ -5421,7 +5479,7 @@
<node concept="2OqwBi" id="5itBwM6ZbDb" role="3clFbG">
<node concept="1iwH7S" id="5itBwM6ZbDc" role="2Oq$k0" />
<node concept="1iwH70" id="5itBwM6ZbDd" role="2OqNvi">
<ref role="1iwH77" node="5itBwM61GZv" resolve="param_field" />
<ref role="1iwH77" node="5itBwM61GZv" resolve="macro_param_field" />
<node concept="2OqwBi" id="5itBwM6ZbDe" role="1iwH7V">
<node concept="30H73N" id="5itBwM6ZbDf" role="2Oq$k0" />
<node concept="3TrEf2" id="5itBwM6ZgRR" role="2OqNvi">
@ -8708,12 +8766,6 @@
<node concept="3clFbS" id="7IysFeABN$$" role="2VODD2">
<node concept="3clFbF" id="7IysFeABNXT" role="3cqZAp">
<node concept="2OqwBi" id="7IysFeABOfh" role="3clFbG">
<node concept="2OqwBi" id="7IysFeAFpWJ" role="2Oq$k0">
<node concept="30H73N" id="7IysFeABNXS" role="2Oq$k0" />
<node concept="3TrEf2" id="7IysFeAFqbj" role="2OqNvi">
<ref role="3Tt5mk" to="5j4j:7E86$tK_PaH" resolve="declaration" />
</node>
</node>
<node concept="2Xjw5R" id="7IysFeABO_r" role="2OqNvi">
<node concept="1xMEDy" id="7IysFeABO_t" role="1xVPHs">
<node concept="chp4Y" id="7IysFeABOG1" role="ri$Ld">
@ -8721,6 +8773,12 @@
</node>
</node>
</node>
<node concept="2OqwBi" id="7IysFeAFpWJ" role="2Oq$k0">
<node concept="30H73N" id="7IysFeABNXS" role="2Oq$k0" />
<node concept="3TrEf2" id="7IysFeAFqbj" role="2OqNvi">
<ref role="3Tt5mk" to="5j4j:7E86$tK_PaH" resolve="declaration" />
</node>
</node>
</node>
</node>
</node>
@ -8818,21 +8876,21 @@
<ref role="v9R2y" node="7IysFeABCnp" resolve="logicalContainer_variables_use" />
<node concept="3NFfHV" id="7IysFeABPx1" role="1sPUBK">
<node concept="3clFbS" id="7IysFeABPx2" role="2VODD2">
<node concept="3clFbF" id="7IysFeABPNP" role="3cqZAp">
<node concept="2OqwBi" id="7IysFeABQ0N" role="3clFbG">
<node concept="2OqwBi" id="7IysFeAFqxi" role="2Oq$k0">
<node concept="30H73N" id="7IysFeABPNN" role="2Oq$k0" />
<node concept="3TrEf2" id="7IysFeAFqUr" role="2OqNvi">
<ref role="3Tt5mk" to="5j4j:7E86$tK_PaH" resolve="declaration" />
</node>
</node>
<node concept="2Xjw5R" id="7IysFeABQn2" role="2OqNvi">
<node concept="1xMEDy" id="7IysFeABQn4" role="1xVPHs">
<node concept="chp4Y" id="7IysFeABQtH" role="ri$Ld">
<node concept="3clFbF" id="5itBwM84xDm" role="3cqZAp">
<node concept="2OqwBi" id="5itBwM84xDn" role="3clFbG">
<node concept="2Xjw5R" id="5itBwM84xDo" role="2OqNvi">
<node concept="1xMEDy" id="5itBwM84xDp" role="1xVPHs">
<node concept="chp4Y" id="5itBwM84xDq" role="ri$Ld">
<ref role="cht4Q" to="5j4j:75vUFrS_9Sg" resolve="LogicalVariableDeclarationContainer" />
</node>
</node>
</node>
<node concept="2OqwBi" id="5itBwM84xDu" role="2Oq$k0">
<node concept="30H73N" id="5itBwM84xDv" role="2Oq$k0" />
<node concept="3TrEf2" id="5itBwM84xDw" role="2OqNvi">
<ref role="3Tt5mk" to="5j4j:7E86$tK_PaH" resolve="declaration" />
</node>
</node>
</node>
</node>
</node>
@ -9900,19 +9958,21 @@
<node concept="3clFbS" id="7XmdqtdHq9N" role="2VODD2">
<node concept="3cpWs8" id="7XmdqtdH_b4" role="3cqZAp">
<node concept="3cpWsn" id="7XmdqtdH_b5" role="3cpWs9">
<property role="TrG5h" value="td" />
<property role="TrG5h" value="mt" />
<node concept="3Tqbb2" id="7XmdqtdH_aZ" role="1tU5fm">
<ref role="ehGHo" to="wq2x:1pPth$m5Bbz" resolve="MacroDeclaration" />
<ref role="ehGHo" to="wq2x:5itBwM56wgT" resolve="MacroTemplate" />
</node>
<node concept="2OqwBi" id="7XmdqtdH_b6" role="33vP2m">
<node concept="2Xjw5R" id="7XmdqtdH_bd" role="2OqNvi">
<node concept="1xMEDy" id="7XmdqtdH_be" role="1xVPHs">
<node concept="chp4Y" id="7XmdqtdH_bf" role="ri$Ld">
<ref role="cht4Q" to="wq2x:1pPth$m5Bbz" resolve="MacroDeclaration" />
<node concept="chp4Y" id="5itBwM82Uw6" role="ri$Ld">
<ref role="cht4Q" to="wq2x:5itBwM56wgT" resolve="MacroTemplate" />
</node>
</node>
</node>
<node concept="30H73N" id="7XmdqtdMFN0" role="2Oq$k0" />
<node concept="v3LJS" id="5itBwM85IQi" role="2Oq$k0">
<ref role="v3LJV" node="5wZaC7XJCJi" resolve="logicalVar" />
</node>
</node>
</node>
</node>
@ -9920,9 +9980,9 @@
<node concept="2OqwBi" id="7XmdqtdNiTp" role="3clFbG">
<node concept="1iwH7S" id="7XmdqtdNiTq" role="2Oq$k0" />
<node concept="1iwH70" id="7XmdqtdNiTr" role="2OqNvi">
<ref role="1iwH77" node="7XmdqtdHiM8" resolve="macro_class" />
<ref role="1iwH77" node="7XmdqtdHiM8" resolve="macro_token_class" />
<node concept="37vLTw" id="7XmdqtdNiTs" role="1iwH7V">
<ref role="3cqZAo" node="7XmdqtdH_b5" resolve="td" />
<ref role="3cqZAo" node="7XmdqtdH_b5" resolve="mt" />
</node>
</node>
</node>
@ -9939,6 +9999,94 @@
</node>
</node>
</node>
<node concept="30G5F_" id="5itBwM85HIp" role="30HLyM">
<node concept="3clFbS" id="5itBwM85HIq" role="2VODD2">
<node concept="3clFbF" id="5itBwM85HK$" role="3cqZAp">
<node concept="2OqwBi" id="5itBwM85Iu5" role="3clFbG">
<node concept="2OqwBi" id="5itBwM85HYO" role="2Oq$k0">
<node concept="30H73N" id="5itBwM85HKz" role="2Oq$k0" />
<node concept="2Xjw5R" id="5itBwM85I96" role="2OqNvi">
<node concept="1xMEDy" id="5itBwM85I98" role="1xVPHs">
<node concept="chp4Y" id="5itBwM85Ibt" role="ri$Ld">
<ref role="cht4Q" to="wq2x:5itBwM6cWQh" resolve="ExpandMacroPrototype" />
</node>
</node>
</node>
</node>
<node concept="3x8VRR" id="5itBwM85IFI" role="2OqNvi" />
</node>
</node>
</node>
</node>
</node>
<node concept="3aamgX" id="5itBwM85Hr3" role="3aUrZf">
<property role="36QftV" value="true" />
<ref role="30HIoZ" to="wq2x:7IysFe_ZPXH" resolve="MacroBodyLogicalDeclaration" />
<node concept="1Koe21" id="5itBwM85Hr4" role="1lVwrX">
<node concept="312cEu" id="5itBwM85Hr5" role="1Koe22">
<property role="TrG5h" value="Context" />
<property role="2bfB8j" value="true" />
<node concept="3Tm6S6" id="5itBwM85Hr6" role="1B3o_S" />
<node concept="312cEu" id="5itBwM85Hr7" role="jymVt">
<property role="2bfB8j" value="true" />
<property role="TrG5h" value="Inner" />
<node concept="3clFb_" id="5itBwM85Hr8" role="jymVt">
<property role="TrG5h" value="init" />
<node concept="3uibUv" id="5itBwM85Hr9" role="3clF45">
<ref role="3uigEE" to="wyt6:~Object" resolve="Object" />
</node>
<node concept="3Tm1VV" id="5itBwM85Hra" role="1B3o_S" />
<node concept="3clFbS" id="5itBwM85Hrb" role="3clF47">
<node concept="3clFbF" id="5itBwM85Hrc" role="3cqZAp">
<node concept="Xjq3P" id="5itBwM85Hrd" role="3clFbG">
<ref role="1HBi2w" node="5itBwM85Hr5" resolve="Context" />
<node concept="raruj" id="5itBwM85Hre" role="lGtFl" />
<node concept="1ZhdrF" id="5itBwM85Hrf" role="lGtFl">
<property role="P3scX" value="f3061a53-9226-4cc5-a443-f952ceaf5816/1070475354124/1182955020723" />
<property role="2qtEX8" value="classConcept" />
<node concept="3$xsQk" id="5itBwM85Hrg" role="3$ytzL">
<node concept="3clFbS" id="5itBwM85Hrh" role="2VODD2">
<node concept="3cpWs8" id="5itBwM85Hri" role="3cqZAp">
<node concept="3cpWsn" id="5itBwM85Hrj" role="3cpWs9">
<property role="TrG5h" value="mt" />
<node concept="3Tqbb2" id="5itBwM85Hrk" role="1tU5fm">
<ref role="ehGHo" to="wq2x:5itBwM56wgT" resolve="MacroTemplate" />
</node>
<node concept="2OqwBi" id="5itBwM85Hrl" role="33vP2m">
<node concept="2Xjw5R" id="5itBwM85Hrm" role="2OqNvi">
<node concept="1xMEDy" id="5itBwM85Hrn" role="1xVPHs">
<node concept="chp4Y" id="5itBwM85Hro" role="ri$Ld">
<ref role="cht4Q" to="wq2x:5itBwM56wgT" resolve="MacroTemplate" />
</node>
</node>
</node>
<node concept="30H73N" id="5itBwM85Hrp" role="2Oq$k0" />
</node>
</node>
</node>
<node concept="3clFbF" id="5itBwM85Hrq" role="3cqZAp">
<node concept="2OqwBi" id="5itBwM85Hrr" role="3clFbG">
<node concept="1iwH7S" id="5itBwM85Hrs" role="2Oq$k0" />
<node concept="1iwH70" id="5itBwM85Hrt" role="2OqNvi">
<ref role="1iwH77" node="7XmdqtdHiM8" resolve="macro_token_class" />
<node concept="37vLTw" id="5itBwM85Hru" role="1iwH7V">
<ref role="3cqZAo" node="5itBwM85Hrj" resolve="mt" />
</node>
</node>
</node>
</node>
</node>
</node>
</node>
</node>
</node>
</node>
</node>
<node concept="2tJIrI" id="5itBwM85Hrv" role="jymVt" />
<node concept="3Tm6S6" id="5itBwM85Hrw" role="1B3o_S" />
</node>
</node>
</node>
</node>
<node concept="j$LIH" id="7IysFeABCo5" role="jxRDz">
<node concept="1lLz0L" id="7IysFeABCo6" role="1lHHLF">
@ -10824,7 +10972,7 @@
<ref role="3uigEE" to="psr6:1eKXYsjvsOy" resolve="MacroTemplate.Token" />
</node>
<node concept="2ZBi8u" id="7XmdqtdNdU0" role="lGtFl">
<ref role="2rW$FS" node="7XmdqtdHiM8" resolve="macro_class" />
<ref role="2rW$FS" node="7XmdqtdHiM8" resolve="macro_token_class" />
</node>
</node>
<node concept="2tJIrI" id="1GNw78$gI1a" role="jymVt" />
@ -12284,6 +12432,622 @@
</node>
</node>
</node>
<node concept="3aamgX" id="5itBwM7WZbC" role="3aUrZf">
<property role="36QftV" value="true" />
<ref role="30HIoZ" to="wq2x:5itBwM7LtBf" resolve="CallMacroConstraint" />
<node concept="1Koe21" id="5itBwM7X0bq" role="1lVwrX">
<node concept="3clFb_" id="5itBwM7X0bI" role="1Koe22">
<property role="TrG5h" value="method" />
<node concept="37vLTG" id="5itBwM7X0cc" role="3clF46">
<property role="TrG5h" value="session" />
<node concept="3uibUv" id="5itBwM7X0cq" role="1tU5fm">
<ref role="3uigEE" to="i348:18kNIl1vDPZ" resolve="TemplateApplicationSession" />
</node>
</node>
<node concept="3cqZAl" id="5itBwM7X0bM" role="3clF45" />
<node concept="3Tm1VV" id="5itBwM7X0bN" role="1B3o_S" />
<node concept="3clFbS" id="5itBwM7X0bO" role="3clF47">
<node concept="3cpWs8" id="5itBwM7X0h8" role="3cqZAp">
<node concept="3cpWsn" id="5itBwM7X0h9" role="3cpWs9">
<property role="TrG5h" value="builder" />
<node concept="3uibUv" id="5itBwM7X0ha" role="1tU5fm">
<ref role="3uigEE" to="i348:7eGEHDlc$ap" resolve="RuleBuilder" />
</node>
<node concept="2ShNRf" id="5itBwM7X0hb" role="33vP2m">
<node concept="1pGfFk" id="5itBwM7X0hc" role="2ShVmc">
<ref role="37wK5l" to="i348:5yr01fE1Jnt" resolve="RuleBuilder" />
<node concept="10Nm6u" id="5itBwM7X0hd" role="37wK5m" />
<node concept="Xl_RD" id="5itBwM7X0he" role="37wK5m">
<property role="Xl_RC" value="" />
</node>
</node>
</node>
</node>
</node>
<node concept="3clFbH" id="5itBwM7X0hm" role="3cqZAp" />
<node concept="3clFbF" id="5itBwM7X0lC" role="3cqZAp">
<node concept="2OqwBi" id="5itBwM7X0rl" role="3clFbG">
<node concept="37vLTw" id="5itBwM7X0lA" role="2Oq$k0">
<ref role="3cqZAo" node="5itBwM7X0h9" resolve="builder" />
<node concept="1sPUBX" id="5itBwM7YTPR" role="lGtFl">
<ref role="v9R2y" node="1L74NXE_$78" resolve="builder_variable" />
<node concept="3NFfHV" id="5itBwM7YU1Z" role="1sPUBK">
<node concept="3clFbS" id="5itBwM7YU20" role="2VODD2">
<node concept="3clFbF" id="5itBwM7YUqp" role="3cqZAp">
<node concept="2OqwBi" id="5itBwM7YUqq" role="3clFbG">
<node concept="30H73N" id="5itBwM7YUqr" role="2Oq$k0" />
<node concept="2Xjw5R" id="5itBwM7YUqs" role="2OqNvi">
<node concept="3gmYPX" id="5itBwM7YUqt" role="1xVPHs">
<node concept="3gn64h" id="5itBwM7YUqu" role="3gmYPZ">
<ref role="3gnhBz" to="wq2x:7IysFeBd3kI" resolve="ApplicationSessionParticipant" />
</node>
<node concept="3gn64h" id="5itBwM7YUqv" role="3gmYPZ">
<ref role="3gnhBz" to="tpee:fzclF7W" resolve="BaseMethodDeclaration" />
</node>
</node>
</node>
</node>
</node>
</node>
</node>
</node>
</node>
<node concept="liA8E" id="5itBwM7X0x0" role="2OqNvi">
<ref role="37wK5l" to="i348:77AxcO4ZwMR" resolve="merge" />
<node concept="2OqwBi" id="5itBwM7X0GH" role="37wK5m">
<node concept="37vLTw" id="5itBwM7X0z$" role="2Oq$k0">
<ref role="3cqZAo" node="5itBwM7X0cc" resolve="session" />
<node concept="1sPUBX" id="5itBwM7YViD" role="lGtFl">
<ref role="v9R2y" node="1L74NXExmCW" resolve="session_variable" />
<node concept="3NFfHV" id="5itBwM7YVvg" role="1sPUBK">
<node concept="3clFbS" id="5itBwM7YVvh" role="2VODD2">
<node concept="3clFbF" id="5itBwM7YVGe" role="3cqZAp">
<node concept="2OqwBi" id="5itBwM7YVGf" role="3clFbG">
<node concept="30H73N" id="5itBwM7YVGg" role="2Oq$k0" />
<node concept="2Xjw5R" id="5itBwM7YVGh" role="2OqNvi">
<node concept="3gmYPX" id="5itBwM7YVGi" role="1xVPHs">
<node concept="3gn64h" id="5itBwM7YVGj" role="3gmYPZ">
<ref role="3gnhBz" to="wq2x:7IysFeBd3kI" resolve="ApplicationSessionParticipant" />
</node>
<node concept="3gn64h" id="5itBwM7YVGk" role="3gmYPZ">
<ref role="3gnhBz" to="tpee:fzclF7W" resolve="BaseMethodDeclaration" />
</node>
</node>
</node>
</node>
</node>
</node>
</node>
</node>
</node>
<node concept="liA8E" id="5itBwM7X0P0" role="2OqNvi">
<ref role="37wK5l" to="i348:5itBwM7V_fy" resolve="callMacro" />
<node concept="2YIFZM" id="5itBwM7X0UU" role="37wK5m">
<ref role="1Pybhc" to="w1kc:~SNodePointer" resolve="SNodePointer" />
<ref role="37wK5l" to="w1kc:~SNodePointer.deserialize(java.lang.String)" resolve="deserialize" />
<node concept="Xl_RD" id="5itBwM7X0UV" role="37wK5m">
<property role="Xl_RC" value="" />
<node concept="17Uvod" id="5itBwM7X0UW" role="lGtFl">
<property role="P4ACc" value="f3061a53-9226-4cc5-a443-f952ceaf5816/1070475926800/1070475926801" />
<property role="2qtEX9" value="value" />
<node concept="3zFVjK" id="5itBwM7X0UX" role="3zH0cK">
<node concept="3clFbS" id="5itBwM7X0UY" role="2VODD2">
<node concept="3clFbF" id="5itBwM7X0UZ" role="3cqZAp">
<node concept="2OqwBi" id="5itBwM7X0V0" role="3clFbG">
<node concept="2YIFZM" id="5itBwM7X0V1" role="2Oq$k0">
<ref role="37wK5l" to="dush:~PersistenceFacade.getInstance()" resolve="getInstance" />
<ref role="1Pybhc" to="dush:~PersistenceFacade" resolve="PersistenceFacade" />
</node>
<node concept="liA8E" id="5itBwM7X0V2" role="2OqNvi">
<ref role="37wK5l" to="dush:~PersistenceFacade.asString(org.jetbrains.mps.openapi.model.SNodeReference)" resolve="asString" />
<node concept="2OqwBi" id="5itBwM7X0V3" role="37wK5m">
<node concept="2JrnkZ" id="5itBwM7X0V4" role="2Oq$k0">
<node concept="2OqwBi" id="5itBwM7X0V5" role="2JrQYb">
<node concept="30H73N" id="5itBwM7X0V6" role="2Oq$k0" />
<node concept="3TrEf2" id="5itBwM7X1zr" role="2OqNvi">
<ref role="3Tt5mk" to="wq2x:5itBwM7LtYS" resolve="template" />
</node>
</node>
</node>
<node concept="liA8E" id="5itBwM7X0V8" role="2OqNvi">
<ref role="37wK5l" to="mhbf:~SNode.getReference()" resolve="getReference" />
</node>
</node>
</node>
</node>
</node>
</node>
</node>
</node>
</node>
</node>
<node concept="2ShNRf" id="5itBwM7X2cR" role="37wK5m">
<node concept="YeOm9" id="5itBwM7X3mz" role="2ShVmc">
<node concept="1Y3b0j" id="5itBwM7X3mA" role="YeSDq">
<property role="2bfB8j" value="true" />
<ref role="1Y3XeK" to="82uw:~Function" resolve="Function" />
<ref role="37wK5l" to="wyt6:~Object.&lt;init&gt;()" resolve="Object" />
<node concept="3Tm1VV" id="5itBwM7X3mB" role="1B3o_S" />
<node concept="3clFb_" id="5itBwM7X3mH" role="jymVt">
<property role="TrG5h" value="apply" />
<node concept="3Tm1VV" id="5itBwM7X3mI" role="1B3o_S" />
<node concept="3uibUv" id="5itBwM7X3mZ" role="3clF45">
<ref role="3uigEE" to="i348:7eGEHDlc$ap" resolve="RuleBuilder" />
</node>
<node concept="37vLTG" id="5itBwM7X3mL" role="3clF46">
<property role="TrG5h" value="tok" />
<node concept="3uibUv" id="5itBwM7YRsE" role="1tU5fm">
<ref role="3uigEE" to="psr6:1eKXYsjvsOy" resolve="MacroTemplate.Token" />
</node>
</node>
<node concept="3clFbS" id="5itBwM7X3mN" role="3clF47">
<node concept="3clFbF" id="5itBwM7YRHD" role="3cqZAp">
<node concept="2OqwBi" id="5itBwM7YS6G" role="3clFbG">
<node concept="2OqwBi" id="5itBwM7YRZS" role="2Oq$k0">
<node concept="2OqwBi" id="5itBwM7YRQc" role="2Oq$k0">
<node concept="37vLTw" id="5itBwM7YRHC" role="2Oq$k0">
<ref role="3cqZAo" node="5itBwM7X3mL" resolve="tok" />
</node>
<node concept="liA8E" id="5itBwM7YRYM" role="2OqNvi">
<ref role="37wK5l" to="psr6:5itBwM7bY25" resolve="withLogical" />
<node concept="10Nm6u" id="5itBwM81Tj$" role="37wK5m">
<node concept="2b32R4" id="5itBwM81TnV" role="lGtFl">
<node concept="3JmXsc" id="5itBwM81TnW" role="2P8S$">
<node concept="3clFbS" id="5itBwM81TnX" role="2VODD2">
<node concept="3clFbF" id="5itBwM81TuV" role="3cqZAp">
<node concept="2OqwBi" id="5itBwM81TG6" role="3clFbG">
<node concept="30H73N" id="5itBwM81TuU" role="2Oq$k0" />
<node concept="3Tsc0h" id="5itBwM81TU6" role="2OqNvi">
<ref role="3TtcxE" to="wq2x:5itBwM7Lv0S" resolve="logical" />
</node>
</node>
</node>
</node>
</node>
</node>
</node>
</node>
</node>
<node concept="liA8E" id="5itBwM7YS54" role="2OqNvi">
<ref role="37wK5l" to="psr6:5itBwM7bY1X" resolve="withParam" />
<node concept="10Nm6u" id="5itBwM81Ugl" role="37wK5m">
<node concept="2b32R4" id="5itBwM81Umd" role="lGtFl">
<node concept="3JmXsc" id="5itBwM81Ume" role="2P8S$">
<node concept="3clFbS" id="5itBwM81Umf" role="2VODD2">
<node concept="3clFbF" id="5itBwM81Usn" role="3cqZAp">
<node concept="2OqwBi" id="5itBwM81UBk" role="3clFbG">
<node concept="30H73N" id="5itBwM81Usm" role="2Oq$k0" />
<node concept="3Tsc0h" id="5itBwM81UW2" role="2OqNvi">
<ref role="3TtcxE" to="wq2x:5itBwM7Pl2b" resolve="argument" />
</node>
</node>
</node>
</node>
</node>
</node>
</node>
</node>
</node>
<node concept="liA8E" id="5itBwM7YSci" role="2OqNvi">
<ref role="37wK5l" to="psr6:5itBwM7bY2d" resolve="apply" />
</node>
</node>
</node>
</node>
<node concept="2AHcQZ" id="5itBwM7X3mP" role="2AJF6D">
<ref role="2AI5Lk" to="wyt6:~Override" resolve="Override" />
</node>
</node>
<node concept="3uibUv" id="5itBwM7YR33" role="2Ghqu4">
<ref role="3uigEE" to="psr6:1eKXYsjvsOy" resolve="MacroTemplate.Token" />
</node>
<node concept="3uibUv" id="5itBwM7X3mY" role="2Ghqu4">
<ref role="3uigEE" to="i348:7eGEHDlc$ap" resolve="RuleBuilder" />
</node>
</node>
</node>
</node>
</node>
</node>
</node>
</node>
<node concept="raruj" id="5itBwM7YT3k" role="lGtFl" />
</node>
</node>
</node>
</node>
</node>
<node concept="3aamgX" id="5itBwM7Zh1B" role="3aUrZf">
<property role="36QftV" value="true" />
<ref role="30HIoZ" to="wq2x:5itBwM7GBv1" resolve="ExpandMacroConstraint" />
<node concept="1Koe21" id="5itBwM7Zh1C" role="1lVwrX">
<node concept="3clFb_" id="5itBwM7Zh1D" role="1Koe22">
<property role="TrG5h" value="method" />
<node concept="37vLTG" id="5itBwM7Zh1E" role="3clF46">
<property role="TrG5h" value="session" />
<node concept="3uibUv" id="5itBwM7Zh1F" role="1tU5fm">
<ref role="3uigEE" to="i348:18kNIl1vDPZ" resolve="TemplateApplicationSession" />
</node>
</node>
<node concept="3cqZAl" id="5itBwM7Zh1G" role="3clF45" />
<node concept="3Tm1VV" id="5itBwM7Zh1H" role="1B3o_S" />
<node concept="3clFbS" id="5itBwM7Zh1I" role="3clF47">
<node concept="3cpWs8" id="5itBwM7Zh1J" role="3cqZAp">
<node concept="3cpWsn" id="5itBwM7Zh1K" role="3cpWs9">
<property role="TrG5h" value="builder" />
<node concept="3uibUv" id="5itBwM7Zh1L" role="1tU5fm">
<ref role="3uigEE" to="i348:7eGEHDlc$ap" resolve="RuleBuilder" />
</node>
<node concept="2ShNRf" id="5itBwM7Zh1M" role="33vP2m">
<node concept="1pGfFk" id="5itBwM7Zh1N" role="2ShVmc">
<ref role="37wK5l" to="i348:5yr01fE1Jnt" resolve="RuleBuilder" />
<node concept="10Nm6u" id="5itBwM7Zh1O" role="37wK5m" />
<node concept="Xl_RD" id="5itBwM7Zh1P" role="37wK5m">
<property role="Xl_RC" value="" />
</node>
</node>
</node>
</node>
</node>
<node concept="3clFbH" id="5itBwM7ZzLP" role="3cqZAp" />
<node concept="2GUZhq" id="5itBwM7Zssq" role="3cqZAp">
<node concept="3clFbS" id="5itBwM7Zsss" role="2GV8ay">
<node concept="3clFbF" id="5itBwM7Ztgt" role="3cqZAp">
<node concept="2OqwBi" id="5itBwM7Ztwu" role="3clFbG">
<node concept="37vLTw" id="5itBwM7Ztgv" role="2Oq$k0">
<ref role="3cqZAo" node="5itBwM7Zh1E" resolve="session" />
<node concept="1sPUBX" id="5itBwM7Ztgw" role="lGtFl">
<ref role="v9R2y" node="1L74NXExmCW" resolve="session_variable" />
<node concept="3NFfHV" id="5itBwM7Ztgx" role="1sPUBK">
<node concept="3clFbS" id="5itBwM7Ztgy" role="2VODD2">
<node concept="3clFbF" id="5itBwM7Ztgz" role="3cqZAp">
<node concept="2OqwBi" id="5itBwM7Ztg$" role="3clFbG">
<node concept="30H73N" id="5itBwM7Ztg_" role="2Oq$k0" />
<node concept="2Xjw5R" id="5itBwM7ZtgA" role="2OqNvi">
<node concept="3gmYPX" id="5itBwM7ZtgB" role="1xVPHs">
<node concept="3gn64h" id="5itBwM7ZtgC" role="3gmYPZ">
<ref role="3gnhBz" to="wq2x:7IysFeBd3kI" resolve="ApplicationSessionParticipant" />
</node>
<node concept="3gn64h" id="5itBwM7ZtgD" role="3gmYPZ">
<ref role="3gnhBz" to="tpee:fzclF7W" resolve="BaseMethodDeclaration" />
</node>
</node>
</node>
</node>
</node>
</node>
</node>
</node>
</node>
<node concept="liA8E" id="5itBwM7ZtQA" role="2OqNvi">
<ref role="37wK5l" to="i348:7DvO2M9IiMh" resolve="putParameter" />
<node concept="Xl_RD" id="5itBwM7Zupw" role="37wK5m">
<node concept="17Uvod" id="5itBwM81O2A" role="lGtFl">
<property role="2qtEX9" value="value" />
<property role="P4ACc" value="f3061a53-9226-4cc5-a443-f952ceaf5816/1070475926800/1070475926801" />
<node concept="3zFVjK" id="5itBwM81O2B" role="3zH0cK">
<node concept="3clFbS" id="5itBwM81O2C" role="2VODD2">
<node concept="3clFbF" id="5itBwM81P_D" role="3cqZAp">
<node concept="2OqwBi" id="5itBwM81QlS" role="3clFbG">
<node concept="2OqwBi" id="5itBwM81PNX" role="2Oq$k0">
<node concept="30H73N" id="5itBwM81P_C" role="2Oq$k0" />
<node concept="3TrEf2" id="5itBwM81PZx" role="2OqNvi">
<ref role="3Tt5mk" to="wq2x:5itBwM7QPtQ" resolve="declaration" />
</node>
</node>
<node concept="2qgKlT" id="5itBwM81QAL" role="2OqNvi">
<ref role="37wK5l" to="tpcu:hEwIO9y" resolve="getFqName" />
</node>
</node>
</node>
</node>
</node>
</node>
</node>
<node concept="10Nm6u" id="5itBwM81Of$" role="37wK5m">
<node concept="29HgVG" id="5itBwM81OjE" role="lGtFl">
<node concept="3NFfHV" id="5itBwM81QUb" role="3NFExx">
<node concept="3clFbS" id="5itBwM81QUc" role="2VODD2">
<node concept="3clFbF" id="5itBwM81QZq" role="3cqZAp">
<node concept="2OqwBi" id="5itBwM81R98" role="3clFbG">
<node concept="30H73N" id="5itBwM81QZp" role="2Oq$k0" />
<node concept="3TrEf2" id="5itBwM81RkK" role="2OqNvi">
<ref role="3Tt5mk" to="wq2x:5itBwM7QPtO" resolve="argument" />
</node>
</node>
</node>
</node>
</node>
</node>
</node>
</node>
</node>
<node concept="1WS0z7" id="5itBwM81Opz" role="lGtFl">
<node concept="3JmXsc" id="5itBwM81Op$" role="3Jn$fo">
<node concept="3clFbS" id="5itBwM81Op_" role="2VODD2">
<node concept="3clFbF" id="5itBwM81Owc" role="3cqZAp">
<node concept="2OqwBi" id="5itBwM81Pau" role="3clFbG">
<node concept="2OqwBi" id="5itBwM81OLu" role="2Oq$k0">
<node concept="30H73N" id="5itBwM81Owb" role="2Oq$k0" />
<node concept="3TrEf2" id="5itBwM81OYu" role="2OqNvi">
<ref role="3Tt5mk" to="wq2x:5itBwM7QPB1" resolve="arglist" />
</node>
</node>
<node concept="3Tsc0h" id="5itBwM81PoE" role="2OqNvi">
<ref role="3TtcxE" to="wq2x:5itBwM7QPw7" resolve="binding" />
</node>
</node>
</node>
</node>
</node>
</node>
</node>
<node concept="3clFbF" id="5itBwM7Zh1R" role="3cqZAp">
<node concept="2OqwBi" id="5itBwM7Zh1S" role="3clFbG">
<node concept="37vLTw" id="5itBwM7Zh1T" role="2Oq$k0">
<ref role="3cqZAo" node="5itBwM7Zh1K" resolve="builder" />
<node concept="1sPUBX" id="5itBwM7Zh1U" role="lGtFl">
<ref role="v9R2y" node="1L74NXE_$78" resolve="builder_variable" />
<node concept="3NFfHV" id="5itBwM7Zh1V" role="1sPUBK">
<node concept="3clFbS" id="5itBwM7Zh1W" role="2VODD2">
<node concept="3clFbF" id="5itBwM7Zh1X" role="3cqZAp">
<node concept="2OqwBi" id="5itBwM7Zh1Y" role="3clFbG">
<node concept="30H73N" id="5itBwM7Zh1Z" role="2Oq$k0" />
<node concept="2Xjw5R" id="5itBwM7Zh20" role="2OqNvi">
<node concept="3gmYPX" id="5itBwM7Zh21" role="1xVPHs">
<node concept="3gn64h" id="5itBwM7Zh22" role="3gmYPZ">
<ref role="3gnhBz" to="wq2x:7IysFeBd3kI" resolve="ApplicationSessionParticipant" />
</node>
<node concept="3gn64h" id="5itBwM7Zh23" role="3gmYPZ">
<ref role="3gnhBz" to="tpee:fzclF7W" resolve="BaseMethodDeclaration" />
</node>
</node>
</node>
</node>
</node>
</node>
</node>
</node>
</node>
<node concept="liA8E" id="5itBwM7Zh24" role="2OqNvi">
<ref role="37wK5l" to="i348:77AxcO4ZwMR" resolve="merge" />
<node concept="2OqwBi" id="5itBwM7Zh25" role="37wK5m">
<node concept="37vLTw" id="5itBwM7Zh26" role="2Oq$k0">
<ref role="3cqZAo" node="5itBwM7Zh1E" resolve="session" />
<node concept="1sPUBX" id="5itBwM7Zh27" role="lGtFl">
<ref role="v9R2y" node="1L74NXExmCW" resolve="session_variable" />
<node concept="3NFfHV" id="5itBwM7Zh28" role="1sPUBK">
<node concept="3clFbS" id="5itBwM7Zh29" role="2VODD2">
<node concept="3clFbF" id="5itBwM7Zh2a" role="3cqZAp">
<node concept="2OqwBi" id="5itBwM7Zh2b" role="3clFbG">
<node concept="30H73N" id="5itBwM7Zh2c" role="2Oq$k0" />
<node concept="2Xjw5R" id="5itBwM7Zh2d" role="2OqNvi">
<node concept="3gmYPX" id="5itBwM7Zh2e" role="1xVPHs">
<node concept="3gn64h" id="5itBwM7Zh2f" role="3gmYPZ">
<ref role="3gnhBz" to="wq2x:7IysFeBd3kI" resolve="ApplicationSessionParticipant" />
</node>
<node concept="3gn64h" id="5itBwM7Zh2g" role="3gmYPZ">
<ref role="3gnhBz" to="tpee:fzclF7W" resolve="BaseMethodDeclaration" />
</node>
</node>
</node>
</node>
</node>
</node>
</node>
</node>
</node>
<node concept="liA8E" id="5itBwM7Zh2h" role="2OqNvi">
<ref role="37wK5l" to="i348:5itBwM7VpML" resolve="expandMacro" />
<node concept="10Nm6u" id="5itBwM7ZkAB" role="37wK5m">
<node concept="29HgVG" id="5itBwM7Zldr" role="lGtFl">
<node concept="3NFfHV" id="5itBwM7Zlqk" role="3NFExx">
<node concept="3clFbS" id="5itBwM7Zlql" role="2VODD2">
<node concept="3clFbF" id="5itBwM7ZlB_" role="3cqZAp">
<node concept="2OqwBi" id="5itBwM7ZlM2" role="3clFbG">
<node concept="30H73N" id="5itBwM7ZlB$" role="2Oq$k0" />
<node concept="3TrEf2" id="5itBwM7ZlWs" role="2OqNvi">
<ref role="3Tt5mk" to="wq2x:5itBwM7GBKT" resolve="input" />
</node>
</node>
</node>
</node>
</node>
</node>
</node>
<node concept="2YIFZM" id="5itBwM7Zh2i" role="37wK5m">
<ref role="1Pybhc" to="w1kc:~SNodePointer" resolve="SNodePointer" />
<ref role="37wK5l" to="w1kc:~SNodePointer.deserialize(java.lang.String)" resolve="deserialize" />
<node concept="Xl_RD" id="5itBwM7Zh2j" role="37wK5m">
<property role="Xl_RC" value="" />
<node concept="17Uvod" id="5itBwM7Zh2k" role="lGtFl">
<property role="P4ACc" value="f3061a53-9226-4cc5-a443-f952ceaf5816/1070475926800/1070475926801" />
<property role="2qtEX9" value="value" />
<node concept="3zFVjK" id="5itBwM7Zh2l" role="3zH0cK">
<node concept="3clFbS" id="5itBwM7Zh2m" role="2VODD2">
<node concept="3clFbF" id="5itBwM7Zh2n" role="3cqZAp">
<node concept="2OqwBi" id="5itBwM7Zh2o" role="3clFbG">
<node concept="2YIFZM" id="5itBwM7Zh2p" role="2Oq$k0">
<ref role="37wK5l" to="dush:~PersistenceFacade.getInstance()" resolve="getInstance" />
<ref role="1Pybhc" to="dush:~PersistenceFacade" resolve="PersistenceFacade" />
</node>
<node concept="liA8E" id="5itBwM7Zh2q" role="2OqNvi">
<ref role="37wK5l" to="dush:~PersistenceFacade.asString(org.jetbrains.mps.openapi.model.SNodeReference)" resolve="asString" />
<node concept="2OqwBi" id="5itBwM7Zh2r" role="37wK5m">
<node concept="2JrnkZ" id="5itBwM7Zh2s" role="2Oq$k0">
<node concept="2OqwBi" id="5itBwM7Zh2t" role="2JrQYb">
<node concept="30H73N" id="5itBwM7Zh2u" role="2Oq$k0" />
<node concept="3TrEf2" id="5itBwM7ZZnw" role="2OqNvi">
<ref role="3Tt5mk" to="wq2x:5itBwM7GBLp" resolve="template" />
</node>
</node>
</node>
<node concept="liA8E" id="5itBwM7Zh2w" role="2OqNvi">
<ref role="37wK5l" to="mhbf:~SNode.getReference()" resolve="getReference" />
</node>
</node>
</node>
</node>
</node>
</node>
</node>
</node>
</node>
</node>
<node concept="2ShNRf" id="5itBwM7Zh2x" role="37wK5m">
<node concept="YeOm9" id="5itBwM7Zh2y" role="2ShVmc">
<node concept="1Y3b0j" id="5itBwM7Zh2z" role="YeSDq">
<property role="2bfB8j" value="true" />
<ref role="1Y3XeK" to="82uw:~Function" resolve="Function" />
<ref role="37wK5l" to="wyt6:~Object.&lt;init&gt;()" resolve="Object" />
<node concept="3Tm1VV" id="5itBwM7Zh2$" role="1B3o_S" />
<node concept="3clFb_" id="5itBwM7Zh2_" role="jymVt">
<property role="TrG5h" value="apply" />
<node concept="3Tm1VV" id="5itBwM7Zh2A" role="1B3o_S" />
<node concept="3uibUv" id="5itBwM7Zh2B" role="3clF45">
<ref role="3uigEE" to="i348:7eGEHDlc$ap" resolve="RuleBuilder" />
</node>
<node concept="37vLTG" id="5itBwM7Zh2C" role="3clF46">
<property role="TrG5h" value="tok" />
<node concept="3uibUv" id="5itBwM7Zh2D" role="1tU5fm">
<ref role="3uigEE" to="psr6:1eKXYsjvsOy" resolve="MacroTemplate.Token" />
</node>
</node>
<node concept="3clFbS" id="5itBwM7Zh2E" role="3clF47">
<node concept="3clFbF" id="5itBwM7Zh2F" role="3cqZAp">
<node concept="2OqwBi" id="5itBwM7Zh2G" role="3clFbG">
<node concept="2OqwBi" id="5itBwM7Zh2I" role="2Oq$k0">
<node concept="37vLTw" id="5itBwM7Zh2J" role="2Oq$k0">
<ref role="3cqZAo" node="5itBwM7Zh2C" resolve="tok" />
</node>
<node concept="liA8E" id="5itBwM7Zh2K" role="2OqNvi">
<ref role="37wK5l" to="psr6:5itBwM7bY25" resolve="withLogical" />
<node concept="10Nm6u" id="5itBwM81Vj1" role="37wK5m">
<node concept="2b32R4" id="5itBwM81VmC" role="lGtFl">
<node concept="3JmXsc" id="5itBwM81VmD" role="2P8S$">
<node concept="3clFbS" id="5itBwM81VmE" role="2VODD2">
<node concept="3clFbF" id="5itBwM81Vtg" role="3cqZAp">
<node concept="2OqwBi" id="5itBwM81VEr" role="3clFbG">
<node concept="30H73N" id="5itBwM81Vtf" role="2Oq$k0" />
<node concept="3Tsc0h" id="5itBwM81VP9" role="2OqNvi">
<ref role="3TtcxE" to="wq2x:5itBwM7GBKR" resolve="logical" />
</node>
</node>
</node>
</node>
</node>
</node>
</node>
</node>
</node>
<node concept="liA8E" id="5itBwM7Zh2M" role="2OqNvi">
<ref role="37wK5l" to="psr6:5itBwM7bY2d" resolve="apply" />
</node>
</node>
</node>
</node>
<node concept="2AHcQZ" id="5itBwM7Zh2N" role="2AJF6D">
<ref role="2AI5Lk" to="wyt6:~Override" resolve="Override" />
</node>
</node>
<node concept="3uibUv" id="5itBwM7Zh2O" role="2Ghqu4">
<ref role="3uigEE" to="psr6:1eKXYsjvsOy" resolve="MacroTemplate.Token" />
</node>
<node concept="3uibUv" id="5itBwM7Zh2P" role="2Ghqu4">
<ref role="3uigEE" to="i348:7eGEHDlc$ap" resolve="RuleBuilder" />
</node>
</node>
</node>
</node>
</node>
</node>
</node>
</node>
</node>
<node concept="3clFbH" id="5itBwM7Zssr" role="3cqZAp" />
</node>
<node concept="3clFbS" id="5itBwM7Zsst" role="2GVbov">
<node concept="3clFbF" id="5itBwM81Rvn" role="3cqZAp">
<node concept="2OqwBi" id="5itBwM81Rvo" role="3clFbG">
<node concept="37vLTw" id="5itBwM81Rvp" role="2Oq$k0">
<ref role="3cqZAo" node="5itBwM7Zh1E" resolve="session" />
<node concept="1sPUBX" id="5itBwM81Rvq" role="lGtFl">
<ref role="v9R2y" node="1L74NXExmCW" resolve="session_variable" />
<node concept="3NFfHV" id="5itBwM81Rvr" role="1sPUBK">
<node concept="3clFbS" id="5itBwM81Rvs" role="2VODD2">
<node concept="3clFbF" id="5itBwM81Rvt" role="3cqZAp">
<node concept="2OqwBi" id="5itBwM81Rvu" role="3clFbG">
<node concept="30H73N" id="5itBwM81Rvv" role="2Oq$k0" />
<node concept="2Xjw5R" id="5itBwM81Rvw" role="2OqNvi">
<node concept="3gmYPX" id="5itBwM81Rvx" role="1xVPHs">
<node concept="3gn64h" id="5itBwM81Rvy" role="3gmYPZ">
<ref role="3gnhBz" to="wq2x:7IysFeBd3kI" resolve="ApplicationSessionParticipant" />
</node>
<node concept="3gn64h" id="5itBwM81Rvz" role="3gmYPZ">
<ref role="3gnhBz" to="tpee:fzclF7W" resolve="BaseMethodDeclaration" />
</node>
</node>
</node>
</node>
</node>
</node>
</node>
</node>
</node>
<node concept="liA8E" id="5itBwM81Rv$" role="2OqNvi">
<ref role="37wK5l" to="i348:7DvO2M9IiMQ" resolve="removeParameter" />
<node concept="Xl_RD" id="5itBwM81Rv_" role="37wK5m">
<node concept="17Uvod" id="5itBwM81RvA" role="lGtFl">
<property role="2qtEX9" value="value" />
<property role="P4ACc" value="f3061a53-9226-4cc5-a443-f952ceaf5816/1070475926800/1070475926801" />
<node concept="3zFVjK" id="5itBwM81RvB" role="3zH0cK">
<node concept="3clFbS" id="5itBwM81RvC" role="2VODD2">
<node concept="3clFbF" id="5itBwM81RvD" role="3cqZAp">
<node concept="2OqwBi" id="5itBwM81RvE" role="3clFbG">
<node concept="2OqwBi" id="5itBwM81RvF" role="2Oq$k0">
<node concept="30H73N" id="5itBwM81RvG" role="2Oq$k0" />
<node concept="3TrEf2" id="5itBwM81RvH" role="2OqNvi">
<ref role="3Tt5mk" to="wq2x:5itBwM7QPtQ" resolve="declaration" />
</node>
</node>
<node concept="2qgKlT" id="5itBwM81RvI" role="2OqNvi">
<ref role="37wK5l" to="tpcu:hEwIO9y" resolve="getFqName" />
</node>
</node>
</node>
</node>
</node>
</node>
</node>
</node>
</node>
<node concept="1WS0z7" id="5itBwM81RvR" role="lGtFl">
<node concept="3JmXsc" id="5itBwM81RvS" role="3Jn$fo">
<node concept="3clFbS" id="5itBwM81RvT" role="2VODD2">
<node concept="3clFbF" id="5itBwM81RvU" role="3cqZAp">
<node concept="2OqwBi" id="5itBwM81RvV" role="3clFbG">
<node concept="2OqwBi" id="5itBwM81RvW" role="2Oq$k0">
<node concept="30H73N" id="5itBwM81RvX" role="2Oq$k0" />
<node concept="3TrEf2" id="5itBwM81RvY" role="2OqNvi">
<ref role="3Tt5mk" to="wq2x:5itBwM7QPB1" resolve="arglist" />
</node>
</node>
<node concept="3Tsc0h" id="5itBwM81RvZ" role="2OqNvi">
<ref role="3TtcxE" to="wq2x:5itBwM7QPw7" resolve="binding" />
</node>
</node>
</node>
</node>
</node>
</node>
</node>
</node>
<node concept="raruj" id="5itBwM7Zzgz" role="lGtFl" />
</node>
</node>
</node>
</node>
</node>
<node concept="3aamgX" id="7kTeLbPzYQ_" role="3aUrZf">
<property role="36QftV" value="true" />
<ref role="30HIoZ" to="wq2x:6p0DfM0ajMA" resolve="AbstractConstraint" />
@ -17276,7 +18040,7 @@
<node concept="2OqwBi" id="5itBwM63l8b" role="3clFbG">
<node concept="1iwH7S" id="5itBwM63l8c" role="2Oq$k0" />
<node concept="1iwH70" id="5itBwM63l8d" role="2OqNvi">
<ref role="1iwH77" node="5itBwM61GZv" resolve="param_field" />
<ref role="1iwH77" node="5itBwM61GZv" resolve="macro_param_field" />
<node concept="30H73N" id="5itBwM63l8e" role="1iwH7V" />
</node>
</node>
@ -17534,7 +18298,7 @@
</node>
</node>
<node concept="1WS0z7" id="5itBwM611qY" role="lGtFl">
<ref role="2rW$FS" node="5itBwM61GZv" resolve="param_field" />
<ref role="2rW$FS" node="5itBwM61GZv" resolve="macro_param_field" />
<node concept="3JmXsc" id="5itBwM611qZ" role="3Jn$fo">
<node concept="3clFbS" id="5itBwM611r0" role="2VODD2">
<node concept="3clFbF" id="5itBwM611u_" role="3cqZAp">
@ -17595,6 +18359,9 @@
<node concept="3uibUv" id="5itBwM7ezqS" role="EKbjA">
<ref role="3uigEE" to="psr6:1eKXYsjvsOy" resolve="MacroTemplate.Token" />
</node>
<node concept="2ZBi8u" id="5itBwM82QgH" role="lGtFl">
<ref role="2rW$FS" node="7XmdqtdHiM8" resolve="macro_token_class" />
</node>
</node>
<node concept="2tJIrI" id="5itBwM5JiKy" role="jymVt" />
<node concept="3clFbW" id="5itBwM7icrH" role="jymVt">
@ -17864,7 +18631,7 @@
<node concept="2OqwBi" id="5itBwM6XBGJ" role="3clFbG">
<node concept="1iwH7S" id="5itBwM6XBGK" role="2Oq$k0" />
<node concept="1iwH70" id="5itBwM6XBGL" role="2OqNvi">
<ref role="1iwH77" node="5itBwM61GZv" resolve="param_field" />
<ref role="1iwH77" node="5itBwM61GZv" resolve="macro_param_field" />
<node concept="30H73N" id="5itBwM6XBGM" role="1iwH7V" />
</node>
</node>
@ -18142,7 +18909,7 @@
</node>
</node>
<node concept="1WS0z7" id="5itBwM6XBHY" role="lGtFl">
<ref role="2rW$FS" node="5itBwM61GZv" resolve="param_field" />
<ref role="2rW$FS" node="5itBwM61GZv" resolve="macro_param_field" />
<node concept="3JmXsc" id="5itBwM6XBHZ" role="3Jn$fo">
<node concept="3clFbS" id="5itBwM6XBI0" role="2VODD2">
<node concept="3clFbF" id="5itBwM6XBI1" role="3cqZAp">
@ -18242,9 +19009,12 @@
<property role="TrG5h" value="input" />
<node concept="3Tmbuc" id="5itBwM6XBIo" role="1B3o_S" />
<node concept="3Tqbb2" id="5itBwM6XBIp" role="1tU5fm" />
<node concept="2ZBi8u" id="5itBwM7K9ql" role="lGtFl">
<ref role="2rW$FS" node="6EY0p2x1Uxb" resolve="macro_inputNode_field" />
</node>
</node>
<node concept="2ZBi8u" id="5itBwM6XBIq" role="lGtFl">
<ref role="2rW$FS" node="5itBwM6Miwn" resolve="expand_token" />
<ref role="2rW$FS" node="7XmdqtdHiM8" resolve="macro_token_class" />
</node>
<node concept="3uibUv" id="5itBwM7eur5" role="EKbjA">
<ref role="3uigEE" to="psr6:1eKXYsjvsOy" resolve="MacroTemplate.Token" />

View File

@ -234,6 +234,10 @@
<concept id="1204796164442" name="jetbrains.mps.baseLanguage.collections.structure.InternalSequenceOperation" flags="nn" index="23sCx2">
<child id="1204796294226" name="closure" index="23t8la" />
</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" />
</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" />
@ -1614,5 +1618,194 @@
</node>
</node>
</node>
<node concept="1M2fIO" id="5itBwM7J5mp">
<property role="3GE5qa" value="macro.code" />
<ref role="1M2myG" to="wq2x:5itBwM7J4Oh" resolve="ExpandMacroInputReference" />
<node concept="1N5Pfh" id="5itBwM7J5mz" role="1Mr941">
<ref role="1N5Vy1" to="wq2x:5itBwM7J4Oi" resolve="declaration" />
<node concept="3dgokm" id="5itBwM7J5mB" role="1N6uqs">
<node concept="3clFbS" id="5itBwM7J5mD" role="2VODD2">
<node concept="3cpWs8" id="5itBwM7J5QB" role="3cqZAp">
<node concept="3cpWsn" id="5itBwM7J5QC" role="3cpWs9">
<property role="TrG5h" value="tpl" />
<node concept="3Tqbb2" id="5itBwM7J5Q6" role="1tU5fm">
<ref role="ehGHo" to="wq2x:5itBwM65AQ4" resolve="ExpandMacroTemplate" />
</node>
<node concept="2OqwBi" id="5itBwM7J5QD" role="33vP2m">
<node concept="2rP1CM" id="5itBwM7J5QE" role="2Oq$k0" />
<node concept="2Xjw5R" id="5itBwM7J5QF" role="2OqNvi">
<node concept="1xMEDy" id="5itBwM7J5QG" role="1xVPHs">
<node concept="chp4Y" id="5itBwM7J5QH" role="ri$Ld">
<ref role="cht4Q" to="wq2x:5itBwM65AQ4" resolve="ExpandMacroTemplate" />
</node>
</node>
<node concept="1xIGOp" id="5itBwM7J5QI" role="1xVPHs" />
</node>
</node>
</node>
</node>
<node concept="3clFbF" id="5itBwM7J6YO" role="3cqZAp">
<node concept="2ShNRf" id="5itBwM7J6YK" role="3clFbG">
<node concept="YeOm9" id="5itBwM7J8mk" role="2ShVmc">
<node concept="1Y3b0j" id="5itBwM7J8mn" role="YeSDq">
<property role="2bfB8j" value="true" />
<ref role="37wK5l" to="o8zo:4IP40Bi3e_T" resolve="ListScope" />
<ref role="1Y3XeK" to="o8zo:4IP40Bi3e_R" resolve="ListScope" />
<node concept="3Tm1VV" id="5itBwM7J8mo" role="1B3o_S" />
<node concept="2ShNRf" id="5itBwM7J7nz" role="37wK5m">
<node concept="2HTt$P" id="5itBwM7J7Am" role="2ShVmc">
<node concept="3Tqbb2" id="5itBwM7J7BP" role="2HTBi0" />
<node concept="2OqwBi" id="5itBwM7J7Dc" role="2HTEbv">
<node concept="2OqwBi" id="5itBwM7J7Dd" role="2Oq$k0">
<node concept="37vLTw" id="5itBwM7J7De" role="2Oq$k0">
<ref role="3cqZAo" node="5itBwM7J5QC" resolve="tpl" />
</node>
<node concept="3TrEf2" id="5itBwM7J7Df" role="2OqNvi">
<ref role="3Tt5mk" to="wq2x:5itBwM67n1U" resolve="inputSpec" />
</node>
</node>
<node concept="3TrEf2" id="5itBwM7J7Dg" role="2OqNvi">
<ref role="3Tt5mk" to="wq2x:5itBwM66hzH" resolve="input" />
</node>
</node>
</node>
</node>
<node concept="3clFb_" id="5itBwM7J8vX" role="jymVt">
<property role="TrG5h" value="getName" />
<node concept="17QB3L" id="5itBwM7J8vY" role="3clF45" />
<node concept="3Tm1VV" id="5itBwM7J8vZ" role="1B3o_S" />
<node concept="37vLTG" id="5itBwM7J8w1" role="3clF46">
<property role="TrG5h" value="child" />
<node concept="3Tqbb2" id="5itBwM7J8w2" role="1tU5fm" />
</node>
<node concept="3clFbS" id="5itBwM7J8w4" role="3clF47">
<node concept="3clFbF" id="5itBwM7J8KV" role="3cqZAp">
<node concept="2OqwBi" id="5itBwM7J9by" role="3clFbG">
<node concept="1PxgMI" id="5itBwM7J8Z6" role="2Oq$k0">
<property role="1BlNFB" value="true" />
<node concept="chp4Y" id="5itBwM7J92f" role="3oSUPX">
<ref role="cht4Q" to="tpck:h0TrEE$" resolve="INamedConcept" />
</node>
<node concept="37vLTw" id="5itBwM7J8KU" role="1m5AlR">
<ref role="3cqZAo" node="5itBwM7J8w1" resolve="child" />
</node>
</node>
<node concept="3TrcHB" id="5itBwM7J9iG" role="2OqNvi">
<ref role="3TsBF5" to="tpck:h0TrG11" resolve="name" />
</node>
</node>
</node>
</node>
<node concept="2AHcQZ" id="5itBwM7J8w5" role="2AJF6D">
<ref role="2AI5Lk" to="wyt6:~Override" resolve="Override" />
</node>
</node>
</node>
</node>
</node>
</node>
</node>
</node>
</node>
</node>
<node concept="1M2fIO" id="5itBwM7V9DG">
<property role="3GE5qa" value="constraint" />
<ref role="1M2myG" to="wq2x:5itBwM7QPtN" resolve="ExpandMacroConstraintArgBinding" />
<node concept="1N5Pfh" id="5itBwM7V9DH" role="1Mr941">
<ref role="1N5Vy1" to="wq2x:5itBwM7QPtQ" resolve="declaration" />
<node concept="3dgokm" id="5itBwM7V9DV" role="1N6uqs">
<node concept="3clFbS" id="5itBwM7V9DX" role="2VODD2">
<node concept="3cpWs8" id="5itBwM7Va4k" role="3cqZAp">
<node concept="3cpWsn" id="5itBwM7Va4l" role="3cpWs9">
<property role="TrG5h" value="emc" />
<node concept="3Tqbb2" id="5itBwM7Va40" role="1tU5fm">
<ref role="ehGHo" to="wq2x:5itBwM7GBv1" resolve="ExpandMacroConstraint" />
</node>
<node concept="2OqwBi" id="5itBwM7Va4m" role="33vP2m">
<node concept="2rP1CM" id="5itBwM7Va4n" role="2Oq$k0" />
<node concept="2Xjw5R" id="5itBwM7Va4o" role="2OqNvi">
<node concept="1xMEDy" id="5itBwM7Va4p" role="1xVPHs">
<node concept="chp4Y" id="5itBwM7Va4q" role="ri$Ld">
<ref role="cht4Q" to="wq2x:5itBwM7GBv1" resolve="ExpandMacroConstraint" />
</node>
</node>
</node>
</node>
</node>
</node>
<node concept="3clFbF" id="5itBwM7V9H9" role="3cqZAp">
<node concept="2OqwBi" id="5itBwM7VaFG" role="3clFbG">
<node concept="2OqwBi" id="5itBwM7VagF" role="2Oq$k0">
<node concept="37vLTw" id="5itBwM7Va4r" role="2Oq$k0">
<ref role="3cqZAo" node="5itBwM7Va4l" resolve="emc" />
</node>
<node concept="3TrEf2" id="5itBwM7VaqC" role="2OqNvi">
<ref role="3Tt5mk" to="wq2x:5itBwM7GBLp" resolve="template" />
</node>
</node>
<node concept="3Tsc0h" id="5itBwM7VaWs" role="2OqNvi">
<ref role="3TtcxE" to="wq2x:5itBwM6wU6s" resolve="parameter" />
</node>
</node>
</node>
<node concept="3clFbF" id="5itBwM7VbFJ" role="3cqZAp">
<node concept="2ShNRf" id="5itBwM7VbFF" role="3clFbG">
<node concept="YeOm9" id="5itBwM7Vcby" role="2ShVmc">
<node concept="1Y3b0j" id="5itBwM7Vcb_" role="YeSDq">
<property role="2bfB8j" value="true" />
<ref role="37wK5l" to="o8zo:4IP40Bi3e_T" resolve="ListScope" />
<ref role="1Y3XeK" to="o8zo:4IP40Bi3e_R" resolve="ListScope" />
<node concept="3Tm1VV" id="5itBwM7VcbA" role="1B3o_S" />
<node concept="2OqwBi" id="5itBwM7VbVe" role="37wK5m">
<node concept="2OqwBi" id="5itBwM7VbVf" role="2Oq$k0">
<node concept="37vLTw" id="5itBwM7VbVg" role="2Oq$k0">
<ref role="3cqZAo" node="5itBwM7Va4l" resolve="emc" />
</node>
<node concept="3TrEf2" id="5itBwM7VbVh" role="2OqNvi">
<ref role="3Tt5mk" to="wq2x:5itBwM7GBLp" resolve="template" />
</node>
</node>
<node concept="3Tsc0h" id="5itBwM7VbVi" role="2OqNvi">
<ref role="3TtcxE" to="wq2x:5itBwM6wU6s" resolve="parameter" />
</node>
</node>
<node concept="3clFb_" id="5itBwM7VceZ" role="jymVt">
<property role="TrG5h" value="getName" />
<node concept="17QB3L" id="5itBwM7Vcf0" role="3clF45" />
<node concept="3Tm1VV" id="5itBwM7Vcf1" role="1B3o_S" />
<node concept="37vLTG" id="5itBwM7Vcf3" role="3clF46">
<property role="TrG5h" value="child" />
<node concept="3Tqbb2" id="5itBwM7Vcf4" role="1tU5fm" />
</node>
<node concept="3clFbS" id="5itBwM7Vcf6" role="3clF47">
<node concept="3clFbF" id="5itBwM7Vct2" role="3cqZAp">
<node concept="2OqwBi" id="5itBwM7Vd3M" role="3clFbG">
<node concept="1PxgMI" id="5itBwM7VcRY" role="2Oq$k0">
<property role="1BlNFB" value="true" />
<node concept="chp4Y" id="5itBwM7VcUN" role="3oSUPX">
<ref role="cht4Q" to="tpck:h0TrEE$" resolve="INamedConcept" />
</node>
<node concept="37vLTw" id="5itBwM7Vct1" role="1m5AlR">
<ref role="3cqZAo" node="5itBwM7Vcf3" resolve="child" />
</node>
</node>
<node concept="3TrcHB" id="5itBwM7Vddm" role="2OqNvi">
<ref role="3TsBF5" to="tpck:h0TrG11" resolve="name" />
</node>
</node>
</node>
</node>
<node concept="2AHcQZ" id="5itBwM7Vcf7" role="2AJF6D">
<ref role="2AI5Lk" to="wyt6:~Override" resolve="Override" />
</node>
</node>
</node>
</node>
</node>
</node>
</node>
</node>
</node>
</node>
</model>

View File

@ -6409,7 +6409,7 @@
</node>
<node concept="3F0ifn" id="5itBwM6707C" role="1QoVPY">
<property role="3F0ifm" value="" />
<property role="ilYzB" value="&lt;with subconcepts&gt;" />
<property role="ilYzB" value="with subconcepts" />
<ref role="1ERwB7" node="12yN8DyB6zn" resolve="RuleInput_ActionMap" />
<node concept="OXEIz" id="5itBwM6707D" role="P5bDN">
<node concept="1oHujT" id="5itBwM6707E" role="OY2wv">
@ -6713,7 +6713,12 @@
</node>
</node>
<node concept="3F0ifn" id="5itBwM6iMJx" role="3EZMnx">
<property role="3F0ifm" value="matching" />
<property role="3F0ifm" value="concept" />
<ref role="1k5W1q" to="tpen:hgVS8CF" resolve="KeyWord" />
</node>
<node concept="3F0ifn" id="5itBwM7NNWU" role="3EZMnx">
<property role="3F0ifm" value="/" />
<ref role="1k5W1q" to="tpen:hY9fg1G" resolve="LeftParenAfterName" />
</node>
<node concept="1iCGBv" id="5itBwM6dGOD" role="3EZMnx">
<ref role="1NtTu8" to="wq2x:5itBwM6dfdw" resolve="applicableConcept" />
@ -6725,6 +6730,10 @@
</node>
</node>
</node>
<node concept="3F0ifn" id="5itBwM7NOem" role="3EZMnx">
<property role="3F0ifm" value="/" />
<ref role="1k5W1q" to="tpen:hFCSUmN" resolve="RightParen" />
</node>
<node concept="3F2HdR" id="5itBwM6x16d" role="3EZMnx">
<property role="2czwfO" value=" " />
<ref role="1NtTu8" to="wq2x:5itBwM6wU6s" resolve="parameter" />
@ -6927,5 +6936,422 @@
</node>
<node concept="3VyMlK" id="5itBwM6_HND" role="3ft7WO" />
</node>
<node concept="24kQdi" id="5itBwM7GBLn">
<property role="3GE5qa" value="constraint" />
<ref role="1XX52x" to="wq2x:5itBwM7GBv1" resolve="ExpandMacroConstraint" />
<node concept="3EZMnI" id="5itBwM7GBLt" role="2wV5jI">
<node concept="3EZMnI" id="5itBwM7GBLS" role="3EZMnx">
<node concept="VPM3Z" id="5itBwM7GBLU" role="3F10Kt" />
<node concept="3F0ifn" id="5itBwM7GBM6" role="3EZMnx">
<property role="3F0ifm" value="&lt;" />
<node concept="11LMrY" id="5itBwM7GBU6" role="3F10Kt">
<property role="VOm3f" value="true" />
</node>
</node>
<node concept="3F2HdR" id="5itBwM7GBUo" role="3EZMnx">
<property role="2czwfO" value="," />
<ref role="1NtTu8" to="wq2x:5itBwM7GBKR" resolve="logical" />
<node concept="l2Vlx" id="5itBwM7GBUq" role="2czzBx" />
<node concept="tppnM" id="5itBwM7GBUz" role="sWeuL">
<node concept="11L4FC" id="5itBwM7GBU_" role="3F10Kt">
<property role="VOm3f" value="true" />
</node>
</node>
<node concept="3F0ifn" id="5itBwM7Huyg" role="2czzBI">
<property role="3F0ifm" value="" />
</node>
</node>
<node concept="3F0ifn" id="5itBwM7GBMc" role="3EZMnx">
<property role="3F0ifm" value="&gt;" />
<node concept="11L4FC" id="5itBwM7GBU9" role="3F10Kt">
<property role="VOm3f" value="true" />
</node>
</node>
<node concept="l2Vlx" id="5itBwM7GBLX" role="2iSdaV" />
<node concept="pkWqt" id="5itBwM7Huyi" role="pqm2j">
<node concept="3clFbS" id="5itBwM7Huyj" role="2VODD2">
<node concept="3clFbF" id="5itBwM7HuAj" role="3cqZAp">
<node concept="2OqwBi" id="5itBwM7HwSM" role="3clFbG">
<node concept="2OqwBi" id="5itBwM7HuOz" role="2Oq$k0">
<node concept="pncrf" id="5itBwM7HuAi" role="2Oq$k0" />
<node concept="3Tsc0h" id="5itBwM7Hv0P" role="2OqNvi">
<ref role="3TtcxE" to="wq2x:5itBwM7GBKR" resolve="logical" />
</node>
</node>
<node concept="3GX2aA" id="5itBwM7Hz0Q" role="2OqNvi" />
</node>
</node>
</node>
</node>
</node>
<node concept="1iCGBv" id="5itBwM7GBLB" role="3EZMnx">
<ref role="1NtTu8" to="wq2x:5itBwM7GBLp" resolve="template" />
<node concept="1sVBvm" id="5itBwM7GBLD" role="1sWHZn">
<node concept="3F0A7n" id="5itBwM7GBLK" role="2wV5jI">
<property role="1Intyy" value="true" />
<ref role="1NtTu8" to="tpck:h0TrG11" resolve="name" />
<ref role="1k5W1q" node="7ksQUDZpd8b" resolve="ConstraintKeyword" />
<node concept="A1WHu" id="5itBwM7IonQ" role="3vIgyS">
<ref role="A1WHt" node="5itBwM7Hz63" resolve="ExpandMacroConstraint_AddLogical" />
</node>
</node>
</node>
</node>
<node concept="3F1sOY" id="5itBwM7GC2I" role="3EZMnx">
<ref role="1NtTu8" to="wq2x:5itBwM7GBKT" resolve="input" />
</node>
<node concept="3EZMnI" id="5itBwM7QPJi" role="3EZMnx">
<node concept="VPM3Z" id="5itBwM7QPJk" role="3F10Kt" />
<node concept="3F1sOY" id="5itBwM7QQHL" role="3EZMnx">
<property role="1$x2rV" value="default" />
<ref role="1NtTu8" to="wq2x:5itBwM7QPB1" resolve="arglist" />
</node>
<node concept="l2Vlx" id="5itBwM7QPJn" role="2iSdaV" />
</node>
<node concept="l2Vlx" id="5itBwM7GBLw" role="2iSdaV" />
</node>
</node>
<node concept="3p36aQ" id="5itBwM7GGaZ">
<property role="3GE5qa" value="constraint" />
<ref role="aqKnT" to="wq2x:5itBwM7GBv1" resolve="ExpandMacroConstraint" />
<node concept="3XHNnq" id="5itBwM7GGbY" role="3ft7WO">
<ref role="3XGfJA" to="wq2x:5itBwM7GBLp" resolve="template" />
</node>
</node>
<node concept="3ICXOK" id="5itBwM7Hz63">
<property role="3GE5qa" value="constraint" />
<property role="TrG5h" value="ExpandMacroConstraint_AddLogical" />
<ref role="aqKnT" to="wq2x:5itBwM7GBv1" resolve="ExpandMacroConstraint" />
<node concept="1Qtc8_" id="5itBwM7Hz64" role="IW6Ez">
<node concept="IWgqT" id="5itBwM7Hz6g" role="1Qtc8A">
<node concept="1hCUdq" id="5itBwM7Hz6i" role="1hCUd6">
<node concept="3clFbS" id="5itBwM7Hz6k" role="2VODD2">
<node concept="3clFbF" id="5itBwM7Hzbe" role="3cqZAp">
<node concept="Xl_RD" id="5itBwM7Hzbd" role="3clFbG">
<property role="Xl_RC" value="&lt;" />
</node>
</node>
</node>
</node>
<node concept="IWg2L" id="5itBwM7Hz6m" role="IWgqQ">
<node concept="3clFbS" id="5itBwM7Hz6o" role="2VODD2">
<node concept="3clFbF" id="5itBwM7HBMj" role="3cqZAp">
<node concept="2OqwBi" id="5itBwM7HDFs" role="3clFbG">
<node concept="2OqwBi" id="5itBwM7HBUN" role="2Oq$k0">
<node concept="7Obwk" id="5itBwM7HBMi" role="2Oq$k0" />
<node concept="3Tsc0h" id="5itBwM7HC76" role="2OqNvi">
<ref role="3TtcxE" to="wq2x:5itBwM7GBKR" resolve="logical" />
</node>
</node>
<node concept="2DeJg1" id="5itBwM7HFLh" role="2OqNvi" />
</node>
</node>
</node>
</node>
<node concept="27VH4U" id="5itBwM7Hzcj" role="2jiSrf">
<node concept="3clFbS" id="5itBwM7Hzck" role="2VODD2">
<node concept="3clFbF" id="5itBwM7Hzgq" role="3cqZAp">
<node concept="2OqwBi" id="5itBwM7H__o" role="3clFbG">
<node concept="2OqwBi" id="5itBwM7HzuE" role="2Oq$k0">
<node concept="7Obwk" id="5itBwM7Hzgp" role="2Oq$k0" />
<node concept="3Tsc0h" id="5itBwM7HzFc" role="2OqNvi">
<ref role="3TtcxE" to="wq2x:5itBwM7GBKR" resolve="logical" />
</node>
</node>
<node concept="1v1jN8" id="5itBwM7HBFw" role="2OqNvi" />
</node>
</node>
</node>
</node>
</node>
<node concept="3cWJ9i" id="5itBwM7Hz68" role="1Qtc8$">
<node concept="CtIbL" id="5itBwM7Hz6a" role="CtIbM">
<property role="CtIbK" value="1A4kJjlVmVt/LEFT" />
</node>
</node>
</node>
</node>
<node concept="24kQdi" id="5itBwM7J4OJ">
<property role="3GE5qa" value="macro.code" />
<ref role="1XX52x" to="wq2x:5itBwM7J4Oh" resolve="ExpandMacroInputReference" />
<node concept="3EZMnI" id="5itBwM7J4OL" role="2wV5jI">
<node concept="1iCGBv" id="5itBwM7J4OV" role="3EZMnx">
<ref role="1NtTu8" to="wq2x:5itBwM7J4Oi" resolve="declaration" />
<node concept="1sVBvm" id="5itBwM7J4OX" role="1sWHZn">
<node concept="3F0A7n" id="5itBwM7J4P7" role="2wV5jI">
<property role="1Intyy" value="true" />
<ref role="1NtTu8" to="tpck:h0TrG11" resolve="name" />
</node>
</node>
</node>
<node concept="l2Vlx" id="5itBwM7J4OO" role="2iSdaV" />
</node>
</node>
<node concept="3p36aQ" id="5itBwM7J4UD">
<property role="3GE5qa" value="macro.code" />
<ref role="aqKnT" to="wq2x:5itBwM7J4Oh" resolve="ExpandMacroInputReference" />
<node concept="3XHNnq" id="5itBwM7J4UE" role="3ft7WO">
<ref role="3XGfJA" to="wq2x:5itBwM7J4Oi" resolve="declaration" />
</node>
</node>
<node concept="24kQdi" id="5itBwM7Lv3H">
<property role="3GE5qa" value="constraint" />
<ref role="1XX52x" to="wq2x:5itBwM7LtBf" resolve="CallMacroConstraint" />
<node concept="3EZMnI" id="5itBwM7Lv3J" role="2wV5jI">
<node concept="3EZMnI" id="5itBwM7Lv3K" role="3EZMnx">
<node concept="VPM3Z" id="5itBwM7Lv3L" role="3F10Kt" />
<node concept="3F0ifn" id="5itBwM7Lv3M" role="3EZMnx">
<property role="3F0ifm" value="&lt;" />
<node concept="11LMrY" id="5itBwM7Lv3N" role="3F10Kt">
<property role="VOm3f" value="true" />
</node>
</node>
<node concept="3F2HdR" id="5itBwM7Lv3O" role="3EZMnx">
<property role="2czwfO" value="," />
<ref role="1NtTu8" to="wq2x:5itBwM7Lv0S" resolve="logical" />
<node concept="l2Vlx" id="5itBwM7Lv3P" role="2czzBx" />
<node concept="tppnM" id="5itBwM7Lv3Q" role="sWeuL">
<node concept="11L4FC" id="5itBwM7Lv3R" role="3F10Kt">
<property role="VOm3f" value="true" />
</node>
</node>
<node concept="3F0ifn" id="5itBwM7Lv3S" role="2czzBI">
<property role="3F0ifm" value="" />
</node>
</node>
<node concept="3F0ifn" id="5itBwM7Lv3T" role="3EZMnx">
<property role="3F0ifm" value="&gt;" />
<node concept="11L4FC" id="5itBwM7Lv3U" role="3F10Kt">
<property role="VOm3f" value="true" />
</node>
</node>
<node concept="l2Vlx" id="5itBwM7Lv3V" role="2iSdaV" />
<node concept="pkWqt" id="5itBwM7Lv3W" role="pqm2j">
<node concept="3clFbS" id="5itBwM7Lv3X" role="2VODD2">
<node concept="3clFbF" id="5itBwM7Lv3Y" role="3cqZAp">
<node concept="2OqwBi" id="5itBwM7Lv3Z" role="3clFbG">
<node concept="2OqwBi" id="5itBwM7Lv40" role="2Oq$k0">
<node concept="pncrf" id="5itBwM7Lv41" role="2Oq$k0" />
<node concept="3Tsc0h" id="5itBwM7Lv42" role="2OqNvi">
<ref role="3TtcxE" to="wq2x:5itBwM7Lv0S" resolve="logical" />
</node>
</node>
<node concept="3GX2aA" id="5itBwM7Lv43" role="2OqNvi" />
</node>
</node>
</node>
</node>
</node>
<node concept="1iCGBv" id="5itBwM7Lv44" role="3EZMnx">
<ref role="1NtTu8" to="wq2x:5itBwM7LtYS" resolve="template" />
<node concept="1sVBvm" id="5itBwM7Lv45" role="1sWHZn">
<node concept="3F0A7n" id="5itBwM7Lv46" role="2wV5jI">
<property role="1Intyy" value="true" />
<ref role="1NtTu8" to="tpck:h0TrG11" resolve="name" />
<node concept="A1WHu" id="5itBwM7Lv47" role="3vIgyS">
<ref role="A1WHt" node="5itBwM7LvBg" resolve="CallMacroConstraint_AddLogical" />
</node>
</node>
</node>
</node>
<node concept="3F0ifn" id="5itBwM7Lvq2" role="3EZMnx">
<property role="3F0ifm" value="(" />
<ref role="1k5W1q" to="tpen:hY9fg1G" resolve="LeftParenAfterName" />
<node concept="Vb9p2" id="5itBwM7O$Dk" role="3F10Kt" />
</node>
<node concept="3F2HdR" id="5itBwM7Plc9" role="3EZMnx">
<property role="2czwfO" value="," />
<ref role="1NtTu8" to="wq2x:5itBwM7Pl2b" resolve="argument" />
<node concept="l2Vlx" id="5itBwM7Plcb" role="2czzBx" />
<node concept="tppnM" id="5itBwM7PldM" role="sWeuL">
<node concept="11L4FC" id="5itBwM7PldO" role="3F10Kt">
<property role="VOm3f" value="true" />
</node>
</node>
<node concept="3F0ifn" id="5itBwM7Q6RO" role="2czzBI">
<property role="3F0ifm" value="" />
</node>
</node>
<node concept="3F0ifn" id="5itBwM7Lvt4" role="3EZMnx">
<property role="3F0ifm" value=")" />
<ref role="1k5W1q" to="tpen:hFCSUmN" resolve="RightParen" />
<node concept="Vb9p2" id="5itBwM7O$JY" role="3F10Kt" />
</node>
<node concept="l2Vlx" id="5itBwM7Lv49" role="2iSdaV" />
</node>
</node>
<node concept="3p36aQ" id="5itBwM7LvAM">
<property role="3GE5qa" value="constraint" />
<ref role="aqKnT" to="wq2x:5itBwM7LtBf" resolve="CallMacroConstraint" />
<node concept="3XHNnq" id="5itBwM7LvAN" role="3ft7WO">
<ref role="3XGfJA" to="wq2x:5itBwM7LtYS" resolve="template" />
</node>
</node>
<node concept="3ICXOK" id="5itBwM7LvBg">
<property role="3GE5qa" value="constraint" />
<property role="TrG5h" value="CallMacroConstraint_AddLogical" />
<ref role="aqKnT" to="wq2x:5itBwM7LtBf" resolve="CallMacroConstraint" />
<node concept="1Qtc8_" id="5itBwM7LwAP" role="IW6Ez">
<node concept="IWgqT" id="5itBwM7LwAQ" role="1Qtc8A">
<node concept="1hCUdq" id="5itBwM7LwAR" role="1hCUd6">
<node concept="3clFbS" id="5itBwM7LwAS" role="2VODD2">
<node concept="3clFbF" id="5itBwM7LwAT" role="3cqZAp">
<node concept="Xl_RD" id="5itBwM7LwAU" role="3clFbG">
<property role="Xl_RC" value="&lt;" />
</node>
</node>
</node>
</node>
<node concept="IWg2L" id="5itBwM7LwAV" role="IWgqQ">
<node concept="3clFbS" id="5itBwM7LwAW" role="2VODD2">
<node concept="3clFbF" id="5itBwM7LwAX" role="3cqZAp">
<node concept="2OqwBi" id="5itBwM7LwAY" role="3clFbG">
<node concept="2OqwBi" id="5itBwM7LwAZ" role="2Oq$k0">
<node concept="7Obwk" id="5itBwM7LwB0" role="2Oq$k0" />
<node concept="3Tsc0h" id="5itBwM7LwB1" role="2OqNvi">
<ref role="3TtcxE" to="wq2x:5itBwM7Lv0S" resolve="logical" />
</node>
</node>
<node concept="2DeJg1" id="5itBwM7LwB2" role="2OqNvi" />
</node>
</node>
</node>
</node>
<node concept="27VH4U" id="5itBwM7LwB3" role="2jiSrf">
<node concept="3clFbS" id="5itBwM7LwB4" role="2VODD2">
<node concept="3clFbF" id="5itBwM7LwB5" role="3cqZAp">
<node concept="2OqwBi" id="5itBwM7LwB6" role="3clFbG">
<node concept="2OqwBi" id="5itBwM7LwB7" role="2Oq$k0">
<node concept="7Obwk" id="5itBwM7LwB8" role="2Oq$k0" />
<node concept="3Tsc0h" id="5itBwM7LwB9" role="2OqNvi">
<ref role="3TtcxE" to="wq2x:5itBwM7Lv0S" resolve="logical" />
</node>
</node>
<node concept="1v1jN8" id="5itBwM7LwBa" role="2OqNvi" />
</node>
</node>
</node>
</node>
</node>
<node concept="3cWJ9i" id="5itBwM7LwBb" role="1Qtc8$">
<node concept="CtIbL" id="5itBwM7LwBc" role="CtIbM">
<property role="CtIbK" value="1A4kJjlVmVt/LEFT" />
</node>
</node>
</node>
</node>
<node concept="24kQdi" id="5itBwM7QPuk">
<property role="3GE5qa" value="constraint" />
<ref role="1XX52x" to="wq2x:5itBwM7QPtN" resolve="ExpandMacroConstraintArgBinding" />
<node concept="3EZMnI" id="5itBwM7QPum" role="2wV5jI">
<node concept="1iCGBv" id="5itBwM7QPuw" role="3EZMnx">
<ref role="1NtTu8" to="wq2x:5itBwM7QPtQ" resolve="declaration" />
<node concept="1sVBvm" id="5itBwM7QPuy" role="1sWHZn">
<node concept="3F0A7n" id="5itBwM7QPuG" role="2wV5jI">
<property role="1Intyy" value="true" />
<ref role="1NtTu8" to="tpck:h0TrG11" resolve="name" />
</node>
</node>
</node>
<node concept="3F0ifn" id="5itBwM7QPuO" role="3EZMnx">
<property role="3F0ifm" value="=" />
<node concept="11L4FC" id="5itBwM7QPv7" role="3F10Kt">
<property role="VOm3f" value="true" />
</node>
<node concept="11LMrY" id="5itBwM7QPv8" role="3F10Kt">
<property role="VOm3f" value="true" />
</node>
</node>
<node concept="3F1sOY" id="5itBwM7QPv0" role="3EZMnx">
<ref role="1NtTu8" to="wq2x:5itBwM7QPtO" resolve="argument" />
</node>
<node concept="l2Vlx" id="5itBwM7QPup" role="2iSdaV" />
</node>
</node>
<node concept="24kQdi" id="5itBwM7QPvA">
<property role="3GE5qa" value="constraint" />
<ref role="1XX52x" to="wq2x:5itBwM7QPtM" resolve="ExpandMacroConstraintArglist" />
<node concept="3EZMnI" id="5itBwM7QPvG" role="2wV5jI">
<node concept="3F0ifn" id="5itBwM7QPvN" role="3EZMnx">
<property role="3F0ifm" value="[" />
<node concept="11LMrY" id="5itBwM7QPvX" role="3F10Kt">
<property role="VOm3f" value="true" />
</node>
</node>
<node concept="3F2HdR" id="5itBwM7QPw9" role="3EZMnx">
<property role="2czwfO" value="," />
<ref role="1NtTu8" to="wq2x:5itBwM7QPw7" resolve="binding" />
<node concept="l2Vlx" id="5itBwM7QPwb" role="2czzBx" />
<node concept="tppnM" id="5itBwM7QPwk" role="sWeuL">
<node concept="11L4FC" id="5itBwM7QPwm" role="3F10Kt">
<property role="VOm3f" value="true" />
</node>
</node>
<node concept="3F0ifn" id="5itBwM7SvLm" role="2czzBI">
<property role="3F0ifm" value="" />
</node>
</node>
<node concept="3F0ifn" id="5itBwM7QPvT" role="3EZMnx">
<property role="3F0ifm" value="]" />
<node concept="11L4FC" id="5itBwM7QPvZ" role="3F10Kt">
<property role="VOm3f" value="true" />
</node>
</node>
<node concept="l2Vlx" id="5itBwM7QPvJ" role="2iSdaV" />
</node>
</node>
<node concept="3ICXOK" id="5itBwM7QQRL">
<property role="3GE5qa" value="constraint" />
<property role="TrG5h" value="ExpandMacroConstraint_AddArglist" />
<ref role="aqKnT" to="wq2x:5itBwM7GBv1" resolve="ExpandMacroConstraint" />
<node concept="1Qtc8_" id="5itBwM7QQRM" role="IW6Ez">
<node concept="3cWJ9i" id="5itBwM7QQRQ" role="1Qtc8$">
<node concept="CtIbL" id="5itBwM7QQRS" role="CtIbM">
<property role="CtIbK" value="30NnNOohrQL/RIGHT" />
</node>
</node>
<node concept="IWgqT" id="5itBwM7QQRW" role="1Qtc8A">
<node concept="1hCUdq" id="5itBwM7QQRX" role="1hCUd6">
<node concept="3clFbS" id="5itBwM7QQRY" role="2VODD2">
<node concept="3clFbF" id="5itBwM7QQWP" role="3cqZAp">
<node concept="Xl_RD" id="5itBwM7QQWO" role="3clFbG">
<property role="Xl_RC" value="[" />
</node>
</node>
</node>
</node>
<node concept="IWg2L" id="5itBwM7QQRZ" role="IWgqQ">
<node concept="3clFbS" id="5itBwM7QQS0" role="2VODD2">
<node concept="3clFbF" id="5itBwM7QRZ3" role="3cqZAp">
<node concept="2OqwBi" id="5itBwM7QSr_" role="3clFbG">
<node concept="2OqwBi" id="5itBwM7QS7z" role="2Oq$k0">
<node concept="7Obwk" id="5itBwM7QRZ2" role="2Oq$k0" />
<node concept="3TrEf2" id="5itBwM7QSjQ" role="2OqNvi">
<ref role="3Tt5mk" to="wq2x:5itBwM7QPB1" resolve="arglist" />
</node>
</node>
<node concept="2DeJnY" id="5itBwM7QSBm" role="2OqNvi" />
</node>
</node>
</node>
</node>
<node concept="27VH4U" id="5itBwM7QQXU" role="2jiSrf">
<node concept="3clFbS" id="5itBwM7QQXV" role="2VODD2">
<node concept="3clFbF" id="5itBwM7QR21" role="3cqZAp">
<node concept="2OqwBi" id="5itBwM7QREh" role="3clFbG">
<node concept="2OqwBi" id="5itBwM7QRgh" role="2Oq$k0">
<node concept="7Obwk" id="5itBwM7QR20" role="2Oq$k0" />
<node concept="3TrEf2" id="5itBwM7QRsN" role="2OqNvi">
<ref role="3Tt5mk" to="wq2x:5itBwM7QPB1" resolve="arglist" />
</node>
</node>
<node concept="3w_OXm" id="5itBwM7QRPj" role="2OqNvi" />
</node>
</node>
</node>
</node>
</node>
</node>
</node>
</model>

View File

@ -547,6 +547,7 @@
<property role="20lbJX" value="fLJekj4/_1" />
<ref role="20lvS9" to="tpee:fz3vP1J" resolve="Expression" />
</node>
<node concept="asaX9" id="5itBwM7GBuX" role="lGtFl" />
</node>
<node concept="1TIwiD" id="18kNIl0mxXI">
<property role="EcuMT" value="1302893676239396718" />
@ -780,6 +781,7 @@
<node concept="PrWs8" id="5hSMZ_ltV78" role="PzmwI">
<ref role="PrY4T" node="1L74NXEmF9t" resolve="MacroInvocation" />
</node>
<node concept="asaX9" id="5itBwM7GBuZ" role="lGtFl" />
</node>
<node concept="1TIwiD" id="20Ay2VefOqC">
<property role="EcuMT" value="2316688792938825384" />
@ -1720,5 +1722,107 @@
<ref role="20lvS9" node="5itBwM6wvc4" resolve="ExpandMacroParameterDeclaration" />
</node>
</node>
<node concept="1TIwiD" id="5itBwM7GBv1">
<property role="EcuMT" value="6097203247182936001" />
<property role="3GE5qa" value="constraint" />
<property role="TrG5h" value="ExpandMacroConstraint" />
<ref role="1TJDcQ" node="18kNIl0mxXI" resolve="PseudoConstraint" />
<node concept="1TJgyj" id="5itBwM7GBLp" role="1TKVEi">
<property role="IQ2ns" value="6097203247182937177" />
<property role="20kJfa" value="template" />
<property role="20lbJX" value="fLJekj4/_1" />
<ref role="20lvS9" node="5itBwM6cWQh" resolve="ExpandMacroPrototype" />
</node>
<node concept="1TJgyj" id="5itBwM7GBKR" role="1TKVEi">
<property role="IQ2ns" value="6097203247182937143" />
<property role="20lmBu" value="fLJjDmT/aggregation" />
<property role="20kJfa" value="logical" />
<property role="20lbJX" value="fLJekj5/_0__n" />
<ref role="20lvS9" to="5j4j:7E86$tK_OxQ" resolve="LogicalVariable" />
</node>
<node concept="1TJgyj" id="5itBwM7GBKT" role="1TKVEi">
<property role="IQ2ns" value="6097203247182937145" />
<property role="20lmBu" value="fLJjDmT/aggregation" />
<property role="20kJfa" value="input" />
<property role="20lbJX" value="fLJekj4/_1" />
<ref role="20lvS9" to="tpee:fz3vP1J" resolve="Expression" />
</node>
<node concept="1TJgyj" id="5itBwM7QPB1" role="1TKVEi">
<property role="IQ2ns" value="6097203247185615297" />
<property role="20lmBu" value="fLJjDmT/aggregation" />
<property role="20kJfa" value="arglist" />
<ref role="20lvS9" node="5itBwM7QPtM" resolve="ExpandMacroConstraintArglist" />
</node>
</node>
<node concept="1TIwiD" id="5itBwM7J4Oh">
<property role="EcuMT" value="6097203247183580433" />
<property role="3GE5qa" value="macro.code" />
<property role="TrG5h" value="ExpandMacroInputReference" />
<ref role="1TJDcQ" to="tpee:fz3vP1J" resolve="Expression" />
<node concept="1TJgyj" id="5itBwM7J4Oi" role="1TKVEi">
<property role="IQ2ns" value="6097203247183580434" />
<property role="20kJfa" value="declaration" />
<property role="20lbJX" value="fLJekj4/_1" />
<ref role="20lvS9" node="5itBwM66Jqx" resolve="ExpandMacroInputDeclaration" />
</node>
</node>
<node concept="1TIwiD" id="5itBwM7LtBf">
<property role="EcuMT" value="6097203247184206287" />
<property role="3GE5qa" value="constraint" />
<property role="TrG5h" value="CallMacroConstraint" />
<ref role="1TJDcQ" node="18kNIl0mxXI" resolve="PseudoConstraint" />
<node concept="1TJgyj" id="5itBwM7Lv0S" role="1TKVEi">
<property role="IQ2ns" value="6097203247184212024" />
<property role="20lmBu" value="fLJjDmT/aggregation" />
<property role="20kJfa" value="logical" />
<property role="20lbJX" value="fLJekj5/_0__n" />
<ref role="20lvS9" to="5j4j:7E86$tK_OxQ" resolve="LogicalVariable" />
</node>
<node concept="1TJgyj" id="5itBwM7Pl2b" role="1TKVEi">
<property role="IQ2ns" value="6097203247185219723" />
<property role="20lmBu" value="fLJjDmT/aggregation" />
<property role="20kJfa" value="argument" />
<property role="20lbJX" value="fLJekj5/_0__n" />
<ref role="20lvS9" to="tpee:fz3vP1J" resolve="Expression" />
</node>
<node concept="1TJgyj" id="5itBwM7LtYS" role="1TKVEi">
<property role="IQ2ns" value="6097203247184207800" />
<property role="20kJfa" value="template" />
<property role="20lbJX" value="fLJekj4/_1" />
<ref role="20lvS9" node="5itBwM578SV" resolve="CallMacroTemplate" />
</node>
</node>
<node concept="1TIwiD" id="5itBwM7QPtM">
<property role="EcuMT" value="6097203247185614706" />
<property role="3GE5qa" value="constraint" />
<property role="TrG5h" value="ExpandMacroConstraintArglist" />
<ref role="1TJDcQ" to="tpck:gw2VY9q" resolve="BaseConcept" />
<node concept="1TJgyj" id="5itBwM7QPw7" role="1TKVEi">
<property role="IQ2ns" value="6097203247185614855" />
<property role="20lmBu" value="fLJjDmT/aggregation" />
<property role="20kJfa" value="binding" />
<property role="20lbJX" value="fLJekj5/_0__n" />
<ref role="20lvS9" node="5itBwM7QPtN" resolve="ExpandMacroConstraintArgBinding" />
</node>
</node>
<node concept="1TIwiD" id="5itBwM7QPtN">
<property role="EcuMT" value="6097203247185614707" />
<property role="3GE5qa" value="constraint" />
<property role="TrG5h" value="ExpandMacroConstraintArgBinding" />
<ref role="1TJDcQ" to="tpck:gw2VY9q" resolve="BaseConcept" />
<node concept="1TJgyj" id="5itBwM7QPtQ" role="1TKVEi">
<property role="IQ2ns" value="6097203247185614710" />
<property role="20kJfa" value="declaration" />
<property role="20lbJX" value="fLJekj4/_1" />
<ref role="20lvS9" node="5itBwM6wvc4" resolve="ExpandMacroParameterDeclaration" />
</node>
<node concept="1TJgyj" id="5itBwM7QPtO" role="1TKVEi">
<property role="IQ2ns" value="6097203247185614708" />
<property role="20lmBu" value="fLJjDmT/aggregation" />
<property role="20kJfa" value="argument" />
<property role="20lbJX" value="fLJekj4/_1" />
<ref role="20lvS9" to="tpee:fz3vP1J" resolve="Expression" />
</node>
</node>
</model>

View File

@ -13,7 +13,8 @@
<import index="tpek" ref="r:00000000-0000-4000-0000-011c895902c0(jetbrains.mps.baseLanguage.behavior)" />
<import index="bj13" ref="bbf5c548-7111-4a53-a117-cdefc664cf34/java:jetbrains.mps.logic.reactor.logical(jetbrains.mps.logic.reactor/)" />
<import index="lui2" ref="8865b7a8-5271-43d3-884c-6fd1d9cfdd34/java:org.jetbrains.mps.openapi.module(MPS.OpenAPI/)" />
<import index="tpck" ref="r:00000000-0000-4000-0000-011c89590288(jetbrains.mps.lang.core.structure)" implicit="true" />
<import index="tp25" ref="r:00000000-0000-4000-0000-011c89590301(jetbrains.mps.lang.smodel.structure)" />
<import index="tpck" ref="r:00000000-0000-4000-0000-011c89590288(jetbrains.mps.lang.core.structure)" />
<import index="mhbf" ref="8865b7a8-5271-43d3-884c-6fd1d9cfdd34/java:org.jetbrains.mps.openapi.model(MPS.OpenAPI/)" implicit="true" />
<import index="wyt6" ref="6354ebe7-c22a-4a0f-ac54-50b52ab9b065/java:java.lang(JDK/)" implicit="true" />
</imports>
@ -1689,5 +1690,57 @@
<ref role="1YaFvo" to="wq2x:5itBwM6_4x3" resolve="ExpandMacroParameterReference" />
</node>
</node>
<node concept="1YbPZF" id="5itBwM7JXVI">
<property role="TrG5h" value="typeof_ExpandMacroInputReference" />
<property role="3GE5qa" value="macro.code" />
<node concept="3clFbS" id="5itBwM7JXVJ" role="18ibNy">
<node concept="1Z5TYs" id="5itBwM7JY7D" role="3cqZAp">
<node concept="mw_s8" id="5itBwM7K0e$" role="1ZfhKB">
<node concept="2c44tf" id="5itBwM7K0eH" role="mwGJk">
<node concept="3Tqbb2" id="5itBwM7K0eI" role="2c44tc">
<ref role="ehGHo" to="tpck:gw2VY9q" resolve="BaseConcept" />
<node concept="2c44tb" id="5itBwM7K0eJ" role="lGtFl">
<property role="2qtEX8" value="concept" />
<property role="P3scX" value="7866978e-a0f0-4cc7-81bc-4d213d9375e1/1138055754698/1138405853777" />
<node concept="2OqwBi" id="5itBwM7K0eK" role="2c44t1">
<node concept="1PxgMI" id="5itBwM7K0eL" role="2Oq$k0">
<property role="1BlNFB" value="true" />
<node concept="chp4Y" id="5itBwM7K0eM" role="3oSUPX">
<ref role="cht4Q" to="wq2x:5itBwM66cNU" resolve="ExpandMacroInputSpecification" />
</node>
<node concept="2OqwBi" id="5itBwM7K0eN" role="1m5AlR">
<node concept="2OqwBi" id="5itBwM7K0eO" role="2Oq$k0">
<node concept="1YBJjd" id="5itBwM7K0eP" role="2Oq$k0">
<ref role="1YBMHb" node="5itBwM7JXVL" resolve="emri" />
</node>
<node concept="3TrEf2" id="5itBwM7K0eQ" role="2OqNvi">
<ref role="3Tt5mk" to="wq2x:5itBwM7J4Oi" resolve="declaration" />
</node>
</node>
<node concept="1mfA1w" id="5itBwM7K0eR" role="2OqNvi" />
</node>
</node>
<node concept="3TrEf2" id="5itBwM7K0eS" role="2OqNvi">
<ref role="3Tt5mk" to="wq2x:5itBwM66ULm" resolve="applicableConcept" />
</node>
</node>
</node>
</node>
</node>
</node>
<node concept="mw_s8" id="5itBwM7JY7G" role="1ZfhK$">
<node concept="1Z2H0r" id="5itBwM7JXVV" role="mwGJk">
<node concept="1YBJjd" id="5itBwM7JXXJ" role="1Z2MuG">
<ref role="1YBMHb" node="5itBwM7JXVL" resolve="emri" />
</node>
</node>
</node>
</node>
</node>
<node concept="1YaCAy" id="5itBwM7JXVL" role="1YuTPh">
<property role="TrG5h" value="emri" />
<ref role="1YaFvo" to="wq2x:5itBwM7J4Oh" resolve="ExpandMacroInputReference" />
</node>
</node>
</model>