Ensure only relevant aspects selected for certain queries

While check/checkTypeOf queries are required to
process a whole root, other types of queries
can be sensitive to what aspects to include in
the processing.

Aspects are sorted in strongly-connected components,
among which the relevant one is selected.
This commit is contained in:
Fedor Isakov 2022-06-06 13:00:04 +02:00
parent ea3e7c4719
commit 88aaf7898c
7 changed files with 1953 additions and 553 deletions

View File

@ -44,11 +44,27 @@
</languageVersions>
<dependencyVersions>
<module reference="3f233e7f-b8a6-46d2-a57f-795d56775243(Annotations)" version="0" />
<module reference="847a3235-09f9-403c-b6a9-1c294a212e92(Ant)" version="0" />
<module reference="6354ebe7-c22a-4a0f-ac54-50b52ab9b065(JDK)" version="0" />
<module reference="49808fad-9d41-4b96-83fa-9231640f6b2b(JUnit)" version="0" />
<module reference="6ed54515-acc8-4d1e-a16c-9fd6cfe951ea(MPS.Core)" version="0" />
<module reference="1ed103c3-3aa6-49b7-9c21-6765ee11f224(MPS.Editor)" version="0" />
<module reference="498d89d2-c2e9-11e2-ad49-6cf049e62fe5(MPS.IDEA)" version="0" />
<module reference="8865b7a8-5271-43d3-884c-6fd1d9cfdd34(MPS.OpenAPI)" version="0" />
<module reference="742f6602-5a2f-4313-aa6e-ae1cd4ffdc61(MPS.Platform)" version="0" />
<module reference="920eaa0e-ecca-46bc-bee7-4e5c59213dd6(Testbench)" version="0" />
<module reference="f3061a53-9226-4cc5-a443-f952ceaf5816(jetbrains.mps.baseLanguage)" version="0" />
<module reference="443f4c36-fcf5-4eb6-9500-8d06ed259e3e(jetbrains.mps.baseLanguage.classifiers)" version="0" />
<module reference="52b81ac7-93fd-4e9e-b972-4995882da6d4(jetbrains.mps.baseLanguage.references.runtime)" version="0" />
<module reference="e39e4a59-8cb6-498e-860e-8fa8361c0d90(jetbrains.mps.baseLanguage.scopes)" version="0" />
<module reference="f61473f9-130f-42f6-b98d-6c438812c2f6(jetbrains.mps.baseLanguage.unitTest)" version="0" />
<module reference="fdaaf35f-8ee3-4c37-b09d-9efaeaaa7a41(jetbrains.mps.core.tool.environment)" version="0" />
<module reference="2d3c70e9-aab2-4870-8d8d-6036800e4103(jetbrains.mps.kernel)" version="0" />
<module reference="ceab5195-25ea-4f22-9b92-103b95ca8c0c(jetbrains.mps.lang.core)" version="0" />
<module reference="8585453e-6bfb-4d80-98de-b16074f1d86c(jetbrains.mps.lang.test)" version="0" />
<module reference="e55e6749-03cb-4ea7-9695-2322bab791c1(jetbrains.mps.lang.test.matcher)" version="0" />
<module reference="707c4fde-f79a-44b5-b3d7-b5cef8844ccf(jetbrains.mps.lang.test.runtime)" version="0" />
<module reference="9ded098b-ad6a-4657-bfd9-48636cfe8bc3(jetbrains.mps.lang.traceable)" version="0" />
<module reference="3a1f0f04-b5e0-43be-884e-b856bfdeca21(jetbrains.mps.typechecking.testlang)" version="0" />
<module reference="1f130d77-1d29-44cb-bef3-bde05978c2c7(jetbrains.mps.typechecking.testlang#3575255234175341581)" version="0" />
</dependencyVersions>
@ -77,7 +93,6 @@
<language slang="l:aee9cad2-acd4-4608-aef2-0004f6a1cdbd:jetbrains.mps.lang.actions" version="4" />
<language slang="l:f159adf4-3c93-40f9-9c5a-1f245a8697af:jetbrains.mps.lang.aspect" version="2" />
<language slang="l:af65afd8-f0dd-4942-87d9-63a55f2a9db1:jetbrains.mps.lang.behavior" version="2" />
<language slang="l:fe9d76d7-5809-45c9-ae28-a40915b4d6ff:jetbrains.mps.lang.checkedName" version="1" />
<language slang="l:c4803b19-6d89-4a3b-bf82-390769514add:jetbrains.mps.lang.coderules" version="23" />
<language slang="l:3f4bc5f5-c6c1-4a28-8b10-c83066ffa4a1:jetbrains.mps.lang.constraints" version="6" />
<language slang="l:e51810c5-7308-4642-bcb6-469e61b5dd18:jetbrains.mps.lang.constraints.msg.specification" version="0" />
@ -123,9 +138,9 @@
<module reference="8865b7a8-5271-43d3-884c-6fd1d9cfdd34(MPS.OpenAPI)" version="0" />
<module reference="742f6602-5a2f-4313-aa6e-ae1cd4ffdc61(MPS.Platform)" version="0" />
<module reference="f3061a53-9226-4cc5-a443-f952ceaf5816(jetbrains.mps.baseLanguage)" version="0" />
<module reference="c7d5b9dd-a05f-4be2-bc73-f2e16994cc67(jetbrains.mps.baseLanguage.lightweightdsl)" version="0" />
<module reference="e39e4a59-8cb6-498e-860e-8fa8361c0d90(jetbrains.mps.baseLanguage.scopes)" version="0" />
<module reference="f97d84b2-8bad-4fdd-8ede-da17b3eacf4c(jetbrains.mps.coderules)" version="0" />
<module reference="f113d56b-63e3-4120-a89c-2f5dcb8c6290(jetbrains.mps.coderules.runtime)" version="0" />
<module reference="6998f568-f0e9-473b-b4a8-9efb6499fc8d(jetbrains.mps.coderules.typechecking)" version="0" />
<module reference="2d3c70e9-aab2-4870-8d8d-6036800e4103(jetbrains.mps.kernel)" version="0" />
<module reference="f159adf4-3c93-40f9-9c5a-1f245a8697af(jetbrains.mps.lang.aspect)" version="0" />

View File

@ -539,13 +539,13 @@
</node>
<node concept="3clFbS" id="1GGmKhceXt4" role="3clF47">
<node concept="3clFbF" id="1GGmKhceXt5" role="3cqZAp">
<node concept="2YIFZM" id="1GGmKhcf3SM" role="3clFbG">
<ref role="37wK5l" to="tj24:1T5MAgPzd2i" resolve="typeOf" />
<node concept="2YIFZM" id="6dGwhn$_KLh" role="3clFbG">
<ref role="37wK5l" to="tj24:6v6oK25mf2p" resolve="checkTypeOf" />
<ref role="1Pybhc" to="tj24:5EDW3XDYg8Y" resolve="TypecheckingQueries" />
<node concept="37vLTw" id="1GGmKhcf80I" role="37wK5m">
<node concept="37vLTw" id="6dGwhn$_KLi" role="37wK5m">
<ref role="3cqZAo" node="1GGmKhcf4B9" resolve="subject" />
</node>
<node concept="37vLTw" id="1GGmKhcf3SN" role="37wK5m">
<node concept="37vLTw" id="6dGwhn$_KLj" role="37wK5m">
<ref role="3cqZAo" node="5fMWD6Iop7s" resolve="typeCollector" />
</node>
</node>
@ -917,17 +917,23 @@
<ref role="3uigEE" to="u46i:7km57Pkjxf4" resolve="TypecheckingAspect" />
</node>
</node>
<node concept="1rXfSq" id="WJTIIoJXlr" role="33vP2m">
<ref role="37wK5l" node="WJTIIoJSIb" resolve="getRelevantClique" />
<node concept="37vLTw" id="WJTIIoJXsn" role="37wK5m">
<ref role="3cqZAo" node="tyIfzC1aQx" resolve="repo" />
</node>
<node concept="37vLTw" id="WJTIIoRxJT" role="37wK5m">
<ref role="3cqZAo" node="WJTIIoRlHX" resolve="demoModel" />
</node>
<node concept="37vLTw" id="5SC$dmouGJj" role="37wK5m">
<ref role="3cqZAo" node="1XKnVQdrLs" resolve="unit" />
<node concept="2OqwBi" id="6dGwhn$Cp1K" role="33vP2m">
<node concept="2OqwBi" id="6dGwhn$CgiV" role="2Oq$k0">
<node concept="2YIFZM" id="6dGwhn$C6Pb" role="2Oq$k0">
<ref role="37wK5l" to="u46i:78H58oeCAQS" resolve="aspectLookup" />
<ref role="1Pybhc" to="u46i:7km57Pkjxf4" resolve="TypecheckingAspect" />
<node concept="37vLTw" id="6dGwhn$C9Hp" role="37wK5m">
<ref role="3cqZAo" node="tyIfzC1aQx" resolve="repo" />
</node>
</node>
<node concept="liA8E" id="6dGwhn$Cj05" role="2OqNvi">
<ref role="37wK5l" to="fqlx:9UUIHLNig1" resolve="allForRoot" />
<node concept="37vLTw" id="6dGwhn$ClD_" role="37wK5m">
<ref role="3cqZAo" node="1XKnVQdrLs" resolve="unit" />
</node>
</node>
</node>
<node concept="1uHKPH" id="6dGwhn$CtwJ" role="2OqNvi" />
</node>
</node>
</node>

View File

@ -44,6 +44,7 @@
<import index="ksgm" ref="r:6285678b-007f-4527-bcf5-6fd38ba8c969(jetbrains.mps.lang.coderules.program)" />
<import index="psoy" ref="r:78313117-90ee-47a5-a91e-b5213df7f611(jetbrains.mps.coderules.runtime.result)" />
<import index="2gg1" ref="6ed54515-acc8-4d1e-a16c-9fd6cfe951ea/java:jetbrains.mps.errors(MPS.Core/)" />
<import index="guwi" ref="6354ebe7-c22a-4a0f-ac54-50b52ab9b065/java:java.io(JDK/)" implicit="true" />
</imports>
<registry>
<language id="8585453e-6bfb-4d80-98de-b16074f1d86c" name="jetbrains.mps.lang.test">
@ -61,6 +62,7 @@
<property id="6339244025081158986" name="needsNoWriteAction" index="3OwPAg" />
<child id="2325284917965993569" name="beforeTests" index="0EEgL" />
<child id="2325284917965993580" name="afterTests" index="0EEgW" />
<child id="1216993439383" name="methods" index="1qtyYc" />
<child id="1217501822150" name="nodesToCheck" index="1SKRRt" />
<child id="1217501895093" name="testMethods" index="1SL9yI" />
</concept>
@ -90,6 +92,9 @@
<concept id="2820489544401957797" name="jetbrains.mps.baseLanguage.structure.DefaultClassCreator" flags="nn" index="HV5vD">
<reference id="2820489544401957798" name="classifier" index="HV5vE" />
</concept>
<concept id="1154032098014" name="jetbrains.mps.baseLanguage.structure.AbstractLoopStatement" flags="nn" index="2LF5Ji">
<child id="1154032183016" name="body" index="2LFqv$" />
</concept>
<concept id="1197027756228" name="jetbrains.mps.baseLanguage.structure.DotExpression" flags="nn" index="2OqwBi">
<child id="1197027771414" name="operand" index="2Oq$k0" />
<child id="1197027833540" name="operation" index="2OqNvi" />
@ -134,6 +139,9 @@
<property id="1176718929932" name="isFinal" index="3TUv4t" />
<child id="1068431790190" name="initializer" index="33vP2m" />
</concept>
<concept id="1513279640923991009" name="jetbrains.mps.baseLanguage.structure.IGenericClassCreator" flags="ng" index="366HgL">
<property id="1513279640906337053" name="inferTypeParams" index="373rjd" />
</concept>
<concept id="1109279763828" name="jetbrains.mps.baseLanguage.structure.TypeVariableDeclaration" flags="ng" index="16euLQ" />
<concept id="1109279851642" name="jetbrains.mps.baseLanguage.structure.GenericDeclaration" flags="ng" index="16eOlS">
<child id="1109279881614" name="typeVariableDeclaration" index="16eVyc" />
@ -209,9 +217,16 @@
<concept id="8276990574909231788" name="jetbrains.mps.baseLanguage.structure.FinallyClause" flags="ng" index="1wplmZ">
<child id="8276990574909234106" name="finallyBody" index="1wplMD" />
</concept>
<concept id="1073239437375" name="jetbrains.mps.baseLanguage.structure.NotEqualsExpression" flags="nn" index="3y3z36" />
<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="5351203823916750322" name="jetbrains.mps.baseLanguage.structure.TryUniversalStatement" flags="nn" index="3J1_TO">
<child id="8276990574886367509" name="finallyClause" index="1zxBo6" />
<child id="8276990574886367508" name="body" index="1zxBo7" />
@ -260,6 +275,16 @@
<property id="8477760168144492409" name="val" index="34$_Ed" />
</concept>
</language>
<language id="443f4c36-fcf5-4eb6-9500-8d06ed259e3e" name="jetbrains.mps.baseLanguage.classifiers">
<concept id="1205752633985" name="jetbrains.mps.baseLanguage.classifiers.structure.ThisClassifierExpression" flags="nn" index="2WthIp" />
<concept id="1205756064662" name="jetbrains.mps.baseLanguage.classifiers.structure.IMemberOperation" flags="ng" index="2WEnae">
<reference id="1205756909548" name="member" index="2WH_rO" />
</concept>
<concept id="1205769003971" name="jetbrains.mps.baseLanguage.classifiers.structure.DefaultClassifierMethodDeclaration" flags="ng" index="2XrIbr" />
<concept id="1205769149993" name="jetbrains.mps.baseLanguage.classifiers.structure.DefaultClassifierMethodCallOperation" flags="nn" index="2XshWL">
<child id="1205770614681" name="actualArgument" index="2XxRq1" />
</concept>
</language>
<language id="3a13115c-633c-4c5c-bbcc-75c4219e9555" name="jetbrains.mps.lang.quotation">
<concept id="1196350785113" name="jetbrains.mps.lang.quotation.structure.Quotation" flags="nn" index="2c44tf">
<child id="1196350785114" name="quotedNode" index="2c44tc" />
@ -3034,6 +3059,90 @@
<property role="TrG5h" value="TypecheckingFacade" />
<property role="3OwPAg" value="true" />
<property role="26Nn1l" value="true" />
<node concept="2XrIbr" id="6dGwhn$qQgL" role="1qtyYc">
<property role="TrG5h" value="reportMessages" />
<node concept="37vLTG" id="6dGwhn$qRTm" role="3clF46">
<property role="TrG5h" value="messageCollector" />
<node concept="3uibUv" id="6dGwhn$qRXn" role="1tU5fm">
<ref role="3uigEE" to="et5u:~MessageCollector" resolve="MessageCollector" />
</node>
</node>
<node concept="3cqZAl" id="6dGwhn$qRKs" role="3clF45" />
<node concept="3clFbS" id="6dGwhn$qQgN" role="3clF47">
<node concept="1DcWWT" id="9UUIHNeboW" role="3cqZAp">
<node concept="3clFbS" id="9UUIHNeboZ" role="2LFqv$">
<node concept="3clFbF" id="9UUIHNeeqZ" role="3cqZAp">
<node concept="2OqwBi" id="9UUIHNeeqW" role="3clFbG">
<node concept="10M0yZ" id="9UUIHNeeqX" role="2Oq$k0">
<ref role="3cqZAo" to="wyt6:~System.err" resolve="err" />
<ref role="1PxDUh" to="wyt6:~System" resolve="System" />
</node>
<node concept="liA8E" id="9UUIHNeeqY" role="2OqNvi">
<ref role="37wK5l" to="guwi:~PrintStream.println(java.lang.String)" resolve="println" />
<node concept="2OqwBi" id="9UUIHNefCJ" role="37wK5m">
<node concept="37vLTw" id="9UUIHNeeO7" role="2Oq$k0">
<ref role="3cqZAo" node="9UUIHNebp0" resolve="msg" />
</node>
<node concept="liA8E" id="9UUIHNegbf" role="2OqNvi">
<ref role="37wK5l" to="et5u:~IMessage.getText()" resolve="getText" />
</node>
</node>
</node>
</node>
</node>
<node concept="3clFbJ" id="6dGwhn$qlxl" role="3cqZAp">
<node concept="3clFbS" id="6dGwhn$qlxn" role="3clFbx">
<node concept="3clFbF" id="6dGwhn$qosD" role="3cqZAp">
<node concept="2OqwBi" id="6dGwhn$qqr0" role="3clFbG">
<node concept="2OqwBi" id="6dGwhn$qoZM" role="2Oq$k0">
<node concept="37vLTw" id="6dGwhn$qosB" role="2Oq$k0">
<ref role="3cqZAo" node="9UUIHNebp0" resolve="msg" />
</node>
<node concept="liA8E" id="6dGwhn$qpJd" role="2OqNvi">
<ref role="37wK5l" to="et5u:~IMessage.getException()" resolve="getException" />
</node>
</node>
<node concept="liA8E" id="6dGwhn$qr0X" role="2OqNvi">
<ref role="37wK5l" to="wyt6:~Throwable.printStackTrace(java.io.PrintStream)" resolve="printStackTrace" />
<node concept="10M0yZ" id="6dGwhn$qsxE" role="37wK5m">
<ref role="3cqZAo" to="wyt6:~System.err" resolve="err" />
<ref role="1PxDUh" to="wyt6:~System" resolve="System" />
</node>
</node>
</node>
</node>
</node>
<node concept="3y3z36" id="6dGwhn$qnu4" role="3clFbw">
<node concept="10Nm6u" id="6dGwhn$qnWJ" role="3uHU7w" />
<node concept="2OqwBi" id="6dGwhn$qm5G" role="3uHU7B">
<node concept="37vLTw" id="6dGwhn$qlx_" role="2Oq$k0">
<ref role="3cqZAo" node="9UUIHNebp0" resolve="msg" />
</node>
<node concept="liA8E" id="6dGwhn$qmTd" role="2OqNvi">
<ref role="37wK5l" to="et5u:~IMessage.getException()" resolve="getException" />
</node>
</node>
</node>
</node>
</node>
<node concept="3cpWsn" id="9UUIHNebp0" role="1Duv9x">
<property role="TrG5h" value="msg" />
<node concept="3uibUv" id="9UUIHNebp4" role="1tU5fm">
<ref role="3uigEE" to="et5u:~IMessage" resolve="IMessage" />
</node>
</node>
<node concept="2OqwBi" id="9UUIHNebp5" role="1DdaDG">
<node concept="37vLTw" id="9UUIHNebp6" role="2Oq$k0">
<ref role="3cqZAo" node="6dGwhn$qRTm" resolve="messageCollector" />
</node>
<node concept="liA8E" id="9UUIHNebp7" role="2OqNvi">
<ref role="37wK5l" to="et5u:~MessageCollector.result()" resolve="result" />
</node>
</node>
</node>
</node>
<node concept="3Tm6S6" id="6dGwhn$qSD0" role="1B3o_S" />
</node>
<node concept="1LZb2c" id="6$7vuu2ubul" role="1SL9yI">
<property role="TrG5h" value="typecheckingSteps" />
<node concept="3cqZAl" id="6$7vuu2ubum" role="3clF45" />
@ -4176,6 +4285,20 @@
</node>
</node>
</node>
<node concept="3cpWs8" id="9UUIHNe9hC" role="3cqZAp">
<node concept="3cpWsn" id="9UUIHNe9hD" role="3cpWs9">
<property role="TrG5h" value="messageCollector" />
<node concept="3uibUv" id="9UUIHNe9bA" role="1tU5fm">
<ref role="3uigEE" to="et5u:~MessageCollector" resolve="MessageCollector" />
</node>
<node concept="2ShNRf" id="9UUIHNe9hE" role="33vP2m">
<node concept="1pGfFk" id="9UUIHNe9hF" role="2ShVmc">
<property role="373rjd" value="true" />
<ref role="37wK5l" to="et5u:~MessageCollector.&lt;init&gt;()" resolve="MessageCollector" />
</node>
</node>
</node>
</node>
<node concept="3cpWs8" id="61G6TdBSO$Q" role="3cqZAp">
<node concept="3cpWsn" id="61G6TdBSO$R" role="3cpWs9">
<property role="TrG5h" value="typecheckingService" />
@ -4184,13 +4307,16 @@
</node>
<node concept="2YIFZM" id="61G6TdBSO$T" role="33vP2m">
<ref role="1Pybhc" to="tj24:7kaxm0sEy3e" resolve="TypecheckingService" />
<ref role="37wK5l" to="tj24:1FOQehxzbI0" resolve="create" />
<ref role="37wK5l" to="tj24:9UUIHNdXoq" resolve="create" />
<node concept="2OqwBi" id="61G6TdBSO$U" role="37wK5m">
<node concept="1jxXqW" id="61G6TdBSO$V" role="2Oq$k0" />
<node concept="liA8E" id="61G6TdBSO$W" role="2OqNvi">
<ref role="37wK5l" to="z1c3:~Project.getRepository()" resolve="getRepository" />
</node>
</node>
<node concept="37vLTw" id="9UUIHNe9hG" role="37wK5m">
<ref role="3cqZAo" node="9UUIHNe9hD" resolve="collector" />
</node>
</node>
</node>
</node>
@ -4398,6 +4524,17 @@
</node>
</node>
</node>
<node concept="3clFbF" id="6dGwhn$qTyq" role="3cqZAp">
<node concept="2OqwBi" id="6dGwhn$qTyk" role="3clFbG">
<node concept="2WthIp" id="6dGwhn$qTyn" role="2Oq$k0" />
<node concept="2XshWL" id="6dGwhn$qTyp" role="2OqNvi">
<ref role="2WH_rO" node="6dGwhn$qQgL" resolve="reportMessages" />
<node concept="37vLTw" id="6dGwhn$qU0q" role="2XxRq1">
<ref role="3cqZAo" node="9UUIHNe9hD" resolve="messageCollector" />
</node>
</node>
</node>
</node>
</node>
</node>
</node>

View File

@ -1135,12 +1135,9 @@
</node>
</node>
<node concept="liA8E" id="IFW4V2EsEi" role="2OqNvi">
<ref role="37wK5l" to="fqlx:NKt6ynoYr0" resolve="allForModel" />
<node concept="2OqwBi" id="3KN3A4v4yZW" role="37wK5m">
<node concept="37vLTw" id="3KN3A4v4yZX" role="2Oq$k0">
<ref role="3cqZAo" node="3YJ7yg2LDWz" resolve="containingRoot" />
</node>
<node concept="I4A8Y" id="3KN3A4v4yZY" role="2OqNvi" />
<ref role="37wK5l" to="fqlx:9UUIHLLQnW" resolve="allForRoot" />
<node concept="37vLTw" id="3KN3A4v4yZX" role="37wK5m">
<ref role="3cqZAo" node="3YJ7yg2LDWz" resolve="containingRoot" />
</node>
</node>
</node>
@ -1861,12 +1858,9 @@
</node>
</node>
<node concept="liA8E" id="IFW4V2ExUQ" role="2OqNvi">
<ref role="37wK5l" to="fqlx:NKt6ynoYr0" resolve="allForModel" />
<node concept="2OqwBi" id="7WKNeR8ULi3" role="37wK5m">
<node concept="37vLTw" id="7WKNeR8ULi4" role="2Oq$k0">
<ref role="3cqZAo" node="6hqFpWnfbDy" resolve="containingRoot" />
</node>
<node concept="I4A8Y" id="7WKNeR8ULi5" role="2OqNvi" />
<ref role="37wK5l" to="fqlx:9UUIHLLQnW" resolve="allForRoot" />
<node concept="37vLTw" id="7WKNeR8ULi4" role="37wK5m">
<ref role="3cqZAo" node="6hqFpWnfbDy" resolve="containingRoot" />
</node>
</node>
</node>

View File

@ -403,10 +403,6 @@
</concept>
<concept id="1226934395923" name="jetbrains.mps.baseLanguage.collections.structure.ClearSetOperation" flags="nn" index="2EZike" />
<concept id="1235566831861" name="jetbrains.mps.baseLanguage.collections.structure.AllOperation" flags="nn" index="2HxqBE" />
<concept id="1235573135402" name="jetbrains.mps.baseLanguage.collections.structure.SingletonSequenceCreator" flags="nn" index="2HTt$P">
<child id="1235573175711" name="elementType" index="2HTBi0" />
<child id="1235573187520" name="singletonValue" index="2HTEbv" />
</concept>
<concept id="1237721394592" name="jetbrains.mps.baseLanguage.collections.structure.AbstractContainerCreator" flags="nn" index="HWqM0">
<child id="1237721435807" name="elementType" index="HW$YZ" />
<child id="1237731803878" name="copyFrom" index="I$8f6" />
@ -745,14 +741,9 @@
</node>
</node>
<node concept="liA8E" id="IFW4V31ObN" role="2OqNvi">
<ref role="37wK5l" to="fqlx:7mB3viLmii2" resolve="allForNodes" />
<node concept="2ShNRf" id="IFW4V322Gy" role="37wK5m">
<node concept="2HTt$P" id="IFW4V32smt" role="2ShVmc">
<node concept="3Tqbb2" id="IFW4V32AmF" role="2HTBi0" />
<node concept="37vLTw" id="IFW4V32RBD" role="2HTEbv">
<ref role="3cqZAo" node="5BwsbZJDRzG" resolve="src" />
</node>
</node>
<ref role="37wK5l" to="fqlx:9UUIHLLQnW" resolve="allForSingleNode" />
<node concept="37vLTw" id="9UUIHLO7_y" role="37wK5m">
<ref role="3cqZAo" node="5BwsbZJDRzG" resolve="src" />
</node>
</node>
</node>
@ -781,14 +772,9 @@
</node>
</node>
<node concept="liA8E" id="IFW4V331HS" role="2OqNvi">
<ref role="37wK5l" to="fqlx:7mB3viLmii2" resolve="allForNodes" />
<node concept="2ShNRf" id="IFW4V331HT" role="37wK5m">
<node concept="2HTt$P" id="IFW4V331HU" role="2ShVmc">
<node concept="3Tqbb2" id="IFW4V331HV" role="2HTBi0" />
<node concept="37vLTw" id="IFW4V331HW" role="2HTEbv">
<ref role="3cqZAo" node="5BwsbZJDRzG" resolve="src" />
</node>
</node>
<ref role="37wK5l" to="fqlx:9UUIHLLQnW" resolve="allForSingleNode" />
<node concept="37vLTw" id="9UUIHLOvZQ" role="37wK5m">
<ref role="3cqZAo" node="5BwsbZJDRzG" resolve="src" />
</node>
</node>
</node>
@ -825,14 +811,9 @@
</node>
</node>
<node concept="liA8E" id="IFW4V39a9w" role="2OqNvi">
<ref role="37wK5l" to="fqlx:7mB3viLmii2" resolve="allForNodes" />
<node concept="2ShNRf" id="IFW4V39a9x" role="37wK5m">
<node concept="2HTt$P" id="IFW4V39a9y" role="2ShVmc">
<node concept="3Tqbb2" id="IFW4V39a9z" role="2HTBi0" />
<node concept="37vLTw" id="IFW4V39a9I" role="2HTEbv">
<ref role="3cqZAo" node="5BwsbZJDRzJ" resolve="trg" />
</node>
</node>
<ref role="37wK5l" to="fqlx:9UUIHLLQnW" resolve="allForSingleNode" />
<node concept="37vLTw" id="9UUIHLOR8O" role="37wK5m">
<ref role="3cqZAo" node="5BwsbZJDRzJ" resolve="trg" />
</node>
</node>
</node>
@ -884,22 +865,17 @@
</node>
</node>
<node concept="liA8E" id="IFW4V33x8W" role="2OqNvi">
<ref role="37wK5l" to="fqlx:7mB3viLmii2" resolve="allForNodes" />
<node concept="2ShNRf" id="IFW4V35Vla" role="37wK5m">
<node concept="2HTt$P" id="IFW4V35Vlb" role="2ShVmc">
<node concept="3Tqbb2" id="IFW4V35Vlc" role="2HTBi0" />
<node concept="2OqwBi" id="IFW4V34L$g" role="2HTEbv">
<node concept="1eOMI4" id="IFW4V35i5m" role="2Oq$k0">
<node concept="10QFUN" id="IFW4V35i5l" role="1eOMHV">
<node concept="37vLTw" id="IFW4V35i5k" role="10QFUP">
<ref role="3cqZAo" node="5BwsbZJDRzL" resolve="concept" />
</node>
<node concept="3bZ5Sz" id="IFW4V35rI2" role="10QFUM" />
</node>
<ref role="37wK5l" to="fqlx:9UUIHLLQnW" resolve="allForSingleNode" />
<node concept="2OqwBi" id="IFW4V34L$g" role="37wK5m">
<node concept="1eOMI4" id="IFW4V35i5m" role="2Oq$k0">
<node concept="10QFUN" id="IFW4V35i5l" role="1eOMHV">
<node concept="37vLTw" id="IFW4V35i5k" role="10QFUP">
<ref role="3cqZAo" node="5BwsbZJDRzL" resolve="concept" />
</node>
<node concept="LFhST" id="IFW4V35zaD" role="2OqNvi" />
<node concept="3bZ5Sz" id="IFW4V35rI2" role="10QFUM" />
</node>
</node>
<node concept="LFhST" id="IFW4V35zaD" role="2OqNvi" />
</node>
</node>
</node>

View File

@ -6422,6 +6422,53 @@
</node>
</node>
<node concept="2tJIrI" id="1z4$59iMgU4" role="jymVt" />
<node concept="3clFb_" id="9UUIHNdrkP" role="jymVt">
<property role="TrG5h" value="create" />
<node concept="37vLTG" id="9UUIHNdrkQ" role="3clF46">
<property role="TrG5h" value="state" />
<node concept="3uibUv" id="9UUIHNdrkR" role="1tU5fm">
<ref role="3uigEE" node="4Z$O9mrQIzY" resolve="TypecheckingState" />
</node>
</node>
<node concept="37vLTG" id="9UUIHNdrkS" role="3clF46">
<property role="TrG5h" value="repository" />
<node concept="3uibUv" id="9UUIHNdrkT" role="1tU5fm">
<ref role="3uigEE" to="lui2:~SRepository" resolve="SRepository" />
</node>
</node>
<node concept="37vLTG" id="9UUIHNdsf5" role="3clF46">
<property role="TrG5h" value="messageHandler" />
<node concept="3uibUv" id="9UUIHNds$S" role="1tU5fm">
<ref role="3uigEE" to="et5u:~IMessageHandler" resolve="IMessageHandler" />
</node>
</node>
<node concept="3uibUv" id="9UUIHNdrkU" role="3clF45">
<ref role="3uigEE" node="7kaxm0sEy3e" resolve="TypecheckingService" />
</node>
<node concept="3Tm6S6" id="9UUIHNdrkV" role="1B3o_S" />
<node concept="3clFbS" id="9UUIHNdrkW" role="3clF47">
<node concept="3clFbF" id="9UUIHNdrkX" role="3cqZAp">
<node concept="2ShNRf" id="9UUIHNdrkY" role="3clFbG">
<node concept="1pGfFk" id="9UUIHNdrkZ" role="2ShVmc">
<ref role="37wK5l" node="7kaxm0sEBCn" resolve="TypecheckingService" />
<node concept="37vLTw" id="9UUIHNdrl0" role="37wK5m">
<ref role="3cqZAo" node="9UUIHNdrkQ" resolve="state" />
</node>
<node concept="37vLTw" id="9UUIHNdrl1" role="37wK5m">
<ref role="3cqZAo" node="9UUIHNdrkS" resolve="repository" />
</node>
<node concept="37vLTw" id="9UUIHNdrl2" role="37wK5m">
<ref role="3cqZAo" node="6hpwxwiuIzK" resolve="config" />
</node>
<node concept="37vLTw" id="9UUIHNdsYg" role="37wK5m">
<ref role="3cqZAo" node="9UUIHNdsf5" resolve="messageHandler" />
</node>
</node>
</node>
</node>
</node>
</node>
<node concept="2tJIrI" id="9UUIHNdrkO" role="jymVt" />
<node concept="312cEg" id="6hpwxwiuIzK" role="jymVt">
<property role="TrG5h" value="config" />
<node concept="3Tm6S6" id="6hpwxwiuIzL" role="1B3o_S" />
@ -6651,7 +6698,7 @@
<ref role="37wK5l" node="6hpwxwiwZuc" resolve="factory" />
</node>
<node concept="liA8E" id="6hpwxwivNZP" role="2OqNvi">
<ref role="37wK5l" node="1z4$59iMgU5" resolve="create" />
<ref role="37wK5l" node="9UUIHNdrkP" resolve="create" />
<node concept="2ShNRf" id="5cBWTAeiA8q" role="37wK5m">
<node concept="1pGfFk" id="5cBWTAeiA8r" role="2ShVmc">
<ref role="37wK5l" node="5cBWTAehvV3" resolve="TypecheckingState" />
@ -6660,6 +6707,12 @@
<node concept="37vLTw" id="6hpwxwivOos" role="37wK5m">
<ref role="3cqZAo" node="1FOQehxzduN" resolve="repository" />
</node>
<node concept="2ShNRf" id="9UUIHNdQII" role="37wK5m">
<node concept="1pGfFk" id="9UUIHNdX9E" role="2ShVmc">
<property role="373rjd" value="true" />
<ref role="37wK5l" to="et5u:~MessageCollector.&lt;init&gt;()" resolve="MessageCollector" />
</node>
</node>
</node>
</node>
</node>
@ -6673,6 +6726,56 @@
</node>
</node>
</node>
<node concept="2tJIrI" id="9UUIHNe1ns" role="jymVt" />
<node concept="2YIFZL" id="9UUIHNdXoq" role="jymVt">
<property role="TrG5h" value="create" />
<node concept="37vLTG" id="9UUIHNdXor" role="3clF46">
<property role="TrG5h" value="repository" />
<node concept="3uibUv" id="9UUIHNdXos" role="1tU5fm">
<ref role="3uigEE" to="lui2:~SRepository" resolve="SRepository" />
</node>
</node>
<node concept="37vLTG" id="9UUIHNe4Ji" role="3clF46">
<property role="TrG5h" value="messageHandler" />
<node concept="3uibUv" id="9UUIHNe559" role="1tU5fm">
<ref role="3uigEE" to="et5u:~IMessageHandler" resolve="IMessageHandler" />
</node>
</node>
<node concept="3uibUv" id="9UUIHNdXot" role="3clF45">
<ref role="3uigEE" node="7kaxm0sEy3e" resolve="TypecheckingService" />
</node>
<node concept="3clFbS" id="9UUIHNdXou" role="3clF47">
<node concept="3clFbF" id="9UUIHNdXov" role="3cqZAp">
<node concept="2OqwBi" id="9UUIHNdXow" role="3clFbG">
<node concept="1rXfSq" id="9UUIHNdXox" role="2Oq$k0">
<ref role="37wK5l" node="6hpwxwiwZuc" resolve="factory" />
</node>
<node concept="liA8E" id="9UUIHNdXoy" role="2OqNvi">
<ref role="37wK5l" node="9UUIHNdrkP" resolve="create" />
<node concept="2ShNRf" id="9UUIHNdXoz" role="37wK5m">
<node concept="1pGfFk" id="9UUIHNdXo$" role="2ShVmc">
<ref role="37wK5l" node="5cBWTAehvV3" resolve="TypecheckingState" />
</node>
</node>
<node concept="37vLTw" id="9UUIHNdXo_" role="37wK5m">
<ref role="3cqZAo" node="9UUIHNdXor" resolve="repository" />
</node>
<node concept="37vLTw" id="9UUIHNe5XL" role="37wK5m">
<ref role="3cqZAo" node="9UUIHNe4Ji" resolve="messageHandler" />
</node>
</node>
</node>
</node>
</node>
<node concept="3Tm1VV" id="9UUIHNdXoC" role="1B3o_S" />
<node concept="P$JXv" id="9UUIHNdXoD" role="lGtFl">
<node concept="TZ5HA" id="9UUIHNdXoE" role="TZ5H$">
<node concept="1dT_AC" id="9UUIHNdXoF" role="1dT_Ay">
<property role="1dT_AB" value="Used from tests." />
</node>
</node>
</node>
</node>
<node concept="2tJIrI" id="1FOQehxza6I" role="jymVt" />
<node concept="2YIFZL" id="1z4$59iHmYH" role="jymVt">
<property role="TrG5h" value="create" />
@ -12127,6 +12230,15 @@
<node concept="3Tqbb2" id="6v6oK24LG9K" role="3clF45" />
<node concept="3Tm1VV" id="6v6oK24L$nn" role="1B3o_S" />
<node concept="3clFbS" id="6v6oK24L$no" role="3clF47" />
<node concept="2AHcQZ" id="6dGwhn$uWns" role="2AJF6D">
<ref role="2AI5Lk" to="wyt6:~Deprecated" />
<node concept="2B6LJw" id="6dGwhn$uXZe" role="2B76xF">
<ref role="2B6OnR" to="wyt6:~Deprecated.forRemoval()" resolve="forRemoval" />
<node concept="3clFbT" id="6dGwhn$uZ6I" role="2B70Vg">
<property role="3clFbU" value="true" />
</node>
</node>
</node>
</node>
<node concept="2tJIrI" id="6v6oK25lBxR" role="jymVt" />
<node concept="3clFb_" id="6v6oK25lKkp" role="jymVt">
@ -17466,13 +17578,16 @@
<node concept="3cpWsn" id="1RYTbd80CiD" role="3cpWs9">
<property role="TrG5h" value="containingRoot" />
<node concept="3Tqbb2" id="1RYTbd80CiE" role="1tU5fm" />
<node concept="2OqwBi" id="6v6oK24SeER" role="33vP2m">
<node concept="1rXfSq" id="6v6oK24S7uW" role="2Oq$k0">
<ref role="37wK5l" node="6v6oK22E7yX" resolve="query" />
</node>
<node concept="liA8E" id="6v6oK24SotO" role="2OqNvi">
<ref role="37wK5l" node="6v6oK24L$nk" resolve="getRoot" />
<node concept="2OqwBi" id="6dGwhn$vFuP" role="33vP2m">
<node concept="2OqwBi" id="6v6oK24SeER" role="2Oq$k0">
<node concept="1rXfSq" id="6v6oK24S7uW" role="2Oq$k0">
<ref role="37wK5l" node="6v6oK22E7yX" resolve="query" />
</node>
<node concept="liA8E" id="6dGwhn$vDTT" role="2OqNvi">
<ref role="37wK5l" node="6v6oK25lKkp" resolve="getSubject" />
</node>
</node>
<node concept="2Rxl7S" id="6dGwhn$vGSj" role="2OqNvi" />
</node>
</node>
</node>
@ -17800,17 +17915,17 @@
<ref role="37wK5l" node="6v6oK22Hw3N" resolve="aspectLookup" />
</node>
<node concept="liA8E" id="6v6oK22JNn3" role="2OqNvi">
<ref role="37wK5l" to="fqlx:NKt6ynoYr0" resolve="allForModel" />
<ref role="37wK5l" to="fqlx:9UUIHLNig1" resolve="allForRoot" />
<node concept="2OqwBi" id="6v6oK22KB6s" role="37wK5m">
<node concept="2OqwBi" id="6v6oK24T5$d" role="2Oq$k0">
<node concept="1rXfSq" id="6v6oK24T0An" role="2Oq$k0">
<ref role="37wK5l" node="6v6oK22E7yX" resolve="query" />
</node>
<node concept="liA8E" id="6v6oK24TfAF" role="2OqNvi">
<ref role="37wK5l" node="6v6oK24L$nk" resolve="getRoot" />
<ref role="37wK5l" node="6v6oK25lKkp" resolve="getSubject" />
</node>
</node>
<node concept="I4A8Y" id="6v6oK22KJoD" role="2OqNvi" />
<node concept="2Rxl7S" id="6dGwhn$ywz8" role="2OqNvi" />
</node>
</node>
</node>
@ -17820,6 +17935,7 @@
<ref role="2AI5Lk" to="wyt6:~Override" resolve="Override" />
</node>
</node>
<node concept="2tJIrI" id="6dGwhn$yxhS" role="jymVt" />
<node concept="3clFb_" id="6v6oK23UvNZ" role="jymVt">
<property role="TrG5h" value="nodes" />
<node concept="2I9FWS" id="6v6oK23VFgI" role="3clF45" />
@ -17829,13 +17945,16 @@
<node concept="2ShNRf" id="6v6oK23VNN7" role="3clFbG">
<node concept="Tc6Ow" id="6v6oK23VYjR" role="2ShVmc">
<node concept="3Tqbb2" id="6v6oK23WfW2" role="HW$YZ" />
<node concept="2OqwBi" id="6v6oK23Ww2k" role="HW$Y0">
<node concept="1rXfSq" id="6v6oK24ToMU" role="2Oq$k0">
<ref role="37wK5l" node="6v6oK22E7yX" resolve="query" />
</node>
<node concept="liA8E" id="6v6oK24TFaY" role="2OqNvi">
<ref role="37wK5l" node="6v6oK24L$nk" resolve="getRoot" />
<node concept="2OqwBi" id="6dGwhn$vKMx" role="HW$Y0">
<node concept="2OqwBi" id="6v6oK23Ww2k" role="2Oq$k0">
<node concept="1rXfSq" id="6v6oK24ToMU" role="2Oq$k0">
<ref role="37wK5l" node="6v6oK22E7yX" resolve="query" />
</node>
<node concept="liA8E" id="6dGwhn$vJc8" role="2OqNvi">
<ref role="37wK5l" node="6v6oK25lKkp" resolve="getSubject" />
</node>
</node>
<node concept="2Rxl7S" id="6dGwhn$vMmo" role="2OqNvi" />
</node>
</node>
</node>
@ -17886,13 +18005,16 @@
<node concept="3cpWsn" id="1RYTbd81$US" role="3cpWs9">
<property role="TrG5h" value="containingRoot" />
<node concept="3Tqbb2" id="1RYTbd81$UT" role="1tU5fm" />
<node concept="2OqwBi" id="6v6oK24UnA7" role="33vP2m">
<node concept="1rXfSq" id="6v6oK24UfTF" role="2Oq$k0">
<ref role="37wK5l" node="6v6oK22E7yX" resolve="query" />
</node>
<node concept="liA8E" id="6v6oK24UwqF" role="2OqNvi">
<ref role="37wK5l" node="6v6oK24L$nk" resolve="getRoot" />
<node concept="2OqwBi" id="6dGwhn$vXYt" role="33vP2m">
<node concept="2OqwBi" id="6v6oK24UnA7" role="2Oq$k0">
<node concept="1rXfSq" id="6v6oK24UfTF" role="2Oq$k0">
<ref role="37wK5l" node="6v6oK22E7yX" resolve="query" />
</node>
<node concept="liA8E" id="6dGwhn$vWkA" role="2OqNvi">
<ref role="37wK5l" node="6v6oK25lKkp" resolve="getSubject" />
</node>
</node>
<node concept="2Rxl7S" id="6dGwhn$vZ$8" role="2OqNvi" />
</node>
</node>
</node>
@ -18193,94 +18315,23 @@
</node>
</node>
<node concept="3clFbS" id="6v6oK22QWVZ" role="3clF47">
<node concept="3SKdUt" id="6v6oK25b7Gn" role="3cqZAp">
<node concept="1PaTwC" id="6v6oK25b7Go" role="1aUNEU">
<node concept="3oM_SD" id="6v6oK25bgg4" role="1PaTwD">
<property role="3oM_SC" value="use" />
</node>
<node concept="3oM_SD" id="6v6oK25bgg6" role="1PaTwD">
<property role="3oM_SC" value="the" />
</node>
<node concept="3oM_SD" id="6v6oK25bgg9" role="1PaTwD">
<property role="3oM_SC" value="model" />
</node>
<node concept="3oM_SD" id="6v6oK25bggd" role="1PaTwD">
<property role="3oM_SC" value="instead" />
</node>
<node concept="3oM_SD" id="6v6oK25bggi" role="1PaTwD">
<property role="3oM_SC" value="of" />
</node>
<node concept="3oM_SD" id="6v6oK25bggo" role="1PaTwD">
<property role="3oM_SC" value="the" />
</node>
<node concept="3oM_SD" id="6v6oK25bggv" role="1PaTwD">
<property role="3oM_SC" value="root" />
</node>
<node concept="3oM_SD" id="6v6oK25bggB" role="1PaTwD">
<property role="3oM_SC" value="node" />
</node>
<node concept="3oM_SD" id="6v6oK25bggK" role="1PaTwD">
<property role="3oM_SC" value="to" />
</node>
<node concept="3oM_SD" id="6v6oK25bggU" role="1PaTwD">
<property role="3oM_SC" value="search" />
</node>
<node concept="3oM_SD" id="6v6oK25bgh5" role="1PaTwD">
<property role="3oM_SC" value="for" />
</node>
<node concept="3oM_SD" id="6v6oK25bghh" role="1PaTwD">
<property role="3oM_SC" value="languages" />
</node>
</node>
</node>
<node concept="3SKdUt" id="6v6oK25bq6v" role="3cqZAp">
<node concept="1PaTwC" id="6v6oK25bq6w" role="1aUNEU">
<node concept="3oM_SD" id="6v6oK25bzM1" role="1PaTwD">
<property role="3oM_SC" value="thus" />
</node>
<node concept="3oM_SD" id="6v6oK25bzM3" role="1PaTwD">
<property role="3oM_SC" value="we" />
</node>
<node concept="3oM_SD" id="6v6oK25bzM6" role="1PaTwD">
<property role="3oM_SC" value="avoid" />
</node>
<node concept="3oM_SD" id="6v6oK25bzMa" role="1PaTwD">
<property role="3oM_SC" value="unnecessary" />
</node>
<node concept="3oM_SD" id="6v6oK25bzMf" role="1PaTwD">
<property role="3oM_SC" value="traversing" />
</node>
<node concept="3oM_SD" id="6v6oK25bzMl" role="1PaTwD">
<property role="3oM_SC" value="of" />
</node>
<node concept="3oM_SD" id="6v6oK25bzMs" role="1PaTwD">
<property role="3oM_SC" value="the" />
</node>
<node concept="3oM_SD" id="6v6oK25bzM$" role="1PaTwD">
<property role="3oM_SC" value="root" />
</node>
<node concept="3oM_SD" id="6v6oK25bzMH" role="1PaTwD">
<property role="3oM_SC" value="" />
</node>
</node>
</node>
<node concept="3clFbF" id="6v6oK22RQr1" role="3cqZAp">
<node concept="2OqwBi" id="6v6oK22RQr2" role="3clFbG">
<node concept="1rXfSq" id="6v6oK22RQr3" role="2Oq$k0">
<ref role="37wK5l" node="6v6oK22Hw3N" resolve="aspectLookup" />
</node>
<node concept="liA8E" id="6v6oK22RQr4" role="2OqNvi">
<ref role="37wK5l" to="fqlx:NKt6ynoYr0" resolve="allForModel" />
<ref role="37wK5l" to="fqlx:9UUIHLNig1" resolve="allForRoot" />
<node concept="2OqwBi" id="6v6oK22RQr5" role="37wK5m">
<node concept="2OqwBi" id="6v6oK24VDAg" role="2Oq$k0">
<node concept="1rXfSq" id="6v6oK24VzCE" role="2Oq$k0">
<ref role="37wK5l" node="6v6oK22E7yX" resolve="query" />
</node>
<node concept="liA8E" id="6v6oK24VNY9" role="2OqNvi">
<ref role="37wK5l" node="6v6oK24L$nk" resolve="getRoot" />
<node concept="liA8E" id="6dGwhn$ymcr" role="2OqNvi">
<ref role="37wK5l" node="6v6oK25lKkp" resolve="getSubject" />
</node>
</node>
<node concept="I4A8Y" id="6v6oK22RQr9" role="2OqNvi" />
<node concept="2Rxl7S" id="6dGwhn$yoqE" role="2OqNvi" />
</node>
</node>
</node>
@ -18290,6 +18341,7 @@
<ref role="2AI5Lk" to="wyt6:~Override" resolve="Override" />
</node>
</node>
<node concept="2tJIrI" id="6dGwhn$xTAe" role="jymVt" />
<node concept="3clFb_" id="6v6oK23WPZh" role="jymVt">
<property role="TrG5h" value="nodes" />
<node concept="2I9FWS" id="6v6oK23WPZi" role="3clF45" />
@ -18299,13 +18351,16 @@
<node concept="2ShNRf" id="6v6oK23X78A" role="3clFbG">
<node concept="Tc6Ow" id="6v6oK23XiPq" role="2ShVmc">
<node concept="3Tqbb2" id="6v6oK23Xyli" role="HW$YZ" />
<node concept="2OqwBi" id="6v6oK24V7EE" role="HW$Y0">
<node concept="1rXfSq" id="6v6oK24V2jF" role="2Oq$k0">
<ref role="37wK5l" node="6v6oK22E7yX" resolve="query" />
</node>
<node concept="liA8E" id="6v6oK24Vhf0" role="2OqNvi">
<ref role="37wK5l" node="6v6oK24L$nk" resolve="getRoot" />
<node concept="2OqwBi" id="6dGwhn$vR52" role="HW$Y0">
<node concept="2OqwBi" id="6v6oK24V7EE" role="2Oq$k0">
<node concept="1rXfSq" id="6v6oK24V2jF" role="2Oq$k0">
<ref role="37wK5l" node="6v6oK22E7yX" resolve="query" />
</node>
<node concept="liA8E" id="6dGwhn$vPsC" role="2OqNvi">
<ref role="37wK5l" node="6v6oK25lKkp" resolve="getSubject" />
</node>
</node>
<node concept="2Rxl7S" id="6dGwhn$vUlr" role="2OqNvi" />
</node>
</node>
</node>