MPSCR-2: Fix capture of lowerBoundType on type variables with bounds

This commit is contained in:
Grigorii Kirgizov 2019-10-26 21:44:09 +03:00
parent 820066cf4d
commit 223b243e7f
3 changed files with 466 additions and 185 deletions

View File

@ -30132,6 +30132,108 @@
<node concept="1nLNMY" id="2QSgdliiZ3g" role="1nK1Vg">
<property role="TrG5h" value="captureVar_lowerBound_typevar_hasbound" />
<node concept="3clFbS" id="2QSgdliiZ3h" role="1nLNMH">
<node concept="3SKdUt" id="56FCbpZ66WX" role="3cqZAp">
<node concept="1PaTwC" id="56FCbpZ66WY" role="3ndbpf">
<node concept="3oM_SD" id="56FCbpZ66X0" role="1PaTwD">
<property role="3oM_SC" value="even" />
</node>
<node concept="3oM_SD" id="56FCbpZ671J" role="1PaTwD">
<property role="3oM_SC" value="if" />
</node>
<node concept="3oM_SD" id="56FCbpZ671M" role="1PaTwD">
<property role="3oM_SC" value="TypeVarType" />
</node>
<node concept="3oM_SD" id="56FCbpZ67df" role="1PaTwD">
<property role="3oM_SC" value="has" />
</node>
<node concept="3oM_SD" id="56FCbpZ67dk" role="1PaTwD">
<property role="3oM_SC" value="upper" />
</node>
<node concept="3oM_SD" id="56FCbpZ6buK" role="1PaTwD">
<property role="3oM_SC" value="bound," />
</node>
</node>
<node concept="1PaTwC" id="56FCbpZ68BC" role="3ndbpf">
<node concept="3oM_SD" id="56FCbpZ6buT" role="1PaTwD">
<property role="3oM_SC" value="it" />
</node>
<node concept="3oM_SD" id="56FCbpZ67sP" role="1PaTwD">
<property role="3oM_SC" value="means" />
</node>
<node concept="3oM_SD" id="56FCbpZ6bzm" role="1PaTwD">
<property role="3oM_SC" value="nothing" />
</node>
<node concept="3oM_SD" id="56FCbpZ6b$0" role="1PaTwD">
<property role="3oM_SC" value="because" />
</node>
<node concept="3oM_SD" id="56FCbpZ680i" role="1PaTwD">
<property role="3oM_SC" value="it's" />
</node>
<node concept="3oM_SD" id="56FCbpZ684h" role="1PaTwD">
<property role="3oM_SC" value="nested" />
</node>
<node concept="3oM_SD" id="56FCbpZ688h" role="1PaTwD">
<property role="3oM_SC" value="inside" />
</node>
<node concept="3oM_SD" id="56FCbpZ68ci" role="1PaTwD">
<property role="3oM_SC" value="lower" />
</node>
<node concept="3oM_SD" id="56FCbpZ68gk" role="1PaTwD">
<property role="3oM_SC" value="bound" />
</node>
<node concept="3oM_SD" id="56FCbpZ68kn" role="1PaTwD">
<property role="3oM_SC" value="type." />
</node>
</node>
<node concept="1PaTwC" id="56FCbpZ69ym" role="3ndbpf">
<node concept="3oM_SD" id="56FCbpZ69yl" role="1PaTwD">
<property role="3oM_SC" value="e.g." />
</node>
<node concept="3oM_SD" id="56FCbpZ69Au" role="1PaTwD">
<property role="3oM_SC" value="consider" />
</node>
<node concept="3oM_SD" id="56FCbpZ69I7" role="1PaTwD">
<property role="3oM_SC" value="whether" />
</node>
<node concept="3oM_SD" id="56FCbpZ69LY" role="1PaTwD">
<property role="3oM_SC" value="type" />
</node>
<node concept="3oM_SD" id="56FCbpZ6aw5" role="1PaTwD">
<property role="3oM_SC" value="`?" />
</node>
<node concept="3oM_SD" id="56FCbpZ69TD" role="1PaTwD">
<property role="3oM_SC" value="super" />
</node>
<node concept="3oM_SD" id="56FCbpZ6a1l" role="1PaTwD">
<property role="3oM_SC" value="(T" />
</node>
<node concept="3oM_SD" id="56FCbpZ6a92" role="1PaTwD">
<property role="3oM_SC" value="extends" />
</node>
<node concept="3oM_SD" id="56FCbpZ6acX" role="1PaTwD">
<property role="3oM_SC" value="Number)`" />
</node>
<node concept="3oM_SD" id="56FCbpZ6aNY" role="1PaTwD">
<property role="3oM_SC" value="can" />
</node>
<node concept="3oM_SD" id="56FCbpZ6aRW" role="1PaTwD">
<property role="3oM_SC" value="be" />
</node>
<node concept="3oM_SD" id="56FCbpZ6aS8" role="1PaTwD">
<property role="3oM_SC" value="converted" />
</node>
<node concept="3oM_SD" id="56FCbpZ6aW8" role="1PaTwD">
<property role="3oM_SC" value="to" />
</node>
<node concept="3oM_SD" id="56FCbpZ6aWm" role="1PaTwD">
<property role="3oM_SC" value="`Number`" />
</node>
<node concept="3oM_SD" id="56FCbpZ6cdW" role="1PaTwD">
<property role="3oM_SC" value="(no)" />
</node>
</node>
</node>
<node concept="3clFbH" id="56FCbpZ69p$" role="3cqZAp" />
<node concept="1nLNNL" id="2QSgdliiZ3i" role="3cqZAp">
<node concept="1nLNMm" id="2QSgdliiZ3j" role="1nLNNK">
<node concept="0eUR_" id="2QSgdliiZ3k" role="0UC6o">
@ -30151,7 +30253,7 @@
</node>
<node concept="3NuqgR" id="2QSgdliiZ3q" role="0eVf_">
<node concept="aZer4" id="2QSgdliiZ3s" role="3XD1gS">
<property role="TrG5h" value="VBnd" />
<property role="TrG5h" value="TypeVarType" />
</node>
</node>
<node concept="3NuqgR" id="2QSgdliiZdv" role="0eVf_">
@ -30181,24 +30283,8 @@
<node concept="nsMwS" id="2QSgdliiZ3$" role="ns1xD">
<ref role="nsMwP" node="39Sam6Yh3nH" resolve="parameter" />
<node concept="1nq8_$" id="2QSgdliiZ3_" role="nsMwV">
<node concept="ns1u0" id="2QSgdliiZ3A" role="1nq8_t">
<ref role="ns1xF" node="JOGAOsVt2f" resolve="typeVariableType" />
<node concept="nsMwS" id="2QSgdliiZ3B" role="ns1xD">
<ref role="nsMwP" node="JOGAOsVt2h" resolve="declaration" />
<node concept="1nq8_$" id="2QSgdliiZ3C" role="nsMwV">
<node concept="a7P8L" id="2QSgdliiZ3D" role="1nq8_t">
<ref role="a7OzE" node="2QSgdliiZ3r" resolve="VarDecl" />
</node>
</node>
</node>
<node concept="nsMwS" id="2QSgdliiZ3E" role="ns1xD">
<ref role="nsMwP" node="39Sam6ZibY7" resolve="parameter" />
<node concept="1nq8_$" id="2QSgdliiZ3F" role="nsMwV">
<node concept="a7P8L" id="2QSgdliiZ3G" role="1nq8_t">
<ref role="a7OzE" node="2QSgdliiZ3s" resolve="VBnd" />
</node>
</node>
</node>
<node concept="a7P8L" id="56FCbpZ65fU" role="1nq8_t">
<ref role="a7OzE" node="2QSgdliiZ3s" resolve="TypeVarType" />
</node>
</node>
</node>
@ -30232,20 +30318,6 @@
</node>
<node concept="3Aq9E8" id="2QSgdliiZ3J" role="1nLNMd">
<node concept="3I6sU6" id="2QSgdliiZ3K" role="3Ip0Jz">
<node concept="3I6s7M" id="2QSgdliiZeW" role="3I6sU7">
<node concept="3Aqt3T" id="2QSgdliiZeU" role="3I6s78">
<ref role="3AqCNq" node="4nb5svirFh" resolve="glb" />
<node concept="a7P8L" id="2QSgdliiZfk" role="3AunhB">
<ref role="a7OzE" node="2QSgdliiZdw" resolve="GLB" />
</node>
<node concept="a7P8L" id="2QSgdliiZfq" role="3AunhB">
<ref role="a7OzE" node="2QSgdliiZ3s" resolve="VBnd" />
</node>
<node concept="a7P8L" id="2QSgdliiZfy" role="3AunhB">
<ref role="a7OzE" node="2QSgdliiZdI" resolve="TVBnd" />
</node>
</node>
</node>
<node concept="3I6s7M" id="2QSgdliiZ3L" role="3I6sU7">
<node concept="3A8Hvi" id="2QSgdliiZ3M" role="3I6s78">
<node concept="a7P8L" id="2QSgdliiZ3N" role="3A8wtg">
@ -30264,32 +30336,16 @@
<node concept="nsMwS" id="2QSgdliiZ3S" role="ns1xD">
<ref role="nsMwP" node="JOGAOsVt2n" resolve="lbound" />
<node concept="1nq8_$" id="2QSgdliiZ3T" role="nsMwV">
<node concept="ns1u0" id="2QSgdliiZ3U" role="1nq8_t">
<ref role="ns1xF" node="JOGAOsVt2f" resolve="typeVariableType" />
<node concept="nsMwS" id="2QSgdliiZ3V" role="ns1xD">
<ref role="nsMwP" node="JOGAOsVt2h" resolve="declaration" />
<node concept="1nq8_$" id="2QSgdliiZ3W" role="nsMwV">
<node concept="a7P8L" id="2QSgdliiZ3X" role="1nq8_t">
<ref role="a7OzE" node="2QSgdliiZ3r" resolve="VarDecl" />
</node>
</node>
</node>
<node concept="nsMwS" id="2QSgdliiZ3Y" role="ns1xD">
<ref role="nsMwP" node="39Sam6ZibY7" resolve="parameter" />
<node concept="1nq8_$" id="2QSgdliiZ3Z" role="nsMwV">
<node concept="a7P8L" id="2QSgdliiZ40" role="1nq8_t">
<ref role="a7OzE" node="2QSgdliiZ3s" resolve="VBnd" />
</node>
</node>
</node>
<node concept="a7P8L" id="56FCbpZ65rC" role="1nq8_t">
<ref role="a7OzE" node="2QSgdliiZ3s" resolve="TypeVarType" />
</node>
</node>
</node>
<node concept="nsMwS" id="2QSgdliiZ41" role="ns1xD">
<ref role="nsMwP" node="JOGAOsVt2m" resolve="ubound" />
<node concept="1nq8_$" id="2QSgdliiZ42" role="nsMwV">
<node concept="a7P8L" id="2QSgdliiZfB" role="1nq8_t">
<ref role="a7OzE" node="2QSgdliiZdw" resolve="GLB" />
<node concept="a7P8L" id="56FCbpZ643e" role="1nq8_t">
<ref role="a7OzE" node="2QSgdliiZdI" resolve="TVBnd" />
</node>
</node>
</node>
@ -30298,139 +30354,15 @@
</node>
</node>
</node>
</node>
</node>
</node>
</node>
<node concept="1nLNMY" id="12QmIo_7sgU" role="1nK1Vg">
<property role="TrG5h" value="captureVar_lowerBound_typevar" />
<node concept="3clFbS" id="12QmIo_7sgV" role="1nLNMH">
<node concept="1nLNNL" id="12QmIo_7sgW" role="3cqZAp">
<node concept="1nLNMm" id="12QmIo_7sgX" role="1nLNNK">
<node concept="0eUR_" id="7lt0LtPBjV4" role="0UC6o">
<node concept="3NuqgR" id="5310cdpGLfY" role="0eVf_">
<node concept="aZer4" id="5310cdpGLfZ" role="3XD1gS">
<property role="TrG5h" value="CapVar" />
</node>
<node concept="aZer4" id="5310cdpGLg0" role="3XD1gS">
<property role="TrG5h" value="LBType" />
</node>
<node concept="aZer4" id="5310cdpGLg1" role="3XD1gS">
<property role="TrG5h" value="LBnd" />
</node>
<node concept="aZer4" id="5310cdpGLg2" role="3XD1gS">
<property role="TrG5h" value="TypeVar" />
</node>
</node>
<node concept="3NuqgR" id="5310cdpGLgj" role="0eVf_">
<node concept="aZer4" id="5310cdpGLgk" role="3XD1gS">
<property role="TrG5h" value="UBnd" />
</node>
</node>
<node concept="3NuqgR" id="7wAOnq6wIMs" role="0eVf_">
<node concept="aZer4" id="2QSgdligUIe" role="3XD1gS">
<property role="TrG5h" value="VarDecl" />
</node>
<node concept="2sp9CU" id="7wAOnq6wINo" role="3vLBG7" />
</node>
</node>
<node concept="3Aq93q" id="5310cdpGLfX" role="1nLNMb">
<property role="3ArMco" value="false" />
<node concept="3I6sU6" id="5310cdpGLg3" role="3Ip0Jz">
<node concept="3I6s7M" id="5310cdpGLg4" role="3I6sU7">
<node concept="3Aqt3T" id="5310cdpGLg5" role="3I6s78">
<ref role="3AqCNq" node="3wxtToEiJ2j" resolve="captureWildcard" />
<node concept="a7P8L" id="5310cdpGLg6" role="3AunhB">
<ref role="a7OzE" node="5310cdpGLfZ" resolve="CapVar" />
<node concept="3Aq9_M" id="56FCbpZ64__" role="1nLNMa">
<node concept="3I6sU6" id="56FCbpZ64_A" role="3Ip0Jz">
<node concept="3I6s7M" id="56FCbpZ66i8" role="3I6sU7">
<node concept="3A8Hvi" id="56FCbpZ66i5" role="3I6s78">
<node concept="a7P8L" id="56FCbpZ66pN" role="3A8wtg">
<ref role="a7OzE" node="2QSgdliiZ3s" resolve="TypeVarType" />
</node>
<node concept="1HFMs5" id="1mdVbTSaq2M" role="3AunhB">
<node concept="ns1u0" id="JOGAOsVt9D" role="1uarlW">
<ref role="ns1xF" node="JOGAOsVt2x" resolve="lowerBoundType" />
<node concept="nsMwS" id="JOGAOsVt9E" role="ns1xD">
<ref role="nsMwP" node="39Sam6Yh3nH" resolve="parameter" />
<node concept="1nq8_$" id="49obaclfijD" role="nsMwV">
<node concept="ns1u0" id="2QSgdligUIr" role="1nq8_t">
<ref role="ns1xF" node="JOGAOsVt2f" resolve="typeVariableType" />
<node concept="nsMwS" id="2QSgdligUIR" role="ns1xD">
<ref role="nsMwP" node="JOGAOsVt2h" resolve="declaration" />
<node concept="1nq8_$" id="2QSgdligUIY" role="nsMwV">
<node concept="a7P8L" id="2QSgdligUJ2" role="1nq8_t">
<ref role="a7OzE" node="2QSgdligUIe" resolve="VarDecl" />
</node>
</node>
</node>
<node concept="nsMwS" id="2QSgdligUIt" role="ns1xD">
<ref role="nsMwP" node="39Sam6ZibY7" resolve="parameter" />
<node concept="1nq8_$" id="2QSgdligUIz" role="nsMwV">
<node concept="a7P8L" id="2QSgdligUIx" role="1nq8_t">
<ref role="a7OzE" node="5310cdpGLgk" resolve="UBnd" />
</node>
</node>
</node>
</node>
</node>
</node>
</node>
<node concept="a7P8L" id="5310cdpGLg8" role="1uarlU">
<ref role="a7OzE" node="5310cdpGLg0" resolve="LBType" />
</node>
</node>
<node concept="a7P8L" id="5310cdpGLgh" role="3AunhB">
<ref role="a7OzE" node="5310cdpGLg2" resolve="TypeVar" />
</node>
</node>
</node>
</node>
</node>
<node concept="3Aq9E8" id="5310cdpGLgq" role="1nLNMd">
<node concept="3I6sU6" id="5310cdpGLgr" role="3Ip0Jz">
<node concept="3I6s7M" id="5310cdpGLus" role="3I6sU7">
<node concept="3A8Hvi" id="5310cdpGLut" role="3I6s78">
<node concept="a7P8L" id="5310cdpGLuu" role="3A8wtg">
<ref role="a7OzE" node="5310cdpGLfZ" resolve="CapVar" />
</node>
<node concept="ns1u0" id="JOGAOsVtbF" role="3A8w4Q">
<ref role="ns1xF" node="JOGAOsVt2j" resolve="captureOfType" />
<node concept="nsMwS" id="JOGAOsVtbG" role="ns1xD">
<ref role="nsMwP" node="JOGAOsVt2l" resolve="origin" />
<node concept="1nq8_$" id="49obaclfij9" role="nsMwV">
<node concept="a7P8L" id="5310cdpGLxx" role="1nq8_t">
<ref role="a7OzE" node="5310cdpGLg0" resolve="LBType" />
</node>
</node>
</node>
<node concept="nsMwS" id="JOGAOsVtbH" role="ns1xD">
<ref role="nsMwP" node="JOGAOsVt2n" resolve="lbound" />
<node concept="1nq8_$" id="2QSgdligUKK" role="nsMwV">
<node concept="ns1u0" id="2QSgdligUKL" role="1nq8_t">
<ref role="ns1xF" node="JOGAOsVt2f" resolve="typeVariableType" />
<node concept="nsMwS" id="2QSgdligUKM" role="ns1xD">
<ref role="nsMwP" node="JOGAOsVt2h" resolve="declaration" />
<node concept="1nq8_$" id="2QSgdligUKN" role="nsMwV">
<node concept="a7P8L" id="2QSgdligUKO" role="1nq8_t">
<ref role="a7OzE" node="2QSgdligUIe" resolve="VarDecl" />
</node>
</node>
</node>
<node concept="nsMwS" id="2QSgdligUKP" role="ns1xD">
<ref role="nsMwP" node="39Sam6ZibY7" resolve="parameter" />
<node concept="1nq8_$" id="2QSgdligUKQ" role="nsMwV">
<node concept="a7P8L" id="2QSgdligUKR" role="1nq8_t">
<ref role="a7OzE" node="5310cdpGLgk" resolve="UBnd" />
</node>
</node>
</node>
</node>
</node>
</node>
<node concept="nsMwS" id="JOGAOsVtbI" role="ns1xD">
<ref role="nsMwP" node="JOGAOsVt2m" resolve="ubound" />
<node concept="1nq8_$" id="49obaclfijy" role="nsMwV">
<node concept="a7P8L" id="5310cdpGLuM" role="1nq8_t">
<ref role="a7OzE" node="5310cdpGLgk" resolve="UBnd" />
</node>
</node>
</node>
<node concept="ns1u0" id="56FCbpZ66_h" role="3A8w4Q">
<ref role="ns1xF" node="JOGAOsVt2f" resolve="typeVariableType" />
</node>
</node>
</node>

View File

@ -268,6 +268,38 @@
<ref role="3uigEE" to="wyt6:~Exception" resolve="Exception" />
</node>
</node>
<node concept="1LZb2c" id="5Pqb1qkLozX" role="1SL9yI">
<property role="TrG5h" value="Sample_bad3" />
<node concept="3cqZAl" id="5Pqb1qkLozY" role="3clF45" />
<node concept="3clFbS" id="5Pqb1qkLozZ" role="3clF47">
<node concept="2Hmddi" id="5Pqb1qkLo$0" role="3cqZAp">
<node concept="2OqwBi" id="5Pqb1qkLo$1" role="2Hmdds">
<node concept="2YIFZM" id="5Pqb1qkLo$2" role="2Oq$k0">
<ref role="37wK5l" to="tj24:27bTNFfaOo$" resolve="ofNode" />
<ref role="1Pybhc" to="tj24:1N_0WA5JxZO" resolve="TypecheckingTestHelper" />
<node concept="2OqwBi" id="5Pqb1qkLo$3" role="37wK5m">
<node concept="2WthIp" id="5Pqb1qkLo$4" role="2Oq$k0" />
<node concept="2XshWL" id="5Pqb1qkLo$5" role="2OqNvi">
<ref role="2WH_rO" node="35YJGAJTxCf" resolve="resolve" />
<node concept="2tJFMh" id="5Pqb1qkLo$6" role="2XxRq1">
<node concept="ZC_QK" id="5Pqb1qkLoPy" role="2tJFKM">
<ref role="2aWVGs" to="7rut:5Pqb1qkLdNZ" resolve="Sample_bad3" />
</node>
</node>
</node>
</node>
<node concept="1jxXqW" id="5Pqb1qkLo$8" role="37wK5m" />
</node>
<node concept="liA8E" id="5Pqb1qkLo$9" role="2OqNvi">
<ref role="37wK5l" to="tj24:27bTNFfaYS2" resolve="checkTypes" />
</node>
</node>
</node>
</node>
<node concept="3uibUv" id="5Pqb1qkLo$a" role="Sfmx6">
<ref role="3uigEE" to="wyt6:~Exception" resolve="Exception" />
</node>
</node>
</node>
<node concept="2XOHcx" id="1N_0WA5DT60">
<property role="2XOHcw" value="${mpscore_home}" />

View File

@ -5,6 +5,7 @@
<use id="f3061a53-9226-4cc5-a443-f952ceaf5816" name="jetbrains.mps.baseLanguage" version="9" />
<use id="0fda14cc-a416-4c81-869a-2175d8b3325d" name="jetbrains.mps.baseLanguageExt" version="0" />
<use id="0b80a2e8-f9f1-47b3-823f-56eb115bca42" name="jetbrains.mps.typechecking.annotation" version="0" />
<use id="c7fb639f-be78-4307-89b0-b5959c3fa8c8" name="jetbrains.mps.lang.text" version="0" />
</languages>
<imports />
<registry>
@ -1053,5 +1054,321 @@
</node>
<node concept="2tJIrI" id="5s497Vrh7Th" role="jymVt" />
</node>
<node concept="312cEu" id="5Pqb1qkLdNZ">
<property role="TrG5h" value="Sample_bad3" />
<node concept="2tJIrI" id="5Pqb1qkLdO3" role="jymVt" />
<node concept="312cEu" id="5Pqb1qkLdO4" role="jymVt">
<property role="2bfB8j" value="true" />
<property role="TrG5h" value="A" />
<node concept="3clFb_" id="5Pqb1qkLdO5" role="jymVt">
<property role="TrG5h" value="a" />
<node concept="3uibUv" id="5Pqb1qkLdO6" role="3clF45">
<ref role="3uigEE" node="5Pqb1qkLdO4" resolve="Sample_bad3.A" />
</node>
<node concept="3Tm1VV" id="5Pqb1qkLdO7" role="1B3o_S" />
<node concept="3clFbS" id="5Pqb1qkLdO8" role="3clF47">
<node concept="3clFbF" id="5Pqb1qkLdO9" role="3cqZAp">
<node concept="Xjq3P" id="5Pqb1qkLdOa" role="3clFbG" />
</node>
</node>
</node>
<node concept="3Tm6S6" id="5Pqb1qkLdOb" role="1B3o_S" />
</node>
<node concept="312cEu" id="5Pqb1qkLdOc" role="jymVt">
<property role="2bfB8j" value="true" />
<property role="TrG5h" value="B" />
<node concept="3clFb_" id="5Pqb1qkLdOd" role="jymVt">
<property role="TrG5h" value="b" />
<node concept="3uibUv" id="5Pqb1qkLdOe" role="3clF45">
<ref role="3uigEE" node="5Pqb1qkLdOc" resolve="Sample_bad3.B" />
</node>
<node concept="3Tm6S6" id="5Pqb1qkLdOf" role="1B3o_S" />
<node concept="3clFbS" id="5Pqb1qkLdOg" role="3clF47">
<node concept="3clFbF" id="5Pqb1qkLdOh" role="3cqZAp">
<node concept="Xjq3P" id="5Pqb1qkLdOi" role="3clFbG" />
</node>
</node>
</node>
<node concept="3Tm6S6" id="5Pqb1qkLdOj" role="1B3o_S" />
<node concept="3uibUv" id="5Pqb1qkLdOk" role="1zkMxy">
<ref role="3uigEE" node="5Pqb1qkLdO4" resolve="Sample_bad3.A" />
</node>
</node>
<node concept="312cEu" id="5Pqb1qkLdOl" role="jymVt">
<property role="2bfB8j" value="true" />
<property role="TrG5h" value="J" />
<node concept="312cEg" id="5Pqb1qkLdOm" role="jymVt">
<property role="34CwA1" value="false" />
<property role="eg7rD" value="false" />
<property role="TrG5h" value="t" />
<property role="3TUv4t" value="false" />
<node concept="16syzq" id="5Pqb1qkLdOn" role="1tU5fm">
<ref role="16sUi3" node="5Pqb1qkLdOw" resolve="T1" />
</node>
</node>
<node concept="3clFb_" id="5Pqb1qkLdOo" role="jymVt">
<property role="TrG5h" value="h" />
<node concept="3uibUv" id="5Pqb1qkLdOp" role="3clF45">
<ref role="3uigEE" node="5Pqb1qkLdOA" resolve="Sample_bad3.H" />
<node concept="3uibUv" id="5Pqb1qkLdOq" role="11_B2D">
<ref role="3uigEE" node="5Pqb1qkLdOl" resolve="Sample_bad3.J" />
<node concept="16syzq" id="5Pqb1qkLdOr" role="11_B2D">
<ref role="16sUi3" node="5Pqb1qkLdOw" resolve="T1" />
</node>
</node>
</node>
<node concept="3clFbS" id="5Pqb1qkLdOs" role="3clF47">
<node concept="3clFbF" id="5Pqb1qkLdOt" role="3cqZAp">
<node concept="10Nm6u" id="5Pqb1qkLdOu" role="3clFbG" />
</node>
</node>
</node>
<node concept="3Tm6S6" id="5Pqb1qkLdOv" role="1B3o_S" />
<node concept="16euLQ" id="5Pqb1qkLdOw" role="16eVyc">
<property role="TrG5h" value="T1" />
<node concept="3uibUv" id="5Pqb1qkLdOx" role="3ztrMU">
<ref role="3uigEE" node="5Pqb1qkLdO4" resolve="Sample_bad3.A" />
</node>
</node>
</node>
<node concept="312cEu" id="5Pqb1qkLdOy" role="jymVt">
<property role="2bfB8j" value="true" />
<property role="TrG5h" value="K" />
<node concept="3Tm6S6" id="5Pqb1qkLdOz" role="1B3o_S" />
<node concept="3uibUv" id="5Pqb1qkLdO$" role="1zkMxy">
<ref role="3uigEE" node="5Pqb1qkLdOl" resolve="Sample_bad3.J" />
<node concept="3uibUv" id="5Pqb1qkLdO_" role="11_B2D">
<ref role="3uigEE" node="5Pqb1qkLdOc" resolve="Sample_bad3.B" />
</node>
</node>
</node>
<node concept="312cEu" id="5Pqb1qkLdOA" role="jymVt">
<property role="2bfB8j" value="true" />
<property role="TrG5h" value="H" />
<node concept="3clFb_" id="5Pqb1qkLdOB" role="jymVt">
<property role="TrG5h" value="get" />
<node concept="16syzq" id="5Pqb1qkLdOC" role="3clF45">
<ref role="16sUi3" node="5Pqb1qkLdOI" resolve="T2" />
</node>
<node concept="3Tm6S6" id="5Pqb1qkLdOD" role="1B3o_S" />
<node concept="3clFbS" id="5Pqb1qkLdOE" role="3clF47">
<node concept="3clFbF" id="5Pqb1qkLdOF" role="3cqZAp">
<node concept="10Nm6u" id="5Pqb1qkLdOG" role="3clFbG" />
</node>
</node>
</node>
<node concept="3Tm6S6" id="5Pqb1qkLdOH" role="1B3o_S" />
<node concept="16euLQ" id="5Pqb1qkLdOI" role="16eVyc">
<property role="TrG5h" value="T2" />
</node>
</node>
<node concept="312cEu" id="5Pqb1qkLdOJ" role="jymVt">
<property role="2bfB8j" value="true" />
<property role="TrG5h" value="G" />
<node concept="3clFb_" id="5Pqb1qkLdOK" role="jymVt">
<property role="TrG5h" value="g1" />
<node concept="37vLTG" id="5Pqb1qkLdOL" role="3clF46">
<property role="TrG5h" value="h" />
<node concept="3uibUv" id="5Pqb1qkLdOM" role="1tU5fm">
<ref role="3uigEE" node="5Pqb1qkLdOA" resolve="Sample_bad3.H" />
<node concept="3qUE_q" id="5Pqb1qkLdON" role="11_B2D">
<node concept="3uibUv" id="5Pqb1qkLdOO" role="3qUE_r">
<ref role="3uigEE" node="5Pqb1qkLdOl" resolve="Sample_bad3.J" />
<node concept="16syzq" id="5Pqb1qkLdOP" role="11_B2D">
<ref role="16sUi3" node="5Pqb1qkLdOU" resolve="T3" />
</node>
</node>
</node>
</node>
</node>
<node concept="16syzq" id="5Pqb1qkLdOQ" role="3clF45">
<ref role="16sUi3" node="5Pqb1qkLdOU" resolve="T3" />
</node>
<node concept="3clFbS" id="5Pqb1qkLdOR" role="3clF47">
<node concept="3clFbF" id="5Pqb1qkLdOS" role="3cqZAp">
<node concept="10Nm6u" id="5Pqb1qkLdOT" role="3clFbG" />
</node>
</node>
<node concept="16euLQ" id="5Pqb1qkLdOU" role="16eVyc">
<property role="TrG5h" value="T3" />
<node concept="3uibUv" id="5Pqb1qkLdOV" role="3ztrMU">
<ref role="3uigEE" node="5Pqb1qkLdO4" resolve="Sample_bad3.A" />
</node>
</node>
</node>
<node concept="3Tm6S6" id="5Pqb1qkLdPn" role="1B3o_S" />
</node>
<node concept="312cEu" id="5Pqb1qkLdPo" role="jymVt">
<property role="2bfB8j" value="true" />
<property role="TrG5h" value="F" />
<node concept="3Tm6S6" id="5Pqb1qkLdPp" role="1B3o_S" />
<node concept="3clFb_" id="5Pqb1qkLdPq" role="jymVt">
<property role="TrG5h" value="f" />
<property role="DiZV1" value="false" />
<node concept="3cqZAl" id="5Pqb1qkLdPr" role="3clF45" />
<node concept="3clFbS" id="5Pqb1qkLdPs" role="3clF47">
<node concept="3cpWs8" id="5Pqb1qkLdQ9" role="3cqZAp">
<node concept="3cpWsn" id="5Pqb1qkLdQa" role="3cpWs9">
<property role="TrG5h" value="g" />
<node concept="3uibUv" id="5Pqb1qkLdQb" role="1tU5fm">
<ref role="3uigEE" node="5Pqb1qkLdOJ" resolve="Sample_bad3.G" />
</node>
<node concept="2ShNRf" id="5Pqb1qkLdQc" role="33vP2m">
<node concept="HV5vD" id="5Pqb1qkLdQd" role="2ShVmc">
<ref role="HV5vE" node="5Pqb1qkLdOJ" resolve="Sample_bad3.G" />
</node>
</node>
</node>
</node>
<node concept="3clFbH" id="5Pqb1qkLdQs" role="3cqZAp" />
<node concept="3cpWs8" id="5Pqb1qkLdQt" role="3cqZAp">
<node concept="3cpWsn" id="5Pqb1qkLdQu" role="3cpWs9">
<property role="TrG5h" value="a2" />
<node concept="3uibUv" id="5Pqb1qkLdQv" role="1tU5fm">
<ref role="3uigEE" node="5Pqb1qkLdO4" resolve="Sample_bad3.A" />
</node>
<node concept="2OqwBi" id="5Pqb1qkLdQw" role="33vP2m">
<node concept="37vLTw" id="5Pqb1qkLdQx" role="2Oq$k0">
<ref role="3cqZAo" node="5Pqb1qkLdQa" resolve="g" />
</node>
<node concept="liA8E" id="5Pqb1qkLdQy" role="2OqNvi">
<ref role="37wK5l" node="5Pqb1qkLdOK" resolve="g1" />
<node concept="2OqwBi" id="5Pqb1qkLdQz" role="37wK5m">
<node concept="37vLTw" id="5Pqb1qkLdQ$" role="2Oq$k0">
<ref role="3cqZAo" node="5Pqb1qkLdRN" resolve="s" />
</node>
<node concept="liA8E" id="5Pqb1qkLdQ_" role="2OqNvi">
<ref role="37wK5l" node="5Pqb1qkLdOo" resolve="h" />
</node>
</node>
</node>
</node>
</node>
</node>
<node concept="3clFbH" id="5Pqb1qkLdQA" role="3cqZAp" />
<node concept="3SKdUt" id="5Pqb1qkLdQB" role="3cqZAp">
<node concept="1PaTwC" id="5Pqb1qkLdQC" role="3ndbpf">
<node concept="3oM_SD" id="5Pqb1qkLdQD" role="1PaTwD">
<property role="3oM_SC" value="checking" />
</node>
<node concept="3oM_SD" id="5Pqb1qkLdQE" role="1PaTwD">
<property role="3oM_SC" value="type" />
</node>
<node concept="3oM_SD" id="5Pqb1qkLdQF" role="1PaTwD">
<property role="3oM_SC" value="variable" />
</node>
<node concept="3oM_SD" id="5Pqb1qkLdQG" role="1PaTwD">
<property role="3oM_SC" value="bounds" />
</node>
<node concept="3oM_SD" id="5Pqb1qkLdQH" role="1PaTwD">
<property role="3oM_SC" value="inference" />
</node>
</node>
</node>
<node concept="3clFbF" id="5Pqb1qkLdQI" role="3cqZAp">
<node concept="2OqwBi" id="5Pqb1qkLdQJ" role="3clFbG">
<node concept="37vLTw" id="5Pqb1qkLdQK" role="2Oq$k0">
<ref role="3cqZAo" node="5Pqb1qkLdQa" resolve="g" />
</node>
<node concept="liA8E" id="5Pqb1qkLdQL" role="2OqNvi">
<ref role="37wK5l" node="5Pqb1qkLdOK" resolve="g1" />
<node concept="2OqwBi" id="5Pqb1qkLdQM" role="37wK5m">
<node concept="37vLTw" id="5Pqb1qkLdQN" role="2Oq$k0">
<ref role="3cqZAo" node="5Pqb1qkLdRN" resolve="s" />
</node>
<node concept="liA8E" id="5Pqb1qkLdQO" role="2OqNvi">
<ref role="37wK5l" node="5Pqb1qkLdOo" resolve="h" />
</node>
</node>
</node>
</node>
</node>
<node concept="3clFbF" id="5Pqb1qkLdQP" role="3cqZAp">
<node concept="2OqwBi" id="5Pqb1qkLdQQ" role="3clFbG">
<node concept="2OqwBi" id="5Pqb1qkLdQR" role="2Oq$k0">
<node concept="37vLTw" id="5Pqb1qkLdQS" role="2Oq$k0">
<ref role="3cqZAo" node="5Pqb1qkLdQa" resolve="g" />
</node>
<node concept="liA8E" id="5Pqb1qkLdQT" role="2OqNvi">
<ref role="37wK5l" node="5Pqb1qkLdOK" resolve="g1" />
<node concept="2OqwBi" id="5Pqb1qkLdQU" role="37wK5m">
<node concept="37vLTw" id="5Pqb1qkLdQV" role="2Oq$k0">
<ref role="3cqZAo" node="5Pqb1qkLdRN" resolve="s" />
</node>
<node concept="liA8E" id="5Pqb1qkLdQW" role="2OqNvi">
<ref role="37wK5l" node="5Pqb1qkLdOo" resolve="h" />
</node>
</node>
</node>
</node>
<node concept="liA8E" id="5Pqb1qkLdQX" role="2OqNvi">
<ref role="37wK5l" node="5Pqb1qkLdO5" resolve="a" />
</node>
</node>
</node>
<node concept="3clFbF" id="5Pqb1qkLdQY" role="3cqZAp">
<node concept="2OqwBi" id="5Pqb1qkLdQZ" role="3clFbG">
<node concept="2OqwBi" id="5Pqb1qkLdR0" role="2Oq$k0">
<node concept="37vLTw" id="5Pqb1qkLdR1" role="2Oq$k0">
<ref role="3cqZAo" node="5Pqb1qkLdQa" resolve="g" />
</node>
<node concept="liA8E" id="5Pqb1qkLdR2" role="2OqNvi">
<ref role="37wK5l" node="5Pqb1qkLdOK" resolve="g1" />
<node concept="2OqwBi" id="5Pqb1qkLdR3" role="37wK5m">
<node concept="37vLTw" id="5Pqb1qkLdR4" role="2Oq$k0">
<ref role="3cqZAo" node="5Pqb1qkLdRN" resolve="s" />
</node>
<node concept="liA8E" id="5Pqb1qkLdR5" role="2OqNvi">
<ref role="37wK5l" node="5Pqb1qkLdOo" resolve="h" />
</node>
</node>
</node>
</node>
<node concept="liA8E" id="5Pqb1qkLdR6" role="2OqNvi">
<ref role="37wK5l" node="5Pqb1qkLdOd" resolve="b" />
<node concept="1U20sH" id="5Pqb1qkLdR7" role="lGtFl">
<property role="1U20sK" value="error" />
</node>
</node>
</node>
</node>
</node>
<node concept="3Tm1VV" id="5Pqb1qkLdRG" role="1B3o_S" />
<node concept="16euLQ" id="5Pqb1qkLdRH" role="16eVyc">
<property role="TrG5h" value="T5" />
<node concept="3uibUv" id="5Pqb1qkLdRI" role="3ztrMU">
<ref role="3uigEE" node="5Pqb1qkLdOc" resolve="Sample_bad3.B" />
</node>
</node>
<node concept="16euLQ" id="5Pqb1qkLdRJ" role="16eVyc">
<property role="TrG5h" value="S2" />
<node concept="3uibUv" id="5Pqb1qkLdRK" role="3ztrMU">
<ref role="3uigEE" node="5Pqb1qkLdOl" resolve="Sample_bad3.J" />
<node concept="3qUtgH" id="5Pqb1qkLdRL" role="11_B2D">
<node concept="16syzq" id="5Pqb1qkLdRM" role="3qUvdb">
<ref role="16sUi3" node="5Pqb1qkLdRH" resolve="T5" />
</node>
</node>
</node>
</node>
<node concept="37vLTG" id="5Pqb1qkLdRN" role="3clF46">
<property role="TrG5h" value="s" />
<node concept="16syzq" id="5Pqb1qkLdRO" role="1tU5fm">
<ref role="16sUi3" node="5Pqb1qkLdRJ" resolve="S2" />
</node>
</node>
<node concept="37vLTG" id="5Pqb1qkLdRP" role="3clF46">
<property role="TrG5h" value="h" />
<node concept="3uibUv" id="5Pqb1qkLdRQ" role="1tU5fm">
<ref role="3uigEE" node="5Pqb1qkLdOA" resolve="Sample_bad3.H" />
<node concept="3uibUv" id="5Pqb1qkLdRR" role="11_B2D">
<ref role="3uigEE" node="5Pqb1qkLdOy" resolve="Sample_bad3.K" />
</node>
</node>
</node>
</node>
</node>
<node concept="2tJIrI" id="5Pqb1qkLdRS" role="jymVt" />
</node>
</model>