Coderules/logic editor: support entering standalone item as logical clause, allow to type = and == naturally.

This commit is contained in:
Fedor Isakov 2020-02-04 17:34:38 +01:00
parent 9403087c11
commit b6e4e80010
3 changed files with 668 additions and 206 deletions

View File

@ -69,6 +69,9 @@
<concept id="1237385578942" name="jetbrains.mps.lang.editor.structure.IndentLayoutOnNewLineStyleClassItem" flags="ln" index="pVoyu" />
<concept id="1233148810477" name="jetbrains.mps.lang.editor.structure.InlineStyleDeclaration" flags="ng" index="tppnM" />
<concept id="1177327570013" name="jetbrains.mps.lang.editor.structure.QueryFunction_SubstituteMenu_Substitute" flags="in" index="ucgPf" />
<concept id="7671875129586001610" name="jetbrains.mps.lang.editor.structure.TransformationMenuPart_IncludeSubstituteMenu" flags="ng" index="ulPW2">
<child id="6089045305656903122" name="menuReference" index="2ks2uz" />
</concept>
<concept id="8478191136883534237" name="jetbrains.mps.lang.editor.structure.IExtensibleSubstituteMenuPart" flags="ng" index="upBLQ">
<child id="8478191136883534238" name="features" index="upBLP" />
</concept>
@ -77,6 +80,7 @@
</concept>
<concept id="8478191136882577348" name="jetbrains.mps.lang.editor.structure.QueryFunctionParameter_SubstituteMenu_CreatedNode" flags="ng" index="uqdCJ" />
<concept id="8478191136882577194" name="jetbrains.mps.lang.editor.structure.QueryFunction_SubstituteMenu_Select" flags="in" index="uqdF1" />
<concept id="1177335944525" name="jetbrains.mps.lang.editor.structure.QueryFunction_SubstituteMenu_SubstituteString" flags="in" index="uGdhv" />
<concept id="1080736578640" name="jetbrains.mps.lang.editor.structure.BaseEditorComponent" flags="ig" index="2wURMF">
<child id="1080736633877" name="cellModel" index="2wV5jI" />
</concept>
@ -211,9 +215,12 @@
<concept id="1225456267680" name="jetbrains.mps.lang.editor.structure.RGBColor" flags="ng" index="1iSF2X">
<property id="1225456424731" name="value" index="1iTho6" />
</concept>
<concept id="3622263992595020489" name="jetbrains.mps.lang.editor.structure.SubstituteMenuItem_DescriptionText_Operation" flags="ng" index="3j5asx" />
<concept id="3622263992595020486" name="jetbrains.mps.lang.editor.structure.SubstituteMenuItem_MatchingText_Operation" flags="ng" index="3j5asI" />
<concept id="7291101478617127464" name="jetbrains.mps.lang.editor.structure.IExtensibleTransformationMenuPart" flags="ng" index="1joUw2">
<child id="8954657570916349207" name="features" index="2jZA2a" />
</concept>
<concept id="3622263992592371436" name="jetbrains.mps.lang.editor.structure.QueryFunctionParameter_SubstituteMenu_WrappedItem" flags="ng" index="3jrdc4" />
<concept id="1381004262292414836" name="jetbrains.mps.lang.editor.structure.ICellStyle" flags="ng" index="1k5N5V">
<reference id="1381004262292426837" name="parentStyleClass" index="1k5W1q" />
</concept>
@ -237,6 +244,7 @@
<concept id="9122903797312246523" name="jetbrains.mps.lang.editor.structure.StyleReference" flags="ng" index="1wgc9g">
<reference id="9122903797312247166" name="style" index="1wgcnl" />
</concept>
<concept id="5425882385312046132" name="jetbrains.mps.lang.editor.structure.QueryFunctionParameter_SubstituteMenu_CurrentTargetNode" flags="nn" index="1yR$tW" />
<concept id="1139848536355" name="jetbrains.mps.lang.editor.structure.CellModel_WithRole" flags="ng" index="1$h60E">
<property id="1214560368769" name="emptyNoTargetText" index="39s7Ar" />
<property id="1139852716018" name="noTargetText" index="1$x2rV" />
@ -404,7 +412,9 @@
</language>
<language id="aee9cad2-acd4-4608-aef2-0004f6a1cdbd" name="jetbrains.mps.lang.actions">
<concept id="767145758118872833" name="jetbrains.mps.lang.actions.structure.NF_LinkList_AddNewChildOperation" flags="nn" index="2DeJg1" />
<concept id="767145758118872828" name="jetbrains.mps.lang.actions.structure.NF_Node_ReplaceWithNewOperation" flags="nn" index="2DeJnW" />
<concept id="767145758118872830" name="jetbrains.mps.lang.actions.structure.NF_Link_SetNewChildOperation" flags="nn" index="2DeJnY" />
<concept id="5480835971642155304" name="jetbrains.mps.lang.actions.structure.NF_Model_CreateNewNodeOperation" flags="nn" index="15TzpJ" />
</language>
<language id="7866978e-a0f0-4cc7-81bc-4d213d9375e1" name="jetbrains.mps.lang.smodel">
<concept id="1204851882688" name="jetbrains.mps.lang.smodel.structure.LinkRefQualifier" flags="ng" index="26LbJo">
@ -424,7 +434,13 @@
<concept id="1138661924179" name="jetbrains.mps.lang.smodel.structure.Property_SetOperation" flags="nn" index="tyxLq">
<child id="1138662048170" name="value" index="tz02z" />
</concept>
<concept id="1138757581985" name="jetbrains.mps.lang.smodel.structure.Link_SetNewChildOperation" flags="nn" index="zfrQC">
<reference id="1139880128956" name="concept" index="1A9B2P" />
</concept>
<concept id="7835263205327057228" name="jetbrains.mps.lang.smodel.structure.Node_GetChildrenAndChildAttributesOperation" flags="ng" index="Bykcj" />
<concept id="1143235216708" name="jetbrains.mps.lang.smodel.structure.Model_CreateNewNodeOperation" flags="nn" index="I8ghe">
<reference id="1143235391024" name="concept" index="I8UWU" />
</concept>
<concept id="1966870290088668520" name="jetbrains.mps.lang.smodel.structure.Enum_MembersOperation" flags="ng" index="2ViDtN" />
<concept id="1139184414036" name="jetbrains.mps.lang.smodel.structure.LinkList_AddNewChildOperation" flags="nn" index="WFELt" />
<concept id="1171407110247" name="jetbrains.mps.lang.smodel.structure.Node_GetAncestorOperation" flags="nn" index="2Xjw5R" />
@ -454,6 +470,9 @@
<concept id="1180636770613" name="jetbrains.mps.lang.smodel.structure.SNodeCreator" flags="nn" index="3zrR0B">
<child id="1180636770616" name="createdType" index="3zrR0E" />
</concept>
<concept id="1139867745658" name="jetbrains.mps.lang.smodel.structure.Node_ReplaceWithNewOperation" flags="nn" index="1_qnLN">
<reference id="1139867957129" name="concept" index="1_rbq0" />
</concept>
<concept id="1140131837776" name="jetbrains.mps.lang.smodel.structure.Node_ReplaceWithAnotherOperation" flags="nn" index="1P9Npp">
<child id="1140131861877" name="replacementNode" index="1P9ThW" />
</concept>
@ -2895,8 +2914,53 @@
<node concept="3ft6gV" id="1mdVbTRTSpu" role="3ft7WO">
<node concept="3N5dw7" id="4hPXq9JmemJ" role="3ft5RZ">
<node concept="16NfWO" id="oI9YrnjlN" role="upBLP">
<node concept="2h3Zct" id="oI9YrnjrM" role="16NeZM">
<property role="2h4Kg1" value="eval" />
<node concept="uGdhv" id="59P$gGfNL6t" role="16NeZM">
<node concept="3clFbS" id="59P$gGfNL6v" role="2VODD2">
<node concept="3clFbF" id="59P$gGfNLba" role="3cqZAp">
<node concept="3cpWs3" id="59P$gGfOjqe" role="3clFbG">
<node concept="Xl_RD" id="59P$gGfOjqk" role="3uHU7w">
<property role="Xl_RC" value=")" />
</node>
<node concept="3cpWs3" id="59P$gGfOiNn" role="3uHU7B">
<node concept="Xl_RD" id="59P$gGfNLb9" role="3uHU7B">
<property role="Xl_RC" value="eval(" />
</node>
<node concept="2OqwBi" id="59P$gGfOiT6" role="3uHU7w">
<node concept="3jrdc4" id="59P$gGfOiO0" role="2Oq$k0" />
<node concept="3j5asI" id="59P$gGfOiYZ" role="2OqNvi" />
</node>
</node>
</node>
</node>
</node>
</node>
</node>
<node concept="16NL0t" id="59P$gGfNcoT" role="upBLP">
<node concept="uGdhv" id="59P$gGfNcwi" role="16NL0q">
<node concept="3clFbS" id="59P$gGfNcwk" role="2VODD2">
<node concept="3clFbF" id="59P$gGfNc_3" role="3cqZAp">
<node concept="3cpWs3" id="59P$gGfYHIt" role="3clFbG">
<node concept="3cpWs3" id="59P$gGfYHiY" role="3uHU7B">
<node concept="3cpWs3" id="59P$gGfNd7y" role="3uHU7B">
<node concept="Xl_RD" id="59P$gGfNd8m" role="3uHU7B">
<property role="Xl_RC" value="evaluate " />
</node>
<node concept="2OqwBi" id="59P$gGfOjAf" role="3uHU7w">
<node concept="3jrdc4" id="59P$gGfOj_m" role="2Oq$k0" />
<node concept="3j5asI" id="59P$gGfYc8m" role="2OqNvi" />
</node>
</node>
<node concept="Xl_RD" id="59P$gGfYHIz" role="3uHU7w">
<property role="Xl_RC" value=" " />
</node>
</node>
<node concept="2OqwBi" id="59P$gGfYHRX" role="3uHU7w">
<node concept="3jrdc4" id="59P$gGfYHQ$" role="2Oq$k0" />
<node concept="3j5asx" id="59P$gGfYI6o" role="2OqNvi" />
</node>
</node>
</node>
</node>
</node>
</node>
<node concept="2kknPJ" id="4hPXq9JmemK" role="2klrvf">
@ -5133,5 +5197,400 @@
<node concept="l2Vlx" id="1laj_RThP8l" role="2iSdaV" />
</node>
</node>
<node concept="24kQdi" id="59P$gGfKFHA">
<property role="3GE5qa" value="rule.clause" />
<ref role="1XX52x" to="wq2x:59P$gGfKABp" resolve="ItemLogicalClause" />
<node concept="3EZMnI" id="59P$gGfKFHP" role="2wV5jI">
<node concept="3F1sOY" id="59P$gGfKFHZ" role="3EZMnx">
<ref role="1NtTu8" to="wq2x:59P$gGfKABq" resolve="item" />
</node>
<node concept="l2Vlx" id="59P$gGfKFHS" role="2iSdaV" />
</node>
</node>
<node concept="3p36aQ" id="59P$gGfZMFw">
<property role="3GE5qa" value="rule.clause" />
<ref role="aqKnT" to="wq2x:59P$gGfKABp" resolve="ItemLogicalClause" />
<node concept="3N5dw7" id="59P$gGgaPq7" role="3ft7WO">
<node concept="3N5aqt" id="59P$gGgaPq9" role="3Na0zg">
<node concept="3clFbS" id="59P$gGgaPqb" role="2VODD2">
<node concept="3cpWs8" id="59P$gGgaPut" role="3cqZAp">
<node concept="3cpWsn" id="59P$gGgaPuu" role="3cpWs9">
<property role="TrG5h" value="ilc" />
<node concept="3Tqbb2" id="59P$gGgaPuv" role="1tU5fm">
<ref role="ehGHo" to="wq2x:59P$gGfKABp" resolve="ItemLogicalClause" />
</node>
<node concept="2OqwBi" id="59P$gGgaPuw" role="33vP2m">
<node concept="1rpKSd" id="59P$gGgaPux" role="2Oq$k0" />
<node concept="15TzpJ" id="59P$gGgaPuy" role="2OqNvi">
<ref role="I8UWU" to="wq2x:59P$gGfKABp" resolve="ItemLogicalClause" />
</node>
</node>
</node>
</node>
<node concept="3clFbF" id="59P$gGgaPxe" role="3cqZAp">
<node concept="2OqwBi" id="59P$gGgaPxf" role="3clFbG">
<node concept="2OqwBi" id="59P$gGgaPxg" role="2Oq$k0">
<node concept="37vLTw" id="59P$gGgaPxh" role="2Oq$k0">
<ref role="3cqZAo" node="59P$gGgaPuu" resolve="ilc" />
</node>
<node concept="3TrEf2" id="59P$gGgaPxi" role="2OqNvi">
<ref role="3Tt5mk" to="wq2x:59P$gGfKABq" resolve="item" />
</node>
</node>
<node concept="2oxUTD" id="59P$gGgaPxj" role="2OqNvi">
<node concept="3N4pyC" id="59P$gGgaPQn" role="2oxUTC" />
</node>
</node>
</node>
<node concept="3clFbF" id="59P$gGgaPCl" role="3cqZAp">
<node concept="37vLTw" id="59P$gGgaPCj" role="3clFbG">
<ref role="3cqZAo" node="59P$gGgaPuu" resolve="ilc" />
</node>
</node>
</node>
</node>
<node concept="2kknPJ" id="59P$gGgaPrJ" role="2klrvf">
<ref role="2ZyFGn" to="5j4j:7E86$tKsl45" resolve="LogicalItem" />
</node>
</node>
</node>
<node concept="Q6S24" id="59P$gGg0n8Y">
<property role="3GE5qa" value="rule.clause" />
<property role="TrG5h" value="ItemLogicalClause_right" />
<ref role="aqKnT" to="wq2x:59P$gGfKABp" resolve="ItemLogicalClause" />
<node concept="3eGOop" id="59P$gGfKG70" role="3ft7WO">
<ref role="3EoQqy" to="wq2x:20Ay2VefOqF" resolve="LogicalClause" />
<node concept="ucgPf" id="59P$gGfKG72" role="3aKz83">
<node concept="3clFbS" id="59P$gGfKG74" role="2VODD2">
<node concept="3cpWs8" id="59P$gGfL6Ta" role="3cqZAp">
<node concept="3cpWsn" id="59P$gGfL6Tb" role="3cpWs9">
<property role="TrG5h" value="clc" />
<node concept="3Tqbb2" id="59P$gGfL6SG" role="1tU5fm">
<ref role="ehGHo" to="wq2x:20Ay2VefOBs" resolve="ConstraintLogicalClause" />
</node>
<node concept="2OqwBi" id="59P$gGfL6Tc" role="33vP2m">
<node concept="1yR$tW" id="59P$gGfL6Td" role="2Oq$k0" />
<node concept="2DeJnW" id="59P$gGfL6Te" role="2OqNvi">
<ref role="1_rbq0" to="wq2x:20Ay2VefOBs" resolve="ConstraintLogicalClause" />
</node>
</node>
</node>
</node>
<node concept="3cpWs8" id="59P$gGfL4k5" role="3cqZAp">
<node concept="3cpWsn" id="59P$gGfL4k6" role="3cpWs9">
<property role="TrG5h" value="eqc" />
<node concept="3Tqbb2" id="59P$gGfL4jN" role="1tU5fm">
<ref role="ehGHo" to="wq2x:1CcQBrQdzwG" resolve="EqualsConstraint" />
</node>
<node concept="2OqwBi" id="59P$gGfL7BV" role="33vP2m">
<node concept="2OqwBi" id="59P$gGfL7bb" role="2Oq$k0">
<node concept="37vLTw" id="59P$gGfL6Tf" role="2Oq$k0">
<ref role="3cqZAo" node="59P$gGfL6Tb" resolve="clc" />
</node>
<node concept="3TrEf2" id="59P$gGfL7rb" role="2OqNvi">
<ref role="3Tt5mk" to="wq2x:20Ay2VefOBA" resolve="constraint" />
</node>
</node>
<node concept="2DeJnY" id="59P$gGfL7O1" role="2OqNvi">
<ref role="1A9B2P" to="wq2x:1CcQBrQdzwG" resolve="EqualsConstraint" />
</node>
</node>
</node>
</node>
<node concept="3clFbF" id="59P$gGfL3Ir" role="3cqZAp">
<node concept="2OqwBi" id="59P$gGfL4R6" role="3clFbG">
<node concept="2OqwBi" id="59P$gGfL4xX" role="2Oq$k0">
<node concept="37vLTw" id="59P$gGfL4ka" role="2Oq$k0">
<ref role="3cqZAo" node="59P$gGfL4k6" resolve="eqc" />
</node>
<node concept="3TrEf2" id="59P$gGfL4GQ" role="2OqNvi">
<ref role="3Tt5mk" to="wq2x:1CcQBrQdzxt" resolve="left" />
</node>
</node>
<node concept="2oxUTD" id="59P$gGfL55R" role="2OqNvi">
<node concept="2OqwBi" id="59P$gGfL672" role="2oxUTC">
<node concept="2OqwBi" id="59P$gGfL5r7" role="2Oq$k0">
<node concept="1yR$tW" id="59P$gGfL59N" role="2Oq$k0" />
<node concept="3TrEf2" id="59P$gGfL5Wq" role="2OqNvi">
<ref role="3Tt5mk" to="wq2x:59P$gGfKABq" resolve="item" />
</node>
</node>
<node concept="3YRAZt" id="59P$gGfL6oU" role="2OqNvi" />
</node>
</node>
</node>
</node>
<node concept="3clFbF" id="59P$gGfL6$_" role="3cqZAp">
<node concept="37vLTw" id="59P$gGfL84h" role="3clFbG">
<ref role="3cqZAo" node="59P$gGfL6Tb" resolve="clc" />
</node>
</node>
</node>
</node>
<node concept="16NfWO" id="59P$gGfKGbA" role="upBLP">
<node concept="2h3Zct" id="59P$gGfKUDx" role="16NeZM">
<property role="2h4Kg1" value="==" />
</node>
</node>
</node>
<node concept="3eGOop" id="59P$gGfKUD$" role="3ft7WO">
<ref role="3EoQqy" to="wq2x:20Ay2VefOqF" resolve="LogicalClause" />
<node concept="ucgPf" id="59P$gGfKUD_" role="3aKz83">
<node concept="3clFbS" id="59P$gGfKUDA" role="2VODD2">
<node concept="3cpWs8" id="59P$gGfL8AS" role="3cqZAp">
<node concept="3cpWsn" id="59P$gGfL8AT" role="3cpWs9">
<property role="TrG5h" value="clc" />
<node concept="3Tqbb2" id="59P$gGfL8AU" role="1tU5fm">
<ref role="ehGHo" to="wq2x:20Ay2VefOBs" resolve="ConstraintLogicalClause" />
</node>
<node concept="2OqwBi" id="59P$gGfL8AV" role="33vP2m">
<node concept="1yR$tW" id="59P$gGfL8AW" role="2Oq$k0" />
<node concept="2DeJnW" id="59P$gGfL8AX" role="2OqNvi">
<ref role="1_rbq0" to="wq2x:20Ay2VefOBs" resolve="ConstraintLogicalClause" />
</node>
</node>
</node>
</node>
<node concept="3cpWs8" id="59P$gGfL8AY" role="3cqZAp">
<node concept="3cpWsn" id="59P$gGfL8AZ" role="3cpWs9">
<property role="TrG5h" value="uc" />
<node concept="3Tqbb2" id="59P$gGfL8B0" role="1tU5fm">
<ref role="ehGHo" to="wq2x:6p0DfM0oBcI" resolve="UnifiesConstraint" />
</node>
<node concept="2OqwBi" id="59P$gGfL8B1" role="33vP2m">
<node concept="2OqwBi" id="59P$gGfL8B2" role="2Oq$k0">
<node concept="37vLTw" id="59P$gGfL8B3" role="2Oq$k0">
<ref role="3cqZAo" node="59P$gGfL8AT" resolve="clc" />
</node>
<node concept="3TrEf2" id="59P$gGfL8B4" role="2OqNvi">
<ref role="3Tt5mk" to="wq2x:20Ay2VefOBA" resolve="constraint" />
</node>
</node>
<node concept="2DeJnY" id="59P$gGfL8B5" role="2OqNvi">
<ref role="1A9B2P" to="wq2x:6p0DfM0oBcI" resolve="UnifiesConstraint" />
</node>
</node>
</node>
</node>
<node concept="3clFbF" id="59P$gGfL8B6" role="3cqZAp">
<node concept="2OqwBi" id="59P$gGfL8B7" role="3clFbG">
<node concept="2OqwBi" id="59P$gGfL8B8" role="2Oq$k0">
<node concept="37vLTw" id="59P$gGfL8B9" role="2Oq$k0">
<ref role="3cqZAo" node="59P$gGfL8AZ" resolve="uc" />
</node>
<node concept="3TrEf2" id="59P$gGfL9Ds" role="2OqNvi">
<ref role="3Tt5mk" to="wq2x:6p0DfM0oEeG" resolve="assignee" />
</node>
</node>
<node concept="2oxUTD" id="59P$gGfL8Bb" role="2OqNvi">
<node concept="2OqwBi" id="59P$gGfL8Bc" role="2oxUTC">
<node concept="2OqwBi" id="59P$gGfL8Bd" role="2Oq$k0">
<node concept="1yR$tW" id="59P$gGfL8Be" role="2Oq$k0" />
<node concept="3TrEf2" id="59P$gGfL8Bf" role="2OqNvi">
<ref role="3Tt5mk" to="wq2x:59P$gGfKABq" resolve="item" />
</node>
</node>
<node concept="3YRAZt" id="59P$gGfL8Bg" role="2OqNvi" />
</node>
</node>
</node>
</node>
<node concept="3clFbF" id="59P$gGfL8Bh" role="3cqZAp">
<node concept="37vLTw" id="59P$gGfL8Bi" role="3clFbG">
<ref role="3cqZAo" node="59P$gGfL8AT" resolve="clc" />
</node>
</node>
</node>
</node>
<node concept="16NfWO" id="59P$gGfKUDC" role="upBLP">
<node concept="2h3Zct" id="59P$gGfKUDD" role="16NeZM">
<property role="2h4Kg1" value="=" />
</node>
</node>
</node>
</node>
<node concept="IW6AY" id="59P$gGg1q2o">
<property role="3GE5qa" value="rule.clause" />
<ref role="aqKnT" to="wq2x:59P$gGfKABp" resolve="ItemLogicalClause" />
<node concept="1Qtc8_" id="59P$gGfME5G" role="IW6Ez">
<node concept="3cWJ9i" id="59P$gGfME5K" role="1Qtc8$">
<node concept="CtIbL" id="59P$gGfME5M" role="CtIbM">
<property role="CtIbK" value="30NnNOohrQL/RIGHT" />
</node>
</node>
<node concept="ulPW2" id="59P$gGg2tE2" role="1Qtc8A">
<node concept="2kknPI" id="59P$gGg2tE8" role="2ks2uz">
<ref role="2kkw0f" node="59P$gGg0n8Y" resolve="ItemLogicalClause_right" />
</node>
</node>
</node>
<node concept="1Qtc8_" id="59P$gGgcyoq" role="IW6Ez">
<node concept="ulPW2" id="59P$gGgcyoD" role="1Qtc8A">
<node concept="2kknPI" id="59P$gGgcyoE" role="2ks2uz">
<ref role="2kkw0f" node="59P$gGgcxm3" resolve="ItemLogicalClause_left" />
</node>
</node>
<node concept="3cWJ9i" id="59P$gGgcyoz" role="1Qtc8$">
<node concept="CtIbL" id="59P$gGgcyo_" role="CtIbM">
<property role="CtIbK" value="1A4kJjlVmVt/LEFT" />
</node>
</node>
</node>
</node>
<node concept="Q6S24" id="59P$gGgcxm3">
<property role="3GE5qa" value="rule.clause" />
<property role="TrG5h" value="ItemLogicalClause_left" />
<ref role="aqKnT" to="wq2x:59P$gGfKABp" resolve="ItemLogicalClause" />
<node concept="3eGOop" id="59P$gGgcxm4" role="3ft7WO">
<ref role="3EoQqy" to="wq2x:20Ay2VefOqF" resolve="LogicalClause" />
<node concept="ucgPf" id="59P$gGgcxm5" role="3aKz83">
<node concept="3clFbS" id="59P$gGgcxm6" role="2VODD2">
<node concept="3cpWs8" id="59P$gGgcxm7" role="3cqZAp">
<node concept="3cpWsn" id="59P$gGgcxm8" role="3cpWs9">
<property role="TrG5h" value="clc" />
<node concept="3Tqbb2" id="59P$gGgcxm9" role="1tU5fm">
<ref role="ehGHo" to="wq2x:20Ay2VefOBs" resolve="ConstraintLogicalClause" />
</node>
<node concept="2OqwBi" id="59P$gGgcxma" role="33vP2m">
<node concept="1yR$tW" id="59P$gGgcxmb" role="2Oq$k0" />
<node concept="2DeJnW" id="59P$gGgcxmc" role="2OqNvi">
<ref role="1_rbq0" to="wq2x:20Ay2VefOBs" resolve="ConstraintLogicalClause" />
</node>
</node>
</node>
</node>
<node concept="3cpWs8" id="59P$gGgcxmd" role="3cqZAp">
<node concept="3cpWsn" id="59P$gGgcxme" role="3cpWs9">
<property role="TrG5h" value="eqc" />
<node concept="3Tqbb2" id="59P$gGgcxmf" role="1tU5fm">
<ref role="ehGHo" to="wq2x:1CcQBrQdzwG" resolve="EqualsConstraint" />
</node>
<node concept="2OqwBi" id="59P$gGgcxmg" role="33vP2m">
<node concept="2OqwBi" id="59P$gGgcxmh" role="2Oq$k0">
<node concept="37vLTw" id="59P$gGgcxmi" role="2Oq$k0">
<ref role="3cqZAo" node="59P$gGgcxm8" resolve="clc" />
</node>
<node concept="3TrEf2" id="59P$gGgcxmj" role="2OqNvi">
<ref role="3Tt5mk" to="wq2x:20Ay2VefOBA" resolve="constraint" />
</node>
</node>
<node concept="2DeJnY" id="59P$gGgcxmk" role="2OqNvi">
<ref role="1A9B2P" to="wq2x:1CcQBrQdzwG" resolve="EqualsConstraint" />
</node>
</node>
</node>
</node>
<node concept="3clFbF" id="59P$gGgcxml" role="3cqZAp">
<node concept="2OqwBi" id="59P$gGgcxmm" role="3clFbG">
<node concept="2OqwBi" id="59P$gGgcxmn" role="2Oq$k0">
<node concept="37vLTw" id="59P$gGgcxmo" role="2Oq$k0">
<ref role="3cqZAo" node="59P$gGgcxme" resolve="eqc" />
</node>
<node concept="3TrEf2" id="59P$gGgcxQO" role="2OqNvi">
<ref role="3Tt5mk" to="wq2x:1CcQBrQdzxv" resolve="right" />
</node>
</node>
<node concept="2oxUTD" id="59P$gGgcxmq" role="2OqNvi">
<node concept="2OqwBi" id="59P$gGgcxmr" role="2oxUTC">
<node concept="2OqwBi" id="59P$gGgcxms" role="2Oq$k0">
<node concept="1yR$tW" id="59P$gGgcxmt" role="2Oq$k0" />
<node concept="3TrEf2" id="59P$gGgcxmu" role="2OqNvi">
<ref role="3Tt5mk" to="wq2x:59P$gGfKABq" resolve="item" />
</node>
</node>
<node concept="3YRAZt" id="59P$gGgcxmv" role="2OqNvi" />
</node>
</node>
</node>
</node>
<node concept="3clFbF" id="59P$gGgcxmw" role="3cqZAp">
<node concept="37vLTw" id="59P$gGgcxmx" role="3clFbG">
<ref role="3cqZAo" node="59P$gGgcxm8" resolve="clc" />
</node>
</node>
</node>
</node>
<node concept="16NfWO" id="59P$gGgcxmy" role="upBLP">
<node concept="2h3Zct" id="59P$gGgcxmz" role="16NeZM">
<property role="2h4Kg1" value="==" />
</node>
</node>
</node>
<node concept="3eGOop" id="59P$gGgcxm$" role="3ft7WO">
<ref role="3EoQqy" to="wq2x:20Ay2VefOqF" resolve="LogicalClause" />
<node concept="ucgPf" id="59P$gGgcxm_" role="3aKz83">
<node concept="3clFbS" id="59P$gGgcxmA" role="2VODD2">
<node concept="3cpWs8" id="59P$gGgcxmB" role="3cqZAp">
<node concept="3cpWsn" id="59P$gGgcxmC" role="3cpWs9">
<property role="TrG5h" value="clc" />
<node concept="3Tqbb2" id="59P$gGgcxmD" role="1tU5fm">
<ref role="ehGHo" to="wq2x:20Ay2VefOBs" resolve="ConstraintLogicalClause" />
</node>
<node concept="2OqwBi" id="59P$gGgcxmE" role="33vP2m">
<node concept="1yR$tW" id="59P$gGgcxmF" role="2Oq$k0" />
<node concept="2DeJnW" id="59P$gGgcxmG" role="2OqNvi">
<ref role="1_rbq0" to="wq2x:20Ay2VefOBs" resolve="ConstraintLogicalClause" />
</node>
</node>
</node>
</node>
<node concept="3cpWs8" id="59P$gGgcxmH" role="3cqZAp">
<node concept="3cpWsn" id="59P$gGgcxmI" role="3cpWs9">
<property role="TrG5h" value="uc" />
<node concept="3Tqbb2" id="59P$gGgcxmJ" role="1tU5fm">
<ref role="ehGHo" to="wq2x:6p0DfM0oBcI" resolve="UnifiesConstraint" />
</node>
<node concept="2OqwBi" id="59P$gGgcxmK" role="33vP2m">
<node concept="2OqwBi" id="59P$gGgcxmL" role="2Oq$k0">
<node concept="37vLTw" id="59P$gGgcxmM" role="2Oq$k0">
<ref role="3cqZAo" node="59P$gGgcxmC" resolve="clc" />
</node>
<node concept="3TrEf2" id="59P$gGgcxmN" role="2OqNvi">
<ref role="3Tt5mk" to="wq2x:20Ay2VefOBA" resolve="constraint" />
</node>
</node>
<node concept="2DeJnY" id="59P$gGgcxmO" role="2OqNvi">
<ref role="1A9B2P" to="wq2x:6p0DfM0oBcI" resolve="UnifiesConstraint" />
</node>
</node>
</node>
</node>
<node concept="3clFbF" id="59P$gGgcxmP" role="3cqZAp">
<node concept="2OqwBi" id="59P$gGgcxmQ" role="3clFbG">
<node concept="2OqwBi" id="59P$gGgcxmR" role="2Oq$k0">
<node concept="37vLTw" id="59P$gGgcxmS" role="2Oq$k0">
<ref role="3cqZAo" node="59P$gGgcxmI" resolve="uc" />
</node>
<node concept="3TrEf2" id="59P$gGgcy5l" role="2OqNvi">
<ref role="3Tt5mk" to="wq2x:6p0DfM0oEna" resolve="value" />
</node>
</node>
<node concept="2oxUTD" id="59P$gGgcxmU" role="2OqNvi">
<node concept="2OqwBi" id="59P$gGgcxmV" role="2oxUTC">
<node concept="2OqwBi" id="59P$gGgcxmW" role="2Oq$k0">
<node concept="1yR$tW" id="59P$gGgcxmX" role="2Oq$k0" />
<node concept="3TrEf2" id="59P$gGgcxmY" role="2OqNvi">
<ref role="3Tt5mk" to="wq2x:59P$gGfKABq" resolve="item" />
</node>
</node>
<node concept="3YRAZt" id="59P$gGgcxmZ" role="2OqNvi" />
</node>
</node>
</node>
</node>
<node concept="3clFbF" id="59P$gGgcxn0" role="3cqZAp">
<node concept="37vLTw" id="59P$gGgcxn1" role="3clFbG">
<ref role="3cqZAo" node="59P$gGgcxmC" resolve="clc" />
</node>
</node>
</node>
</node>
<node concept="16NfWO" id="59P$gGgcxn2" role="upBLP">
<node concept="2h3Zct" id="59P$gGgcxn3" role="16NeZM">
<property role="2h4Kg1" value="=" />
</node>
</node>
</node>
</node>
</model>

View File

@ -1387,5 +1387,18 @@
<ref role="20lvS9" to="tpee:fz3vP1J" resolve="Expression" />
</node>
</node>
<node concept="1TIwiD" id="59P$gGfKABp">
<property role="EcuMT" value="5941814760080304601" />
<property role="3GE5qa" value="rule.clause" />
<property role="TrG5h" value="ItemLogicalClause" />
<ref role="1TJDcQ" node="20Ay2VefOqF" resolve="LogicalClause" />
<node concept="1TJgyj" id="59P$gGfKABq" role="1TKVEi">
<property role="IQ2ns" value="5941814760080304602" />
<property role="20lmBu" value="fLJjDmT/aggregation" />
<property role="20kJfa" value="item" />
<property role="20lbJX" value="fLJekj4/_1" />
<ref role="20lvS9" to="5j4j:7E86$tKsl45" resolve="LogicalItem" />
</node>
</node>
</model>

View File

@ -65,9 +65,6 @@
<concept id="1106270549637" name="jetbrains.mps.lang.editor.structure.CellLayout_Horizontal" flags="nn" index="2iRfu4" />
<concept id="1106270571710" name="jetbrains.mps.lang.editor.structure.CellLayout_Vertical" flags="nn" index="2iRkQZ" />
<concept id="3459162043708467089" name="jetbrains.mps.lang.editor.structure.CellActionMap_CanExecuteFunction" flags="in" index="jK8Ss" />
<concept id="6089045305654894367" name="jetbrains.mps.lang.editor.structure.SubstituteMenuReference_Named" flags="ng" index="2kknPI">
<reference id="6089045305654944382" name="menu" index="2kkw0f" />
</concept>
<concept id="6089045305654894366" name="jetbrains.mps.lang.editor.structure.SubstituteMenuReference_Default" flags="ng" index="2kknPJ" />
<concept id="1237303669825" name="jetbrains.mps.lang.editor.structure.CellLayout_Indent" flags="nn" index="l2Vlx" />
<concept id="1237307900041" name="jetbrains.mps.lang.editor.structure.IndentLayoutIndentStyleClassItem" flags="ln" index="lj46D" />
@ -125,7 +122,6 @@
<concept id="1078939183254" name="jetbrains.mps.lang.editor.structure.CellModel_Component" flags="sg" stub="3162947552742194261" index="PMmxH">
<reference id="1078939183255" name="editorComponent" index="PMmxG" />
</concept>
<concept id="3738029991950788349" name="jetbrains.mps.lang.editor.structure.SubstituteMenu_Named" flags="ng" index="Q6S24" />
<concept id="1235728439575" name="jetbrains.mps.lang.editor.structure.BaseLineCell" flags="ln" index="2R9Tw8" />
<concept id="4323500428121233431" name="jetbrains.mps.lang.editor.structure.EditorCellId" flags="ng" index="2SqB2G" />
<concept id="1149850725784" name="jetbrains.mps.lang.editor.structure.CellModel_AttributedNodeCell" flags="ng" index="2SsqMj" />
@ -211,14 +207,8 @@
<property id="1238091709220" name="labelName" index="1413C4" />
</concept>
<concept id="1223387125302" name="jetbrains.mps.lang.editor.structure.QueryFunction_Boolean" flags="in" index="3nzxsE" />
<concept id="3308396621974588243" name="jetbrains.mps.lang.editor.structure.SubstituteMenu_Contribution" flags="ng" index="3p309x">
<child id="7173407872095451092" name="menuReference" index="1IG6uw" />
</concept>
<concept id="3308396621974580100" name="jetbrains.mps.lang.editor.structure.SubstituteMenu_Default" flags="ng" index="3p36aQ" />
<concept id="7580468736840446506" name="jetbrains.mps.lang.editor.structure.ConceptFunctionParameter_model" flags="nn" index="1rpKSd" />
<concept id="730181322658904464" name="jetbrains.mps.lang.editor.structure.SubstituteMenuPart_IncludeMenu" flags="ng" index="1s_PAr">
<child id="730181322658904467" name="menuReference" index="1s_PAo" />
</concept>
<concept id="1088185857835" name="jetbrains.mps.lang.editor.structure.InlineEditorComponent" flags="ig" index="1sVBvm" />
<concept id="1219226236603" name="jetbrains.mps.lang.editor.structure.DrawBracketsStyleClassItem" flags="ln" index="3vyZuw" />
<concept id="9122903797312246523" name="jetbrains.mps.lang.editor.structure.StyleReference" flags="ng" index="1wgc9g">
@ -2888,200 +2878,6 @@
<node concept="l2Vlx" id="49obaclcC23" role="2iSdaV" />
</node>
</node>
<node concept="3p36aQ" id="49obaclcHw$">
<property role="3GE5qa" value="logical.item.expression" />
<ref role="aqKnT" to="5j4j:49obaclcan7" resolve="LogicalItemExpression" />
<node concept="3N5dw7" id="7XmdqtdNMLp" role="3ft7WO">
<node concept="3N5aqt" id="7XmdqtdNMLq" role="3Na0zg">
<node concept="3clFbS" id="7XmdqtdNMLr" role="2VODD2">
<node concept="3cpWs8" id="7XmdqtdNSAC" role="3cqZAp">
<node concept="3cpWsn" id="7XmdqtdNSAD" role="3cpWs9">
<property role="TrG5h" value="le" />
<node concept="3Tqbb2" id="7XmdqtdNSAB" role="1tU5fm">
<ref role="ehGHo" to="5j4j:49obaclcan7" resolve="LogicalItemExpression" />
</node>
<node concept="2ShNRf" id="7XmdqtdNSAE" role="33vP2m">
<node concept="3zrR0B" id="7XmdqtdNSAF" role="2ShVmc">
<node concept="3Tqbb2" id="7XmdqtdNSAG" role="3zrR0E">
<ref role="ehGHo" to="5j4j:49obaclcan7" resolve="LogicalItemExpression" />
</node>
</node>
</node>
</node>
</node>
<node concept="3clFbF" id="7XmdqtdNMWX" role="3cqZAp">
<node concept="2OqwBi" id="7XmdqtdNTZn" role="3clFbG">
<node concept="2OqwBi" id="7XmdqtdNTtp" role="2Oq$k0">
<node concept="37vLTw" id="7XmdqtdNSAH" role="2Oq$k0">
<ref role="3cqZAo" node="7XmdqtdNSAD" resolve="le" />
</node>
<node concept="3TrEf2" id="49obaclkKMn" role="2OqNvi">
<ref role="3Tt5mk" to="5j4j:49obaclcanY" resolve="logical" />
</node>
</node>
<node concept="2oxUTD" id="7XmdqtdNUmX" role="2OqNvi">
<node concept="3N4pyC" id="7XmdqtdNUwC" role="2oxUTC" />
</node>
</node>
</node>
<node concept="3clFbF" id="7XmdqtdNUKS" role="3cqZAp">
<node concept="37vLTw" id="7XmdqtdNUKQ" role="3clFbG">
<ref role="3cqZAo" node="7XmdqtdNSAD" resolve="le" />
</node>
</node>
</node>
</node>
<node concept="2kknPJ" id="7XmdqtdNMPi" role="2klrvf">
<ref role="2ZyFGn" to="5j4j:7E86$tKsl45" resolve="LogicalItem" />
</node>
</node>
</node>
<node concept="Q6S24" id="4hPXq9Jmeuj">
<property role="TrG5h" value="Expression_subst_LogicExpressionWrapper" />
<ref role="aqKnT" to="tpee:fz3vP1J" resolve="Expression" />
<node concept="2F$Pav" id="4hPXq9Jmeul" role="3ft7WO">
<node concept="3Tqbb2" id="4hPXq9Jmeum" role="2ZBHrp" />
<node concept="2$S_p_" id="4hPXq9Jmeun" role="2$S_pT">
<node concept="3clFbS" id="4hPXq9Jmeuo" role="2VODD2">
<node concept="3cpWs8" id="5yj19qaZwIU" role="3cqZAp">
<node concept="3cpWsn" id="5yj19qaZwIV" role="3cpWs9">
<property role="TrG5h" value="rd" />
<node concept="3uibUv" id="5yj19qaZwIS" role="1tU5fm">
<ref role="3uigEE" to="ykok:~ReferenceDescriptor" resolve="ReferenceDescriptor" />
</node>
<node concept="2YIFZM" id="5yj19qaZwIW" role="33vP2m">
<ref role="1Pybhc" to="ykok:~ModelConstraints" resolve="ModelConstraints" />
<ref role="37wK5l" to="ykok:~ModelConstraints.getReferenceDescriptor(org.jetbrains.mps.openapi.model.SNode,org.jetbrains.mps.openapi.language.SContainmentLink,int,org.jetbrains.mps.openapi.language.SReferenceLink,org.jetbrains.mps.openapi.language.SAbstractConcept)" resolve="getReferenceDescriptor" />
<node concept="3bvxqY" id="5yj19qaZwIX" role="37wK5m" />
<node concept="10Nm6u" id="5yj19qaZKuw" role="37wK5m" />
<node concept="3cmrfG" id="5yj19qaZwIZ" role="37wK5m">
<property role="3cmrfH" value="-1" />
</node>
<node concept="359W_D" id="5yj19qaZKt6" role="37wK5m">
<ref role="359W_E" to="5j4j:7E86$tK_OxQ" resolve="LogicalVariable" />
<ref role="359W_F" to="5j4j:7E86$tK_PaH" resolve="declaration" />
</node>
<node concept="35c_gC" id="5yj19qaZKuV" role="37wK5m">
<ref role="35c_gD" to="5j4j:7E86$tKtfM3" resolve="LogicalVariableDeclaration" />
</node>
</node>
</node>
</node>
<node concept="3clFbF" id="4hPXq9Jmeuz" role="3cqZAp">
<node concept="10QFUN" id="4hPXq9Jmeu$" role="3clFbG">
<node concept="A3Dl8" id="4hPXq9Jmeu_" role="10QFUM">
<node concept="3Tqbb2" id="4hPXq9JmeuA" role="A3Ik2" />
</node>
<node concept="2OqwBi" id="4hPXq9JmeuB" role="10QFUP">
<node concept="2OqwBi" id="4hPXq9JmeuC" role="2Oq$k0">
<node concept="37vLTw" id="5yj19qaZwUP" role="2Oq$k0">
<ref role="3cqZAo" node="5yj19qaZwIV" resolve="rd" />
</node>
<node concept="liA8E" id="4hPXq9JmeuE" role="2OqNvi">
<ref role="37wK5l" to="ykok:~ReferenceDescriptor.getScope()" resolve="getScope" />
</node>
</node>
<node concept="liA8E" id="4hPXq9JmeuF" role="2OqNvi">
<ref role="37wK5l" to="35tq:~Scope.getAvailableElements(java.lang.String)" resolve="getAvailableElements" />
<node concept="Xl_RD" id="4hPXq9JmeuG" role="37wK5m">
<property role="Xl_RC" value="" />
</node>
</node>
</node>
</node>
</node>
</node>
</node>
<node concept="3eGOop" id="4hPXq9Jmev8" role="2$S_pN">
<ref role="3EoQqy" to="5j4j:49obaclcan7" resolve="LogicalItemExpression" />
<node concept="ucgPf" id="4hPXq9Jmev9" role="3aKz83">
<node concept="3clFbS" id="4hPXq9Jmeva" role="2VODD2">
<node concept="3cpWs8" id="4hPXq9Jmevb" role="3cqZAp">
<node concept="3cpWsn" id="4hPXq9Jmevc" role="3cpWs9">
<property role="TrG5h" value="lew" />
<node concept="3Tqbb2" id="4hPXq9Jmevd" role="1tU5fm">
<ref role="ehGHo" to="5j4j:49obaclcan7" resolve="LogicalItemExpression" />
</node>
<node concept="2OqwBi" id="4hPXq9Jmeve" role="33vP2m">
<node concept="1rpKSd" id="4hPXq9JmevB" role="2Oq$k0" />
<node concept="15TzpJ" id="4hPXq9Jmevg" role="2OqNvi">
<ref role="I8UWU" to="5j4j:49obaclcan7" resolve="LogicalItemExpression" />
</node>
</node>
</node>
</node>
<node concept="3cpWs8" id="4hPXq9Jmevh" role="3cqZAp">
<node concept="3cpWsn" id="4hPXq9Jmevi" role="3cpWs9">
<property role="TrG5h" value="lvr" />
<node concept="3Tqbb2" id="4hPXq9Jmevj" role="1tU5fm">
<ref role="ehGHo" to="5j4j:7E86$tK_OxQ" resolve="LogicalVariable" />
</node>
<node concept="2OqwBi" id="4hPXq9Jmevk" role="33vP2m">
<node concept="1rpKSd" id="4hPXq9JmevC" role="2Oq$k0" />
<node concept="15TzpJ" id="4hPXq9Jmevm" role="2OqNvi">
<ref role="I8UWU" to="5j4j:7E86$tK_OxQ" resolve="LogicalVariable" />
</node>
</node>
</node>
</node>
<node concept="3clFbF" id="4hPXq9Jmevn" role="3cqZAp">
<node concept="2OqwBi" id="4hPXq9Jmevo" role="3clFbG">
<node concept="2OqwBi" id="4hPXq9Jmevp" role="2Oq$k0">
<node concept="37vLTw" id="4hPXq9Jmevq" role="2Oq$k0">
<ref role="3cqZAo" node="4hPXq9Jmevc" resolve="lew" />
</node>
<node concept="3TrEf2" id="49obaclgKzP" role="2OqNvi">
<ref role="3Tt5mk" to="5j4j:49obaclcanY" resolve="logical" />
</node>
</node>
<node concept="2oxUTD" id="4hPXq9Jmevs" role="2OqNvi">
<node concept="37vLTw" id="4hPXq9Jmevt" role="2oxUTC">
<ref role="3cqZAo" node="4hPXq9Jmevi" resolve="lvr" />
</node>
</node>
</node>
</node>
<node concept="3clFbF" id="4hPXq9Jmevu" role="3cqZAp">
<node concept="2OqwBi" id="4hPXq9Jmevv" role="3clFbG">
<node concept="2OqwBi" id="4hPXq9Jmevw" role="2Oq$k0">
<node concept="37vLTw" id="4hPXq9Jmevx" role="2Oq$k0">
<ref role="3cqZAo" node="4hPXq9Jmevi" resolve="lvr" />
</node>
<node concept="3TrEf2" id="4hPXq9Jmevy" role="2OqNvi">
<ref role="3Tt5mk" to="5j4j:7E86$tK_PaH" resolve="declaration" />
</node>
</node>
<node concept="2oxUTD" id="4hPXq9Jmevz" role="2OqNvi">
<node concept="1PxgMI" id="5p9vXslDvLi" role="2oxUTC">
<node concept="chp4Y" id="5p9vXslDwbv" role="3oSUPX">
<ref role="cht4Q" to="5j4j:7E86$tKtfM3" resolve="LogicalVariableDeclaration" />
</node>
<node concept="2ZBlsa" id="4hPXq9JmevD" role="1m5AlR" />
</node>
</node>
</node>
</node>
<node concept="3clFbF" id="4hPXq9Jmev_" role="3cqZAp">
<node concept="37vLTw" id="4hPXq9JmevA" role="3clFbG">
<ref role="3cqZAo" node="4hPXq9Jmevc" resolve="lew" />
</node>
</node>
</node>
</node>
</node>
</node>
</node>
<node concept="3p309x" id="49obaclhuzZ">
<property role="TrG5h" value="ExpressionContribution" />
<node concept="1s_PAr" id="4hPXq9Jmew6" role="3ft7WO">
<node concept="2kknPI" id="4hPXq9Jmew7" role="1s_PAo">
<ref role="2kkw0f" node="4hPXq9Jmeuj" resolve="Expression_subst_LogicExpressionWrapper" />
</node>
</node>
<node concept="2kknPJ" id="49obaclhuUT" role="1IG6uw">
<ref role="2ZyFGn" to="tpee:fz3vP1J" resolve="Expression" />
</node>
</node>
<node concept="24kQdi" id="JOGAOsxiLE">
<property role="3GE5qa" value="dataform.constructor.feature" />
<ref role="1XX52x" to="5j4j:JOGAOsxiL_" resolve="DataFormFeature" />
@ -4440,5 +4236,199 @@
</node>
</node>
</node>
<node concept="IW6AY" id="59P$gGg4wpJ">
<property role="3GE5qa" value="logical.item" />
<ref role="aqKnT" to="5j4j:7E86$tKsl45" resolve="LogicalItem" />
<node concept="1Qtc8_" id="59P$gGg4wpK" role="IW6Ez">
<node concept="3cWJ9i" id="59P$gGg4wpO" role="1Qtc8$">
<node concept="CtIbL" id="59P$gGg4wpQ" role="CtIbM">
<property role="CtIbK" value="30NnNOohrQL/RIGHT" />
</node>
</node>
<node concept="mvV$s" id="59P$gGg4wpU" role="1Qtc8A">
<node concept="mvVNg" id="59P$gGg4wpW" role="mvV$0">
<node concept="3clFbS" id="59P$gGg4wpX" role="2VODD2">
<node concept="3clFbF" id="59P$gGg4BIi" role="3cqZAp">
<node concept="2OqwBi" id="59P$gGg4BRN" role="3clFbG">
<node concept="7Obwk" id="59P$gGg4BIh" role="2Oq$k0" />
<node concept="1mfA1w" id="59P$gGg4C0I" role="2OqNvi" />
</node>
</node>
</node>
</node>
</node>
</node>
<node concept="1Qtc8_" id="59P$gGgd3j2" role="IW6Ez">
<node concept="3cWJ9i" id="59P$gGgd3j3" role="1Qtc8$">
<node concept="CtIbL" id="59P$gGgd3j4" role="CtIbM">
<property role="CtIbK" value="1A4kJjlVmVt/LEFT" />
</node>
</node>
<node concept="mvV$s" id="59P$gGgd3j5" role="1Qtc8A">
<node concept="mvVNg" id="59P$gGgd3j6" role="mvV$0">
<node concept="3clFbS" id="59P$gGgd3j7" role="2VODD2">
<node concept="3clFbF" id="59P$gGgd3j8" role="3cqZAp">
<node concept="2OqwBi" id="59P$gGgd3j9" role="3clFbG">
<node concept="7Obwk" id="59P$gGgd3ja" role="2Oq$k0" />
<node concept="1mfA1w" id="59P$gGgd3jb" role="2OqNvi" />
</node>
</node>
</node>
</node>
</node>
</node>
</node>
<node concept="3p36aQ" id="49obaclcHw$">
<property role="3GE5qa" value="logical.item.expression" />
<ref role="aqKnT" to="5j4j:49obaclcan7" resolve="LogicalItemExpression" />
<node concept="3N5dw7" id="7XmdqtdNMLp" role="3ft7WO">
<node concept="3N5aqt" id="7XmdqtdNMLq" role="3Na0zg">
<node concept="3clFbS" id="7XmdqtdNMLr" role="2VODD2">
<node concept="3cpWs8" id="7XmdqtdNSAC" role="3cqZAp">
<node concept="3cpWsn" id="7XmdqtdNSAD" role="3cpWs9">
<property role="TrG5h" value="le" />
<node concept="3Tqbb2" id="7XmdqtdNSAB" role="1tU5fm">
<ref role="ehGHo" to="5j4j:49obaclcan7" resolve="LogicalItemExpression" />
</node>
<node concept="2ShNRf" id="7XmdqtdNSAE" role="33vP2m">
<node concept="3zrR0B" id="7XmdqtdNSAF" role="2ShVmc">
<node concept="3Tqbb2" id="7XmdqtdNSAG" role="3zrR0E">
<ref role="ehGHo" to="5j4j:49obaclcan7" resolve="LogicalItemExpression" />
</node>
</node>
</node>
</node>
</node>
<node concept="3clFbF" id="7XmdqtdNMWX" role="3cqZAp">
<node concept="2OqwBi" id="7XmdqtdNTZn" role="3clFbG">
<node concept="2OqwBi" id="7XmdqtdNTtp" role="2Oq$k0">
<node concept="37vLTw" id="7XmdqtdNSAH" role="2Oq$k0">
<ref role="3cqZAo" node="7XmdqtdNSAD" resolve="le" />
</node>
<node concept="3TrEf2" id="49obaclkKMn" role="2OqNvi">
<ref role="3Tt5mk" to="5j4j:49obaclcanY" resolve="logical" />
</node>
</node>
<node concept="2oxUTD" id="7XmdqtdNUmX" role="2OqNvi">
<node concept="3N4pyC" id="7XmdqtdNUwC" role="2oxUTC" />
</node>
</node>
</node>
<node concept="3clFbF" id="7XmdqtdNUKS" role="3cqZAp">
<node concept="37vLTw" id="7XmdqtdNUKQ" role="3clFbG">
<ref role="3cqZAo" node="7XmdqtdNSAD" resolve="le" />
</node>
</node>
</node>
</node>
<node concept="2kknPJ" id="7XmdqtdNMPi" role="2klrvf">
<ref role="2ZyFGn" to="5j4j:7E86$tKsl45" resolve="LogicalItem" />
</node>
</node>
</node>
<node concept="3p36aQ" id="59P$gGg7gYN">
<property role="3GE5qa" value="logical.variable" />
<ref role="aqKnT" to="5j4j:7E86$tK_OxQ" resolve="LogicalVariable" />
<node concept="2F$Pav" id="59P$gGgazeG" role="3ft7WO">
<node concept="3Tqbb2" id="59P$gGgazeH" role="2ZBHrp" />
<node concept="2$S_p_" id="59P$gGgazeI" role="2$S_pT">
<node concept="3clFbS" id="59P$gGgazeJ" role="2VODD2">
<node concept="3cpWs8" id="59P$gGgazeK" role="3cqZAp">
<node concept="3cpWsn" id="59P$gGgazeL" role="3cpWs9">
<property role="TrG5h" value="rd" />
<node concept="3uibUv" id="59P$gGgazeM" role="1tU5fm">
<ref role="3uigEE" to="ykok:~ReferenceDescriptor" resolve="ReferenceDescriptor" />
</node>
<node concept="2YIFZM" id="59P$gGgazeN" role="33vP2m">
<ref role="37wK5l" to="ykok:~ModelConstraints.getReferenceDescriptor(org.jetbrains.mps.openapi.model.SNode,org.jetbrains.mps.openapi.language.SContainmentLink,int,org.jetbrains.mps.openapi.language.SReferenceLink,org.jetbrains.mps.openapi.language.SAbstractConcept)" resolve="getReferenceDescriptor" />
<ref role="1Pybhc" to="ykok:~ModelConstraints" resolve="ModelConstraints" />
<node concept="3bvxqY" id="59P$gGgazeO" role="37wK5m" />
<node concept="10Nm6u" id="59P$gGgazeP" role="37wK5m" />
<node concept="3cmrfG" id="59P$gGgazeQ" role="37wK5m">
<property role="3cmrfH" value="-1" />
</node>
<node concept="359W_D" id="59P$gGgazeR" role="37wK5m">
<ref role="359W_E" to="5j4j:7E86$tK_OxQ" resolve="LogicalVariable" />
<ref role="359W_F" to="5j4j:7E86$tK_PaH" resolve="declaration" />
</node>
<node concept="35c_gC" id="59P$gGgazeS" role="37wK5m">
<ref role="35c_gD" to="5j4j:7E86$tK_OxQ" resolve="LogicalVariable" />
</node>
</node>
</node>
</node>
<node concept="3clFbF" id="59P$gGgazeT" role="3cqZAp">
<node concept="10QFUN" id="59P$gGgazeU" role="3clFbG">
<node concept="A3Dl8" id="59P$gGgazeV" role="10QFUM">
<node concept="3Tqbb2" id="59P$gGgazeW" role="A3Ik2" />
</node>
<node concept="2OqwBi" id="59P$gGgazeX" role="10QFUP">
<node concept="2OqwBi" id="59P$gGgazeY" role="2Oq$k0">
<node concept="37vLTw" id="59P$gGgazeZ" role="2Oq$k0">
<ref role="3cqZAo" node="59P$gGgazeL" resolve="rd" />
</node>
<node concept="liA8E" id="59P$gGgazf0" role="2OqNvi">
<ref role="37wK5l" to="ykok:~ReferenceDescriptor.getScope()" resolve="getScope" />
</node>
</node>
<node concept="liA8E" id="59P$gGgazf1" role="2OqNvi">
<ref role="37wK5l" to="35tq:~Scope.getAvailableElements(java.lang.String)" resolve="getAvailableElements" />
<node concept="Xl_RD" id="59P$gGgazf2" role="37wK5m">
<property role="Xl_RC" value="" />
</node>
</node>
</node>
</node>
</node>
</node>
</node>
<node concept="3eGOop" id="59P$gGgazf3" role="2$S_pN">
<ref role="3EoQqy" to="5j4j:7E86$tK_OxQ" resolve="LogicalVariable" />
<node concept="ucgPf" id="59P$gGgazf4" role="3aKz83">
<node concept="3clFbS" id="59P$gGgazf5" role="2VODD2">
<node concept="3cpWs8" id="59P$gGgazfc" role="3cqZAp">
<node concept="3cpWsn" id="59P$gGgazfd" role="3cpWs9">
<property role="TrG5h" value="lvr" />
<node concept="3Tqbb2" id="59P$gGgazfe" role="1tU5fm">
<ref role="ehGHo" to="5j4j:7E86$tK_OxQ" resolve="LogicalVariable" />
</node>
<node concept="2OqwBi" id="59P$gGgazff" role="33vP2m">
<node concept="1rpKSd" id="59P$gGgazfg" role="2Oq$k0" />
<node concept="15TzpJ" id="59P$gGgazfh" role="2OqNvi">
<ref role="I8UWU" to="5j4j:7E86$tK_OxQ" resolve="LogicalVariable" />
</node>
</node>
</node>
</node>
<node concept="3clFbF" id="59P$gGgazfo" role="3cqZAp">
<node concept="2OqwBi" id="59P$gGgazfp" role="3clFbG">
<node concept="2OqwBi" id="59P$gGgazfq" role="2Oq$k0">
<node concept="37vLTw" id="59P$gGgazfr" role="2Oq$k0">
<ref role="3cqZAo" node="59P$gGgazfd" resolve="lvr" />
</node>
<node concept="3TrEf2" id="59P$gGgazfs" role="2OqNvi">
<ref role="3Tt5mk" to="5j4j:7E86$tK_PaH" resolve="declaration" />
</node>
</node>
<node concept="2oxUTD" id="59P$gGgazft" role="2OqNvi">
<node concept="1PxgMI" id="59P$gGgazfu" role="2oxUTC">
<node concept="chp4Y" id="59P$gGgazfv" role="3oSUPX">
<ref role="cht4Q" to="5j4j:7E86$tKtfM3" resolve="LogicalVariableDeclaration" />
</node>
<node concept="2ZBlsa" id="59P$gGgazfw" role="1m5AlR" />
</node>
</node>
</node>
</node>
<node concept="3clFbF" id="59P$gGgazfx" role="3cqZAp">
<node concept="37vLTw" id="59P$gGgazLX" role="3clFbG">
<ref role="3cqZAo" node="59P$gGgazfd" resolve="lvr" />
</node>
</node>
</node>
</node>
</node>
</node>
</node>
</model>