[ez] Delete some old files

This commit is contained in:
Lauren Tan
2022-11-29 15:23:56 -05:00
parent 179a7f9605
commit ccca2d38cf
4 changed files with 2 additions and 1111 deletions
-86
View File
@@ -1,86 +0,0 @@
# Coding Style
## Naming
### Abbrevations
Abbrevations can be preferable over full name when it helps with making things
stand out for recognition and code searching, e.g.
1. when we naming a notion specific to us (e.g. `MemoCache`, `SCCGraph`).
2. when it helps with avoid naming clash with 3rd-party libraries (e.g. Babel).
3. when it forms a nice symmetry with its counter parts (e.g. `Val`/`Ref`).
4. when it's canonical in the indursty/academia (e.g. `Def`/`Use`).
5. when it helps with differentiating internal concepts, e.g. it's very common
to name AST and IR a bit differently (alternatively, always use namespace).
- `Val`: Value
- `Ref`: Reference
- `Stmt`: Statement
- `Expr`: Expression
- `Decl`: Declaration
- `Func`: Function
- `Param`: Parameter
- `Ident`: Identifier
- `Mut`: Mutable
- `Immut`: Immutable
- `Def`: Definition
- `Use`: Uses
- `Instr`: Instruction
- `Dep`: Dependency
- `Infer`: Inference
- `Alloc`: Allocation
- `Gen`: Generator
## ADT vs Classes
For trivial cases where ADT and classes are interchangble, classes are favorable
due to its conciseness.
For cases where some algebraic structures or type gynastics are needed
(e.g. IR/LIR), the constraints of classes and subtyping can be a burden to work
around so we prefer to use our own ADT-like encoding for its flexibility and
extensibility.
For instance, `IR.Val` is an ADT tagged by `ValKind`:
1. It would have been more difficult to encode `InputVal` and `ReactiveVal` as
types since they are defined upon refinements.
2. It's impossible (or at least non-trivial and painful) to type things like
`Val#reference`, `Ref<V>` and `ValAST<Val>` accurately with classes since
things may not follow the subtyping rules (it may be possible, but painful,
to manually annotate every variance carefully, which TS only recently add
support, to get things type check). Instead, we have more freedom to define
types for each variants. We can even pattern match on type parameter with
[conditional types](https://www.typescriptlang.org/docs/handbook/2/conditional-types.html#handbook-content) to get pretty far to somewhere like [GADT](https://en.wikipedia.org/wiki/Generalized_algebraic_data_type).
3. It offers more safety gurantees over `instanceof` by default unless you opted
into visitor pattern which is also painful to write because it's closing at
data axis instead of operation axis (see [Expresion Problem](https://wiki.c2.com/?ExpressionProblem)).
N.B. The fact that we are not encoding ADT like [the way TS handbook suggested to encode discrinminated unions](https://www.typescriptlang.org/docs/handbook/typescript-in-5-minutes-func.html#discriminated-unions) but instead encoding it
as a combination of `enum` + `interface` + factory functions is merely a mean to
take some advantage of subtyping for more code sharing (e.g. the common part of
`Val` variants are therefore extracted in `Val`).
## Type Safety
TBD
## Test
TBD
## Format
TBD
## Commit Messages
Add `[Tag]` to help with finding reviewers (Github tags are not visible everywhere)
## Code Review
TBD
@@ -1,5 +1,7 @@
# Architecture Overview
Note: This refers to the non-HIR based architecture.
## Diagnostics
Diagnostics are a way to indicate to the user that the compiler has encountered an unexpected issue, and are created in a structured format that is reused in the Playground to imperatively draw model markers ("squigglies") at their respective node locations.
@@ -1,724 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Generated by graphviz version 6.0.1 (20220924.0800)
-->
<!-- Title: BuildDefUseGraph Pages: 1 -->
<svg width="13456pt" height="482pt"
viewBox="0.00 0.00 13455.59 481.60" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 477.6)">
<title>BuildDefUseGraph</title>
<polygon fill="white" stroke="none" points="-4,4 -4,-477.6 13451.59,-477.6 13451.59,4 -4,4"/>
<!-- v0 -->
<g id="node1" class="node">
<title>v0</title>
<polygon fill="none" stroke="black" points="622.43,-396 270.29,-396 270.29,-360 622.43,-360 622.43,-396"/>
<text text-anchor="middle" x="446.36" y="-373.8" font-family="Times,serif" font-size="14.00">v0 (freeze props$1.items @ freeze props$1.items) &lt;update&gt;</text>
</g>
<!-- v1 -->
<g id="node2" class="node">
<title>v1</title>
<polygon fill="none" stroke="black" points="448.58,-324 0.14,-324 0.14,-288 448.58,-288 448.58,-324"/>
<text text-anchor="middle" x="224.36" y="-301.8" font-family="Times,serif" font-size="14.00">v1 (freeze items$2 @ Const freeze items$2 = freeze props$1.items) &lt;assign&gt;</text>
</g>
<!-- v0&#45;&gt;v1 -->
<g id="edge1" class="edge">
<title>v0&#45;&gt;v1</title>
<path fill="none" stroke="black" d="M392.34,-359.97C360.91,-350.06 321.13,-337.51 288.17,-327.12"/>
<polygon fill="black" stroke="black" points="289.22,-323.78 278.63,-324.11 287.11,-330.46 289.22,-323.78"/>
</g>
<!-- v2 -->
<g id="node3" class="node">
<title>v2</title>
<polygon fill="none" stroke="black" points="880.68,-324 478.04,-324 478.04,-288 880.68,-288 880.68,-324"/>
<text text-anchor="middle" x="679.36" y="-301.8" font-family="Times,serif" font-size="14.00">v2 (freeze props$1.maxItems @ freeze props$1.maxItems) &lt;update&gt;</text>
</g>
<!-- v0&#45;&gt;v2 -->
<g id="edge2" class="edge">
<title>v0&#45;&gt;v2</title>
<path fill="none" stroke="black" d="M503.06,-359.97C536.04,-350.06 577.79,-337.51 612.39,-327.12"/>
<polygon fill="black" stroke="black" points="613.84,-330.34 622.41,-324.11 611.82,-323.64 613.84,-330.34"/>
</g>
<!-- v12 -->
<g id="node4" class="node">
<title>v12</title>
<polygon fill="none" stroke="black" points="421,-252 5.72,-252 5.72,-216 421,-216 421,-252"/>
<text text-anchor="middle" x="213.36" y="-229.8" font-family="Times,serif" font-size="14.00">v12 (freeze items$2 @ If (freeze items$2) then:bb3 else:bb2) &lt;update&gt;</text>
</g>
<!-- v1&#45;&gt;v12 -->
<g id="edge3" class="edge">
<title>v1&#45;&gt;v12</title>
<path fill="none" stroke="black" d="M221.64,-287.7C220.43,-279.98 218.97,-270.71 217.62,-262.11"/>
<polygon fill="black" stroke="black" points="221.06,-261.44 216.05,-252.1 214.14,-262.53 221.06,-261.44"/>
</g>
<!-- v3 -->
<g id="node5" class="node">
<title>v3</title>
<polygon fill="none" stroke="black" points="962.21,-252 438.51,-252 438.51,-216 962.21,-216 962.21,-252"/>
<text text-anchor="middle" x="700.36" y="-229.8" font-family="Times,serif" font-size="14.00">v3 (freeze maxItems$3 @ Const freeze maxItems$3 = freeze props$1.maxItems) &lt;assign&gt;</text>
</g>
<!-- v2&#45;&gt;v3 -->
<g id="edge4" class="edge">
<title>v2&#45;&gt;v3</title>
<path fill="none" stroke="black" d="M684.55,-287.7C686.89,-279.9 689.71,-270.51 692.31,-261.83"/>
<polygon fill="black" stroke="black" points="695.71,-262.69 695.23,-252.1 689,-260.68 695.71,-262.69"/>
</g>
<!-- v10 -->
<g id="node6" class="node">
<title>v10</title>
<polygon fill="none" stroke="black" points="982.96,-180 417.76,-180 417.76,-144 982.96,-144 982.96,-180"/>
<text text-anchor="middle" x="700.36" y="-157.8" font-family="Times,serif" font-size="14.00">v10 (freeze maxItems$3 @ Call mutable Math$8.max(mutable $9, freeze maxItems$3)) &lt;update&gt;</text>
</g>
<!-- v3&#45;&gt;v10 -->
<g id="edge5" class="edge">
<title>v3&#45;&gt;v10</title>
<path fill="none" stroke="black" d="M700.36,-215.7C700.36,-207.98 700.36,-198.71 700.36,-190.11"/>
<polygon fill="black" stroke="black" points="703.86,-190.1 700.36,-180.1 696.86,-190.1 703.86,-190.1"/>
</g>
<!-- v4 -->
<g id="node7" class="node">
<title>v4</title>
<polygon fill="none" stroke="black" points="1716.51,-470.8 1210.21,-470.8 1210.21,-434.8 1716.51,-434.8 1716.51,-470.8"/>
<text text-anchor="middle" x="1463.36" y="-448.6" font-family="Times,serif" font-size="14.00">v4 (readonly renderedItems$4 @ Const readonly renderedItems$4 = Array []) &lt;assign&gt;</text>
</g>
<!-- v18 -->
<g id="node8" class="node">
<title>v18</title>
<polygon fill="none" stroke="black" points="1917.77,-180 1420.95,-180 1420.95,-144 1917.77,-144 1917.77,-180"/>
<text text-anchor="middle" x="1669.36" y="-157.8" font-family="Times,serif" font-size="14.00">v18 (readonly renderedItems$4.length @ readonly renderedItems$4.length) &lt;update&gt;</text>
</g>
<!-- v4&#45;&gt;v18 -->
<g id="edge6" class="edge">
<title>v4&#45;&gt;v18</title>
<path fill="none" stroke="black" d="M1648.81,-434.74C1704.2,-426.26 1755.69,-413.87 1776.36,-396 1837.07,-343.53 1838.79,-279.98 1790.36,-216 1779.89,-202.17 1765.04,-191.88 1749.31,-184.25"/>
<polygon fill="black" stroke="black" points="1750.54,-180.97 1739.98,-180.06 1747.67,-187.35 1750.54,-180.97"/>
</g>
<!-- v49 -->
<g id="node9" class="node">
<title>v49</title>
<polygon fill="none" stroke="black" points="1734.17,-396 1156.56,-396 1156.56,-360 1734.17,-360 1734.17,-396"/>
<text text-anchor="middle" x="1445.36" y="-373.8" font-family="Times,serif" font-size="14.00">v49 (mutable renderedItems$4.push @ Call mutable renderedItems$4.push(mutable $15)) &lt;update&gt;</text>
</g>
<!-- v4&#45;&gt;v49 -->
<g id="edge7" class="edge">
<title>v4&#45;&gt;v49</title>
<path fill="none" stroke="black" d="M1459.1,-434.55C1456.99,-426.03 1454.4,-415.55 1452.03,-405.99"/>
<polygon fill="black" stroke="black" points="1455.39,-405 1449.6,-396.13 1448.6,-406.68 1455.39,-405"/>
</g>
<!-- v62 -->
<g id="node10" class="node">
<title>v62</title>
<polygon fill="none" stroke="black" points="1781.1,-252 1557.62,-252 1557.62,-216 1781.1,-216 1781.1,-252"/>
<text text-anchor="middle" x="1669.36" y="-229.8" font-family="Times,serif" font-size="14.00">v62 (&lt;join&gt; @ &lt;no&#45;instr&gt;) &lt;update&gt;</text>
</g>
<!-- v4&#45;&gt;v62 -->
<g id="edge8" class="edge">
<title>v4&#45;&gt;v62</title>
<path fill="none" stroke="black" d="M1607.31,-434.75C1664.08,-425.66 1721.05,-412.83 1743.36,-396 1783.86,-365.44 1807.43,-330.92 1780.36,-288 1771.73,-274.31 1758.48,-264.09 1744.11,-256.47"/>
<polygon fill="black" stroke="black" points="1745.57,-253.29 1735.05,-252.05 1742.5,-259.58 1745.57,-253.29"/>
</g>
<!-- v71 -->
<g id="node11" class="node">
<title>v71</title>
<polygon fill="none" stroke="black" points="1203.1,-252 979.62,-252 979.62,-216 1203.1,-216 1203.1,-252"/>
<text text-anchor="middle" x="1091.36" y="-229.8" font-family="Times,serif" font-size="14.00">v71 (&lt;join&gt; @ &lt;no&#45;instr&gt;) &lt;update&gt;</text>
</g>
<!-- v4&#45;&gt;v71 -->
<g id="edge9" class="edge">
<title>v4&#45;&gt;v71</title>
<path fill="none" stroke="black" d="M1308.59,-434.8C1242.96,-425.49 1175.24,-412.47 1147.36,-396 1111.98,-375.09 1103.03,-362.75 1089.36,-324 1082.39,-304.23 1083.37,-280.43 1085.83,-262.42"/>
<polygon fill="black" stroke="black" points="1089.32,-262.72 1087.44,-252.3 1082.41,-261.62 1089.32,-262.72"/>
</g>
<!-- v19 -->
<g id="node31" class="node">
<title>v19</title>
<polygon fill="none" stroke="black" points="1585.15,-108 1015.57,-108 1015.57,-72 1585.15,-72 1585.15,-108"/>
<text text-anchor="middle" x="1300.36" y="-85.8" font-family="Times,serif" font-size="14.00">v19 (readonly count$17 @ Const readonly count$17 = readonly renderedItems$4.length) &lt;assign&gt;</text>
</g>
<!-- v18&#45;&gt;v19 -->
<g id="edge21" class="edge">
<title>v18&#45;&gt;v19</title>
<path fill="none" stroke="black" d="M1579.57,-143.97C1525.33,-133.68 1456.11,-120.55 1400.17,-109.93"/>
<polygon fill="black" stroke="black" points="1400.72,-106.48 1390.24,-108.05 1399.41,-113.35 1400.72,-106.48"/>
</g>
<!-- v34 -->
<g id="node32" class="node">
<title>v34</title>
<polygon fill="none" stroke="black" points="2474.28,-108 1602.45,-108 1602.45,-72 2474.28,-72 2474.28,-108"/>
<text text-anchor="middle" x="2038.36" y="-85.8" font-family="Times,serif" font-size="14.00">v34 (freeze renderedItems$4 @ JSX &lt;freeze $18&gt;{freeze $19}{freeze $22}{freeze $23}{freeze renderedItems$4}{freeze $24}&lt;/freeze $18&gt;) &lt;update&gt;</text>
</g>
<!-- v18&#45;&gt;v34 -->
<g id="edge22" class="edge">
<title>v18&#45;&gt;v34</title>
<path fill="none" stroke="black" d="M1759.16,-143.97C1813.39,-133.68 1882.61,-120.55 1938.56,-109.93"/>
<polygon fill="black" stroke="black" points="1939.31,-113.35 1948.48,-108.05 1938.01,-106.48 1939.31,-113.35"/>
</g>
<!-- v51 -->
<g id="node59" class="node">
<title>v51</title>
<polygon fill="none" stroke="black" points="1771.25,-324 1119.47,-324 1119.47,-288 1771.25,-288 1771.25,-324"/>
<text text-anchor="middle" x="1445.36" y="-301.8" font-family="Times,serif" font-size="14.00">v51 (readonly renderedItems$4.length @ Binary readonly renderedItems$4.length &gt;= readonly max$7) &lt;update&gt;</text>
</g>
<!-- v49&#45;&gt;v51 -->
<g id="edge43" class="edge">
<title>v49&#45;&gt;v51</title>
<path fill="none" stroke="black" d="M1445.36,-359.7C1445.36,-351.98 1445.36,-342.71 1445.36,-334.11"/>
<polygon fill="black" stroke="black" points="1448.86,-334.1 1445.36,-324.1 1441.86,-334.1 1448.86,-334.1"/>
</g>
<!-- v62&#45;&gt;v18 -->
<g id="edge54" class="edge">
<title>v62&#45;&gt;v18</title>
<path fill="none" stroke="black" d="M1669.36,-215.7C1669.36,-207.98 1669.36,-198.71 1669.36,-190.11"/>
<polygon fill="black" stroke="black" points="1672.86,-190.1 1669.36,-180.1 1665.86,-190.1 1672.86,-190.1"/>
</g>
<!-- v71&#45;&gt;v49 -->
<g id="edge55" class="edge">
<title>v71&#45;&gt;v49</title>
<path fill="none" stroke="black" d="M1089.75,-252.13C1088.89,-272.34 1090.87,-305.52 1110.36,-324 1126.75,-339.54 1163.39,-350.52 1206.67,-358.28"/>
<polygon fill="black" stroke="black" points="1206.15,-361.75 1216.6,-359.99 1207.34,-354.85 1206.15,-361.75"/>
</g>
<!-- v5 -->
<g id="node12" class="node">
<title>v5</title>
<polygon fill="none" stroke="black" points="2071.92,-470.8 1752.8,-470.8 1752.8,-434.8 2071.92,-434.8 2071.92,-470.8"/>
<text text-anchor="middle" x="1912.36" y="-448.6" font-family="Times,serif" font-size="14.00">v5 (mutable Set$6 @ New mutable Set$6()) &lt;update&gt;</text>
</g>
<!-- v6 -->
<g id="node13" class="node">
<title>v6</title>
<polygon fill="none" stroke="black" points="2595.4,-470.8 2125.33,-470.8 2125.33,-434.8 2595.4,-434.8 2595.4,-470.8"/>
<text text-anchor="middle" x="2360.36" y="-448.6" font-family="Times,serif" font-size="14.00">v6 (readonly seen$5 @ Const readonly seen$5 = New mutable Set$6()) &lt;assign&gt;</text>
</g>
<!-- v39 -->
<g id="node14" class="node">
<title>v39</title>
<polygon fill="none" stroke="black" points="2593.17,-396 2127.55,-396 2127.55,-360 2593.17,-360 2593.17,-396"/>
<text text-anchor="middle" x="2360.36" y="-373.8" font-family="Times,serif" font-size="14.00">v39 (mutable seen$5.has @ Call mutable seen$5.has(freeze item$10)) &lt;update&gt;</text>
</g>
<!-- v6&#45;&gt;v39 -->
<g id="edge10" class="edge">
<title>v6&#45;&gt;v39</title>
<path fill="none" stroke="black" d="M2360.36,-434.55C2360.36,-426.12 2360.36,-415.77 2360.36,-406.3"/>
<polygon fill="black" stroke="black" points="2363.86,-406.13 2360.36,-396.13 2356.86,-406.13 2363.86,-406.13"/>
</g>
<!-- v56 -->
<g id="node15" class="node">
<title>v56</title>
<polygon fill="none" stroke="black" points="2211.1,-324 1987.62,-324 1987.62,-288 2211.1,-288 2211.1,-324"/>
<text text-anchor="middle" x="2099.36" y="-301.8" font-family="Times,serif" font-size="14.00">v56 (&lt;join&gt; @ &lt;no&#45;instr&gt;) &lt;update&gt;</text>
</g>
<!-- v6&#45;&gt;v56 -->
<g id="edge11" class="edge">
<title>v6&#45;&gt;v56</title>
<path fill="none" stroke="black" d="M2231.55,-434.79C2182.87,-425.81 2135.14,-413.06 2118.36,-396 2102.56,-379.94 2098.47,-354.16 2097.94,-334.47"/>
<polygon fill="black" stroke="black" points="2101.44,-334.26 2097.96,-324.26 2094.44,-334.25 2101.44,-334.26"/>
</g>
<!-- v59 -->
<g id="node16" class="node">
<title>v59</title>
<polygon fill="none" stroke="black" points="2482.1,-180 2258.62,-180 2258.62,-144 2482.1,-144 2482.1,-180"/>
<text text-anchor="middle" x="2370.36" y="-157.8" font-family="Times,serif" font-size="14.00">v59 (&lt;join&gt; @ &lt;no&#45;instr&gt;) &lt;update&gt;</text>
</g>
<!-- v6&#45;&gt;v59 -->
<g id="edge12" class="edge">
<title>v6&#45;&gt;v59</title>
<path fill="none" stroke="black" d="M2499.9,-434.76C2545.64,-426.1 2588.37,-413.59 2602.36,-396 2670.09,-310.88 2508.44,-223.38 2421.37,-184.21"/>
<polygon fill="black" stroke="black" points="2422.73,-180.98 2412.17,-180.12 2419.88,-187.38 2422.73,-180.98"/>
</g>
<!-- v39&#45;&gt;v56 -->
<g id="edge33" class="edge">
<title>v39&#45;&gt;v56</title>
<path fill="none" stroke="black" d="M2296.85,-359.97C2259.43,-349.93 2211.93,-337.19 2172.89,-326.72"/>
<polygon fill="black" stroke="black" points="2173.73,-323.32 2163.16,-324.11 2171.91,-330.08 2173.73,-323.32"/>
</g>
<!-- v39&#45;&gt;v59 -->
<g id="edge34" class="edge">
<title>v39&#45;&gt;v59</title>
<path fill="none" stroke="black" d="M2357.28,-359.85C2355.48,-322.83 2359.3,-235.18 2364.39,-190.39"/>
<polygon fill="black" stroke="black" points="2367.89,-190.59 2365.67,-180.23 2360.95,-189.72 2367.89,-190.59"/>
</g>
<!-- v43 -->
<g id="node52" class="node">
<title>v43</title>
<polygon fill="none" stroke="black" points="2333.78,-252 1864.94,-252 1864.94,-216 2333.78,-216 2333.78,-252"/>
<text text-anchor="middle" x="2099.36" y="-229.8" font-family="Times,serif" font-size="14.00">v43 (mutable seen$5.add @ Call mutable seen$5.add(freeze item$10)) &lt;update&gt;</text>
</g>
<!-- v56&#45;&gt;v43 -->
<g id="edge50" class="edge">
<title>v56&#45;&gt;v43</title>
<path fill="none" stroke="black" d="M2093.45,-287.7C2092.65,-279.98 2092.42,-270.71 2092.77,-262.11"/>
<polygon fill="black" stroke="black" points="2096.26,-262.32 2093.47,-252.1 2089.28,-261.84 2096.26,-262.32"/>
</g>
<!-- v59&#45;&gt;v39 -->
<g id="edge53" class="edge">
<title>v59&#45;&gt;v39</title>
<path fill="none" stroke="black" d="M2373.44,-180.23C2375.24,-217.32 2371.41,-304.98 2366.32,-349.71"/>
<polygon fill="black" stroke="black" points="2362.82,-349.49 2365.04,-359.85 2369.77,-350.37 2362.82,-349.49"/>
</g>
<!-- v7 -->
<g id="node17" class="node">
<title>v7</title>
<polygon fill="none" stroke="black" points="3060.4,-470.8 2752.32,-470.8 2752.32,-434.8 3060.4,-434.8 3060.4,-470.8"/>
<text text-anchor="middle" x="2906.36" y="-448.6" font-family="Times,serif" font-size="14.00">v7 (readonly $9 @ Const readonly $9 = 0) &lt;assign&gt;</text>
</g>
<!-- v9 -->
<g id="node18" class="node">
<title>v9</title>
<polygon fill="none" stroke="black" points="3163.67,-396 2649.05,-396 2649.05,-360 3163.67,-360 3163.67,-396"/>
<text text-anchor="middle" x="2906.36" y="-373.8" font-family="Times,serif" font-size="14.00">v9 (mutable $9 @ Call mutable Math$8.max(mutable $9, freeze maxItems$3)) &lt;update&gt;</text>
</g>
<!-- v7&#45;&gt;v9 -->
<g id="edge13" class="edge">
<title>v7&#45;&gt;v9</title>
<path fill="none" stroke="black" d="M2906.36,-434.55C2906.36,-426.12 2906.36,-415.77 2906.36,-406.3"/>
<polygon fill="black" stroke="black" points="2909.86,-406.13 2906.36,-396.13 2902.86,-406.13 2909.86,-406.13"/>
</g>
<!-- v8 -->
<g id="node19" class="node">
<title>v8</title>
<polygon fill="none" stroke="black" points="3650.33,-470.8 3078.39,-470.8 3078.39,-434.8 3650.33,-434.8 3650.33,-470.8"/>
<text text-anchor="middle" x="3364.36" y="-448.6" font-family="Times,serif" font-size="14.00">v8 (mutable Math$8.max @ Call mutable Math$8.max(mutable $9, freeze maxItems$3)) &lt;update&gt;</text>
</g>
<!-- v11 -->
<g id="node20" class="node">
<title>v11</title>
<polygon fill="none" stroke="black" points="4356.5,-470.8 3668.23,-470.8 3668.23,-434.8 4356.5,-434.8 4356.5,-470.8"/>
<text text-anchor="middle" x="4012.36" y="-448.6" font-family="Times,serif" font-size="14.00">v11 (readonly max$7 @ Const readonly max$7 = Call mutable Math$8.max(mutable $9, freeze maxItems$3)) &lt;assign&gt;</text>
</g>
<!-- v52 -->
<g id="node21" class="node">
<title>v52</title>
<polygon fill="none" stroke="black" points="4131.79,-396 3574.93,-396 3574.93,-360 4131.79,-360 4131.79,-396"/>
<text text-anchor="middle" x="3853.36" y="-373.8" font-family="Times,serif" font-size="14.00">v52 (readonly max$7 @ Binary readonly renderedItems$4.length &gt;= readonly max$7) &lt;update&gt;</text>
</g>
<!-- v11&#45;&gt;v52 -->
<g id="edge14" class="edge">
<title>v11&#45;&gt;v52</title>
<path fill="none" stroke="black" d="M3975.08,-434.73C3952.64,-424.45 3923.87,-411.28 3899.93,-400.32"/>
<polygon fill="black" stroke="black" points="3901.23,-397.07 3890.68,-396.09 3898.32,-403.43 3901.23,-397.07"/>
</g>
<!-- v72 -->
<g id="node22" class="node">
<title>v72</title>
<polygon fill="none" stroke="black" points="3965.1,-324 3741.62,-324 3741.62,-288 3965.1,-288 3965.1,-324"/>
<text text-anchor="middle" x="3853.36" y="-301.8" font-family="Times,serif" font-size="14.00">v72 (&lt;join&gt; @ &lt;no&#45;instr&gt;) &lt;update&gt;</text>
</g>
<!-- v11&#45;&gt;v72 -->
<g id="edge15" class="edge">
<title>v11&#45;&gt;v72</title>
<path fill="none" stroke="black" d="M4089.28,-434.72C4109.25,-426.43 4128.47,-414.15 4140.36,-396 4149.13,-382.62 4150.6,-372.3 4140.36,-360 4118.97,-334.29 4043.32,-321.01 3975.07,-314.16"/>
<polygon fill="black" stroke="black" points="3975.35,-310.68 3965.06,-313.2 3974.68,-317.64 3975.35,-310.68"/>
</g>
<!-- v52&#45;&gt;v72 -->
<g id="edge47" class="edge">
<title>v52&#45;&gt;v72</title>
<path fill="none" stroke="black" d="M3847.45,-359.7C3846.65,-351.98 3846.42,-342.71 3846.77,-334.11"/>
<polygon fill="black" stroke="black" points="3850.26,-334.32 3847.47,-324.1 3843.28,-333.84 3850.26,-334.32"/>
</g>
<!-- v72&#45;&gt;v52 -->
<g id="edge56" class="edge">
<title>v72&#45;&gt;v52</title>
<path fill="none" stroke="black" d="M3859.26,-324.1C3860.06,-331.79 3860.3,-341.05 3859.96,-349.67"/>
<polygon fill="black" stroke="black" points="3856.47,-349.48 3859.28,-359.7 3863.45,-349.96 3856.47,-349.48"/>
</g>
<!-- v13 -->
<g id="node23" class="node">
<title>v13</title>
<polygon fill="none" stroke="black" points="4718.18,-470.8 4374.54,-470.8 4374.54,-434.8 4718.18,-434.8 4718.18,-470.8"/>
<text text-anchor="middle" x="4546.36" y="-448.6" font-family="Times,serif" font-size="14.00">v13 (readonly $11 @ Const readonly $11 = null) &lt;assign&gt;</text>
</g>
<!-- v15 -->
<g id="node24" class="node">
<title>v15</title>
<polygon fill="none" stroke="black" points="4757.1,-396 4335.62,-396 4335.62,-360 4757.1,-360 4757.1,-396"/>
<text text-anchor="middle" x="4546.36" y="-373.8" font-family="Times,serif" font-size="14.00">v15 (readonly $11 @ Binary freeze item$10 == readonly $11) &lt;update&gt;</text>
</g>
<!-- v13&#45;&gt;v15 -->
<g id="edge16" class="edge">
<title>v13&#45;&gt;v15</title>
<path fill="none" stroke="black" d="M4546.36,-434.55C4546.36,-426.12 4546.36,-415.77 4546.36,-406.3"/>
<polygon fill="black" stroke="black" points="4549.86,-406.13 4546.36,-396.13 4542.86,-406.13 4549.86,-406.13"/>
</g>
<!-- v14 -->
<g id="node25" class="node">
<title>v14</title>
<polygon fill="none" stroke="black" points="5467.19,-470.8 5035.54,-470.8 5035.54,-434.8 5467.19,-434.8 5467.19,-470.8"/>
<text text-anchor="middle" x="5251.36" y="-448.6" font-family="Times,serif" font-size="14.00">v14 (freeze item$10 @ Binary freeze item$10 == readonly $11) &lt;update&gt;</text>
</g>
<!-- v40 -->
<g id="node26" class="node">
<title>v40</title>
<polygon fill="none" stroke="black" points="5214.1,-396 4774.62,-396 4774.62,-360 5214.1,-360 5214.1,-396"/>
<text text-anchor="middle" x="4994.36" y="-373.8" font-family="Times,serif" font-size="14.00">v40 (freeze item$10 @ Call mutable seen$5.has(freeze item$10)) &lt;update&gt;</text>
</g>
<!-- v14&#45;&gt;v40 -->
<g id="edge17" class="edge">
<title>v14&#45;&gt;v40</title>
<path fill="none" stroke="black" d="M5191.11,-434.73C5153.22,-424 5104.18,-410.11 5064.55,-398.88"/>
<polygon fill="black" stroke="black" points="5065.26,-395.45 5054.68,-396.09 5063.35,-402.18 5065.26,-395.45"/>
</g>
<!-- v57 -->
<g id="node27" class="node">
<title>v57</title>
<polygon fill="none" stroke="black" points="5363.1,-324 5139.62,-324 5139.62,-288 5363.1,-288 5363.1,-324"/>
<text text-anchor="middle" x="5251.36" y="-301.8" font-family="Times,serif" font-size="14.00">v57 (&lt;join&gt; @ &lt;no&#45;instr&gt;) &lt;update&gt;</text>
</g>
<!-- v14&#45;&gt;v57 -->
<g id="edge18" class="edge">
<title>v14&#45;&gt;v57</title>
<path fill="none" stroke="black" d="M5246.81,-434.62C5244.2,-409.8 5243.91,-363.66 5245.95,-334.19"/>
<polygon fill="black" stroke="black" points="5249.45,-334.42 5246.81,-324.16 5242.47,-333.82 5249.45,-334.42"/>
</g>
<!-- v40&#45;&gt;v57 -->
<g id="edge35" class="edge">
<title>v40&#45;&gt;v57</title>
<path fill="none" stroke="black" d="M5056.9,-359.97C5093.59,-349.97 5140.12,-337.3 5178.47,-326.85"/>
<polygon fill="black" stroke="black" points="5179.81,-330.12 5188.54,-324.11 5177.97,-323.36 5179.81,-330.12"/>
</g>
<!-- v57&#45;&gt;v14 -->
<g id="edge52" class="edge">
<title>v57&#45;&gt;v14</title>
<path fill="none" stroke="black" d="M5255.91,-324.16C5258.52,-348.96 5258.81,-395.1 5256.77,-424.58"/>
<polygon fill="black" stroke="black" points="5253.28,-424.36 5255.92,-434.62 5260.25,-424.95 5253.28,-424.36"/>
</g>
<!-- v44 -->
<g id="node53" class="node">
<title>v44</title>
<polygon fill="none" stroke="black" points="5347.65,-252 4907.07,-252 4907.07,-216 5347.65,-216 5347.65,-252"/>
<text text-anchor="middle" x="5127.36" y="-229.8" font-family="Times,serif" font-size="14.00">v44 (freeze item$10 @ Call mutable seen$5.add(freeze item$10)) &lt;update&gt;</text>
</g>
<!-- v57&#45;&gt;v44 -->
<g id="edge51" class="edge">
<title>v57&#45;&gt;v44</title>
<path fill="none" stroke="black" d="M5221.03,-287.88C5204.66,-278.64 5184.28,-267.13 5166.71,-257.21"/>
<polygon fill="black" stroke="black" points="5168.24,-254.06 5157.81,-252.19 5164.8,-260.15 5168.24,-254.06"/>
</g>
<!-- v16 -->
<g id="node28" class="node">
<title>v16</title>
<polygon fill="none" stroke="black" points="5999.24,-470.8 5485.49,-470.8 5485.49,-434.8 5999.24,-434.8 5999.24,-470.8"/>
<text text-anchor="middle" x="5742.36" y="-448.6" font-family="Times,serif" font-size="14.00">v16 (freeze $12 @ Const freeze $12 = Binary freeze item$10 == readonly $11) &lt;assign&gt;</text>
</g>
<!-- v17 -->
<g id="node29" class="node">
<title>v17</title>
<polygon fill="none" stroke="black" points="5926.84,-396 5557.88,-396 5557.88,-360 5926.84,-360 5926.84,-396"/>
<text text-anchor="middle" x="5742.36" y="-373.8" font-family="Times,serif" font-size="14.00">v17 (freeze $12 @ If (freeze $12) then:bb8 else:bb9) &lt;update&gt;</text>
</g>
<!-- v16&#45;&gt;v17 -->
<g id="edge19" class="edge">
<title>v16&#45;&gt;v17</title>
<path fill="none" stroke="black" d="M5742.36,-434.55C5742.36,-426.12 5742.36,-415.77 5742.36,-406.3"/>
<polygon fill="black" stroke="black" points="5745.86,-406.13 5742.36,-396.13 5738.86,-406.13 5745.86,-406.13"/>
</g>
<!-- v38 -->
<g id="node30" class="node">
<title>v38</title>
<polygon fill="none" stroke="black" points="5917.98,-324 5566.74,-324 5566.74,-288 5917.98,-288 5917.98,-324"/>
<text text-anchor="middle" x="5742.36" y="-301.8" font-family="Times,serif" font-size="14.00">v38 (freeze $13 @ Const freeze $13 = freeze $12) &lt;assign&gt;</text>
</g>
<!-- v17&#45;&gt;v38 -->
<g id="edge20" class="edge">
<title>v17&#45;&gt;v38</title>
<path fill="none" stroke="black" d="M5742.36,-359.7C5742.36,-351.98 5742.36,-342.71 5742.36,-334.11"/>
<polygon fill="black" stroke="black" points="5745.86,-334.1 5742.36,-324.1 5738.86,-334.1 5745.86,-334.1"/>
</g>
<!-- v42 -->
<g id="node50" class="node">
<title>v42</title>
<polygon fill="none" stroke="black" points="6160.84,-252 5791.88,-252 5791.88,-216 6160.84,-216 6160.84,-252"/>
<text text-anchor="middle" x="5976.36" y="-229.8" font-family="Times,serif" font-size="14.00">v42 (freeze $13 @ If (freeze $13) then:bb1 else:bb4) &lt;update&gt;</text>
</g>
<!-- v38&#45;&gt;v42 -->
<g id="edge32" class="edge">
<title>v38&#45;&gt;v42</title>
<path fill="none" stroke="black" d="M5799.3,-287.97C5832.57,-278.01 5874.72,-265.41 5909.55,-254.99"/>
<polygon fill="black" stroke="black" points="5910.58,-258.33 5919.16,-252.11 5908.58,-251.62 5910.58,-258.33"/>
</g>
<!-- v25 -->
<g id="node33" class="node">
<title>v25</title>
<polygon fill="none" stroke="black" points="1585.99,-36 1014.73,-36 1014.73,0 1585.99,0 1585.99,-36"/>
<text text-anchor="middle" x="1300.36" y="-13.8" font-family="Times,serif" font-size="14.00">v25 (freeze count$17 @ JSX &lt;freeze $20&gt;{freeze count$17}{freeze $21}&lt;/freeze $20&gt;) &lt;update&gt;</text>
</g>
<!-- v19&#45;&gt;v25 -->
<g id="edge23" class="edge">
<title>v19&#45;&gt;v25</title>
<path fill="none" stroke="black" d="M1300.36,-71.7C1300.36,-63.98 1300.36,-54.71 1300.36,-46.11"/>
<polygon fill="black" stroke="black" points="1303.86,-46.1 1300.36,-36.1 1296.86,-46.1 1303.86,-46.1"/>
</g>
<!-- v20 -->
<g id="node34" class="node">
<title>v20</title>
<polygon fill="none" stroke="black" points="6519.22,-470.8 6167.5,-470.8 6167.5,-434.8 6519.22,-434.8 6519.22,-470.8"/>
<text text-anchor="middle" x="6343.36" y="-448.6" font-family="Times,serif" font-size="14.00">v20 (readonly $18 @ Const readonly $18 = &quot;div&quot;) &lt;assign&gt;</text>
</g>
<!-- v30 -->
<g id="node35" class="node">
<title>v30</title>
<polygon fill="none" stroke="black" points="6742.71,-396 5944.02,-396 5944.02,-360 6742.71,-360 6742.71,-396"/>
<text text-anchor="middle" x="6343.36" y="-373.8" font-family="Times,serif" font-size="14.00">v30 (freeze $18 @ JSX &lt;freeze $18&gt;{freeze $19}{freeze $22}{freeze $23}{freeze renderedItems$4}{freeze $24}&lt;/freeze $18&gt;) &lt;update&gt;</text>
</g>
<!-- v20&#45;&gt;v30 -->
<g id="edge24" class="edge">
<title>v20&#45;&gt;v30</title>
<path fill="none" stroke="black" d="M6343.36,-434.55C6343.36,-426.12 6343.36,-415.77 6343.36,-406.3"/>
<polygon fill="black" stroke="black" points="6346.86,-406.13 6343.36,-396.13 6339.86,-406.13 6346.86,-406.13"/>
</g>
<!-- v21 -->
<g id="node36" class="node">
<title>v21</title>
<polygon fill="none" stroke="black" points="7293.66,-473.4 7025.06,-473.4 7025.06,-432.2 7293.66,-432.2 7293.66,-473.4"/>
<text text-anchor="middle" x="7159.36" y="-457" font-family="Times,serif" font-size="14.00">v21 (readonly $19 @ Const readonly $19 = &quot;</text>
<text text-anchor="middle" x="7159.36" y="-440.2" font-family="Times,serif" font-size="14.00"> &#160;&#160;&#160;&#160;&#160;&quot;) &lt;assign&gt;</text>
</g>
<!-- v31 -->
<g id="node37" class="node">
<title>v31</title>
<polygon fill="none" stroke="black" points="7558.71,-396 6760.02,-396 6760.02,-360 7558.71,-360 7558.71,-396"/>
<text text-anchor="middle" x="7159.36" y="-373.8" font-family="Times,serif" font-size="14.00">v31 (freeze $19 @ JSX &lt;freeze $18&gt;{freeze $19}{freeze $22}{freeze $23}{freeze renderedItems$4}{freeze $24}&lt;/freeze $18&gt;) &lt;update&gt;</text>
</g>
<!-- v21&#45;&gt;v31 -->
<g id="edge25" class="edge">
<title>v21&#45;&gt;v31</title>
<path fill="none" stroke="black" d="M7159.36,-431.91C7159.36,-424.09 7159.36,-414.99 7159.36,-406.56"/>
<polygon fill="black" stroke="black" points="7162.86,-406.39 7159.36,-396.39 7155.86,-406.39 7162.86,-406.39"/>
</g>
<!-- v22 -->
<g id="node38" class="node">
<title>v22</title>
<polygon fill="none" stroke="black" points="8020.33,-470.8 7672.39,-470.8 7672.39,-434.8 8020.33,-434.8 8020.33,-470.8"/>
<text text-anchor="middle" x="7846.36" y="-448.6" font-family="Times,serif" font-size="14.00">v22 (readonly $20 @ Const readonly $20 = &quot;h1&quot;) &lt;assign&gt;</text>
</g>
<!-- v24 -->
<g id="node39" class="node">
<title>v24</title>
<polygon fill="none" stroke="black" points="8116.38,-396 7576.34,-396 7576.34,-360 8116.38,-360 8116.38,-396"/>
<text text-anchor="middle" x="7846.36" y="-373.8" font-family="Times,serif" font-size="14.00">v24 (freeze $20 @ JSX &lt;freeze $20&gt;{freeze count$17}{freeze $21}&lt;/freeze $20&gt;) &lt;update&gt;</text>
</g>
<!-- v22&#45;&gt;v24 -->
<g id="edge26" class="edge">
<title>v22&#45;&gt;v24</title>
<path fill="none" stroke="black" d="M7846.36,-434.55C7846.36,-426.12 7846.36,-415.77 7846.36,-406.3"/>
<polygon fill="black" stroke="black" points="7849.86,-406.13 7846.36,-396.13 7842.86,-406.13 7849.86,-406.13"/>
</g>
<!-- v23 -->
<g id="node40" class="node">
<title>v23</title>
<polygon fill="none" stroke="black" points="8588.43,-470.8 8220.29,-470.8 8220.29,-434.8 8588.43,-434.8 8588.43,-470.8"/>
<text text-anchor="middle" x="8404.36" y="-448.6" font-family="Times,serif" font-size="14.00">v23 (readonly $21 @ Const readonly $21 = &quot; Items&quot;) &lt;assign&gt;</text>
</g>
<!-- v26 -->
<g id="node41" class="node">
<title>v26</title>
<polygon fill="none" stroke="black" points="8674.38,-396 8134.34,-396 8134.34,-360 8674.38,-360 8674.38,-396"/>
<text text-anchor="middle" x="8404.36" y="-373.8" font-family="Times,serif" font-size="14.00">v26 (freeze $21 @ JSX &lt;freeze $20&gt;{freeze count$17}{freeze $21}&lt;/freeze $20&gt;) &lt;update&gt;</text>
</g>
<!-- v23&#45;&gt;v26 -->
<g id="edge27" class="edge">
<title>v23&#45;&gt;v26</title>
<path fill="none" stroke="black" d="M8404.36,-434.55C8404.36,-426.12 8404.36,-415.77 8404.36,-406.3"/>
<polygon fill="black" stroke="black" points="8407.86,-406.13 8404.36,-396.13 8400.86,-406.13 8407.86,-406.13"/>
</g>
<!-- v27 -->
<g id="node42" class="node">
<title>v27</title>
<polygon fill="none" stroke="black" points="9429.92,-470.8 8752.81,-470.8 8752.81,-434.8 9429.92,-434.8 9429.92,-470.8"/>
<text text-anchor="middle" x="9091.36" y="-448.6" font-family="Times,serif" font-size="14.00">v27 (readonly $22 @ Const readonly $22 = JSX &lt;freeze $20&gt;{freeze count$17}{freeze $21}&lt;/freeze $20&gt;) &lt;assign&gt;</text>
</g>
<!-- v32 -->
<g id="node43" class="node">
<title>v32</title>
<polygon fill="none" stroke="black" points="9490.71,-396 8692.02,-396 8692.02,-360 9490.71,-360 9490.71,-396"/>
<text text-anchor="middle" x="9091.36" y="-373.8" font-family="Times,serif" font-size="14.00">v32 (freeze $22 @ JSX &lt;freeze $18&gt;{freeze $19}{freeze $22}{freeze $23}{freeze renderedItems$4}{freeze $24}&lt;/freeze $18&gt;) &lt;update&gt;</text>
</g>
<!-- v27&#45;&gt;v32 -->
<g id="edge28" class="edge">
<title>v27&#45;&gt;v32</title>
<path fill="none" stroke="black" d="M9091.36,-434.55C9091.36,-426.12 9091.36,-415.77 9091.36,-406.3"/>
<polygon fill="black" stroke="black" points="9094.86,-406.13 9091.36,-396.13 9087.86,-406.13 9094.86,-406.13"/>
</g>
<!-- v28 -->
<g id="node44" class="node">
<title>v28</title>
<polygon fill="none" stroke="black" points="10041.66,-473.4 9773.06,-473.4 9773.06,-432.2 10041.66,-432.2 10041.66,-473.4"/>
<text text-anchor="middle" x="9907.36" y="-457" font-family="Times,serif" font-size="14.00">v28 (readonly $23 @ Const readonly $23 = &quot;</text>
<text text-anchor="middle" x="9907.36" y="-440.2" font-family="Times,serif" font-size="14.00"> &#160;&#160;&#160;&#160;&#160;&quot;) &lt;assign&gt;</text>
</g>
<!-- v33 -->
<g id="node45" class="node">
<title>v33</title>
<polygon fill="none" stroke="black" points="10306.71,-396 9508.02,-396 9508.02,-360 10306.71,-360 10306.71,-396"/>
<text text-anchor="middle" x="9907.36" y="-373.8" font-family="Times,serif" font-size="14.00">v33 (freeze $23 @ JSX &lt;freeze $18&gt;{freeze $19}{freeze $22}{freeze $23}{freeze renderedItems$4}{freeze $24}&lt;/freeze $18&gt;) &lt;update&gt;</text>
</g>
<!-- v28&#45;&gt;v33 -->
<g id="edge29" class="edge">
<title>v28&#45;&gt;v33</title>
<path fill="none" stroke="black" d="M9907.36,-431.91C9907.36,-424.09 9907.36,-414.99 9907.36,-406.56"/>
<polygon fill="black" stroke="black" points="9910.86,-406.39 9907.36,-396.39 9903.86,-406.39 9910.86,-406.39"/>
</g>
<!-- v29 -->
<g id="node46" class="node">
<title>v29</title>
<polygon fill="none" stroke="black" points="10857.66,-473.4 10589.06,-473.4 10589.06,-432.2 10857.66,-432.2 10857.66,-473.4"/>
<text text-anchor="middle" x="10723.36" y="-457" font-family="Times,serif" font-size="14.00">v29 (readonly $24 @ Const readonly $24 = &quot;</text>
<text text-anchor="middle" x="10723.36" y="-440.2" font-family="Times,serif" font-size="14.00"> &#160;&#160;&#160;&quot;) &lt;assign&gt;</text>
</g>
<!-- v35 -->
<g id="node47" class="node">
<title>v35</title>
<polygon fill="none" stroke="black" points="11122.71,-396 10324.02,-396 10324.02,-360 11122.71,-360 11122.71,-396"/>
<text text-anchor="middle" x="10723.36" y="-373.8" font-family="Times,serif" font-size="14.00">v35 (freeze $24 @ JSX &lt;freeze $18&gt;{freeze $19}{freeze $22}{freeze $23}{freeze renderedItems$4}{freeze $24}&lt;/freeze $18&gt;) &lt;update&gt;</text>
</g>
<!-- v29&#45;&gt;v35 -->
<g id="edge30" class="edge">
<title>v29&#45;&gt;v35</title>
<path fill="none" stroke="black" d="M10723.36,-431.91C10723.36,-424.09 10723.36,-414.99 10723.36,-406.56"/>
<polygon fill="black" stroke="black" points="10726.86,-406.39 10723.36,-396.39 10719.86,-406.39 10726.86,-406.39"/>
</g>
<!-- v36 -->
<g id="node48" class="node">
<title>v36</title>
<polygon fill="none" stroke="black" points="11811.24,-470.8 10875.48,-470.8 10875.48,-434.8 11811.24,-434.8 11811.24,-470.8"/>
<text text-anchor="middle" x="11343.36" y="-448.6" font-family="Times,serif" font-size="14.00">v36 (readonly $25 @ Const readonly $25 = JSX &lt;freeze $18&gt;{freeze $19}{freeze $22}{freeze $23}{freeze renderedItems$4}{freeze $24}&lt;/freeze $18&gt;) &lt;assign&gt;</text>
</g>
<!-- v37 -->
<g id="node49" class="node">
<title>v37</title>
<polygon fill="none" stroke="black" points="11486.15,-396 11200.57,-396 11200.57,-360 11486.15,-360 11486.15,-396"/>
<text text-anchor="middle" x="11343.36" y="-373.8" font-family="Times,serif" font-size="14.00">v37 (freeze $25 @ Return freeze $25) &lt;update&gt;</text>
</g>
<!-- v36&#45;&gt;v37 -->
<g id="edge31" class="edge">
<title>v36&#45;&gt;v37</title>
<path fill="none" stroke="black" d="M11343.36,-434.55C11343.36,-426.12 11343.36,-415.77 11343.36,-406.3"/>
<polygon fill="black" stroke="black" points="11346.86,-406.13 11343.36,-396.13 11339.86,-406.13 11346.86,-406.13"/>
</g>
<!-- v41 -->
<g id="node51" class="node">
<title>v41</title>
<polygon fill="none" stroke="black" points="6487.25,-324 5935.47,-324 5935.47,-288 6487.25,-288 6487.25,-324"/>
<text text-anchor="middle" x="6211.36" y="-301.8" font-family="Times,serif" font-size="14.00">v41 (readonly $13 @ Const readonly $13 = Call mutable seen$5.has(freeze item$10)) &lt;assign&gt;</text>
</g>
<!-- v41&#45;&gt;v42 -->
<g id="edge36" class="edge">
<title>v41&#45;&gt;v42</title>
<path fill="none" stroke="black" d="M6154.17,-287.97C6120.77,-278.01 6078.44,-265.41 6043.46,-254.99"/>
<polygon fill="black" stroke="black" points="6044.39,-251.61 6033.8,-252.11 6042.39,-258.32 6044.39,-251.61"/>
</g>
<!-- v43&#45;&gt;v56 -->
<g id="edge38" class="edge">
<title>v43&#45;&gt;v56</title>
<path fill="none" stroke="black" d="M2105.26,-252.1C2106.06,-259.79 2106.3,-269.05 2105.96,-277.67"/>
<polygon fill="black" stroke="black" points="2102.47,-277.48 2105.28,-287.7 2109.45,-277.96 2102.47,-277.48"/>
</g>
<!-- v43&#45;&gt;v59 -->
<g id="edge37" class="edge">
<title>v43&#45;&gt;v59</title>
<path fill="none" stroke="black" d="M2165.31,-215.97C2204.24,-205.91 2253.69,-193.14 2294.27,-182.65"/>
<polygon fill="black" stroke="black" points="2295.31,-186 2304.12,-180.11 2293.56,-179.22 2295.31,-186"/>
</g>
<!-- v47 -->
<g id="node54" class="node">
<title>v47</title>
<polygon fill="none" stroke="black" points="5494.43,-180 5008.3,-180 5008.3,-144 5494.43,-144 5494.43,-180"/>
<text text-anchor="middle" x="5251.36" y="-157.8" font-family="Times,serif" font-size="14.00">v47 (freeze item$10 @ JSX &lt;freeze $14&gt;{freeze item$10}&lt;/freeze $14&gt;) &lt;update&gt;</text>
</g>
<!-- v44&#45;&gt;v47 -->
<g id="edge39" class="edge">
<title>v44&#45;&gt;v47</title>
<path fill="none" stroke="black" d="M5157.69,-215.88C5174.06,-206.64 5194.44,-195.13 5212.01,-185.21"/>
<polygon fill="black" stroke="black" points="5213.92,-188.15 5220.91,-180.19 5210.48,-182.06 5213.92,-188.15"/>
</g>
<!-- v47&#45;&gt;v57 -->
<g id="edge41" class="edge">
<title>v47&#45;&gt;v57</title>
<path fill="none" stroke="black" d="M5311.93,-180.04C5329.29,-188.04 5346.25,-199.57 5356.36,-216 5364.75,-229.63 5364.75,-238.37 5356.36,-252 5348.06,-265.48 5335.16,-275.66 5321.21,-283.29"/>
<polygon fill="black" stroke="black" points="5319.29,-280.34 5311.93,-287.96 5322.43,-286.6 5319.29,-280.34"/>
</g>
<!-- v45 -->
<g id="node55" class="node">
<title>v45</title>
<polygon fill="none" stroke="black" points="12180.22,-470.8 11828.5,-470.8 11828.5,-434.8 12180.22,-434.8 12180.22,-470.8"/>
<text text-anchor="middle" x="12004.36" y="-448.6" font-family="Times,serif" font-size="14.00">v45 (readonly $14 @ Const readonly $14 = &quot;div&quot;) &lt;assign&gt;</text>
</g>
<!-- v46 -->
<g id="node56" class="node">
<title>v46</title>
<polygon fill="none" stroke="black" points="12235.04,-396 11773.68,-396 11773.68,-360 12235.04,-360 12235.04,-396"/>
<text text-anchor="middle" x="12004.36" y="-373.8" font-family="Times,serif" font-size="14.00">v46 (freeze $14 @ JSX &lt;freeze $14&gt;{freeze item$10}&lt;/freeze $14&gt;) &lt;update&gt;</text>
</g>
<!-- v45&#45;&gt;v46 -->
<g id="edge40" class="edge">
<title>v45&#45;&gt;v46</title>
<path fill="none" stroke="black" d="M12004.36,-434.55C12004.36,-426.12 12004.36,-415.77 12004.36,-406.3"/>
<polygon fill="black" stroke="black" points="12007.86,-406.13 12004.36,-396.13 12000.86,-406.13 12007.86,-406.13"/>
</g>
<!-- v48 -->
<g id="node57" class="node">
<title>v48</title>
<polygon fill="none" stroke="black" points="12796.58,-470.8 12198.14,-470.8 12198.14,-434.8 12796.58,-434.8 12796.58,-470.8"/>
<text text-anchor="middle" x="12497.36" y="-448.6" font-family="Times,serif" font-size="14.00">v48 (readonly $15 @ Const readonly $15 = JSX &lt;freeze $14&gt;{freeze item$10}&lt;/freeze $14&gt;) &lt;assign&gt;</text>
</g>
<!-- v50 -->
<g id="node58" class="node">
<title>v50</title>
<polygon fill="none" stroke="black" points="12734.65,-396 12260.07,-396 12260.07,-360 12734.65,-360 12734.65,-396"/>
<text text-anchor="middle" x="12497.36" y="-373.8" font-family="Times,serif" font-size="14.00">v50 (mutable $15 @ Call mutable renderedItems$4.push(mutable $15)) &lt;update&gt;</text>
</g>
<!-- v48&#45;&gt;v50 -->
<g id="edge42" class="edge">
<title>v48&#45;&gt;v50</title>
<path fill="none" stroke="black" d="M12497.36,-434.55C12497.36,-426.12 12497.36,-415.77 12497.36,-406.3"/>
<polygon fill="black" stroke="black" points="12500.86,-406.13 12497.36,-396.13 12493.86,-406.13 12500.86,-406.13"/>
</g>
<!-- v51&#45;&gt;v18 -->
<g id="edge44" class="edge">
<title>v51&#45;&gt;v18</title>
<path fill="none" stroke="black" d="M1461.95,-287.84C1481.32,-268.51 1514.98,-237.06 1548.36,-216 1568.21,-203.48 1591.52,-192.5 1612.36,-183.83"/>
<polygon fill="black" stroke="black" points="1613.8,-187.03 1621.74,-180.01 1611.16,-180.54 1613.8,-187.03"/>
</g>
<!-- v51&#45;&gt;v62 -->
<g id="edge45" class="edge">
<title>v51&#45;&gt;v62</title>
<path fill="none" stroke="black" d="M1499.87,-287.97C1531.58,-278.06 1571.72,-265.51 1604.97,-255.12"/>
<polygon fill="black" stroke="black" points="1606.11,-258.43 1614.61,-252.11 1604.02,-251.75 1606.11,-258.43"/>
</g>
<!-- v51&#45;&gt;v71 -->
<g id="edge46" class="edge">
<title>v51&#45;&gt;v71</title>
<path fill="none" stroke="black" d="M1359.22,-287.97C1307.29,-277.7 1241.06,-264.6 1187.44,-254"/>
<polygon fill="black" stroke="black" points="1188.07,-250.56 1177.59,-252.05 1186.72,-257.42 1188.07,-250.56"/>
</g>
<!-- v53 -->
<g id="node60" class="node">
<title>v53</title>
<polygon fill="none" stroke="black" points="13447.82,-470.8 12814.9,-470.8 12814.9,-434.8 13447.82,-434.8 13447.82,-470.8"/>
<text text-anchor="middle" x="13131.36" y="-448.6" font-family="Times,serif" font-size="14.00">v53 (freeze $16 @ Const freeze $16 = Binary readonly renderedItems$4.length &gt;= readonly max$7) &lt;assign&gt;</text>
</g>
<!-- v54 -->
<g id="node61" class="node">
<title>v54</title>
<polygon fill="none" stroke="black" points="13315.84,-396 12946.88,-396 12946.88,-360 13315.84,-360 13315.84,-396"/>
<text text-anchor="middle" x="13131.36" y="-373.8" font-family="Times,serif" font-size="14.00">v54 (freeze $16 @ If (freeze $16) then:bb2 else:bb1) &lt;update&gt;</text>
</g>
<!-- v53&#45;&gt;v54 -->
<g id="edge48" class="edge">
<title>v53&#45;&gt;v54</title>
<path fill="none" stroke="black" d="M13131.36,-434.55C13131.36,-426.12 13131.36,-415.77 13131.36,-406.3"/>
<polygon fill="black" stroke="black" points="13134.86,-406.13 13131.36,-396.13 13127.86,-406.13 13134.86,-406.13"/>
</g>
<!-- v55 -->
<g id="node62" class="node">
<title>v55</title>
<polygon fill="none" stroke="black" points="579.5,-470.8 313.22,-470.8 313.22,-434.8 579.5,-434.8 579.5,-470.8"/>
<text text-anchor="middle" x="446.36" y="-448.6" font-family="Times,serif" font-size="14.00">v55 (freeze props$1 @ &lt;no&#45;instr&gt;) &lt;assign&gt;</text>
</g>
<!-- v55&#45;&gt;v0 -->
<g id="edge49" class="edge">
<title>v55&#45;&gt;v0</title>
<path fill="none" stroke="black" d="M446.36,-434.55C446.36,-426.12 446.36,-415.77 446.36,-406.3"/>
<polygon fill="black" stroke="black" points="449.86,-406.13 446.36,-396.13 442.86,-406.13 449.86,-406.13"/>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 41 KiB

@@ -1,301 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Generated by graphviz version 6.0.1 (20220924.0800)
-->
<!-- Title: BuildDefUseGraph Pages: 1 -->
<svg width="5406pt" height="476pt"
viewBox="0.00 0.00 5405.61 476.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 472)">
<title>BuildDefUseGraph</title>
<polygon fill="white" stroke="none" points="-4,4 -4,-472 5401.61,-472 5401.61,4 -4,4"/>
<!-- v0 -->
<g id="node1" class="node">
<title>v0</title>
<polygon fill="none" stroke="black" points="863.19,-468 516.21,-468 516.21,-432 863.19,-432 863.19,-468"/>
<text text-anchor="middle" x="689.7" y="-445.8" font-family="Times,serif" font-size="14.00">v0 (readonly x$2 @ Let readonly x$2 = Array []) &lt;assign&gt;</text>
</g>
<!-- v7 -->
<g id="node2" class="node">
<title>v7</title>
<polygon fill="none" stroke="black" points="662.06,-396 207.34,-396 207.34,-360 662.06,-360 662.06,-396"/>
<text text-anchor="middle" x="434.7" y="-373.8" font-family="Times,serif" font-size="14.00">v7 (mutable x$2.push @ Call mutable x$2.push(freeze props$1.p2)) &lt;update&gt;</text>
</g>
<!-- v0&#45;&gt;v7 -->
<g id="edge1" class="edge">
<title>v0&#45;&gt;v7</title>
<path fill="none" stroke="black" d="M627.64,-431.97C591.24,-421.97 545.07,-409.3 507.02,-398.85"/>
<polygon fill="black" stroke="black" points="507.6,-395.38 497.03,-396.11 505.75,-402.13 507.6,-395.38"/>
</g>
<!-- v12 -->
<g id="node3" class="node">
<title>v12</title>
<polygon fill="none" stroke="black" points="635.48,-252 361.91,-252 361.91,-216 635.48,-216 635.48,-252"/>
<text text-anchor="middle" x="498.7" y="-229.8" font-family="Times,serif" font-size="14.00">v12 (readonly x$2 @ readonly x$2) &lt;update&gt;</text>
</g>
<!-- v0&#45;&gt;v12 -->
<g id="edge2" class="edge">
<title>v0&#45;&gt;v12</title>
<path fill="none" stroke="black" d="M693.21,-431.63C698.68,-399.32 705.29,-329.52 670.7,-288 659.05,-274.02 643.81,-263.66 627.2,-256"/>
<polygon fill="black" stroke="black" points="628.43,-252.71 617.85,-252.01 625.68,-259.15 628.43,-252.71"/>
</g>
<!-- v15 -->
<g id="node4" class="node">
<title>v15</title>
<polygon fill="none" stroke="black" points="1023.37,-180 432.02,-180 432.02,-144 1023.37,-144 1023.37,-180"/>
<text text-anchor="middle" x="727.7" y="-157.8" font-family="Times,serif" font-size="14.00">v15 (freeze x$2 @ JSX &lt;freeze Component$0 data={freeze x$2} &gt;&lt;/freeze Component$0&gt;) &lt;update&gt;</text>
</g>
<!-- v0&#45;&gt;v15 -->
<g id="edge3" class="edge">
<title>v0&#45;&gt;v15</title>
<path fill="none" stroke="black" d="M698.51,-431.81C703.28,-421.66 708.78,-408.41 711.7,-396 728.81,-323.23 729.57,-234.42 728.66,-190.42"/>
<polygon fill="black" stroke="black" points="732.15,-190.15 728.4,-180.24 725.16,-190.32 732.15,-190.15"/>
</g>
<!-- v9 -->
<g id="node15" class="node">
<title>v9</title>
<polygon fill="none" stroke="black" points="662.06,-324 207.34,-324 207.34,-288 662.06,-288 662.06,-324"/>
<text text-anchor="middle" x="434.7" y="-301.8" font-family="Times,serif" font-size="14.00">v9 (mutable x$2.push @ Call mutable x$2.push(freeze props$1.p3)) &lt;update&gt;</text>
</g>
<!-- v7&#45;&gt;v9 -->
<g id="edge10" class="edge">
<title>v7&#45;&gt;v9</title>
<path fill="none" stroke="black" d="M434.7,-359.7C434.7,-351.98 434.7,-342.71 434.7,-334.11"/>
<polygon fill="black" stroke="black" points="438.2,-334.1 434.7,-324.1 431.2,-334.1 438.2,-334.1"/>
</g>
<!-- v12&#45;&gt;v15 -->
<g id="edge15" class="edge">
<title>v12&#45;&gt;v15</title>
<path fill="none" stroke="black" d="M554.42,-215.97C586.84,-206.06 627.87,-193.51 661.87,-183.12"/>
<polygon fill="black" stroke="black" points="663.18,-186.38 671.72,-180.11 661.13,-179.69 663.18,-186.38"/>
</g>
<!-- v13 -->
<g id="node18" class="node">
<title>v13</title>
<polygon fill="none" stroke="black" points="413.59,-180 -0.2,-180 -0.2,-144 413.59,-144 413.59,-180"/>
<text text-anchor="middle" x="206.7" y="-157.8" font-family="Times,serif" font-size="14.00">v13 (readonly y$3 @ Reassign readonly y$3 = readonly x$2) &lt;assign&gt;</text>
</g>
<!-- v12&#45;&gt;v13 -->
<g id="edge14" class="edge">
<title>v12&#45;&gt;v13</title>
<path fill="none" stroke="black" d="M427.64,-215.97C385.34,-205.83 331.53,-192.93 287.61,-182.4"/>
<polygon fill="black" stroke="black" points="288.36,-178.98 277.82,-180.05 286.73,-185.78 288.36,-178.98"/>
</g>
<!-- v1 -->
<g id="node5" class="node">
<title>v1</title>
<polygon fill="none" stroke="black" points="1398.19,-180 1041.2,-180 1041.2,-144 1398.19,-144 1398.19,-180"/>
<text text-anchor="middle" x="1219.7" y="-157.8" font-family="Times,serif" font-size="14.00">v1 (readonly y$3 @ Let readonly y$3 = undefined) &lt;assign&gt;</text>
</g>
<!-- v17 -->
<g id="node6" class="node">
<title>v17</title>
<polygon fill="none" stroke="black" points="944.56,-108 482.84,-108 482.84,-72 944.56,-72 944.56,-108"/>
<text text-anchor="middle" x="713.7" y="-85.8" font-family="Times,serif" font-size="14.00">v17 (mutable y$3.push @ Call mutable y$3.push(freeze props$1.p4)) &lt;update&gt;</text>
</g>
<!-- v1&#45;&gt;v17 -->
<g id="edge4" class="edge">
<title>v1&#45;&gt;v17</title>
<path fill="none" stroke="black" d="M1096.56,-143.97C1021.11,-133.53 924.52,-120.17 847.23,-109.47"/>
<polygon fill="black" stroke="black" points="847.33,-105.95 836.94,-108.05 846.37,-112.89 847.33,-105.95"/>
</g>
<!-- v20 -->
<g id="node23" class="node">
<title>v20</title>
<polygon fill="none" stroke="black" points="1055.98,-36 371.41,-36 371.41,0 1055.98,0 1055.98,-36"/>
<text text-anchor="middle" x="713.7" y="-13.8" font-family="Times,serif" font-size="14.00">v20 (freeze y$3 @ JSX &lt;freeze Component$0 data={freeze y$3} &gt;{freeze child$6}&lt;/freeze Component$0&gt;) &lt;update&gt;</text>
</g>
<!-- v17&#45;&gt;v20 -->
<g id="edge19" class="edge">
<title>v17&#45;&gt;v20</title>
<path fill="none" stroke="black" d="M713.7,-71.7C713.7,-63.98 713.7,-54.71 713.7,-46.11"/>
<polygon fill="black" stroke="black" points="717.2,-46.1 713.7,-36.1 710.2,-46.1 717.2,-46.1"/>
</g>
<!-- v2 -->
<g id="node7" class="node">
<title>v2</title>
<polygon fill="none" stroke="black" points="1270.66,-468 942.73,-468 942.73,-432 1270.66,-432 1270.66,-468"/>
<text text-anchor="middle" x="1106.7" y="-445.8" font-family="Times,serif" font-size="14.00">v2 (readonly $4 @ Const readonly $4 = false) &lt;assign&gt;</text>
</g>
<!-- v6 -->
<g id="node8" class="node">
<title>v6</title>
<polygon fill="none" stroke="black" points="1457.71,-396 755.68,-396 755.68,-360 1457.71,-360 1457.71,-396"/>
<text text-anchor="middle" x="1106.7" y="-373.8" font-family="Times,serif" font-size="14.00">v6 (readonly $4 @ Switch (freeze props$1.p0); &#160;&#160;Case readonly $5: bb4; &#160;&#160;Case readonly $4: bb2; &#160;&#160;Default: bb1) &lt;update&gt;</text>
</g>
<!-- v2&#45;&gt;v6 -->
<g id="edge5" class="edge">
<title>v2&#45;&gt;v6</title>
<path fill="none" stroke="black" d="M1106.7,-431.7C1106.7,-423.98 1106.7,-414.71 1106.7,-406.11"/>
<polygon fill="black" stroke="black" points="1110.2,-406.1 1106.7,-396.1 1103.2,-406.1 1110.2,-406.1"/>
</g>
<!-- v3 -->
<g id="node9" class="node">
<title>v3</title>
<polygon fill="none" stroke="black" points="1989,-468 1666.39,-468 1666.39,-432 1989,-432 1989,-468"/>
<text text-anchor="middle" x="1827.7" y="-445.8" font-family="Times,serif" font-size="14.00">v3 (readonly $5 @ Const readonly $5 = true) &lt;assign&gt;</text>
</g>
<!-- v5 -->
<g id="node10" class="node">
<title>v5</title>
<polygon fill="none" stroke="black" points="2178.71,-396 1476.68,-396 1476.68,-360 2178.71,-360 2178.71,-396"/>
<text text-anchor="middle" x="1827.7" y="-373.8" font-family="Times,serif" font-size="14.00">v5 (readonly $5 @ Switch (freeze props$1.p0); &#160;&#160;Case readonly $5: bb4; &#160;&#160;Case readonly $4: bb2; &#160;&#160;Default: bb1) &lt;update&gt;</text>
</g>
<!-- v3&#45;&gt;v5 -->
<g id="edge6" class="edge">
<title>v3&#45;&gt;v5</title>
<path fill="none" stroke="black" d="M1827.7,-431.7C1827.7,-423.98 1827.7,-414.71 1827.7,-406.11"/>
<polygon fill="black" stroke="black" points="1831.2,-406.1 1827.7,-396.1 1824.2,-406.1 1831.2,-406.1"/>
</g>
<!-- v4 -->
<g id="node11" class="node">
<title>v4</title>
<polygon fill="none" stroke="black" points="2933.02,-396 2196.37,-396 2196.37,-360 2933.02,-360 2933.02,-396"/>
<text text-anchor="middle" x="2564.7" y="-373.8" font-family="Times,serif" font-size="14.00">v4 (freeze props$1.p0 @ Switch (freeze props$1.p0); &#160;&#160;Case readonly $5: bb4; &#160;&#160;Case readonly $4: bb2; &#160;&#160;Default: bb1) &lt;update&gt;</text>
</g>
<!-- v8 -->
<g id="node12" class="node">
<title>v8</title>
<polygon fill="none" stroke="black" points="2535.3,-324 2080.09,-324 2080.09,-288 2535.3,-288 2535.3,-324"/>
<text text-anchor="middle" x="2307.7" y="-301.8" font-family="Times,serif" font-size="14.00">v8 (freeze props$1.p2 @ Call mutable x$2.push(freeze props$1.p2)) &lt;update&gt;</text>
</g>
<!-- v4&#45;&gt;v8 -->
<g id="edge7" class="edge">
<title>v4&#45;&gt;v8</title>
<path fill="none" stroke="black" d="M2502.16,-359.97C2465.47,-349.97 2418.94,-337.3 2380.59,-326.85"/>
<polygon fill="black" stroke="black" points="2381.09,-323.36 2370.52,-324.11 2379.25,-330.12 2381.09,-323.36"/>
</g>
<!-- v18 -->
<g id="node13" class="node">
<title>v18</title>
<polygon fill="none" stroke="black" points="2763.8,-108 2301.59,-108 2301.59,-72 2763.8,-72 2763.8,-108"/>
<text text-anchor="middle" x="2532.7" y="-85.8" font-family="Times,serif" font-size="14.00">v18 (freeze props$1.p4 @ Call mutable y$3.push(freeze props$1.p4)) &lt;update&gt;</text>
</g>
<!-- v4&#45;&gt;v18 -->
<g id="edge8" class="edge">
<title>v4&#45;&gt;v18</title>
<path fill="none" stroke="black" d="M2572.59,-359.75C2576.8,-349.58 2581.55,-336.33 2583.7,-324 2597.4,-245.18 2613.6,-218.2 2583.7,-144 2579.35,-133.21 2571.63,-123.39 2563.5,-115.21"/>
<polygon fill="black" stroke="black" points="2565.69,-112.46 2556,-108.18 2560.91,-117.57 2565.69,-112.46"/>
</g>
<!-- v25 -->
<g id="node14" class="node">
<title>v25</title>
<polygon fill="none" stroke="black" points="2574.44,-180 2350.96,-180 2350.96,-144 2574.44,-144 2574.44,-180"/>
<text text-anchor="middle" x="2462.7" y="-157.8" font-family="Times,serif" font-size="14.00">v25 (&lt;join&gt; @ &lt;no&#45;instr&gt;) &lt;update&gt;</text>
</g>
<!-- v4&#45;&gt;v25 -->
<g id="edge9" class="edge">
<title>v4&#45;&gt;v25</title>
<path fill="none" stroke="black" d="M2567.17,-359.94C2570.77,-328.75 2574.25,-261.55 2545.7,-216 2537.8,-203.41 2525.7,-193.25 2513.15,-185.34"/>
<polygon fill="black" stroke="black" points="2514.84,-182.27 2504.44,-180.21 2511.29,-188.3 2514.84,-182.27"/>
</g>
<!-- v10 -->
<g id="node16" class="node">
<title>v10</title>
<polygon fill="none" stroke="black" points="2536.8,-252 2074.59,-252 2074.59,-216 2536.8,-216 2536.8,-252"/>
<text text-anchor="middle" x="2305.7" y="-229.8" font-family="Times,serif" font-size="14.00">v10 (freeze props$1.p3 @ Call mutable x$2.push(freeze props$1.p3)) &lt;update&gt;</text>
</g>
<!-- v8&#45;&gt;v10 -->
<g id="edge11" class="edge">
<title>v8&#45;&gt;v10</title>
<path fill="none" stroke="black" d="M2307.2,-287.7C2306.98,-279.98 2306.72,-270.71 2306.47,-262.11"/>
<polygon fill="black" stroke="black" points="2309.97,-262 2306.19,-252.1 2302.97,-262.2 2309.97,-262"/>
</g>
<!-- v25&#45;&gt;v18 -->
<g id="edge22" class="edge">
<title>v25&#45;&gt;v18</title>
<path fill="none" stroke="black" d="M2480,-143.7C2488.56,-135.14 2499.04,-124.66 2508.39,-115.3"/>
<polygon fill="black" stroke="black" points="2511,-117.65 2515.59,-108.1 2506.05,-112.7 2511,-117.65"/>
</g>
<!-- v9&#45;&gt;v12 -->
<g id="edge12" class="edge">
<title>v9&#45;&gt;v12</title>
<path fill="none" stroke="black" d="M450.52,-287.7C458.27,-279.22 467.74,-268.86 476.22,-259.58"/>
<polygon fill="black" stroke="black" points="478.89,-261.85 483.06,-252.1 473.73,-257.12 478.89,-261.85"/>
</g>
<!-- v10&#45;&gt;v25 -->
<g id="edge13" class="edge">
<title>v10&#45;&gt;v25</title>
<path fill="none" stroke="black" d="M2344.1,-215.88C2365.57,-206.31 2392.5,-194.3 2415.27,-184.15"/>
<polygon fill="black" stroke="black" points="2416.71,-187.34 2424.41,-180.07 2413.86,-180.94 2416.71,-187.34"/>
</g>
<!-- v11 -->
<g id="node17" class="node">
<title>v11</title>
<polygon fill="none" stroke="black" points="3101.58,-468 2715.81,-468 2715.81,-432 3101.58,-432 3101.58,-468"/>
<text text-anchor="middle" x="2908.7" y="-445.8" font-family="Times,serif" font-size="14.00">v11 (readonly y$3 @ Reassign readonly y$3 = Array []) &lt;assign&gt;</text>
</g>
<!-- v13&#45;&gt;v17 -->
<g id="edge16" class="edge">
<title>v13&#45;&gt;v17</title>
<path fill="none" stroke="black" d="M330.07,-143.97C405.67,-133.53 502.46,-120.17 579.9,-109.47"/>
<polygon fill="black" stroke="black" points="580.78,-112.88 590.21,-108.05 579.82,-105.95 580.78,-112.88"/>
</g>
<!-- v14 -->
<g id="node19" class="node">
<title>v14</title>
<polygon fill="none" stroke="black" points="3769.7,-468 3119.69,-468 3119.69,-432 3769.7,-432 3769.7,-468"/>
<text text-anchor="middle" x="3444.7" y="-445.8" font-family="Times,serif" font-size="14.00">v14 (freeze Component$0 @ JSX &lt;freeze Component$0 data={freeze x$2} &gt;&lt;/freeze Component$0&gt;) &lt;update&gt;</text>
</g>
<!-- v19 -->
<g id="node20" class="node">
<title>v19</title>
<polygon fill="none" stroke="black" points="3816.31,-396 3073.08,-396 3073.08,-360 3816.31,-360 3816.31,-396"/>
<text text-anchor="middle" x="3444.7" y="-373.8" font-family="Times,serif" font-size="14.00">v19 (freeze Component$0 @ JSX &lt;freeze Component$0 data={freeze y$3} &gt;{freeze child$6}&lt;/freeze Component$0&gt;) &lt;update&gt;</text>
</g>
<!-- v14&#45;&gt;v19 -->
<g id="edge17" class="edge">
<title>v14&#45;&gt;v19</title>
<path fill="none" stroke="black" d="M3444.7,-431.7C3444.7,-423.98 3444.7,-414.71 3444.7,-406.11"/>
<polygon fill="black" stroke="black" points="3448.2,-406.1 3444.7,-396.1 3441.2,-406.1 3448.2,-406.1"/>
</g>
<!-- v16 -->
<g id="node21" class="node">
<title>v16</title>
<polygon fill="none" stroke="black" points="4571.89,-468 3801.5,-468 3801.5,-432 4571.89,-432 4571.89,-468"/>
<text text-anchor="middle" x="4186.7" y="-445.8" font-family="Times,serif" font-size="14.00">v16 (readonly child$6 @ Const readonly child$6 = JSX &lt;freeze Component$0 data={freeze x$2} &gt;&lt;/freeze Component$0&gt;) &lt;assign&gt;</text>
</g>
<!-- v21 -->
<g id="node22" class="node">
<title>v21</title>
<polygon fill="none" stroke="black" points="4539.48,-396 3833.92,-396 3833.92,-360 4539.48,-360 4539.48,-396"/>
<text text-anchor="middle" x="4186.7" y="-373.8" font-family="Times,serif" font-size="14.00">v21 (freeze child$6 @ JSX &lt;freeze Component$0 data={freeze y$3} &gt;{freeze child$6}&lt;/freeze Component$0&gt;) &lt;update&gt;</text>
</g>
<!-- v16&#45;&gt;v21 -->
<g id="edge18" class="edge">
<title>v16&#45;&gt;v21</title>
<path fill="none" stroke="black" d="M4186.7,-431.7C4186.7,-423.98 4186.7,-414.71 4186.7,-406.11"/>
<polygon fill="black" stroke="black" points="4190.2,-406.1 4186.7,-396.1 4183.2,-406.1 4190.2,-406.1"/>
</g>
<!-- v22 -->
<g id="node24" class="node">
<title>v22</title>
<polygon fill="none" stroke="black" points="5397.52,-468 4589.88,-468 4589.88,-432 5397.52,-432 5397.52,-468"/>
<text text-anchor="middle" x="4993.7" y="-445.8" font-family="Times,serif" font-size="14.00">v22 (readonly $7 @ Const readonly $7 = JSX &lt;freeze Component$0 data={freeze y$3} &gt;{freeze child$6}&lt;/freeze Component$0&gt;) &lt;assign&gt;</text>
</g>
<!-- v23 -->
<g id="node25" class="node">
<title>v23</title>
<polygon fill="none" stroke="black" points="5129.49,-396 4857.91,-396 4857.91,-360 5129.49,-360 5129.49,-396"/>
<text text-anchor="middle" x="4993.7" y="-373.8" font-family="Times,serif" font-size="14.00">v23 (freeze $7 @ Return freeze $7) &lt;update&gt;</text>
</g>
<!-- v22&#45;&gt;v23 -->
<g id="edge20" class="edge">
<title>v22&#45;&gt;v23</title>
<path fill="none" stroke="black" d="M4993.7,-431.7C4993.7,-423.98 4993.7,-414.71 4993.7,-406.11"/>
<polygon fill="black" stroke="black" points="4997.2,-406.1 4993.7,-396.1 4990.2,-406.1 4997.2,-406.1"/>
</g>
<!-- v24 -->
<g id="node26" class="node">
<title>v24</title>
<polygon fill="none" stroke="black" points="2697.84,-468 2431.56,-468 2431.56,-432 2697.84,-432 2697.84,-468"/>
<text text-anchor="middle" x="2564.7" y="-445.8" font-family="Times,serif" font-size="14.00">v24 (freeze props$1 @ &lt;no&#45;instr&gt;) &lt;assign&gt;</text>
</g>
<!-- v24&#45;&gt;v4 -->
<g id="edge21" class="edge">
<title>v24&#45;&gt;v4</title>
<path fill="none" stroke="black" d="M2564.7,-431.7C2564.7,-423.98 2564.7,-414.71 2564.7,-406.11"/>
<polygon fill="black" stroke="black" points="2568.2,-406.1 2564.7,-396.1 2561.2,-406.1 2568.2,-406.1"/>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 16 KiB