Ensure failures don't stop program evaluation, recover failure always at top level (when processing "main/0" constraint).

Keep track of principal origins to be used as points of failure.
Minor code cleanup/refactoring.
This commit is contained in:
Fedor Isakov 2019-02-06 12:57:47 +01:00
parent 1ad5f22f7b
commit a240246daa
2 changed files with 418 additions and 90 deletions

View File

@ -799,14 +799,14 @@
<node concept="3uibUv" id="70Wv0dJjilt" role="1tU5fm">
<ref role="3uigEE" to="18ew:~Reference" resolve="Reference" />
<node concept="3uibUv" id="70Wv0dJjirR" role="11_B2D">
<ref role="3uigEE" to="7n8k:70Wv0dJhQb2" resolve="OriginIndex" />
<ref role="3uigEE" to="7n8k:70Wv0dJhQb2" resolve="PrincipalOriginIndex" />
</node>
</node>
<node concept="2ShNRf" id="70Wv0dJjisq" role="33vP2m">
<node concept="1pGfFk" id="70Wv0dJjiDI" role="2ShVmc">
<ref role="37wK5l" to="18ew:~Reference.&lt;init&gt;()" resolve="Reference" />
<node concept="3uibUv" id="70Wv0dJjiEM" role="1pMfVU">
<ref role="3uigEE" to="7n8k:70Wv0dJhQb2" resolve="OriginIndex" />
<ref role="3uigEE" to="7n8k:70Wv0dJhQb2" resolve="PrincipalOriginIndex" />
</node>
</node>
</node>
@ -876,6 +876,26 @@
</node>
</node>
</node>
<node concept="3cpWs8" id="73aHuggfcRq" role="3cqZAp">
<node concept="3cpWsn" id="73aHuggfcRr" role="3cpWs9">
<property role="TrG5h" value="mainSymbol" />
<property role="3TUv4t" value="true" />
<node concept="3uibUv" id="73aHuggfcRo" role="1tU5fm">
<ref role="3uigEE" to="av0y:~ConstraintSymbol" resolve="ConstraintSymbol" />
</node>
<node concept="2ShNRf" id="73aHuggfcRs" role="33vP2m">
<node concept="1pGfFk" id="73aHuggfcRt" role="2ShVmc">
<ref role="37wK5l" to="av0y:~ConstraintSymbol.&lt;init&gt;(java.lang.String,int)" resolve="ConstraintSymbol" />
<node concept="Xl_RD" id="73aHuggfcRu" role="37wK5m">
<property role="Xl_RC" value="main" />
</node>
<node concept="3cmrfG" id="73aHuggfcRv" role="37wK5m">
<property role="3cmrfH" value="0" />
</node>
</node>
</node>
</node>
</node>
<node concept="3clFbF" id="3GlpCDSC7RP" role="3cqZAp">
<node concept="37vLTI" id="3GlpCDSC7RR" role="3clFbG">
<node concept="2OqwBi" id="3GlpCDSC7E1" role="37vLTx">
@ -891,16 +911,8 @@
<node concept="2ShNRf" id="3GlpCDSC7E6" role="2Oq$k0">
<node concept="1pGfFk" id="3GlpCDSC7E7" role="2ShVmc">
<ref role="37wK5l" to="6pyv:4sSe4$oM2rk" resolve="ConstraintBuilder" />
<node concept="2ShNRf" id="3GlpCDSC7E8" role="37wK5m">
<node concept="1pGfFk" id="3GlpCDSC7E9" role="2ShVmc">
<ref role="37wK5l" to="av0y:~ConstraintSymbol.&lt;init&gt;(java.lang.String,int)" resolve="ConstraintSymbol" />
<node concept="Xl_RD" id="3GlpCDSC7Ea" role="37wK5m">
<property role="Xl_RC" value="main" />
</node>
<node concept="3cmrfG" id="3GlpCDSC7Eb" role="37wK5m">
<property role="3cmrfH" value="0" />
</node>
</node>
<node concept="37vLTw" id="73aHuggfcRw" role="37wK5m">
<ref role="3cqZAo" node="73aHuggfcRr" resolve="mainSymbol" />
</node>
</node>
</node>
@ -1032,8 +1044,137 @@
<node concept="3clFbH" id="6EY0p2wrM_E" role="3cqZAp" />
<node concept="3clFbJ" id="8odmgCoHk0" role="3cqZAp">
<node concept="3clFbS" id="8odmgCoHk2" role="3clFbx">
<node concept="3cpWs8" id="73aHuggd5S3" role="3cqZAp">
<node concept="3cpWsn" id="73aHuggd5S4" role="3cpWs9">
<property role="TrG5h" value="principal" />
<node concept="10P_77" id="73aHuggd5RY" role="1tU5fm" />
<node concept="2OqwBi" id="73aHuggd5S5" role="33vP2m">
<node concept="2OqwBi" id="73aHuggd5S6" role="2Oq$k0">
<node concept="37vLTw" id="73aHuggd5S7" role="2Oq$k0">
<ref role="3cqZAo" node="70Wv0dJjilw" resolve="originIdxRef" />
</node>
<node concept="liA8E" id="73aHuggd5S8" role="2OqNvi">
<ref role="37wK5l" to="18ew:~Reference.get():java.lang.Object" resolve="get" />
</node>
</node>
<node concept="liA8E" id="73aHuggd5S9" role="2OqNvi">
<ref role="37wK5l" to="7n8k:70Wv0dJhQbd" resolve="isPrincipal" />
<node concept="2OqwBi" id="73aHuggd5Sa" role="37wK5m">
<node concept="1eOMI4" id="73aHuggd5Sb" role="2Oq$k0">
<node concept="10QFUN" id="73aHuggd5Sc" role="1eOMHV">
<node concept="3uibUv" id="73aHuggd5Sd" role="10QFUM">
<ref role="3uigEE" to="6pyv:7nPD14OaO1O" resolve="RuleEx" />
</node>
<node concept="37vLTw" id="73aHuggd5Se" role="10QFUP">
<ref role="3cqZAo" node="8odmgCo4Ln" resolve="rule" />
</node>
</node>
</node>
<node concept="liA8E" id="73aHuggd5Sf" role="2OqNvi">
<ref role="37wK5l" to="6pyv:7nPD14Ob4em" resolve="originRef" />
</node>
</node>
</node>
</node>
</node>
</node>
<node concept="3cpWs8" id="73aHuggfnQs" role="3cqZAp">
<node concept="3cpWsn" id="73aHuggfnQt" role="3cpWs9">
<property role="TrG5h" value="head" />
<node concept="_YKpA" id="73aHuggfnQe" role="1tU5fm">
<node concept="3uibUv" id="73aHuggfnQh" role="_ZDj9">
<ref role="3uigEE" to="av0y:~Constraint" resolve="Constraint" />
</node>
</node>
<node concept="2OqwBi" id="73aHuggfnQu" role="33vP2m">
<node concept="2OqwBi" id="73aHuggfnQv" role="2Oq$k0">
<node concept="1eOMI4" id="73aHuggfnQw" role="2Oq$k0">
<node concept="10QFUN" id="73aHuggfnQx" role="1eOMHV">
<node concept="A3Dl8" id="73aHuggfnQy" role="10QFUM">
<node concept="3uibUv" id="73aHuggfnQz" role="A3Ik2">
<ref role="3uigEE" to="av0y:~Constraint" resolve="Constraint" />
</node>
</node>
<node concept="2OqwBi" id="73aHuggfnQ$" role="10QFUP">
<node concept="37vLTw" id="73aHuggfnQ_" role="2Oq$k0">
<ref role="3cqZAo" node="8odmgCo4Ln" resolve="rule" />
</node>
<node concept="liA8E" id="73aHuggfnQA" role="2OqNvi">
<ref role="37wK5l" to="av0y:~Rule.headKept():java.lang.Iterable" resolve="headKept" />
</node>
</node>
</node>
</node>
<node concept="3QWeyG" id="73aHuggfnQB" role="2OqNvi">
<node concept="10QFUN" id="73aHuggfnQC" role="576Qk">
<node concept="A3Dl8" id="73aHuggfnQD" role="10QFUM">
<node concept="3uibUv" id="73aHuggfnQE" role="A3Ik2">
<ref role="3uigEE" to="av0y:~Constraint" resolve="Constraint" />
</node>
</node>
<node concept="2OqwBi" id="73aHuggfnQF" role="10QFUP">
<node concept="37vLTw" id="73aHuggfnQG" role="2Oq$k0">
<ref role="3cqZAo" node="8odmgCo4Ln" resolve="rule" />
</node>
<node concept="liA8E" id="73aHuggfnQH" role="2OqNvi">
<ref role="37wK5l" to="av0y:~Rule.headReplaced():java.lang.Iterable" resolve="headReplaced" />
</node>
</node>
</node>
</node>
</node>
<node concept="ANE8D" id="73aHuggfnQI" role="2OqNvi" />
</node>
</node>
</node>
<node concept="3cpWs8" id="73aHuggffxB" role="3cqZAp">
<node concept="3cpWsn" id="73aHuggffxC" role="3cpWs9">
<property role="TrG5h" value="onStart" />
<node concept="10P_77" id="73aHuggffxD" role="1tU5fm" />
<node concept="1Wc70l" id="73aHuggfGGU" role="33vP2m">
<node concept="2OqwBi" id="73aHuggfSgP" role="3uHU7w">
<node concept="2OqwBi" id="73aHuggfKlh" role="2Oq$k0">
<node concept="1y4W85" id="73aHuggfJFf" role="2Oq$k0">
<node concept="3cmrfG" id="73aHuggfK6G" role="1y58nS">
<property role="3cmrfH" value="0" />
</node>
<node concept="37vLTw" id="73aHuggfHnv" role="1y566C">
<ref role="3cqZAo" node="73aHuggfnQt" resolve="head" />
</node>
</node>
<node concept="liA8E" id="73aHuggfRGW" role="2OqNvi">
<ref role="37wK5l" to="av0y:~Constraint.symbol():jetbrains.mps.logic.reactor.program.ConstraintSymbol" resolve="symbol" />
</node>
</node>
<node concept="liA8E" id="73aHuggg04e" role="2OqNvi">
<ref role="37wK5l" to="av0y:~Symbol.equals(java.lang.Object):boolean" resolve="equals" />
<node concept="37vLTw" id="73aHuggg0w7" role="37wK5m">
<ref role="3cqZAo" node="73aHuggfcRr" resolve="mainSymbol" />
</node>
</node>
</node>
<node concept="3clFbC" id="73aHuggfFmL" role="3uHU7B">
<node concept="2OqwBi" id="73aHuggfpo6" role="3uHU7B">
<node concept="37vLTw" id="73aHuggfnQJ" role="2Oq$k0">
<ref role="3cqZAo" node="73aHuggfnQt" resolve="head" />
</node>
<node concept="34oBXx" id="73aHuggfyis" role="2OqNvi" />
</node>
<node concept="3cmrfG" id="73aHuggfFnH" role="3uHU7w">
<property role="3cmrfH" value="1" />
</node>
</node>
</node>
</node>
</node>
<node concept="3clFbH" id="73aHuggdrpW" role="3cqZAp" />
<node concept="3clFbJ" id="70Wv0dJhS7z" role="3cqZAp">
<node concept="3clFbS" id="70Wv0dJhS7_" role="3clFbx">
<node concept="3SKdUt" id="73aHuggdRWW" role="3cqZAp">
<node concept="3SKdUq" id="73aHuggdRWY" role="3SKWNk">
<property role="3SKdUp" value="stop the error from being propagated, enable recover" />
</node>
</node>
<node concept="3clFbF" id="8odmgCoHuJ" role="3cqZAp">
<node concept="2OqwBi" id="8odmgCoHQh" role="3clFbG">
<node concept="2YIFZM" id="8odmgCoHx_" role="2Oq$k0">
@ -1086,32 +1227,12 @@
</node>
<node concept="3clFbH" id="70Wv0dJhS7$" role="3cqZAp" />
</node>
<node concept="2OqwBi" id="70Wv0dJhTXV" role="3clFbw">
<node concept="2OqwBi" id="70Wv0dJjmot" role="2Oq$k0">
<node concept="37vLTw" id="70Wv0dJjmck" role="2Oq$k0">
<ref role="3cqZAo" node="70Wv0dJjilw" resolve="originIdxRef" />
</node>
<node concept="liA8E" id="70Wv0dJjmG6" role="2OqNvi">
<ref role="37wK5l" to="18ew:~Reference.get():java.lang.Object" resolve="get" />
</node>
<node concept="22lmx$" id="73aHuggd6Tn" role="3clFbw">
<node concept="37vLTw" id="73aHuggg2dm" role="3uHU7w">
<ref role="3cqZAo" node="73aHuggffxC" resolve="onStart" />
</node>
<node concept="liA8E" id="70Wv0dJhTXX" role="2OqNvi">
<ref role="37wK5l" to="7n8k:70Wv0dJhQbd" resolve="isOrigin" />
<node concept="2OqwBi" id="70Wv0dJhTXY" role="37wK5m">
<node concept="1eOMI4" id="70Wv0dJhTXZ" role="2Oq$k0">
<node concept="10QFUN" id="70Wv0dJhTY0" role="1eOMHV">
<node concept="3uibUv" id="70Wv0dJhTY1" role="10QFUM">
<ref role="3uigEE" to="6pyv:7nPD14OaO1O" resolve="RuleEx" />
</node>
<node concept="37vLTw" id="70Wv0dJhTY2" role="10QFUP">
<ref role="3cqZAo" node="8odmgCo4Ln" resolve="rule" />
</node>
</node>
</node>
<node concept="liA8E" id="70Wv0dJhTY3" role="2OqNvi">
<ref role="37wK5l" to="6pyv:7nPD14Ob4em" resolve="originRef" />
</node>
</node>
<node concept="37vLTw" id="73aHuggd5Sg" role="3uHU7B">
<ref role="3cqZAo" node="73aHuggd5S4" resolve="principal" />
</node>
</node>
</node>
@ -5770,11 +5891,11 @@
<node concept="3cpWsn" id="70Wv0dJiUi7" role="3cpWs9">
<property role="TrG5h" value="originIndex" />
<node concept="3uibUv" id="70Wv0dJiUi5" role="1tU5fm">
<ref role="3uigEE" to="7n8k:70Wv0dJhQb2" resolve="OriginIndex" />
<ref role="3uigEE" to="7n8k:70Wv0dJhQb2" resolve="PrincipalOriginIndex" />
</node>
<node concept="2ShNRf" id="70Wv0dJiUi8" role="33vP2m">
<node concept="HV5vD" id="70Wv0dJiUi9" role="2ShVmc">
<ref role="HV5vE" to="7n8k:70Wv0dJhQb2" resolve="OriginIndex" />
<ref role="HV5vE" to="7n8k:70Wv0dJhQb2" resolve="PrincipalOriginIndex" />
</node>
</node>
</node>
@ -6015,7 +6136,7 @@
<node concept="37vLTG" id="70Wv0dJiUYa" role="3clF46">
<property role="TrG5h" value="originIndex" />
<node concept="3uibUv" id="70Wv0dJiUYw" role="1tU5fm">
<ref role="3uigEE" to="7n8k:70Wv0dJhQb2" resolve="OriginIndex" />
<ref role="3uigEE" to="7n8k:70Wv0dJhQb2" resolve="PrincipalOriginIndex" />
</node>
</node>
</node>
@ -6502,7 +6623,7 @@
<ref role="3cqZAo" node="70Wv0dJiUY$" resolve="originIndex" />
</node>
<node concept="liA8E" id="70Wv0dJj0Ot" role="2OqNvi">
<ref role="37wK5l" to="7n8k:70Wv0dJj0l_" resolve="addAllOrigin" />
<ref role="37wK5l" to="7n8k:70Wv0dJj0l_" resolve="addOrigin" />
<node concept="37vLTw" id="70Wv0dJj12a" role="37wK5m">
<ref role="3cqZAo" node="4QPCta1aZLt" resolve="input" />
</node>
@ -6519,7 +6640,7 @@
<node concept="3cpWsn" id="4QPCta1aZL_" role="3cpWs9">
<property role="TrG5h" value="applyingResult" />
<node concept="1rXfSq" id="4QPCta1aZLA" role="33vP2m">
<ref role="37wK5l" node="3IIf9O_gMkQ" resolve="applyEachPrincipal" />
<ref role="37wK5l" node="3IIf9O_gMkQ" resolve="applyEachRecursively" />
<node concept="37vLTw" id="4QPCta1aZLB" role="37wK5m">
<ref role="3cqZAo" node="4QPCta1aZLt" resolve="input" />
</node>
@ -6806,7 +6927,7 @@
</node>
<node concept="2tJIrI" id="7Oc59RS_GdO" role="jymVt" />
<node concept="3clFb_" id="3IIf9O_gMkQ" role="jymVt">
<property role="TrG5h" value="applyEachPrincipal" />
<property role="TrG5h" value="applyEachRecursively" />
<node concept="3Tm6S6" id="3IIf9O_gMkR" role="1B3o_S" />
<node concept="3uibUv" id="3IIf9O_gMkS" role="3clF45">
<ref role="3uigEE" node="4MqhgXU$YdP" resolve="ProgramProducer.ProgramFactory.ResultTriple" />
@ -6836,7 +6957,7 @@
<node concept="1pGfFk" id="xaaVXviCec" role="2ShVmc">
<ref role="37wK5l" node="xaaVXvi$I3" resolve="ProgramProducer.ProgramFactory.TemplateApplicator" />
<node concept="3clFbT" id="xaaVXviCkr" role="37wK5m">
<property role="3clFbU" value="false" />
<property role="3clFbU" value="true" />
</node>
</node>
</node>
@ -6869,7 +6990,7 @@
<node concept="1pGfFk" id="xaaVXviCy0" role="2ShVmc">
<ref role="37wK5l" node="xaaVXvi$I3" resolve="ProgramProducer.ProgramFactory.TemplateApplicator" />
<node concept="3clFbT" id="xaaVXviCCf" role="37wK5m">
<property role="3clFbU" value="false" />
<property role="3clFbU" value="true" />
</node>
</node>
</node>
@ -6913,9 +7034,7 @@
<node concept="2ShNRf" id="4UTrqZZPyYW" role="37wK5m">
<node concept="1pGfFk" id="xaaVXviCPO" role="2ShVmc">
<ref role="37wK5l" node="xaaVXvi$I3" resolve="ProgramProducer.ProgramFactory.TemplateApplicator" />
<node concept="3clFbT" id="xaaVXviCW3" role="37wK5m">
<property role="3clFbU" value="true" />
</node>
<node concept="3clFbT" id="xaaVXviCW3" role="37wK5m" />
</node>
</node>
<node concept="3uibUv" id="4UTrqZZPyYY" role="1pMfVU">
@ -7749,6 +7868,11 @@
<node concept="3clFbH" id="4vBwiiV8924" role="3cqZAp" />
<node concept="1DcWWT" id="tIwzd1I3Ww" role="3cqZAp">
<node concept="3clFbS" id="tIwzd1I3Wx" role="2LFqv$">
<node concept="3SKdUt" id="42eP3ws0HmN" role="3cqZAp">
<node concept="3SKdUq" id="42eP3ws0HmP" role="3SKWNk">
<property role="3SKdUp" value="FIXME drop this feature" />
</node>
</node>
<node concept="3clFbJ" id="xaaVXvp4el" role="3cqZAp">
<node concept="3clFbS" id="xaaVXvp4en" role="3clFbx">
<node concept="3N13vt" id="xaaVXvp7Cl" role="3cqZAp" />
@ -8637,22 +8761,22 @@
<node concept="2tJIrI" id="4vBwiiVcARn" role="jymVt" />
<node concept="3clFbW" id="xaaVXvi$I3" role="jymVt">
<node concept="37vLTG" id="xaaVXvi$JH" role="3clF46">
<property role="TrG5h" value="skipPrincipal" />
<property role="TrG5h" value="recursive" />
<node concept="10P_77" id="xaaVXvi$JX" role="1tU5fm" />
</node>
<node concept="3cqZAl" id="xaaVXvi$I5" role="3clF45" />
<node concept="3Tm6S6" id="xaaVXvi$I6" role="1B3o_S" />
<node concept="3clFbS" id="xaaVXvi$I7" role="3clF47">
<node concept="3clFbF" id="xaaVXvi$LM" role="3cqZAp">
<node concept="37vLTI" id="xaaVXvi$LO" role="3clFbG">
<node concept="2OqwBi" id="xaaVXviAwn" role="37vLTJ">
<node concept="Xjq3P" id="xaaVXviA_C" role="2Oq$k0" />
<node concept="2OwXpG" id="xaaVXviAwq" role="2OqNvi">
<ref role="2Oxat5" node="xaaVXvi$LI" resolve="skipPrincipal" />
</node>
<node concept="3clFbF" id="42eP3wrZV0R" role="3cqZAp">
<node concept="37vLTI" id="42eP3wrZWla" role="3clFbG">
<node concept="37vLTw" id="42eP3wrZWFo" role="37vLTx">
<ref role="3cqZAo" node="xaaVXvi$JH" resolve="recursive" />
</node>
<node concept="37vLTw" id="xaaVXvi$LS" role="37vLTx">
<ref role="3cqZAo" node="xaaVXvi$JH" resolve="skipPrincipal" />
<node concept="2OqwBi" id="42eP3wrZVdb" role="37vLTJ">
<node concept="Xjq3P" id="42eP3wrZV0P" role="2Oq$k0" />
<node concept="2OwXpG" id="42eP3wrZVFR" role="2OqNvi">
<ref role="2Oxat5" node="42eP3wrZOvp" resolve="recursive" />
</node>
</node>
</node>
</node>
@ -8676,7 +8800,7 @@
<ref role="3cqZAo" node="70Wv0dJiUY$" resolve="originIndex" />
</node>
<node concept="liA8E" id="6EY0p2wqsGP" role="2OqNvi">
<ref role="37wK5l" to="7n8k:70Wv0dJjDa1" resolve="addProcessed" />
<ref role="37wK5l" to="7n8k:70Wv0dJjDa1" resolve="addPrincipal" />
<node concept="37vLTw" id="6EY0p2wqsQK" role="37wK5m">
<ref role="3cqZAo" node="5ntLU8GlzgG" resolve="node" />
</node>
@ -8684,9 +8808,20 @@
</node>
</node>
</node>
<node concept="3fqX7Q" id="6EY0p2wqtvV" role="3clFbw">
<node concept="37vLTw" id="6EY0p2wqtIN" role="3fr31v">
<ref role="3cqZAo" node="xaaVXvi$LI" resolve="skipPrincipal" />
<node concept="22lmx$" id="42eP3ws3Uq_" role="3clFbw">
<node concept="2OqwBi" id="42eP3ws3Vd2" role="3uHU7w">
<node concept="37vLTw" id="42eP3ws3UXo" role="2Oq$k0">
<ref role="3cqZAo" node="70Wv0dJiUY$" resolve="originIndex" />
</node>
<node concept="liA8E" id="42eP3ws3Y4O" role="2OqNvi">
<ref role="37wK5l" to="7n8k:42eP3ws38rS" resolve="isPrincipalAncestor" />
<node concept="37vLTw" id="42eP3ws3ZmG" role="37wK5m">
<ref role="3cqZAo" node="5ntLU8GlzgG" resolve="node" />
</node>
</node>
</node>
<node concept="37vLTw" id="42eP3ws1rLb" role="3uHU7B">
<ref role="3cqZAo" node="42eP3wrZOvp" resolve="recursive" />
</node>
</node>
</node>
@ -8751,8 +8886,10 @@
<node concept="37vLTw" id="6i42QSssRY0" role="37wK5m">
<ref role="3cqZAo" node="5ntLU8GlzgG" resolve="node" />
</node>
<node concept="37vLTw" id="xaaVXviAJD" role="37wK5m">
<ref role="3cqZAo" node="xaaVXvi$LI" resolve="skipPrincipal" />
<node concept="3fqX7Q" id="42eP3ws1Zx5" role="37wK5m">
<node concept="37vLTw" id="42eP3ws1Zx7" role="3fr31v">
<ref role="3cqZAo" node="42eP3wrZOvp" resolve="recursive" />
</node>
</node>
</node>
</node>
@ -8920,15 +9057,10 @@
</node>
</node>
<node concept="2tJIrI" id="1CcQBrPgAwx" role="jymVt" />
<node concept="312cEg" id="xaaVXvi$LI" role="jymVt">
<property role="TrG5h" value="skipPrincipal" />
<node concept="3Tm6S6" id="xaaVXvi$LJ" role="1B3o_S" />
<node concept="10P_77" id="xaaVXvi$LL" role="1tU5fm" />
</node>
<node concept="312cEg" id="6EY0p2wqh3a" role="jymVt">
<property role="TrG5h" value="recordProcessed" />
<node concept="3Tm6S6" id="6EY0p2wqh3b" role="1B3o_S" />
<node concept="10P_77" id="6EY0p2wqh3d" role="1tU5fm" />
<node concept="312cEg" id="42eP3wrZOvp" role="jymVt">
<property role="TrG5h" value="recursive" />
<node concept="3Tm6S6" id="42eP3wrZOvq" role="1B3o_S" />
<node concept="10P_77" id="42eP3wrZUxy" role="1tU5fm" />
</node>
</node>
<node concept="2tJIrI" id="5ntLU8GlzbG" role="jymVt" />
@ -9113,7 +9245,7 @@
<property role="TrG5h" value="originIndex" />
<node concept="3Tm6S6" id="70Wv0dJiUY_" role="1B3o_S" />
<node concept="3uibUv" id="70Wv0dJiUYB" role="1tU5fm">
<ref role="3uigEE" to="7n8k:70Wv0dJhQb2" resolve="OriginIndex" />
<ref role="3uigEE" to="7n8k:70Wv0dJhQb2" resolve="PrincipalOriginIndex" />
</node>
</node>
<node concept="3Tm6S6" id="7DvO2M9BJbW" role="1B3o_S" />

View File

@ -31,6 +31,7 @@
<child id="1068498886297" name="rValue" index="37vLTx" />
<child id="1068498886295" name="lValue" index="37vLTJ" />
</concept>
<concept id="4836112446988635817" name="jetbrains.mps.baseLanguage.structure.UndefinedType" flags="in" index="2jxLKc" />
<concept id="1202948039474" name="jetbrains.mps.baseLanguage.structure.InstanceMethodCallOperation" flags="nn" index="liA8E" />
<concept id="1224500799915" name="jetbrains.mps.baseLanguage.structure.BitwiseXorExpression" flags="nn" index="pVQyQ" />
<concept id="1465982738277781862" name="jetbrains.mps.baseLanguage.structure.PlaceholderMember" flags="ng" index="2tJIrI" />
@ -208,8 +209,28 @@
<concept id="1146644623116" name="jetbrains.mps.baseLanguage.structure.PrivateVisibility" flags="nn" index="3Tm6S6" />
<concept id="1146644641414" name="jetbrains.mps.baseLanguage.structure.ProtectedVisibility" flags="nn" index="3Tmbuc" />
</language>
<language id="fd392034-7849-419d-9071-12563d152375" name="jetbrains.mps.baseLanguage.closures">
<concept id="1199569711397" name="jetbrains.mps.baseLanguage.closures.structure.ClosureLiteral" flags="nn" index="1bVj0M">
<child id="1199569906740" name="parameter" index="1bW2Oz" />
<child id="1199569916463" name="body" index="1bW5cS" />
</concept>
</language>
<language id="f2801650-65d5-424e-bb1b-463a8781b786" name="jetbrains.mps.baseLanguage.javadoc">
<concept id="5349172909345501395" name="jetbrains.mps.baseLanguage.javadoc.structure.BaseDocComment" flags="ng" index="P$AiS">
<child id="8465538089690331502" name="body" index="TZ5H$" />
</concept>
<concept id="8465538089690331500" name="jetbrains.mps.baseLanguage.javadoc.structure.CommentLine" flags="ng" index="TZ5HA">
<child id="8970989240999019149" name="part" index="1dT_Ay" />
</concept>
<concept id="8970989240999019143" name="jetbrains.mps.baseLanguage.javadoc.structure.TextCommentLinePart" flags="ng" index="1dT_AC">
<property id="8970989240999019144" name="text" index="1dT_AB" />
</concept>
<concept id="2068944020170241612" name="jetbrains.mps.baseLanguage.javadoc.structure.ClassifierDocComment" flags="ng" index="3UR2Jj" />
</language>
<language id="7866978e-a0f0-4cc7-81bc-4d213d9375e1" name="jetbrains.mps.lang.smodel">
<concept id="5045161044515397667" name="jetbrains.mps.lang.smodel.structure.Node_PointerOperation" flags="ng" index="iZEcu" />
<concept id="7400021826771268254" name="jetbrains.mps.lang.smodel.structure.SNodePointerType" flags="ig" index="2sp9CU" />
<concept id="1173122760281" name="jetbrains.mps.lang.smodel.structure.Node_GetAncestorsOperation" flags="nn" index="z$bX8" />
<concept id="1145404486709" name="jetbrains.mps.lang.smodel.structure.SemanticDowncastExpression" flags="nn" index="2JrnkZ">
<child id="1145404616321" name="leftExpression" index="2JrQYb" />
</concept>
@ -231,6 +252,9 @@
</concept>
</language>
<language id="83888646-71ce-4f1c-9c53-c54016f6ad4f" name="jetbrains.mps.baseLanguage.collections">
<concept id="1204796164442" name="jetbrains.mps.baseLanguage.collections.structure.InternalSequenceOperation" flags="nn" index="23sCx2">
<child id="1204796294226" name="closure" index="23t8la" />
</concept>
<concept id="540871147943773365" name="jetbrains.mps.baseLanguage.collections.structure.SingleArgumentSequenceOperation" flags="nn" index="25WWJ4">
<child id="540871147943773366" name="argument" index="25WWJ7" />
</concept>
@ -244,7 +268,10 @@
<concept id="1237721394592" name="jetbrains.mps.baseLanguage.collections.structure.AbstractContainerCreator" flags="nn" index="HWqM0">
<child id="1237721435807" name="elementType" index="HW$YZ" />
</concept>
<concept id="1203518072036" name="jetbrains.mps.baseLanguage.collections.structure.SmartClosureParameterDeclaration" flags="ig" index="Rh6nW" />
<concept id="1160612413312" name="jetbrains.mps.baseLanguage.collections.structure.AddElementOperation" flags="nn" index="TSZUe" />
<concept id="1160666733551" name="jetbrains.mps.baseLanguage.collections.structure.AddAllElementsOperation" flags="nn" index="X8dFx" />
<concept id="1202128969694" name="jetbrains.mps.baseLanguage.collections.structure.SelectOperation" flags="nn" index="3$u5V9" />
<concept id="1172254888721" name="jetbrains.mps.baseLanguage.collections.structure.ContainsOperation" flags="nn" index="3JPx81" />
</language>
</registry>
@ -283,7 +310,7 @@
<node concept="37vLTG" id="70Wv0dJiIGc" role="3clF46">
<property role="TrG5h" value="originIndex" />
<node concept="3uibUv" id="70Wv0dJiIGk" role="1tU5fm">
<ref role="3uigEE" node="70Wv0dJhQb2" resolve="OriginIndex" />
<ref role="3uigEE" node="70Wv0dJhQb2" resolve="PrincipalOriginIndex" />
</node>
</node>
<node concept="3uibUv" id="5rhZO$U0jE9" role="3clF45">
@ -700,7 +727,7 @@
<node concept="37vLTG" id="70Wv0dJiJjG" role="3clF46">
<property role="TrG5h" value="originIndex" />
<node concept="3uibUv" id="70Wv0dJiJjU" role="1tU5fm">
<ref role="3uigEE" node="70Wv0dJhQb2" resolve="OriginIndex" />
<ref role="3uigEE" node="70Wv0dJhQb2" resolve="PrincipalOriginIndex" />
</node>
</node>
<node concept="3cqZAl" id="7eGEHDlcF6b" role="3clF45" />
@ -777,7 +804,7 @@
<property role="TrG5h" value="originIndex" />
<property role="1EzhhJ" value="false" />
<node concept="3uibUv" id="70Wv0dJiKW3" role="3clF45">
<ref role="3uigEE" node="70Wv0dJhQb2" resolve="OriginIndex" />
<ref role="3uigEE" node="70Wv0dJhQb2" resolve="PrincipalOriginIndex" />
</node>
<node concept="3Tm1VV" id="70Wv0dJiKW4" role="1B3o_S" />
<node concept="3clFbS" id="70Wv0dJiKW6" role="3clF47">
@ -1276,7 +1303,7 @@
<property role="TrG5h" value="originIndex" />
<node concept="3Tm6S6" id="70Wv0dJiJjY" role="1B3o_S" />
<node concept="3uibUv" id="70Wv0dJiJk0" role="1tU5fm">
<ref role="3uigEE" node="70Wv0dJhQb2" resolve="OriginIndex" />
<ref role="3uigEE" node="70Wv0dJhQb2" resolve="PrincipalOriginIndex" />
</node>
</node>
<node concept="3Tm1VV" id="7nPD14O5B_4" role="1B3o_S" />
@ -2375,7 +2402,7 @@
<property role="TrG5h" value="originIndex" />
<property role="1EzhhJ" value="true" />
<node concept="3uibUv" id="70Wv0dJhQbP" role="3clF45">
<ref role="3uigEE" node="70Wv0dJhQb2" resolve="OriginIndex" />
<ref role="3uigEE" node="70Wv0dJhQb2" resolve="PrincipalOriginIndex" />
</node>
<node concept="3Tm1VV" id="70Wv0dJhKJr" role="1B3o_S" />
<node concept="3clFbS" id="70Wv0dJhKJs" role="3clF47" />
@ -2387,10 +2414,10 @@
</node>
</node>
<node concept="312cEu" id="70Wv0dJhQb2">
<property role="TrG5h" value="OriginIndex" />
<property role="TrG5h" value="PrincipalOriginIndex" />
<node concept="2tJIrI" id="70Wv0dJhQb4" role="jymVt" />
<node concept="3clFb_" id="70Wv0dJhQbd" role="jymVt">
<property role="TrG5h" value="isOrigin" />
<property role="TrG5h" value="isPrincipal" />
<node concept="37vLTG" id="70Wv0dJhQbs" role="3clF46">
<property role="TrG5h" value="ref" />
<node concept="2sp9CU" id="70Wv0dJhQbw" role="1tU5fm" />
@ -2402,7 +2429,7 @@
<node concept="22lmx$" id="70Wv0dJk6g2" role="3clFbG">
<node concept="2OqwBi" id="70Wv0dJk7pt" role="3uHU7w">
<node concept="37vLTw" id="70Wv0dJk6hD" role="2Oq$k0">
<ref role="3cqZAo" node="70Wv0dJjR_A" resolve="processedOriginRefs" />
<ref role="3cqZAo" node="70Wv0dJjR_A" resolve="principalRefs" />
</node>
<node concept="3JPx81" id="70Wv0dJk8uu" role="2OqNvi">
<node concept="37vLTw" id="70Wv0dJk8Ec" role="25WWJ7">
@ -2425,6 +2452,33 @@
</node>
</node>
<node concept="2tJIrI" id="70Wv0dJhQb9" role="jymVt" />
<node concept="3clFb_" id="42eP3ws38rS" role="jymVt">
<property role="TrG5h" value="isPrincipalAncestor" />
<node concept="37vLTG" id="42eP3ws3$HT" role="3clF46">
<property role="TrG5h" value="node" />
<node concept="3Tqbb2" id="42eP3ws3ZT5" role="1tU5fm" />
</node>
<node concept="10P_77" id="42eP3ws3cdT" role="3clF45" />
<node concept="3Tm1VV" id="42eP3ws38rV" role="1B3o_S" />
<node concept="3clFbS" id="42eP3ws38rW" role="3clF47">
<node concept="3clFbF" id="42eP3ws3E_j" role="3cqZAp">
<node concept="2OqwBi" id="42eP3ws3Fh2" role="3clFbG">
<node concept="37vLTw" id="42eP3ws3E_i" role="2Oq$k0">
<ref role="3cqZAo" node="42eP3ws2olF" resolve="principalAncestorsRefs" />
</node>
<node concept="3JPx81" id="42eP3ws3TMZ" role="2OqNvi">
<node concept="2OqwBi" id="42eP3ws40dh" role="25WWJ7">
<node concept="37vLTw" id="42eP3ws3TWA" role="2Oq$k0">
<ref role="3cqZAo" node="42eP3ws3$HT" resolve="node" />
</node>
<node concept="iZEcu" id="42eP3ws40FG" role="2OqNvi" />
</node>
</node>
</node>
</node>
</node>
</node>
<node concept="2tJIrI" id="42eP3ws33KR" role="jymVt" />
<node concept="3clFb_" id="70Wv0dJj0l7" role="jymVt">
<property role="TrG5h" value="addOrigin" />
<node concept="37vLTG" id="70Wv0dJj0ls" role="3clF46">
@ -2453,11 +2507,46 @@
</node>
</node>
</node>
<node concept="3clFbF" id="42eP3ws2t2Y" role="3cqZAp">
<node concept="2OqwBi" id="42eP3ws2vJx" role="3clFbG">
<node concept="37vLTw" id="42eP3ws2v4d" role="2Oq$k0">
<ref role="3cqZAo" node="42eP3ws2olF" resolve="principalAncestorsRefs" />
</node>
<node concept="X8dFx" id="42eP3ws2ITI" role="2OqNvi">
<node concept="2OqwBi" id="42eP3ws2ODl" role="25WWJ7">
<node concept="2OqwBi" id="42eP3ws2LzL" role="2Oq$k0">
<node concept="37vLTw" id="42eP3ws2KdD" role="2Oq$k0">
<ref role="3cqZAo" node="70Wv0dJj0ls" resolve="node" />
</node>
<node concept="z$bX8" id="42eP3ws2MLj" role="2OqNvi" />
</node>
<node concept="3$u5V9" id="42eP3ws2Rr5" role="2OqNvi">
<node concept="1bVj0M" id="42eP3ws2Rr7" role="23t8la">
<node concept="3clFbS" id="42eP3ws2Rr8" role="1bW5cS">
<node concept="3clFbF" id="42eP3ws2S9m" role="3cqZAp">
<node concept="2OqwBi" id="42eP3ws2Txp" role="3clFbG">
<node concept="37vLTw" id="42eP3ws2S9l" role="2Oq$k0">
<ref role="3cqZAo" node="42eP3ws2Rr9" resolve="it" />
</node>
<node concept="iZEcu" id="42eP3ws2UQq" role="2OqNvi" />
</node>
</node>
</node>
<node concept="Rh6nW" id="42eP3ws2Rr9" role="1bW2Oz">
<property role="TrG5h" value="it" />
<node concept="2jxLKc" id="42eP3ws2Rra" role="1tU5fm" />
</node>
</node>
</node>
</node>
</node>
</node>
</node>
</node>
</node>
<node concept="2tJIrI" id="70Wv0dJj0m2" role="jymVt" />
<node concept="3clFb_" id="70Wv0dJj0l_" role="jymVt">
<property role="TrG5h" value="addAllOrigin" />
<property role="TrG5h" value="addOrigin" />
<node concept="37vLTG" id="70Wv0dJj0lA" role="3clF46">
<property role="TrG5h" value="nodes" />
<node concept="A3Dl8" id="70Wv0dJj0mv" role="1tU5fm">
@ -2488,6 +2577,41 @@
</node>
</node>
</node>
<node concept="3clFbF" id="42eP3ws2W__" role="3cqZAp">
<node concept="2OqwBi" id="42eP3ws2W_A" role="3clFbG">
<node concept="37vLTw" id="42eP3ws2W_B" role="2Oq$k0">
<ref role="3cqZAo" node="42eP3ws2olF" resolve="principalAncestorsRefs" />
</node>
<node concept="X8dFx" id="42eP3ws2W_C" role="2OqNvi">
<node concept="2OqwBi" id="42eP3ws2W_D" role="25WWJ7">
<node concept="2OqwBi" id="42eP3ws2W_E" role="2Oq$k0">
<node concept="37vLTw" id="42eP3ws2XcN" role="2Oq$k0">
<ref role="3cqZAo" node="70Wv0dJkbgv" resolve="n" />
</node>
<node concept="z$bX8" id="42eP3ws2W_G" role="2OqNvi" />
</node>
<node concept="3$u5V9" id="42eP3ws2W_H" role="2OqNvi">
<node concept="1bVj0M" id="42eP3ws2W_I" role="23t8la">
<node concept="3clFbS" id="42eP3ws2W_J" role="1bW5cS">
<node concept="3clFbF" id="42eP3ws2W_K" role="3cqZAp">
<node concept="2OqwBi" id="42eP3ws2W_L" role="3clFbG">
<node concept="37vLTw" id="42eP3ws2W_M" role="2Oq$k0">
<ref role="3cqZAo" node="42eP3ws2W_O" resolve="it" />
</node>
<node concept="iZEcu" id="42eP3ws2W_N" role="2OqNvi" />
</node>
</node>
</node>
<node concept="Rh6nW" id="42eP3ws2W_O" role="1bW2Oz">
<property role="TrG5h" value="it" />
<node concept="2jxLKc" id="42eP3ws2W_P" role="1tU5fm" />
</node>
</node>
</node>
</node>
</node>
</node>
</node>
</node>
<node concept="3cpWsn" id="70Wv0dJkbgv" role="1Duv9x">
<property role="TrG5h" value="n" />
@ -2501,7 +2625,7 @@
</node>
<node concept="2tJIrI" id="70Wv0dJjD99" role="jymVt" />
<node concept="3clFb_" id="70Wv0dJjDa1" role="jymVt">
<property role="TrG5h" value="addProcessed" />
<property role="TrG5h" value="addPrincipal" />
<node concept="37vLTG" id="70Wv0dJjDa_" role="3clF46">
<property role="TrG5h" value="node" />
<node concept="3Tqbb2" id="70Wv0dJjDaK" role="1tU5fm" />
@ -2512,7 +2636,7 @@
<node concept="3clFbF" id="70Wv0dJjXxv" role="3cqZAp">
<node concept="2OqwBi" id="70Wv0dJjY4G" role="3clFbG">
<node concept="37vLTw" id="70Wv0dJjXxu" role="2Oq$k0">
<ref role="3cqZAo" node="70Wv0dJjR_A" resolve="processedOriginRefs" />
<ref role="3cqZAo" node="70Wv0dJjR_A" resolve="principalRefs" />
</node>
<node concept="TSZUe" id="70Wv0dJkdpd" role="2OqNvi">
<node concept="2OqwBi" id="70Wv0dJkdp9" role="25WWJ7">
@ -2528,11 +2652,26 @@
</node>
</node>
</node>
<node concept="3clFbF" id="73aHuggbwye" role="3cqZAp">
<node concept="2OqwBi" id="73aHuggbwyf" role="3clFbG">
<node concept="37vLTw" id="73aHuggbwyg" role="2Oq$k0">
<ref role="3cqZAo" node="42eP3ws2olF" resolve="principalAncestorsRefs" />
</node>
<node concept="3JPx81" id="73aHuggbwyh" role="2OqNvi">
<node concept="2OqwBi" id="73aHuggbwyi" role="25WWJ7">
<node concept="37vLTw" id="73aHuggbwSF" role="2Oq$k0">
<ref role="3cqZAo" node="70Wv0dJjDa_" resolve="node" />
</node>
<node concept="iZEcu" id="73aHuggbwyk" role="2OqNvi" />
</node>
</node>
</node>
</node>
</node>
</node>
<node concept="2tJIrI" id="70Wv0dJjMWX" role="jymVt" />
<node concept="3clFb_" id="70Wv0dJjMVT" role="jymVt">
<property role="TrG5h" value="addAllProcessed" />
<property role="TrG5h" value="addAllPrincipal" />
<node concept="37vLTG" id="70Wv0dJjMVU" role="3clF46">
<property role="TrG5h" value="nodes" />
<node concept="A3Dl8" id="70Wv0dJjMY1" role="1tU5fm">
@ -2565,7 +2704,7 @@
<node concept="3clFbF" id="70Wv0dJjVCn" role="3cqZAp">
<node concept="2OqwBi" id="70Wv0dJjWfE" role="3clFbG">
<node concept="37vLTw" id="70Wv0dJjVCl" role="2Oq$k0">
<ref role="3cqZAo" node="70Wv0dJjR_A" resolve="processedOriginRefs" />
<ref role="3cqZAo" node="70Wv0dJjR_A" resolve="principalRefs" />
</node>
<node concept="TSZUe" id="70Wv0dJkfUm" role="2OqNvi">
<node concept="37vLTw" id="70Wv0dJkfUl" role="25WWJ7">
@ -2574,6 +2713,41 @@
</node>
</node>
</node>
<node concept="3clFbF" id="73aHuggby40" role="3cqZAp">
<node concept="2OqwBi" id="73aHuggby41" role="3clFbG">
<node concept="37vLTw" id="73aHuggby42" role="2Oq$k0">
<ref role="3cqZAo" node="42eP3ws2olF" resolve="principalAncestorsRefs" />
</node>
<node concept="X8dFx" id="73aHuggby43" role="2OqNvi">
<node concept="2OqwBi" id="73aHuggby44" role="25WWJ7">
<node concept="2OqwBi" id="73aHuggby45" role="2Oq$k0">
<node concept="37vLTw" id="73aHuggby46" role="2Oq$k0">
<ref role="3cqZAo" node="70Wv0dJjOpJ" resolve="n" />
</node>
<node concept="z$bX8" id="73aHuggby47" role="2OqNvi" />
</node>
<node concept="3$u5V9" id="73aHuggby48" role="2OqNvi">
<node concept="1bVj0M" id="73aHuggby49" role="23t8la">
<node concept="3clFbS" id="73aHuggby4a" role="1bW5cS">
<node concept="3clFbF" id="73aHuggby4b" role="3cqZAp">
<node concept="2OqwBi" id="73aHuggby4c" role="3clFbG">
<node concept="37vLTw" id="73aHuggby4d" role="2Oq$k0">
<ref role="3cqZAo" node="73aHuggby4f" resolve="it" />
</node>
<node concept="iZEcu" id="73aHuggby4e" role="2OqNvi" />
</node>
</node>
</node>
<node concept="Rh6nW" id="73aHuggby4f" role="1bW2Oz">
<property role="TrG5h" value="it" />
<node concept="2jxLKc" id="73aHuggby4g" role="1tU5fm" />
</node>
</node>
</node>
</node>
</node>
</node>
</node>
</node>
<node concept="3cpWsn" id="70Wv0dJjOpJ" role="1Duv9x">
<property role="TrG5h" value="n" />
@ -2598,9 +2772,8 @@
</node>
</node>
</node>
<node concept="2tJIrI" id="70Wv0dJk2zj" role="jymVt" />
<node concept="312cEg" id="70Wv0dJjR_A" role="jymVt">
<property role="TrG5h" value="processedOriginRefs" />
<property role="TrG5h" value="principalRefs" />
<node concept="3Tm6S6" id="70Wv0dJjR_B" role="1B3o_S" />
<node concept="2hMVRd" id="70Wv0dJjR_C" role="1tU5fm">
<node concept="2sp9CU" id="70Wv0dJjR_D" role="2hN53Y" />
@ -2611,8 +2784,31 @@
</node>
</node>
</node>
<node concept="2tJIrI" id="70Wv0dJjEJM" role="jymVt" />
<node concept="312cEg" id="42eP3ws2olF" role="jymVt">
<property role="TrG5h" value="principalAncestorsRefs" />
<node concept="3Tm6S6" id="42eP3ws2olG" role="1B3o_S" />
<node concept="2hMVRd" id="42eP3ws2olH" role="1tU5fm">
<node concept="2sp9CU" id="42eP3ws2olI" role="2hN53Y" />
</node>
<node concept="2ShNRf" id="42eP3ws2olJ" role="33vP2m">
<node concept="2i4dXS" id="42eP3ws2olK" role="2ShVmc">
<node concept="2sp9CU" id="42eP3ws2olL" role="HW$YZ" />
</node>
</node>
</node>
<node concept="3Tm1VV" id="70Wv0dJhQb3" role="1B3o_S" />
<node concept="3UR2Jj" id="42eP3wrZwa3" role="lGtFl">
<node concept="TZ5HA" id="42eP3wrZwa4" role="TZ5H$">
<node concept="1dT_AC" id="42eP3wrZwa5" role="1dT_Ay">
<property role="1dT_AB" value="Enables to track principal nodes, that is the nodes in source model which were included in templates" />
</node>
</node>
<node concept="TZ5HA" id="42eP3wrZwMd" role="TZ5H$">
<node concept="1dT_AC" id="42eP3wrZwMe" role="1dT_Ay">
<property role="1dT_AB" value="application process as origins or principals, as opposed to those that were merely required." />
</node>
</node>
</node>
</node>
</model>