Handle case of type vars having other type vars as bounds for inference

Also uncomment hasBound_check rule which now is required
to check such type vars when their bounds become ground.
This commit is contained in:
Grigorii Kirgizov 2020-05-14 20:41:36 +03:00
parent 08743b444c
commit 9051e71f84
1 changed files with 210 additions and 186 deletions

View File

@ -3055,6 +3055,27 @@
<property role="TrG5h" value="MethodCall" />
<property role="3GE5qa" value="rule.expression" />
<ref role="2YbDB9" node="34$A1Mf51rY" resolve="TypeOf" />
<node concept="3AqmO8" id="1yt2T3T19j2" role="8PkJo">
<property role="TrG5h" value="checkArgs" />
<node concept="1zAUYm" id="1yt2T3T19O3" role="1zAUyy">
<property role="TrG5h" value="ParamTypes" />
</node>
<node concept="1zAUYm" id="1yt2T3T19RS" role="1zAUyy">
<property role="TrG5h" value="ArgTypes" />
</node>
<node concept="1zAUYm" id="1yt2T3TeNc_" role="1zAUyy">
<property role="TrG5h" value="ReportNodes" />
</node>
</node>
<node concept="3AqmO8" id="1yt2T3T1bZ_" role="8PkJo">
<property role="TrG5h" value="checkVarargs" />
<node concept="1zAUYm" id="1yt2T3T1cp6" role="1zAUyy">
<property role="TrG5h" value="ParamType" />
</node>
<node concept="1zAUYm" id="1yt2T3T1cNH" role="1zAUyy">
<property role="TrG5h" value="ArgTypes" />
</node>
</node>
<node concept="1nLNMY" id="1yt2T3T1dJ$" role="1nK1Vg">
<property role="TrG5h" value="checkVarargs" />
<node concept="3clFbS" id="1yt2T3T1dJ_" role="1nLNMH">
@ -3989,10 +4010,10 @@
<node concept="aZer4" id="4xoHD1GsAAl" role="3XD1gS">
<property role="TrG5h" value="MethTyScheme" />
</node>
<node concept="32pEOW" id="24ciDNzxNBK" role="3vLBG7" />
<node concept="aZer4" id="4xoHD1GsAAm" role="3XD1gS">
<property role="TrG5h" value="InstTyScheme" />
</node>
<node concept="32pEOW" id="24ciDNzxNBK" role="3vLBG7" />
</node>
<node concept="3xSepi" id="6E2cNicdihT" role="3xSepv">
<node concept="3Aq9E8" id="4xoHD1GsAwc" role="3xSepj">
@ -6028,7 +6049,6 @@
<node concept="aZer4" id="4xoHD1GdINs" role="3XD1gS">
<property role="TrG5h" value="TyScheme" />
</node>
<node concept="32pEOW" id="24ciDNzxNBR" role="3vLBG7" />
<node concept="aZer4" id="4xoHD1GdINt" role="3XD1gS">
<property role="TrG5h" value="TVs" />
<node concept="2OqwBi" id="4xoHD1GdINu" role="3gj$pD">
@ -6047,6 +6067,7 @@
<node concept="34oBXx" id="4xoHD1GdIN$" role="2OqNvi" />
</node>
</node>
<node concept="32pEOW" id="24ciDNzxNBR" role="3vLBG7" />
</node>
<node concept="3xSepi" id="6E2cNicdihV" role="3xSepv">
<node concept="3Aq9E8" id="4xoHD1G0uJ2" role="3xSepj">
@ -6065,6 +6086,28 @@
</node>
<node concept="3clFbH" id="4xoHD1GdBFc" role="3cqZAp" />
</node>
<node concept="1Wc70l" id="5o9$c3zZZtq" role="3clFbw">
<node concept="2OqwBi" id="5o9$c3$0249" role="3uHU7B">
<node concept="37vLTw" id="5o9$c3zZZUg" role="2Oq$k0">
<ref role="3cqZAo" node="4xoHD1G0$4I" resolve="tyArgs" />
</node>
<node concept="3GX2aA" id="5o9$c3$0aaE" role="2OqNvi" />
</node>
<node concept="3y3z36" id="4xoHD1GdBFd" role="3uHU7w">
<node concept="2OqwBi" id="4xoHD1GdBFe" role="3uHU7w">
<node concept="37vLTw" id="4xoHD1GdBFf" role="2Oq$k0">
<ref role="3cqZAo" node="4xoHD1G0uIE" resolve="ctvds" />
</node>
<node concept="34oBXx" id="4xoHD1GdBFg" role="2OqNvi" />
</node>
<node concept="2OqwBi" id="4xoHD1GdBFh" role="3uHU7B">
<node concept="37vLTw" id="4xoHD1GdBFi" role="2Oq$k0">
<ref role="3cqZAo" node="4xoHD1G0$4I" resolve="tyArgs" />
</node>
<node concept="34oBXx" id="4xoHD1GdBFj" role="2OqNvi" />
</node>
</node>
</node>
<node concept="9aQIb" id="4xoHD1GdBFk" role="9aQIa">
<node concept="3clFbS" id="4xoHD1GdBFl" role="9aQI4">
<node concept="3Aqczg" id="5itBwMaU4dM" role="3cqZAp">
@ -6303,28 +6346,6 @@
</node>
</node>
</node>
<node concept="1Wc70l" id="5o9$c3zZZtq" role="3clFbw">
<node concept="2OqwBi" id="5o9$c3$0249" role="3uHU7B">
<node concept="37vLTw" id="5o9$c3zZZUg" role="2Oq$k0">
<ref role="3cqZAo" node="4xoHD1G0$4I" resolve="tyArgs" />
</node>
<node concept="3GX2aA" id="5o9$c3$0aaE" role="2OqNvi" />
</node>
<node concept="3y3z36" id="4xoHD1GdBFd" role="3uHU7w">
<node concept="2OqwBi" id="4xoHD1GdBFe" role="3uHU7w">
<node concept="37vLTw" id="4xoHD1GdBFf" role="2Oq$k0">
<ref role="3cqZAo" node="4xoHD1G0uIE" resolve="ctvds" />
</node>
<node concept="34oBXx" id="4xoHD1GdBFg" role="2OqNvi" />
</node>
<node concept="2OqwBi" id="4xoHD1GdBFh" role="3uHU7B">
<node concept="37vLTw" id="4xoHD1GdBFi" role="2Oq$k0">
<ref role="3cqZAo" node="4xoHD1G0$4I" resolve="tyArgs" />
</node>
<node concept="34oBXx" id="4xoHD1GdBFj" role="2OqNvi" />
</node>
</node>
</node>
</node>
<node concept="3clFbH" id="4xoHD1GdB_d" role="3cqZAp" />
</node>
@ -6401,9 +6422,6 @@
<ref role="2I9WkF" to="tpee:fz7vLUk" resolve="ParameterDeclaration" />
</node>
<node concept="2OqwBi" id="4xoHD1GiwYs" role="33vP2m">
<node concept="3Tsc0h" id="4xoHD1Giz5m" role="2OqNvi">
<ref role="3TtcxE" to="tpee:fzclF7Y" resolve="parameter" />
</node>
<node concept="2OqwBi" id="4xoHD1Givyq" role="2Oq$k0">
<node concept="3A2sRY" id="4xoHD1Givon" role="2Oq$k0">
<ref role="3A2yKK" node="4xoHD1Gi1m8" resolve="anonCls" />
@ -6412,6 +6430,9 @@
<ref role="3Tt5mk" to="tpee:2yoSzAaKW1s" resolve="constructorDeclaration" />
</node>
</node>
<node concept="3Tsc0h" id="4xoHD1Giz5m" role="2OqNvi">
<ref role="3TtcxE" to="tpee:fzclF7Y" resolve="parameter" />
</node>
</node>
</node>
</node>
@ -6994,7 +7015,6 @@
<ref role="cht4Q" to="tpee:fz12cDA" resolve="ClassConcept" />
</node>
<node concept="2OqwBi" id="4xoHD1Gqvl0" role="1m5AlR">
<node concept="1mfA1w" id="4xoHD1GqzoS" role="2OqNvi" />
<node concept="2OqwBi" id="4xoHD1GpWcC" role="2Oq$k0">
<node concept="3A2sRY" id="4xoHD1GqpLL" role="2Oq$k0">
<ref role="3A2yKK" node="4xoHD1GpWgY" resolve="cc" />
@ -7003,6 +7023,7 @@
<ref role="3Tt5mk" to="tpee:hDpISCB" resolve="constructorDeclaration" />
</node>
</node>
<node concept="1mfA1w" id="4xoHD1GqzoS" role="2OqNvi" />
</node>
</node>
</node>
@ -7047,9 +7068,6 @@
<ref role="2I9WkF" to="tpee:fz7vLUk" resolve="ParameterDeclaration" />
</node>
<node concept="2OqwBi" id="4xoHD1Gqj1H" role="33vP2m">
<node concept="3Tsc0h" id="4xoHD1Gqn8$" role="2OqNvi">
<ref role="3TtcxE" to="tpee:fzclF7Y" resolve="parameter" />
</node>
<node concept="2OqwBi" id="4xoHD1GpWcW" role="2Oq$k0">
<node concept="3A2sRY" id="4xoHD1Gq9aT" role="2Oq$k0">
<ref role="3A2yKK" node="4xoHD1GpWgY" resolve="cc" />
@ -7058,6 +7076,9 @@
<ref role="3Tt5mk" to="tpee:hDpISCB" resolve="constructorDeclaration" />
</node>
</node>
<node concept="3Tsc0h" id="4xoHD1Gqn8$" role="2OqNvi">
<ref role="3TtcxE" to="tpee:fzclF7Y" resolve="parameter" />
</node>
</node>
</node>
</node>
@ -7227,7 +7248,6 @@
<node concept="34oBXx" id="4xoHD1GpWdG" role="2OqNvi" />
</node>
</node>
<node concept="32pEOW" id="24ciDNzxNBW" role="3vLBG7" />
<node concept="aZer4" id="4xoHD1GpWdH" role="3XD1gS">
<property role="TrG5h" value="Bounds" />
<node concept="2OqwBi" id="4xoHD1GpWdI" role="3gj$pD">
@ -7237,6 +7257,7 @@
<node concept="34oBXx" id="4xoHD1GpWdK" role="2OqNvi" />
</node>
</node>
<node concept="32pEOW" id="24ciDNzxNBW" role="3vLBG7" />
</node>
<node concept="3NuqgR" id="4xoHD1GpWdM" role="0Rg$4">
<node concept="aZer4" id="4xoHD1GpWdN" role="3XD1gS">
@ -7847,27 +7868,6 @@
</node>
</node>
</node>
<node concept="3AqmO8" id="1yt2T3T19j2" role="8PkJo">
<property role="TrG5h" value="checkArgs" />
<node concept="1zAUYm" id="1yt2T3T19O3" role="1zAUyy">
<property role="TrG5h" value="ParamTypes" />
</node>
<node concept="1zAUYm" id="1yt2T3T19RS" role="1zAUyy">
<property role="TrG5h" value="ArgTypes" />
</node>
<node concept="1zAUYm" id="1yt2T3TeNc_" role="1zAUyy">
<property role="TrG5h" value="ReportNodes" />
</node>
</node>
<node concept="3AqmO8" id="1yt2T3T1bZ_" role="8PkJo">
<property role="TrG5h" value="checkVarargs" />
<node concept="1zAUYm" id="1yt2T3T1cp6" role="1zAUyy">
<property role="TrG5h" value="ParamType" />
</node>
<node concept="1zAUYm" id="1yt2T3T1cNH" role="1zAUyy">
<property role="TrG5h" value="ArgTypes" />
</node>
</node>
</node>
<node concept="312cEu" id="tIwzd2cJHD">
<property role="TrG5h" value="SubclassingUtil" />
@ -15593,6 +15593,13 @@
</node>
</node>
</node>
<node concept="3I6s7M" id="554EtBHPv2D" role="3I6sU7">
<node concept="2aM9Np" id="554EtBHPv2B" role="3I6s78">
<node concept="a7P8L" id="554EtBHPv2J" role="2aLmnP">
<ref role="a7OzE" node="5o9$c3zQtkh" resolve="SBound" />
</node>
</node>
</node>
</node>
</node>
<node concept="3NuqgR" id="5o9$c3zQtkd" role="0Rg$4">
@ -15718,6 +15725,13 @@
</node>
</node>
</node>
<node concept="3I6s7M" id="554EtBHPv1S" role="3I6sU7">
<node concept="2aM9Np" id="554EtBHPv1Q" role="3I6s78">
<node concept="a7P8L" id="554EtBHPv21" role="2aLmnP">
<ref role="a7OzE" node="5o9$c3zGerh" resolve="SBound" />
</node>
</node>
</node>
</node>
</node>
<node concept="3NuqgR" id="5o9$c3zGere" role="0Rg$4">
@ -15829,6 +15843,13 @@
</node>
</node>
</node>
<node concept="3I6s7M" id="554EtBHPv2i" role="3I6sU7">
<node concept="2aM9Np" id="554EtBHPv2g" role="3I6s78">
<node concept="a7P8L" id="554EtBHPv2r" role="2aLmnP">
<ref role="a7OzE" node="5o9$c3zLTGn" resolve="TBound" />
</node>
</node>
</node>
</node>
</node>
<node concept="3NuqgR" id="5o9$c3zLTGk" role="0Rg$4">
@ -32603,103 +32624,106 @@
</node>
</node>
</node>
<node concept="1X3_iC" id="4ea1t_2Q5La" role="lGtFl">
<property role="3V$3am" value="template" />
<property role="3V$3ak" value="c4803b19-6d89-4a3b-bf82-390769514add/8335224865066015764/3575255234175157601" />
<node concept="1nLNMY" id="4ObboSf6bTS" role="8Wnug">
<property role="TrG5h" value="hasBound_check" />
<node concept="3clFbS" id="4ObboSf6bTT" role="1nLNMH">
<node concept="3SKdUt" id="4ObboSf8Xa$" role="3cqZAp">
<node concept="1PaTwC" id="4ObboSf8Xa_" role="1aUNEU">
<node concept="3oM_SD" id="4ObboSf8XaB" role="1PaTwD">
<property role="3oM_SC" value="when" />
</node>
<node concept="3oM_SD" id="4ObboSf8Xwa" role="1PaTwD">
<property role="3oM_SC" value="inference" />
</node>
<node concept="3oM_SD" id="4ObboSf8ZOd" role="1PaTwD">
<property role="3oM_SC" value="var" />
</node>
<node concept="3oM_SD" id="4ObboSf8XPn" role="1PaTwD">
<property role="3oM_SC" value="becomes" />
</node>
<node concept="3oM_SD" id="4ObboSf8YvC" role="1PaTwD">
<property role="3oM_SC" value="ground," />
</node>
<node concept="3oM_SD" id="4ObboSf91u0" role="1PaTwD">
<property role="3oM_SC" value="its" />
</node>
<node concept="3oM_SD" id="4ObboSf91Nd" role="1PaTwD">
<property role="3oM_SC" value="bound" />
</node>
<node concept="3oM_SD" id="4ObboSf928r" role="1PaTwD">
<property role="3oM_SC" value="must" />
</node>
<node concept="3oM_SD" id="4ObboSf92tE" role="1PaTwD">
<property role="3oM_SC" value="be" />
</node>
<node concept="3oM_SD" id="4ObboSf92tO" role="1PaTwD">
<property role="3oM_SC" value="finally" />
</node>
<node concept="3oM_SD" id="4ObboSf92N5" role="1PaTwD">
<property role="3oM_SC" value="checked" />
</node>
<node concept="1nLNMY" id="4ObboSf6bTS" role="1nK1Vg">
<property role="TrG5h" value="hasBound_check" />
<node concept="3clFbS" id="4ObboSf6bTT" role="1nLNMH">
<node concept="3SKdUt" id="4ObboSf8Xa$" role="3cqZAp">
<node concept="1PaTwC" id="4ObboSf8Xa_" role="1aUNEU">
<node concept="3oM_SD" id="4ObboSf8XaB" role="1PaTwD">
<property role="3oM_SC" value="when" />
</node>
<node concept="3oM_SD" id="4ObboSf8Xwa" role="1PaTwD">
<property role="3oM_SC" value="inference" />
</node>
<node concept="3oM_SD" id="4ObboSf8ZOd" role="1PaTwD">
<property role="3oM_SC" value="var" />
</node>
<node concept="3oM_SD" id="4ObboSf8XPn" role="1PaTwD">
<property role="3oM_SC" value="becomes" />
</node>
<node concept="3oM_SD" id="4ObboSf8YvC" role="1PaTwD">
<property role="3oM_SC" value="ground," />
</node>
<node concept="3oM_SD" id="4ObboSf91u0" role="1PaTwD">
<property role="3oM_SC" value="its" />
</node>
<node concept="3oM_SD" id="4ObboSf91Nd" role="1PaTwD">
<property role="3oM_SC" value="bound" />
</node>
<node concept="3oM_SD" id="4ObboSf928r" role="1PaTwD">
<property role="3oM_SC" value="must" />
</node>
<node concept="3oM_SD" id="4ObboSf92tE" role="1PaTwD">
<property role="3oM_SC" value="be" />
</node>
<node concept="3oM_SD" id="4ObboSf92tO" role="1PaTwD">
<property role="3oM_SC" value="finally" />
</node>
<node concept="3oM_SD" id="4ObboSf92N5" role="1PaTwD">
<property role="3oM_SC" value="checked" />
</node>
</node>
<node concept="1nLNNL" id="4ObboSf6qzA" role="3cqZAp">
<node concept="1nLNMm" id="4ObboSf6qzB" role="1nLNNK">
<node concept="3Aq93q" id="4ObboSf6qzG" role="1nLNMb">
<node concept="3I6sU6" id="4ObboSf6qzH" role="3Ip0Jz">
<node concept="3I6s7M" id="4ObboSf6qzI" role="3I6sU7">
<node concept="3Aqt3T" id="4ObboSf6qzJ" role="3I6s78">
<ref role="3AqCNq" node="5310cdpUCuT" resolve="hasBound" />
<node concept="a7P8L" id="4ObboSf6qzK" role="3AunhB">
</node>
<node concept="1nLNNL" id="4ObboSf6qzA" role="3cqZAp">
<node concept="1nLNMm" id="4ObboSf6qzB" role="1nLNNK">
<node concept="3Aq93q" id="4ObboSf6qzG" role="1nLNMb">
<node concept="3I6sU6" id="4ObboSf6qzH" role="3Ip0Jz">
<node concept="3I6s7M" id="4ObboSf6qzI" role="3I6sU7">
<node concept="3Aqt3T" id="4ObboSf6qzJ" role="3I6s78">
<ref role="3AqCNq" node="5310cdpUCuT" resolve="hasBound" />
<node concept="a7P8L" id="4ObboSf6qzK" role="3AunhB">
<ref role="a7OzE" node="4ObboSf6qzE" resolve="Var" />
</node>
<node concept="a7P8L" id="4ObboSf6qzL" role="3AunhB">
<ref role="a7OzE" node="4ObboSf6qzF" resolve="Bnd" />
</node>
</node>
</node>
</node>
</node>
<node concept="3Aq9_M" id="4ObboSf6qzO" role="1nLNMa">
<node concept="3I6sU6" id="4ObboSf6qzP" role="3Ip0Jz">
<node concept="3I6s7M" id="4ObboSf6qzQ" role="3I6sU7">
<node concept="2aM9Np" id="4ObboSf6sz3" role="3I6s78">
<node concept="a7P8L" id="4ObboSf6sSc" role="2aLmnP">
<ref role="a7OzE" node="4ObboSf6qzE" resolve="Var" />
</node>
</node>
</node>
<node concept="3I6s7M" id="554EtBHSrov" role="3I6sU7">
<node concept="2aM9Np" id="554EtBHSrot" role="3I6s78">
<node concept="a7P8L" id="554EtBHSro_" role="2aLmnP">
<ref role="a7OzE" node="4ObboSf6qzF" resolve="Bnd" />
</node>
</node>
</node>
</node>
</node>
<node concept="3NuqgR" id="4ObboSf6qzD" role="0Rg$4">
<node concept="aZer4" id="4ObboSf6qzE" role="3XD1gS">
<property role="TrG5h" value="Var" />
</node>
<node concept="aZer4" id="4ObboSf6qzF" role="3XD1gS">
<property role="TrG5h" value="Bnd" />
</node>
<node concept="32pEOW" id="24ciDNzxNFJ" role="3vLBG7" />
</node>
<node concept="3xSepi" id="6E2cNicdikO" role="3xSepv">
<node concept="3Aq9E8" id="4ObboSf6qzM" role="3xSepj">
<node concept="3I6sU6" id="4ObboSf6qzN" role="3Ip0Jz">
<node concept="3I6s7M" id="4ObboSf7r55" role="3I6sU7">
<node concept="3Aqt3T" id="4ObboSf7r54" role="3I6s78">
<ref role="3AqCNq" node="3Qp4N06bUPu" resolve="convertsTo" />
<node concept="a7P8L" id="4ObboSf7rJm" role="3AunhB">
<ref role="a7OzE" node="4ObboSf6qzE" resolve="Var" />
</node>
<node concept="a7P8L" id="4ObboSf6qzL" role="3AunhB">
<node concept="a7P8L" id="4ObboSf7s4$" role="3AunhB">
<ref role="a7OzE" node="4ObboSf6qzF" resolve="Bnd" />
</node>
</node>
</node>
</node>
</node>
<node concept="3Aq9_M" id="4ObboSf6qzO" role="1nLNMa">
<node concept="3I6sU6" id="4ObboSf6qzP" role="3Ip0Jz">
<node concept="3I6s7M" id="4ObboSf6qzQ" role="3I6sU7">
<node concept="2aM9Np" id="4ObboSf6sz3" role="3I6s78">
<node concept="a7P8L" id="4ObboSf6sSc" role="2aLmnP">
<ref role="a7OzE" node="4ObboSf6qzE" resolve="Var" />
</node>
</node>
</node>
</node>
</node>
<node concept="3NuqgR" id="4ObboSf6qzD" role="0Rg$4">
<node concept="aZer4" id="4ObboSf6qzE" role="3XD1gS">
<property role="TrG5h" value="Var" />
</node>
<node concept="aZer4" id="4ObboSf6qzF" role="3XD1gS">
<property role="TrG5h" value="Bnd" />
</node>
<node concept="32pEOW" id="24ciDNzxNFJ" role="3vLBG7" />
</node>
<node concept="3xSepi" id="6E2cNicdikO" role="3xSepv">
<node concept="3Aq9E8" id="4ObboSf6qzM" role="3xSepj">
<node concept="3I6sU6" id="4ObboSf6qzN" role="3Ip0Jz">
<node concept="3I6s7M" id="4ObboSf7r55" role="3I6sU7">
<node concept="3Aqt3T" id="4ObboSf7r54" role="3I6s78">
<ref role="3AqCNq" node="3Qp4N06bUPu" resolve="convertsTo" />
<node concept="a7P8L" id="4ObboSf7rJm" role="3AunhB">
<ref role="a7OzE" node="4ObboSf6qzE" resolve="Var" />
</node>
<node concept="a7P8L" id="4ObboSf7s4$" role="3AunhB">
<ref role="a7OzE" node="4ObboSf6qzF" resolve="Bnd" />
</node>
</node>
</node>
</node>
</node>
</node>
</node>
</node>
</node>
@ -38437,15 +38461,6 @@
</node>
</node>
</node>
<node concept="3NuqgR" id="4$mmEcR8qUH" role="0Rg$4">
<node concept="aZer4" id="4$mmEcR8qUI" role="3XD1gS">
<property role="TrG5h" value="Var" />
</node>
<node concept="32pEOW" id="4$mmEcR8qUU" role="3vLBG7" />
<node concept="aZer4" id="4$mmEcR8qV4" role="3XD1gS">
<property role="TrG5h" value="Bnd" />
</node>
</node>
<node concept="3Aq93q" id="4$mmEcR8qVH" role="1nLNMb">
<node concept="3I6sU6" id="4$mmEcR8qVI" role="3Ip0Jz">
<node concept="3I6s7M" id="4$mmEcR8qVR" role="3I6sU7">
@ -38461,6 +38476,15 @@
</node>
</node>
</node>
<node concept="3NuqgR" id="4$mmEcR8qUH" role="0Rg$4">
<node concept="aZer4" id="4$mmEcR8qUI" role="3XD1gS">
<property role="TrG5h" value="Var" />
</node>
<node concept="aZer4" id="4$mmEcR8qV4" role="3XD1gS">
<property role="TrG5h" value="Bnd" />
</node>
<node concept="32pEOW" id="4$mmEcR8qUU" role="3vLBG7" />
</node>
<node concept="3xSepi" id="4$mmEcR8qWh" role="3xSepv">
<node concept="3Aq9E8" id="4$mmEcR8qWi" role="3xSepj">
<node concept="3I6sU6" id="4$mmEcR8qWj" role="3Ip0Jz">
@ -44681,10 +44705,10 @@
<node concept="aZer4" id="1sJZ0_oQvOJ" role="3XD1gS">
<property role="TrG5h" value="Bound" />
</node>
<node concept="32pEOW" id="1sJZ0_oQvQb" role="3vLBG7" />
<node concept="aZer4" id="1sJZ0_oQvVs" role="3XD1gS">
<property role="TrG5h" value="TVar" />
</node>
<node concept="32pEOW" id="1sJZ0_oQvQb" role="3vLBG7" />
</node>
<node concept="3xSepi" id="1sJZ0_oQw3D" role="3xSepv">
<node concept="3Aq9E8" id="1sJZ0_oQw3E" role="3xSepj">
@ -44823,7 +44847,6 @@
</node>
<node concept="2OqwBi" id="4ZxjFYHiCbX" role="33vP2m">
<node concept="2OqwBi" id="4ZxjFYHiBER" role="2Oq$k0">
<node concept="1KnU$U" id="4ZxjFYHiC3x" role="2OqNvi" />
<node concept="2OqwBi" id="4ZxjFYHiAZv" role="2Oq$k0">
<node concept="2OqwBi" id="4ZxjFYHiwR8" role="2Oq$k0">
<node concept="37vLTw" id="7NX8kJ7gY_o" role="2Oq$k0">
@ -44852,6 +44875,7 @@
</node>
<node concept="1VAtEI" id="4ZxjFYHiBm3" role="2OqNvi" />
</node>
<node concept="1KnU$U" id="4ZxjFYHiC3x" role="2OqNvi" />
</node>
<node concept="ANE8D" id="4ZxjFYHiC$x" role="2OqNvi" />
</node>
@ -45200,7 +45224,6 @@
<node concept="aZer4" id="4btN1w5KjwS" role="3XD1gS">
<property role="TrG5h" value="ClsTy" />
</node>
<node concept="32pEOW" id="24ciDNzxNHz" role="3vLBG7" />
<node concept="aZer4" id="4btN1w5KoN7" role="3XD1gS">
<property role="TrG5h" value="TyArgs" />
<node concept="2OqwBi" id="4btN1w5LYyn" role="3gj$pD">
@ -45219,6 +45242,40 @@
<node concept="34oBXx" id="5mvKPwwqxj2" role="2OqNvi" />
</node>
</node>
<node concept="32pEOW" id="24ciDNzxNHz" role="3vLBG7" />
</node>
<node concept="3NuqgR" id="4btN1w5KovM" role="0Rg$4">
<node concept="aZer4" id="4btN1w5KovN" role="3XD1gS">
<property role="TrG5h" value="TyScheme" />
</node>
<node concept="aZer4" id="4btN1w5M40q" role="3XD1gS">
<property role="TrG5h" value="TVs" />
<node concept="2OqwBi" id="4btN1w5M4rl" role="3gj$pD">
<node concept="37vLTw" id="4btN1w5M4fX" role="2Oq$k0">
<ref role="3cqZAo" node="4btN1w5LWil" resolve="tyParams" />
</node>
<node concept="34oBXx" id="4btN1w5M4AT" role="2OqNvi" />
</node>
</node>
<node concept="aZer4" id="4btN1w5MfPo" role="3XD1gS">
<property role="TrG5h" value="Bounds" />
<node concept="2OqwBi" id="4btN1w5Mg05" role="3gj$pD">
<node concept="37vLTw" id="4btN1w5MfX_" role="2Oq$k0">
<ref role="3cqZAo" node="4btN1w5LWil" resolve="tyParams" />
</node>
<node concept="34oBXx" id="4btN1w5Mg7d" role="2OqNvi" />
</node>
</node>
<node concept="32pEOW" id="24ciDNzxNH$" role="3vLBG7" />
</node>
<node concept="3NuqgR" id="4btN1w5M4UZ" role="0Rg$4">
<node concept="aZer4" id="4btN1w5M4V0" role="3XD1gS">
<property role="TrG5h" value="ContextTVs" />
</node>
<node concept="aZer4" id="4btN1w5MgLQ" role="3XD1gS">
<property role="TrG5h" value="ContextTVSubs" />
</node>
<node concept="VbTHi" id="7L5omgek2wQ" role="3vLBG7" />
</node>
<node concept="3xSepi" id="6E2cNicdim9" role="3xSepv">
<node concept="3Aq9E8" id="4btN1w5KnXf" role="3xSepj">
@ -45548,39 +45605,6 @@
</node>
</node>
</node>
<node concept="3NuqgR" id="4btN1w5KovM" role="0Rg$4">
<node concept="aZer4" id="4btN1w5KovN" role="3XD1gS">
<property role="TrG5h" value="TyScheme" />
</node>
<node concept="aZer4" id="4btN1w5M40q" role="3XD1gS">
<property role="TrG5h" value="TVs" />
<node concept="2OqwBi" id="4btN1w5M4rl" role="3gj$pD">
<node concept="37vLTw" id="4btN1w5M4fX" role="2Oq$k0">
<ref role="3cqZAo" node="4btN1w5LWil" resolve="tyParams" />
</node>
<node concept="34oBXx" id="4btN1w5M4AT" role="2OqNvi" />
</node>
</node>
<node concept="aZer4" id="4btN1w5MfPo" role="3XD1gS">
<property role="TrG5h" value="Bounds" />
<node concept="2OqwBi" id="4btN1w5Mg05" role="3gj$pD">
<node concept="37vLTw" id="4btN1w5MfX_" role="2Oq$k0">
<ref role="3cqZAo" node="4btN1w5LWil" resolve="tyParams" />
</node>
<node concept="34oBXx" id="4btN1w5Mg7d" role="2OqNvi" />
</node>
</node>
<node concept="32pEOW" id="24ciDNzxNH$" role="3vLBG7" />
</node>
<node concept="3NuqgR" id="4btN1w5M4UZ" role="0Rg$4">
<node concept="aZer4" id="4btN1w5M4V0" role="3XD1gS">
<property role="TrG5h" value="ContextTVs" />
</node>
<node concept="aZer4" id="4btN1w5MgLQ" role="3XD1gS">
<property role="TrG5h" value="ContextTVSubs" />
</node>
<node concept="VbTHi" id="7L5omgek2wQ" role="3vLBG7" />
</node>
</node>
</node>
</node>
@ -47791,7 +47815,6 @@
<node concept="aZer4" id="6EK6UBPpvFr" role="3XD1gS">
<property role="TrG5h" value="ClsDecl" />
</node>
<node concept="32pEOW" id="6EK6UBPp8Y2" role="3vLBG7" />
<node concept="aZer4" id="6EK6UBPqlwI" role="3XD1gS">
<property role="TrG5h" value="ClsT" />
</node>
@ -47801,6 +47824,7 @@
<node concept="aZer4" id="6EK6UBPp8XQ" role="3XD1gS">
<property role="TrG5h" value="CtorDecl" />
</node>
<node concept="32pEOW" id="6EK6UBPp8Y2" role="3vLBG7" />
</node>
<node concept="3NuqgR" id="6EK6UBPpy3B" role="0Rg$4">
<node concept="aZer4" id="6EK6UBPpQfo" role="3XD1gS">