lc: typeclasses: added structure, editor, constraints (mainly concerned with scoping) aspects

This commit is contained in:
grigorii.kirgizov 2019-01-11 15:00:47 +03:00
parent cf855fc19b
commit fb4fe40973
4 changed files with 1320 additions and 70 deletions

View File

@ -10,6 +10,7 @@
<import index="tpck" ref="r:00000000-0000-4000-0000-011c89590288(jetbrains.mps.lang.core.structure)" />
<import index="8tt8" ref="r:e74c1bfc-387b-4b4b-abee-2eb77ee510ec(samples.lambdacalc.structure)" />
<import index="tpcu" ref="r:00000000-0000-4000-0000-011c89590282(jetbrains.mps.lang.core.behavior)" />
<import index="33ny" ref="6354ebe7-c22a-4a0f-ac54-50b52ab9b065/java:java.util(JDK/)" />
<import index="wyt6" ref="6354ebe7-c22a-4a0f-ac54-50b52ab9b065/java:java.lang(JDK/)" implicit="true" />
</imports>
<registry>
@ -28,8 +29,15 @@
<concept id="1225194691553" name="jetbrains.mps.lang.behavior.structure.ThisNodeExpression" flags="nn" index="13iPFW" />
</language>
<language id="f3061a53-9226-4cc5-a443-f952ceaf5816" name="jetbrains.mps.baseLanguage">
<concept id="1215693861676" name="jetbrains.mps.baseLanguage.structure.BaseAssignmentExpression" flags="nn" index="d038R">
<child id="1068498886297" name="rValue" index="37vLTx" />
<child id="1068498886295" name="lValue" index="37vLTJ" />
</concept>
<concept id="4836112446988635817" name="jetbrains.mps.baseLanguage.structure.UndefinedType" flags="in" index="2jxLKc" />
<concept id="1202948039474" name="jetbrains.mps.baseLanguage.structure.InstanceMethodCallOperation" flags="nn" index="liA8E" />
<concept id="1076505808687" name="jetbrains.mps.baseLanguage.structure.WhileStatement" flags="nn" index="2$JKZl">
<child id="1076505808688" name="condition" index="2$JKZa" />
</concept>
<concept id="1154032098014" name="jetbrains.mps.baseLanguage.structure.AbstractLoopStatement" flags="nn" index="2LF5Ji">
<child id="1154032183016" name="body" index="2LFqv$" />
</concept>
@ -47,12 +55,14 @@
<property id="1070475926801" name="value" index="Xl_RC" />
</concept>
<concept id="1070534058343" name="jetbrains.mps.baseLanguage.structure.NullLiteral" flags="nn" index="10Nm6u" />
<concept id="1070534644030" name="jetbrains.mps.baseLanguage.structure.BooleanType" flags="in" index="10P_77" />
<concept id="1068431474542" name="jetbrains.mps.baseLanguage.structure.VariableDeclaration" flags="ng" index="33uBYm">
<child id="1068431790190" name="initializer" index="33vP2m" />
</concept>
<concept id="1068498886296" name="jetbrains.mps.baseLanguage.structure.VariableReference" flags="nn" index="37vLTw">
<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" />
@ -65,9 +75,17 @@
<child id="1068580123156" name="expression" index="3clFbG" />
</concept>
<concept id="1068580123157" name="jetbrains.mps.baseLanguage.structure.Statement" flags="nn" index="3clFbH" />
<concept id="1068580123159" name="jetbrains.mps.baseLanguage.structure.IfStatement" flags="nn" index="3clFbJ">
<property id="4467513934994662256" name="forceOneLine" index="TyiWL" />
<child id="1068580123160" name="condition" index="3clFbw" />
<child id="1068580123161" name="ifTrue" index="3clFbx" />
</concept>
<concept id="1068580123136" name="jetbrains.mps.baseLanguage.structure.StatementList" flags="sn" stub="5293379017992965193" index="3clFbS">
<child id="1068581517665" name="statement" index="3cqZAp" />
</concept>
<concept id="1068580320020" name="jetbrains.mps.baseLanguage.structure.IntegerConstant" flags="nn" index="3cmrfG">
<property id="1068580320021" name="value" index="3cmrfH" />
</concept>
<concept id="1068581242875" name="jetbrains.mps.baseLanguage.structure.PlusExpression" flags="nn" index="3cpWs3" />
<concept id="1068581242864" name="jetbrains.mps.baseLanguage.structure.LocalVariableDeclarationStatement" flags="nn" index="3cpWs8">
<child id="1068581242865" name="localVariableDeclaration" index="3cpWs9" />
@ -76,6 +94,10 @@
<concept id="1079359253375" name="jetbrains.mps.baseLanguage.structure.ParenthesizedExpression" flags="nn" index="1eOMI4">
<child id="1079359253376" name="expression" index="1eOMHV" />
</concept>
<concept id="1081506762703" name="jetbrains.mps.baseLanguage.structure.GreaterThanExpression" flags="nn" index="3eOSWO" />
<concept id="1081516740877" name="jetbrains.mps.baseLanguage.structure.NotExpression" flags="nn" index="3fqX7Q">
<child id="1081516765348" name="expression" index="3fr31v" />
</concept>
<concept id="1204053956946" name="jetbrains.mps.baseLanguage.structure.IMethodCall" flags="ng" index="1ndlxa">
<reference id="1068499141037" name="baseMethodDeclaration" index="37wK5l" />
<child id="1068499141038" name="actualArgument" index="37wK5m" />
@ -83,6 +105,7 @@
<concept id="1212685548494" name="jetbrains.mps.baseLanguage.structure.ClassCreator" flags="nn" index="1pGfFk" />
<concept id="1107535904670" name="jetbrains.mps.baseLanguage.structure.ClassifierType" flags="in" index="3uibUv">
<reference id="1107535924139" name="classifier" index="3uigEE" />
<child id="1109201940907" name="parameter" index="11_B2D" />
</concept>
<concept id="1081773326031" name="jetbrains.mps.baseLanguage.structure.BinaryOperation" flags="nn" index="3uHJSO">
<child id="1081773367579" name="rightExpression" index="3uHU7w" />
@ -153,7 +176,10 @@
<child id="1204796294226" name="closure" index="23t8la" />
</concept>
<concept id="1204980550705" name="jetbrains.mps.baseLanguage.collections.structure.VisitAllOperation" flags="nn" index="2es0OD" />
<concept id="1237467461002" name="jetbrains.mps.baseLanguage.collections.structure.GetIteratorOperation" flags="nn" index="uNJiE" />
<concept id="1203518072036" name="jetbrains.mps.baseLanguage.collections.structure.SmartClosureParameterDeclaration" flags="ig" index="Rh6nW" />
<concept id="1162935959151" name="jetbrains.mps.baseLanguage.collections.structure.GetSizeOperation" flags="nn" index="34oBXx" />
<concept id="1165530316231" name="jetbrains.mps.baseLanguage.collections.structure.IsEmptyOperation" flags="nn" index="1v1jN8" />
</language>
</registry>
<node concept="13h7C7" id="3g9UT2j94eo">
@ -296,12 +322,13 @@
<node concept="1pGfFk" id="48ZGLP7q4ke" role="2ShVmc">
<ref role="37wK5l" to="wyt6:~StringBuilder.&lt;init&gt;(java.lang.String)" resolve="StringBuilder" />
<node concept="Xl_RD" id="48ZGLP7q4kE" role="37wK5m">
<property role="Xl_RC" value="forall " />
<property role="Xl_RC" value="" />
</node>
</node>
</node>
</node>
</node>
<node concept="3clFbH" id="2O9ahh6oKvg" role="3cqZAp" />
<node concept="1X3_iC" id="48ZGLP7qHY8" role="lGtFl">
<property role="3V$3am" value="statement" />
<property role="3V$3ak" value="f3061a53-9226-4cc5-a443-f952ceaf5816/1068580123136/1068581517665" />
@ -402,13 +429,219 @@
<ref role="3cqZAo" node="48ZGLP7q4g6" resolve="s" />
</node>
<node concept="liA8E" id="48ZGLP7rlnw" role="2OqNvi">
<ref role="37wK5l" to="wyt6:~StringBuilder.append(char):java.lang.StringBuilder" resolve="append" />
<node concept="1Xhbcc" id="48ZGLP7rlTw" role="37wK5m">
<property role="1XhdNS" value="." />
<ref role="37wK5l" to="wyt6:~StringBuilder.append(java.lang.String):java.lang.StringBuilder" resolve="append" />
<node concept="Xl_RD" id="2O9ahh6oTGb" role="37wK5m">
<property role="Xl_RC" value=". " />
</node>
</node>
</node>
</node>
<node concept="3clFbH" id="2O9ahh6ndIj" role="3cqZAp" />
<node concept="3clFbJ" id="2O9ahh6nkYp" role="3cqZAp">
<node concept="3clFbS" id="2O9ahh6nkYr" role="3clFbx">
<node concept="3cpWs8" id="2O9ahh6oX5z" role="3cqZAp">
<node concept="3cpWsn" id="2O9ahh6oX5A" role="3cpWs9">
<property role="TrG5h" value="isMany" />
<node concept="10P_77" id="2O9ahh6oX5x" role="1tU5fm" />
<node concept="3eOSWO" id="2O9ahh6p618" role="33vP2m">
<node concept="3cmrfG" id="2O9ahh6p68q" role="3uHU7w">
<property role="3cmrfH" value="1" />
</node>
<node concept="2OqwBi" id="2O9ahh6p0KL" role="3uHU7B">
<node concept="2OqwBi" id="2O9ahh6oYaE" role="2Oq$k0">
<node concept="13iPFW" id="2O9ahh6oXWY" role="2Oq$k0" />
<node concept="3Tsc0h" id="2O9ahh6oYIC" role="2OqNvi">
<ref role="3TtcxE" to="8tt8:2O9ahh6mHw4" resolve="constraints" />
</node>
</node>
<node concept="34oBXx" id="2O9ahh6p2DZ" role="2OqNvi" />
</node>
</node>
</node>
</node>
<node concept="3clFbH" id="2O9ahh6phlb" role="3cqZAp" />
<node concept="3cpWs8" id="2O9ahh6ofPV" role="3cqZAp">
<node concept="3cpWsn" id="2O9ahh6o8KR" role="3cpWs9">
<property role="TrG5h" value="it" />
<node concept="2OqwBi" id="2O9ahh6o8L9" role="33vP2m">
<node concept="uNJiE" id="2O9ahh6o8Lb" role="2OqNvi" />
<node concept="2OqwBi" id="2O9ahh6ogCw" role="2Oq$k0">
<node concept="13iPFW" id="2O9ahh6ogqN" role="2Oq$k0" />
<node concept="3Tsc0h" id="2O9ahh6ohe0" role="2OqNvi">
<ref role="3TtcxE" to="8tt8:2O9ahh6mHw4" resolve="constraints" />
</node>
</node>
</node>
<node concept="3uibUv" id="2O9ahh6o8Ld" role="1tU5fm">
<ref role="3uigEE" to="33ny:~Iterator" resolve="Iterator" />
<node concept="3Tqbb2" id="2O9ahh6o8Le" role="11_B2D">
<ref role="ehGHo" to="8tt8:2O9ahh6mHvg" resolve="Constraint" />
</node>
</node>
</node>
</node>
<node concept="3cpWs8" id="2O9ahh6o8Lj" role="3cqZAp">
<node concept="3cpWsn" id="2O9ahh6o8Lk" role="3cpWs9">
<property role="TrG5h" value="ctr" />
<node concept="3Tqbb2" id="2O9ahh6o8Ln" role="1tU5fm">
<ref role="ehGHo" to="8tt8:2O9ahh6mHvg" resolve="Constraint" />
</node>
<node concept="2OqwBi" id="2O9ahh6o8Lo" role="33vP2m">
<node concept="37vLTw" id="2O9ahh6o8Lp" role="2Oq$k0">
<ref role="3cqZAo" node="2O9ahh6o8KR" resolve="it" />
</node>
<node concept="liA8E" id="2O9ahh6o8Lq" role="2OqNvi">
<ref role="37wK5l" to="33ny:~Iterator.next():java.lang.Object" resolve="next" />
</node>
</node>
</node>
</node>
<node concept="3clFbJ" id="2O9ahh6p7Az" role="3cqZAp">
<property role="TyiWL" value="true" />
<node concept="3clFbS" id="2O9ahh6p7A_" role="3clFbx">
<node concept="3clFbF" id="2O9ahh6p86_" role="3cqZAp">
<node concept="2OqwBi" id="2O9ahh6p8v9" role="3clFbG">
<node concept="37vLTw" id="2O9ahh6p86z" role="2Oq$k0">
<ref role="3cqZAo" node="48ZGLP7q4g6" resolve="s" />
</node>
<node concept="liA8E" id="2O9ahh6p9BQ" role="2OqNvi">
<ref role="37wK5l" to="wyt6:~StringBuilder.append(char):java.lang.StringBuilder" resolve="append" />
<node concept="1Xhbcc" id="2O9ahh6pau5" role="37wK5m">
<property role="1XhdNS" value="(" />
</node>
</node>
</node>
</node>
</node>
<node concept="37vLTw" id="2O9ahh6p82j" role="3clFbw">
<ref role="3cqZAo" node="2O9ahh6oX5A" resolve="isMany" />
</node>
</node>
<node concept="3clFbF" id="2O9ahh6oyj0" role="3cqZAp">
<node concept="2OqwBi" id="2O9ahh6oyEh" role="3clFbG">
<node concept="37vLTw" id="2O9ahh6oyiY" role="2Oq$k0">
<ref role="3cqZAo" node="48ZGLP7q4g6" resolve="s" />
</node>
<node concept="liA8E" id="2O9ahh6o$J4" role="2OqNvi">
<ref role="37wK5l" to="wyt6:~StringBuilder.append(java.lang.String):java.lang.StringBuilder" resolve="append" />
<node concept="2EnYce" id="2O9ahh6oEkk" role="37wK5m">
<node concept="37vLTw" id="2O9ahh6o_AG" role="2Oq$k0">
<ref role="3cqZAo" node="2O9ahh6o8Lk" resolve="ctr" />
</node>
<node concept="2qgKlT" id="2O9ahh6oIhJ" role="2OqNvi">
<ref role="37wK5l" to="tpcu:hEwIMiw" resolve="getPresentation" />
</node>
</node>
</node>
</node>
</node>
<node concept="3clFbH" id="2O9ahh6ohEr" role="3cqZAp" />
<node concept="2$JKZl" id="2O9ahh6oj43" role="3cqZAp">
<node concept="3clFbS" id="2O9ahh6oj45" role="2LFqv$">
<node concept="3clFbF" id="2O9ahh6oNi4" role="3cqZAp">
<node concept="37vLTI" id="2O9ahh6oOzp" role="3clFbG">
<node concept="2OqwBi" id="2O9ahh6oOYr" role="37vLTx">
<node concept="37vLTw" id="2O9ahh6oOHG" role="2Oq$k0">
<ref role="3cqZAo" node="2O9ahh6o8KR" resolve="it" />
</node>
<node concept="liA8E" id="2O9ahh6oRK$" role="2OqNvi">
<ref role="37wK5l" to="33ny:~Iterator.next():java.lang.Object" resolve="next" />
</node>
</node>
<node concept="37vLTw" id="2O9ahh6oNi2" role="37vLTJ">
<ref role="3cqZAo" node="2O9ahh6o8Lk" resolve="ctr" />
</node>
</node>
</node>
<node concept="3clFbF" id="2O9ahh6omoI" role="3cqZAp">
<node concept="2OqwBi" id="2O9ahh6omHl" role="3clFbG">
<node concept="37vLTw" id="2O9ahh6omoH" role="2Oq$k0">
<ref role="3cqZAo" node="48ZGLP7q4g6" resolve="s" />
</node>
<node concept="liA8E" id="2O9ahh6ou4$" role="2OqNvi">
<ref role="37wK5l" to="wyt6:~StringBuilder.append(java.lang.String):java.lang.StringBuilder" resolve="append" />
<node concept="Xl_RD" id="2O9ahh6ouSV" role="37wK5m">
<property role="Xl_RC" value=", " />
</node>
</node>
</node>
</node>
<node concept="3clFbF" id="2O9ahh6oJvN" role="3cqZAp">
<node concept="2OqwBi" id="2O9ahh6oJvO" role="3clFbG">
<node concept="37vLTw" id="2O9ahh6oJvP" role="2Oq$k0">
<ref role="3cqZAo" node="48ZGLP7q4g6" resolve="s" />
</node>
<node concept="liA8E" id="2O9ahh6oJvQ" role="2OqNvi">
<ref role="37wK5l" to="wyt6:~StringBuilder.append(java.lang.String):java.lang.StringBuilder" resolve="append" />
<node concept="2EnYce" id="2O9ahh6oJvR" role="37wK5m">
<node concept="37vLTw" id="2O9ahh6oJvS" role="2Oq$k0">
<ref role="3cqZAo" node="2O9ahh6o8Lk" resolve="ctr" />
</node>
<node concept="2qgKlT" id="2O9ahh6oJvT" role="2OqNvi">
<ref role="37wK5l" to="tpcu:hEwIMiw" resolve="getPresentation" />
</node>
</node>
</node>
</node>
</node>
</node>
<node concept="2OqwBi" id="2O9ahh6ojxN" role="2$JKZa">
<node concept="37vLTw" id="2O9ahh6ojiH" role="2Oq$k0">
<ref role="3cqZAo" node="2O9ahh6o8KR" resolve="it" />
</node>
<node concept="liA8E" id="2O9ahh6omjU" role="2OqNvi">
<ref role="37wK5l" to="33ny:~Iterator.hasNext():boolean" resolve="hasNext" />
</node>
</node>
</node>
<node concept="3clFbJ" id="2O9ahh6pedL" role="3cqZAp">
<property role="TyiWL" value="true" />
<node concept="3clFbS" id="2O9ahh6pedM" role="3clFbx">
<node concept="3clFbF" id="2O9ahh6pedN" role="3cqZAp">
<node concept="2OqwBi" id="2O9ahh6pedO" role="3clFbG">
<node concept="37vLTw" id="2O9ahh6pedP" role="2Oq$k0">
<ref role="3cqZAo" node="48ZGLP7q4g6" resolve="s" />
</node>
<node concept="liA8E" id="2O9ahh6pedQ" role="2OqNvi">
<ref role="37wK5l" to="wyt6:~StringBuilder.append(char):java.lang.StringBuilder" resolve="append" />
<node concept="1Xhbcc" id="2O9ahh6pedR" role="37wK5m">
<property role="1XhdNS" value=")" />
</node>
</node>
</node>
</node>
</node>
<node concept="37vLTw" id="2O9ahh6pedS" role="3clFbw">
<ref role="3cqZAo" node="2O9ahh6oX5A" resolve="isMany" />
</node>
</node>
<node concept="3clFbF" id="2O9ahh6nS_X" role="3cqZAp">
<node concept="2OqwBi" id="2O9ahh6nTYO" role="3clFbG">
<node concept="37vLTw" id="2O9ahh6nS_V" role="2Oq$k0">
<ref role="3cqZAo" node="48ZGLP7q4g6" resolve="s" />
</node>
<node concept="liA8E" id="2O9ahh6nVDm" role="2OqNvi">
<ref role="37wK5l" to="wyt6:~StringBuilder.append(java.lang.String):java.lang.StringBuilder" resolve="append" />
<node concept="Xl_RD" id="2O9ahh6o3Ol" role="37wK5m">
<property role="Xl_RC" value=" ⇒ " />
</node>
</node>
</node>
</node>
</node>
<node concept="3fqX7Q" id="2O9ahh6nx9J" role="3clFbw">
<node concept="2OqwBi" id="2O9ahh6nx9L" role="3fr31v">
<node concept="2OqwBi" id="2O9ahh6nx9M" role="2Oq$k0">
<node concept="13iPFW" id="2O9ahh6nx9N" role="2Oq$k0" />
<node concept="3Tsc0h" id="2O9ahh6nx9O" role="2OqNvi">
<ref role="3TtcxE" to="8tt8:2O9ahh6mHw4" resolve="constraints" />
</node>
</node>
<node concept="1v1jN8" id="2O9ahh6nx9P" role="2OqNvi" />
</node>
</node>
</node>
<node concept="3clFbH" id="2O9ahh6nKiT" role="3cqZAp" />
<node concept="3clFbF" id="48ZGLP7ruOx" role="3cqZAp">
<node concept="2OqwBi" id="48ZGLP7rwht" role="3clFbG">
<node concept="37vLTw" id="48ZGLP7ruOv" role="2Oq$k0">
@ -440,29 +673,6 @@
</node>
</node>
</node>
<node concept="3clFbH" id="48ZGLP7rD6_" role="3cqZAp" />
<node concept="1X3_iC" id="48ZGLP7q4aw" role="lGtFl">
<property role="3V$3am" value="statement" />
<property role="3V$3ak" value="f3061a53-9226-4cc5-a443-f952ceaf5816/1068580123136/1068581517665" />
<node concept="3clFbF" id="12dHl3ZCFqk" role="8Wnug">
<node concept="3cpWs3" id="12dHl3ZCFWS" role="3clFbG">
<node concept="2EnYce" id="12dHl3ZCJ3U" role="3uHU7w">
<node concept="2OqwBi" id="12dHl3ZCG91" role="2Oq$k0">
<node concept="13iPFW" id="12dHl3ZCFXg" role="2Oq$k0" />
<node concept="3TrEf2" id="12dHl3ZCGjV" role="2OqNvi">
<ref role="3Tt5mk" to="8tt8:12dHl3ZCFaI" resolve="type" />
</node>
</node>
<node concept="2qgKlT" id="12dHl3ZCJqZ" role="2OqNvi">
<ref role="37wK5l" to="tpcu:hEwIMiw" resolve="getPresentation" />
</node>
</node>
<node concept="Xl_RD" id="12dHl3ZCFqj" role="3uHU7B">
<property role="Xl_RC" value="forall." />
</node>
</node>
</node>
</node>
</node>
<node concept="17QB3L" id="12dHl3ZCFiy" role="3clF45" />
</node>

View File

@ -120,6 +120,9 @@
<concept id="1081516740877" name="jetbrains.mps.baseLanguage.structure.NotExpression" flags="nn" index="3fqX7Q">
<child id="1081516765348" name="expression" index="3fr31v" />
</concept>
<concept id="1160998861373" name="jetbrains.mps.baseLanguage.structure.AssertStatement" flags="nn" index="1gVbGN">
<child id="1160998896846" name="condition" index="1gVkn0" />
</concept>
<concept id="1204053956946" name="jetbrains.mps.baseLanguage.structure.IMethodCall" flags="ng" index="1ndlxa">
<reference id="1068499141037" name="baseMethodDeclaration" index="37wK5l" />
<child id="1068499141038" name="actualArgument" index="37wK5m" />
@ -143,6 +146,12 @@
<concept id="1178549954367" name="jetbrains.mps.baseLanguage.structure.IVisible" flags="ng" index="1B3ioH">
<child id="1178549979242" name="visibility" index="1B3o_S" />
</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="1163668896201" name="jetbrains.mps.baseLanguage.structure.TernaryOperatorExpression" flags="nn" index="3K4zz7">
<child id="1163668914799" name="condition" index="3K4Cdx" />
<child id="1163668922816" name="ifTrue" index="3K4E3e" />
@ -164,6 +173,7 @@
<language id="3f4bc5f5-c6c1-4a28-8b10-c83066ffa4a1" name="jetbrains.mps.lang.constraints">
<concept id="6702802731807420587" name="jetbrains.mps.lang.constraints.structure.ConstraintFunction_CanBeAParent" flags="ig" index="9SLcT" />
<concept id="8966504967485224688" name="jetbrains.mps.lang.constraints.structure.ConstraintFunctionParameter_contextNode" flags="nn" index="2rP1CM" />
<concept id="4303308395523096213" name="jetbrains.mps.lang.constraints.structure.ConstraintFunctionParameter_childConcept" flags="ng" index="2DD5aU" />
<concept id="1147467115080" name="jetbrains.mps.lang.constraints.structure.NodePropertyConstraint" flags="ng" index="EnEH3">
<reference id="1147467295099" name="applicableProperty" index="EomxK" />
<child id="1147468630220" name="propertyGetter" index="EtsB7" />
@ -174,6 +184,7 @@
<concept id="6738154313879680265" name="jetbrains.mps.lang.constraints.structure.ConstraintFunctionParameter_childNode" flags="nn" index="2H4GUG" />
<concept id="1212096972063" name="jetbrains.mps.lang.constraints.structure.ConstraintFunction_PropertyValidator" flags="in" index="QB0g5" />
<concept id="5564765827938091039" name="jetbrains.mps.lang.constraints.structure.ConstraintFunction_ReferentSearchScope_Scope" flags="ig" index="3dgokm" />
<concept id="1163200647017" name="jetbrains.mps.lang.constraints.structure.ConstraintFunctionParameter_referenceNode" flags="nn" index="3kakTB" />
<concept id="1213093968558" name="jetbrains.mps.lang.constraints.structure.ConceptConstraints" flags="ng" index="1M2fIO">
<reference id="1213093996982" name="concept" index="1M2myG" />
<child id="6702802731807532712" name="canBeParent" index="9SGkU" />
@ -210,11 +221,15 @@
<concept id="1145383075378" name="jetbrains.mps.lang.smodel.structure.SNodeListType" flags="in" index="2I9FWS">
<reference id="1145383142433" name="elementConcept" index="2I9WkF" />
</concept>
<concept id="1171305280644" name="jetbrains.mps.lang.smodel.structure.Node_GetDescendantsOperation" flags="nn" index="2Rf3mk" />
<concept id="1145567426890" name="jetbrains.mps.lang.smodel.structure.SNodeListCreator" flags="nn" index="2T8Vx0">
<child id="1145567471833" name="createdType" index="2T96Bj" />
</concept>
<concept id="1171407110247" name="jetbrains.mps.lang.smodel.structure.Node_GetAncestorOperation" flags="nn" index="2Xjw5R" />
<concept id="1143511969223" name="jetbrains.mps.lang.smodel.structure.Node_GetPrevSiblingOperation" flags="nn" index="YBYNd" />
<concept id="1180031783296" name="jetbrains.mps.lang.smodel.structure.Concept_IsSubConceptOfOperation" flags="nn" index="2Zo12i">
<child id="1180031783297" name="conceptArgument" index="2Zo12j" />
</concept>
<concept id="1171500988903" name="jetbrains.mps.lang.smodel.structure.Node_GetChildrenOperation" flags="nn" index="32TBzR" />
<concept id="5168775467716640652" name="jetbrains.mps.lang.smodel.structure.OperationParm_LinkQualifier" flags="ng" index="1aIX9F">
<child id="5168775467716640653" name="linkQualifier" index="1aIX9E" />
@ -234,6 +249,7 @@
<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="1144100932627" name="jetbrains.mps.lang.smodel.structure.OperationParm_Inclusion" flags="ng" index="1xIGOp" />
<concept id="1144101972840" name="jetbrains.mps.lang.smodel.structure.OperationParm_Concept" flags="ng" index="1xMEDy">
<child id="1207343664468" name="conceptArgument" index="ri$Ld" />
</concept>
@ -252,22 +268,37 @@
<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>
</language>
<language id="ceab5195-25ea-4f22-9b92-103b95ca8c0c" name="jetbrains.mps.lang.core">
<concept id="1133920641626" name="jetbrains.mps.lang.core.structure.BaseConcept" flags="ng" index="2VYdi">
<property id="1193676396447" name="virtualPackage" index="3GE5qa" />
<child id="5169995583184591170" name="smodelAttribute" index="lGtFl" />
</concept>
<concept id="1169194658468" name="jetbrains.mps.lang.core.structure.INamedConcept" flags="ng" index="TrEIO">
<property id="1169194664001" name="name" index="TrG5h" />
</concept>
<concept id="709746936026466394" name="jetbrains.mps.lang.core.structure.ChildAttribute" flags="ng" index="3VBwX9">
<property id="709746936026609031" name="linkId" index="3V$3ak" />
<property id="709746936026609029" name="role_DebugInfo" index="3V$3am" />
</concept>
<concept id="4452961908202556907" name="jetbrains.mps.lang.core.structure.BaseCommentAttribute" flags="ng" index="1X3_iC">
<child id="3078666699043039389" name="commentedNode" index="8Wnug" />
</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="1176906603202" name="jetbrains.mps.baseLanguage.collections.structure.BinaryOperation" flags="nn" index="56pJg">
<child id="1176906787974" name="rightExpression" index="576Qk" />
</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="1176923520476" name="jetbrains.mps.baseLanguage.collections.structure.ExcludeOperation" flags="nn" index="66VNe" />
<concept id="1226511727824" name="jetbrains.mps.baseLanguage.collections.structure.SetType" flags="in" index="2hMVRd">
<child id="1226511765987" name="elementType" index="2hN53Y" />
</concept>
@ -286,7 +317,9 @@
<child id="1237721435807" name="elementType" index="HW$YZ" />
</concept>
<concept id="1203518072036" name="jetbrains.mps.baseLanguage.collections.structure.SmartClosureParameterDeclaration" flags="ig" index="Rh6nW" />
<concept id="1160612413312" name="jetbrains.mps.baseLanguage.collections.structure.AddElementOperation" flags="nn" index="TSZUe" />
<concept id="1160666733551" name="jetbrains.mps.baseLanguage.collections.structure.AddAllElementsOperation" flags="nn" index="X8dFx" />
<concept id="1165530316231" name="jetbrains.mps.baseLanguage.collections.structure.IsEmptyOperation" flags="nn" index="1v1jN8" />
<concept id="1202120902084" name="jetbrains.mps.baseLanguage.collections.structure.WhereOperation" flags="nn" index="3zZkjj" />
<concept id="1202128969694" name="jetbrains.mps.baseLanguage.collections.structure.SelectOperation" flags="nn" index="3$u5V9" />
<concept id="1172254888721" name="jetbrains.mps.baseLanguage.collections.structure.ContainsOperation" flags="nn" index="3JPx81" />
@ -335,6 +368,66 @@
<node concept="312cEu" id="7_zMfd$r3on">
<property role="3GE5qa" value="expr" />
<property role="TrG5h" value="ScopeUtil" />
<node concept="2tJIrI" id="2O9ahh6u6nc" role="jymVt" />
<node concept="2YIFZL" id="2O9ahh6u0KZ" role="jymVt">
<property role="TrG5h" value="toScope" />
<node concept="3clFbS" id="2O9ahh6u0L2" role="3clF47">
<node concept="3cpWs6" id="2O9ahh6u5rD" role="3cqZAp">
<node concept="2ShNRf" id="2O9ahh6u5rE" role="3cqZAk">
<node concept="YeOm9" id="2O9ahh6u5rF" role="2ShVmc">
<node concept="1Y3b0j" id="2O9ahh6u5rG" role="YeSDq">
<property role="2bfB8j" value="true" />
<ref role="37wK5l" to="o8zo:4IP40Bi3e_T" resolve="ListScope" />
<ref role="1Y3XeK" to="o8zo:4IP40Bi3e_R" resolve="ListScope" />
<node concept="3Tm1VV" id="2O9ahh6u5rH" role="1B3o_S" />
<node concept="3clFb_" id="2O9ahh6u5rI" role="jymVt">
<property role="1EzhhJ" value="false" />
<property role="TrG5h" value="getName" />
<node concept="17QB3L" id="2O9ahh6u5rJ" role="3clF45" />
<node concept="3Tm1VV" id="2O9ahh6u5rK" role="1B3o_S" />
<node concept="37vLTG" id="2O9ahh6u5rL" role="3clF46">
<property role="TrG5h" value="named" />
<node concept="3Tqbb2" id="2O9ahh6u5rM" role="1tU5fm" />
</node>
<node concept="3clFbS" id="2O9ahh6u5rN" role="3clF47">
<node concept="3clFbF" id="2O9ahh6u5rO" role="3cqZAp">
<node concept="2OqwBi" id="2O9ahh6u5rP" role="3clFbG">
<node concept="1PxgMI" id="2O9ahh6u5rQ" role="2Oq$k0">
<node concept="chp4Y" id="2O9ahh6u5rR" role="3oSUPX">
<ref role="cht4Q" to="tpck:h0TrEE$" resolve="INamedConcept" />
</node>
<node concept="37vLTw" id="2O9ahh6u5rS" role="1m5AlR">
<ref role="3cqZAo" node="2O9ahh6u5rL" resolve="named" />
</node>
</node>
<node concept="3TrcHB" id="2O9ahh6u5rT" role="2OqNvi">
<ref role="3TsBF5" to="tpck:h0TrG11" resolve="name" />
</node>
</node>
</node>
</node>
</node>
<node concept="37vLTw" id="2O9ahh6u5RZ" role="37wK5m">
<ref role="3cqZAo" node="2O9ahh6u58Y" resolve="ns" />
</node>
</node>
</node>
</node>
</node>
</node>
<node concept="3Tm1VV" id="2O9ahh6tY0A" role="1B3o_S" />
<node concept="3uibUv" id="2O9ahh6u0FU" role="3clF45">
<ref role="3uigEE" to="o8zo:3fifI_xCtN$" resolve="Scope" />
</node>
<node concept="37vLTG" id="2O9ahh6u58Y" role="3clF46">
<property role="TrG5h" value="ns" />
<node concept="A3Dl8" id="2O9ahh6u58W" role="1tU5fm">
<node concept="3Tqbb2" id="2O9ahh6u5bZ" role="A3Ik2">
<ref role="ehGHo" to="tpck:h0TrEE$" resolve="INamedConcept" />
</node>
</node>
</node>
</node>
<node concept="2tJIrI" id="7_zMfd$r3oL" role="jymVt" />
<node concept="2YIFZL" id="7_zMfd$r3p6" role="jymVt">
<property role="TrG5h" value="varScope" />
@ -641,6 +734,101 @@
</node>
</node>
</node>
<node concept="3clFbH" id="2O9ahh6xpHx" role="3cqZAp" />
<node concept="3cpWs8" id="2O9ahh6xLXX" role="3cqZAp">
<node concept="3cpWsn" id="2O9ahh6xLY0" role="3cpWs9">
<property role="TrG5h" value="classes" />
<node concept="2I9FWS" id="2O9ahh6xLXV" role="1tU5fm">
<ref role="2I9WkF" to="8tt8:2O9ahh6mHnA" resolve="Typeclass" />
</node>
<node concept="1rXfSq" id="2O9ahh6xMoS" role="33vP2m">
<ref role="37wK5l" node="2O9ahh6xGPJ" resolve="getTypeclasses" />
<node concept="37vLTw" id="2O9ahh6xMtY" role="37wK5m">
<ref role="3cqZAo" node="7_zMfd$r3s7" resolve="contextNode" />
</node>
</node>
</node>
</node>
<node concept="3cpWs8" id="2O9ahh6ytmd" role="3cqZAp">
<node concept="3cpWsn" id="2O9ahh6ytmg" role="3cpWs9">
<property role="TrG5h" value="allProtos" />
<node concept="2I9FWS" id="2O9ahh6ytmb" role="1tU5fm">
<ref role="2I9WkF" to="8tt8:7_8aRkgDGPo" resolve="Var" />
</node>
<node concept="2ShNRf" id="2O9ahh6yu4C" role="33vP2m">
<node concept="2T8Vx0" id="2O9ahh6yuwE" role="2ShVmc">
<node concept="2I9FWS" id="2O9ahh6yuwG" role="2T96Bj">
<ref role="2I9WkF" to="8tt8:7_8aRkgDGPo" resolve="Var" />
</node>
</node>
</node>
</node>
</node>
<node concept="1DcWWT" id="2O9ahh6yvpn" role="3cqZAp">
<node concept="3clFbS" id="2O9ahh6yvpp" role="2LFqv$">
<node concept="3clFbF" id="2O9ahh6yytM" role="3cqZAp">
<node concept="2OqwBi" id="2O9ahh6y$f7" role="3clFbG">
<node concept="37vLTw" id="2O9ahh6yytK" role="2Oq$k0">
<ref role="3cqZAo" node="2O9ahh6ytmg" resolve="allProtos" />
</node>
<node concept="X8dFx" id="2O9ahh6yDz1" role="2OqNvi">
<node concept="2OqwBi" id="2O9ahh6yPmF" role="25WWJ7">
<node concept="2OqwBi" id="2O9ahh6yETN" role="2Oq$k0">
<node concept="37vLTw" id="2O9ahh6yE4t" role="2Oq$k0">
<ref role="3cqZAo" node="2O9ahh6yvpq" resolve="tc" />
</node>
<node concept="3Tsc0h" id="2O9ahh6yMPM" role="2OqNvi">
<ref role="3TtcxE" to="8tt8:2O9ahh6mHnJ" resolve="members" />
</node>
</node>
<node concept="3$u5V9" id="2O9ahh6yVXm" role="2OqNvi">
<node concept="1bVj0M" id="2O9ahh6yVXo" role="23t8la">
<node concept="3clFbS" id="2O9ahh6yVXp" role="1bW5cS">
<node concept="3clFbF" id="2O9ahh6yYwg" role="3cqZAp">
<node concept="2OqwBi" id="2O9ahh6z0gj" role="3clFbG">
<node concept="37vLTw" id="2O9ahh6yYwf" role="2Oq$k0">
<ref role="3cqZAo" node="2O9ahh6yVXq" resolve="it" />
</node>
<node concept="3TrEf2" id="2O9ahh6z2CE" role="2OqNvi">
<ref role="3Tt5mk" to="8tt8:2O9ahh6mHnH" resolve="annVar" />
</node>
</node>
</node>
</node>
<node concept="Rh6nW" id="2O9ahh6yVXq" role="1bW2Oz">
<property role="TrG5h" value="it" />
<node concept="2jxLKc" id="2O9ahh6yVXr" role="1tU5fm" />
</node>
</node>
</node>
</node>
</node>
</node>
</node>
</node>
<node concept="3cpWsn" id="2O9ahh6yvpq" role="1Duv9x">
<property role="TrG5h" value="tc" />
<node concept="3Tqbb2" id="2O9ahh6ywdO" role="1tU5fm">
<ref role="ehGHo" to="8tt8:2O9ahh6mHnA" resolve="Typeclass" />
</node>
</node>
<node concept="37vLTw" id="2O9ahh6ywJ6" role="1DdaDG">
<ref role="3cqZAo" node="2O9ahh6xLY0" resolve="classes" />
</node>
</node>
<node concept="3clFbF" id="2O9ahh6HBmu" role="3cqZAp">
<node concept="2OqwBi" id="2O9ahh6HD3u" role="3clFbG">
<node concept="37vLTw" id="2O9ahh6HBms" role="2Oq$k0">
<ref role="3cqZAo" node="3TFdEPZgA8D" resolve="collector" />
</node>
<node concept="liA8E" id="2O9ahh6HE4g" role="2OqNvi">
<ref role="37wK5l" node="3TFdEPZgi0y" resolve="collect" />
<node concept="37vLTw" id="2O9ahh6HE7C" role="37wK5m">
<ref role="3cqZAo" node="2O9ahh6ytmg" resolve="allProtos" />
</node>
</node>
</node>
</node>
<node concept="3clFbH" id="3TFdEPZgVsh" role="3cqZAp" />
<node concept="3cpWs6" id="3TFdEPZgUb9" role="3cqZAp">
<node concept="2OqwBi" id="3TFdEPZgUK6" role="3cqZAk">
@ -976,7 +1164,7 @@
<node concept="3clFbS" id="1IKbs5XF7jo" role="3clFbx">
<node concept="3SKdUt" id="1IKbs5XFdJy" role="3cqZAp">
<node concept="3SKdUq" id="1IKbs5XFdJz" role="3SKWNk">
<property role="3SKdUp" value="todo: log warning? incorrect/incomplete type, expected fun" />
<property role="3SKdUp" value="fixme: log warning? incorrect/incomplete type, expected fun. but, seems it's ok." />
</node>
</node>
<node concept="3zACq4" id="1IKbs5XF$fm" role="3cqZAp" />
@ -1099,6 +1287,104 @@
<node concept="3clFbH" id="1IKbs5XEBPv" role="3cqZAp" />
</node>
</node>
<node concept="1pnPoh" id="2O9ahh6v0OL" role="1_3QMm">
<node concept="3gn64h" id="2O9ahh6v0Ro" role="1pnPq6">
<ref role="3gnhBz" to="8tt8:2O9ahh6mHnO" resolve="Instance" />
</node>
<node concept="3clFbS" id="2O9ahh6v0OP" role="1pnPq1">
<node concept="3clFbF" id="2O9ahh6v0Sm" role="3cqZAp">
<node concept="2OqwBi" id="2O9ahh6v1gJ" role="3clFbG">
<node concept="37vLTw" id="2O9ahh6v0Sl" role="2Oq$k0">
<ref role="3cqZAo" node="48ZGLP8_ECo" resolve="collector" />
</node>
<node concept="liA8E" id="2O9ahh6v1On" role="2OqNvi">
<ref role="37wK5l" node="3TFdEPZgi0y" resolve="collect" />
<node concept="2OqwBi" id="2O9ahh6vbMh" role="37wK5m">
<node concept="2OqwBi" id="2O9ahh6v7ut" role="2Oq$k0">
<node concept="1PxgMI" id="2O9ahh6v7jQ" role="2Oq$k0">
<node concept="chp4Y" id="2O9ahh6v7jZ" role="3oSUPX">
<ref role="cht4Q" to="8tt8:2O9ahh6mHnO" resolve="Instance" />
</node>
<node concept="37vLTw" id="2O9ahh6v21s" role="1m5AlR">
<ref role="3cqZAo" node="48ZGLP8$kYr" resolve="current" />
</node>
</node>
<node concept="3TrEf2" id="2O9ahh6v9GN" role="2OqNvi">
<ref role="3Tt5mk" to="8tt8:2O9ahh6mHnP" resolve="type" />
</node>
</node>
<node concept="32TBzR" id="2O9ahh6ve0B" role="2OqNvi">
<node concept="1aIX9F" id="2O9ahh6vgBU" role="1xVPHs">
<node concept="26LbJo" id="2O9ahh6vgPn" role="1aIX9E">
<ref role="26LbJp" to="8tt8:48ZGLP7q1Qc" resolve="typeVars" />
</node>
</node>
</node>
</node>
</node>
</node>
</node>
<node concept="3clFbH" id="2O9ahh6vhRp" role="3cqZAp" />
</node>
</node>
<node concept="1pnPoh" id="2O9ahh6vjXq" role="1_3QMm">
<node concept="3gn64h" id="2O9ahh6vkww" role="1pnPq6">
<ref role="3gnhBz" to="8tt8:2O9ahh6mHnA" resolve="Typeclass" />
</node>
<node concept="3clFbS" id="2O9ahh6vjXs" role="1pnPq1">
<node concept="3cpWs8" id="2O9ahh6vAdU" role="3cqZAp">
<node concept="3cpWsn" id="2O9ahh6vAdX" role="3cpWs9">
<property role="TrG5h" value="tv" />
<node concept="2I9FWS" id="2O9ahh6vAdS" role="1tU5fm">
<ref role="2I9WkF" to="8tt8:3g9UT2j9I06" resolve="VarType" />
</node>
<node concept="2ShNRf" id="2O9ahh6vAeL" role="33vP2m">
<node concept="2T8Vx0" id="2O9ahh6vAmp" role="2ShVmc">
<node concept="2I9FWS" id="2O9ahh6vAmr" role="2T96Bj">
<ref role="2I9WkF" to="8tt8:3g9UT2j9I06" resolve="VarType" />
</node>
</node>
</node>
</node>
</node>
<node concept="3clFbF" id="2O9ahh6vAnh" role="3cqZAp">
<node concept="2OqwBi" id="2O9ahh6vC9V" role="3clFbG">
<node concept="37vLTw" id="2O9ahh6vAnf" role="2Oq$k0">
<ref role="3cqZAo" node="2O9ahh6vAdX" resolve="tv" />
</node>
<node concept="TSZUe" id="2O9ahh6vGQH" role="2OqNvi">
<node concept="2OqwBi" id="2O9ahh6vHGb" role="25WWJ7">
<node concept="1PxgMI" id="2O9ahh6vHn6" role="2Oq$k0">
<node concept="chp4Y" id="2O9ahh6vHnf" role="3oSUPX">
<ref role="cht4Q" to="8tt8:2O9ahh6mHnA" resolve="Typeclass" />
</node>
<node concept="37vLTw" id="2O9ahh6vH2V" role="1m5AlR">
<ref role="3cqZAo" node="48ZGLP8$kYr" resolve="current" />
</node>
</node>
<node concept="3TrEf2" id="2O9ahh6vKeT" role="2OqNvi">
<ref role="3Tt5mk" to="8tt8:2O9ahh6mHnL" resolve="typeVar" />
</node>
</node>
</node>
</node>
</node>
<node concept="3clFbF" id="2O9ahh6vK_4" role="3cqZAp">
<node concept="2OqwBi" id="2O9ahh6vKFx" role="3clFbG">
<node concept="37vLTw" id="2O9ahh6vK_2" role="2Oq$k0">
<ref role="3cqZAo" node="48ZGLP8_ECo" resolve="collector" />
</node>
<node concept="liA8E" id="2O9ahh6vLf9" role="2OqNvi">
<ref role="37wK5l" node="3TFdEPZgi0y" resolve="collect" />
<node concept="37vLTw" id="2O9ahh6vLfD" role="37wK5m">
<ref role="3cqZAo" node="2O9ahh6vAdX" resolve="tv" />
</node>
</node>
</node>
</node>
<node concept="3clFbH" id="2O9ahh6vLsq" role="3cqZAp" />
</node>
</node>
</node>
<node concept="3clFbF" id="48ZGLP8$l09" role="3cqZAp">
<node concept="37vLTI" id="48ZGLP8$l0a" role="3clFbG">
@ -1123,6 +1409,12 @@
<node concept="3gn64h" id="1IKbs5XEBhj" role="3gmYPZ">
<ref role="3gnhBz" to="8tt8:JqEP$8fvqm" resolve="AnnExpr" />
</node>
<node concept="3gn64h" id="2O9ahh6viFV" role="3gmYPZ">
<ref role="3gnhBz" to="8tt8:2O9ahh6mHnO" resolve="Instance" />
</node>
<node concept="3gn64h" id="2O9ahh6vNOY" role="3gmYPZ">
<ref role="3gnhBz" to="8tt8:2O9ahh6mHnA" resolve="Typeclass" />
</node>
</node>
</node>
</node>
@ -1157,6 +1449,43 @@
<node concept="3Tqbb2" id="48ZGLP8$g68" role="1tU5fm" />
</node>
</node>
<node concept="2tJIrI" id="2O9ahh6xsZA" role="jymVt" />
<node concept="2YIFZL" id="2O9ahh6xGPJ" role="jymVt">
<property role="TrG5h" value="getTypeclasses" />
<node concept="3clFbS" id="2O9ahh6xGPM" role="3clF47">
<node concept="3clFbF" id="2O9ahh6xJX7" role="3cqZAp">
<node concept="2OqwBi" id="2O9ahh6vSE6" role="3clFbG">
<node concept="2OqwBi" id="2O9ahh6vPUS" role="2Oq$k0">
<node concept="37vLTw" id="2O9ahh6xKmz" role="2Oq$k0">
<ref role="3cqZAo" node="2O9ahh6xJo8" resolve="contextNode" />
</node>
<node concept="2Xjw5R" id="2O9ahh6vQnA" role="2OqNvi">
<node concept="1xMEDy" id="2O9ahh6vQnC" role="1xVPHs">
<node concept="chp4Y" id="2O9ahh6vQtQ" role="ri$Ld">
<ref role="cht4Q" to="8tt8:7_8aRkgDGQC" resolve="Doc" />
</node>
</node>
</node>
</node>
<node concept="2Rf3mk" id="2O9ahh6vU1a" role="2OqNvi">
<node concept="1xMEDy" id="2O9ahh6vU1c" role="1xVPHs">
<node concept="chp4Y" id="2O9ahh6vUjO" role="ri$Ld">
<ref role="cht4Q" to="8tt8:2O9ahh6mHnA" resolve="Typeclass" />
</node>
</node>
</node>
</node>
</node>
</node>
<node concept="3Tm1VV" id="2O9ahh6xy42" role="1B3o_S" />
<node concept="2I9FWS" id="2O9ahh6xGJf" role="3clF45">
<ref role="2I9WkF" to="8tt8:2O9ahh6mHnA" resolve="Typeclass" />
</node>
<node concept="37vLTG" id="2O9ahh6xJo8" role="3clF46">
<property role="TrG5h" value="contextNode" />
<node concept="3Tqbb2" id="2O9ahh6xJo7" role="1tU5fm" />
</node>
</node>
<node concept="2tJIrI" id="48ZGLP8Bcyq" role="jymVt" />
<node concept="2YIFZL" id="48ZGLP8Blaa" role="jymVt">
<property role="TrG5h" value="getForallTypeVars" />
@ -1395,40 +1724,53 @@
</node>
<node concept="3Tm6S6" id="3TFdEPZgIFg" role="1B3o_S" />
<node concept="3clFbS" id="3TFdEPZgIFh" role="3clF47">
<node concept="3cpWs6" id="3TFdEPZgTEW" role="3cqZAp">
<node concept="2ShNRf" id="3TFdEPZgTEX" role="3cqZAk">
<node concept="YeOm9" id="3TFdEPZgTEY" role="2ShVmc">
<node concept="1Y3b0j" id="3TFdEPZgTEZ" role="YeSDq">
<property role="2bfB8j" value="true" />
<ref role="37wK5l" to="o8zo:4IP40Bi3e_T" resolve="ListScope" />
<ref role="1Y3XeK" to="o8zo:4IP40Bi3e_R" resolve="ListScope" />
<node concept="37vLTw" id="3TFdEPZgTF0" role="37wK5m">
<ref role="3cqZAo" node="3TFdEPZghTH" resolve="allBoundVars" />
</node>
<node concept="3Tm1VV" id="3TFdEPZgTF1" role="1B3o_S" />
<node concept="3clFb_" id="3TFdEPZgTF2" role="jymVt">
<property role="1EzhhJ" value="false" />
<property role="TrG5h" value="getName" />
<node concept="17QB3L" id="3TFdEPZgTF3" role="3clF45" />
<node concept="3Tm1VV" id="3TFdEPZgTF4" role="1B3o_S" />
<node concept="37vLTG" id="3TFdEPZgTF5" role="3clF46">
<property role="TrG5h" value="child" />
<node concept="3Tqbb2" id="3TFdEPZgTF6" role="1tU5fm" />
<node concept="3cpWs6" id="2O9ahh6uaVO" role="3cqZAp">
<node concept="2YIFZM" id="2O9ahh6uhuj" role="3cqZAk">
<ref role="37wK5l" node="2O9ahh6u0KZ" resolve="toScope" />
<ref role="1Pybhc" node="7_zMfd$r3on" resolve="ScopeUtil" />
<node concept="37vLTw" id="2O9ahh6ukQA" role="37wK5m">
<ref role="3cqZAo" node="3TFdEPZghTH" resolve="allBoundVars" />
</node>
</node>
</node>
<node concept="1X3_iC" id="2O9ahh6uvL7" role="lGtFl">
<property role="3V$3am" value="statement" />
<property role="3V$3ak" value="f3061a53-9226-4cc5-a443-f952ceaf5816/1068580123136/1068581517665" />
<node concept="3cpWs6" id="3TFdEPZgTEW" role="8Wnug">
<node concept="2ShNRf" id="3TFdEPZgTEX" role="3cqZAk">
<node concept="YeOm9" id="3TFdEPZgTEY" role="2ShVmc">
<node concept="1Y3b0j" id="3TFdEPZgTEZ" role="YeSDq">
<property role="2bfB8j" value="true" />
<ref role="37wK5l" to="o8zo:4IP40Bi3e_T" resolve="ListScope" />
<ref role="1Y3XeK" to="o8zo:4IP40Bi3e_R" resolve="ListScope" />
<node concept="37vLTw" id="3TFdEPZgTF0" role="37wK5m">
<ref role="3cqZAo" node="3TFdEPZghTH" resolve="allBoundVars" />
</node>
<node concept="3clFbS" id="3TFdEPZgTF7" role="3clF47">
<node concept="3clFbF" id="3TFdEPZgTF8" role="3cqZAp">
<node concept="2OqwBi" id="3TFdEPZgTF9" role="3clFbG">
<node concept="1PxgMI" id="3TFdEPZgTFa" role="2Oq$k0">
<node concept="chp4Y" id="3TFdEPZgTFb" role="3oSUPX">
<ref role="cht4Q" to="tpck:h0TrEE$" resolve="INamedConcept" />
<node concept="3Tm1VV" id="3TFdEPZgTF1" role="1B3o_S" />
<node concept="3clFb_" id="3TFdEPZgTF2" role="jymVt">
<property role="1EzhhJ" value="false" />
<property role="TrG5h" value="getName" />
<node concept="17QB3L" id="3TFdEPZgTF3" role="3clF45" />
<node concept="3Tm1VV" id="3TFdEPZgTF4" role="1B3o_S" />
<node concept="37vLTG" id="3TFdEPZgTF5" role="3clF46">
<property role="TrG5h" value="child" />
<node concept="3Tqbb2" id="3TFdEPZgTF6" role="1tU5fm" />
</node>
<node concept="3clFbS" id="3TFdEPZgTF7" role="3clF47">
<node concept="3clFbF" id="3TFdEPZgTF8" role="3cqZAp">
<node concept="2OqwBi" id="3TFdEPZgTF9" role="3clFbG">
<node concept="1PxgMI" id="3TFdEPZgTFa" role="2Oq$k0">
<node concept="chp4Y" id="3TFdEPZgTFb" role="3oSUPX">
<ref role="cht4Q" to="tpck:h0TrEE$" resolve="INamedConcept" />
</node>
<node concept="37vLTw" id="3TFdEPZgTFc" role="1m5AlR">
<ref role="3cqZAo" node="3TFdEPZgTF5" resolve="child" />
</node>
</node>
<node concept="37vLTw" id="3TFdEPZgTFc" role="1m5AlR">
<ref role="3cqZAo" node="3TFdEPZgTF5" resolve="child" />
<node concept="3TrcHB" id="3TFdEPZgTFd" role="2OqNvi">
<ref role="3TsBF5" to="tpck:h0TrG11" resolve="name" />
</node>
</node>
<node concept="3TrcHB" id="3TFdEPZgTFd" role="2OqNvi">
<ref role="3TsBF5" to="tpck:h0TrG11" resolve="name" />
</node>
</node>
</node>
</node>
@ -1524,5 +1866,322 @@
</node>
</node>
</node>
<node concept="1M2fIO" id="2O9ahh6pIS9">
<property role="3GE5qa" value="clause" />
<ref role="1M2myG" to="8tt8:2O9ahh6mHnO" resolve="Instance" />
<node concept="9SLcT" id="2O9ahh6pIZv" role="9SGkU">
<node concept="3clFbS" id="2O9ahh6pIZw" role="2VODD2">
<node concept="3SKdUt" id="2O9ahh6q2FR" role="3cqZAp">
<node concept="3SKdUq" id="2O9ahh6q2FT" role="3SKWNk">
<property role="3SKdUp" value="Check only for 'type' child" />
</node>
</node>
<node concept="3clFbJ" id="2O9ahh6pKop" role="3cqZAp">
<node concept="2OqwBi" id="2O9ahh6pKOZ" role="3clFbw">
<node concept="2DD5aU" id="2O9ahh6pKvQ" role="2Oq$k0" />
<node concept="2Zo12i" id="2O9ahh6pLcy" role="2OqNvi">
<node concept="chp4Y" id="2O9ahh6pLmL" role="2Zo12j">
<ref role="cht4Q" to="8tt8:12dHl3ZCxTW" resolve="ForallType" />
</node>
</node>
</node>
<node concept="3clFbS" id="2O9ahh6pKor" role="3clFbx">
<node concept="3SKdUt" id="2O9ahh6q5FM" role="3cqZAp">
<node concept="3SKdUq" id="2O9ahh6q5FO" role="3SKWNk">
<property role="3SKdUp" value="Allow only monotypes (simple types without foralls inside)" />
</node>
</node>
<node concept="3cpWs6" id="2O9ahh6pLx4" role="3cqZAp">
<node concept="2OqwBi" id="2O9ahh6pUv$" role="3cqZAk">
<node concept="2OqwBi" id="2O9ahh6pPWW" role="2Oq$k0">
<node concept="2OqwBi" id="2O9ahh6pM9O" role="2Oq$k0">
<node concept="1PxgMI" id="2O9ahh6pLS3" role="2Oq$k0">
<node concept="chp4Y" id="2O9ahh6pLSf" role="3oSUPX">
<ref role="cht4Q" to="8tt8:12dHl3ZCxTW" resolve="ForallType" />
</node>
<node concept="2H4GUG" id="2O9ahh6pLCy" role="1m5AlR" />
</node>
<node concept="3TrEf2" id="2O9ahh6pOab" role="2OqNvi">
<ref role="3Tt5mk" to="8tt8:12dHl3ZCFaI" resolve="type" />
</node>
</node>
<node concept="2Rf3mk" id="2O9ahh6pS87" role="2OqNvi">
<node concept="1xMEDy" id="2O9ahh6pS89" role="1xVPHs">
<node concept="chp4Y" id="2O9ahh6pSvV" role="ri$Ld">
<ref role="cht4Q" to="8tt8:12dHl3ZCxTW" resolve="ForallType" />
</node>
</node>
<node concept="1xIGOp" id="2O9ahh6q60J" role="1xVPHs" />
</node>
</node>
<node concept="1v1jN8" id="2O9ahh6q1P2" role="2OqNvi" />
</node>
</node>
</node>
</node>
<node concept="3cpWs6" id="2O9ahh6q2aF" role="3cqZAp">
<node concept="3clFbT" id="2O9ahh6q2lT" role="3cqZAk">
<property role="3clFbU" value="true" />
</node>
</node>
</node>
</node>
</node>
<node concept="1M2fIO" id="2O9ahh6q6nW">
<ref role="1M2myG" to="8tt8:2O9ahh6mHnU" resolve="PrototypeImpl" />
<node concept="1N5Pfh" id="2O9ahh6q6nX" role="1Mr941">
<ref role="1N5Vy1" to="8tt8:2O9ahh6mHnX" resolve="proto" />
<node concept="3dgokm" id="2O9ahh6q6o1" role="1N6uqs">
<node concept="3clFbS" id="2O9ahh6q6o3" role="2VODD2">
<node concept="3cpWs8" id="2O9ahh6ra$J" role="3cqZAp">
<node concept="3cpWsn" id="2O9ahh6ra$M" role="3cpWs9">
<property role="TrG5h" value="inst" />
<node concept="3Tqbb2" id="2O9ahh6ra$H" role="1tU5fm">
<ref role="ehGHo" to="8tt8:2O9ahh6mHnO" resolve="Instance" />
</node>
<node concept="2OqwBi" id="2O9ahh6re9l" role="33vP2m">
<node concept="2rP1CM" id="2O9ahh6$P0p" role="2Oq$k0" />
<node concept="2Xjw5R" id="2O9ahh6$RSy" role="2OqNvi">
<node concept="1xMEDy" id="2O9ahh6$RS$" role="1xVPHs">
<node concept="chp4Y" id="2O9ahh6$WhW" role="ri$Ld">
<ref role="cht4Q" to="8tt8:2O9ahh6mHnO" resolve="Instance" />
</node>
</node>
<node concept="1xIGOp" id="2O9ahh6_4G_" role="1xVPHs" />
</node>
</node>
</node>
</node>
<node concept="1gVbGN" id="2O9ahh6q6Vc" role="3cqZAp">
<node concept="2OqwBi" id="2O9ahh6q7DY" role="1gVkn0">
<node concept="3x8VRR" id="2O9ahh6q8em" role="2OqNvi" />
<node concept="2rP1CM" id="2O9ahh6$CCi" role="2Oq$k0" />
</node>
</node>
<node concept="3clFbH" id="2O9ahh6EuJB" role="3cqZAp" />
<node concept="3SKdUt" id="2O9ahh6qoBW" role="3cqZAp">
<node concept="3SKdUq" id="2O9ahh6qoBY" role="3SKWNk">
<property role="3SKdUp" value="Get declared Prototypes for scope except those already implemented here (but include the current)" />
</node>
</node>
<node concept="3cpWs8" id="2O9ahh6ELp5" role="3cqZAp">
<node concept="3cpWsn" id="2O9ahh6ELp6" role="3cpWs9">
<property role="TrG5h" value="impls" />
<node concept="2OqwBi" id="2O9ahh6F2Cu" role="33vP2m">
<node concept="2OqwBi" id="2O9ahh6ELp7" role="2Oq$k0">
<node concept="2OqwBi" id="2O9ahh6ELp8" role="2Oq$k0">
<node concept="37vLTw" id="2O9ahh6ELp9" role="2Oq$k0">
<ref role="3cqZAo" node="2O9ahh6ra$M" resolve="inst" />
</node>
<node concept="32TBzR" id="2O9ahh6ELpa" role="2OqNvi">
<node concept="1aIX9F" id="2O9ahh6ELpb" role="1xVPHs">
<node concept="26LbJo" id="2O9ahh6ELpc" role="1aIX9E">
<ref role="26LbJp" to="8tt8:2O9ahh6mHnR" resolve="impls" />
</node>
</node>
</node>
</node>
<node concept="3zZkjj" id="2O9ahh6F1zg" role="2OqNvi">
<node concept="1bVj0M" id="2O9ahh6F1zi" role="23t8la">
<node concept="3clFbS" id="2O9ahh6F1zj" role="1bW5cS">
<node concept="3clFbF" id="2O9ahh6F1K5" role="3cqZAp">
<node concept="3y3z36" id="2O9ahh6F1K2" role="3clFbG">
<node concept="3kakTB" id="2O9ahh6F2eg" role="3uHU7w" />
<node concept="37vLTw" id="2O9ahh6F1Zc" role="3uHU7B">
<ref role="3cqZAo" node="2O9ahh6F1zk" resolve="it" />
</node>
</node>
</node>
</node>
<node concept="Rh6nW" id="2O9ahh6F1zk" role="1bW2Oz">
<property role="TrG5h" value="it" />
<node concept="2jxLKc" id="2O9ahh6F1zl" role="1tU5fm" />
</node>
</node>
</node>
</node>
<node concept="3$u5V9" id="2O9ahh6Fj3V" role="2OqNvi">
<node concept="1bVj0M" id="2O9ahh6Fj3X" role="23t8la">
<node concept="3clFbS" id="2O9ahh6Fj3Y" role="1bW5cS">
<node concept="3clFbF" id="2O9ahh6FjgX" role="3cqZAp">
<node concept="2OqwBi" id="2O9ahh6FjzZ" role="3clFbG">
<node concept="37vLTw" id="2O9ahh6FjgW" role="2Oq$k0">
<ref role="3cqZAo" node="2O9ahh6Fj3Z" resolve="it" />
</node>
<node concept="3TrEf2" id="2O9ahh6FvL8" role="2OqNvi">
<ref role="3Tt5mk" to="8tt8:2O9ahh6mHnX" resolve="proto" />
</node>
</node>
</node>
</node>
<node concept="Rh6nW" id="2O9ahh6Fj3Z" role="1bW2Oz">
<property role="TrG5h" value="it" />
<node concept="2jxLKc" id="2O9ahh6Fj40" role="1tU5fm" />
</node>
</node>
</node>
</node>
<node concept="A3Dl8" id="2O9ahh6ELpm" role="1tU5fm">
<node concept="3Tqbb2" id="2O9ahh6ELpn" role="A3Ik2">
<ref role="ehGHo" to="8tt8:2O9ahh6mHnE" resolve="Prototype" />
</node>
</node>
</node>
</node>
<node concept="3cpWs8" id="2O9ahh6Eb5Q" role="3cqZAp">
<node concept="3cpWsn" id="2O9ahh6Eb5R" role="3cpWs9">
<property role="TrG5h" value="prots" />
<node concept="2OqwBi" id="2O9ahh6Eb5T" role="33vP2m">
<node concept="2OqwBi" id="2O9ahh6Eb5U" role="2Oq$k0">
<node concept="37vLTw" id="2O9ahh6Eb5V" role="2Oq$k0">
<ref role="3cqZAo" node="2O9ahh6ra$M" resolve="inst" />
</node>
<node concept="3TrEf2" id="2O9ahh6Eb5W" role="2OqNvi">
<ref role="3Tt5mk" to="8tt8:2O9ahh6mHo2" resolve="typeclass" />
</node>
</node>
<node concept="32TBzR" id="2O9ahh6Eb5X" role="2OqNvi">
<node concept="1aIX9F" id="2O9ahh6Eb5Y" role="1xVPHs">
<node concept="26LbJo" id="2O9ahh6EcBL" role="1aIX9E">
<ref role="26LbJp" to="8tt8:2O9ahh6mHnJ" resolve="members" />
</node>
</node>
</node>
</node>
<node concept="A3Dl8" id="2O9ahh6Eb6b" role="1tU5fm">
<node concept="3Tqbb2" id="2O9ahh6Eb6c" role="A3Ik2">
<ref role="ehGHo" to="8tt8:2O9ahh6mHnE" resolve="Prototype" />
</node>
</node>
</node>
</node>
<node concept="3clFbH" id="2O9ahh6EwvU" role="3cqZAp" />
<node concept="3cpWs6" id="2O9ahh6uET1" role="3cqZAp">
<node concept="2YIFZM" id="2O9ahh6uLga" role="3cqZAk">
<ref role="1Pybhc" node="7_zMfd$r3on" resolve="ScopeUtil" />
<ref role="37wK5l" node="2O9ahh6u0KZ" resolve="toScope" />
<node concept="2OqwBi" id="2O9ahh6E7D6" role="37wK5m">
<node concept="37vLTw" id="2O9ahh6EcXP" role="2Oq$k0">
<ref role="3cqZAo" node="2O9ahh6Eb5R" resolve="prots" />
</node>
<node concept="66VNe" id="2O9ahh6G37r" role="2OqNvi">
<node concept="37vLTw" id="2O9ahh6G3lf" role="576Qk">
<ref role="3cqZAo" node="2O9ahh6ELp6" resolve="impls" />
</node>
</node>
</node>
</node>
</node>
</node>
</node>
</node>
</node>
<node concept="1M2fIO" id="2O9ahh6tFoP">
<property role="3GE5qa" value="type" />
<ref role="1M2myG" to="8tt8:2O9ahh6mHvg" resolve="Constraint" />
<node concept="1N5Pfh" id="2O9ahh6vPhf" role="1Mr941">
<ref role="1N5Vy1" to="8tt8:2O9ahh6mHvj" resolve="typeclass" />
<node concept="3dgokm" id="2O9ahh6vPjH" role="1N6uqs">
<node concept="3clFbS" id="2O9ahh6vPjJ" role="2VODD2">
<node concept="3cpWs8" id="2O9ahh6xJIb" role="3cqZAp">
<node concept="3cpWsn" id="2O9ahh6xJIc" role="3cpWs9">
<property role="TrG5h" value="classes" />
<node concept="2I9FWS" id="2O9ahh6xJId" role="1tU5fm">
<ref role="2I9WkF" to="8tt8:2O9ahh6mHnA" resolve="Typeclass" />
</node>
<node concept="2YIFZM" id="2O9ahh6xKJp" role="33vP2m">
<ref role="37wK5l" node="2O9ahh6xGPJ" resolve="getTypeclasses" />
<ref role="1Pybhc" node="7_zMfd$r3on" resolve="ScopeUtil" />
<node concept="2rP1CM" id="2O9ahh6xKUi" role="37wK5m" />
</node>
</node>
</node>
<node concept="3cpWs6" id="2O9ahh6vUtE" role="3cqZAp">
<node concept="2YIFZM" id="2O9ahh6vUGI" role="3cqZAk">
<ref role="37wK5l" node="2O9ahh6u0KZ" resolve="toScope" />
<ref role="1Pybhc" node="7_zMfd$r3on" resolve="ScopeUtil" />
<node concept="37vLTw" id="2O9ahh6xL8Y" role="37wK5m">
<ref role="3cqZAo" node="2O9ahh6xJIc" resolve="classes" />
</node>
</node>
</node>
</node>
</node>
</node>
<node concept="1N5Pfh" id="2O9ahh6tFoQ" role="1Mr941">
<ref role="1N5Vy1" to="8tt8:2O9ahh6tFol" resolve="typeRef" />
<node concept="3dgokm" id="2O9ahh6tFoS" role="1N6uqs">
<node concept="3clFbS" id="2O9ahh6tFoT" role="2VODD2">
<node concept="3SKdUt" id="2O9ahh6vV6N" role="3cqZAp">
<node concept="3SKdUq" id="2O9ahh6vV6P" role="3SKWNk">
<property role="3SKdUp" value="todo: case when Constraint is used as supertype in typeclass: need to get only the Typeclass.typeVar" />
</node>
</node>
<node concept="3clFbH" id="2O9ahh6vZpR" role="3cqZAp" />
<node concept="3SKdUt" id="2O9ahh6tPRH" role="3cqZAp">
<node concept="3SKdUq" id="2O9ahh6tPRJ" role="3SKWNk">
<property role="3SKdUp" value="This ancestor is a parent of current Constraint node actually" />
</node>
</node>
<node concept="3cpWs8" id="2O9ahh6tH8C" role="3cqZAp">
<node concept="3cpWsn" id="2O9ahh6tH8F" role="3cpWs9">
<property role="TrG5h" value="typeVars" />
<node concept="2I9FWS" id="2O9ahh6tH8B" role="1tU5fm">
<ref role="2I9WkF" to="8tt8:3g9UT2j9I06" resolve="VarType" />
</node>
<node concept="2OqwBi" id="2O9ahh6tHxt" role="33vP2m">
<node concept="2OqwBi" id="2O9ahh6tFTZ" role="2Oq$k0">
<node concept="2rP1CM" id="2O9ahh6tFHj" role="2Oq$k0" />
<node concept="2Xjw5R" id="2O9ahh6tGli" role="2OqNvi">
<node concept="1xMEDy" id="2O9ahh6tGlk" role="1xVPHs">
<node concept="chp4Y" id="2O9ahh6tGrI" role="ri$Ld">
<ref role="cht4Q" to="8tt8:12dHl3ZCxTW" resolve="ForallType" />
</node>
</node>
<node concept="1xIGOp" id="2O9ahh6tGL5" role="1xVPHs" />
</node>
</node>
<node concept="3Tsc0h" id="2O9ahh6tHLr" role="2OqNvi">
<ref role="3TtcxE" to="8tt8:48ZGLP7q1Qc" resolve="typeVars" />
</node>
</node>
</node>
</node>
<node concept="3cpWs6" id="2O9ahh6uyI1" role="3cqZAp">
<node concept="2YIFZM" id="2O9ahh6uz7r" role="3cqZAk">
<ref role="37wK5l" node="2O9ahh6u0KZ" resolve="toScope" />
<ref role="1Pybhc" node="7_zMfd$r3on" resolve="ScopeUtil" />
<node concept="37vLTw" id="2O9ahh6uzm0" role="37wK5m">
<ref role="3cqZAo" node="2O9ahh6tH8F" resolve="typeVars" />
</node>
</node>
</node>
</node>
</node>
</node>
</node>
<node concept="1M2fIO" id="2O9ahh6tR0l">
<ref role="1M2myG" to="8tt8:2O9ahh6mHnE" resolve="Prototype" />
<node concept="EnEH3" id="2O9ahh6tR0m" role="1MhHOB">
<ref role="EomxK" to="tpck:h0TrG11" resolve="name" />
<node concept="Eqf_E" id="2O9ahh6tR0o" role="EtsB7">
<node concept="3clFbS" id="2O9ahh6tR0p" role="2VODD2">
<node concept="3clFbF" id="2O9ahh6tRqg" role="3cqZAp">
<node concept="2OqwBi" id="2O9ahh6tSXR" role="3clFbG">
<node concept="2OqwBi" id="2O9ahh6tRUr" role="2Oq$k0">
<node concept="EsrRn" id="2O9ahh6tRFG" role="2Oq$k0" />
<node concept="3TrEf2" id="2O9ahh6tShl" role="2OqNvi">
<ref role="3Tt5mk" to="8tt8:2O9ahh6mHnH" resolve="annVar" />
</node>
</node>
<node concept="3TrcHB" id="2O9ahh6tTKB" role="2OqNvi">
<ref role="3TsBF5" to="tpck:h0TrG11" resolve="name" />
</node>
</node>
</node>
</node>
</node>
</node>
</node>
</model>

View File

@ -23,17 +23,21 @@
<concept id="1140524381322" name="jetbrains.mps.lang.editor.structure.CellModel_ListWithRole" flags="ng" index="2czfm3">
<property id="1140524450557" name="separatorText" index="2czwfO" />
<child id="1140524464360" name="cellLayout" index="2czzBx" />
<child id="1140524464359" name="emptyCellModel" index="2czzBI" />
<child id="1233141163694" name="separatorStyle" index="sWeuL" />
</concept>
<concept id="1196434649611" name="jetbrains.mps.lang.editor.structure.SubstituteMenu_SimpleString" flags="ng" index="2h3Zct">
<property id="1196434851095" name="text" index="2h4Kg1" />
</concept>
<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="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" />
<concept id="1237308012275" name="jetbrains.mps.lang.editor.structure.IndentLayoutNewLineStyleClassItem" flags="ln" index="ljvvj" />
<concept id="1142886221719" name="jetbrains.mps.lang.editor.structure.QueryFunction_NodeCondition" flags="in" index="pkWqt" />
<concept id="1142886811589" name="jetbrains.mps.lang.editor.structure.ConceptFunctionParameter_node" flags="nn" index="pncrf" />
<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="8478191136883534237" name="jetbrains.mps.lang.editor.structure.IExtensibleSubstituteMenuPart" flags="ng" index="upBLQ">
@ -61,6 +65,7 @@
<concept id="1186414536763" name="jetbrains.mps.lang.editor.structure.BooleanStyleSheetItem" flags="ln" index="VOi$J">
<property id="1186414551515" name="flag" index="VOm3f" />
</concept>
<concept id="1186414860679" name="jetbrains.mps.lang.editor.structure.EditableStyleClassItem" flags="ln" index="VPxyj" />
<concept id="1630016958697718209" name="jetbrains.mps.lang.editor.structure.IMenuReference_Default" flags="ng" index="2Z_bC8">
<reference id="1630016958698373342" name="concept" index="2ZyFGn" />
</concept>
@ -180,10 +185,17 @@
<concept id="1068580123136" name="jetbrains.mps.baseLanguage.structure.StatementList" flags="sn" stub="5293379017992965193" index="3clFbS">
<child id="1068581517665" name="statement" index="3cqZAp" />
</concept>
<concept id="1068580320020" name="jetbrains.mps.baseLanguage.structure.IntegerConstant" flags="nn" index="3cmrfG">
<property id="1068580320021" name="value" index="3cmrfH" />
</concept>
<concept id="1068581242864" name="jetbrains.mps.baseLanguage.structure.LocalVariableDeclarationStatement" flags="nn" index="3cpWs8">
<child id="1068581242865" name="localVariableDeclaration" index="3cpWs9" />
</concept>
<concept id="1068581242863" name="jetbrains.mps.baseLanguage.structure.LocalVariableDeclaration" flags="nr" index="3cpWsn" />
<concept id="1081506762703" name="jetbrains.mps.baseLanguage.structure.GreaterThanExpression" flags="nn" index="3eOSWO" />
<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" />
@ -217,6 +229,9 @@
<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>
</language>
<language id="ceab5195-25ea-4f22-9b92-103b95ca8c0c" name="jetbrains.mps.lang.core">
<concept id="1133920641626" name="jetbrains.mps.lang.core.structure.BaseConcept" flags="ng" index="2VYdi">
@ -234,6 +249,10 @@
<child id="3078666699043039389" name="commentedNode" index="8Wnug" />
</concept>
</language>
<language id="83888646-71ce-4f1c-9c53-c54016f6ad4f" name="jetbrains.mps.baseLanguage.collections">
<concept id="1162935959151" name="jetbrains.mps.baseLanguage.collections.structure.GetSizeOperation" flags="nn" index="34oBXx" />
<concept id="1165530316231" name="jetbrains.mps.baseLanguage.collections.structure.IsEmptyOperation" flags="nn" index="1v1jN8" />
</language>
</registry>
<node concept="24kQdi" id="7_8aRkgDGQH">
<ref role="1XX52x" to="8tt8:7_8aRkgDGQC" resolve="Doc" />
@ -533,7 +552,7 @@
</node>
<node concept="16NfWO" id="1IKbs5X9nXK" role="upBLP">
<node concept="2h3Zct" id="1IKbs5X9o29" role="16NeZM">
<property role="2h4Kg1" value="( " />
<property role="2h4Kg1" value="(" />
</node>
</node>
</node>
@ -905,15 +924,126 @@
<property role="2czwfO" value=" " />
<ref role="1NtTu8" to="8tt8:48ZGLP7q1Qc" resolve="typeVars" />
<node concept="2iRfu4" id="48ZGLP7q1R2" role="2czzBx" />
<node concept="3F0ifn" id="2O9ahh6znK_" role="2czzBI">
<property role="3F0ifm" value="#" />
<node concept="11L4FC" id="2O9ahh6$Aef" role="3F10Kt">
<property role="VOm3f" value="true" />
</node>
<node concept="11LMrY" id="2O9ahh6$8HT" role="3F10Kt">
<property role="VOm3f" value="true" />
</node>
</node>
</node>
<node concept="3F0ifn" id="48ZGLP7q1QP" role="3EZMnx">
<property role="3F0ifm" value="." />
<node concept="11L4FC" id="1IKbs5XoXAX" role="3F10Kt">
<property role="VOm3f" value="true" />
</node>
<node concept="11LMrY" id="1IKbs5XHOf$" role="3F10Kt">
<node concept="1X3_iC" id="2O9ahh6pFz$" role="lGtFl">
<property role="3V$3am" value="styleItem" />
<property role="3V$3ak" value="18bc6592-03a6-4e29-a83a-7ff23bde13ba/1219418625346/1219418656006" />
<node concept="11LMrY" id="1IKbs5XHOf$" role="8Wnug">
<property role="VOm3f" value="true" />
</node>
</node>
</node>
<node concept="3F0ifn" id="2O9ahh6pli4" role="3EZMnx">
<property role="3F0ifm" value="(" />
<node concept="3mYdg7" id="2O9ahh6pGWd" role="3F10Kt">
<property role="1413C4" value="forallConstraints" />
</node>
<node concept="pkWqt" id="2O9ahh6plyG" role="pqm2j">
<node concept="3clFbS" id="2O9ahh6plyH" role="2VODD2">
<node concept="3clFbF" id="2O9ahh6plE2" role="3cqZAp">
<node concept="3eOSWO" id="2O9ahh6puDl" role="3clFbG">
<node concept="3cmrfG" id="2O9ahh6puNL" role="3uHU7w">
<property role="3cmrfH" value="1" />
</node>
<node concept="2OqwBi" id="2O9ahh6pouP" role="3uHU7B">
<node concept="2OqwBi" id="2O9ahh6plRh" role="2Oq$k0">
<node concept="pncrf" id="2O9ahh6plE1" role="2Oq$k0" />
<node concept="3Tsc0h" id="2O9ahh6pmz$" role="2OqNvi">
<ref role="3TtcxE" to="8tt8:2O9ahh6mHw4" resolve="constraints" />
</node>
</node>
<node concept="34oBXx" id="2O9ahh6psL7" role="2OqNvi" />
</node>
</node>
</node>
</node>
</node>
<node concept="11L4FC" id="2O9ahh6pFzG" role="3F10Kt">
<property role="VOm3f" value="true" />
</node>
<node concept="11LMrY" id="2O9ahh6pFMs" role="3F10Kt">
<property role="VOm3f" value="true" />
</node>
</node>
<node concept="3F2HdR" id="2O9ahh6mHUN" role="3EZMnx">
<property role="2czwfO" value="," />
<ref role="1NtTu8" to="8tt8:2O9ahh6mHw4" resolve="constraints" />
<node concept="2iRfu4" id="2O9ahh6mIli" role="2czzBx" />
<node concept="3F0ifn" id="2O9ahh6mIKo" role="2czzBI">
<property role="3F0ifm" value="#" />
<node concept="VPxyj" id="2O9ahh6pl1o" role="3F10Kt">
<property role="VOm3f" value="true" />
</node>
<node concept="11L4FC" id="2O9ahh6zTZs" role="3F10Kt">
<property role="VOm3f" value="true" />
</node>
</node>
</node>
<node concept="3F0ifn" id="2O9ahh6pvFt" role="3EZMnx">
<property role="3F0ifm" value=")" />
<node concept="3mYdg7" id="2O9ahh6pHpJ" role="3F10Kt">
<property role="1413C4" value="forallConstraints" />
</node>
<node concept="pkWqt" id="2O9ahh6pw25" role="pqm2j">
<node concept="3clFbS" id="2O9ahh6pw26" role="2VODD2">
<node concept="3clFbF" id="2O9ahh6pw9r" role="3cqZAp">
<node concept="3eOSWO" id="2O9ahh6pEJs" role="3clFbG">
<node concept="3cmrfG" id="2O9ahh6pETS" role="3uHU7w">
<property role="3cmrfH" value="1" />
</node>
<node concept="2OqwBi" id="2O9ahh6p$RB" role="3uHU7B">
<node concept="2OqwBi" id="2O9ahh6pwmE" role="2Oq$k0">
<node concept="pncrf" id="2O9ahh6pw9q" role="2Oq$k0" />
<node concept="3Tsc0h" id="2O9ahh6pxk2" role="2OqNvi">
<ref role="3TtcxE" to="8tt8:2O9ahh6mHw4" resolve="constraints" />
</node>
</node>
<node concept="34oBXx" id="2O9ahh6pD9x" role="2OqNvi" />
</node>
</node>
</node>
</node>
</node>
<node concept="11L4FC" id="2O9ahh6pG1e" role="3F10Kt">
<property role="VOm3f" value="true" />
</node>
<node concept="11LMrY" id="2O9ahh6pGuD" role="3F10Kt">
<property role="VOm3f" value="true" />
</node>
</node>
<node concept="3F0ifn" id="2O9ahh6mIKr" role="3EZMnx">
<property role="3F0ifm" value="⇒" />
<node concept="pkWqt" id="2O9ahh6mIXW" role="pqm2j">
<node concept="3clFbS" id="2O9ahh6mIXX" role="2VODD2">
<node concept="3clFbF" id="2O9ahh6mJ5i" role="3cqZAp">
<node concept="3fqX7Q" id="2O9ahh6mOHR" role="3clFbG">
<node concept="2OqwBi" id="2O9ahh6mOHT" role="3fr31v">
<node concept="2OqwBi" id="2O9ahh6mOHU" role="2Oq$k0">
<node concept="pncrf" id="2O9ahh6mOHV" role="2Oq$k0" />
<node concept="3Tsc0h" id="2O9ahh6mOHW" role="2OqNvi">
<ref role="3TtcxE" to="8tt8:2O9ahh6mHw4" resolve="constraints" />
</node>
</node>
<node concept="1v1jN8" id="2O9ahh6mOHX" role="2OqNvi" />
</node>
</node>
</node>
</node>
</node>
</node>
<node concept="3F1sOY" id="12dHl3ZCFaK" role="3EZMnx">
<ref role="1NtTu8" to="8tt8:12dHl3ZCFaI" resolve="type" />
@ -1230,5 +1360,146 @@
</node>
<node concept="3VyMlK" id="1IKbs5Xa9fm" role="3ft7WO" />
</node>
<node concept="24kQdi" id="2O9ahh6mHon">
<ref role="1XX52x" to="8tt8:2O9ahh6mHnE" resolve="Prototype" />
<node concept="3EZMnI" id="2O9ahh6mHop" role="2wV5jI">
<node concept="l2Vlx" id="2O9ahh6mHos" role="2iSdaV" />
<node concept="1iCGBv" id="2O9ahh6x9DU" role="3EZMnx">
<ref role="1NtTu8" to="8tt8:2O9ahh6mHnH" resolve="annVar" />
<node concept="1sVBvm" id="2O9ahh6x9DV" role="1sWHZn">
<node concept="3F1sOY" id="2O9ahh6x9Eh" role="2wV5jI">
<ref role="1NtTu8" to="8tt8:JqEP$8fvrp" resolve="var" />
</node>
</node>
</node>
<node concept="3F0ifn" id="2O9ahh6x9Eb" role="3EZMnx">
<property role="3F0ifm" value="∷" />
</node>
<node concept="1iCGBv" id="2O9ahh6x9Ew" role="3EZMnx">
<ref role="1NtTu8" to="8tt8:2O9ahh6mHnH" resolve="annVar" />
<node concept="1sVBvm" id="2O9ahh6x9Ey" role="1sWHZn">
<node concept="3F1sOY" id="2O9ahh6x9EH" role="2wV5jI">
<ref role="1NtTu8" to="8tt8:JqEP$8fvrd" resolve="ann" />
</node>
</node>
</node>
</node>
</node>
<node concept="24kQdi" id="2O9ahh6mHpg">
<property role="3GE5qa" value="clause" />
<ref role="1XX52x" to="8tt8:2O9ahh6mHnA" resolve="Typeclass" />
<node concept="3EZMnI" id="2O9ahh6mHpN" role="2wV5jI">
<node concept="l2Vlx" id="2O9ahh6mHpQ" role="2iSdaV" />
<node concept="3F0ifn" id="2O9ahh6mHpU" role="3EZMnx">
<property role="3F0ifm" value="class" />
<node concept="pVoyu" id="2O9ahh6mHqz" role="3F10Kt">
<property role="VOm3f" value="true" />
</node>
</node>
<node concept="3F0A7n" id="2O9ahh6mHpZ" role="3EZMnx">
<ref role="1NtTu8" to="tpck:h0TrG11" resolve="name" />
</node>
<node concept="3F1sOY" id="2O9ahh6mHq7" role="3EZMnx">
<ref role="1NtTu8" to="8tt8:2O9ahh6mHnL" resolve="typeVar" />
</node>
<node concept="3F0ifn" id="2O9ahh6mHqh" role="3EZMnx">
<property role="3F0ifm" value="where" />
</node>
<node concept="3F2HdR" id="2O9ahh6mHqN" role="3EZMnx">
<ref role="1NtTu8" to="8tt8:2O9ahh6mHnJ" resolve="members" />
<node concept="2iRkQZ" id="2O9ahh6mHHf" role="2czzBx" />
<node concept="pVoyu" id="2O9ahh6mHr0" role="3F10Kt">
<property role="VOm3f" value="true" />
</node>
<node concept="lj46D" id="2O9ahh6mHr2" role="3F10Kt">
<property role="VOm3f" value="true" />
</node>
</node>
</node>
</node>
<node concept="24kQdi" id="2O9ahh6mHrn">
<property role="3GE5qa" value="clause" />
<ref role="1XX52x" to="8tt8:2O9ahh6mHnO" resolve="Instance" />
<node concept="3EZMnI" id="2O9ahh6mHry" role="2wV5jI">
<node concept="3F0ifn" id="2O9ahh6mHrF" role="3EZMnx">
<property role="3F0ifm" value="instance" />
<node concept="pVoyu" id="2O9ahh6mHrJ" role="3F10Kt">
<property role="VOm3f" value="true" />
</node>
</node>
<node concept="1iCGBv" id="2O9ahh6mHrP" role="3EZMnx">
<ref role="1NtTu8" to="8tt8:2O9ahh6mHo2" resolve="typeclass" />
<node concept="1sVBvm" id="2O9ahh6mHrR" role="1sWHZn">
<node concept="3F0A7n" id="2O9ahh6mHs0" role="2wV5jI">
<property role="1Intyy" value="true" />
<ref role="1NtTu8" to="tpck:h0TrG11" resolve="name" />
</node>
</node>
</node>
<node concept="3F1sOY" id="2O9ahh6mHsm" role="3EZMnx">
<ref role="1NtTu8" to="8tt8:2O9ahh6mHnP" resolve="type" />
</node>
<node concept="3F0ifn" id="2O9ahh6mHsA" role="3EZMnx">
<property role="3F0ifm" value="where" />
</node>
<node concept="3F2HdR" id="2O9ahh6mHti" role="3EZMnx">
<ref role="1NtTu8" to="8tt8:2O9ahh6mHnR" resolve="impls" />
<node concept="2iRkQZ" id="2O9ahh6mHHc" role="2czzBx" />
<node concept="pVoyu" id="2O9ahh6mHtv" role="3F10Kt">
<property role="VOm3f" value="true" />
</node>
<node concept="lj46D" id="2O9ahh6mHtx" role="3F10Kt">
<property role="VOm3f" value="true" />
</node>
</node>
<node concept="l2Vlx" id="2O9ahh6mHr_" role="2iSdaV" />
</node>
</node>
<node concept="24kQdi" id="2O9ahh6mHu6">
<ref role="1XX52x" to="8tt8:2O9ahh6mHnU" resolve="PrototypeImpl" />
<node concept="3EZMnI" id="2O9ahh6mHu8" role="2wV5jI">
<node concept="1iCGBv" id="2O9ahh6mHuf" role="3EZMnx">
<ref role="1NtTu8" to="8tt8:2O9ahh6mHnX" resolve="proto" />
<node concept="1sVBvm" id="2O9ahh6mHuh" role="1sWHZn">
<node concept="3F0A7n" id="2O9ahh6GN9Y" role="2wV5jI">
<property role="1Intyy" value="true" />
<ref role="1NtTu8" to="tpck:h0TrG11" resolve="name" />
</node>
</node>
</node>
<node concept="3F0ifn" id="2O9ahh6mHuR" role="3EZMnx">
<property role="3F0ifm" value="=" />
</node>
<node concept="3F1sOY" id="2O9ahh6mHv7" role="3EZMnx">
<ref role="1NtTu8" to="8tt8:2O9ahh6mHnZ" resolve="expr" />
</node>
<node concept="l2Vlx" id="2O9ahh6mHub" role="2iSdaV" />
</node>
</node>
<node concept="24kQdi" id="2O9ahh6mHvu">
<property role="3GE5qa" value="type" />
<ref role="1XX52x" to="8tt8:2O9ahh6mHvg" resolve="Constraint" />
<node concept="3EZMnI" id="2O9ahh6mHvw" role="2wV5jI">
<node concept="1iCGBv" id="2O9ahh6mHvE" role="3EZMnx">
<ref role="1NtTu8" to="8tt8:2O9ahh6mHvj" resolve="typeclass" />
<node concept="1sVBvm" id="2O9ahh6mHvG" role="1sWHZn">
<node concept="3F0A7n" id="2O9ahh6mHvQ" role="2wV5jI">
<property role="1Intyy" value="true" />
<ref role="1NtTu8" to="tpck:h0TrG11" resolve="name" />
</node>
</node>
</node>
<node concept="1iCGBv" id="2O9ahh6tFoz" role="3EZMnx">
<ref role="1NtTu8" to="8tt8:2O9ahh6tFol" resolve="typeRef" />
<node concept="1sVBvm" id="2O9ahh6tFo_" role="1sWHZn">
<node concept="3F0A7n" id="2O9ahh6tFoJ" role="2wV5jI">
<property role="1Intyy" value="true" />
<ref role="1NtTu8" to="tpck:h0TrG11" resolve="name" />
</node>
</node>
</node>
<node concept="l2Vlx" id="2O9ahh6mHvz" role="2iSdaV" />
</node>
</node>
</model>

View File

@ -15,7 +15,6 @@
<property id="4628067390765956802" name="abstract" index="R5$K7" />
<property id="5092175715804935370" name="conceptAlias" index="34LRSv" />
<child id="1071489727083" name="linkDeclaration" index="1TKVEi" />
<child id="1071489727084" name="propertyDeclaration" index="1TKVEl" />
</concept>
<concept id="1169125989551" name="jetbrains.mps.lang.structure.structure.InterfaceConceptDeclaration" flags="ig" index="PlHQZ">
<child id="1169127546356" name="extends" index="PrDN$" />
@ -28,10 +27,6 @@
<reference id="1071489389519" name="extends" index="1TJDcQ" />
<child id="1169129564478" name="implements" index="PzmwI" />
</concept>
<concept id="1071489288299" name="jetbrains.mps.lang.structure.structure.PropertyDeclaration" flags="ig" index="1TJgyi">
<property id="241647608299431129" name="propertyId" index="IQ2nx" />
<reference id="1082985295845" name="dataType" index="AX2Wp" />
</concept>
<concept id="1071489288298" name="jetbrains.mps.lang.structure.structure.LinkDeclaration" flags="ig" index="1TJgyj">
<property id="1071599776563" name="role" index="20kJfa" />
<property id="1071599893252" name="sourceCardinality" index="20lbJX" />
@ -280,11 +275,6 @@
<property role="EcuMT" value="3749787170939265030" />
<property role="3GE5qa" value="type" />
<property role="TrG5h" value="VarType" />
<node concept="1TJgyi" id="3g9UT2j9Itl" role="1TKVEl">
<property role="IQ2nx" value="3749787170939266901" />
<property role="TrG5h" value="name1" />
<ref role="AX2Wp" to="tpck:fKAOsGN" resolve="string" />
</node>
<node concept="PrWs8" id="48ZGLP8BG5o" role="PzmwI">
<ref role="PrY4T" to="tpck:h0TrEE$" resolve="INamedConcept" />
</node>
@ -326,6 +316,13 @@
<property role="20lbJX" value="0..n" />
<ref role="20lvS9" node="3g9UT2j9I06" resolve="VarType" />
</node>
<node concept="1TJgyj" id="2O9ahh6mHw4" role="1TKVEi">
<property role="IQ2ns" value="3245170173553596420" />
<property role="20lmBu" value="aggregation" />
<property role="20kJfa" value="constraints" />
<property role="20lbJX" value="0..n" />
<ref role="20lvS9" node="2O9ahh6mHvg" resolve="Constraint" />
</node>
</node>
<node concept="1TIwiD" id="1z4HGmnV7K8">
<property role="EcuMT" value="1784752312119229448" />
@ -466,5 +463,118 @@
<ref role="20lvS9" node="3_qfG1EP6Nw" resolve="Type" />
</node>
</node>
<node concept="1TIwiD" id="2O9ahh6mHnA">
<property role="EcuMT" value="3245170173553595878" />
<property role="3GE5qa" value="clause" />
<property role="TrG5h" value="Typeclass" />
<property role="34LRSv" value="class" />
<ref role="1TJDcQ" node="7_8aRkgDGQB" resolve="Clause" />
<node concept="PrWs8" id="2O9ahh6mHnB" role="PzmwI">
<ref role="PrY4T" to="tpck:h0TrEE$" resolve="INamedConcept" />
</node>
<node concept="1TJgyj" id="2O9ahh6mHnJ" role="1TKVEi">
<property role="IQ2ns" value="3245170173553595887" />
<property role="20lmBu" value="aggregation" />
<property role="20kJfa" value="members" />
<property role="20lbJX" value="0..n" />
<ref role="20lvS9" node="2O9ahh6mHnE" resolve="Prototype" />
</node>
<node concept="1TJgyj" id="2O9ahh6mHnL" role="1TKVEi">
<property role="IQ2ns" value="3245170173553595889" />
<property role="20lmBu" value="aggregation" />
<property role="20kJfa" value="typeVar" />
<property role="20lbJX" value="1" />
<ref role="20lvS9" node="3g9UT2j9I06" resolve="VarType" />
</node>
</node>
<node concept="1TIwiD" id="2O9ahh6mHnE">
<property role="EcuMT" value="3245170173553595882" />
<property role="TrG5h" value="Prototype" />
<ref role="1TJDcQ" to="tpck:gw2VY9q" resolve="BaseConcept" />
<node concept="PrWs8" id="2O9ahh6mHnF" role="PzmwI">
<ref role="PrY4T" node="3TFdEPZf9SZ" resolve="Typeable" />
</node>
<node concept="1TJgyj" id="2O9ahh6mHnH" role="1TKVEi">
<property role="IQ2ns" value="3245170173553595885" />
<property role="20lmBu" value="aggregation" />
<property role="20kJfa" value="annVar" />
<property role="20lbJX" value="1" />
<ref role="20lvS9" node="JqEP$8fvrm" resolve="AnnVar" />
</node>
<node concept="PrWs8" id="2O9ahh6tR0e" role="PzmwI">
<ref role="PrY4T" to="tpck:h0TrEE$" resolve="INamedConcept" />
</node>
</node>
<node concept="1TIwiD" id="2O9ahh6mHnO">
<property role="EcuMT" value="3245170173553595892" />
<property role="3GE5qa" value="clause" />
<property role="TrG5h" value="Instance" />
<property role="34LRSv" value="instance" />
<ref role="1TJDcQ" node="7_8aRkgDGQB" resolve="Clause" />
<node concept="1TJgyj" id="2O9ahh6mHnP" role="1TKVEi">
<property role="IQ2ns" value="3245170173553595893" />
<property role="20lmBu" value="aggregation" />
<property role="20kJfa" value="type" />
<property role="20lbJX" value="1" />
<ref role="20lvS9" node="12dHl3ZCxTW" resolve="ForallType" />
</node>
<node concept="1TJgyj" id="2O9ahh6mHnR" role="1TKVEi">
<property role="IQ2ns" value="3245170173553595895" />
<property role="20lmBu" value="aggregation" />
<property role="20kJfa" value="impls" />
<property role="20lbJX" value="0..n" />
<ref role="20lvS9" node="2O9ahh6mHnU" resolve="PrototypeImpl" />
</node>
<node concept="1TJgyj" id="2O9ahh6mHo2" role="1TKVEi">
<property role="IQ2ns" value="3245170173553595906" />
<property role="20lmBu" value="reference" />
<property role="20kJfa" value="typeclass" />
<property role="20lbJX" value="1" />
<ref role="20lvS9" node="2O9ahh6mHnA" resolve="Typeclass" />
</node>
</node>
<node concept="1TIwiD" id="2O9ahh6mHnU">
<property role="EcuMT" value="3245170173553595898" />
<property role="TrG5h" value="PrototypeImpl" />
<ref role="1TJDcQ" to="tpck:gw2VY9q" resolve="BaseConcept" />
<node concept="PrWs8" id="2O9ahh6mHnV" role="PzmwI">
<ref role="PrY4T" node="3TFdEPZf9SZ" resolve="Typeable" />
</node>
<node concept="1TJgyj" id="2O9ahh6mHnX" role="1TKVEi">
<property role="IQ2ns" value="3245170173553595901" />
<property role="20lmBu" value="reference" />
<property role="20kJfa" value="proto" />
<property role="20lbJX" value="1" />
<ref role="20lvS9" node="2O9ahh6mHnE" resolve="Prototype" />
</node>
<node concept="1TJgyj" id="2O9ahh6mHnZ" role="1TKVEi">
<property role="IQ2ns" value="3245170173553595903" />
<property role="20lmBu" value="aggregation" />
<property role="20kJfa" value="expr" />
<property role="20lbJX" value="1" />
<ref role="20lvS9" node="7_8aRkgDGPJ" resolve="Expr" />
</node>
</node>
<node concept="1TIwiD" id="2O9ahh6mHvg">
<property role="EcuMT" value="3245170173553596368" />
<property role="3GE5qa" value="type" />
<property role="TrG5h" value="Constraint" />
<property role="34LRSv" value="constraint" />
<ref role="1TJDcQ" to="tpck:gw2VY9q" resolve="BaseConcept" />
<node concept="1TJgyj" id="2O9ahh6tFol" role="1TKVEi">
<property role="IQ2ns" value="3245170173555422741" />
<property role="20lmBu" value="reference" />
<property role="20kJfa" value="typeRef" />
<property role="20lbJX" value="1" />
<ref role="20lvS9" node="3g9UT2j9I06" resolve="VarType" />
</node>
<node concept="1TJgyj" id="2O9ahh6mHvj" role="1TKVEi">
<property role="IQ2ns" value="3245170173553596371" />
<property role="20lmBu" value="reference" />
<property role="20kJfa" value="typeclass" />
<property role="20lbJX" value="1" />
<ref role="20lvS9" node="2O9ahh6mHnA" resolve="Typeclass" />
</node>
</node>
</model>