Refactor the template editor. Better presentation of rule templates. Drop obsolete/deprectated stuff. Drop Actions aspect.

This commit is contained in:
Fedor Isakov 2017-03-01 12:52:24 +01:00
parent 55eae7dda5
commit d94fed37d0
8 changed files with 727 additions and 2742 deletions

View File

@ -303,7 +303,6 @@
<concept id="1114729360583" name="jetbrains.mps.lang.generator.structure.CopySrcListMacro" flags="ln" index="2b32R4">
<child id="1168278589236" name="sourceNodesQuery" index="2P8S$" />
</concept>
<concept id="1202776937179" name="jetbrains.mps.lang.generator.structure.AbandonInput_RuleConsequence" flags="lg" index="b5Tf3" />
<concept id="1095416546421" name="jetbrains.mps.lang.generator.structure.MappingConfiguration" flags="ig" index="bUwia">
<child id="1219952894531" name="dropRootRule" index="aQYdv" />
<child id="1200911492601" name="mappingLabel" index="2rTMjI" />
@ -556,6 +555,9 @@
<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="4693937538533521280" name="jetbrains.mps.lang.smodel.structure.OfConceptOperation" flags="ng" index="v3k3i">
<child id="4693937538533538124" name="requestedConcept" index="v3oSu" />
</concept>
<concept id="2396822768958367367" name="jetbrains.mps.lang.smodel.structure.AbstractTypeCastExpression" flags="nn" index="$5XWr">
<reference id="6733348108486823428" name="concept" index="1m5ApE" />
<child id="6733348108486823193" name="leftExpression" index="1m5AlR" />
@ -682,6 +684,7 @@
<concept id="1160612413312" name="jetbrains.mps.baseLanguage.collections.structure.AddElementOperation" flags="nn" index="TSZUe" />
<concept id="1162934736510" name="jetbrains.mps.baseLanguage.collections.structure.GetElementOperation" flags="nn" index="34jXtK" />
<concept id="1162935959151" name="jetbrains.mps.baseLanguage.collections.structure.GetSizeOperation" flags="nn" index="34oBXx" />
<concept id="1201792049884" name="jetbrains.mps.baseLanguage.collections.structure.TranslateOperation" flags="nn" index="3goQfb" />
<concept id="1165525191778" name="jetbrains.mps.baseLanguage.collections.structure.GetFirstOperation" flags="nn" index="1uHKPH" />
<concept id="1165530316231" name="jetbrains.mps.baseLanguage.collections.structure.IsEmptyOperation" flags="nn" index="1v1jN8" />
<concept id="7125221305512719026" name="jetbrains.mps.baseLanguage.collections.structure.CollectionType" flags="in" index="3vKaQO" />
@ -1475,10 +1478,6 @@
</node>
</node>
</node>
<node concept="3aamgX" id="20Ay2VexgkL" role="3acgRq">
<ref role="30HIoZ" to="wq2x:20Ay2VepLqo" resolve="CodeLogicalClause" />
<node concept="b5Tf3" id="20Ay2Ve_l5G" role="1lVwrX" />
</node>
<node concept="3aamgX" id="20Ay2VewH3T" role="3acgRq">
<property role="36QftV" value="true" />
<ref role="30HIoZ" to="wq2x:6p0DfM0a3d3" resolve="RuleComponent" />
@ -3753,37 +3752,66 @@
<node concept="A3Dl8" id="4vbeH84Np3D" role="1tU5fm">
<node concept="3Tqbb2" id="4vbeH84Np3G" role="A3Ik2" />
</node>
<node concept="2OqwBi" id="4vbeH84Np3R" role="33vP2m">
<node concept="2OqwBi" id="4vbeH84Np3S" role="2Oq$k0">
<node concept="2OqwBi" id="4vbeH84Np3T" role="2Oq$k0">
<node concept="3TrEf2" id="4vbeH84Np3U" role="2OqNvi">
<ref role="3Tt5mk" to="wq2x:6p0DfM0a5m9" resolve="code" />
<node concept="2OqwBi" id="4nIWweBKx0Y" role="33vP2m">
<node concept="2OqwBi" id="4nIWweBKoa5" role="2Oq$k0">
<node concept="2OqwBi" id="4nIWweBKmb1" role="2Oq$k0">
<node concept="2OqwBi" id="4vbeH84Np3T" role="2Oq$k0">
<node concept="3TrEf2" id="4nIWweBKg5t" role="2OqNvi">
<ref role="3Tt5mk" to="wq2x:20Ay2VegCfd" resolve="logic" />
</node>
<node concept="37vLTw" id="4vbeH84Np3V" role="2Oq$k0">
<ref role="3cqZAo" node="4vbeH84NjXz" resolve="rp" />
</node>
</node>
<node concept="37vLTw" id="4vbeH84Np3V" role="2Oq$k0">
<ref role="3cqZAo" node="4vbeH84NjXz" resolve="rp" />
<node concept="3Tsc0h" id="4nIWweBKmwW" role="2OqNvi">
<ref role="3TtcxE" to="wq2x:20Ay2VefOqD" resolve="clauses" />
</node>
</node>
<node concept="v3k3i" id="4nIWweBKwhm" role="2OqNvi">
<node concept="chp4Y" id="4nIWweBKwwx" role="v3oSu">
<ref role="cht4Q" to="wq2x:20Ay2Vei7FH" resolve="TemplateLogicalClause" />
</node>
</node>
<node concept="32TBzR" id="4vbeH84Np3W" role="2OqNvi" />
</node>
<node concept="3zZkjj" id="4vbeH84Np3X" role="2OqNvi">
<node concept="1bVj0M" id="4vbeH84Np3Y" role="23t8la">
<node concept="3clFbS" id="4vbeH84Np3Z" role="1bW5cS">
<node concept="3clFbF" id="4vbeH84Np40" role="3cqZAp">
<node concept="2OqwBi" id="4vbeH84Np41" role="3clFbG">
<node concept="37vLTw" id="4vbeH84Np42" role="2Oq$k0">
<ref role="3cqZAo" node="4vbeH84Np45" resolve="c" />
<node concept="3goQfb" id="4nIWweBKxvK" role="2OqNvi">
<node concept="1bVj0M" id="4nIWweBKxvM" role="23t8la">
<node concept="3clFbS" id="4nIWweBKxvN" role="1bW5cS">
<node concept="3clFbF" id="4nIWweBKxLV" role="3cqZAp">
<node concept="2OqwBi" id="4nIWweBKzCG" role="3clFbG">
<node concept="2OqwBi" id="4nIWweBKybC" role="2Oq$k0">
<node concept="37vLTw" id="4nIWweBKxLU" role="2Oq$k0">
<ref role="3cqZAo" node="4nIWweBKxvO" resolve="it" />
</node>
<node concept="32TBzR" id="4nIWweBKy_a" role="2OqNvi" />
</node>
<node concept="1mIQ4w" id="4vbeH84Np43" role="2OqNvi">
<node concept="chp4Y" id="4vbeH84Np44" role="cj9EA">
<ref role="cht4Q" to="tpee:fzcpWvK" resolve="LocalVariableDeclarationStatement" />
<node concept="3zZkjj" id="4nIWweBKzVH" role="2OqNvi">
<node concept="1bVj0M" id="4nIWweBKzVI" role="23t8la">
<node concept="3clFbS" id="4nIWweBKzVJ" role="1bW5cS">
<node concept="3clFbF" id="4nIWweBKzVK" role="3cqZAp">
<node concept="2OqwBi" id="4nIWweBKzVL" role="3clFbG">
<node concept="37vLTw" id="4nIWweBKzVM" role="2Oq$k0">
<ref role="3cqZAo" node="4nIWweBKzVP" resolve="c" />
</node>
<node concept="1mIQ4w" id="4nIWweBKzVN" role="2OqNvi">
<node concept="chp4Y" id="4nIWweBKzVO" role="cj9EA">
<ref role="cht4Q" to="tpee:fzcpWvK" resolve="LocalVariableDeclarationStatement" />
</node>
</node>
</node>
</node>
</node>
<node concept="Rh6nW" id="4nIWweBKzVP" role="1bW2Oz">
<property role="TrG5h" value="c" />
<node concept="2jxLKc" id="4nIWweBKzVQ" role="1tU5fm" />
</node>
</node>
</node>
</node>
</node>
</node>
<node concept="Rh6nW" id="4vbeH84Np45" role="1bW2Oz">
<property role="TrG5h" value="c" />
<node concept="2jxLKc" id="4vbeH84Np46" role="1tU5fm" />
<node concept="Rh6nW" id="4nIWweBKxvO" role="1bW2Oz">
<property role="TrG5h" value="it" />
<node concept="2jxLKc" id="4nIWweBKxvP" role="1tU5fm" />
</node>
</node>
</node>
@ -20760,60 +20788,6 @@
<node concept="jVnub" id="20Ay2VewuOL">
<property role="3GE5qa" value="rule" />
<property role="TrG5h" value="ruleComponent_statements" />
<node concept="3aamgX" id="20Ay2Vewv1x" role="3aUrZf">
<property role="36QftV" value="true" />
<ref role="30HIoZ" to="wq2x:6p0DfM0a3d3" resolve="RuleComponent" />
<node concept="1Koe21" id="20Ay2Vewzgd" role="1lVwrX">
<node concept="3clFbS" id="20Ay2VewzsG" role="1Koe22">
<node concept="raruj" id="20Ay2VewzsI" role="lGtFl" />
<node concept="2b32R4" id="20Ay2VewzxJ" role="lGtFl">
<node concept="3JmXsc" id="20Ay2VewzxL" role="2P8S$">
<node concept="3clFbS" id="20Ay2VewzxM" role="2VODD2">
<node concept="3clFbF" id="20Ay2VewzAF" role="3cqZAp">
<node concept="2OqwBi" id="20Ay2Vew$jZ" role="3clFbG">
<node concept="2OqwBi" id="20Ay2VewzMA" role="2Oq$k0">
<node concept="30H73N" id="20Ay2VewzAE" role="2Oq$k0" />
<node concept="3TrEf2" id="20Ay2VewzWf" role="2OqNvi">
<ref role="3Tt5mk" to="wq2x:6p0DfM0a5m9" resolve="code" />
</node>
</node>
<node concept="3Tsc0h" id="20Ay2Vew$We" role="2OqNvi">
<ref role="3TtcxE" to="tpee:fzcqZ_x" resolve="statement" />
</node>
</node>
</node>
</node>
</node>
</node>
</node>
</node>
<node concept="30G5F_" id="20Ay2Veww6Y" role="30HLyM">
<node concept="3clFbS" id="20Ay2Veww6Z" role="2VODD2">
<node concept="3clFbF" id="20Ay2Vewwe8" role="3cqZAp">
<node concept="1Wc70l" id="20Ay2VeB9Uc" role="3clFbG">
<node concept="2OqwBi" id="20Ay2VeBaVE" role="3uHU7w">
<node concept="2OqwBi" id="20Ay2VeBakn" role="2Oq$k0">
<node concept="30H73N" id="20Ay2VeBa7a" role="2Oq$k0" />
<node concept="3TrEf2" id="20Ay2VeBaCd" role="2OqNvi">
<ref role="3Tt5mk" to="wq2x:20Ay2VegCfd" resolve="logic" />
</node>
</node>
<node concept="3w_OXm" id="20Ay2VeBbfS" role="2OqNvi" />
</node>
<node concept="2OqwBi" id="20Ay2Vewx4f" role="3uHU7B">
<node concept="2OqwBi" id="20Ay2Vewwr5" role="2Oq$k0">
<node concept="30H73N" id="20Ay2Vewwe7" role="2Oq$k0" />
<node concept="3TrEf2" id="20Ay2Veww_T" role="2OqNvi">
<ref role="3Tt5mk" to="wq2x:6p0DfM0a5m9" resolve="code" />
</node>
</node>
<node concept="3x8VRR" id="20Ay2VewxIO" role="2OqNvi" />
</node>
</node>
</node>
</node>
</node>
</node>
<node concept="3aamgX" id="20Ay2Vex72i" role="3aUrZf">
<property role="36QftV" value="true" />
<ref role="30HIoZ" to="wq2x:6p0DfM0a3d3" resolve="RuleComponent" />
@ -20841,32 +20815,6 @@
</node>
</node>
</node>
<node concept="30G5F_" id="20Ay2Vex72v" role="30HLyM">
<node concept="3clFbS" id="20Ay2Vex72w" role="2VODD2">
<node concept="3clFbF" id="20Ay2Vex72x" role="3cqZAp">
<node concept="1Wc70l" id="20Ay2VeBc4x" role="3clFbG">
<node concept="2OqwBi" id="20Ay2VeBd8Q" role="3uHU7w">
<node concept="2OqwBi" id="20Ay2VeBctk" role="2Oq$k0">
<node concept="30H73N" id="20Ay2VeBcg7" role="2Oq$k0" />
<node concept="3TrEf2" id="20Ay2VeBcCs" role="2OqNvi">
<ref role="3Tt5mk" to="wq2x:6p0DfM0a5m9" resolve="code" />
</node>
</node>
<node concept="3w_OXm" id="20Ay2VeBdPB" role="2OqNvi" />
</node>
<node concept="2OqwBi" id="20Ay2Vex72y" role="3uHU7B">
<node concept="2OqwBi" id="20Ay2Vex72z" role="2Oq$k0">
<node concept="30H73N" id="20Ay2Vex72$" role="2Oq$k0" />
<node concept="3TrEf2" id="20Ay2Vex7wG" role="2OqNvi">
<ref role="3Tt5mk" to="wq2x:20Ay2VegCfd" resolve="logic" />
</node>
</node>
<node concept="3x8VRR" id="20Ay2Vexe_L" role="2OqNvi" />
</node>
</node>
</node>
</node>
</node>
</node>
<node concept="j$LIH" id="20Ay2VewAbF" role="jxRDz">
<node concept="1lLz0L" id="20Ay2VewAod" role="1lHHLF">

View File

@ -528,7 +528,7 @@
</node>
<node concept="hTh3S" id="2KSgAgV9UDR" role="1xVPHs">
<node concept="3gn64h" id="2KSgAgV9UDS" role="hTh3Z">
<ref role="3gnhBz" to="5j4j:7E86$tKsl45" resolve="LogicalClause" />
<ref role="3gnhBz" to="5j4j:7E86$tKsl45" resolve="LogicalItem" />
</node>
</node>
</node>
@ -1557,31 +1557,6 @@
<node concept="3clFbS" id="5UYwY$H7MGd" role="2VODD2" />
</node>
</node>
<node concept="13h7C7" id="2V8TwD0$YJV">
<property role="3GE5qa" value="type.code" />
<ref role="13h7C2" to="wq2x:2V8TwD0$Yds" resolve="RecoveryBlock" />
<node concept="13hLZK" id="2V8TwD0$YJW" role="13h7CW">
<node concept="3clFbS" id="2V8TwD0$YJX" role="2VODD2" />
</node>
<node concept="13i0hz" id="2V8TwD0$YK6" role="13h7CS">
<property role="13i0iv" value="false" />
<property role="TrG5h" value="getExpectedRetType" />
<property role="13i0it" value="false" />
<ref role="13i0hy" to="tpek:i2fhBNC" resolve="getExpectedRetType" />
<node concept="3Tm1VV" id="2V8TwD0$YK7" role="1B3o_S" />
<node concept="2AHcQZ" id="2V8TwD0$YKa" role="2AJF6D">
<ref role="2AI5Lk" to="mhfm:~Nullable" resolve="Nullable" />
</node>
<node concept="3clFbS" id="2V8TwD0$YKd" role="3clF47">
<node concept="3clFbF" id="2V8TwD0$YKx" role="3cqZAp">
<node concept="2c44tf" id="2V8TwD0$YKv" role="3clFbG">
<node concept="3Tqbb2" id="2V8TwD0$YKY" role="2c44tc" />
</node>
</node>
</node>
<node concept="3Tqbb2" id="2V8TwD0$YKe" role="3clF45" />
</node>
</node>
<node concept="13h7C7" id="4MEOIDFxxVo">
<property role="3GE5qa" value="type.term" />
<ref role="13h7C2" to="wq2x:4MEOIDFxxDM" resolve="TypeTermDeclarationParameterReference" />
@ -1726,32 +1701,5 @@
<node concept="3clFbS" id="4MEOIDG83WY" role="2VODD2" />
</node>
</node>
<node concept="13h7C7" id="1L74NXEmFeh">
<property role="3GE5qa" value="constraint.typespecific" />
<ref role="13h7C2" to="wq2x:7eGEHDlgPU1" resolve="NewTypeConstraint" />
<node concept="13hLZK" id="1L74NXEmFei" role="13h7CW">
<node concept="3clFbS" id="1L74NXEmFej" role="2VODD2" />
</node>
<node concept="13i0hz" id="1L74NXEmFes" role="13h7CS">
<property role="13i0iv" value="false" />
<property role="13i0it" value="false" />
<property role="TrG5h" value="getTypeDeclaration" />
<ref role="13i0hy" node="1L74NXEmFa8" resolve="getTypeDeclaration" />
<node concept="3Tm1VV" id="1L74NXEmFet" role="1B3o_S" />
<node concept="3clFbS" id="1L74NXEmFew" role="3clF47">
<node concept="3clFbF" id="1L74NXEmFeR" role="3cqZAp">
<node concept="2OqwBi" id="1L74NXEmFnN" role="3clFbG">
<node concept="13iPFW" id="1L74NXEmFeQ" role="2Oq$k0" />
<node concept="3TrEf2" id="1L74NXEmFFe" role="2OqNvi">
<ref role="3Tt5mk" to="wq2x:YGS68N6UU4" resolve="typeDeclaration" />
</node>
</node>
</node>
</node>
<node concept="3Tqbb2" id="1L74NXEmFex" role="3clF45">
<ref role="ehGHo" to="wq2x:1pPth$m5Bbz" resolve="TypeDeclaration" />
</node>
</node>
</node>
</model>

View File

@ -20,7 +20,6 @@
<import index="33ny" ref="6354ebe7-c22a-4a0f-ac54-50b52ab9b065/java:java.util(JDK/)" />
<import index="6exd" ref="r:0f9b1fb3-00f9-4480-b235-1a906a087ab2(jetbrains.mps.logic.treeform)" />
<import index="x5bw" ref="r:15ea4f4e-2f41-4ce3-b7e4-a4e0737f0171(jetbrains.mps.lang.typesystem2.behavior)" implicit="true" />
<import index="tpek" ref="r:00000000-0000-4000-0000-011c895902c0(jetbrains.mps.baseLanguage.behavior)" implicit="true" />
</imports>
<registry>
<language id="13744753-c81f-424a-9c1b-cf8943bf4e86" name="jetbrains.mps.lang.sharedConcepts">
@ -94,9 +93,6 @@
<property id="521412098689998745" name="nonStatic" index="2bfB8j" />
<child id="5375687026011219971" name="member" index="jymVt" unordered="true" />
</concept>
<concept id="1107535904670" name="jetbrains.mps.baseLanguage.structure.ClassifierType" flags="in" index="3uibUv">
<reference id="1107535924139" name="classifier" index="3uigEE" />
</concept>
<concept id="1178549954367" name="jetbrains.mps.baseLanguage.structure.IVisible" flags="ng" index="1B3ioH">
<child id="1178549979242" name="visibility" index="1B3o_S" />
</concept>
@ -112,8 +108,6 @@
</concept>
</language>
<language id="3f4bc5f5-c6c1-4a28-8b10-c83066ffa4a1" name="jetbrains.mps.lang.constraints">
<concept id="1202989531578" name="jetbrains.mps.lang.constraints.structure.ConstraintFunction_CanBeAChild" flags="in" index="nKS2y" />
<concept id="1202989658459" name="jetbrains.mps.lang.constraints.structure.ConstraintFunctionParameter_parentNode" flags="nn" index="nLn13" />
<concept id="8966504967485224688" name="jetbrains.mps.lang.constraints.structure.ConstraintFunctionParameter_contextNode" flags="nn" index="2rP1CM" />
<concept id="1147467115080" name="jetbrains.mps.lang.constraints.structure.NodePropertyConstraint" flags="ng" index="EnEH3">
<reference id="1147467295099" name="applicableProperty" index="EomxK" />
@ -132,24 +126,12 @@
<child id="1213098023997" name="property" index="1MhHOB" />
<child id="1213100494875" name="referent" index="1Mr941" />
<child id="1213101058038" name="defaultScope" index="1MtirG" />
<child id="1213106463729" name="canBeChild" index="1MLUbF" />
</concept>
<concept id="1148687176410" name="jetbrains.mps.lang.constraints.structure.NodeReferentConstraint" flags="ng" index="1N5Pfh">
<reference id="1148687202698" name="applicableLink" index="1N5Vy1" />
<child id="1148687345559" name="searchScopeFactory" index="1N6uqs" />
</concept>
</language>
<language id="3a13115c-633c-4c5c-bbcc-75c4219e9555" name="jetbrains.mps.lang.quotation">
<concept id="1196350785113" name="jetbrains.mps.lang.quotation.structure.Quotation" flags="nn" index="2c44tf">
<child id="1196350785114" name="quotedNode" index="2c44tc" />
</concept>
</language>
<language id="7a5dda62-9140-4668-ab76-d5ed1746f2b2" name="jetbrains.mps.lang.typesystem">
<concept id="1176543928247" name="jetbrains.mps.lang.typesystem.structure.IsSubtypeExpression" flags="nn" index="3JuTUA">
<child id="1176543945045" name="subtypeExpression" index="3JuY14" />
<child id="1176543950311" name="supertypeExpression" index="3JuZjQ" />
</concept>
</language>
<language id="7866978e-a0f0-4cc7-81bc-4d213d9375e1" name="jetbrains.mps.lang.smodel">
<concept id="1177026924588" name="jetbrains.mps.lang.smodel.structure.RefConcept_Reference" flags="nn" index="chp4Y">
<reference id="1177026940964" name="conceptDeclaration" index="cht4Q" />
@ -658,76 +640,6 @@
</node>
</node>
</node>
<node concept="1M2fIO" id="7IysFeA4rFo">
<property role="3GE5qa" value="constraint.typespecific" />
<ref role="1M2myG" to="wq2x:7IysFeA4qCy" resolve="NewTypeParameterBinding" />
<node concept="1N5Pfh" id="7IysFeA4rFr" role="1Mr941">
<ref role="1N5Vy1" to="wq2x:7IysFeA4qCz" resolve="parameter" />
<node concept="13QW63" id="7IysFeA4rFw" role="1N6uqs">
<node concept="3clFbS" id="7IysFeA4rFz" role="2VODD2">
<node concept="3clFbF" id="7IysFeA4rIv" role="3cqZAp">
<node concept="2ShNRf" id="7IysFeA4rIt" role="3clFbG">
<node concept="YeOm9" id="7IysFeA4rWK" role="2ShVmc">
<node concept="1Y3b0j" id="7IysFeA4rWN" role="YeSDq">
<property role="2bfB8j" value="true" />
<ref role="1Y3XeK" to="o8zo:4IP40Bi3e_R" resolve="ListScope" />
<ref role="37wK5l" to="o8zo:4IP40Bi3e_T" resolve="ListScope" />
<node concept="3Tm1VV" id="7IysFeA4rWO" role="1B3o_S" />
<node concept="3clFb_" id="7IysFeA4rX3" role="jymVt">
<property role="1EzhhJ" value="false" />
<property role="TrG5h" value="getName" />
<node concept="17QB3L" id="7IysFeA4rX4" role="3clF45" />
<node concept="3Tm1VV" id="7IysFeA4rX5" role="1B3o_S" />
<node concept="37vLTG" id="7IysFeA4rX7" role="3clF46">
<property role="TrG5h" value="child" />
<node concept="3Tqbb2" id="7IysFeA4rX8" role="1tU5fm" />
</node>
<node concept="3clFbS" id="7IysFeA4rX9" role="3clF47">
<node concept="3clFbF" id="7IysFeA4uMo" role="3cqZAp">
<node concept="2OqwBi" id="7IysFeA4vGE" role="3clFbG">
<node concept="1PxgMI" id="7IysFeA4vx9" role="2Oq$k0">
<property role="1BlNFB" value="true" />
<ref role="1m5ApE" to="tpck:h0TrEE$" resolve="INamedConcept" />
<node concept="37vLTw" id="7IysFeA4uMn" role="1m5AlR">
<ref role="3cqZAo" node="7IysFeA4rX7" resolve="child" />
</node>
</node>
<node concept="3TrcHB" id="7IysFeA4vMI" role="2OqNvi">
<ref role="3TsBF5" to="tpck:h0TrG11" resolve="name" />
</node>
</node>
</node>
</node>
</node>
<node concept="2OqwBi" id="7IysFeA4u4c" role="37wK5m">
<node concept="2OqwBi" id="7IysFeA4tnU" role="2Oq$k0">
<node concept="2OqwBi" id="7IysFeA4soG" role="2Oq$k0">
<node concept="2rP1CM" id="7IysFeA4s8I" role="2Oq$k0" />
<node concept="2Xjw5R" id="7IysFeA4sDF" role="2OqNvi">
<node concept="1xMEDy" id="7IysFeA4sDH" role="1xVPHs">
<node concept="chp4Y" id="7IysFeA4sNf" role="ri$Ld">
<ref role="cht4Q" to="wq2x:7eGEHDlgPU1" resolve="NewTypeConstraint" />
</node>
</node>
<node concept="1xIGOp" id="7IysFeA4t7s" role="1xVPHs" />
</node>
</node>
<node concept="3TrEf2" id="7IysFeA4tDw" role="2OqNvi">
<ref role="3Tt5mk" to="wq2x:YGS68N6UU4" resolve="typeDeclaration" />
</node>
</node>
<node concept="3Tsc0h" id="7IysFeA4uze" role="2OqNvi">
<ref role="3TtcxE" to="wq2x:7IysFeA0yca" resolve="parameter" />
</node>
</node>
</node>
</node>
</node>
</node>
</node>
</node>
</node>
</node>
<node concept="1M2fIO" id="3TnYLtqfhA9">
<property role="3GE5qa" value="type.code.with" />
<ref role="1M2myG" to="wq2x:3TnYLtqfh$J" resolve="ContextParameterReference" />
@ -977,107 +889,6 @@
</node>
</node>
</node>
<node concept="1M2fIO" id="2V8TwD0E9XC">
<property role="3GE5qa" value="type.term" />
<ref role="1M2myG" to="wq2x:2V8TwD0E9Wq" resolve="TypeFeatureExpression" />
<node concept="1N5Pfh" id="2V8TwD0E9XD" role="1Mr941">
<ref role="1N5Vy1" to="wq2x:2V8TwD0E9Wr" resolve="feature" />
<node concept="13QW63" id="2V8TwD0E9XF" role="1N6uqs">
<node concept="3clFbS" id="2V8TwD0E9XG" role="2VODD2">
<node concept="3clFbF" id="2V8TwD0Ect5" role="3cqZAp">
<node concept="2ShNRf" id="2V8TwD0Ect1" role="3clFbG">
<node concept="YeOm9" id="2V8TwD0EcJW" role="2ShVmc">
<node concept="1Y3b0j" id="2V8TwD0EcJZ" role="YeSDq">
<property role="2bfB8j" value="true" />
<ref role="1Y3XeK" to="o8zo:4IP40Bi3e_R" resolve="ListScope" />
<ref role="37wK5l" to="o8zo:4IP40Bi3e_T" resolve="ListScope" />
<node concept="2OqwBi" id="4MEOIDFR9my" role="37wK5m">
<node concept="2OqwBi" id="2V8TwD0EcWX" role="2Oq$k0">
<node concept="2OqwBi" id="2V8TwD0EcWY" role="2Oq$k0">
<node concept="2OqwBi" id="2V8TwD0EcWZ" role="2Oq$k0">
<node concept="2rP1CM" id="2V8TwD0EcX0" role="2Oq$k0" />
<node concept="2Xjw5R" id="2V8TwD0EcX1" role="2OqNvi">
<node concept="1xMEDy" id="2V8TwD0EcX2" role="1xVPHs">
<node concept="chp4Y" id="2V8TwD0EcX3" role="ri$Ld">
<ref role="cht4Q" to="wq2x:1pPth$m5Bbz" resolve="TypeDeclaration" />
</node>
</node>
</node>
</node>
<node concept="3TrEf2" id="4MEOIDFR86r" role="2OqNvi">
<ref role="3Tt5mk" to="wq2x:4MEOIDF_kTL" resolve="termDecl" />
</node>
</node>
<node concept="3TrEf2" id="4MEOIDFR8Uw" role="2OqNvi">
<ref role="3Tt5mk" to="wq2x:4MEOIDFttNk" resolve="template" />
</node>
</node>
<node concept="3Tsc0h" id="4MEOIDFR9Mh" role="2OqNvi">
<ref role="3TtcxE" to="wq2x:1pPth$m5oa9" resolve="feature" />
</node>
</node>
<node concept="3Tm1VV" id="2V8TwD0EcK0" role="1B3o_S" />
<node concept="3clFb_" id="2V8TwD0EcKf" role="jymVt">
<property role="1EzhhJ" value="false" />
<property role="TrG5h" value="getName" />
<node concept="17QB3L" id="2V8TwD0EcKg" role="3clF45" />
<node concept="3Tm1VV" id="2V8TwD0EcKh" role="1B3o_S" />
<node concept="37vLTG" id="2V8TwD0EcKj" role="3clF46">
<property role="TrG5h" value="child" />
<node concept="3Tqbb2" id="2V8TwD0EcKk" role="1tU5fm" />
</node>
<node concept="3clFbS" id="2V8TwD0EcKl" role="3clF47">
<node concept="3clFbF" id="2V8TwD0EdeI" role="3cqZAp">
<node concept="2OqwBi" id="2V8TwD0EdIJ" role="3clFbG">
<node concept="1PxgMI" id="2V8TwD0Edzp" role="2Oq$k0">
<property role="1BlNFB" value="true" />
<ref role="1m5ApE" to="tpck:h0TrEE$" resolve="INamedConcept" />
<node concept="37vLTw" id="2V8TwD0EdeH" role="1m5AlR">
<ref role="3cqZAo" node="2V8TwD0EcKj" resolve="child" />
</node>
</node>
<node concept="3TrcHB" id="2V8TwD0EdQJ" role="2OqNvi">
<ref role="3TsBF5" to="tpck:h0TrG11" resolve="name" />
</node>
</node>
</node>
</node>
</node>
</node>
</node>
</node>
</node>
</node>
</node>
</node>
</node>
<node concept="1M2fIO" id="4cKdPpqF4Rp">
<property role="3GE5qa" value="type.term" />
<ref role="1M2myG" to="wq2x:2V8TwD148$8" resolve="RecoverOperation" />
<node concept="nKS2y" id="4cKdPpqF4Yz" role="1MLUbF">
<node concept="3clFbS" id="4cKdPpqF4Y$" role="2VODD2">
<node concept="3clFbF" id="4cKdPpqF8Vb" role="3cqZAp">
<node concept="3JuTUA" id="4cKdPpqF8V5" role="3clFbG">
<node concept="2c44tf" id="4cKdPpqF9sh" role="3JuZjQ">
<node concept="3uibUv" id="4cKdPpqF9QL" role="2c44tc">
<ref role="3uigEE" to="6exd:1bm7a6EXvsP" resolve="TreeForm" />
</node>
</node>
<node concept="2OqwBi" id="4cKdPpqF98e" role="3JuY14">
<node concept="1PxgMI" id="4cKdPpqF98f" role="2Oq$k0">
<property role="1BlNFB" value="true" />
<ref role="1m5ApE" to="tpee:hqOqwz4" resolve="DotExpression" />
<node concept="nLn13" id="4cKdPpqF98g" role="1m5AlR" />
</node>
<node concept="2qgKlT" id="4cKdPpqF98h" role="2OqNvi">
<ref role="37wK5l" to="tpek:7GulAc9z0dN" resolve="getOperandType" />
</node>
</node>
</node>
</node>
</node>
</node>
</node>
<node concept="1M2fIO" id="2vGNdoJFT55">
<property role="3GE5qa" value="constraint.template" />
<ref role="1M2myG" to="wq2x:6p0DfM0asBO" resolve="ConstraintDeclaration" />

View File

@ -17,7 +17,6 @@
<import index="wq2x" ref="r:83137295-aa87-45e8-b0c0-ede2adf2a396(jetbrains.mps.lang.typesystem2.structure)" />
<import index="5j4j" ref="r:c8fb1c5e-8204-4904-a38f-678899d447c1(jetbrains.mps.logic.structure)" />
<import index="hy7p" ref="r:01ee26d6-df00-4ffb-931c-1ddec5984886(jetbrains.mps.lang.typesystem2.util)" />
<import index="tpee" ref="r:00000000-0000-4000-0000-011c895902ca(jetbrains.mps.baseLanguage.structure)" implicit="true" />
</imports>
<registry>
<language id="f3061a53-9226-4cc5-a443-f952ceaf5816" name="jetbrains.mps.baseLanguage">
@ -25,10 +24,6 @@
<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="1154032098014" name="jetbrains.mps.baseLanguage.structure.AbstractLoopStatement" flags="nn" index="2LF5Ji">
<child id="1154032183016" name="body" index="2LFqv$" />
</concept>
<concept id="1197027756228" name="jetbrains.mps.baseLanguage.structure.DotExpression" flags="nn" index="2OqwBi">
<child id="1197027771414" name="operand" index="2Oq$k0" />
<child id="1197027833540" name="operation" index="2OqNvi" />
@ -62,19 +57,10 @@
<child id="1068581242865" name="localVariableDeclaration" index="3cpWs9" />
</concept>
<concept id="1068581242863" name="jetbrains.mps.baseLanguage.structure.LocalVariableDeclaration" flags="nr" index="3cpWsn" />
<concept id="1081516740877" name="jetbrains.mps.baseLanguage.structure.NotExpression" flags="nn" index="3fqX7Q">
<child id="1081516765348" name="expression" index="3fr31v" />
</concept>
<concept id="1081773326031" name="jetbrains.mps.baseLanguage.structure.BinaryOperation" flags="nn" index="3uHJSO">
<child id="1081773367579" name="rightExpression" index="3uHU7w" />
<child id="1081773367580" name="leftExpression" index="3uHU7B" />
</concept>
<concept id="1144226303539" name="jetbrains.mps.baseLanguage.structure.ForeachStatement" flags="nn" index="1DcWWT">
<child id="1144226360166" name="iterable" index="1DdaDG" />
</concept>
<concept id="1144230876926" name="jetbrains.mps.baseLanguage.structure.AbstractForStatement" flags="nn" index="1DupvO">
<child id="1144230900587" name="variable" index="1Duv9x" />
</concept>
<concept id="6329021646629104957" name="jetbrains.mps.baseLanguage.structure.TextCommentPart" flags="nn" index="3SKdUq">
<property id="6329021646629104958" name="text" index="3SKdUp" />
</concept>
@ -83,12 +69,6 @@
</concept>
<concept id="1080120340718" name="jetbrains.mps.baseLanguage.structure.AndExpression" flags="nn" index="1Wc70l" />
</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="d7a92d38-f7db-40d0-8431-763b0c3c9f20" name="jetbrains.mps.lang.intentions">
<concept id="1192794744107" name="jetbrains.mps.lang.intentions.structure.IntentionDeclaration" flags="ig" index="2S6QgY" />
<concept id="1192794782375" name="jetbrains.mps.lang.intentions.structure.DescriptionBlock" flags="in" index="2S6ZIM" />
@ -96,7 +76,6 @@
<concept id="1192795911897" name="jetbrains.mps.lang.intentions.structure.ExecuteBlock" flags="in" index="2Sbjvc" />
<concept id="1192796902958" name="jetbrains.mps.lang.intentions.structure.ConceptFunctionParameter_node" flags="nn" index="2Sf5sV" />
<concept id="2522969319638091381" name="jetbrains.mps.lang.intentions.structure.BaseIntentionDeclaration" flags="ig" index="2ZfUlf">
<property id="2522969319638091386" name="isAvailableInChildNodes" index="2ZfUl0" />
<reference id="2522969319638198290" name="forConcept" index="2ZfgGC" />
<child id="2522969319638198291" name="executeFunction" index="2ZfgGD" />
<child id="2522969319638093995" name="isApplicableFunction" index="2ZfVeh" />
@ -113,19 +92,6 @@
<concept id="1138411891628" name="jetbrains.mps.lang.smodel.structure.SNodeOperation" flags="nn" index="eCIE_">
<child id="1144104376918" name="parameter" index="1xVPHs" />
</concept>
<concept id="1140725362528" name="jetbrains.mps.lang.smodel.structure.Link_SetTargetOperation" flags="nn" index="2oxUTD">
<child id="1140725362529" name="linkTarget" index="2oxUTC" />
</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="2396822768958367367" name="jetbrains.mps.lang.smodel.structure.AbstractTypeCastExpression" flags="nn" index="$5XWr">
<reference id="6733348108486823428" name="concept" index="1m5ApE" />
<child id="6733348108486823193" name="leftExpression" index="1m5AlR" />
</concept>
<concept id="1139184414036" name="jetbrains.mps.lang.smodel.structure.LinkList_AddNewChildOperation" flags="nn" index="WFELt">
<reference id="1139877738879" name="concept" index="1A0vxQ" />
</concept>
<concept id="1171407110247" name="jetbrains.mps.lang.smodel.structure.Node_GetAncestorOperation" flags="nn" index="2Xjw5R" />
<concept id="1139613262185" name="jetbrains.mps.lang.smodel.structure.Node_GetParentOperation" flags="nn" index="1mfA1w" />
<concept id="1139621453865" name="jetbrains.mps.lang.smodel.structure.Node_IsInstanceOfOperation" flags="nn" index="1mIQ4w">
@ -148,17 +114,12 @@
<concept id="1140131837776" name="jetbrains.mps.lang.smodel.structure.Node_ReplaceWithAnotherOperation" flags="nn" index="1P9Npp">
<child id="1140131861877" name="replacementNode" index="1P9ThW" />
</concept>
<concept id="1140133623887" name="jetbrains.mps.lang.smodel.structure.Node_DeleteOperation" flags="nn" index="1PgB_6" />
<concept id="1140137987495" name="jetbrains.mps.lang.smodel.structure.SNodeTypeCastExpression" flags="nn" index="1PxgMI" />
<concept id="1138055754698" name="jetbrains.mps.lang.smodel.structure.SNodeType" flags="in" index="3Tqbb2">
<reference id="1138405853777" name="concept" index="ehGHo" />
</concept>
<concept id="1138056143562" name="jetbrains.mps.lang.smodel.structure.SLinkAccess" flags="nn" index="3TrEf2">
<reference id="1138056516764" name="link" index="3Tt5mk" />
</concept>
<concept id="1138056282393" name="jetbrains.mps.lang.smodel.structure.SLinkListAccess" flags="nn" index="3Tsc0h">
<reference id="1138056546658" name="link" index="3TtcxE" />
</concept>
<concept id="1228341669568" name="jetbrains.mps.lang.smodel.structure.Node_DetachOperation" flags="nn" index="3YRAZt" />
</language>
<language id="ceab5195-25ea-4f22-9b92-103b95ca8c0c" name="jetbrains.mps.lang.core">
@ -169,17 +130,6 @@
<property id="1169194664001" name="name" index="TrG5h" />
</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>
<concept id="1235566831861" name="jetbrains.mps.baseLanguage.collections.structure.AllOperation" flags="nn" index="2HxqBE" />
<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" />
</language>
</registry>
<node concept="2S6QgY" id="1CgWc1TyAgc">
<property role="TrG5h" value="AddComment" />
@ -350,321 +300,5 @@
</node>
</node>
</node>
<node concept="2S6QgY" id="20Ay2VeL1Cn">
<property role="TrG5h" value="ReplaceWithConstraintLogicalClause" />
<property role="2ZfUl0" value="true" />
<ref role="2ZfgGC" to="wq2x:6p0DfM0a3d3" resolve="RuleComponent" />
<node concept="2S6ZIM" id="20Ay2VeL1Co" role="2ZfVej">
<node concept="3clFbS" id="20Ay2VeL1Cp" role="2VODD2">
<node concept="3clFbF" id="20Ay2VeL1L$" role="3cqZAp">
<node concept="Xl_RD" id="20Ay2VeL1Lz" role="3clFbG">
<property role="Xl_RC" value="Replace With Modern Construct (ConstraintLogicalClause)" />
</node>
</node>
</node>
</node>
<node concept="2Sbjvc" id="20Ay2VeL1Cq" role="2ZfgGD">
<node concept="3clFbS" id="20Ay2VeL1Cr" role="2VODD2">
<node concept="3cpWs8" id="20Ay2VeLfRl" role="3cqZAp">
<node concept="3cpWsn" id="20Ay2VeLfRm" role="3cpWs9">
<property role="TrG5h" value="cl" />
<node concept="3Tqbb2" id="20Ay2VeLfRg" role="1tU5fm">
<ref role="ehGHo" to="wq2x:20Ay2VefOqC" resolve="LogicalClauseList" />
</node>
<node concept="2OqwBi" id="20Ay2VeLfRn" role="33vP2m">
<node concept="2OqwBi" id="20Ay2VeLfRo" role="2Oq$k0">
<node concept="2Sf5sV" id="20Ay2VeLfRp" role="2Oq$k0" />
<node concept="3TrEf2" id="20Ay2VeLfRq" role="2OqNvi">
<ref role="3Tt5mk" to="wq2x:20Ay2VegCfd" resolve="logic" />
</node>
</node>
<node concept="zfrQC" id="20Ay2VeLz22" role="2OqNvi">
<ref role="1A9B2P" to="wq2x:20Ay2VefOqC" resolve="LogicalClauseList" />
</node>
</node>
</node>
</node>
<node concept="1DcWWT" id="20Ay2VeLkkV" role="3cqZAp">
<node concept="3clFbS" id="20Ay2VeLkkY" role="2LFqv$">
<node concept="3cpWs8" id="20Ay2VeLMbj" role="3cqZAp">
<node concept="3cpWsn" id="20Ay2VeLMbk" role="3cpWs9">
<property role="TrG5h" value="clc" />
<node concept="3Tqbb2" id="20Ay2VeLMbi" role="1tU5fm">
<ref role="ehGHo" to="wq2x:20Ay2VefOBs" resolve="ConstraintLogicalClause" />
</node>
<node concept="2ShNRf" id="20Ay2VeLMbl" role="33vP2m">
<node concept="3zrR0B" id="20Ay2VeLMbm" role="2ShVmc">
<node concept="3Tqbb2" id="20Ay2VeLMbn" role="3zrR0E">
<ref role="ehGHo" to="wq2x:20Ay2VefOBs" resolve="ConstraintLogicalClause" />
</node>
</node>
</node>
</node>
</node>
<node concept="3clFbF" id="20Ay2VeLMCY" role="3cqZAp">
<node concept="2OqwBi" id="20Ay2VeLNu6" role="3clFbG">
<node concept="2OqwBi" id="20Ay2VeLN6t" role="2Oq$k0">
<node concept="37vLTw" id="20Ay2VeLMYA" role="2Oq$k0">
<ref role="3cqZAo" node="20Ay2VeLMbk" resolve="clc" />
</node>
<node concept="3TrEf2" id="20Ay2VeLNdX" role="2OqNvi">
<ref role="3Tt5mk" to="wq2x:20Ay2VefOBA" resolve="constraint" />
</node>
</node>
<node concept="2oxUTD" id="20Ay2VeLNIW" role="2OqNvi">
<node concept="2OqwBi" id="20Ay2VeLP8P" role="2oxUTC">
<node concept="2OqwBi" id="20Ay2VeLO_e" role="2Oq$k0">
<node concept="1PxgMI" id="20Ay2VeLOj$" role="2Oq$k0">
<ref role="1m5ApE" to="wq2x:6p0DfM0a6KG" resolve="EmitConstraintStatement" />
<node concept="37vLTw" id="20Ay2VeLNLk" role="1m5AlR">
<ref role="3cqZAo" node="20Ay2VeLkkZ" resolve="stmt" />
</node>
</node>
<node concept="3TrEf2" id="20Ay2VeLONk" role="2OqNvi">
<ref role="3Tt5mk" to="wq2x:6p0DfM0ajKO" resolve="constraint" />
</node>
</node>
<node concept="3YRAZt" id="20Ay2VeLPsW" role="2OqNvi" />
</node>
</node>
</node>
</node>
<node concept="3clFbF" id="20Ay2VeLMpx" role="3cqZAp">
<node concept="2OqwBi" id="20Ay2VeLMpz" role="3clFbG">
<node concept="2OqwBi" id="20Ay2VeLMp$" role="2Oq$k0">
<node concept="37vLTw" id="20Ay2VeLMp_" role="2Oq$k0">
<ref role="3cqZAo" node="20Ay2VeLfRm" resolve="cl" />
</node>
<node concept="3Tsc0h" id="20Ay2VeLMpA" role="2OqNvi">
<ref role="3TtcxE" to="wq2x:20Ay2VefOqD" resolve="clauses" />
</node>
</node>
<node concept="TSZUe" id="20Ay2VeLMpB" role="2OqNvi">
<node concept="37vLTw" id="20Ay2VeLMpC" role="25WWJ7">
<ref role="3cqZAo" node="20Ay2VeLMbk" resolve="clc" />
</node>
</node>
</node>
</node>
</node>
<node concept="3cpWsn" id="20Ay2VeLkkZ" role="1Duv9x">
<property role="TrG5h" value="stmt" />
<node concept="3Tqbb2" id="20Ay2VeLm0n" role="1tU5fm">
<ref role="ehGHo" to="tpee:fzclF8l" resolve="Statement" />
</node>
</node>
<node concept="2OqwBi" id="20Ay2VeLkl4" role="1DdaDG">
<node concept="2OqwBi" id="20Ay2VeLkl5" role="2Oq$k0">
<node concept="2Sf5sV" id="20Ay2VeLkl6" role="2Oq$k0" />
<node concept="3TrEf2" id="20Ay2VeLkl7" role="2OqNvi">
<ref role="3Tt5mk" to="wq2x:6p0DfM0a5m9" resolve="code" />
</node>
</node>
<node concept="3Tsc0h" id="20Ay2VeLkl8" role="2OqNvi">
<ref role="3TtcxE" to="tpee:fzcqZ_x" resolve="statement" />
</node>
</node>
</node>
<node concept="3clFbF" id="20Ay2VeLRoK" role="3cqZAp">
<node concept="2OqwBi" id="20Ay2VeLTVj" role="3clFbG">
<node concept="2OqwBi" id="20Ay2VeLT65" role="2Oq$k0">
<node concept="2Sf5sV" id="20Ay2VeLRoI" role="2Oq$k0" />
<node concept="3TrEf2" id="20Ay2VeLTAp" role="2OqNvi">
<ref role="3Tt5mk" to="wq2x:6p0DfM0a5m9" resolve="code" />
</node>
</node>
<node concept="1PgB_6" id="20Ay2VeLUv5" role="2OqNvi" />
</node>
</node>
</node>
</node>
<node concept="2SaL7w" id="20Ay2VeL4ap" role="2ZfVeh">
<node concept="3clFbS" id="20Ay2VeL4aq" role="2VODD2">
<node concept="3clFbF" id="20Ay2VeL4hA" role="3cqZAp">
<node concept="1Wc70l" id="20Ay2VeLbef" role="3clFbG">
<node concept="2OqwBi" id="20Ay2VeLc$w" role="3uHU7B">
<node concept="2OqwBi" id="20Ay2VeLbOV" role="2Oq$k0">
<node concept="2Sf5sV" id="20Ay2VeLbAO" role="2Oq$k0" />
<node concept="3TrEf2" id="20Ay2VeLca$" role="2OqNvi">
<ref role="3Tt5mk" to="wq2x:6p0DfM0a5m9" resolve="code" />
</node>
</node>
<node concept="3x8VRR" id="20Ay2VeLdnR" role="2OqNvi" />
</node>
<node concept="2OqwBi" id="20Ay2VeL8zb" role="3uHU7w">
<node concept="2OqwBi" id="20Ay2VeL55M" role="2Oq$k0">
<node concept="2OqwBi" id="20Ay2VeL4uz" role="2Oq$k0">
<node concept="2Sf5sV" id="20Ay2VeL4h_" role="2Oq$k0" />
<node concept="3TrEf2" id="20Ay2VeL4H0" role="2OqNvi">
<ref role="3Tt5mk" to="wq2x:6p0DfM0a5m9" resolve="code" />
</node>
</node>
<node concept="3Tsc0h" id="20Ay2VeL5Kq" role="2OqNvi">
<ref role="3TtcxE" to="tpee:fzcqZ_x" resolve="statement" />
</node>
</node>
<node concept="2HxqBE" id="20Ay2VeLahb" role="2OqNvi">
<node concept="1bVj0M" id="20Ay2VeLahd" role="23t8la">
<node concept="3clFbS" id="20Ay2VeLahe" role="1bW5cS">
<node concept="3clFbF" id="20Ay2VeLa$L" role="3cqZAp">
<node concept="2OqwBi" id="20Ay2VeLaQ8" role="3clFbG">
<node concept="37vLTw" id="20Ay2VeLa$K" role="2Oq$k0">
<ref role="3cqZAo" node="20Ay2VeLahf" resolve="it" />
</node>
<node concept="1mIQ4w" id="20Ay2VeLdK2" role="2OqNvi">
<node concept="chp4Y" id="20Ay2VeLe5e" role="cj9EA">
<ref role="cht4Q" to="wq2x:6p0DfM0a6KG" resolve="EmitConstraintStatement" />
</node>
</node>
</node>
</node>
</node>
<node concept="Rh6nW" id="20Ay2VeLahf" role="1bW2Oz">
<property role="TrG5h" value="it" />
<node concept="2jxLKc" id="20Ay2VeLahg" role="1tU5fm" />
</node>
</node>
</node>
</node>
</node>
</node>
</node>
</node>
</node>
<node concept="2S6QgY" id="20Ay2VeLZGB">
<property role="TrG5h" value="ReplaceWithTemplateLogicalClause" />
<property role="2ZfUl0" value="true" />
<ref role="2ZfgGC" to="wq2x:6p0DfM0a3d3" resolve="RuleComponent" />
<node concept="2S6ZIM" id="20Ay2VeLZGC" role="2ZfVej">
<node concept="3clFbS" id="20Ay2VeLZGD" role="2VODD2">
<node concept="3clFbF" id="20Ay2VeLZPE" role="3cqZAp">
<node concept="Xl_RD" id="20Ay2VeLZPD" role="3clFbG">
<property role="Xl_RC" value="Replace With Modern Construct (TemplateLogicalClause)" />
</node>
</node>
</node>
</node>
<node concept="2Sbjvc" id="20Ay2VeLZGE" role="2ZfgGD">
<node concept="3clFbS" id="20Ay2VeLZGF" role="2VODD2">
<node concept="3cpWs8" id="20Ay2VeMkm1" role="3cqZAp">
<node concept="3cpWsn" id="20Ay2VeMkm2" role="3cpWs9">
<property role="TrG5h" value="lcl" />
<node concept="3Tqbb2" id="20Ay2VeMklY" role="1tU5fm">
<ref role="ehGHo" to="wq2x:20Ay2VefOqC" resolve="LogicalClauseList" />
</node>
<node concept="2OqwBi" id="20Ay2VeMkm3" role="33vP2m">
<node concept="2OqwBi" id="20Ay2VeMkm4" role="2Oq$k0">
<node concept="2Sf5sV" id="20Ay2VeMkm5" role="2Oq$k0" />
<node concept="3TrEf2" id="20Ay2VeMkm6" role="2OqNvi">
<ref role="3Tt5mk" to="wq2x:20Ay2VegCfd" resolve="logic" />
</node>
</node>
<node concept="zfrQC" id="20Ay2VeMkm7" role="2OqNvi">
<ref role="1A9B2P" to="wq2x:20Ay2VefOqC" resolve="LogicalClauseList" />
</node>
</node>
</node>
</node>
<node concept="3cpWs8" id="20Ay2VeMpaH" role="3cqZAp">
<node concept="3cpWsn" id="20Ay2VeMpaI" role="3cpWs9">
<property role="TrG5h" value="tlc" />
<node concept="3Tqbb2" id="20Ay2VeMpaB" role="1tU5fm">
<ref role="ehGHo" to="wq2x:20Ay2Vei7FH" resolve="TemplateLogicalClause" />
</node>
<node concept="2OqwBi" id="20Ay2VeMpaJ" role="33vP2m">
<node concept="2OqwBi" id="20Ay2VeMpaK" role="2Oq$k0">
<node concept="37vLTw" id="20Ay2VeMpaL" role="2Oq$k0">
<ref role="3cqZAo" node="20Ay2VeMkm2" resolve="lcl" />
</node>
<node concept="3Tsc0h" id="20Ay2VeMpaM" role="2OqNvi">
<ref role="3TtcxE" to="wq2x:20Ay2VefOqD" resolve="clauses" />
</node>
</node>
<node concept="WFELt" id="20Ay2VeMpaN" role="2OqNvi">
<ref role="1A0vxQ" to="wq2x:20Ay2Vei7FH" resolve="TemplateLogicalClause" />
</node>
</node>
</node>
</node>
<node concept="3clFbF" id="20Ay2VeMjdo" role="3cqZAp">
<node concept="2OqwBi" id="20Ay2VeMqce" role="3clFbG">
<node concept="2OqwBi" id="20Ay2VeMpJS" role="2Oq$k0">
<node concept="37vLTw" id="20Ay2VeMpaO" role="2Oq$k0">
<ref role="3cqZAo" node="20Ay2VeMpaI" resolve="tlc" />
</node>
<node concept="3TrEf2" id="20Ay2VeMpRn" role="2OqNvi">
<ref role="3Tt5mk" to="wq2x:20Ay2Vei7FI" resolve="code" />
</node>
</node>
<node concept="2oxUTD" id="20Ay2VeMqvv" role="2OqNvi">
<node concept="2OqwBi" id="20Ay2VeMraw" role="2oxUTC">
<node concept="2OqwBi" id="20Ay2VeMqJL" role="2Oq$k0">
<node concept="2Sf5sV" id="20Ay2VeMqyM" role="2Oq$k0" />
<node concept="3TrEf2" id="20Ay2VeMqRr" role="2OqNvi">
<ref role="3Tt5mk" to="wq2x:6p0DfM0a5m9" resolve="code" />
</node>
</node>
<node concept="3YRAZt" id="20Ay2VeMrL9" role="2OqNvi" />
</node>
</node>
</node>
</node>
</node>
</node>
<node concept="2SaL7w" id="20Ay2VeM2ev" role="2ZfVeh">
<node concept="3clFbS" id="20Ay2VeM2ew" role="2VODD2">
<node concept="3clFbF" id="20Ay2VeM2lG" role="3cqZAp">
<node concept="1Wc70l" id="20Ay2VeM5Ca" role="3clFbG">
<node concept="3fqX7Q" id="20Ay2VeMizV" role="3uHU7w">
<node concept="2OqwBi" id="20Ay2VeMizX" role="3fr31v">
<node concept="2OqwBi" id="20Ay2VeMizY" role="2Oq$k0">
<node concept="2OqwBi" id="20Ay2VeMizZ" role="2Oq$k0">
<node concept="2Sf5sV" id="20Ay2VeMi$0" role="2Oq$k0" />
<node concept="3TrEf2" id="20Ay2VeMi$1" role="2OqNvi">
<ref role="3Tt5mk" to="wq2x:6p0DfM0a5m9" resolve="code" />
</node>
</node>
<node concept="3Tsc0h" id="20Ay2VeMi$2" role="2OqNvi">
<ref role="3TtcxE" to="tpee:fzcqZ_x" resolve="statement" />
</node>
</node>
<node concept="2HxqBE" id="20Ay2VeMi$3" role="2OqNvi">
<node concept="1bVj0M" id="20Ay2VeMi$4" role="23t8la">
<node concept="3clFbS" id="20Ay2VeMi$5" role="1bW5cS">
<node concept="3clFbF" id="20Ay2VeMi$6" role="3cqZAp">
<node concept="2OqwBi" id="20Ay2VeMi$7" role="3clFbG">
<node concept="37vLTw" id="20Ay2VeMi$8" role="2Oq$k0">
<ref role="3cqZAo" node="20Ay2VeMi$b" resolve="it" />
</node>
<node concept="1mIQ4w" id="20Ay2VeMi$9" role="2OqNvi">
<node concept="chp4Y" id="20Ay2VeMi$a" role="cj9EA">
<ref role="cht4Q" to="wq2x:6p0DfM0a6KG" resolve="EmitConstraintStatement" />
</node>
</node>
</node>
</node>
</node>
<node concept="Rh6nW" id="20Ay2VeMi$b" role="1bW2Oz">
<property role="TrG5h" value="it" />
<node concept="2jxLKc" id="20Ay2VeMi$c" role="1tU5fm" />
</node>
</node>
</node>
</node>
</node>
<node concept="2OqwBi" id="20Ay2VeM5Ce" role="3uHU7B">
<node concept="2OqwBi" id="20Ay2VeM5Cf" role="2Oq$k0">
<node concept="2Sf5sV" id="20Ay2VeM5Cg" role="2Oq$k0" />
<node concept="3TrEf2" id="20Ay2VeM5Ch" role="2OqNvi">
<ref role="3Tt5mk" to="wq2x:6p0DfM0a5m9" resolve="code" />
</node>
</node>
<node concept="3x8VRR" id="20Ay2VeM5Ci" role="2OqNvi" />
</node>
</node>
</node>
</node>
</node>
</node>
</model>

View File

@ -140,13 +140,6 @@
<property role="R5$K2" value="false" />
<property role="EcuMT" value="7368070394766963523" />
<ref role="1TJDcQ" to="tpck:gw2VY9q" resolve="BaseConcept" />
<node concept="1TJgyj" id="6p0DfM0a5m9" role="1TKVEi">
<property role="20lmBu" value="aggregation" />
<property role="20kJfa" value="code" />
<property role="20lbJX" value="0..1" />
<property role="IQ2ns" value="7368070394766972297" />
<ref role="20lvS9" to="tpee:fzclF80" resolve="StatementList" />
</node>
<node concept="PrWs8" id="3PWU9gizUQY" role="PzmwI">
<ref role="PrY4T" to="5j4j:7E86$tK$Rgo" resolve="LogicalVariableScope" />
</node>
@ -161,6 +154,7 @@
<property role="IQ2ns" value="2316688792939037645" />
<property role="20lmBu" value="aggregation" />
<property role="20kJfa" value="logic" />
<property role="20lbJX" value="1" />
<ref role="20lvS9" node="20Ay2VefOqC" resolve="LogicalClauseList" />
</node>
</node>
@ -351,23 +345,13 @@
<ref role="20lvS9" to="5j4j:7E86$tKsl45" resolve="LogicalItem" />
</node>
</node>
<node concept="1TIwiD" id="2E5lcNn5kn6">
<property role="3GE5qa" value="constraint.variable" />
<property role="TrG5h" value="ParameterDeclarationStatement" />
<property role="34LRSv" value="parameter" />
<property role="EcuMT" value="3063948360254047686" />
<ref role="1TJDcQ" node="2E5lcNn8iYG" resolve="LogicVariableDeclarationStatement" />
<node concept="PrWs8" id="7ksQUDZoqiE" role="PzmwI">
<ref role="PrY4T" to="tpck:1_TrU5E6oyb" resolve="IDontSubstituteByDefault" />
</node>
<node concept="asaX9" id="7km57Pk838H" role="lGtFl" />
</node>
<node concept="1TIwiD" id="2E5lcNn5Ub2">
<property role="3GE5qa" value="constraint.variable" />
<property role="TrG5h" value="LocalDeclarationStatement" />
<property role="34LRSv" value="local" />
<property role="EcuMT" value="3063948360254202562" />
<ref role="1TJDcQ" node="2E5lcNn8iYG" resolve="LogicVariableDeclarationStatement" />
<node concept="asaX9" id="4nIWweBB$7z" role="lGtFl" />
</node>
<node concept="1TIwiD" id="2E5lcNn8iYG">
<property role="3GE5qa" value="constraint.variable" />
@ -567,13 +551,6 @@
<property role="IQ2ns" value="7509376976633120254" />
<ref role="20lvS9" node="1zN1RIkQtcr" resolve="BoundParameterBlock" />
</node>
<node concept="1TJgyj" id="1ffsG7bnJXK" role="1TKVEi">
<property role="20lmBu" value="aggregation" />
<property role="20kJfa" value="applyCondition" />
<property role="IQ2ns" value="1427485783565991792" />
<ref role="20lvS9" node="4laj_h9P4cy" resolve="Condition" />
<node concept="asaX9" id="3KXGt7WSRHz" role="lGtFl" />
</node>
<node concept="1TJgyj" id="1ffsG7bCfL5" role="1TKVEi">
<property role="20lmBu" value="aggregation" />
<property role="20kJfa" value="head" />
@ -800,22 +777,6 @@
<property role="20lbJX" value="1" />
<ref role="20lvS9" node="4MEOIDFttoe" resolve="TypeTermDeclaration" />
</node>
<node concept="1TJgyj" id="1pPth$m5BbA" role="1TKVEi">
<property role="20lmBu" value="aggregation" />
<property role="20kJfa" value="term" />
<property role="20lbJX" value="0..1" />
<property role="IQ2ns" value="1618328391714763494" />
<ref role="20lvS9" node="1pPth$m5o9D" resolve="TypeTermTemplate" />
<node concept="asaX9" id="4MEOIDFRaM8" role="lGtFl" />
</node>
<node concept="1TJgyj" id="2V8TwD0$Z8f" role="1TKVEi">
<property role="IQ2ns" value="3371197252794315279" />
<property role="20lmBu" value="aggregation" />
<property role="20kJfa" value="recovery" />
<property role="20lbJX" value="0..1" />
<ref role="20lvS9" node="2V8TwD0$Yds" resolve="RecoveryBlock" />
<node concept="asaX9" id="euG2bFCwYA" role="lGtFl" />
</node>
<node concept="PrWs8" id="1pPth$m5Bb$" role="PzmwI">
<ref role="PrY4T" to="tpee:hCUYCKd" resolve="IValidIdentifier" />
</node>
@ -1026,27 +987,6 @@
<ref role="PrY4T" to="tpck:1_TrU5E6oyb" resolve="IDontSubstituteByDefault" />
</node>
</node>
<node concept="1TIwiD" id="7IysFeA4qCy">
<property role="EcuMT" value="8908809128803150370" />
<property role="3GE5qa" value="constraint.typespecific" />
<property role="TrG5h" value="NewTypeParameterBinding" />
<ref role="1TJDcQ" to="tpck:gw2VY9q" resolve="BaseConcept" />
<node concept="1TJgyj" id="7IysFeA4qC_" role="1TKVEi">
<property role="IQ2ns" value="8908809128803150373" />
<property role="20lmBu" value="aggregation" />
<property role="20kJfa" value="value" />
<property role="20lbJX" value="1" />
<ref role="20lvS9" to="5j4j:7E86$tKskWj" resolve="LogicalValue" />
</node>
<node concept="1TJgyj" id="7IysFeA4qCz" role="1TKVEi">
<property role="IQ2ns" value="8908809128803150371" />
<property role="20lmBu" value="reference" />
<property role="20lbJX" value="1" />
<property role="20kJfa" value="parameter" />
<ref role="20lvS9" node="7IysFeA0yb0" resolve="TypeDeclarationParameter" />
</node>
<node concept="asaX9" id="4MEOIDFsyAO" role="lGtFl" />
</node>
<node concept="1TIwiD" id="7IysFeA5Lco">
<property role="EcuMT" value="8908809128803504920" />
<property role="3GE5qa" value="type.code" />
@ -1240,38 +1180,6 @@
<ref role="20lvS9" to="5j4j:5lJXKARS0" resolve="TreeForm" />
</node>
</node>
<node concept="1TIwiD" id="2V8TwD0$Yds">
<property role="EcuMT" value="3371197252794311516" />
<property role="3GE5qa" value="type.code" />
<property role="TrG5h" value="RecoveryBlock" />
<ref role="1TJDcQ" node="1hX44vMFoce" resolve="CodeBlock" />
<node concept="asaX9" id="euG2bFCwYC" role="lGtFl" />
</node>
<node concept="1TIwiD" id="2V8TwD0E9Wq">
<property role="EcuMT" value="3371197252795670298" />
<property role="3GE5qa" value="type.term" />
<property role="TrG5h" value="TypeFeatureExpression" />
<ref role="1TJDcQ" to="tpee:fz3vP1J" resolve="Expression" />
<node concept="1TJgyj" id="2V8TwD0E9Wr" role="1TKVEi">
<property role="IQ2ns" value="3371197252795670299" />
<property role="20lmBu" value="reference" />
<property role="20kJfa" value="feature" />
<property role="20lbJX" value="1" />
<ref role="20lvS9" node="1pPth$m5oa5" resolve="TypeFeature" />
</node>
<node concept="asaX9" id="euG2bFwcwG" role="lGtFl" />
</node>
<node concept="1TIwiD" id="2V8TwD148$8">
<property role="EcuMT" value="3371197252802480392" />
<property role="3GE5qa" value="type.term" />
<property role="TrG5h" value="RecoverOperation" />
<property role="34LRSv" value="recover" />
<ref role="1TJDcQ" to="tpck:gw2VY9q" resolve="BaseConcept" />
<node concept="PrWs8" id="2V8TwD148BA" role="PzmwI">
<ref role="PrY4T" to="tpee:hqOqG0K" resolve="IOperation" />
</node>
<node concept="asaX9" id="euG2bFw8r2" role="lGtFl" />
</node>
<node concept="1TIwiD" id="7rf49Ngk1cK">
<property role="EcuMT" value="8561079682350453552" />
<property role="3GE5qa" value="constraint" />
@ -1381,38 +1289,6 @@
<ref role="PrY4T" to="tpee:SORzhOp6jM" resolve="IVariableReference" />
</node>
</node>
<node concept="1TIwiD" id="7eGEHDlgPU1">
<property role="TrG5h" value="NewTypeConstraint" />
<property role="3GE5qa" value="constraint.typespecific" />
<property role="34LRSv" value="new type (deprecated)" />
<property role="EcuMT" value="8335224865066016385" />
<ref role="1TJDcQ" node="18kNIl0mxXI" resolve="PseudoConstraint" />
<node concept="1TJgyj" id="YGS68N6UU4" role="1TKVEi">
<property role="20lmBu" value="reference" />
<property role="20kJfa" value="typeDeclaration" />
<property role="20lbJX" value="1" />
<property role="IQ2ns" value="1129524318932020868" />
<ref role="20lvS9" node="1pPth$m5Bbz" resolve="TypeDeclaration" />
</node>
<node concept="1TJgyj" id="6p0DfM0gdsG" role="1TKVEi">
<property role="20lmBu" value="aggregation" />
<property role="20kJfa" value="typeVar" />
<property role="20lbJX" value="1" />
<property role="IQ2ns" value="7368070394768578348" />
<ref role="20lvS9" to="5j4j:7E86$tKsHeX" resolve="AbstractLogicalVariable" />
</node>
<node concept="1TJgyj" id="6p0DfM0gSN1" role="1TKVEi">
<property role="20lmBu" value="aggregation" />
<property role="20kJfa" value="argument" />
<property role="20lbJX" value="0..n" />
<property role="IQ2ns" value="7368070394768755905" />
<ref role="20lvS9" node="7IysFeA4qCy" resolve="NewTypeParameterBinding" />
</node>
<node concept="PrWs8" id="4MEOIDGwNay" role="PzmwI">
<ref role="PrY4T" node="1L74NXEmF9t" resolve="TypeInvocation" />
</node>
<node concept="asaX9" id="4MEOIDFfpT7" role="lGtFl" />
</node>
<node concept="1TIwiD" id="20Ay2VefOqC">
<property role="EcuMT" value="2316688792938825384" />
<property role="3GE5qa" value="rule.clause" />
@ -1460,19 +1336,6 @@
<ref role="20lvS9" to="tpee:fzclF80" resolve="StatementList" />
</node>
</node>
<node concept="1TIwiD" id="20Ay2VepLqo">
<property role="EcuMT" value="2316688792941434520" />
<property role="3GE5qa" value="rule.clause" />
<property role="TrG5h" value="CodeLogicalClause" />
<ref role="1TJDcQ" node="20Ay2VefOqF" resolve="LogicalClause" />
<node concept="1TJgyj" id="20Ay2VepLqp" role="1TKVEi">
<property role="IQ2ns" value="2316688792941434521" />
<property role="20lmBu" value="aggregation" />
<property role="20kJfa" value="code" />
<property role="20lbJX" value="1" />
<ref role="20lvS9" to="tpee:fzclF80" resolve="StatementList" />
</node>
</node>
<node concept="1TIwiD" id="1CcQBrQdzwG">
<property role="EcuMT" value="1877115349178398764" />
<property role="3GE5qa" value="constraint" />

View File

@ -53,7 +53,6 @@
<reference id="1068581517664" name="variableDeclaration" index="3cqZAo" />
</concept>
<concept id="1068498886294" name="jetbrains.mps.baseLanguage.structure.AssignmentExpression" flags="nn" index="37vLTI" />
<concept id="1225271177708" name="jetbrains.mps.baseLanguage.structure.StringType" flags="in" index="17QB3L" />
<concept id="4972933694980447171" name="jetbrains.mps.baseLanguage.structure.BaseVariableDeclaration" flags="ng" index="19Szcq">
<child id="5680397130376446158" name="type" index="1tU5fm" />
</concept>
@ -172,7 +171,6 @@
<child id="1803469493727536396" name="concept" index="hTh3Z" />
</concept>
<concept id="1179409122411" name="jetbrains.mps.lang.smodel.structure.Node_ConceptMethodCall" flags="nn" index="2qgKlT" />
<concept id="7453996997717780434" name="jetbrains.mps.lang.smodel.structure.Node_GetSConceptOperation" flags="nn" index="2yIwOk" />
<concept id="2396822768958367367" name="jetbrains.mps.lang.smodel.structure.AbstractTypeCastExpression" flags="nn" index="$5XWr">
<reference id="6733348108486823428" name="concept" index="1m5ApE" />
<child id="6733348108486823193" name="leftExpression" index="1m5AlR" />
@ -189,10 +187,6 @@
<concept id="1139621453865" name="jetbrains.mps.lang.smodel.structure.Node_IsInstanceOfOperation" flags="nn" index="1mIQ4w">
<child id="1177027386292" name="conceptArgument" index="cj9EA" />
</concept>
<concept id="6039268229364358244" name="jetbrains.mps.lang.smodel.structure.ExactConceptCase" flags="ng" index="1pnPoh">
<child id="6039268229364358388" name="body" index="1pnPq1" />
<child id="6039268229364358387" name="concept" index="1pnPq6" />
</concept>
<concept id="1172008320231" name="jetbrains.mps.lang.smodel.structure.Node_IsNotNullOperation" flags="nn" index="3x8VRR" />
<concept id="1144101972840" name="jetbrains.mps.lang.smodel.structure.OperationParm_Concept" flags="ng" index="1xMEDy">
<child id="1207343664468" name="conceptArgument" index="ri$Ld" />
@ -200,11 +194,6 @@
<concept id="1180636770613" name="jetbrains.mps.lang.smodel.structure.SNodeCreator" flags="nn" index="3zrR0B">
<child id="1180636770616" name="createdType" index="3zrR0E" />
</concept>
<concept id="5944356402132808749" name="jetbrains.mps.lang.smodel.structure.ConceptSwitchStatement" flags="nn" index="1_3QMa">
<child id="6039268229365417680" name="defaultBlock" index="1prKM_" />
<child id="5944356402132808753" name="case" index="1_3QMm" />
<child id="5944356402132808752" name="expression" index="1_3QMn" />
</concept>
<concept id="1219352745532" name="jetbrains.mps.lang.smodel.structure.NodeRefExpression" flags="nn" index="3B5_sB">
<reference id="1219352800908" name="referentNode" index="3B5MYn" />
</concept>
@ -1395,160 +1384,6 @@
<ref role="1YaFvo" to="wq2x:3TnYLtqfh$J" resolve="ContextParameterReference" />
</node>
</node>
<node concept="1YbPZF" id="2V8TwD0F1h0">
<property role="TrG5h" value="typeof_TypeFeatureExpression" />
<property role="3GE5qa" value="type.term" />
<node concept="3clFbS" id="2V8TwD0F1h1" role="18ibNy">
<node concept="1_3QMa" id="2L20jGt9_kt" role="3cqZAp">
<node concept="1pnPoh" id="2L20jGt9_A0" role="1_3QMm">
<node concept="3gn64h" id="2L20jGt9_A9" role="1pnPq6">
<ref role="3gnhBz" to="wq2x:1pPth$m5oae" resolve="StringTypeFeature" />
</node>
<node concept="3clFbS" id="2L20jGt9_A4" role="1pnPq1">
<node concept="1Z5TYs" id="2V8TwD0F1t5" role="3cqZAp">
<node concept="mw_s8" id="2V8TwD0F1tp" role="1ZfhKB">
<node concept="2c44tf" id="2V8TwD0F1tl" role="mwGJk">
<node concept="17QB3L" id="2V8TwD0F1tJ" role="2c44tc" />
</node>
</node>
<node concept="mw_s8" id="2V8TwD0F1t8" role="1ZfhK$">
<node concept="1Z2H0r" id="2V8TwD0F1j3" role="mwGJk">
<node concept="1YBJjd" id="2V8TwD0F1ms" role="1Z2MuG">
<ref role="1YBMHb" node="2V8TwD0F1h3" resolve="tfe" />
</node>
</node>
</node>
</node>
<node concept="3clFbH" id="2L20jGt9_M8" role="3cqZAp" />
</node>
</node>
<node concept="1pnPoh" id="2L20jGt9_Ac" role="1_3QMm">
<node concept="3gn64h" id="2L20jGt9_Al" role="1pnPq6">
<ref role="3gnhBz" to="wq2x:1pPth$m5oaG" resolve="ReferenceTypeFeature" />
</node>
<node concept="3clFbS" id="2L20jGt9_Ae" role="1pnPq1">
<node concept="1Z5TYs" id="2L20jGt9_Mq" role="3cqZAp">
<node concept="mw_s8" id="2L20jGt9_Mr" role="1ZfhKB">
<node concept="2c44tf" id="2L20jGt9_Ms" role="mwGJk">
<node concept="17QB3L" id="2L20jGt9_R$" role="2c44tc" />
</node>
</node>
<node concept="mw_s8" id="2L20jGt9_Mu" role="1ZfhK$">
<node concept="1Z2H0r" id="2L20jGt9_Mv" role="mwGJk">
<node concept="1YBJjd" id="2L20jGt9_Mw" role="1Z2MuG">
<ref role="1YBMHb" node="2V8TwD0F1h3" resolve="tfe" />
</node>
</node>
</node>
</node>
<node concept="3clFbH" id="2L20jGt9_R8" role="3cqZAp" />
</node>
</node>
<node concept="1pnPoh" id="2L20jGt9_Ao" role="1_3QMm">
<node concept="3gn64h" id="2L20jGt9_A$" role="1pnPq6">
<ref role="3gnhBz" to="wq2x:1pPth$m5oaL" resolve="ChildTypeFeature" />
</node>
<node concept="3clFbS" id="2L20jGt9_Aq" role="1pnPq1">
<node concept="1Z5TYs" id="2L20jGt9_S2" role="3cqZAp">
<node concept="mw_s8" id="2L20jGt9_S3" role="1ZfhKB">
<node concept="2c44tf" id="2L20jGt9_S4" role="mwGJk">
<node concept="3uibUv" id="2L20jGt9BM6" role="2c44tc">
<ref role="3uigEE" to="6exd:5JQSuNswOXL" resolve="CompositeNode" />
</node>
</node>
</node>
<node concept="mw_s8" id="2L20jGt9_S6" role="1ZfhK$">
<node concept="1Z2H0r" id="2L20jGt9_S7" role="mwGJk">
<node concept="1YBJjd" id="2L20jGt9_S8" role="1Z2MuG">
<ref role="1YBMHb" node="2V8TwD0F1h3" resolve="tfe" />
</node>
</node>
</node>
</node>
<node concept="3clFbH" id="2L20jGt9A09" role="3cqZAp" />
</node>
</node>
<node concept="1pnPoh" id="2L20jGt9_AB" role="1_3QMm">
<node concept="3gn64h" id="2L20jGt9_AQ" role="1pnPq6">
<ref role="3gnhBz" to="wq2x:1pPth$m5oa6" resolve="ListTypeFeature" />
</node>
<node concept="3clFbS" id="2L20jGt9_AD" role="1pnPq1">
<node concept="1Z5TYs" id="2L20jGt9BMQ" role="3cqZAp">
<node concept="mw_s8" id="2L20jGt9BMR" role="1ZfhKB">
<node concept="2c44tf" id="2L20jGt9BMS" role="mwGJk">
<node concept="3uibUv" id="2L20jGt9BTZ" role="2c44tc">
<ref role="3uigEE" to="6exd:3OPtF03lco4" resolve="ListNode" />
</node>
</node>
</node>
<node concept="mw_s8" id="2L20jGt9BMU" role="1ZfhK$">
<node concept="1Z2H0r" id="2L20jGt9BMV" role="mwGJk">
<node concept="1YBJjd" id="2L20jGt9BMW" role="1Z2MuG">
<ref role="1YBMHb" node="2V8TwD0F1h3" resolve="tfe" />
</node>
</node>
</node>
</node>
<node concept="3clFbH" id="2L20jGt9BTQ" role="3cqZAp" />
</node>
</node>
<node concept="2OqwBi" id="2L20jGt9ChA" role="1_3QMn">
<node concept="2OqwBi" id="2L20jGt9_sg" role="2Oq$k0">
<node concept="1YBJjd" id="2L20jGt9_kG" role="2Oq$k0">
<ref role="1YBMHb" node="2V8TwD0F1h3" resolve="tfe" />
</node>
<node concept="3TrEf2" id="2L20jGt9_zW" role="2OqNvi">
<ref role="3Tt5mk" to="wq2x:2V8TwD0E9Wr" resolve="feature" />
</node>
</node>
<node concept="2yIwOk" id="2L20jGt9CCq" role="2OqNvi" />
</node>
<node concept="3clFbS" id="2L20jGt9CDC" role="1prKM_">
<node concept="2MkqsV" id="2L20jGt9CDE" role="3cqZAp">
<node concept="Xl_RD" id="2L20jGt9CDQ" role="2MkJ7o">
<property role="Xl_RC" value="unsupported concept" />
</node>
<node concept="2OqwBi" id="2L20jGt9CMj" role="2OEOjV">
<node concept="1YBJjd" id="2L20jGt9CEm" role="2Oq$k0">
<ref role="1YBMHb" node="2V8TwD0F1h3" resolve="tfe" />
</node>
<node concept="3TrEf2" id="2L20jGt9CWY" role="2OqNvi">
<ref role="3Tt5mk" to="wq2x:2V8TwD0E9Wr" resolve="feature" />
</node>
</node>
</node>
</node>
</node>
</node>
<node concept="1YaCAy" id="2V8TwD0F1h3" role="1YuTPh">
<property role="TrG5h" value="tfe" />
<ref role="1YaFvo" to="wq2x:2V8TwD0E9Wq" resolve="TypeFeatureExpression" />
</node>
</node>
<node concept="1YbPZF" id="4cKdPpqE8LC">
<property role="TrG5h" value="typeof_RecoverOperation" />
<property role="3GE5qa" value="type.term" />
<node concept="3clFbS" id="4cKdPpqE8LD" role="18ibNy">
<node concept="1Z5TYs" id="4cKdPpqE8Ui" role="3cqZAp">
<node concept="mw_s8" id="4cKdPpqE8UA" role="1ZfhKB">
<node concept="2c44tf" id="4cKdPpqE8Uy" role="mwGJk">
<node concept="3Tqbb2" id="4cKdPpqE8UW" role="2c44tc" />
</node>
</node>
<node concept="mw_s8" id="4cKdPpqE8Ul" role="1ZfhK$">
<node concept="1Z2H0r" id="4cKdPpqE8LM" role="mwGJk">
<node concept="1YBJjd" id="4cKdPpqE8Ny" role="1Z2MuG">
<ref role="1YBMHb" node="4cKdPpqE8LF" resolve="ro" />
</node>
</node>
</node>
</node>
</node>
<node concept="1YaCAy" id="4cKdPpqE8LF" role="1YuTPh">
<property role="TrG5h" value="ro" />
<ref role="1YaFvo" to="wq2x:2V8TwD148$8" resolve="RecoverOperation" />
</node>
</node>
<node concept="1YbPZF" id="4MEOIDFzuUN">
<property role="TrG5h" value="typeof_TypeTermDeclarationParameterReference" />
<property role="3GE5qa" value="type.term" />