Abstract into bl typechecking of types having runtime representation (e.g. sequence)

See term 'runtimeType' and corresponding rule in ConversionMain
This commit is contained in:
Grigorii Kirgizov 2020-06-03 14:36:23 +03:00
parent 3b456a9063
commit 5004dc2340
3 changed files with 1488 additions and 1103 deletions

View File

@ -1367,6 +1367,9 @@
</node>
</node>
<node concept="3NuqgR" id="5jbgz$E6gUJ" role="0Rg$4">
<node concept="aZer4" id="3Z1xyIvRM9j" role="3XD1gS">
<property role="TrG5h" value="SeqT" />
</node>
<node concept="aZer4" id="5jbgz$E6gUK" role="3XD1gS">
<property role="TrG5h" value="YieldT" />
</node>
@ -1375,6 +1378,17 @@
<node concept="3xSepi" id="5jbgz$E6gVR" role="3xSepv">
<node concept="3Aq9E8" id="5jbgz$E6gVS" role="3xSepj">
<node concept="3I6sU6" id="5jbgz$E6gVT" role="3Ip0Jz">
<node concept="3I6s7M" id="3Z1xyIvRMae" role="3I6sU7">
<node concept="3jm4v3" id="3Z1xyIvRMab" role="3I6s78">
<ref role="3jm46O" to="yh6q:3Z1xyIvRM2K" resolve="sequenceTerm" />
<node concept="a7P8L" id="3Z1xyIvRMat" role="3jm6SO">
<ref role="a7OzE" node="3Z1xyIvRM9j" resolve="SeqT" />
</node>
<node concept="a7P8L" id="3Z1xyIvRMa_" role="3jm6SO">
<ref role="a7OzE" node="5jbgz$E6gUK" resolve="YieldT" />
</node>
</node>
</node>
<node concept="3I6s7M" id="5jbgz$E6gVY" role="3I6sU7">
<node concept="3Aqt3T" id="5jbgz$E6gVX" role="3I6s78">
<ref role="3AqCNq" to="kqnc:34$A1MfhdDv" resolve="typeOf" />
@ -1383,16 +1397,8 @@
<ref role="3A2yKK" node="5jbgz$E6gUr" resolve="yld" />
</node>
</node>
<node concept="ns1u0" id="5jbgz$E6ihH" role="3AunhB">
<ref role="ns1xF" to="yh6q:3MFPGC50Ab3" resolve="sequence" />
<node concept="nsMwS" id="5jbgz$E6ihL" role="ns1xD">
<ref role="nsMwP" to="yh6q:3MFPGC50Aiu" resolve="elem" />
<node concept="1nq8_$" id="5jbgz$E6ihQ" role="nsMwV">
<node concept="a7P8L" id="5jbgz$E6ihP" role="1nq8_t">
<ref role="a7OzE" node="5jbgz$E6gUK" resolve="YieldT" />
</node>
</node>
</node>
<node concept="a7P8L" id="3Z1xyIvRMb2" role="3AunhB">
<ref role="a7OzE" node="3Z1xyIvRM9j" resolve="SeqT" />
</node>
</node>
</node>
@ -1417,22 +1423,25 @@
<node concept="3xSepi" id="5jbgz$E6kO4" role="3xSepv">
<node concept="3Aq9E8" id="5jbgz$E6kO5" role="3xSepj">
<node concept="3I6sU6" id="5jbgz$E6kO6" role="3Ip0Jz">
<node concept="3I6s7M" id="3Z1xyIvRMfY" role="3I6sU7">
<node concept="3jm4v3" id="3Z1xyIvRMfV" role="3I6s78">
<ref role="3jm46O" to="yh6q:3Z1xyIvRM2K" resolve="sequenceTerm" />
<node concept="a7P8L" id="3Z1xyIvRMgk" role="3jm6SO">
<ref role="a7OzE" node="3Z1xyIvRMdy" resolve="SeqT" />
</node>
<node concept="a7P8L" id="3Z1xyIvRMgs" role="3jm6SO">
<ref role="a7OzE" node="5jbgz$E6j5t" resolve="Elem" />
</node>
</node>
</node>
<node concept="3I6s7M" id="5jbgz$E6kVQ" role="3I6sU7">
<node concept="3Aqt3T" id="5jbgz$E6kVP" role="3I6s78">
<ref role="3AqCNq" to="kqnc:3Qp4N06bUPu" resolve="convertsTo" />
<node concept="a7P8L" id="5jbgz$E6kVV" role="3AunhB">
<ref role="a7OzE" node="5jbgz$E6ioj" resolve="YieldAllT" />
</node>
<node concept="ns1u0" id="5jbgz$E6kW5" role="3AunhB">
<ref role="ns1xF" to="yh6q:3MFPGC50Ab3" resolve="sequence" />
<node concept="nsMwS" id="5jbgz$E6kWu" role="ns1xD">
<ref role="nsMwP" to="yh6q:3MFPGC50Aiu" resolve="elem" />
<node concept="1nq8_$" id="5jbgz$E6kWz" role="nsMwV">
<node concept="a7P8L" id="5jbgz$E6kWy" role="1nq8_t">
<ref role="a7OzE" node="5jbgz$E6j5t" resolve="Elem" />
</node>
</node>
</node>
<node concept="a7P8L" id="3Z1xyIvRMhh" role="3AunhB">
<ref role="a7OzE" node="3Z1xyIvRMdy" resolve="SeqT" />
</node>
</node>
</node>
@ -1444,16 +1453,8 @@
<ref role="3A2yKK" node="5jbgz$E6iox" resolve="yldAll" />
</node>
</node>
<node concept="ns1u0" id="5jbgz$E6rv8" role="3AunhB">
<ref role="ns1xF" to="yh6q:3MFPGC50Ab3" resolve="sequence" />
<node concept="nsMwS" id="5jbgz$E6rv9" role="ns1xD">
<ref role="nsMwP" to="yh6q:3MFPGC50Aiu" resolve="elem" />
<node concept="1nq8_$" id="5jbgz$E6rva" role="nsMwV">
<node concept="a7P8L" id="5jbgz$E6rvb" role="1nq8_t">
<ref role="a7OzE" node="5jbgz$E6j5t" resolve="Elem" />
</node>
</node>
</node>
<node concept="a7P8L" id="3Z1xyIvRMk0" role="3AunhB">
<ref role="a7OzE" node="3Z1xyIvRMdy" resolve="SeqT" />
</node>
</node>
</node>
@ -1484,6 +1485,9 @@
</node>
</node>
<node concept="3NuqgR" id="5jbgz$E6ioi" role="0Rg$4">
<node concept="aZer4" id="3Z1xyIvRMdy" role="3XD1gS">
<property role="TrG5h" value="SeqT" />
</node>
<node concept="aZer4" id="5jbgz$E6ioj" role="3XD1gS">
<property role="TrG5h" value="YieldAllT" />
</node>
@ -1522,16 +1526,8 @@
<ref role="3A2yKK" node="5jbgz$E6iox" resolve="yldAll" />
</node>
</node>
<node concept="ns1u0" id="5jbgz$E6rvA" role="3AunhB">
<ref role="ns1xF" to="yh6q:3MFPGC50Ab3" resolve="sequence" />
<node concept="nsMwS" id="5jbgz$E6rvB" role="ns1xD">
<ref role="nsMwP" to="yh6q:3MFPGC50Aiu" resolve="elem" />
<node concept="1nq8_$" id="5jbgz$E6rvC" role="nsMwV">
<node concept="a7P8L" id="5jbgz$E6rvD" role="1nq8_t">
<ref role="a7OzE" node="5jbgz$E6j5t" resolve="Elem" />
</node>
</node>
</node>
<node concept="a7P8L" id="3Z1xyIvRMkz" role="3AunhB">
<ref role="a7OzE" node="3Z1xyIvRMdy" resolve="SeqT" />
</node>
</node>
</node>
@ -4752,20 +4748,13 @@
<node concept="3Aq9E8" id="554EtBHDt8T" role="3xSepj">
<node concept="3I6sU6" id="554EtBHDt8U" role="3Ip0Jz">
<node concept="3I6s7M" id="554EtBHP4oQ" role="3I6sU7">
<node concept="3A8Hvi" id="554EtBHP4oW" role="3I6s78">
<node concept="a7P8L" id="554EtBHP4oA" role="3A8wtg">
<ref role="a7OzE" node="554EtBHDt8P" resolve="Op" />
<node concept="3jm4v3" id="1BcUSjgfp32" role="3I6s78">
<ref role="3jm46O" to="yh6q:3Z1xyIvWi5s" resolve="getSeqElementType" />
<node concept="a7P8L" id="1BcUSjgfp7r" role="3jm6SO">
<ref role="a7OzE" node="554EtBHDt8Q" resolve="Elem" />
</node>
<node concept="ns1u0" id="554EtBHDt8K" role="3A8w4Q">
<ref role="ns1xF" to="yh6q:3MFPGC50Ab3" resolve="sequence" />
<node concept="nsMwS" id="554EtBHDt8L" role="ns1xD">
<ref role="nsMwP" to="yh6q:3MFPGC50Aiu" resolve="elem" />
<node concept="1nq8_$" id="554EtBHDt8M" role="nsMwV">
<node concept="a7P8L" id="554EtBHDt8N" role="1nq8_t">
<ref role="a7OzE" node="554EtBHDt8Q" resolve="Elem" />
</node>
</node>
</node>
<node concept="a7P8L" id="1BcUSjgfpbO" role="3jm6SO">
<ref role="a7OzE" node="554EtBHDt8P" resolve="Op" />
</node>
</node>
</node>

View File

@ -9,14 +9,57 @@
</languages>
<imports>
<import index="kqnc" ref="r:92b96158-68e6-4f53-a32b-36e2b456fe01(jetbrains.mps.baseLanguageExt.types)" />
<import index="tpee" ref="r:00000000-0000-4000-0000-011c895902ca(jetbrains.mps.baseLanguage.structure)" implicit="true" />
<import index="wyt6" ref="6354ebe7-c22a-4a0f-ac54-50b52ab9b065/java:java.lang(JDK/)" implicit="true" />
</imports>
<registry>
<language id="f3061a53-9226-4cc5-a443-f952ceaf5816" name="jetbrains.mps.baseLanguage">
<concept id="1068580123157" name="jetbrains.mps.baseLanguage.structure.Statement" flags="nn" index="3clFbH" />
<concept id="1082485599095" name="jetbrains.mps.baseLanguage.structure.BlockStatement" flags="nn" index="9aQIb">
<child id="1082485599096" name="statements" index="9aQI4" />
</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" />
</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="4972933694980447171" name="jetbrains.mps.baseLanguage.structure.BaseVariableDeclaration" flags="ng" index="19Szcq">
<child id="5680397130376446158" name="type" index="1tU5fm" />
</concept>
<concept id="1068580123159" name="jetbrains.mps.baseLanguage.structure.IfStatement" flags="nn" index="3clFbJ">
<child id="1082485599094" name="ifFalseStatement" index="9aQIa" />
<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="1068580123137" name="jetbrains.mps.baseLanguage.structure.BooleanConstant" flags="nn" index="3clFbT">
<property id="1068580123138" name="value" index="3clFbU" />
</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="1107535904670" name="jetbrains.mps.baseLanguage.structure.ClassifierType" flags="in" index="3uibUv">
<reference id="1107535924139" name="classifier" index="3uigEE" />
</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="1073239437375" name="jetbrains.mps.baseLanguage.structure.NotEqualsExpression" flags="nn" index="3y3z36" />
<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" />
<child id="1163668934364" name="ifFalse" index="3K4GZi" />
</concept>
</language>
<language id="446c26eb-2b7b-4bf0-9b35-f83fa582753e" name="jetbrains.mps.lang.modelapi">
<concept id="4733039728785194814" name="jetbrains.mps.lang.modelapi.structure.NamedNodeReference" flags="ng" index="ZC_QK">
@ -24,9 +67,6 @@
</concept>
</language>
<language id="35320f26-77cb-4c55-be9f-a97a27770af1" name="jetbrains.mps.logic">
<concept id="8456919074574710634" name="jetbrains.mps.logic.structure.ExpressionItem" flags="ng" index="37jhX">
<child id="8456919074574710741" name="code" index="37jj2" />
</concept>
<concept id="8169506320648805904" name="jetbrains.mps.logic.structure.LogicalVariableDeclarationContainer" flags="ng" index="29MRiA">
<child id="6399471711045617306" name="dataType" index="3vLBG7" />
<child id="3063948360254832884" name="declaration" index="3XD1gS" />
@ -52,6 +92,10 @@
<concept id="7400021826774799413" name="jetbrains.mps.lang.smodel.structure.NodePointerExpression" flags="ng" index="2tJFMh">
<child id="7400021826774799510" name="ref" index="2tJFKM" />
</concept>
<concept id="1172008320231" name="jetbrains.mps.lang.smodel.structure.Node_IsNotNullOperation" flags="nn" index="3x8VRR" />
<concept id="1138055754698" name="jetbrains.mps.lang.smodel.structure.SNodeType" flags="in" index="3Tqbb2">
<reference id="1138405853777" name="concept" index="ehGHo" />
</concept>
</language>
<language id="ceab5195-25ea-4f22-9b92-103b95ca8c0c" name="jetbrains.mps.lang.core">
<concept id="1169194658468" name="jetbrains.mps.lang.core.structure.INamedConcept" flags="ng" index="TrEIO">
@ -59,6 +103,9 @@
</concept>
</language>
<language id="c4803b19-6d89-4a3b-bf82-390769514add" name="jetbrains.mps.lang.coderules">
<concept id="1618328391714763069" name="jetbrains.mps.lang.coderules.structure.MacroTable" flags="ng" index="0oKg$">
<child id="1618328391714763070" name="macro" index="0oKgB" />
</concept>
<concept id="861509610434242029" name="jetbrains.mps.lang.coderules.structure.TermConstructor" flags="ng" index="ns1u0">
<reference id="861509610434243078" name="decl" index="ns1xF" />
<child id="861509610434243076" name="override" index="ns1xD" />
@ -84,6 +131,28 @@
<child id="3575255234175157601" name="template" index="1nK1Vg" />
</concept>
<concept id="2381360340662937504" name="jetbrains.mps.lang.coderules.structure.TermType" flags="ig" index="32pEOW" />
<concept id="6097203247139556923" name="jetbrains.mps.lang.coderules.structure.CallMacroTemplate" flags="ng" index="3hwh0R">
<child id="6097203247147235901" name="logical" index="3h32gL" />
<child id="6097203247141261094" name="code" index="3hEL4E" />
<child id="6097203247141280536" name="variable" index="3hEOkk" />
<child id="6097203247142518497" name="parameter" index="3hP23H" />
</concept>
<concept id="6097203247142995359" name="jetbrains.mps.lang.coderules.structure.CallMacroParameterReference" flags="ng" index="3hN9Ij">
<reference id="6097203247143507437" name="declaration" index="3hLkJx" />
</concept>
<concept id="6097203247142432582" name="jetbrains.mps.lang.coderules.structure.CallMacroParameterDeclaration" flags="ng" index="3hPv5a">
<child id="6097203247142468229" name="type" index="3hPmi9" />
</concept>
<concept id="6097203247182936001" name="jetbrains.mps.lang.coderules.structure.ExpandMacroConstraint" flags="ng" index="3jbYBd">
<reference id="6097203247182937177" name="template" index="3jbY9l" />
<child id="6097203247182937145" name="input" index="3jbY8P" />
<child id="6097203247182937143" name="logical" index="3jbY8V" />
</concept>
<concept id="6097203247184206287" name="jetbrains.mps.lang.coderules.structure.CallMacroConstraint" flags="ng" index="3jm4v3">
<reference id="6097203247184207800" name="template" index="3jm46O" />
<child id="6097203247185219723" name="argument" index="3jicU7" />
<child id="6097203247184212024" name="logical" index="3jm6SO" />
</concept>
<concept id="3575255234174969639" name="jetbrains.mps.lang.coderules.structure.ConstraintRule" flags="ng" index="1nLNMm">
<child id="4814011019633607808" name="parameter" index="0Rg$4" />
<child id="3575255234174969658" name="head" index="1nLNMb" />
@ -95,14 +164,22 @@
<concept id="3575255234174969664" name="jetbrains.mps.lang.coderules.structure.ConstraintRuleStatement" flags="ng" index="1nLNNL">
<child id="3575255234174969665" name="rule" index="1nLNNK" />
</concept>
<concept id="8908809128801951597" name="jetbrains.mps.lang.coderules.structure.MacroBodyLogicalDeclaration" flags="ng" index="3uniRu" />
<concept id="7674753015762572646" name="jetbrains.mps.lang.coderules.structure.BodyBlock" flags="ng" index="3xSepi">
<child id="7674753015762572647" name="body" index="3xSepj" />
</concept>
<concept id="7368070394770780974" name="jetbrains.mps.lang.coderules.structure.UnifiesConstraint" flags="ng" index="3A8Hvi">
<child id="7368070394770793930" name="value" index="3A8w4Q" />
<child id="7368070394770793388" name="assignee" index="3A8wtg" />
</concept>
<concept id="7368070394766963750" name="jetbrains.mps.lang.coderules.structure.Head" flags="ng" index="3Aq93q" />
<concept id="7368070394766963523" name="jetbrains.mps.lang.coderules.structure.RuleComponent" flags="ng" index="3Aq9uZ">
<child id="2316688792939037645" name="logic" index="3Ip0Jz" />
</concept>
<concept id="7368070394766966388" name="jetbrains.mps.lang.coderules.structure.Body" flags="ng" index="3Aq9E8" />
<concept id="7368070394766978092" name="jetbrains.mps.lang.coderules.structure.EmitConstraintStatement" flags="ng" index="3Aqczg">
<child id="7368070394767031348" name="constraint" index="3Aqpz8" />
</concept>
<concept id="7368070394767045637" name="jetbrains.mps.lang.coderules.structure.UserConstraint" flags="ng" index="3Aqt3T">
<reference id="7368070394767091750" name="template" index="3AqCNq" />
<child id="7368070394768117915" name="argument" index="3AunhB" />
@ -125,7 +202,7 @@
<ref role="2efqH6" to="kqnc:JOGAOsVt29" resolve="Terms" />
<node concept="ns1x$" id="3MFPGC50Ab3" role="ns1xc">
<property role="TrG5h" value="sequence" />
<ref role="ns1xW" to="kqnc:4lCLOtwq2MF" resolve="type" />
<ref role="ns1xW" to="kqnc:3Z1xyIvO9F3" resolve="runtimeType" />
<node concept="nspSf" id="3MFPGC50Ab4" role="ns1xx">
<node concept="nstbe" id="3MFPGC50Aiu" role="nspSe">
<property role="TrG5h" value="elem" />
@ -218,182 +295,101 @@
</node>
</node>
</node>
<node concept="1nLNMY" id="3MFPGC50D1T" role="1nK1Vg">
<property role="TrG5h" value="converts_sequence_Iterable" />
<node concept="3clFbS" id="3MFPGC50D1U" role="1nLNMH">
<node concept="1nLNNL" id="3MFPGC50D1V" role="3cqZAp">
<node concept="1nLNMm" id="3MFPGC50D1W" role="1nLNNK">
<node concept="3Aq93q" id="3MFPGC50D1X" role="1nLNMb">
<node concept="3I6sU6" id="3MFPGC50D1Y" role="3Ip0Jz">
<node concept="3I6s7M" id="3MFPGC50D1Z" role="3I6sU7">
<node concept="3Aqt3T" id="3MFPGC50D20" role="3I6s78">
<ref role="3AqCNq" to="kqnc:3Qp4N06bUPu" resolve="convertsTo" />
<node concept="1HFMs5" id="3MFPGC50D21" role="3AunhB">
<node concept="a7P8L" id="3MFPGC50D22" role="1uarlU">
<ref role="a7OzE" node="3MFPGC50D2f" resolve="T" />
</node>
<node concept="ns1u0" id="3MFPGC50D9n" role="1uarlW">
<ref role="ns1xF" to="kqnc:JOGAOsVt2a" resolve="classifier" />
</node>
</node>
<node concept="1HFMs5" id="3MFPGC50D27" role="3AunhB">
<node concept="a7P8L" id="3MFPGC50D28" role="1uarlU">
<ref role="a7OzE" node="3MFPGC50D2e" resolve="S" />
</node>
<node concept="ns1u0" id="3MFPGC50D29" role="1uarlW">
<ref role="ns1xF" node="3MFPGC50Ab3" resolve="sequence" />
<node concept="nsMwS" id="3MFPGC50D2a" role="ns1xD">
<ref role="nsMwP" node="3MFPGC50Aiu" resolve="elem" />
<node concept="1nq8_$" id="3MFPGC50D2b" role="nsMwV">
<node concept="a7P8L" id="3MFPGC50D2c" role="1nq8_t">
<ref role="a7OzE" node="3MFPGC50D2g" resolve="SElem" />
</node>
</node>
</node>
</node>
</node>
</node>
</node>
<node concept="0oKg$" id="1oUE7CXmlxI">
<property role="TrG5h" value="SequenceTypeMacro" />
<node concept="3hwh0R" id="1oUE7CX4dOb" role="0oKgB">
<property role="TrG5h" value="elementType" />
<node concept="3hPv5a" id="1oUE7CX4dOf" role="3hP23H">
<property role="TrG5h" value="elementType" />
<node concept="3Tqbb2" id="1oUE7CX4dOh" role="3hPmi9">
<ref role="ehGHo" to="tpee:fz3vP1H" resolve="Type" />
</node>
</node>
<node concept="3hPv5a" id="1oUE7CXkYVc" role="3hP23H">
<property role="TrG5h" value="subs" />
<node concept="3uibUv" id="1oUE7CXkYVd" role="3hPmi9">
<ref role="3uigEE" to="kqnc:6EY0p2w8VOq" resolve="TypeVarSubstitution" />
</node>
</node>
<node concept="3hPv5a" id="1oUE7CX4dOj" role="3hP23H">
<property role="TrG5h" value="allowUncheckedConversion" />
<node concept="3uibUv" id="1oUE7CX4dOl" role="3hPmi9">
<ref role="3uigEE" to="wyt6:~Boolean" resolve="Boolean" />
</node>
</node>
<node concept="3clFbS" id="1oUE7CX4dOd" role="3hEL4E">
<node concept="3clFbJ" id="1oUE7CX4dPF" role="3cqZAp">
<node concept="3clFbS" id="1oUE7CX4dPH" role="3clFbx">
<node concept="3Aqczg" id="1oUE7CX4epC" role="3cqZAp">
<node concept="3jbYBd" id="1oUE7CX4ep_" role="3Aqpz8">
<ref role="3jbY9l" to="kqnc:5itBwMau8m1" resolve="lift" />
<node concept="3hN9Ij" id="1oUE7CX4epK" role="3jbY8P">
<ref role="3hLkJx" node="1oUE7CX4dOf" resolve="elementType" />
</node>
</node>
</node>
<node concept="3NuqgR" id="3MFPGC50D2d" role="0Rg$4">
<node concept="aZer4" id="3MFPGC50D2e" role="3XD1gS">
<property role="TrG5h" value="S" />
</node>
<node concept="aZer4" id="3MFPGC50D2f" role="3XD1gS">
<property role="TrG5h" value="T" />
</node>
<node concept="aZer4" id="3MFPGC50D2g" role="3XD1gS">
<property role="TrG5h" value="SElem" />
</node>
<node concept="32pEOW" id="3MFPGC50D2i" role="3vLBG7" />
</node>
<node concept="3xSepi" id="3MFPGC50D2j" role="3xSepv">
<node concept="3Aq9E8" id="3MFPGC50D2k" role="3xSepj">
<node concept="3I6sU6" id="3MFPGC50D2l" role="3Ip0Jz">
<node concept="3I6s7M" id="3MFPGC50DX3" role="3I6sU7">
<node concept="3Aqt3T" id="3MFPGC50DX2" role="3I6s78">
<ref role="3AqCNq" to="kqnc:3Qp4N06bUPu" resolve="convertsTo" />
<node concept="a7P8L" id="3MFPGC50DZl" role="3AunhB">
<ref role="a7OzE" node="3MFPGC50D2f" resolve="T" />
</node>
<node concept="ns1u0" id="3MFPGC50E0b" role="3AunhB">
<ref role="ns1xF" to="kqnc:JOGAOsVt2a" resolve="classifier" />
<node concept="nsMwS" id="3MFPGC50E0W" role="ns1xD">
<ref role="nsMwP" to="kqnc:JOGAOsVt2c" resolve="classifier" />
<node concept="2tJFMh" id="3MFPGC50E3a" role="nsMwV">
<node concept="ZC_QK" id="3MFPGC50E40" role="2tJFKM">
<ref role="2aWVGs" to="wyt6:~Iterable" resolve="Iterable" />
</node>
</node>
</node>
<node concept="nsMwS" id="3MFPGC50Eol" role="ns1xD">
<ref role="nsMwP" to="kqnc:ZJPHcupkiC" resolve="typeParams" />
<node concept="1nq8_$" id="3MFPGC50Erl" role="nsMwV">
<node concept="Hz6ka" id="4NtT$ZxGOeo" role="1nq8_t">
<node concept="KCUsM" id="4NtT$ZxGOeI" role="Hz6kd">
<node concept="3wAshV" id="4NtT$ZxGOf7" role="KCVpo">
<node concept="a7P8L" id="4NtT$ZxGOf6" role="3wAq21">
<ref role="a7OzE" node="3MFPGC50D2g" resolve="SElem" />
</node>
</node>
</node>
</node>
</node>
</node>
</node>
</node>
</node>
<node concept="a7P8L" id="1oUE7CX4epE" role="3jbY8V">
<ref role="a7OzE" node="1oUE7CX4eol" resolve="Type" />
</node>
</node>
</node>
</node>
</node>
<node concept="3clFbH" id="3MFPGC50F5O" role="3cqZAp" />
<node concept="1nLNNL" id="3MFPGC50F9P" role="3cqZAp">
<node concept="1nLNMm" id="3MFPGC50F9Q" role="1nLNNK">
<node concept="3Aq93q" id="3MFPGC50F9R" role="1nLNMb">
<node concept="3I6sU6" id="3MFPGC50F9S" role="3Ip0Jz">
<node concept="3I6s7M" id="3MFPGC50F9T" role="3I6sU7">
<node concept="3Aqt3T" id="3MFPGC50F9U" role="3I6s78">
<ref role="3AqCNq" to="kqnc:3Qp4N06bUPu" resolve="convertsTo" />
<node concept="1HFMs5" id="3MFPGC50F9Y" role="3AunhB">
<node concept="a7P8L" id="3MFPGC50FoC" role="1uarlU">
<ref role="a7OzE" node="3MFPGC50Fa6" resolve="T" />
</node>
<node concept="ns1u0" id="3MFPGC50Fa0" role="1uarlW">
<ref role="ns1xF" node="3MFPGC50Ab3" resolve="sequence" />
<node concept="nsMwS" id="3MFPGC50Fa1" role="ns1xD">
<ref role="nsMwP" node="3MFPGC50Aiu" resolve="elem" />
<node concept="1nq8_$" id="3MFPGC50Fa2" role="nsMwV">
<node concept="37jhX" id="3MFPGC50Fr2" role="1nq8_t">
<node concept="1nq8_$" id="3MFPGC50Fr1" role="37jj2">
<node concept="a7P8L" id="3MFPGC50Fr0" role="1nq8_t">
<ref role="a7OzE" node="3MFPGC50Fa8" resolve="TElem" />
</node>
</node>
</node>
</node>
</node>
<node concept="2OqwBi" id="1oUE7CX4e0i" role="3clFbw">
<node concept="3hN9Ij" id="1oUE7CX4dPQ" role="2Oq$k0">
<ref role="3hLkJx" node="1oUE7CX4dOf" resolve="elementType" />
</node>
<node concept="3x8VRR" id="1oUE7CX4eed" role="2OqNvi" />
</node>
<node concept="9aQIb" id="1oUE7CX4eif" role="9aQIa">
<node concept="3clFbS" id="1oUE7CX4eig" role="9aQI4">
<node concept="3cpWs8" id="3R6X$QWh1eu" role="3cqZAp">
<node concept="3cpWsn" id="3R6X$QWh1ev" role="3cpWs9">
<property role="TrG5h" value="allowUnchecked" />
<node concept="10P_77" id="3R6X$QWh1ew" role="1tU5fm" />
<node concept="3K4zz7" id="3R6X$QWh1ex" role="33vP2m">
<node concept="3clFbT" id="3R6X$QWh1ey" role="3K4GZi">
<property role="3clFbU" value="false" />
</node>
<node concept="3y3z36" id="3R6X$QWh1ez" role="3K4Cdx">
<node concept="10Nm6u" id="3R6X$QWh1e$" role="3uHU7w" />
<node concept="3hN9Ij" id="5itBwMb2eRK" role="3uHU7B">
<ref role="3hLkJx" node="1oUE7CX4dOj" resolve="allowUncheckedConversion" />
</node>
</node>
<node concept="1HFMs5" id="3MFPGC50FtO" role="3AunhB">
<node concept="a7P8L" id="3MFPGC50FtM" role="1uarlU">
<ref role="a7OzE" node="3MFPGC50Fa5" resolve="S" />
</node>
<node concept="ns1u0" id="3MFPGC50Fwi" role="1uarlW">
<ref role="ns1xF" to="kqnc:JOGAOsVt2a" resolve="classifier" />
</node>
<node concept="3hN9Ij" id="5itBwMb2h4m" role="3K4E3e">
<ref role="3hLkJx" node="1oUE7CX4dOj" resolve="allowUncheckedConversion" />
</node>
</node>
</node>
</node>
</node>
<node concept="3NuqgR" id="3MFPGC50Fa4" role="0Rg$4">
<node concept="aZer4" id="3MFPGC50Fa5" role="3XD1gS">
<property role="TrG5h" value="S" />
</node>
<node concept="aZer4" id="3MFPGC50Fa6" role="3XD1gS">
<property role="TrG5h" value="T" />
</node>
<node concept="aZer4" id="3MFPGC50Fa8" role="3XD1gS">
<property role="TrG5h" value="TElem" />
</node>
<node concept="32pEOW" id="3MFPGC50Fa9" role="3vLBG7" />
</node>
<node concept="3xSepi" id="3MFPGC50Faa" role="3xSepv">
<node concept="3Aq9E8" id="3MFPGC50Fab" role="3xSepj">
<node concept="3I6sU6" id="3MFPGC50Fac" role="3Ip0Jz">
<node concept="3I6s7M" id="3MFPGC50Fad" role="3I6sU7">
<node concept="3Aqt3T" id="3MFPGC50Fae" role="3I6s78">
<ref role="3AqCNq" to="kqnc:3Qp4N06bUPu" resolve="convertsTo" />
<node concept="ns1u0" id="3MFPGC50Fag" role="3AunhB">
<ref role="ns1xF" to="kqnc:JOGAOsVt2a" resolve="classifier" />
<node concept="nsMwS" id="3MFPGC50Fah" role="ns1xD">
<ref role="nsMwP" to="kqnc:JOGAOsVt2c" resolve="classifier" />
<node concept="2tJFMh" id="3MFPGC50Fai" role="nsMwV">
<node concept="ZC_QK" id="3MFPGC50Faj" role="2tJFKM">
<ref role="2aWVGs" to="wyt6:~Iterable" resolve="Iterable" />
</node>
</node>
</node>
<node concept="nsMwS" id="3MFPGC50Fak" role="ns1xD">
<ref role="nsMwP" to="kqnc:ZJPHcupkiC" resolve="typeParams" />
<node concept="1nq8_$" id="4NtT$ZxGOm4" role="nsMwV">
<node concept="Hz6ka" id="4NtT$ZxGOm3" role="1nq8_t">
<node concept="KCUsM" id="4NtT$ZxGOm9" role="Hz6kd">
<node concept="3wAshV" id="4NtT$ZxGOmf" role="KCVpo">
<node concept="a7P8L" id="4NtT$ZxGOme" role="3wAq21">
<ref role="a7OzE" node="3MFPGC50Fa8" resolve="TElem" />
</node>
</node>
</node>
</node>
</node>
</node>
<node concept="3clFbJ" id="1oUE7CX4enQ" role="3cqZAp">
<node concept="3clFbS" id="1oUE7CX4enS" role="3clFbx">
<node concept="3Aqczg" id="1oUE7CX4ept" role="3cqZAp">
<node concept="3A8Hvi" id="1oUE7CX4epq" role="3Aqpz8">
<node concept="a7P8L" id="1oUE7CX4epu" role="3A8wtg">
<ref role="a7OzE" node="1oUE7CX4eol" resolve="Type" />
</node>
<node concept="a7P8L" id="3MFPGC52BAL" role="3AunhB">
<ref role="a7OzE" node="3MFPGC50Fa5" resolve="S" />
<node concept="ns1u0" id="1oUE7CX4ep$" role="3A8w4Q">
<ref role="ns1xF" to="kqnc:JOGAOsVt3c" resolve="_null_" />
</node>
</node>
</node>
</node>
<node concept="37vLTw" id="1oUE7CX4eo1" role="3clFbw">
<ref role="3cqZAo" node="3R6X$QWh1ev" resolve="allowUnchecked" />
</node>
<node concept="9aQIb" id="1oUE7CX4ep4" role="9aQIa">
<node concept="3clFbS" id="1oUE7CX4ep5" role="9aQI4">
<node concept="3Aqczg" id="3qUnz9vkXjX" role="3cqZAp">
<node concept="3jm4v3" id="3qUnz9vkXjV" role="3Aqpz8">
<ref role="3jm46O" to="kqnc:3qUnz9vk$1o" resolve="classifierTypeNonGeneric" />
<node concept="2tJFMh" id="3qUnz9vkXkb" role="3jicU7">
<node concept="ZC_QK" id="3qUnz9vkXw7" role="2tJFKM">
<ref role="2aWVGs" to="wyt6:~Object" resolve="Object" />
</node>
</node>
<node concept="a7P8L" id="1oUE7CX4eoX" role="3jm6SO">
<ref role="a7OzE" node="1oUE7CX4eol" resolve="Type" />
</node>
</node>
</node>
</node>
@ -403,6 +399,170 @@
</node>
</node>
</node>
<node concept="3uniRu" id="1oUE7CX4eok" role="3h32gL">
<node concept="aZer4" id="1oUE7CX4eol" role="3XD1gS">
<property role="TrG5h" value="Type" />
</node>
<node concept="32pEOW" id="1oUE7CX4eou" role="3vLBG7" />
</node>
</node>
<node concept="3hwh0R" id="3Z1xyIvWi5s" role="0oKgB">
<property role="TrG5h" value="getSeqElementType" />
<node concept="3clFbS" id="3Z1xyIvWi5u" role="3hEL4E">
<node concept="3Aqczg" id="3Z1xyIvWi7S" role="3cqZAp">
<node concept="3Aqt3T" id="3Z1xyIvWi7R" role="3Aqpz8">
<ref role="3AqCNq" to="kqnc:3Qp4N06bUPu" resolve="convertsTo" />
<node concept="a7P8L" id="3Z1xyIvWi7X" role="3AunhB">
<ref role="a7OzE" node="3Z1xyIvWi7v" resolve="Sequence" />
</node>
<node concept="ns1u0" id="3Z1xyIvWi87" role="3AunhB">
<ref role="ns1xF" node="3MFPGC50Ab3" resolve="sequence" />
<node concept="nsMwS" id="3Z1xyIvWi8a" role="ns1xD">
<ref role="nsMwP" node="3MFPGC50Aiu" resolve="elem" />
<node concept="1nq8_$" id="3Z1xyIvWi8f" role="nsMwV">
<node concept="a7P8L" id="3Z1xyIvWi8e" role="1nq8_t">
<ref role="a7OzE" node="3Z1xyIvWi72" resolve="Elem" />
</node>
</node>
</node>
</node>
</node>
</node>
</node>
<node concept="3uniRu" id="3Z1xyIvWi71" role="3h32gL">
<node concept="aZer4" id="3Z1xyIvWi72" role="3XD1gS">
<property role="TrG5h" value="Elem" />
</node>
<node concept="aZer4" id="3Z1xyIvWi7v" role="3XD1gS">
<property role="TrG5h" value="Sequence" />
</node>
<node concept="32pEOW" id="3Z1xyIvWi7e" role="3vLBG7" />
</node>
</node>
<node concept="3hwh0R" id="1oUE7CXmlxK" role="0oKgB">
<property role="TrG5h" value="sequenceType" />
<node concept="3hPv5a" id="1oUE7CXmlxO" role="3hP23H">
<property role="TrG5h" value="elementType" />
<node concept="3Tqbb2" id="1oUE7CXmlyh" role="3hPmi9">
<ref role="ehGHo" to="tpee:fz3vP1H" resolve="Type" />
</node>
</node>
<node concept="3hPv5a" id="1oUE7CXmlyj" role="3hP23H">
<property role="TrG5h" value="subs" />
<node concept="3uibUv" id="1oUE7CXmlyl" role="3hPmi9">
<ref role="3uigEE" to="kqnc:6EY0p2w8VOq" resolve="TypeVarSubstitution" />
</node>
</node>
<node concept="3hPv5a" id="1oUE7CXmmlr" role="3hP23H">
<property role="TrG5h" value="allowUncheckedConversion" />
<node concept="3uibUv" id="1oUE7CXmmlt" role="3hPmi9">
<ref role="3uigEE" to="wyt6:~Boolean" resolve="Boolean" />
</node>
</node>
<node concept="3clFbS" id="1oUE7CXmlxM" role="3hEL4E">
<node concept="3Aqczg" id="1oUE7CXmmkN" role="3cqZAp">
<node concept="3jm4v3" id="1oUE7CXmmkL" role="3Aqpz8">
<ref role="3jm46O" node="1oUE7CX4dOb" resolve="elementType" />
<node concept="3hN9Ij" id="1oUE7CXmmln" role="3jicU7">
<ref role="3hLkJx" node="1oUE7CXmlxO" resolve="elementType" />
</node>
<node concept="3hN9Ij" id="1oUE7CXmmlw" role="3jicU7">
<ref role="3hLkJx" node="1oUE7CXmlyj" resolve="subs" />
</node>
<node concept="3hN9Ij" id="1oUE7CXmml_" role="3jicU7">
<ref role="3hLkJx" node="1oUE7CXmmlr" resolve="allowUncheckedConversion" />
</node>
<node concept="a7P8L" id="1oUE7CXmmlg" role="3jm6SO">
<ref role="a7OzE" node="1oUE7CXmmkR" resolve="Elem" />
</node>
</node>
</node>
<node concept="3Aqczg" id="3Z1xyIvRM8Q" role="3cqZAp">
<node concept="3jm4v3" id="3Z1xyIvRM8N" role="3Aqpz8">
<ref role="3jm46O" node="3Z1xyIvRM2K" resolve="sequenceTerm" />
<node concept="a7P8L" id="3Z1xyIvRM93" role="3jm6SO">
<ref role="a7OzE" node="1oUE7CXmlxS" resolve="Type" />
</node>
<node concept="a7P8L" id="3Z1xyIvRM9b" role="3jm6SO">
<ref role="a7OzE" node="1oUE7CXmmkR" resolve="Elem" />
</node>
</node>
</node>
</node>
<node concept="3uniRu" id="1oUE7CXmlxR" role="3h32gL">
<node concept="aZer4" id="1oUE7CXmlxS" role="3XD1gS">
<property role="TrG5h" value="Type" />
</node>
<node concept="32pEOW" id="1oUE7CXmly1" role="3vLBG7" />
</node>
<node concept="3uniRu" id="1oUE7CXmmkQ" role="3hEOkk">
<node concept="aZer4" id="1oUE7CXmmkR" role="3XD1gS">
<property role="TrG5h" value="Elem" />
</node>
<node concept="32pEOW" id="1oUE7CXmml0" role="3vLBG7" />
</node>
</node>
<node concept="3hwh0R" id="3Z1xyIvRM2K" role="0oKgB">
<property role="TrG5h" value="sequenceTerm" />
<node concept="3clFbS" id="3Z1xyIvRM2M" role="3hEL4E">
<node concept="3Aqczg" id="1oUE7CXmn82" role="3cqZAp">
<node concept="3A8Hvi" id="1oUE7CXmn8h" role="3Aqpz8">
<node concept="a7P8L" id="1oUE7CXmn8n" role="3A8wtg">
<ref role="a7OzE" node="3Z1xyIvRM6F" resolve="Type" />
</node>
<node concept="ns1u0" id="1oUE7CXmn8t" role="3A8w4Q">
<ref role="ns1xF" node="3MFPGC50Ab3" resolve="sequence" />
<node concept="nsMwS" id="1oUE7CXmn8u" role="ns1xD">
<ref role="nsMwP" node="3MFPGC50Aiu" resolve="elem" />
<node concept="1nq8_$" id="1oUE7CXmn8x" role="nsMwV">
<node concept="a7P8L" id="1oUE7CXmn8w" role="1nq8_t">
<ref role="a7OzE" node="3Z1xyIvRM78" resolve="Elem" />
</node>
</node>
</node>
<node concept="nsMwS" id="3Z1xyIvO9Q_" role="ns1xD">
<ref role="nsMwP" to="kqnc:3Z1xyIvO9Gw" resolve="runtime" />
<node concept="1nq8_$" id="3Z1xyIvO9QH" role="nsMwV">
<node concept="ns1u0" id="3Z1xyIvO9QG" role="1nq8_t">
<ref role="ns1xF" to="kqnc:JOGAOsVt2a" resolve="classifier" />
<node concept="nsMwS" id="3Z1xyIvO9QO" role="ns1xD">
<ref role="nsMwP" to="kqnc:JOGAOsVt2c" resolve="classifier" />
<node concept="2tJFMh" id="3Z1xyIvO9R0" role="nsMwV">
<node concept="ZC_QK" id="3Z1xyIvO9R8" role="2tJFKM">
<ref role="2aWVGs" to="wyt6:~Iterable" resolve="Iterable" />
</node>
</node>
</node>
<node concept="nsMwS" id="3Z1xyIvOa9j" role="ns1xD">
<ref role="nsMwP" to="kqnc:ZJPHcupkiC" resolve="typeParams" />
<node concept="1nq8_$" id="3Z1xyIvOa9z" role="nsMwV">
<node concept="Hz6ka" id="3Z1xyIvOa9y" role="1nq8_t">
<node concept="KCUsM" id="3Z1xyIvOa9E" role="Hz6kd">
<node concept="3wAshV" id="3Z1xyIvOa9L" role="KCVpo">
<node concept="a7P8L" id="3Z1xyIvOa9K" role="3wAq21">
<ref role="a7OzE" node="3Z1xyIvRM78" resolve="Elem" />
</node>
</node>
</node>
</node>
</node>
</node>
</node>
</node>
</node>
</node>
</node>
</node>
</node>
<node concept="3uniRu" id="3Z1xyIvRM6E" role="3h32gL">
<node concept="aZer4" id="3Z1xyIvRM6F" role="3XD1gS">
<property role="TrG5h" value="Type" />
</node>
<node concept="aZer4" id="3Z1xyIvRM78" role="3XD1gS">
<property role="TrG5h" value="Elem" />
</node>
<node concept="32pEOW" id="3Z1xyIvRM6R" role="3vLBG7" />
</node>
</node>
</node>
</model>