about summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorKartik K. Agaram <vc@akkartik.com>2017-12-07 16:22:23 -0800
committerKartik K. Agaram <vc@akkartik.com>2017-12-07 16:22:23 -0800
commitc0f84b1ffa18eaf6f399aafe462f2a0f705dd009 (patch)
treee0a12f7c765816f2db72e7d57eac5a43ed0db139
parentc082c2f268e7ad483fe1192251cd4a0bc635748f (diff)
downloadmu-c0f84b1ffa18eaf6f399aafe462f2a0f705dd009.tar.gz
4155
-rw-r--r--html/001help.cc.html16
-rw-r--r--html/002test.cc.html2
-rw-r--r--html/003trace.cc.html578
-rw-r--r--html/003trace.test.cc.html88
-rw-r--r--html/010vm.cc.html24
-rw-r--r--html/011load.cc.html52
-rw-r--r--html/012transform.cc.html8
-rw-r--r--html/013update_operation.cc.html4
-rw-r--r--html/014literal_string.cc.html4
-rw-r--r--html/015literal_noninteger.cc.html4
-rw-r--r--html/016dilated_reagent.cc.html16
-rw-r--r--html/017parse_tree.cc.html4
-rw-r--r--html/018type_abbreviations.cc.html28
-rw-r--r--html/020run.cc.html603
-rw-r--r--html/021check_instruction.cc.html10
-rw-r--r--html/022arithmetic.cc.html110
-rw-r--r--html/023boolean.cc.html18
-rw-r--r--html/024jump.cc.html38
-rw-r--r--html/025compare.cc.html68
-rw-r--r--html/026call.cc.html360
-rw-r--r--html/027call_ingredient.cc.html42
-rw-r--r--html/028call_return.cc.html20
-rw-r--r--html/029tools.cc.html292
-rw-r--r--html/030container.cc.html86
-rw-r--r--html/031merge.cc.html24
-rw-r--r--html/032array.cc.html84
-rw-r--r--html/033exclusive_container.cc.html48
-rw-r--r--html/034address.cc.html36
-rw-r--r--html/035lookup.cc.html34
-rw-r--r--html/036refcount.cc.html1993
-rw-r--r--html/037abandon.cc.html20
-rw-r--r--html/038new_text.cc.html26
-rw-r--r--html/040brace.cc.html32
-rw-r--r--html/041jump_target.cc.html12
-rw-r--r--html/042name.cc.html558
-rw-r--r--html/043space.cc.html58
-rw-r--r--html/044space_surround.cc.html4
-rw-r--r--html/045closure_name.cc.html30
-rw-r--r--html/046check_type_by_name.cc.html267
-rw-r--r--html/050scenario.cc.html1352
-rw-r--r--html/052tangle.cc.html34
-rw-r--r--html/053recipe_header.cc.html74
-rw-r--r--html/054static_dispatch.cc.html1038
-rw-r--r--html/055shape_shifting_container.cc.html30
-rw-r--r--html/056shape_shifting_recipe.cc.html2212
-rw-r--r--html/057immutable.cc.html32
-rw-r--r--html/058to_text.cc.html4
-rw-r--r--html/060rewrite_literal_string.cc.html8
-rw-r--r--html/062convert_ingredients_to_text.cc.html10
-rw-r--r--html/069hash.cc.html14
-rw-r--r--html/071deep_copy.cc.html42
-rw-r--r--html/072recipe.cc.html816
-rw-r--r--html/073scheduler.cc.html40
-rw-r--r--html/074wait.cc.html70
-rw-r--r--html/075channel.mu.html2
-rw-r--r--html/076continuation.cc.html433
-rw-r--r--html/080display.cc.html26
-rw-r--r--html/082scenario_screen.cc.html48
-rw-r--r--html/085scenario_console.cc.html22
-rw-r--r--html/087file.cc.html58
-rw-r--r--html/088file.mu.html2
-rw-r--r--html/089scenario_filesystem.cc.html48
-rw-r--r--html/091socket.cc.html62
-rw-r--r--html/099hardware_checks.cc.html4
-rw-r--r--html/100trace_browser.cc.html4
-rw-r--r--html/101run_sandboxed.cc.html26
-rw-r--r--html/same-fringe.mu.html154
67 files changed, 6317 insertions, 6049 deletions
diff --git a/html/001help.cc.html b/html/001help.cc.html
index 16025a66..eeebfa25 100644
--- a/html/001help.cc.html
+++ b/html/001help.cc.html
@@ -81,7 +81,7 @@ if ('onhashchange' in window) {
 <span id="L18" class="LineNr"> 18 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span>&lt;&lt; <span class="Constant">&quot;Examples:</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span>
 <span id="L19" class="LineNr"> 19 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span>&lt;&lt; <span class="Constant">&quot;  To load files and run 'main':</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span>
 <span id="L20" class="LineNr"> 20 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span>&lt;&lt; <span class="Constant">&quot;    mu file1.mu file2.mu ...</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span>
-<span id="L21" class="LineNr"> 21 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span>&lt;&lt; <span class="Constant">&quot;  To run 'main' and dump a <a href='003trace.cc.html#L161'>trace</a> of all operations at the <a href='003trace.cc.html#L197'>end</a>:</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span>
+<span id="L21" class="LineNr"> 21 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span>&lt;&lt; <span class="Constant">&quot;  To run 'main' and <a href='003trace.cc.html#L120'>dump</a> a <a href='003trace.cc.html#L167'>trace</a> of all operations at the <a href='003trace.cc.html#L203'>end</a>:</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span>
 <span id="L22" class="LineNr"> 22 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span>&lt;&lt; <span class="Constant">&quot;    mu --trace file1.mu file2.mu ...</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span>
 <span id="L23" class="LineNr"> 23 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span>&lt;&lt; <span class="Constant">&quot;  To run all tests:</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span>
 <span id="L24" class="LineNr"> 24 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span>&lt;&lt; <span class="Constant">&quot;    mu test</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span>
@@ -89,7 +89,7 @@ if ('onhashchange' in window) {
 <span id="L26" class="LineNr"> 26 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span>&lt;&lt; <span class="Constant">&quot;    mu test file1.mu file2.mu ...</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span>
 <span id="L27" class="LineNr"> 27 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span>&lt;&lt; <span class="Constant">&quot;  To run a single Mu <a href='050scenario.cc.html#L57'>scenario</a>:</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span>
 <span id="L28" class="LineNr"> 28 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span>&lt;&lt; <span class="Constant">&quot;    mu test file1.mu file2.mu ... <a href='050scenario.cc.html#L57'>scenario</a></span><span class="cSpecial">\n</span><span class="Constant">&quot;</span>
-<span id="L29" class="LineNr"> 29 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span>&lt;&lt; <span class="Constant">&quot;  To run a single Mu <a href='050scenario.cc.html#L57'>scenario</a> and dump a <a href='003trace.cc.html#L161'>trace</a> at the <a href='003trace.cc.html#L197'>end</a>:</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span>
+<span id="L29" class="LineNr"> 29 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span>&lt;&lt; <span class="Constant">&quot;  To run a single Mu <a href='050scenario.cc.html#L57'>scenario</a> and <a href='003trace.cc.html#L120'>dump</a> a <a href='003trace.cc.html#L167'>trace</a> at the <a href='003trace.cc.html#L203'>end</a>:</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span>
 <span id="L30" class="LineNr"> 30 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span>&lt;&lt; <span class="Constant">&quot;    mu --trace test file1.mu file2.mu ... <a href='050scenario.cc.html#L57'>scenario</a></span><span class="cSpecial">\n</span><span class="Constant">&quot;</span>
 <span id="L31" class="LineNr"> 31 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span>&lt;&lt; <span class="Constant">&quot;  To load files and run only the tests in explicitly loaded files (for apps):</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span>
 <span id="L32" class="LineNr"> 32 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span>&lt;&lt; <span class="Constant">&quot;    mu --test-only-app test file1.mu file2.mu ...</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span>
@@ -103,7 +103,7 @@ if ('onhashchange' in window) {
 <span id="L40" class="LineNr"> 40 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span>&lt;&lt; <span class="Constant">&quot;    mu --profile file_or_dir1 file_or_dir2 ...</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span>
 <span id="L41" class="LineNr"> 41 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span>&lt;&lt; <span class="Constant">&quot;  this slices and dices time spent in various profile.* output files</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span>
 <span id="L42" class="LineNr"> 42 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span>&lt;&lt; <span class="Constant">&quot;</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span>
-<span id="L43" class="LineNr"> 43 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span>&lt;&lt; <span class="Constant">&quot;  To browse a <a href='003trace.cc.html#L161'>trace</a> generated by a previous run:</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span>
+<span id="L43" class="LineNr"> 43 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span>&lt;&lt; <span class="Constant">&quot;  To browse a <a href='003trace.cc.html#L167'>trace</a> generated by a previous run:</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span>
 <span id="L44" class="LineNr"> 44 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span>&lt;&lt; <span class="Constant">&quot;    mu browse-trace file</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span>
 <span id="L45" class="LineNr"> 45 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span><span class="Delimiter">;</span>
 <span id="L46" class="LineNr"> 46 </span>  <span class="Identifier">return</span> <span class="Constant">0</span><span class="Delimiter">;</span>
@@ -139,9 +139,9 @@ if ('onhashchange' in window) {
 <span id="L76" class="LineNr"> 76 </span>
 <span id="L77" class="LineNr"> 77 </span><span class="Normal">bool</span> <a href='001help.cc.html#L77'>starts_with</a><span class="Delimiter">(</span><span class="Normal">const</span> string&amp; s<span class="Delimiter">,</span> <span class="Normal">const</span> string&amp; pat<span class="Delimiter">)</span> <span class="Delimiter">{</span>
 <span id="L78" class="LineNr"> 78 </span>  string::const_iterator a=s<span class="Delimiter">.</span>begin<span class="Delimiter">(),</span> b=pat<span class="Delimiter">.</span>begin<span class="Delimiter">();</span>
-<span id="L79" class="LineNr"> 79 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Comment">/*</span><span class="Comment">nada</span><span class="Comment">*/</span><span class="Delimiter">;</span>  a!=s<span class="Delimiter">.</span><a href='003trace.cc.html#L197'>end</a><span class="Delimiter">()</span> &amp;&amp; b!=pat<span class="Delimiter">.</span><a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>  ++a<span class="Delimiter">,</span> ++b<span class="Delimiter">)</span>
+<span id="L79" class="LineNr"> 79 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Comment">/*</span><span class="Comment">nada</span><span class="Comment">*/</span><span class="Delimiter">;</span>  a!=s<span class="Delimiter">.</span><a href='003trace.cc.html#L203'>end</a><span class="Delimiter">()</span> &amp;&amp; b!=pat<span class="Delimiter">.</span><a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>  ++a<span class="Delimiter">,</span> ++b<span class="Delimiter">)</span>
 <span id="L80" class="LineNr"> 80 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>*a != *b<span class="Delimiter">)</span> <span class="Identifier">return</span> <span class="Constant">false</span><span class="Delimiter">;</span>
-<span id="L81" class="LineNr"> 81 </span>  <span class="Identifier">return</span> b == pat<span class="Delimiter">.</span><a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L81" class="LineNr"> 81 </span>  <span class="Identifier">return</span> b == pat<span class="Delimiter">.</span><a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L82" class="LineNr"> 82 </span><span class="Delimiter">}</span>
 <span id="L83" class="LineNr"> 83 </span>
 <span id="L84" class="LineNr"> 84 </span><span class="Comment">//: I'll throw some style conventions here for want of a better place for them.</span>
@@ -273,12 +273,12 @@ if ('onhashchange' in window) {
 <span id="L210" class="LineNr">210 </span><span class="Comment">// from <a href="http://stackoverflow.com/questions/152643/idiomatic-c-for-reading-from-a-const-map">http://stackoverflow.com/questions/152643/idiomatic-c-for-reading-from-a-const-map</a></span>
 <span id="L211" class="LineNr">211 </span><span class="Normal">template</span>&lt;<span class="Normal">typename</span> T&gt; <span class="Normal">typename</span> T::mapped_type&amp; get<span class="Delimiter">(</span>T&amp; map<span class="Delimiter">,</span> <span class="Normal">typename</span> T::key_type <span class="Normal">const</span>&amp; key<span class="Delimiter">)</span> <span class="Delimiter">{</span>
 <span id="L212" class="LineNr">212 </span>  <span class="Normal">typename</span> T::iterator iter<span class="Delimiter">(</span>map<span class="Delimiter">.</span>find<span class="Delimiter">(</span>key<span class="Delimiter">));</span>
-<span id="L213" class="LineNr">213 </span>  assert<span class="Delimiter">(</span>iter != map<span class="Delimiter">.</span><a href='003trace.cc.html#L197'>end</a><span class="Delimiter">());</span>
+<span id="L213" class="LineNr">213 </span>  assert<span class="Delimiter">(</span>iter != map<span class="Delimiter">.</span><a href='003trace.cc.html#L203'>end</a><span class="Delimiter">());</span>
 <span id="L214" class="LineNr">214 </span>  <span class="Identifier">return</span> iter<span class="Delimiter">-&gt;</span>second<span class="Delimiter">;</span>
 <span id="L215" class="LineNr">215 </span><span class="Delimiter">}</span>
 <span id="L216" class="LineNr">216 </span><span class="Normal">template</span>&lt;<span class="Normal">typename</span> T&gt; <span class="Normal">typename</span> T::mapped_type <span class="Normal">const</span>&amp; get<span class="Delimiter">(</span><span class="Normal">const</span> T&amp; map<span class="Delimiter">,</span> <span class="Normal">typename</span> T::key_type <span class="Normal">const</span>&amp; key<span class="Delimiter">)</span> <span class="Delimiter">{</span>
 <span id="L217" class="LineNr">217 </span>  <span class="Normal">typename</span> T::const_iterator iter<span class="Delimiter">(</span>map<span class="Delimiter">.</span>find<span class="Delimiter">(</span>key<span class="Delimiter">));</span>
-<span id="L218" class="LineNr">218 </span>  assert<span class="Delimiter">(</span>iter != map<span class="Delimiter">.</span><a href='003trace.cc.html#L197'>end</a><span class="Delimiter">());</span>
+<span id="L218" class="LineNr">218 </span>  assert<span class="Delimiter">(</span>iter != map<span class="Delimiter">.</span><a href='003trace.cc.html#L203'>end</a><span class="Delimiter">());</span>
 <span id="L219" class="LineNr">219 </span>  <span class="Identifier">return</span> iter<span class="Delimiter">-&gt;</span>second<span class="Delimiter">;</span>
 <span id="L220" class="LineNr">220 </span><span class="Delimiter">}</span>
 <span id="L221" class="LineNr">221 </span><span class="Normal">template</span>&lt;<span class="Normal">typename</span> T&gt; <span class="Normal">typename</span> T::mapped_type <span class="Normal">const</span>&amp; <a href='001help.cc.html#L221'>put</a><span class="Delimiter">(</span>T&amp; map<span class="Delimiter">,</span> <span class="Normal">typename</span> T::key_type <span class="Normal">const</span>&amp; key<span class="Delimiter">,</span> <span class="Normal">typename</span> T::mapped_type <span class="Normal">const</span>&amp; value<span class="Delimiter">)</span> <span class="Delimiter">{</span>
@@ -287,7 +287,7 @@ if ('onhashchange' in window) {
 <span id="L224" class="LineNr">224 </span>  <span class="Identifier">return</span> value<span class="Delimiter">;</span>
 <span id="L225" class="LineNr">225 </span><span class="Delimiter">}</span>
 <span id="L226" class="LineNr">226 </span><span class="Normal">template</span>&lt;<span class="Normal">typename</span> T&gt; <span class="Normal">bool</span> contains_key<span class="Delimiter">(</span>T&amp; map<span class="Delimiter">,</span> <span class="Normal">typename</span> T::key_type <span class="Normal">const</span>&amp; key<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L227" class="LineNr">227 </span>  <span class="Identifier">return</span> map<span class="Delimiter">.</span>find<span class="Delimiter">(</span>key<span class="Delimiter">)</span> != map<span class="Delimiter">.</span><a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L227" class="LineNr">227 </span>  <span class="Identifier">return</span> map<span class="Delimiter">.</span>find<span class="Delimiter">(</span>key<span class="Delimiter">)</span> != map<span class="Delimiter">.</span><a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L228" class="LineNr">228 </span><span class="Delimiter">}</span>
 <span id="L229" class="LineNr">229 </span><span class="Normal">template</span>&lt;<span class="Normal">typename</span> T&gt; <span class="Normal">typename</span> T::mapped_type&amp; <a href='001help.cc.html#L229'>get_or_insert</a><span class="Delimiter">(</span>T&amp; map<span class="Delimiter">,</span> <span class="Normal">typename</span> T::key_type <span class="Normal">const</span>&amp; key<span class="Delimiter">)</span> <span class="Delimiter">{</span>
 <span id="L230" class="LineNr">230 </span>  <span class="Identifier">return</span> map[key]<span class="Delimiter">;</span>
diff --git a/html/002test.cc.html b/html/002test.cc.html
index 311dbfdc..db483fc5 100644
--- a/html/002test.cc.html
+++ b/html/002test.cc.html
@@ -151,7 +151,7 @@ if ('onhashchange' in window) {
 <span id="L89" class="LineNr"> 89 </span><span class="Delimiter">}</span>
 <span id="L90" class="LineNr"> 90 </span>
 <span id="L91" class="LineNr"> 91 </span><span class="Normal">int</span> <a href='002test.cc.html#L91'>to_integer</a><span class="Delimiter">(</span>string n<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L92" class="LineNr"> 92 </span>  <span class="Normal">char</span>* <a href='003trace.cc.html#L197'>end</a> = <span class="Constant">NULL</span><span class="Delimiter">;</span>
+<span id="L92" class="LineNr"> 92 </span>  <span class="Normal">char</span>* <a href='003trace.cc.html#L203'>end</a> = <span class="Constant">NULL</span><span class="Delimiter">;</span>
 <span id="L93" class="LineNr"> 93 </span>  <span class="Comment">// safe because string.c_str() is guaranteed to be null-terminated</span>
 <span id="L94" class="LineNr"> 94 </span>  <span class="Normal">int</span> result = strtoll<span class="Delimiter">(</span>n<span class="Delimiter">.</span>c_str<span class="Delimiter">(),</span> &amp;end<span class="Delimiter">,</span> <span class="Comment">/*</span><span class="Comment">any base</span><span class="Comment">*/</span><span class="Constant">0</span><span class="Delimiter">);</span>
 <span id="L95" class="LineNr"> 95 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>*end != <span class="cSpecial">'\0'</span><span class="Delimiter">)</span> cerr &lt;&lt; <span class="Constant">&quot;tried to convert &quot;</span> &lt;&lt; n &lt;&lt; <span class="Constant">&quot; to number</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span><span class="Delimiter">;</span>
diff --git a/html/003trace.cc.html b/html/003trace.cc.html
index 5087f342..f94ed738 100644
--- a/html/003trace.cc.html
+++ b/html/003trace.cc.html
@@ -178,299 +178,301 @@ if ('onhashchange' in window) {
 <span id="L117" class="LineNr">117 </span>  <span class="Conceal">¦</span> <span class="Identifier">return</span> *curr_stream<span class="Delimiter">;</span>
 <span id="L118" class="LineNr">118 </span>  <span class="Delimiter">}</span>
 <span id="L119" class="LineNr">119 </span>
-<span id="L120" class="LineNr">120 </span>  <span class="Comment">// be sure to call this before messing with curr_stream or curr_label</span>
-<span id="L121" class="LineNr">121 </span>  <span class="Normal">void</span> <a href='003trace.cc.html#L127'>newline</a><span class="Delimiter">();</span>
-<span id="L122" class="LineNr">122 </span>  <span class="Comment">// useful for debugging</span>
-<span id="L123" class="LineNr">123 </span>  string <a href='003trace.cc.html#L143'>readable_contents</a><span class="Delimiter">(</span>string label<span class="Delimiter">);</span>  <span class="Comment">// empty label = show everything</span>
-<span id="L124" class="LineNr">124 </span><span class="Delimiter">};</span>
+<span id="L120" class="LineNr">120 </span>  <span class="Normal">void</span> <a href='003trace.cc.html#L120'>dump</a><span class="Delimiter">()</span> <span class="Delimiter">{</span>
+<span id="L121" class="LineNr">121 </span>  <span class="Conceal">¦</span> ofstream fout<span class="Delimiter">(</span><span class="Constant">&quot;last_run&quot;</span><span class="Delimiter">);</span>
+<span id="L122" class="LineNr">122 </span>  <span class="Conceal">¦</span> fout &lt;&lt; <a href='003trace.cc.html#L149'>readable_contents</a><span class="Delimiter">(</span><span class="Constant">&quot;&quot;</span><span class="Delimiter">);</span>
+<span id="L123" class="LineNr">123 </span>  <span class="Conceal">¦</span> fout<span class="Delimiter">.</span>close<span class="Delimiter">();</span>
+<span id="L124" class="LineNr">124 </span>  <span class="Delimiter">}</span>
 <span id="L125" class="LineNr">125 </span>
-<span id="L126" class="LineNr">126 </span><span class="Delimiter">:(code)</span>
-<span id="L127" class="LineNr">127 </span><span class="Normal">void</span> trace_stream::<a href='003trace.cc.html#L127'>newline</a><span class="Delimiter">()</span> <span class="Delimiter">{</span>
-<span id="L128" class="LineNr">128 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!curr_stream<span class="Delimiter">)</span> <span class="Identifier">return</span><span class="Delimiter">;</span>
-<span id="L129" class="LineNr">129 </span>  string curr_contents = curr_stream<span class="Delimiter">-&gt;</span>str<span class="Delimiter">();</span>
-<span id="L130" class="LineNr">130 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!curr_contents<span class="Delimiter">.</span>empty<span class="Delimiter">())</span> <span class="Delimiter">{</span>
-<span id="L131" class="LineNr">131 </span>  <span class="Conceal">¦</span> past_lines<span class="Delimiter">.</span>push_back<span class="Delimiter">(</span>trace_line<span class="Delimiter">(</span>curr_depth<span class="Delimiter">,</span> <a href='003trace.cc.html#L367'>trim</a><span class="Delimiter">(</span>curr_label<span class="Delimiter">),</span> curr_contents<span class="Delimiter">));</span>  <span class="Comment">// preserve indent in contents</span>
-<span id="L132" class="LineNr">132 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">((</span>!Hide_errors &amp;&amp; curr_label == <span class="Constant">&quot;error&quot;</span><span class="Delimiter">)</span>
-<span id="L133" class="LineNr">133 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> || Dump_trace
-<span id="L134" class="LineNr">134 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> || <span class="Delimiter">(</span>!Dump_label<span class="Delimiter">.</span>empty<span class="Delimiter">()</span> &amp;&amp; curr_label == Dump_label<span class="Delimiter">))</span>
-<span id="L135" class="LineNr">135 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> cerr &lt;&lt; curr_label &lt;&lt; <span class="Constant">&quot;: &quot;</span> &lt;&lt; curr_contents &lt;&lt; <span class="cSpecial">'\n'</span><span class="Delimiter">;</span>
-<span id="L136" class="LineNr">136 </span>  <span class="Delimiter">}</span>
-<span id="L137" class="LineNr">137 </span>  <span class="Normal">delete</span> curr_stream<span class="Delimiter">;</span>
-<span id="L138" class="LineNr">138 </span>  curr_stream = <span class="Constant">NULL</span><span class="Delimiter">;</span>
-<span id="L139" class="LineNr">139 </span>  curr_label<span class="Delimiter">.</span><a href='050scenario.cc.html#L60'>clear</a><span class="Delimiter">();</span>
-<span id="L140" class="LineNr">140 </span>  curr_depth = Max_depth<span class="Delimiter">;</span>
-<span id="L141" class="LineNr">141 </span><span class="Delimiter">}</span>
-<span id="L142" class="LineNr">142 </span>
-<span id="L143" class="LineNr">143 </span>string trace_stream::<a href='003trace.cc.html#L143'>readable_contents</a><span class="Delimiter">(</span>string label<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L144" class="LineNr">144 </span>  ostringstream output<span class="Delimiter">;</span>
-<span id="L145" class="LineNr">145 </span>  label = <a href='003trace.cc.html#L367'>trim</a><span class="Delimiter">(</span>label<span class="Delimiter">);</span>
-<span id="L146" class="LineNr">146 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span>vector&lt;trace_line&gt;::iterator p = past_lines<span class="Delimiter">.</span>begin<span class="Delimiter">();</span>  p != past_lines<span class="Delimiter">.</span><a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>  ++p<span class="Delimiter">)</span>
-<span id="L147" class="LineNr">147 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>label<span class="Delimiter">.</span>empty<span class="Delimiter">()</span> || label == p<span class="Delimiter">-&gt;</span>label<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L148" class="LineNr">148 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> output &lt;&lt; std::setw<span class="Delimiter">(</span><span class="Constant">4</span><span class="Delimiter">)</span> &lt;&lt; p<span class="Delimiter">-&gt;</span>depth &lt;&lt; <span class="Constant">' '</span> &lt;&lt; p<span class="Delimiter">-&gt;</span>label &lt;&lt; <span class="Constant">&quot;: &quot;</span> &lt;&lt; p<span class="Delimiter">-&gt;</span>contents &lt;&lt; <span class="cSpecial">'\n'</span><span class="Delimiter">;</span>
-<span id="L149" class="LineNr">149 </span>  <span class="Conceal">¦</span> <span class="Delimiter">}</span>
-<span id="L150" class="LineNr">150 </span>  <span class="Identifier">return</span> output<span class="Delimiter">.</span>str<span class="Delimiter">();</span>
-<span id="L151" class="LineNr">151 </span><span class="Delimiter">}</span>
-<span id="L152" class="LineNr">152 </span>
-<span id="L153" class="LineNr">153 </span><span class="Delimiter">:(before &quot;End Globals&quot;)</span>
-<span id="L154" class="LineNr">154 </span>trace_stream* Trace_stream = <span class="Constant">NULL</span><span class="Delimiter">;</span>
-<span id="L155" class="LineNr">155 </span><span class="Normal">int</span> Trace_errors = <span class="Constant">0</span><span class="Delimiter">;</span>  <span class="Comment">// used only when Trace_stream is NULL</span>
-<span id="L156" class="LineNr">156 </span>
-<span id="L157" class="LineNr">157 </span><span class="Delimiter">:(before &quot;End Includes&quot;)</span>
-<span id="L158" class="LineNr">158 </span><span class="PreProc">#define CLEAR_TRACE  </span><span class="Normal">delete</span><span class="PreProc"> Trace_stream</span><span class="Delimiter">,</span><span class="PreProc"> Trace_stream = </span><span class="Normal">new</span><span class="PreProc"> trace_stream</span><span class="Delimiter">;</span>
-<span id="L159" class="LineNr">159 </span>
-<span id="L160" class="LineNr">160 </span><span class="Comment">// Top-level helper. IMPORTANT: can't nest</span>
-<span id="L161" class="LineNr">161 </span><span class="PreProc">#define trace(</span><span class="Delimiter">...</span><span class="PreProc">)  !Trace_stream ? cerr </span><span class="Comment">/*</span><span class="Comment">print nothing</span><span class="Comment">*/</span><span class="PreProc"> : Trace_stream</span><span class="Delimiter">-&gt;</span><span class="PreProc">stream(__VA_ARGS__)</span>
+<span id="L126" class="LineNr">126 </span>  <span class="Comment">// be sure to call this before messing with curr_stream or curr_label</span>
+<span id="L127" class="LineNr">127 </span>  <span class="Normal">void</span> <a href='003trace.cc.html#L133'>newline</a><span class="Delimiter">();</span>
+<span id="L128" class="LineNr">128 </span>  <span class="Comment">// useful for debugging</span>
+<span id="L129" class="LineNr">129 </span>  string <a href='003trace.cc.html#L149'>readable_contents</a><span class="Delimiter">(</span>string label<span class="Delimiter">);</span>  <span class="Comment">// empty label = show everything</span>
+<span id="L130" class="LineNr">130 </span><span class="Delimiter">};</span>
+<span id="L131" class="LineNr">131 </span>
+<span id="L132" class="LineNr">132 </span><span class="Delimiter">:(code)</span>
+<span id="L133" class="LineNr">133 </span><span class="Normal">void</span> trace_stream::<a href='003trace.cc.html#L133'>newline</a><span class="Delimiter">()</span> <span class="Delimiter">{</span>
+<span id="L134" class="LineNr">134 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!curr_stream<span class="Delimiter">)</span> <span class="Identifier">return</span><span class="Delimiter">;</span>
+<span id="L135" class="LineNr">135 </span>  string curr_contents = curr_stream<span class="Delimiter">-&gt;</span>str<span class="Delimiter">();</span>
+<span id="L136" class="LineNr">136 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!curr_contents<span class="Delimiter">.</span>empty<span class="Delimiter">())</span> <span class="Delimiter">{</span>
+<span id="L137" class="LineNr">137 </span>  <span class="Conceal">¦</span> past_lines<span class="Delimiter">.</span>push_back<span class="Delimiter">(</span>trace_line<span class="Delimiter">(</span>curr_depth<span class="Delimiter">,</span> <a href='003trace.cc.html#L369'>trim</a><span class="Delimiter">(</span>curr_label<span class="Delimiter">),</span> curr_contents<span class="Delimiter">));</span>  <span class="Comment">// preserve indent in contents</span>
+<span id="L138" class="LineNr">138 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">((</span>!Hide_errors &amp;&amp; curr_label == <span class="Constant">&quot;error&quot;</span><span class="Delimiter">)</span>
+<span id="L139" class="LineNr">139 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> || Dump_trace
+<span id="L140" class="LineNr">140 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> || <span class="Delimiter">(</span>!Dump_label<span class="Delimiter">.</span>empty<span class="Delimiter">()</span> &amp;&amp; curr_label == Dump_label<span class="Delimiter">))</span>
+<span id="L141" class="LineNr">141 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> cerr &lt;&lt; curr_label &lt;&lt; <span class="Constant">&quot;: &quot;</span> &lt;&lt; curr_contents &lt;&lt; <span class="cSpecial">'\n'</span><span class="Delimiter">;</span>
+<span id="L142" class="LineNr">142 </span>  <span class="Delimiter">}</span>
+<span id="L143" class="LineNr">143 </span>  <span class="Normal">delete</span> curr_stream<span class="Delimiter">;</span>
+<span id="L144" class="LineNr">144 </span>  curr_stream = <span class="Constant">NULL</span><span class="Delimiter">;</span>
+<span id="L145" class="LineNr">145 </span>  curr_label<span class="Delimiter">.</span><a href='050scenario.cc.html#L60'>clear</a><span class="Delimiter">();</span>
+<span id="L146" class="LineNr">146 </span>  curr_depth = Max_depth<span class="Delimiter">;</span>
+<span id="L147" class="LineNr">147 </span><span class="Delimiter">}</span>
+<span id="L148" class="LineNr">148 </span>
+<span id="L149" class="LineNr">149 </span>string trace_stream::<a href='003trace.cc.html#L149'>readable_contents</a><span class="Delimiter">(</span>string label<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L150" class="LineNr">150 </span>  ostringstream output<span class="Delimiter">;</span>
+<span id="L151" class="LineNr">151 </span>  label = <a href='003trace.cc.html#L369'>trim</a><span class="Delimiter">(</span>label<span class="Delimiter">);</span>
+<span id="L152" class="LineNr">152 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span>vector&lt;trace_line&gt;::iterator p = past_lines<span class="Delimiter">.</span>begin<span class="Delimiter">();</span>  p != past_lines<span class="Delimiter">.</span><a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>  ++p<span class="Delimiter">)</span>
+<span id="L153" class="LineNr">153 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>label<span class="Delimiter">.</span>empty<span class="Delimiter">()</span> || label == p<span class="Delimiter">-&gt;</span>label<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L154" class="LineNr">154 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> output &lt;&lt; std::setw<span class="Delimiter">(</span><span class="Constant">4</span><span class="Delimiter">)</span> &lt;&lt; p<span class="Delimiter">-&gt;</span>depth &lt;&lt; <span class="Constant">' '</span> &lt;&lt; p<span class="Delimiter">-&gt;</span>label &lt;&lt; <span class="Constant">&quot;: &quot;</span> &lt;&lt; p<span class="Delimiter">-&gt;</span>contents &lt;&lt; <span class="cSpecial">'\n'</span><span class="Delimiter">;</span>
+<span id="L155" class="LineNr">155 </span>  <span class="Conceal">¦</span> <span class="Delimiter">}</span>
+<span id="L156" class="LineNr">156 </span>  <span class="Identifier">return</span> output<span class="Delimiter">.</span>str<span class="Delimiter">();</span>
+<span id="L157" class="LineNr">157 </span><span class="Delimiter">}</span>
+<span id="L158" class="LineNr">158 </span>
+<span id="L159" class="LineNr">159 </span><span class="Delimiter">:(before &quot;End Globals&quot;)</span>
+<span id="L160" class="LineNr">160 </span>trace_stream* Trace_stream = <span class="Constant">NULL</span><span class="Delimiter">;</span>
+<span id="L161" class="LineNr">161 </span><span class="Normal">int</span> Trace_errors = <span class="Constant">0</span><span class="Delimiter">;</span>  <span class="Comment">// used only when Trace_stream is NULL</span>
 <span id="L162" class="LineNr">162 </span>
-<span id="L163" class="LineNr">163 </span><span class="Comment">// Just for debugging; 'git log' should never show any calls to 'dbg'.</span>
-<span id="L164" class="LineNr">164 </span><span class="PreProc">#define dbg trace(</span><span class="Constant">0</span><span class="Delimiter">,</span><span class="PreProc"> </span><span class="Constant">&quot;a&quot;</span><span class="PreProc">)</span>
-<span id="L165" class="LineNr">165 </span><span class="PreProc">#define DUMP(label)  </span><span class="Normal">if</span><span class="PreProc"> (Trace_stream) cerr &lt;&lt; Trace_stream</span><span class="Delimiter">-&gt;</span><span class="PreProc">readable_contents(label)</span><span class="Delimiter">;</span>
-<span id="L166" class="LineNr">166 </span>
-<span id="L167" class="LineNr">167 </span><span class="Comment">// Errors are a special layer.</span>
-<span id="L168" class="LineNr">168 </span><span class="PreProc">#define raise  (!Trace_stream ? (scroll_to_bottom_and_close_console()</span><span class="Delimiter">,</span><span class="PreProc">++Trace_errors</span><span class="Delimiter">,</span><span class="PreProc">cerr) </span><span class="Comment">/*</span><span class="Comment">do print</span><span class="Comment">*/</span><span class="PreProc"> : Trace_stream</span><span class="Delimiter">-&gt;</span><span class="PreProc">stream(Error_depth</span><span class="Delimiter">,</span><span class="PreProc"> </span><span class="Constant">&quot;error&quot;</span><span class="PreProc">))</span>
-<span id="L169" class="LineNr">169 </span><span class="Comment">// If we aren't yet sure how to deal with some corner case, use assert_for_now</span>
-<span id="L170" class="LineNr">170 </span><span class="Comment">// to indicate that it isn't an inviolable invariant.</span>
-<span id="L171" class="LineNr">171 </span><span class="PreProc">#define assert_for_now assert</span>
+<span id="L163" class="LineNr">163 </span><span class="Delimiter">:(before &quot;End Includes&quot;)</span>
+<span id="L164" class="LineNr">164 </span><span class="PreProc">#define CLEAR_TRACE  </span><span class="Normal">delete</span><span class="PreProc"> Trace_stream</span><span class="Delimiter">,</span><span class="PreProc"> Trace_stream = </span><span class="Normal">new</span><span class="PreProc"> trace_stream</span><span class="Delimiter">;</span>
+<span id="L165" class="LineNr">165 </span>
+<span id="L166" class="LineNr">166 </span><span class="Comment">// Top-level helper. IMPORTANT: can't nest</span>
+<span id="L167" class="LineNr">167 </span><span class="PreProc">#define trace(</span><span class="Delimiter">...</span><span class="PreProc">)  !Trace_stream ? cerr </span><span class="Comment">/*</span><span class="Comment">print nothing</span><span class="Comment">*/</span><span class="PreProc"> : Trace_stream</span><span class="Delimiter">-&gt;</span><span class="PreProc">stream(__VA_ARGS__)</span>
+<span id="L168" class="LineNr">168 </span>
+<span id="L169" class="LineNr">169 </span><span class="Comment">// Just for debugging; 'git log' should never show any calls to 'dbg'.</span>
+<span id="L170" class="LineNr">170 </span><span class="PreProc">#define dbg trace(</span><span class="Constant">0</span><span class="Delimiter">,</span><span class="PreProc"> </span><span class="Constant">&quot;a&quot;</span><span class="PreProc">)</span>
+<span id="L171" class="LineNr">171 </span><span class="PreProc">#define DUMP(label)  </span><span class="Normal">if</span><span class="PreProc"> (Trace_stream) cerr &lt;&lt; Trace_stream</span><span class="Delimiter">-&gt;</span><span class="PreProc">readable_contents(label)</span><span class="Delimiter">;</span>
 <span id="L172" class="LineNr">172 </span>
-<span id="L173" class="LineNr">173 </span><span class="Comment">//: Automatically close the console in some situations.</span>
-<span id="L174" class="LineNr">174 </span><span class="Delimiter">:(before &quot;End One-time Setup&quot;)</span>
-<span id="L175" class="LineNr">175 </span>atexit<span class="Delimiter">(</span><a href='003trace.cc.html#L177'>scroll_to_bottom_and_close_console</a><span class="Delimiter">);</span>
-<span id="L176" class="LineNr">176 </span><span class="Delimiter">:(code)</span>
-<span id="L177" class="LineNr">177 </span><span class="Normal">void</span> <a href='003trace.cc.html#L177'>scroll_to_bottom_and_close_console</a><span class="Delimiter">()</span> <span class="Delimiter">{</span>
-<span id="L178" class="LineNr">178 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!tb_is_active<span class="Delimiter">())</span> <span class="Identifier">return</span><span class="Delimiter">;</span>
-<span id="L179" class="LineNr">179 </span>  <span class="Comment">// leave the screen in a relatively clean state</span>
-<span id="L180" class="LineNr">180 </span>  tb_set_cursor<span class="Delimiter">(</span>tb_width<span class="Delimiter">()</span>-<span class="Constant">1</span><span class="Delimiter">,</span> tb_height<span class="Delimiter">()</span>-<span class="Constant">1</span><span class="Delimiter">);</span>
-<span id="L181" class="LineNr">181 </span>  cout &lt;&lt; <span class="Constant">&quot;</span><span class="cSpecial">\r\n</span><span class="Constant">&quot;</span><span class="Delimiter">;</span>
-<span id="L182" class="LineNr">182 </span>  tb_shutdown<span class="Delimiter">();</span>
-<span id="L183" class="LineNr">183 </span><span class="Delimiter">}</span>
-<span id="L184" class="LineNr">184 </span>
-<span id="L185" class="LineNr">185 </span><span class="Comment">// Inside tests, fail any tests that displayed (unexpected) errors.</span>
-<span id="L186" class="LineNr">186 </span><span class="Comment">// Expected errors in tests should always be hidden and silently checked for.</span>
-<span id="L187" class="LineNr">187 </span><span class="Delimiter">:(before &quot;End Test Teardown&quot;)</span>
-<span id="L188" class="LineNr">188 </span><span class="Normal">if</span> <span class="Delimiter">(</span>Passed &amp;&amp; !Hide_errors &amp;&amp; <a href='003trace.cc.html#L192'>trace_contains_errors</a><span class="Delimiter">())</span> <span class="Delimiter">{</span>
-<span id="L189" class="LineNr">189 </span>  Passed = <span class="Constant">false</span><span class="Delimiter">;</span>
-<span id="L190" class="LineNr">190 </span><span class="Delimiter">}</span>
-<span id="L191" class="LineNr">191 </span><span class="Delimiter">:(code)</span>
-<span id="L192" class="LineNr">192 </span><span class="Normal">bool</span> <a href='003trace.cc.html#L192'>trace_contains_errors</a><span class="Delimiter">()</span> <span class="Delimiter">{</span>
-<span id="L193" class="LineNr">193 </span>  <span class="Identifier">return</span> Trace_errors &gt; <span class="Constant">0</span> || trace_count<span class="Delimiter">(</span><span class="Constant">&quot;error&quot;</span><span class="Delimiter">)</span> &gt; <span class="Constant">0</span><span class="Delimiter">;</span>
-<span id="L194" class="LineNr">194 </span><span class="Delimiter">}</span>
-<span id="L195" class="LineNr">195 </span>
-<span id="L196" class="LineNr">196 </span><span class="Delimiter">:(before &quot;End Types&quot;)</span>
-<span id="L197" class="LineNr">197 </span><span class="Normal">struct</span> <a href='003trace.cc.html#L197'>end</a> <span class="Delimiter">{};</span>
-<span id="L198" class="LineNr">198 </span><span class="Delimiter">:(code)</span>
-<span id="L199" class="LineNr">199 </span>ostream&amp; <span class="Normal">operator</span>&lt;&lt;<span class="Delimiter">(</span>ostream&amp; os<span class="Delimiter">,</span> <a href='001help.cc.html#L259'>unused</a> <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L200" class="LineNr">200 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>Trace_stream<span class="Delimiter">)</span> Trace_stream<span class="Delimiter">-&gt;</span><a href='003trace.cc.html#L127'>newline</a><span class="Delimiter">();</span>
-<span id="L201" class="LineNr">201 </span>  <span class="Identifier">return</span> os<span class="Delimiter">;</span>
-<span id="L202" class="LineNr">202 </span><span class="Delimiter">}</span>
-<span id="L203" class="LineNr">203 </span>
-<span id="L204" class="LineNr">204 </span><span class="Delimiter">:(before &quot;End Globals&quot;)</span>
-<span id="L205" class="LineNr">205 </span><span class="Normal">bool</span> Save_trace = <span class="Constant">false</span><span class="Delimiter">;</span>
-<span id="L206" class="LineNr">206 </span>
-<span id="L207" class="LineNr">207 </span><span class="Comment">// Trace_stream is a resource, lease_tracer uses RAII to manage it.</span>
-<span id="L208" class="LineNr">208 </span><span class="Delimiter">:(before &quot;End Types&quot;)</span>
-<span id="L209" class="LineNr">209 </span><span class="Normal">struct</span> lease_tracer <span class="Delimiter">{</span>
-<span id="L210" class="LineNr">210 </span>  lease_tracer<span class="Delimiter">();</span>
-<span id="L211" class="LineNr">211 </span>  <a href='003trace.cc.html#L215'>~lease_tracer</a><span class="Delimiter">();</span>
-<span id="L212" class="LineNr">212 </span><span class="Delimiter">};</span>
-<span id="L213" class="LineNr">213 </span><span class="Delimiter">:(code)</span>
-<span id="L214" class="LineNr">214 </span>lease_tracer::lease_tracer<span class="Delimiter">()</span> <span class="Delimiter">{</span> Trace_stream = <span class="Normal">new</span> trace_stream<span class="Delimiter">;</span> <span class="Delimiter">}</span>
-<span id="L215" class="LineNr">215 </span>lease_tracer::<a href='003trace.cc.html#L215'>~lease_tracer</a><span class="Delimiter">()</span> <span class="Delimiter">{</span>
-<span id="L216" class="LineNr">216 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!Trace_stream<span class="Delimiter">)</span> <span class="Identifier">return</span><span class="Delimiter">;</span>  <span class="Comment">// in case tests close Trace_stream</span>
-<span id="L217" class="LineNr">217 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>Save_trace<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L218" class="LineNr">218 </span>  <span class="Conceal">¦</span> ofstream fout<span class="Delimiter">(</span><span class="Constant">&quot;last_trace&quot;</span><span class="Delimiter">);</span>
-<span id="L219" class="LineNr">219 </span>  <span class="Conceal">¦</span> fout &lt;&lt; Trace_stream<span class="Delimiter">-&gt;</span><a href='003trace.cc.html#L143'>readable_contents</a><span class="Delimiter">(</span><span class="Constant">&quot;&quot;</span><span class="Delimiter">);</span>
-<span id="L220" class="LineNr">220 </span>  <span class="Conceal">¦</span> fout<span class="Delimiter">.</span>close<span class="Delimiter">();</span>
-<span id="L221" class="LineNr">221 </span>  <span class="Delimiter">}</span>
-<span id="L222" class="LineNr">222 </span>  <span class="Normal">delete</span> Trace_stream<span class="Delimiter">,</span> Trace_stream = <span class="Constant">NULL</span><span class="Delimiter">;</span>
-<span id="L223" class="LineNr">223 </span><span class="Delimiter">}</span>
-<span id="L224" class="LineNr">224 </span><span class="Delimiter">:(before &quot;End Includes&quot;)</span>
-<span id="L225" class="LineNr">225 </span><span class="PreProc">#define START_TRACING_UNTIL_END_OF_SCOPE  lease_tracer leased_tracer</span><span class="Delimiter">;</span>
-<span id="L226" class="LineNr">226 </span><span class="Delimiter">:(before &quot;End Test Setup&quot;)</span>
-<span id="L227" class="LineNr">227 </span><a href='003trace.cc.html#L225'>START_TRACING_UNTIL_END_OF_SCOPE</a>
-<span id="L228" class="LineNr">228 </span>
-<span id="L229" class="LineNr">229 </span><span class="Delimiter">:(before &quot;End Includes&quot;)</span>
-<span id="L230" class="LineNr">230 </span><span class="PreProc">#define CHECK_TRACE_CONTENTS(</span><span class="Delimiter">...</span><span class="PreProc">)  check_trace_contents(__FUNCTION__</span><span class="Delimiter">,</span><span class="PreProc"> </span><span class="Constant">__FILE__</span><span class="Delimiter">,</span><span class="PreProc"> </span><span class="Constant">__LINE__</span><span class="Delimiter">,</span><span class="PreProc"> __VA_ARGS__)</span>
-<span id="L231" class="LineNr">231 </span>
-<span id="L232" class="LineNr">232 </span><span class="PreProc">#define CHECK_TRACE_CONTAINS_ERRORS()  CHECK(trace_contains_errors())</span>
-<span id="L233" class="LineNr">233 </span><span class="PreProc">#define CHECK_TRACE_DOESNT_CONTAIN_ERRORS() \</span>
-<span id="L234" class="LineNr">234 </span><span class="PreProc">  </span><span class="Normal">if</span><span class="PreProc"> (Passed &amp;&amp; trace_contains_errors()) </span><span class="Delimiter">{</span><span class="PreProc"> \</span>
-<span id="L235" class="LineNr">235 </span><span class="PreProc">  </span><span class="Conceal">¦</span><span class="PreProc"> cerr &lt;&lt; </span><span class="Constant">&quot;</span><span class="cSpecial">\n</span><span class="Constant">F - &quot;</span><span class="PreProc"> &lt;&lt; __FUNCTION__ &lt;&lt; </span><span class="Constant">&quot;(&quot;</span><span class="PreProc"> &lt;&lt; </span><span class="Constant">__FILE__</span><span class="PreProc"> &lt;&lt; </span><span class="Constant">&quot;:&quot;</span><span class="PreProc"> &lt;&lt; </span><span class="Constant">__LINE__</span><span class="PreProc"> &lt;&lt; </span><span class="Constant">&quot;): unexpected errors</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span><span class="Delimiter">;</span><span class="PreProc"> \</span>
-<span id="L236" class="LineNr">236 </span><span class="PreProc">  </span><span class="Conceal">¦</span><span class="PreProc"> DUMP(</span><span class="Constant">&quot;error&quot;</span><span class="PreProc">)</span><span class="Delimiter">;</span><span class="PreProc"> \</span>
-<span id="L237" class="LineNr">237 </span><span class="PreProc">  </span><span class="Conceal">¦</span><span class="PreProc"> Passed = </span><span class="Constant">false</span><span class="Delimiter">;</span><span class="PreProc"> \</span>
-<span id="L238" class="LineNr">238 </span><span class="PreProc">  </span><span class="Conceal">¦</span><span class="PreProc"> </span><span class="Identifier">return</span><span class="Delimiter">;</span><span class="PreProc"> \</span>
-<span id="L239" class="LineNr">239 </span><span class="PreProc">  </span><span class="Delimiter">}</span>
-<span id="L240" class="LineNr">240 </span>
-<span id="L241" class="LineNr">241 </span><span class="PreProc">#define CHECK_TRACE_COUNT(label</span><span class="Delimiter">,</span><span class="PreProc"> count) \</span>
-<span id="L242" class="LineNr">242 </span><span class="PreProc">  </span><span class="Normal">if</span><span class="PreProc"> (Passed &amp;&amp; trace_count(label) != (count)) </span><span class="Delimiter">{</span><span class="PreProc"> \</span>
-<span id="L243" class="LineNr">243 </span><span class="PreProc">  </span><span class="Conceal">¦</span><span class="PreProc"> cerr &lt;&lt; </span><span class="Constant">&quot;</span><span class="cSpecial">\n</span><span class="Constant">F - &quot;</span><span class="PreProc"> &lt;&lt; __FUNCTION__ &lt;&lt; </span><span class="Constant">&quot;(&quot;</span><span class="PreProc"> &lt;&lt; </span><span class="Constant">__FILE__</span><span class="PreProc"> &lt;&lt; </span><span class="Constant">&quot;:&quot;</span><span class="PreProc"> &lt;&lt; </span><span class="Constant">__LINE__</span><span class="PreProc"> &lt;&lt; </span><span class="Constant">&quot;): trace_count of &quot;</span><span class="PreProc"> &lt;&lt; label &lt;&lt; </span><span class="Constant">&quot; should be &quot;</span><span class="PreProc"> &lt;&lt; count &lt;&lt; </span><span class="cSpecial">'\n'</span><span class="Delimiter">;</span><span class="PreProc"> \</span>
-<span id="L244" class="LineNr">244 </span><span class="PreProc">  </span><span class="Conceal">¦</span><span class="PreProc"> cerr &lt;&lt; </span><span class="Constant">&quot;  got &quot;</span><span class="PreProc"> &lt;&lt; trace_count(label) &lt;&lt; </span><span class="cSpecial">'\n'</span><span class="Delimiter">;</span><span class="PreProc">  </span><span class="Comment">/*</span><span class="Comment"> multiple eval </span><span class="Comment">*/</span><span class="PreProc"> \</span>
-<span id="L245" class="LineNr">245 </span><span class="PreProc">  </span><span class="Conceal">¦</span><span class="PreProc"> DUMP(label)</span><span class="Delimiter">;</span><span class="PreProc"> \</span>
-<span id="L246" class="LineNr">246 </span><span class="PreProc">  </span><span class="Conceal">¦</span><span class="PreProc"> Passed = </span><span class="Constant">false</span><span class="Delimiter">;</span><span class="PreProc"> \</span>
-<span id="L247" class="LineNr">247 </span><span class="PreProc">  </span><span class="Conceal">¦</span><span class="PreProc"> </span><span class="Identifier">return</span><span class="Delimiter">;</span><span class="PreProc">  </span><span class="Comment">/*</span><span class="Comment"> Currently we stop at the very first failure. </span><span class="Comment">*/</span><span class="PreProc"> \</span>
-<span id="L248" class="LineNr">248 </span><span class="PreProc">  </span><span class="Delimiter">}</span>
-<span id="L249" class="LineNr">249 </span>
-<span id="L250" class="LineNr">250 </span><span class="PreProc">#define CHECK_TRACE_DOESNT_CONTAIN(</span><span class="Delimiter">...</span><span class="PreProc">)  CHECK(trace_doesnt_contain(__VA_ARGS__))</span>
+<span id="L173" class="LineNr">173 </span><span class="Comment">// Errors are a special layer.</span>
+<span id="L174" class="LineNr">174 </span><span class="PreProc">#define raise  (!Trace_stream ? (scroll_to_bottom_and_close_console()</span><span class="Delimiter">,</span><span class="PreProc">++Trace_errors</span><span class="Delimiter">,</span><span class="PreProc">cerr) </span><span class="Comment">/*</span><span class="Comment">do print</span><span class="Comment">*/</span><span class="PreProc"> : Trace_stream</span><span class="Delimiter">-&gt;</span><span class="PreProc">stream(Error_depth</span><span class="Delimiter">,</span><span class="PreProc"> </span><span class="Constant">&quot;error&quot;</span><span class="PreProc">))</span>
+<span id="L175" class="LineNr">175 </span><span class="Comment">// If we aren't yet sure how to deal with some corner case, use assert_for_now</span>
+<span id="L176" class="LineNr">176 </span><span class="Comment">// to indicate that it isn't an inviolable invariant.</span>
+<span id="L177" class="LineNr">177 </span><span class="PreProc">#define assert_for_now assert</span>
+<span id="L178" class="LineNr">178 </span>
+<span id="L179" class="LineNr">179 </span><span class="Comment">//: Automatically close the console in some situations.</span>
+<span id="L180" class="LineNr">180 </span><span class="Delimiter">:(before &quot;End One-time Setup&quot;)</span>
+<span id="L181" class="LineNr">181 </span>atexit<span class="Delimiter">(</span><a href='003trace.cc.html#L183'>scroll_to_bottom_and_close_console</a><span class="Delimiter">);</span>
+<span id="L182" class="LineNr">182 </span><span class="Delimiter">:(code)</span>
+<span id="L183" class="LineNr">183 </span><span class="Normal">void</span> <a href='003trace.cc.html#L183'>scroll_to_bottom_and_close_console</a><span class="Delimiter">()</span> <span class="Delimiter">{</span>
+<span id="L184" class="LineNr">184 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!tb_is_active<span class="Delimiter">())</span> <span class="Identifier">return</span><span class="Delimiter">;</span>
+<span id="L185" class="LineNr">185 </span>  <span class="Comment">// leave the screen in a relatively clean state</span>
+<span id="L186" class="LineNr">186 </span>  tb_set_cursor<span class="Delimiter">(</span>tb_width<span class="Delimiter">()</span>-<span class="Constant">1</span><span class="Delimiter">,</span> tb_height<span class="Delimiter">()</span>-<span class="Constant">1</span><span class="Delimiter">);</span>
+<span id="L187" class="LineNr">187 </span>  cout &lt;&lt; <span class="Constant">&quot;</span><span class="cSpecial">\r\n</span><span class="Constant">&quot;</span><span class="Delimiter">;</span>
+<span id="L188" class="LineNr">188 </span>  tb_shutdown<span class="Delimiter">();</span>
+<span id="L189" class="LineNr">189 </span><span class="Delimiter">}</span>
+<span id="L190" class="LineNr">190 </span>
+<span id="L191" class="LineNr">191 </span><span class="Comment">// Inside tests, fail any tests that displayed (unexpected) errors.</span>
+<span id="L192" class="LineNr">192 </span><span class="Comment">// Expected errors in tests should always be hidden and silently checked for.</span>
+<span id="L193" class="LineNr">193 </span><span class="Delimiter">:(before &quot;End Test Teardown&quot;)</span>
+<span id="L194" class="LineNr">194 </span><span class="Normal">if</span> <span class="Delimiter">(</span>Passed &amp;&amp; !Hide_errors &amp;&amp; <a href='003trace.cc.html#L198'>trace_contains_errors</a><span class="Delimiter">())</span> <span class="Delimiter">{</span>
+<span id="L195" class="LineNr">195 </span>  Passed = <span class="Constant">false</span><span class="Delimiter">;</span>
+<span id="L196" class="LineNr">196 </span><span class="Delimiter">}</span>
+<span id="L197" class="LineNr">197 </span><span class="Delimiter">:(code)</span>
+<span id="L198" class="LineNr">198 </span><span class="Normal">bool</span> <a href='003trace.cc.html#L198'>trace_contains_errors</a><span class="Delimiter">()</span> <span class="Delimiter">{</span>
+<span id="L199" class="LineNr">199 </span>  <span class="Identifier">return</span> Trace_errors &gt; <span class="Constant">0</span> || trace_count<span class="Delimiter">(</span><span class="Constant">&quot;error&quot;</span><span class="Delimiter">)</span> &gt; <span class="Constant">0</span><span class="Delimiter">;</span>
+<span id="L200" class="LineNr">200 </span><span class="Delimiter">}</span>
+<span id="L201" class="LineNr">201 </span>
+<span id="L202" class="LineNr">202 </span><span class="Delimiter">:(before &quot;End Types&quot;)</span>
+<span id="L203" class="LineNr">203 </span><span class="Normal">struct</span> <a href='003trace.cc.html#L203'>end</a> <span class="Delimiter">{};</span>
+<span id="L204" class="LineNr">204 </span><span class="Delimiter">:(code)</span>
+<span id="L205" class="LineNr">205 </span>ostream&amp; <span class="Normal">operator</span>&lt;&lt;<span class="Delimiter">(</span>ostream&amp; os<span class="Delimiter">,</span> <a href='001help.cc.html#L259'>unused</a> <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L206" class="LineNr">206 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>Trace_stream<span class="Delimiter">)</span> Trace_stream<span class="Delimiter">-&gt;</span><a href='003trace.cc.html#L133'>newline</a><span class="Delimiter">();</span>
+<span id="L207" class="LineNr">207 </span>  <span class="Identifier">return</span> os<span class="Delimiter">;</span>
+<span id="L208" class="LineNr">208 </span><span class="Delimiter">}</span>
+<span id="L209" class="LineNr">209 </span>
+<span id="L210" class="LineNr">210 </span><span class="Delimiter">:(before &quot;End Globals&quot;)</span>
+<span id="L211" class="LineNr">211 </span><span class="Normal">bool</span> Save_trace = <span class="Constant">false</span><span class="Delimiter">;</span>
+<span id="L212" class="LineNr">212 </span>
+<span id="L213" class="LineNr">213 </span><span class="Comment">// Trace_stream is a resource, lease_tracer uses RAII to manage it.</span>
+<span id="L214" class="LineNr">214 </span><span class="Delimiter">:(before &quot;End Types&quot;)</span>
+<span id="L215" class="LineNr">215 </span><span class="Normal">struct</span> lease_tracer <span class="Delimiter">{</span>
+<span id="L216" class="LineNr">216 </span>  lease_tracer<span class="Delimiter">();</span>
+<span id="L217" class="LineNr">217 </span>  <a href='003trace.cc.html#L221'>~lease_tracer</a><span class="Delimiter">();</span>
+<span id="L218" class="LineNr">218 </span><span class="Delimiter">};</span>
+<span id="L219" class="LineNr">219 </span><span class="Delimiter">:(code)</span>
+<span id="L220" class="LineNr">220 </span>lease_tracer::lease_tracer<span class="Delimiter">()</span> <span class="Delimiter">{</span> Trace_stream = <span class="Normal">new</span> trace_stream<span class="Delimiter">;</span> <span class="Delimiter">}</span>
+<span id="L221" class="LineNr">221 </span>lease_tracer::<a href='003trace.cc.html#L221'>~lease_tracer</a><span class="Delimiter">()</span> <span class="Delimiter">{</span>
+<span id="L222" class="LineNr">222 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!Trace_stream<span class="Delimiter">)</span> <span class="Identifier">return</span><span class="Delimiter">;</span>  <span class="Comment">// in case tests close Trace_stream</span>
+<span id="L223" class="LineNr">223 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>Save_trace<span class="Delimiter">)</span> Trace_stream<span class="Delimiter">-&gt;</span><a href='003trace.cc.html#L120'>dump</a><span class="Delimiter">();</span>
+<span id="L224" class="LineNr">224 </span>  <span class="Normal">delete</span> Trace_stream<span class="Delimiter">,</span> Trace_stream = <span class="Constant">NULL</span><span class="Delimiter">;</span>
+<span id="L225" class="LineNr">225 </span><span class="Delimiter">}</span>
+<span id="L226" class="LineNr">226 </span><span class="Delimiter">:(before &quot;End Includes&quot;)</span>
+<span id="L227" class="LineNr">227 </span><span class="PreProc">#define START_TRACING_UNTIL_END_OF_SCOPE  lease_tracer leased_tracer</span><span class="Delimiter">;</span>
+<span id="L228" class="LineNr">228 </span><span class="Delimiter">:(before &quot;End Test Setup&quot;)</span>
+<span id="L229" class="LineNr">229 </span><a href='003trace.cc.html#L227'>START_TRACING_UNTIL_END_OF_SCOPE</a>
+<span id="L230" class="LineNr">230 </span>
+<span id="L231" class="LineNr">231 </span><span class="Delimiter">:(before &quot;End Includes&quot;)</span>
+<span id="L232" class="LineNr">232 </span><span class="PreProc">#define CHECK_TRACE_CONTENTS(</span><span class="Delimiter">...</span><span class="PreProc">)  check_trace_contents(__FUNCTION__</span><span class="Delimiter">,</span><span class="PreProc"> </span><span class="Constant">__FILE__</span><span class="Delimiter">,</span><span class="PreProc"> </span><span class="Constant">__LINE__</span><span class="Delimiter">,</span><span class="PreProc"> __VA_ARGS__)</span>
+<span id="L233" class="LineNr">233 </span>
+<span id="L234" class="LineNr">234 </span><span class="PreProc">#define CHECK_TRACE_CONTAINS_ERRORS()  CHECK(trace_contains_errors())</span>
+<span id="L235" class="LineNr">235 </span><span class="PreProc">#define CHECK_TRACE_DOESNT_CONTAIN_ERRORS() \</span>
+<span id="L236" class="LineNr">236 </span><span class="PreProc">  </span><span class="Normal">if</span><span class="PreProc"> (Passed &amp;&amp; trace_contains_errors()) </span><span class="Delimiter">{</span><span class="PreProc"> \</span>
+<span id="L237" class="LineNr">237 </span><span class="PreProc">  </span><span class="Conceal">¦</span><span class="PreProc"> cerr &lt;&lt; </span><span class="Constant">&quot;</span><span class="cSpecial">\n</span><span class="Constant">F - &quot;</span><span class="PreProc"> &lt;&lt; __FUNCTION__ &lt;&lt; </span><span class="Constant">&quot;(&quot;</span><span class="PreProc"> &lt;&lt; </span><span class="Constant">__FILE__</span><span class="PreProc"> &lt;&lt; </span><span class="Constant">&quot;:&quot;</span><span class="PreProc"> &lt;&lt; </span><span class="Constant">__LINE__</span><span class="PreProc"> &lt;&lt; </span><span class="Constant">&quot;): unexpected errors</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span><span class="Delimiter">;</span><span class="PreProc"> \</span>
+<span id="L238" class="LineNr">238 </span><span class="PreProc">  </span><span class="Conceal">¦</span><span class="PreProc"> DUMP(</span><span class="Constant">&quot;error&quot;</span><span class="PreProc">)</span><span class="Delimiter">;</span><span class="PreProc"> \</span>
+<span id="L239" class="LineNr">239 </span><span class="PreProc">  </span><span class="Conceal">¦</span><span class="PreProc"> Passed = </span><span class="Constant">false</span><span class="Delimiter">;</span><span class="PreProc"> \</span>
+<span id="L240" class="LineNr">240 </span><span class="PreProc">  </span><span class="Conceal">¦</span><span class="PreProc"> </span><span class="Identifier">return</span><span class="Delimiter">;</span><span class="PreProc"> \</span>
+<span id="L241" class="LineNr">241 </span><span class="PreProc">  </span><span class="Delimiter">}</span>
+<span id="L242" class="LineNr">242 </span>
+<span id="L243" class="LineNr">243 </span><span class="PreProc">#define CHECK_TRACE_COUNT(label</span><span class="Delimiter">,</span><span class="PreProc"> count) \</span>
+<span id="L244" class="LineNr">244 </span><span class="PreProc">  </span><span class="Normal">if</span><span class="PreProc"> (Passed &amp;&amp; trace_count(label) != (count)) </span><span class="Delimiter">{</span><span class="PreProc"> \</span>
+<span id="L245" class="LineNr">245 </span><span class="PreProc">  </span><span class="Conceal">¦</span><span class="PreProc"> cerr &lt;&lt; </span><span class="Constant">&quot;</span><span class="cSpecial">\n</span><span class="Constant">F - &quot;</span><span class="PreProc"> &lt;&lt; __FUNCTION__ &lt;&lt; </span><span class="Constant">&quot;(&quot;</span><span class="PreProc"> &lt;&lt; </span><span class="Constant">__FILE__</span><span class="PreProc"> &lt;&lt; </span><span class="Constant">&quot;:&quot;</span><span class="PreProc"> &lt;&lt; </span><span class="Constant">__LINE__</span><span class="PreProc"> &lt;&lt; </span><span class="Constant">&quot;): trace_count of &quot;</span><span class="PreProc"> &lt;&lt; label &lt;&lt; </span><span class="Constant">&quot; should be &quot;</span><span class="PreProc"> &lt;&lt; count &lt;&lt; </span><span class="cSpecial">'\n'</span><span class="Delimiter">;</span><span class="PreProc"> \</span>
+<span id="L246" class="LineNr">246 </span><span class="PreProc">  </span><span class="Conceal">¦</span><span class="PreProc"> cerr &lt;&lt; </span><span class="Constant">&quot;  got &quot;</span><span class="PreProc"> &lt;&lt; trace_count(label) &lt;&lt; </span><span class="cSpecial">'\n'</span><span class="Delimiter">;</span><span class="PreProc">  </span><span class="Comment">/*</span><span class="Comment"> multiple eval </span><span class="Comment">*/</span><span class="PreProc"> \</span>
+<span id="L247" class="LineNr">247 </span><span class="PreProc">  </span><span class="Conceal">¦</span><span class="PreProc"> DUMP(label)</span><span class="Delimiter">;</span><span class="PreProc"> \</span>
+<span id="L248" class="LineNr">248 </span><span class="PreProc">  </span><span class="Conceal">¦</span><span class="PreProc"> Passed = </span><span class="Constant">false</span><span class="Delimiter">;</span><span class="PreProc"> \</span>
+<span id="L249" class="LineNr">249 </span><span class="PreProc">  </span><span class="Conceal">¦</span><span class="PreProc"> </span><span class="Identifier">return</span><span class="Delimiter">;</span><span class="PreProc">  </span><span class="Comment">/*</span><span class="Comment"> Currently we stop at the very first failure. </span><span class="Comment">*/</span><span class="PreProc"> \</span>
+<span id="L250" class="LineNr">250 </span><span class="PreProc">  </span><span class="Delimiter">}</span>
 <span id="L251" class="LineNr">251 </span>
-<span id="L252" class="LineNr">252 </span><span class="Delimiter">:(code)</span>
-<span id="L253" class="LineNr">253 </span><span class="Normal">bool</span> <a href='003trace.cc.html#L253'>check_trace_contents</a><span class="Delimiter">(</span>string FUNCTION<span class="Delimiter">,</span> string <span class="Normal">FILE</span><span class="Delimiter">,</span> <span class="Normal">int</span> LINE<span class="Delimiter">,</span> string expected<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L254" class="LineNr">254 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!Passed<span class="Delimiter">)</span> <span class="Identifier">return</span> <span class="Constant">false</span><span class="Delimiter">;</span>
-<span id="L255" class="LineNr">255 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!Trace_stream<span class="Delimiter">)</span> <span class="Identifier">return</span> <span class="Constant">false</span><span class="Delimiter">;</span>
-<span id="L256" class="LineNr">256 </span>  vector&lt;string&gt; expected_lines = <a href='003trace.cc.html#L343'>split</a><span class="Delimiter">(</span>expected<span class="Delimiter">,</span> <span class="Constant">&quot;^D&quot;</span><span class="Delimiter">);</span>
-<span id="L257" class="LineNr">257 </span>  <span class="Normal">int</span> curr_expected_line = <span class="Constant">0</span><span class="Delimiter">;</span>
-<span id="L258" class="LineNr">258 </span>  <span class="Normal">while</span> <span class="Delimiter">(</span>curr_expected_line &lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>expected_lines<span class="Delimiter">)</span> &amp;&amp; expected_lines<span class="Delimiter">.</span>at<span class="Delimiter">(</span>curr_expected_line<span class="Delimiter">).</span>empty<span class="Delimiter">())</span>
-<span id="L259" class="LineNr">259 </span>  <span class="Conceal">¦</span> ++curr_expected_line<span class="Delimiter">;</span>
-<span id="L260" class="LineNr">260 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>curr_expected_line == <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>expected_lines<span class="Delimiter">))</span> <span class="Identifier">return</span> <span class="Constant">true</span><span class="Delimiter">;</span>
-<span id="L261" class="LineNr">261 </span>  string label<span class="Delimiter">,</span> contents<span class="Delimiter">;</span>
-<span id="L262" class="LineNr">262 </span>  <a href='003trace.cc.html#L285'>split_label_contents</a><span class="Delimiter">(</span>expected_lines<span class="Delimiter">.</span>at<span class="Delimiter">(</span>curr_expected_line<span class="Delimiter">),</span> &amp;label<span class="Delimiter">,</span> &amp;contents<span class="Delimiter">);</span>
-<span id="L263" class="LineNr">263 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span>vector&lt;trace_line&gt;::iterator p = Trace_stream<span class="Delimiter">-&gt;</span>past_lines<span class="Delimiter">.</span>begin<span class="Delimiter">();</span>  p != Trace_stream<span class="Delimiter">-&gt;</span>past_lines<span class="Delimiter">.</span><a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>  ++p<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L264" class="LineNr">264 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>label != p<span class="Delimiter">-&gt;</span>label<span class="Delimiter">)</span> <span class="Identifier">continue</span><span class="Delimiter">;</span>
-<span id="L265" class="LineNr">265 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>contents != <a href='003trace.cc.html#L367'>trim</a><span class="Delimiter">(</span>p<span class="Delimiter">-&gt;</span>contents<span class="Delimiter">))</span> <span class="Identifier">continue</span><span class="Delimiter">;</span>
-<span id="L266" class="LineNr">266 </span>  <span class="Conceal">¦</span> ++curr_expected_line<span class="Delimiter">;</span>
-<span id="L267" class="LineNr">267 </span>  <span class="Conceal">¦</span> <span class="Normal">while</span> <span class="Delimiter">(</span>curr_expected_line &lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>expected_lines<span class="Delimiter">)</span> &amp;&amp; expected_lines<span class="Delimiter">.</span>at<span class="Delimiter">(</span>curr_expected_line<span class="Delimiter">).</span>empty<span class="Delimiter">())</span>
-<span id="L268" class="LineNr">268 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> ++curr_expected_line<span class="Delimiter">;</span>
-<span id="L269" class="LineNr">269 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>curr_expected_line == <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>expected_lines<span class="Delimiter">))</span> <span class="Identifier">return</span> <span class="Constant">true</span><span class="Delimiter">;</span>
-<span id="L270" class="LineNr">270 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L285'>split_label_contents</a><span class="Delimiter">(</span>expected_lines<span class="Delimiter">.</span>at<span class="Delimiter">(</span>curr_expected_line<span class="Delimiter">),</span> &amp;label<span class="Delimiter">,</span> &amp;contents<span class="Delimiter">);</span>
-<span id="L271" class="LineNr">271 </span>  <span class="Delimiter">}</span>
-<span id="L272" class="LineNr">272 </span>
-<span id="L273" class="LineNr">273 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span><a href='003trace.cc.html#L298'>line_exists_anywhere</a><span class="Delimiter">(</span>label<span class="Delimiter">,</span> contents<span class="Delimiter">))</span> <span class="Delimiter">{</span>
-<span id="L274" class="LineNr">274 </span>  <span class="Conceal">¦</span> cerr &lt;&lt; <span class="Constant">&quot;</span><span class="cSpecial">\n</span><span class="Constant">F - &quot;</span> &lt;&lt; FUNCTION &lt;&lt; <span class="Constant">&quot;(&quot;</span> &lt;&lt; <span class="Normal">FILE</span> &lt;&lt; <span class="Constant">&quot;:&quot;</span> &lt;&lt; LINE &lt;&lt; <span class="Constant">&quot;): line [&quot;</span> &lt;&lt; label &lt;&lt; <span class="Constant">&quot;: &quot;</span> &lt;&lt; contents &lt;&lt; <span class="Constant">&quot;] out of order in <a href='003trace.cc.html#L161'>trace</a>:</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span><span class="Delimiter">;</span>
-<span id="L275" class="LineNr">275 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L165'>DUMP</a><span class="Delimiter">(</span><span class="Constant">&quot;&quot;</span><span class="Delimiter">);</span>
-<span id="L276" class="LineNr">276 </span>  <span class="Delimiter">}</span>
-<span id="L277" class="LineNr">277 </span>  <span class="Normal">else</span> <span class="Delimiter">{</span>
-<span id="L278" class="LineNr">278 </span>  <span class="Conceal">¦</span> cerr &lt;&lt; <span class="Constant">&quot;</span><span class="cSpecial">\n</span><span class="Constant">F - &quot;</span> &lt;&lt; FUNCTION &lt;&lt; <span class="Constant">&quot;(&quot;</span> &lt;&lt; <span class="Normal">FILE</span> &lt;&lt; <span class="Constant">&quot;:&quot;</span> &lt;&lt; LINE &lt;&lt; <span class="Constant">&quot;): missing [&quot;</span> &lt;&lt; contents &lt;&lt; <span class="Constant">&quot;] in <a href='003trace.cc.html#L161'>trace</a>:</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span><span class="Delimiter">;</span>
-<span id="L279" class="LineNr">279 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L165'>DUMP</a><span class="Delimiter">(</span>label<span class="Delimiter">);</span>
-<span id="L280" class="LineNr">280 </span>  <span class="Delimiter">}</span>
-<span id="L281" class="LineNr">281 </span>  Passed = <span class="Constant">false</span><span class="Delimiter">;</span>
-<span id="L282" class="LineNr">282 </span>  <span class="Identifier">return</span> <span class="Constant">false</span><span class="Delimiter">;</span>
-<span id="L283" class="LineNr">283 </span><span class="Delimiter">}</span>
-<span id="L284" class="LineNr">284 </span>
-<span id="L285" class="LineNr">285 </span><span class="Normal">void</span> <a href='003trace.cc.html#L285'>split_label_contents</a><span class="Delimiter">(</span><span class="Normal">const</span> string&amp; s<span class="Delimiter">,</span> string* label<span class="Delimiter">,</span> string* contents<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L286" class="LineNr">286 </span>  <span class="Normal">static</span> <span class="Normal">const</span> string delim<span class="Delimiter">(</span><span class="Constant">&quot;: &quot;</span><span class="Delimiter">);</span>
-<span id="L287" class="LineNr">287 </span>  <span class="Normal">size_t</span> pos = s<span class="Delimiter">.</span>find<span class="Delimiter">(</span>delim<span class="Delimiter">);</span>
-<span id="L288" class="LineNr">288 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>pos == string::npos<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L289" class="LineNr">289 </span>  <span class="Conceal">¦</span> *label = <span class="Constant">&quot;&quot;</span><span class="Delimiter">;</span>
-<span id="L290" class="LineNr">290 </span>  <span class="Conceal">¦</span> *contents = <a href='003trace.cc.html#L367'>trim</a><span class="Delimiter">(</span>s<span class="Delimiter">);</span>
-<span id="L291" class="LineNr">291 </span>  <span class="Delimiter">}</span>
-<span id="L292" class="LineNr">292 </span>  <span class="Normal">else</span> <span class="Delimiter">{</span>
-<span id="L293" class="LineNr">293 </span>  <span class="Conceal">¦</span> *label = <a href='003trace.cc.html#L367'>trim</a><span class="Delimiter">(</span>s<span class="Delimiter">.</span>substr<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">,</span> pos<span class="Delimiter">));</span>
-<span id="L294" class="LineNr">294 </span>  <span class="Conceal">¦</span> *contents = <a href='003trace.cc.html#L367'>trim</a><span class="Delimiter">(</span>s<span class="Delimiter">.</span>substr<span class="Delimiter">(</span>pos+SIZE<span class="Delimiter">(</span>delim<span class="Delimiter">)));</span>
-<span id="L295" class="LineNr">295 </span>  <span class="Delimiter">}</span>
-<span id="L296" class="LineNr">296 </span><span class="Delimiter">}</span>
-<span id="L297" class="LineNr">297 </span>
-<span id="L298" class="LineNr">298 </span><span class="Normal">bool</span> <a href='003trace.cc.html#L298'>line_exists_anywhere</a><span class="Delimiter">(</span><span class="Normal">const</span> string&amp; label<span class="Delimiter">,</span> <span class="Normal">const</span> string&amp; contents<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L299" class="LineNr">299 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span>vector&lt;trace_line&gt;::iterator p = Trace_stream<span class="Delimiter">-&gt;</span>past_lines<span class="Delimiter">.</span>begin<span class="Delimiter">();</span>  p != Trace_stream<span class="Delimiter">-&gt;</span>past_lines<span class="Delimiter">.</span><a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>  ++p<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L300" class="LineNr">300 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>label != p<span class="Delimiter">-&gt;</span>label<span class="Delimiter">)</span> <span class="Identifier">continue</span><span class="Delimiter">;</span>
-<span id="L301" class="LineNr">301 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>contents == <a href='003trace.cc.html#L367'>trim</a><span class="Delimiter">(</span>p<span class="Delimiter">-&gt;</span>contents<span class="Delimiter">))</span> <span class="Identifier">return</span> <span class="Constant">true</span><span class="Delimiter">;</span>
-<span id="L302" class="LineNr">302 </span>  <span class="Delimiter">}</span>
-<span id="L303" class="LineNr">303 </span>  <span class="Identifier">return</span> <span class="Constant">false</span><span class="Delimiter">;</span>
-<span id="L304" class="LineNr">304 </span><span class="Delimiter">}</span>
-<span id="L305" class="LineNr">305 </span>
-<span id="L306" class="LineNr">306 </span><span class="Normal">int</span> trace_count<span class="Delimiter">(</span>string label<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L307" class="LineNr">307 </span>  <span class="Identifier">return</span> trace_count<span class="Delimiter">(</span>label<span class="Delimiter">,</span> <span class="Constant">&quot;&quot;</span><span class="Delimiter">);</span>
-<span id="L308" class="LineNr">308 </span><span class="Delimiter">}</span>
-<span id="L309" class="LineNr">309 </span>
-<span id="L310" class="LineNr">310 </span><span class="Normal">int</span> trace_count<span class="Delimiter">(</span>string label<span class="Delimiter">,</span> string line<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L311" class="LineNr">311 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!Trace_stream<span class="Delimiter">)</span> <span class="Identifier">return</span> <span class="Constant">0</span><span class="Delimiter">;</span>
-<span id="L312" class="LineNr">312 </span>  <span class="Normal">long</span> result = <span class="Constant">0</span><span class="Delimiter">;</span>
-<span id="L313" class="LineNr">313 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span>vector&lt;trace_line&gt;::iterator p = Trace_stream<span class="Delimiter">-&gt;</span>past_lines<span class="Delimiter">.</span>begin<span class="Delimiter">();</span>  p != Trace_stream<span class="Delimiter">-&gt;</span>past_lines<span class="Delimiter">.</span><a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>  ++p<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L314" class="LineNr">314 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>label == p<span class="Delimiter">-&gt;</span>label<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L315" class="LineNr">315 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>line == <span class="Constant">&quot;&quot;</span> || <a href='003trace.cc.html#L367'>trim</a><span class="Delimiter">(</span>line<span class="Delimiter">)</span> == <a href='003trace.cc.html#L367'>trim</a><span class="Delimiter">(</span>p<span class="Delimiter">-&gt;</span>contents<span class="Delimiter">))</span>
-<span id="L316" class="LineNr">316 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> ++result<span class="Delimiter">;</span>
-<span id="L317" class="LineNr">317 </span>  <span class="Conceal">¦</span> <span class="Delimiter">}</span>
-<span id="L318" class="LineNr">318 </span>  <span class="Delimiter">}</span>
-<span id="L319" class="LineNr">319 </span>  <span class="Identifier">return</span> result<span class="Delimiter">;</span>
-<span id="L320" class="LineNr">320 </span><span class="Delimiter">}</span>
-<span id="L321" class="LineNr">321 </span>
-<span id="L322" class="LineNr">322 </span><span class="Normal">int</span> <a href='003trace.cc.html#L322'>trace_count_prefix</a><span class="Delimiter">(</span>string label<span class="Delimiter">,</span> string prefix<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L323" class="LineNr">323 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!Trace_stream<span class="Delimiter">)</span> <span class="Identifier">return</span> <span class="Constant">0</span><span class="Delimiter">;</span>
-<span id="L324" class="LineNr">324 </span>  <span class="Normal">long</span> result = <span class="Constant">0</span><span class="Delimiter">;</span>
-<span id="L325" class="LineNr">325 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span>vector&lt;trace_line&gt;::iterator p = Trace_stream<span class="Delimiter">-&gt;</span>past_lines<span class="Delimiter">.</span>begin<span class="Delimiter">();</span>  p != Trace_stream<span class="Delimiter">-&gt;</span>past_lines<span class="Delimiter">.</span><a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>  ++p<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L326" class="LineNr">326 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>label == p<span class="Delimiter">-&gt;</span>label<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L327" class="LineNr">327 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span><a href='001help.cc.html#L77'>starts_with</a><span class="Delimiter">(</span><a href='003trace.cc.html#L367'>trim</a><span class="Delimiter">(</span>p<span class="Delimiter">-&gt;</span>contents<span class="Delimiter">),</span> <a href='003trace.cc.html#L367'>trim</a><span class="Delimiter">(</span>prefix<span class="Delimiter">)))</span>
-<span id="L328" class="LineNr">328 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> ++result<span class="Delimiter">;</span>
-<span id="L329" class="LineNr">329 </span>  <span class="Conceal">¦</span> <span class="Delimiter">}</span>
-<span id="L330" class="LineNr">330 </span>  <span class="Delimiter">}</span>
-<span id="L331" class="LineNr">331 </span>  <span class="Identifier">return</span> result<span class="Delimiter">;</span>
-<span id="L332" class="LineNr">332 </span><span class="Delimiter">}</span>
-<span id="L333" class="LineNr">333 </span>
-<span id="L334" class="LineNr">334 </span><span class="Normal">bool</span> trace_doesnt_contain<span class="Delimiter">(</span>string label<span class="Delimiter">,</span> string line<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L335" class="LineNr">335 </span>  <span class="Identifier">return</span> trace_count<span class="Delimiter">(</span>label<span class="Delimiter">,</span> line<span class="Delimiter">)</span> == <span class="Constant">0</span><span class="Delimiter">;</span>
-<span id="L336" class="LineNr">336 </span><span class="Delimiter">}</span>
-<span id="L337" class="LineNr">337 </span>
-<span id="L338" class="LineNr">338 </span><span class="Normal">bool</span> trace_doesnt_contain<span class="Delimiter">(</span>string expected<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L339" class="LineNr">339 </span>  vector&lt;string&gt; tmp = <a href='003trace.cc.html#L358'>split_first</a><span class="Delimiter">(</span>expected<span class="Delimiter">,</span> <span class="Constant">&quot;: &quot;</span><span class="Delimiter">);</span>
-<span id="L340" class="LineNr">340 </span>  <span class="Identifier">return</span> trace_doesnt_contain<span class="Delimiter">(</span>tmp<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">),</span> tmp<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">1</span><span class="Delimiter">));</span>
-<span id="L341" class="LineNr">341 </span><span class="Delimiter">}</span>
-<span id="L342" class="LineNr">342 </span>
-<span id="L343" class="LineNr">343 </span>vector&lt;string&gt; <a href='003trace.cc.html#L343'>split</a><span class="Delimiter">(</span>string s<span class="Delimiter">,</span> string delim<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L344" class="LineNr">344 </span>  vector&lt;string&gt; result<span class="Delimiter">;</span>
-<span id="L345" class="LineNr">345 </span>  <span class="Normal">size_t</span> begin=<span class="Constant">0</span><span class="Delimiter">,</span> end=s<span class="Delimiter">.</span>find<span class="Delimiter">(</span>delim<span class="Delimiter">);</span>
-<span id="L346" class="LineNr">346 </span>  <span class="Normal">while</span> <span class="Delimiter">(</span><span class="Constant">true</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L347" class="LineNr">347 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span><a href='003trace.cc.html#L197'>end</a> == string::npos<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L348" class="LineNr">348 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> result<span class="Delimiter">.</span>push_back<span class="Delimiter">(</span>string<span class="Delimiter">(</span>s<span class="Delimiter">,</span> begin<span class="Delimiter">,</span> string::npos<span class="Delimiter">));</span>
-<span id="L349" class="LineNr">349 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
-<span id="L350" class="LineNr">350 </span>  <span class="Conceal">¦</span> <span class="Delimiter">}</span>
-<span id="L351" class="LineNr">351 </span>  <span class="Conceal">¦</span> result<span class="Delimiter">.</span>push_back<span class="Delimiter">(</span>string<span class="Delimiter">(</span>s<span class="Delimiter">,</span> begin<span class="Delimiter">,</span> end-begin<span class="Delimiter">));</span>
-<span id="L352" class="LineNr">352 </span>  <span class="Conceal">¦</span> begin = end+SIZE<span class="Delimiter">(</span>delim<span class="Delimiter">);</span>
-<span id="L353" class="LineNr">353 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L197'>end</a> = s<span class="Delimiter">.</span>find<span class="Delimiter">(</span>delim<span class="Delimiter">,</span> begin<span class="Delimiter">);</span>
-<span id="L354" class="LineNr">354 </span>  <span class="Delimiter">}</span>
-<span id="L355" class="LineNr">355 </span>  <span class="Identifier">return</span> result<span class="Delimiter">;</span>
-<span id="L356" class="LineNr">356 </span><span class="Delimiter">}</span>
-<span id="L357" class="LineNr">357 </span>
-<span id="L358" class="LineNr">358 </span>vector&lt;string&gt; <a href='003trace.cc.html#L358'>split_first</a><span class="Delimiter">(</span>string s<span class="Delimiter">,</span> string delim<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L359" class="LineNr">359 </span>  vector&lt;string&gt; result<span class="Delimiter">;</span>
-<span id="L360" class="LineNr">360 </span>  <span class="Normal">size_t</span> end=s<span class="Delimiter">.</span>find<span class="Delimiter">(</span>delim<span class="Delimiter">);</span>
-<span id="L361" class="LineNr">361 </span>  result<span class="Delimiter">.</span>push_back<span class="Delimiter">(</span>string<span class="Delimiter">(</span>s<span class="Delimiter">,</span> <span class="Constant">0</span><span class="Delimiter">,</span> <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">));</span>
-<span id="L362" class="LineNr">362 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span><a href='003trace.cc.html#L197'>end</a> != string::npos<span class="Delimiter">)</span>
-<span id="L363" class="LineNr">363 </span>  <span class="Conceal">¦</span> result<span class="Delimiter">.</span>push_back<span class="Delimiter">(</span>string<span class="Delimiter">(</span>s<span class="Delimiter">,</span> end+SIZE<span class="Delimiter">(</span>delim<span class="Delimiter">),</span> string::npos<span class="Delimiter">));</span>
-<span id="L364" class="LineNr">364 </span>  <span class="Identifier">return</span> result<span class="Delimiter">;</span>
-<span id="L365" class="LineNr">365 </span><span class="Delimiter">}</span>
-<span id="L366" class="LineNr">366 </span>
-<span id="L367" class="LineNr">367 </span>string <a href='003trace.cc.html#L367'>trim</a><span class="Delimiter">(</span><span class="Normal">const</span> string&amp; s<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L368" class="LineNr">368 </span>  string::const_iterator first = s<span class="Delimiter">.</span>begin<span class="Delimiter">();</span>
-<span id="L369" class="LineNr">369 </span>  <span class="Normal">while</span> <span class="Delimiter">(</span>first != s<span class="Delimiter">.</span><a href='003trace.cc.html#L197'>end</a><span class="Delimiter">()</span> &amp;&amp; isspace<span class="Delimiter">(</span>*first<span class="Delimiter">))</span>
-<span id="L370" class="LineNr">370 </span>  <span class="Conceal">¦</span> ++first<span class="Delimiter">;</span>
-<span id="L371" class="LineNr">371 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>first == s<span class="Delimiter">.</span><a href='003trace.cc.html#L197'>end</a><span class="Delimiter">())</span> <span class="Identifier">return</span> <span class="Constant">&quot;&quot;</span><span class="Delimiter">;</span>
-<span id="L372" class="LineNr">372 </span>
-<span id="L373" class="LineNr">373 </span>  string::const_iterator last = --s<span class="Delimiter">.</span><a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
-<span id="L374" class="LineNr">374 </span>  <span class="Normal">while</span> <span class="Delimiter">(</span>last != s<span class="Delimiter">.</span>begin<span class="Delimiter">()</span> &amp;&amp; isspace<span class="Delimiter">(</span>*last<span class="Delimiter">))</span>
-<span id="L375" class="LineNr">375 </span>  <span class="Conceal">¦</span> --last<span class="Delimiter">;</span>
-<span id="L376" class="LineNr">376 </span>  ++last<span class="Delimiter">;</span>
-<span id="L377" class="LineNr">377 </span>  <span class="Identifier">return</span> string<span class="Delimiter">(</span>first<span class="Delimiter">,</span> last<span class="Delimiter">);</span>
-<span id="L378" class="LineNr">378 </span><span class="Delimiter">}</span>
-<span id="L379" class="LineNr">379 </span>
-<span id="L380" class="LineNr">380 </span><span class="Delimiter">:(before &quot;End Includes&quot;)</span>
-<span id="L381" class="LineNr">381 </span><span class="PreProc">#include </span><span class="Constant">&lt;vector&gt;</span>
-<span id="L382" class="LineNr">382 </span><span class="Normal">using</span> std::vector<span class="Delimiter">;</span>
-<span id="L383" class="LineNr">383 </span><span class="PreProc">#include </span><span class="Constant">&lt;list&gt;</span>
-<span id="L384" class="LineNr">384 </span><span class="Normal">using</span> std::list<span class="Delimiter">;</span>
-<span id="L385" class="LineNr">385 </span><span class="PreProc">#include </span><span class="Constant">&lt;map&gt;</span>
-<span id="L386" class="LineNr">386 </span><span class="Normal">using</span> std::map<span class="Delimiter">;</span>
-<span id="L387" class="LineNr">387 </span><span class="PreProc">#include </span><span class="Constant">&lt;set&gt;</span>
-<span id="L388" class="LineNr">388 </span><span class="Normal">using</span> std::set<span class="Delimiter">;</span>
-<span id="L389" class="LineNr">389 </span>
-<span id="L390" class="LineNr">390 </span><span class="PreProc">#include </span><span class="Constant">&lt;sstream&gt;</span>
-<span id="L391" class="LineNr">391 </span><span class="Normal">using</span> std::istringstream<span class="Delimiter">;</span>
-<span id="L392" class="LineNr">392 </span><span class="Normal">using</span> std::ostringstream<span class="Delimiter">;</span>
-<span id="L393" class="LineNr">393 </span>
-<span id="L394" class="LineNr">394 </span><span class="PreProc">#include </span><span class="Constant">&lt;fstream&gt;</span>
-<span id="L395" class="LineNr">395 </span><span class="Normal">using</span> std::ifstream<span class="Delimiter">;</span>
-<span id="L396" class="LineNr">396 </span><span class="Normal">using</span> std::ofstream<span class="Delimiter">;</span>
-<span id="L397" class="LineNr">397 </span>
-<span id="L398" class="LineNr">398 </span><span class="PreProc">#include </span><span class="Constant">&quot;termbox/termbox.h&quot;</span>
+<span id="L252" class="LineNr">252 </span><span class="PreProc">#define CHECK_TRACE_DOESNT_CONTAIN(</span><span class="Delimiter">...</span><span class="PreProc">)  CHECK(trace_doesnt_contain(__VA_ARGS__))</span>
+<span id="L253" class="LineNr">253 </span>
+<span id="L254" class="LineNr">254 </span><span class="Delimiter">:(code)</span>
+<span id="L255" class="LineNr">255 </span><span class="Normal">bool</span> <a href='003trace.cc.html#L255'>check_trace_contents</a><span class="Delimiter">(</span>string FUNCTION<span class="Delimiter">,</span> string <span class="Normal">FILE</span><span class="Delimiter">,</span> <span class="Normal">int</span> LINE<span class="Delimiter">,</span> string expected<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L256" class="LineNr">256 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!Passed<span class="Delimiter">)</span> <span class="Identifier">return</span> <span class="Constant">false</span><span class="Delimiter">;</span>
+<span id="L257" class="LineNr">257 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!Trace_stream<span class="Delimiter">)</span> <span class="Identifier">return</span> <span class="Constant">false</span><span class="Delimiter">;</span>
+<span id="L258" class="LineNr">258 </span>  vector&lt;string&gt; expected_lines = <a href='003trace.cc.html#L345'>split</a><span class="Delimiter">(</span>expected<span class="Delimiter">,</span> <span class="Constant">&quot;^D&quot;</span><span class="Delimiter">);</span>
+<span id="L259" class="LineNr">259 </span>  <span class="Normal">int</span> curr_expected_line = <span class="Constant">0</span><span class="Delimiter">;</span>
+<span id="L260" class="LineNr">260 </span>  <span class="Normal">while</span> <span class="Delimiter">(</span>curr_expected_line &lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>expected_lines<span class="Delimiter">)</span> &amp;&amp; expected_lines<span class="Delimiter">.</span>at<span class="Delimiter">(</span>curr_expected_line<span class="Delimiter">).</span>empty<span class="Delimiter">())</span>
+<span id="L261" class="LineNr">261 </span>  <span class="Conceal">¦</span> ++curr_expected_line<span class="Delimiter">;</span>
+<span id="L262" class="LineNr">262 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>curr_expected_line == <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>expected_lines<span class="Delimiter">))</span> <span class="Identifier">return</span> <span class="Constant">true</span><span class="Delimiter">;</span>
+<span id="L263" class="LineNr">263 </span>  string label<span class="Delimiter">,</span> contents<span class="Delimiter">;</span>
+<span id="L264" class="LineNr">264 </span>  <a href='003trace.cc.html#L287'>split_label_contents</a><span class="Delimiter">(</span>expected_lines<span class="Delimiter">.</span>at<span class="Delimiter">(</span>curr_expected_line<span class="Delimiter">),</span> &amp;label<span class="Delimiter">,</span> &amp;contents<span class="Delimiter">);</span>
+<span id="L265" class="LineNr">265 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span>vector&lt;trace_line&gt;::iterator p = Trace_stream<span class="Delimiter">-&gt;</span>past_lines<span class="Delimiter">.</span>begin<span class="Delimiter">();</span>  p != Trace_stream<span class="Delimiter">-&gt;</span>past_lines<span class="Delimiter">.</span><a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>  ++p<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L266" class="LineNr">266 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>label != p<span class="Delimiter">-&gt;</span>label<span class="Delimiter">)</span> <span class="Identifier">continue</span><span class="Delimiter">;</span>
+<span id="L267" class="LineNr">267 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>contents != <a href='003trace.cc.html#L369'>trim</a><span class="Delimiter">(</span>p<span class="Delimiter">-&gt;</span>contents<span class="Delimiter">))</span> <span class="Identifier">continue</span><span class="Delimiter">;</span>
+<span id="L268" class="LineNr">268 </span>  <span class="Conceal">¦</span> ++curr_expected_line<span class="Delimiter">;</span>
+<span id="L269" class="LineNr">269 </span>  <span class="Conceal">¦</span> <span class="Normal">while</span> <span class="Delimiter">(</span>curr_expected_line &lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>expected_lines<span class="Delimiter">)</span> &amp;&amp; expected_lines<span class="Delimiter">.</span>at<span class="Delimiter">(</span>curr_expected_line<span class="Delimiter">).</span>empty<span class="Delimiter">())</span>
+<span id="L270" class="LineNr">270 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> ++curr_expected_line<span class="Delimiter">;</span>
+<span id="L271" class="LineNr">271 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>curr_expected_line == <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>expected_lines<span class="Delimiter">))</span> <span class="Identifier">return</span> <span class="Constant">true</span><span class="Delimiter">;</span>
+<span id="L272" class="LineNr">272 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L287'>split_label_contents</a><span class="Delimiter">(</span>expected_lines<span class="Delimiter">.</span>at<span class="Delimiter">(</span>curr_expected_line<span class="Delimiter">),</span> &amp;label<span class="Delimiter">,</span> &amp;contents<span class="Delimiter">);</span>
+<span id="L273" class="LineNr">273 </span>  <span class="Delimiter">}</span>
+<span id="L274" class="LineNr">274 </span>
+<span id="L275" class="LineNr">275 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span><a href='003trace.cc.html#L300'>line_exists_anywhere</a><span class="Delimiter">(</span>label<span class="Delimiter">,</span> contents<span class="Delimiter">))</span> <span class="Delimiter">{</span>
+<span id="L276" class="LineNr">276 </span>  <span class="Conceal">¦</span> cerr &lt;&lt; <span class="Constant">&quot;</span><span class="cSpecial">\n</span><span class="Constant">F - &quot;</span> &lt;&lt; FUNCTION &lt;&lt; <span class="Constant">&quot;(&quot;</span> &lt;&lt; <span class="Normal">FILE</span> &lt;&lt; <span class="Constant">&quot;:&quot;</span> &lt;&lt; LINE &lt;&lt; <span class="Constant">&quot;): line [&quot;</span> &lt;&lt; label &lt;&lt; <span class="Constant">&quot;: &quot;</span> &lt;&lt; contents &lt;&lt; <span class="Constant">&quot;] out of order in <a href='003trace.cc.html#L167'>trace</a>:</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span><span class="Delimiter">;</span>
+<span id="L277" class="LineNr">277 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L171'>DUMP</a><span class="Delimiter">(</span><span class="Constant">&quot;&quot;</span><span class="Delimiter">);</span>
+<span id="L278" class="LineNr">278 </span>  <span class="Delimiter">}</span>
+<span id="L279" class="LineNr">279 </span>  <span class="Normal">else</span> <span class="Delimiter">{</span>
+<span id="L280" class="LineNr">280 </span>  <span class="Conceal">¦</span> cerr &lt;&lt; <span class="Constant">&quot;</span><span class="cSpecial">\n</span><span class="Constant">F - &quot;</span> &lt;&lt; FUNCTION &lt;&lt; <span class="Constant">&quot;(&quot;</span> &lt;&lt; <span class="Normal">FILE</span> &lt;&lt; <span class="Constant">&quot;:&quot;</span> &lt;&lt; LINE &lt;&lt; <span class="Constant">&quot;): missing [&quot;</span> &lt;&lt; contents &lt;&lt; <span class="Constant">&quot;] in <a href='003trace.cc.html#L167'>trace</a>:</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span><span class="Delimiter">;</span>
+<span id="L281" class="LineNr">281 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L171'>DUMP</a><span class="Delimiter">(</span>label<span class="Delimiter">);</span>
+<span id="L282" class="LineNr">282 </span>  <span class="Delimiter">}</span>
+<span id="L283" class="LineNr">283 </span>  Passed = <span class="Constant">false</span><span class="Delimiter">;</span>
+<span id="L284" class="LineNr">284 </span>  <span class="Identifier">return</span> <span class="Constant">false</span><span class="Delimiter">;</span>
+<span id="L285" class="LineNr">285 </span><span class="Delimiter">}</span>
+<span id="L286" class="LineNr">286 </span>
+<span id="L287" class="LineNr">287 </span><span class="Normal">void</span> <a href='003trace.cc.html#L287'>split_label_contents</a><span class="Delimiter">(</span><span class="Normal">const</span> string&amp; s<span class="Delimiter">,</span> string* label<span class="Delimiter">,</span> string* contents<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L288" class="LineNr">288 </span>  <span class="Normal">static</span> <span class="Normal">const</span> string delim<span class="Delimiter">(</span><span class="Constant">&quot;: &quot;</span><span class="Delimiter">);</span>
+<span id="L289" class="LineNr">289 </span>  <span class="Normal">size_t</span> pos = s<span class="Delimiter">.</span>find<span class="Delimiter">(</span>delim<span class="Delimiter">);</span>
+<span id="L290" class="LineNr">290 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>pos == string::npos<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L291" class="LineNr">291 </span>  <span class="Conceal">¦</span> *label = <span class="Constant">&quot;&quot;</span><span class="Delimiter">;</span>
+<span id="L292" class="LineNr">292 </span>  <span class="Conceal">¦</span> *contents = <a href='003trace.cc.html#L369'>trim</a><span class="Delimiter">(</span>s<span class="Delimiter">);</span>
+<span id="L293" class="LineNr">293 </span>  <span class="Delimiter">}</span>
+<span id="L294" class="LineNr">294 </span>  <span class="Normal">else</span> <span class="Delimiter">{</span>
+<span id="L295" class="LineNr">295 </span>  <span class="Conceal">¦</span> *label = <a href='003trace.cc.html#L369'>trim</a><span class="Delimiter">(</span>s<span class="Delimiter">.</span>substr<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">,</span> pos<span class="Delimiter">));</span>
+<span id="L296" class="LineNr">296 </span>  <span class="Conceal">¦</span> *contents = <a href='003trace.cc.html#L369'>trim</a><span class="Delimiter">(</span>s<span class="Delimiter">.</span>substr<span class="Delimiter">(</span>pos+SIZE<span class="Delimiter">(</span>delim<span class="Delimiter">)));</span>
+<span id="L297" class="LineNr">297 </span>  <span class="Delimiter">}</span>
+<span id="L298" class="LineNr">298 </span><span class="Delimiter">}</span>
+<span id="L299" class="LineNr">299 </span>
+<span id="L300" class="LineNr">300 </span><span class="Normal">bool</span> <a href='003trace.cc.html#L300'>line_exists_anywhere</a><span class="Delimiter">(</span><span class="Normal">const</span> string&amp; label<span class="Delimiter">,</span> <span class="Normal">const</span> string&amp; contents<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L301" class="LineNr">301 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span>vector&lt;trace_line&gt;::iterator p = Trace_stream<span class="Delimiter">-&gt;</span>past_lines<span class="Delimiter">.</span>begin<span class="Delimiter">();</span>  p != Trace_stream<span class="Delimiter">-&gt;</span>past_lines<span class="Delimiter">.</span><a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>  ++p<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L302" class="LineNr">302 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>label != p<span class="Delimiter">-&gt;</span>label<span class="Delimiter">)</span> <span class="Identifier">continue</span><span class="Delimiter">;</span>
+<span id="L303" class="LineNr">303 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>contents == <a href='003trace.cc.html#L369'>trim</a><span class="Delimiter">(</span>p<span class="Delimiter">-&gt;</span>contents<span class="Delimiter">))</span> <span class="Identifier">return</span> <span class="Constant">true</span><span class="Delimiter">;</span>
+<span id="L304" class="LineNr">304 </span>  <span class="Delimiter">}</span>
+<span id="L305" class="LineNr">305 </span>  <span class="Identifier">return</span> <span class="Constant">false</span><span class="Delimiter">;</span>
+<span id="L306" class="LineNr">306 </span><span class="Delimiter">}</span>
+<span id="L307" class="LineNr">307 </span>
+<span id="L308" class="LineNr">308 </span><span class="Normal">int</span> trace_count<span class="Delimiter">(</span>string label<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L309" class="LineNr">309 </span>  <span class="Identifier">return</span> trace_count<span class="Delimiter">(</span>label<span class="Delimiter">,</span> <span class="Constant">&quot;&quot;</span><span class="Delimiter">);</span>
+<span id="L310" class="LineNr">310 </span><span class="Delimiter">}</span>
+<span id="L311" class="LineNr">311 </span>
+<span id="L312" class="LineNr">312 </span><span class="Normal">int</span> trace_count<span class="Delimiter">(</span>string label<span class="Delimiter">,</span> string line<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L313" class="LineNr">313 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!Trace_stream<span class="Delimiter">)</span> <span class="Identifier">return</span> <span class="Constant">0</span><span class="Delimiter">;</span>
+<span id="L314" class="LineNr">314 </span>  <span class="Normal">long</span> result = <span class="Constant">0</span><span class="Delimiter">;</span>
+<span id="L315" class="LineNr">315 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span>vector&lt;trace_line&gt;::iterator p = Trace_stream<span class="Delimiter">-&gt;</span>past_lines<span class="Delimiter">.</span>begin<span class="Delimiter">();</span>  p != Trace_stream<span class="Delimiter">-&gt;</span>past_lines<span class="Delimiter">.</span><a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>  ++p<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L316" class="LineNr">316 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>label == p<span class="Delimiter">-&gt;</span>label<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L317" class="LineNr">317 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>line == <span class="Constant">&quot;&quot;</span> || <a href='003trace.cc.html#L369'>trim</a><span class="Delimiter">(</span>line<span class="Delimiter">)</span> == <a href='003trace.cc.html#L369'>trim</a><span class="Delimiter">(</span>p<span class="Delimiter">-&gt;</span>contents<span class="Delimiter">))</span>
+<span id="L318" class="LineNr">318 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> ++result<span class="Delimiter">;</span>
+<span id="L319" class="LineNr">319 </span>  <span class="Conceal">¦</span> <span class="Delimiter">}</span>
+<span id="L320" class="LineNr">320 </span>  <span class="Delimiter">}</span>
+<span id="L321" class="LineNr">321 </span>  <span class="Identifier">return</span> result<span class="Delimiter">;</span>
+<span id="L322" class="LineNr">322 </span><span class="Delimiter">}</span>
+<span id="L323" class="LineNr">323 </span>
+<span id="L324" class="LineNr">324 </span><span class="Normal">int</span> <a href='003trace.cc.html#L324'>trace_count_prefix</a><span class="Delimiter">(</span>string label<span class="Delimiter">,</span> string prefix<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L325" class="LineNr">325 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!Trace_stream<span class="Delimiter">)</span> <span class="Identifier">return</span> <span class="Constant">0</span><span class="Delimiter">;</span>
+<span id="L326" class="LineNr">326 </span>  <span class="Normal">long</span> result = <span class="Constant">0</span><span class="Delimiter">;</span>
+<span id="L327" class="LineNr">327 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span>vector&lt;trace_line&gt;::iterator p = Trace_stream<span class="Delimiter">-&gt;</span>past_lines<span class="Delimiter">.</span>begin<span class="Delimiter">();</span>  p != Trace_stream<span class="Delimiter">-&gt;</span>past_lines<span class="Delimiter">.</span><a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>  ++p<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L328" class="LineNr">328 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>label == p<span class="Delimiter">-&gt;</span>label<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L329" class="LineNr">329 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span><a href='001help.cc.html#L77'>starts_with</a><span class="Delimiter">(</span><a href='003trace.cc.html#L369'>trim</a><span class="Delimiter">(</span>p<span class="Delimiter">-&gt;</span>contents<span class="Delimiter">),</span> <a href='003trace.cc.html#L369'>trim</a><span class="Delimiter">(</span>prefix<span class="Delimiter">)))</span>
+<span id="L330" class="LineNr">330 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> ++result<span class="Delimiter">;</span>
+<span id="L331" class="LineNr">331 </span>  <span class="Conceal">¦</span> <span class="Delimiter">}</span>
+<span id="L332" class="LineNr">332 </span>  <span class="Delimiter">}</span>
+<span id="L333" class="LineNr">333 </span>  <span class="Identifier">return</span> result<span class="Delimiter">;</span>
+<span id="L334" class="LineNr">334 </span><span class="Delimiter">}</span>
+<span id="L335" class="LineNr">335 </span>
+<span id="L336" class="LineNr">336 </span><span class="Normal">bool</span> trace_doesnt_contain<span class="Delimiter">(</span>string label<span class="Delimiter">,</span> string line<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L337" class="LineNr">337 </span>  <span class="Identifier">return</span> trace_count<span class="Delimiter">(</span>label<span class="Delimiter">,</span> line<span class="Delimiter">)</span> == <span class="Constant">0</span><span class="Delimiter">;</span>
+<span id="L338" class="LineNr">338 </span><span class="Delimiter">}</span>
+<span id="L339" class="LineNr">339 </span>
+<span id="L340" class="LineNr">340 </span><span class="Normal">bool</span> trace_doesnt_contain<span class="Delimiter">(</span>string expected<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L341" class="LineNr">341 </span>  vector&lt;string&gt; tmp = <a href='003trace.cc.html#L360'>split_first</a><span class="Delimiter">(</span>expected<span class="Delimiter">,</span> <span class="Constant">&quot;: &quot;</span><span class="Delimiter">);</span>
+<span id="L342" class="LineNr">342 </span>  <span class="Identifier">return</span> trace_doesnt_contain<span class="Delimiter">(</span>tmp<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">),</span> tmp<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">1</span><span class="Delimiter">));</span>
+<span id="L343" class="LineNr">343 </span><span class="Delimiter">}</span>
+<span id="L344" class="LineNr">344 </span>
+<span id="L345" class="LineNr">345 </span>vector&lt;string&gt; <a href='003trace.cc.html#L345'>split</a><span class="Delimiter">(</span>string s<span class="Delimiter">,</span> string delim<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L346" class="LineNr">346 </span>  vector&lt;string&gt; result<span class="Delimiter">;</span>
+<span id="L347" class="LineNr">347 </span>  <span class="Normal">size_t</span> begin=<span class="Constant">0</span><span class="Delimiter">,</span> end=s<span class="Delimiter">.</span>find<span class="Delimiter">(</span>delim<span class="Delimiter">);</span>
+<span id="L348" class="LineNr">348 </span>  <span class="Normal">while</span> <span class="Delimiter">(</span><span class="Constant">true</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L349" class="LineNr">349 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span><a href='003trace.cc.html#L203'>end</a> == string::npos<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L350" class="LineNr">350 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> result<span class="Delimiter">.</span>push_back<span class="Delimiter">(</span>string<span class="Delimiter">(</span>s<span class="Delimiter">,</span> begin<span class="Delimiter">,</span> string::npos<span class="Delimiter">));</span>
+<span id="L351" class="LineNr">351 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
+<span id="L352" class="LineNr">352 </span>  <span class="Conceal">¦</span> <span class="Delimiter">}</span>
+<span id="L353" class="LineNr">353 </span>  <span class="Conceal">¦</span> result<span class="Delimiter">.</span>push_back<span class="Delimiter">(</span>string<span class="Delimiter">(</span>s<span class="Delimiter">,</span> begin<span class="Delimiter">,</span> end-begin<span class="Delimiter">));</span>
+<span id="L354" class="LineNr">354 </span>  <span class="Conceal">¦</span> begin = end+SIZE<span class="Delimiter">(</span>delim<span class="Delimiter">);</span>
+<span id="L355" class="LineNr">355 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L203'>end</a> = s<span class="Delimiter">.</span>find<span class="Delimiter">(</span>delim<span class="Delimiter">,</span> begin<span class="Delimiter">);</span>
+<span id="L356" class="LineNr">356 </span>  <span class="Delimiter">}</span>
+<span id="L357" class="LineNr">357 </span>  <span class="Identifier">return</span> result<span class="Delimiter">;</span>
+<span id="L358" class="LineNr">358 </span><span class="Delimiter">}</span>
+<span id="L359" class="LineNr">359 </span>
+<span id="L360" class="LineNr">360 </span>vector&lt;string&gt; <a href='003trace.cc.html#L360'>split_first</a><span class="Delimiter">(</span>string s<span class="Delimiter">,</span> string delim<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L361" class="LineNr">361 </span>  vector&lt;string&gt; result<span class="Delimiter">;</span>
+<span id="L362" class="LineNr">362 </span>  <span class="Normal">size_t</span> end=s<span class="Delimiter">.</span>find<span class="Delimiter">(</span>delim<span class="Delimiter">);</span>
+<span id="L363" class="LineNr">363 </span>  result<span class="Delimiter">.</span>push_back<span class="Delimiter">(</span>string<span class="Delimiter">(</span>s<span class="Delimiter">,</span> <span class="Constant">0</span><span class="Delimiter">,</span> <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">));</span>
+<span id="L364" class="LineNr">364 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span><a href='003trace.cc.html#L203'>end</a> != string::npos<span class="Delimiter">)</span>
+<span id="L365" class="LineNr">365 </span>  <span class="Conceal">¦</span> result<span class="Delimiter">.</span>push_back<span class="Delimiter">(</span>string<span class="Delimiter">(</span>s<span class="Delimiter">,</span> end+SIZE<span class="Delimiter">(</span>delim<span class="Delimiter">),</span> string::npos<span class="Delimiter">));</span>
+<span id="L366" class="LineNr">366 </span>  <span class="Identifier">return</span> result<span class="Delimiter">;</span>
+<span id="L367" class="LineNr">367 </span><span class="Delimiter">}</span>
+<span id="L368" class="LineNr">368 </span>
+<span id="L369" class="LineNr">369 </span>string <a href='003trace.cc.html#L369'>trim</a><span class="Delimiter">(</span><span class="Normal">const</span> string&amp; s<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L370" class="LineNr">370 </span>  string::const_iterator first = s<span class="Delimiter">.</span>begin<span class="Delimiter">();</span>
+<span id="L371" class="LineNr">371 </span>  <span class="Normal">while</span> <span class="Delimiter">(</span>first != s<span class="Delimiter">.</span><a href='003trace.cc.html#L203'>end</a><span class="Delimiter">()</span> &amp;&amp; isspace<span class="Delimiter">(</span>*first<span class="Delimiter">))</span>
+<span id="L372" class="LineNr">372 </span>  <span class="Conceal">¦</span> ++first<span class="Delimiter">;</span>
+<span id="L373" class="LineNr">373 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>first == s<span class="Delimiter">.</span><a href='003trace.cc.html#L203'>end</a><span class="Delimiter">())</span> <span class="Identifier">return</span> <span class="Constant">&quot;&quot;</span><span class="Delimiter">;</span>
+<span id="L374" class="LineNr">374 </span>
+<span id="L375" class="LineNr">375 </span>  string::const_iterator last = --s<span class="Delimiter">.</span><a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
+<span id="L376" class="LineNr">376 </span>  <span class="Normal">while</span> <span class="Delimiter">(</span>last != s<span class="Delimiter">.</span>begin<span class="Delimiter">()</span> &amp;&amp; isspace<span class="Delimiter">(</span>*last<span class="Delimiter">))</span>
+<span id="L377" class="LineNr">377 </span>  <span class="Conceal">¦</span> --last<span class="Delimiter">;</span>
+<span id="L378" class="LineNr">378 </span>  ++last<span class="Delimiter">;</span>
+<span id="L379" class="LineNr">379 </span>  <span class="Identifier">return</span> string<span class="Delimiter">(</span>first<span class="Delimiter">,</span> last<span class="Delimiter">);</span>
+<span id="L380" class="LineNr">380 </span><span class="Delimiter">}</span>
+<span id="L381" class="LineNr">381 </span>
+<span id="L382" class="LineNr">382 </span><span class="Delimiter">:(before &quot;End Includes&quot;)</span>
+<span id="L383" class="LineNr">383 </span><span class="PreProc">#include </span><span class="Constant">&lt;vector&gt;</span>
+<span id="L384" class="LineNr">384 </span><span class="Normal">using</span> std::vector<span class="Delimiter">;</span>
+<span id="L385" class="LineNr">385 </span><span class="PreProc">#include </span><span class="Constant">&lt;list&gt;</span>
+<span id="L386" class="LineNr">386 </span><span class="Normal">using</span> std::list<span class="Delimiter">;</span>
+<span id="L387" class="LineNr">387 </span><span class="PreProc">#include </span><span class="Constant">&lt;map&gt;</span>
+<span id="L388" class="LineNr">388 </span><span class="Normal">using</span> std::map<span class="Delimiter">;</span>
+<span id="L389" class="LineNr">389 </span><span class="PreProc">#include </span><span class="Constant">&lt;set&gt;</span>
+<span id="L390" class="LineNr">390 </span><span class="Normal">using</span> std::set<span class="Delimiter">;</span>
+<span id="L391" class="LineNr">391 </span>
+<span id="L392" class="LineNr">392 </span><span class="PreProc">#include </span><span class="Constant">&lt;sstream&gt;</span>
+<span id="L393" class="LineNr">393 </span><span class="Normal">using</span> std::istringstream<span class="Delimiter">;</span>
+<span id="L394" class="LineNr">394 </span><span class="Normal">using</span> std::ostringstream<span class="Delimiter">;</span>
+<span id="L395" class="LineNr">395 </span>
+<span id="L396" class="LineNr">396 </span><span class="PreProc">#include </span><span class="Constant">&lt;fstream&gt;</span>
+<span id="L397" class="LineNr">397 </span><span class="Normal">using</span> std::ifstream<span class="Delimiter">;</span>
+<span id="L398" class="LineNr">398 </span><span class="Normal">using</span> std::ofstream<span class="Delimiter">;</span>
 <span id="L399" class="LineNr">399 </span>
-<span id="L400" class="LineNr">400 </span><span class="Delimiter">:(before &quot;End Globals&quot;)</span>
-<span id="L401" class="LineNr">401 </span><span class="Comment">//: In future layers we'll use the depth field as follows:</span>
-<span id="L402" class="LineNr">402 </span><span class="Comment">//:</span>
-<span id="L403" class="LineNr">403 </span><span class="Comment">//: Errors will be depth 0.</span>
-<span id="L404" class="LineNr">404 </span><span class="Comment">//: Mu 'applications' will be able to use depths 1-100 as they like.</span>
-<span id="L405" class="LineNr">405 </span><span class="Comment">//: Primitive statements will occupy 101-9989</span>
-<span id="L406" class="LineNr">406 </span><span class="Normal">extern</span> <span class="Normal">const</span> <span class="Normal">int</span> Initial_callstack_depth = <span class="Constant">101</span><span class="Delimiter">;</span>
-<span id="L407" class="LineNr">407 </span><span class="Normal">extern</span> <span class="Normal">const</span> <span class="Normal">int</span> Max_callstack_depth = <span class="Constant">9989</span><span class="Delimiter">;</span>
-<span id="L408" class="LineNr">408 </span><span class="Comment">//: Finally, details of primitive Mu statements will occupy depth 9990-9999</span>
-<span id="L409" class="LineNr">409 </span><span class="Comment">//: (more on that later as well)</span>
-<span id="L410" class="LineNr">410 </span><span class="Comment">//:</span>
-<span id="L411" class="LineNr">411 </span><span class="Comment">//: This framework should help us hide some details at each level, mixing</span>
-<span id="L412" class="LineNr">412 </span><span class="Comment">//: static ideas like layers with the dynamic notion of call-stack depth.</span>
+<span id="L400" class="LineNr">400 </span><span class="PreProc">#include </span><span class="Constant">&quot;termbox/termbox.h&quot;</span>
+<span id="L401" class="LineNr">401 </span>
+<span id="L402" class="LineNr">402 </span><span class="Delimiter">:(before &quot;End Globals&quot;)</span>
+<span id="L403" class="LineNr">403 </span><span class="Comment">//: In future layers we'll use the depth field as follows:</span>
+<span id="L404" class="LineNr">404 </span><span class="Comment">//:</span>
+<span id="L405" class="LineNr">405 </span><span class="Comment">//: Errors will be depth 0.</span>
+<span id="L406" class="LineNr">406 </span><span class="Comment">//: Mu 'applications' will be able to use depths 1-100 as they like.</span>
+<span id="L407" class="LineNr">407 </span><span class="Comment">//: Primitive statements will occupy 101-9989</span>
+<span id="L408" class="LineNr">408 </span><span class="Normal">extern</span> <span class="Normal">const</span> <span class="Normal">int</span> Initial_callstack_depth = <span class="Constant">101</span><span class="Delimiter">;</span>
+<span id="L409" class="LineNr">409 </span><span class="Normal">extern</span> <span class="Normal">const</span> <span class="Normal">int</span> Max_callstack_depth = <span class="Constant">9989</span><span class="Delimiter">;</span>
+<span id="L410" class="LineNr">410 </span><span class="Comment">//: Finally, details of primitive Mu statements will occupy depth 9990-9999</span>
+<span id="L411" class="LineNr">411 </span><span class="Comment">//: (more on that later as well)</span>
+<span id="L412" class="LineNr">412 </span><span class="Comment">//:</span>
+<span id="L413" class="LineNr">413 </span><span class="Comment">//: This framework should help us hide some details at each level, mixing</span>
+<span id="L414" class="LineNr">414 </span><span class="Comment">//: static ideas like layers with the dynamic notion of call-stack depth.</span>
 </pre>
 </body>
 </html>
diff --git a/html/003trace.test.cc.html b/html/003trace.test.cc.html
index 4fedd68c..d71854da 100644
--- a/html/003trace.test.cc.html
+++ b/html/003trace.test.cc.html
@@ -57,66 +57,66 @@ if ('onhashchange' in window) {
 <body onload='JumpToLine();'>
 <pre id='vimCodeElement'>
 <span id="L1" class="LineNr">  1 </span><span class="Normal">void</span> <a href='003trace.test.cc.html#L1'>test_trace_check_compares</a><span class="Delimiter">()</span> <span class="Delimiter">{</span>
-<span id="L2" class="LineNr">  2 </span>  <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">&quot;test layer&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;foo&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
-<span id="L3" class="LineNr">  3 </span>  <a href='003trace.cc.html#L230'>CHECK_TRACE_CONTENTS</a><span class="Delimiter">(</span><span class="Constant">&quot;test layer: foo&quot;</span><span class="Delimiter">);</span>
+<span id="L2" class="LineNr">  2 </span>  <a href='003trace.cc.html#L167'>trace</a><span class="Delimiter">(</span><span class="Constant">&quot;test layer&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;foo&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
+<span id="L3" class="LineNr">  3 </span>  <a href='003trace.cc.html#L232'>CHECK_TRACE_CONTENTS</a><span class="Delimiter">(</span><span class="Constant">&quot;test layer: foo&quot;</span><span class="Delimiter">);</span>
 <span id="L4" class="LineNr">  4 </span><span class="Delimiter">}</span>
 <span id="L5" class="LineNr">  5 </span>
 <span id="L6" class="LineNr">  6 </span><span class="Normal">void</span> <a href='003trace.test.cc.html#L6'>test_trace_check_ignores_other_layers</a><span class="Delimiter">()</span> <span class="Delimiter">{</span>
-<span id="L7" class="LineNr">  7 </span>  <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">&quot;test layer 1&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;foo&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
-<span id="L8" class="LineNr">  8 </span>  <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">&quot;test layer 2&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;bar&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
-<span id="L9" class="LineNr">  9 </span>  <a href='003trace.cc.html#L230'>CHECK_TRACE_CONTENTS</a><span class="Delimiter">(</span><span class="Constant">&quot;test layer 1: foo&quot;</span><span class="Delimiter">);</span>
-<span id="L10" class="LineNr"> 10 </span>  <a href='003trace.cc.html#L250'>CHECK_TRACE_DOESNT_CONTAIN</a><span class="Delimiter">(</span><span class="Constant">&quot;test layer 2: foo&quot;</span><span class="Delimiter">);</span>
+<span id="L7" class="LineNr">  7 </span>  <a href='003trace.cc.html#L167'>trace</a><span class="Delimiter">(</span><span class="Constant">&quot;test layer 1&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;foo&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
+<span id="L8" class="LineNr">  8 </span>  <a href='003trace.cc.html#L167'>trace</a><span class="Delimiter">(</span><span class="Constant">&quot;test layer 2&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;bar&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
+<span id="L9" class="LineNr">  9 </span>  <a href='003trace.cc.html#L232'>CHECK_TRACE_CONTENTS</a><span class="Delimiter">(</span><span class="Constant">&quot;test layer 1: foo&quot;</span><span class="Delimiter">);</span>
+<span id="L10" class="LineNr"> 10 </span>  <a href='003trace.cc.html#L252'>CHECK_TRACE_DOESNT_CONTAIN</a><span class="Delimiter">(</span><span class="Constant">&quot;test layer 2: foo&quot;</span><span class="Delimiter">);</span>
 <span id="L11" class="LineNr"> 11 </span><span class="Delimiter">}</span>
 <span id="L12" class="LineNr"> 12 </span>
 <span id="L13" class="LineNr"> 13 </span><span class="Normal">void</span> <a href='003trace.test.cc.html#L13'>test_trace_check_ignores_leading_whitespace</a><span class="Delimiter">()</span> <span class="Delimiter">{</span>
-<span id="L14" class="LineNr"> 14 </span>  <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">&quot;test layer 1&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot; foo&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L14" class="LineNr"> 14 </span>  <a href='003trace.cc.html#L167'>trace</a><span class="Delimiter">(</span><span class="Constant">&quot;test layer 1&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot; foo&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L15" class="LineNr"> 15 </span>  <a href='002test.cc.html#L31'>CHECK_EQ</a><span class="Delimiter">(</span>trace_count<span class="Delimiter">(</span><span class="Constant">&quot;test layer 1&quot;</span><span class="Delimiter">,</span> <span class="Comment">/*</span><span class="Comment">too little whitespace</span><span class="Comment">*/</span><span class="Constant">&quot;foo&quot;</span><span class="Delimiter">),</span> <span class="Constant">1</span><span class="Delimiter">);</span>
 <span id="L16" class="LineNr"> 16 </span>  <a href='002test.cc.html#L31'>CHECK_EQ</a><span class="Delimiter">(</span>trace_count<span class="Delimiter">(</span><span class="Constant">&quot;test layer 1&quot;</span><span class="Delimiter">,</span> <span class="Comment">/*</span><span class="Comment">too much whitespace</span><span class="Comment">*/</span><span class="Constant">&quot;  foo&quot;</span><span class="Delimiter">),</span> <span class="Constant">1</span><span class="Delimiter">);</span>
 <span id="L17" class="LineNr"> 17 </span><span class="Delimiter">}</span>
 <span id="L18" class="LineNr"> 18 </span>
 <span id="L19" class="LineNr"> 19 </span><span class="Normal">void</span> <a href='003trace.test.cc.html#L19'>test_trace_check_ignores_other_lines</a><span class="Delimiter">()</span> <span class="Delimiter">{</span>
-<span id="L20" class="LineNr"> 20 </span>  <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">&quot;test layer 1&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;foo&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
-<span id="L21" class="LineNr"> 21 </span>  <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">&quot;test layer 1&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;bar&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
-<span id="L22" class="LineNr"> 22 </span>  <a href='003trace.cc.html#L230'>CHECK_TRACE_CONTENTS</a><span class="Delimiter">(</span><span class="Constant">&quot;test layer 1: foo&quot;</span><span class="Delimiter">);</span>
+<span id="L20" class="LineNr"> 20 </span>  <a href='003trace.cc.html#L167'>trace</a><span class="Delimiter">(</span><span class="Constant">&quot;test layer 1&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;foo&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
+<span id="L21" class="LineNr"> 21 </span>  <a href='003trace.cc.html#L167'>trace</a><span class="Delimiter">(</span><span class="Constant">&quot;test layer 1&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;bar&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
+<span id="L22" class="LineNr"> 22 </span>  <a href='003trace.cc.html#L232'>CHECK_TRACE_CONTENTS</a><span class="Delimiter">(</span><span class="Constant">&quot;test layer 1: foo&quot;</span><span class="Delimiter">);</span>
 <span id="L23" class="LineNr"> 23 </span><span class="Delimiter">}</span>
 <span id="L24" class="LineNr"> 24 </span>
 <span id="L25" class="LineNr"> 25 </span><span class="Normal">void</span> <a href='003trace.test.cc.html#L25'>test_trace_check_ignores_other_lines2</a><span class="Delimiter">()</span> <span class="Delimiter">{</span>
-<span id="L26" class="LineNr"> 26 </span>  <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">&quot;test layer 1&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;foo&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
-<span id="L27" class="LineNr"> 27 </span>  <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">&quot;test layer 1&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;bar&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
-<span id="L28" class="LineNr"> 28 </span>  <a href='003trace.cc.html#L230'>CHECK_TRACE_CONTENTS</a><span class="Delimiter">(</span><span class="Constant">&quot;test layer 1: bar&quot;</span><span class="Delimiter">);</span>
+<span id="L26" class="LineNr"> 26 </span>  <a href='003trace.cc.html#L167'>trace</a><span class="Delimiter">(</span><span class="Constant">&quot;test layer 1&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;foo&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
+<span id="L27" class="LineNr"> 27 </span>  <a href='003trace.cc.html#L167'>trace</a><span class="Delimiter">(</span><span class="Constant">&quot;test layer 1&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;bar&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
+<span id="L28" class="LineNr"> 28 </span>  <a href='003trace.cc.html#L232'>CHECK_TRACE_CONTENTS</a><span class="Delimiter">(</span><span class="Constant">&quot;test layer 1: bar&quot;</span><span class="Delimiter">);</span>
 <span id="L29" class="LineNr"> 29 </span><span class="Delimiter">}</span>
 <span id="L30" class="LineNr"> 30 </span>
 <span id="L31" class="LineNr"> 31 </span><span class="Normal">void</span> <a href='003trace.test.cc.html#L31'>test_trace_ignores_trailing_whitespace</a><span class="Delimiter">()</span> <span class="Delimiter">{</span>
-<span id="L32" class="LineNr"> 32 </span>  <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">&quot;test layer 1&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;foo</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
-<span id="L33" class="LineNr"> 33 </span>  <a href='003trace.cc.html#L230'>CHECK_TRACE_CONTENTS</a><span class="Delimiter">(</span><span class="Constant">&quot;test layer 1: foo&quot;</span><span class="Delimiter">);</span>
+<span id="L32" class="LineNr"> 32 </span>  <a href='003trace.cc.html#L167'>trace</a><span class="Delimiter">(</span><span class="Constant">&quot;test layer 1&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;foo</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
+<span id="L33" class="LineNr"> 33 </span>  <a href='003trace.cc.html#L232'>CHECK_TRACE_CONTENTS</a><span class="Delimiter">(</span><span class="Constant">&quot;test layer 1: foo&quot;</span><span class="Delimiter">);</span>
 <span id="L34" class="LineNr"> 34 </span><span class="Delimiter">}</span>
 <span id="L35" class="LineNr"> 35 </span>
 <span id="L36" class="LineNr"> 36 </span><span class="Normal">void</span> <a href='003trace.test.cc.html#L36'>test_trace_ignores_trailing_whitespace2</a><span class="Delimiter">()</span> <span class="Delimiter">{</span>
-<span id="L37" class="LineNr"> 37 </span>  <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">&quot;test layer 1&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;foo &quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
-<span id="L38" class="LineNr"> 38 </span>  <a href='003trace.cc.html#L230'>CHECK_TRACE_CONTENTS</a><span class="Delimiter">(</span><span class="Constant">&quot;test layer 1: foo&quot;</span><span class="Delimiter">);</span>
+<span id="L37" class="LineNr"> 37 </span>  <a href='003trace.cc.html#L167'>trace</a><span class="Delimiter">(</span><span class="Constant">&quot;test layer 1&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;foo &quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
+<span id="L38" class="LineNr"> 38 </span>  <a href='003trace.cc.html#L232'>CHECK_TRACE_CONTENTS</a><span class="Delimiter">(</span><span class="Constant">&quot;test layer 1: foo&quot;</span><span class="Delimiter">);</span>
 <span id="L39" class="LineNr"> 39 </span><span class="Delimiter">}</span>
 <span id="L40" class="LineNr"> 40 </span>
 <span id="L41" class="LineNr"> 41 </span><span class="Normal">void</span> <a href='003trace.test.cc.html#L41'>test_trace_orders_across_layers</a><span class="Delimiter">()</span> <span class="Delimiter">{</span>
-<span id="L42" class="LineNr"> 42 </span>  <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">&quot;test layer 1&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;foo&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
-<span id="L43" class="LineNr"> 43 </span>  <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">&quot;test layer 2&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;bar&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
-<span id="L44" class="LineNr"> 44 </span>  <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">&quot;test layer 1&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;qux&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
-<span id="L45" class="LineNr"> 45 </span>  <a href='003trace.cc.html#L230'>CHECK_TRACE_CONTENTS</a><span class="Delimiter">(</span><span class="Constant">&quot;test layer 1: foo^Dtest layer 2: bar^Dtest layer 1: qux^D&quot;</span><span class="Delimiter">);</span>
+<span id="L42" class="LineNr"> 42 </span>  <a href='003trace.cc.html#L167'>trace</a><span class="Delimiter">(</span><span class="Constant">&quot;test layer 1&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;foo&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
+<span id="L43" class="LineNr"> 43 </span>  <a href='003trace.cc.html#L167'>trace</a><span class="Delimiter">(</span><span class="Constant">&quot;test layer 2&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;bar&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
+<span id="L44" class="LineNr"> 44 </span>  <a href='003trace.cc.html#L167'>trace</a><span class="Delimiter">(</span><span class="Constant">&quot;test layer 1&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;qux&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
+<span id="L45" class="LineNr"> 45 </span>  <a href='003trace.cc.html#L232'>CHECK_TRACE_CONTENTS</a><span class="Delimiter">(</span><span class="Constant">&quot;test layer 1: foo^Dtest layer 2: bar^Dtest layer 1: qux^D&quot;</span><span class="Delimiter">);</span>
 <span id="L46" class="LineNr"> 46 </span><span class="Delimiter">}</span>
 <span id="L47" class="LineNr"> 47 </span>
 <span id="L48" class="LineNr"> 48 </span><span class="Normal">void</span> <a href='003trace.test.cc.html#L48'>test_trace_supports_count</a><span class="Delimiter">()</span> <span class="Delimiter">{</span>
-<span id="L49" class="LineNr"> 49 </span>  <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">&quot;test layer 1&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;foo&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
-<span id="L50" class="LineNr"> 50 </span>  <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">&quot;test layer 1&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;foo&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L49" class="LineNr"> 49 </span>  <a href='003trace.cc.html#L167'>trace</a><span class="Delimiter">(</span><span class="Constant">&quot;test layer 1&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;foo&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
+<span id="L50" class="LineNr"> 50 </span>  <a href='003trace.cc.html#L167'>trace</a><span class="Delimiter">(</span><span class="Constant">&quot;test layer 1&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;foo&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L51" class="LineNr"> 51 </span>  <a href='002test.cc.html#L31'>CHECK_EQ</a><span class="Delimiter">(</span>trace_count<span class="Delimiter">(</span><span class="Constant">&quot;test layer 1&quot;</span><span class="Delimiter">,</span> <span class="Constant">&quot;foo&quot;</span><span class="Delimiter">),</span> <span class="Constant">2</span><span class="Delimiter">);</span>
 <span id="L52" class="LineNr"> 52 </span><span class="Delimiter">}</span>
 <span id="L53" class="LineNr"> 53 </span>
 <span id="L54" class="LineNr"> 54 </span><span class="Normal">void</span> <a href='003trace.test.cc.html#L54'>test_trace_supports_count2</a><span class="Delimiter">()</span> <span class="Delimiter">{</span>
-<span id="L55" class="LineNr"> 55 </span>  <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">&quot;test layer 1&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;foo&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
-<span id="L56" class="LineNr"> 56 </span>  <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">&quot;test layer 1&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;bar&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L55" class="LineNr"> 55 </span>  <a href='003trace.cc.html#L167'>trace</a><span class="Delimiter">(</span><span class="Constant">&quot;test layer 1&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;foo&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
+<span id="L56" class="LineNr"> 56 </span>  <a href='003trace.cc.html#L167'>trace</a><span class="Delimiter">(</span><span class="Constant">&quot;test layer 1&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;bar&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L57" class="LineNr"> 57 </span>  <a href='002test.cc.html#L31'>CHECK_EQ</a><span class="Delimiter">(</span>trace_count<span class="Delimiter">(</span><span class="Constant">&quot;test layer 1&quot;</span><span class="Delimiter">),</span> <span class="Constant">2</span><span class="Delimiter">);</span>
 <span id="L58" class="LineNr"> 58 </span><span class="Delimiter">}</span>
 <span id="L59" class="LineNr"> 59 </span>
 <span id="L60" class="LineNr"> 60 </span><span class="Normal">void</span> <a href='003trace.test.cc.html#L60'>test_trace_count_ignores_trailing_whitespace</a><span class="Delimiter">()</span> <span class="Delimiter">{</span>
-<span id="L61" class="LineNr"> 61 </span>  <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">&quot;test layer 1&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;foo</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L61" class="LineNr"> 61 </span>  <a href='003trace.cc.html#L167'>trace</a><span class="Delimiter">(</span><span class="Constant">&quot;test layer 1&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;foo</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L62" class="LineNr"> 62 </span>  <a href='002test.cc.html#L31'>CHECK_EQ</a><span class="Delimiter">(</span>trace_count<span class="Delimiter">(</span><span class="Constant">&quot;test layer 1&quot;</span><span class="Delimiter">,</span> <span class="Constant">&quot;foo&quot;</span><span class="Delimiter">),</span> <span class="Constant">1</span><span class="Delimiter">);</span>
 <span id="L63" class="LineNr"> 63 </span><span class="Delimiter">}</span>
 <span id="L64" class="LineNr"> 64 </span>
@@ -131,26 +131,26 @@ if ('onhashchange' in window) {
 <span id="L73" class="LineNr"> 73 </span><span class="Comment">// can't check trace because trace methods call 'split'</span>
 <span id="L74" class="LineNr"> 74 </span>
 <span id="L75" class="LineNr"> 75 </span><span class="Normal">void</span> <a href='003trace.test.cc.html#L75'>test_split_returns_at_least_one_elem</a><span class="Delimiter">()</span> <span class="Delimiter">{</span>
-<span id="L76" class="LineNr"> 76 </span>  vector&lt;string&gt; result = <a href='003trace.cc.html#L343'>split</a><span class="Delimiter">(</span><span class="Constant">&quot;&quot;</span><span class="Delimiter">,</span> <span class="Constant">&quot;,&quot;</span><span class="Delimiter">);</span>
+<span id="L76" class="LineNr"> 76 </span>  vector&lt;string&gt; result = <a href='003trace.cc.html#L345'>split</a><span class="Delimiter">(</span><span class="Constant">&quot;&quot;</span><span class="Delimiter">,</span> <span class="Constant">&quot;,&quot;</span><span class="Delimiter">);</span>
 <span id="L77" class="LineNr"> 77 </span>  <a href='002test.cc.html#L31'>CHECK_EQ</a><span class="Delimiter">(</span>result<span class="Delimiter">.</span>size<span class="Delimiter">(),</span> <span class="Constant">1</span><span class="Delimiter">);</span>
 <span id="L78" class="LineNr"> 78 </span>  <a href='002test.cc.html#L31'>CHECK_EQ</a><span class="Delimiter">(</span>result<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">),</span> <span class="Constant">&quot;&quot;</span><span class="Delimiter">);</span>
 <span id="L79" class="LineNr"> 79 </span><span class="Delimiter">}</span>
 <span id="L80" class="LineNr"> 80 </span>
 <span id="L81" class="LineNr"> 81 </span><span class="Normal">void</span> <a href='003trace.test.cc.html#L81'>test_split_returns_entire_input_when_no_delim</a><span class="Delimiter">()</span> <span class="Delimiter">{</span>
-<span id="L82" class="LineNr"> 82 </span>  vector&lt;string&gt; result = <a href='003trace.cc.html#L343'>split</a><span class="Delimiter">(</span><span class="Constant">&quot;abc&quot;</span><span class="Delimiter">,</span> <span class="Constant">&quot;,&quot;</span><span class="Delimiter">);</span>
+<span id="L82" class="LineNr"> 82 </span>  vector&lt;string&gt; result = <a href='003trace.cc.html#L345'>split</a><span class="Delimiter">(</span><span class="Constant">&quot;abc&quot;</span><span class="Delimiter">,</span> <span class="Constant">&quot;,&quot;</span><span class="Delimiter">);</span>
 <span id="L83" class="LineNr"> 83 </span>  <a href='002test.cc.html#L31'>CHECK_EQ</a><span class="Delimiter">(</span>result<span class="Delimiter">.</span>size<span class="Delimiter">(),</span> <span class="Constant">1</span><span class="Delimiter">);</span>
 <span id="L84" class="LineNr"> 84 </span>  <a href='002test.cc.html#L31'>CHECK_EQ</a><span class="Delimiter">(</span>result<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">),</span> <span class="Constant">&quot;abc&quot;</span><span class="Delimiter">);</span>
 <span id="L85" class="LineNr"> 85 </span><span class="Delimiter">}</span>
 <span id="L86" class="LineNr"> 86 </span>
 <span id="L87" class="LineNr"> 87 </span><span class="Normal">void</span> <a href='003trace.test.cc.html#L87'>test_split_works</a><span class="Delimiter">()</span> <span class="Delimiter">{</span>
-<span id="L88" class="LineNr"> 88 </span>  vector&lt;string&gt; result = <a href='003trace.cc.html#L343'>split</a><span class="Delimiter">(</span><span class="Constant">&quot;abc,def&quot;</span><span class="Delimiter">,</span> <span class="Constant">&quot;,&quot;</span><span class="Delimiter">);</span>
+<span id="L88" class="LineNr"> 88 </span>  vector&lt;string&gt; result = <a href='003trace.cc.html#L345'>split</a><span class="Delimiter">(</span><span class="Constant">&quot;abc,def&quot;</span><span class="Delimiter">,</span> <span class="Constant">&quot;,&quot;</span><span class="Delimiter">);</span>
 <span id="L89" class="LineNr"> 89 </span>  <a href='002test.cc.html#L31'>CHECK_EQ</a><span class="Delimiter">(</span>result<span class="Delimiter">.</span>size<span class="Delimiter">(),</span> <span class="Constant">2</span><span class="Delimiter">);</span>
 <span id="L90" class="LineNr"> 90 </span>  <a href='002test.cc.html#L31'>CHECK_EQ</a><span class="Delimiter">(</span>result<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">),</span> <span class="Constant">&quot;abc&quot;</span><span class="Delimiter">);</span>
 <span id="L91" class="LineNr"> 91 </span>  <a href='002test.cc.html#L31'>CHECK_EQ</a><span class="Delimiter">(</span>result<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">1</span><span class="Delimiter">),</span> <span class="Constant">&quot;def&quot;</span><span class="Delimiter">);</span>
 <span id="L92" class="LineNr"> 92 </span><span class="Delimiter">}</span>
 <span id="L93" class="LineNr"> 93 </span>
 <span id="L94" class="LineNr"> 94 </span><span class="Normal">void</span> <a href='003trace.test.cc.html#L94'>test_split_works2</a><span class="Delimiter">()</span> <span class="Delimiter">{</span>
-<span id="L95" class="LineNr"> 95 </span>  vector&lt;string&gt; result = <a href='003trace.cc.html#L343'>split</a><span class="Delimiter">(</span><span class="Constant">&quot;abc,def,ghi&quot;</span><span class="Delimiter">,</span> <span class="Constant">&quot;,&quot;</span><span class="Delimiter">);</span>
+<span id="L95" class="LineNr"> 95 </span>  vector&lt;string&gt; result = <a href='003trace.cc.html#L345'>split</a><span class="Delimiter">(</span><span class="Constant">&quot;abc,def,ghi&quot;</span><span class="Delimiter">,</span> <span class="Constant">&quot;,&quot;</span><span class="Delimiter">);</span>
 <span id="L96" class="LineNr"> 96 </span>  <a href='002test.cc.html#L31'>CHECK_EQ</a><span class="Delimiter">(</span>result<span class="Delimiter">.</span>size<span class="Delimiter">(),</span> <span class="Constant">3</span><span class="Delimiter">);</span>
 <span id="L97" class="LineNr"> 97 </span>  <a href='002test.cc.html#L31'>CHECK_EQ</a><span class="Delimiter">(</span>result<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">),</span> <span class="Constant">&quot;abc&quot;</span><span class="Delimiter">);</span>
 <span id="L98" class="LineNr"> 98 </span>  <a href='002test.cc.html#L31'>CHECK_EQ</a><span class="Delimiter">(</span>result<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">1</span><span class="Delimiter">),</span> <span class="Constant">&quot;def&quot;</span><span class="Delimiter">);</span>
@@ -158,7 +158,7 @@ if ('onhashchange' in window) {
 <span id="L100" class="LineNr">100 </span><span class="Delimiter">}</span>
 <span id="L101" class="LineNr">101 </span>
 <span id="L102" class="LineNr">102 </span><span class="Normal">void</span> <a href='003trace.test.cc.html#L102'>test_split_handles_multichar_delim</a><span class="Delimiter">()</span> <span class="Delimiter">{</span>
-<span id="L103" class="LineNr">103 </span>  vector&lt;string&gt; result = <a href='003trace.cc.html#L343'>split</a><span class="Delimiter">(</span><span class="Constant">&quot;abc,,def,,ghi&quot;</span><span class="Delimiter">,</span> <span class="Constant">&quot;,,&quot;</span><span class="Delimiter">);</span>
+<span id="L103" class="LineNr">103 </span>  vector&lt;string&gt; result = <a href='003trace.cc.html#L345'>split</a><span class="Delimiter">(</span><span class="Constant">&quot;abc,,def,,ghi&quot;</span><span class="Delimiter">,</span> <span class="Constant">&quot;,,&quot;</span><span class="Delimiter">);</span>
 <span id="L104" class="LineNr">104 </span>  <a href='002test.cc.html#L31'>CHECK_EQ</a><span class="Delimiter">(</span>result<span class="Delimiter">.</span>size<span class="Delimiter">(),</span> <span class="Constant">3</span><span class="Delimiter">);</span>
 <span id="L105" class="LineNr">105 </span>  <a href='002test.cc.html#L31'>CHECK_EQ</a><span class="Delimiter">(</span>result<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">),</span> <span class="Constant">&quot;abc&quot;</span><span class="Delimiter">);</span>
 <span id="L106" class="LineNr">106 </span>  <a href='002test.cc.html#L31'>CHECK_EQ</a><span class="Delimiter">(</span>result<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">1</span><span class="Delimiter">),</span> <span class="Constant">&quot;def&quot;</span><span class="Delimiter">);</span>
@@ -166,19 +166,19 @@ if ('onhashchange' in window) {
 <span id="L108" class="LineNr">108 </span><span class="Delimiter">}</span>
 <span id="L109" class="LineNr">109 </span>
 <span id="L110" class="LineNr">110 </span><span class="Normal">void</span> <a href='003trace.test.cc.html#L110'>test_trim</a><span class="Delimiter">()</span> <span class="Delimiter">{</span>
-<span id="L111" class="LineNr">111 </span>  <a href='002test.cc.html#L31'>CHECK_EQ</a><span class="Delimiter">(</span><a href='003trace.cc.html#L367'>trim</a><span class="Delimiter">(</span><span class="Constant">&quot;&quot;</span><span class="Delimiter">),</span> <span class="Constant">&quot;&quot;</span><span class="Delimiter">);</span>
-<span id="L112" class="LineNr">112 </span>  <a href='002test.cc.html#L31'>CHECK_EQ</a><span class="Delimiter">(</span><a href='003trace.cc.html#L367'>trim</a><span class="Delimiter">(</span><span class="Constant">&quot; &quot;</span><span class="Delimiter">),</span> <span class="Constant">&quot;&quot;</span><span class="Delimiter">);</span>
-<span id="L113" class="LineNr">113 </span>  <a href='002test.cc.html#L31'>CHECK_EQ</a><span class="Delimiter">(</span><a href='003trace.cc.html#L367'>trim</a><span class="Delimiter">(</span><span class="Constant">&quot;  &quot;</span><span class="Delimiter">),</span> <span class="Constant">&quot;&quot;</span><span class="Delimiter">);</span>
-<span id="L114" class="LineNr">114 </span>  <a href='002test.cc.html#L31'>CHECK_EQ</a><span class="Delimiter">(</span><a href='003trace.cc.html#L367'>trim</a><span class="Delimiter">(</span><span class="Constant">&quot;a&quot;</span><span class="Delimiter">),</span> <span class="Constant">&quot;a&quot;</span><span class="Delimiter">);</span>
-<span id="L115" class="LineNr">115 </span>  <a href='002test.cc.html#L31'>CHECK_EQ</a><span class="Delimiter">(</span><a href='003trace.cc.html#L367'>trim</a><span class="Delimiter">(</span><span class="Constant">&quot; a&quot;</span><span class="Delimiter">),</span> <span class="Constant">&quot;a&quot;</span><span class="Delimiter">);</span>
-<span id="L116" class="LineNr">116 </span>  <a href='002test.cc.html#L31'>CHECK_EQ</a><span class="Delimiter">(</span><a href='003trace.cc.html#L367'>trim</a><span class="Delimiter">(</span><span class="Constant">&quot;  a&quot;</span><span class="Delimiter">),</span> <span class="Constant">&quot;a&quot;</span><span class="Delimiter">);</span>
-<span id="L117" class="LineNr">117 </span>  <a href='002test.cc.html#L31'>CHECK_EQ</a><span class="Delimiter">(</span><a href='003trace.cc.html#L367'>trim</a><span class="Delimiter">(</span><span class="Constant">&quot;  ab&quot;</span><span class="Delimiter">),</span> <span class="Constant">&quot;ab&quot;</span><span class="Delimiter">);</span>
-<span id="L118" class="LineNr">118 </span>  <a href='002test.cc.html#L31'>CHECK_EQ</a><span class="Delimiter">(</span><a href='003trace.cc.html#L367'>trim</a><span class="Delimiter">(</span><span class="Constant">&quot;a &quot;</span><span class="Delimiter">),</span> <span class="Constant">&quot;a&quot;</span><span class="Delimiter">);</span>
-<span id="L119" class="LineNr">119 </span>  <a href='002test.cc.html#L31'>CHECK_EQ</a><span class="Delimiter">(</span><a href='003trace.cc.html#L367'>trim</a><span class="Delimiter">(</span><span class="Constant">&quot;a  &quot;</span><span class="Delimiter">),</span> <span class="Constant">&quot;a&quot;</span><span class="Delimiter">);</span>
-<span id="L120" class="LineNr">120 </span>  <a href='002test.cc.html#L31'>CHECK_EQ</a><span class="Delimiter">(</span><a href='003trace.cc.html#L367'>trim</a><span class="Delimiter">(</span><span class="Constant">&quot;ab  &quot;</span><span class="Delimiter">),</span> <span class="Constant">&quot;ab&quot;</span><span class="Delimiter">);</span>
-<span id="L121" class="LineNr">121 </span>  <a href='002test.cc.html#L31'>CHECK_EQ</a><span class="Delimiter">(</span><a href='003trace.cc.html#L367'>trim</a><span class="Delimiter">(</span><span class="Constant">&quot; a &quot;</span><span class="Delimiter">),</span> <span class="Constant">&quot;a&quot;</span><span class="Delimiter">);</span>
-<span id="L122" class="LineNr">122 </span>  <a href='002test.cc.html#L31'>CHECK_EQ</a><span class="Delimiter">(</span><a href='003trace.cc.html#L367'>trim</a><span class="Delimiter">(</span><span class="Constant">&quot;  a  &quot;</span><span class="Delimiter">),</span> <span class="Constant">&quot;a&quot;</span><span class="Delimiter">);</span>
-<span id="L123" class="LineNr">123 </span>  <a href='002test.cc.html#L31'>CHECK_EQ</a><span class="Delimiter">(</span><a href='003trace.cc.html#L367'>trim</a><span class="Delimiter">(</span><span class="Constant">&quot;  ab  &quot;</span><span class="Delimiter">),</span> <span class="Constant">&quot;ab&quot;</span><span class="Delimiter">);</span>
+<span id="L111" class="LineNr">111 </span>  <a href='002test.cc.html#L31'>CHECK_EQ</a><span class="Delimiter">(</span><a href='003trace.cc.html#L369'>trim</a><span class="Delimiter">(</span><span class="Constant">&quot;&quot;</span><span class="Delimiter">),</span> <span class="Constant">&quot;&quot;</span><span class="Delimiter">);</span>
+<span id="L112" class="LineNr">112 </span>  <a href='002test.cc.html#L31'>CHECK_EQ</a><span class="Delimiter">(</span><a href='003trace.cc.html#L369'>trim</a><span class="Delimiter">(</span><span class="Constant">&quot; &quot;</span><span class="Delimiter">),</span> <span class="Constant">&quot;&quot;</span><span class="Delimiter">);</span>
+<span id="L113" class="LineNr">113 </span>  <a href='002test.cc.html#L31'>CHECK_EQ</a><span class="Delimiter">(</span><a href='003trace.cc.html#L369'>trim</a><span class="Delimiter">(</span><span class="Constant">&quot;  &quot;</span><span class="Delimiter">),</span> <span class="Constant">&quot;&quot;</span><span class="Delimiter">);</span>
+<span id="L114" class="LineNr">114 </span>  <a href='002test.cc.html#L31'>CHECK_EQ</a><span class="Delimiter">(</span><a href='003trace.cc.html#L369'>trim</a><span class="Delimiter">(</span><span class="Constant">&quot;a&quot;</span><span class="Delimiter">),</span> <span class="Constant">&quot;a&quot;</span><span class="Delimiter">);</span>
+<span id="L115" class="LineNr">115 </span>  <a href='002test.cc.html#L31'>CHECK_EQ</a><span class="Delimiter">(</span><a href='003trace.cc.html#L369'>trim</a><span class="Delimiter">(</span><span class="Constant">&quot; a&quot;</span><span class="Delimiter">),</span> <span class="Constant">&quot;a&quot;</span><span class="Delimiter">);</span>
+<span id="L116" class="LineNr">116 </span>  <a href='002test.cc.html#L31'>CHECK_EQ</a><span class="Delimiter">(</span><a href='003trace.cc.html#L369'>trim</a><span class="Delimiter">(</span><span class="Constant">&quot;  a&quot;</span><span class="Delimiter">),</span> <span class="Constant">&quot;a&quot;</span><span class="Delimiter">);</span>
+<span id="L117" class="LineNr">117 </span>  <a href='002test.cc.html#L31'>CHECK_EQ</a><span class="Delimiter">(</span><a href='003trace.cc.html#L369'>trim</a><span class="Delimiter">(</span><span class="Constant">&quot;  ab&quot;</span><span class="Delimiter">),</span> <span class="Constant">&quot;ab&quot;</span><span class="Delimiter">);</span>
+<span id="L118" class="LineNr">118 </span>  <a href='002test.cc.html#L31'>CHECK_EQ</a><span class="Delimiter">(</span><a href='003trace.cc.html#L369'>trim</a><span class="Delimiter">(</span><span class="Constant">&quot;a &quot;</span><span class="Delimiter">),</span> <span class="Constant">&quot;a&quot;</span><span class="Delimiter">);</span>
+<span id="L119" class="LineNr">119 </span>  <a href='002test.cc.html#L31'>CHECK_EQ</a><span class="Delimiter">(</span><a href='003trace.cc.html#L369'>trim</a><span class="Delimiter">(</span><span class="Constant">&quot;a  &quot;</span><span class="Delimiter">),</span> <span class="Constant">&quot;a&quot;</span><span class="Delimiter">);</span>
+<span id="L120" class="LineNr">120 </span>  <a href='002test.cc.html#L31'>CHECK_EQ</a><span class="Delimiter">(</span><a href='003trace.cc.html#L369'>trim</a><span class="Delimiter">(</span><span class="Constant">&quot;ab  &quot;</span><span class="Delimiter">),</span> <span class="Constant">&quot;ab&quot;</span><span class="Delimiter">);</span>
+<span id="L121" class="LineNr">121 </span>  <a href='002test.cc.html#L31'>CHECK_EQ</a><span class="Delimiter">(</span><a href='003trace.cc.html#L369'>trim</a><span class="Delimiter">(</span><span class="Constant">&quot; a &quot;</span><span class="Delimiter">),</span> <span class="Constant">&quot;a&quot;</span><span class="Delimiter">);</span>
+<span id="L122" class="LineNr">122 </span>  <a href='002test.cc.html#L31'>CHECK_EQ</a><span class="Delimiter">(</span><a href='003trace.cc.html#L369'>trim</a><span class="Delimiter">(</span><span class="Constant">&quot;  a  &quot;</span><span class="Delimiter">),</span> <span class="Constant">&quot;a&quot;</span><span class="Delimiter">);</span>
+<span id="L123" class="LineNr">123 </span>  <a href='002test.cc.html#L31'>CHECK_EQ</a><span class="Delimiter">(</span><a href='003trace.cc.html#L369'>trim</a><span class="Delimiter">(</span><span class="Constant">&quot;  ab  &quot;</span><span class="Delimiter">),</span> <span class="Constant">&quot;ab&quot;</span><span class="Delimiter">);</span>
 <span id="L124" class="LineNr">124 </span><span class="Delimiter">}</span>
 </pre>
 </body>
diff --git a/html/010vm.cc.html b/html/010vm.cc.html
index bc742c78..f67b4efa 100644
--- a/html/010vm.cc.html
+++ b/html/010vm.cc.html
@@ -211,7 +211,7 @@ if ('onhashchange' in window) {
 <span id="L147" class="LineNr">147 </span>  <span class="Comment">// End Mu Types Initialization</span>
 <span id="L148" class="LineNr">148 </span><span class="Delimiter">}</span>
 <span id="L149" class="LineNr">149 </span><span class="Normal">void</span> <a href='010vm.cc.html#L149'>teardown_types</a><span class="Delimiter">()</span> <span class="Delimiter">{</span>
-<span id="L150" class="LineNr">150 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span>map&lt;type_ordinal<span class="Delimiter">,</span> type_info&gt;::iterator p = Type<span class="Delimiter">.</span>begin<span class="Delimiter">();</span>  p != Type<span class="Delimiter">.</span><a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>  ++p<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L150" class="LineNr">150 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span>map&lt;type_ordinal<span class="Delimiter">,</span> type_info&gt;::iterator p = Type<span class="Delimiter">.</span>begin<span class="Delimiter">();</span>  p != Type<span class="Delimiter">.</span><a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>  ++p<span class="Delimiter">)</span> <span class="Delimiter">{</span>
 <span id="L151" class="LineNr">151 </span>  <span class="Conceal">¦</span> <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> i = <span class="Constant">0</span><span class="Delimiter">;</span>  i &lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>p<span class="Delimiter">-&gt;</span>second<span class="Delimiter">.</span>elements<span class="Delimiter">);</span>  ++i<span class="Delimiter">)</span>
 <span id="L152" class="LineNr">152 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> p<span class="Delimiter">-&gt;</span>second<span class="Delimiter">.</span>elements<span class="Delimiter">.</span><a href='050scenario.cc.html#L60'>clear</a><span class="Delimiter">();</span>
 <span id="L153" class="LineNr">153 </span>  <span class="Delimiter">}</span>
@@ -647,7 +647,7 @@ if ('onhashchange' in window) {
 <span id="L583" class="LineNr">583 </span><span class="Delimiter">}</span>
 <span id="L584" class="LineNr">584 </span>
 <span id="L585" class="LineNr">585 </span><span class="Normal">void</span> dump_memory<span class="Delimiter">()</span> <span class="Delimiter">{</span>
-<span id="L586" class="LineNr">586 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span>map&lt;<span class="Normal">int</span><span class="Delimiter">,</span> <span class="Normal">double</span>&gt;::iterator p = Memory<span class="Delimiter">.</span>begin<span class="Delimiter">();</span>  p != Memory<span class="Delimiter">.</span><a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>  ++p<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L586" class="LineNr">586 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span>map&lt;<span class="Normal">int</span><span class="Delimiter">,</span> <span class="Normal">double</span>&gt;::iterator p = Memory<span class="Delimiter">.</span>begin<span class="Delimiter">();</span>  p != Memory<span class="Delimiter">.</span><a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>  ++p<span class="Delimiter">)</span> <span class="Delimiter">{</span>
 <span id="L587" class="LineNr">587 </span>  <span class="Conceal">¦</span> cout &lt;&lt; p<span class="Delimiter">-&gt;</span>first &lt;&lt; <span class="Constant">&quot;: &quot;</span> &lt;&lt; no_scientific<span class="Delimiter">(</span>p<span class="Delimiter">-&gt;</span>second<span class="Delimiter">)</span> &lt;&lt; <span class="cSpecial">'\n'</span><span class="Delimiter">;</span>
 <span id="L588" class="LineNr">588 </span>  <span class="Delimiter">}</span>
 <span id="L589" class="LineNr">589 </span><span class="Delimiter">}</span>
@@ -754,11 +754,11 @@ if ('onhashchange' in window) {
 <span id="L690" class="LineNr">690 </span>string <a href='028call_return.cc.html#L163'>to_string</a><span class="Delimiter">(</span><span class="Normal">const</span> string_tree* property<span class="Delimiter">)</span> <span class="Delimiter">{</span>
 <span id="L691" class="LineNr">691 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!property<span class="Delimiter">)</span> <span class="Identifier">return</span> <span class="Constant">&quot;()&quot;</span><span class="Delimiter">;</span>
 <span id="L692" class="LineNr">692 </span>  ostringstream out<span class="Delimiter">;</span>
-<span id="L693" class="LineNr">693 </span>  dump<span class="Delimiter">(</span>property<span class="Delimiter">,</span> out<span class="Delimiter">);</span>
+<span id="L693" class="LineNr">693 </span>  <a href='003trace.cc.html#L120'>dump</a><span class="Delimiter">(</span>property<span class="Delimiter">,</span> out<span class="Delimiter">);</span>
 <span id="L694" class="LineNr">694 </span>  <span class="Identifier">return</span> out<span class="Delimiter">.</span>str<span class="Delimiter">();</span>
 <span id="L695" class="LineNr">695 </span><span class="Delimiter">}</span>
 <span id="L696" class="LineNr">696 </span>
-<span id="L697" class="LineNr">697 </span><span class="Normal">void</span> dump<span class="Delimiter">(</span><span class="Normal">const</span> string_tree* x<span class="Delimiter">,</span> ostream&amp; out<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L697" class="LineNr">697 </span><span class="Normal">void</span> <a href='003trace.cc.html#L120'>dump</a><span class="Delimiter">(</span><span class="Normal">const</span> string_tree* x<span class="Delimiter">,</span> ostream&amp; out<span class="Delimiter">)</span> <span class="Delimiter">{</span>
 <span id="L698" class="LineNr">698 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!x<span class="Delimiter">)</span> <span class="Identifier">return</span><span class="Delimiter">;</span>
 <span id="L699" class="LineNr">699 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>x<span class="Delimiter">-&gt;</span>atom<span class="Delimiter">)</span> <span class="Delimiter">{</span>
 <span id="L700" class="LineNr">700 </span>  <span class="Conceal">¦</span> out &lt;&lt; <span class="Constant">'&quot;'</span> &lt;&lt; x<span class="Delimiter">-&gt;</span>value &lt;&lt; <span class="Constant">'&quot;'</span><span class="Delimiter">;</span>
@@ -767,14 +767,14 @@ if ('onhashchange' in window) {
 <span id="L703" class="LineNr">703 </span>  out &lt;&lt; <span class="Constant">'('</span><span class="Delimiter">;</span>
 <span id="L704" class="LineNr">704 </span>  <span class="Normal">const</span> string_tree* curr = x<span class="Delimiter">;</span>
 <span id="L705" class="LineNr">705 </span>  <span class="Normal">while</span> <span class="Delimiter">(</span>curr &amp;&amp; !curr<span class="Delimiter">-&gt;</span>atom<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L706" class="LineNr">706 </span>  <span class="Conceal">¦</span> dump<span class="Delimiter">(</span>curr<span class="Delimiter">-&gt;</span>left<span class="Delimiter">,</span> out<span class="Delimiter">);</span>
+<span id="L706" class="LineNr">706 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L120'>dump</a><span class="Delimiter">(</span>curr<span class="Delimiter">-&gt;</span>left<span class="Delimiter">,</span> out<span class="Delimiter">);</span>
 <span id="L707" class="LineNr">707 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>curr<span class="Delimiter">-&gt;</span>right<span class="Delimiter">)</span> out &lt;&lt; <span class="Constant">' '</span><span class="Delimiter">;</span>
 <span id="L708" class="LineNr">708 </span>  <span class="Conceal">¦</span> curr = curr<span class="Delimiter">-&gt;</span>right<span class="Delimiter">;</span>
 <span id="L709" class="LineNr">709 </span>  <span class="Delimiter">}</span>
 <span id="L710" class="LineNr">710 </span>  <span class="Comment">// check for dotted list; should never happen</span>
 <span id="L711" class="LineNr">711 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>curr<span class="Delimiter">)</span> <span class="Delimiter">{</span>
 <span id="L712" class="LineNr">712 </span>  <span class="Conceal">¦</span> out &lt;&lt; <span class="Constant">&quot;. &quot;</span><span class="Delimiter">;</span>
-<span id="L713" class="LineNr">713 </span>  <span class="Conceal">¦</span> dump<span class="Delimiter">(</span>curr<span class="Delimiter">,</span> out<span class="Delimiter">);</span>
+<span id="L713" class="LineNr">713 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L120'>dump</a><span class="Delimiter">(</span>curr<span class="Delimiter">,</span> out<span class="Delimiter">);</span>
 <span id="L714" class="LineNr">714 </span>  <span class="Delimiter">}</span>
 <span id="L715" class="LineNr">715 </span>  out &lt;&lt; <span class="Constant">')'</span><span class="Delimiter">;</span>
 <span id="L716" class="LineNr">716 </span><span class="Delimiter">}</span>
@@ -782,32 +782,32 @@ if ('onhashchange' in window) {
 <span id="L718" class="LineNr">718 </span>string <a href='028call_return.cc.html#L163'>to_string</a><span class="Delimiter">(</span><span class="Normal">const</span> type_tree* type<span class="Delimiter">)</span> <span class="Delimiter">{</span>
 <span id="L719" class="LineNr">719 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>type == <span class="Constant">NULL</span><span class="Delimiter">)</span> <span class="Identifier">return</span> <span class="Constant">&quot;()&quot;</span><span class="Delimiter">;</span>
 <span id="L720" class="LineNr">720 </span>  ostringstream out<span class="Delimiter">;</span>
-<span id="L721" class="LineNr">721 </span>  dump<span class="Delimiter">(</span>type<span class="Delimiter">,</span> out<span class="Delimiter">);</span>
+<span id="L721" class="LineNr">721 </span>  <a href='003trace.cc.html#L120'>dump</a><span class="Delimiter">(</span>type<span class="Delimiter">,</span> out<span class="Delimiter">);</span>
 <span id="L722" class="LineNr">722 </span>  <span class="Identifier">return</span> out<span class="Delimiter">.</span>str<span class="Delimiter">();</span>
 <span id="L723" class="LineNr">723 </span><span class="Delimiter">}</span>
 <span id="L724" class="LineNr">724 </span>
-<span id="L725" class="LineNr">725 </span><span class="Normal">void</span> dump<span class="Delimiter">(</span><span class="Normal">const</span> type_tree* x<span class="Delimiter">,</span> ostream&amp; out<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L725" class="LineNr">725 </span><span class="Normal">void</span> <a href='003trace.cc.html#L120'>dump</a><span class="Delimiter">(</span><span class="Normal">const</span> type_tree* x<span class="Delimiter">,</span> ostream&amp; out<span class="Delimiter">)</span> <span class="Delimiter">{</span>
 <span id="L726" class="LineNr">726 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!x<span class="Delimiter">)</span> <span class="Identifier">return</span><span class="Delimiter">;</span>
 <span id="L727" class="LineNr">727 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>x<span class="Delimiter">-&gt;</span>atom<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L728" class="LineNr">728 </span>  <span class="Conceal">¦</span> dump<span class="Delimiter">(</span>x<span class="Delimiter">-&gt;</span>value<span class="Delimiter">,</span> out<span class="Delimiter">);</span>
+<span id="L728" class="LineNr">728 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L120'>dump</a><span class="Delimiter">(</span>x<span class="Delimiter">-&gt;</span>value<span class="Delimiter">,</span> out<span class="Delimiter">);</span>
 <span id="L729" class="LineNr">729 </span>  <span class="Conceal">¦</span> <span class="Identifier">return</span><span class="Delimiter">;</span>
 <span id="L730" class="LineNr">730 </span>  <span class="Delimiter">}</span>
 <span id="L731" class="LineNr">731 </span>  out &lt;&lt; <span class="Constant">'('</span><span class="Delimiter">;</span>
 <span id="L732" class="LineNr">732 </span>  <span class="Normal">const</span> type_tree* curr = x<span class="Delimiter">;</span>
 <span id="L733" class="LineNr">733 </span>  <span class="Normal">while</span> <span class="Delimiter">(</span>curr &amp;&amp; !curr<span class="Delimiter">-&gt;</span>atom<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L734" class="LineNr">734 </span>  <span class="Conceal">¦</span> dump<span class="Delimiter">(</span>curr<span class="Delimiter">-&gt;</span>left<span class="Delimiter">,</span> out<span class="Delimiter">);</span>
+<span id="L734" class="LineNr">734 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L120'>dump</a><span class="Delimiter">(</span>curr<span class="Delimiter">-&gt;</span>left<span class="Delimiter">,</span> out<span class="Delimiter">);</span>
 <span id="L735" class="LineNr">735 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>curr<span class="Delimiter">-&gt;</span>right<span class="Delimiter">)</span> out &lt;&lt; <span class="Constant">' '</span><span class="Delimiter">;</span>
 <span id="L736" class="LineNr">736 </span>  <span class="Conceal">¦</span> curr = curr<span class="Delimiter">-&gt;</span>right<span class="Delimiter">;</span>
 <span id="L737" class="LineNr">737 </span>  <span class="Delimiter">}</span>
 <span id="L738" class="LineNr">738 </span>  <span class="Comment">// check for dotted list; should never happen</span>
 <span id="L739" class="LineNr">739 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>curr<span class="Delimiter">)</span> <span class="Delimiter">{</span>
 <span id="L740" class="LineNr">740 </span>  <span class="Conceal">¦</span> out &lt;&lt; <span class="Constant">&quot;. &quot;</span><span class="Delimiter">;</span>
-<span id="L741" class="LineNr">741 </span>  <span class="Conceal">¦</span> dump<span class="Delimiter">(</span>curr<span class="Delimiter">,</span> out<span class="Delimiter">);</span>
+<span id="L741" class="LineNr">741 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L120'>dump</a><span class="Delimiter">(</span>curr<span class="Delimiter">,</span> out<span class="Delimiter">);</span>
 <span id="L742" class="LineNr">742 </span>  <span class="Delimiter">}</span>
 <span id="L743" class="LineNr">743 </span>  out &lt;&lt; <span class="Constant">')'</span><span class="Delimiter">;</span>
 <span id="L744" class="LineNr">744 </span><span class="Delimiter">}</span>
 <span id="L745" class="LineNr">745 </span>
-<span id="L746" class="LineNr">746 </span><span class="Normal">void</span> dump<span class="Delimiter">(</span><a href='010vm.cc.html#L123'>type_ordinal</a> type<span class="Delimiter">,</span> ostream&amp; out<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L746" class="LineNr">746 </span><span class="Normal">void</span> <a href='003trace.cc.html#L120'>dump</a><span class="Delimiter">(</span><a href='010vm.cc.html#L123'>type_ordinal</a> type<span class="Delimiter">,</span> ostream&amp; out<span class="Delimiter">)</span> <span class="Delimiter">{</span>
 <span id="L747" class="LineNr">747 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>contains_key<span class="Delimiter">(</span>Type<span class="Delimiter">,</span> type<span class="Delimiter">))</span>
 <span id="L748" class="LineNr">748 </span>  <span class="Conceal">¦</span> out &lt;&lt; get<span class="Delimiter">(</span>Type<span class="Delimiter">,</span> type<span class="Delimiter">).</span>name<span class="Delimiter">;</span>
 <span id="L749" class="LineNr">749 </span>  <span class="Normal">else</span>
diff --git a/html/011load.cc.html b/html/011load.cc.html
index bfc99952..88c1c8ba 100644
--- a/html/011load.cc.html
+++ b/html/011load.cc.html
@@ -107,7 +107,7 @@ if ('onhashchange' in window) {
 <span id="L43" class="LineNr"> 43 </span>  <span class="Conceal">¦</span> <span class="Delimiter">}</span>
 <span id="L44" class="LineNr"> 44 </span>  <span class="Conceal">¦</span> <span class="Comment">// End Command Handlers</span>
 <span id="L45" class="LineNr"> 45 </span>  <span class="Conceal">¦</span> <span class="Normal">else</span> <span class="Delimiter">{</span>
-<span id="L46" class="LineNr"> 46 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <span class="Constant">&quot;unknown top-level command: &quot;</span> &lt;&lt; command &lt;&lt; <span class="cSpecial">'\n'</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L46" class="LineNr"> 46 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <span class="Constant">&quot;unknown top-level command: &quot;</span> &lt;&lt; command &lt;&lt; <span class="cSpecial">'\n'</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L47" class="LineNr"> 47 </span>  <span class="Conceal">¦</span> <span class="Delimiter">}</span>
 <span id="L48" class="LineNr"> 48 </span>  <span class="Delimiter">}</span>
 <span id="L49" class="LineNr"> 49 </span>  <span class="Identifier">return</span> result<span class="Delimiter">;</span>
@@ -119,21 +119,21 @@ if ('onhashchange' in window) {
 <span id="L55" class="LineNr"> 55 </span>  result<span class="Delimiter">.</span>name = <a href='011load.cc.html#L167'>next_word</a><span class="Delimiter">(</span>in<span class="Delimiter">);</span>
 <span id="L56" class="LineNr"> 56 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>result<span class="Delimiter">.</span>name<span class="Delimiter">.</span>empty<span class="Delimiter">())</span> <span class="Delimiter">{</span>
 <span id="L57" class="LineNr"> 57 </span>  <span class="Conceal">¦</span> assert<span class="Delimiter">(</span>!has_data<span class="Delimiter">(</span>in<span class="Delimiter">));</span>
-<span id="L58" class="LineNr"> 58 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <span class="Constant">&quot;file ended with 'recipe'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L58" class="LineNr"> 58 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <span class="Constant">&quot;file ended with 'recipe'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L59" class="LineNr"> 59 </span>  <span class="Conceal">¦</span> <span class="Identifier">return</span> -<span class="Constant">1</span><span class="Delimiter">;</span>
 <span id="L60" class="LineNr"> 60 </span>  <span class="Delimiter">}</span>
 <span id="L61" class="LineNr"> 61 </span>  <span class="Comment">// End Load Recipe Name</span>
 <span id="L62" class="LineNr"> 62 </span>  skip_whitespace_but_not_newline<span class="Delimiter">(</span>in<span class="Delimiter">);</span>
 <span id="L63" class="LineNr"> 63 </span>  <span class="Comment">// End Recipe Refinements</span>
 <span id="L64" class="LineNr"> 64 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>result<span class="Delimiter">.</span>name<span class="Delimiter">.</span>empty<span class="Delimiter">())</span>
-<span id="L65" class="LineNr"> 65 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <span class="Constant">&quot;empty result.name</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
-<span id="L66" class="LineNr"> 66 </span>  <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">9991</span><span class="Delimiter">,</span> <span class="Constant">&quot;parse&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;--- defining &quot;</span> &lt;&lt; result<span class="Delimiter">.</span>name &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L65" class="LineNr"> 65 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <span class="Constant">&quot;empty result.name</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
+<span id="L66" class="LineNr"> 66 </span>  <a href='003trace.cc.html#L167'>trace</a><span class="Delimiter">(</span><span class="Constant">9991</span><span class="Delimiter">,</span> <span class="Constant">&quot;parse&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;--- defining &quot;</span> &lt;&lt; result<span class="Delimiter">.</span>name &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L67" class="LineNr"> 67 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!contains_key<span class="Delimiter">(</span>Recipe_ordinal<span class="Delimiter">,</span> result<span class="Delimiter">.</span>name<span class="Delimiter">))</span>
 <span id="L68" class="LineNr"> 68 </span>  <span class="Conceal">¦</span> <a href='001help.cc.html#L221'>put</a><span class="Delimiter">(</span>Recipe_ordinal<span class="Delimiter">,</span> result<span class="Delimiter">.</span>name<span class="Delimiter">,</span> Next_recipe_ordinal++<span class="Delimiter">);</span>
-<span id="L69" class="LineNr"> 69 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>Recipe<span class="Delimiter">.</span>find<span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe_ordinal<span class="Delimiter">,</span> result<span class="Delimiter">.</span>name<span class="Delimiter">))</span> != Recipe<span class="Delimiter">.</span><a href='003trace.cc.html#L197'>end</a><span class="Delimiter">())</span> <span class="Delimiter">{</span>
-<span id="L70" class="LineNr"> 70 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">9991</span><span class="Delimiter">,</span> <span class="Constant">&quot;parse&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;already exists&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L69" class="LineNr"> 69 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>Recipe<span class="Delimiter">.</span>find<span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe_ordinal<span class="Delimiter">,</span> result<span class="Delimiter">.</span>name<span class="Delimiter">))</span> != Recipe<span class="Delimiter">.</span><a href='003trace.cc.html#L203'>end</a><span class="Delimiter">())</span> <span class="Delimiter">{</span>
+<span id="L70" class="LineNr"> 70 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L167'>trace</a><span class="Delimiter">(</span><span class="Constant">9991</span><span class="Delimiter">,</span> <span class="Constant">&quot;parse&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;already exists&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L71" class="LineNr"> 71 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span><a href='011load.cc.html#L378'>should_check_for_redefine</a><span class="Delimiter">(</span>result<span class="Delimiter">.</span>name<span class="Delimiter">))</span>
-<span id="L72" class="LineNr"> 72 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <span class="Constant">&quot;redefining <a href='010vm.cc.html#L19'>recipe</a> &quot;</span> &lt;&lt; result<span class="Delimiter">.</span>name &lt;&lt; <span class="Constant">&quot;</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L72" class="LineNr"> 72 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <span class="Constant">&quot;redefining <a href='010vm.cc.html#L19'>recipe</a> &quot;</span> &lt;&lt; result<span class="Delimiter">.</span>name &lt;&lt; <span class="Constant">&quot;</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L73" class="LineNr"> 73 </span>  <span class="Conceal">¦</span> Recipe<span class="Delimiter">.</span>erase<span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe_ordinal<span class="Delimiter">,</span> result<span class="Delimiter">.</span>name<span class="Delimiter">));</span>
 <span id="L74" class="LineNr"> 74 </span>  <span class="Delimiter">}</span>
 <span id="L75" class="LineNr"> 75 </span>  <a href='011load.cc.html#L81'>slurp_body</a><span class="Delimiter">(</span>in<span class="Delimiter">,</span> result<span class="Delimiter">);</span>
@@ -146,13 +146,13 @@ if ('onhashchange' in window) {
 <span id="L82" class="LineNr"> 82 </span>  in &gt;&gt; std::noskipws<span class="Delimiter">;</span>
 <span id="L83" class="LineNr"> 83 </span>  skip_whitespace_but_not_newline<span class="Delimiter">(</span>in<span class="Delimiter">);</span>
 <span id="L84" class="LineNr"> 84 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>in<span class="Delimiter">.</span>get<span class="Delimiter">()</span> != <span class="Constant">'['</span><span class="Delimiter">)</span>
-<span id="L85" class="LineNr"> 85 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; result<span class="Delimiter">.</span>name &lt;&lt; <span class="Constant">&quot;: <a href='010vm.cc.html#L19'>recipe</a> body must begin with '['</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L85" class="LineNr"> 85 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; result<span class="Delimiter">.</span>name &lt;&lt; <span class="Constant">&quot;: <a href='010vm.cc.html#L19'>recipe</a> body must begin with '['</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L86" class="LineNr"> 86 </span>  <a href='011load.cc.html#L209'>skip_whitespace_and_comments</a><span class="Delimiter">(</span>in<span class="Delimiter">);</span>  <span class="Comment">// permit trailing comment after '['</span>
 <span id="L87" class="LineNr"> 87 </span>  <a href='010vm.cc.html#L32'>instruction</a> curr<span class="Delimiter">;</span>
 <span id="L88" class="LineNr"> 88 </span>  <span class="Normal">while</span> <span class="Delimiter">(</span><a href='011load.cc.html#L96'>next_instruction</a><span class="Delimiter">(</span>in<span class="Delimiter">,</span> &amp;curr<span class="Delimiter">))</span> <span class="Delimiter">{</span>
 <span id="L89" class="LineNr"> 89 </span>  <span class="Conceal">¦</span> curr<span class="Delimiter">.</span>original_string = to_original_string<span class="Delimiter">(</span>curr<span class="Delimiter">);</span>
 <span id="L90" class="LineNr"> 90 </span>  <span class="Conceal">¦</span> <span class="Comment">// End Rewrite Instruction(curr, recipe result)</span>
-<span id="L91" class="LineNr"> 91 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">9992</span><span class="Delimiter">,</span> <span class="Constant">&quot;load&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;after rewriting: &quot;</span> &lt;&lt; <a href='028call_return.cc.html#L163'>to_string</a><span class="Delimiter">(</span>curr<span class="Delimiter">)</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L91" class="LineNr"> 91 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L167'>trace</a><span class="Delimiter">(</span><span class="Constant">9992</span><span class="Delimiter">,</span> <span class="Constant">&quot;load&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;after rewriting: &quot;</span> &lt;&lt; <a href='028call_return.cc.html#L163'>to_string</a><span class="Delimiter">(</span>curr<span class="Delimiter">)</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L92" class="LineNr"> 92 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>!curr<span class="Delimiter">.</span>is_empty<span class="Delimiter">())</span> result<span class="Delimiter">.</span>steps<span class="Delimiter">.</span>push_back<span class="Delimiter">(</span>curr<span class="Delimiter">);</span>
 <span id="L93" class="LineNr"> 93 </span>  <span class="Delimiter">}</span>
 <span id="L94" class="LineNr"> 94 </span><span class="Delimiter">}</span>
@@ -161,7 +161,7 @@ if ('onhashchange' in window) {
 <span id="L97" class="LineNr"> 97 </span>  curr<span class="Delimiter">-&gt;</span><a href='050scenario.cc.html#L60'>clear</a><span class="Delimiter">();</span>
 <span id="L98" class="LineNr"> 98 </span>  <a href='011load.cc.html#L209'>skip_whitespace_and_comments</a><span class="Delimiter">(</span>in<span class="Delimiter">);</span>
 <span id="L99" class="LineNr"> 99 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!has_data<span class="Delimiter">(</span>in<span class="Delimiter">))</span> <span class="Delimiter">{</span>
-<span id="L100" class="LineNr">100 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <span class="Constant">&quot;incomplete <a href='010vm.cc.html#L19'>recipe</a> at <a href='003trace.cc.html#L197'>end</a> of file (0)</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L100" class="LineNr">100 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <span class="Constant">&quot;incomplete <a href='010vm.cc.html#L19'>recipe</a> at <a href='003trace.cc.html#L203'>end</a> of file (0)</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L101" class="LineNr">101 </span>  <span class="Conceal">¦</span> <span class="Identifier">return</span> <span class="Constant">false</span><span class="Delimiter">;</span>
 <span id="L102" class="LineNr">102 </span>  <span class="Delimiter">}</span>
 <span id="L103" class="LineNr">103 </span>
@@ -169,13 +169,13 @@ if ('onhashchange' in window) {
 <span id="L105" class="LineNr">105 </span>  <span class="Normal">while</span> <span class="Delimiter">(</span><a href='001help.cc.html#L239'>has_data</a><span class="Delimiter">(</span>in<span class="Delimiter">)</span> &amp;&amp; in<span class="Delimiter">.</span>peek<span class="Delimiter">()</span> != <span class="cSpecial">'\n'</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
 <span id="L106" class="LineNr">106 </span>  <span class="Conceal">¦</span> skip_whitespace_but_not_newline<span class="Delimiter">(</span>in<span class="Delimiter">);</span>
 <span id="L107" class="LineNr">107 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>!has_data<span class="Delimiter">(</span>in<span class="Delimiter">))</span> <span class="Delimiter">{</span>
-<span id="L108" class="LineNr">108 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <span class="Constant">&quot;incomplete <a href='010vm.cc.html#L19'>recipe</a> at <a href='003trace.cc.html#L197'>end</a> of file (1)</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L108" class="LineNr">108 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <span class="Constant">&quot;incomplete <a href='010vm.cc.html#L19'>recipe</a> at <a href='003trace.cc.html#L203'>end</a> of file (1)</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L109" class="LineNr">109 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Identifier">return</span> <span class="Constant">false</span><span class="Delimiter">;</span>
 <span id="L110" class="LineNr">110 </span>  <span class="Conceal">¦</span> <span class="Delimiter">}</span>
 <span id="L111" class="LineNr">111 </span>  <span class="Conceal">¦</span> string word = <a href='011load.cc.html#L167'>next_word</a><span class="Delimiter">(</span>in<span class="Delimiter">);</span>
 <span id="L112" class="LineNr">112 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>word<span class="Delimiter">.</span>empty<span class="Delimiter">())</span> <span class="Delimiter">{</span>
 <span id="L113" class="LineNr">113 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> assert<span class="Delimiter">(</span>!has_data<span class="Delimiter">(</span>in<span class="Delimiter">));</span>
-<span id="L114" class="LineNr">114 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <span class="Constant">&quot;incomplete <a href='010vm.cc.html#L19'>recipe</a> at <a href='003trace.cc.html#L197'>end</a> of file (2)</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L114" class="LineNr">114 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <span class="Constant">&quot;incomplete <a href='010vm.cc.html#L19'>recipe</a> at <a href='003trace.cc.html#L203'>end</a> of file (2)</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L115" class="LineNr">115 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Identifier">return</span> <span class="Constant">false</span><span class="Delimiter">;</span>
 <span id="L116" class="LineNr">116 </span>  <span class="Conceal">¦</span> <span class="Delimiter">}</span>
 <span id="L117" class="LineNr">117 </span>  <span class="Conceal">¦</span> words<span class="Delimiter">.</span>push_back<span class="Delimiter">(</span>word<span class="Delimiter">);</span>
@@ -188,39 +188,39 @@ if ('onhashchange' in window) {
 <span id="L124" class="LineNr">124 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>words<span class="Delimiter">)</span> == <span class="Constant">1</span> &amp;&amp; <a href='011load.cc.html#L179'>is_label_word</a><span class="Delimiter">(</span>words<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">)))</span> <span class="Delimiter">{</span>
 <span id="L125" class="LineNr">125 </span>  <span class="Conceal">¦</span> curr<span class="Delimiter">-&gt;</span>is_label = <span class="Constant">true</span><span class="Delimiter">;</span>
 <span id="L126" class="LineNr">126 </span>  <span class="Conceal">¦</span> curr<span class="Delimiter">-&gt;</span>label = words<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">);</span>
-<span id="L127" class="LineNr">127 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">9993</span><span class="Delimiter">,</span> <span class="Constant">&quot;parse&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;label: &quot;</span> &lt;&lt; curr<span class="Delimiter">-&gt;</span>label &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L127" class="LineNr">127 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L167'>trace</a><span class="Delimiter">(</span><span class="Constant">9993</span><span class="Delimiter">,</span> <span class="Constant">&quot;parse&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;label: &quot;</span> &lt;&lt; curr<span class="Delimiter">-&gt;</span>label &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L128" class="LineNr">128 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>!has_data<span class="Delimiter">(</span>in<span class="Delimiter">))</span> <span class="Delimiter">{</span>
-<span id="L129" class="LineNr">129 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <span class="Constant">&quot;incomplete <a href='010vm.cc.html#L19'>recipe</a> at <a href='003trace.cc.html#L197'>end</a> of file (3)</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L129" class="LineNr">129 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <span class="Constant">&quot;incomplete <a href='010vm.cc.html#L19'>recipe</a> at <a href='003trace.cc.html#L203'>end</a> of file (3)</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L130" class="LineNr">130 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Identifier">return</span> <span class="Constant">false</span><span class="Delimiter">;</span>
 <span id="L131" class="LineNr">131 </span>  <span class="Conceal">¦</span> <span class="Delimiter">}</span>
 <span id="L132" class="LineNr">132 </span>  <span class="Conceal">¦</span> <span class="Identifier">return</span> <span class="Constant">true</span><span class="Delimiter">;</span>
 <span id="L133" class="LineNr">133 </span>  <span class="Delimiter">}</span>
 <span id="L134" class="LineNr">134 </span>
 <span id="L135" class="LineNr">135 </span>  vector&lt;string&gt;::iterator p = words<span class="Delimiter">.</span>begin<span class="Delimiter">();</span>
-<span id="L136" class="LineNr">136 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>find<span class="Delimiter">(</span>words<span class="Delimiter">.</span>begin<span class="Delimiter">(),</span> words<span class="Delimiter">.</span><a href='003trace.cc.html#L197'>end</a><span class="Delimiter">(),</span> <span class="Constant">&quot;&lt;-&quot;</span><span class="Delimiter">)</span> != words<span class="Delimiter">.</span><a href='003trace.cc.html#L197'>end</a><span class="Delimiter">())</span> <span class="Delimiter">{</span>
+<span id="L136" class="LineNr">136 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>find<span class="Delimiter">(</span>words<span class="Delimiter">.</span>begin<span class="Delimiter">(),</span> words<span class="Delimiter">.</span><a href='003trace.cc.html#L203'>end</a><span class="Delimiter">(),</span> <span class="Constant">&quot;&lt;-&quot;</span><span class="Delimiter">)</span> != words<span class="Delimiter">.</span><a href='003trace.cc.html#L203'>end</a><span class="Delimiter">())</span> <span class="Delimiter">{</span>
 <span id="L137" class="LineNr">137 </span>  <span class="Conceal">¦</span> <span class="Normal">for</span> <span class="Delimiter">(;</span>  *p != <span class="Constant">&quot;&lt;-&quot;</span><span class="Delimiter">;</span>  ++p<span class="Delimiter">)</span>
 <span id="L138" class="LineNr">138 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> curr<span class="Delimiter">-&gt;</span>products<span class="Delimiter">.</span>push_back<span class="Delimiter">(</span>reagent<span class="Delimiter">(</span>*p<span class="Delimiter">));</span>
 <span id="L139" class="LineNr">139 </span>  <span class="Conceal">¦</span> ++p<span class="Delimiter">;</span>  <span class="Comment">// skip &lt;-</span>
 <span id="L140" class="LineNr">140 </span>  <span class="Delimiter">}</span>
 <span id="L141" class="LineNr">141 </span>
-<span id="L142" class="LineNr">142 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>p == words<span class="Delimiter">.</span><a href='003trace.cc.html#L197'>end</a><span class="Delimiter">())</span> <span class="Delimiter">{</span>
-<span id="L143" class="LineNr">143 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <span class="Constant">&quot;instruction prematurely ended with '&lt;-'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L142" class="LineNr">142 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>p == words<span class="Delimiter">.</span><a href='003trace.cc.html#L203'>end</a><span class="Delimiter">())</span> <span class="Delimiter">{</span>
+<span id="L143" class="LineNr">143 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <span class="Constant">&quot;instruction prematurely ended with '&lt;-'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L144" class="LineNr">144 </span>  <span class="Conceal">¦</span> <span class="Identifier">return</span> <span class="Constant">false</span><span class="Delimiter">;</span>
 <span id="L145" class="LineNr">145 </span>  <span class="Delimiter">}</span>
 <span id="L146" class="LineNr">146 </span>  curr<span class="Delimiter">-&gt;</span>name = *p<span class="Delimiter">;</span>  ++p<span class="Delimiter">;</span>
 <span id="L147" class="LineNr">147 </span>  <span class="Comment">// curr-&gt;operation will be set at transform time</span>
 <span id="L148" class="LineNr">148 </span>
-<span id="L149" class="LineNr">149 </span>  <span class="Normal">for</span> <span class="Delimiter">(;</span>  p != words<span class="Delimiter">.</span><a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>  ++p<span class="Delimiter">)</span>
+<span id="L149" class="LineNr">149 </span>  <span class="Normal">for</span> <span class="Delimiter">(;</span>  p != words<span class="Delimiter">.</span><a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>  ++p<span class="Delimiter">)</span>
 <span id="L150" class="LineNr">150 </span>  <span class="Conceal">¦</span> curr<span class="Delimiter">-&gt;</span>ingredients<span class="Delimiter">.</span>push_back<span class="Delimiter">(</span>reagent<span class="Delimiter">(</span>*p<span class="Delimiter">));</span>
 <span id="L151" class="LineNr">151 </span>
-<span id="L152" class="LineNr">152 </span>  <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">9993</span><span class="Delimiter">,</span> <span class="Constant">&quot;parse&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;instruction: &quot;</span> &lt;&lt; curr<span class="Delimiter">-&gt;</span>name &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
-<span id="L153" class="LineNr">153 </span>  <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">9993</span><span class="Delimiter">,</span> <span class="Constant">&quot;parse&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;  number of ingredients: &quot;</span> &lt;&lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>curr<span class="Delimiter">-&gt;</span>ingredients<span class="Delimiter">)</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
-<span id="L154" class="LineNr">154 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span>vector&lt;reagent&gt;::iterator p = curr<span class="Delimiter">-&gt;</span>ingredients<span class="Delimiter">.</span>begin<span class="Delimiter">();</span>  p != curr<span class="Delimiter">-&gt;</span>ingredients<span class="Delimiter">.</span><a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>  ++p<span class="Delimiter">)</span>
-<span id="L155" class="LineNr">155 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">9993</span><span class="Delimiter">,</span> <span class="Constant">&quot;parse&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;  ingredient: &quot;</span> &lt;&lt; <a href='028call_return.cc.html#L163'>to_string</a><span class="Delimiter">(</span>*p<span class="Delimiter">)</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
-<span id="L156" class="LineNr">156 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span>vector&lt;reagent&gt;::iterator p = curr<span class="Delimiter">-&gt;</span>products<span class="Delimiter">.</span>begin<span class="Delimiter">();</span>  p != curr<span class="Delimiter">-&gt;</span>products<span class="Delimiter">.</span><a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>  ++p<span class="Delimiter">)</span>
-<span id="L157" class="LineNr">157 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">9993</span><span class="Delimiter">,</span> <span class="Constant">&quot;parse&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;  product: &quot;</span> &lt;&lt; <a href='028call_return.cc.html#L163'>to_string</a><span class="Delimiter">(</span>*p<span class="Delimiter">)</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L152" class="LineNr">152 </span>  <a href='003trace.cc.html#L167'>trace</a><span class="Delimiter">(</span><span class="Constant">9993</span><span class="Delimiter">,</span> <span class="Constant">&quot;parse&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;instruction: &quot;</span> &lt;&lt; curr<span class="Delimiter">-&gt;</span>name &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
+<span id="L153" class="LineNr">153 </span>  <a href='003trace.cc.html#L167'>trace</a><span class="Delimiter">(</span><span class="Constant">9993</span><span class="Delimiter">,</span> <span class="Constant">&quot;parse&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;  number of ingredients: &quot;</span> &lt;&lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>curr<span class="Delimiter">-&gt;</span>ingredients<span class="Delimiter">)</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
+<span id="L154" class="LineNr">154 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span>vector&lt;reagent&gt;::iterator p = curr<span class="Delimiter">-&gt;</span>ingredients<span class="Delimiter">.</span>begin<span class="Delimiter">();</span>  p != curr<span class="Delimiter">-&gt;</span>ingredients<span class="Delimiter">.</span><a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>  ++p<span class="Delimiter">)</span>
+<span id="L155" class="LineNr">155 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L167'>trace</a><span class="Delimiter">(</span><span class="Constant">9993</span><span class="Delimiter">,</span> <span class="Constant">&quot;parse&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;  ingredient: &quot;</span> &lt;&lt; <a href='028call_return.cc.html#L163'>to_string</a><span class="Delimiter">(</span>*p<span class="Delimiter">)</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
+<span id="L156" class="LineNr">156 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span>vector&lt;reagent&gt;::iterator p = curr<span class="Delimiter">-&gt;</span>products<span class="Delimiter">.</span>begin<span class="Delimiter">();</span>  p != curr<span class="Delimiter">-&gt;</span>products<span class="Delimiter">.</span><a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>  ++p<span class="Delimiter">)</span>
+<span id="L157" class="LineNr">157 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L167'>trace</a><span class="Delimiter">(</span><span class="Constant">9993</span><span class="Delimiter">,</span> <span class="Constant">&quot;parse&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;  product: &quot;</span> &lt;&lt; <a href='028call_return.cc.html#L163'>to_string</a><span class="Delimiter">(</span>*p<span class="Delimiter">)</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L158" class="LineNr">158 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!has_data<span class="Delimiter">(</span>in<span class="Delimiter">))</span> <span class="Delimiter">{</span>
-<span id="L159" class="LineNr">159 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <span class="Constant">&quot;9: unbalanced '[' for <a href='010vm.cc.html#L19'>recipe</a></span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L159" class="LineNr">159 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <span class="Constant">&quot;9: unbalanced '[' for <a href='010vm.cc.html#L19'>recipe</a></span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L160" class="LineNr">160 </span>  <span class="Conceal">¦</span> <span class="Identifier">return</span> <span class="Constant">false</span><span class="Delimiter">;</span>
 <span id="L161" class="LineNr">161 </span>  <span class="Delimiter">}</span>
 <span id="L162" class="LineNr">162 </span>  <span class="Comment">// End next_instruction(curr)</span>
@@ -236,7 +236,7 @@ if ('onhashchange' in window) {
 <span id="L172" class="LineNr">172 </span>  <a href='011load.cc.html#L220'>skip_whitespace_and_comments_but_not_newline</a><span class="Delimiter">(</span>in<span class="Delimiter">);</span>
 <span id="L173" class="LineNr">173 </span>  string result = out<span class="Delimiter">.</span>str<span class="Delimiter">();</span>
 <span id="L174" class="LineNr">174 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>result != <span class="Constant">&quot;[&quot;</span> &amp;&amp; <a href='011load.cc.html#L184'>ends_with</a><span class="Delimiter">(</span>result<span class="Delimiter">,</span> <span class="Constant">'['</span><span class="Delimiter">))</span>
-<span id="L175" class="LineNr">175 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <span class="Constant">&quot;insert a space before '[' in '&quot;</span> &lt;&lt; result &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L175" class="LineNr">175 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <span class="Constant">&quot;insert a space before '[' in '&quot;</span> &lt;&lt; result &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L176" class="LineNr">176 </span>  <span class="Identifier">return</span> result<span class="Delimiter">;</span>
 <span id="L177" class="LineNr">177 </span><span class="Delimiter">}</span>
 <span id="L178" class="LineNr">178 </span>
diff --git a/html/012transform.cc.html b/html/012transform.cc.html
index a8b009b3..28355ac1 100644
--- a/html/012transform.cc.html
+++ b/html/012transform.cc.html
@@ -103,10 +103,10 @@ if ('onhashchange' in window) {
 <span id="L44" class="LineNr"> 44 </span><span class="Delimiter">}</span>
 <span id="L45" class="LineNr"> 45 </span>
 <span id="L46" class="LineNr"> 46 </span><span class="Normal">void</span> <a href='012transform.cc.html#L46'>transform_all</a><span class="Delimiter">()</span> <span class="Delimiter">{</span>
-<span id="L47" class="LineNr"> 47 </span>  <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">9990</span><span class="Delimiter">,</span> <span class="Constant">&quot;transform&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;=== transform_all()&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L47" class="LineNr"> 47 </span>  <a href='003trace.cc.html#L167'>trace</a><span class="Delimiter">(</span><span class="Constant">9990</span><span class="Delimiter">,</span> <span class="Constant">&quot;transform&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;=== transform_all()&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L48" class="LineNr"> 48 </span>  <span class="Comment">// Begin transform_all</span>
 <span id="L49" class="LineNr"> 49 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> t = <span class="Constant">0</span><span class="Delimiter">;</span>  t &lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>Transform<span class="Delimiter">);</span>  ++t<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L50" class="LineNr"> 50 </span>  <span class="Conceal">¦</span> <span class="Normal">for</span> <span class="Delimiter">(</span>map&lt;recipe_ordinal<span class="Delimiter">,</span> recipe&gt;::iterator p = Recipe<span class="Delimiter">.</span>begin<span class="Delimiter">();</span>  p != Recipe<span class="Delimiter">.</span><a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>  ++p<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L50" class="LineNr"> 50 </span>  <span class="Conceal">¦</span> <span class="Normal">for</span> <span class="Delimiter">(</span>map&lt;recipe_ordinal<span class="Delimiter">,</span> recipe&gt;::iterator p = Recipe<span class="Delimiter">.</span>begin<span class="Delimiter">();</span>  p != Recipe<span class="Delimiter">.</span><a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>  ++p<span class="Delimiter">)</span> <span class="Delimiter">{</span>
 <span id="L51" class="LineNr"> 51 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> recipe&amp; r = p<span class="Delimiter">-&gt;</span>second<span class="Delimiter">;</span>
 <span id="L52" class="LineNr"> 52 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>r<span class="Delimiter">.</span>transformed_until != t-<span class="Constant">1</span><span class="Delimiter">)</span> <span class="Identifier">continue</span><span class="Delimiter">;</span>
 <span id="L53" class="LineNr"> 53 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Comment">// End Transform Checks</span>
@@ -131,8 +131,8 @@ if ('onhashchange' in window) {
 <span id="L72" class="LineNr"> 72 </span>
 <span id="L73" class="LineNr"> 73 </span><span class="Delimiter">:(code)</span>
 <span id="L74" class="LineNr"> 74 </span><span class="Normal">void</span> <a href='012transform.cc.html#L74'>parse_int_reagents</a><span class="Delimiter">()</span> <span class="Delimiter">{</span>
-<span id="L75" class="LineNr"> 75 </span>  <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">9991</span><span class="Delimiter">,</span> <span class="Constant">&quot;transform&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;--- parsing any uninitialized reagents as integers&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
-<span id="L76" class="LineNr"> 76 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span>map&lt;recipe_ordinal<span class="Delimiter">,</span> recipe&gt;::iterator p = Recipe<span class="Delimiter">.</span>begin<span class="Delimiter">();</span>  p != Recipe<span class="Delimiter">.</span><a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>  ++p<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L75" class="LineNr"> 75 </span>  <a href='003trace.cc.html#L167'>trace</a><span class="Delimiter">(</span><span class="Constant">9991</span><span class="Delimiter">,</span> <span class="Constant">&quot;transform&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;--- parsing any uninitialized reagents as integers&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
+<span id="L76" class="LineNr"> 76 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span>map&lt;recipe_ordinal<span class="Delimiter">,</span> recipe&gt;::iterator p = Recipe<span class="Delimiter">.</span>begin<span class="Delimiter">();</span>  p != Recipe<span class="Delimiter">.</span><a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>  ++p<span class="Delimiter">)</span> <span class="Delimiter">{</span>
 <span id="L77" class="LineNr"> 77 </span>  <span class="Conceal">¦</span> recipe&amp; r = p<span class="Delimiter">-&gt;</span>second<span class="Delimiter">;</span>
 <span id="L78" class="LineNr"> 78 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>r<span class="Delimiter">.</span>steps<span class="Delimiter">.</span>empty<span class="Delimiter">())</span> <span class="Identifier">continue</span><span class="Delimiter">;</span>
 <span id="L79" class="LineNr"> 79 </span>  <span class="Conceal">¦</span> <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> index = <span class="Constant">0</span><span class="Delimiter">;</span>  index &lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>r<span class="Delimiter">.</span>steps<span class="Delimiter">);</span>  ++index<span class="Delimiter">)</span> <span class="Delimiter">{</span>
diff --git a/html/013update_operation.cc.html b/html/013update_operation.cc.html
index ccc28204..5de8c4a7 100644
--- a/html/013update_operation.cc.html
+++ b/html/013update_operation.cc.html
@@ -70,14 +70,14 @@ if ('onhashchange' in window) {
 <span id="L6" class="LineNr"> 6 </span>
 <span id="L7" class="LineNr"> 7 </span><span class="Delimiter">:(code)</span>
 <span id="L8" class="LineNr"> 8 </span><span class="Normal">void</span> <a href='013update_operation.cc.html#L8'>update_instruction_operations</a><span class="Delimiter">(</span><span class="Normal">const</span> <a href='010vm.cc.html#L14'>recipe_ordinal</a> r<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L9" class="LineNr"> 9 </span>  <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">9991</span><span class="Delimiter">,</span> <span class="Constant">&quot;transform&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;--- compute <a href='010vm.cc.html#L32'>instruction</a> operations for <a href='010vm.cc.html#L19'>recipe</a> &quot;</span> &lt;&lt; get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L9" class="LineNr"> 9 </span>  <a href='003trace.cc.html#L167'>trace</a><span class="Delimiter">(</span><span class="Constant">9991</span><span class="Delimiter">,</span> <span class="Constant">&quot;transform&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;--- compute <a href='010vm.cc.html#L32'>instruction</a> operations for <a href='010vm.cc.html#L19'>recipe</a> &quot;</span> &lt;&lt; get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L10" class="LineNr">10 </span>  recipe&amp; caller = get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">);</span>
 <span id="L11" class="LineNr">11 </span><span class="CommentedCode">//?   cerr &lt;&lt; &quot;--- compute instruction operations for recipe &quot; &lt;&lt; caller.name &lt;&lt; '\n';</span>
 <span id="L12" class="LineNr">12 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> index = <span class="Constant">0</span><span class="Delimiter">;</span>  index &lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>caller<span class="Delimiter">.</span>steps<span class="Delimiter">);</span>  ++index<span class="Delimiter">)</span> <span class="Delimiter">{</span>
 <span id="L13" class="LineNr">13 </span>  <span class="Conceal">¦</span> instruction&amp; inst = caller<span class="Delimiter">.</span>steps<span class="Delimiter">.</span>at<span class="Delimiter">(</span>index<span class="Delimiter">);</span>
 <span id="L14" class="LineNr">14 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>inst<span class="Delimiter">.</span>is_label<span class="Delimiter">)</span> <span class="Identifier">continue</span><span class="Delimiter">;</span>
 <span id="L15" class="LineNr">15 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>!contains_key<span class="Delimiter">(</span>Recipe_ordinal<span class="Delimiter">,</span> inst<span class="Delimiter">.</span>name<span class="Delimiter">))</span> <span class="Delimiter">{</span>
-<span id="L16" class="LineNr">16 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>caller<span class="Delimiter">.</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;instruction '&quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>name &lt;&lt; <span class="Constant">&quot;' has no <a href='010vm.cc.html#L19'>recipe</a> in '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L16" class="LineNr">16 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>caller<span class="Delimiter">.</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;instruction '&quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>name &lt;&lt; <span class="Constant">&quot;' has no <a href='010vm.cc.html#L19'>recipe</a> in '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L17" class="LineNr">17 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Identifier">continue</span><span class="Delimiter">;</span>
 <span id="L18" class="LineNr">18 </span>  <span class="Conceal">¦</span> <span class="Delimiter">}</span>
 <span id="L19" class="LineNr">19 </span>  <span class="Conceal">¦</span> inst<span class="Delimiter">.</span>operation = get<span class="Delimiter">(</span>Recipe_ordinal<span class="Delimiter">,</span> inst<span class="Delimiter">.</span>name<span class="Delimiter">);</span>
diff --git a/html/014literal_string.cc.html b/html/014literal_string.cc.html
index 07bfa932..61a4ac39 100644
--- a/html/014literal_string.cc.html
+++ b/html/014literal_string.cc.html
@@ -136,7 +136,7 @@ if ('onhashchange' in window) {
 <span id="L73" class="LineNr"> 73 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>brace_depth == <span class="Constant">0</span><span class="Delimiter">)</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L74" class="LineNr"> 74 </span>  <span class="Delimiter">}</span>
 <span id="L75" class="LineNr"> 75 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!has_data<span class="Delimiter">(</span>in<span class="Delimiter">)</span> &amp;&amp; brace_depth &gt; <span class="Constant">0</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L76" class="LineNr"> 76 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <span class="Constant">&quot;unbalanced '['</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L76" class="LineNr"> 76 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <span class="Constant">&quot;unbalanced '['</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L77" class="LineNr"> 77 </span>  <span class="Conceal">¦</span> out<span class="Delimiter">.</span><a href='050scenario.cc.html#L60'>clear</a><span class="Delimiter">();</span>
 <span id="L78" class="LineNr"> 78 </span>  <span class="Delimiter">}</span>
 <span id="L79" class="LineNr"> 79 </span><span class="Delimiter">}</span>
@@ -163,7 +163,7 @@ if ('onhashchange' in window) {
 <span id="L100" class="LineNr">100 </span>  <span class="Conceal">¦</span> out &lt;&lt; c<span class="Delimiter">;</span>
 <span id="L101" class="LineNr">101 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>c == <span class="Constant">']'</span><span class="Delimiter">)</span> <span class="Identifier">return</span><span class="Delimiter">;</span>
 <span id="L102" class="LineNr">102 </span>  <span class="Delimiter">}</span>
-<span id="L103" class="LineNr">103 </span>  <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <span class="Constant">&quot;unbalanced '['</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L103" class="LineNr">103 </span>  <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <span class="Constant">&quot;unbalanced '['</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L104" class="LineNr">104 </span>  out<span class="Delimiter">.</span><a href='050scenario.cc.html#L60'>clear</a><span class="Delimiter">();</span>
 <span id="L105" class="LineNr">105 </span><span class="Delimiter">}</span>
 <span id="L106" class="LineNr">106 </span>
diff --git a/html/015literal_noninteger.cc.html b/html/015literal_noninteger.cc.html
index 5a8fe0d5..e08dc7ba 100644
--- a/html/015literal_noninteger.cc.html
+++ b/html/015literal_noninteger.cc.html
@@ -83,11 +83,11 @@ if ('onhashchange' in window) {
 <span id="L20" class="LineNr">20 </span>  <span class="Identifier">return</span> s<span class="Delimiter">.</span>find_first_not_of<span class="Delimiter">(</span><span class="Constant">&quot;0123456789-.&quot;</span><span class="Delimiter">)</span> == string::npos  <span class="Comment">// no other characters</span>
 <span id="L21" class="LineNr">21 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> &amp;&amp; s<span class="Delimiter">.</span>find_first_of<span class="Delimiter">(</span><span class="Constant">&quot;0123456789&quot;</span><span class="Delimiter">)</span> != string::npos  <span class="Comment">// at least one digit</span>
 <span id="L22" class="LineNr">22 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> &amp;&amp; s<span class="Delimiter">.</span>find<span class="Delimiter">(</span><span class="Constant">'-'</span><span class="Delimiter">,</span> <span class="Constant">1</span><span class="Delimiter">)</span> == string::npos  <span class="Comment">// '-' only at first position</span>
-<span id="L23" class="LineNr">23 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> &amp;&amp; std::count<span class="Delimiter">(</span>s<span class="Delimiter">.</span>begin<span class="Delimiter">(),</span> s<span class="Delimiter">.</span><a href='003trace.cc.html#L197'>end</a><span class="Delimiter">(),</span> <span class="Constant">'.'</span><span class="Delimiter">)</span> == <span class="Constant">1</span><span class="Delimiter">;</span>  <span class="Comment">// exactly one decimal point</span>
+<span id="L23" class="LineNr">23 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> &amp;&amp; std::count<span class="Delimiter">(</span>s<span class="Delimiter">.</span>begin<span class="Delimiter">(),</span> s<span class="Delimiter">.</span><a href='003trace.cc.html#L203'>end</a><span class="Delimiter">(),</span> <span class="Constant">'.'</span><span class="Delimiter">)</span> == <span class="Constant">1</span><span class="Delimiter">;</span>  <span class="Comment">// exactly one decimal point</span>
 <span id="L24" class="LineNr">24 </span><span class="Delimiter">}</span>
 <span id="L25" class="LineNr">25 </span>
 <span id="L26" class="LineNr">26 </span><span class="Normal">double</span> <a href='015literal_noninteger.cc.html#L26'>to_double</a><span class="Delimiter">(</span>string n<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L27" class="LineNr">27 </span>  <span class="Normal">char</span>* <a href='003trace.cc.html#L197'>end</a> = <span class="Constant">NULL</span><span class="Delimiter">;</span>
+<span id="L27" class="LineNr">27 </span>  <span class="Normal">char</span>* <a href='003trace.cc.html#L203'>end</a> = <span class="Constant">NULL</span><span class="Delimiter">;</span>
 <span id="L28" class="LineNr">28 </span>  <span class="Comment">// safe because string.c_str() is guaranteed to be null-terminated</span>
 <span id="L29" class="LineNr">29 </span>  <span class="Normal">double</span> result = strtod<span class="Delimiter">(</span>n<span class="Delimiter">.</span>c_str<span class="Delimiter">(),</span> &amp;end<span class="Delimiter">);</span>
 <span id="L30" class="LineNr">30 </span>  assert<span class="Delimiter">(</span>*end == <span class="cSpecial">'\0'</span><span class="Delimiter">);</span>
diff --git a/html/016dilated_reagent.cc.html b/html/016dilated_reagent.cc.html
index 3a5278d8..554d317a 100644
--- a/html/016dilated_reagent.cc.html
+++ b/html/016dilated_reagent.cc.html
@@ -127,7 +127,7 @@ if ('onhashchange' in window) {
 <span id="L62" class="LineNr"> 62 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>c == <span class="Constant">'('</span><span class="Delimiter">)</span> open_brackets<span class="Delimiter">.</span>push_back<span class="Delimiter">(</span>c<span class="Delimiter">);</span>
 <span id="L63" class="LineNr"> 63 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>c == <span class="Constant">')'</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
 <span id="L64" class="LineNr"> 64 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>open_brackets<span class="Delimiter">.</span>empty<span class="Delimiter">()</span> || open_brackets<span class="Delimiter">.</span>back<span class="Delimiter">()</span> != <span class="Constant">'('</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L65" class="LineNr"> 65 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <span class="Constant">&quot;unbalanced ')'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L65" class="LineNr"> 65 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <span class="Constant">&quot;unbalanced ')'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L66" class="LineNr"> 66 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Identifier">continue</span><span class="Delimiter">;</span>
 <span id="L67" class="LineNr"> 67 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Delimiter">}</span>
 <span id="L68" class="LineNr"> 68 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> assert<span class="Delimiter">(</span>open_brackets<span class="Delimiter">.</span>back<span class="Delimiter">()</span> == <span class="Constant">'('</span><span class="Delimiter">);</span>
@@ -136,7 +136,7 @@ if ('onhashchange' in window) {
 <span id="L71" class="LineNr"> 71 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>c == <span class="Constant">'['</span><span class="Delimiter">)</span> open_brackets<span class="Delimiter">.</span>push_back<span class="Delimiter">(</span>c<span class="Delimiter">);</span>
 <span id="L72" class="LineNr"> 72 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>c == <span class="Constant">']'</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
 <span id="L73" class="LineNr"> 73 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>open_brackets<span class="Delimiter">.</span>empty<span class="Delimiter">()</span> || open_brackets<span class="Delimiter">.</span>back<span class="Delimiter">()</span> != <span class="Constant">'['</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L74" class="LineNr"> 74 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <span class="Constant">&quot;unbalanced ']'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L74" class="LineNr"> 74 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <span class="Constant">&quot;unbalanced ']'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L75" class="LineNr"> 75 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Identifier">continue</span><span class="Delimiter">;</span>
 <span id="L76" class="LineNr"> 76 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Delimiter">}</span>
 <span id="L77" class="LineNr"> 77 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> open_brackets<span class="Delimiter">.</span>pop_back<span class="Delimiter">();</span>
@@ -144,7 +144,7 @@ if ('onhashchange' in window) {
 <span id="L79" class="LineNr"> 79 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>c == <span class="Constant">'{'</span><span class="Delimiter">)</span> open_brackets<span class="Delimiter">.</span>push_back<span class="Delimiter">(</span>c<span class="Delimiter">);</span>
 <span id="L80" class="LineNr"> 80 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>c == <span class="Constant">'}'</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
 <span id="L81" class="LineNr"> 81 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>open_brackets<span class="Delimiter">.</span>empty<span class="Delimiter">()</span> || open_brackets<span class="Delimiter">.</span>back<span class="Delimiter">()</span> != <span class="Constant">'{'</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L82" class="LineNr"> 82 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <span class="Constant">&quot;unbalanced '}'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L82" class="LineNr"> 82 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <span class="Constant">&quot;unbalanced '}'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L83" class="LineNr"> 83 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Identifier">continue</span><span class="Delimiter">;</span>
 <span id="L84" class="LineNr"> 84 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Delimiter">}</span>
 <span id="L85" class="LineNr"> 85 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> open_brackets<span class="Delimiter">.</span>pop_back<span class="Delimiter">();</span>
@@ -164,18 +164,18 @@ if ('onhashchange' in window) {
 <span id="L99" class="LineNr"> 99 </span>  in<span class="Delimiter">.</span>get<span class="Delimiter">();</span>  <span class="Comment">// skip '{'</span>
 <span id="L100" class="LineNr">100 </span>  name = <a href='016dilated_reagent.cc.html#L139'>slurp_key</a><span class="Delimiter">(</span>in<span class="Delimiter">);</span>
 <span id="L101" class="LineNr">101 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>name<span class="Delimiter">.</span>empty<span class="Delimiter">())</span> <span class="Delimiter">{</span>
-<span id="L102" class="LineNr">102 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <span class="Constant">&quot;invalid reagent '&quot;</span> &lt;&lt; s &lt;&lt; <span class="Constant">&quot;' without a name</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L102" class="LineNr">102 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <span class="Constant">&quot;invalid reagent '&quot;</span> &lt;&lt; s &lt;&lt; <span class="Constant">&quot;' without a name</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L103" class="LineNr">103 </span>  <span class="Conceal">¦</span> <span class="Identifier">return</span><span class="Delimiter">;</span>
 <span id="L104" class="LineNr">104 </span>  <span class="Delimiter">}</span>
 <span id="L105" class="LineNr">105 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>name == <span class="Constant">&quot;}&quot;</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L106" class="LineNr">106 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <span class="Constant">&quot;invalid empty reagent '&quot;</span> &lt;&lt; s &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L106" class="LineNr">106 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <span class="Constant">&quot;invalid empty reagent '&quot;</span> &lt;&lt; s &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L107" class="LineNr">107 </span>  <span class="Conceal">¦</span> <span class="Identifier">return</span><span class="Delimiter">;</span>
 <span id="L108" class="LineNr">108 </span>  <span class="Delimiter">}</span>
 <span id="L109" class="LineNr">109 </span>  <span class="Delimiter">{</span>
 <span id="L110" class="LineNr">110 </span>  <span class="Conceal">¦</span> string s = <a href='011load.cc.html#L167'>next_word</a><span class="Delimiter">(</span>in<span class="Delimiter">);</span>
 <span id="L111" class="LineNr">111 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>s<span class="Delimiter">.</span>empty<span class="Delimiter">())</span> <span class="Delimiter">{</span>
 <span id="L112" class="LineNr">112 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> assert<span class="Delimiter">(</span>!has_data<span class="Delimiter">(</span>in<span class="Delimiter">));</span>
-<span id="L113" class="LineNr">113 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <span class="Constant">&quot;incomplete dilated reagent at <a href='003trace.cc.html#L197'>end</a> of file (0)</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L113" class="LineNr">113 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <span class="Constant">&quot;incomplete dilated reagent at <a href='003trace.cc.html#L203'>end</a> of file (0)</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L114" class="LineNr">114 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Identifier">return</span><span class="Delimiter">;</span>
 <span id="L115" class="LineNr">115 </span>  <span class="Conceal">¦</span> <span class="Delimiter">}</span>
 <span id="L116" class="LineNr">116 </span>  <span class="Conceal">¦</span> string_tree* type_names = <span class="Normal">new</span> string_tree<span class="Delimiter">(</span>s<span class="Delimiter">);</span>
@@ -190,7 +190,7 @@ if ('onhashchange' in window) {
 <span id="L125" class="LineNr">125 </span>  <span class="Conceal">¦</span> string s = <a href='011load.cc.html#L167'>next_word</a><span class="Delimiter">(</span>in<span class="Delimiter">);</span>
 <span id="L126" class="LineNr">126 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>s<span class="Delimiter">.</span>empty<span class="Delimiter">())</span> <span class="Delimiter">{</span>
 <span id="L127" class="LineNr">127 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> assert<span class="Delimiter">(</span>!has_data<span class="Delimiter">(</span>in<span class="Delimiter">));</span>
-<span id="L128" class="LineNr">128 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <span class="Constant">&quot;incomplete dilated reagent at <a href='003trace.cc.html#L197'>end</a> of file (1)</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L128" class="LineNr">128 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <span class="Constant">&quot;incomplete dilated reagent at <a href='003trace.cc.html#L203'>end</a> of file (1)</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L129" class="LineNr">129 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Identifier">return</span><span class="Delimiter">;</span>
 <span id="L130" class="LineNr">130 </span>  <span class="Conceal">¦</span> <span class="Delimiter">}</span>
 <span id="L131" class="LineNr">131 </span>  <span class="Conceal">¦</span> string_tree* value = <span class="Normal">new</span> string_tree<span class="Delimiter">(</span>s<span class="Delimiter">);</span>
@@ -205,7 +205,7 @@ if ('onhashchange' in window) {
 <span id="L140" class="LineNr">140 </span>  string result = <a href='011load.cc.html#L167'>next_word</a><span class="Delimiter">(</span>in<span class="Delimiter">);</span>
 <span id="L141" class="LineNr">141 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>result<span class="Delimiter">.</span>empty<span class="Delimiter">())</span> <span class="Delimiter">{</span>
 <span id="L142" class="LineNr">142 </span>  <span class="Conceal">¦</span> assert<span class="Delimiter">(</span>!has_data<span class="Delimiter">(</span>in<span class="Delimiter">));</span>
-<span id="L143" class="LineNr">143 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <span class="Constant">&quot;incomplete dilated reagent at <a href='003trace.cc.html#L197'>end</a> of file (2)</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L143" class="LineNr">143 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <span class="Constant">&quot;incomplete dilated reagent at <a href='003trace.cc.html#L203'>end</a> of file (2)</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L144" class="LineNr">144 </span>  <span class="Conceal">¦</span> <span class="Identifier">return</span> result<span class="Delimiter">;</span>
 <span id="L145" class="LineNr">145 </span>  <span class="Delimiter">}</span>
 <span id="L146" class="LineNr">146 </span>  <span class="Normal">while</span> <span class="Delimiter">(</span>!result<span class="Delimiter">.</span>empty<span class="Delimiter">()</span> &amp;&amp; *result<span class="Delimiter">.</span>rbegin<span class="Delimiter">()</span> == <span class="Constant">':'</span><span class="Delimiter">)</span>
diff --git a/html/017parse_tree.cc.html b/html/017parse_tree.cc.html
index 85b264e3..b395e755 100644
--- a/html/017parse_tree.cc.html
+++ b/html/017parse_tree.cc.html
@@ -112,7 +112,7 @@ if ('onhashchange' in window) {
 <span id="L48" class="LineNr"> 48 </span>  <span class="Conceal">¦</span> string s = <a href='011load.cc.html#L167'>next_word</a><span class="Delimiter">(</span>in<span class="Delimiter">);</span>
 <span id="L49" class="LineNr"> 49 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>s<span class="Delimiter">.</span>empty<span class="Delimiter">())</span> <span class="Delimiter">{</span>
 <span id="L50" class="LineNr"> 50 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> assert<span class="Delimiter">(</span>!has_data<span class="Delimiter">(</span>in<span class="Delimiter">));</span>
-<span id="L51" class="LineNr"> 51 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <span class="Constant">&quot;incomplete string tree at <a href='003trace.cc.html#L197'>end</a> of file (0)</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L51" class="LineNr"> 51 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <span class="Constant">&quot;incomplete string tree at <a href='003trace.cc.html#L203'>end</a> of file (0)</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L52" class="LineNr"> 52 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Identifier">return</span> <span class="Constant">NULL</span><span class="Delimiter">;</span>
 <span id="L53" class="LineNr"> 53 </span>  <span class="Conceal">¦</span> <span class="Delimiter">}</span>
 <span id="L54" class="LineNr"> 54 </span>  <span class="Conceal">¦</span> string_tree* result = <span class="Normal">new</span> string_tree<span class="Delimiter">(</span>s<span class="Delimiter">);</span>
@@ -133,7 +133,7 @@ if ('onhashchange' in window) {
 <span id="L69" class="LineNr"> 69 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> string s = <a href='011load.cc.html#L167'>next_word</a><span class="Delimiter">(</span>in<span class="Delimiter">);</span>
 <span id="L70" class="LineNr"> 70 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>s<span class="Delimiter">.</span>empty<span class="Delimiter">())</span> <span class="Delimiter">{</span>
 <span id="L71" class="LineNr"> 71 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> assert<span class="Delimiter">(</span>!has_data<span class="Delimiter">(</span>in<span class="Delimiter">));</span>
-<span id="L72" class="LineNr"> 72 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <span class="Constant">&quot;incomplete string tree at <a href='003trace.cc.html#L197'>end</a> of file (1)</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L72" class="LineNr"> 72 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <span class="Constant">&quot;incomplete string tree at <a href='003trace.cc.html#L203'>end</a> of file (1)</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L73" class="LineNr"> 73 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Identifier">return</span> <span class="Constant">NULL</span><span class="Delimiter">;</span>
 <span id="L74" class="LineNr"> 74 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Delimiter">}</span>
 <span id="L75" class="LineNr"> 75 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Delimiter">(</span>*curr<span class="Delimiter">)-&gt;</span>left = <span class="Normal">new</span> string_tree<span class="Delimiter">(</span>s<span class="Delimiter">);</span>
diff --git a/html/018type_abbreviations.cc.html b/html/018type_abbreviations.cc.html
index 01a8d73f..2e4578cb 100644
--- a/html/018type_abbreviations.cc.html
+++ b/html/018type_abbreviations.cc.html
@@ -88,34 +88,34 @@ if ('onhashchange' in window) {
 <span id="L23" class="LineNr"> 23 </span>  string new_type_name = <a href='011load.cc.html#L167'>next_word</a><span class="Delimiter">(</span>in<span class="Delimiter">);</span>
 <span id="L24" class="LineNr"> 24 </span>  assert<span class="Delimiter">(</span><a href='001help.cc.html#L239'>has_data</a><span class="Delimiter">(</span>in<span class="Delimiter">)</span> || !new_type_name<span class="Delimiter">.</span>empty<span class="Delimiter">());</span>
 <span id="L25" class="LineNr"> 25 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!has_data<span class="Delimiter">(</span>in<span class="Delimiter">)</span> || new_type_name<span class="Delimiter">.</span>empty<span class="Delimiter">())</span> <span class="Delimiter">{</span>
-<span id="L26" class="LineNr"> 26 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <span class="Constant">&quot;incomplete 'type' statement; must be of the form 'type &lt;new type name&gt; = &lt;type expression&gt;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L26" class="LineNr"> 26 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <span class="Constant">&quot;incomplete 'type' statement; must be of the form 'type &lt;new type name&gt; = &lt;type expression&gt;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L27" class="LineNr"> 27 </span>  <span class="Conceal">¦</span> <span class="Identifier">return</span><span class="Delimiter">;</span>
 <span id="L28" class="LineNr"> 28 </span>  <span class="Delimiter">}</span>
 <span id="L29" class="LineNr"> 29 </span>  string arrow = <a href='011load.cc.html#L167'>next_word</a><span class="Delimiter">(</span>in<span class="Delimiter">);</span>
 <span id="L30" class="LineNr"> 30 </span>  assert<span class="Delimiter">(</span><a href='001help.cc.html#L239'>has_data</a><span class="Delimiter">(</span>in<span class="Delimiter">)</span> || !arrow<span class="Delimiter">.</span>empty<span class="Delimiter">());</span>
 <span id="L31" class="LineNr"> 31 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>arrow<span class="Delimiter">.</span>empty<span class="Delimiter">())</span> <span class="Delimiter">{</span>
-<span id="L32" class="LineNr"> 32 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <span class="Constant">&quot;incomplete 'type' statement 'type &quot;</span> &lt;&lt; new_type_name &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L32" class="LineNr"> 32 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <span class="Constant">&quot;incomplete 'type' statement 'type &quot;</span> &lt;&lt; new_type_name &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L33" class="LineNr"> 33 </span>  <span class="Conceal">¦</span> <span class="Identifier">return</span><span class="Delimiter">;</span>
 <span id="L34" class="LineNr"> 34 </span>  <span class="Delimiter">}</span>
 <span id="L35" class="LineNr"> 35 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>arrow != <span class="Constant">&quot;=&quot;</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L36" class="LineNr"> 36 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <span class="Constant">&quot;'type' statements must be of the form 'type &lt;new type name&gt; = &lt;type expression&gt;' but got 'type &quot;</span> &lt;&lt; new_type_name &lt;&lt; <span class="Constant">' '</span> &lt;&lt; arrow &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L36" class="LineNr"> 36 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <span class="Constant">&quot;'type' statements must be of the form 'type &lt;new type name&gt; = &lt;type expression&gt;' but got 'type &quot;</span> &lt;&lt; new_type_name &lt;&lt; <span class="Constant">' '</span> &lt;&lt; arrow &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L37" class="LineNr"> 37 </span>  <span class="Conceal">¦</span> <span class="Identifier">return</span><span class="Delimiter">;</span>
 <span id="L38" class="LineNr"> 38 </span>  <span class="Delimiter">}</span>
 <span id="L39" class="LineNr"> 39 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!has_data<span class="Delimiter">(</span>in<span class="Delimiter">))</span> <span class="Delimiter">{</span>
-<span id="L40" class="LineNr"> 40 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <span class="Constant">&quot;incomplete 'type' statement 'type &quot;</span> &lt;&lt; new_type_name &lt;&lt; <span class="Constant">&quot; ='</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L40" class="LineNr"> 40 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <span class="Constant">&quot;incomplete 'type' statement 'type &quot;</span> &lt;&lt; new_type_name &lt;&lt; <span class="Constant">&quot; ='</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L41" class="LineNr"> 41 </span>  <span class="Conceal">¦</span> <span class="Identifier">return</span><span class="Delimiter">;</span>
 <span id="L42" class="LineNr"> 42 </span>  <span class="Delimiter">}</span>
 <span id="L43" class="LineNr"> 43 </span>  string old = <a href='011load.cc.html#L167'>next_word</a><span class="Delimiter">(</span>in<span class="Delimiter">);</span>
 <span id="L44" class="LineNr"> 44 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>old<span class="Delimiter">.</span>empty<span class="Delimiter">())</span> <span class="Delimiter">{</span>
-<span id="L45" class="LineNr"> 45 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <span class="Constant">&quot;incomplete 'type' statement 'type &quot;</span> &lt;&lt; new_type_name &lt;&lt; <span class="Constant">&quot; ='</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
-<span id="L46" class="LineNr"> 46 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <span class="Constant">&quot;'type' statements must be of the form 'type &lt;new type name&gt; = &lt;type expression&gt;' but got 'type &quot;</span> &lt;&lt; new_type_name &lt;&lt; <span class="Constant">' '</span> &lt;&lt; arrow &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L45" class="LineNr"> 45 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <span class="Constant">&quot;incomplete 'type' statement 'type &quot;</span> &lt;&lt; new_type_name &lt;&lt; <span class="Constant">&quot; ='</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
+<span id="L46" class="LineNr"> 46 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <span class="Constant">&quot;'type' statements must be of the form 'type &lt;new type name&gt; = &lt;type expression&gt;' but got 'type &quot;</span> &lt;&lt; new_type_name &lt;&lt; <span class="Constant">' '</span> &lt;&lt; arrow &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L47" class="LineNr"> 47 </span>  <span class="Conceal">¦</span> <span class="Identifier">return</span><span class="Delimiter">;</span>
 <span id="L48" class="LineNr"> 48 </span>  <span class="Delimiter">}</span>
 <span id="L49" class="LineNr"> 49 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>contains_key<span class="Delimiter">(</span>Type_abbreviations<span class="Delimiter">,</span> new_type_name<span class="Delimiter">))</span> <span class="Delimiter">{</span>
-<span id="L50" class="LineNr"> 50 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <span class="Constant">&quot;'type' conflict: '&quot;</span> &lt;&lt; new_type_name &lt;&lt; <span class="Constant">&quot;' defined as both '&quot;</span> &lt;&lt; names_to_string_without_quotes<span class="Delimiter">(</span>get<span class="Delimiter">(</span>Type_abbreviations<span class="Delimiter">,</span> new_type_name<span class="Delimiter">))</span> &lt;&lt; <span class="Constant">&quot;' and '&quot;</span> &lt;&lt; old &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L50" class="LineNr"> 50 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <span class="Constant">&quot;'type' conflict: '&quot;</span> &lt;&lt; new_type_name &lt;&lt; <span class="Constant">&quot;' defined as both '&quot;</span> &lt;&lt; names_to_string_without_quotes<span class="Delimiter">(</span>get<span class="Delimiter">(</span>Type_abbreviations<span class="Delimiter">,</span> new_type_name<span class="Delimiter">))</span> &lt;&lt; <span class="Constant">&quot;' and '&quot;</span> &lt;&lt; old &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L51" class="LineNr"> 51 </span>  <span class="Conceal">¦</span> <span class="Identifier">return</span><span class="Delimiter">;</span>
 <span id="L52" class="LineNr"> 52 </span>  <span class="Delimiter">}</span>
-<span id="L53" class="LineNr"> 53 </span>  <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">9990</span><span class="Delimiter">,</span> <span class="Constant">&quot;type&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;alias &quot;</span> &lt;&lt; new_type_name &lt;&lt; <span class="Constant">&quot; = &quot;</span> &lt;&lt; old &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L53" class="LineNr"> 53 </span>  <a href='003trace.cc.html#L167'>trace</a><span class="Delimiter">(</span><span class="Constant">9990</span><span class="Delimiter">,</span> <span class="Constant">&quot;type&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;alias &quot;</span> &lt;&lt; new_type_name &lt;&lt; <span class="Constant">&quot; = &quot;</span> &lt;&lt; old &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L54" class="LineNr"> 54 </span>  type_tree* old_type = <a href='018type_abbreviations.cc.html#L58'>new_type_tree</a><span class="Delimiter">(</span>old<span class="Delimiter">);</span>
 <span id="L55" class="LineNr"> 55 </span>  <a href='001help.cc.html#L221'>put</a><span class="Delimiter">(</span>Type_abbreviations<span class="Delimiter">,</span> new_type_name<span class="Delimiter">,</span> old_type<span class="Delimiter">);</span>
 <span id="L56" class="LineNr"> 56 </span><span class="Delimiter">}</span>
@@ -172,7 +172,7 @@ if ('onhashchange' in window) {
 <span id="L107" class="LineNr">107 </span>atexit<span class="Delimiter">(</span><a href='018type_abbreviations.cc.html#L117'>clear_type_abbreviations</a><span class="Delimiter">);</span>
 <span id="L108" class="LineNr">108 </span><span class="Delimiter">:(code)</span>
 <span id="L109" class="LineNr">109 </span><span class="Normal">void</span> <a href='018type_abbreviations.cc.html#L109'>restore_type_abbreviations</a><span class="Delimiter">()</span> <span class="Delimiter">{</span>
-<span id="L110" class="LineNr">110 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span>map&lt;string<span class="Delimiter">,</span> type_tree*&gt;::iterator p = Type_abbreviations<span class="Delimiter">.</span>begin<span class="Delimiter">();</span>  p != Type_abbreviations<span class="Delimiter">.</span><a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>  ++p<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L110" class="LineNr">110 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span>map&lt;string<span class="Delimiter">,</span> type_tree*&gt;::iterator p = Type_abbreviations<span class="Delimiter">.</span>begin<span class="Delimiter">();</span>  p != Type_abbreviations<span class="Delimiter">.</span><a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>  ++p<span class="Delimiter">)</span> <span class="Delimiter">{</span>
 <span id="L111" class="LineNr">111 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>!contains_key<span class="Delimiter">(</span>Type_abbreviations_snapshot<span class="Delimiter">,</span> p<span class="Delimiter">-&gt;</span>first<span class="Delimiter">))</span>
 <span id="L112" class="LineNr">112 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">delete</span> p<span class="Delimiter">-&gt;</span>second<span class="Delimiter">;</span>
 <span id="L113" class="LineNr">113 </span>  <span class="Delimiter">}</span>
@@ -180,7 +180,7 @@ if ('onhashchange' in window) {
 <span id="L115" class="LineNr">115 </span>  Type_abbreviations = Type_abbreviations_snapshot<span class="Delimiter">;</span>
 <span id="L116" class="LineNr">116 </span><span class="Delimiter">}</span>
 <span id="L117" class="LineNr">117 </span><span class="Normal">void</span> <a href='018type_abbreviations.cc.html#L117'>clear_type_abbreviations</a><span class="Delimiter">()</span> <span class="Delimiter">{</span>
-<span id="L118" class="LineNr">118 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span>map&lt;string<span class="Delimiter">,</span> type_tree*&gt;::iterator p = Type_abbreviations<span class="Delimiter">.</span>begin<span class="Delimiter">();</span>  p != Type_abbreviations<span class="Delimiter">.</span><a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>  ++p<span class="Delimiter">)</span>
+<span id="L118" class="LineNr">118 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span>map&lt;string<span class="Delimiter">,</span> type_tree*&gt;::iterator p = Type_abbreviations<span class="Delimiter">.</span>begin<span class="Delimiter">();</span>  p != Type_abbreviations<span class="Delimiter">.</span><a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>  ++p<span class="Delimiter">)</span>
 <span id="L119" class="LineNr">119 </span>  <span class="Conceal">¦</span> <span class="Normal">delete</span> p<span class="Delimiter">-&gt;</span>second<span class="Delimiter">;</span>
 <span id="L120" class="LineNr">120 </span>  Type_abbreviations<span class="Delimiter">.</span><a href='050scenario.cc.html#L60'>clear</a><span class="Delimiter">();</span>
 <span id="L121" class="LineNr">121 </span><span class="Delimiter">}</span>
@@ -233,17 +233,17 @@ if ('onhashchange' in window) {
 <span id="L168" class="LineNr">168 </span><span class="Delimiter">}</span>
 <span id="L169" class="LineNr">169 </span>
 <span id="L170" class="LineNr">170 </span><span class="Normal">void</span> expand_type_abbreviations<span class="Delimiter">(</span><span class="Normal">const</span> recipe&amp; caller<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L171" class="LineNr">171 </span>  <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">9991</span><span class="Delimiter">,</span> <span class="Constant">&quot;transform&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;--- expand type abbreviations in <a href='010vm.cc.html#L19'>recipe</a> '&quot;</span> &lt;&lt; caller<span class="Delimiter">.</span>name &lt;&lt; <span class="Constant">&quot;'&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L171" class="LineNr">171 </span>  <a href='003trace.cc.html#L167'>trace</a><span class="Delimiter">(</span><span class="Constant">9991</span><span class="Delimiter">,</span> <span class="Constant">&quot;transform&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;--- expand type abbreviations in <a href='010vm.cc.html#L19'>recipe</a> '&quot;</span> &lt;&lt; caller<span class="Delimiter">.</span>name &lt;&lt; <span class="Constant">&quot;'&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L172" class="LineNr">172 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> i = <span class="Constant">0</span><span class="Delimiter">;</span>  i &lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>caller<span class="Delimiter">.</span>steps<span class="Delimiter">);</span>  ++i<span class="Delimiter">)</span> <span class="Delimiter">{</span>
 <span id="L173" class="LineNr">173 </span>  <span class="Conceal">¦</span> <span class="Normal">const</span> instruction&amp; inst = caller<span class="Delimiter">.</span>steps<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">);</span>
-<span id="L174" class="LineNr">174 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">9991</span><span class="Delimiter">,</span> <span class="Constant">&quot;transform&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;instruction '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; end<span class="Delimiter">();</span>
+<span id="L174" class="LineNr">174 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L167'>trace</a><span class="Delimiter">(</span><span class="Constant">9991</span><span class="Delimiter">,</span> <span class="Constant">&quot;transform&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;instruction '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; end<span class="Delimiter">();</span>
 <span id="L175" class="LineNr">175 </span>  <span class="Conceal">¦</span> <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">long</span> <span class="Normal">int</span> i = <span class="Constant">0</span><span class="Delimiter">;</span>  i &lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">);</span>  ++i<span class="Delimiter">)</span> <span class="Delimiter">{</span>
 <span id="L176" class="LineNr">176 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> expand_type_abbreviations<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">).</span>type<span class="Delimiter">);</span>
-<span id="L177" class="LineNr">177 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">9992</span><span class="Delimiter">,</span> <span class="Constant">&quot;transform&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;ingredient type after expanding abbreviations: &quot;</span> &lt;&lt; names_to_string<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">).</span>type<span class="Delimiter">)</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L177" class="LineNr">177 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L167'>trace</a><span class="Delimiter">(</span><span class="Constant">9992</span><span class="Delimiter">,</span> <span class="Constant">&quot;transform&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;ingredient type after expanding abbreviations: &quot;</span> &lt;&lt; names_to_string<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">).</span>type<span class="Delimiter">)</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L178" class="LineNr">178 </span>  <span class="Conceal">¦</span> <span class="Delimiter">}</span>
 <span id="L179" class="LineNr">179 </span>  <span class="Conceal">¦</span> <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">long</span> <span class="Normal">int</span> i = <span class="Constant">0</span><span class="Delimiter">;</span>  i &lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>products<span class="Delimiter">);</span>  ++i<span class="Delimiter">)</span> <span class="Delimiter">{</span>
 <span id="L180" class="LineNr">180 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> expand_type_abbreviations<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">).</span>type<span class="Delimiter">);</span>
-<span id="L181" class="LineNr">181 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">9992</span><span class="Delimiter">,</span> <span class="Constant">&quot;transform&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;product type after expanding abbreviations: &quot;</span> &lt;&lt; names_to_string<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">).</span>type<span class="Delimiter">)</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L181" class="LineNr">181 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L167'>trace</a><span class="Delimiter">(</span><span class="Constant">9992</span><span class="Delimiter">,</span> <span class="Constant">&quot;transform&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;product type after expanding abbreviations: &quot;</span> &lt;&lt; names_to_string<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">).</span>type<span class="Delimiter">)</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L182" class="LineNr">182 </span>  <span class="Conceal">¦</span> <span class="Delimiter">}</span>
 <span id="L183" class="LineNr">183 </span>  <span class="Delimiter">}</span>
 <span id="L184" class="LineNr">184 </span>  <span class="Comment">// End Expand Type Abbreviations(caller)</span>
diff --git a/html/020run.cc.html b/html/020run.cc.html
index 48ff966f..92d9c218 100644
--- a/html/020run.cc.html
+++ b/html/020run.cc.html
@@ -129,18 +129,18 @@ if ('onhashchange' in window) {
 <span id="L62" class="LineNr"> 62 </span><span class="Normal">void</span> run_current_routine<span class="Delimiter">()</span> <span class="Delimiter">{</span>
 <span id="L63" class="LineNr"> 63 </span>  <span class="Normal">while</span> <span class="Delimiter">(</span><a href='073scheduler.cc.html#L28'>should_continue_running</a><span class="Delimiter">(</span>Current_routine<span class="Delimiter">))</span> <span class="Delimiter">{</span>  <span class="Comment">// beware: may modify Current_routine</span>
 <span id="L64" class="LineNr"> 64 </span>  <span class="Conceal">¦</span> <span class="Comment">// Running One Instruction</span>
-<span id="L65" class="LineNr"> 65 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span><a href='026call.cc.html#L87'>current_instruction</a><span class="Delimiter">().</span>is_label<span class="Delimiter">)</span> <span class="Delimiter">{</span> ++current_step_index<span class="Delimiter">();</span>  <span class="Identifier">continue</span><span class="Delimiter">;</span> <span class="Delimiter">}</span>
-<span id="L66" class="LineNr"> 66 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span>Initial_callstack_depth + Trace_stream<span class="Delimiter">-&gt;</span>callstack_depth<span class="Delimiter">,</span> <span class="Constant">&quot;run&quot;</span><span class="Delimiter">)</span> &lt;&lt; <a href='028call_return.cc.html#L163'>to_string</a><span class="Delimiter">(</span><a href='026call.cc.html#L87'>current_instruction</a><span class="Delimiter">())</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L65" class="LineNr"> 65 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span><a href='026call.cc.html#L89'>current_instruction</a><span class="Delimiter">().</span>is_label<span class="Delimiter">)</span> <span class="Delimiter">{</span> ++current_step_index<span class="Delimiter">();</span>  <span class="Identifier">continue</span><span class="Delimiter">;</span> <span class="Delimiter">}</span>
+<span id="L66" class="LineNr"> 66 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L167'>trace</a><span class="Delimiter">(</span>Initial_callstack_depth + Trace_stream<span class="Delimiter">-&gt;</span>callstack_depth<span class="Delimiter">,</span> <span class="Constant">&quot;run&quot;</span><span class="Delimiter">)</span> &lt;&lt; <a href='028call_return.cc.html#L163'>to_string</a><span class="Delimiter">(</span><a href='026call.cc.html#L89'>current_instruction</a><span class="Delimiter">())</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L67" class="LineNr"> 67 </span><span class="CommentedCode">//?     if (Foo) cerr &lt;&lt; &quot;run: &quot; &lt;&lt; to_string(current_instruction()) &lt;&lt; '\n';</span>
 <span id="L68" class="LineNr"> 68 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span><a href='001help.cc.html#L229'>get_or_insert</a><span class="Delimiter">(</span>Memory<span class="Delimiter">,</span> <span class="Constant">0</span><span class="Delimiter">)</span> != <span class="Constant">0</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L69" class="LineNr"> 69 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <span class="Constant">&quot;something wrote to location 0; this should never happen</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L69" class="LineNr"> 69 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <span class="Constant">&quot;something wrote to location 0; this should never happen</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L70" class="LineNr"> 70 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='001help.cc.html#L221'>put</a><span class="Delimiter">(</span>Memory<span class="Delimiter">,</span> <span class="Constant">0</span><span class="Delimiter">,</span> <span class="Constant">0</span><span class="Delimiter">);</span>
 <span id="L71" class="LineNr"> 71 </span>  <span class="Conceal">¦</span> <span class="Delimiter">}</span>
 <span id="L72" class="LineNr"> 72 </span>  <span class="Conceal">¦</span> <span class="Comment">// read all ingredients from memory, each potentially spanning multiple locations</span>
 <span id="L73" class="LineNr"> 73 </span>  <span class="Conceal">¦</span> vector&lt;vector&lt;<span class="Normal">double</span>&gt; &gt; ingredients<span class="Delimiter">;</span>
 <span id="L74" class="LineNr"> 74 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>should_copy_ingredients<span class="Delimiter">())</span> <span class="Delimiter">{</span>
-<span id="L75" class="LineNr"> 75 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> i = <span class="Constant">0</span><span class="Delimiter">;</span>  i &lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span><a href='026call.cc.html#L87'>current_instruction</a><span class="Delimiter">().</span>ingredients<span class="Delimiter">);</span>  ++i<span class="Delimiter">)</span>
-<span id="L76" class="LineNr"> 76 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> ingredients<span class="Delimiter">.</span>push_back<span class="Delimiter">(</span>read_memory<span class="Delimiter">(</span><a href='026call.cc.html#L87'>current_instruction</a><span class="Delimiter">().</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">)));</span>
+<span id="L75" class="LineNr"> 75 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> i = <span class="Constant">0</span><span class="Delimiter">;</span>  i &lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span><a href='026call.cc.html#L89'>current_instruction</a><span class="Delimiter">().</span>ingredients<span class="Delimiter">);</span>  ++i<span class="Delimiter">)</span>
+<span id="L76" class="LineNr"> 76 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> ingredients<span class="Delimiter">.</span>push_back<span class="Delimiter">(</span>read_memory<span class="Delimiter">(</span><a href='026call.cc.html#L89'>current_instruction</a><span class="Delimiter">().</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">)));</span>
 <span id="L77" class="LineNr"> 77 </span>  <span class="Conceal">¦</span> <span class="Delimiter">}</span>
 <span id="L78" class="LineNr"> 78 </span>  <span class="Conceal">¦</span> <span class="Comment">// instructions below will write to 'products'</span>
 <span id="L79" class="LineNr"> 79 </span>  <span class="Conceal">¦</span> vector&lt;vector&lt;<span class="Normal">double</span>&gt; &gt; products<span class="Delimiter">;</span>
@@ -150,26 +150,26 @@ if ('onhashchange' in window) {
 <span id="L83" class="LineNr"> 83 </span>  <span class="Conceal">¦</span> <span class="Comment">//: instruction.</span>
 <span id="L84" class="LineNr"> 84 </span>  <span class="Conceal">¦</span> <span class="Normal">bool</span> write_products = <span class="Constant">true</span><span class="Delimiter">;</span>
 <span id="L85" class="LineNr"> 85 </span>  <span class="Conceal">¦</span> <span class="Normal">bool</span> fall_through_to_next_instruction = <span class="Constant">true</span><span class="Delimiter">;</span>
-<span id="L86" class="LineNr"> 86 </span>  <span class="Conceal">¦</span> <span class="Normal">switch</span> <span class="Delimiter">(</span><a href='026call.cc.html#L87'>current_instruction</a><span class="Delimiter">().</span>operation<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L86" class="LineNr"> 86 </span>  <span class="Conceal">¦</span> <span class="Normal">switch</span> <span class="Delimiter">(</span><a href='026call.cc.html#L89'>current_instruction</a><span class="Delimiter">().</span>operation<span class="Delimiter">)</span> <span class="Delimiter">{</span>
 <span id="L87" class="LineNr"> 87 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Comment">// Primitive Recipe Implementations</span>
 <span id="L88" class="LineNr"> 88 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">case</span> <a href='010vm.cc.html#L189'>COPY</a>: <span class="Delimiter">{</span>
-<span id="L89" class="LineNr"> 89 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> copy<span class="Delimiter">(</span>ingredients<span class="Delimiter">.</span>begin<span class="Delimiter">(),</span> ingredients<span class="Delimiter">.</span><a href='003trace.cc.html#L197'>end</a><span class="Delimiter">(),</span> inserter<span class="Delimiter">(</span>products<span class="Delimiter">,</span> products<span class="Delimiter">.</span>begin<span class="Delimiter">()));</span>
+<span id="L89" class="LineNr"> 89 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> copy<span class="Delimiter">(</span>ingredients<span class="Delimiter">.</span>begin<span class="Delimiter">(),</span> ingredients<span class="Delimiter">.</span><a href='003trace.cc.html#L203'>end</a><span class="Delimiter">(),</span> inserter<span class="Delimiter">(</span>products<span class="Delimiter">,</span> products<span class="Delimiter">.</span>begin<span class="Delimiter">()));</span>
 <span id="L90" class="LineNr"> 90 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L91" class="LineNr"> 91 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Delimiter">}</span>
 <span id="L92" class="LineNr"> 92 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Comment">// End Primitive Recipe Implementations</span>
 <span id="L93" class="LineNr"> 93 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">default</span>: <span class="Delimiter">{</span>
-<span id="L94" class="LineNr"> 94 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> cout &lt;&lt; <span class="Constant">&quot;not a primitive op: &quot;</span> &lt;&lt; <a href='026call.cc.html#L87'>current_instruction</a><span class="Delimiter">().</span>operation &lt;&lt; <span class="cSpecial">'\n'</span><span class="Delimiter">;</span>
+<span id="L94" class="LineNr"> 94 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> cout &lt;&lt; <span class="Constant">&quot;not a primitive op: &quot;</span> &lt;&lt; <a href='026call.cc.html#L89'>current_instruction</a><span class="Delimiter">().</span>operation &lt;&lt; <span class="cSpecial">'\n'</span><span class="Delimiter">;</span>
 <span id="L95" class="LineNr"> 95 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Delimiter">}</span>
 <span id="L96" class="LineNr"> 96 </span>  <span class="Conceal">¦</span> <span class="Delimiter">}</span>
 <span id="L97" class="LineNr"> 97 </span>  <span class="Conceal">¦</span> <span class="Comment">//: used by a later layer</span>
 <span id="L98" class="LineNr"> 98 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>write_products<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L99" class="LineNr"> 99 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>products<span class="Delimiter">)</span> &lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span><a href='026call.cc.html#L87'>current_instruction</a><span class="Delimiter">().</span>products<span class="Delimiter">))</span> <span class="Delimiter">{</span>
-<span id="L100" class="LineNr">100 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>products<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot; vs &quot;</span> &lt;&lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span><a href='026call.cc.html#L87'>current_instruction</a><span class="Delimiter">().</span>products<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;: failed to write to all products in '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>current_instruction<span class="Delimiter">())</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L99" class="LineNr"> 99 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>products<span class="Delimiter">)</span> &lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span><a href='026call.cc.html#L89'>current_instruction</a><span class="Delimiter">().</span>products<span class="Delimiter">))</span> <span class="Delimiter">{</span>
+<span id="L100" class="LineNr">100 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>products<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot; vs &quot;</span> &lt;&lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span><a href='026call.cc.html#L89'>current_instruction</a><span class="Delimiter">().</span>products<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;: failed to write to all products in '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>current_instruction<span class="Delimiter">())</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L101" class="LineNr">101 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Delimiter">}</span>
 <span id="L102" class="LineNr">102 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">else</span> <span class="Delimiter">{</span>
-<span id="L103" class="LineNr">103 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> i = <span class="Constant">0</span><span class="Delimiter">;</span>  i &lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span><a href='026call.cc.html#L87'>current_instruction</a><span class="Delimiter">().</span>products<span class="Delimiter">);</span>  ++i<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L103" class="LineNr">103 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> i = <span class="Constant">0</span><span class="Delimiter">;</span>  i &lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span><a href='026call.cc.html#L89'>current_instruction</a><span class="Delimiter">().</span>products<span class="Delimiter">);</span>  ++i<span class="Delimiter">)</span> <span class="Delimiter">{</span>
 <span id="L104" class="LineNr">104 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Comment">// Writing Instruction Product(i)</span>
-<span id="L105" class="LineNr">105 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> write_memory<span class="Delimiter">(</span><a href='026call.cc.html#L87'>current_instruction</a><span class="Delimiter">().</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">),</span> products<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">));</span>
+<span id="L105" class="LineNr">105 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> write_memory<span class="Delimiter">(</span><a href='026call.cc.html#L89'>current_instruction</a><span class="Delimiter">().</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">),</span> products<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">));</span>
 <span id="L106" class="LineNr">106 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Delimiter">}</span>
 <span id="L107" class="LineNr">107 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Delimiter">}</span>
 <span id="L108" class="LineNr">108 </span>  <span class="Conceal">¦</span> <span class="Delimiter">}</span>
@@ -196,27 +196,27 @@ if ('onhashchange' in window) {
 <span id="L129" class="LineNr">129 </span><span class="Comment">//: Important that they return references into the current routine.</span>
 <span id="L130" class="LineNr">130 </span>
 <span id="L131" class="LineNr">131 </span><span class="Comment">//: hook replaced in a later layer</span>
-<span id="L132" class="LineNr">132 </span><span class="Normal">int</span>&amp; <a href='026call.cc.html#L82'>current_step_index</a><span class="Delimiter">()</span> <span class="Delimiter">{</span>
+<span id="L132" class="LineNr">132 </span><span class="Normal">int</span>&amp; <a href='026call.cc.html#L84'>current_step_index</a><span class="Delimiter">()</span> <span class="Delimiter">{</span>
 <span id="L133" class="LineNr">133 </span>  <span class="Identifier">return</span> Current_routine<span class="Delimiter">-&gt;</span>running_step_index<span class="Delimiter">;</span>
 <span id="L134" class="LineNr">134 </span><span class="Delimiter">}</span>
 <span id="L135" class="LineNr">135 </span>
 <span id="L136" class="LineNr">136 </span><span class="Comment">//: hook replaced in a later layer</span>
-<span id="L137" class="LineNr">137 </span><a href='010vm.cc.html#L14'>recipe_ordinal</a> <a href='026call.cc.html#L83'>currently_running_recipe</a><span class="Delimiter">()</span> <span class="Delimiter">{</span>
+<span id="L137" class="LineNr">137 </span><a href='010vm.cc.html#L14'>recipe_ordinal</a> <a href='026call.cc.html#L85'>currently_running_recipe</a><span class="Delimiter">()</span> <span class="Delimiter">{</span>
 <span id="L138" class="LineNr">138 </span>  <span class="Identifier">return</span> Current_routine<span class="Delimiter">-&gt;</span>running_recipe<span class="Delimiter">;</span>
 <span id="L139" class="LineNr">139 </span><span class="Delimiter">}</span>
 <span id="L140" class="LineNr">140 </span>
 <span id="L141" class="LineNr">141 </span><span class="Comment">//: hook replaced in a later layer</span>
-<span id="L142" class="LineNr">142 </span><span class="Normal">const</span> string&amp; <a href='026call.cc.html#L85'>current_recipe_name</a><span class="Delimiter">()</span> <span class="Delimiter">{</span>
+<span id="L142" class="LineNr">142 </span><span class="Normal">const</span> string&amp; <a href='026call.cc.html#L87'>current_recipe_name</a><span class="Delimiter">()</span> <span class="Delimiter">{</span>
 <span id="L143" class="LineNr">143 </span>  <span class="Identifier">return</span> get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> Current_routine<span class="Delimiter">-&gt;</span>running_recipe<span class="Delimiter">).</span>name<span class="Delimiter">;</span>
 <span id="L144" class="LineNr">144 </span><span class="Delimiter">}</span>
 <span id="L145" class="LineNr">145 </span>
 <span id="L146" class="LineNr">146 </span><span class="Comment">//: hook replaced in a later layer</span>
-<span id="L147" class="LineNr">147 </span><span class="Normal">const</span> recipe&amp; <a href='026call.cc.html#L84'>current_recipe</a><span class="Delimiter">()</span> <span class="Delimiter">{</span>
+<span id="L147" class="LineNr">147 </span><span class="Normal">const</span> recipe&amp; <a href='026call.cc.html#L86'>current_recipe</a><span class="Delimiter">()</span> <span class="Delimiter">{</span>
 <span id="L148" class="LineNr">148 </span>  <span class="Identifier">return</span> get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> Current_routine<span class="Delimiter">-&gt;</span>running_recipe<span class="Delimiter">);</span>
 <span id="L149" class="LineNr">149 </span><span class="Delimiter">}</span>
 <span id="L150" class="LineNr">150 </span>
 <span id="L151" class="LineNr">151 </span><span class="Comment">//: hook replaced in a later layer</span>
-<span id="L152" class="LineNr">152 </span><span class="Normal">const</span> instruction&amp; <a href='026call.cc.html#L87'>current_instruction</a><span class="Delimiter">()</span> <span class="Delimiter">{</span>
+<span id="L152" class="LineNr">152 </span><span class="Normal">const</span> instruction&amp; <a href='026call.cc.html#L89'>current_instruction</a><span class="Delimiter">()</span> <span class="Delimiter">{</span>
 <span id="L153" class="LineNr">153 </span>  <span class="Identifier">return</span> get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> Current_routine<span class="Delimiter">-&gt;</span>running_recipe<span class="Delimiter">).</span>steps<span class="Delimiter">.</span>at<span class="Delimiter">(</span>Current_routine<span class="Delimiter">-&gt;</span>running_step_index<span class="Delimiter">);</span>
 <span id="L154" class="LineNr">154 </span><span class="Delimiter">}</span>
 <span id="L155" class="LineNr">155 </span>
@@ -266,290 +266,295 @@ if ('onhashchange' in window) {
 <span id="L199" class="LineNr">199 </span><span class="CommentedCode">//? cerr &lt;&lt; to_original_string(get(Recipe, get(Recipe_ordinal, &quot;event-loop&quot;))) &lt;&lt; '\n';</span>
 <span id="L200" class="LineNr">200 </span><span class="CommentedCode">//? DUMP(&quot;&quot;);</span>
 <span id="L201" class="LineNr">201 </span><span class="CommentedCode">//? exit(0);</span>
-<span id="L202" class="LineNr">202 </span><span class="Normal">if</span> <span class="Delimiter">(</span><a href='003trace.cc.html#L192'>trace_contains_errors</a><span class="Delimiter">())</span> <span class="Identifier">return</span> <span class="Constant">1</span><span class="Delimiter">;</span>
-<span id="L203" class="LineNr">203 </span>save_snapshots<span class="Delimiter">();</span>
-<span id="L204" class="LineNr">204 </span>
-<span id="L205" class="LineNr">205 </span><span class="Comment">//: Step 3: if we aren't running tests, locate a recipe called 'main' and</span>
-<span id="L206" class="LineNr">206 </span><span class="Comment">//: start running it.</span>
-<span id="L207" class="LineNr">207 </span><span class="Delimiter">:(before &quot;End Main&quot;)</span>
-<span id="L208" class="LineNr">208 </span><span class="Normal">if</span> <span class="Delimiter">(</span>!Run_tests &amp;&amp; contains_key<span class="Delimiter">(</span>Recipe_ordinal<span class="Delimiter">,</span> <span class="Constant">&quot;main&quot;</span><span class="Delimiter">)</span> &amp;&amp; contains_key<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> get<span class="Delimiter">(</span>Recipe_ordinal<span class="Delimiter">,</span> <span class="Constant">&quot;main&quot;</span><span class="Delimiter">)))</span> <span class="Delimiter">{</span>
-<span id="L209" class="LineNr">209 </span>  <span class="Comment">// Running Main</span>
-<span id="L210" class="LineNr">210 </span>  <a href='000organization.cc.html#L134'>reset</a><span class="Delimiter">();</span>
-<span id="L211" class="LineNr">211 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>Start_tracing<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L212" class="LineNr">212 </span>  <span class="Conceal">¦</span> Trace_stream = <span class="Normal">new</span> trace_stream<span class="Delimiter">;</span>
-<span id="L213" class="LineNr">213 </span>  <span class="Conceal">¦</span> Save_trace = <span class="Constant">true</span><span class="Delimiter">;</span>
-<span id="L214" class="LineNr">214 </span>  <span class="Delimiter">}</span>
-<span id="L215" class="LineNr">215 </span>  <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">2</span><span class="Delimiter">,</span> <span class="Constant">&quot;run&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;=== Starting to run&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
-<span id="L216" class="LineNr">216 </span>  assert<span class="Delimiter">(</span>Num_calls_to_transform_all == <span class="Constant">1</span><span class="Delimiter">);</span>
-<span id="L217" class="LineNr">217 </span>  <a href='073scheduler.cc.html#L122'>run_main</a><span class="Delimiter">(</span>argc<span class="Delimiter">,</span> argv<span class="Delimiter">);</span>
-<span id="L218" class="LineNr">218 </span><span class="Delimiter">}</span>
-<span id="L219" class="LineNr">219 </span><span class="Delimiter">:(code)</span>
-<span id="L220" class="LineNr">220 </span><span class="Normal">void</span> <a href='073scheduler.cc.html#L122'>run_main</a><span class="Delimiter">(</span><span class="Normal">int</span> argc<span class="Delimiter">,</span> <span class="Normal">char</span>* argv[]<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L221" class="LineNr">221 </span>  <a href='010vm.cc.html#L14'>recipe_ordinal</a> r = get<span class="Delimiter">(</span>Recipe_ordinal<span class="Delimiter">,</span> <span class="Constant">&quot;main&quot;</span><span class="Delimiter">);</span>
-<span id="L222" class="LineNr">222 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>r<span class="Delimiter">)</span> run<span class="Delimiter">(</span>r<span class="Delimiter">);</span>
-<span id="L223" class="LineNr">223 </span><span class="Delimiter">}</span>
-<span id="L224" class="LineNr">224 </span>
-<span id="L225" class="LineNr">225 </span><span class="Comment">//: By default we don't maintain the trace while running main because its</span>
-<span id="L226" class="LineNr">226 </span><span class="Comment">//: overheads can grow rapidly. However, it's useful when debugging.</span>
-<span id="L227" class="LineNr">227 </span><span class="Delimiter">:(before &quot;End Globals&quot;)</span>
-<span id="L228" class="LineNr">228 </span><span class="Normal">bool</span> Start_tracing = <span class="Constant">false</span><span class="Delimiter">;</span>
-<span id="L229" class="LineNr">229 </span><span class="Delimiter">:(before &quot;End Commandline Options(*arg)&quot;)</span>
-<span id="L230" class="LineNr">230 </span><span class="Normal">else</span> <span class="Normal">if</span> <span class="Delimiter">(</span><a href='001help.cc.html#L73'>is_equal</a><span class="Delimiter">(</span>*arg<span class="Delimiter">,</span> <span class="Constant">&quot;--trace&quot;</span><span class="Delimiter">))</span> <span class="Delimiter">{</span>
-<span id="L231" class="LineNr">231 </span>  Start_tracing = <span class="Constant">true</span><span class="Delimiter">;</span>
-<span id="L232" class="LineNr">232 </span><span class="Delimiter">}</span>
-<span id="L233" class="LineNr">233 </span>
-<span id="L234" class="LineNr">234 </span><span class="Delimiter">:(code)</span>
-<span id="L235" class="LineNr">235 </span><span class="Normal">void</span> cleanup_main<span class="Delimiter">()</span> <span class="Delimiter">{</span>
-<span id="L236" class="LineNr">236 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>Save_trace &amp;&amp; Trace_stream<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L237" class="LineNr">237 </span>  <span class="Conceal">¦</span> cerr &lt;&lt; <span class="Constant">&quot;writing <a href='003trace.cc.html#L161'>trace</a> to 'last_run'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span><span class="Delimiter">;</span>
-<span id="L238" class="LineNr">238 </span>  <span class="Conceal">¦</span> ofstream fout<span class="Delimiter">(</span><span class="Constant">&quot;last_run&quot;</span><span class="Delimiter">);</span>
-<span id="L239" class="LineNr">239 </span>  <span class="Conceal">¦</span> fout &lt;&lt; Trace_stream<span class="Delimiter">-&gt;</span><a href='003trace.cc.html#L143'>readable_contents</a><span class="Delimiter">(</span><span class="Constant">&quot;&quot;</span><span class="Delimiter">);</span>
-<span id="L240" class="LineNr">240 </span>  <span class="Conceal">¦</span> fout<span class="Delimiter">.</span>close<span class="Delimiter">();</span>
-<span id="L241" class="LineNr">241 </span>  <span class="Delimiter">}</span>
-<span id="L242" class="LineNr">242 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>Trace_stream<span class="Delimiter">)</span> <span class="Normal">delete</span> Trace_stream<span class="Delimiter">,</span> Trace_stream = <span class="Constant">NULL</span><span class="Delimiter">;</span>
-<span id="L243" class="LineNr">243 </span><span class="Delimiter">}</span>
-<span id="L244" class="LineNr">244 </span><span class="Delimiter">:(before &quot;End One-time Setup&quot;)</span>
-<span id="L245" class="LineNr">245 </span>atexit<span class="Delimiter">(</span>cleanup_main<span class="Delimiter">);</span>
-<span id="L246" class="LineNr">246 </span>
-<span id="L247" class="LineNr">247 </span><span class="Delimiter">:(code)</span>
-<span id="L248" class="LineNr">248 </span><span class="Normal">void</span> load_file_or_directory<span class="Delimiter">(</span>string filename<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L249" class="LineNr">249 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>is_directory<span class="Delimiter">(</span>filename<span class="Delimiter">))</span> <span class="Delimiter">{</span>
-<span id="L250" class="LineNr">250 </span>  <span class="Conceal">¦</span> load_all<span class="Delimiter">(</span>filename<span class="Delimiter">);</span>
-<span id="L251" class="LineNr">251 </span>  <span class="Conceal">¦</span> <span class="Identifier">return</span><span class="Delimiter">;</span>
-<span id="L252" class="LineNr">252 </span>  <span class="Delimiter">}</span>
-<span id="L253" class="LineNr">253 </span>  ifstream fin<span class="Delimiter">(</span>filename<span class="Delimiter">.</span>c_str<span class="Delimiter">());</span>
-<span id="L254" class="LineNr">254 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!fin<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L255" class="LineNr">255 </span>  <span class="Conceal">¦</span> cerr &lt;&lt; <span class="Constant">&quot;no such file '&quot;</span> &lt;&lt; filename &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>  <span class="Comment">// don't raise, just warn. just in case it's just a name for a scenario to run.</span>
-<span id="L256" class="LineNr">256 </span>  <span class="Conceal">¦</span> <span class="Identifier">return</span><span class="Delimiter">;</span>
-<span id="L257" class="LineNr">257 </span>  <span class="Delimiter">}</span>
-<span id="L258" class="LineNr">258 </span>  <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">9990</span><span class="Delimiter">,</span> <span class="Constant">&quot;load&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;=== &quot;</span> &lt;&lt; filename &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
-<span id="L259" class="LineNr">259 </span>  load<span class="Delimiter">(</span>fin<span class="Delimiter">);</span>
-<span id="L260" class="LineNr">260 </span>  fin<span class="Delimiter">.</span>close<span class="Delimiter">();</span>
-<span id="L261" class="LineNr">261 </span><span class="Delimiter">}</span>
-<span id="L262" class="LineNr">262 </span>
-<span id="L263" class="LineNr">263 </span><span class="Normal">bool</span> is_directory<span class="Delimiter">(</span>string path<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L264" class="LineNr">264 </span>  <span class="Normal">struct</span> stat info<span class="Delimiter">;</span>
-<span id="L265" class="LineNr">265 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>stat<span class="Delimiter">(</span>path<span class="Delimiter">.</span>c_str<span class="Delimiter">(),</span> &amp;info<span class="Delimiter">))</span> <span class="Identifier">return</span> <span class="Constant">false</span><span class="Delimiter">;</span>  <span class="Comment">// error</span>
-<span id="L266" class="LineNr">266 </span>  <span class="Identifier">return</span> info<span class="Delimiter">.</span>st_mode &amp; S_IFDIR<span class="Delimiter">;</span>
-<span id="L267" class="LineNr">267 </span><span class="Delimiter">}</span>
-<span id="L268" class="LineNr">268 </span>
-<span id="L269" class="LineNr">269 </span><span class="Normal">void</span> load_all<span class="Delimiter">(</span>string dir<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L270" class="LineNr">270 </span>  dirent** files<span class="Delimiter">;</span>
-<span id="L271" class="LineNr">271 </span>  <span class="Normal">int</span> num_files = scandir<span class="Delimiter">(</span>dir<span class="Delimiter">.</span>c_str<span class="Delimiter">(),</span> &amp;files<span class="Delimiter">,</span> <span class="Constant">NULL</span><span class="Delimiter">,</span> alphasort<span class="Delimiter">);</span>
-<span id="L272" class="LineNr">272 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> i = <span class="Constant">0</span><span class="Delimiter">;</span>  i &lt; num_files<span class="Delimiter">;</span>  ++i<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L273" class="LineNr">273 </span>  <span class="Conceal">¦</span> string curr_file = files[i]<span class="Delimiter">-&gt;</span>d_name<span class="Delimiter">;</span>
-<span id="L274" class="LineNr">274 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>isdigit<span class="Delimiter">(</span>curr_file<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">)))</span>
-<span id="L275" class="LineNr">275 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> load_file_or_directory<span class="Delimiter">(</span>dir+<span class="Constant">'/'</span>+curr_file<span class="Delimiter">);</span>
-<span id="L276" class="LineNr">276 </span>  <span class="Conceal">¦</span> free<span class="Delimiter">(</span>files[i]<span class="Delimiter">);</span>
-<span id="L277" class="LineNr">277 </span>  <span class="Conceal">¦</span> files[i] = <span class="Constant">NULL</span><span class="Delimiter">;</span>
-<span id="L278" class="LineNr">278 </span>  <span class="Delimiter">}</span>
-<span id="L279" class="LineNr">279 </span>  free<span class="Delimiter">(</span>files<span class="Delimiter">);</span>
-<span id="L280" class="LineNr">280 </span><span class="Delimiter">}</span>
-<span id="L281" class="LineNr">281 </span><span class="Delimiter">:(before &quot;End Includes&quot;)</span>
-<span id="L282" class="LineNr">282 </span><span class="PreProc">#include </span><span class="Constant">&lt;dirent.h&gt;</span>
-<span id="L283" class="LineNr">283 </span><span class="PreProc">#include </span><span class="Constant">&lt;sys/stat.h&gt;</span>
-<span id="L284" class="LineNr">284 </span>
-<span id="L285" class="LineNr">285 </span><span class="SalientComment">//:: Reading from memory, writing to memory.</span>
+<span id="L202" class="LineNr">202 </span><span class="Normal">if</span> <span class="Delimiter">(</span><a href='003trace.cc.html#L198'>trace_contains_errors</a><span class="Delimiter">())</span> <span class="Delimiter">{</span>
+<span id="L203" class="LineNr">203 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>Start_tracing &amp;&amp; Trace_stream<span class="Delimiter">)</span> Trace_stream<span class="Delimiter">-&gt;</span><a href='003trace.cc.html#L120'>dump</a><span class="Delimiter">();</span>
+<span id="L204" class="LineNr">204 </span>  <span class="Identifier">return</span> <span class="Constant">1</span><span class="Delimiter">;</span>
+<span id="L205" class="LineNr">205 </span><span class="Delimiter">}</span>
+<span id="L206" class="LineNr">206 </span>save_snapshots<span class="Delimiter">();</span>
+<span id="L207" class="LineNr">207 </span>
+<span id="L208" class="LineNr">208 </span><span class="Comment">//: Step 3: if we aren't running tests, locate a recipe called 'main' and</span>
+<span id="L209" class="LineNr">209 </span><span class="Comment">//: start running it.</span>
+<span id="L210" class="LineNr">210 </span><span class="Delimiter">:(before &quot;End Main&quot;)</span>
+<span id="L211" class="LineNr">211 </span><span class="Normal">if</span> <span class="Delimiter">(</span>!Run_tests &amp;&amp; contains_key<span class="Delimiter">(</span>Recipe_ordinal<span class="Delimiter">,</span> <span class="Constant">&quot;main&quot;</span><span class="Delimiter">)</span> &amp;&amp; contains_key<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> get<span class="Delimiter">(</span>Recipe_ordinal<span class="Delimiter">,</span> <span class="Constant">&quot;main&quot;</span><span class="Delimiter">)))</span> <span class="Delimiter">{</span>
+<span id="L212" class="LineNr">212 </span>  <span class="Comment">// Running Main</span>
+<span id="L213" class="LineNr">213 </span>  <a href='000organization.cc.html#L134'>reset</a><span class="Delimiter">();</span>
+<span id="L214" class="LineNr">214 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>Start_tracing &amp;&amp; Trace_stream == <span class="Constant">NULL</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L215" class="LineNr">215 </span>  <span class="Conceal">¦</span> Trace_stream = <span class="Normal">new</span> trace_stream<span class="Delimiter">;</span>
+<span id="L216" class="LineNr">216 </span>  <span class="Conceal">¦</span> Save_trace = <span class="Constant">true</span><span class="Delimiter">;</span>
+<span id="L217" class="LineNr">217 </span>  <span class="Delimiter">}</span>
+<span id="L218" class="LineNr">218 </span>  <a href='003trace.cc.html#L167'>trace</a><span class="Delimiter">(</span><span class="Constant">2</span><span class="Delimiter">,</span> <span class="Constant">&quot;run&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;=== Starting to run&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
+<span id="L219" class="LineNr">219 </span>  assert<span class="Delimiter">(</span>Num_calls_to_transform_all == <span class="Constant">1</span><span class="Delimiter">);</span>
+<span id="L220" class="LineNr">220 </span>  <a href='073scheduler.cc.html#L122'>run_main</a><span class="Delimiter">(</span>argc<span class="Delimiter">,</span> argv<span class="Delimiter">);</span>
+<span id="L221" class="LineNr">221 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>Start_tracing &amp;&amp; Trace_stream<span class="Delimiter">)</span> Trace_stream<span class="Delimiter">-&gt;</span><a href='003trace.cc.html#L120'>dump</a><span class="Delimiter">();</span>
+<span id="L222" class="LineNr">222 </span><span class="Delimiter">}</span>
+<span id="L223" class="LineNr">223 </span><span class="Delimiter">:(code)</span>
+<span id="L224" class="LineNr">224 </span><span class="Normal">void</span> <a href='073scheduler.cc.html#L122'>run_main</a><span class="Delimiter">(</span><span class="Normal">int</span> argc<span class="Delimiter">,</span> <span class="Normal">char</span>* argv[]<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L225" class="LineNr">225 </span>  <a href='010vm.cc.html#L14'>recipe_ordinal</a> r = get<span class="Delimiter">(</span>Recipe_ordinal<span class="Delimiter">,</span> <span class="Constant">&quot;main&quot;</span><span class="Delimiter">);</span>
+<span id="L226" class="LineNr">226 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>r<span class="Delimiter">)</span> run<span class="Delimiter">(</span>r<span class="Delimiter">);</span>
+<span id="L227" class="LineNr">227 </span><span class="Delimiter">}</span>
+<span id="L228" class="LineNr">228 </span>
+<span id="L229" class="LineNr">229 </span><span class="Comment">//: By default we don't maintain the trace while running main because its</span>
+<span id="L230" class="LineNr">230 </span><span class="Comment">//: overheads can grow rapidly. However, it's useful when debugging.</span>
+<span id="L231" class="LineNr">231 </span><span class="Delimiter">:(before &quot;End Globals&quot;)</span>
+<span id="L232" class="LineNr">232 </span><span class="Normal">bool</span> Start_tracing = <span class="Constant">false</span><span class="Delimiter">;</span>
+<span id="L233" class="LineNr">233 </span><span class="Delimiter">:(before &quot;End Commandline Options(*arg)&quot;)</span>
+<span id="L234" class="LineNr">234 </span><span class="Normal">else</span> <span class="Normal">if</span> <span class="Delimiter">(</span><a href='001help.cc.html#L73'>is_equal</a><span class="Delimiter">(</span>*arg<span class="Delimiter">,</span> <span class="Constant">&quot;--trace&quot;</span><span class="Delimiter">))</span> <span class="Delimiter">{</span>
+<span id="L235" class="LineNr">235 </span>  Start_tracing = <span class="Constant">true</span><span class="Delimiter">;</span>
+<span id="L236" class="LineNr">236 </span><span class="Delimiter">}</span>
+<span id="L237" class="LineNr">237 </span>
+<span id="L238" class="LineNr">238 </span><span class="Delimiter">:(code)</span>
+<span id="L239" class="LineNr">239 </span><span class="Normal">void</span> cleanup_main<span class="Delimiter">()</span> <span class="Delimiter">{</span>
+<span id="L240" class="LineNr">240 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!Trace_stream<span class="Delimiter">)</span> <span class="Identifier">return</span><span class="Delimiter">;</span>
+<span id="L241" class="LineNr">241 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>Save_trace<span class="Delimiter">)</span>
+<span id="L242" class="LineNr">242 </span>  <span class="Conceal">¦</span> Trace_stream<span class="Delimiter">-&gt;</span><a href='003trace.cc.html#L120'>dump</a><span class="Delimiter">();</span>
+<span id="L243" class="LineNr">243 </span>  <span class="Normal">delete</span> Trace_stream<span class="Delimiter">;</span>
+<span id="L244" class="LineNr">244 </span>  Trace_stream = <span class="Constant">NULL</span><span class="Delimiter">;</span>
+<span id="L245" class="LineNr">245 </span><span class="Delimiter">}</span>
+<span id="L246" class="LineNr">246 </span><span class="Delimiter">:(before &quot;End One-time Setup&quot;)</span>
+<span id="L247" class="LineNr">247 </span>atexit<span class="Delimiter">(</span>cleanup_main<span class="Delimiter">);</span>
+<span id="L248" class="LineNr">248 </span>
+<span id="L249" class="LineNr">249 </span><span class="Delimiter">:(code)</span>
+<span id="L250" class="LineNr">250 </span><span class="Normal">void</span> load_file_or_directory<span class="Delimiter">(</span>string filename<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L251" class="LineNr">251 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>is_directory<span class="Delimiter">(</span>filename<span class="Delimiter">))</span> <span class="Delimiter">{</span>
+<span id="L252" class="LineNr">252 </span>  <span class="Conceal">¦</span> load_all<span class="Delimiter">(</span>filename<span class="Delimiter">);</span>
+<span id="L253" class="LineNr">253 </span>  <span class="Conceal">¦</span> <span class="Identifier">return</span><span class="Delimiter">;</span>
+<span id="L254" class="LineNr">254 </span>  <span class="Delimiter">}</span>
+<span id="L255" class="LineNr">255 </span>  ifstream fin<span class="Delimiter">(</span>filename<span class="Delimiter">.</span>c_str<span class="Delimiter">());</span>
+<span id="L256" class="LineNr">256 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!fin<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L257" class="LineNr">257 </span>  <span class="Conceal">¦</span> cerr &lt;&lt; <span class="Constant">&quot;no such file '&quot;</span> &lt;&lt; filename &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>  <span class="Comment">// don't raise, just warn. just in case it's just a name for a scenario to run.</span>
+<span id="L258" class="LineNr">258 </span>  <span class="Conceal">¦</span> <span class="Identifier">return</span><span class="Delimiter">;</span>
+<span id="L259" class="LineNr">259 </span>  <span class="Delimiter">}</span>
+<span id="L260" class="LineNr">260 </span>  <a href='003trace.cc.html#L167'>trace</a><span class="Delimiter">(</span><span class="Constant">9990</span><span class="Delimiter">,</span> <span class="Constant">&quot;load&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;=== &quot;</span> &lt;&lt; filename &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
+<span id="L261" class="LineNr">261 </span>  load<span class="Delimiter">(</span>fin<span class="Delimiter">);</span>
+<span id="L262" class="LineNr">262 </span>  fin<span class="Delimiter">.</span>close<span class="Delimiter">();</span>
+<span id="L263" class="LineNr">263 </span><span class="Delimiter">}</span>
+<span id="L264" class="LineNr">264 </span>
+<span id="L265" class="LineNr">265 </span><span class="Normal">bool</span> is_directory<span class="Delimiter">(</span>string path<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L266" class="LineNr">266 </span>  <span class="Normal">struct</span> stat info<span class="Delimiter">;</span>
+<span id="L267" class="LineNr">267 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>stat<span class="Delimiter">(</span>path<span class="Delimiter">.</span>c_str<span class="Delimiter">(),</span> &amp;info<span class="Delimiter">))</span> <span class="Identifier">return</span> <span class="Constant">false</span><span class="Delimiter">;</span>  <span class="Comment">// error</span>
+<span id="L268" class="LineNr">268 </span>  <span class="Identifier">return</span> info<span class="Delimiter">.</span>st_mode &amp; S_IFDIR<span class="Delimiter">;</span>
+<span id="L269" class="LineNr">269 </span><span class="Delimiter">}</span>
+<span id="L270" class="LineNr">270 </span>
+<span id="L271" class="LineNr">271 </span><span class="Normal">void</span> load_all<span class="Delimiter">(</span>string dir<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L272" class="LineNr">272 </span>  dirent** files<span class="Delimiter">;</span>
+<span id="L273" class="LineNr">273 </span>  <span class="Normal">int</span> num_files = scandir<span class="Delimiter">(</span>dir<span class="Delimiter">.</span>c_str<span class="Delimiter">(),</span> &amp;files<span class="Delimiter">,</span> <span class="Constant">NULL</span><span class="Delimiter">,</span> alphasort<span class="Delimiter">);</span>
+<span id="L274" class="LineNr">274 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> i = <span class="Constant">0</span><span class="Delimiter">;</span>  i &lt; num_files<span class="Delimiter">;</span>  ++i<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L275" class="LineNr">275 </span>  <span class="Conceal">¦</span> string curr_file = files[i]<span class="Delimiter">-&gt;</span>d_name<span class="Delimiter">;</span>
+<span id="L276" class="LineNr">276 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>isdigit<span class="Delimiter">(</span>curr_file<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">)))</span>
+<span id="L277" class="LineNr">277 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> load_file_or_directory<span class="Delimiter">(</span>dir+<span class="Constant">'/'</span>+curr_file<span class="Delimiter">);</span>
+<span id="L278" class="LineNr">278 </span>  <span class="Conceal">¦</span> free<span class="Delimiter">(</span>files[i]<span class="Delimiter">);</span>
+<span id="L279" class="LineNr">279 </span>  <span class="Conceal">¦</span> files[i] = <span class="Constant">NULL</span><span class="Delimiter">;</span>
+<span id="L280" class="LineNr">280 </span>  <span class="Delimiter">}</span>
+<span id="L281" class="LineNr">281 </span>  free<span class="Delimiter">(</span>files<span class="Delimiter">);</span>
+<span id="L282" class="LineNr">282 </span><span class="Delimiter">}</span>
+<span id="L283" class="LineNr">283 </span><span class="Delimiter">:(before &quot;End Includes&quot;)</span>
+<span id="L284" class="LineNr">284 </span><span class="PreProc">#include </span><span class="Constant">&lt;dirent.h&gt;</span>
+<span id="L285" class="LineNr">285 </span><span class="PreProc">#include </span><span class="Constant">&lt;sys/stat.h&gt;</span>
 <span id="L286" class="LineNr">286 </span>
-<span id="L287" class="LineNr">287 </span><span class="Delimiter">:(code)</span>
-<span id="L288" class="LineNr">288 </span>vector&lt;<span class="Normal">double</span>&gt; read_memory<span class="Delimiter">(</span>reagent<span class="Comment">/*</span><span class="Comment">copy</span><span class="Comment">*/</span> x<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L289" class="LineNr">289 </span>  <span class="Comment">// Begin Preprocess read_memory(x)</span>
-<span id="L290" class="LineNr">290 </span>  vector&lt;<span class="Normal">double</span>&gt; result<span class="Delimiter">;</span>
-<span id="L291" class="LineNr">291 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>is_literal<span class="Delimiter">(</span>x<span class="Delimiter">))</span> <span class="Delimiter">{</span>
-<span id="L292" class="LineNr">292 </span>  <span class="Conceal">¦</span> result<span class="Delimiter">.</span>push_back<span class="Delimiter">(</span>x<span class="Delimiter">.</span>value<span class="Delimiter">);</span>
-<span id="L293" class="LineNr">293 </span>  <span class="Conceal">¦</span> <span class="Identifier">return</span> result<span class="Delimiter">;</span>
-<span id="L294" class="LineNr">294 </span>  <span class="Delimiter">}</span>
-<span id="L295" class="LineNr">295 </span>  <span class="Comment">// End Preprocess read_memory(x)</span>
-<span id="L296" class="LineNr">296 </span>  <span class="Normal">int</span> size = size_of<span class="Delimiter">(</span>x<span class="Delimiter">);</span>
-<span id="L297" class="LineNr">297 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> offset = <span class="Constant">0</span><span class="Delimiter">;</span>  offset &lt; size<span class="Delimiter">;</span>  ++offset<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L298" class="LineNr">298 </span>  <span class="Conceal">¦</span> <span class="Normal">double</span> val = <a href='001help.cc.html#L229'>get_or_insert</a><span class="Delimiter">(</span>Memory<span class="Delimiter">,</span> x<span class="Delimiter">.</span>value+offset<span class="Delimiter">);</span>
-<span id="L299" class="LineNr">299 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">&quot;mem&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;location &quot;</span> &lt;&lt; x<span class="Delimiter">.</span>value+offset &lt;&lt; <span class="Constant">&quot; is &quot;</span> &lt;&lt; no_scientific<span class="Delimiter">(</span>val<span class="Delimiter">)</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
-<span id="L300" class="LineNr">300 </span>  <span class="Conceal">¦</span> result<span class="Delimiter">.</span>push_back<span class="Delimiter">(</span>val<span class="Delimiter">);</span>
-<span id="L301" class="LineNr">301 </span>  <span class="Delimiter">}</span>
-<span id="L302" class="LineNr">302 </span>  <span class="Identifier">return</span> result<span class="Delimiter">;</span>
-<span id="L303" class="LineNr">303 </span><span class="Delimiter">}</span>
-<span id="L304" class="LineNr">304 </span>
-<span id="L305" class="LineNr">305 </span><span class="Normal">void</span> write_memory<span class="Delimiter">(</span>reagent<span class="Comment">/*</span><span class="Comment">copy</span><span class="Comment">*/</span> x<span class="Delimiter">,</span> <span class="Normal">const</span> vector&lt;<span class="Normal">double</span>&gt;&amp; data<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L306" class="LineNr">306 </span>  assert<span class="Delimiter">(</span>Current_routine<span class="Delimiter">);</span>  <span class="Comment">// run-time only</span>
-<span id="L307" class="LineNr">307 </span>  <span class="Comment">// Begin Preprocess write_memory(x, data)</span>
-<span id="L308" class="LineNr">308 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!x<span class="Delimiter">.</span>type<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L309" class="LineNr">309 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <span class="Constant">&quot;can't write to '&quot;</span> &lt;&lt; <a href='028call_return.cc.html#L163'>to_string</a><span class="Delimiter">(</span>x<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'; no type</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; end<span class="Delimiter">();</span>
-<span id="L310" class="LineNr">310 </span>  <span class="Conceal">¦</span> <span class="Identifier">return</span><span class="Delimiter">;</span>
-<span id="L311" class="LineNr">311 </span>  <span class="Delimiter">}</span>
-<span id="L312" class="LineNr">312 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>is_dummy<span class="Delimiter">(</span>x<span class="Delimiter">))</span> <span class="Identifier">return</span><span class="Delimiter">;</span>
-<span id="L313" class="LineNr">313 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>is_literal<span class="Delimiter">(</span>x<span class="Delimiter">))</span> <span class="Identifier">return</span><span class="Delimiter">;</span>
-<span id="L314" class="LineNr">314 </span>  <span class="Comment">// End Preprocess write_memory(x, data)</span>
-<span id="L315" class="LineNr">315 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>x<span class="Delimiter">.</span>value == <span class="Constant">0</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L316" class="LineNr">316 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <span class="Constant">&quot;can't write to location 0 in '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span><a href='026call.cc.html#L87'>current_instruction</a><span class="Delimiter">())</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; end<span class="Delimiter">();</span>
-<span id="L317" class="LineNr">317 </span>  <span class="Conceal">¦</span> <span class="Identifier">return</span><span class="Delimiter">;</span>
-<span id="L318" class="LineNr">318 </span>  <span class="Delimiter">}</span>
-<span id="L319" class="LineNr">319 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>size_mismatch<span class="Delimiter">(</span>x<span class="Delimiter">,</span> data<span class="Delimiter">))</span> <span class="Delimiter">{</span>
-<span id="L320" class="LineNr">320 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span><a href='026call.cc.html#L85'>current_recipe_name</a><span class="Delimiter">())</span> &lt;&lt; <span class="Constant">&quot;size mismatch in storing to '&quot;</span> &lt;&lt; x<span class="Delimiter">.</span>original_string &lt;&lt; <span class="Constant">&quot;' (&quot;</span> &lt;&lt; size_of<span class="Delimiter">(</span>x<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot; vs &quot;</span> &lt;&lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>data<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;) at '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>current_instruction<span class="Delimiter">())</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
-<span id="L321" class="LineNr">321 </span>  <span class="Conceal">¦</span> <span class="Identifier">return</span><span class="Delimiter">;</span>
-<span id="L322" class="LineNr">322 </span>  <span class="Delimiter">}</span>
-<span id="L323" class="LineNr">323 </span>  <span class="Comment">// End write_memory(x) Special-cases</span>
-<span id="L324" class="LineNr">324 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> offset = <span class="Constant">0</span><span class="Delimiter">;</span>  offset &lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>data<span class="Delimiter">);</span>  ++offset<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L325" class="LineNr">325 </span>  <span class="Conceal">¦</span> assert<span class="Delimiter">(</span>x<span class="Delimiter">.</span>value+offset &gt; <span class="Constant">0</span><span class="Delimiter">);</span>
-<span id="L326" class="LineNr">326 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">&quot;mem&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;storing &quot;</span> &lt;&lt; no_scientific<span class="Delimiter">(</span>data<span class="Delimiter">.</span>at<span class="Delimiter">(</span>offset<span class="Delimiter">))</span> &lt;&lt; <span class="Constant">&quot; in location &quot;</span> &lt;&lt; x<span class="Delimiter">.</span>value+offset &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
-<span id="L327" class="LineNr">327 </span><span class="CommentedCode">//?     if (Foo) cerr &lt;&lt; &quot;mem: storing &quot; &lt;&lt; no_scientific(data.at(offset)) &lt;&lt; &quot; in location &quot; &lt;&lt; x.value+offset &lt;&lt; '\n';</span>
-<span id="L328" class="LineNr">328 </span>  <span class="Conceal">¦</span> <a href='001help.cc.html#L221'>put</a><span class="Delimiter">(</span>Memory<span class="Delimiter">,</span> x<span class="Delimiter">.</span>value+offset<span class="Delimiter">,</span> data<span class="Delimiter">.</span>at<span class="Delimiter">(</span>offset<span class="Delimiter">));</span>
-<span id="L329" class="LineNr">329 </span>  <span class="Delimiter">}</span>
-<span id="L330" class="LineNr">330 </span><span class="Delimiter">}</span>
-<span id="L331" class="LineNr">331 </span>
-<span id="L332" class="LineNr">332 </span><span class="Delimiter">:(code)</span>
-<span id="L333" class="LineNr">333 </span><span class="Normal">int</span> size_of<span class="Delimiter">(</span><span class="Normal">const</span> reagent&amp; r<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L334" class="LineNr">334 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!r<span class="Delimiter">.</span>type<span class="Delimiter">)</span> <span class="Identifier">return</span> <span class="Constant">0</span><span class="Delimiter">;</span>
-<span id="L335" class="LineNr">335 </span>  <span class="Comment">// End size_of(reagent r) Special-cases</span>
-<span id="L336" class="LineNr">336 </span>  <span class="Identifier">return</span> size_of<span class="Delimiter">(</span>r<span class="Delimiter">.</span>type<span class="Delimiter">);</span>
-<span id="L337" class="LineNr">337 </span><span class="Delimiter">}</span>
-<span id="L338" class="LineNr">338 </span><span class="Normal">int</span> size_of<span class="Delimiter">(</span><span class="Normal">const</span> type_tree* type<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L339" class="LineNr">339 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!type<span class="Delimiter">)</span> <span class="Identifier">return</span> <span class="Constant">0</span><span class="Delimiter">;</span>
-<span id="L340" class="LineNr">340 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>type<span class="Delimiter">-&gt;</span>atom<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L341" class="LineNr">341 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>type<span class="Delimiter">-&gt;</span>value == -<span class="Constant">1</span><span class="Delimiter">)</span> <span class="Identifier">return</span> <span class="Constant">1</span><span class="Delimiter">;</span>  <span class="Comment">// error value, but we'll raise it elsewhere</span>
-<span id="L342" class="LineNr">342 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>type<span class="Delimiter">-&gt;</span>value == <span class="Constant">0</span><span class="Delimiter">)</span> <span class="Identifier">return</span> <span class="Constant">1</span><span class="Delimiter">;</span>
-<span id="L343" class="LineNr">343 </span>  <span class="Conceal">¦</span> <span class="Comment">// End size_of(type) Atom Special-cases</span>
-<span id="L344" class="LineNr">344 </span>  <span class="Delimiter">}</span>
-<span id="L345" class="LineNr">345 </span>  <span class="Normal">else</span> <span class="Delimiter">{</span>
-<span id="L346" class="LineNr">346 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>!type<span class="Delimiter">-&gt;</span>left<span class="Delimiter">-&gt;</span>atom<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L347" class="LineNr">347 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <span class="Constant">&quot;invalid type &quot;</span> &lt;&lt; <a href='028call_return.cc.html#L163'>to_string</a><span class="Delimiter">(</span>type<span class="Delimiter">)</span> &lt;&lt; <span class="cSpecial">'\n'</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
-<span id="L348" class="LineNr">348 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Identifier">return</span> <span class="Constant">0</span><span class="Delimiter">;</span>
-<span id="L349" class="LineNr">349 </span>  <span class="Conceal">¦</span> <span class="Delimiter">}</span>
-<span id="L350" class="LineNr">350 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>type<span class="Delimiter">-&gt;</span>left<span class="Delimiter">-&gt;</span>value == get<span class="Delimiter">(</span>Type_ordinal<span class="Delimiter">,</span> <span class="Constant">&quot;address&quot;</span><span class="Delimiter">))</span> <span class="Identifier">return</span> <span class="Constant">1</span><span class="Delimiter">;</span>
-<span id="L351" class="LineNr">351 </span>  <span class="Conceal">¦</span> <span class="Comment">// End size_of(type) Non-atom Special-cases</span>
-<span id="L352" class="LineNr">352 </span>  <span class="Delimiter">}</span>
-<span id="L353" class="LineNr">353 </span>  <span class="Comment">// End size_of(type) Special-cases</span>
-<span id="L354" class="LineNr">354 </span>  <span class="Identifier">return</span> <span class="Constant">1</span><span class="Delimiter">;</span>
-<span id="L355" class="LineNr">355 </span><span class="Delimiter">}</span>
-<span id="L356" class="LineNr">356 </span>
-<span id="L357" class="LineNr">357 </span><span class="Normal">bool</span> size_mismatch<span class="Delimiter">(</span><span class="Normal">const</span> reagent&amp; x<span class="Delimiter">,</span> <span class="Normal">const</span> vector&lt;<span class="Normal">double</span>&gt;&amp; data<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L358" class="LineNr">358 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!x<span class="Delimiter">.</span>type<span class="Delimiter">)</span> <span class="Identifier">return</span> <span class="Constant">true</span><span class="Delimiter">;</span>
-<span id="L359" class="LineNr">359 </span>  <span class="Comment">// End size_mismatch(x) Special-cases</span>
-<span id="L360" class="LineNr">360 </span><span class="CommentedCode">//?   if (size_of(x) != SIZE(data)) cerr &lt;&lt; size_of(x) &lt;&lt; &quot; vs &quot; &lt;&lt; SIZE(data) &lt;&lt; '\n';</span>
-<span id="L361" class="LineNr">361 </span>  <span class="Identifier">return</span> size_of<span class="Delimiter">(</span>x<span class="Delimiter">)</span> != <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>data<span class="Delimiter">);</span>
-<span id="L362" class="LineNr">362 </span><span class="Delimiter">}</span>
-<span id="L363" class="LineNr">363 </span>
-<span id="L364" class="LineNr">364 </span><span class="Normal">bool</span> is_literal<span class="Delimiter">(</span><span class="Normal">const</span> reagent&amp; r<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L365" class="LineNr">365 </span>  <span class="Identifier">return</span> is_literal<span class="Delimiter">(</span>r<span class="Delimiter">.</span>type<span class="Delimiter">);</span>
-<span id="L366" class="LineNr">366 </span><span class="Delimiter">}</span>
-<span id="L367" class="LineNr">367 </span><span class="Normal">bool</span> is_literal<span class="Delimiter">(</span><span class="Normal">const</span> type_tree* type<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L368" class="LineNr">368 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!type<span class="Delimiter">)</span> <span class="Identifier">return</span> <span class="Constant">false</span><span class="Delimiter">;</span>
-<span id="L369" class="LineNr">369 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!type<span class="Delimiter">-&gt;</span>atom<span class="Delimiter">)</span> <span class="Identifier">return</span> <span class="Constant">false</span><span class="Delimiter">;</span>
-<span id="L370" class="LineNr">370 </span>  <span class="Identifier">return</span> type<span class="Delimiter">-&gt;</span>value == <span class="Constant">0</span><span class="Delimiter">;</span>
-<span id="L371" class="LineNr">371 </span><span class="Delimiter">}</span>
-<span id="L372" class="LineNr">372 </span>
-<span id="L373" class="LineNr">373 </span><span class="Normal">bool</span> scalar<span class="Delimiter">(</span><span class="Normal">const</span> vector&lt;<span class="Normal">int</span>&gt;&amp; x<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L374" class="LineNr">374 </span>  <span class="Identifier">return</span> <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>x<span class="Delimiter">)</span> == <span class="Constant">1</span><span class="Delimiter">;</span>
-<span id="L375" class="LineNr">375 </span><span class="Delimiter">}</span>
-<span id="L376" class="LineNr">376 </span><span class="Normal">bool</span> scalar<span class="Delimiter">(</span><span class="Normal">const</span> vector&lt;<span class="Normal">double</span>&gt;&amp; x<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L377" class="LineNr">377 </span>  <span class="Identifier">return</span> <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>x<span class="Delimiter">)</span> == <span class="Constant">1</span><span class="Delimiter">;</span>
-<span id="L378" class="LineNr">378 </span><span class="Delimiter">}</span>
-<span id="L379" class="LineNr">379 </span>
-<span id="L380" class="LineNr">380 </span><span class="Comment">// helper for tests</span>
-<span id="L381" class="LineNr">381 </span><span class="Normal">void</span> run<span class="Delimiter">(</span><span class="Normal">const</span> string&amp; form<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L382" class="LineNr">382 </span>  vector&lt;recipe_ordinal&gt; tmp = load<span class="Delimiter">(</span>form<span class="Delimiter">);</span>
-<span id="L383" class="LineNr">383 </span>  <a href='012transform.cc.html#L46'>transform_all</a><span class="Delimiter">();</span>
-<span id="L384" class="LineNr">384 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>tmp<span class="Delimiter">.</span>empty<span class="Delimiter">())</span> <span class="Identifier">return</span><span class="Delimiter">;</span>
-<span id="L385" class="LineNr">385 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span><a href='003trace.cc.html#L192'>trace_contains_errors</a><span class="Delimiter">())</span> <span class="Identifier">return</span><span class="Delimiter">;</span>
-<span id="L386" class="LineNr">386 </span>  <span class="Comment">// if a test defines main, it probably wants to start there regardless of</span>
-<span id="L387" class="LineNr">387 </span>  <span class="Comment">// definition order</span>
-<span id="L388" class="LineNr">388 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>contains_key<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> get<span class="Delimiter">(</span>Recipe_ordinal<span class="Delimiter">,</span> <span class="Constant">&quot;main&quot;</span><span class="Delimiter">)))</span>
-<span id="L389" class="LineNr">389 </span>  <span class="Conceal">¦</span> run<span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe_ordinal<span class="Delimiter">,</span> <span class="Constant">&quot;main&quot;</span><span class="Delimiter">));</span>
-<span id="L390" class="LineNr">390 </span>  <span class="Normal">else</span>
-<span id="L391" class="LineNr">391 </span>  <span class="Conceal">¦</span> run<span class="Delimiter">(</span>tmp<span class="Delimiter">.</span>front<span class="Delimiter">());</span>
-<span id="L392" class="LineNr">392 </span><span class="Delimiter">}</span>
-<span id="L393" class="LineNr">393 </span>
-<span id="L394" class="LineNr">394 </span><span class="Delimiter">:(scenario run_label)</span>
-<span id="L395" class="LineNr">395 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
-<span id="L396" class="LineNr">396 </span>  +foo
-<span id="L397" class="LineNr">397 </span>  <span class="Constant">1</span>:num<span class="Special"> &lt;- </span>copy <span class="Constant">23</span>
-<span id="L398" class="LineNr">398 </span>  <span class="Constant">2</span>:num<span class="Special"> &lt;- </span>copy <span class="Constant">1</span>:num
-<span id="L399" class="LineNr">399 </span>]
-<span id="L400" class="LineNr">400 </span><span class="traceContains">+run: {1: &quot;number&quot;} &lt;- copy {23: &quot;literal&quot;}</span>
-<span id="L401" class="LineNr">401 </span><span class="traceContains">+run: {2: &quot;number&quot;} &lt;- copy {1: &quot;number&quot;}</span>
-<span id="L402" class="LineNr">402 </span><span class="traceAbsent">-run: +foo</span>
-<span id="L403" class="LineNr">403 </span>
-<span id="L404" class="LineNr">404 </span><span class="Delimiter">:(scenario run_dummy)</span>
-<span id="L405" class="LineNr">405 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
-<span id="L406" class="LineNr">406 </span>  _<span class="Special"> &lt;- </span>copy <span class="Constant">0</span>
-<span id="L407" class="LineNr">407 </span>]
-<span id="L408" class="LineNr">408 </span><span class="traceContains">+run: _ &lt;- copy {0: &quot;literal&quot;}</span>
-<span id="L409" class="LineNr">409 </span>
-<span id="L410" class="LineNr">410 </span><span class="Delimiter">:(scenario write_to_0_disallowed)</span>
-<span id="L411" class="LineNr">411 </span><span class="Special">% Hide_errors = true;</span>
-<span id="L412" class="LineNr">412 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
-<span id="L413" class="LineNr">413 </span>  <span class="Constant">0</span>:num<span class="Special"> &lt;- </span>copy <span class="Constant">34</span>
-<span id="L414" class="LineNr">414 </span>]
-<span id="L415" class="LineNr">415 </span><span class="traceAbsent">-mem: storing 34 in location 0</span>
-<span id="L416" class="LineNr">416 </span>
-<span id="L417" class="LineNr">417 </span><span class="Comment">//: Mu is robust to various combinations of commas and spaces. You just have</span>
-<span id="L418" class="LineNr">418 </span><span class="Comment">//: to put spaces around the '&lt;-'.</span>
-<span id="L419" class="LineNr">419 </span>
-<span id="L420" class="LineNr">420 </span><span class="Delimiter">:(scenario comma_without_space)</span>
-<span id="L421" class="LineNr">421 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
-<span id="L422" class="LineNr">422 </span>  <span class="Constant">1</span>:num<span class="Delimiter">,</span> <span class="Constant">2</span>:num<span class="Special"> &lt;- </span>copy <span class="Constant">2</span><span class="Delimiter">,</span><span class="Constant">2</span>
-<span id="L423" class="LineNr">423 </span>]
-<span id="L424" class="LineNr">424 </span><span class="traceContains">+mem: storing 2 in location 1</span>
-<span id="L425" class="LineNr">425 </span>
-<span id="L426" class="LineNr">426 </span><span class="Delimiter">:(scenario space_without_comma)</span>
-<span id="L427" class="LineNr">427 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
-<span id="L428" class="LineNr">428 </span>  <span class="Constant">1</span>:num<span class="Delimiter">,</span> <span class="Constant">2</span>:num<span class="Special"> &lt;- </span>copy <span class="Constant">2</span> <span class="Constant">2</span>
-<span id="L429" class="LineNr">429 </span>]
-<span id="L430" class="LineNr">430 </span><span class="traceContains">+mem: storing 2 in location 1</span>
-<span id="L431" class="LineNr">431 </span>
-<span id="L432" class="LineNr">432 </span><span class="Delimiter">:(scenario comma_before_space)</span>
-<span id="L433" class="LineNr">433 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
-<span id="L434" class="LineNr">434 </span>  <span class="Constant">1</span>:num<span class="Delimiter">,</span> <span class="Constant">2</span>:num<span class="Special"> &lt;- </span>copy <span class="Constant">2</span><span class="Delimiter">,</span> <span class="Constant">2</span>
-<span id="L435" class="LineNr">435 </span>]
-<span id="L436" class="LineNr">436 </span><span class="traceContains">+mem: storing 2 in location 1</span>
-<span id="L437" class="LineNr">437 </span>
-<span id="L438" class="LineNr">438 </span><span class="Delimiter">:(scenario comma_after_space)</span>
-<span id="L439" class="LineNr">439 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
-<span id="L440" class="LineNr">440 </span>  <span class="Constant">1</span>:num<span class="Delimiter">,</span> <span class="Constant">2</span>:num<span class="Special"> &lt;- </span>copy <span class="Constant">2</span> <span class="Delimiter">,</span><span class="Constant">2</span>
-<span id="L441" class="LineNr">441 </span>]
-<span id="L442" class="LineNr">442 </span><span class="traceContains">+mem: storing 2 in location 1</span>
-<span id="L443" class="LineNr">443 </span>
-<span id="L444" class="LineNr">444 </span><span class="SalientComment">//:: Counters for trying to understand where Mu programs are spending their</span>
-<span id="L445" class="LineNr">445 </span><span class="SalientComment">//:: time.</span>
-<span id="L446" class="LineNr">446 </span>
-<span id="L447" class="LineNr">447 </span><span class="Delimiter">:(before &quot;End Globals&quot;)</span>
-<span id="L448" class="LineNr">448 </span><span class="Normal">bool</span> Run_profiler = <span class="Constant">false</span><span class="Delimiter">;</span>
-<span id="L449" class="LineNr">449 </span><span class="Comment">// We'll key profile information by recipe_ordinal rather than name because</span>
-<span id="L450" class="LineNr">450 </span><span class="Comment">// it's more efficient, and because later layers will show more than just the</span>
-<span id="L451" class="LineNr">451 </span><span class="Comment">// name of a recipe.</span>
-<span id="L452" class="LineNr">452 </span><span class="Comment">//</span>
-<span id="L453" class="LineNr">453 </span><span class="Comment">// One drawback: if you're clearing recipes your profile will be inaccurate.</span>
-<span id="L454" class="LineNr">454 </span><span class="Comment">// So far that happens in tests, and in 'run-sandboxed' in a later layer.</span>
-<span id="L455" class="LineNr">455 </span>map&lt;recipe_ordinal<span class="Delimiter">,</span> <span class="Normal">int</span>&gt; Instructions_running<span class="Delimiter">;</span>
-<span id="L456" class="LineNr">456 </span><span class="Delimiter">:(before &quot;End Commandline Options(*arg)&quot;)</span>
-<span id="L457" class="LineNr">457 </span><span class="Normal">else</span> <span class="Normal">if</span> <span class="Delimiter">(</span><a href='001help.cc.html#L73'>is_equal</a><span class="Delimiter">(</span>*arg<span class="Delimiter">,</span> <span class="Constant">&quot;--profile&quot;</span><span class="Delimiter">))</span> <span class="Delimiter">{</span>
-<span id="L458" class="LineNr">458 </span>  Run_profiler = <span class="Constant">true</span><span class="Delimiter">;</span>
-<span id="L459" class="LineNr">459 </span><span class="Delimiter">}</span>
-<span id="L460" class="LineNr">460 </span><span class="Delimiter">:(after &quot;Running One Instruction&quot;)</span>
-<span id="L461" class="LineNr">461 </span><span class="Normal">if</span> <span class="Delimiter">(</span>Run_profiler<span class="Delimiter">)</span> Instructions_running[currently_running_recipe<span class="Delimiter">()</span>]++<span class="Delimiter">;</span>
-<span id="L462" class="LineNr">462 </span><span class="Delimiter">:(before &quot;End One-time Setup&quot;)</span>
-<span id="L463" class="LineNr">463 </span>atexit<span class="Delimiter">(</span>dump_profile<span class="Delimiter">);</span>
-<span id="L464" class="LineNr">464 </span><span class="Delimiter">:(code)</span>
-<span id="L465" class="LineNr">465 </span><span class="Normal">void</span> dump_profile<span class="Delimiter">()</span> <span class="Delimiter">{</span>
-<span id="L466" class="LineNr">466 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!Run_profiler<span class="Delimiter">)</span> <span class="Identifier">return</span><span class="Delimiter">;</span>
-<span id="L467" class="LineNr">467 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>Run_tests<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L468" class="LineNr">468 </span>  <span class="Conceal">¦</span> cerr &lt;&lt; <span class="Constant">&quot;It's not a good idea to profile a run with tests, since tests can create conflicting recipes and mislead you. To try it anyway, comment out this check in the code.</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span><span class="Delimiter">;</span>
-<span id="L469" class="LineNr">469 </span>  <span class="Conceal">¦</span> <span class="Identifier">return</span><span class="Delimiter">;</span>
-<span id="L470" class="LineNr">470 </span>  <span class="Delimiter">}</span>
-<span id="L471" class="LineNr">471 </span>  ofstream fout<span class="Delimiter">;</span>
-<span id="L472" class="LineNr">472 </span>  fout<span class="Delimiter">.</span>open<span class="Delimiter">(</span><span class="Constant">&quot;profile.instructions&quot;</span><span class="Delimiter">);</span>
-<span id="L473" class="LineNr">473 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>fout<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L474" class="LineNr">474 </span>  <span class="Conceal">¦</span> <span class="Normal">for</span> <span class="Delimiter">(</span>map&lt;recipe_ordinal<span class="Delimiter">,</span> <span class="Normal">int</span>&gt;::iterator p = Instructions_running<span class="Delimiter">.</span>begin<span class="Delimiter">();</span>  p != Instructions_running<span class="Delimiter">.</span><a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>  ++p<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L475" class="LineNr">475 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> fout &lt;&lt; std::setw<span class="Delimiter">(</span><span class="Constant">9</span><span class="Delimiter">)</span> &lt;&lt; p<span class="Delimiter">-&gt;</span>second &lt;&lt; <span class="Constant">' '</span> &lt;&lt; header_label<span class="Delimiter">(</span>p<span class="Delimiter">-&gt;</span>first<span class="Delimiter">)</span> &lt;&lt; <span class="cSpecial">'\n'</span><span class="Delimiter">;</span>
-<span id="L476" class="LineNr">476 </span>  <span class="Conceal">¦</span> <span class="Delimiter">}</span>
-<span id="L477" class="LineNr">477 </span>  <span class="Delimiter">}</span>
-<span id="L478" class="LineNr">478 </span>  fout<span class="Delimiter">.</span>close<span class="Delimiter">();</span>
-<span id="L479" class="LineNr">479 </span>  <span class="Comment">// End dump_profile</span>
-<span id="L480" class="LineNr">480 </span><span class="Delimiter">}</span>
-<span id="L481" class="LineNr">481 </span>
-<span id="L482" class="LineNr">482 </span><span class="Comment">// overridden in a later layer</span>
-<span id="L483" class="LineNr">483 </span>string header_label<span class="Delimiter">(</span><span class="Normal">const</span> <a href='010vm.cc.html#L14'>recipe_ordinal</a> r<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L484" class="LineNr">484 </span>  <span class="Identifier">return</span> get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">;</span>
+<span id="L287" class="LineNr">287 </span><span class="SalientComment">//:: Reading from memory, writing to memory.</span>
+<span id="L288" class="LineNr">288 </span>
+<span id="L289" class="LineNr">289 </span><span class="Delimiter">:(code)</span>
+<span id="L290" class="LineNr">290 </span>vector&lt;<span class="Normal">double</span>&gt; read_memory<span class="Delimiter">(</span>reagent<span class="Comment">/*</span><span class="Comment">copy</span><span class="Comment">*/</span> x<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L291" class="LineNr">291 </span>  <span class="Comment">// Begin Preprocess read_memory(x)</span>
+<span id="L292" class="LineNr">292 </span>  vector&lt;<span class="Normal">double</span>&gt; result<span class="Delimiter">;</span>
+<span id="L293" class="LineNr">293 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>is_literal<span class="Delimiter">(</span>x<span class="Delimiter">))</span> <span class="Delimiter">{</span>
+<span id="L294" class="LineNr">294 </span>  <span class="Conceal">¦</span> result<span class="Delimiter">.</span>push_back<span class="Delimiter">(</span>x<span class="Delimiter">.</span>value<span class="Delimiter">);</span>
+<span id="L295" class="LineNr">295 </span>  <span class="Conceal">¦</span> <span class="Identifier">return</span> result<span class="Delimiter">;</span>
+<span id="L296" class="LineNr">296 </span>  <span class="Delimiter">}</span>
+<span id="L297" class="LineNr">297 </span>  <span class="Comment">// End Preprocess read_memory(x)</span>
+<span id="L298" class="LineNr">298 </span>  <span class="Normal">int</span> size = size_of<span class="Delimiter">(</span>x<span class="Delimiter">);</span>
+<span id="L299" class="LineNr">299 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> offset = <span class="Constant">0</span><span class="Delimiter">;</span>  offset &lt; size<span class="Delimiter">;</span>  ++offset<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L300" class="LineNr">300 </span>  <span class="Conceal">¦</span> <span class="Normal">double</span> val = <a href='001help.cc.html#L229'>get_or_insert</a><span class="Delimiter">(</span>Memory<span class="Delimiter">,</span> x<span class="Delimiter">.</span>value+offset<span class="Delimiter">);</span>
+<span id="L301" class="LineNr">301 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L167'>trace</a><span class="Delimiter">(</span><span class="Constant">&quot;mem&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;location &quot;</span> &lt;&lt; x<span class="Delimiter">.</span>value+offset &lt;&lt; <span class="Constant">&quot; is &quot;</span> &lt;&lt; no_scientific<span class="Delimiter">(</span>val<span class="Delimiter">)</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
+<span id="L302" class="LineNr">302 </span>  <span class="Conceal">¦</span> result<span class="Delimiter">.</span>push_back<span class="Delimiter">(</span>val<span class="Delimiter">);</span>
+<span id="L303" class="LineNr">303 </span>  <span class="Delimiter">}</span>
+<span id="L304" class="LineNr">304 </span>  <span class="Identifier">return</span> result<span class="Delimiter">;</span>
+<span id="L305" class="LineNr">305 </span><span class="Delimiter">}</span>
+<span id="L306" class="LineNr">306 </span>
+<span id="L307" class="LineNr">307 </span><span class="Normal">void</span> write_memory<span class="Delimiter">(</span>reagent<span class="Comment">/*</span><span class="Comment">copy</span><span class="Comment">*/</span> x<span class="Delimiter">,</span> <span class="Normal">const</span> vector&lt;<span class="Normal">double</span>&gt;&amp; data<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L308" class="LineNr">308 </span>  assert<span class="Delimiter">(</span>Current_routine<span class="Delimiter">);</span>  <span class="Comment">// run-time only</span>
+<span id="L309" class="LineNr">309 </span>  <span class="Comment">// Begin Preprocess write_memory(x, data)</span>
+<span id="L310" class="LineNr">310 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!x<span class="Delimiter">.</span>type<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L311" class="LineNr">311 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <span class="Constant">&quot;can't write to '&quot;</span> &lt;&lt; <a href='028call_return.cc.html#L163'>to_string</a><span class="Delimiter">(</span>x<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'; no type</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; end<span class="Delimiter">();</span>
+<span id="L312" class="LineNr">312 </span>  <span class="Conceal">¦</span> <span class="Identifier">return</span><span class="Delimiter">;</span>
+<span id="L313" class="LineNr">313 </span>  <span class="Delimiter">}</span>
+<span id="L314" class="LineNr">314 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>is_dummy<span class="Delimiter">(</span>x<span class="Delimiter">))</span> <span class="Identifier">return</span><span class="Delimiter">;</span>
+<span id="L315" class="LineNr">315 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>is_literal<span class="Delimiter">(</span>x<span class="Delimiter">))</span> <span class="Identifier">return</span><span class="Delimiter">;</span>
+<span id="L316" class="LineNr">316 </span>  <span class="Comment">// End Preprocess write_memory(x, data)</span>
+<span id="L317" class="LineNr">317 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>x<span class="Delimiter">.</span>value == <span class="Constant">0</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L318" class="LineNr">318 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <span class="Constant">&quot;can't write to location 0 in '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span><a href='026call.cc.html#L89'>current_instruction</a><span class="Delimiter">())</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; end<span class="Delimiter">();</span>
+<span id="L319" class="LineNr">319 </span>  <span class="Conceal">¦</span> <span class="Identifier">return</span><span class="Delimiter">;</span>
+<span id="L320" class="LineNr">320 </span>  <span class="Delimiter">}</span>
+<span id="L321" class="LineNr">321 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>size_mismatch<span class="Delimiter">(</span>x<span class="Delimiter">,</span> data<span class="Delimiter">))</span> <span class="Delimiter">{</span>
+<span id="L322" class="LineNr">322 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span><a href='026call.cc.html#L87'>current_recipe_name</a><span class="Delimiter">())</span> &lt;&lt; <span class="Constant">&quot;size mismatch in storing to '&quot;</span> &lt;&lt; x<span class="Delimiter">.</span>original_string &lt;&lt; <span class="Constant">&quot;' (&quot;</span> &lt;&lt; size_of<span class="Delimiter">(</span>x<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot; vs &quot;</span> &lt;&lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>data<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;) at '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>current_instruction<span class="Delimiter">())</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
+<span id="L323" class="LineNr">323 </span>  <span class="Conceal">¦</span> <span class="Identifier">return</span><span class="Delimiter">;</span>
+<span id="L324" class="LineNr">324 </span>  <span class="Delimiter">}</span>
+<span id="L325" class="LineNr">325 </span>  <span class="Comment">// End write_memory(x) Special-cases</span>
+<span id="L326" class="LineNr">326 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> offset = <span class="Constant">0</span><span class="Delimiter">;</span>  offset &lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>data<span class="Delimiter">);</span>  ++offset<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L327" class="LineNr">327 </span>  <span class="Conceal">¦</span> assert<span class="Delimiter">(</span>x<span class="Delimiter">.</span>value+offset &gt; <span class="Constant">0</span><span class="Delimiter">);</span>
+<span id="L328" class="LineNr">328 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L167'>trace</a><span class="Delimiter">(</span><span class="Constant">&quot;mem&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;storing &quot;</span> &lt;&lt; no_scientific<span class="Delimiter">(</span>data<span class="Delimiter">.</span>at<span class="Delimiter">(</span>offset<span class="Delimiter">))</span> &lt;&lt; <span class="Constant">&quot; in location &quot;</span> &lt;&lt; x<span class="Delimiter">.</span>value+offset &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
+<span id="L329" class="LineNr">329 </span><span class="CommentedCode">//?     if (Foo) cerr &lt;&lt; &quot;mem: storing &quot; &lt;&lt; no_scientific(data.at(offset)) &lt;&lt; &quot; in location &quot; &lt;&lt; x.value+offset &lt;&lt; '\n';</span>
+<span id="L330" class="LineNr">330 </span>  <span class="Conceal">¦</span> <a href='001help.cc.html#L221'>put</a><span class="Delimiter">(</span>Memory<span class="Delimiter">,</span> x<span class="Delimiter">.</span>value+offset<span class="Delimiter">,</span> data<span class="Delimiter">.</span>at<span class="Delimiter">(</span>offset<span class="Delimiter">));</span>
+<span id="L331" class="LineNr">331 </span>  <span class="Delimiter">}</span>
+<span id="L332" class="LineNr">332 </span><span class="Delimiter">}</span>
+<span id="L333" class="LineNr">333 </span>
+<span id="L334" class="LineNr">334 </span><span class="Delimiter">:(code)</span>
+<span id="L335" class="LineNr">335 </span><span class="Normal">int</span> size_of<span class="Delimiter">(</span><span class="Normal">const</span> reagent&amp; r<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L336" class="LineNr">336 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!r<span class="Delimiter">.</span>type<span class="Delimiter">)</span> <span class="Identifier">return</span> <span class="Constant">0</span><span class="Delimiter">;</span>
+<span id="L337" class="LineNr">337 </span>  <span class="Comment">// End size_of(reagent r) Special-cases</span>
+<span id="L338" class="LineNr">338 </span>  <span class="Identifier">return</span> size_of<span class="Delimiter">(</span>r<span class="Delimiter">.</span>type<span class="Delimiter">);</span>
+<span id="L339" class="LineNr">339 </span><span class="Delimiter">}</span>
+<span id="L340" class="LineNr">340 </span><span class="Normal">int</span> size_of<span class="Delimiter">(</span><span class="Normal">const</span> type_tree* type<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L341" class="LineNr">341 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!type<span class="Delimiter">)</span> <span class="Identifier">return</span> <span class="Constant">0</span><span class="Delimiter">;</span>
+<span id="L342" class="LineNr">342 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>type<span class="Delimiter">-&gt;</span>atom<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L343" class="LineNr">343 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>type<span class="Delimiter">-&gt;</span>value == -<span class="Constant">1</span><span class="Delimiter">)</span> <span class="Identifier">return</span> <span class="Constant">1</span><span class="Delimiter">;</span>  <span class="Comment">// error value, but we'll raise it elsewhere</span>
+<span id="L344" class="LineNr">344 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>type<span class="Delimiter">-&gt;</span>value == <span class="Constant">0</span><span class="Delimiter">)</span> <span class="Identifier">return</span> <span class="Constant">1</span><span class="Delimiter">;</span>
+<span id="L345" class="LineNr">345 </span>  <span class="Conceal">¦</span> <span class="Comment">// End size_of(type) Atom Special-cases</span>
+<span id="L346" class="LineNr">346 </span>  <span class="Delimiter">}</span>
+<span id="L347" class="LineNr">347 </span>  <span class="Normal">else</span> <span class="Delimiter">{</span>
+<span id="L348" class="LineNr">348 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>!type<span class="Delimiter">-&gt;</span>left<span class="Delimiter">-&gt;</span>atom<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L349" class="LineNr">349 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <span class="Constant">&quot;invalid type &quot;</span> &lt;&lt; <a href='028call_return.cc.html#L163'>to_string</a><span class="Delimiter">(</span>type<span class="Delimiter">)</span> &lt;&lt; <span class="cSpecial">'\n'</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
+<span id="L350" class="LineNr">350 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Identifier">return</span> <span class="Constant">0</span><span class="Delimiter">;</span>
+<span id="L351" class="LineNr">351 </span>  <span class="Conceal">¦</span> <span class="Delimiter">}</span>
+<span id="L352" class="LineNr">352 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>type<span class="Delimiter">-&gt;</span>left<span class="Delimiter">-&gt;</span>value == get<span class="Delimiter">(</span>Type_ordinal<span class="Delimiter">,</span> <span class="Constant">&quot;address&quot;</span><span class="Delimiter">))</span> <span class="Identifier">return</span> <span class="Constant">1</span><span class="Delimiter">;</span>
+<span id="L353" class="LineNr">353 </span>  <span class="Conceal">¦</span> <span class="Comment">// End size_of(type) Non-atom Special-cases</span>
+<span id="L354" class="LineNr">354 </span>  <span class="Delimiter">}</span>
+<span id="L355" class="LineNr">355 </span>  <span class="Comment">// End size_of(type) Special-cases</span>
+<span id="L356" class="LineNr">356 </span>  <span class="Identifier">return</span> <span class="Constant">1</span><span class="Delimiter">;</span>
+<span id="L357" class="LineNr">357 </span><span class="Delimiter">}</span>
+<span id="L358" class="LineNr">358 </span>
+<span id="L359" class="LineNr">359 </span><span class="Normal">bool</span> size_mismatch<span class="Delimiter">(</span><span class="Normal">const</span> reagent&amp; x<span class="Delimiter">,</span> <span class="Normal">const</span> vector&lt;<span class="Normal">double</span>&gt;&amp; data<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L360" class="LineNr">360 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!x<span class="Delimiter">.</span>type<span class="Delimiter">)</span> <span class="Identifier">return</span> <span class="Constant">true</span><span class="Delimiter">;</span>
+<span id="L361" class="LineNr">361 </span>  <span class="Comment">// End size_mismatch(x) Special-cases</span>
+<span id="L362" class="LineNr">362 </span><span class="CommentedCode">//?   if (size_of(x) != SIZE(data)) cerr &lt;&lt; size_of(x) &lt;&lt; &quot; vs &quot; &lt;&lt; SIZE(data) &lt;&lt; '\n';</span>
+<span id="L363" class="LineNr">363 </span>  <span class="Identifier">return</span> size_of<span class="Delimiter">(</span>x<span class="Delimiter">)</span> != <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>data<span class="Delimiter">);</span>
+<span id="L364" class="LineNr">364 </span><span class="Delimiter">}</span>
+<span id="L365" class="LineNr">365 </span>
+<span id="L366" class="LineNr">366 </span><span class="Normal">bool</span> is_literal<span class="Delimiter">(</span><span class="Normal">const</span> reagent&amp; r<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L367" class="LineNr">367 </span>  <span class="Identifier">return</span> is_literal<span class="Delimiter">(</span>r<span class="Delimiter">.</span>type<span class="Delimiter">);</span>
+<span id="L368" class="LineNr">368 </span><span class="Delimiter">}</span>
+<span id="L369" class="LineNr">369 </span><span class="Normal">bool</span> is_literal<span class="Delimiter">(</span><span class="Normal">const</span> type_tree* type<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L370" class="LineNr">370 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!type<span class="Delimiter">)</span> <span class="Identifier">return</span> <span class="Constant">false</span><span class="Delimiter">;</span>
+<span id="L371" class="LineNr">371 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!type<span class="Delimiter">-&gt;</span>atom<span class="Delimiter">)</span> <span class="Identifier">return</span> <span class="Constant">false</span><span class="Delimiter">;</span>
+<span id="L372" class="LineNr">372 </span>  <span class="Identifier">return</span> type<span class="Delimiter">-&gt;</span>value == <span class="Constant">0</span><span class="Delimiter">;</span>
+<span id="L373" class="LineNr">373 </span><span class="Delimiter">}</span>
+<span id="L374" class="LineNr">374 </span>
+<span id="L375" class="LineNr">375 </span><span class="Normal">bool</span> scalar<span class="Delimiter">(</span><span class="Normal">const</span> vector&lt;<span class="Normal">int</span>&gt;&amp; x<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L376" class="LineNr">376 </span>  <span class="Identifier">return</span> <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>x<span class="Delimiter">)</span> == <span class="Constant">1</span><span class="Delimiter">;</span>
+<span id="L377" class="LineNr">377 </span><span class="Delimiter">}</span>
+<span id="L378" class="LineNr">378 </span><span class="Normal">bool</span> scalar<span class="Delimiter">(</span><span class="Normal">const</span> vector&lt;<span class="Normal">double</span>&gt;&amp; x<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L379" class="LineNr">379 </span>  <span class="Identifier">return</span> <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>x<span class="Delimiter">)</span> == <span class="Constant">1</span><span class="Delimiter">;</span>
+<span id="L380" class="LineNr">380 </span><span class="Delimiter">}</span>
+<span id="L381" class="LineNr">381 </span>
+<span id="L382" class="LineNr">382 </span><span class="Comment">// helper for tests</span>
+<span id="L383" class="LineNr">383 </span><span class="Normal">void</span> run<span class="Delimiter">(</span><span class="Normal">const</span> string&amp; form<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L384" class="LineNr">384 </span>  vector&lt;recipe_ordinal&gt; tmp = load<span class="Delimiter">(</span>form<span class="Delimiter">);</span>
+<span id="L385" class="LineNr">385 </span>  <a href='012transform.cc.html#L46'>transform_all</a><span class="Delimiter">();</span>
+<span id="L386" class="LineNr">386 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>tmp<span class="Delimiter">.</span>empty<span class="Delimiter">())</span> <span class="Identifier">return</span><span class="Delimiter">;</span>
+<span id="L387" class="LineNr">387 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span><a href='003trace.cc.html#L198'>trace_contains_errors</a><span class="Delimiter">())</span> <span class="Delimiter">{</span>
+<span id="L388" class="LineNr">388 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>Start_tracing &amp;&amp; Trace_stream<span class="Delimiter">)</span> Trace_stream<span class="Delimiter">-&gt;</span><a href='003trace.cc.html#L120'>dump</a><span class="Delimiter">();</span>
+<span id="L389" class="LineNr">389 </span>  <span class="Conceal">¦</span> <span class="Identifier">return</span><span class="Delimiter">;</span>
+<span id="L390" class="LineNr">390 </span>  <span class="Delimiter">}</span>
+<span id="L391" class="LineNr">391 </span>  <span class="Comment">// if a test defines main, it probably wants to start there regardless of</span>
+<span id="L392" class="LineNr">392 </span>  <span class="Comment">// definition order</span>
+<span id="L393" class="LineNr">393 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>contains_key<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> get<span class="Delimiter">(</span>Recipe_ordinal<span class="Delimiter">,</span> <span class="Constant">&quot;main&quot;</span><span class="Delimiter">)))</span>
+<span id="L394" class="LineNr">394 </span>  <span class="Conceal">¦</span> run<span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe_ordinal<span class="Delimiter">,</span> <span class="Constant">&quot;main&quot;</span><span class="Delimiter">));</span>
+<span id="L395" class="LineNr">395 </span>  <span class="Normal">else</span>
+<span id="L396" class="LineNr">396 </span>  <span class="Conceal">¦</span> run<span class="Delimiter">(</span>tmp<span class="Delimiter">.</span>front<span class="Delimiter">());</span>
+<span id="L397" class="LineNr">397 </span><span class="Delimiter">}</span>
+<span id="L398" class="LineNr">398 </span>
+<span id="L399" class="LineNr">399 </span><span class="Delimiter">:(scenario run_label)</span>
+<span id="L400" class="LineNr">400 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
+<span id="L401" class="LineNr">401 </span>  +foo
+<span id="L402" class="LineNr">402 </span>  <span class="Constant">1</span>:num<span class="Special"> &lt;- </span>copy <span class="Constant">23</span>
+<span id="L403" class="LineNr">403 </span>  <span class="Constant">2</span>:num<span class="Special"> &lt;- </span>copy <span class="Constant">1</span>:num
+<span id="L404" class="LineNr">404 </span>]
+<span id="L405" class="LineNr">405 </span><span class="traceContains">+run: {1: &quot;number&quot;} &lt;- copy {23: &quot;literal&quot;}</span>
+<span id="L406" class="LineNr">406 </span><span class="traceContains">+run: {2: &quot;number&quot;} &lt;- copy {1: &quot;number&quot;}</span>
+<span id="L407" class="LineNr">407 </span><span class="traceAbsent">-run: +foo</span>
+<span id="L408" class="LineNr">408 </span>
+<span id="L409" class="LineNr">409 </span><span class="Delimiter">:(scenario run_dummy)</span>
+<span id="L410" class="LineNr">410 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
+<span id="L411" class="LineNr">411 </span>  _<span class="Special"> &lt;- </span>copy <span class="Constant">0</span>
+<span id="L412" class="LineNr">412 </span>]
+<span id="L413" class="LineNr">413 </span><span class="traceContains">+run: _ &lt;- copy {0: &quot;literal&quot;}</span>
+<span id="L414" class="LineNr">414 </span>
+<span id="L415" class="LineNr">415 </span><span class="Delimiter">:(scenario write_to_0_disallowed)</span>
+<span id="L416" class="LineNr">416 </span><span class="Special">% Hide_errors = true;</span>
+<span id="L417" class="LineNr">417 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
+<span id="L418" class="LineNr">418 </span>  <span class="Constant">0</span>:num<span class="Special"> &lt;- </span>copy <span class="Constant">34</span>
+<span id="L419" class="LineNr">419 </span>]
+<span id="L420" class="LineNr">420 </span><span class="traceAbsent">-mem: storing 34 in location 0</span>
+<span id="L421" class="LineNr">421 </span>
+<span id="L422" class="LineNr">422 </span><span class="Comment">//: Mu is robust to various combinations of commas and spaces. You just have</span>
+<span id="L423" class="LineNr">423 </span><span class="Comment">//: to put spaces around the '&lt;-'.</span>
+<span id="L424" class="LineNr">424 </span>
+<span id="L425" class="LineNr">425 </span><span class="Delimiter">:(scenario comma_without_space)</span>
+<span id="L426" class="LineNr">426 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
+<span id="L427" class="LineNr">427 </span>  <span class="Constant">1</span>:num<span class="Delimiter">,</span> <span class="Constant">2</span>:num<span class="Special"> &lt;- </span>copy <span class="Constant">2</span><span class="Delimiter">,</span><span class="Constant">2</span>
+<span id="L428" class="LineNr">428 </span>]
+<span id="L429" class="LineNr">429 </span><span class="traceContains">+mem: storing 2 in location 1</span>
+<span id="L430" class="LineNr">430 </span>
+<span id="L431" class="LineNr">431 </span><span class="Delimiter">:(scenario space_without_comma)</span>
+<span id="L432" class="LineNr">432 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
+<span id="L433" class="LineNr">433 </span>  <span class="Constant">1</span>:num<span class="Delimiter">,</span> <span class="Constant">2</span>:num<span class="Special"> &lt;- </span>copy <span class="Constant">2</span> <span class="Constant">2</span>
+<span id="L434" class="LineNr">434 </span>]
+<span id="L435" class="LineNr">435 </span><span class="traceContains">+mem: storing 2 in location 1</span>
+<span id="L436" class="LineNr">436 </span>
+<span id="L437" class="LineNr">437 </span><span class="Delimiter">:(scenario comma_before_space)</span>
+<span id="L438" class="LineNr">438 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
+<span id="L439" class="LineNr">439 </span>  <span class="Constant">1</span>:num<span class="Delimiter">,</span> <span class="Constant">2</span>:num<span class="Special"> &lt;- </span>copy <span class="Constant">2</span><span class="Delimiter">,</span> <span class="Constant">2</span>
+<span id="L440" class="LineNr">440 </span>]
+<span id="L441" class="LineNr">441 </span><span class="traceContains">+mem: storing 2 in location 1</span>
+<span id="L442" class="LineNr">442 </span>
+<span id="L443" class="LineNr">443 </span><span class="Delimiter">:(scenario comma_after_space)</span>
+<span id="L444" class="LineNr">444 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
+<span id="L445" class="LineNr">445 </span>  <span class="Constant">1</span>:num<span class="Delimiter">,</span> <span class="Constant">2</span>:num<span class="Special"> &lt;- </span>copy <span class="Constant">2</span> <span class="Delimiter">,</span><span class="Constant">2</span>
+<span id="L446" class="LineNr">446 </span>]
+<span id="L447" class="LineNr">447 </span><span class="traceContains">+mem: storing 2 in location 1</span>
+<span id="L448" class="LineNr">448 </span>
+<span id="L449" class="LineNr">449 </span><span class="SalientComment">//:: Counters for trying to understand where Mu programs are spending their</span>
+<span id="L450" class="LineNr">450 </span><span class="SalientComment">//:: time.</span>
+<span id="L451" class="LineNr">451 </span>
+<span id="L452" class="LineNr">452 </span><span class="Delimiter">:(before &quot;End Globals&quot;)</span>
+<span id="L453" class="LineNr">453 </span><span class="Normal">bool</span> Run_profiler = <span class="Constant">false</span><span class="Delimiter">;</span>
+<span id="L454" class="LineNr">454 </span><span class="Comment">// We'll key profile information by recipe_ordinal rather than name because</span>
+<span id="L455" class="LineNr">455 </span><span class="Comment">// it's more efficient, and because later layers will show more than just the</span>
+<span id="L456" class="LineNr">456 </span><span class="Comment">// name of a recipe.</span>
+<span id="L457" class="LineNr">457 </span><span class="Comment">//</span>
+<span id="L458" class="LineNr">458 </span><span class="Comment">// One drawback: if you're clearing recipes your profile will be inaccurate.</span>
+<span id="L459" class="LineNr">459 </span><span class="Comment">// So far that happens in tests, and in 'run-sandboxed' in a later layer.</span>
+<span id="L460" class="LineNr">460 </span>map&lt;recipe_ordinal<span class="Delimiter">,</span> <span class="Normal">int</span>&gt; Instructions_running<span class="Delimiter">;</span>
+<span id="L461" class="LineNr">461 </span><span class="Delimiter">:(before &quot;End Commandline Options(*arg)&quot;)</span>
+<span id="L462" class="LineNr">462 </span><span class="Normal">else</span> <span class="Normal">if</span> <span class="Delimiter">(</span><a href='001help.cc.html#L73'>is_equal</a><span class="Delimiter">(</span>*arg<span class="Delimiter">,</span> <span class="Constant">&quot;--profile&quot;</span><span class="Delimiter">))</span> <span class="Delimiter">{</span>
+<span id="L463" class="LineNr">463 </span>  Run_profiler = <span class="Constant">true</span><span class="Delimiter">;</span>
+<span id="L464" class="LineNr">464 </span><span class="Delimiter">}</span>
+<span id="L465" class="LineNr">465 </span><span class="Delimiter">:(after &quot;Running One Instruction&quot;)</span>
+<span id="L466" class="LineNr">466 </span><span class="Normal">if</span> <span class="Delimiter">(</span>Run_profiler<span class="Delimiter">)</span> Instructions_running[currently_running_recipe<span class="Delimiter">()</span>]++<span class="Delimiter">;</span>
+<span id="L467" class="LineNr">467 </span><span class="Delimiter">:(before &quot;End One-time Setup&quot;)</span>
+<span id="L468" class="LineNr">468 </span>atexit<span class="Delimiter">(</span>dump_profile<span class="Delimiter">);</span>
+<span id="L469" class="LineNr">469 </span><span class="Delimiter">:(code)</span>
+<span id="L470" class="LineNr">470 </span><span class="Normal">void</span> dump_profile<span class="Delimiter">()</span> <span class="Delimiter">{</span>
+<span id="L471" class="LineNr">471 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!Run_profiler<span class="Delimiter">)</span> <span class="Identifier">return</span><span class="Delimiter">;</span>
+<span id="L472" class="LineNr">472 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>Run_tests<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L473" class="LineNr">473 </span>  <span class="Conceal">¦</span> cerr &lt;&lt; <span class="Constant">&quot;It's not a good idea to profile a run with tests, since tests can create conflicting recipes and mislead you. To try it anyway, comment out this check in the code.</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span><span class="Delimiter">;</span>
+<span id="L474" class="LineNr">474 </span>  <span class="Conceal">¦</span> <span class="Identifier">return</span><span class="Delimiter">;</span>
+<span id="L475" class="LineNr">475 </span>  <span class="Delimiter">}</span>
+<span id="L476" class="LineNr">476 </span>  ofstream fout<span class="Delimiter">;</span>
+<span id="L477" class="LineNr">477 </span>  fout<span class="Delimiter">.</span>open<span class="Delimiter">(</span><span class="Constant">&quot;profile.instructions&quot;</span><span class="Delimiter">);</span>
+<span id="L478" class="LineNr">478 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>fout<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L479" class="LineNr">479 </span>  <span class="Conceal">¦</span> <span class="Normal">for</span> <span class="Delimiter">(</span>map&lt;recipe_ordinal<span class="Delimiter">,</span> <span class="Normal">int</span>&gt;::iterator p = Instructions_running<span class="Delimiter">.</span>begin<span class="Delimiter">();</span>  p != Instructions_running<span class="Delimiter">.</span><a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>  ++p<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L480" class="LineNr">480 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> fout &lt;&lt; std::setw<span class="Delimiter">(</span><span class="Constant">9</span><span class="Delimiter">)</span> &lt;&lt; p<span class="Delimiter">-&gt;</span>second &lt;&lt; <span class="Constant">' '</span> &lt;&lt; header_label<span class="Delimiter">(</span>p<span class="Delimiter">-&gt;</span>first<span class="Delimiter">)</span> &lt;&lt; <span class="cSpecial">'\n'</span><span class="Delimiter">;</span>
+<span id="L481" class="LineNr">481 </span>  <span class="Conceal">¦</span> <span class="Delimiter">}</span>
+<span id="L482" class="LineNr">482 </span>  <span class="Delimiter">}</span>
+<span id="L483" class="LineNr">483 </span>  fout<span class="Delimiter">.</span>close<span class="Delimiter">();</span>
+<span id="L484" class="LineNr">484 </span>  <span class="Comment">// End dump_profile</span>
 <span id="L485" class="LineNr">485 </span><span class="Delimiter">}</span>
+<span id="L486" class="LineNr">486 </span>
+<span id="L487" class="LineNr">487 </span><span class="Comment">// overridden in a later layer</span>
+<span id="L488" class="LineNr">488 </span>string header_label<span class="Delimiter">(</span><span class="Normal">const</span> <a href='010vm.cc.html#L14'>recipe_ordinal</a> r<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L489" class="LineNr">489 </span>  <span class="Identifier">return</span> get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">;</span>
+<span id="L490" class="LineNr">490 </span><span class="Delimiter">}</span>
 </pre>
 </body>
 </html>
diff --git a/html/021check_instruction.cc.html b/html/021check_instruction.cc.html
index 1bb63476..8d22e6a8 100644
--- a/html/021check_instruction.cc.html
+++ b/html/021check_instruction.cc.html
@@ -76,7 +76,7 @@ if ('onhashchange' in window) {
 <span id="L13" class="LineNr"> 13 </span>
 <span id="L14" class="LineNr"> 14 </span><span class="Delimiter">:(code)</span>
 <span id="L15" class="LineNr"> 15 </span><span class="Normal">void</span> <a href='021check_instruction.cc.html#L15'>check_instruction</a><span class="Delimiter">(</span><span class="Normal">const</span> <a href='010vm.cc.html#L14'>recipe_ordinal</a> r<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L16" class="LineNr"> 16 </span>  <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">9991</span><span class="Delimiter">,</span> <span class="Constant">&quot;transform&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;--- perform checks for <a href='010vm.cc.html#L19'>recipe</a> &quot;</span> &lt;&lt; get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L16" class="LineNr"> 16 </span>  <a href='003trace.cc.html#L167'>trace</a><span class="Delimiter">(</span><span class="Constant">9991</span><span class="Delimiter">,</span> <span class="Constant">&quot;transform&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;--- perform checks for <a href='010vm.cc.html#L19'>recipe</a> &quot;</span> &lt;&lt; get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L17" class="LineNr"> 17 </span>  map&lt;string<span class="Delimiter">,</span> vector&lt;type_ordinal&gt; &gt; metadata<span class="Delimiter">;</span>
 <span id="L18" class="LineNr"> 18 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> i = <span class="Constant">0</span><span class="Delimiter">;</span>  i &lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>steps<span class="Delimiter">);</span>  ++i<span class="Delimiter">)</span> <span class="Delimiter">{</span>
 <span id="L19" class="LineNr"> 19 </span>  <span class="Conceal">¦</span> instruction&amp; inst = get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>steps<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">);</span>
@@ -85,12 +85,12 @@ if ('onhashchange' in window) {
 <span id="L22" class="LineNr"> 22 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Comment">// Primitive Recipe Checks</span>
 <span id="L23" class="LineNr"> 23 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">case</span> <a href='010vm.cc.html#L189'>COPY</a>: <span class="Delimiter">{</span>
 <span id="L24" class="LineNr"> 24 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>products<span class="Delimiter">)</span> &gt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">))</span> <span class="Delimiter">{</span>
-<span id="L25" class="LineNr"> 25 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;too many products in '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L25" class="LineNr"> 25 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;too many products in '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L26" class="LineNr"> 26 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L27" class="LineNr"> 27 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Delimiter">}</span>
 <span id="L28" class="LineNr"> 28 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> i = <span class="Constant">0</span><span class="Delimiter">;</span>  i &lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>products<span class="Delimiter">);</span>  ++i<span class="Delimiter">)</span> <span class="Delimiter">{</span>
 <span id="L29" class="LineNr"> 29 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>!types_coercible<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">),</span> inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">)))</span> <span class="Delimiter">{</span>
-<span id="L30" class="LineNr"> 30 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;can't copy '&quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">).</span>original_string &lt;&lt; <span class="Constant">&quot;' to '&quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">).</span>original_string &lt;&lt; <span class="Constant">&quot;'; types don't match</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L30" class="LineNr"> 30 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;can't copy '&quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">).</span>original_string &lt;&lt; <span class="Constant">&quot;' to '&quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">).</span>original_string &lt;&lt; <span class="Constant">&quot;'; types don't match</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L31" class="LineNr"> 31 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Identifier">goto</span> finish_checking_instruction<span class="Delimiter">;</span>
 <span id="L32" class="LineNr"> 32 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Delimiter">}</span>
 <span id="L33" class="LineNr"> 33 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Delimiter">}</span>
@@ -271,7 +271,7 @@ if ('onhashchange' in window) {
 <span id="L208" class="LineNr">208 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>is_literal<span class="Delimiter">(</span>type<span class="Delimiter">))</span> <span class="Identifier">return</span> <span class="Constant">false</span><span class="Delimiter">;</span>
 <span id="L209" class="LineNr">209 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>type<span class="Delimiter">-&gt;</span>atom<span class="Delimiter">)</span> <span class="Identifier">return</span> <span class="Constant">false</span><span class="Delimiter">;</span>
 <span id="L210" class="LineNr">210 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!type<span class="Delimiter">-&gt;</span>left<span class="Delimiter">-&gt;</span>atom<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L211" class="LineNr">211 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <span class="Constant">&quot;invalid type &quot;</span> &lt;&lt; <a href='028call_return.cc.html#L163'>to_string</a><span class="Delimiter">(</span>type<span class="Delimiter">)</span> &lt;&lt; <span class="cSpecial">'\n'</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L211" class="LineNr">211 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <span class="Constant">&quot;invalid type &quot;</span> &lt;&lt; <a href='028call_return.cc.html#L163'>to_string</a><span class="Delimiter">(</span>type<span class="Delimiter">)</span> &lt;&lt; <span class="cSpecial">'\n'</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L212" class="LineNr">212 </span>  <span class="Conceal">¦</span> <span class="Identifier">return</span> <span class="Constant">false</span><span class="Delimiter">;</span>
 <span id="L213" class="LineNr">213 </span>  <span class="Delimiter">}</span>
 <span id="L214" class="LineNr">214 </span>  <span class="Identifier">return</span> type<span class="Delimiter">-&gt;</span>left<span class="Delimiter">-&gt;</span>value == get<span class="Delimiter">(</span>Type_ordinal<span class="Delimiter">,</span> <span class="Constant">&quot;array&quot;</span><span class="Delimiter">);</span>
@@ -286,7 +286,7 @@ if ('onhashchange' in window) {
 <span id="L223" class="LineNr">223 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>is_literal<span class="Delimiter">(</span>type<span class="Delimiter">))</span> <span class="Identifier">return</span> <span class="Constant">false</span><span class="Delimiter">;</span>
 <span id="L224" class="LineNr">224 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>type<span class="Delimiter">-&gt;</span>atom<span class="Delimiter">)</span> <span class="Identifier">return</span> <span class="Constant">false</span><span class="Delimiter">;</span>
 <span id="L225" class="LineNr">225 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!type<span class="Delimiter">-&gt;</span>left<span class="Delimiter">-&gt;</span>atom<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L226" class="LineNr">226 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <span class="Constant">&quot;invalid type &quot;</span> &lt;&lt; <a href='028call_return.cc.html#L163'>to_string</a><span class="Delimiter">(</span>type<span class="Delimiter">)</span> &lt;&lt; <span class="cSpecial">'\n'</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L226" class="LineNr">226 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <span class="Constant">&quot;invalid type &quot;</span> &lt;&lt; <a href='028call_return.cc.html#L163'>to_string</a><span class="Delimiter">(</span>type<span class="Delimiter">)</span> &lt;&lt; <span class="cSpecial">'\n'</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L227" class="LineNr">227 </span>  <span class="Conceal">¦</span> <span class="Identifier">return</span> <span class="Constant">false</span><span class="Delimiter">;</span>
 <span id="L228" class="LineNr">228 </span>  <span class="Delimiter">}</span>
 <span id="L229" class="LineNr">229 </span>  <span class="Identifier">return</span> type<span class="Delimiter">-&gt;</span>left<span class="Delimiter">-&gt;</span>value == get<span class="Delimiter">(</span>Type_ordinal<span class="Delimiter">,</span> <span class="Constant">&quot;address&quot;</span><span class="Delimiter">);</span>
diff --git a/html/022arithmetic.cc.html b/html/022arithmetic.cc.html
index 3e0d1aff..0e6443e4 100644
--- a/html/022arithmetic.cc.html
+++ b/html/022arithmetic.cc.html
@@ -73,16 +73,16 @@ if ('onhashchange' in window) {
 <span id="L9" class="LineNr">  9 </span>  <span class="Comment">// primary goal of these checks is to forbid address arithmetic</span>
 <span id="L10" class="LineNr"> 10 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> i = <span class="Constant">0</span><span class="Delimiter">;</span>  i &lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">);</span>  ++i<span class="Delimiter">)</span> <span class="Delimiter">{</span>
 <span id="L11" class="LineNr"> 11 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>!is_mu_number<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">)))</span> <span class="Delimiter">{</span>
-<span id="L12" class="LineNr"> 12 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'add' requires number ingredients, but got '&quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">).</span>original_string &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L12" class="LineNr"> 12 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'add' requires number ingredients, but got '&quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">).</span>original_string &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L13" class="LineNr"> 13 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Identifier">goto</span> finish_checking_instruction<span class="Delimiter">;</span>
 <span id="L14" class="LineNr"> 14 </span>  <span class="Conceal">¦</span> <span class="Delimiter">}</span>
 <span id="L15" class="LineNr"> 15 </span>  <span class="Delimiter">}</span>
 <span id="L16" class="LineNr"> 16 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>products<span class="Delimiter">)</span> &gt; <span class="Constant">1</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L17" class="LineNr"> 17 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'add' yields exactly one product in '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L17" class="LineNr"> 17 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'add' yields exactly one product in '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L18" class="LineNr"> 18 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L19" class="LineNr"> 19 </span>  <span class="Delimiter">}</span>
 <span id="L20" class="LineNr"> 20 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>empty<span class="Delimiter">()</span> &amp;&amp; !is_dummy<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">))</span> &amp;&amp; !is_mu_number<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">)))</span> <span class="Delimiter">{</span>
-<span id="L21" class="LineNr"> 21 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'add' should yield a number, but got '&quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>original_string &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L21" class="LineNr"> 21 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'add' should yield a number, but got '&quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>original_string &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L22" class="LineNr"> 22 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L23" class="LineNr"> 23 </span>  <span class="Delimiter">}</span>
 <span id="L24" class="LineNr"> 24 </span>  <span class="Identifier">break</span><span class="Delimiter">;</span>
@@ -139,22 +139,22 @@ if ('onhashchange' in window) {
 <span id="L75" class="LineNr"> 75 </span><span class="Delimiter">:(before &quot;End Primitive Recipe Checks&quot;)</span>
 <span id="L76" class="LineNr"> 76 </span><span class="Normal">case</span> SUBTRACT: <span class="Delimiter">{</span>
 <span id="L77" class="LineNr"> 77 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>empty<span class="Delimiter">())</span> <span class="Delimiter">{</span>
-<span id="L78" class="LineNr"> 78 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'subtract' has no ingredients</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L78" class="LineNr"> 78 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'subtract' has no ingredients</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L79" class="LineNr"> 79 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L80" class="LineNr"> 80 </span>  <span class="Delimiter">}</span>
 <span id="L81" class="LineNr"> 81 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> i = <span class="Constant">0</span><span class="Delimiter">;</span>  i &lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">);</span>  ++i<span class="Delimiter">)</span> <span class="Delimiter">{</span>
 <span id="L82" class="LineNr"> 82 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span><a href='022arithmetic.cc.html#L108'>is_raw</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">)))</span> <span class="Identifier">continue</span><span class="Delimiter">;</span>  <span class="Comment">// permit address offset computations in tests</span>
 <span id="L83" class="LineNr"> 83 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>!is_mu_number<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">)))</span> <span class="Delimiter">{</span>
-<span id="L84" class="LineNr"> 84 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'subtract' requires number ingredients, but got '&quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">).</span>original_string &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L84" class="LineNr"> 84 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'subtract' requires number ingredients, but got '&quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">).</span>original_string &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L85" class="LineNr"> 85 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Identifier">goto</span> finish_checking_instruction<span class="Delimiter">;</span>
 <span id="L86" class="LineNr"> 86 </span>  <span class="Conceal">¦</span> <span class="Delimiter">}</span>
 <span id="L87" class="LineNr"> 87 </span>  <span class="Delimiter">}</span>
 <span id="L88" class="LineNr"> 88 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>products<span class="Delimiter">)</span> &gt; <span class="Constant">1</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L89" class="LineNr"> 89 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'subtract' yields exactly one product in '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L89" class="LineNr"> 89 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'subtract' yields exactly one product in '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L90" class="LineNr"> 90 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L91" class="LineNr"> 91 </span>  <span class="Delimiter">}</span>
 <span id="L92" class="LineNr"> 92 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>empty<span class="Delimiter">()</span> &amp;&amp; !is_dummy<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">))</span> &amp;&amp; !is_mu_number<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">)))</span> <span class="Delimiter">{</span>
-<span id="L93" class="LineNr"> 93 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'subtract' should yield a number, but got '&quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>original_string &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L93" class="LineNr"> 93 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'subtract' should yield a number, but got '&quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>original_string &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L94" class="LineNr"> 94 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L95" class="LineNr"> 95 </span>  <span class="Delimiter">}</span>
 <span id="L96" class="LineNr"> 96 </span>  <span class="Identifier">break</span><span class="Delimiter">;</span>
@@ -201,16 +201,16 @@ if ('onhashchange' in window) {
 <span id="L137" class="LineNr">137 </span><span class="Normal">case</span> MULTIPLY: <span class="Delimiter">{</span>
 <span id="L138" class="LineNr">138 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> i = <span class="Constant">0</span><span class="Delimiter">;</span>  i &lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">);</span>  ++i<span class="Delimiter">)</span> <span class="Delimiter">{</span>
 <span id="L139" class="LineNr">139 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>!is_mu_number<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">)))</span> <span class="Delimiter">{</span>
-<span id="L140" class="LineNr">140 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'multiply' requires number ingredients, but got '&quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">).</span>original_string &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L140" class="LineNr">140 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'multiply' requires number ingredients, but got '&quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">).</span>original_string &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L141" class="LineNr">141 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Identifier">goto</span> finish_checking_instruction<span class="Delimiter">;</span>
 <span id="L142" class="LineNr">142 </span>  <span class="Conceal">¦</span> <span class="Delimiter">}</span>
 <span id="L143" class="LineNr">143 </span>  <span class="Delimiter">}</span>
 <span id="L144" class="LineNr">144 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>products<span class="Delimiter">)</span> &gt; <span class="Constant">1</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L145" class="LineNr">145 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'multiply' yields exactly one product in '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L145" class="LineNr">145 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'multiply' yields exactly one product in '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L146" class="LineNr">146 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L147" class="LineNr">147 </span>  <span class="Delimiter">}</span>
 <span id="L148" class="LineNr">148 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>empty<span class="Delimiter">()</span> &amp;&amp; !is_dummy<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">))</span> &amp;&amp; !is_mu_number<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">)))</span> <span class="Delimiter">{</span>
-<span id="L149" class="LineNr">149 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'multiply' should yield a number, but got '&quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>original_string &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L149" class="LineNr">149 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'multiply' should yield a number, but got '&quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>original_string &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L150" class="LineNr">150 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L151" class="LineNr">151 </span>  <span class="Delimiter">}</span>
 <span id="L152" class="LineNr">152 </span>  <span class="Identifier">break</span><span class="Delimiter">;</span>
@@ -253,21 +253,21 @@ if ('onhashchange' in window) {
 <span id="L189" class="LineNr">189 </span><span class="Delimiter">:(before &quot;End Primitive Recipe Checks&quot;)</span>
 <span id="L190" class="LineNr">190 </span><span class="Normal">case</span> DIVIDE: <span class="Delimiter">{</span>
 <span id="L191" class="LineNr">191 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>empty<span class="Delimiter">())</span> <span class="Delimiter">{</span>
-<span id="L192" class="LineNr">192 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'divide' has no ingredients</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L192" class="LineNr">192 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'divide' has no ingredients</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L193" class="LineNr">193 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L194" class="LineNr">194 </span>  <span class="Delimiter">}</span>
 <span id="L195" class="LineNr">195 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> i = <span class="Constant">0</span><span class="Delimiter">;</span>  i &lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">);</span>  ++i<span class="Delimiter">)</span> <span class="Delimiter">{</span>
 <span id="L196" class="LineNr">196 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>!is_mu_number<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">)))</span> <span class="Delimiter">{</span>
-<span id="L197" class="LineNr">197 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'divide' requires number ingredients, but got '&quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">).</span>original_string &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L197" class="LineNr">197 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'divide' requires number ingredients, but got '&quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">).</span>original_string &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L198" class="LineNr">198 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Identifier">goto</span> finish_checking_instruction<span class="Delimiter">;</span>
 <span id="L199" class="LineNr">199 </span>  <span class="Conceal">¦</span> <span class="Delimiter">}</span>
 <span id="L200" class="LineNr">200 </span>  <span class="Delimiter">}</span>
 <span id="L201" class="LineNr">201 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>products<span class="Delimiter">)</span> &gt; <span class="Constant">1</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L202" class="LineNr">202 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'divide' yields exactly one product in '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L202" class="LineNr">202 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'divide' yields exactly one product in '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L203" class="LineNr">203 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L204" class="LineNr">204 </span>  <span class="Delimiter">}</span>
 <span id="L205" class="LineNr">205 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>empty<span class="Delimiter">()</span> &amp;&amp; !is_dummy<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">))</span> &amp;&amp; !is_mu_number<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">)))</span> <span class="Delimiter">{</span>
-<span id="L206" class="LineNr">206 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'divide' should yield a number, but got '&quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>original_string &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L206" class="LineNr">206 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'divide' should yield a number, but got '&quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>original_string &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L207" class="LineNr">207 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L208" class="LineNr">208 </span>  <span class="Delimiter">}</span>
 <span id="L209" class="LineNr">209 </span>  <span class="Identifier">break</span><span class="Delimiter">;</span>
@@ -311,20 +311,20 @@ if ('onhashchange' in window) {
 <span id="L247" class="LineNr">247 </span><span class="Delimiter">:(before &quot;End Primitive Recipe Checks&quot;)</span>
 <span id="L248" class="LineNr">248 </span><span class="Normal">case</span> DIVIDE_WITH_REMAINDER: <span class="Delimiter">{</span>
 <span id="L249" class="LineNr">249 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">)</span> != <span class="Constant">2</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L250" class="LineNr">250 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'divide-with-remainder' requires exactly two ingredients, but got '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L250" class="LineNr">250 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'divide-with-remainder' requires exactly two ingredients, but got '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L251" class="LineNr">251 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L252" class="LineNr">252 </span>  <span class="Delimiter">}</span>
 <span id="L253" class="LineNr">253 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!is_mu_number<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">))</span> || !is_mu_number<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">1</span><span class="Delimiter">)))</span> <span class="Delimiter">{</span>
-<span id="L254" class="LineNr">254 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'divide-with-remainder' requires number ingredients, but got '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L254" class="LineNr">254 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'divide-with-remainder' requires number ingredients, but got '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L255" class="LineNr">255 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L256" class="LineNr">256 </span>  <span class="Delimiter">}</span>
 <span id="L257" class="LineNr">257 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>products<span class="Delimiter">)</span> &gt; <span class="Constant">2</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L258" class="LineNr">258 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'divide-with-remainder' yields two products in '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L258" class="LineNr">258 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'divide-with-remainder' yields two products in '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L259" class="LineNr">259 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L260" class="LineNr">260 </span>  <span class="Delimiter">}</span>
 <span id="L261" class="LineNr">261 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> i = <span class="Constant">0</span><span class="Delimiter">;</span>  i &lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>products<span class="Delimiter">);</span>  ++i<span class="Delimiter">)</span> <span class="Delimiter">{</span>
 <span id="L262" class="LineNr">262 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>!is_dummy<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">))</span> &amp;&amp; !is_mu_number<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">)))</span> <span class="Delimiter">{</span>
-<span id="L263" class="LineNr">263 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'divide-with-remainder' should yield a number, but got '&quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">).</span>original_string &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L263" class="LineNr">263 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'divide-with-remainder' should yield a number, but got '&quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">).</span>original_string &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L264" class="LineNr">264 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Identifier">goto</span> finish_checking_instruction<span class="Delimiter">;</span>
 <span id="L265" class="LineNr">265 </span>  <span class="Conceal">¦</span> <span class="Delimiter">}</span>
 <span id="L266" class="LineNr">266 </span>  <span class="Delimiter">}</span>
@@ -337,7 +337,7 @@ if ('onhashchange' in window) {
 <span id="L273" class="LineNr">273 </span>  <span class="Normal">long</span> <span class="Normal">long</span> <span class="Normal">int</span> a = <span class="Normal">static_cast</span>&lt;<span class="Normal">long</span> <span class="Normal">long</span> <span class="Normal">int</span>&gt;<span class="Delimiter">(</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">));</span>
 <span id="L274" class="LineNr">274 </span>  <span class="Normal">long</span> <span class="Normal">long</span> <span class="Normal">int</span> b = <span class="Normal">static_cast</span>&lt;<span class="Normal">long</span> <span class="Normal">long</span> <span class="Normal">int</span>&gt;<span class="Delimiter">(</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">1</span><span class="Delimiter">).</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">));</span>
 <span id="L275" class="LineNr">275 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>b == <span class="Constant">0</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L276" class="LineNr">276 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span><a href='026call.cc.html#L85'>current_recipe_name</a><span class="Delimiter">())</span> &lt;&lt; <span class="Constant">&quot;divide by zero in '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>current_instruction<span class="Delimiter">())</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L276" class="LineNr">276 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span><a href='026call.cc.html#L87'>current_recipe_name</a><span class="Delimiter">())</span> &lt;&lt; <span class="Constant">&quot;divide by zero in '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>current_instruction<span class="Delimiter">())</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L277" class="LineNr">277 </span>  <span class="Conceal">¦</span> products<span class="Delimiter">.</span>resize<span class="Delimiter">(</span><span class="Constant">2</span><span class="Delimiter">);</span>
 <span id="L278" class="LineNr">278 </span>  <span class="Conceal">¦</span> products<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>push_back<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">);</span>
 <span id="L279" class="LineNr">279 </span>  <span class="Conceal">¦</span> products<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">1</span><span class="Delimiter">).</span>push_back<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">);</span>
@@ -395,19 +395,19 @@ if ('onhashchange' in window) {
 <span id="L331" class="LineNr">331 </span><span class="Delimiter">:(before &quot;End Primitive Recipe Checks&quot;)</span>
 <span id="L332" class="LineNr">332 </span><span class="Normal">case</span> SHIFT_LEFT: <span class="Delimiter">{</span>
 <span id="L333" class="LineNr">333 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">)</span> != <span class="Constant">2</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L334" class="LineNr">334 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'shift-left' requires exactly two ingredients, but got '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L334" class="LineNr">334 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'shift-left' requires exactly two ingredients, but got '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L335" class="LineNr">335 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L336" class="LineNr">336 </span>  <span class="Delimiter">}</span>
 <span id="L337" class="LineNr">337 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!is_mu_number<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">))</span> || !is_mu_number<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">1</span><span class="Delimiter">)))</span> <span class="Delimiter">{</span>
-<span id="L338" class="LineNr">338 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'shift-left' requires number ingredients, but got '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L338" class="LineNr">338 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'shift-left' requires number ingredients, but got '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L339" class="LineNr">339 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L340" class="LineNr">340 </span>  <span class="Delimiter">}</span>
 <span id="L341" class="LineNr">341 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>products<span class="Delimiter">)</span> &gt; <span class="Constant">1</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L342" class="LineNr">342 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'shift-left' yields one product in '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L342" class="LineNr">342 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'shift-left' yields one product in '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L343" class="LineNr">343 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L344" class="LineNr">344 </span>  <span class="Delimiter">}</span>
 <span id="L345" class="LineNr">345 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>empty<span class="Delimiter">()</span> &amp;&amp; !is_dummy<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">))</span> &amp;&amp; !is_mu_number<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">)))</span> <span class="Delimiter">{</span>
-<span id="L346" class="LineNr">346 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'shift-left' should yield a number, but got '&quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>original_string &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L346" class="LineNr">346 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'shift-left' should yield a number, but got '&quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>original_string &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L347" class="LineNr">347 </span>  <span class="Conceal">¦</span> <span class="Identifier">goto</span> finish_checking_instruction<span class="Delimiter">;</span>
 <span id="L348" class="LineNr">348 </span>  <span class="Delimiter">}</span>
 <span id="L349" class="LineNr">349 </span>  <span class="Identifier">break</span><span class="Delimiter">;</span>
@@ -419,7 +419,7 @@ if ('onhashchange' in window) {
 <span id="L355" class="LineNr">355 </span>  <span class="Normal">int</span> b = <span class="Normal">static_cast</span>&lt;<span class="Normal">int</span>&gt;<span class="Delimiter">(</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">1</span><span class="Delimiter">).</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">));</span>
 <span id="L356" class="LineNr">356 </span>  products<span class="Delimiter">.</span>resize<span class="Delimiter">(</span><span class="Constant">1</span><span class="Delimiter">);</span>
 <span id="L357" class="LineNr">357 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>b &lt; <span class="Constant">0</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L358" class="LineNr">358 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span><a href='026call.cc.html#L85'>current_recipe_name</a><span class="Delimiter">())</span> &lt;&lt; <span class="Constant">&quot;second ingredient can't be negative in '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span><a href='026call.cc.html#L87'>current_instruction</a><span class="Delimiter">())</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; end<span class="Delimiter">();</span>
+<span id="L358" class="LineNr">358 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span><a href='026call.cc.html#L87'>current_recipe_name</a><span class="Delimiter">())</span> &lt;&lt; <span class="Constant">&quot;second ingredient can't be negative in '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span><a href='026call.cc.html#L89'>current_instruction</a><span class="Delimiter">())</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; end<span class="Delimiter">();</span>
 <span id="L359" class="LineNr">359 </span>  <span class="Conceal">¦</span> products<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>push_back<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">);</span>
 <span id="L360" class="LineNr">360 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L361" class="LineNr">361 </span>  <span class="Delimiter">}</span>
@@ -466,19 +466,19 @@ if ('onhashchange' in window) {
 <span id="L402" class="LineNr">402 </span><span class="Delimiter">:(before &quot;End Primitive Recipe Checks&quot;)</span>
 <span id="L403" class="LineNr">403 </span><span class="Normal">case</span> SHIFT_RIGHT: <span class="Delimiter">{</span>
 <span id="L404" class="LineNr">404 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">)</span> != <span class="Constant">2</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L405" class="LineNr">405 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'shift-right' requires exactly two ingredients, but got '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L405" class="LineNr">405 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'shift-right' requires exactly two ingredients, but got '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L406" class="LineNr">406 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L407" class="LineNr">407 </span>  <span class="Delimiter">}</span>
 <span id="L408" class="LineNr">408 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!is_mu_number<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">))</span> || !is_mu_number<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">1</span><span class="Delimiter">)))</span> <span class="Delimiter">{</span>
-<span id="L409" class="LineNr">409 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'shift-right' requires number ingredients, but got '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L409" class="LineNr">409 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'shift-right' requires number ingredients, but got '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L410" class="LineNr">410 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L411" class="LineNr">411 </span>  <span class="Delimiter">}</span>
 <span id="L412" class="LineNr">412 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>products<span class="Delimiter">)</span> &gt; <span class="Constant">1</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L413" class="LineNr">413 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'shift-right' yields one product in '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L413" class="LineNr">413 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'shift-right' yields one product in '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L414" class="LineNr">414 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L415" class="LineNr">415 </span>  <span class="Delimiter">}</span>
 <span id="L416" class="LineNr">416 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>empty<span class="Delimiter">()</span> &amp;&amp; !is_dummy<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">))</span> &amp;&amp; !is_mu_number<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">)))</span> <span class="Delimiter">{</span>
-<span id="L417" class="LineNr">417 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'shift-right' should yield a number, but got '&quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>original_string &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L417" class="LineNr">417 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'shift-right' should yield a number, but got '&quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>original_string &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L418" class="LineNr">418 </span>  <span class="Conceal">¦</span> <span class="Identifier">goto</span> finish_checking_instruction<span class="Delimiter">;</span>
 <span id="L419" class="LineNr">419 </span>  <span class="Delimiter">}</span>
 <span id="L420" class="LineNr">420 </span>  <span class="Identifier">break</span><span class="Delimiter">;</span>
@@ -490,7 +490,7 @@ if ('onhashchange' in window) {
 <span id="L426" class="LineNr">426 </span>  <span class="Normal">int</span> b = <span class="Normal">static_cast</span>&lt;<span class="Normal">int</span>&gt;<span class="Delimiter">(</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">1</span><span class="Delimiter">).</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">));</span>
 <span id="L427" class="LineNr">427 </span>  products<span class="Delimiter">.</span>resize<span class="Delimiter">(</span><span class="Constant">1</span><span class="Delimiter">);</span>
 <span id="L428" class="LineNr">428 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>b &lt; <span class="Constant">0</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L429" class="LineNr">429 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span><a href='026call.cc.html#L85'>current_recipe_name</a><span class="Delimiter">())</span> &lt;&lt; <span class="Constant">&quot;second ingredient can't be negative in '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span><a href='026call.cc.html#L87'>current_instruction</a><span class="Delimiter">())</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; end<span class="Delimiter">();</span>
+<span id="L429" class="LineNr">429 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span><a href='026call.cc.html#L87'>current_recipe_name</a><span class="Delimiter">())</span> &lt;&lt; <span class="Constant">&quot;second ingredient can't be negative in '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span><a href='026call.cc.html#L89'>current_instruction</a><span class="Delimiter">())</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; end<span class="Delimiter">();</span>
 <span id="L430" class="LineNr">430 </span>  <span class="Conceal">¦</span> products<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>push_back<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">);</span>
 <span id="L431" class="LineNr">431 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L432" class="LineNr">432 </span>  <span class="Delimiter">}</span>
@@ -537,19 +537,19 @@ if ('onhashchange' in window) {
 <span id="L473" class="LineNr">473 </span><span class="Delimiter">:(before &quot;End Primitive Recipe Checks&quot;)</span>
 <span id="L474" class="LineNr">474 </span><span class="Normal">case</span> AND_BITS: <span class="Delimiter">{</span>
 <span id="L475" class="LineNr">475 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">)</span> != <span class="Constant">2</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L476" class="LineNr">476 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'and-bits' requires exactly two ingredients, but got '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L476" class="LineNr">476 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'and-bits' requires exactly two ingredients, but got '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L477" class="LineNr">477 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L478" class="LineNr">478 </span>  <span class="Delimiter">}</span>
 <span id="L479" class="LineNr">479 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!is_mu_number<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">))</span> || !is_mu_number<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">1</span><span class="Delimiter">)))</span> <span class="Delimiter">{</span>
-<span id="L480" class="LineNr">480 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'and-bits' requires number ingredients, but got '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L480" class="LineNr">480 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'and-bits' requires number ingredients, but got '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L481" class="LineNr">481 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L482" class="LineNr">482 </span>  <span class="Delimiter">}</span>
 <span id="L483" class="LineNr">483 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>products<span class="Delimiter">)</span> &gt; <span class="Constant">1</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L484" class="LineNr">484 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'and-bits' yields one product in '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L484" class="LineNr">484 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'and-bits' yields one product in '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L485" class="LineNr">485 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L486" class="LineNr">486 </span>  <span class="Delimiter">}</span>
 <span id="L487" class="LineNr">487 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>empty<span class="Delimiter">()</span> &amp;&amp; !is_dummy<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">))</span> &amp;&amp; !is_mu_number<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">)))</span> <span class="Delimiter">{</span>
-<span id="L488" class="LineNr">488 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'and-bits' should yield a number, but got '&quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>original_string &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L488" class="LineNr">488 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'and-bits' should yield a number, but got '&quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>original_string &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L489" class="LineNr">489 </span>  <span class="Conceal">¦</span> <span class="Identifier">goto</span> finish_checking_instruction<span class="Delimiter">;</span>
 <span id="L490" class="LineNr">490 </span>  <span class="Delimiter">}</span>
 <span id="L491" class="LineNr">491 </span>  <span class="Identifier">break</span><span class="Delimiter">;</span>
@@ -595,19 +595,19 @@ if ('onhashchange' in window) {
 <span id="L531" class="LineNr">531 </span><span class="Delimiter">:(before &quot;End Primitive Recipe Checks&quot;)</span>
 <span id="L532" class="LineNr">532 </span><span class="Normal">case</span> OR_BITS: <span class="Delimiter">{</span>
 <span id="L533" class="LineNr">533 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">)</span> != <span class="Constant">2</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L534" class="LineNr">534 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'or-bits' requires exactly two ingredients, but got '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L534" class="LineNr">534 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'or-bits' requires exactly two ingredients, but got '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L535" class="LineNr">535 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L536" class="LineNr">536 </span>  <span class="Delimiter">}</span>
 <span id="L537" class="LineNr">537 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!is_mu_number<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">))</span> || !is_mu_number<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">1</span><span class="Delimiter">)))</span> <span class="Delimiter">{</span>
-<span id="L538" class="LineNr">538 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'or-bits' requires number ingredients, but got '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L538" class="LineNr">538 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'or-bits' requires number ingredients, but got '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L539" class="LineNr">539 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L540" class="LineNr">540 </span>  <span class="Delimiter">}</span>
 <span id="L541" class="LineNr">541 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>products<span class="Delimiter">)</span> &gt; <span class="Constant">1</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L542" class="LineNr">542 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'or-bits' yields one product in '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L542" class="LineNr">542 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'or-bits' yields one product in '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L543" class="LineNr">543 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L544" class="LineNr">544 </span>  <span class="Delimiter">}</span>
 <span id="L545" class="LineNr">545 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>empty<span class="Delimiter">()</span> &amp;&amp; !is_dummy<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">))</span> &amp;&amp; !is_mu_number<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">)))</span> <span class="Delimiter">{</span>
-<span id="L546" class="LineNr">546 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'or-bits' should yield a number, but got '&quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>original_string &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L546" class="LineNr">546 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'or-bits' should yield a number, but got '&quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>original_string &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L547" class="LineNr">547 </span>  <span class="Conceal">¦</span> <span class="Identifier">goto</span> finish_checking_instruction<span class="Delimiter">;</span>
 <span id="L548" class="LineNr">548 </span>  <span class="Delimiter">}</span>
 <span id="L549" class="LineNr">549 </span>  <span class="Identifier">break</span><span class="Delimiter">;</span>
@@ -647,19 +647,19 @@ if ('onhashchange' in window) {
 <span id="L583" class="LineNr">583 </span><span class="Delimiter">:(before &quot;End Primitive Recipe Checks&quot;)</span>
 <span id="L584" class="LineNr">584 </span><span class="Normal">case</span> XOR_BITS: <span class="Delimiter">{</span>
 <span id="L585" class="LineNr">585 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">)</span> != <span class="Constant">2</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L586" class="LineNr">586 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'xor-bits' requires exactly two ingredients, but got '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L586" class="LineNr">586 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'xor-bits' requires exactly two ingredients, but got '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L587" class="LineNr">587 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L588" class="LineNr">588 </span>  <span class="Delimiter">}</span>
 <span id="L589" class="LineNr">589 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!is_mu_number<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">))</span> || !is_mu_number<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">1</span><span class="Delimiter">)))</span> <span class="Delimiter">{</span>
-<span id="L590" class="LineNr">590 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'xor-bits' requires number ingredients, but got '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L590" class="LineNr">590 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'xor-bits' requires number ingredients, but got '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L591" class="LineNr">591 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L592" class="LineNr">592 </span>  <span class="Delimiter">}</span>
 <span id="L593" class="LineNr">593 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>products<span class="Delimiter">)</span> &gt; <span class="Constant">1</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L594" class="LineNr">594 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'xor-bits' yields one product in '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L594" class="LineNr">594 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'xor-bits' yields one product in '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L595" class="LineNr">595 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L596" class="LineNr">596 </span>  <span class="Delimiter">}</span>
 <span id="L597" class="LineNr">597 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>empty<span class="Delimiter">()</span> &amp;&amp; !is_dummy<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">))</span> &amp;&amp; !is_mu_number<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">)))</span> <span class="Delimiter">{</span>
-<span id="L598" class="LineNr">598 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'xor-bits' should yield a number, but got '&quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>original_string &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L598" class="LineNr">598 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'xor-bits' should yield a number, but got '&quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>original_string &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L599" class="LineNr">599 </span>  <span class="Conceal">¦</span> <span class="Identifier">goto</span> finish_checking_instruction<span class="Delimiter">;</span>
 <span id="L600" class="LineNr">600 </span>  <span class="Delimiter">}</span>
 <span id="L601" class="LineNr">601 </span>  <span class="Identifier">break</span><span class="Delimiter">;</span>
@@ -699,19 +699,19 @@ if ('onhashchange' in window) {
 <span id="L635" class="LineNr">635 </span><span class="Delimiter">:(before &quot;End Primitive Recipe Checks&quot;)</span>
 <span id="L636" class="LineNr">636 </span><span class="Normal">case</span> FLIP_BITS: <span class="Delimiter">{</span>
 <span id="L637" class="LineNr">637 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">)</span> != <span class="Constant">1</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L638" class="LineNr">638 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'flip-bits' requires exactly one ingredient, but got '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L638" class="LineNr">638 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'flip-bits' requires exactly one ingredient, but got '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L639" class="LineNr">639 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L640" class="LineNr">640 </span>  <span class="Delimiter">}</span>
 <span id="L641" class="LineNr">641 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!is_mu_number<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">)))</span> <span class="Delimiter">{</span>
-<span id="L642" class="LineNr">642 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'flip-bits' requires a number ingredient, but got '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L642" class="LineNr">642 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'flip-bits' requires a number ingredient, but got '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L643" class="LineNr">643 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L644" class="LineNr">644 </span>  <span class="Delimiter">}</span>
 <span id="L645" class="LineNr">645 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>products<span class="Delimiter">)</span> &gt; <span class="Constant">1</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L646" class="LineNr">646 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'flip-bits' yields one product in '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L646" class="LineNr">646 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'flip-bits' yields one product in '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L647" class="LineNr">647 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L648" class="LineNr">648 </span>  <span class="Delimiter">}</span>
 <span id="L649" class="LineNr">649 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>empty<span class="Delimiter">()</span> &amp;&amp; !is_dummy<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">))</span> &amp;&amp; !is_mu_number<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">)))</span> <span class="Delimiter">{</span>
-<span id="L650" class="LineNr">650 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'flip-bits' should yield a number, but got '&quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>original_string &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L650" class="LineNr">650 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'flip-bits' should yield a number, but got '&quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>original_string &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L651" class="LineNr">651 </span>  <span class="Conceal">¦</span> <span class="Identifier">goto</span> finish_checking_instruction<span class="Delimiter">;</span>
 <span id="L652" class="LineNr">652 </span>  <span class="Delimiter">}</span>
 <span id="L653" class="LineNr">653 </span>  <span class="Identifier">break</span><span class="Delimiter">;</span>
@@ -756,11 +756,11 @@ if ('onhashchange' in window) {
 <span id="L692" class="LineNr">692 </span><span class="Delimiter">:(before &quot;End Primitive Recipe Checks&quot;)</span>
 <span id="L693" class="LineNr">693 </span><span class="Normal">case</span> ROUND: <span class="Delimiter">{</span>
 <span id="L694" class="LineNr">694 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">)</span> != <span class="Constant">1</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L695" class="LineNr">695 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'round' requires exactly one ingredient, but got '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L695" class="LineNr">695 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'round' requires exactly one ingredient, but got '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L696" class="LineNr">696 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L697" class="LineNr">697 </span>  <span class="Delimiter">}</span>
 <span id="L698" class="LineNr">698 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!is_mu_number<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">)))</span> <span class="Delimiter">{</span>
-<span id="L699" class="LineNr">699 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;first ingredient of 'round' should be a number, but got '&quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>original_string &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L699" class="LineNr">699 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;first ingredient of 'round' should be a number, but got '&quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>original_string &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L700" class="LineNr">700 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L701" class="LineNr">701 </span>  <span class="Delimiter">}</span>
 <span id="L702" class="LineNr">702 </span>  <span class="Identifier">break</span><span class="Delimiter">;</span>
@@ -797,11 +797,11 @@ if ('onhashchange' in window) {
 <span id="L733" class="LineNr">733 </span><span class="Delimiter">:(before &quot;End Primitive Recipe Checks&quot;)</span>
 <span id="L734" class="LineNr">734 </span><span class="Normal">case</span> TRUNCATE: <span class="Delimiter">{</span>
 <span id="L735" class="LineNr">735 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">)</span> != <span class="Constant">1</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L736" class="LineNr">736 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'truncate' requires exactly one ingredient, but got '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L736" class="LineNr">736 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'truncate' requires exactly one ingredient, but got '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L737" class="LineNr">737 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L738" class="LineNr">738 </span>  <span class="Delimiter">}</span>
 <span id="L739" class="LineNr">739 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!is_mu_number<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">)))</span> <span class="Delimiter">{</span>
-<span id="L740" class="LineNr">740 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;first ingredient of 'truncate' should be a number, but got '&quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>original_string &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L740" class="LineNr">740 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;first ingredient of 'truncate' should be a number, but got '&quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>original_string &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L741" class="LineNr">741 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L742" class="LineNr">742 </span>  <span class="Delimiter">}</span>
 <span id="L743" class="LineNr">743 </span>  <span class="Identifier">break</span><span class="Delimiter">;</span>
@@ -832,11 +832,11 @@ if ('onhashchange' in window) {
 <span id="L768" class="LineNr">768 </span><span class="Delimiter">:(before &quot;End Primitive Recipe Checks&quot;)</span>
 <span id="L769" class="LineNr">769 </span><span class="Normal">case</span> SQUARE_ROOT: <span class="Delimiter">{</span>
 <span id="L770" class="LineNr">770 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">)</span> != <span class="Constant">1</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L771" class="LineNr">771 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'square-root' requires exactly one ingredient, but got '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L771" class="LineNr">771 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'square-root' requires exactly one ingredient, but got '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L772" class="LineNr">772 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L773" class="LineNr">773 </span>  <span class="Delimiter">}</span>
 <span id="L774" class="LineNr">774 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!is_mu_number<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">)))</span> <span class="Delimiter">{</span>
-<span id="L775" class="LineNr">775 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;first ingredient of 'square-root' should be a number, but got '&quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>original_string &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L775" class="LineNr">775 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;first ingredient of 'square-root' should be a number, but got '&quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>original_string &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L776" class="LineNr">776 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L777" class="LineNr">777 </span>  <span class="Delimiter">}</span>
 <span id="L778" class="LineNr">778 </span>  <span class="Identifier">break</span><span class="Delimiter">;</span>
@@ -855,19 +855,19 @@ if ('onhashchange' in window) {
 <span id="L791" class="LineNr">791 </span><span class="Delimiter">:(before &quot;End Primitive Recipe Checks&quot;)</span>
 <span id="L792" class="LineNr">792 </span><span class="Normal">case</span> CHARACTER_TO_CODE: <span class="Delimiter">{</span>
 <span id="L793" class="LineNr">793 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">)</span> != <span class="Constant">1</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L794" class="LineNr">794 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'character-to-code' requires exactly one ingredient, but got '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L794" class="LineNr">794 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'character-to-code' requires exactly one ingredient, but got '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L795" class="LineNr">795 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L796" class="LineNr">796 </span>  <span class="Delimiter">}</span>
 <span id="L797" class="LineNr">797 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!is_mu_character<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">)))</span> <span class="Delimiter">{</span>
-<span id="L798" class="LineNr">798 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;first ingredient of 'character-to-code' should be a character, but got '&quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>original_string &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L798" class="LineNr">798 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;first ingredient of 'character-to-code' should be a character, but got '&quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>original_string &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L799" class="LineNr">799 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L800" class="LineNr">800 </span>  <span class="Delimiter">}</span>
 <span id="L801" class="LineNr">801 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>products<span class="Delimiter">)</span> != <span class="Constant">1</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L802" class="LineNr">802 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'character-to-code' requires exactly one product, but got '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L802" class="LineNr">802 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'character-to-code' requires exactly one product, but got '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L803" class="LineNr">803 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L804" class="LineNr">804 </span>  <span class="Delimiter">}</span>
 <span id="L805" class="LineNr">805 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!is_mu_number<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">)))</span> <span class="Delimiter">{</span>
-<span id="L806" class="LineNr">806 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;first product of 'character-to-code' should be a number, but got '&quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>original_string &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L806" class="LineNr">806 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;first product of 'character-to-code' should be a number, but got '&quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>original_string &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L807" class="LineNr">807 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L808" class="LineNr">808 </span>  <span class="Delimiter">}</span>
 <span id="L809" class="LineNr">809 </span>  <span class="Identifier">break</span><span class="Delimiter">;</span>
diff --git a/html/023boolean.cc.html b/html/023boolean.cc.html
index 4168dd6d..e2f6eca6 100644
--- a/html/023boolean.cc.html
+++ b/html/023boolean.cc.html
@@ -71,16 +71,16 @@ if ('onhashchange' in window) {
 <span id="L8" class="LineNr">  8 </span><span class="Normal">case</span> AND: <span class="Delimiter">{</span>
 <span id="L9" class="LineNr">  9 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> i = <span class="Constant">0</span><span class="Delimiter">;</span>  i &lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">);</span>  ++i<span class="Delimiter">)</span> <span class="Delimiter">{</span>
 <span id="L10" class="LineNr"> 10 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>!is_mu_scalar<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">)))</span> <span class="Delimiter">{</span>
-<span id="L11" class="LineNr"> 11 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'and' requires boolean ingredients, but got '&quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">).</span>original_string &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L11" class="LineNr"> 11 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'and' requires boolean ingredients, but got '&quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">).</span>original_string &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L12" class="LineNr"> 12 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Identifier">goto</span> finish_checking_instruction<span class="Delimiter">;</span>
 <span id="L13" class="LineNr"> 13 </span>  <span class="Conceal">¦</span> <span class="Delimiter">}</span>
 <span id="L14" class="LineNr"> 14 </span>  <span class="Delimiter">}</span>
 <span id="L15" class="LineNr"> 15 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>products<span class="Delimiter">)</span> &gt; <span class="Constant">1</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L16" class="LineNr"> 16 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'and' yields exactly one product in '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L16" class="LineNr"> 16 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'and' yields exactly one product in '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L17" class="LineNr"> 17 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L18" class="LineNr"> 18 </span>  <span class="Delimiter">}</span>
 <span id="L19" class="LineNr"> 19 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>empty<span class="Delimiter">()</span> &amp;&amp; !is_dummy<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">))</span> &amp;&amp; !is_mu_boolean<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">)))</span> <span class="Delimiter">{</span>
-<span id="L20" class="LineNr"> 20 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'and' should yield a boolean, but got '&quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>original_string &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L20" class="LineNr"> 20 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'and' should yield a boolean, but got '&quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>original_string &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L21" class="LineNr"> 21 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L22" class="LineNr"> 22 </span>  <span class="Delimiter">}</span>
 <span id="L23" class="LineNr"> 23 </span>  <span class="Identifier">break</span><span class="Delimiter">;</span>
@@ -129,16 +129,16 @@ if ('onhashchange' in window) {
 <span id="L66" class="LineNr"> 66 </span><span class="Normal">case</span> OR: <span class="Delimiter">{</span>
 <span id="L67" class="LineNr"> 67 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> i = <span class="Constant">0</span><span class="Delimiter">;</span>  i &lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">);</span>  ++i<span class="Delimiter">)</span> <span class="Delimiter">{</span>
 <span id="L68" class="LineNr"> 68 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>!is_mu_scalar<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">)))</span> <span class="Delimiter">{</span>
-<span id="L69" class="LineNr"> 69 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'and' requires boolean ingredients, but got '&quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">).</span>original_string &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L69" class="LineNr"> 69 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'and' requires boolean ingredients, but got '&quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">).</span>original_string &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L70" class="LineNr"> 70 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Identifier">goto</span> finish_checking_instruction<span class="Delimiter">;</span>
 <span id="L71" class="LineNr"> 71 </span>  <span class="Conceal">¦</span> <span class="Delimiter">}</span>
 <span id="L72" class="LineNr"> 72 </span>  <span class="Delimiter">}</span>
 <span id="L73" class="LineNr"> 73 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>products<span class="Delimiter">)</span> &gt; <span class="Constant">1</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L74" class="LineNr"> 74 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'or' yields exactly one product in '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L74" class="LineNr"> 74 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'or' yields exactly one product in '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L75" class="LineNr"> 75 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L76" class="LineNr"> 76 </span>  <span class="Delimiter">}</span>
 <span id="L77" class="LineNr"> 77 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>empty<span class="Delimiter">()</span> &amp;&amp; !is_dummy<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">))</span> &amp;&amp; !is_mu_boolean<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">)))</span> <span class="Delimiter">{</span>
-<span id="L78" class="LineNr"> 78 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'or' should yield a boolean, but got '&quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>original_string &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L78" class="LineNr"> 78 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'or' should yield a boolean, but got '&quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>original_string &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L79" class="LineNr"> 79 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L80" class="LineNr"> 80 </span>  <span class="Delimiter">}</span>
 <span id="L81" class="LineNr"> 81 </span>  <span class="Identifier">break</span><span class="Delimiter">;</span>
@@ -186,19 +186,19 @@ if ('onhashchange' in window) {
 <span id="L123" class="LineNr">123 </span><span class="Delimiter">:(before &quot;End Primitive Recipe Checks&quot;)</span>
 <span id="L124" class="LineNr">124 </span><span class="Normal">case</span> NOT: <span class="Delimiter">{</span>
 <span id="L125" class="LineNr">125 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>products<span class="Delimiter">)</span> != <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">))</span> <span class="Delimiter">{</span>
-<span id="L126" class="LineNr">126 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <span class="Constant">&quot;ingredients and products should match in '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L126" class="LineNr">126 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <span class="Constant">&quot;ingredients and products should match in '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L127" class="LineNr">127 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L128" class="LineNr">128 </span>  <span class="Delimiter">}</span>
 <span id="L129" class="LineNr">129 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> i = <span class="Constant">0</span><span class="Delimiter">;</span>  i &lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">);</span>  ++i<span class="Delimiter">)</span> <span class="Delimiter">{</span>
 <span id="L130" class="LineNr">130 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>!is_mu_scalar<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">)))</span> <span class="Delimiter">{</span>
-<span id="L131" class="LineNr">131 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'not' requires boolean ingredients, but got '&quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">).</span>original_string &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L131" class="LineNr">131 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'not' requires boolean ingredients, but got '&quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">).</span>original_string &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L132" class="LineNr">132 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Identifier">goto</span> finish_checking_instruction<span class="Delimiter">;</span>
 <span id="L133" class="LineNr">133 </span>  <span class="Conceal">¦</span> <span class="Delimiter">}</span>
 <span id="L134" class="LineNr">134 </span>  <span class="Delimiter">}</span>
 <span id="L135" class="LineNr">135 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> i = <span class="Constant">0</span><span class="Delimiter">;</span>  i &lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>products<span class="Delimiter">);</span>  ++i<span class="Delimiter">)</span> <span class="Delimiter">{</span>
 <span id="L136" class="LineNr">136 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>is_dummy<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">)))</span> <span class="Identifier">continue</span><span class="Delimiter">;</span>
 <span id="L137" class="LineNr">137 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>!is_mu_boolean<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">)))</span> <span class="Delimiter">{</span>
-<span id="L138" class="LineNr">138 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'not' should yield a boolean, but got '&quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">).</span>original_string &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L138" class="LineNr">138 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'not' should yield a boolean, but got '&quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">).</span>original_string &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L139" class="LineNr">139 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Identifier">goto</span> finish_checking_instruction<span class="Delimiter">;</span>
 <span id="L140" class="LineNr">140 </span>  <span class="Conceal">¦</span> <span class="Delimiter">}</span>
 <span id="L141" class="LineNr">141 </span>  <span class="Delimiter">}</span>
diff --git a/html/024jump.cc.html b/html/024jump.cc.html
index b9978d43..cdc86f04 100644
--- a/html/024jump.cc.html
+++ b/html/024jump.cc.html
@@ -80,20 +80,20 @@ if ('onhashchange' in window) {
 <span id="L16" class="LineNr"> 16 </span><span class="Delimiter">:(before &quot;End Primitive Recipe Checks&quot;)</span>
 <span id="L17" class="LineNr"> 17 </span><span class="Normal">case</span> JUMP: <span class="Delimiter">{</span>
 <span id="L18" class="LineNr"> 18 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">)</span> != <span class="Constant">1</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L19" class="LineNr"> 19 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;' should get exactly one ingredient</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L19" class="LineNr"> 19 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;' should get exactly one ingredient</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L20" class="LineNr"> 20 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L21" class="LineNr"> 21 </span>  <span class="Delimiter">}</span>
 <span id="L22" class="LineNr"> 22 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!is_literal<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">)))</span> <span class="Delimiter">{</span>
-<span id="L23" class="LineNr"> 23 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;first ingredient of '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;' should be a label or offset, but '&quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>name &lt;&lt; <span class="Constant">&quot;' has type '&quot;</span> &lt;&lt; names_to_string_without_quotes<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>type<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L23" class="LineNr"> 23 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;first ingredient of '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;' should be a label or offset, but '&quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>name &lt;&lt; <span class="Constant">&quot;' has type '&quot;</span> &lt;&lt; names_to_string_without_quotes<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>type<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L24" class="LineNr"> 24 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L25" class="LineNr"> 25 </span>  <span class="Delimiter">}</span>
 <span id="L26" class="LineNr"> 26 </span>  <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L27" class="LineNr"> 27 </span><span class="Delimiter">}</span>
 <span id="L28" class="LineNr"> 28 </span><span class="Delimiter">:(before &quot;End Primitive Recipe Implementations&quot;)</span>
 <span id="L29" class="LineNr"> 29 </span><span class="Normal">case</span> JUMP: <span class="Delimiter">{</span>
-<span id="L30" class="LineNr"> 30 </span>  assert<span class="Delimiter">(</span><a href='026call.cc.html#L87'>current_instruction</a><span class="Delimiter">().</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>initialized<span class="Delimiter">);</span>
-<span id="L31" class="LineNr"> 31 </span>  <a href='026call.cc.html#L82'>current_step_index</a><span class="Delimiter">()</span> += ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">)</span>+<span class="Constant">1</span><span class="Delimiter">;</span>
-<span id="L32" class="LineNr"> 32 </span>  <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">9998</span><span class="Delimiter">,</span> <span class="Constant">&quot;run&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;jumping to <a href='010vm.cc.html#L32'>instruction</a> &quot;</span> &lt;&lt; <a href='026call.cc.html#L82'>current_step_index</a><span class="Delimiter">()</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L30" class="LineNr"> 30 </span>  assert<span class="Delimiter">(</span><a href='026call.cc.html#L89'>current_instruction</a><span class="Delimiter">().</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>initialized<span class="Delimiter">);</span>
+<span id="L31" class="LineNr"> 31 </span>  <a href='026call.cc.html#L84'>current_step_index</a><span class="Delimiter">()</span> += ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">)</span>+<span class="Constant">1</span><span class="Delimiter">;</span>
+<span id="L32" class="LineNr"> 32 </span>  <a href='003trace.cc.html#L167'>trace</a><span class="Delimiter">(</span><span class="Constant">9998</span><span class="Delimiter">,</span> <span class="Constant">&quot;run&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;jumping to <a href='010vm.cc.html#L32'>instruction</a> &quot;</span> &lt;&lt; <a href='026call.cc.html#L84'>current_step_index</a><span class="Delimiter">()</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L33" class="LineNr"> 33 </span>  <span class="Comment">// skip rest of this instruction</span>
 <span id="L34" class="LineNr"> 34 </span>  write_products = <span class="Constant">false</span><span class="Delimiter">;</span>
 <span id="L35" class="LineNr"> 35 </span>  fall_through_to_next_instruction = <span class="Constant">false</span><span class="Delimiter">;</span>
@@ -122,15 +122,15 @@ if ('onhashchange' in window) {
 <span id="L58" class="LineNr"> 58 </span><span class="Delimiter">:(before &quot;End Primitive Recipe Checks&quot;)</span>
 <span id="L59" class="LineNr"> 59 </span><span class="Normal">case</span> JUMP_IF: <span class="Delimiter">{</span>
 <span id="L60" class="LineNr"> 60 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">)</span> != <span class="Constant">2</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L61" class="LineNr"> 61 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;' should get exactly two ingredients</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L61" class="LineNr"> 61 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;' should get exactly two ingredients</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L62" class="LineNr"> 62 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L63" class="LineNr"> 63 </span>  <span class="Delimiter">}</span>
 <span id="L64" class="LineNr"> 64 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!is_mu_scalar<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">)))</span> <span class="Delimiter">{</span>
-<span id="L65" class="LineNr"> 65 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;' requires a boolean for its first ingredient, but '&quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>name &lt;&lt; <span class="Constant">&quot;' has type '&quot;</span> &lt;&lt; names_to_string_without_quotes<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>type<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L65" class="LineNr"> 65 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;' requires a boolean for its first ingredient, but '&quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>name &lt;&lt; <span class="Constant">&quot;' has type '&quot;</span> &lt;&lt; names_to_string_without_quotes<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>type<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L66" class="LineNr"> 66 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L67" class="LineNr"> 67 </span>  <span class="Delimiter">}</span>
 <span id="L68" class="LineNr"> 68 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!is_literal<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">1</span><span class="Delimiter">)))</span> <span class="Delimiter">{</span>
-<span id="L69" class="LineNr"> 69 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;' requires a label or offset for its second ingredient, but '&quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">1</span><span class="Delimiter">).</span>name &lt;&lt; <span class="Constant">&quot;' has type '&quot;</span> &lt;&lt; names_to_string_without_quotes<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">1</span><span class="Delimiter">).</span>type<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L69" class="LineNr"> 69 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;' requires a label or offset for its second ingredient, but '&quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">1</span><span class="Delimiter">).</span>name &lt;&lt; <span class="Constant">&quot;' has type '&quot;</span> &lt;&lt; names_to_string_without_quotes<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">1</span><span class="Delimiter">).</span>type<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L70" class="LineNr"> 70 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L71" class="LineNr"> 71 </span>  <span class="Delimiter">}</span>
 <span id="L72" class="LineNr"> 72 </span>  <span class="Comment">// End JUMP_IF Checks</span>
@@ -138,13 +138,13 @@ if ('onhashchange' in window) {
 <span id="L74" class="LineNr"> 74 </span><span class="Delimiter">}</span>
 <span id="L75" class="LineNr"> 75 </span><span class="Delimiter">:(before &quot;End Primitive Recipe Implementations&quot;)</span>
 <span id="L76" class="LineNr"> 76 </span><span class="Normal">case</span> JUMP_IF: <span class="Delimiter">{</span>
-<span id="L77" class="LineNr"> 77 </span>  assert<span class="Delimiter">(</span><a href='026call.cc.html#L87'>current_instruction</a><span class="Delimiter">().</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">1</span><span class="Delimiter">).</span>initialized<span class="Delimiter">);</span>
+<span id="L77" class="LineNr"> 77 </span>  assert<span class="Delimiter">(</span><a href='026call.cc.html#L89'>current_instruction</a><span class="Delimiter">().</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">1</span><span class="Delimiter">).</span>initialized<span class="Delimiter">);</span>
 <span id="L78" class="LineNr"> 78 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">))</span> <span class="Delimiter">{</span>
-<span id="L79" class="LineNr"> 79 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">9998</span><span class="Delimiter">,</span> <span class="Constant">&quot;run&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;jump-if fell through&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L79" class="LineNr"> 79 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L167'>trace</a><span class="Delimiter">(</span><span class="Constant">9998</span><span class="Delimiter">,</span> <span class="Constant">&quot;run&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;jump-if fell through&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L80" class="LineNr"> 80 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L81" class="LineNr"> 81 </span>  <span class="Delimiter">}</span>
-<span id="L82" class="LineNr"> 82 </span>  <a href='026call.cc.html#L82'>current_step_index</a><span class="Delimiter">()</span> += ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">1</span><span class="Delimiter">).</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">)</span>+<span class="Constant">1</span><span class="Delimiter">;</span>
-<span id="L83" class="LineNr"> 83 </span>  <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">9998</span><span class="Delimiter">,</span> <span class="Constant">&quot;run&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;jumping to <a href='010vm.cc.html#L32'>instruction</a> &quot;</span> &lt;&lt; <a href='026call.cc.html#L82'>current_step_index</a><span class="Delimiter">()</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L82" class="LineNr"> 82 </span>  <a href='026call.cc.html#L84'>current_step_index</a><span class="Delimiter">()</span> += ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">1</span><span class="Delimiter">).</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">)</span>+<span class="Constant">1</span><span class="Delimiter">;</span>
+<span id="L83" class="LineNr"> 83 </span>  <a href='003trace.cc.html#L167'>trace</a><span class="Delimiter">(</span><span class="Constant">9998</span><span class="Delimiter">,</span> <span class="Constant">&quot;run&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;jumping to <a href='010vm.cc.html#L32'>instruction</a> &quot;</span> &lt;&lt; <a href='026call.cc.html#L84'>current_step_index</a><span class="Delimiter">()</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L84" class="LineNr"> 84 </span>  <span class="Comment">// skip rest of this instruction</span>
 <span id="L85" class="LineNr"> 85 </span>  write_products = <span class="Constant">false</span><span class="Delimiter">;</span>
 <span id="L86" class="LineNr"> 86 </span>  fall_through_to_next_instruction = <span class="Constant">false</span><span class="Delimiter">;</span>
@@ -178,15 +178,15 @@ if ('onhashchange' in window) {
 <span id="L114" class="LineNr">114 </span><span class="Delimiter">:(before &quot;End Primitive Recipe Checks&quot;)</span>
 <span id="L115" class="LineNr">115 </span><span class="Normal">case</span> JUMP_UNLESS: <span class="Delimiter">{</span>
 <span id="L116" class="LineNr">116 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">)</span> != <span class="Constant">2</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L117" class="LineNr">117 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;' should get exactly two ingredients</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L117" class="LineNr">117 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;' should get exactly two ingredients</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L118" class="LineNr">118 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L119" class="LineNr">119 </span>  <span class="Delimiter">}</span>
 <span id="L120" class="LineNr">120 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!is_mu_scalar<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">)))</span> <span class="Delimiter">{</span>
-<span id="L121" class="LineNr">121 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;' requires a boolean for its first ingredient, but '&quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>name &lt;&lt; <span class="Constant">&quot;' has type '&quot;</span> &lt;&lt; names_to_string_without_quotes<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>type<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L121" class="LineNr">121 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;' requires a boolean for its first ingredient, but '&quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>name &lt;&lt; <span class="Constant">&quot;' has type '&quot;</span> &lt;&lt; names_to_string_without_quotes<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>type<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L122" class="LineNr">122 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L123" class="LineNr">123 </span>  <span class="Delimiter">}</span>
 <span id="L124" class="LineNr">124 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!is_literal<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">1</span><span class="Delimiter">)))</span> <span class="Delimiter">{</span>
-<span id="L125" class="LineNr">125 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;' requires a label or offset for its second ingredient, but '&quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">1</span><span class="Delimiter">).</span>name &lt;&lt; <span class="Constant">&quot;' has type '&quot;</span> &lt;&lt; names_to_string_without_quotes<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">1</span><span class="Delimiter">).</span>type<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L125" class="LineNr">125 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;' requires a label or offset for its second ingredient, but '&quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">1</span><span class="Delimiter">).</span>name &lt;&lt; <span class="Constant">&quot;' has type '&quot;</span> &lt;&lt; names_to_string_without_quotes<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">1</span><span class="Delimiter">).</span>type<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L126" class="LineNr">126 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L127" class="LineNr">127 </span>  <span class="Delimiter">}</span>
 <span id="L128" class="LineNr">128 </span>  <span class="Comment">// End JUMP_UNLESS Checks</span>
@@ -194,13 +194,13 @@ if ('onhashchange' in window) {
 <span id="L130" class="LineNr">130 </span><span class="Delimiter">}</span>
 <span id="L131" class="LineNr">131 </span><span class="Delimiter">:(before &quot;End Primitive Recipe Implementations&quot;)</span>
 <span id="L132" class="LineNr">132 </span><span class="Normal">case</span> JUMP_UNLESS: <span class="Delimiter">{</span>
-<span id="L133" class="LineNr">133 </span>  assert<span class="Delimiter">(</span><a href='026call.cc.html#L87'>current_instruction</a><span class="Delimiter">().</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">1</span><span class="Delimiter">).</span>initialized<span class="Delimiter">);</span>
+<span id="L133" class="LineNr">133 </span>  assert<span class="Delimiter">(</span><a href='026call.cc.html#L89'>current_instruction</a><span class="Delimiter">().</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">1</span><span class="Delimiter">).</span>initialized<span class="Delimiter">);</span>
 <span id="L134" class="LineNr">134 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">))</span> <span class="Delimiter">{</span>
-<span id="L135" class="LineNr">135 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">9998</span><span class="Delimiter">,</span> <span class="Constant">&quot;run&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;jump-unless fell through&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L135" class="LineNr">135 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L167'>trace</a><span class="Delimiter">(</span><span class="Constant">9998</span><span class="Delimiter">,</span> <span class="Constant">&quot;run&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;jump-unless fell through&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L136" class="LineNr">136 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L137" class="LineNr">137 </span>  <span class="Delimiter">}</span>
-<span id="L138" class="LineNr">138 </span>  <a href='026call.cc.html#L82'>current_step_index</a><span class="Delimiter">()</span> += ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">1</span><span class="Delimiter">).</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">)</span>+<span class="Constant">1</span><span class="Delimiter">;</span>
-<span id="L139" class="LineNr">139 </span>  <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">9998</span><span class="Delimiter">,</span> <span class="Constant">&quot;run&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;jumping to <a href='010vm.cc.html#L32'>instruction</a> &quot;</span> &lt;&lt; <a href='026call.cc.html#L82'>current_step_index</a><span class="Delimiter">()</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L138" class="LineNr">138 </span>  <a href='026call.cc.html#L84'>current_step_index</a><span class="Delimiter">()</span> += ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">1</span><span class="Delimiter">).</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">)</span>+<span class="Constant">1</span><span class="Delimiter">;</span>
+<span id="L139" class="LineNr">139 </span>  <a href='003trace.cc.html#L167'>trace</a><span class="Delimiter">(</span><span class="Constant">9998</span><span class="Delimiter">,</span> <span class="Constant">&quot;run&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;jumping to <a href='010vm.cc.html#L32'>instruction</a> &quot;</span> &lt;&lt; <a href='026call.cc.html#L84'>current_step_index</a><span class="Delimiter">()</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L140" class="LineNr">140 </span>  <span class="Comment">// skip rest of this instruction</span>
 <span id="L141" class="LineNr">141 </span>  write_products = <span class="Constant">false</span><span class="Delimiter">;</span>
 <span id="L142" class="LineNr">142 </span>  fall_through_to_next_instruction = <span class="Constant">false</span><span class="Delimiter">;</span>
diff --git a/html/025compare.cc.html b/html/025compare.cc.html
index b270a75e..0ad418a1 100644
--- a/html/025compare.cc.html
+++ b/html/025compare.cc.html
@@ -70,22 +70,22 @@ if ('onhashchange' in window) {
 <span id="L7" class="LineNr">  7 </span><span class="Delimiter">:(before &quot;End Primitive Recipe Checks&quot;)</span>
 <span id="L8" class="LineNr">  8 </span><span class="Normal">case</span> EQUAL: <span class="Delimiter">{</span>
 <span id="L9" class="LineNr">  9 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">)</span> &lt;= <span class="Constant">1</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L10" class="LineNr"> 10 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'equal' needs at least two ingredients to compare in '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L10" class="LineNr"> 10 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'equal' needs at least two ingredients to compare in '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L11" class="LineNr"> 11 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L12" class="LineNr"> 12 </span>  <span class="Delimiter">}</span>
 <span id="L13" class="LineNr"> 13 </span>  <span class="Normal">const</span> reagent&amp; exemplar = inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">);</span>
 <span id="L14" class="LineNr"> 14 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> i = <span class="Comment">/*</span><span class="Comment">skip exemplar</span><span class="Comment">*/</span><span class="Constant">1</span><span class="Delimiter">;</span>  i &lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">);</span>  ++i<span class="Delimiter">)</span> <span class="Delimiter">{</span>
 <span id="L15" class="LineNr"> 15 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>!types_match<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">),</span> exemplar<span class="Delimiter">)</span> &amp;&amp; !types_match<span class="Delimiter">(</span>exemplar<span class="Delimiter">,</span> inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">)))</span> <span class="Delimiter">{</span>
-<span id="L16" class="LineNr"> 16 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'equal' expects ingredients to be all of the same type, but got '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L16" class="LineNr"> 16 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'equal' expects ingredients to be all of the same type, but got '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L17" class="LineNr"> 17 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Identifier">goto</span> finish_checking_instruction<span class="Delimiter">;</span>
 <span id="L18" class="LineNr"> 18 </span>  <span class="Conceal">¦</span> <span class="Delimiter">}</span>
 <span id="L19" class="LineNr"> 19 </span>  <span class="Delimiter">}</span>
 <span id="L20" class="LineNr"> 20 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>products<span class="Delimiter">)</span> &gt; <span class="Constant">1</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L21" class="LineNr"> 21 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'equal' yields exactly one product in '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L21" class="LineNr"> 21 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'equal' yields exactly one product in '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L22" class="LineNr"> 22 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L23" class="LineNr"> 23 </span>  <span class="Delimiter">}</span>
 <span id="L24" class="LineNr"> 24 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>empty<span class="Delimiter">()</span> &amp;&amp; !is_dummy<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">))</span> &amp;&amp; !is_mu_boolean<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">)))</span> <span class="Delimiter">{</span>
-<span id="L25" class="LineNr"> 25 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'equal' should yield a boolean, but got '&quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>original_string &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L25" class="LineNr"> 25 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'equal' should yield a boolean, but got '&quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>original_string &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L26" class="LineNr"> 26 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L27" class="LineNr"> 27 </span>  <span class="Delimiter">}</span>
 <span id="L28" class="LineNr"> 28 </span>  <span class="Identifier">break</span><span class="Delimiter">;</span>
@@ -95,7 +95,7 @@ if ('onhashchange' in window) {
 <span id="L32" class="LineNr"> 32 </span>  vector&lt;<span class="Normal">double</span>&gt;&amp; exemplar = ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">);</span>
 <span id="L33" class="LineNr"> 33 </span>  <span class="Normal">bool</span> result = <span class="Constant">true</span><span class="Delimiter">;</span>
 <span id="L34" class="LineNr"> 34 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> i = <span class="Comment">/*</span><span class="Comment">skip exemplar</span><span class="Comment">*/</span><span class="Constant">1</span><span class="Delimiter">;</span>  i &lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>ingredients<span class="Delimiter">);</span>  ++i<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L35" class="LineNr"> 35 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>!equal<span class="Delimiter">(</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">).</span>begin<span class="Delimiter">(),</span> ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">).</span><a href='003trace.cc.html#L197'>end</a><span class="Delimiter">(),</span> exemplar<span class="Delimiter">.</span>begin<span class="Delimiter">()))</span> <span class="Delimiter">{</span>
+<span id="L35" class="LineNr"> 35 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>!equal<span class="Delimiter">(</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">).</span>begin<span class="Delimiter">(),</span> ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">).</span><a href='003trace.cc.html#L203'>end</a><span class="Delimiter">(),</span> exemplar<span class="Delimiter">.</span>begin<span class="Delimiter">()))</span> <span class="Delimiter">{</span>
 <span id="L36" class="LineNr"> 36 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> result = <span class="Constant">false</span><span class="Delimiter">;</span>
 <span id="L37" class="LineNr"> 37 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L38" class="LineNr"> 38 </span>  <span class="Conceal">¦</span> <span class="Delimiter">}</span>
@@ -144,20 +144,20 @@ if ('onhashchange' in window) {
 <span id="L81" class="LineNr"> 81 </span><span class="Delimiter">:(before &quot;End Primitive Recipe Checks&quot;)</span>
 <span id="L82" class="LineNr"> 82 </span><span class="Normal">case</span> NOT_EQUAL: <span class="Delimiter">{</span>
 <span id="L83" class="LineNr"> 83 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">)</span> != <span class="Constant">2</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L84" class="LineNr"> 84 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'equal' needs two ingredients to compare in '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L84" class="LineNr"> 84 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'equal' needs two ingredients to compare in '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L85" class="LineNr"> 85 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L86" class="LineNr"> 86 </span>  <span class="Delimiter">}</span>
 <span id="L87" class="LineNr"> 87 </span>  <span class="Normal">const</span> reagent&amp; exemplar = inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">);</span>
 <span id="L88" class="LineNr"> 88 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!types_match<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">1</span><span class="Delimiter">),</span> exemplar<span class="Delimiter">)</span> &amp;&amp; !types_match<span class="Delimiter">(</span>exemplar<span class="Delimiter">,</span> inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">1</span><span class="Delimiter">)))</span> <span class="Delimiter">{</span>
-<span id="L89" class="LineNr"> 89 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'equal' expects ingredients to be all of the same type, but got '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L89" class="LineNr"> 89 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'equal' expects ingredients to be all of the same type, but got '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L90" class="LineNr"> 90 </span>  <span class="Conceal">¦</span> <span class="Identifier">goto</span> finish_checking_instruction<span class="Delimiter">;</span>
 <span id="L91" class="LineNr"> 91 </span>  <span class="Delimiter">}</span>
 <span id="L92" class="LineNr"> 92 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>products<span class="Delimiter">)</span> &gt; <span class="Constant">1</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L93" class="LineNr"> 93 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'equal' yields exactly one product in '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L93" class="LineNr"> 93 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'equal' yields exactly one product in '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L94" class="LineNr"> 94 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L95" class="LineNr"> 95 </span>  <span class="Delimiter">}</span>
 <span id="L96" class="LineNr"> 96 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>empty<span class="Delimiter">()</span> &amp;&amp; !is_dummy<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">))</span> &amp;&amp; !is_mu_boolean<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">)))</span> <span class="Delimiter">{</span>
-<span id="L97" class="LineNr"> 97 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'equal' should yield a boolean, but got '&quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>original_string &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L97" class="LineNr"> 97 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'equal' should yield a boolean, but got '&quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>original_string &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L98" class="LineNr"> 98 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L99" class="LineNr"> 99 </span>  <span class="Delimiter">}</span>
 <span id="L100" class="LineNr">100 </span>  <span class="Identifier">break</span><span class="Delimiter">;</span>
@@ -166,7 +166,7 @@ if ('onhashchange' in window) {
 <span id="L103" class="LineNr">103 </span><span class="Normal">case</span> NOT_EQUAL: <span class="Delimiter">{</span>
 <span id="L104" class="LineNr">104 </span>  vector&lt;<span class="Normal">double</span>&gt;&amp; exemplar = ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">);</span>
 <span id="L105" class="LineNr">105 </span>  products<span class="Delimiter">.</span>resize<span class="Delimiter">(</span><span class="Constant">1</span><span class="Delimiter">);</span>
-<span id="L106" class="LineNr">106 </span>  <span class="Normal">bool</span> equal_ingredients = equal<span class="Delimiter">(</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">1</span><span class="Delimiter">).</span>begin<span class="Delimiter">(),</span> ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">1</span><span class="Delimiter">).</span><a href='003trace.cc.html#L197'>end</a><span class="Delimiter">(),</span> exemplar<span class="Delimiter">.</span>begin<span class="Delimiter">());</span>
+<span id="L106" class="LineNr">106 </span>  <span class="Normal">bool</span> equal_ingredients = equal<span class="Delimiter">(</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">1</span><span class="Delimiter">).</span>begin<span class="Delimiter">(),</span> ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">1</span><span class="Delimiter">).</span><a href='003trace.cc.html#L203'>end</a><span class="Delimiter">(),</span> exemplar<span class="Delimiter">.</span>begin<span class="Delimiter">());</span>
 <span id="L107" class="LineNr">107 </span>  products<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>push_back<span class="Delimiter">(</span>!equal_ingredients<span class="Delimiter">);</span>
 <span id="L108" class="LineNr">108 </span>  <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L109" class="LineNr">109 </span><span class="Delimiter">}</span>
@@ -198,21 +198,21 @@ if ('onhashchange' in window) {
 <span id="L135" class="LineNr">135 </span><span class="Delimiter">:(before &quot;End Primitive Recipe Checks&quot;)</span>
 <span id="L136" class="LineNr">136 </span><span class="Normal">case</span> GREATER_THAN: <span class="Delimiter">{</span>
 <span id="L137" class="LineNr">137 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">)</span> &lt;= <span class="Constant">1</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L138" class="LineNr">138 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'greater-than' needs at least two ingredients to compare in '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L138" class="LineNr">138 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'greater-than' needs at least two ingredients to compare in '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L139" class="LineNr">139 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L140" class="LineNr">140 </span>  <span class="Delimiter">}</span>
 <span id="L141" class="LineNr">141 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> i = <span class="Constant">0</span><span class="Delimiter">;</span>  i &lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">);</span>  ++i<span class="Delimiter">)</span> <span class="Delimiter">{</span>
 <span id="L142" class="LineNr">142 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>!is_mu_number<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">)))</span> <span class="Delimiter">{</span>
-<span id="L143" class="LineNr">143 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'greater-than' can only compare numbers; got '&quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">).</span>original_string &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L143" class="LineNr">143 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'greater-than' can only compare numbers; got '&quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">).</span>original_string &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L144" class="LineNr">144 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Identifier">goto</span> finish_checking_instruction<span class="Delimiter">;</span>
 <span id="L145" class="LineNr">145 </span>  <span class="Conceal">¦</span> <span class="Delimiter">}</span>
 <span id="L146" class="LineNr">146 </span>  <span class="Delimiter">}</span>
 <span id="L147" class="LineNr">147 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>products<span class="Delimiter">)</span> &gt; <span class="Constant">1</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L148" class="LineNr">148 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'greater-than' yields exactly one product in '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L148" class="LineNr">148 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'greater-than' yields exactly one product in '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L149" class="LineNr">149 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L150" class="LineNr">150 </span>  <span class="Delimiter">}</span>
 <span id="L151" class="LineNr">151 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>empty<span class="Delimiter">()</span> &amp;&amp; !is_dummy<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">))</span> &amp;&amp; !is_mu_boolean<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">)))</span> <span class="Delimiter">{</span>
-<span id="L152" class="LineNr">152 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'greater-than' should yield a boolean, but got '&quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>original_string &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L152" class="LineNr">152 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'greater-than' should yield a boolean, but got '&quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>original_string &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L153" class="LineNr">153 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L154" class="LineNr">154 </span>  <span class="Delimiter">}</span>
 <span id="L155" class="LineNr">155 </span>  <span class="Identifier">break</span><span class="Delimiter">;</span>
@@ -265,21 +265,21 @@ if ('onhashchange' in window) {
 <span id="L202" class="LineNr">202 </span><span class="Delimiter">:(before &quot;End Primitive Recipe Checks&quot;)</span>
 <span id="L203" class="LineNr">203 </span><span class="Normal">case</span> LESSER_THAN: <span class="Delimiter">{</span>
 <span id="L204" class="LineNr">204 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">)</span> &lt;= <span class="Constant">1</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L205" class="LineNr">205 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'lesser-than' needs at least two ingredients to compare in '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L205" class="LineNr">205 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'lesser-than' needs at least two ingredients to compare in '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L206" class="LineNr">206 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L207" class="LineNr">207 </span>  <span class="Delimiter">}</span>
 <span id="L208" class="LineNr">208 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> i = <span class="Constant">0</span><span class="Delimiter">;</span>  i &lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">);</span>  ++i<span class="Delimiter">)</span> <span class="Delimiter">{</span>
 <span id="L209" class="LineNr">209 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>!is_mu_number<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">)))</span> <span class="Delimiter">{</span>
-<span id="L210" class="LineNr">210 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'lesser-than' can only compare numbers; got '&quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">).</span>original_string &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L210" class="LineNr">210 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'lesser-than' can only compare numbers; got '&quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">).</span>original_string &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L211" class="LineNr">211 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Identifier">goto</span> finish_checking_instruction<span class="Delimiter">;</span>
 <span id="L212" class="LineNr">212 </span>  <span class="Conceal">¦</span> <span class="Delimiter">}</span>
 <span id="L213" class="LineNr">213 </span>  <span class="Delimiter">}</span>
 <span id="L214" class="LineNr">214 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>products<span class="Delimiter">)</span> &gt; <span class="Constant">1</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L215" class="LineNr">215 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'lesser-than' yields exactly one product in '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L215" class="LineNr">215 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'lesser-than' yields exactly one product in '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L216" class="LineNr">216 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L217" class="LineNr">217 </span>  <span class="Delimiter">}</span>
 <span id="L218" class="LineNr">218 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>empty<span class="Delimiter">()</span> &amp;&amp; !is_dummy<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">))</span> &amp;&amp; !is_mu_boolean<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">)))</span> <span class="Delimiter">{</span>
-<span id="L219" class="LineNr">219 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'lesser-than' should yield a boolean, but got '&quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>original_string &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L219" class="LineNr">219 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'lesser-than' should yield a boolean, but got '&quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>original_string &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L220" class="LineNr">220 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L221" class="LineNr">221 </span>  <span class="Delimiter">}</span>
 <span id="L222" class="LineNr">222 </span>  <span class="Identifier">break</span><span class="Delimiter">;</span>
@@ -332,21 +332,21 @@ if ('onhashchange' in window) {
 <span id="L269" class="LineNr">269 </span><span class="Delimiter">:(before &quot;End Primitive Recipe Checks&quot;)</span>
 <span id="L270" class="LineNr">270 </span><span class="Normal">case</span> GREATER_OR_EQUAL: <span class="Delimiter">{</span>
 <span id="L271" class="LineNr">271 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">)</span> &lt;= <span class="Constant">1</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L272" class="LineNr">272 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'greater-or-equal' needs at least two ingredients to compare in '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L272" class="LineNr">272 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'greater-or-equal' needs at least two ingredients to compare in '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L273" class="LineNr">273 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L274" class="LineNr">274 </span>  <span class="Delimiter">}</span>
 <span id="L275" class="LineNr">275 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> i = <span class="Constant">0</span><span class="Delimiter">;</span>  i &lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">);</span>  ++i<span class="Delimiter">)</span> <span class="Delimiter">{</span>
 <span id="L276" class="LineNr">276 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>!is_mu_number<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">)))</span> <span class="Delimiter">{</span>
-<span id="L277" class="LineNr">277 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'greater-or-equal' can only compare numbers; got '&quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">).</span>original_string &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L277" class="LineNr">277 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'greater-or-equal' can only compare numbers; got '&quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">).</span>original_string &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L278" class="LineNr">278 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Identifier">goto</span> finish_checking_instruction<span class="Delimiter">;</span>
 <span id="L279" class="LineNr">279 </span>  <span class="Conceal">¦</span> <span class="Delimiter">}</span>
 <span id="L280" class="LineNr">280 </span>  <span class="Delimiter">}</span>
 <span id="L281" class="LineNr">281 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>products<span class="Delimiter">)</span> &gt; <span class="Constant">1</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L282" class="LineNr">282 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'greater-or-equal' yields exactly one product in '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L282" class="LineNr">282 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'greater-or-equal' yields exactly one product in '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L283" class="LineNr">283 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L284" class="LineNr">284 </span>  <span class="Delimiter">}</span>
 <span id="L285" class="LineNr">285 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>empty<span class="Delimiter">()</span> &amp;&amp; !is_dummy<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">))</span> &amp;&amp; !is_mu_boolean<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">)))</span> <span class="Delimiter">{</span>
-<span id="L286" class="LineNr">286 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'greater-or-equal' should yield a boolean, but got '&quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>original_string &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L286" class="LineNr">286 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'greater-or-equal' should yield a boolean, but got '&quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>original_string &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L287" class="LineNr">287 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L288" class="LineNr">288 </span>  <span class="Delimiter">}</span>
 <span id="L289" class="LineNr">289 </span>  <span class="Identifier">break</span><span class="Delimiter">;</span>
@@ -407,21 +407,21 @@ if ('onhashchange' in window) {
 <span id="L344" class="LineNr">344 </span><span class="Delimiter">:(before &quot;End Primitive Recipe Checks&quot;)</span>
 <span id="L345" class="LineNr">345 </span><span class="Normal">case</span> LESSER_OR_EQUAL: <span class="Delimiter">{</span>
 <span id="L346" class="LineNr">346 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">)</span> &lt;= <span class="Constant">1</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L347" class="LineNr">347 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'lesser-or-equal' needs at least two ingredients to compare in '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L347" class="LineNr">347 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'lesser-or-equal' needs at least two ingredients to compare in '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L348" class="LineNr">348 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L349" class="LineNr">349 </span>  <span class="Delimiter">}</span>
 <span id="L350" class="LineNr">350 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> i = <span class="Constant">0</span><span class="Delimiter">;</span>  i &lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">);</span>  ++i<span class="Delimiter">)</span> <span class="Delimiter">{</span>
 <span id="L351" class="LineNr">351 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>!is_mu_number<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">)))</span> <span class="Delimiter">{</span>
-<span id="L352" class="LineNr">352 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'lesser-or-equal' can only compare numbers; got '&quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">).</span>original_string &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L352" class="LineNr">352 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'lesser-or-equal' can only compare numbers; got '&quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">).</span>original_string &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L353" class="LineNr">353 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Identifier">goto</span> finish_checking_instruction<span class="Delimiter">;</span>
 <span id="L354" class="LineNr">354 </span>  <span class="Conceal">¦</span> <span class="Delimiter">}</span>
 <span id="L355" class="LineNr">355 </span>  <span class="Delimiter">}</span>
 <span id="L356" class="LineNr">356 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>products<span class="Delimiter">)</span> &gt; <span class="Constant">1</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L357" class="LineNr">357 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'greater-or-equal' yields exactly one product in '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L357" class="LineNr">357 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'greater-or-equal' yields exactly one product in '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L358" class="LineNr">358 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L359" class="LineNr">359 </span>  <span class="Delimiter">}</span>
 <span id="L360" class="LineNr">360 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>empty<span class="Delimiter">()</span> &amp;&amp; !is_dummy<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">))</span> &amp;&amp; !is_mu_boolean<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">)))</span> <span class="Delimiter">{</span>
-<span id="L361" class="LineNr">361 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'greater-or-equal' should yield a boolean, but got '&quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>original_string &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L361" class="LineNr">361 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'greater-or-equal' should yield a boolean, but got '&quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>original_string &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L362" class="LineNr">362 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L363" class="LineNr">363 </span>  <span class="Delimiter">}</span>
 <span id="L364" class="LineNr">364 </span>  <span class="Identifier">break</span><span class="Delimiter">;</span>
@@ -482,21 +482,21 @@ if ('onhashchange' in window) {
 <span id="L419" class="LineNr">419 </span><span class="Delimiter">:(before &quot;End Primitive Recipe Checks&quot;)</span>
 <span id="L420" class="LineNr">420 </span><span class="Normal">case</span> MAX: <span class="Delimiter">{</span>
 <span id="L421" class="LineNr">421 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">)</span> &lt;= <span class="Constant">1</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L422" class="LineNr">422 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'max' needs at least two ingredients to compare in '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L422" class="LineNr">422 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'max' needs at least two ingredients to compare in '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L423" class="LineNr">423 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L424" class="LineNr">424 </span>  <span class="Delimiter">}</span>
 <span id="L425" class="LineNr">425 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> i = <span class="Constant">0</span><span class="Delimiter">;</span>  i &lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">);</span>  ++i<span class="Delimiter">)</span> <span class="Delimiter">{</span>
 <span id="L426" class="LineNr">426 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>!is_mu_number<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">)))</span> <span class="Delimiter">{</span>
-<span id="L427" class="LineNr">427 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'max' can only compare numbers; got '&quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">).</span>original_string &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L427" class="LineNr">427 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'max' can only compare numbers; got '&quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">).</span>original_string &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L428" class="LineNr">428 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Identifier">goto</span> finish_checking_instruction<span class="Delimiter">;</span>
 <span id="L429" class="LineNr">429 </span>  <span class="Conceal">¦</span> <span class="Delimiter">}</span>
 <span id="L430" class="LineNr">430 </span>  <span class="Delimiter">}</span>
 <span id="L431" class="LineNr">431 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>products<span class="Delimiter">)</span> &gt; <span class="Constant">1</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L432" class="LineNr">432 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'max' yields exactly one product in '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L432" class="LineNr">432 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'max' yields exactly one product in '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L433" class="LineNr">433 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L434" class="LineNr">434 </span>  <span class="Delimiter">}</span>
 <span id="L435" class="LineNr">435 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>empty<span class="Delimiter">()</span> &amp;&amp; !is_dummy<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">))</span> &amp;&amp; !is_mu_number<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">)))</span> <span class="Delimiter">{</span>
-<span id="L436" class="LineNr">436 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'max' should yield a number, but got '&quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>original_string &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L436" class="LineNr">436 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'max' should yield a number, but got '&quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>original_string &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L437" class="LineNr">437 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L438" class="LineNr">438 </span>  <span class="Delimiter">}</span>
 <span id="L439" class="LineNr">439 </span>  <span class="Identifier">break</span><span class="Delimiter">;</span>
@@ -521,21 +521,21 @@ if ('onhashchange' in window) {
 <span id="L458" class="LineNr">458 </span><span class="Delimiter">:(before &quot;End Primitive Recipe Checks&quot;)</span>
 <span id="L459" class="LineNr">459 </span><span class="Normal">case</span> MIN: <span class="Delimiter">{</span>
 <span id="L460" class="LineNr">460 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">)</span> &lt;= <span class="Constant">1</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L461" class="LineNr">461 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'min' needs at least two ingredients to compare in '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L461" class="LineNr">461 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'min' needs at least two ingredients to compare in '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L462" class="LineNr">462 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L463" class="LineNr">463 </span>  <span class="Delimiter">}</span>
 <span id="L464" class="LineNr">464 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> i = <span class="Constant">0</span><span class="Delimiter">;</span>  i &lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">);</span>  ++i<span class="Delimiter">)</span> <span class="Delimiter">{</span>
 <span id="L465" class="LineNr">465 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>!is_mu_number<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">)))</span> <span class="Delimiter">{</span>
-<span id="L466" class="LineNr">466 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'min' can only compare numbers; got '&quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">).</span>original_string &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L466" class="LineNr">466 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'min' can only compare numbers; got '&quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">).</span>original_string &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L467" class="LineNr">467 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Identifier">goto</span> finish_checking_instruction<span class="Delimiter">;</span>
 <span id="L468" class="LineNr">468 </span>  <span class="Conceal">¦</span> <span class="Delimiter">}</span>
 <span id="L469" class="LineNr">469 </span>  <span class="Delimiter">}</span>
 <span id="L470" class="LineNr">470 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>products<span class="Delimiter">)</span> &gt; <span class="Constant">1</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L471" class="LineNr">471 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'min' yields exactly one product in '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L471" class="LineNr">471 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'min' yields exactly one product in '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L472" class="LineNr">472 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L473" class="LineNr">473 </span>  <span class="Delimiter">}</span>
 <span id="L474" class="LineNr">474 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>empty<span class="Delimiter">()</span> &amp;&amp; !is_dummy<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">))</span> &amp;&amp; !is_mu_number<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">)))</span> <span class="Delimiter">{</span>
-<span id="L475" class="LineNr">475 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'min' should yield a number, but got '&quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>original_string &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L475" class="LineNr">475 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'min' should yield a number, but got '&quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>original_string &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L476" class="LineNr">476 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L477" class="LineNr">477 </span>  <span class="Delimiter">}</span>
 <span id="L478" class="LineNr">478 </span>  <span class="Identifier">break</span><span class="Delimiter">;</span>
diff --git a/html/026call.cc.html b/html/026call.cc.html
index 35004151..1720fc4b 100644
--- a/html/026call.cc.html
+++ b/html/026call.cc.html
@@ -103,187 +103,193 @@ if ('onhashchange' in window) {
 <span id="L37" class="LineNr"> 37 </span>  <a href='010vm.cc.html#L14'>recipe_ordinal</a> running_recipe<span class="Delimiter">;</span>
 <span id="L38" class="LineNr"> 38 </span>  <span class="Normal">int</span> running_step_index<span class="Delimiter">;</span>
 <span id="L39" class="LineNr"> 39 </span>  <span class="Comment">// End call Fields</span>
-<span id="L40" class="LineNr"> 40 </span>  call<span class="Delimiter">(</span><a href='010vm.cc.html#L14'>recipe_ordinal</a> r<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L41" class="LineNr"> 41 </span>  <span class="Conceal">¦</span> running_recipe = r<span class="Delimiter">;</span>
-<span id="L42" class="LineNr"> 42 </span>  <span class="Conceal">¦</span> running_step_index = <span class="Constant">0</span><span class="Delimiter">;</span>
-<span id="L43" class="LineNr"> 43 </span>  <span class="Conceal">¦</span> <span class="Comment">// End call Constructor</span>
-<span id="L44" class="LineNr"> 44 </span>  <span class="Delimiter">}</span>
-<span id="L45" class="LineNr"> 45 </span>  ~call<span class="Delimiter">()</span> <span class="Delimiter">{</span>
-<span id="L46" class="LineNr"> 46 </span>  <span class="Conceal">¦</span> <span class="Comment">// End call Destructor</span>
-<span id="L47" class="LineNr"> 47 </span>  <span class="Delimiter">}</span>
-<span id="L48" class="LineNr"> 48 </span><span class="Delimiter">};</span>
-<span id="L49" class="LineNr"> 49 </span><span class="Normal">typedef</span> list&lt;call&gt; call_stack<span class="Delimiter">;</span>
-<span id="L50" class="LineNr"> 50 </span>
-<span id="L51" class="LineNr"> 51 </span><span class="Delimiter">:(replace{} &quot;struct routine&quot;)</span>
-<span id="L52" class="LineNr"> 52 </span><span class="Normal">struct</span> routine <span class="Delimiter">{</span>
-<span id="L53" class="LineNr"> 53 </span>  call_stack calls<span class="Delimiter">;</span>
-<span id="L54" class="LineNr"> 54 </span>  <span class="Comment">// End routine Fields</span>
-<span id="L55" class="LineNr"> 55 </span>  routine<span class="Delimiter">(</span><a href='010vm.cc.html#L14'>recipe_ordinal</a> r<span class="Delimiter">);</span>
-<span id="L56" class="LineNr"> 56 </span>  <span class="Normal">bool</span> completed<span class="Delimiter">()</span> <span class="Normal">const</span><span class="Delimiter">;</span>
-<span id="L57" class="LineNr"> 57 </span>  <span class="Normal">const</span> vector&lt;instruction&gt;&amp; steps<span class="Delimiter">()</span> <span class="Normal">const</span><span class="Delimiter">;</span>
-<span id="L58" class="LineNr"> 58 </span><span class="Delimiter">};</span>
-<span id="L59" class="LineNr"> 59 </span><span class="Delimiter">:(code)</span>
-<span id="L60" class="LineNr"> 60 </span>routine::routine<span class="Delimiter">(</span><a href='010vm.cc.html#L14'>recipe_ordinal</a> r<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L61" class="LineNr"> 61 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>Trace_stream<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L62" class="LineNr"> 62 </span>  <span class="Conceal">¦</span> ++Trace_stream<span class="Delimiter">-&gt;</span>callstack_depth<span class="Delimiter">;</span>
-<span id="L63" class="LineNr"> 63 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">&quot;trace&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;new routine; incrementing callstack depth to &quot;</span> &lt;&lt; Trace_stream<span class="Delimiter">-&gt;</span>callstack_depth &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
-<span id="L64" class="LineNr"> 64 </span>  <span class="Conceal">¦</span> assert<span class="Delimiter">(</span>Trace_stream<span class="Delimiter">-&gt;</span>callstack_depth &lt; <span class="Constant">9000</span><span class="Delimiter">);</span>  <span class="Comment">// 9998-101 plus cushion</span>
-<span id="L65" class="LineNr"> 65 </span>  <span class="Delimiter">}</span>
-<span id="L66" class="LineNr"> 66 </span>  calls<span class="Delimiter">.</span>push_front<span class="Delimiter">(</span>call<span class="Delimiter">(</span>r<span class="Delimiter">));</span>
-<span id="L67" class="LineNr"> 67 </span>  <span class="Comment">// End routine Constructor</span>
-<span id="L68" class="LineNr"> 68 </span><span class="Delimiter">}</span>
-<span id="L69" class="LineNr"> 69 </span>
-<span id="L70" class="LineNr"> 70 </span><span class="SalientComment">//:: now update routine's helpers</span>
+<span id="L40" class="LineNr"> 40 </span>  call<span class="Delimiter">(</span><a href='010vm.cc.html#L14'>recipe_ordinal</a> r<span class="Delimiter">)</span> <span class="Delimiter">{</span> <a href='050scenario.cc.html#L60'>clear</a><span class="Delimiter">(</span>r<span class="Delimiter">,</span> <span class="Constant">0</span><span class="Delimiter">);</span> <span class="Delimiter">}</span>
+<span id="L41" class="LineNr"> 41 </span>  call<span class="Delimiter">(</span><a href='010vm.cc.html#L14'>recipe_ordinal</a> r<span class="Delimiter">,</span> <span class="Normal">int</span> index<span class="Delimiter">)</span> <span class="Delimiter">{</span> <a href='050scenario.cc.html#L60'>clear</a><span class="Delimiter">(</span>r<span class="Delimiter">,</span> index<span class="Delimiter">);</span> <span class="Delimiter">}</span>
+<span id="L42" class="LineNr"> 42 </span>  <span class="Normal">void</span> <a href='050scenario.cc.html#L60'>clear</a><span class="Delimiter">(</span><a href='010vm.cc.html#L14'>recipe_ordinal</a> r<span class="Delimiter">,</span> <span class="Normal">int</span> index<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L43" class="LineNr"> 43 </span>  <span class="Conceal">¦</span> running_recipe = r<span class="Delimiter">;</span>
+<span id="L44" class="LineNr"> 44 </span>  <span class="Conceal">¦</span> running_step_index = index<span class="Delimiter">;</span>
+<span id="L45" class="LineNr"> 45 </span>  <span class="Conceal">¦</span> <span class="Comment">// End call Constructor</span>
+<span id="L46" class="LineNr"> 46 </span>  <span class="Delimiter">}</span>
+<span id="L47" class="LineNr"> 47 </span>  ~call<span class="Delimiter">()</span> <span class="Delimiter">{</span>
+<span id="L48" class="LineNr"> 48 </span>  <span class="Conceal">¦</span> <span class="Comment">// End call Destructor</span>
+<span id="L49" class="LineNr"> 49 </span>  <span class="Delimiter">}</span>
+<span id="L50" class="LineNr"> 50 </span><span class="Delimiter">};</span>
+<span id="L51" class="LineNr"> 51 </span><span class="Normal">typedef</span> list&lt;call&gt; call_stack<span class="Delimiter">;</span>
+<span id="L52" class="LineNr"> 52 </span>
+<span id="L53" class="LineNr"> 53 </span><span class="Delimiter">:(replace{} &quot;struct routine&quot;)</span>
+<span id="L54" class="LineNr"> 54 </span><span class="Normal">struct</span> routine <span class="Delimiter">{</span>
+<span id="L55" class="LineNr"> 55 </span>  call_stack calls<span class="Delimiter">;</span>
+<span id="L56" class="LineNr"> 56 </span>  <span class="Comment">// End routine Fields</span>
+<span id="L57" class="LineNr"> 57 </span>  routine<span class="Delimiter">(</span><a href='010vm.cc.html#L14'>recipe_ordinal</a> r<span class="Delimiter">);</span>
+<span id="L58" class="LineNr"> 58 </span>  <span class="Normal">bool</span> completed<span class="Delimiter">()</span> <span class="Normal">const</span><span class="Delimiter">;</span>
+<span id="L59" class="LineNr"> 59 </span>  <span class="Normal">const</span> vector&lt;instruction&gt;&amp; steps<span class="Delimiter">()</span> <span class="Normal">const</span><span class="Delimiter">;</span>
+<span id="L60" class="LineNr"> 60 </span><span class="Delimiter">};</span>
+<span id="L61" class="LineNr"> 61 </span><span class="Delimiter">:(code)</span>
+<span id="L62" class="LineNr"> 62 </span>routine::routine<span class="Delimiter">(</span><a href='010vm.cc.html#L14'>recipe_ordinal</a> r<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L63" class="LineNr"> 63 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>Trace_stream<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L64" class="LineNr"> 64 </span>  <span class="Conceal">¦</span> ++Trace_stream<span class="Delimiter">-&gt;</span>callstack_depth<span class="Delimiter">;</span>
+<span id="L65" class="LineNr"> 65 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L167'>trace</a><span class="Delimiter">(</span><span class="Constant">&quot;trace&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;new routine; incrementing callstack depth to &quot;</span> &lt;&lt; Trace_stream<span class="Delimiter">-&gt;</span>callstack_depth &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
+<span id="L66" class="LineNr"> 66 </span>  <span class="Conceal">¦</span> assert<span class="Delimiter">(</span>Trace_stream<span class="Delimiter">-&gt;</span>callstack_depth &lt; <span class="Constant">9000</span><span class="Delimiter">);</span>  <span class="Comment">// 9998-101 plus cushion</span>
+<span id="L67" class="LineNr"> 67 </span>  <span class="Delimiter">}</span>
+<span id="L68" class="LineNr"> 68 </span>  calls<span class="Delimiter">.</span>push_front<span class="Delimiter">(</span>call<span class="Delimiter">(</span>r<span class="Delimiter">));</span>
+<span id="L69" class="LineNr"> 69 </span>  <span class="Comment">// End routine Constructor</span>
+<span id="L70" class="LineNr"> 70 </span><span class="Delimiter">}</span>
 <span id="L71" class="LineNr"> 71 </span>
-<span id="L72" class="LineNr"> 72 </span><span class="Comment">//: macro versions for a slight speedup</span>
+<span id="L72" class="LineNr"> 72 </span><span class="SalientComment">//:: now update routine's helpers</span>
 <span id="L73" class="LineNr"> 73 </span>
-<span id="L74" class="LineNr"> 74 </span><span class="Delimiter">:(delete{} &quot;int&amp; current_step_index()&quot;)</span>
-<span id="L75" class="LineNr"> 75 </span><span class="Delimiter">:(delete{} &quot;recipe_ordinal currently_running_recipe()&quot;)</span>
-<span id="L76" class="LineNr"> 76 </span><span class="Delimiter">:(delete{} &quot;const string&amp; current_recipe_name()&quot;)</span>
-<span id="L77" class="LineNr"> 77 </span><span class="Delimiter">:(delete{} &quot;const recipe&amp; current_recipe()&quot;)</span>
-<span id="L78" class="LineNr"> 78 </span><span class="Delimiter">:(delete{} &quot;const instruction&amp; current_instruction()&quot;)</span>
-<span id="L79" class="LineNr"> 79 </span>
-<span id="L80" class="LineNr"> 80 </span><span class="Delimiter">:(before &quot;End Includes&quot;)</span>
-<span id="L81" class="LineNr"> 81 </span><span class="PreProc">#define current_call() Current_routine</span><span class="Delimiter">-&gt;</span><span class="PreProc">calls</span><span class="Delimiter">.</span><span class="PreProc">front()</span>
-<span id="L82" class="LineNr"> 82 </span><span class="PreProc">#define current_step_index() current_call()</span><span class="Delimiter">.</span><span class="PreProc">running_step_index</span>
-<span id="L83" class="LineNr"> 83 </span><span class="PreProc">#define currently_running_recipe() current_call()</span><span class="Delimiter">.</span><span class="PreProc">running_recipe</span>
-<span id="L84" class="LineNr"> 84 </span><span class="PreProc">#define current_recipe() get(Recipe</span><span class="Delimiter">,</span><span class="PreProc"> currently_running_recipe())</span>
-<span id="L85" class="LineNr"> 85 </span><span class="PreProc">#define current_recipe_name() current_recipe()</span><span class="Delimiter">.</span><span class="PreProc">name</span>
-<span id="L86" class="LineNr"> 86 </span><span class="PreProc">#define to_instruction(call) get(Recipe</span><span class="Delimiter">,</span><span class="PreProc"> (call)</span><span class="Delimiter">.</span><span class="PreProc">running_recipe)</span><span class="Delimiter">.</span><span class="PreProc">steps</span><span class="Delimiter">.</span><span class="PreProc">at((call)</span><span class="Delimiter">.</span><span class="PreProc">running_step_index)</span>
-<span id="L87" class="LineNr"> 87 </span><span class="PreProc">#define current_instruction() to_instruction(current_call())</span>
-<span id="L88" class="LineNr"> 88 </span>
-<span id="L89" class="LineNr"> 89 </span><span class="Comment">//: function versions for debugging</span>
+<span id="L74" class="LineNr"> 74 </span><span class="Comment">//: macro versions for a slight speedup</span>
+<span id="L75" class="LineNr"> 75 </span>
+<span id="L76" class="LineNr"> 76 </span><span class="Delimiter">:(delete{} &quot;int&amp; current_step_index()&quot;)</span>
+<span id="L77" class="LineNr"> 77 </span><span class="Delimiter">:(delete{} &quot;recipe_ordinal currently_running_recipe()&quot;)</span>
+<span id="L78" class="LineNr"> 78 </span><span class="Delimiter">:(delete{} &quot;const string&amp; current_recipe_name()&quot;)</span>
+<span id="L79" class="LineNr"> 79 </span><span class="Delimiter">:(delete{} &quot;const recipe&amp; current_recipe()&quot;)</span>
+<span id="L80" class="LineNr"> 80 </span><span class="Delimiter">:(delete{} &quot;const instruction&amp; current_instruction()&quot;)</span>
+<span id="L81" class="LineNr"> 81 </span>
+<span id="L82" class="LineNr"> 82 </span><span class="Delimiter">:(before &quot;End Includes&quot;)</span>
+<span id="L83" class="LineNr"> 83 </span><span class="PreProc">#define current_call() Current_routine</span><span class="Delimiter">-&gt;</span><span class="PreProc">calls</span><span class="Delimiter">.</span><span class="PreProc">front()</span>
+<span id="L84" class="LineNr"> 84 </span><span class="PreProc">#define current_step_index() current_call()</span><span class="Delimiter">.</span><span class="PreProc">running_step_index</span>
+<span id="L85" class="LineNr"> 85 </span><span class="PreProc">#define currently_running_recipe() current_call()</span><span class="Delimiter">.</span><span class="PreProc">running_recipe</span>
+<span id="L86" class="LineNr"> 86 </span><span class="PreProc">#define current_recipe() get(Recipe</span><span class="Delimiter">,</span><span class="PreProc"> currently_running_recipe())</span>
+<span id="L87" class="LineNr"> 87 </span><span class="PreProc">#define current_recipe_name() current_recipe()</span><span class="Delimiter">.</span><span class="PreProc">name</span>
+<span id="L88" class="LineNr"> 88 </span><span class="PreProc">#define to_instruction(call) get(Recipe</span><span class="Delimiter">,</span><span class="PreProc"> (call)</span><span class="Delimiter">.</span><span class="PreProc">running_recipe)</span><span class="Delimiter">.</span><span class="PreProc">steps</span><span class="Delimiter">.</span><span class="PreProc">at((call)</span><span class="Delimiter">.</span><span class="PreProc">running_step_index)</span>
+<span id="L89" class="LineNr"> 89 </span><span class="PreProc">#define current_instruction() to_instruction(current_call())</span>
 <span id="L90" class="LineNr"> 90 </span>
-<span id="L91" class="LineNr"> 91 </span><span class="Delimiter">:(code)</span>
-<span id="L92" class="LineNr"> 92 </span><span class="CommentedCode">//? :(before &quot;End Globals&quot;)</span>
-<span id="L93" class="LineNr"> 93 </span><span class="CommentedCode">//? bool Foo2 = false;</span>
-<span id="L94" class="LineNr"> 94 </span><span class="CommentedCode">//? :(code)</span>
-<span id="L95" class="LineNr"> 95 </span><span class="CommentedCode">//? call&amp; current_call() {</span>
-<span id="L96" class="LineNr"> 96 </span><span class="CommentedCode">//?   if (Foo2) cerr &lt;&lt; __FUNCTION__ &lt;&lt; '\n';</span>
-<span id="L97" class="LineNr"> 97 </span><span class="CommentedCode">//?   return Current_routine-&gt;calls.front();</span>
-<span id="L98" class="LineNr"> 98 </span><span class="CommentedCode">//? }</span>
-<span id="L99" class="LineNr"> 99 </span><span class="CommentedCode">//? :(replace{} &quot;int&amp; current_step_index()&quot;)</span>
-<span id="L100" class="LineNr">100 </span><span class="CommentedCode">//? int&amp; current_step_index() {</span>
-<span id="L101" class="LineNr">101 </span><span class="CommentedCode">//?   assert(!Current_routine-&gt;calls.empty());</span>
-<span id="L102" class="LineNr">102 </span><span class="CommentedCode">//?   if (Foo2) cerr &lt;&lt; __FUNCTION__ &lt;&lt; '\n';</span>
-<span id="L103" class="LineNr">103 </span><span class="CommentedCode">//?   return current_call().running_step_index;</span>
-<span id="L104" class="LineNr">104 </span><span class="CommentedCode">//? }</span>
-<span id="L105" class="LineNr">105 </span><span class="CommentedCode">//? :(replace{} &quot;recipe_ordinal currently_running_recipe()&quot;)</span>
-<span id="L106" class="LineNr">106 </span><span class="CommentedCode">//? recipe_ordinal currently_running_recipe() {</span>
-<span id="L107" class="LineNr">107 </span><span class="CommentedCode">//?   assert(!Current_routine-&gt;calls.empty());</span>
-<span id="L108" class="LineNr">108 </span><span class="CommentedCode">//?   if (Foo2) cerr &lt;&lt; __FUNCTION__ &lt;&lt; '\n';</span>
-<span id="L109" class="LineNr">109 </span><span class="CommentedCode">//?   return current_call().running_recipe;</span>
-<span id="L110" class="LineNr">110 </span><span class="CommentedCode">//? }</span>
-<span id="L111" class="LineNr">111 </span><span class="CommentedCode">//? :(replace{} &quot;const string&amp; current_recipe_name()&quot;)</span>
-<span id="L112" class="LineNr">112 </span><span class="CommentedCode">//? const string&amp; current_recipe_name() {</span>
-<span id="L113" class="LineNr">113 </span><span class="CommentedCode">//?   assert(!Current_routine-&gt;calls.empty());</span>
-<span id="L114" class="LineNr">114 </span><span class="CommentedCode">//?   if (Foo2) cerr &lt;&lt; __FUNCTION__ &lt;&lt; '\n';</span>
-<span id="L115" class="LineNr">115 </span><span class="CommentedCode">//?   return get(Recipe, current_call().running_recipe).name;</span>
-<span id="L116" class="LineNr">116 </span><span class="CommentedCode">//? }</span>
-<span id="L117" class="LineNr">117 </span><span class="CommentedCode">//? :(replace{} &quot;const recipe&amp; current_recipe()&quot;)</span>
-<span id="L118" class="LineNr">118 </span><span class="CommentedCode">//? const recipe&amp; current_recipe() {</span>
-<span id="L119" class="LineNr">119 </span><span class="CommentedCode">//?   assert(!Current_routine-&gt;calls.empty());</span>
-<span id="L120" class="LineNr">120 </span><span class="CommentedCode">//?   if (Foo2) cerr &lt;&lt; __FUNCTION__ &lt;&lt; '\n';</span>
-<span id="L121" class="LineNr">121 </span><span class="CommentedCode">//?   return get(Recipe, current_call().running_recipe);</span>
-<span id="L122" class="LineNr">122 </span><span class="CommentedCode">//? }</span>
-<span id="L123" class="LineNr">123 </span><span class="CommentedCode">//? :(replace{} &quot;const instruction&amp; current_instruction()&quot;)</span>
-<span id="L124" class="LineNr">124 </span><span class="CommentedCode">//? const instruction&amp; current_instruction() {</span>
-<span id="L125" class="LineNr">125 </span><span class="CommentedCode">//?   assert(!Current_routine-&gt;calls.empty());</span>
-<span id="L126" class="LineNr">126 </span><span class="CommentedCode">//?   if (Foo2) cerr &lt;&lt; __FUNCTION__ &lt;&lt; '\n';</span>
-<span id="L127" class="LineNr">127 </span><span class="CommentedCode">//?   return to_instruction(current_call());</span>
-<span id="L128" class="LineNr">128 </span><span class="CommentedCode">//? }</span>
-<span id="L129" class="LineNr">129 </span><span class="CommentedCode">//? :(code)</span>
-<span id="L130" class="LineNr">130 </span><span class="CommentedCode">//? const instruction&amp; to_instruction(const call&amp; call) {</span>
-<span id="L131" class="LineNr">131 </span><span class="CommentedCode">//?   return get(Recipe, call.running_recipe).steps.at(call.running_step_index);</span>
-<span id="L132" class="LineNr">132 </span><span class="CommentedCode">//? }</span>
-<span id="L133" class="LineNr">133 </span>
-<span id="L134" class="LineNr">134 </span><span class="Delimiter">:(after &quot;Defined Recipe Checks&quot;)</span>
-<span id="L135" class="LineNr">135 </span><span class="Comment">// not a primitive; check that it's present in the book of recipes</span>
-<span id="L136" class="LineNr">136 </span><span class="Normal">if</span> <span class="Delimiter">(</span>!contains_key<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> inst<span class="Delimiter">.</span>operation<span class="Delimiter">))</span> <span class="Delimiter">{</span>
-<span id="L137" class="LineNr">137 </span>  <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;undefined operation in '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
-<span id="L138" class="LineNr">138 </span>  <span class="Identifier">break</span><span class="Delimiter">;</span>
-<span id="L139" class="LineNr">139 </span><span class="Delimiter">}</span>
-<span id="L140" class="LineNr">140 </span><span class="Delimiter">:(replace{} &quot;default:&quot; following &quot;End Primitive Recipe Implementations&quot;)</span>
-<span id="L141" class="LineNr">141 </span><span class="Normal">default</span>: <span class="Delimiter">{</span>
-<span id="L142" class="LineNr">142 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>contains_key<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> <a href='026call.cc.html#L87'>current_instruction</a><span class="Delimiter">().</span>operation<span class="Delimiter">))</span> <span class="Delimiter">{</span>  <span class="Comment">// error already raised in Checks above</span>
-<span id="L143" class="LineNr">143 </span>  <span class="Conceal">¦</span> <span class="Comment">// not a primitive; look up the book of recipes</span>
-<span id="L144" class="LineNr">144 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>Trace_stream<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L145" class="LineNr">145 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> ++Trace_stream<span class="Delimiter">-&gt;</span>callstack_depth<span class="Delimiter">;</span>
-<span id="L146" class="LineNr">146 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">&quot;trace&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;incrementing callstack depth to &quot;</span> &lt;&lt; Trace_stream<span class="Delimiter">-&gt;</span>callstack_depth &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
-<span id="L147" class="LineNr">147 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> assert<span class="Delimiter">(</span>Trace_stream<span class="Delimiter">-&gt;</span>callstack_depth &lt; <span class="Constant">9000</span><span class="Delimiter">);</span>  <span class="Comment">// 9998-101 plus cushion</span>
-<span id="L148" class="LineNr">148 </span>  <span class="Conceal">¦</span> <span class="Delimiter">}</span>
-<span id="L149" class="LineNr">149 </span>  <span class="Conceal">¦</span> <span class="Normal">const</span> call&amp; caller_frame = <a href='026call.cc.html#L81'>current_call</a><span class="Delimiter">();</span>
-<span id="L150" class="LineNr">150 </span>  <span class="Conceal">¦</span> Current_routine<span class="Delimiter">-&gt;</span>calls<span class="Delimiter">.</span>push_front<span class="Delimiter">(</span>call<span class="Delimiter">(</span><a href='026call.cc.html#L86'>to_instruction</a><span class="Delimiter">(</span>caller_frame<span class="Delimiter">).</span>operation<span class="Delimiter">));</span>
-<span id="L151" class="LineNr">151 </span>  <span class="Conceal">¦</span> finish_call_housekeeping<span class="Delimiter">(</span><a href='026call.cc.html#L86'>to_instruction</a><span class="Delimiter">(</span>caller_frame<span class="Delimiter">),</span> ingredients<span class="Delimiter">);</span>
-<span id="L152" class="LineNr">152 </span>  <span class="Conceal">¦</span> <span class="Comment">// not done with caller</span>
-<span id="L153" class="LineNr">153 </span>  <span class="Conceal">¦</span> write_products = <span class="Constant">false</span><span class="Delimiter">;</span>
-<span id="L154" class="LineNr">154 </span>  <span class="Conceal">¦</span> fall_through_to_next_instruction = <span class="Constant">false</span><span class="Delimiter">;</span>
-<span id="L155" class="LineNr">155 </span>  <span class="Conceal">¦</span> <span class="Comment">// End Non-primitive Call(caller_frame)</span>
-<span id="L156" class="LineNr">156 </span>  <span class="Delimiter">}</span>
-<span id="L157" class="LineNr">157 </span><span class="Delimiter">}</span>
-<span id="L158" class="LineNr">158 </span><span class="Delimiter">:(code)</span>
-<span id="L159" class="LineNr">159 </span><span class="Normal">void</span> finish_call_housekeeping<span class="Delimiter">(</span><span class="Normal">const</span> instruction&amp; call_instruction<span class="Delimiter">,</span> <span class="Normal">const</span> vector&lt;vector&lt;<span class="Normal">double</span>&gt; &gt;&amp; ingredients<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L160" class="LineNr">160 </span>  <span class="Comment">// End Call Housekeeping</span>
-<span id="L161" class="LineNr">161 </span><span class="Delimiter">}</span>
-<span id="L162" class="LineNr">162 </span>
-<span id="L163" class="LineNr">163 </span><span class="Delimiter">:(scenario calling_undefined_recipe_fails)</span>
-<span id="L164" class="LineNr">164 </span><span class="Special">% Hide_errors = true;</span>
-<span id="L165" class="LineNr">165 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
-<span id="L166" class="LineNr">166 </span>  foo
-<span id="L167" class="LineNr">167 </span>]
-<span id="L168" class="LineNr">168 </span><span class="traceContains">+error: <a href='000organization.cc.html#L113'>main</a>: undefined operation in 'foo'</span>
-<span id="L169" class="LineNr">169 </span>
-<span id="L170" class="LineNr">170 </span><span class="Delimiter">:(scenario calling_undefined_recipe_handles_missing_result)</span>
-<span id="L171" class="LineNr">171 </span><span class="Special">% Hide_errors = true;</span>
-<span id="L172" class="LineNr">172 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
-<span id="L173" class="LineNr">173 </span>  <span class="Normal">x</span>:num<span class="Special"> &lt;- </span>foo
-<span id="L174" class="LineNr">174 </span>]
-<span id="L175" class="LineNr">175 </span><span class="traceContains">+error: <a href='000organization.cc.html#L113'>main</a>: undefined operation in 'x:num &lt;- foo'</span>
-<span id="L176" class="LineNr">176 </span>
-<span id="L177" class="LineNr">177 </span><span class="SalientComment">//:: finally, we need to fix the termination conditions for the run loop</span>
+<span id="L91" class="LineNr"> 91 </span><span class="Comment">//: function versions for debugging</span>
+<span id="L92" class="LineNr"> 92 </span>
+<span id="L93" class="LineNr"> 93 </span><span class="Delimiter">:(code)</span>
+<span id="L94" class="LineNr"> 94 </span><span class="CommentedCode">//? :(before &quot;End Globals&quot;)</span>
+<span id="L95" class="LineNr"> 95 </span><span class="CommentedCode">//? bool Foo2 = false;</span>
+<span id="L96" class="LineNr"> 96 </span><span class="CommentedCode">//? :(code)</span>
+<span id="L97" class="LineNr"> 97 </span><span class="CommentedCode">//? call&amp; current_call() {</span>
+<span id="L98" class="LineNr"> 98 </span><span class="CommentedCode">//?   if (Foo2) cerr &lt;&lt; __FUNCTION__ &lt;&lt; '\n';</span>
+<span id="L99" class="LineNr"> 99 </span><span class="CommentedCode">//?   return Current_routine-&gt;calls.front();</span>
+<span id="L100" class="LineNr">100 </span><span class="CommentedCode">//? }</span>
+<span id="L101" class="LineNr">101 </span><span class="CommentedCode">//? :(replace{} &quot;int&amp; current_step_index()&quot;)</span>
+<span id="L102" class="LineNr">102 </span><span class="CommentedCode">//? int&amp; current_step_index() {</span>
+<span id="L103" class="LineNr">103 </span><span class="CommentedCode">//?   assert(!Current_routine-&gt;calls.empty());</span>
+<span id="L104" class="LineNr">104 </span><span class="CommentedCode">//?   if (Foo2) cerr &lt;&lt; __FUNCTION__ &lt;&lt; '\n';</span>
+<span id="L105" class="LineNr">105 </span><span class="CommentedCode">//?   return current_call().running_step_index;</span>
+<span id="L106" class="LineNr">106 </span><span class="CommentedCode">//? }</span>
+<span id="L107" class="LineNr">107 </span><span class="CommentedCode">//? :(replace{} &quot;recipe_ordinal currently_running_recipe()&quot;)</span>
+<span id="L108" class="LineNr">108 </span><span class="CommentedCode">//? recipe_ordinal currently_running_recipe() {</span>
+<span id="L109" class="LineNr">109 </span><span class="CommentedCode">//?   assert(!Current_routine-&gt;calls.empty());</span>
+<span id="L110" class="LineNr">110 </span><span class="CommentedCode">//?   if (Foo2) cerr &lt;&lt; __FUNCTION__ &lt;&lt; '\n';</span>
+<span id="L111" class="LineNr">111 </span><span class="CommentedCode">//?   return current_call().running_recipe;</span>
+<span id="L112" class="LineNr">112 </span><span class="CommentedCode">//? }</span>
+<span id="L113" class="LineNr">113 </span><span class="CommentedCode">//? :(replace{} &quot;const string&amp; current_recipe_name()&quot;)</span>
+<span id="L114" class="LineNr">114 </span><span class="CommentedCode">//? const string&amp; current_recipe_name() {</span>
+<span id="L115" class="LineNr">115 </span><span class="CommentedCode">//?   assert(!Current_routine-&gt;calls.empty());</span>
+<span id="L116" class="LineNr">116 </span><span class="CommentedCode">//?   if (Foo2) cerr &lt;&lt; __FUNCTION__ &lt;&lt; '\n';</span>
+<span id="L117" class="LineNr">117 </span><span class="CommentedCode">//?   return get(Recipe, current_call().running_recipe).name;</span>
+<span id="L118" class="LineNr">118 </span><span class="CommentedCode">//? }</span>
+<span id="L119" class="LineNr">119 </span><span class="CommentedCode">//? :(replace{} &quot;const recipe&amp; current_recipe()&quot;)</span>
+<span id="L120" class="LineNr">120 </span><span class="CommentedCode">//? const recipe&amp; current_recipe() {</span>
+<span id="L121" class="LineNr">121 </span><span class="CommentedCode">//?   assert(!Current_routine-&gt;calls.empty());</span>
+<span id="L122" class="LineNr">122 </span><span class="CommentedCode">//?   if (Foo2) cerr &lt;&lt; __FUNCTION__ &lt;&lt; '\n';</span>
+<span id="L123" class="LineNr">123 </span><span class="CommentedCode">//?   return get(Recipe, current_call().running_recipe);</span>
+<span id="L124" class="LineNr">124 </span><span class="CommentedCode">//? }</span>
+<span id="L125" class="LineNr">125 </span><span class="CommentedCode">//? :(replace{} &quot;const instruction&amp; current_instruction()&quot;)</span>
+<span id="L126" class="LineNr">126 </span><span class="CommentedCode">//? const instruction&amp; current_instruction() {</span>
+<span id="L127" class="LineNr">127 </span><span class="CommentedCode">//?   assert(!Current_routine-&gt;calls.empty());</span>
+<span id="L128" class="LineNr">128 </span><span class="CommentedCode">//?   if (Foo2) cerr &lt;&lt; __FUNCTION__ &lt;&lt; '\n';</span>
+<span id="L129" class="LineNr">129 </span><span class="CommentedCode">//?   return to_instruction(current_call());</span>
+<span id="L130" class="LineNr">130 </span><span class="CommentedCode">//? }</span>
+<span id="L131" class="LineNr">131 </span><span class="CommentedCode">//? :(code)</span>
+<span id="L132" class="LineNr">132 </span><span class="CommentedCode">//? const instruction&amp; to_instruction(const call&amp; call) {</span>
+<span id="L133" class="LineNr">133 </span><span class="CommentedCode">//?   return get(Recipe, call.running_recipe).steps.at(call.running_step_index);</span>
+<span id="L134" class="LineNr">134 </span><span class="CommentedCode">//? }</span>
+<span id="L135" class="LineNr">135 </span>
+<span id="L136" class="LineNr">136 </span><span class="Delimiter">:(after &quot;Defined Recipe Checks&quot;)</span>
+<span id="L137" class="LineNr">137 </span><span class="Comment">// not a primitive; check that it's present in the book of recipes</span>
+<span id="L138" class="LineNr">138 </span><span class="Normal">if</span> <span class="Delimiter">(</span>!contains_key<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> inst<span class="Delimiter">.</span>operation<span class="Delimiter">))</span> <span class="Delimiter">{</span>
+<span id="L139" class="LineNr">139 </span>  <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;undefined operation in '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
+<span id="L140" class="LineNr">140 </span>  <span class="Identifier">break</span><span class="Delimiter">;</span>
+<span id="L141" class="LineNr">141 </span><span class="Delimiter">}</span>
+<span id="L142" class="LineNr">142 </span><span class="Delimiter">:(replace{} &quot;default:&quot; following &quot;End Primitive Recipe Implementations&quot;)</span>
+<span id="L143" class="LineNr">143 </span><span class="Normal">default</span>: <span class="Delimiter">{</span>
+<span id="L144" class="LineNr">144 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>contains_key<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> <a href='026call.cc.html#L89'>current_instruction</a><span class="Delimiter">().</span>operation<span class="Delimiter">))</span> <span class="Delimiter">{</span>  <span class="Comment">// error already raised in Checks above</span>
+<span id="L145" class="LineNr">145 </span>  <span class="Conceal">¦</span> <span class="Comment">// not a primitive; look up the book of recipes</span>
+<span id="L146" class="LineNr">146 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>Trace_stream<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L147" class="LineNr">147 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> ++Trace_stream<span class="Delimiter">-&gt;</span>callstack_depth<span class="Delimiter">;</span>
+<span id="L148" class="LineNr">148 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L167'>trace</a><span class="Delimiter">(</span><span class="Constant">&quot;trace&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;incrementing callstack depth to &quot;</span> &lt;&lt; Trace_stream<span class="Delimiter">-&gt;</span>callstack_depth &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
+<span id="L149" class="LineNr">149 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> assert<span class="Delimiter">(</span>Trace_stream<span class="Delimiter">-&gt;</span>callstack_depth &lt; <span class="Constant">9000</span><span class="Delimiter">);</span>  <span class="Comment">// 9998-101 plus cushion</span>
+<span id="L150" class="LineNr">150 </span>  <span class="Conceal">¦</span> <span class="Delimiter">}</span>
+<span id="L151" class="LineNr">151 </span>  <span class="Conceal">¦</span> <span class="Normal">const</span> call&amp; caller_frame = <a href='026call.cc.html#L83'>current_call</a><span class="Delimiter">();</span>
+<span id="L152" class="LineNr">152 </span>  <span class="Conceal">¦</span> Current_routine<span class="Delimiter">-&gt;</span>calls<span class="Delimiter">.</span>push_front<span class="Delimiter">(</span>call<span class="Delimiter">(</span><a href='026call.cc.html#L88'>to_instruction</a><span class="Delimiter">(</span>caller_frame<span class="Delimiter">).</span>operation<span class="Delimiter">));</span>
+<span id="L153" class="LineNr">153 </span>  <span class="Conceal">¦</span> finish_call_housekeeping<span class="Delimiter">(</span><a href='026call.cc.html#L88'>to_instruction</a><span class="Delimiter">(</span>caller_frame<span class="Delimiter">),</span> ingredients<span class="Delimiter">);</span>
+<span id="L154" class="LineNr">154 </span>  <span class="Conceal">¦</span> <span class="Comment">// not done with caller</span>
+<span id="L155" class="LineNr">155 </span>  <span class="Conceal">¦</span> write_products = <span class="Constant">false</span><span class="Delimiter">;</span>
+<span id="L156" class="LineNr">156 </span>  <span class="Conceal">¦</span> fall_through_to_next_instruction = <span class="Constant">false</span><span class="Delimiter">;</span>
+<span id="L157" class="LineNr">157 </span>  <span class="Conceal">¦</span> <span class="Comment">// End Non-primitive Call(caller_frame)</span>
+<span id="L158" class="LineNr">158 </span>  <span class="Delimiter">}</span>
+<span id="L159" class="LineNr">159 </span><span class="Delimiter">}</span>
+<span id="L160" class="LineNr">160 </span><span class="Delimiter">:(code)</span>
+<span id="L161" class="LineNr">161 </span><span class="Normal">void</span> finish_call_housekeeping<span class="Delimiter">(</span><span class="Normal">const</span> instruction&amp; call_instruction<span class="Delimiter">,</span> <span class="Normal">const</span> vector&lt;vector&lt;<span class="Normal">double</span>&gt; &gt;&amp; ingredients<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L162" class="LineNr">162 </span>  <span class="Comment">// End Call Housekeeping</span>
+<span id="L163" class="LineNr">163 </span><span class="Delimiter">}</span>
+<span id="L164" class="LineNr">164 </span>
+<span id="L165" class="LineNr">165 </span><span class="Delimiter">:(scenario calling_undefined_recipe_fails)</span>
+<span id="L166" class="LineNr">166 </span><span class="Special">% Hide_errors = true;</span>
+<span id="L167" class="LineNr">167 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
+<span id="L168" class="LineNr">168 </span>  foo
+<span id="L169" class="LineNr">169 </span>]
+<span id="L170" class="LineNr">170 </span><span class="traceContains">+error: <a href='000organization.cc.html#L113'>main</a>: undefined operation in 'foo'</span>
+<span id="L171" class="LineNr">171 </span>
+<span id="L172" class="LineNr">172 </span><span class="Delimiter">:(scenario calling_undefined_recipe_handles_missing_result)</span>
+<span id="L173" class="LineNr">173 </span><span class="Special">% Hide_errors = true;</span>
+<span id="L174" class="LineNr">174 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
+<span id="L175" class="LineNr">175 </span>  <span class="Normal">x</span>:num<span class="Special"> &lt;- </span>foo
+<span id="L176" class="LineNr">176 </span>]
+<span id="L177" class="LineNr">177 </span><span class="traceContains">+error: <a href='000organization.cc.html#L113'>main</a>: undefined operation in 'x:num &lt;- foo'</span>
 <span id="L178" class="LineNr">178 </span>
-<span id="L179" class="LineNr">179 </span><span class="Delimiter">:(replace{} &quot;bool routine::completed() const&quot;)</span>
-<span id="L180" class="LineNr">180 </span><span class="Normal">bool</span> routine::completed<span class="Delimiter">()</span> <span class="Normal">const</span> <span class="Delimiter">{</span>
-<span id="L181" class="LineNr">181 </span>  <span class="Identifier">return</span> calls<span class="Delimiter">.</span>empty<span class="Delimiter">();</span>
-<span id="L182" class="LineNr">182 </span><span class="Delimiter">}</span>
-<span id="L183" class="LineNr">183 </span>
-<span id="L184" class="LineNr">184 </span><span class="Delimiter">:(replace{} &quot;const vector&lt;instruction&gt;&amp; routine::steps() const&quot;)</span>
-<span id="L185" class="LineNr">185 </span><span class="Normal">const</span> vector&lt;instruction&gt;&amp; routine::steps<span class="Delimiter">()</span> <span class="Normal">const</span> <span class="Delimiter">{</span>
-<span id="L186" class="LineNr">186 </span>  assert<span class="Delimiter">(</span>!calls<span class="Delimiter">.</span>empty<span class="Delimiter">());</span>
-<span id="L187" class="LineNr">187 </span>  <span class="Identifier">return</span> get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> calls<span class="Delimiter">.</span>front<span class="Delimiter">().</span>running_recipe<span class="Delimiter">).</span>steps<span class="Delimiter">;</span>
-<span id="L188" class="LineNr">188 </span><span class="Delimiter">}</span>
-<span id="L189" class="LineNr">189 </span>
-<span id="L190" class="LineNr">190 </span><span class="Delimiter">:(after &quot;Running One Instruction&quot;)</span>
-<span id="L191" class="LineNr">191 </span><span class="Comment">// when we reach the end of one call, we may reach the end of the one below</span>
-<span id="L192" class="LineNr">192 </span><span class="Comment">// it, and the one below that, and so on</span>
-<span id="L193" class="LineNr">193 </span><span class="Normal">while</span> <span class="Delimiter">(</span><a href='026call.cc.html#L82'>current_step_index</a><span class="Delimiter">()</span> &gt;= <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>Current_routine<span class="Delimiter">-&gt;</span>steps<span class="Delimiter">()))</span> <span class="Delimiter">{</span>
-<span id="L194" class="LineNr">194 </span>  <span class="Comment">// Falling Through End Of Recipe</span>
-<span id="L195" class="LineNr">195 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>Trace_stream<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L196" class="LineNr">196 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">&quot;trace&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;fall-through: exiting &quot;</span> &lt;&lt; <a href='026call.cc.html#L85'>current_recipe_name</a><span class="Delimiter">()</span> &lt;&lt; <span class="Constant">&quot;; decrementing callstack depth from &quot;</span> &lt;&lt; Trace_stream<span class="Delimiter">-&gt;</span>callstack_depth &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
-<span id="L197" class="LineNr">197 </span>  <span class="Conceal">¦</span> --Trace_stream<span class="Delimiter">-&gt;</span>callstack_depth<span class="Delimiter">;</span>
-<span id="L198" class="LineNr">198 </span>  <span class="Conceal">¦</span> assert<span class="Delimiter">(</span>Trace_stream<span class="Delimiter">-&gt;</span>callstack_depth &gt;= <span class="Constant">0</span><span class="Delimiter">);</span>
-<span id="L199" class="LineNr">199 </span>  <span class="Delimiter">}</span>
-<span id="L200" class="LineNr">200 </span>  Current_routine<span class="Delimiter">-&gt;</span>calls<span class="Delimiter">.</span>pop_front<span class="Delimiter">();</span>
-<span id="L201" class="LineNr">201 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>Current_routine<span class="Delimiter">-&gt;</span>calls<span class="Delimiter">.</span>empty<span class="Delimiter">())</span> <span class="Identifier">goto</span> stop_running_current_routine<span class="Delimiter">;</span>
-<span id="L202" class="LineNr">202 </span>  <span class="Comment">// Complete Call Fallthrough</span>
-<span id="L203" class="LineNr">203 </span>  <span class="Comment">// todo: fail if no products returned</span>
-<span id="L204" class="LineNr">204 </span>  ++current_step_index<span class="Delimiter">();</span>
-<span id="L205" class="LineNr">205 </span><span class="Delimiter">}</span>
-<span id="L206" class="LineNr">206 </span>
-<span id="L207" class="LineNr">207 </span><span class="Delimiter">:(before &quot;End Primitive Recipe Declarations&quot;)</span>
-<span id="L208" class="LineNr">208 </span>_DUMP_CALL_STACK<span class="Delimiter">,</span>
-<span id="L209" class="LineNr">209 </span><span class="Delimiter">:(before &quot;End Primitive Recipe Numbers&quot;)</span>
-<span id="L210" class="LineNr">210 </span><a href='001help.cc.html#L221'>put</a><span class="Delimiter">(</span>Recipe_ordinal<span class="Delimiter">,</span> <span class="Constant">&quot;$dump-call-stack&quot;</span><span class="Delimiter">,</span> _DUMP_CALL_STACK<span class="Delimiter">);</span>
-<span id="L211" class="LineNr">211 </span><span class="Delimiter">:(before &quot;End Primitive Recipe Checks&quot;)</span>
-<span id="L212" class="LineNr">212 </span><span class="Normal">case</span> _DUMP_CALL_STACK: <span class="Delimiter">{</span>
-<span id="L213" class="LineNr">213 </span>  <span class="Identifier">break</span><span class="Delimiter">;</span>
-<span id="L214" class="LineNr">214 </span><span class="Delimiter">}</span>
-<span id="L215" class="LineNr">215 </span><span class="Delimiter">:(before &quot;End Primitive Recipe Implementations&quot;)</span>
-<span id="L216" class="LineNr">216 </span><span class="Normal">case</span> _DUMP_CALL_STACK: <span class="Delimiter">{</span>
-<span id="L217" class="LineNr">217 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span>call_stack::const_reverse_iterator p = Current_routine<span class="Delimiter">-&gt;</span>calls<span class="Delimiter">.</span>rbegin<span class="Delimiter">();</span> p != Current_routine<span class="Delimiter">-&gt;</span>calls<span class="Delimiter">.</span>rend<span class="Delimiter">();</span> ++p<span class="Delimiter">)</span>
-<span id="L218" class="LineNr">218 </span>  <span class="Conceal">¦</span> cerr &lt;&lt; get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> p<span class="Delimiter">-&gt;</span>running_recipe<span class="Delimiter">).</span>name &lt;&lt; <span class="Constant">&quot;:&quot;</span> &lt;&lt; p<span class="Delimiter">-&gt;</span>running_step_index &lt;&lt; <span class="Constant">&quot; -- &quot;</span> &lt;&lt; <a href='028call_return.cc.html#L163'>to_string</a><span class="Delimiter">(</span><a href='026call.cc.html#L86'>to_instruction</a><span class="Delimiter">(</span>*p<span class="Delimiter">))</span> &lt;&lt; <span class="cSpecial">'\n'</span><span class="Delimiter">;</span>
-<span id="L219" class="LineNr">219 </span>  <span class="Identifier">break</span><span class="Delimiter">;</span>
-<span id="L220" class="LineNr">220 </span><span class="Delimiter">}</span>
+<span id="L179" class="LineNr">179 </span><span class="SalientComment">//:: finally, we need to fix the termination conditions for the run loop</span>
+<span id="L180" class="LineNr">180 </span>
+<span id="L181" class="LineNr">181 </span><span class="Delimiter">:(replace{} &quot;bool routine::completed() const&quot;)</span>
+<span id="L182" class="LineNr">182 </span><span class="Normal">bool</span> routine::completed<span class="Delimiter">()</span> <span class="Normal">const</span> <span class="Delimiter">{</span>
+<span id="L183" class="LineNr">183 </span>  <span class="Identifier">return</span> calls<span class="Delimiter">.</span>empty<span class="Delimiter">();</span>
+<span id="L184" class="LineNr">184 </span><span class="Delimiter">}</span>
+<span id="L185" class="LineNr">185 </span>
+<span id="L186" class="LineNr">186 </span><span class="Delimiter">:(replace{} &quot;const vector&lt;instruction&gt;&amp; routine::steps() const&quot;)</span>
+<span id="L187" class="LineNr">187 </span><span class="Normal">const</span> vector&lt;instruction&gt;&amp; routine::steps<span class="Delimiter">()</span> <span class="Normal">const</span> <span class="Delimiter">{</span>
+<span id="L188" class="LineNr">188 </span>  assert<span class="Delimiter">(</span>!calls<span class="Delimiter">.</span>empty<span class="Delimiter">());</span>
+<span id="L189" class="LineNr">189 </span>  <span class="Identifier">return</span> get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> calls<span class="Delimiter">.</span>front<span class="Delimiter">().</span>running_recipe<span class="Delimiter">).</span>steps<span class="Delimiter">;</span>
+<span id="L190" class="LineNr">190 </span><span class="Delimiter">}</span>
+<span id="L191" class="LineNr">191 </span>
+<span id="L192" class="LineNr">192 </span><span class="Delimiter">:(after &quot;Running One Instruction&quot;)</span>
+<span id="L193" class="LineNr">193 </span><span class="Comment">// when we reach the end of one call, we may reach the end of the one below</span>
+<span id="L194" class="LineNr">194 </span><span class="Comment">// it, and the one below that, and so on</span>
+<span id="L195" class="LineNr">195 </span><span class="Normal">while</span> <span class="Delimiter">(</span><a href='026call.cc.html#L84'>current_step_index</a><span class="Delimiter">()</span> &gt;= <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>Current_routine<span class="Delimiter">-&gt;</span>steps<span class="Delimiter">()))</span> <span class="Delimiter">{</span>
+<span id="L196" class="LineNr">196 </span>  <span class="Comment">// Falling Through End Of Recipe</span>
+<span id="L197" class="LineNr">197 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>Trace_stream<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L198" class="LineNr">198 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L167'>trace</a><span class="Delimiter">(</span><span class="Constant">&quot;trace&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;fall-through: exiting &quot;</span> &lt;&lt; <a href='026call.cc.html#L87'>current_recipe_name</a><span class="Delimiter">()</span> &lt;&lt; <span class="Constant">&quot;; decrementing callstack depth from &quot;</span> &lt;&lt; Trace_stream<span class="Delimiter">-&gt;</span>callstack_depth &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
+<span id="L199" class="LineNr">199 </span>  <span class="Conceal">¦</span> --Trace_stream<span class="Delimiter">-&gt;</span>callstack_depth<span class="Delimiter">;</span>
+<span id="L200" class="LineNr">200 </span>  <span class="Conceal">¦</span> assert<span class="Delimiter">(</span>Trace_stream<span class="Delimiter">-&gt;</span>callstack_depth &gt;= <span class="Constant">0</span><span class="Delimiter">);</span>
+<span id="L201" class="LineNr">201 </span>  <span class="Delimiter">}</span>
+<span id="L202" class="LineNr">202 </span>  Current_routine<span class="Delimiter">-&gt;</span>calls<span class="Delimiter">.</span>pop_front<span class="Delimiter">();</span>
+<span id="L203" class="LineNr">203 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>Current_routine<span class="Delimiter">-&gt;</span>calls<span class="Delimiter">.</span>empty<span class="Delimiter">())</span> <span class="Identifier">goto</span> stop_running_current_routine<span class="Delimiter">;</span>
+<span id="L204" class="LineNr">204 </span>  <span class="Comment">// Complete Call Fallthrough</span>
+<span id="L205" class="LineNr">205 </span>  <span class="Comment">// todo: fail if no products returned</span>
+<span id="L206" class="LineNr">206 </span>  ++current_step_index<span class="Delimiter">();</span>
+<span id="L207" class="LineNr">207 </span><span class="Delimiter">}</span>
+<span id="L208" class="LineNr">208 </span>
+<span id="L209" class="LineNr">209 </span><span class="Delimiter">:(before &quot;End Primitive Recipe Declarations&quot;)</span>
+<span id="L210" class="LineNr">210 </span>_DUMP_CALL_STACK<span class="Delimiter">,</span>
+<span id="L211" class="LineNr">211 </span><span class="Delimiter">:(before &quot;End Primitive Recipe Numbers&quot;)</span>
+<span id="L212" class="LineNr">212 </span><a href='001help.cc.html#L221'>put</a><span class="Delimiter">(</span>Recipe_ordinal<span class="Delimiter">,</span> <span class="Constant">&quot;$dump-call-stack&quot;</span><span class="Delimiter">,</span> _DUMP_CALL_STACK<span class="Delimiter">);</span>
+<span id="L213" class="LineNr">213 </span><span class="Delimiter">:(before &quot;End Primitive Recipe Checks&quot;)</span>
+<span id="L214" class="LineNr">214 </span><span class="Normal">case</span> _DUMP_CALL_STACK: <span class="Delimiter">{</span>
+<span id="L215" class="LineNr">215 </span>  <span class="Identifier">break</span><span class="Delimiter">;</span>
+<span id="L216" class="LineNr">216 </span><span class="Delimiter">}</span>
+<span id="L217" class="LineNr">217 </span><span class="Delimiter">:(before &quot;End Primitive Recipe Implementations&quot;)</span>
+<span id="L218" class="LineNr">218 </span><span class="Normal">case</span> _DUMP_CALL_STACK: <span class="Delimiter">{</span>
+<span id="L219" class="LineNr">219 </span>  <a href='003trace.cc.html#L120'>dump</a><span class="Delimiter">(</span>Current_routine<span class="Delimiter">-&gt;</span>calls<span class="Delimiter">);</span>
+<span id="L220" class="LineNr">220 </span>  <span class="Identifier">break</span><span class="Delimiter">;</span>
+<span id="L221" class="LineNr">221 </span><span class="Delimiter">}</span>
+<span id="L222" class="LineNr">222 </span><span class="Delimiter">:(code)</span>
+<span id="L223" class="LineNr">223 </span><span class="Normal">void</span> <a href='003trace.cc.html#L120'>dump</a><span class="Delimiter">(</span><span class="Normal">const</span> call_stack&amp; calls<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L224" class="LineNr">224 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span>call_stack::const_reverse_iterator p = calls<span class="Delimiter">.</span>rbegin<span class="Delimiter">();</span> p != calls<span class="Delimiter">.</span>rend<span class="Delimiter">();</span> ++p<span class="Delimiter">)</span>
+<span id="L225" class="LineNr">225 </span>  <span class="Conceal">¦</span> cerr &lt;&lt; get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> p<span class="Delimiter">-&gt;</span>running_recipe<span class="Delimiter">).</span>name &lt;&lt; <span class="Constant">&quot;:&quot;</span> &lt;&lt; p<span class="Delimiter">-&gt;</span>running_step_index &lt;&lt; <span class="Constant">&quot; -- &quot;</span> &lt;&lt; <a href='028call_return.cc.html#L163'>to_string</a><span class="Delimiter">(</span><a href='026call.cc.html#L88'>to_instruction</a><span class="Delimiter">(</span>*p<span class="Delimiter">))</span> &lt;&lt; <span class="cSpecial">'\n'</span><span class="Delimiter">;</span>
+<span id="L226" class="LineNr">226 </span><span class="Delimiter">}</span>
 </pre>
 </body>
 </html>
diff --git a/html/027call_ingredient.cc.html b/html/027call_ingredient.cc.html
index 8137161c..3f553742 100644
--- a/html/027call_ingredient.cc.html
+++ b/html/027call_ingredient.cc.html
@@ -92,10 +92,10 @@ if ('onhashchange' in window) {
 <span id="L29" class="LineNr"> 29 </span>
 <span id="L30" class="LineNr"> 30 </span><span class="Delimiter">:(before &quot;End Call Housekeeping&quot;)</span>
 <span id="L31" class="LineNr"> 31 </span><span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> i = <span class="Constant">0</span><span class="Delimiter">;</span>  i &lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>ingredients<span class="Delimiter">);</span>  ++i<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L32" class="LineNr"> 32 </span>  <a href='026call.cc.html#L81'>current_call</a><span class="Delimiter">().</span>ingredient_atoms<span class="Delimiter">.</span>push_back<span class="Delimiter">(</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">));</span>
+<span id="L32" class="LineNr"> 32 </span>  <a href='026call.cc.html#L83'>current_call</a><span class="Delimiter">().</span>ingredient_atoms<span class="Delimiter">.</span>push_back<span class="Delimiter">(</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">));</span>
 <span id="L33" class="LineNr"> 33 </span>  reagent<span class="Comment">/*</span><span class="Comment">copy</span><span class="Comment">*/</span> ingredient = call_instruction<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">);</span>
 <span id="L34" class="LineNr"> 34 </span>  <span class="Comment">// End Compute Call Ingredient</span>
-<span id="L35" class="LineNr"> 35 </span>  <a href='026call.cc.html#L81'>current_call</a><span class="Delimiter">().</span>ingredients<span class="Delimiter">.</span>push_back<span class="Delimiter">(</span>ingredient<span class="Delimiter">);</span>
+<span id="L35" class="LineNr"> 35 </span>  <a href='026call.cc.html#L83'>current_call</a><span class="Delimiter">().</span>ingredients<span class="Delimiter">.</span>push_back<span class="Delimiter">(</span>ingredient<span class="Delimiter">);</span>
 <span id="L36" class="LineNr"> 36 </span>  <span class="Comment">// End Populate Call Ingredient</span>
 <span id="L37" class="LineNr"> 37 </span><span class="Delimiter">}</span>
 <span id="L38" class="LineNr"> 38 </span>
@@ -107,7 +107,7 @@ if ('onhashchange' in window) {
 <span id="L44" class="LineNr"> 44 </span><span class="Delimiter">:(before &quot;End Primitive Recipe Checks&quot;)</span>
 <span id="L45" class="LineNr"> 45 </span><span class="Normal">case</span> NEXT_INGREDIENT: <span class="Delimiter">{</span>
 <span id="L46" class="LineNr"> 46 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>empty<span class="Delimiter">())</span> <span class="Delimiter">{</span>
-<span id="L47" class="LineNr"> 47 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'next-ingredient' didn't expect any ingredients in '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; end<span class="Delimiter">();</span>
+<span id="L47" class="LineNr"> 47 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'next-ingredient' didn't expect any ingredients in '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; end<span class="Delimiter">();</span>
 <span id="L48" class="LineNr"> 48 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L49" class="LineNr"> 49 </span>  <span class="Delimiter">}</span>
 <span id="L50" class="LineNr"> 50 </span>  <span class="Identifier">break</span><span class="Delimiter">;</span>
@@ -115,33 +115,33 @@ if ('onhashchange' in window) {
 <span id="L52" class="LineNr"> 52 </span><span class="Delimiter">:(before &quot;End Primitive Recipe Implementations&quot;)</span>
 <span id="L53" class="LineNr"> 53 </span><span class="Normal">case</span> NEXT_INGREDIENT: <span class="Delimiter">{</span>
 <span id="L54" class="LineNr"> 54 </span>  assert<span class="Delimiter">(</span>!Current_routine<span class="Delimiter">-&gt;</span>calls<span class="Delimiter">.</span>empty<span class="Delimiter">());</span>
-<span id="L55" class="LineNr"> 55 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span><a href='026call.cc.html#L81'>current_call</a><span class="Delimiter">().</span>next_ingredient_to_process &lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span><a href='026call.cc.html#L81'>current_call</a><span class="Delimiter">().</span>ingredient_atoms<span class="Delimiter">))</span> <span class="Delimiter">{</span>
-<span id="L56" class="LineNr"> 56 </span>  <span class="Conceal">¦</span> reagent<span class="Comment">/*</span><span class="Comment">copy</span><span class="Comment">*/</span> product = <a href='026call.cc.html#L87'>current_instruction</a><span class="Delimiter">().</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">);</span>
+<span id="L55" class="LineNr"> 55 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span><a href='026call.cc.html#L83'>current_call</a><span class="Delimiter">().</span>next_ingredient_to_process &lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span><a href='026call.cc.html#L83'>current_call</a><span class="Delimiter">().</span>ingredient_atoms<span class="Delimiter">))</span> <span class="Delimiter">{</span>
+<span id="L56" class="LineNr"> 56 </span>  <span class="Conceal">¦</span> reagent<span class="Comment">/*</span><span class="Comment">copy</span><span class="Comment">*/</span> product = <a href='026call.cc.html#L89'>current_instruction</a><span class="Delimiter">().</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">);</span>
 <span id="L57" class="LineNr"> 57 </span>  <span class="Conceal">¦</span> <span class="Comment">// End Preprocess NEXT_INGREDIENT product</span>
-<span id="L58" class="LineNr"> 58 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span><a href='026call.cc.html#L85'>current_recipe_name</a><span class="Delimiter">()</span> == <span class="Constant">&quot;main&quot;</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L58" class="LineNr"> 58 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span><a href='026call.cc.html#L87'>current_recipe_name</a><span class="Delimiter">()</span> == <span class="Constant">&quot;main&quot;</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
 <span id="L59" class="LineNr"> 59 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Comment">// no ingredient types since the call might be implicit; assume ingredients are always strings</span>
 <span id="L60" class="LineNr"> 60 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Comment">// todo: how to test this?</span>
 <span id="L61" class="LineNr"> 61 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>!is_mu_text<span class="Delimiter">(</span>product<span class="Delimiter">))</span>
-<span id="L62" class="LineNr"> 62 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <span class="Constant">&quot;main: wrong type for ingredient '&quot;</span> &lt;&lt; product<span class="Delimiter">.</span>original_string &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L62" class="LineNr"> 62 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <span class="Constant">&quot;main: wrong type for ingredient '&quot;</span> &lt;&lt; product<span class="Delimiter">.</span>original_string &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L63" class="LineNr"> 63 </span>  <span class="Conceal">¦</span> <span class="Delimiter">}</span>
 <span id="L64" class="LineNr"> 64 </span>  <span class="Conceal">¦</span> <span class="Normal">else</span> <span class="Normal">if</span> <span class="Delimiter">(</span>!types_coercible<span class="Delimiter">(</span>product<span class="Delimiter">,</span>
-<span id="L65" class="LineNr"> 65 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span>         <a href='026call.cc.html#L81'>current_call</a><span class="Delimiter">().</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><a href='026call.cc.html#L81'>current_call</a><span class="Delimiter">().</span>next_ingredient_to_process<span class="Delimiter">)))</span> <span class="Delimiter">{</span>
-<span id="L66" class="LineNr"> 66 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span><a href='026call.cc.html#L85'>current_recipe_name</a><span class="Delimiter">())</span> &lt;&lt; <span class="Constant">&quot;wrong type for ingredient '&quot;</span> &lt;&lt; product<span class="Delimiter">.</span>original_string &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L65" class="LineNr"> 65 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span>         <a href='026call.cc.html#L83'>current_call</a><span class="Delimiter">().</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><a href='026call.cc.html#L83'>current_call</a><span class="Delimiter">().</span>next_ingredient_to_process<span class="Delimiter">)))</span> <span class="Delimiter">{</span>
+<span id="L66" class="LineNr"> 66 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span><a href='026call.cc.html#L87'>current_recipe_name</a><span class="Delimiter">())</span> &lt;&lt; <span class="Constant">&quot;wrong type for ingredient '&quot;</span> &lt;&lt; product<span class="Delimiter">.</span>original_string &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L67" class="LineNr"> 67 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Comment">// End next-ingredient Type Mismatch Error</span>
 <span id="L68" class="LineNr"> 68 </span>  <span class="Conceal">¦</span> <span class="Delimiter">}</span>
 <span id="L69" class="LineNr"> 69 </span>  <span class="Conceal">¦</span> products<span class="Delimiter">.</span>push_back<span class="Delimiter">(</span>
-<span id="L70" class="LineNr"> 70 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='026call.cc.html#L81'>current_call</a><span class="Delimiter">().</span>ingredient_atoms<span class="Delimiter">.</span>at<span class="Delimiter">(</span><a href='026call.cc.html#L81'>current_call</a><span class="Delimiter">().</span>next_ingredient_to_process<span class="Delimiter">));</span>
+<span id="L70" class="LineNr"> 70 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='026call.cc.html#L83'>current_call</a><span class="Delimiter">().</span>ingredient_atoms<span class="Delimiter">.</span>at<span class="Delimiter">(</span><a href='026call.cc.html#L83'>current_call</a><span class="Delimiter">().</span>next_ingredient_to_process<span class="Delimiter">));</span>
 <span id="L71" class="LineNr"> 71 </span>  <span class="Conceal">¦</span> assert<span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>products<span class="Delimiter">)</span> == <span class="Constant">1</span><span class="Delimiter">);</span>  products<span class="Delimiter">.</span>resize<span class="Delimiter">(</span><span class="Constant">2</span><span class="Delimiter">);</span>  <span class="Comment">// push a new vector</span>
 <span id="L72" class="LineNr"> 72 </span>  <span class="Conceal">¦</span> products<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">1</span><span class="Delimiter">).</span>push_back<span class="Delimiter">(</span><span class="Constant">1</span><span class="Delimiter">);</span>
 <span id="L73" class="LineNr"> 73 </span>  <span class="Conceal">¦</span> ++current_call<span class="Delimiter">().</span>next_ingredient_to_process<span class="Delimiter">;</span>
 <span id="L74" class="LineNr"> 74 </span>  <span class="Delimiter">}</span>
 <span id="L75" class="LineNr"> 75 </span>  <span class="Normal">else</span> <span class="Delimiter">{</span>
-<span id="L76" class="LineNr"> 76 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span><a href='026call.cc.html#L87'>current_instruction</a><span class="Delimiter">().</span>products<span class="Delimiter">)</span> &lt; <span class="Constant">2</span><span class="Delimiter">)</span>
-<span id="L77" class="LineNr"> 77 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span><a href='026call.cc.html#L85'>current_recipe_name</a><span class="Delimiter">())</span> &lt;&lt; <span class="Constant">&quot;no ingredient to save in '&quot;</span> &lt;&lt; current_instruction<span class="Delimiter">().</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>original_string &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
-<span id="L78" class="LineNr"> 78 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span><a href='026call.cc.html#L87'>current_instruction</a><span class="Delimiter">().</span>products<span class="Delimiter">.</span>empty<span class="Delimiter">())</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
+<span id="L76" class="LineNr"> 76 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span><a href='026call.cc.html#L89'>current_instruction</a><span class="Delimiter">().</span>products<span class="Delimiter">)</span> &lt; <span class="Constant">2</span><span class="Delimiter">)</span>
+<span id="L77" class="LineNr"> 77 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span><a href='026call.cc.html#L87'>current_recipe_name</a><span class="Delimiter">())</span> &lt;&lt; <span class="Constant">&quot;no ingredient to save in '&quot;</span> &lt;&lt; current_instruction<span class="Delimiter">().</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>original_string &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
+<span id="L78" class="LineNr"> 78 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span><a href='026call.cc.html#L89'>current_instruction</a><span class="Delimiter">().</span>products<span class="Delimiter">.</span>empty<span class="Delimiter">())</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L79" class="LineNr"> 79 </span>  <span class="Conceal">¦</span> products<span class="Delimiter">.</span>resize<span class="Delimiter">(</span><span class="Constant">2</span><span class="Delimiter">);</span>
 <span id="L80" class="LineNr"> 80 </span>  <span class="Conceal">¦</span> <span class="Comment">// pad the first product with sufficient zeros to match its type</span>
-<span id="L81" class="LineNr"> 81 </span>  <span class="Conceal">¦</span> products<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>resize<span class="Delimiter">(</span>size_of<span class="Delimiter">(</span><a href='026call.cc.html#L87'>current_instruction</a><span class="Delimiter">().</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">)));</span>
+<span id="L81" class="LineNr"> 81 </span>  <span class="Conceal">¦</span> products<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>resize<span class="Delimiter">(</span>size_of<span class="Delimiter">(</span><a href='026call.cc.html#L89'>current_instruction</a><span class="Delimiter">().</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">)));</span>
 <span id="L82" class="LineNr"> 82 </span>  <span class="Conceal">¦</span> products<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">1</span><span class="Delimiter">).</span>push_back<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">);</span>
 <span id="L83" class="LineNr"> 83 </span>  <span class="Delimiter">}</span>
 <span id="L84" class="LineNr"> 84 </span>  <span class="Identifier">break</span><span class="Delimiter">;</span>
@@ -183,7 +183,7 @@ if ('onhashchange' in window) {
 <span id="L120" class="LineNr">120 </span><span class="Delimiter">}</span>
 <span id="L121" class="LineNr">121 </span><span class="Delimiter">:(before &quot;End Primitive Recipe Implementations&quot;)</span>
 <span id="L122" class="LineNr">122 </span><span class="Normal">case</span> REWIND_INGREDIENTS: <span class="Delimiter">{</span>
-<span id="L123" class="LineNr">123 </span>  <a href='026call.cc.html#L81'>current_call</a><span class="Delimiter">().</span>next_ingredient_to_process = <span class="Constant">0</span><span class="Delimiter">;</span>
+<span id="L123" class="LineNr">123 </span>  <a href='026call.cc.html#L83'>current_call</a><span class="Delimiter">().</span>next_ingredient_to_process = <span class="Constant">0</span><span class="Delimiter">;</span>
 <span id="L124" class="LineNr">124 </span>  <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L125" class="LineNr">125 </span><span class="Delimiter">}</span>
 <span id="L126" class="LineNr">126 </span>
@@ -206,27 +206,27 @@ if ('onhashchange' in window) {
 <span id="L143" class="LineNr">143 </span><span class="Delimiter">:(before &quot;End Primitive Recipe Checks&quot;)</span>
 <span id="L144" class="LineNr">144 </span><span class="Normal">case</span> INGREDIENT: <span class="Delimiter">{</span>
 <span id="L145" class="LineNr">145 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">)</span> != <span class="Constant">1</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L146" class="LineNr">146 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'ingredient' expects exactly one ingredient, but got '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L146" class="LineNr">146 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'ingredient' expects exactly one ingredient, but got '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L147" class="LineNr">147 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L148" class="LineNr">148 </span>  <span class="Delimiter">}</span>
 <span id="L149" class="LineNr">149 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!is_literal<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">))</span> &amp;&amp; !is_mu_number<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">)))</span> <span class="Delimiter">{</span>
-<span id="L150" class="LineNr">150 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'ingredient' expects a literal ingredient, but got '&quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>original_string &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L150" class="LineNr">150 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'ingredient' expects a literal ingredient, but got '&quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>original_string &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L151" class="LineNr">151 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L152" class="LineNr">152 </span>  <span class="Delimiter">}</span>
 <span id="L153" class="LineNr">153 </span>  <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L154" class="LineNr">154 </span><span class="Delimiter">}</span>
 <span id="L155" class="LineNr">155 </span><span class="Delimiter">:(before &quot;End Primitive Recipe Implementations&quot;)</span>
 <span id="L156" class="LineNr">156 </span><span class="Normal">case</span> INGREDIENT: <span class="Delimiter">{</span>
-<span id="L157" class="LineNr">157 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span><span class="Normal">static_cast</span>&lt;<span class="Normal">int</span>&gt;<span class="Delimiter">(</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">))</span> &lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span><a href='026call.cc.html#L81'>current_call</a><span class="Delimiter">().</span>ingredient_atoms<span class="Delimiter">))</span> <span class="Delimiter">{</span>
-<span id="L158" class="LineNr">158 </span>  <span class="Conceal">¦</span> <a href='026call.cc.html#L81'>current_call</a><span class="Delimiter">().</span>next_ingredient_to_process = ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">);</span>
+<span id="L157" class="LineNr">157 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span><span class="Normal">static_cast</span>&lt;<span class="Normal">int</span>&gt;<span class="Delimiter">(</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">))</span> &lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span><a href='026call.cc.html#L83'>current_call</a><span class="Delimiter">().</span>ingredient_atoms<span class="Delimiter">))</span> <span class="Delimiter">{</span>
+<span id="L158" class="LineNr">158 </span>  <span class="Conceal">¦</span> <a href='026call.cc.html#L83'>current_call</a><span class="Delimiter">().</span>next_ingredient_to_process = ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">);</span>
 <span id="L159" class="LineNr">159 </span>  <span class="Conceal">¦</span> products<span class="Delimiter">.</span>push_back<span class="Delimiter">(</span>
-<span id="L160" class="LineNr">160 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='026call.cc.html#L81'>current_call</a><span class="Delimiter">().</span>ingredient_atoms<span class="Delimiter">.</span>at<span class="Delimiter">(</span><a href='026call.cc.html#L81'>current_call</a><span class="Delimiter">().</span>next_ingredient_to_process<span class="Delimiter">));</span>
+<span id="L160" class="LineNr">160 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='026call.cc.html#L83'>current_call</a><span class="Delimiter">().</span>ingredient_atoms<span class="Delimiter">.</span>at<span class="Delimiter">(</span><a href='026call.cc.html#L83'>current_call</a><span class="Delimiter">().</span>next_ingredient_to_process<span class="Delimiter">));</span>
 <span id="L161" class="LineNr">161 </span>  <span class="Conceal">¦</span> assert<span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>products<span class="Delimiter">)</span> == <span class="Constant">1</span><span class="Delimiter">);</span>  products<span class="Delimiter">.</span>resize<span class="Delimiter">(</span><span class="Constant">2</span><span class="Delimiter">);</span>  <span class="Comment">// push a new vector</span>
 <span id="L162" class="LineNr">162 </span>  <span class="Conceal">¦</span> products<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">1</span><span class="Delimiter">).</span>push_back<span class="Delimiter">(</span><span class="Constant">1</span><span class="Delimiter">);</span>
 <span id="L163" class="LineNr">163 </span>  <span class="Conceal">¦</span> ++current_call<span class="Delimiter">().</span>next_ingredient_to_process<span class="Delimiter">;</span>
 <span id="L164" class="LineNr">164 </span>  <span class="Delimiter">}</span>
 <span id="L165" class="LineNr">165 </span>  <span class="Normal">else</span> <span class="Delimiter">{</span>
-<span id="L166" class="LineNr">166 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span><a href='026call.cc.html#L87'>current_instruction</a><span class="Delimiter">().</span>products<span class="Delimiter">)</span> &gt; <span class="Constant">1</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L166" class="LineNr">166 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span><a href='026call.cc.html#L89'>current_instruction</a><span class="Delimiter">().</span>products<span class="Delimiter">)</span> &gt; <span class="Constant">1</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
 <span id="L167" class="LineNr">167 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> products<span class="Delimiter">.</span>resize<span class="Delimiter">(</span><span class="Constant">2</span><span class="Delimiter">);</span>
 <span id="L168" class="LineNr">168 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> products<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>push_back<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">);</span>  <span class="Comment">// todo: will fail noisily if we try to read a compound value</span>
 <span id="L169" class="LineNr">169 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> products<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">1</span><span class="Delimiter">).</span>push_back<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">);</span>
diff --git a/html/028call_return.cc.html b/html/028call_return.cc.html
index 493c5e24..f69f1c47 100644
--- a/html/028call_return.cc.html
+++ b/html/028call_return.cc.html
@@ -101,7 +101,7 @@ if ('onhashchange' in window) {
 <span id="L38" class="LineNr"> 38 </span><span class="Normal">case</span> RETURN: <span class="Delimiter">{</span>
 <span id="L39" class="LineNr"> 39 </span>  <span class="Comment">// Begin Return</span>
 <span id="L40" class="LineNr"> 40 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>Trace_stream<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L41" class="LineNr"> 41 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">&quot;trace&quot;</span><span class="Delimiter">)</span> &lt;&lt; <a href='026call.cc.html#L87'>current_instruction</a><span class="Delimiter">().</span>name &lt;&lt; <span class="Constant">&quot;: decrementing callstack depth from &quot;</span> &lt;&lt; Trace_stream<span class="Delimiter">-&gt;</span>callstack_depth &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L41" class="LineNr"> 41 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L167'>trace</a><span class="Delimiter">(</span><span class="Constant">&quot;trace&quot;</span><span class="Delimiter">)</span> &lt;&lt; <a href='026call.cc.html#L89'>current_instruction</a><span class="Delimiter">().</span>name &lt;&lt; <span class="Constant">&quot;: decrementing callstack depth from &quot;</span> &lt;&lt; Trace_stream<span class="Delimiter">-&gt;</span>callstack_depth &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L42" class="LineNr"> 42 </span>  <span class="Conceal">¦</span> --Trace_stream<span class="Delimiter">-&gt;</span>callstack_depth<span class="Delimiter">;</span>
 <span id="L43" class="LineNr"> 43 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>Trace_stream<span class="Delimiter">-&gt;</span>callstack_depth &lt; <span class="Constant">0</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
 <span id="L44" class="LineNr"> 44 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> Current_routine<span class="Delimiter">-&gt;</span>calls<span class="Delimiter">.</span><a href='050scenario.cc.html#L60'>clear</a><span class="Delimiter">();</span>
@@ -112,9 +112,9 @@ if ('onhashchange' in window) {
 <span id="L49" class="LineNr"> 49 </span>  <span class="Comment">// just in case 'main' returns a value, drop it for now</span>
 <span id="L50" class="LineNr"> 50 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>Current_routine<span class="Delimiter">-&gt;</span>calls<span class="Delimiter">.</span>empty<span class="Delimiter">())</span> <span class="Identifier">goto</span> stop_running_current_routine<span class="Delimiter">;</span>
 <span id="L51" class="LineNr"> 51 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> i = <span class="Constant">0</span><span class="Delimiter">;</span>  i &lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>ingredients<span class="Delimiter">);</span>  ++i<span class="Delimiter">)</span>
-<span id="L52" class="LineNr"> 52 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">9998</span><span class="Delimiter">,</span> <span class="Constant">&quot;run&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;result &quot;</span> &lt;&lt; i &lt;&lt; <span class="Constant">&quot; is &quot;</span> &lt;&lt; <a href='028call_return.cc.html#L163'>to_string</a><span class="Delimiter">(</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">))</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L52" class="LineNr"> 52 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L167'>trace</a><span class="Delimiter">(</span><span class="Constant">9998</span><span class="Delimiter">,</span> <span class="Constant">&quot;run&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;result &quot;</span> &lt;&lt; i &lt;&lt; <span class="Constant">&quot; is &quot;</span> &lt;&lt; <a href='028call_return.cc.html#L163'>to_string</a><span class="Delimiter">(</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">))</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L53" class="LineNr"> 53 </span>  <span class="Comment">// make return products available to caller</span>
-<span id="L54" class="LineNr"> 54 </span>  copy<span class="Delimiter">(</span>ingredients<span class="Delimiter">.</span>begin<span class="Delimiter">(),</span> ingredients<span class="Delimiter">.</span><a href='003trace.cc.html#L197'>end</a><span class="Delimiter">(),</span> inserter<span class="Delimiter">(</span>products<span class="Delimiter">,</span> products<span class="Delimiter">.</span>begin<span class="Delimiter">()));</span>
+<span id="L54" class="LineNr"> 54 </span>  copy<span class="Delimiter">(</span>ingredients<span class="Delimiter">.</span>begin<span class="Delimiter">(),</span> ingredients<span class="Delimiter">.</span><a href='003trace.cc.html#L203'>end</a><span class="Delimiter">(),</span> inserter<span class="Delimiter">(</span>products<span class="Delimiter">,</span> products<span class="Delimiter">.</span>begin<span class="Delimiter">()));</span>
 <span id="L55" class="LineNr"> 55 </span>  <span class="Comment">// End Return</span>
 <span id="L56" class="LineNr"> 56 </span>  <span class="Identifier">break</span><span class="Delimiter">;</span>  <span class="Comment">// continue to process rest of *caller* instruction</span>
 <span id="L57" class="LineNr"> 57 </span><span class="Delimiter">}</span>
@@ -126,7 +126,7 @@ if ('onhashchange' in window) {
 <span id="L63" class="LineNr"> 63 </span><span class="Delimiter">:(code)</span>
 <span id="L64" class="LineNr"> 64 </span><span class="Normal">void</span> <a href='028call_return.cc.html#L64'>check_types_of_return_instructions</a><span class="Delimiter">(</span><span class="Normal">const</span> <a href='010vm.cc.html#L14'>recipe_ordinal</a> r<span class="Delimiter">)</span> <span class="Delimiter">{</span>
 <span id="L65" class="LineNr"> 65 </span>  <span class="Normal">const</span> recipe&amp; caller = get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">);</span>
-<span id="L66" class="LineNr"> 66 </span>  <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">9991</span><span class="Delimiter">,</span> <span class="Constant">&quot;transform&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;--- check types of return instructions in <a href='010vm.cc.html#L19'>recipe</a> &quot;</span> &lt;&lt; caller<span class="Delimiter">.</span>name &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L66" class="LineNr"> 66 </span>  <a href='003trace.cc.html#L167'>trace</a><span class="Delimiter">(</span><span class="Constant">9991</span><span class="Delimiter">,</span> <span class="Constant">&quot;transform&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;--- check types of return instructions in <a href='010vm.cc.html#L19'>recipe</a> &quot;</span> &lt;&lt; caller<span class="Delimiter">.</span>name &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L67" class="LineNr"> 67 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> i = <span class="Constant">0</span><span class="Delimiter">;</span>  i &lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>caller<span class="Delimiter">.</span>steps<span class="Delimiter">);</span>  ++i<span class="Delimiter">)</span> <span class="Delimiter">{</span>
 <span id="L68" class="LineNr"> 68 </span>  <span class="Conceal">¦</span> <span class="Normal">const</span> instruction&amp; caller_instruction = caller<span class="Delimiter">.</span>steps<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">);</span>
 <span id="L69" class="LineNr"> 69 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>caller_instruction<span class="Delimiter">.</span>is_label<span class="Delimiter">)</span> <span class="Identifier">continue</span><span class="Delimiter">;</span>
@@ -138,7 +138,7 @@ if ('onhashchange' in window) {
 <span id="L75" class="LineNr"> 75 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>return_inst<span class="Delimiter">.</span>operation != RETURN<span class="Delimiter">)</span> <span class="Identifier">continue</span><span class="Delimiter">;</span>
 <span id="L76" class="LineNr"> 76 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Comment">// check types with the caller</span>
 <span id="L77" class="LineNr"> 77 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>caller_instruction<span class="Delimiter">.</span>products<span class="Delimiter">)</span> &gt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>return_inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">))</span> <span class="Delimiter">{</span>
-<span id="L78" class="LineNr"> 78 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>caller<span class="Delimiter">.</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;too few values returned from &quot;</span> &lt;&lt; callee<span class="Delimiter">.</span>name &lt;&lt; <span class="cSpecial">'\n'</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L78" class="LineNr"> 78 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>caller<span class="Delimiter">.</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;too few values returned from &quot;</span> &lt;&lt; callee<span class="Delimiter">.</span>name &lt;&lt; <span class="cSpecial">'\n'</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L79" class="LineNr"> 79 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L80" class="LineNr"> 80 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Delimiter">}</span>
 <span id="L81" class="LineNr"> 81 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> i = <span class="Constant">0</span><span class="Delimiter">;</span>  i &lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>caller_instruction<span class="Delimiter">.</span>products<span class="Delimiter">);</span>  ++i<span class="Delimiter">)</span> <span class="Delimiter">{</span>
@@ -146,8 +146,8 @@ if ('onhashchange' in window) {
 <span id="L83" class="LineNr"> 83 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> reagent<span class="Comment">/*</span><span class="Comment">copy</span><span class="Comment">*/</span> rhs = caller_instruction<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">);</span>
 <span id="L84" class="LineNr"> 84 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Comment">// End Check RETURN Copy(lhs, rhs)</span>
 <span id="L85" class="LineNr"> 85 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>!types_coercible<span class="Delimiter">(</span>rhs<span class="Delimiter">,</span> lhs<span class="Delimiter">))</span> <span class="Delimiter">{</span>
-<span id="L86" class="LineNr"> 86 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>callee<span class="Delimiter">.</span>name<span class="Delimiter">)</span> &lt;&lt; return_inst<span class="Delimiter">.</span>name &lt;&lt; <span class="Constant">&quot; ingredient '&quot;</span> &lt;&lt; lhs<span class="Delimiter">.</span>original_string &lt;&lt; <span class="Constant">&quot;' can't be saved in '&quot;</span> &lt;&lt; rhs<span class="Delimiter">.</span>original_string &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; end<span class="Delimiter">();</span>
-<span id="L87" class="LineNr"> 87 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <span class="Constant">&quot;  ['&quot;</span> &lt;&lt; to_string<span class="Delimiter">(</span>lhs<span class="Delimiter">.</span>type<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;' vs '&quot;</span> &lt;&lt; to_string<span class="Delimiter">(</span>rhs<span class="Delimiter">.</span>type<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;']</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L86" class="LineNr"> 86 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>callee<span class="Delimiter">.</span>name<span class="Delimiter">)</span> &lt;&lt; return_inst<span class="Delimiter">.</span>name &lt;&lt; <span class="Constant">&quot; ingredient '&quot;</span> &lt;&lt; lhs<span class="Delimiter">.</span>original_string &lt;&lt; <span class="Constant">&quot;' can't be saved in '&quot;</span> &lt;&lt; rhs<span class="Delimiter">.</span>original_string &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; end<span class="Delimiter">();</span>
+<span id="L87" class="LineNr"> 87 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <span class="Constant">&quot;  ['&quot;</span> &lt;&lt; to_string<span class="Delimiter">(</span>lhs<span class="Delimiter">.</span>type<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;' vs '&quot;</span> &lt;&lt; to_string<span class="Delimiter">(</span>rhs<span class="Delimiter">.</span>type<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;']</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L88" class="LineNr"> 88 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Identifier">goto</span> finish_return_check<span class="Delimiter">;</span>
 <span id="L89" class="LineNr"> 89 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Delimiter">}</span>
 <span id="L90" class="LineNr"> 90 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Delimiter">}</span>
@@ -157,16 +157,16 @@ if ('onhashchange' in window) {
 <span id="L94" class="LineNr"> 94 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>has_property<span class="Delimiter">(</span>return_inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">),</span> <span class="Constant">&quot;same-as-ingredient&quot;</span><span class="Delimiter">))</span> <span class="Delimiter">{</span>
 <span id="L95" class="LineNr"> 95 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> string_tree* tmp = property<span class="Delimiter">(</span>return_inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">),</span> <span class="Constant">&quot;same-as-ingredient&quot;</span><span class="Delimiter">);</span>
 <span id="L96" class="LineNr"> 96 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>!tmp || !tmp<span class="Delimiter">-&gt;</span>atom<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L97" class="LineNr"> 97 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>caller<span class="Delimiter">.</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'same-as-ingredient' metadata should take exactly one value in '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>return_inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L97" class="LineNr"> 97 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>caller<span class="Delimiter">.</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'same-as-ingredient' metadata should take exactly one value in '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>return_inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L98" class="LineNr"> 98 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Identifier">goto</span> finish_return_check<span class="Delimiter">;</span>
 <span id="L99" class="LineNr"> 99 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Delimiter">}</span>
 <span id="L100" class="LineNr">100 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">int</span> ingredient_index = <a href='002test.cc.html#L91'>to_integer</a><span class="Delimiter">(</span>tmp<span class="Delimiter">-&gt;</span>value<span class="Delimiter">);</span>
 <span id="L101" class="LineNr">101 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>ingredient_index &gt;= <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>caller_instruction<span class="Delimiter">.</span>ingredients<span class="Delimiter">))</span> <span class="Delimiter">{</span>
-<span id="L102" class="LineNr">102 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>caller<span class="Delimiter">.</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;too few ingredients in '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>caller_instruction<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L102" class="LineNr">102 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>caller<span class="Delimiter">.</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;too few ingredients in '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>caller_instruction<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L103" class="LineNr">103 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Identifier">goto</span> finish_return_check<span class="Delimiter">;</span>
 <span id="L104" class="LineNr">104 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Delimiter">}</span>
 <span id="L105" class="LineNr">105 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>!is_dummy<span class="Delimiter">(</span>caller_instruction<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">))</span> &amp;&amp; !is_literal<span class="Delimiter">(</span>caller_instruction<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>ingredient_index<span class="Delimiter">))</span> &amp;&amp; caller_instruction<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">).</span>name != caller_instruction<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>ingredient_index<span class="Delimiter">).</span>name<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L106" class="LineNr">106 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>caller<span class="Delimiter">.</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>caller_instruction<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;' should write to '&quot;</span> &lt;&lt; caller_instruction<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>ingredient_index<span class="Delimiter">).</span>original_string &lt;&lt; <span class="Constant">&quot;' rather than '&quot;</span> &lt;&lt; caller_instruction<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">).</span>original_string &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L106" class="LineNr">106 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>caller<span class="Delimiter">.</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>caller_instruction<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;' should write to '&quot;</span> &lt;&lt; caller_instruction<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>ingredient_index<span class="Delimiter">).</span>original_string &lt;&lt; <span class="Constant">&quot;' rather than '&quot;</span> &lt;&lt; caller_instruction<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">).</span>original_string &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L107" class="LineNr">107 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Delimiter">}</span>
 <span id="L108" class="LineNr">108 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Delimiter">}</span>
 <span id="L109" class="LineNr">109 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Delimiter">}</span>
diff --git a/html/029tools.cc.html b/html/029tools.cc.html
index 11de6fb4..550ceabe 100644
--- a/html/029tools.cc.html
+++ b/html/029tools.cc.html
@@ -67,9 +67,9 @@ if ('onhashchange' in window) {
 <span id="L2" class="LineNr">  2 </span>
 <span id="L3" class="LineNr">  3 </span><span class="Delimiter">:(scenario trace)</span>
 <span id="L4" class="LineNr">  4 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
-<span id="L5" class="LineNr">  5 </span>  <a href='003trace.cc.html#L161'>trace</a> <span class="Constant">1</span><span class="Delimiter">,</span> [foo]<span class="Delimiter">,</span> [<span class="Normal">this</span> is a <a href='003trace.cc.html#L161'>trace</a> in Mu]
+<span id="L5" class="LineNr">  5 </span>  <a href='003trace.cc.html#L167'>trace</a> <span class="Constant">1</span><span class="Delimiter">,</span> [foo]<span class="Delimiter">,</span> [<span class="Normal">this</span> is a <a href='003trace.cc.html#L167'>trace</a> in Mu]
 <span id="L6" class="LineNr">  6 </span>]
-<span id="L7" class="LineNr">  7 </span><span class="traceContains">+foo: this is a <a href='003trace.cc.html#L161'>trace</a> in Mu</span>
+<span id="L7" class="LineNr">  7 </span><span class="traceContains">+foo: this is a <a href='003trace.cc.html#L167'>trace</a> in Mu</span>
 <span id="L8" class="LineNr">  8 </span>
 <span id="L9" class="LineNr">  9 </span><span class="Delimiter">:(before &quot;End Primitive Recipe Declarations&quot;)</span>
 <span id="L10" class="LineNr"> 10 </span>TRACE<span class="Delimiter">,</span>
@@ -78,15 +78,15 @@ if ('onhashchange' in window) {
 <span id="L13" class="LineNr"> 13 </span><span class="Delimiter">:(before &quot;End Primitive Recipe Checks&quot;)</span>
 <span id="L14" class="LineNr"> 14 </span><span class="Normal">case</span> TRACE: <span class="Delimiter">{</span>
 <span id="L15" class="LineNr"> 15 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">)</span> &lt; <span class="Constant">3</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L16" class="LineNr"> 16 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'trace' takes three or more ingredients rather than '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L16" class="LineNr"> 16 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'trace' takes three or more ingredients rather than '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L17" class="LineNr"> 17 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L18" class="LineNr"> 18 </span>  <span class="Delimiter">}</span>
 <span id="L19" class="LineNr"> 19 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!is_mu_number<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">)))</span> <span class="Delimiter">{</span>
-<span id="L20" class="LineNr"> 20 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;first ingredient of 'trace' should be a number (depth), but got '&quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>original_string &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L20" class="LineNr"> 20 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;first ingredient of 'trace' should be a number (depth), but got '&quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>original_string &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L21" class="LineNr"> 21 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L22" class="LineNr"> 22 </span>  <span class="Delimiter">}</span>
 <span id="L23" class="LineNr"> 23 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!is_literal_text<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">1</span><span class="Delimiter">)))</span> <span class="Delimiter">{</span>
-<span id="L24" class="LineNr"> 24 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;second ingredient of 'trace' should be a literal string (label), but got '&quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">1</span><span class="Delimiter">).</span>original_string &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L24" class="LineNr"> 24 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;second ingredient of 'trace' should be a literal string (label), but got '&quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">1</span><span class="Delimiter">).</span>original_string &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L25" class="LineNr"> 25 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L26" class="LineNr"> 26 </span>  <span class="Delimiter">}</span>
 <span id="L27" class="LineNr"> 27 </span>  <span class="Identifier">break</span><span class="Delimiter">;</span>
@@ -94,13 +94,13 @@ if ('onhashchange' in window) {
 <span id="L29" class="LineNr"> 29 </span><span class="Delimiter">:(before &quot;End Primitive Recipe Implementations&quot;)</span>
 <span id="L30" class="LineNr"> 30 </span><span class="Normal">case</span> TRACE: <span class="Delimiter">{</span>
 <span id="L31" class="LineNr"> 31 </span>  <span class="Normal">int</span> depth = ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">);</span>
-<span id="L32" class="LineNr"> 32 </span>  string label = <a href='026call.cc.html#L87'>current_instruction</a><span class="Delimiter">().</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">1</span><span class="Delimiter">).</span>name<span class="Delimiter">;</span>
+<span id="L32" class="LineNr"> 32 </span>  string label = <a href='026call.cc.html#L89'>current_instruction</a><span class="Delimiter">().</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">1</span><span class="Delimiter">).</span>name<span class="Delimiter">;</span>
 <span id="L33" class="LineNr"> 33 </span>  ostringstream out<span class="Delimiter">;</span>
-<span id="L34" class="LineNr"> 34 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> i = <span class="Constant">2</span><span class="Delimiter">;</span>  i &lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span><a href='026call.cc.html#L87'>current_instruction</a><span class="Delimiter">().</span>ingredients<span class="Delimiter">);</span>  ++i<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L34" class="LineNr"> 34 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> i = <span class="Constant">2</span><span class="Delimiter">;</span>  i &lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span><a href='026call.cc.html#L89'>current_instruction</a><span class="Delimiter">().</span>ingredients<span class="Delimiter">);</span>  ++i<span class="Delimiter">)</span> <span class="Delimiter">{</span>
 <span id="L35" class="LineNr"> 35 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>i &gt; <span class="Constant">2</span><span class="Delimiter">)</span> out &lt;&lt; <span class="Constant">' '</span><span class="Delimiter">;</span>
-<span id="L36" class="LineNr"> 36 </span>  <span class="Conceal">¦</span> out &lt;&lt; inspect<span class="Delimiter">(</span><a href='026call.cc.html#L87'>current_instruction</a><span class="Delimiter">().</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">),</span> ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">));</span>
+<span id="L36" class="LineNr"> 36 </span>  <span class="Conceal">¦</span> out &lt;&lt; inspect<span class="Delimiter">(</span><a href='026call.cc.html#L89'>current_instruction</a><span class="Delimiter">().</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">),</span> ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">));</span>
 <span id="L37" class="LineNr"> 37 </span>  <span class="Delimiter">}</span>
-<span id="L38" class="LineNr"> 38 </span>  <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span>depth<span class="Delimiter">,</span> label<span class="Delimiter">)</span> &lt;&lt; out<span class="Delimiter">.</span>str<span class="Delimiter">()</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L38" class="LineNr"> 38 </span>  <a href='003trace.cc.html#L167'>trace</a><span class="Delimiter">(</span>depth<span class="Delimiter">,</span> label<span class="Delimiter">)</span> &lt;&lt; out<span class="Delimiter">.</span>str<span class="Delimiter">()</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L39" class="LineNr"> 39 </span>  <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L40" class="LineNr"> 40 </span><span class="Delimiter">}</span>
 <span id="L41" class="LineNr"> 41 </span>
@@ -117,11 +117,11 @@ if ('onhashchange' in window) {
 <span id="L52" class="LineNr"> 52 </span><span class="Delimiter">:(before &quot;End Primitive Recipe Implementations&quot;)</span>
 <span id="L53" class="LineNr"> 53 </span><span class="Normal">case</span> STASH: <span class="Delimiter">{</span>
 <span id="L54" class="LineNr"> 54 </span>  ostringstream out<span class="Delimiter">;</span>
-<span id="L55" class="LineNr"> 55 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> i = <span class="Constant">0</span><span class="Delimiter">;</span>  i &lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span><a href='026call.cc.html#L87'>current_instruction</a><span class="Delimiter">().</span>ingredients<span class="Delimiter">);</span>  ++i<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L55" class="LineNr"> 55 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> i = <span class="Constant">0</span><span class="Delimiter">;</span>  i &lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span><a href='026call.cc.html#L89'>current_instruction</a><span class="Delimiter">().</span>ingredients<span class="Delimiter">);</span>  ++i<span class="Delimiter">)</span> <span class="Delimiter">{</span>
 <span id="L56" class="LineNr"> 56 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>i<span class="Delimiter">)</span> out &lt;&lt; <span class="Constant">' '</span><span class="Delimiter">;</span>
-<span id="L57" class="LineNr"> 57 </span>  <span class="Conceal">¦</span> out &lt;&lt; inspect<span class="Delimiter">(</span><a href='026call.cc.html#L87'>current_instruction</a><span class="Delimiter">().</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">),</span> ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">));</span>
+<span id="L57" class="LineNr"> 57 </span>  <span class="Conceal">¦</span> out &lt;&lt; inspect<span class="Delimiter">(</span><a href='026call.cc.html#L89'>current_instruction</a><span class="Delimiter">().</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">),</span> ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">));</span>
 <span id="L58" class="LineNr"> 58 </span>  <span class="Delimiter">}</span>
-<span id="L59" class="LineNr"> 59 </span>  <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">2</span><span class="Delimiter">,</span> <span class="Constant">&quot;app&quot;</span><span class="Delimiter">)</span> &lt;&lt; out<span class="Delimiter">.</span>str<span class="Delimiter">()</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L59" class="LineNr"> 59 </span>  <a href='003trace.cc.html#L167'>trace</a><span class="Delimiter">(</span><span class="Constant">2</span><span class="Delimiter">,</span> <span class="Constant">&quot;app&quot;</span><span class="Delimiter">)</span> &lt;&lt; out<span class="Delimiter">.</span>str<span class="Delimiter">()</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L60" class="LineNr"> 60 </span>  <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L61" class="LineNr"> 61 </span><span class="Delimiter">}</span>
 <span id="L62" class="LineNr"> 62 </span>
@@ -212,10 +212,10 @@ if ('onhashchange' in window) {
 <span id="L147" class="LineNr">147 </span><span class="Delimiter">:(before &quot;End Primitive Recipe Implementations&quot;)</span>
 <span id="L148" class="LineNr">148 </span><span class="Normal">case</span> _DUMP_TRACE: <span class="Delimiter">{</span>
 <span id="L149" class="LineNr">149 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>ingredients<span class="Delimiter">.</span>empty<span class="Delimiter">())</span> <span class="Delimiter">{</span>
-<span id="L150" class="LineNr">150 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L165'>DUMP</a><span class="Delimiter">(</span><span class="Constant">&quot;&quot;</span><span class="Delimiter">);</span>
+<span id="L150" class="LineNr">150 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L171'>DUMP</a><span class="Delimiter">(</span><span class="Constant">&quot;&quot;</span><span class="Delimiter">);</span>
 <span id="L151" class="LineNr">151 </span>  <span class="Delimiter">}</span>
 <span id="L152" class="LineNr">152 </span>  <span class="Normal">else</span> <span class="Delimiter">{</span>
-<span id="L153" class="LineNr">153 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L165'>DUMP</a><span class="Delimiter">(</span><a href='026call.cc.html#L87'>current_instruction</a><span class="Delimiter">().</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>name<span class="Delimiter">);</span>
+<span id="L153" class="LineNr">153 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L171'>DUMP</a><span class="Delimiter">(</span><a href='026call.cc.html#L89'>current_instruction</a><span class="Delimiter">().</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>name<span class="Delimiter">);</span>
 <span id="L154" class="LineNr">154 </span>  <span class="Delimiter">}</span>
 <span id="L155" class="LineNr">155 </span>  <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L156" class="LineNr">156 </span><span class="Delimiter">}</span>
@@ -244,145 +244,141 @@ if ('onhashchange' in window) {
 <span id="L179" class="LineNr">179 </span><span class="Delimiter">}</span>
 <span id="L180" class="LineNr">180 </span><span class="Delimiter">:(before &quot;End Primitive Recipe Implementations&quot;)</span>
 <span id="L181" class="LineNr">181 </span><span class="Normal">case</span> _SAVE_TRACE: <span class="Delimiter">{</span>
-<span id="L182" class="LineNr">182 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>Save_trace<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L183" class="LineNr">183 </span>  <span class="Conceal">¦</span> ofstream fout<span class="Delimiter">(</span><span class="Constant">&quot;last_trace&quot;</span><span class="Delimiter">);</span>
-<span id="L184" class="LineNr">184 </span>  <span class="Conceal">¦</span> fout &lt;&lt; Trace_stream<span class="Delimiter">-&gt;</span><a href='003trace.cc.html#L143'>readable_contents</a><span class="Delimiter">(</span><span class="Constant">&quot;&quot;</span><span class="Delimiter">);</span>
-<span id="L185" class="LineNr">185 </span>  <span class="Conceal">¦</span> fout<span class="Delimiter">.</span>close<span class="Delimiter">();</span>
-<span id="L186" class="LineNr">186 </span>  <span class="Delimiter">}</span>
-<span id="L187" class="LineNr">187 </span>  <span class="Identifier">break</span><span class="Delimiter">;</span>
-<span id="L188" class="LineNr">188 </span><span class="Delimiter">}</span>
-<span id="L189" class="LineNr">189 </span>
-<span id="L190" class="LineNr">190 </span><span class="SalientComment">//:: 'cheating' by using the host system</span>
-<span id="L191" class="LineNr">191 </span>
-<span id="L192" class="LineNr">192 </span><span class="Delimiter">:(before &quot;End Primitive Recipe Declarations&quot;)</span>
-<span id="L193" class="LineNr">193 </span>_PRINT<span class="Delimiter">,</span>
-<span id="L194" class="LineNr">194 </span><span class="Delimiter">:(before &quot;End Primitive Recipe Numbers&quot;)</span>
-<span id="L195" class="LineNr">195 </span><a href='001help.cc.html#L221'>put</a><span class="Delimiter">(</span>Recipe_ordinal<span class="Delimiter">,</span> <span class="Constant">&quot;$print&quot;</span><span class="Delimiter">,</span> _PRINT<span class="Delimiter">);</span>
-<span id="L196" class="LineNr">196 </span><span class="Delimiter">:(before &quot;End Primitive Recipe Checks&quot;)</span>
+<span id="L182" class="LineNr">182 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>Save_trace<span class="Delimiter">)</span> Trace_stream<span class="Delimiter">-&gt;</span><a href='003trace.cc.html#L120'>dump</a><span class="Delimiter">();</span>
+<span id="L183" class="LineNr">183 </span>  <span class="Identifier">break</span><span class="Delimiter">;</span>
+<span id="L184" class="LineNr">184 </span><span class="Delimiter">}</span>
+<span id="L185" class="LineNr">185 </span>
+<span id="L186" class="LineNr">186 </span><span class="SalientComment">//:: 'cheating' by using the host system</span>
+<span id="L187" class="LineNr">187 </span>
+<span id="L188" class="LineNr">188 </span><span class="Delimiter">:(before &quot;End Primitive Recipe Declarations&quot;)</span>
+<span id="L189" class="LineNr">189 </span>_PRINT<span class="Delimiter">,</span>
+<span id="L190" class="LineNr">190 </span><span class="Delimiter">:(before &quot;End Primitive Recipe Numbers&quot;)</span>
+<span id="L191" class="LineNr">191 </span><a href='001help.cc.html#L221'>put</a><span class="Delimiter">(</span>Recipe_ordinal<span class="Delimiter">,</span> <span class="Constant">&quot;$print&quot;</span><span class="Delimiter">,</span> _PRINT<span class="Delimiter">);</span>
+<span id="L192" class="LineNr">192 </span><span class="Delimiter">:(before &quot;End Primitive Recipe Checks&quot;)</span>
+<span id="L193" class="LineNr">193 </span><span class="Normal">case</span> _PRINT: <span class="Delimiter">{</span>
+<span id="L194" class="LineNr">194 </span>  <span class="Identifier">break</span><span class="Delimiter">;</span>
+<span id="L195" class="LineNr">195 </span><span class="Delimiter">}</span>
+<span id="L196" class="LineNr">196 </span><span class="Delimiter">:(before &quot;End Primitive Recipe Implementations&quot;)</span>
 <span id="L197" class="LineNr">197 </span><span class="Normal">case</span> _PRINT: <span class="Delimiter">{</span>
-<span id="L198" class="LineNr">198 </span>  <span class="Identifier">break</span><span class="Delimiter">;</span>
-<span id="L199" class="LineNr">199 </span><span class="Delimiter">}</span>
-<span id="L200" class="LineNr">200 </span><span class="Delimiter">:(before &quot;End Primitive Recipe Implementations&quot;)</span>
-<span id="L201" class="LineNr">201 </span><span class="Normal">case</span> _PRINT: <span class="Delimiter">{</span>
-<span id="L202" class="LineNr">202 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> i = <span class="Constant">0</span><span class="Delimiter">;</span>  i &lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>ingredients<span class="Delimiter">);</span>  ++i<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L203" class="LineNr">203 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>is_literal<span class="Delimiter">(</span><a href='026call.cc.html#L87'>current_instruction</a><span class="Delimiter">().</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">)))</span> <span class="Delimiter">{</span>
-<span id="L204" class="LineNr">204 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">9998</span><span class="Delimiter">,</span> <span class="Constant">&quot;run&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;$print: &quot;</span> &lt;&lt; <a href='026call.cc.html#L87'>current_instruction</a><span class="Delimiter">().</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">).</span>name &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
-<span id="L205" class="LineNr">205 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>!has_property<span class="Delimiter">(</span><a href='026call.cc.html#L87'>current_instruction</a><span class="Delimiter">().</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">),</span> <span class="Constant">&quot;newline&quot;</span><span class="Delimiter">))</span> <span class="Delimiter">{</span>
-<span id="L206" class="LineNr">206 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> cout &lt;&lt; <a href='026call.cc.html#L87'>current_instruction</a><span class="Delimiter">().</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">).</span>name<span class="Delimiter">;</span>
-<span id="L207" class="LineNr">207 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Delimiter">}</span>
-<span id="L208" class="LineNr">208 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Comment">// hack: '$print 10' prints '10', but '$print 10/newline' prints '\n'</span>
-<span id="L209" class="LineNr">209 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Comment">// End $print 10/newline Special-cases</span>
-<span id="L210" class="LineNr">210 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">else</span> <span class="Delimiter">{</span>
-<span id="L211" class="LineNr">211 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> cout &lt;&lt; <span class="cSpecial">'\n'</span><span class="Delimiter">;</span>
-<span id="L212" class="LineNr">212 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Delimiter">}</span>
-<span id="L213" class="LineNr">213 </span>  <span class="Conceal">¦</span> <span class="Delimiter">}</span>
-<span id="L214" class="LineNr">214 </span>  <span class="Conceal">¦</span> <span class="Comment">// End $print Special-cases</span>
-<span id="L215" class="LineNr">215 </span>  <span class="Conceal">¦</span> <span class="Normal">else</span> <span class="Delimiter">{</span>
-<span id="L216" class="LineNr">216 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> j = <span class="Constant">0</span><span class="Delimiter">;</span>  j &lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">));</span>  ++j<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L217" class="LineNr">217 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">9998</span><span class="Delimiter">,</span> <span class="Constant">&quot;run&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;$print: &quot;</span> &lt;&lt; ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">).</span>at<span class="Delimiter">(</span>j<span class="Delimiter">)</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
-<span id="L218" class="LineNr">218 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>j &gt; <span class="Constant">0</span><span class="Delimiter">)</span> cout &lt;&lt; <span class="Constant">&quot; &quot;</span><span class="Delimiter">;</span>
-<span id="L219" class="LineNr">219 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> cout &lt;&lt; no_scientific<span class="Delimiter">(</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">).</span>at<span class="Delimiter">(</span>j<span class="Delimiter">));</span>
-<span id="L220" class="LineNr">220 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Delimiter">}</span>
-<span id="L221" class="LineNr">221 </span>  <span class="Conceal">¦</span> <span class="Delimiter">}</span>
-<span id="L222" class="LineNr">222 </span>  <span class="Delimiter">}</span>
-<span id="L223" class="LineNr">223 </span>  cout<span class="Delimiter">.</span>flush<span class="Delimiter">();</span>
-<span id="L224" class="LineNr">224 </span>  <span class="Identifier">break</span><span class="Delimiter">;</span>
-<span id="L225" class="LineNr">225 </span><span class="Delimiter">}</span>
-<span id="L226" class="LineNr">226 </span>
-<span id="L227" class="LineNr">227 </span><span class="Delimiter">:(before &quot;End Primitive Recipe Declarations&quot;)</span>
-<span id="L228" class="LineNr">228 </span>_EXIT<span class="Delimiter">,</span>
-<span id="L229" class="LineNr">229 </span><span class="Delimiter">:(before &quot;End Primitive Recipe Numbers&quot;)</span>
-<span id="L230" class="LineNr">230 </span><a href='001help.cc.html#L221'>put</a><span class="Delimiter">(</span>Recipe_ordinal<span class="Delimiter">,</span> <span class="Constant">&quot;$exit&quot;</span><span class="Delimiter">,</span> _EXIT<span class="Delimiter">);</span>
-<span id="L231" class="LineNr">231 </span><span class="Delimiter">:(before &quot;End Primitive Recipe Checks&quot;)</span>
+<span id="L198" class="LineNr">198 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> i = <span class="Constant">0</span><span class="Delimiter">;</span>  i &lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>ingredients<span class="Delimiter">);</span>  ++i<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L199" class="LineNr">199 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>is_literal<span class="Delimiter">(</span><a href='026call.cc.html#L89'>current_instruction</a><span class="Delimiter">().</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">)))</span> <span class="Delimiter">{</span>
+<span id="L200" class="LineNr">200 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L167'>trace</a><span class="Delimiter">(</span><span class="Constant">9998</span><span class="Delimiter">,</span> <span class="Constant">&quot;run&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;$print: &quot;</span> &lt;&lt; <a href='026call.cc.html#L89'>current_instruction</a><span class="Delimiter">().</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">).</span>name &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
+<span id="L201" class="LineNr">201 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>!has_property<span class="Delimiter">(</span><a href='026call.cc.html#L89'>current_instruction</a><span class="Delimiter">().</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">),</span> <span class="Constant">&quot;newline&quot;</span><span class="Delimiter">))</span> <span class="Delimiter">{</span>
+<span id="L202" class="LineNr">202 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> cout &lt;&lt; <a href='026call.cc.html#L89'>current_instruction</a><span class="Delimiter">().</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">).</span>name<span class="Delimiter">;</span>
+<span id="L203" class="LineNr">203 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Delimiter">}</span>
+<span id="L204" class="LineNr">204 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Comment">// hack: '$print 10' prints '10', but '$print 10/newline' prints '\n'</span>
+<span id="L205" class="LineNr">205 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Comment">// End $print 10/newline Special-cases</span>
+<span id="L206" class="LineNr">206 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">else</span> <span class="Delimiter">{</span>
+<span id="L207" class="LineNr">207 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> cout &lt;&lt; <span class="cSpecial">'\n'</span><span class="Delimiter">;</span>
+<span id="L208" class="LineNr">208 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Delimiter">}</span>
+<span id="L209" class="LineNr">209 </span>  <span class="Conceal">¦</span> <span class="Delimiter">}</span>
+<span id="L210" class="LineNr">210 </span>  <span class="Conceal">¦</span> <span class="Comment">// End $print Special-cases</span>
+<span id="L211" class="LineNr">211 </span>  <span class="Conceal">¦</span> <span class="Normal">else</span> <span class="Delimiter">{</span>
+<span id="L212" class="LineNr">212 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> j = <span class="Constant">0</span><span class="Delimiter">;</span>  j &lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">));</span>  ++j<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L213" class="LineNr">213 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L167'>trace</a><span class="Delimiter">(</span><span class="Constant">9998</span><span class="Delimiter">,</span> <span class="Constant">&quot;run&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;$print: &quot;</span> &lt;&lt; ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">).</span>at<span class="Delimiter">(</span>j<span class="Delimiter">)</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
+<span id="L214" class="LineNr">214 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>j &gt; <span class="Constant">0</span><span class="Delimiter">)</span> cout &lt;&lt; <span class="Constant">&quot; &quot;</span><span class="Delimiter">;</span>
+<span id="L215" class="LineNr">215 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> cout &lt;&lt; no_scientific<span class="Delimiter">(</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">).</span>at<span class="Delimiter">(</span>j<span class="Delimiter">));</span>
+<span id="L216" class="LineNr">216 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Delimiter">}</span>
+<span id="L217" class="LineNr">217 </span>  <span class="Conceal">¦</span> <span class="Delimiter">}</span>
+<span id="L218" class="LineNr">218 </span>  <span class="Delimiter">}</span>
+<span id="L219" class="LineNr">219 </span>  cout<span class="Delimiter">.</span>flush<span class="Delimiter">();</span>
+<span id="L220" class="LineNr">220 </span>  <span class="Identifier">break</span><span class="Delimiter">;</span>
+<span id="L221" class="LineNr">221 </span><span class="Delimiter">}</span>
+<span id="L222" class="LineNr">222 </span>
+<span id="L223" class="LineNr">223 </span><span class="Delimiter">:(before &quot;End Primitive Recipe Declarations&quot;)</span>
+<span id="L224" class="LineNr">224 </span>_EXIT<span class="Delimiter">,</span>
+<span id="L225" class="LineNr">225 </span><span class="Delimiter">:(before &quot;End Primitive Recipe Numbers&quot;)</span>
+<span id="L226" class="LineNr">226 </span><a href='001help.cc.html#L221'>put</a><span class="Delimiter">(</span>Recipe_ordinal<span class="Delimiter">,</span> <span class="Constant">&quot;$exit&quot;</span><span class="Delimiter">,</span> _EXIT<span class="Delimiter">);</span>
+<span id="L227" class="LineNr">227 </span><span class="Delimiter">:(before &quot;End Primitive Recipe Checks&quot;)</span>
+<span id="L228" class="LineNr">228 </span><span class="Normal">case</span> _EXIT: <span class="Delimiter">{</span>
+<span id="L229" class="LineNr">229 </span>  <span class="Identifier">break</span><span class="Delimiter">;</span>
+<span id="L230" class="LineNr">230 </span><span class="Delimiter">}</span>
+<span id="L231" class="LineNr">231 </span><span class="Delimiter">:(before &quot;End Primitive Recipe Implementations&quot;)</span>
 <span id="L232" class="LineNr">232 </span><span class="Normal">case</span> _EXIT: <span class="Delimiter">{</span>
-<span id="L233" class="LineNr">233 </span>  <span class="Identifier">break</span><span class="Delimiter">;</span>
-<span id="L234" class="LineNr">234 </span><span class="Delimiter">}</span>
-<span id="L235" class="LineNr">235 </span><span class="Delimiter">:(before &quot;End Primitive Recipe Implementations&quot;)</span>
-<span id="L236" class="LineNr">236 </span><span class="Normal">case</span> _EXIT: <span class="Delimiter">{</span>
-<span id="L237" class="LineNr">237 </span>  exit<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">);</span>
-<span id="L238" class="LineNr">238 </span>  <span class="Identifier">break</span><span class="Delimiter">;</span>
-<span id="L239" class="LineNr">239 </span><span class="Delimiter">}</span>
-<span id="L240" class="LineNr">240 </span>
-<span id="L241" class="LineNr">241 </span><span class="Delimiter">:(before &quot;End Primitive Recipe Declarations&quot;)</span>
-<span id="L242" class="LineNr">242 </span>_SYSTEM<span class="Delimiter">,</span>
-<span id="L243" class="LineNr">243 </span><span class="Delimiter">:(before &quot;End Primitive Recipe Numbers&quot;)</span>
-<span id="L244" class="LineNr">244 </span><a href='001help.cc.html#L221'>put</a><span class="Delimiter">(</span>Recipe_ordinal<span class="Delimiter">,</span> <span class="Constant">&quot;$system&quot;</span><span class="Delimiter">,</span> _SYSTEM<span class="Delimiter">);</span>
-<span id="L245" class="LineNr">245 </span><span class="Delimiter">:(before &quot;End Primitive Recipe Checks&quot;)</span>
-<span id="L246" class="LineNr">246 </span><span class="Normal">case</span> _SYSTEM: <span class="Delimiter">{</span>
-<span id="L247" class="LineNr">247 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">)</span> != <span class="Constant">1</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L248" class="LineNr">248 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'$system' requires exactly one ingredient, but got '&quot;</span> &lt;&lt; to_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
-<span id="L249" class="LineNr">249 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
-<span id="L250" class="LineNr">250 </span>  <span class="Delimiter">}</span>
-<span id="L251" class="LineNr">251 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!is_literal_text<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">)))</span> <span class="Delimiter">{</span>
-<span id="L252" class="LineNr">252 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;ingredient to '$system' must be a literal text, but got '&quot;</span> &lt;&lt; to_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
-<span id="L253" class="LineNr">253 </span>  <span class="Delimiter">}</span>
-<span id="L254" class="LineNr">254 </span>  <span class="Identifier">break</span><span class="Delimiter">;</span>
-<span id="L255" class="LineNr">255 </span><span class="Delimiter">}</span>
-<span id="L256" class="LineNr">256 </span><span class="Delimiter">:(before &quot;End Primitive Recipe Implementations&quot;)</span>
-<span id="L257" class="LineNr">257 </span><span class="Normal">case</span> _SYSTEM: <span class="Delimiter">{</span>
-<span id="L258" class="LineNr">258 </span>  <span class="Normal">int</span> status = system<span class="Delimiter">(</span><a href='026call.cc.html#L87'>current_instruction</a><span class="Delimiter">().</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>name<span class="Delimiter">.</span>c_str<span class="Delimiter">());</span>
-<span id="L259" class="LineNr">259 </span>  products<span class="Delimiter">.</span>resize<span class="Delimiter">(</span><span class="Constant">1</span><span class="Delimiter">);</span>
-<span id="L260" class="LineNr">260 </span>  products<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>push_back<span class="Delimiter">(</span>status<span class="Delimiter">);</span>
-<span id="L261" class="LineNr">261 </span>  <span class="Identifier">break</span><span class="Delimiter">;</span>
-<span id="L262" class="LineNr">262 </span><span class="Delimiter">}</span>
-<span id="L263" class="LineNr">263 </span>
-<span id="L264" class="LineNr">264 </span><span class="Delimiter">:(before &quot;End Primitive Recipe Declarations&quot;)</span>
-<span id="L265" class="LineNr">265 </span>_DUMP_MEMORY<span class="Delimiter">,</span>
-<span id="L266" class="LineNr">266 </span><span class="Delimiter">:(before &quot;End Primitive Recipe Numbers&quot;)</span>
-<span id="L267" class="LineNr">267 </span><a href='001help.cc.html#L221'>put</a><span class="Delimiter">(</span>Recipe_ordinal<span class="Delimiter">,</span> <span class="Constant">&quot;$dump-memory&quot;</span><span class="Delimiter">,</span> _DUMP_MEMORY<span class="Delimiter">);</span>
-<span id="L268" class="LineNr">268 </span><span class="Delimiter">:(before &quot;End Primitive Recipe Checks&quot;)</span>
+<span id="L233" class="LineNr">233 </span>  exit<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">);</span>
+<span id="L234" class="LineNr">234 </span>  <span class="Identifier">break</span><span class="Delimiter">;</span>
+<span id="L235" class="LineNr">235 </span><span class="Delimiter">}</span>
+<span id="L236" class="LineNr">236 </span>
+<span id="L237" class="LineNr">237 </span><span class="Delimiter">:(before &quot;End Primitive Recipe Declarations&quot;)</span>
+<span id="L238" class="LineNr">238 </span>_SYSTEM<span class="Delimiter">,</span>
+<span id="L239" class="LineNr">239 </span><span class="Delimiter">:(before &quot;End Primitive Recipe Numbers&quot;)</span>
+<span id="L240" class="LineNr">240 </span><a href='001help.cc.html#L221'>put</a><span class="Delimiter">(</span>Recipe_ordinal<span class="Delimiter">,</span> <span class="Constant">&quot;$system&quot;</span><span class="Delimiter">,</span> _SYSTEM<span class="Delimiter">);</span>
+<span id="L241" class="LineNr">241 </span><span class="Delimiter">:(before &quot;End Primitive Recipe Checks&quot;)</span>
+<span id="L242" class="LineNr">242 </span><span class="Normal">case</span> _SYSTEM: <span class="Delimiter">{</span>
+<span id="L243" class="LineNr">243 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">)</span> != <span class="Constant">1</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L244" class="LineNr">244 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'$system' requires exactly one ingredient, but got '&quot;</span> &lt;&lt; to_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
+<span id="L245" class="LineNr">245 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
+<span id="L246" class="LineNr">246 </span>  <span class="Delimiter">}</span>
+<span id="L247" class="LineNr">247 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!is_literal_text<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">)))</span> <span class="Delimiter">{</span>
+<span id="L248" class="LineNr">248 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;ingredient to '$system' must be a literal text, but got '&quot;</span> &lt;&lt; to_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
+<span id="L249" class="LineNr">249 </span>  <span class="Delimiter">}</span>
+<span id="L250" class="LineNr">250 </span>  <span class="Identifier">break</span><span class="Delimiter">;</span>
+<span id="L251" class="LineNr">251 </span><span class="Delimiter">}</span>
+<span id="L252" class="LineNr">252 </span><span class="Delimiter">:(before &quot;End Primitive Recipe Implementations&quot;)</span>
+<span id="L253" class="LineNr">253 </span><span class="Normal">case</span> _SYSTEM: <span class="Delimiter">{</span>
+<span id="L254" class="LineNr">254 </span>  <span class="Normal">int</span> status = system<span class="Delimiter">(</span><a href='026call.cc.html#L89'>current_instruction</a><span class="Delimiter">().</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>name<span class="Delimiter">.</span>c_str<span class="Delimiter">());</span>
+<span id="L255" class="LineNr">255 </span>  products<span class="Delimiter">.</span>resize<span class="Delimiter">(</span><span class="Constant">1</span><span class="Delimiter">);</span>
+<span id="L256" class="LineNr">256 </span>  products<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>push_back<span class="Delimiter">(</span>status<span class="Delimiter">);</span>
+<span id="L257" class="LineNr">257 </span>  <span class="Identifier">break</span><span class="Delimiter">;</span>
+<span id="L258" class="LineNr">258 </span><span class="Delimiter">}</span>
+<span id="L259" class="LineNr">259 </span>
+<span id="L260" class="LineNr">260 </span><span class="Delimiter">:(before &quot;End Primitive Recipe Declarations&quot;)</span>
+<span id="L261" class="LineNr">261 </span>_DUMP_MEMORY<span class="Delimiter">,</span>
+<span id="L262" class="LineNr">262 </span><span class="Delimiter">:(before &quot;End Primitive Recipe Numbers&quot;)</span>
+<span id="L263" class="LineNr">263 </span><a href='001help.cc.html#L221'>put</a><span class="Delimiter">(</span>Recipe_ordinal<span class="Delimiter">,</span> <span class="Constant">&quot;$dump-memory&quot;</span><span class="Delimiter">,</span> _DUMP_MEMORY<span class="Delimiter">);</span>
+<span id="L264" class="LineNr">264 </span><span class="Delimiter">:(before &quot;End Primitive Recipe Checks&quot;)</span>
+<span id="L265" class="LineNr">265 </span><span class="Normal">case</span> _DUMP_MEMORY: <span class="Delimiter">{</span>
+<span id="L266" class="LineNr">266 </span>  <span class="Identifier">break</span><span class="Delimiter">;</span>
+<span id="L267" class="LineNr">267 </span><span class="Delimiter">}</span>
+<span id="L268" class="LineNr">268 </span><span class="Delimiter">:(before &quot;End Primitive Recipe Implementations&quot;)</span>
 <span id="L269" class="LineNr">269 </span><span class="Normal">case</span> _DUMP_MEMORY: <span class="Delimiter">{</span>
-<span id="L270" class="LineNr">270 </span>  <span class="Identifier">break</span><span class="Delimiter">;</span>
-<span id="L271" class="LineNr">271 </span><span class="Delimiter">}</span>
-<span id="L272" class="LineNr">272 </span><span class="Delimiter">:(before &quot;End Primitive Recipe Implementations&quot;)</span>
-<span id="L273" class="LineNr">273 </span><span class="Normal">case</span> _DUMP_MEMORY: <span class="Delimiter">{</span>
-<span id="L274" class="LineNr">274 </span>  dump_memory<span class="Delimiter">();</span>
-<span id="L275" class="LineNr">275 </span>  <span class="Identifier">break</span><span class="Delimiter">;</span>
-<span id="L276" class="LineNr">276 </span><span class="Delimiter">}</span>
-<span id="L277" class="LineNr">277 </span>
-<span id="L278" class="LineNr">278 </span><span class="Comment">//: In times of real extremis we need to create a whole new modality for debug</span>
-<span id="L279" class="LineNr">279 </span><span class="Comment">//: logs, independent of other changes to the screen or Trace_stream.</span>
-<span id="L280" class="LineNr">280 </span>
-<span id="L281" class="LineNr">281 </span><span class="Delimiter">:(before &quot;End Globals&quot;)</span>
-<span id="L282" class="LineNr">282 </span>ofstream LOG<span class="Delimiter">;</span>
-<span id="L283" class="LineNr">283 </span><span class="Delimiter">:(before &quot;End One-time Setup&quot;)</span>
-<span id="L284" class="LineNr">284 </span><span class="CommentedCode">//? LOG.open(&quot;log&quot;);</span>
-<span id="L285" class="LineNr">285 </span>
-<span id="L286" class="LineNr">286 </span><span class="Delimiter">:(before &quot;End Primitive Recipe Declarations&quot;)</span>
-<span id="L287" class="LineNr">287 </span>_LOG<span class="Delimiter">,</span>
-<span id="L288" class="LineNr">288 </span><span class="Delimiter">:(before &quot;End Primitive Recipe Numbers&quot;)</span>
-<span id="L289" class="LineNr">289 </span><a href='001help.cc.html#L221'>put</a><span class="Delimiter">(</span>Recipe_ordinal<span class="Delimiter">,</span> <span class="Constant">&quot;$log&quot;</span><span class="Delimiter">,</span> _LOG<span class="Delimiter">);</span>
-<span id="L290" class="LineNr">290 </span><span class="Delimiter">:(before &quot;End Primitive Recipe Checks&quot;)</span>
+<span id="L270" class="LineNr">270 </span>  dump_memory<span class="Delimiter">();</span>
+<span id="L271" class="LineNr">271 </span>  <span class="Identifier">break</span><span class="Delimiter">;</span>
+<span id="L272" class="LineNr">272 </span><span class="Delimiter">}</span>
+<span id="L273" class="LineNr">273 </span>
+<span id="L274" class="LineNr">274 </span><span class="Comment">//: In times of real extremis we need to create a whole new modality for debug</span>
+<span id="L275" class="LineNr">275 </span><span class="Comment">//: logs, independent of other changes to the screen or Trace_stream.</span>
+<span id="L276" class="LineNr">276 </span>
+<span id="L277" class="LineNr">277 </span><span class="Delimiter">:(before &quot;End Globals&quot;)</span>
+<span id="L278" class="LineNr">278 </span>ofstream LOG<span class="Delimiter">;</span>
+<span id="L279" class="LineNr">279 </span><span class="Delimiter">:(before &quot;End One-time Setup&quot;)</span>
+<span id="L280" class="LineNr">280 </span><span class="CommentedCode">//? LOG.open(&quot;log&quot;);</span>
+<span id="L281" class="LineNr">281 </span>
+<span id="L282" class="LineNr">282 </span><span class="Delimiter">:(before &quot;End Primitive Recipe Declarations&quot;)</span>
+<span id="L283" class="LineNr">283 </span>_LOG<span class="Delimiter">,</span>
+<span id="L284" class="LineNr">284 </span><span class="Delimiter">:(before &quot;End Primitive Recipe Numbers&quot;)</span>
+<span id="L285" class="LineNr">285 </span><a href='001help.cc.html#L221'>put</a><span class="Delimiter">(</span>Recipe_ordinal<span class="Delimiter">,</span> <span class="Constant">&quot;$log&quot;</span><span class="Delimiter">,</span> _LOG<span class="Delimiter">);</span>
+<span id="L286" class="LineNr">286 </span><span class="Delimiter">:(before &quot;End Primitive Recipe Checks&quot;)</span>
+<span id="L287" class="LineNr">287 </span><span class="Normal">case</span> _LOG: <span class="Delimiter">{</span>
+<span id="L288" class="LineNr">288 </span>  <span class="Identifier">break</span><span class="Delimiter">;</span>
+<span id="L289" class="LineNr">289 </span><span class="Delimiter">}</span>
+<span id="L290" class="LineNr">290 </span><span class="Delimiter">:(before &quot;End Primitive Recipe Implementations&quot;)</span>
 <span id="L291" class="LineNr">291 </span><span class="Normal">case</span> _LOG: <span class="Delimiter">{</span>
-<span id="L292" class="LineNr">292 </span>  <span class="Identifier">break</span><span class="Delimiter">;</span>
-<span id="L293" class="LineNr">293 </span><span class="Delimiter">}</span>
-<span id="L294" class="LineNr">294 </span><span class="Delimiter">:(before &quot;End Primitive Recipe Implementations&quot;)</span>
-<span id="L295" class="LineNr">295 </span><span class="Normal">case</span> _LOG: <span class="Delimiter">{</span>
-<span id="L296" class="LineNr">296 </span>  ostringstream out<span class="Delimiter">;</span>
-<span id="L297" class="LineNr">297 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> i = <span class="Constant">0</span><span class="Delimiter">;</span>  i &lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span><a href='026call.cc.html#L87'>current_instruction</a><span class="Delimiter">().</span>ingredients<span class="Delimiter">);</span>  ++i<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L298" class="LineNr">298 </span>  <span class="Conceal">¦</span> out &lt;&lt; inspect<span class="Delimiter">(</span><a href='026call.cc.html#L87'>current_instruction</a><span class="Delimiter">().</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">),</span> ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">));</span>
-<span id="L299" class="LineNr">299 </span>  <span class="Delimiter">}</span>
-<span id="L300" class="LineNr">300 </span>  LOG &lt;&lt; out<span class="Delimiter">.</span>str<span class="Delimiter">()</span> &lt;&lt; <span class="cSpecial">'\n'</span><span class="Delimiter">;</span>
-<span id="L301" class="LineNr">301 </span>  <span class="Identifier">break</span><span class="Delimiter">;</span>
-<span id="L302" class="LineNr">302 </span><span class="Delimiter">}</span>
-<span id="L303" class="LineNr">303 </span>
-<span id="L304" class="LineNr">304 </span><span class="Comment">//: set a variable from within Mu code</span>
-<span id="L305" class="LineNr">305 </span><span class="Comment">//: useful for selectively tracing or printing after some point</span>
-<span id="L306" class="LineNr">306 </span><span class="Delimiter">:(before &quot;End Globals&quot;)</span>
-<span id="L307" class="LineNr">307 </span><span class="Normal">bool</span> Foo = <span class="Constant">false</span><span class="Delimiter">;</span>
-<span id="L308" class="LineNr">308 </span><span class="Delimiter">:(before &quot;End Primitive Recipe Declarations&quot;)</span>
-<span id="L309" class="LineNr">309 </span>_FOO<span class="Delimiter">,</span>
-<span id="L310" class="LineNr">310 </span><span class="Delimiter">:(before &quot;End Primitive Recipe Numbers&quot;)</span>
-<span id="L311" class="LineNr">311 </span><a href='001help.cc.html#L221'>put</a><span class="Delimiter">(</span>Recipe_ordinal<span class="Delimiter">,</span> <span class="Constant">&quot;$foo&quot;</span><span class="Delimiter">,</span> _FOO<span class="Delimiter">);</span>
-<span id="L312" class="LineNr">312 </span><span class="Delimiter">:(before &quot;End Primitive Recipe Checks&quot;)</span>
+<span id="L292" class="LineNr">292 </span>  ostringstream out<span class="Delimiter">;</span>
+<span id="L293" class="LineNr">293 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> i = <span class="Constant">0</span><span class="Delimiter">;</span>  i &lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span><a href='026call.cc.html#L89'>current_instruction</a><span class="Delimiter">().</span>ingredients<span class="Delimiter">);</span>  ++i<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L294" class="LineNr">294 </span>  <span class="Conceal">¦</span> out &lt;&lt; inspect<span class="Delimiter">(</span><a href='026call.cc.html#L89'>current_instruction</a><span class="Delimiter">().</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">),</span> ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">));</span>
+<span id="L295" class="LineNr">295 </span>  <span class="Delimiter">}</span>
+<span id="L296" class="LineNr">296 </span>  LOG &lt;&lt; out<span class="Delimiter">.</span>str<span class="Delimiter">()</span> &lt;&lt; <span class="cSpecial">'\n'</span><span class="Delimiter">;</span>
+<span id="L297" class="LineNr">297 </span>  <span class="Identifier">break</span><span class="Delimiter">;</span>
+<span id="L298" class="LineNr">298 </span><span class="Delimiter">}</span>
+<span id="L299" class="LineNr">299 </span>
+<span id="L300" class="LineNr">300 </span><span class="Comment">//: set a variable from within Mu code</span>
+<span id="L301" class="LineNr">301 </span><span class="Comment">//: useful for selectively tracing or printing after some point</span>
+<span id="L302" class="LineNr">302 </span><span class="Delimiter">:(before &quot;End Globals&quot;)</span>
+<span id="L303" class="LineNr">303 </span><span class="Normal">bool</span> Foo = <span class="Constant">false</span><span class="Delimiter">;</span>
+<span id="L304" class="LineNr">304 </span><span class="Delimiter">:(before &quot;End Primitive Recipe Declarations&quot;)</span>
+<span id="L305" class="LineNr">305 </span>_FOO<span class="Delimiter">,</span>
+<span id="L306" class="LineNr">306 </span><span class="Delimiter">:(before &quot;End Primitive Recipe Numbers&quot;)</span>
+<span id="L307" class="LineNr">307 </span><a href='001help.cc.html#L221'>put</a><span class="Delimiter">(</span>Recipe_ordinal<span class="Delimiter">,</span> <span class="Constant">&quot;$foo&quot;</span><span class="Delimiter">,</span> _FOO<span class="Delimiter">);</span>
+<span id="L308" class="LineNr">308 </span><span class="Delimiter">:(before &quot;End Primitive Recipe Checks&quot;)</span>
+<span id="L309" class="LineNr">309 </span><span class="Normal">case</span> _FOO: <span class="Delimiter">{</span>
+<span id="L310" class="LineNr">310 </span>  <span class="Identifier">break</span><span class="Delimiter">;</span>
+<span id="L311" class="LineNr">311 </span><span class="Delimiter">}</span>
+<span id="L312" class="LineNr">312 </span><span class="Delimiter">:(before &quot;End Primitive Recipe Implementations&quot;)</span>
 <span id="L313" class="LineNr">313 </span><span class="Normal">case</span> _FOO: <span class="Delimiter">{</span>
-<span id="L314" class="LineNr">314 </span>  <span class="Identifier">break</span><span class="Delimiter">;</span>
-<span id="L315" class="LineNr">315 </span><span class="Delimiter">}</span>
-<span id="L316" class="LineNr">316 </span><span class="Delimiter">:(before &quot;End Primitive Recipe Implementations&quot;)</span>
-<span id="L317" class="LineNr">317 </span><span class="Normal">case</span> _FOO: <span class="Delimiter">{</span>
-<span id="L318" class="LineNr">318 </span>  Foo = <span class="Constant">true</span><span class="Delimiter">;</span>
-<span id="L319" class="LineNr">319 </span>  <span class="Identifier">break</span><span class="Delimiter">;</span>
-<span id="L320" class="LineNr">320 </span><span class="Delimiter">}</span>
+<span id="L314" class="LineNr">314 </span>  Foo = <span class="Constant">true</span><span class="Delimiter">;</span>
+<span id="L315" class="LineNr">315 </span>  <span class="Identifier">break</span><span class="Delimiter">;</span>
+<span id="L316" class="LineNr">316 </span><span class="Delimiter">}</span>
 </pre>
 </body>
 </html>
diff --git a/html/030container.cc.html b/html/030container.cc.html
index 0482bdaf..22f0bf40 100644
--- a/html/030container.cc.html
+++ b/html/030container.cc.html
@@ -218,14 +218,14 @@ if ('onhashchange' in window) {
 <span id="L151" class="LineNr">151 </span><span class="Normal">const</span> type_tree* base_type = type<span class="Delimiter">;</span>
 <span id="L152" class="LineNr">152 </span><span class="Comment">// Update base_type in size_of(type)</span>
 <span id="L153" class="LineNr">153 </span><span class="Normal">if</span> <span class="Delimiter">(</span>!contains_key<span class="Delimiter">(</span>Type<span class="Delimiter">,</span> base_type<span class="Delimiter">-&gt;</span>value<span class="Delimiter">))</span> <span class="Delimiter">{</span>
-<span id="L154" class="LineNr">154 </span>  <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <span class="Constant">&quot;no such type &quot;</span> &lt;&lt; base_type<span class="Delimiter">-&gt;</span>value &lt;&lt; <span class="cSpecial">'\n'</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L154" class="LineNr">154 </span>  <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <span class="Constant">&quot;no such type &quot;</span> &lt;&lt; base_type<span class="Delimiter">-&gt;</span>value &lt;&lt; <span class="cSpecial">'\n'</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L155" class="LineNr">155 </span>  <span class="Identifier">return</span> <span class="Constant">0</span><span class="Delimiter">;</span>
 <span id="L156" class="LineNr">156 </span><span class="Delimiter">}</span>
 <span id="L157" class="LineNr">157 </span>type_info t = get<span class="Delimiter">(</span>Type<span class="Delimiter">,</span> base_type<span class="Delimiter">-&gt;</span>value<span class="Delimiter">);</span>
 <span id="L158" class="LineNr">158 </span><span class="Normal">if</span> <span class="Delimiter">(</span>t<span class="Delimiter">.</span>kind == <a href='010vm.cc.html#L173'>CONTAINER</a><span class="Delimiter">)</span> <span class="Delimiter">{</span>
 <span id="L159" class="LineNr">159 </span>  <span class="Comment">// Compute size_of Container</span>
 <span id="L160" class="LineNr">160 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!contains_key<span class="Delimiter">(</span>Container_metadata<span class="Delimiter">,</span> type<span class="Delimiter">))</span> <span class="Delimiter">{</span>
-<span id="L161" class="LineNr">161 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <span class="Constant">&quot;unknown size for container type '&quot;</span> &lt;&lt; to_string<span class="Delimiter">(</span>type<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L161" class="LineNr">161 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <span class="Constant">&quot;unknown size for container type '&quot;</span> &lt;&lt; to_string<span class="Delimiter">(</span>type<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L162" class="LineNr">162 </span><span class="CommentedCode">//?     DUMP(&quot;&quot;);</span>
 <span id="L163" class="LineNr">163 </span>  <span class="Conceal">¦</span> <span class="Identifier">return</span> <span class="Constant">0</span><span class="Delimiter">;</span>
 <span id="L164" class="LineNr">164 </span>  <span class="Delimiter">}</span>
@@ -240,10 +240,10 @@ if ('onhashchange' in window) {
 <span id="L173" class="LineNr">173 </span><span class="Delimiter">:(code)</span>
 <span id="L174" class="LineNr">174 </span><span class="Normal">void</span> compute_container_sizes<span class="Delimiter">(</span><span class="Normal">const</span> <a href='010vm.cc.html#L14'>recipe_ordinal</a> r<span class="Delimiter">)</span> <span class="Delimiter">{</span>
 <span id="L175" class="LineNr">175 </span>  recipe&amp; caller = get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">);</span>
-<span id="L176" class="LineNr">176 </span>  <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">9992</span><span class="Delimiter">,</span> <span class="Constant">&quot;transform&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;--- compute container sizes for &quot;</span> &lt;&lt; caller<span class="Delimiter">.</span>name &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L176" class="LineNr">176 </span>  <a href='003trace.cc.html#L167'>trace</a><span class="Delimiter">(</span><span class="Constant">9992</span><span class="Delimiter">,</span> <span class="Constant">&quot;transform&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;--- compute container sizes for &quot;</span> &lt;&lt; caller<span class="Delimiter">.</span>name &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L177" class="LineNr">177 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> i = <span class="Constant">0</span><span class="Delimiter">;</span>  i &lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>caller<span class="Delimiter">.</span>steps<span class="Delimiter">);</span>  ++i<span class="Delimiter">)</span> <span class="Delimiter">{</span>
 <span id="L178" class="LineNr">178 </span>  <span class="Conceal">¦</span> instruction&amp; inst = caller<span class="Delimiter">.</span>steps<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">);</span>
-<span id="L179" class="LineNr">179 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">9993</span><span class="Delimiter">,</span> <span class="Constant">&quot;transform&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;- compute container sizes for &quot;</span> &lt;&lt; <a href='028call_return.cc.html#L163'>to_string</a><span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L179" class="LineNr">179 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L167'>trace</a><span class="Delimiter">(</span><span class="Constant">9993</span><span class="Delimiter">,</span> <span class="Constant">&quot;transform&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;- compute container sizes for &quot;</span> &lt;&lt; <a href='028call_return.cc.html#L163'>to_string</a><span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L180" class="LineNr">180 </span>  <span class="Conceal">¦</span> <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> i = <span class="Constant">0</span><span class="Delimiter">;</span>  i &lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">);</span>  ++i<span class="Delimiter">)</span>
 <span id="L181" class="LineNr">181 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> compute_container_sizes<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">),</span> <span class="Constant">&quot; in '&quot;</span>+to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span>+<span class="Constant">&quot;'&quot;</span><span class="Delimiter">);</span>
 <span id="L182" class="LineNr">182 </span>  <span class="Conceal">¦</span> <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> i = <span class="Constant">0</span><span class="Delimiter">;</span>  i &lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>products<span class="Delimiter">);</span>  ++i<span class="Delimiter">)</span>
@@ -264,13 +264,13 @@ if ('onhashchange' in window) {
 <span id="L197" class="LineNr">197 </span>
 <span id="L198" class="LineNr">198 </span><span class="Normal">void</span> compute_container_sizes<span class="Delimiter">(</span><span class="Normal">const</span> type_tree* type<span class="Delimiter">,</span> set&lt;type_tree&gt;&amp; pending_metadata<span class="Delimiter">,</span> <span class="Normal">const</span> string&amp; location_for_error_messages<span class="Delimiter">)</span> <span class="Delimiter">{</span>
 <span id="L199" class="LineNr">199 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!type<span class="Delimiter">)</span> <span class="Identifier">return</span><span class="Delimiter">;</span>
-<span id="L200" class="LineNr">200 </span>  <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">9993</span><span class="Delimiter">,</span> <span class="Constant">&quot;transform&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;compute container sizes for &quot;</span> &lt;&lt; <a href='028call_return.cc.html#L163'>to_string</a><span class="Delimiter">(</span>type<span class="Delimiter">)</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L200" class="LineNr">200 </span>  <a href='003trace.cc.html#L167'>trace</a><span class="Delimiter">(</span><span class="Constant">9993</span><span class="Delimiter">,</span> <span class="Constant">&quot;transform&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;compute container sizes for &quot;</span> &lt;&lt; <a href='028call_return.cc.html#L163'>to_string</a><span class="Delimiter">(</span>type<span class="Delimiter">)</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L201" class="LineNr">201 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>contains_key<span class="Delimiter">(</span>Container_metadata<span class="Delimiter">,</span> type<span class="Delimiter">))</span> <span class="Identifier">return</span><span class="Delimiter">;</span>
 <span id="L202" class="LineNr">202 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>contains_key<span class="Delimiter">(</span>pending_metadata<span class="Delimiter">,</span> *type<span class="Delimiter">))</span> <span class="Identifier">return</span><span class="Delimiter">;</span>
 <span id="L203" class="LineNr">203 </span>  pending_metadata<span class="Delimiter">.</span>insert<span class="Delimiter">(</span>*type<span class="Delimiter">);</span>
 <span id="L204" class="LineNr">204 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!type<span class="Delimiter">-&gt;</span>atom<span class="Delimiter">)</span> <span class="Delimiter">{</span>
 <span id="L205" class="LineNr">205 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>!type<span class="Delimiter">-&gt;</span>left<span class="Delimiter">-&gt;</span>atom<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L206" class="LineNr">206 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <span class="Constant">&quot;invalid type &quot;</span> &lt;&lt; <a href='028call_return.cc.html#L163'>to_string</a><span class="Delimiter">(</span>type<span class="Delimiter">)</span> &lt;&lt; location_for_error_messages &lt;&lt; <span class="cSpecial">'\n'</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L206" class="LineNr">206 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <span class="Constant">&quot;invalid type &quot;</span> &lt;&lt; <a href='028call_return.cc.html#L163'>to_string</a><span class="Delimiter">(</span>type<span class="Delimiter">)</span> &lt;&lt; location_for_error_messages &lt;&lt; <span class="cSpecial">'\n'</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L207" class="LineNr">207 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Identifier">return</span><span class="Delimiter">;</span>
 <span id="L208" class="LineNr">208 </span>  <span class="Conceal">¦</span> <span class="Delimiter">}</span>
 <span id="L209" class="LineNr">209 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>type<span class="Delimiter">-&gt;</span>left<span class="Delimiter">-&gt;</span>name == <span class="Constant">&quot;address&quot;</span><span class="Delimiter">)</span>
@@ -315,7 +315,7 @@ if ('onhashchange' in window) {
 <span id="L248" class="LineNr">248 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span><a href='030container.cc.html#L263'>matches</a><span class="Delimiter">(</span>all<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">).</span>first<span class="Delimiter">,</span> key<span class="Delimiter">))</span>
 <span id="L249" class="LineNr">249 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Identifier">return</span> all<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">).</span>second<span class="Delimiter">;</span>
 <span id="L250" class="LineNr">250 </span>  <span class="Delimiter">}</span>
-<span id="L251" class="LineNr">251 </span>  <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <span class="Constant">&quot;unknown size for type '&quot;</span> &lt;&lt; to_string<span class="Delimiter">(</span>key<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L251" class="LineNr">251 </span>  <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <span class="Constant">&quot;unknown size for type '&quot;</span> &lt;&lt; to_string<span class="Delimiter">(</span>key<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L252" class="LineNr">252 </span>  exit<span class="Delimiter">(</span><span class="Constant">1</span><span class="Delimiter">);</span>
 <span id="L253" class="LineNr">253 </span><span class="Delimiter">}</span>
 <span id="L254" class="LineNr">254 </span>
@@ -427,24 +427,24 @@ if ('onhashchange' in window) {
 <span id="L360" class="LineNr">360 </span><span class="Delimiter">:(before &quot;End Primitive Recipe Checks&quot;)</span>
 <span id="L361" class="LineNr">361 </span><span class="Normal">case</span> GET: <span class="Delimiter">{</span>
 <span id="L362" class="LineNr">362 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">)</span> != <span class="Constant">2</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L363" class="LineNr">363 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'get' expects exactly 2 ingredients in '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L363" class="LineNr">363 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'get' expects exactly 2 ingredients in '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L364" class="LineNr">364 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L365" class="LineNr">365 </span>  <span class="Delimiter">}</span>
 <span id="L366" class="LineNr">366 </span>  reagent<span class="Comment">/*</span><span class="Comment">copy</span><span class="Comment">*/</span> base = inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">);</span>  <span class="Comment">// new copy for every invocation</span>
 <span id="L367" class="LineNr">367 </span>  <span class="Comment">// Update GET base in Check</span>
 <span id="L368" class="LineNr">368 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!base<span class="Delimiter">.</span>type<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L369" class="LineNr">369 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;first ingredient of 'get' should be a container, but got '&quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>original_string &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L369" class="LineNr">369 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;first ingredient of 'get' should be a container, but got '&quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>original_string &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L370" class="LineNr">370 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L371" class="LineNr">371 </span>  <span class="Delimiter">}</span>
 <span id="L372" class="LineNr">372 </span>  <span class="Normal">const</span> type_tree* base_type = base<span class="Delimiter">.</span>type<span class="Delimiter">;</span>
 <span id="L373" class="LineNr">373 </span>  <span class="Comment">// Update GET base_type in Check</span>
 <span id="L374" class="LineNr">374 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!base_type<span class="Delimiter">-&gt;</span>atom || base_type<span class="Delimiter">-&gt;</span>value == <span class="Constant">0</span> || !contains_key<span class="Delimiter">(</span>Type<span class="Delimiter">,</span> base_type<span class="Delimiter">-&gt;</span>value<span class="Delimiter">)</span> || get<span class="Delimiter">(</span>Type<span class="Delimiter">,</span> base_type<span class="Delimiter">-&gt;</span>value<span class="Delimiter">).</span>kind != <a href='010vm.cc.html#L173'>CONTAINER</a><span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L375" class="LineNr">375 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;first ingredient of 'get' should be a container, but got '&quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>original_string &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L375" class="LineNr">375 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;first ingredient of 'get' should be a container, but got '&quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>original_string &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L376" class="LineNr">376 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L377" class="LineNr">377 </span>  <span class="Delimiter">}</span>
 <span id="L378" class="LineNr">378 </span>  <span class="Normal">const</span> reagent&amp; offset = inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">1</span><span class="Delimiter">);</span>
 <span id="L379" class="LineNr">379 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!is_literal<span class="Delimiter">(</span>offset<span class="Delimiter">)</span> || !is_mu_scalar<span class="Delimiter">(</span>offset<span class="Delimiter">))</span> <span class="Delimiter">{</span>
-<span id="L380" class="LineNr">380 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;second ingredient of 'get' should have type 'offset', but got '&quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">1</span><span class="Delimiter">).</span>original_string &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L380" class="LineNr">380 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;second ingredient of 'get' should have type 'offset', but got '&quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">1</span><span class="Delimiter">).</span>original_string &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L381" class="LineNr">381 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L382" class="LineNr">382 </span>  <span class="Delimiter">}</span>
 <span id="L383" class="LineNr">383 </span>  <span class="Normal">int</span> offset_value = <span class="Constant">0</span><span class="Delimiter">;</span>
@@ -453,7 +453,7 @@ if ('onhashchange' in window) {
 <span id="L386" class="LineNr">386 </span>  <span class="Delimiter">}</span>
 <span id="L387" class="LineNr">387 </span>  <span class="Comment">// End update GET offset_value in Check</span>
 <span id="L388" class="LineNr">388 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>offset_value &lt; <span class="Constant">0</span> || offset_value &gt;= <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Type<span class="Delimiter">,</span> base_type<span class="Delimiter">-&gt;</span>value<span class="Delimiter">).</span>elements<span class="Delimiter">))</span> <span class="Delimiter">{</span>
-<span id="L389" class="LineNr">389 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;invalid offset '&quot;</span> &lt;&lt; offset_value &lt;&lt; <span class="Constant">&quot;' for '&quot;</span> &lt;&lt; get<span class="Delimiter">(</span>Type<span class="Delimiter">,</span> base_type<span class="Delimiter">-&gt;</span>value<span class="Delimiter">).</span>name &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L389" class="LineNr">389 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;invalid offset '&quot;</span> &lt;&lt; offset_value &lt;&lt; <span class="Constant">&quot;' for '&quot;</span> &lt;&lt; get<span class="Delimiter">(</span>Type<span class="Delimiter">,</span> base_type<span class="Delimiter">-&gt;</span>value<span class="Delimiter">).</span>name &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L390" class="LineNr">390 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L391" class="LineNr">391 </span>  <span class="Delimiter">}</span>
 <span id="L392" class="LineNr">392 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>empty<span class="Delimiter">())</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
@@ -462,18 +462,18 @@ if ('onhashchange' in window) {
 <span id="L395" class="LineNr">395 </span>  <span class="Comment">//: use base.type rather than base_type because later layers will introduce compound types</span>
 <span id="L396" class="LineNr">396 </span>  <span class="Normal">const</span> reagent<span class="Comment">/*</span><span class="Comment">copy</span><span class="Comment">*/</span> element = <a href='030container.cc.html#L429'>element_type</a><span class="Delimiter">(</span>base<span class="Delimiter">.</span>type<span class="Delimiter">,</span> offset_value<span class="Delimiter">);</span>
 <span id="L397" class="LineNr">397 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!types_coercible<span class="Delimiter">(</span>product<span class="Delimiter">,</span> element<span class="Delimiter">))</span> <span class="Delimiter">{</span>
-<span id="L398" class="LineNr">398 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'get &quot;</span> &lt;&lt; base<span class="Delimiter">.</span>original_string &lt;&lt; <span class="Constant">&quot;, &quot;</span> &lt;&lt; offset<span class="Delimiter">.</span>original_string &lt;&lt; <span class="Constant">&quot;' should write to &quot;</span> &lt;&lt; names_to_string_without_quotes<span class="Delimiter">(</span>element<span class="Delimiter">.</span>type<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot; but '&quot;</span> &lt;&lt; product<span class="Delimiter">.</span>name &lt;&lt; <span class="Constant">&quot;' has type &quot;</span> &lt;&lt; names_to_string_without_quotes<span class="Delimiter">(</span>product<span class="Delimiter">.</span>type<span class="Delimiter">)</span> &lt;&lt; <span class="cSpecial">'\n'</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L398" class="LineNr">398 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'get &quot;</span> &lt;&lt; base<span class="Delimiter">.</span>original_string &lt;&lt; <span class="Constant">&quot;, &quot;</span> &lt;&lt; offset<span class="Delimiter">.</span>original_string &lt;&lt; <span class="Constant">&quot;' should write to &quot;</span> &lt;&lt; names_to_string_without_quotes<span class="Delimiter">(</span>element<span class="Delimiter">.</span>type<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot; but '&quot;</span> &lt;&lt; product<span class="Delimiter">.</span>name &lt;&lt; <span class="Constant">&quot;' has type &quot;</span> &lt;&lt; names_to_string_without_quotes<span class="Delimiter">(</span>product<span class="Delimiter">.</span>type<span class="Delimiter">)</span> &lt;&lt; <span class="cSpecial">'\n'</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L399" class="LineNr">399 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L400" class="LineNr">400 </span>  <span class="Delimiter">}</span>
 <span id="L401" class="LineNr">401 </span>  <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L402" class="LineNr">402 </span><span class="Delimiter">}</span>
 <span id="L403" class="LineNr">403 </span><span class="Delimiter">:(before &quot;End Primitive Recipe Implementations&quot;)</span>
 <span id="L404" class="LineNr">404 </span><span class="Normal">case</span> GET: <span class="Delimiter">{</span>
-<span id="L405" class="LineNr">405 </span>  reagent<span class="Comment">/*</span><span class="Comment">copy</span><span class="Comment">*/</span> base = <a href='026call.cc.html#L87'>current_instruction</a><span class="Delimiter">().</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">);</span>
+<span id="L405" class="LineNr">405 </span>  reagent<span class="Comment">/*</span><span class="Comment">copy</span><span class="Comment">*/</span> base = <a href='026call.cc.html#L89'>current_instruction</a><span class="Delimiter">().</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">);</span>
 <span id="L406" class="LineNr">406 </span>  <span class="Comment">// Update GET base in Run</span>
 <span id="L407" class="LineNr">407 </span>  <span class="Normal">int</span> base_address = base<span class="Delimiter">.</span>value<span class="Delimiter">;</span>
 <span id="L408" class="LineNr">408 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>base_address == <span class="Constant">0</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L409" class="LineNr">409 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span><a href='026call.cc.html#L85'>current_recipe_name</a><span class="Delimiter">())</span> &lt;&lt; <span class="Constant">&quot;tried to access location 0 in '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>current_instruction<span class="Delimiter">())</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L409" class="LineNr">409 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span><a href='026call.cc.html#L87'>current_recipe_name</a><span class="Delimiter">())</span> &lt;&lt; <span class="Constant">&quot;tried to access location 0 in '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>current_instruction<span class="Delimiter">())</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L410" class="LineNr">410 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L411" class="LineNr">411 </span>  <span class="Delimiter">}</span>
 <span id="L412" class="LineNr">412 </span>  <span class="Normal">const</span> type_tree* base_type = base<span class="Delimiter">.</span>type<span class="Delimiter">;</span>
@@ -482,11 +482,11 @@ if ('onhashchange' in window) {
 <span id="L415" class="LineNr">415 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>offset &lt; <span class="Constant">0</span> || offset &gt;= <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Type<span class="Delimiter">,</span> base_type<span class="Delimiter">-&gt;</span>value<span class="Delimiter">).</span>elements<span class="Delimiter">))</span> <span class="Identifier">break</span><span class="Delimiter">;</span>  <span class="Comment">// copied from Check above</span>
 <span id="L416" class="LineNr">416 </span>  assert<span class="Delimiter">(</span>base<span class="Delimiter">.</span>metadata<span class="Delimiter">.</span>size<span class="Delimiter">);</span>
 <span id="L417" class="LineNr">417 </span>  <span class="Normal">int</span> src = base_address + base<span class="Delimiter">.</span>metadata<span class="Delimiter">.</span>offset<span class="Delimiter">.</span>at<span class="Delimiter">(</span>offset<span class="Delimiter">);</span>
-<span id="L418" class="LineNr">418 </span>  <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">9998</span><span class="Delimiter">,</span> <span class="Constant">&quot;run&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;address to copy is &quot;</span> &lt;&lt; src &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L418" class="LineNr">418 </span>  <a href='003trace.cc.html#L167'>trace</a><span class="Delimiter">(</span><span class="Constant">9998</span><span class="Delimiter">,</span> <span class="Constant">&quot;run&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;address to copy is &quot;</span> &lt;&lt; src &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L419" class="LineNr">419 </span>  <span class="Comment">//: use base.type rather than base_type because later layers will introduce compound types</span>
 <span id="L420" class="LineNr">420 </span>  reagent<span class="Comment">/*</span><span class="Comment">copy</span><span class="Comment">*/</span> element = <a href='030container.cc.html#L429'>element_type</a><span class="Delimiter">(</span>base<span class="Delimiter">.</span>type<span class="Delimiter">,</span> offset<span class="Delimiter">);</span>
 <span id="L421" class="LineNr">421 </span>  element<span class="Delimiter">.</span><a href='010vm.cc.html#L65'>set_value</a><span class="Delimiter">(</span>src<span class="Delimiter">);</span>
-<span id="L422" class="LineNr">422 </span>  <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">9998</span><span class="Delimiter">,</span> <span class="Constant">&quot;run&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;its type is &quot;</span> &lt;&lt; names_to_string<span class="Delimiter">(</span>element<span class="Delimiter">.</span>type<span class="Delimiter">)</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L422" class="LineNr">422 </span>  <a href='003trace.cc.html#L167'>trace</a><span class="Delimiter">(</span><span class="Constant">9998</span><span class="Delimiter">,</span> <span class="Constant">&quot;run&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;its type is &quot;</span> &lt;&lt; names_to_string<span class="Delimiter">(</span>element<span class="Delimiter">.</span>type<span class="Delimiter">)</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L423" class="LineNr">423 </span>  <span class="Comment">// Read element</span>
 <span id="L424" class="LineNr">424 </span>  products<span class="Delimiter">.</span>push_back<span class="Delimiter">(</span>read_memory<span class="Delimiter">(</span>element<span class="Delimiter">));</span>
 <span id="L425" class="LineNr">425 </span>  <span class="Identifier">break</span><span class="Delimiter">;</span>
@@ -575,25 +575,25 @@ if ('onhashchange' in window) {
 <span id="L508" class="LineNr">508 </span><span class="Delimiter">:(before &quot;End Primitive Recipe Checks&quot;)</span>
 <span id="L509" class="LineNr">509 </span><span class="Normal">case</span> PUT: <span class="Delimiter">{</span>
 <span id="L510" class="LineNr">510 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">)</span> != <span class="Constant">3</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L511" class="LineNr">511 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'put' expects exactly 3 ingredients in '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L511" class="LineNr">511 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'put' expects exactly 3 ingredients in '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L512" class="LineNr">512 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L513" class="LineNr">513 </span>  <span class="Delimiter">}</span>
 <span id="L514" class="LineNr">514 </span>  reagent<span class="Comment">/*</span><span class="Comment">copy</span><span class="Comment">*/</span> base = inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">);</span>
 <span id="L515" class="LineNr">515 </span>  <span class="Comment">// Update PUT base in Check</span>
 <span id="L516" class="LineNr">516 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!base<span class="Delimiter">.</span>type<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L517" class="LineNr">517 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;first ingredient of 'put' should be a container, but got '&quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>original_string &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L517" class="LineNr">517 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;first ingredient of 'put' should be a container, but got '&quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>original_string &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L518" class="LineNr">518 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L519" class="LineNr">519 </span>  <span class="Delimiter">}</span>
 <span id="L520" class="LineNr">520 </span>  <span class="Normal">const</span> type_tree* base_type = base<span class="Delimiter">.</span>type<span class="Delimiter">;</span>
 <span id="L521" class="LineNr">521 </span>  <span class="Comment">// Update PUT base_type in Check</span>
 <span id="L522" class="LineNr">522 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!base_type<span class="Delimiter">-&gt;</span>atom || base_type<span class="Delimiter">-&gt;</span>value == <span class="Constant">0</span> || !contains_key<span class="Delimiter">(</span>Type<span class="Delimiter">,</span> base_type<span class="Delimiter">-&gt;</span>value<span class="Delimiter">)</span> || get<span class="Delimiter">(</span>Type<span class="Delimiter">,</span> base_type<span class="Delimiter">-&gt;</span>value<span class="Delimiter">).</span>kind != <a href='010vm.cc.html#L173'>CONTAINER</a><span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L523" class="LineNr">523 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;first ingredient of 'put' should be a container, but got '&quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>original_string &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L523" class="LineNr">523 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;first ingredient of 'put' should be a container, but got '&quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>original_string &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L524" class="LineNr">524 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L525" class="LineNr">525 </span>  <span class="Delimiter">}</span>
 <span id="L526" class="LineNr">526 </span>  reagent<span class="Comment">/*</span><span class="Comment">copy</span><span class="Comment">*/</span> offset = inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">1</span><span class="Delimiter">);</span>
 <span id="L527" class="LineNr">527 </span>  <span class="Comment">// Update PUT offset in Check</span>
 <span id="L528" class="LineNr">528 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!is_literal<span class="Delimiter">(</span>offset<span class="Delimiter">)</span> || !is_mu_scalar<span class="Delimiter">(</span>offset<span class="Delimiter">))</span> <span class="Delimiter">{</span>
-<span id="L529" class="LineNr">529 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;second ingredient of 'put' should have type 'offset', but got '&quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">1</span><span class="Delimiter">).</span>original_string &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L529" class="LineNr">529 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;second ingredient of 'put' should have type 'offset', but got '&quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">1</span><span class="Delimiter">).</span>original_string &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L530" class="LineNr">530 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L531" class="LineNr">531 </span>  <span class="Delimiter">}</span>
 <span id="L532" class="LineNr">532 </span>  <span class="Normal">int</span> offset_value = <span class="Constant">0</span><span class="Delimiter">;</span>
@@ -601,7 +601,7 @@ if ('onhashchange' in window) {
 <span id="L534" class="LineNr">534 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span><a href='002test.cc.html#L85'>is_integer</a><span class="Delimiter">(</span>offset<span class="Delimiter">.</span>name<span class="Delimiter">))</span> <span class="Delimiter">{</span>
 <span id="L535" class="LineNr">535 </span>  <span class="Conceal">¦</span> offset_value = <a href='002test.cc.html#L91'>to_integer</a><span class="Delimiter">(</span>offset<span class="Delimiter">.</span>name<span class="Delimiter">);</span>
 <span id="L536" class="LineNr">536 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>offset_value &lt; <span class="Constant">0</span> || offset_value &gt;= <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Type<span class="Delimiter">,</span> base_type<span class="Delimiter">-&gt;</span>value<span class="Delimiter">).</span>elements<span class="Delimiter">))</span> <span class="Delimiter">{</span>
-<span id="L537" class="LineNr">537 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;invalid offset '&quot;</span> &lt;&lt; offset_value &lt;&lt; <span class="Constant">&quot;' for '&quot;</span> &lt;&lt; get<span class="Delimiter">(</span>Type<span class="Delimiter">,</span> base_type<span class="Delimiter">-&gt;</span>value<span class="Delimiter">).</span>name &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L537" class="LineNr">537 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;invalid offset '&quot;</span> &lt;&lt; offset_value &lt;&lt; <span class="Constant">&quot;' for '&quot;</span> &lt;&lt; get<span class="Delimiter">(</span>Type<span class="Delimiter">,</span> base_type<span class="Delimiter">-&gt;</span>value<span class="Delimiter">).</span>name &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L538" class="LineNr">538 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L539" class="LineNr">539 </span>  <span class="Conceal">¦</span> <span class="Delimiter">}</span>
 <span id="L540" class="LineNr">540 </span>  <span class="Delimiter">}</span>
@@ -612,12 +612,12 @@ if ('onhashchange' in window) {
 <span id="L545" class="LineNr">545 </span>  <span class="Comment">//: use base.type rather than base_type because later layers will introduce compound types</span>
 <span id="L546" class="LineNr">546 </span>  <span class="Normal">const</span> reagent&amp; element = <a href='030container.cc.html#L429'>element_type</a><span class="Delimiter">(</span>base<span class="Delimiter">.</span>type<span class="Delimiter">,</span> offset_value<span class="Delimiter">);</span>
 <span id="L547" class="LineNr">547 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!types_coercible<span class="Delimiter">(</span>element<span class="Delimiter">,</span> value<span class="Delimiter">))</span> <span class="Delimiter">{</span>
-<span id="L548" class="LineNr">548 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'put &quot;</span> &lt;&lt; base<span class="Delimiter">.</span>original_string &lt;&lt; <span class="Constant">&quot;, &quot;</span> &lt;&lt; offset<span class="Delimiter">.</span>original_string &lt;&lt; <span class="Constant">&quot;' should write to &quot;</span> &lt;&lt; names_to_string_without_quotes<span class="Delimiter">(</span>element<span class="Delimiter">.</span>type<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot; but '&quot;</span> &lt;&lt; value<span class="Delimiter">.</span>name &lt;&lt; <span class="Constant">&quot;' has type &quot;</span> &lt;&lt; names_to_string_without_quotes<span class="Delimiter">(</span>value<span class="Delimiter">.</span>type<span class="Delimiter">)</span> &lt;&lt; <span class="cSpecial">'\n'</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L548" class="LineNr">548 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'put &quot;</span> &lt;&lt; base<span class="Delimiter">.</span>original_string &lt;&lt; <span class="Constant">&quot;, &quot;</span> &lt;&lt; offset<span class="Delimiter">.</span>original_string &lt;&lt; <span class="Constant">&quot;' should write to &quot;</span> &lt;&lt; names_to_string_without_quotes<span class="Delimiter">(</span>element<span class="Delimiter">.</span>type<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot; but '&quot;</span> &lt;&lt; value<span class="Delimiter">.</span>name &lt;&lt; <span class="Constant">&quot;' has type &quot;</span> &lt;&lt; names_to_string_without_quotes<span class="Delimiter">(</span>value<span class="Delimiter">.</span>type<span class="Delimiter">)</span> &lt;&lt; <span class="cSpecial">'\n'</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L549" class="LineNr">549 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L550" class="LineNr">550 </span>  <span class="Delimiter">}</span>
 <span id="L551" class="LineNr">551 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>empty<span class="Delimiter">())</span> <span class="Identifier">break</span><span class="Delimiter">;</span>  <span class="Comment">// no more checks necessary</span>
 <span id="L552" class="LineNr">552 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>name != inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>name<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L553" class="LineNr">553 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;product of 'put' must be first ingredient '&quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>original_string &lt;&lt; <span class="Constant">&quot;', but got '&quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>original_string &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L553" class="LineNr">553 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;product of 'put' must be first ingredient '&quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>original_string &lt;&lt; <span class="Constant">&quot;', but got '&quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>original_string &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L554" class="LineNr">554 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L555" class="LineNr">555 </span>  <span class="Delimiter">}</span>
 <span id="L556" class="LineNr">556 </span>  <span class="Comment">// End PUT Product Checks</span>
@@ -625,11 +625,11 @@ if ('onhashchange' in window) {
 <span id="L558" class="LineNr">558 </span><span class="Delimiter">}</span>
 <span id="L559" class="LineNr">559 </span><span class="Delimiter">:(before &quot;End Primitive Recipe Implementations&quot;)</span>
 <span id="L560" class="LineNr">560 </span><span class="Normal">case</span> PUT: <span class="Delimiter">{</span>
-<span id="L561" class="LineNr">561 </span>  reagent<span class="Comment">/*</span><span class="Comment">copy</span><span class="Comment">*/</span> base = <a href='026call.cc.html#L87'>current_instruction</a><span class="Delimiter">().</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">);</span>
+<span id="L561" class="LineNr">561 </span>  reagent<span class="Comment">/*</span><span class="Comment">copy</span><span class="Comment">*/</span> base = <a href='026call.cc.html#L89'>current_instruction</a><span class="Delimiter">().</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">);</span>
 <span id="L562" class="LineNr">562 </span>  <span class="Comment">// Update PUT base in Run</span>
 <span id="L563" class="LineNr">563 </span>  <span class="Normal">int</span> base_address = base<span class="Delimiter">.</span>value<span class="Delimiter">;</span>
 <span id="L564" class="LineNr">564 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>base_address == <span class="Constant">0</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L565" class="LineNr">565 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span><a href='026call.cc.html#L85'>current_recipe_name</a><span class="Delimiter">())</span> &lt;&lt; <span class="Constant">&quot;tried to access location 0 in '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>current_instruction<span class="Delimiter">())</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L565" class="LineNr">565 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span><a href='026call.cc.html#L87'>current_recipe_name</a><span class="Delimiter">())</span> &lt;&lt; <span class="Constant">&quot;tried to access location 0 in '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>current_instruction<span class="Delimiter">())</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L566" class="LineNr">566 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L567" class="LineNr">567 </span>  <span class="Delimiter">}</span>
 <span id="L568" class="LineNr">568 </span>  <span class="Normal">const</span> type_tree* base_type = base<span class="Delimiter">.</span>type<span class="Delimiter">;</span>
@@ -637,13 +637,13 @@ if ('onhashchange' in window) {
 <span id="L570" class="LineNr">570 </span>  <span class="Normal">int</span> offset = ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">1</span><span class="Delimiter">).</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">);</span>
 <span id="L571" class="LineNr">571 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>offset &lt; <span class="Constant">0</span> || offset &gt;= <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Type<span class="Delimiter">,</span> base_type<span class="Delimiter">-&gt;</span>value<span class="Delimiter">).</span>elements<span class="Delimiter">))</span> <span class="Identifier">break</span><span class="Delimiter">;</span>  <span class="Comment">// copied from Check above</span>
 <span id="L572" class="LineNr">572 </span>  <span class="Normal">int</span> <a href='043space.cc.html#L82'>address</a> = base_address + base<span class="Delimiter">.</span>metadata<span class="Delimiter">.</span>offset<span class="Delimiter">.</span>at<span class="Delimiter">(</span>offset<span class="Delimiter">);</span>
-<span id="L573" class="LineNr">573 </span>  <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">9998</span><span class="Delimiter">,</span> <span class="Constant">&quot;run&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;address to copy to is &quot;</span> &lt;&lt; <a href='043space.cc.html#L82'>address</a> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L573" class="LineNr">573 </span>  <a href='003trace.cc.html#L167'>trace</a><span class="Delimiter">(</span><span class="Constant">9998</span><span class="Delimiter">,</span> <span class="Constant">&quot;run&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;address to copy to is &quot;</span> &lt;&lt; <a href='043space.cc.html#L82'>address</a> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L574" class="LineNr">574 </span>  <span class="Comment">// optimization: directly write the element rather than updating 'product'</span>
 <span id="L575" class="LineNr">575 </span>  <span class="Comment">// and writing the entire container</span>
 <span id="L576" class="LineNr">576 </span>  <span class="Comment">// Write Memory in PUT in Run</span>
 <span id="L577" class="LineNr">577 </span>  write_products = <span class="Constant">false</span><span class="Delimiter">;</span>
 <span id="L578" class="LineNr">578 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> i = <span class="Constant">0</span><span class="Delimiter">;</span>  i &lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">2</span><span class="Delimiter">));</span>  ++i<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L579" class="LineNr">579 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">&quot;mem&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;storing &quot;</span> &lt;&lt; no_scientific<span class="Delimiter">(</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">2</span><span class="Delimiter">).</span>at<span class="Delimiter">(</span>i<span class="Delimiter">))</span> &lt;&lt; <span class="Constant">&quot; in location &quot;</span> &lt;&lt; address+i &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L579" class="LineNr">579 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L167'>trace</a><span class="Delimiter">(</span><span class="Constant">&quot;mem&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;storing &quot;</span> &lt;&lt; no_scientific<span class="Delimiter">(</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">2</span><span class="Delimiter">).</span>at<span class="Delimiter">(</span>i<span class="Delimiter">))</span> &lt;&lt; <span class="Constant">&quot; in location &quot;</span> &lt;&lt; address+i &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L580" class="LineNr">580 </span>  <span class="Conceal">¦</span> <a href='001help.cc.html#L221'>put</a><span class="Delimiter">(</span>Memory<span class="Delimiter">,</span> address+i<span class="Delimiter">,</span> ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">2</span><span class="Delimiter">).</span>at<span class="Delimiter">(</span>i<span class="Delimiter">));</span>
 <span id="L581" class="LineNr">581 </span>  <span class="Delimiter">}</span>
 <span id="L582" class="LineNr">582 </span>  <span class="Identifier">break</span><span class="Delimiter">;</span>
@@ -730,16 +730,16 @@ if ('onhashchange' in window) {
 <span id="L663" class="LineNr">663 </span>  string name = <a href='011load.cc.html#L167'>next_word</a><span class="Delimiter">(</span>in<span class="Delimiter">);</span>
 <span id="L664" class="LineNr">664 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>name<span class="Delimiter">.</span>empty<span class="Delimiter">())</span> <span class="Delimiter">{</span>
 <span id="L665" class="LineNr">665 </span>  <span class="Conceal">¦</span> assert<span class="Delimiter">(</span>!has_data<span class="Delimiter">(</span>in<span class="Delimiter">));</span>
-<span id="L666" class="LineNr">666 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <span class="Constant">&quot;incomplete container definition at <a href='003trace.cc.html#L197'>end</a> of file (0)</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L666" class="LineNr">666 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <span class="Constant">&quot;incomplete container definition at <a href='003trace.cc.html#L203'>end</a> of file (0)</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L667" class="LineNr">667 </span>  <span class="Conceal">¦</span> <span class="Identifier">return</span><span class="Delimiter">;</span>
 <span id="L668" class="LineNr">668 </span>  <span class="Delimiter">}</span>
 <span id="L669" class="LineNr">669 </span>  <span class="Comment">// End container Name Refinements</span>
-<span id="L670" class="LineNr">670 </span>  <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">9991</span><span class="Delimiter">,</span> <span class="Constant">&quot;parse&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;--- defining &quot;</span> &lt;&lt; command &lt;&lt; <span class="Constant">' '</span> &lt;&lt; name &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L670" class="LineNr">670 </span>  <a href='003trace.cc.html#L167'>trace</a><span class="Delimiter">(</span><span class="Constant">9991</span><span class="Delimiter">,</span> <span class="Constant">&quot;parse&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;--- defining &quot;</span> &lt;&lt; command &lt;&lt; <span class="Constant">' '</span> &lt;&lt; name &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L671" class="LineNr">671 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!contains_key<span class="Delimiter">(</span>Type_ordinal<span class="Delimiter">,</span> name<span class="Delimiter">)</span>
 <span id="L672" class="LineNr">672 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> || get<span class="Delimiter">(</span>Type_ordinal<span class="Delimiter">,</span> name<span class="Delimiter">)</span> == <span class="Constant">0</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
 <span id="L673" class="LineNr">673 </span>  <span class="Conceal">¦</span> <a href='001help.cc.html#L221'>put</a><span class="Delimiter">(</span>Type_ordinal<span class="Delimiter">,</span> name<span class="Delimiter">,</span> Next_type_ordinal++<span class="Delimiter">);</span>
 <span id="L674" class="LineNr">674 </span>  <span class="Delimiter">}</span>
-<span id="L675" class="LineNr">675 </span>  <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">&quot;parse&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;type number: &quot;</span> &lt;&lt; get<span class="Delimiter">(</span>Type_ordinal<span class="Delimiter">,</span> name<span class="Delimiter">)</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L675" class="LineNr">675 </span>  <a href='003trace.cc.html#L167'>trace</a><span class="Delimiter">(</span><span class="Constant">&quot;parse&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;type number: &quot;</span> &lt;&lt; get<span class="Delimiter">(</span>Type_ordinal<span class="Delimiter">,</span> name<span class="Delimiter">)</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L676" class="LineNr">676 </span>  <a href='030container.cc.html#L733'>skip_bracket</a><span class="Delimiter">(</span>in<span class="Delimiter">,</span> <span class="Constant">&quot;'&quot;</span>+command+<span class="Constant">&quot;' must begin with '['&quot;</span><span class="Delimiter">);</span>
 <span id="L677" class="LineNr">677 </span>  type_info&amp; info = <a href='001help.cc.html#L229'>get_or_insert</a><span class="Delimiter">(</span>Type<span class="Delimiter">,</span> get<span class="Delimiter">(</span>Type_ordinal<span class="Delimiter">,</span> name<span class="Delimiter">));</span>
 <span id="L678" class="LineNr">678 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>info<span class="Delimiter">.</span>Num_calls_to_transform_all_at_first_definition == -<span class="Constant">1</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
@@ -748,7 +748,7 @@ if ('onhashchange' in window) {
 <span id="L681" class="LineNr">681 </span>  <span class="Delimiter">}</span>
 <span id="L682" class="LineNr">682 </span>  <span class="Normal">else</span> <span class="Normal">if</span> <span class="Delimiter">(</span>info<span class="Delimiter">.</span>Num_calls_to_transform_all_at_first_definition != Num_calls_to_transform_all<span class="Delimiter">)</span> <span class="Delimiter">{</span>
 <span id="L683" class="LineNr">683 </span>  <span class="Conceal">¦</span> <span class="Comment">// extension after transform_all</span>
-<span id="L684" class="LineNr">684 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <span class="Constant">&quot;there was a call to transform_all() between the definition of container '&quot;</span> &lt;&lt; name &lt;&lt; <span class="Constant">&quot;' and a subsequent extension. This is not supported, since any recipes that used '&quot;</span> &lt;&lt; name &lt;&lt; <span class="Constant">&quot;' values have already been transformed and </span><span class="cSpecial">\&quot;</span><span class="Constant">frozen</span><span class="cSpecial">\&quot;</span><span class="Constant">.</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L684" class="LineNr">684 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <span class="Constant">&quot;there was a call to transform_all() between the definition of container '&quot;</span> &lt;&lt; name &lt;&lt; <span class="Constant">&quot;' and a subsequent extension. This is not supported, since any recipes that used '&quot;</span> &lt;&lt; name &lt;&lt; <span class="Constant">&quot;' values have already been transformed and </span><span class="cSpecial">\&quot;</span><span class="Constant">frozen</span><span class="cSpecial">\&quot;</span><span class="Constant">.</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L685" class="LineNr">685 </span>  <span class="Conceal">¦</span> <span class="Identifier">return</span><span class="Delimiter">;</span>
 <span id="L686" class="LineNr">686 </span>  <span class="Delimiter">}</span>
 <span id="L687" class="LineNr">687 </span>  info<span class="Delimiter">.</span>name = name<span class="Delimiter">;</span>
@@ -758,12 +758,12 @@ if ('onhashchange' in window) {
 <span id="L691" class="LineNr">691 </span>  <span class="Conceal">¦</span> string element = <a href='011load.cc.html#L167'>next_word</a><span class="Delimiter">(</span>in<span class="Delimiter">);</span>
 <span id="L692" class="LineNr">692 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>element<span class="Delimiter">.</span>empty<span class="Delimiter">())</span> <span class="Delimiter">{</span>
 <span id="L693" class="LineNr">693 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> assert<span class="Delimiter">(</span>!has_data<span class="Delimiter">(</span>in<span class="Delimiter">));</span>
-<span id="L694" class="LineNr">694 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <span class="Constant">&quot;incomplete container definition at <a href='003trace.cc.html#L197'>end</a> of file (1)</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L694" class="LineNr">694 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <span class="Constant">&quot;incomplete container definition at <a href='003trace.cc.html#L203'>end</a> of file (1)</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L695" class="LineNr">695 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Identifier">return</span><span class="Delimiter">;</span>
 <span id="L696" class="LineNr">696 </span>  <span class="Conceal">¦</span> <span class="Delimiter">}</span>
 <span id="L697" class="LineNr">697 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>element == <span class="Constant">&quot;]&quot;</span><span class="Delimiter">)</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L698" class="LineNr">698 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>in<span class="Delimiter">.</span>peek<span class="Delimiter">()</span> != <span class="cSpecial">'\n'</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L699" class="LineNr">699 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; command &lt;&lt; <span class="Constant">&quot; '&quot;</span> &lt;&lt; name &lt;&lt; <span class="Constant">&quot;' contains multiple elements on a single line. Containers and exclusive containers must only contain elements, one to a line, no code.</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L699" class="LineNr">699 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; command &lt;&lt; <span class="Constant">&quot; '&quot;</span> &lt;&lt; name &lt;&lt; <span class="Constant">&quot;' contains multiple elements on a single line. Containers and exclusive containers must only contain elements, one to a line, no code.</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L700" class="LineNr">700 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Comment">// skip rest of container declaration</span>
 <span id="L701" class="LineNr">701 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">while</span> <span class="Delimiter">(</span><a href='001help.cc.html#L239'>has_data</a><span class="Delimiter">(</span>in<span class="Delimiter">))</span> <span class="Delimiter">{</span>
 <span id="L702" class="LineNr">702 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='011load.cc.html#L209'>skip_whitespace_and_comments</a><span class="Delimiter">(</span>in<span class="Delimiter">);</span>
@@ -774,7 +774,7 @@ if ('onhashchange' in window) {
 <span id="L707" class="LineNr">707 </span>  <span class="Conceal">¦</span> info<span class="Delimiter">.</span>elements<span class="Delimiter">.</span>push_back<span class="Delimiter">(</span>reagent<span class="Delimiter">(</span>element<span class="Delimiter">));</span>
 <span id="L708" class="LineNr">708 </span>  <span class="Conceal">¦</span> expand_type_abbreviations<span class="Delimiter">(</span>info<span class="Delimiter">.</span>elements<span class="Delimiter">.</span>back<span class="Delimiter">().</span>type<span class="Delimiter">);</span>  <span class="Comment">// todo: use abbreviation before declaration</span>
 <span id="L709" class="LineNr">709 </span>  <span class="Conceal">¦</span> <a href='030container.cc.html#L715'>replace_unknown_types_with_unique_ordinals</a><span class="Delimiter">(</span>info<span class="Delimiter">.</span>elements<span class="Delimiter">.</span>back<span class="Delimiter">().</span>type<span class="Delimiter">,</span> info<span class="Delimiter">);</span>
-<span id="L710" class="LineNr">710 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">9993</span><span class="Delimiter">,</span> <span class="Constant">&quot;parse&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;  element: &quot;</span> &lt;&lt; <a href='028call_return.cc.html#L163'>to_string</a><span class="Delimiter">(</span>info<span class="Delimiter">.</span>elements<span class="Delimiter">.</span>back<span class="Delimiter">())</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L710" class="LineNr">710 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L167'>trace</a><span class="Delimiter">(</span><span class="Constant">9993</span><span class="Delimiter">,</span> <span class="Constant">&quot;parse&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;  element: &quot;</span> &lt;&lt; <a href='028call_return.cc.html#L163'>to_string</a><span class="Delimiter">(</span>info<span class="Delimiter">.</span>elements<span class="Delimiter">.</span>back<span class="Delimiter">())</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L711" class="LineNr">711 </span>  <span class="Conceal">¦</span> <span class="Comment">// End Load Container Element Definition</span>
 <span id="L712" class="LineNr">712 </span>  <span class="Delimiter">}</span>
 <span id="L713" class="LineNr">713 </span><span class="Delimiter">}</span>
@@ -800,7 +800,7 @@ if ('onhashchange' in window) {
 <span id="L733" class="LineNr">733 </span><span class="Normal">void</span> <a href='030container.cc.html#L733'>skip_bracket</a><span class="Delimiter">(</span>istream&amp; in<span class="Delimiter">,</span> string message<span class="Delimiter">)</span> <span class="Delimiter">{</span>
 <span id="L734" class="LineNr">734 </span>  <a href='011load.cc.html#L209'>skip_whitespace_and_comments</a><span class="Delimiter">(</span>in<span class="Delimiter">);</span>
 <span id="L735" class="LineNr">735 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>in<span class="Delimiter">.</span>get<span class="Delimiter">()</span> != <span class="Constant">'['</span><span class="Delimiter">)</span>
-<span id="L736" class="LineNr">736 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; message &lt;&lt; <span class="cSpecial">'\n'</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L736" class="LineNr">736 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; message &lt;&lt; <span class="cSpecial">'\n'</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L737" class="LineNr">737 </span><span class="Delimiter">}</span>
 <span id="L738" class="LineNr">738 </span>
 <span id="L739" class="LineNr">739 </span><span class="Delimiter">:(scenario multi_word_line_in_container_declaration)</span>
@@ -829,7 +829,7 @@ if ('onhashchange' in window) {
 <span id="L762" class="LineNr">762 </span><span class="Comment">// extremely inefficient; we process all types over and over again, once for every single recipe</span>
 <span id="L763" class="LineNr">763 </span><span class="Comment">// but it doesn't seem to cause any noticeable slowdown</span>
 <span id="L764" class="LineNr">764 </span><span class="Normal">void</span> <a href='030container.cc.html#L764'>expand_type_abbreviations_in_containers</a><span class="Delimiter">(</span><a href='001help.cc.html#L259'>unused</a> <span class="Normal">const</span> <a href='010vm.cc.html#L14'>recipe_ordinal</a> r<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L765" class="LineNr">765 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span>map&lt;type_ordinal<span class="Delimiter">,</span> type_info&gt;::iterator p = Type<span class="Delimiter">.</span>begin<span class="Delimiter">();</span>  p != Type<span class="Delimiter">.</span><a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>  ++p<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L765" class="LineNr">765 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span>map&lt;type_ordinal<span class="Delimiter">,</span> type_info&gt;::iterator p = Type<span class="Delimiter">.</span>begin<span class="Delimiter">();</span>  p != Type<span class="Delimiter">.</span><a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>  ++p<span class="Delimiter">)</span> <span class="Delimiter">{</span>
 <span id="L766" class="LineNr">766 </span>  <span class="Conceal">¦</span> <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> i = <span class="Constant">0</span><span class="Delimiter">;</span>  i &lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>p<span class="Delimiter">-&gt;</span>second<span class="Delimiter">.</span>elements<span class="Delimiter">);</span>  ++i<span class="Delimiter">)</span>
 <span id="L767" class="LineNr">767 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> expand_type_abbreviations<span class="Delimiter">(</span>p<span class="Delimiter">-&gt;</span>second<span class="Delimiter">.</span>elements<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">).</span>type<span class="Delimiter">);</span>
 <span id="L768" class="LineNr">768 </span>  <span class="Delimiter">}</span>
@@ -850,12 +850,12 @@ if ('onhashchange' in window) {
 <span id="L783" class="LineNr">783 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Constant">&quot;]</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span><span class="Delimiter">);</span>
 <span id="L784" class="LineNr">784 </span>  <span class="Comment">// try to extend the container after transform</span>
 <span id="L785" class="LineNr">785 </span>  <a href='012transform.cc.html#L46'>transform_all</a><span class="Delimiter">();</span>
-<span id="L786" class="LineNr">786 </span>  <a href='003trace.cc.html#L233'>CHECK_TRACE_DOESNT_CONTAIN_ERRORS</a><span class="Delimiter">();</span>
+<span id="L786" class="LineNr">786 </span>  <a href='003trace.cc.html#L235'>CHECK_TRACE_DOESNT_CONTAIN_ERRORS</a><span class="Delimiter">();</span>
 <span id="L787" class="LineNr">787 </span>  Hide_errors = <span class="Constant">true</span><span class="Delimiter">;</span>
 <span id="L788" class="LineNr">788 </span>  run<span class="Delimiter">(</span><span class="Constant">&quot;container foo [</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span>
 <span id="L789" class="LineNr">789 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Constant">&quot;  b:num</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span>
 <span id="L790" class="LineNr">790 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Constant">&quot;]</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span><span class="Delimiter">);</span>
-<span id="L791" class="LineNr">791 </span>  <a href='003trace.cc.html#L232'>CHECK_TRACE_CONTAINS_ERRORS</a><span class="Delimiter">();</span>
+<span id="L791" class="LineNr">791 </span>  <a href='003trace.cc.html#L234'>CHECK_TRACE_CONTAINS_ERRORS</a><span class="Delimiter">();</span>
 <span id="L792" class="LineNr">792 </span><span class="Delimiter">}</span>
 <span id="L793" class="LineNr">793 </span>
 <span id="L794" class="LineNr">794 </span><span class="SalientComment">//:: Allow container definitions anywhere in the codebase, but complain if you</span>
@@ -884,7 +884,7 @@ if ('onhashchange' in window) {
 <span id="L817" class="LineNr">817 </span><span class="Delimiter">:(code)</span>
 <span id="L818" class="LineNr">818 </span><span class="Normal">void</span> check_or_set_invalid_types<span class="Delimiter">(</span><span class="Normal">const</span> <a href='010vm.cc.html#L14'>recipe_ordinal</a> r<span class="Delimiter">)</span> <span class="Delimiter">{</span>
 <span id="L819" class="LineNr">819 </span>  recipe&amp; caller = get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">);</span>
-<span id="L820" class="LineNr">820 </span>  <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">9991</span><span class="Delimiter">,</span> <span class="Constant">&quot;transform&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;--- check for invalid types in <a href='010vm.cc.html#L19'>recipe</a> &quot;</span> &lt;&lt; caller<span class="Delimiter">.</span>name &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L820" class="LineNr">820 </span>  <a href='003trace.cc.html#L167'>trace</a><span class="Delimiter">(</span><span class="Constant">9991</span><span class="Delimiter">,</span> <span class="Constant">&quot;transform&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;--- check for invalid types in <a href='010vm.cc.html#L19'>recipe</a> &quot;</span> &lt;&lt; caller<span class="Delimiter">.</span>name &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L821" class="LineNr">821 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> index = <span class="Constant">0</span><span class="Delimiter">;</span>  index &lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>caller<span class="Delimiter">.</span>steps<span class="Delimiter">);</span>  ++index<span class="Delimiter">)</span> <span class="Delimiter">{</span>
 <span id="L822" class="LineNr">822 </span>  <span class="Conceal">¦</span> instruction&amp; inst = caller<span class="Delimiter">.</span>steps<span class="Delimiter">.</span>at<span class="Delimiter">(</span>index<span class="Delimiter">);</span>
 <span id="L823" class="LineNr">823 </span>  <span class="Conceal">¦</span> <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> i = <span class="Constant">0</span><span class="Delimiter">;</span>  i &lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">);</span>  ++i<span class="Delimiter">)</span>
@@ -914,7 +914,7 @@ if ('onhashchange' in window) {
 <span id="L847" class="LineNr">847 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>contains_key<span class="Delimiter">(</span>Type_ordinal<span class="Delimiter">,</span> type<span class="Delimiter">-&gt;</span>name<span class="Delimiter">))</span>
 <span id="L848" class="LineNr">848 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> type<span class="Delimiter">-&gt;</span>value = get<span class="Delimiter">(</span>Type_ordinal<span class="Delimiter">,</span> type<span class="Delimiter">-&gt;</span>name<span class="Delimiter">);</span>
 <span id="L849" class="LineNr">849 </span>  <span class="Conceal">¦</span> <span class="Normal">else</span>
-<span id="L850" class="LineNr">850 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; location_for_error_messages &lt;&lt; <span class="Constant">&quot;unknown type &quot;</span> &lt;&lt; type<span class="Delimiter">-&gt;</span>name &lt;&lt; <span class="Constant">&quot; in &quot;</span> &lt;&lt; name_for_error_messages &lt;&lt; <span class="cSpecial">'\n'</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L850" class="LineNr">850 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; location_for_error_messages &lt;&lt; <span class="Constant">&quot;unknown type &quot;</span> &lt;&lt; type<span class="Delimiter">-&gt;</span>name &lt;&lt; <span class="Constant">&quot; in &quot;</span> &lt;&lt; name_for_error_messages &lt;&lt; <span class="cSpecial">'\n'</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L851" class="LineNr">851 </span>  <span class="Delimiter">}</span>
 <span id="L852" class="LineNr">852 </span><span class="Delimiter">}</span>
 <span id="L853" class="LineNr">853 </span>
@@ -947,7 +947,7 @@ if ('onhashchange' in window) {
 <span id="L880" class="LineNr">880 </span>
 <span id="L881" class="LineNr">881 </span><span class="Delimiter">:(code)</span>
 <span id="L882" class="LineNr">882 </span><span class="Normal">void</span> check_container_field_types<span class="Delimiter">()</span> <span class="Delimiter">{</span>
-<span id="L883" class="LineNr">883 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span>map&lt;type_ordinal<span class="Delimiter">,</span> type_info&gt;::iterator p = Type<span class="Delimiter">.</span>begin<span class="Delimiter">();</span>  p != Type<span class="Delimiter">.</span><a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>  ++p<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L883" class="LineNr">883 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span>map&lt;type_ordinal<span class="Delimiter">,</span> type_info&gt;::iterator p = Type<span class="Delimiter">.</span>begin<span class="Delimiter">();</span>  p != Type<span class="Delimiter">.</span><a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>  ++p<span class="Delimiter">)</span> <span class="Delimiter">{</span>
 <span id="L884" class="LineNr">884 </span>  <span class="Conceal">¦</span> <span class="Normal">const</span> type_info&amp; info = p<span class="Delimiter">-&gt;</span>second<span class="Delimiter">;</span>
 <span id="L885" class="LineNr">885 </span>  <span class="Conceal">¦</span> <span class="Comment">// Check Container Field Types(info)</span>
 <span id="L886" class="LineNr">886 </span>  <span class="Conceal">¦</span> <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> i = <span class="Constant">0</span><span class="Delimiter">;</span>  i &lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>info<span class="Delimiter">.</span>elements<span class="Delimiter">);</span>  ++i<span class="Delimiter">)</span>
@@ -964,7 +964,7 @@ if ('onhashchange' in window) {
 <span id="L897" class="LineNr">897 </span>  <span class="Delimiter">}</span>
 <span id="L898" class="LineNr">898 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>type<span class="Delimiter">-&gt;</span>value != <span class="Constant">0</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>  <span class="Comment">// value 0 = compound types (layer parse_tree) or type ingredients (layer shape_shifting_container)</span>
 <span id="L899" class="LineNr">899 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>!contains_key<span class="Delimiter">(</span>Type<span class="Delimiter">,</span> type<span class="Delimiter">-&gt;</span>value<span class="Delimiter">))</span>
-<span id="L900" class="LineNr">900 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; location_for_error_messages &lt;&lt; <span class="Constant">&quot;unknown type in &quot;</span> &lt;&lt; name_for_error_messages &lt;&lt; <span class="cSpecial">'\n'</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L900" class="LineNr">900 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; location_for_error_messages &lt;&lt; <span class="Constant">&quot;unknown type in &quot;</span> &lt;&lt; name_for_error_messages &lt;&lt; <span class="cSpecial">'\n'</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L901" class="LineNr">901 </span>  <span class="Delimiter">}</span>
 <span id="L902" class="LineNr">902 </span><span class="Delimiter">}</span>
 <span id="L903" class="LineNr">903 </span>
diff --git a/html/031merge.cc.html b/html/031merge.cc.html
index 8901967a..0daad3a6 100644
--- a/html/031merge.cc.html
+++ b/html/031merge.cc.html
@@ -179,12 +179,12 @@ if ('onhashchange' in window) {
 <span id="L114" class="LineNr">114 </span><span class="Delimiter">:(code)</span>
 <span id="L115" class="LineNr">115 </span><span class="Normal">void</span> <a href='031merge.cc.html#L115'>check_merge_calls</a><span class="Delimiter">(</span><span class="Normal">const</span> <a href='010vm.cc.html#L14'>recipe_ordinal</a> r<span class="Delimiter">)</span> <span class="Delimiter">{</span>
 <span id="L116" class="LineNr">116 </span>  <span class="Normal">const</span> recipe&amp; caller = get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">);</span>
-<span id="L117" class="LineNr">117 </span>  <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">9991</span><span class="Delimiter">,</span> <span class="Constant">&quot;transform&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;--- type-check merge instructions in <a href='010vm.cc.html#L19'>recipe</a> &quot;</span> &lt;&lt; caller<span class="Delimiter">.</span>name &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L117" class="LineNr">117 </span>  <a href='003trace.cc.html#L167'>trace</a><span class="Delimiter">(</span><span class="Constant">9991</span><span class="Delimiter">,</span> <span class="Constant">&quot;transform&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;--- type-check merge instructions in <a href='010vm.cc.html#L19'>recipe</a> &quot;</span> &lt;&lt; caller<span class="Delimiter">.</span>name &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L118" class="LineNr">118 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> i = <span class="Constant">0</span><span class="Delimiter">;</span>  i &lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>caller<span class="Delimiter">.</span>steps<span class="Delimiter">);</span>  ++i<span class="Delimiter">)</span> <span class="Delimiter">{</span>
 <span id="L119" class="LineNr">119 </span>  <span class="Conceal">¦</span> <span class="Normal">const</span> instruction&amp; inst = caller<span class="Delimiter">.</span>steps<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">);</span>
 <span id="L120" class="LineNr">120 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>inst<span class="Delimiter">.</span>name != <span class="Constant">&quot;merge&quot;</span><span class="Delimiter">)</span> <span class="Identifier">continue</span><span class="Delimiter">;</span>
 <span id="L121" class="LineNr">121 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>products<span class="Delimiter">)</span> != <span class="Constant">1</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L122" class="LineNr">122 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>caller<span class="Delimiter">.</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'merge' should yield a single product in '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L122" class="LineNr">122 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>caller<span class="Delimiter">.</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'merge' should yield a single product in '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L123" class="LineNr">123 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Identifier">continue</span><span class="Delimiter">;</span>
 <span id="L124" class="LineNr">124 </span>  <span class="Conceal">¦</span> <span class="Delimiter">}</span>
 <span id="L125" class="LineNr">125 </span>  <span class="Conceal">¦</span> reagent<span class="Comment">/*</span><span class="Comment">copy</span><span class="Comment">*/</span> product = inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">);</span>
@@ -192,12 +192,12 @@ if ('onhashchange' in window) {
 <span id="L127" class="LineNr">127 </span>  <span class="Conceal">¦</span> <span class="Normal">const</span> type_tree* product_base_type = product<span class="Delimiter">.</span>type<span class="Delimiter">-&gt;</span>atom ? product<span class="Delimiter">.</span>type : product<span class="Delimiter">.</span>type<span class="Delimiter">-&gt;</span>left<span class="Delimiter">;</span>
 <span id="L128" class="LineNr">128 </span>  <span class="Conceal">¦</span> assert<span class="Delimiter">(</span>product_base_type<span class="Delimiter">-&gt;</span>atom<span class="Delimiter">);</span>
 <span id="L129" class="LineNr">129 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>product_base_type<span class="Delimiter">-&gt;</span>value == <span class="Constant">0</span> || !contains_key<span class="Delimiter">(</span>Type<span class="Delimiter">,</span> product_base_type<span class="Delimiter">-&gt;</span>value<span class="Delimiter">))</span> <span class="Delimiter">{</span>
-<span id="L130" class="LineNr">130 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>caller<span class="Delimiter">.</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'merge' should yield a container in '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L130" class="LineNr">130 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>caller<span class="Delimiter">.</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'merge' should yield a container in '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L131" class="LineNr">131 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Identifier">continue</span><span class="Delimiter">;</span>
 <span id="L132" class="LineNr">132 </span>  <span class="Conceal">¦</span> <span class="Delimiter">}</span>
 <span id="L133" class="LineNr">133 </span>  <span class="Conceal">¦</span> <span class="Normal">const</span> type_info&amp; info = get<span class="Delimiter">(</span>Type<span class="Delimiter">,</span> product_base_type<span class="Delimiter">-&gt;</span>value<span class="Delimiter">);</span>
 <span id="L134" class="LineNr">134 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>info<span class="Delimiter">.</span>kind != <a href='010vm.cc.html#L173'>CONTAINER</a> &amp;&amp; info<span class="Delimiter">.</span>kind != <a href='010vm.cc.html#L174'>EXCLUSIVE_CONTAINER</a><span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L135" class="LineNr">135 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>caller<span class="Delimiter">.</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'merge' should yield a container in '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L135" class="LineNr">135 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>caller<span class="Delimiter">.</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'merge' should yield a container in '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L136" class="LineNr">136 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Identifier">continue</span><span class="Delimiter">;</span>
 <span id="L137" class="LineNr">137 </span>  <span class="Conceal">¦</span> <span class="Delimiter">}</span>
 <span id="L138" class="LineNr">138 </span>  <span class="Conceal">¦</span> <a href='031merge.cc.html#L142'>check_merge_call</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">,</span> product<span class="Delimiter">,</span> caller<span class="Delimiter">,</span> inst<span class="Delimiter">);</span>
@@ -210,9 +210,9 @@ if ('onhashchange' in window) {
 <span id="L145" class="LineNr">145 </span>  state<span class="Delimiter">.</span>data<span class="Delimiter">.</span>push<span class="Delimiter">(</span>merge_check_point<span class="Delimiter">(</span>product<span class="Delimiter">,</span> <span class="Constant">0</span><span class="Delimiter">));</span>
 <span id="L146" class="LineNr">146 </span>  <span class="Normal">while</span> <span class="Delimiter">(</span><span class="Constant">true</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
 <span id="L147" class="LineNr">147 </span>  <span class="Conceal">¦</span> assert<span class="Delimiter">(</span>!state<span class="Delimiter">.</span>data<span class="Delimiter">.</span>empty<span class="Delimiter">());</span>
-<span id="L148" class="LineNr">148 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">&quot;transform&quot;</span><span class="Delimiter">)</span> &lt;&lt; ingredient_index &lt;&lt; <span class="Constant">&quot; vs &quot;</span> &lt;&lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>ingredients<span class="Delimiter">)</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L148" class="LineNr">148 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L167'>trace</a><span class="Delimiter">(</span><span class="Constant">&quot;transform&quot;</span><span class="Delimiter">)</span> &lt;&lt; ingredient_index &lt;&lt; <span class="Constant">&quot; vs &quot;</span> &lt;&lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>ingredients<span class="Delimiter">)</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L149" class="LineNr">149 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>ingredient_index &gt;= <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>ingredients<span class="Delimiter">))</span> <span class="Delimiter">{</span>
-<span id="L150" class="LineNr">150 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>caller<span class="Delimiter">.</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;too few ingredients in '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L150" class="LineNr">150 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>caller<span class="Delimiter">.</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;too few ingredients in '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L151" class="LineNr">151 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Identifier">return</span><span class="Delimiter">;</span>
 <span id="L152" class="LineNr">152 </span>  <span class="Conceal">¦</span> <span class="Delimiter">}</span>
 <span id="L153" class="LineNr">153 </span>  <span class="Conceal">¦</span> reagent&amp; container = state<span class="Delimiter">.</span>data<span class="Delimiter">.</span>top<span class="Delimiter">().</span>container<span class="Delimiter">;</span>
@@ -226,7 +226,7 @@ if ('onhashchange' in window) {
 <span id="L161" class="LineNr">161 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>state<span class="Delimiter">.</span>data<span class="Delimiter">.</span>top<span class="Delimiter">().</span>container_element_index == <span class="Constant">0</span> &amp;&amp; <a href='021check_instruction.cc.html#L115'>types_coercible</a><span class="Delimiter">(</span>container<span class="Delimiter">,</span> inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>ingredient_index<span class="Delimiter">)))</span>
 <span id="L162" class="LineNr">162 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Identifier">return</span><span class="Delimiter">;</span>
 <span id="L163" class="LineNr">163 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">const</span> reagent&amp; expected_ingredient = <a href='030container.cc.html#L429'>element_type</a><span class="Delimiter">(</span>container<span class="Delimiter">.</span>type<span class="Delimiter">,</span> state<span class="Delimiter">.</span>data<span class="Delimiter">.</span>top<span class="Delimiter">().</span>container_element_index<span class="Delimiter">);</span>
-<span id="L164" class="LineNr">164 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">&quot;transform&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;checking container &quot;</span> &lt;&lt; <a href='028call_return.cc.html#L163'>to_string</a><span class="Delimiter">(</span>container<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot; || &quot;</span> &lt;&lt; <a href='028call_return.cc.html#L163'>to_string</a><span class="Delimiter">(</span>expected_ingredient<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot; vs ingredient &quot;</span> &lt;&lt; ingredient_index &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L164" class="LineNr">164 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L167'>trace</a><span class="Delimiter">(</span><span class="Constant">&quot;transform&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;checking container &quot;</span> &lt;&lt; <a href='028call_return.cc.html#L163'>to_string</a><span class="Delimiter">(</span>container<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot; || &quot;</span> &lt;&lt; <a href='028call_return.cc.html#L163'>to_string</a><span class="Delimiter">(</span>expected_ingredient<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot; vs ingredient &quot;</span> &lt;&lt; ingredient_index &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L165" class="LineNr">165 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Comment">// if the current element is the ingredient we expect, move on to the next element/ingredient</span>
 <span id="L166" class="LineNr">166 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span><a href='021check_instruction.cc.html#L115'>types_coercible</a><span class="Delimiter">(</span>expected_ingredient<span class="Delimiter">,</span> ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>ingredient_index<span class="Delimiter">)))</span> <span class="Delimiter">{</span>
 <span id="L167" class="LineNr">167 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> ++ingredient_index<span class="Delimiter">;</span>
@@ -235,7 +235,7 @@ if ('onhashchange' in window) {
 <span id="L170" class="LineNr">170 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> state<span class="Delimiter">.</span>data<span class="Delimiter">.</span>pop<span class="Delimiter">();</span>
 <span id="L171" class="LineNr">171 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>state<span class="Delimiter">.</span>data<span class="Delimiter">.</span>empty<span class="Delimiter">())</span> <span class="Delimiter">{</span>
 <span id="L172" class="LineNr">172 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>ingredient_index &lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>ingredients<span class="Delimiter">))</span>
-<span id="L173" class="LineNr">173 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>caller<span class="Delimiter">.</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;too many ingredients in '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L173" class="LineNr">173 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>caller<span class="Delimiter">.</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;too many ingredients in '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L174" class="LineNr">174 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Identifier">return</span><span class="Delimiter">;</span>
 <span id="L175" class="LineNr">175 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Delimiter">}</span>
 <span id="L176" class="LineNr">176 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> ++state<span class="Delimiter">.</span>data<span class="Delimiter">.</span>top<span class="Delimiter">().</span>container_element_index<span class="Delimiter">;</span>
@@ -251,9 +251,9 @@ if ('onhashchange' in window) {
 <span id="L186" class="LineNr">186 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Comment">// End check_merge_call Special-cases</span>
 <span id="L187" class="LineNr">187 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">default</span>: <span class="Delimiter">{</span>
 <span id="L188" class="LineNr">188 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>!types_coercible<span class="Delimiter">(</span>container<span class="Delimiter">,</span> ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>ingredient_index<span class="Delimiter">)))</span> <span class="Delimiter">{</span>
-<span id="L189" class="LineNr">189 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>caller<span class="Delimiter">.</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;incorrect type of ingredient &quot;</span> &lt;&lt; ingredient_index &lt;&lt; <span class="Constant">&quot; in '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
-<span id="L190" class="LineNr">190 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <span class="Constant">&quot;  (expected '&quot;</span> &lt;&lt; debug_string<span class="Delimiter">(</span>container<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;')</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
-<span id="L191" class="LineNr">191 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <span class="Constant">&quot;  (got '&quot;</span> &lt;&lt; debug_string<span class="Delimiter">(</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>ingredient_index<span class="Delimiter">))</span> &lt;&lt; <span class="Constant">&quot;')</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L189" class="LineNr">189 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>caller<span class="Delimiter">.</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;incorrect type of ingredient &quot;</span> &lt;&lt; ingredient_index &lt;&lt; <span class="Constant">&quot; in '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
+<span id="L190" class="LineNr">190 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <span class="Constant">&quot;  (expected '&quot;</span> &lt;&lt; debug_string<span class="Delimiter">(</span>container<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;')</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
+<span id="L191" class="LineNr">191 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <span class="Constant">&quot;  (got '&quot;</span> &lt;&lt; debug_string<span class="Delimiter">(</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>ingredient_index<span class="Delimiter">))</span> &lt;&lt; <span class="Constant">&quot;')</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L192" class="LineNr">192 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Identifier">return</span><span class="Delimiter">;</span>
 <span id="L193" class="LineNr">193 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Delimiter">}</span>
 <span id="L194" class="LineNr">194 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> ++ingredient_index<span class="Delimiter">;</span>
@@ -262,7 +262,7 @@ if ('onhashchange' in window) {
 <span id="L197" class="LineNr">197 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> state<span class="Delimiter">.</span>data<span class="Delimiter">.</span>pop<span class="Delimiter">();</span>
 <span id="L198" class="LineNr">198 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>state<span class="Delimiter">.</span>data<span class="Delimiter">.</span>empty<span class="Delimiter">())</span> <span class="Delimiter">{</span>
 <span id="L199" class="LineNr">199 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>ingredient_index &lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>ingredients<span class="Delimiter">))</span>
-<span id="L200" class="LineNr">200 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>caller<span class="Delimiter">.</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;too many ingredients in '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L200" class="LineNr">200 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>caller<span class="Delimiter">.</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;too many ingredients in '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L201" class="LineNr">201 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Identifier">return</span><span class="Delimiter">;</span>
 <span id="L202" class="LineNr">202 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Delimiter">}</span>
 <span id="L203" class="LineNr">203 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> ++state<span class="Delimiter">.</span>data<span class="Delimiter">.</span>top<span class="Delimiter">().</span>container_element_index<span class="Delimiter">;</span>
diff --git a/html/032array.cc.html b/html/032array.cc.html
index 66e5c949..3e04c400 100644
--- a/html/032array.cc.html
+++ b/html/032array.cc.html
@@ -85,36 +85,36 @@ if ('onhashchange' in window) {
 <span id="L20" class="LineNr"> 20 </span><span class="Delimiter">:(before &quot;End Primitive Recipe Checks&quot;)</span>
 <span id="L21" class="LineNr"> 21 </span><span class="Normal">case</span> CREATE_ARRAY: <span class="Delimiter">{</span>
 <span id="L22" class="LineNr"> 22 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>empty<span class="Delimiter">())</span> <span class="Delimiter">{</span>
-<span id="L23" class="LineNr"> 23 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'create-array' needs one product and no ingredients but got '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="cSpecial">'\n'</span> &lt;&lt; end<span class="Delimiter">();</span>
+<span id="L23" class="LineNr"> 23 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'create-array' needs one product and no ingredients but got '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="cSpecial">'\n'</span> &lt;&lt; end<span class="Delimiter">();</span>
 <span id="L24" class="LineNr"> 24 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L25" class="LineNr"> 25 </span>  <span class="Delimiter">}</span>
 <span id="L26" class="LineNr"> 26 </span>  reagent<span class="Comment">/*</span><span class="Comment">copy</span><span class="Comment">*/</span> product = inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">);</span>
 <span id="L27" class="LineNr"> 27 </span>  <span class="Comment">// Update CREATE_ARRAY product in Check</span>
 <span id="L28" class="LineNr"> 28 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!is_mu_array<span class="Delimiter">(</span>product<span class="Delimiter">))</span> <span class="Delimiter">{</span>
-<span id="L29" class="LineNr"> 29 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'create-array' cannot create non-array '&quot;</span> &lt;&lt; product<span class="Delimiter">.</span>original_string &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L29" class="LineNr"> 29 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'create-array' cannot create non-array '&quot;</span> &lt;&lt; product<span class="Delimiter">.</span>original_string &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L30" class="LineNr"> 30 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L31" class="LineNr"> 31 </span>  <span class="Delimiter">}</span>
 <span id="L32" class="LineNr"> 32 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!product<span class="Delimiter">.</span>type<span class="Delimiter">-&gt;</span>right<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L33" class="LineNr"> 33 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;create array of what? '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L33" class="LineNr"> 33 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;create array of what? '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L34" class="LineNr"> 34 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L35" class="LineNr"> 35 </span>  <span class="Delimiter">}</span>
 <span id="L36" class="LineNr"> 36 </span>  <span class="Comment">// 'create-array' will need to check properties rather than types</span>
 <span id="L37" class="LineNr"> 37 </span>  type_tree* array_length_from_type = product<span class="Delimiter">.</span>type<span class="Delimiter">-&gt;</span>right<span class="Delimiter">-&gt;</span>right<span class="Delimiter">;</span>
 <span id="L38" class="LineNr"> 38 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!array_length_from_type<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L39" class="LineNr"> 39 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;create array of what size? '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L39" class="LineNr"> 39 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;create array of what size? '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L40" class="LineNr"> 40 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L41" class="LineNr"> 41 </span>  <span class="Delimiter">}</span>
 <span id="L42" class="LineNr"> 42 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!product<span class="Delimiter">.</span>type<span class="Delimiter">-&gt;</span>right<span class="Delimiter">-&gt;</span>right<span class="Delimiter">-&gt;</span>atom<span class="Delimiter">)</span>
 <span id="L43" class="LineNr"> 43 </span>  <span class="Conceal">¦</span> array_length_from_type = array_length_from_type<span class="Delimiter">-&gt;</span>left<span class="Delimiter">;</span>
 <span id="L44" class="LineNr"> 44 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!is_integer<span class="Delimiter">(</span>array_length_from_type<span class="Delimiter">-&gt;</span>name<span class="Delimiter">))</span> <span class="Delimiter">{</span>
-<span id="L45" class="LineNr"> 45 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'create-array' product should specify size of array after its element type, but got '&quot;</span> &lt;&lt; product<span class="Delimiter">.</span>type<span class="Delimiter">-&gt;</span>right<span class="Delimiter">-&gt;</span>right<span class="Delimiter">-&gt;</span>name &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L45" class="LineNr"> 45 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'create-array' product should specify size of array after its element type, but got '&quot;</span> &lt;&lt; product<span class="Delimiter">.</span>type<span class="Delimiter">-&gt;</span>right<span class="Delimiter">-&gt;</span>right<span class="Delimiter">-&gt;</span>name &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L46" class="LineNr"> 46 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L47" class="LineNr"> 47 </span>  <span class="Delimiter">}</span>
 <span id="L48" class="LineNr"> 48 </span>  <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L49" class="LineNr"> 49 </span><span class="Delimiter">}</span>
 <span id="L50" class="LineNr"> 50 </span><span class="Delimiter">:(before &quot;End Primitive Recipe Implementations&quot;)</span>
 <span id="L51" class="LineNr"> 51 </span><span class="Normal">case</span> CREATE_ARRAY: <span class="Delimiter">{</span>
-<span id="L52" class="LineNr"> 52 </span>  reagent<span class="Comment">/*</span><span class="Comment">copy</span><span class="Comment">*/</span> product = <a href='026call.cc.html#L87'>current_instruction</a><span class="Delimiter">().</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">);</span>
+<span id="L52" class="LineNr"> 52 </span>  reagent<span class="Comment">/*</span><span class="Comment">copy</span><span class="Comment">*/</span> product = <a href='026call.cc.html#L89'>current_instruction</a><span class="Delimiter">().</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">);</span>
 <span id="L53" class="LineNr"> 53 </span>  <span class="Comment">// Update CREATE_ARRAY product in Run</span>
 <span id="L54" class="LineNr"> 54 </span>  <span class="Normal">int</span> base_address = product<span class="Delimiter">.</span>value<span class="Delimiter">;</span>
 <span id="L55" class="LineNr"> 55 </span>  type_tree* array_length_from_type = product<span class="Delimiter">.</span>type<span class="Delimiter">-&gt;</span>right<span class="Delimiter">-&gt;</span>right<span class="Delimiter">;</span>
@@ -122,10 +122,10 @@ if ('onhashchange' in window) {
 <span id="L57" class="LineNr"> 57 </span>  <span class="Conceal">¦</span> array_length_from_type = array_length_from_type<span class="Delimiter">-&gt;</span>left<span class="Delimiter">;</span>
 <span id="L58" class="LineNr"> 58 </span>  <span class="Normal">int</span> <a href='032array.cc.html#L397'>array_length</a> = <a href='002test.cc.html#L91'>to_integer</a><span class="Delimiter">(</span>array_length_from_type<span class="Delimiter">-&gt;</span>name<span class="Delimiter">);</span>
 <span id="L59" class="LineNr"> 59 </span>  <span class="Comment">// initialize array length, so that size_of will work</span>
-<span id="L60" class="LineNr"> 60 </span>  <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">&quot;mem&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;storing &quot;</span> &lt;&lt; <a href='032array.cc.html#L397'>array_length</a> &lt;&lt; <span class="Constant">&quot; in location &quot;</span> &lt;&lt; base_address &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L60" class="LineNr"> 60 </span>  <a href='003trace.cc.html#L167'>trace</a><span class="Delimiter">(</span><span class="Constant">&quot;mem&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;storing &quot;</span> &lt;&lt; <a href='032array.cc.html#L397'>array_length</a> &lt;&lt; <span class="Constant">&quot; in location &quot;</span> &lt;&lt; base_address &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L61" class="LineNr"> 61 </span>  <a href='001help.cc.html#L221'>put</a><span class="Delimiter">(</span>Memory<span class="Delimiter">,</span> base_address<span class="Delimiter">,</span> <a href='032array.cc.html#L397'>array_length</a><span class="Delimiter">);</span>  <span class="Comment">// in array elements</span>
 <span id="L62" class="LineNr"> 62 </span>  <span class="Normal">int</span> size = size_of<span class="Delimiter">(</span>product<span class="Delimiter">);</span>  <span class="Comment">// in locations</span>
-<span id="L63" class="LineNr"> 63 </span>  <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">9998</span><span class="Delimiter">,</span> <span class="Constant">&quot;run&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;creating array of size &quot;</span> &lt;&lt; size &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L63" class="LineNr"> 63 </span>  <a href='003trace.cc.html#L167'>trace</a><span class="Delimiter">(</span><span class="Constant">9998</span><span class="Delimiter">,</span> <span class="Constant">&quot;run&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;creating array of size &quot;</span> &lt;&lt; size &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L64" class="LineNr"> 64 </span>  <span class="Comment">// initialize array</span>
 <span id="L65" class="LineNr"> 65 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> i = <span class="Constant">1</span><span class="Delimiter">;</span>  i &lt;= size_of<span class="Delimiter">(</span>product<span class="Delimiter">);</span>  ++i<span class="Delimiter">)</span>
 <span id="L66" class="LineNr"> 66 </span>  <span class="Conceal">¦</span> <a href='001help.cc.html#L221'>put</a><span class="Delimiter">(</span>Memory<span class="Delimiter">,</span> base_address+i<span class="Delimiter">,</span> <span class="Constant">0</span><span class="Delimiter">);</span>
@@ -170,7 +170,7 @@ if ('onhashchange' in window) {
 <span id="L105" class="LineNr">105 </span><span class="Delimiter">:(before &quot;End size_of(reagent r) Special-cases&quot;)</span>
 <span id="L106" class="LineNr">106 </span><span class="Normal">if</span> <span class="Delimiter">(</span>!r<span class="Delimiter">.</span>type<span class="Delimiter">-&gt;</span>atom &amp;&amp; r<span class="Delimiter">.</span>type<span class="Delimiter">-&gt;</span>left<span class="Delimiter">-&gt;</span>atom &amp;&amp; r<span class="Delimiter">.</span>type<span class="Delimiter">-&gt;</span>left<span class="Delimiter">-&gt;</span>value == get<span class="Delimiter">(</span>Type_ordinal<span class="Delimiter">,</span> <span class="Constant">&quot;array&quot;</span><span class="Delimiter">))</span> <span class="Delimiter">{</span>
 <span id="L107" class="LineNr">107 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!r<span class="Delimiter">.</span>type<span class="Delimiter">-&gt;</span>right<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L108" class="LineNr">108 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span><a href='026call.cc.html#L85'>current_recipe_name</a><span class="Delimiter">())</span> &lt;&lt; <span class="Constant">&quot;'&quot;</span> &lt;&lt; r<span class="Delimiter">.</span>original_string &lt;&lt; <span class="Constant">&quot;' is an array of what?</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L108" class="LineNr">108 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span><a href='026call.cc.html#L87'>current_recipe_name</a><span class="Delimiter">())</span> &lt;&lt; <span class="Constant">&quot;'&quot;</span> &lt;&lt; r<span class="Delimiter">.</span>original_string &lt;&lt; <span class="Constant">&quot;' is an array of what?</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L109" class="LineNr">109 </span>  <span class="Conceal">¦</span> <span class="Identifier">return</span> <span class="Constant">1</span><span class="Delimiter">;</span>
 <span id="L110" class="LineNr">110 </span>  <span class="Delimiter">}</span>
 <span id="L111" class="LineNr">111 </span>  <span class="Identifier">return</span> <span class="Comment">/*</span><span class="Comment">space for length</span><span class="Comment">*/</span><span class="Constant">1</span> + <a href='032array.cc.html#L397'>array_length</a><span class="Delimiter">(</span>r<span class="Delimiter">)</span>*size_of<span class="Delimiter">(</span><a href='032array.cc.html#L381'>array_element</a><span class="Delimiter">(</span>r<span class="Delimiter">.</span>type<span class="Delimiter">));</span>
@@ -220,16 +220,16 @@ if ('onhashchange' in window) {
 <span id="L155" class="LineNr">155 </span><span class="Delimiter">{</span>
 <span id="L156" class="LineNr">156 </span>  <span class="Normal">const</span> type_tree* type = info<span class="Delimiter">.</span>elements<span class="Delimiter">.</span>back<span class="Delimiter">().</span>type<span class="Delimiter">;</span>
 <span id="L157" class="LineNr">157 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>type &amp;&amp; type<span class="Delimiter">-&gt;</span>atom &amp;&amp; type<span class="Delimiter">-&gt;</span>name == <span class="Constant">&quot;array&quot;</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L158" class="LineNr">158 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <span class="Constant">&quot;container '&quot;</span> &lt;&lt; name &lt;&lt; <span class="Constant">&quot;' doesn't specify type of array elements for '&quot;</span> &lt;&lt; info<span class="Delimiter">.</span>elements<span class="Delimiter">.</span>back<span class="Delimiter">().</span>name &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; end<span class="Delimiter">();</span>
+<span id="L158" class="LineNr">158 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <span class="Constant">&quot;container '&quot;</span> &lt;&lt; name &lt;&lt; <span class="Constant">&quot;' doesn't specify type of array elements for '&quot;</span> &lt;&lt; info<span class="Delimiter">.</span>elements<span class="Delimiter">.</span>back<span class="Delimiter">().</span>name &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; end<span class="Delimiter">();</span>
 <span id="L159" class="LineNr">159 </span>  <span class="Conceal">¦</span> <span class="Identifier">continue</span><span class="Delimiter">;</span>
 <span id="L160" class="LineNr">160 </span>  <span class="Delimiter">}</span>
 <span id="L161" class="LineNr">161 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>type &amp;&amp; !type<span class="Delimiter">-&gt;</span>atom &amp;&amp; type<span class="Delimiter">-&gt;</span>left<span class="Delimiter">-&gt;</span>atom &amp;&amp; type<span class="Delimiter">-&gt;</span>left<span class="Delimiter">-&gt;</span>name == <span class="Constant">&quot;array&quot;</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
 <span id="L162" class="LineNr">162 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>!type<span class="Delimiter">-&gt;</span>right<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L163" class="LineNr">163 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <span class="Constant">&quot;container '&quot;</span> &lt;&lt; name &lt;&lt; <span class="Constant">&quot;' doesn't specify type of array elements for '&quot;</span> &lt;&lt; info<span class="Delimiter">.</span>elements<span class="Delimiter">.</span>back<span class="Delimiter">().</span>name &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; end<span class="Delimiter">();</span>
+<span id="L163" class="LineNr">163 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <span class="Constant">&quot;container '&quot;</span> &lt;&lt; name &lt;&lt; <span class="Constant">&quot;' doesn't specify type of array elements for '&quot;</span> &lt;&lt; info<span class="Delimiter">.</span>elements<span class="Delimiter">.</span>back<span class="Delimiter">().</span>name &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; end<span class="Delimiter">();</span>
 <span id="L164" class="LineNr">164 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Identifier">continue</span><span class="Delimiter">;</span>
 <span id="L165" class="LineNr">165 </span>  <span class="Conceal">¦</span> <span class="Delimiter">}</span>
 <span id="L166" class="LineNr">166 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>!type<span class="Delimiter">-&gt;</span>right<span class="Delimiter">-&gt;</span>right || !is_integer<span class="Delimiter">(</span>type<span class="Delimiter">-&gt;</span>right<span class="Delimiter">-&gt;</span>right<span class="Delimiter">-&gt;</span>left<span class="Delimiter">-&gt;</span>name<span class="Delimiter">))</span> <span class="Delimiter">{</span>  <span class="Comment">// array has no length</span>
-<span id="L167" class="LineNr">167 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <span class="Constant">&quot;container '&quot;</span> &lt;&lt; name &lt;&lt; <span class="Constant">&quot;' cannot determine size of element '&quot;</span> &lt;&lt; info<span class="Delimiter">.</span>elements<span class="Delimiter">.</span>back<span class="Delimiter">().</span>name &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L167" class="LineNr">167 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <span class="Constant">&quot;container '&quot;</span> &lt;&lt; name &lt;&lt; <span class="Constant">&quot;' cannot determine size of element '&quot;</span> &lt;&lt; info<span class="Delimiter">.</span>elements<span class="Delimiter">.</span>back<span class="Delimiter">().</span>name &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L168" class="LineNr">168 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Identifier">continue</span><span class="Delimiter">;</span>
 <span id="L169" class="LineNr">169 </span>  <span class="Conceal">¦</span> <span class="Delimiter">}</span>
 <span id="L170" class="LineNr">170 </span>  <span class="Delimiter">}</span>
@@ -238,8 +238,8 @@ if ('onhashchange' in window) {
 <span id="L173" class="LineNr">173 </span><span class="Comment">//: disable the size mismatch check for 'merge' instructions since containers</span>
 <span id="L174" class="LineNr">174 </span><span class="Comment">//: can contain arrays, and since we already do plenty of checking for them</span>
 <span id="L175" class="LineNr">175 </span><span class="Delimiter">:(before &quot;End size_mismatch(x) Special-cases&quot;)</span>
-<span id="L176" class="LineNr">176 </span><span class="Normal">if</span> <span class="Delimiter">(</span><a href='026call.cc.html#L81'>current_call</a><span class="Delimiter">().</span>running_step_index &lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> <a href='026call.cc.html#L81'>current_call</a><span class="Delimiter">().</span>running_recipe<span class="Delimiter">).</span>steps<span class="Delimiter">)</span>
-<span id="L177" class="LineNr">177 </span>  <span class="Conceal">¦</span> &amp;&amp; <a href='026call.cc.html#L87'>current_instruction</a><span class="Delimiter">().</span>operation == MERGE<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L176" class="LineNr">176 </span><span class="Normal">if</span> <span class="Delimiter">(</span><a href='026call.cc.html#L83'>current_call</a><span class="Delimiter">().</span>running_step_index &lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> <a href='026call.cc.html#L83'>current_call</a><span class="Delimiter">().</span>running_recipe<span class="Delimiter">).</span>steps<span class="Delimiter">)</span>
+<span id="L177" class="LineNr">177 </span>  <span class="Conceal">¦</span> &amp;&amp; <a href='026call.cc.html#L89'>current_instruction</a><span class="Delimiter">().</span>operation == MERGE<span class="Delimiter">)</span> <span class="Delimiter">{</span>
 <span id="L178" class="LineNr">178 </span>  <span class="Identifier">return</span> <span class="Constant">false</span><span class="Delimiter">;</span>
 <span id="L179" class="LineNr">179 </span><span class="Delimiter">}</span>
 <span id="L180" class="LineNr">180 </span>
@@ -385,19 +385,19 @@ if ('onhashchange' in window) {
 <span id="L320" class="LineNr">320 </span><span class="Delimiter">:(before &quot;End Primitive Recipe Checks&quot;)</span>
 <span id="L321" class="LineNr">321 </span><span class="Normal">case</span> INDEX: <span class="Delimiter">{</span>
 <span id="L322" class="LineNr">322 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">)</span> != <span class="Constant">2</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L323" class="LineNr">323 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'index' expects exactly 2 ingredients in '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L323" class="LineNr">323 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'index' expects exactly 2 ingredients in '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L324" class="LineNr">324 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L325" class="LineNr">325 </span>  <span class="Delimiter">}</span>
 <span id="L326" class="LineNr">326 </span>  reagent<span class="Comment">/*</span><span class="Comment">copy</span><span class="Comment">*/</span> base = inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">);</span>
 <span id="L327" class="LineNr">327 </span>  <span class="Comment">// Update INDEX base in Check</span>
 <span id="L328" class="LineNr">328 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!is_mu_array<span class="Delimiter">(</span>base<span class="Delimiter">))</span> <span class="Delimiter">{</span>
-<span id="L329" class="LineNr">329 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'index' on a non-array '&quot;</span> &lt;&lt; base<span class="Delimiter">.</span>original_string &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L329" class="LineNr">329 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'index' on a non-array '&quot;</span> &lt;&lt; base<span class="Delimiter">.</span>original_string &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L330" class="LineNr">330 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L331" class="LineNr">331 </span>  <span class="Delimiter">}</span>
 <span id="L332" class="LineNr">332 </span>  reagent<span class="Comment">/*</span><span class="Comment">copy</span><span class="Comment">*/</span> index = inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">1</span><span class="Delimiter">);</span>
 <span id="L333" class="LineNr">333 </span>  <span class="Comment">// Update INDEX index in Check</span>
 <span id="L334" class="LineNr">334 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!is_mu_number<span class="Delimiter">(</span>index<span class="Delimiter">))</span> <span class="Delimiter">{</span>
-<span id="L335" class="LineNr">335 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;second ingredient of 'index' should be a number, but got '&quot;</span> &lt;&lt; index<span class="Delimiter">.</span>original_string &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L335" class="LineNr">335 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;second ingredient of 'index' should be a number, but got '&quot;</span> &lt;&lt; index<span class="Delimiter">.</span>original_string &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L336" class="LineNr">336 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L337" class="LineNr">337 </span>  <span class="Delimiter">}</span>
 <span id="L338" class="LineNr">338 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>empty<span class="Delimiter">())</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
@@ -406,33 +406,33 @@ if ('onhashchange' in window) {
 <span id="L341" class="LineNr">341 </span>  reagent<span class="Comment">/*</span><span class="Comment">local</span><span class="Comment">*/</span> element<span class="Delimiter">;</span>
 <span id="L342" class="LineNr">342 </span>  element<span class="Delimiter">.</span>type = <a href='032array.cc.html#L377'>copy_array_element</a><span class="Delimiter">(</span>base<span class="Delimiter">.</span>type<span class="Delimiter">);</span>
 <span id="L343" class="LineNr">343 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!types_coercible<span class="Delimiter">(</span>product<span class="Delimiter">,</span> element<span class="Delimiter">))</span> <span class="Delimiter">{</span>
-<span id="L344" class="LineNr">344 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'index' on '&quot;</span> &lt;&lt; base<span class="Delimiter">.</span>original_string &lt;&lt; <span class="Constant">&quot;' can't be saved in '&quot;</span> &lt;&lt; product<span class="Delimiter">.</span>original_string &lt;&lt; <span class="Constant">&quot;'; type should be '&quot;</span> &lt;&lt; names_to_string_without_quotes<span class="Delimiter">(</span>element<span class="Delimiter">.</span>type<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; end<span class="Delimiter">();</span>
+<span id="L344" class="LineNr">344 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'index' on '&quot;</span> &lt;&lt; base<span class="Delimiter">.</span>original_string &lt;&lt; <span class="Constant">&quot;' can't be saved in '&quot;</span> &lt;&lt; product<span class="Delimiter">.</span>original_string &lt;&lt; <span class="Constant">&quot;'; type should be '&quot;</span> &lt;&lt; names_to_string_without_quotes<span class="Delimiter">(</span>element<span class="Delimiter">.</span>type<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; end<span class="Delimiter">();</span>
 <span id="L345" class="LineNr">345 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L346" class="LineNr">346 </span>  <span class="Delimiter">}</span>
 <span id="L347" class="LineNr">347 </span>  <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L348" class="LineNr">348 </span><span class="Delimiter">}</span>
 <span id="L349" class="LineNr">349 </span><span class="Delimiter">:(before &quot;End Primitive Recipe Implementations&quot;)</span>
 <span id="L350" class="LineNr">350 </span><span class="Normal">case</span> INDEX: <span class="Delimiter">{</span>
-<span id="L351" class="LineNr">351 </span>  reagent<span class="Comment">/*</span><span class="Comment">copy</span><span class="Comment">*/</span> base = <a href='026call.cc.html#L87'>current_instruction</a><span class="Delimiter">().</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">);</span>
+<span id="L351" class="LineNr">351 </span>  reagent<span class="Comment">/*</span><span class="Comment">copy</span><span class="Comment">*/</span> base = <a href='026call.cc.html#L89'>current_instruction</a><span class="Delimiter">().</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">);</span>
 <span id="L352" class="LineNr">352 </span>  <span class="Comment">// Update INDEX base in Run</span>
 <span id="L353" class="LineNr">353 </span>  <span class="Normal">int</span> base_address = base<span class="Delimiter">.</span>value<span class="Delimiter">;</span>
-<span id="L354" class="LineNr">354 </span>  <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">9998</span><span class="Delimiter">,</span> <span class="Constant">&quot;run&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;base <a href='043space.cc.html#L82'>address</a> is &quot;</span> &lt;&lt; base_address &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L354" class="LineNr">354 </span>  <a href='003trace.cc.html#L167'>trace</a><span class="Delimiter">(</span><span class="Constant">9998</span><span class="Delimiter">,</span> <span class="Constant">&quot;run&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;base <a href='043space.cc.html#L82'>address</a> is &quot;</span> &lt;&lt; base_address &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L355" class="LineNr">355 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>base_address == <span class="Constant">0</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L356" class="LineNr">356 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span><a href='026call.cc.html#L85'>current_recipe_name</a><span class="Delimiter">())</span> &lt;&lt; <span class="Constant">&quot;tried to access location 0 in '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>current_instruction<span class="Delimiter">())</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L356" class="LineNr">356 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span><a href='026call.cc.html#L87'>current_recipe_name</a><span class="Delimiter">())</span> &lt;&lt; <span class="Constant">&quot;tried to access location 0 in '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>current_instruction<span class="Delimiter">())</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L357" class="LineNr">357 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L358" class="LineNr">358 </span>  <span class="Delimiter">}</span>
-<span id="L359" class="LineNr">359 </span>  reagent<span class="Comment">/*</span><span class="Comment">copy</span><span class="Comment">*/</span> index = <a href='026call.cc.html#L87'>current_instruction</a><span class="Delimiter">().</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">1</span><span class="Delimiter">);</span>
+<span id="L359" class="LineNr">359 </span>  reagent<span class="Comment">/*</span><span class="Comment">copy</span><span class="Comment">*/</span> index = <a href='026call.cc.html#L89'>current_instruction</a><span class="Delimiter">().</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">1</span><span class="Delimiter">);</span>
 <span id="L360" class="LineNr">360 </span>  <span class="Comment">// Update INDEX index in Run</span>
 <span id="L361" class="LineNr">361 </span>  vector&lt;<span class="Normal">double</span>&gt; index_val<span class="Delimiter">(</span>read_memory<span class="Delimiter">(</span>index<span class="Delimiter">));</span>
 <span id="L362" class="LineNr">362 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>index_val<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">)</span> &lt; <span class="Constant">0</span> || index_val<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">)</span> &gt;= <a href='001help.cc.html#L229'>get_or_insert</a><span class="Delimiter">(</span>Memory<span class="Delimiter">,</span> base_address<span class="Delimiter">))</span> <span class="Delimiter">{</span>
-<span id="L363" class="LineNr">363 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span><a href='026call.cc.html#L85'>current_recipe_name</a><span class="Delimiter">())</span> &lt;&lt; <span class="Constant">&quot;invalid index &quot;</span> &lt;&lt; no_scientific<span class="Delimiter">(</span>index_val<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">))</span> &lt;&lt; <span class="Constant">&quot; in '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>current_instruction<span class="Delimiter">())</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L363" class="LineNr">363 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span><a href='026call.cc.html#L87'>current_recipe_name</a><span class="Delimiter">())</span> &lt;&lt; <span class="Constant">&quot;invalid index &quot;</span> &lt;&lt; no_scientific<span class="Delimiter">(</span>index_val<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">))</span> &lt;&lt; <span class="Constant">&quot; in '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>current_instruction<span class="Delimiter">())</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L364" class="LineNr">364 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L365" class="LineNr">365 </span>  <span class="Delimiter">}</span>
 <span id="L366" class="LineNr">366 </span>  reagent<span class="Comment">/*</span><span class="Comment">local</span><span class="Comment">*/</span> element<span class="Delimiter">;</span>
 <span id="L367" class="LineNr">367 </span>  element<span class="Delimiter">.</span>type = <a href='032array.cc.html#L377'>copy_array_element</a><span class="Delimiter">(</span>base<span class="Delimiter">.</span>type<span class="Delimiter">);</span>
 <span id="L368" class="LineNr">368 </span>  element<span class="Delimiter">.</span><a href='010vm.cc.html#L65'>set_value</a><span class="Delimiter">(</span>base_address + <span class="Comment">/*</span><span class="Comment">skip length</span><span class="Comment">*/</span><span class="Constant">1</span> + index_val<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">)</span>*size_of<span class="Delimiter">(</span>element<span class="Delimiter">.</span>type<span class="Delimiter">));</span>
-<span id="L369" class="LineNr">369 </span>  <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">9998</span><span class="Delimiter">,</span> <span class="Constant">&quot;run&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;address to copy is &quot;</span> &lt;&lt; element<span class="Delimiter">.</span>value &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
-<span id="L370" class="LineNr">370 </span>  <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">9998</span><span class="Delimiter">,</span> <span class="Constant">&quot;run&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;its type is &quot;</span> &lt;&lt; <a href='028call_return.cc.html#L163'>to_string</a><span class="Delimiter">(</span>element<span class="Delimiter">.</span>type<span class="Delimiter">)</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L369" class="LineNr">369 </span>  <a href='003trace.cc.html#L167'>trace</a><span class="Delimiter">(</span><span class="Constant">9998</span><span class="Delimiter">,</span> <span class="Constant">&quot;run&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;address to copy is &quot;</span> &lt;&lt; element<span class="Delimiter">.</span>value &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
+<span id="L370" class="LineNr">370 </span>  <a href='003trace.cc.html#L167'>trace</a><span class="Delimiter">(</span><span class="Constant">9998</span><span class="Delimiter">,</span> <span class="Constant">&quot;run&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;its type is &quot;</span> &lt;&lt; <a href='028call_return.cc.html#L163'>to_string</a><span class="Delimiter">(</span>element<span class="Delimiter">.</span>type<span class="Delimiter">)</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L371" class="LineNr">371 </span>  <span class="Comment">// Read element</span>
 <span id="L372" class="LineNr">372 </span>  products<span class="Delimiter">.</span>push_back<span class="Delimiter">(</span>read_memory<span class="Delimiter">(</span>element<span class="Delimiter">));</span>
 <span id="L373" class="LineNr">373 </span>  <span class="Identifier">break</span><span class="Delimiter">;</span>
@@ -571,19 +571,19 @@ if ('onhashchange' in window) {
 <span id="L506" class="LineNr">506 </span><span class="Delimiter">:(before &quot;End Primitive Recipe Checks&quot;)</span>
 <span id="L507" class="LineNr">507 </span><span class="Normal">case</span> PUT_INDEX: <span class="Delimiter">{</span>
 <span id="L508" class="LineNr">508 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">)</span> != <span class="Constant">3</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L509" class="LineNr">509 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'put-index' expects exactly 3 ingredients in '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L509" class="LineNr">509 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'put-index' expects exactly 3 ingredients in '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L510" class="LineNr">510 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L511" class="LineNr">511 </span>  <span class="Delimiter">}</span>
 <span id="L512" class="LineNr">512 </span>  reagent<span class="Comment">/*</span><span class="Comment">copy</span><span class="Comment">*/</span> base = inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">);</span>
 <span id="L513" class="LineNr">513 </span>  <span class="Comment">// Update PUT_INDEX base in Check</span>
 <span id="L514" class="LineNr">514 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!is_mu_array<span class="Delimiter">(</span>base<span class="Delimiter">))</span> <span class="Delimiter">{</span>
-<span id="L515" class="LineNr">515 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'put-index' on a non-array '&quot;</span> &lt;&lt; base<span class="Delimiter">.</span>original_string &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L515" class="LineNr">515 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'put-index' on a non-array '&quot;</span> &lt;&lt; base<span class="Delimiter">.</span>original_string &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L516" class="LineNr">516 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L517" class="LineNr">517 </span>  <span class="Delimiter">}</span>
 <span id="L518" class="LineNr">518 </span>  reagent<span class="Comment">/*</span><span class="Comment">copy</span><span class="Comment">*/</span> index = inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">1</span><span class="Delimiter">);</span>
 <span id="L519" class="LineNr">519 </span>  <span class="Comment">// Update PUT_INDEX index in Check</span>
 <span id="L520" class="LineNr">520 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!is_mu_number<span class="Delimiter">(</span>index<span class="Delimiter">))</span> <span class="Delimiter">{</span>
-<span id="L521" class="LineNr">521 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;second ingredient of 'put-index' should have type 'number', but got '&quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">1</span><span class="Delimiter">).</span>original_string &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L521" class="LineNr">521 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;second ingredient of 'put-index' should have type 'number', but got '&quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">1</span><span class="Delimiter">).</span>original_string &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L522" class="LineNr">522 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L523" class="LineNr">523 </span>  <span class="Delimiter">}</span>
 <span id="L524" class="LineNr">524 </span>  reagent<span class="Comment">/*</span><span class="Comment">copy</span><span class="Comment">*/</span> value = inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">2</span><span class="Delimiter">);</span>
@@ -591,12 +591,12 @@ if ('onhashchange' in window) {
 <span id="L526" class="LineNr">526 </span>  reagent<span class="Comment">/*</span><span class="Comment">local</span><span class="Comment">*/</span> element<span class="Delimiter">;</span>
 <span id="L527" class="LineNr">527 </span>  element<span class="Delimiter">.</span>type = <a href='032array.cc.html#L377'>copy_array_element</a><span class="Delimiter">(</span>base<span class="Delimiter">.</span>type<span class="Delimiter">);</span>
 <span id="L528" class="LineNr">528 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!types_coercible<span class="Delimiter">(</span>element<span class="Delimiter">,</span> value<span class="Delimiter">))</span> <span class="Delimiter">{</span>
-<span id="L529" class="LineNr">529 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'put-index &quot;</span> &lt;&lt; base<span class="Delimiter">.</span>original_string &lt;&lt; <span class="Constant">&quot;, &quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">1</span><span class="Delimiter">).</span>original_string &lt;&lt; <span class="Constant">&quot;' should store &quot;</span> &lt;&lt; names_to_string_without_quotes<span class="Delimiter">(</span>element<span class="Delimiter">.</span>type<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot; but '&quot;</span> &lt;&lt; value<span class="Delimiter">.</span>name &lt;&lt; <span class="Constant">&quot;' has type &quot;</span> &lt;&lt; names_to_string_without_quotes<span class="Delimiter">(</span>value<span class="Delimiter">.</span>type<span class="Delimiter">)</span> &lt;&lt; <span class="cSpecial">'\n'</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L529" class="LineNr">529 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'put-index &quot;</span> &lt;&lt; base<span class="Delimiter">.</span>original_string &lt;&lt; <span class="Constant">&quot;, &quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">1</span><span class="Delimiter">).</span>original_string &lt;&lt; <span class="Constant">&quot;' should store &quot;</span> &lt;&lt; names_to_string_without_quotes<span class="Delimiter">(</span>element<span class="Delimiter">.</span>type<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot; but '&quot;</span> &lt;&lt; value<span class="Delimiter">.</span>name &lt;&lt; <span class="Constant">&quot;' has type &quot;</span> &lt;&lt; names_to_string_without_quotes<span class="Delimiter">(</span>value<span class="Delimiter">.</span>type<span class="Delimiter">)</span> &lt;&lt; <span class="cSpecial">'\n'</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L530" class="LineNr">530 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L531" class="LineNr">531 </span>  <span class="Delimiter">}</span>
 <span id="L532" class="LineNr">532 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>empty<span class="Delimiter">())</span> <span class="Identifier">break</span><span class="Delimiter">;</span>  <span class="Comment">// no more checks necessary</span>
 <span id="L533" class="LineNr">533 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>name != inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>name<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L534" class="LineNr">534 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;product of 'put-index' must be first ingredient '&quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>original_string &lt;&lt; <span class="Constant">&quot;', but got '&quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>original_string &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L534" class="LineNr">534 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;product of 'put-index' must be first ingredient '&quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>original_string &lt;&lt; <span class="Constant">&quot;', but got '&quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>original_string &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L535" class="LineNr">535 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L536" class="LineNr">536 </span>  <span class="Delimiter">}</span>
 <span id="L537" class="LineNr">537 </span>  <span class="Comment">// End PUT_INDEX Product Checks</span>
@@ -604,29 +604,29 @@ if ('onhashchange' in window) {
 <span id="L539" class="LineNr">539 </span><span class="Delimiter">}</span>
 <span id="L540" class="LineNr">540 </span><span class="Delimiter">:(before &quot;End Primitive Recipe Implementations&quot;)</span>
 <span id="L541" class="LineNr">541 </span><span class="Normal">case</span> PUT_INDEX: <span class="Delimiter">{</span>
-<span id="L542" class="LineNr">542 </span>  reagent<span class="Comment">/*</span><span class="Comment">copy</span><span class="Comment">*/</span> base = <a href='026call.cc.html#L87'>current_instruction</a><span class="Delimiter">().</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">);</span>
+<span id="L542" class="LineNr">542 </span>  reagent<span class="Comment">/*</span><span class="Comment">copy</span><span class="Comment">*/</span> base = <a href='026call.cc.html#L89'>current_instruction</a><span class="Delimiter">().</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">);</span>
 <span id="L543" class="LineNr">543 </span>  <span class="Comment">// Update PUT_INDEX base in Run</span>
 <span id="L544" class="LineNr">544 </span>  <span class="Normal">int</span> base_address = base<span class="Delimiter">.</span>value<span class="Delimiter">;</span>
 <span id="L545" class="LineNr">545 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>base_address == <span class="Constant">0</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L546" class="LineNr">546 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span><a href='026call.cc.html#L85'>current_recipe_name</a><span class="Delimiter">())</span> &lt;&lt; <span class="Constant">&quot;tried to access location 0 in '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>current_instruction<span class="Delimiter">())</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L546" class="LineNr">546 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span><a href='026call.cc.html#L87'>current_recipe_name</a><span class="Delimiter">())</span> &lt;&lt; <span class="Constant">&quot;tried to access location 0 in '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>current_instruction<span class="Delimiter">())</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L547" class="LineNr">547 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L548" class="LineNr">548 </span>  <span class="Delimiter">}</span>
-<span id="L549" class="LineNr">549 </span>  reagent<span class="Comment">/*</span><span class="Comment">copy</span><span class="Comment">*/</span> index = <a href='026call.cc.html#L87'>current_instruction</a><span class="Delimiter">().</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">1</span><span class="Delimiter">);</span>
+<span id="L549" class="LineNr">549 </span>  reagent<span class="Comment">/*</span><span class="Comment">copy</span><span class="Comment">*/</span> index = <a href='026call.cc.html#L89'>current_instruction</a><span class="Delimiter">().</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">1</span><span class="Delimiter">);</span>
 <span id="L550" class="LineNr">550 </span>  <span class="Comment">// Update PUT_INDEX index in Run</span>
 <span id="L551" class="LineNr">551 </span>  vector&lt;<span class="Normal">double</span>&gt; index_val<span class="Delimiter">(</span>read_memory<span class="Delimiter">(</span>index<span class="Delimiter">));</span>
 <span id="L552" class="LineNr">552 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>index_val<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">)</span> &lt; <span class="Constant">0</span> || index_val<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">)</span> &gt;= <a href='001help.cc.html#L229'>get_or_insert</a><span class="Delimiter">(</span>Memory<span class="Delimiter">,</span> base_address<span class="Delimiter">))</span> <span class="Delimiter">{</span>
-<span id="L553" class="LineNr">553 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span><a href='026call.cc.html#L85'>current_recipe_name</a><span class="Delimiter">())</span> &lt;&lt; <span class="Constant">&quot;invalid index &quot;</span> &lt;&lt; no_scientific<span class="Delimiter">(</span>index_val<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">))</span> &lt;&lt; <span class="Constant">&quot; in '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>current_instruction<span class="Delimiter">())</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L553" class="LineNr">553 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span><a href='026call.cc.html#L87'>current_recipe_name</a><span class="Delimiter">())</span> &lt;&lt; <span class="Constant">&quot;invalid index &quot;</span> &lt;&lt; no_scientific<span class="Delimiter">(</span>index_val<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">))</span> &lt;&lt; <span class="Constant">&quot; in '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>current_instruction<span class="Delimiter">())</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L554" class="LineNr">554 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L555" class="LineNr">555 </span>  <span class="Delimiter">}</span>
 <span id="L556" class="LineNr">556 </span>  <span class="Normal">int</span> <a href='043space.cc.html#L82'>address</a> = base_address + <span class="Comment">/*</span><span class="Comment">skip length</span><span class="Comment">*/</span><span class="Constant">1</span> + index_val<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">)</span>*size_of<span class="Delimiter">(</span><a href='032array.cc.html#L381'>array_element</a><span class="Delimiter">(</span>base<span class="Delimiter">.</span>type<span class="Delimiter">));</span>
-<span id="L557" class="LineNr">557 </span>  <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">9998</span><span class="Delimiter">,</span> <span class="Constant">&quot;run&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;address to copy to is &quot;</span> &lt;&lt; <a href='043space.cc.html#L82'>address</a> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L557" class="LineNr">557 </span>  <a href='003trace.cc.html#L167'>trace</a><span class="Delimiter">(</span><span class="Constant">9998</span><span class="Delimiter">,</span> <span class="Constant">&quot;run&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;address to copy to is &quot;</span> &lt;&lt; <a href='043space.cc.html#L82'>address</a> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L558" class="LineNr">558 </span>  <span class="Comment">// optimization: directly write the element rather than updating 'product'</span>
 <span id="L559" class="LineNr">559 </span>  <span class="Comment">// and writing the entire array</span>
 <span id="L560" class="LineNr">560 </span>  write_products = <span class="Constant">false</span><span class="Delimiter">;</span>
-<span id="L561" class="LineNr">561 </span>  vector&lt;<span class="Normal">double</span>&gt; value = read_memory<span class="Delimiter">(</span><a href='026call.cc.html#L87'>current_instruction</a><span class="Delimiter">().</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">2</span><span class="Delimiter">));</span>
+<span id="L561" class="LineNr">561 </span>  vector&lt;<span class="Normal">double</span>&gt; value = read_memory<span class="Delimiter">(</span><a href='026call.cc.html#L89'>current_instruction</a><span class="Delimiter">().</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">2</span><span class="Delimiter">));</span>
 <span id="L562" class="LineNr">562 </span>  <span class="Comment">// Write Memory in PUT_INDEX in Run</span>
 <span id="L563" class="LineNr">563 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> i = <span class="Constant">0</span><span class="Delimiter">;</span>  i &lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>value<span class="Delimiter">);</span>  ++i<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L564" class="LineNr">564 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">&quot;mem&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;storing &quot;</span> &lt;&lt; no_scientific<span class="Delimiter">(</span>value<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">))</span> &lt;&lt; <span class="Constant">&quot; in location &quot;</span> &lt;&lt; address+i &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L564" class="LineNr">564 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L167'>trace</a><span class="Delimiter">(</span><span class="Constant">&quot;mem&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;storing &quot;</span> &lt;&lt; no_scientific<span class="Delimiter">(</span>value<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">))</span> &lt;&lt; <span class="Constant">&quot; in location &quot;</span> &lt;&lt; address+i &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L565" class="LineNr">565 </span>  <span class="Conceal">¦</span> <a href='001help.cc.html#L221'>put</a><span class="Delimiter">(</span>Memory<span class="Delimiter">,</span> address+i<span class="Delimiter">,</span> value<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">));</span>
 <span id="L566" class="LineNr">566 </span>  <span class="Delimiter">}</span>
 <span id="L567" class="LineNr">567 </span>  <span class="Identifier">break</span><span class="Delimiter">;</span>
@@ -691,23 +691,23 @@ if ('onhashchange' in window) {
 <span id="L626" class="LineNr">626 </span><span class="Delimiter">:(before &quot;End Primitive Recipe Checks&quot;)</span>
 <span id="L627" class="LineNr">627 </span><span class="Normal">case</span> LENGTH: <span class="Delimiter">{</span>
 <span id="L628" class="LineNr">628 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">)</span> != <span class="Constant">1</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L629" class="LineNr">629 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'length' expects exactly 2 ingredients in '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L629" class="LineNr">629 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'length' expects exactly 2 ingredients in '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L630" class="LineNr">630 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L631" class="LineNr">631 </span>  <span class="Delimiter">}</span>
 <span id="L632" class="LineNr">632 </span>  reagent<span class="Comment">/*</span><span class="Comment">copy</span><span class="Comment">*/</span> array = inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">);</span>
 <span id="L633" class="LineNr">633 </span>  <span class="Comment">// Update LENGTH array in Check</span>
 <span id="L634" class="LineNr">634 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!is_mu_array<span class="Delimiter">(</span>array<span class="Delimiter">))</span> <span class="Delimiter">{</span>
-<span id="L635" class="LineNr">635 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <span class="Constant">&quot;tried to calculate length of non-array '&quot;</span> &lt;&lt; array<span class="Delimiter">.</span>original_string &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L635" class="LineNr">635 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <span class="Constant">&quot;tried to calculate length of non-array '&quot;</span> &lt;&lt; array<span class="Delimiter">.</span>original_string &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L636" class="LineNr">636 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L637" class="LineNr">637 </span>  <span class="Delimiter">}</span>
 <span id="L638" class="LineNr">638 </span>  <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L639" class="LineNr">639 </span><span class="Delimiter">}</span>
 <span id="L640" class="LineNr">640 </span><span class="Delimiter">:(before &quot;End Primitive Recipe Implementations&quot;)</span>
 <span id="L641" class="LineNr">641 </span><span class="Normal">case</span> LENGTH: <span class="Delimiter">{</span>
-<span id="L642" class="LineNr">642 </span>  reagent<span class="Comment">/*</span><span class="Comment">copy</span><span class="Comment">*/</span> array = <a href='026call.cc.html#L87'>current_instruction</a><span class="Delimiter">().</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">);</span>
+<span id="L642" class="LineNr">642 </span>  reagent<span class="Comment">/*</span><span class="Comment">copy</span><span class="Comment">*/</span> array = <a href='026call.cc.html#L89'>current_instruction</a><span class="Delimiter">().</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">);</span>
 <span id="L643" class="LineNr">643 </span>  <span class="Comment">// Update LENGTH array in Run</span>
 <span id="L644" class="LineNr">644 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>array<span class="Delimiter">.</span>value == <span class="Constant">0</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L645" class="LineNr">645 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span><a href='026call.cc.html#L85'>current_recipe_name</a><span class="Delimiter">())</span> &lt;&lt; <span class="Constant">&quot;tried to access location 0 in '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>current_instruction<span class="Delimiter">())</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L645" class="LineNr">645 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span><a href='026call.cc.html#L87'>current_recipe_name</a><span class="Delimiter">())</span> &lt;&lt; <span class="Constant">&quot;tried to access location 0 in '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>current_instruction<span class="Delimiter">())</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L646" class="LineNr">646 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L647" class="LineNr">647 </span>  <span class="Delimiter">}</span>
 <span id="L648" class="LineNr">648 </span>  products<span class="Delimiter">.</span>resize<span class="Delimiter">(</span><span class="Constant">1</span><span class="Delimiter">);</span>
@@ -718,7 +718,7 @@ if ('onhashchange' in window) {
 <span id="L653" class="LineNr">653 </span><span class="Comment">//: optimization: none of the instructions in this layer use 'ingredients' so</span>
 <span id="L654" class="LineNr">654 </span><span class="Comment">//: stop copying potentially huge arrays into it.</span>
 <span id="L655" class="LineNr">655 </span><span class="Delimiter">:(before &quot;End should_copy_ingredients Special-cases&quot;)</span>
-<span id="L656" class="LineNr">656 </span><a href='010vm.cc.html#L14'>recipe_ordinal</a> r = <a href='026call.cc.html#L87'>current_instruction</a><span class="Delimiter">().</span>operation<span class="Delimiter">;</span>
+<span id="L656" class="LineNr">656 </span><a href='010vm.cc.html#L14'>recipe_ordinal</a> r = <a href='026call.cc.html#L89'>current_instruction</a><span class="Delimiter">().</span>operation<span class="Delimiter">;</span>
 <span id="L657" class="LineNr">657 </span><span class="Normal">if</span> <span class="Delimiter">(</span>r == CREATE_ARRAY || r == INDEX || r == PUT_INDEX || r == LENGTH<span class="Delimiter">)</span>
 <span id="L658" class="LineNr">658 </span>  <span class="Identifier">return</span> <span class="Constant">false</span><span class="Delimiter">;</span>
 </pre>
diff --git a/html/033exclusive_container.cc.html b/html/033exclusive_container.cc.html
index 6c5e11d2..9543caa7 100644
--- a/html/033exclusive_container.cc.html
+++ b/html/033exclusive_container.cc.html
@@ -165,28 +165,28 @@ if ('onhashchange' in window) {
 <span id="L100" class="LineNr">100 </span><span class="Normal">case</span> MAYBE_CONVERT: <span class="Delimiter">{</span>
 <span id="L101" class="LineNr">101 </span>  <span class="Normal">const</span> recipe&amp; caller = get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">);</span>
 <span id="L102" class="LineNr">102 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">)</span> != <span class="Constant">2</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L103" class="LineNr">103 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>caller<span class="Delimiter">.</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'maybe-convert' expects exactly 2 ingredients in '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L103" class="LineNr">103 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>caller<span class="Delimiter">.</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'maybe-convert' expects exactly 2 ingredients in '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L104" class="LineNr">104 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L105" class="LineNr">105 </span>  <span class="Delimiter">}</span>
 <span id="L106" class="LineNr">106 </span>  reagent<span class="Comment">/*</span><span class="Comment">copy</span><span class="Comment">*/</span> base = inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">);</span>
 <span id="L107" class="LineNr">107 </span>  <span class="Comment">// Update MAYBE_CONVERT base in Check</span>
 <span id="L108" class="LineNr">108 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!base<span class="Delimiter">.</span>type<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L109" class="LineNr">109 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>caller<span class="Delimiter">.</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;first ingredient of 'maybe-convert' should be an exclusive-container, but got '&quot;</span> &lt;&lt; base<span class="Delimiter">.</span>original_string &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L109" class="LineNr">109 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>caller<span class="Delimiter">.</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;first ingredient of 'maybe-convert' should be an exclusive-container, but got '&quot;</span> &lt;&lt; base<span class="Delimiter">.</span>original_string &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L110" class="LineNr">110 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L111" class="LineNr">111 </span>  <span class="Delimiter">}</span>
 <span id="L112" class="LineNr">112 </span>  <span class="Normal">const</span> type_tree* base_type = base<span class="Delimiter">.</span>type<span class="Delimiter">;</span>
 <span id="L113" class="LineNr">113 </span>  <span class="Comment">// Update MAYBE_CONVERT base_type in Check</span>
 <span id="L114" class="LineNr">114 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!base_type<span class="Delimiter">-&gt;</span>atom || base_type<span class="Delimiter">-&gt;</span>value == <span class="Constant">0</span> || !contains_key<span class="Delimiter">(</span>Type<span class="Delimiter">,</span> base_type<span class="Delimiter">-&gt;</span>value<span class="Delimiter">)</span> || get<span class="Delimiter">(</span>Type<span class="Delimiter">,</span> base_type<span class="Delimiter">-&gt;</span>value<span class="Delimiter">).</span>kind != <a href='010vm.cc.html#L174'>EXCLUSIVE_CONTAINER</a><span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L115" class="LineNr">115 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>caller<span class="Delimiter">.</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;first ingredient of 'maybe-convert' should be an exclusive-container, but got '&quot;</span> &lt;&lt; base<span class="Delimiter">.</span>original_string &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L115" class="LineNr">115 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>caller<span class="Delimiter">.</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;first ingredient of 'maybe-convert' should be an exclusive-container, but got '&quot;</span> &lt;&lt; base<span class="Delimiter">.</span>original_string &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L116" class="LineNr">116 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L117" class="LineNr">117 </span>  <span class="Delimiter">}</span>
 <span id="L118" class="LineNr">118 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!is_literal<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">1</span><span class="Delimiter">)))</span> <span class="Delimiter">{</span>
-<span id="L119" class="LineNr">119 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>caller<span class="Delimiter">.</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;second ingredient of 'maybe-convert' should have type 'variant', but got '&quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">1</span><span class="Delimiter">).</span>original_string &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L119" class="LineNr">119 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>caller<span class="Delimiter">.</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;second ingredient of 'maybe-convert' should have type 'variant', but got '&quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">1</span><span class="Delimiter">).</span>original_string &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L120" class="LineNr">120 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L121" class="LineNr">121 </span>  <span class="Delimiter">}</span>
 <span id="L122" class="LineNr">122 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>empty<span class="Delimiter">())</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L123" class="LineNr">123 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>products<span class="Delimiter">)</span> != <span class="Constant">2</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L124" class="LineNr">124 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>caller<span class="Delimiter">.</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'maybe-convert' expects exactly 2 products in '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L124" class="LineNr">124 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>caller<span class="Delimiter">.</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'maybe-convert' expects exactly 2 products in '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L125" class="LineNr">125 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L126" class="LineNr">126 </span>  <span class="Delimiter">}</span>
 <span id="L127" class="LineNr">127 </span>  reagent<span class="Comment">/*</span><span class="Comment">copy</span><span class="Comment">*/</span> product = inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">);</span>
@@ -194,53 +194,53 @@ if ('onhashchange' in window) {
 <span id="L129" class="LineNr">129 </span>  reagent&amp; offset = inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">1</span><span class="Delimiter">);</span>
 <span id="L130" class="LineNr">130 </span>  <a href='012transform.cc.html#L91'>populate_value</a><span class="Delimiter">(</span>offset<span class="Delimiter">);</span>
 <span id="L131" class="LineNr">131 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>offset<span class="Delimiter">.</span>value &gt;= <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Type<span class="Delimiter">,</span> base_type<span class="Delimiter">-&gt;</span>value<span class="Delimiter">).</span>elements<span class="Delimiter">))</span> <span class="Delimiter">{</span>
-<span id="L132" class="LineNr">132 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>caller<span class="Delimiter">.</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;invalid tag &quot;</span> &lt;&lt; offset<span class="Delimiter">.</span>value &lt;&lt; <span class="Constant">&quot; in '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="cSpecial">'\n'</span> &lt;&lt; end<span class="Delimiter">();</span>
+<span id="L132" class="LineNr">132 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>caller<span class="Delimiter">.</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;invalid tag &quot;</span> &lt;&lt; offset<span class="Delimiter">.</span>value &lt;&lt; <span class="Constant">&quot; in '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="cSpecial">'\n'</span> &lt;&lt; end<span class="Delimiter">();</span>
 <span id="L133" class="LineNr">133 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L134" class="LineNr">134 </span>  <span class="Delimiter">}</span>
 <span id="L135" class="LineNr">135 </span>  <span class="Normal">const</span> reagent&amp; variant = variant_type<span class="Delimiter">(</span>base<span class="Delimiter">,</span> offset<span class="Delimiter">.</span>value<span class="Delimiter">);</span>
 <span id="L136" class="LineNr">136 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!types_coercible<span class="Delimiter">(</span>product<span class="Delimiter">,</span> variant<span class="Delimiter">))</span> <span class="Delimiter">{</span>
-<span id="L137" class="LineNr">137 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>caller<span class="Delimiter">.</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'maybe-convert &quot;</span> &lt;&lt; base<span class="Delimiter">.</span>original_string &lt;&lt; <span class="Constant">&quot;, &quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">1</span><span class="Delimiter">).</span>original_string &lt;&lt; <span class="Constant">&quot;' should write to &quot;</span> &lt;&lt; <a href='028call_return.cc.html#L163'>to_string</a><span class="Delimiter">(</span>variant<span class="Delimiter">.</span>type<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot; but '&quot;</span> &lt;&lt; product<span class="Delimiter">.</span>name &lt;&lt; <span class="Constant">&quot;' has type &quot;</span> &lt;&lt; <a href='028call_return.cc.html#L163'>to_string</a><span class="Delimiter">(</span>product<span class="Delimiter">.</span>type<span class="Delimiter">)</span> &lt;&lt; <span class="cSpecial">'\n'</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L137" class="LineNr">137 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>caller<span class="Delimiter">.</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'maybe-convert &quot;</span> &lt;&lt; base<span class="Delimiter">.</span>original_string &lt;&lt; <span class="Constant">&quot;, &quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">1</span><span class="Delimiter">).</span>original_string &lt;&lt; <span class="Constant">&quot;' should write to &quot;</span> &lt;&lt; <a href='028call_return.cc.html#L163'>to_string</a><span class="Delimiter">(</span>variant<span class="Delimiter">.</span>type<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot; but '&quot;</span> &lt;&lt; product<span class="Delimiter">.</span>name &lt;&lt; <span class="Constant">&quot;' has type &quot;</span> &lt;&lt; <a href='028call_return.cc.html#L163'>to_string</a><span class="Delimiter">(</span>product<span class="Delimiter">.</span>type<span class="Delimiter">)</span> &lt;&lt; <span class="cSpecial">'\n'</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L138" class="LineNr">138 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L139" class="LineNr">139 </span>  <span class="Delimiter">}</span>
 <span id="L140" class="LineNr">140 </span>  reagent<span class="Comment">/*</span><span class="Comment">copy</span><span class="Comment">*/</span> status = inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">1</span><span class="Delimiter">);</span>
 <span id="L141" class="LineNr">141 </span>  <span class="Comment">// Update MAYBE_CONVERT status in Check</span>
 <span id="L142" class="LineNr">142 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!is_mu_boolean<span class="Delimiter">(</span>status<span class="Delimiter">))</span> <span class="Delimiter">{</span>
-<span id="L143" class="LineNr">143 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;second product yielded by 'maybe-convert' should be a boolean, but tried to write to '&quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">1</span><span class="Delimiter">).</span>original_string &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L143" class="LineNr">143 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;second product yielded by 'maybe-convert' should be a boolean, but tried to write to '&quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">1</span><span class="Delimiter">).</span>original_string &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L144" class="LineNr">144 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L145" class="LineNr">145 </span>  <span class="Delimiter">}</span>
 <span id="L146" class="LineNr">146 </span>  <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L147" class="LineNr">147 </span><span class="Delimiter">}</span>
 <span id="L148" class="LineNr">148 </span><span class="Delimiter">:(before &quot;End Primitive Recipe Implementations&quot;)</span>
 <span id="L149" class="LineNr">149 </span><span class="Normal">case</span> MAYBE_CONVERT: <span class="Delimiter">{</span>
-<span id="L150" class="LineNr">150 </span>  reagent<span class="Comment">/*</span><span class="Comment">copy</span><span class="Comment">*/</span> base = <a href='026call.cc.html#L87'>current_instruction</a><span class="Delimiter">().</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">);</span>
+<span id="L150" class="LineNr">150 </span>  reagent<span class="Comment">/*</span><span class="Comment">copy</span><span class="Comment">*/</span> base = <a href='026call.cc.html#L89'>current_instruction</a><span class="Delimiter">().</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">);</span>
 <span id="L151" class="LineNr">151 </span>  <span class="Comment">// Update MAYBE_CONVERT base in Run</span>
 <span id="L152" class="LineNr">152 </span>  <span class="Normal">int</span> base_address = base<span class="Delimiter">.</span>value<span class="Delimiter">;</span>
 <span id="L153" class="LineNr">153 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>base_address == <span class="Constant">0</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L154" class="LineNr">154 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span><a href='026call.cc.html#L85'>current_recipe_name</a><span class="Delimiter">())</span> &lt;&lt; <span class="Constant">&quot;tried to access location 0 in '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>current_instruction<span class="Delimiter">())</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L154" class="LineNr">154 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span><a href='026call.cc.html#L87'>current_recipe_name</a><span class="Delimiter">())</span> &lt;&lt; <span class="Constant">&quot;tried to access location 0 in '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>current_instruction<span class="Delimiter">())</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L155" class="LineNr">155 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L156" class="LineNr">156 </span>  <span class="Delimiter">}</span>
-<span id="L157" class="LineNr">157 </span>  <span class="Normal">int</span> tag = <a href='026call.cc.html#L87'>current_instruction</a><span class="Delimiter">().</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">1</span><span class="Delimiter">).</span>value<span class="Delimiter">;</span>
-<span id="L158" class="LineNr">158 </span>  reagent<span class="Comment">/*</span><span class="Comment">copy</span><span class="Comment">*/</span> product = <a href='026call.cc.html#L87'>current_instruction</a><span class="Delimiter">().</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">);</span>
+<span id="L157" class="LineNr">157 </span>  <span class="Normal">int</span> tag = <a href='026call.cc.html#L89'>current_instruction</a><span class="Delimiter">().</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">1</span><span class="Delimiter">).</span>value<span class="Delimiter">;</span>
+<span id="L158" class="LineNr">158 </span>  reagent<span class="Comment">/*</span><span class="Comment">copy</span><span class="Comment">*/</span> product = <a href='026call.cc.html#L89'>current_instruction</a><span class="Delimiter">().</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">);</span>
 <span id="L159" class="LineNr">159 </span>  <span class="Comment">// Update MAYBE_CONVERT product in Run</span>
-<span id="L160" class="LineNr">160 </span>  reagent<span class="Comment">/*</span><span class="Comment">copy</span><span class="Comment">*/</span> status = <a href='026call.cc.html#L87'>current_instruction</a><span class="Delimiter">().</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">1</span><span class="Delimiter">);</span>
+<span id="L160" class="LineNr">160 </span>  reagent<span class="Comment">/*</span><span class="Comment">copy</span><span class="Comment">*/</span> status = <a href='026call.cc.html#L89'>current_instruction</a><span class="Delimiter">().</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">1</span><span class="Delimiter">);</span>
 <span id="L161" class="LineNr">161 </span>  <span class="Comment">// Update MAYBE_CONVERT status in Run</span>
 <span id="L162" class="LineNr">162 </span>  <span class="Comment">// optimization: directly write results to only update first product when necessary</span>
 <span id="L163" class="LineNr">163 </span>  write_products = <span class="Constant">false</span><span class="Delimiter">;</span>
 <span id="L164" class="LineNr">164 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>tag == <span class="Normal">static_cast</span>&lt;<span class="Normal">int</span>&gt;<span class="Delimiter">(</span><a href='001help.cc.html#L229'>get_or_insert</a><span class="Delimiter">(</span>Memory<span class="Delimiter">,</span> base_address<span class="Delimiter">)))</span> <span class="Delimiter">{</span>
 <span id="L165" class="LineNr">165 </span>  <span class="Conceal">¦</span> <span class="Normal">const</span> reagent&amp; variant = variant_type<span class="Delimiter">(</span>base<span class="Delimiter">,</span> tag<span class="Delimiter">);</span>
-<span id="L166" class="LineNr">166 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">&quot;mem&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;storing 1 in location &quot;</span> &lt;&lt; status<span class="Delimiter">.</span>value &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L166" class="LineNr">166 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L167'>trace</a><span class="Delimiter">(</span><span class="Constant">&quot;mem&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;storing 1 in location &quot;</span> &lt;&lt; status<span class="Delimiter">.</span>value &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L167" class="LineNr">167 </span>  <span class="Conceal">¦</span> <a href='001help.cc.html#L221'>put</a><span class="Delimiter">(</span>Memory<span class="Delimiter">,</span> status<span class="Delimiter">.</span>value<span class="Delimiter">,</span> <span class="Constant">1</span><span class="Delimiter">);</span>
 <span id="L168" class="LineNr">168 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>!is_dummy<span class="Delimiter">(</span>product<span class="Delimiter">))</span> <span class="Delimiter">{</span>
 <span id="L169" class="LineNr">169 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Comment">// Write Memory in Successful MAYBE_CONVERT in Run</span>
 <span id="L170" class="LineNr">170 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> i = <span class="Constant">0</span><span class="Delimiter">;</span>  i &lt; size_of<span class="Delimiter">(</span>variant<span class="Delimiter">);</span>  ++i<span class="Delimiter">)</span> <span class="Delimiter">{</span>
 <span id="L171" class="LineNr">171 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">double</span> val = <a href='001help.cc.html#L229'>get_or_insert</a><span class="Delimiter">(</span>Memory<span class="Delimiter">,</span> base_address+<span class="Comment">/*</span><span class="Comment">skip tag</span><span class="Comment">*/</span><span class="Constant">1</span>+i<span class="Delimiter">);</span>
-<span id="L172" class="LineNr">172 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">&quot;mem&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;storing &quot;</span> &lt;&lt; no_scientific<span class="Delimiter">(</span>val<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot; in location &quot;</span> &lt;&lt; product<span class="Delimiter">.</span>value+i &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L172" class="LineNr">172 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L167'>trace</a><span class="Delimiter">(</span><span class="Constant">&quot;mem&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;storing &quot;</span> &lt;&lt; no_scientific<span class="Delimiter">(</span>val<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot; in location &quot;</span> &lt;&lt; product<span class="Delimiter">.</span>value+i &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L173" class="LineNr">173 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='001help.cc.html#L221'>put</a><span class="Delimiter">(</span>Memory<span class="Delimiter">,</span> product<span class="Delimiter">.</span>value+i<span class="Delimiter">,</span> val<span class="Delimiter">);</span>
 <span id="L174" class="LineNr">174 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Delimiter">}</span>
 <span id="L175" class="LineNr">175 </span>  <span class="Conceal">¦</span> <span class="Delimiter">}</span>
 <span id="L176" class="LineNr">176 </span>  <span class="Delimiter">}</span>
 <span id="L177" class="LineNr">177 </span>  <span class="Normal">else</span> <span class="Delimiter">{</span>
-<span id="L178" class="LineNr">178 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">&quot;mem&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;storing 0 in location &quot;</span> &lt;&lt; status<span class="Delimiter">.</span>value &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L178" class="LineNr">178 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L167'>trace</a><span class="Delimiter">(</span><span class="Constant">&quot;mem&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;storing 0 in location &quot;</span> &lt;&lt; status<span class="Delimiter">.</span>value &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L179" class="LineNr">179 </span>  <span class="Conceal">¦</span> <a href='001help.cc.html#L221'>put</a><span class="Delimiter">(</span>Memory<span class="Delimiter">,</span> status<span class="Delimiter">.</span>value<span class="Delimiter">,</span> <span class="Constant">0</span><span class="Delimiter">);</span>
 <span id="L180" class="LineNr">180 </span>  <span class="Delimiter">}</span>
 <span id="L181" class="LineNr">181 </span>  <span class="Identifier">break</span><span class="Delimiter">;</span>
@@ -383,22 +383,22 @@ if ('onhashchange' in window) {
 <span id="L318" class="LineNr">318 </span><span class="Delimiter">:(before &quot;End <a href='031merge.cc.html#L142'>check_merge_call</a> Special-cases&quot;)</span>
 <span id="L319" class="LineNr">319 </span><span class="Normal">case</span> <a href='010vm.cc.html#L174'>EXCLUSIVE_CONTAINER</a>: <span class="Delimiter">{</span>
 <span id="L320" class="LineNr">320 </span>  assert<span class="Delimiter">(</span>state<span class="Delimiter">.</span>data<span class="Delimiter">.</span>top<span class="Delimiter">().</span>container_element_index == <span class="Constant">0</span><span class="Delimiter">);</span>
-<span id="L321" class="LineNr">321 </span>  <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">&quot;transform&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;checking exclusive container &quot;</span> &lt;&lt; <a href='028call_return.cc.html#L163'>to_string</a><span class="Delimiter">(</span>container<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot; vs ingredient &quot;</span> &lt;&lt; ingredient_index &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L321" class="LineNr">321 </span>  <a href='003trace.cc.html#L167'>trace</a><span class="Delimiter">(</span><span class="Constant">&quot;transform&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;checking exclusive container &quot;</span> &lt;&lt; <a href='028call_return.cc.html#L163'>to_string</a><span class="Delimiter">(</span>container<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot; vs ingredient &quot;</span> &lt;&lt; ingredient_index &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L322" class="LineNr">322 </span>  <span class="Comment">// easy case: exact match</span>
 <span id="L323" class="LineNr">323 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>types_strictly_match<span class="Delimiter">(</span>container<span class="Delimiter">,</span> inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>ingredient_index<span class="Delimiter">)))</span>
 <span id="L324" class="LineNr">324 </span>  <span class="Conceal">¦</span> <span class="Identifier">return</span><span class="Delimiter">;</span>
 <span id="L325" class="LineNr">325 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!is_literal<span class="Delimiter">(</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>ingredient_index<span class="Delimiter">)))</span> <span class="Delimiter">{</span>
-<span id="L326" class="LineNr">326 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>caller<span class="Delimiter">.</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;ingredient &quot;</span> &lt;&lt; ingredient_index &lt;&lt; <span class="Constant">&quot; of 'merge' should be a literal, for the tag of exclusive-container '&quot;</span> &lt;&lt; container_info<span class="Delimiter">.</span>name &lt;&lt; <span class="Constant">&quot;' in '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L326" class="LineNr">326 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>caller<span class="Delimiter">.</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;ingredient &quot;</span> &lt;&lt; ingredient_index &lt;&lt; <span class="Constant">&quot; of 'merge' should be a literal, for the tag of exclusive-container '&quot;</span> &lt;&lt; container_info<span class="Delimiter">.</span>name &lt;&lt; <span class="Constant">&quot;' in '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L327" class="LineNr">327 </span>  <span class="Conceal">¦</span> <span class="Identifier">return</span><span class="Delimiter">;</span>
 <span id="L328" class="LineNr">328 </span>  <span class="Delimiter">}</span>
 <span id="L329" class="LineNr">329 </span>  reagent<span class="Comment">/*</span><span class="Comment">copy</span><span class="Comment">*/</span> ingredient = ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>ingredient_index<span class="Delimiter">);</span>  <span class="Comment">// unnecessary copy just to keep this function from modifying caller</span>
 <span id="L330" class="LineNr">330 </span>  <a href='012transform.cc.html#L91'>populate_value</a><span class="Delimiter">(</span>ingredient<span class="Delimiter">);</span>
 <span id="L331" class="LineNr">331 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>ingredient<span class="Delimiter">.</span>value &gt;= <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>container_info<span class="Delimiter">.</span>elements<span class="Delimiter">))</span> <span class="Delimiter">{</span>
-<span id="L332" class="LineNr">332 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>caller<span class="Delimiter">.</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;invalid tag at &quot;</span> &lt;&lt; ingredient_index &lt;&lt; <span class="Constant">&quot; for '&quot;</span> &lt;&lt; container_info<span class="Delimiter">.</span>name &lt;&lt; <span class="Constant">&quot;' in '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L332" class="LineNr">332 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>caller<span class="Delimiter">.</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;invalid tag at &quot;</span> &lt;&lt; ingredient_index &lt;&lt; <span class="Constant">&quot; for '&quot;</span> &lt;&lt; container_info<span class="Delimiter">.</span>name &lt;&lt; <span class="Constant">&quot;' in '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L333" class="LineNr">333 </span>  <span class="Conceal">¦</span> <span class="Identifier">return</span><span class="Delimiter">;</span>
 <span id="L334" class="LineNr">334 </span>  <span class="Delimiter">}</span>
 <span id="L335" class="LineNr">335 </span>  <span class="Normal">const</span> reagent&amp; variant = variant_type<span class="Delimiter">(</span>container<span class="Delimiter">,</span> ingredient<span class="Delimiter">.</span>value<span class="Delimiter">);</span>
-<span id="L336" class="LineNr">336 </span>  <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">&quot;transform&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;tag: &quot;</span> &lt;&lt; ingredient<span class="Delimiter">.</span>value &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L336" class="LineNr">336 </span>  <a href='003trace.cc.html#L167'>trace</a><span class="Delimiter">(</span><span class="Constant">&quot;transform&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;tag: &quot;</span> &lt;&lt; ingredient<span class="Delimiter">.</span>value &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L337" class="LineNr">337 </span>  <span class="Comment">// replace union with its variant</span>
 <span id="L338" class="LineNr">338 </span>  state<span class="Delimiter">.</span>data<span class="Delimiter">.</span>pop<span class="Delimiter">();</span>
 <span id="L339" class="LineNr">339 </span>  state<span class="Delimiter">.</span>data<span class="Delimiter">.</span>push<span class="Delimiter">(</span>merge_check_point<span class="Delimiter">(</span>variant<span class="Delimiter">,</span> <span class="Constant">0</span><span class="Delimiter">));</span>
@@ -502,11 +502,11 @@ if ('onhashchange' in window) {
 <span id="L437" class="LineNr">437 </span><span class="Comment">//: Since the different variants of an exclusive-container might have</span>
 <span id="L438" class="LineNr">438 </span><span class="Comment">//: different sizes, relax the size mismatch check for 'merge' instructions.</span>
 <span id="L439" class="LineNr">439 </span><span class="Delimiter">:(before &quot;End size_mismatch(x) Special-cases&quot;)</span>
-<span id="L440" class="LineNr">440 </span><span class="Normal">if</span> <span class="Delimiter">(</span><a href='026call.cc.html#L82'>current_step_index</a><span class="Delimiter">()</span> &lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>Current_routine<span class="Delimiter">-&gt;</span>steps<span class="Delimiter">())</span>
-<span id="L441" class="LineNr">441 </span>  <span class="Conceal">¦</span> &amp;&amp; <a href='026call.cc.html#L87'>current_instruction</a><span class="Delimiter">().</span>operation == MERGE
+<span id="L440" class="LineNr">440 </span><span class="Normal">if</span> <span class="Delimiter">(</span><a href='026call.cc.html#L84'>current_step_index</a><span class="Delimiter">()</span> &lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>Current_routine<span class="Delimiter">-&gt;</span>steps<span class="Delimiter">())</span>
+<span id="L441" class="LineNr">441 </span>  <span class="Conceal">¦</span> &amp;&amp; <a href='026call.cc.html#L89'>current_instruction</a><span class="Delimiter">().</span>operation == MERGE
 <span id="L442" class="LineNr">442 </span>  <span class="Conceal">¦</span> &amp;&amp; !current_instruction<span class="Delimiter">().</span>products<span class="Delimiter">.</span>empty<span class="Delimiter">()</span>
-<span id="L443" class="LineNr">443 </span>  <span class="Conceal">¦</span> &amp;&amp; <a href='026call.cc.html#L87'>current_instruction</a><span class="Delimiter">().</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>type<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L444" class="LineNr">444 </span>  reagent<span class="Comment">/*</span><span class="Comment">copy</span><span class="Comment">*/</span> x = <a href='026call.cc.html#L87'>current_instruction</a><span class="Delimiter">().</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">);</span>
+<span id="L443" class="LineNr">443 </span>  <span class="Conceal">¦</span> &amp;&amp; <a href='026call.cc.html#L89'>current_instruction</a><span class="Delimiter">().</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>type<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L444" class="LineNr">444 </span>  reagent<span class="Comment">/*</span><span class="Comment">copy</span><span class="Comment">*/</span> x = <a href='026call.cc.html#L89'>current_instruction</a><span class="Delimiter">().</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">);</span>
 <span id="L445" class="LineNr">445 </span>  <span class="Comment">// Update size_mismatch Check for MERGE(x)</span>
 <span id="L446" class="LineNr">446 </span>  <span class="Normal">const</span> type_tree* root_type = x<span class="Delimiter">.</span>type<span class="Delimiter">-&gt;</span>atom ? x<span class="Delimiter">.</span>type : x<span class="Delimiter">.</span>type<span class="Delimiter">-&gt;</span>left<span class="Delimiter">;</span>
 <span id="L447" class="LineNr">447 </span>  assert<span class="Delimiter">(</span>root_type<span class="Delimiter">-&gt;</span>atom<span class="Delimiter">);</span>
diff --git a/html/034address.cc.html b/html/034address.cc.html
index 6f4d708e..2ad1f7a4 100644
--- a/html/034address.cc.html
+++ b/html/034address.cc.html
@@ -227,25 +227,25 @@ if ('onhashchange' in window) {
 <span id="L163" class="LineNr">163 </span><span class="Normal">case</span> NEW: <span class="Delimiter">{</span>
 <span id="L164" class="LineNr">164 </span>  <span class="Normal">const</span> recipe&amp; caller = get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">);</span>
 <span id="L165" class="LineNr">165 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>empty<span class="Delimiter">()</span> || <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">)</span> &gt; <span class="Constant">2</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L166" class="LineNr">166 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>caller<span class="Delimiter">.</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'new' requires one or two ingredients, but got '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L166" class="LineNr">166 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>caller<span class="Delimiter">.</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'new' requires one or two ingredients, but got '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L167" class="LineNr">167 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L168" class="LineNr">168 </span>  <span class="Delimiter">}</span>
 <span id="L169" class="LineNr">169 </span>  <span class="Comment">// End NEW Check Special-cases</span>
 <span id="L170" class="LineNr">170 </span>  <span class="Normal">const</span> reagent&amp; type = inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">);</span>
 <span id="L171" class="LineNr">171 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!is_mu_type_literal<span class="Delimiter">(</span>type<span class="Delimiter">))</span> <span class="Delimiter">{</span>
-<span id="L172" class="LineNr">172 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>caller<span class="Delimiter">.</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;first ingredient of 'new' should be a type, but got '&quot;</span> &lt;&lt; type<span class="Delimiter">.</span>original_string &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L172" class="LineNr">172 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>caller<span class="Delimiter">.</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;first ingredient of 'new' should be a type, but got '&quot;</span> &lt;&lt; type<span class="Delimiter">.</span>original_string &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L173" class="LineNr">173 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L174" class="LineNr">174 </span>  <span class="Delimiter">}</span>
 <span id="L175" class="LineNr">175 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">)</span> &gt; <span class="Constant">1</span> &amp;&amp; !is_mu_number<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">1</span><span class="Delimiter">)))</span> <span class="Delimiter">{</span>
-<span id="L176" class="LineNr">176 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>caller<span class="Delimiter">.</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;second ingredient of 'new' should be a number (array length), but got '&quot;</span> &lt;&lt; type<span class="Delimiter">.</span>original_string &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L176" class="LineNr">176 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>caller<span class="Delimiter">.</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;second ingredient of 'new' should be a number (array length), but got '&quot;</span> &lt;&lt; type<span class="Delimiter">.</span>original_string &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L177" class="LineNr">177 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L178" class="LineNr">178 </span>  <span class="Delimiter">}</span>
 <span id="L179" class="LineNr">179 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>empty<span class="Delimiter">())</span> <span class="Delimiter">{</span>
-<span id="L180" class="LineNr">180 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>caller<span class="Delimiter">.</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;result of 'new' should never be ignored</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L180" class="LineNr">180 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>caller<span class="Delimiter">.</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;result of 'new' should never be ignored</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L181" class="LineNr">181 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L182" class="LineNr">182 </span>  <span class="Delimiter">}</span>
 <span id="L183" class="LineNr">183 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!product_of_new_is_valid<span class="Delimiter">(</span>inst<span class="Delimiter">))</span> <span class="Delimiter">{</span>
-<span id="L184" class="LineNr">184 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>caller<span class="Delimiter">.</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;product of 'new' has incorrect type: '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L184" class="LineNr">184 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>caller<span class="Delimiter">.</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;product of 'new' has incorrect type: '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L185" class="LineNr">185 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L186" class="LineNr">186 </span>  <span class="Delimiter">}</span>
 <span id="L187" class="LineNr">187 </span>  <span class="Identifier">break</span><span class="Delimiter">;</span>
@@ -271,7 +271,7 @@ if ('onhashchange' in window) {
 <span id="L207" class="LineNr">207 </span><span class="Normal">void</span> drop_from_type<span class="Delimiter">(</span>reagent&amp; r<span class="Delimiter">,</span> string expected_type<span class="Delimiter">)</span> <span class="Delimiter">{</span>
 <span id="L208" class="LineNr">208 </span>  assert<span class="Delimiter">(</span>!r<span class="Delimiter">.</span>type<span class="Delimiter">-&gt;</span>atom<span class="Delimiter">);</span>
 <span id="L209" class="LineNr">209 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>r<span class="Delimiter">.</span>type<span class="Delimiter">-&gt;</span>left<span class="Delimiter">-&gt;</span>name != expected_type<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L210" class="LineNr">210 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <span class="Constant">&quot;can't drop2 &quot;</span> &lt;&lt; expected_type &lt;&lt; <span class="Constant">&quot; from '&quot;</span> &lt;&lt; <a href='028call_return.cc.html#L163'>to_string</a><span class="Delimiter">(</span>r<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; end<span class="Delimiter">();</span>
+<span id="L210" class="LineNr">210 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <span class="Constant">&quot;can't drop2 &quot;</span> &lt;&lt; expected_type &lt;&lt; <span class="Constant">&quot; from '&quot;</span> &lt;&lt; <a href='028call_return.cc.html#L163'>to_string</a><span class="Delimiter">(</span>r<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; end<span class="Delimiter">();</span>
 <span id="L211" class="LineNr">211 </span>  <span class="Conceal">¦</span> <span class="Identifier">return</span><span class="Delimiter">;</span>
 <span id="L212" class="LineNr">212 </span>  <span class="Delimiter">}</span>
 <span id="L213" class="LineNr">213 </span>  <span class="Comment">// r.type = r.type-&gt;right</span>
@@ -322,12 +322,12 @@ if ('onhashchange' in window) {
 <span id="L258" class="LineNr">258 </span><span class="Comment">//: instructions left after the transforms have run.</span>
 <span id="L259" class="LineNr">259 </span><span class="Delimiter">:(before &quot;End Primitive Recipe Checks&quot;)</span>
 <span id="L260" class="LineNr">260 </span><span class="Normal">case</span> ALLOCATE: <span class="Delimiter">{</span>
-<span id="L261" class="LineNr">261 </span>  <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <span class="Constant">&quot;never call 'allocate' directly'; always use 'new'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; end<span class="Delimiter">();</span>
+<span id="L261" class="LineNr">261 </span>  <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <span class="Constant">&quot;never call 'allocate' directly'; always use 'new'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; end<span class="Delimiter">();</span>
 <span id="L262" class="LineNr">262 </span>  <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L263" class="LineNr">263 </span><span class="Delimiter">}</span>
 <span id="L264" class="LineNr">264 </span><span class="Delimiter">:(before &quot;End Primitive Recipe Implementations&quot;)</span>
 <span id="L265" class="LineNr">265 </span><span class="Normal">case</span> NEW: <span class="Delimiter">{</span>
-<span id="L266" class="LineNr">266 </span>  <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <span class="Constant">&quot;no implementation for 'new'; why wasn't it translated to 'allocate'? Please save a copy of your program and send it to Kartik.</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; end<span class="Delimiter">();</span>
+<span id="L266" class="LineNr">266 </span>  <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <span class="Constant">&quot;no implementation for 'new'; why wasn't it translated to 'allocate'? Please save a copy of your program and send it to Kartik.</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; end<span class="Delimiter">();</span>
 <span id="L267" class="LineNr">267 </span>  <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L268" class="LineNr">268 </span><span class="Delimiter">}</span>
 <span id="L269" class="LineNr">269 </span>
@@ -336,7 +336,7 @@ if ('onhashchange' in window) {
 <span id="L272" class="LineNr">272 </span>
 <span id="L273" class="LineNr">273 </span><span class="Delimiter">:(code)</span>
 <span id="L274" class="LineNr">274 </span><span class="Normal">void</span> transform_new_to_allocate<span class="Delimiter">(</span><span class="Normal">const</span> <a href='010vm.cc.html#L14'>recipe_ordinal</a> r<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L275" class="LineNr">275 </span>  <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">9991</span><span class="Delimiter">,</span> <span class="Constant">&quot;transform&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;--- convert 'new' to 'allocate' for <a href='010vm.cc.html#L19'>recipe</a> &quot;</span> &lt;&lt; get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L275" class="LineNr">275 </span>  <a href='003trace.cc.html#L167'>trace</a><span class="Delimiter">(</span><span class="Constant">9991</span><span class="Delimiter">,</span> <span class="Constant">&quot;transform&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;--- convert 'new' to 'allocate' for <a href='010vm.cc.html#L19'>recipe</a> &quot;</span> &lt;&lt; get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L276" class="LineNr">276 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> i = <span class="Constant">0</span><span class="Delimiter">;</span>  i &lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>steps<span class="Delimiter">);</span>  ++i<span class="Delimiter">)</span> <span class="Delimiter">{</span>
 <span id="L277" class="LineNr">277 </span>  <span class="Conceal">¦</span> instruction&amp; inst = get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>steps<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">);</span>
 <span id="L278" class="LineNr">278 </span>  <span class="Conceal">¦</span> <span class="Comment">// Convert 'new' To 'allocate'</span>
@@ -345,7 +345,7 @@ if ('onhashchange' in window) {
 <span id="L281" class="LineNr">281 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> inst<span class="Delimiter">.</span>operation = ALLOCATE<span class="Delimiter">;</span>
 <span id="L282" class="LineNr">282 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> type_tree* type = <a href='018type_abbreviations.cc.html#L58'>new_type_tree</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>name<span class="Delimiter">);</span>
 <span id="L283" class="LineNr">283 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span><a href='010vm.cc.html#L65'>set_value</a><span class="Delimiter">(</span>size_of<span class="Delimiter">(</span>type<span class="Delimiter">));</span>
-<span id="L284" class="LineNr">284 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">9992</span><span class="Delimiter">,</span> <span class="Constant">&quot;new&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;size of '&quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>name &lt;&lt; <span class="Constant">&quot;' is &quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>value &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L284" class="LineNr">284 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L167'>trace</a><span class="Delimiter">(</span><span class="Constant">9992</span><span class="Delimiter">,</span> <span class="Constant">&quot;new&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;size of '&quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>name &lt;&lt; <span class="Constant">&quot;' is &quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>value &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L285" class="LineNr">285 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">delete</span> type<span class="Delimiter">;</span>
 <span id="L286" class="LineNr">286 </span>  <span class="Conceal">¦</span> <span class="Delimiter">}</span>
 <span id="L287" class="LineNr">287 </span>  <span class="Delimiter">}</span>
@@ -366,7 +366,7 @@ if ('onhashchange' in window) {
 <span id="L302" class="LineNr">302 </span>alloc = Memory_allocated_until<span class="Delimiter">;</span>
 <span id="L303" class="LineNr">303 </span>Memory_allocated_until += Initial_memory_per_routine<span class="Delimiter">;</span>
 <span id="L304" class="LineNr">304 </span>alloc_max = Memory_allocated_until<span class="Delimiter">;</span>
-<span id="L305" class="LineNr">305 </span><a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">&quot;new&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;routine allocated memory from &quot;</span> &lt;&lt; alloc &lt;&lt; <span class="Constant">&quot; to &quot;</span> &lt;&lt; alloc_max &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L305" class="LineNr">305 </span><a href='003trace.cc.html#L167'>trace</a><span class="Delimiter">(</span><span class="Constant">&quot;new&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;routine allocated memory from &quot;</span> &lt;&lt; alloc &lt;&lt; <span class="Constant">&quot; to &quot;</span> &lt;&lt; alloc_max &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L306" class="LineNr">306 </span>
 <span id="L307" class="LineNr">307 </span><span class="Delimiter">:(before &quot;End Primitive Recipe Declarations&quot;)</span>
 <span id="L308" class="LineNr">308 </span>ALLOCATE<span class="Delimiter">,</span>
@@ -378,13 +378,13 @@ if ('onhashchange' in window) {
 <span id="L314" class="LineNr">314 </span>  <span class="Normal">int</span> size = ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">);</span>
 <span id="L315" class="LineNr">315 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>ingredients<span class="Delimiter">)</span> &gt; <span class="Constant">1</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
 <span id="L316" class="LineNr">316 </span>  <span class="Conceal">¦</span> <span class="Comment">// array allocation</span>
-<span id="L317" class="LineNr">317 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">&quot;mem&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;array length is &quot;</span> &lt;&lt; ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">1</span><span class="Delimiter">).</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">)</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L317" class="LineNr">317 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L167'>trace</a><span class="Delimiter">(</span><span class="Constant">&quot;mem&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;array length is &quot;</span> &lt;&lt; ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">1</span><span class="Delimiter">).</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">)</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L318" class="LineNr">318 </span>  <span class="Conceal">¦</span> size = <span class="Comment">/*</span><span class="Comment">space for length</span><span class="Comment">*/</span><span class="Constant">1</span> + size*ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">1</span><span class="Delimiter">).</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">);</span>
 <span id="L319" class="LineNr">319 </span>  <span class="Delimiter">}</span>
 <span id="L320" class="LineNr">320 </span>  <span class="Normal">int</span> result = allocate<span class="Delimiter">(</span>size<span class="Delimiter">);</span>
-<span id="L321" class="LineNr">321 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span><a href='026call.cc.html#L87'>current_instruction</a><span class="Delimiter">().</span>ingredients<span class="Delimiter">)</span> &gt; <span class="Constant">1</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L321" class="LineNr">321 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span><a href='026call.cc.html#L89'>current_instruction</a><span class="Delimiter">().</span>ingredients<span class="Delimiter">)</span> &gt; <span class="Constant">1</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
 <span id="L322" class="LineNr">322 </span>  <span class="Conceal">¦</span> <span class="Comment">// initialize array length</span>
-<span id="L323" class="LineNr">323 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">&quot;mem&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;storing &quot;</span> &lt;&lt; ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">1</span><span class="Delimiter">).</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot; in location &quot;</span> &lt;&lt; result+<span class="Comment">/*</span><span class="Comment">skip refcount</span><span class="Comment">*/</span><span class="Constant">1</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L323" class="LineNr">323 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L167'>trace</a><span class="Delimiter">(</span><span class="Constant">&quot;mem&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;storing &quot;</span> &lt;&lt; ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">1</span><span class="Delimiter">).</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot; in location &quot;</span> &lt;&lt; result+<span class="Comment">/*</span><span class="Comment">skip refcount</span><span class="Comment">*/</span><span class="Constant">1</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L324" class="LineNr">324 </span>  <span class="Conceal">¦</span> <a href='001help.cc.html#L221'>put</a><span class="Delimiter">(</span>Memory<span class="Delimiter">,</span> result+<span class="Comment">/*</span><span class="Comment">skip refcount</span><span class="Comment">*/</span><span class="Constant">1</span><span class="Delimiter">,</span> ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">1</span><span class="Delimiter">).</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">));</span>
 <span id="L325" class="LineNr">325 </span>  <span class="Delimiter">}</span>
 <span id="L326" class="LineNr">326 </span>  products<span class="Delimiter">.</span>resize<span class="Delimiter">(</span><span class="Constant">1</span><span class="Delimiter">);</span>
@@ -395,7 +395,7 @@ if ('onhashchange' in window) {
 <span id="L331" class="LineNr">331 </span><span class="Normal">int</span> allocate<span class="Delimiter">(</span><span class="Normal">int</span> size<span class="Delimiter">)</span> <span class="Delimiter">{</span>
 <span id="L332" class="LineNr">332 </span>  <span class="Comment">// include space for refcount</span>
 <span id="L333" class="LineNr">333 </span>  ++size<span class="Delimiter">;</span>
-<span id="L334" class="LineNr">334 </span>  <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">&quot;mem&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;allocating size &quot;</span> &lt;&lt; size &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L334" class="LineNr">334 </span>  <a href='003trace.cc.html#L167'>trace</a><span class="Delimiter">(</span><span class="Constant">&quot;mem&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;allocating size &quot;</span> &lt;&lt; size &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L335" class="LineNr">335 </span><span class="CommentedCode">//?   Total_alloc += size;</span>
 <span id="L336" class="LineNr">336 </span><span class="CommentedCode">//?   ++Num_alloc;</span>
 <span id="L337" class="LineNr">337 </span>  <span class="Comment">// Allocate Special-cases</span>
@@ -403,10 +403,10 @@ if ('onhashchange' in window) {
 <span id="L339" class="LineNr">339 </span>  <span class="Comment">// really crappy at the moment</span>
 <span id="L340" class="LineNr">340 </span>  ensure_space<span class="Delimiter">(</span>size<span class="Delimiter">);</span>
 <span id="L341" class="LineNr">341 </span>  <span class="Normal">const</span> <span class="Normal">int</span> result = Current_routine<span class="Delimiter">-&gt;</span>alloc<span class="Delimiter">;</span>
-<span id="L342" class="LineNr">342 </span>  <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">&quot;mem&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;new alloc: &quot;</span> &lt;&lt; result &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L342" class="LineNr">342 </span>  <a href='003trace.cc.html#L167'>trace</a><span class="Delimiter">(</span><span class="Constant">&quot;mem&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;new alloc: &quot;</span> &lt;&lt; result &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L343" class="LineNr">343 </span>  <span class="Comment">// initialize allocated space</span>
 <span id="L344" class="LineNr">344 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> <a href='043space.cc.html#L82'>address</a> = result<span class="Delimiter">;</span>  <a href='043space.cc.html#L82'>address</a> &lt; result+size<span class="Delimiter">;</span>  ++address<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L345" class="LineNr">345 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">&quot;mem&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;storing 0 in location &quot;</span> &lt;&lt; <a href='043space.cc.html#L82'>address</a> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L345" class="LineNr">345 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L167'>trace</a><span class="Delimiter">(</span><span class="Constant">&quot;mem&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;storing 0 in location &quot;</span> &lt;&lt; <a href='043space.cc.html#L82'>address</a> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L346" class="LineNr">346 </span>  <span class="Conceal">¦</span> <a href='001help.cc.html#L221'>put</a><span class="Delimiter">(</span>Memory<span class="Delimiter">,</span> <a href='043space.cc.html#L82'>address</a><span class="Delimiter">,</span> <span class="Constant">0</span><span class="Delimiter">);</span>
 <span id="L347" class="LineNr">347 </span>  <span class="Delimiter">}</span>
 <span id="L348" class="LineNr">348 </span>  Current_routine<span class="Delimiter">-&gt;</span>alloc += size<span class="Delimiter">;</span>
@@ -440,7 +440,7 @@ if ('onhashchange' in window) {
 <span id="L376" class="LineNr">376 </span>  <span class="Conceal">¦</span> Current_routine<span class="Delimiter">-&gt;</span>alloc = Memory_allocated_until<span class="Delimiter">;</span>
 <span id="L377" class="LineNr">377 </span>  <span class="Conceal">¦</span> Memory_allocated_until += Initial_memory_per_routine<span class="Delimiter">;</span>
 <span id="L378" class="LineNr">378 </span>  <span class="Conceal">¦</span> Current_routine<span class="Delimiter">-&gt;</span>alloc_max = Memory_allocated_until<span class="Delimiter">;</span>
-<span id="L379" class="LineNr">379 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">&quot;new&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;routine allocated memory from &quot;</span> &lt;&lt; Current_routine<span class="Delimiter">-&gt;</span>alloc &lt;&lt; <span class="Constant">&quot; to &quot;</span> &lt;&lt; Current_routine<span class="Delimiter">-&gt;</span>alloc_max &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L379" class="LineNr">379 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L167'>trace</a><span class="Delimiter">(</span><span class="Constant">&quot;new&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;routine allocated memory from &quot;</span> &lt;&lt; Current_routine<span class="Delimiter">-&gt;</span>alloc &lt;&lt; <span class="Constant">&quot; to &quot;</span> &lt;&lt; Current_routine<span class="Delimiter">-&gt;</span>alloc_max &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L380" class="LineNr">380 </span>  <span class="Delimiter">}</span>
 <span id="L381" class="LineNr">381 </span><span class="Delimiter">}</span>
 <span id="L382" class="LineNr">382 </span>
diff --git a/html/035lookup.cc.html b/html/035lookup.cc.html
index e7fdca04..858f776b 100644
--- a/html/035lookup.cc.html
+++ b/html/035lookup.cc.html
@@ -151,12 +151,12 @@ if ('onhashchange' in window) {
 <span id="L86" class="LineNr"> 86 </span>
 <span id="L87" class="LineNr"> 87 </span><span class="Normal">void</span> lookup_memory<span class="Delimiter">(</span>reagent&amp; x<span class="Delimiter">)</span> <span class="Delimiter">{</span>
 <span id="L88" class="LineNr"> 88 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!x<span class="Delimiter">.</span>type || x<span class="Delimiter">.</span>type<span class="Delimiter">-&gt;</span>atom || x<span class="Delimiter">.</span>type<span class="Delimiter">-&gt;</span>left<span class="Delimiter">-&gt;</span>value != get<span class="Delimiter">(</span>Type_ordinal<span class="Delimiter">,</span> <span class="Constant">&quot;address&quot;</span><span class="Delimiter">))</span> <span class="Delimiter">{</span>
-<span id="L89" class="LineNr"> 89 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span><a href='026call.cc.html#L85'>current_recipe_name</a><span class="Delimiter">())</span> &lt;&lt; <span class="Constant">&quot;tried to /lookup '&quot;</span> &lt;&lt; x<span class="Delimiter">.</span>original_string &lt;&lt; <span class="Constant">&quot;' but it isn't an address</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; end<span class="Delimiter">();</span>
+<span id="L89" class="LineNr"> 89 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span><a href='026call.cc.html#L87'>current_recipe_name</a><span class="Delimiter">())</span> &lt;&lt; <span class="Constant">&quot;tried to /lookup '&quot;</span> &lt;&lt; x<span class="Delimiter">.</span>original_string &lt;&lt; <span class="Constant">&quot;' but it isn't an address</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; end<span class="Delimiter">();</span>
 <span id="L90" class="LineNr"> 90 </span>  <span class="Conceal">¦</span> <span class="Identifier">return</span><span class="Delimiter">;</span>
 <span id="L91" class="LineNr"> 91 </span>  <span class="Delimiter">}</span>
 <span id="L92" class="LineNr"> 92 </span>  <span class="Comment">// compute value</span>
 <span id="L93" class="LineNr"> 93 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>x<span class="Delimiter">.</span>value == <span class="Constant">0</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L94" class="LineNr"> 94 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span><a href='026call.cc.html#L85'>current_recipe_name</a><span class="Delimiter">())</span> &lt;&lt; <span class="Constant">&quot;tried to /lookup 0</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L94" class="LineNr"> 94 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span><a href='026call.cc.html#L87'>current_recipe_name</a><span class="Delimiter">())</span> &lt;&lt; <span class="Constant">&quot;tried to /lookup 0</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L95" class="LineNr"> 95 </span>  <span class="Conceal">¦</span> <span class="Identifier">return</span><span class="Delimiter">;</span>
 <span id="L96" class="LineNr"> 96 </span>  <span class="Delimiter">}</span>
 <span id="L97" class="LineNr"> 97 </span>  lookup_memory_core<span class="Delimiter">(</span>x<span class="Delimiter">,</span> <span class="Comment">/*</span><span class="Comment">check_for_null</span><span class="Comment">*/</span><span class="Constant">true</span><span class="Delimiter">);</span>
@@ -164,18 +164,18 @@ if ('onhashchange' in window) {
 <span id="L99" class="LineNr"> 99 </span>
 <span id="L100" class="LineNr">100 </span><span class="Normal">void</span> lookup_memory_core<span class="Delimiter">(</span>reagent&amp; x<span class="Delimiter">,</span> <span class="Normal">bool</span> check_for_null<span class="Delimiter">)</span> <span class="Delimiter">{</span>
 <span id="L101" class="LineNr">101 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>x<span class="Delimiter">.</span>value == <span class="Constant">0</span><span class="Delimiter">)</span> <span class="Identifier">return</span><span class="Delimiter">;</span>
-<span id="L102" class="LineNr">102 </span>  <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">&quot;mem&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;location &quot;</span> &lt;&lt; x<span class="Delimiter">.</span>value &lt;&lt; <span class="Constant">&quot; is &quot;</span> &lt;&lt; no_scientific<span class="Delimiter">(</span><a href='001help.cc.html#L229'>get_or_insert</a><span class="Delimiter">(</span>Memory<span class="Delimiter">,</span> x<span class="Delimiter">.</span>value<span class="Delimiter">))</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L102" class="LineNr">102 </span>  <a href='003trace.cc.html#L167'>trace</a><span class="Delimiter">(</span><span class="Constant">&quot;mem&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;location &quot;</span> &lt;&lt; x<span class="Delimiter">.</span>value &lt;&lt; <span class="Constant">&quot; is &quot;</span> &lt;&lt; no_scientific<span class="Delimiter">(</span><a href='001help.cc.html#L229'>get_or_insert</a><span class="Delimiter">(</span>Memory<span class="Delimiter">,</span> x<span class="Delimiter">.</span>value<span class="Delimiter">))</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L103" class="LineNr">103 </span>  x<span class="Delimiter">.</span><a href='010vm.cc.html#L65'>set_value</a><span class="Delimiter">(</span><a href='001help.cc.html#L229'>get_or_insert</a><span class="Delimiter">(</span>Memory<span class="Delimiter">,</span> x<span class="Delimiter">.</span>value<span class="Delimiter">));</span>
 <span id="L104" class="LineNr">104 </span>  drop_from_type<span class="Delimiter">(</span>x<span class="Delimiter">,</span> <span class="Constant">&quot;address&quot;</span><span class="Delimiter">);</span>
 <span id="L105" class="LineNr">105 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>x<span class="Delimiter">.</span>value<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L106" class="LineNr">106 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">&quot;mem&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;skipping refcount at &quot;</span> &lt;&lt; x<span class="Delimiter">.</span>value &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L106" class="LineNr">106 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L167'>trace</a><span class="Delimiter">(</span><span class="Constant">&quot;mem&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;skipping refcount at &quot;</span> &lt;&lt; x<span class="Delimiter">.</span>value &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L107" class="LineNr">107 </span>  <span class="Conceal">¦</span> x<span class="Delimiter">.</span><a href='010vm.cc.html#L65'>set_value</a><span class="Delimiter">(</span>x<span class="Delimiter">.</span>value+<span class="Constant">1</span><span class="Delimiter">);</span>  <span class="Comment">// skip refcount</span>
 <span id="L108" class="LineNr">108 </span>  <span class="Delimiter">}</span>
 <span id="L109" class="LineNr">109 </span>  <span class="Normal">else</span> <span class="Normal">if</span> <span class="Delimiter">(</span>check_for_null<span class="Delimiter">)</span> <span class="Delimiter">{</span>
 <span id="L110" class="LineNr">110 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>Current_routine<span class="Delimiter">)</span>
-<span id="L111" class="LineNr">111 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span><a href='026call.cc.html#L85'>current_recipe_name</a><span class="Delimiter">())</span> &lt;&lt; <span class="Constant">&quot;tried to /lookup 0 in '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>current_instruction<span class="Delimiter">())</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L111" class="LineNr">111 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span><a href='026call.cc.html#L87'>current_recipe_name</a><span class="Delimiter">())</span> &lt;&lt; <span class="Constant">&quot;tried to /lookup 0 in '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>current_instruction<span class="Delimiter">())</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L112" class="LineNr">112 </span>  <span class="Conceal">¦</span> <span class="Normal">else</span>
-<span id="L113" class="LineNr">113 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <span class="Constant">&quot;tried to /lookup 0</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L113" class="LineNr">113 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <span class="Constant">&quot;tried to /lookup 0</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L114" class="LineNr">114 </span>  <span class="Delimiter">}</span>
 <span id="L115" class="LineNr">115 </span>  drop_one_lookup<span class="Delimiter">(</span>x<span class="Delimiter">);</span>
 <span id="L116" class="LineNr">116 </span><span class="Delimiter">}</span>
@@ -185,7 +185,7 @@ if ('onhashchange' in window) {
 <span id="L120" class="LineNr">120 </span>  x<span class="Delimiter">.</span><a href='010vm.cc.html#L65'>set_value</a><span class="Delimiter">(</span><span class="Constant">34</span><span class="Delimiter">);</span>  <span class="Comment">// unsafe</span>
 <span id="L121" class="LineNr">121 </span>  <a href='001help.cc.html#L221'>put</a><span class="Delimiter">(</span>Memory<span class="Delimiter">,</span> <span class="Constant">34</span><span class="Delimiter">,</span> <span class="Constant">1000</span><span class="Delimiter">);</span>
 <span id="L122" class="LineNr">122 </span>  lookup_memory<span class="Delimiter">(</span>x<span class="Delimiter">);</span>
-<span id="L123" class="LineNr">123 </span>  <a href='003trace.cc.html#L230'>CHECK_TRACE_CONTENTS</a><span class="Delimiter">(</span><span class="Constant">&quot;mem: skipping refcount at 1000&quot;</span><span class="Delimiter">);</span>
+<span id="L123" class="LineNr">123 </span>  <a href='003trace.cc.html#L232'>CHECK_TRACE_CONTENTS</a><span class="Delimiter">(</span><span class="Constant">&quot;mem: skipping refcount at 1000&quot;</span><span class="Delimiter">);</span>
 <span id="L124" class="LineNr">124 </span>  <a href='002test.cc.html#L31'>CHECK_EQ</a><span class="Delimiter">(</span>x<span class="Delimiter">.</span>value<span class="Delimiter">,</span> <span class="Constant">1001</span><span class="Delimiter">);</span>
 <span id="L125" class="LineNr">125 </span><span class="Delimiter">}</span>
 <span id="L126" class="LineNr">126 </span>
@@ -195,7 +195,7 @@ if ('onhashchange' in window) {
 <span id="L130" class="LineNr">130 </span>  x<span class="Delimiter">.</span><a href='010vm.cc.html#L65'>set_value</a><span class="Delimiter">(</span><span class="Constant">34</span><span class="Delimiter">);</span>  <span class="Comment">// unsafe</span>
 <span id="L131" class="LineNr">131 </span>  <a href='001help.cc.html#L221'>put</a><span class="Delimiter">(</span>Memory<span class="Delimiter">,</span> <span class="Constant">34</span><span class="Delimiter">,</span> <span class="Constant">0</span><span class="Delimiter">);</span>
 <span id="L132" class="LineNr">132 </span>  lookup_memory<span class="Delimiter">(</span>x<span class="Delimiter">);</span>
-<span id="L133" class="LineNr">133 </span>  <a href='003trace.cc.html#L250'>CHECK_TRACE_DOESNT_CONTAIN</a><span class="Delimiter">(</span><span class="Constant">&quot;mem: skipping refcount at 0&quot;</span><span class="Delimiter">);</span>
+<span id="L133" class="LineNr">133 </span>  <a href='003trace.cc.html#L252'>CHECK_TRACE_DOESNT_CONTAIN</a><span class="Delimiter">(</span><span class="Constant">&quot;mem: skipping refcount at 0&quot;</span><span class="Delimiter">);</span>
 <span id="L134" class="LineNr">134 </span>  <a href='002test.cc.html#L31'>CHECK_EQ</a><span class="Delimiter">(</span>x<span class="Delimiter">.</span>value<span class="Delimiter">,</span> <span class="Constant">0</span><span class="Delimiter">);</span>
 <span id="L135" class="LineNr">135 </span><span class="Delimiter">}</span>
 <span id="L136" class="LineNr">136 </span>
@@ -239,7 +239,7 @@ if ('onhashchange' in window) {
 <span id="L174" class="LineNr">174 </span><span class="Normal">bool</span> canonize_type<span class="Delimiter">(</span>reagent&amp; r<span class="Delimiter">)</span> <span class="Delimiter">{</span>
 <span id="L175" class="LineNr">175 </span>  <span class="Normal">while</span> <span class="Delimiter">(</span>has_property<span class="Delimiter">(</span>r<span class="Delimiter">,</span> <span class="Constant">&quot;lookup&quot;</span><span class="Delimiter">))</span> <span class="Delimiter">{</span>
 <span id="L176" class="LineNr">176 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>!r<span class="Delimiter">.</span>type || r<span class="Delimiter">.</span>type<span class="Delimiter">-&gt;</span>atom || !r<span class="Delimiter">.</span>type<span class="Delimiter">-&gt;</span>left || !r<span class="Delimiter">.</span>type<span class="Delimiter">-&gt;</span>left<span class="Delimiter">-&gt;</span>atom || r<span class="Delimiter">.</span>type<span class="Delimiter">-&gt;</span>left<span class="Delimiter">-&gt;</span>value != get<span class="Delimiter">(</span>Type_ordinal<span class="Delimiter">,</span> <span class="Constant">&quot;address&quot;</span><span class="Delimiter">))</span> <span class="Delimiter">{</span>
-<span id="L177" class="LineNr">177 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <span class="Constant">&quot;cannot perform lookup on '&quot;</span> &lt;&lt; r<span class="Delimiter">.</span>name &lt;&lt; <span class="Constant">&quot;' because it has non-address type &quot;</span> &lt;&lt; <a href='028call_return.cc.html#L163'>to_string</a><span class="Delimiter">(</span>r<span class="Delimiter">.</span>type<span class="Delimiter">)</span> &lt;&lt; <span class="cSpecial">'\n'</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L177" class="LineNr">177 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <span class="Constant">&quot;cannot perform lookup on '&quot;</span> &lt;&lt; r<span class="Delimiter">.</span>name &lt;&lt; <span class="Constant">&quot;' because it has non-address type &quot;</span> &lt;&lt; <a href='028call_return.cc.html#L163'>to_string</a><span class="Delimiter">(</span>r<span class="Delimiter">.</span>type<span class="Delimiter">)</span> &lt;&lt; <span class="cSpecial">'\n'</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L178" class="LineNr">178 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Identifier">return</span> <span class="Constant">false</span><span class="Delimiter">;</span>
 <span id="L179" class="LineNr">179 </span>  <span class="Conceal">¦</span> <span class="Delimiter">}</span>
 <span id="L180" class="LineNr">180 </span>  <span class="Conceal">¦</span> drop_from_type<span class="Delimiter">(</span>r<span class="Delimiter">,</span> <span class="Constant">&quot;address&quot;</span><span class="Delimiter">);</span>
@@ -249,7 +249,7 @@ if ('onhashchange' in window) {
 <span id="L184" class="LineNr">184 </span><span class="Delimiter">}</span>
 <span id="L185" class="LineNr">185 </span>
 <span id="L186" class="LineNr">186 </span><span class="Normal">void</span> drop_one_lookup<span class="Delimiter">(</span>reagent&amp; r<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L187" class="LineNr">187 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span>vector&lt;pair&lt;string<span class="Delimiter">,</span> string_tree*&gt; &gt;::iterator p = r<span class="Delimiter">.</span>properties<span class="Delimiter">.</span>begin<span class="Delimiter">();</span>  p != r<span class="Delimiter">.</span>properties<span class="Delimiter">.</span><a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>  ++p<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L187" class="LineNr">187 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span>vector&lt;pair&lt;string<span class="Delimiter">,</span> string_tree*&gt; &gt;::iterator p = r<span class="Delimiter">.</span>properties<span class="Delimiter">.</span>begin<span class="Delimiter">();</span>  p != r<span class="Delimiter">.</span>properties<span class="Delimiter">.</span><a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>  ++p<span class="Delimiter">)</span> <span class="Delimiter">{</span>
 <span id="L188" class="LineNr">188 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>p<span class="Delimiter">-&gt;</span>first == <span class="Constant">&quot;lookup&quot;</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
 <span id="L189" class="LineNr">189 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> r<span class="Delimiter">.</span>properties<span class="Delimiter">.</span>erase<span class="Delimiter">(</span>p<span class="Delimiter">);</span>
 <span id="L190" class="LineNr">190 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Identifier">return</span><span class="Delimiter">;</span>
@@ -334,7 +334,7 @@ if ('onhashchange' in window) {
 <span id="L269" class="LineNr">269 </span>reagent<span class="Comment">/*</span><span class="Comment">copy</span><span class="Comment">*/</span> i = inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">);</span>
 <span id="L270" class="LineNr">270 </span><span class="Normal">if</span> <span class="Delimiter">(</span>!canonize_type<span class="Delimiter">(</span>i<span class="Delimiter">))</span> <span class="Identifier">break</span><span class="Delimiter">;</span>  <span class="Comment">// error raised elsewhere</span>
 <span id="L271" class="LineNr">271 </span><span class="Normal">if</span> <span class="Delimiter">(</span>!types_strictly_match<span class="Delimiter">(</span>p<span class="Delimiter">,</span> i<span class="Delimiter">))</span> <span class="Delimiter">{</span>
-<span id="L272" class="LineNr">272 </span>  <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;product of 'put' must be first ingredient '&quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>original_string &lt;&lt; <span class="Constant">&quot;', but got '&quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>original_string &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L272" class="LineNr">272 </span>  <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;product of 'put' must be first ingredient '&quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>original_string &lt;&lt; <span class="Constant">&quot;', but got '&quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>original_string &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L273" class="LineNr">273 </span>  <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L274" class="LineNr">274 </span><span class="Delimiter">}</span>
 <span id="L275" class="LineNr">275 </span>
@@ -444,7 +444,7 @@ if ('onhashchange' in window) {
 <span id="L379" class="LineNr">379 </span>reagent<span class="Comment">/*</span><span class="Comment">copy</span><span class="Comment">*/</span> i = inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">);</span>
 <span id="L380" class="LineNr">380 </span><span class="Normal">if</span> <span class="Delimiter">(</span>!canonize_type<span class="Delimiter">(</span>i<span class="Delimiter">))</span> <span class="Identifier">break</span><span class="Delimiter">;</span>  <span class="Comment">// error raised elsewhere</span>
 <span id="L381" class="LineNr">381 </span><span class="Normal">if</span> <span class="Delimiter">(</span>!types_strictly_match<span class="Delimiter">(</span>p<span class="Delimiter">,</span> i<span class="Delimiter">))</span> <span class="Delimiter">{</span>
-<span id="L382" class="LineNr">382 </span>  <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;product of 'put-index' must be first ingredient '&quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>original_string &lt;&lt; <span class="Constant">&quot;', but got '&quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>original_string &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L382" class="LineNr">382 </span>  <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;product of 'put-index' must be first ingredient '&quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>original_string &lt;&lt; <span class="Constant">&quot;', but got '&quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>original_string &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L383" class="LineNr">383 </span>  <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L384" class="LineNr">384 </span><span class="Delimiter">}</span>
 <span id="L385" class="LineNr">385 </span>
@@ -565,7 +565,7 @@ if ('onhashchange' in window) {
 <span id="L500" class="LineNr">500 </span>  <span class="Conceal">¦</span> properties<span class="Delimiter">.</span>push_back<span class="Delimiter">(</span>pair&lt;string<span class="Delimiter">,</span> string_tree*&gt;<span class="Delimiter">(</span><span class="Constant">&quot;lookup&quot;</span><span class="Delimiter">,</span> <span class="Constant">NULL</span><span class="Delimiter">));</span>
 <span id="L501" class="LineNr">501 </span>  <span class="Delimiter">}</span>
 <span id="L502" class="LineNr">502 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>name<span class="Delimiter">.</span>empty<span class="Delimiter">())</span>
-<span id="L503" class="LineNr">503 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <span class="Constant">&quot;illegal name '&quot;</span> &lt;&lt; original_string &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L503" class="LineNr">503 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <span class="Constant">&quot;illegal name '&quot;</span> &lt;&lt; original_string &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L504" class="LineNr">504 </span><span class="Delimiter">}</span>
 <span id="L505" class="LineNr">505 </span>
 <span id="L506" class="LineNr">506 </span><span class="SalientComment">//:: helpers for debugging</span>
@@ -576,9 +576,9 @@ if ('onhashchange' in window) {
 <span id="L511" class="LineNr">511 </span><a href='001help.cc.html#L221'>put</a><span class="Delimiter">(</span>Recipe_ordinal<span class="Delimiter">,</span> <span class="Constant">&quot;$dump&quot;</span><span class="Delimiter">,</span> _DUMP<span class="Delimiter">);</span>
 <span id="L512" class="LineNr">512 </span><span class="Delimiter">:(before &quot;End Primitive Recipe Implementations&quot;)</span>
 <span id="L513" class="LineNr">513 </span><span class="Normal">case</span> _DUMP: <span class="Delimiter">{</span>
-<span id="L514" class="LineNr">514 </span>  reagent<span class="Comment">/*</span><span class="Comment">copy</span><span class="Comment">*/</span> after_canonize = <a href='026call.cc.html#L87'>current_instruction</a><span class="Delimiter">().</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">);</span>
+<span id="L514" class="LineNr">514 </span>  reagent<span class="Comment">/*</span><span class="Comment">copy</span><span class="Comment">*/</span> after_canonize = <a href='026call.cc.html#L89'>current_instruction</a><span class="Delimiter">().</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">);</span>
 <span id="L515" class="LineNr">515 </span>  canonize<span class="Delimiter">(</span>after_canonize<span class="Delimiter">);</span>
-<span id="L516" class="LineNr">516 </span>  cerr &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span><a href='026call.cc.html#L85'>current_recipe_name</a><span class="Delimiter">())</span> &lt;&lt; <a href='026call.cc.html#L87'>current_instruction</a><span class="Delimiter">().</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>name &lt;&lt; <span class="Constant">' '</span> &lt;&lt; no_scientific<span class="Delimiter">(</span><a href='026call.cc.html#L87'>current_instruction</a><span class="Delimiter">().</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>value<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot; =&gt; &quot;</span> &lt;&lt; no_scientific<span class="Delimiter">(</span>after_canonize<span class="Delimiter">.</span>value<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot; =&gt; &quot;</span> &lt;&lt; no_scientific<span class="Delimiter">(</span><a href='001help.cc.html#L229'>get_or_insert</a><span class="Delimiter">(</span>Memory<span class="Delimiter">,</span> after_canonize<span class="Delimiter">.</span>value<span class="Delimiter">))</span> &lt;&lt; <span class="cSpecial">'\n'</span><span class="Delimiter">;</span>
+<span id="L516" class="LineNr">516 </span>  cerr &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span><a href='026call.cc.html#L87'>current_recipe_name</a><span class="Delimiter">())</span> &lt;&lt; <a href='026call.cc.html#L89'>current_instruction</a><span class="Delimiter">().</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>name &lt;&lt; <span class="Constant">' '</span> &lt;&lt; no_scientific<span class="Delimiter">(</span><a href='026call.cc.html#L89'>current_instruction</a><span class="Delimiter">().</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>value<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot; =&gt; &quot;</span> &lt;&lt; no_scientific<span class="Delimiter">(</span>after_canonize<span class="Delimiter">.</span>value<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot; =&gt; &quot;</span> &lt;&lt; no_scientific<span class="Delimiter">(</span><a href='001help.cc.html#L229'>get_or_insert</a><span class="Delimiter">(</span>Memory<span class="Delimiter">,</span> after_canonize<span class="Delimiter">.</span>value<span class="Delimiter">))</span> &lt;&lt; <span class="cSpecial">'\n'</span><span class="Delimiter">;</span>
 <span id="L517" class="LineNr">517 </span>  <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L518" class="LineNr">518 </span><span class="Delimiter">}</span>
 <span id="L519" class="LineNr">519 </span>
@@ -592,12 +592,12 @@ if ('onhashchange' in window) {
 <span id="L527" class="LineNr">527 </span><a href='001help.cc.html#L221'>put</a><span class="Delimiter">(</span>Recipe_ordinal<span class="Delimiter">,</span> <span class="Constant">&quot;$bar&quot;</span><span class="Delimiter">,</span> _BAR<span class="Delimiter">);</span>
 <span id="L528" class="LineNr">528 </span><span class="Delimiter">:(before &quot;End Primitive Recipe Implementations&quot;)</span>
 <span id="L529" class="LineNr">529 </span><span class="Normal">case</span> _BAR: <span class="Delimiter">{</span>
-<span id="L530" class="LineNr">530 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span><a href='026call.cc.html#L87'>current_instruction</a><span class="Delimiter">().</span>ingredients<span class="Delimiter">.</span>empty<span class="Delimiter">())</span> <span class="Delimiter">{</span>
+<span id="L530" class="LineNr">530 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span><a href='026call.cc.html#L89'>current_instruction</a><span class="Delimiter">().</span>ingredients<span class="Delimiter">.</span>empty<span class="Delimiter">())</span> <span class="Delimiter">{</span>
 <span id="L531" class="LineNr">531 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>Bar != -<span class="Constant">1</span><span class="Delimiter">)</span> cerr &lt;&lt; Bar &lt;&lt; <span class="Constant">&quot;: &quot;</span> &lt;&lt; no_scientific<span class="Delimiter">(</span><a href='001help.cc.html#L229'>get_or_insert</a><span class="Delimiter">(</span>Memory<span class="Delimiter">,</span> Bar<span class="Delimiter">))</span> &lt;&lt; <span class="cSpecial">'\n'</span><span class="Delimiter">;</span>
 <span id="L532" class="LineNr">532 </span>  <span class="Conceal">¦</span> <span class="Normal">else</span> cerr &lt;&lt; <span class="cSpecial">'\n'</span><span class="Delimiter">;</span>
 <span id="L533" class="LineNr">533 </span>  <span class="Delimiter">}</span>
 <span id="L534" class="LineNr">534 </span>  <span class="Normal">else</span> <span class="Delimiter">{</span>
-<span id="L535" class="LineNr">535 </span>  <span class="Conceal">¦</span> reagent<span class="Comment">/*</span><span class="Comment">copy</span><span class="Comment">*/</span> tmp = <a href='026call.cc.html#L87'>current_instruction</a><span class="Delimiter">().</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">);</span>
+<span id="L535" class="LineNr">535 </span>  <span class="Conceal">¦</span> reagent<span class="Comment">/*</span><span class="Comment">copy</span><span class="Comment">*/</span> tmp = <a href='026call.cc.html#L89'>current_instruction</a><span class="Delimiter">().</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">);</span>
 <span id="L536" class="LineNr">536 </span>  <span class="Conceal">¦</span> canonize<span class="Delimiter">(</span>tmp<span class="Delimiter">);</span>
 <span id="L537" class="LineNr">537 </span>  <span class="Conceal">¦</span> Bar = tmp<span class="Delimiter">.</span>value<span class="Delimiter">;</span>
 <span id="L538" class="LineNr">538 </span>  <span class="Delimiter">}</span>
diff --git a/html/036refcount.cc.html b/html/036refcount.cc.html
index e0d525af..f8f67c42 100644
--- a/html/036refcount.cc.html
+++ b/html/036refcount.cc.html
@@ -83,8 +83,8 @@ if ('onhashchange' in window) {
 <span id="L18" class="LineNr">  18 </span><span class="traceContains">+mem: decrementing refcount of 1000: 1 -&gt; 0</span>
 <span id="L19" class="LineNr">  19 </span>
 <span id="L20" class="LineNr">  20 </span><span class="Delimiter">:(after &quot;Writing Instruction Product(i)&quot;)</span>
-<span id="L21" class="LineNr">  21 </span><span class="Normal">if</span> <span class="Delimiter">(</span><a href='028call_return.cc.html#L115'>is_primitive</a><span class="Delimiter">(</span><a href='026call.cc.html#L87'>current_instruction</a><span class="Delimiter">().</span>operation<span class="Delimiter">))</span> <span class="Delimiter">{</span>
-<span id="L22" class="LineNr">  22 </span>  reagent<span class="Comment">/*</span><span class="Comment">copy</span><span class="Comment">*/</span> tmp = <a href='026call.cc.html#L87'>current_instruction</a><span class="Delimiter">().</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">);</span>
+<span id="L21" class="LineNr">  21 </span><span class="Normal">if</span> <span class="Delimiter">(</span><a href='028call_return.cc.html#L115'>is_primitive</a><span class="Delimiter">(</span><a href='026call.cc.html#L89'>current_instruction</a><span class="Delimiter">().</span>operation<span class="Delimiter">))</span> <span class="Delimiter">{</span>
+<span id="L22" class="LineNr">  22 </span>  reagent<span class="Comment">/*</span><span class="Comment">copy</span><span class="Comment">*/</span> tmp = <a href='026call.cc.html#L89'>current_instruction</a><span class="Delimiter">().</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">);</span>
 <span id="L23" class="LineNr">  23 </span>  canonize<span class="Delimiter">(</span>tmp<span class="Delimiter">);</span>
 <span id="L24" class="LineNr">  24 </span>  <a href='036refcount.cc.html#L35'>update_any_refcounts</a><span class="Delimiter">(</span>tmp<span class="Delimiter">,</span> products<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">));</span>
 <span id="L25" class="LineNr">  25 </span><span class="Delimiter">}</span>
@@ -117,7 +117,7 @@ if ('onhashchange' in window) {
 <span id="L52" class="LineNr">  52 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>new_address == <span class="Constant">0</span><span class="Delimiter">)</span> <span class="Identifier">return</span><span class="Delimiter">;</span>
 <span id="L53" class="LineNr">  53 </span>  ++Total_refcount_updates<span class="Delimiter">;</span>
 <span id="L54" class="LineNr">  54 </span>  <span class="Normal">int</span> new_refcount = <a href='001help.cc.html#L229'>get_or_insert</a><span class="Delimiter">(</span>Memory<span class="Delimiter">,</span> new_address<span class="Delimiter">);</span>
-<span id="L55" class="LineNr">  55 </span>  <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">&quot;mem&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;incrementing refcount of &quot;</span> &lt;&lt; new_address &lt;&lt; <span class="Constant">&quot;: &quot;</span> &lt;&lt; new_refcount &lt;&lt; <span class="Constant">&quot; -&gt; &quot;</span> &lt;&lt; new_refcount+<span class="Constant">1</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L55" class="LineNr">  55 </span>  <a href='003trace.cc.html#L167'>trace</a><span class="Delimiter">(</span><span class="Constant">&quot;mem&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;incrementing refcount of &quot;</span> &lt;&lt; new_address &lt;&lt; <span class="Constant">&quot;: &quot;</span> &lt;&lt; new_refcount &lt;&lt; <span class="Constant">&quot; -&gt; &quot;</span> &lt;&lt; new_refcount+<span class="Constant">1</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L56" class="LineNr">  56 </span>  <a href='001help.cc.html#L221'>put</a><span class="Delimiter">(</span>Memory<span class="Delimiter">,</span> new_address<span class="Delimiter">,</span> new_refcount+<span class="Constant">1</span><span class="Delimiter">);</span>
 <span id="L57" class="LineNr">  57 </span><span class="Delimiter">}</span>
 <span id="L58" class="LineNr">  58 </span>
@@ -125,1023 +125,1018 @@ if ('onhashchange' in window) {
 <span id="L60" class="LineNr">  60 </span>  <span class="Comment">// Begin Decrement Refcounts(canonized_x)</span>
 <span id="L61" class="LineNr">  61 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>is_mu_address<span class="Delimiter">(</span>canonized_x<span class="Delimiter">)</span> &amp;&amp; canonized_x<span class="Delimiter">.</span>value != <span class="Constant">0</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
 <span id="L62" class="LineNr">  62 </span>  <span class="Conceal">¦</span> assert<span class="Delimiter">(</span>!canonized_x<span class="Delimiter">.</span>metadata<span class="Delimiter">.</span>size<span class="Delimiter">);</span>
-<span id="L63" class="LineNr">  63 </span>  <span class="Conceal">¦</span> <a href='036refcount.cc.html#L68'>decrement_refcount</a><span class="Delimiter">(</span><a href='001help.cc.html#L229'>get_or_insert</a><span class="Delimiter">(</span>Memory<span class="Delimiter">,</span> canonized_x<span class="Delimiter">.</span>value<span class="Delimiter">),</span> <a href='030container.cc.html#L238'>payload_type</a><span class="Delimiter">(</span>canonized_x<span class="Delimiter">.</span>type<span class="Delimiter">),</span> <a href='036refcount.cc.html#L89'>payload_size</a><span class="Delimiter">(</span>canonized_x<span class="Delimiter">));</span>
+<span id="L63" class="LineNr">  63 </span>  <span class="Conceal">¦</span> <a href='036refcount.cc.html#L68'>decrement_refcount</a><span class="Delimiter">(</span><a href='001help.cc.html#L229'>get_or_insert</a><span class="Delimiter">(</span>Memory<span class="Delimiter">,</span> canonized_x<span class="Delimiter">.</span>value<span class="Delimiter">),</span> <a href='030container.cc.html#L238'>payload_type</a><span class="Delimiter">(</span>canonized_x<span class="Delimiter">.</span>type<span class="Delimiter">),</span> <a href='036refcount.cc.html#L84'>payload_size</a><span class="Delimiter">(</span>canonized_x<span class="Delimiter">));</span>
 <span id="L64" class="LineNr">  64 </span>  <span class="Delimiter">}</span>
 <span id="L65" class="LineNr">  65 </span>  <span class="Comment">// End Decrement Refcounts(canonized_x)</span>
 <span id="L66" class="LineNr">  66 </span><span class="Delimiter">}</span>
 <span id="L67" class="LineNr">  67 </span>
-<span id="L68" class="LineNr">  68 </span><span class="Normal">void</span> <a href='036refcount.cc.html#L68'>decrement_refcount</a><span class="Delimiter">(</span><span class="Normal">int</span> old_address<span class="Delimiter">,</span> <span class="Normal">const</span> type_tree* <a href='030container.cc.html#L238'>payload_type</a><span class="Delimiter">,</span> <span class="Normal">int</span> <a href='036refcount.cc.html#L89'>payload_size</a><span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L68" class="LineNr">  68 </span><span class="Normal">void</span> <a href='036refcount.cc.html#L68'>decrement_refcount</a><span class="Delimiter">(</span><span class="Normal">int</span> old_address<span class="Delimiter">,</span> <span class="Normal">const</span> type_tree* <a href='030container.cc.html#L238'>payload_type</a><span class="Delimiter">,</span> <span class="Normal">int</span> <a href='036refcount.cc.html#L84'>payload_size</a><span class="Delimiter">)</span> <span class="Delimiter">{</span>
 <span id="L69" class="LineNr">  69 </span>  assert<span class="Delimiter">(</span>old_address &gt;= <span class="Constant">0</span><span class="Delimiter">);</span>
 <span id="L70" class="LineNr">  70 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>old_address == <span class="Constant">0</span><span class="Delimiter">)</span> <span class="Identifier">return</span><span class="Delimiter">;</span>
 <span id="L71" class="LineNr">  71 </span>  ++Total_refcount_updates<span class="Delimiter">;</span>
 <span id="L72" class="LineNr">  72 </span>  <span class="Normal">int</span> old_refcount = <a href='001help.cc.html#L229'>get_or_insert</a><span class="Delimiter">(</span>Memory<span class="Delimiter">,</span> old_address<span class="Delimiter">);</span>
-<span id="L73" class="LineNr">  73 </span>  <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">&quot;mem&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;decrementing refcount of &quot;</span> &lt;&lt; old_address &lt;&lt; <span class="Constant">&quot;: &quot;</span> &lt;&lt; old_refcount &lt;&lt; <span class="Constant">&quot; -&gt; &quot;</span> &lt;&lt; old_refcount-<span class="Constant">1</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L73" class="LineNr">  73 </span>  <a href='003trace.cc.html#L167'>trace</a><span class="Delimiter">(</span><span class="Constant">&quot;mem&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;decrementing refcount of &quot;</span> &lt;&lt; old_address &lt;&lt; <span class="Constant">&quot;: &quot;</span> &lt;&lt; old_refcount &lt;&lt; <span class="Constant">&quot; -&gt; &quot;</span> &lt;&lt; old_refcount-<span class="Constant">1</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L74" class="LineNr">  74 </span>  --old_refcount<span class="Delimiter">;</span>
 <span id="L75" class="LineNr">  75 </span>  <a href='001help.cc.html#L221'>put</a><span class="Delimiter">(</span>Memory<span class="Delimiter">,</span> old_address<span class="Delimiter">,</span> old_refcount<span class="Delimiter">);</span>
 <span id="L76" class="LineNr">  76 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>old_refcount &lt; <span class="Constant">0</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
 <span id="L77" class="LineNr">  77 </span>  <span class="Conceal">¦</span> cerr &lt;&lt; <span class="Constant">&quot;Negative refcount!!! &quot;</span> &lt;&lt; old_address &lt;&lt; <span class="Constant">' '</span> &lt;&lt; old_refcount &lt;&lt; <span class="cSpecial">'\n'</span><span class="Delimiter">;</span>
-<span id="L78" class="LineNr">  78 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>Trace_stream<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L79" class="LineNr">  79 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> cerr &lt;&lt; <span class="Constant">&quot;Saving <a href='003trace.cc.html#L161'>trace</a> to last_trace.</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span><span class="Delimiter">;</span>
-<span id="L80" class="LineNr">  80 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> ofstream fout<span class="Delimiter">(</span><span class="Constant">&quot;last_trace&quot;</span><span class="Delimiter">);</span>
-<span id="L81" class="LineNr">  81 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> fout &lt;&lt; Trace_stream<span class="Delimiter">-&gt;</span><a href='003trace.cc.html#L143'>readable_contents</a><span class="Delimiter">(</span><span class="Constant">&quot;&quot;</span><span class="Delimiter">);</span>
-<span id="L82" class="LineNr">  82 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> fout<span class="Delimiter">.</span>close<span class="Delimiter">();</span>
-<span id="L83" class="LineNr">  83 </span>  <span class="Conceal">¦</span> <span class="Delimiter">}</span>
-<span id="L84" class="LineNr">  84 </span>  <span class="Conceal">¦</span> exit<span class="Delimiter">(</span><span class="Constant">1</span><span class="Delimiter">);</span>
-<span id="L85" class="LineNr">  85 </span>  <span class="Delimiter">}</span>
-<span id="L86" class="LineNr">  86 </span>  <span class="Comment">// End Decrement Refcount(old_address, payload_type, payload_size)</span>
-<span id="L87" class="LineNr">  87 </span><span class="Delimiter">}</span>
-<span id="L88" class="LineNr">  88 </span>
-<span id="L89" class="LineNr">  89 </span><span class="Normal">int</span> <a href='036refcount.cc.html#L89'>payload_size</a><span class="Delimiter">(</span>reagent<span class="Comment">/*</span><span class="Comment">copy</span><span class="Comment">*/</span> x<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L90" class="LineNr">  90 </span>  x<span class="Delimiter">.</span>properties<span class="Delimiter">.</span>push_back<span class="Delimiter">(</span>pair&lt;string<span class="Delimiter">,</span> string_tree*&gt;<span class="Delimiter">(</span><span class="Constant">&quot;lookup&quot;</span><span class="Delimiter">,</span> <span class="Constant">NULL</span><span class="Delimiter">));</span>
-<span id="L91" class="LineNr">  91 </span>  lookup_memory_core<span class="Delimiter">(</span>x<span class="Delimiter">,</span> <span class="Comment">/*</span><span class="Comment">check for nulls</span><span class="Comment">*/</span><span class="Constant">false</span><span class="Delimiter">);</span>
-<span id="L92" class="LineNr">  92 </span>  <span class="Identifier">return</span> size_of<span class="Delimiter">(</span>x<span class="Delimiter">)</span> + <span class="Comment">/*</span><span class="Comment">refcount</span><span class="Comment">*/</span><span class="Constant">1</span><span class="Delimiter">;</span>
-<span id="L93" class="LineNr">  93 </span><span class="Delimiter">}</span>
-<span id="L94" class="LineNr">  94 </span>
-<span id="L95" class="LineNr">  95 </span><span class="Delimiter">:(scenario refcounts_reflexive)</span>
-<span id="L96" class="LineNr">  96 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
-<span id="L97" class="LineNr">  97 </span>  <span class="Constant">1</span>:<a href='043space.cc.html#L82'>address</a>:num<span class="Special"> &lt;- </span><span class="Normal">new</span> <span class="Constant">number:type</span>
-<span id="L98" class="LineNr">  98 </span>  <span class="Comment"># idempotent copies leave refcount unchanged</span>
-<span id="L99" class="LineNr">  99 </span>  <span class="Constant">1</span>:<a href='043space.cc.html#L82'>address</a>:num<span class="Special"> &lt;- </span>copy <span class="Constant">1</span>:<a href='043space.cc.html#L82'>address</a>:num
-<span id="L100" class="LineNr"> 100 </span>]
-<span id="L101" class="LineNr"> 101 </span><span class="traceContains">+run: {1: (&quot;address&quot; &quot;number&quot;)} &lt;- new {number: &quot;type&quot;}</span>
-<span id="L102" class="LineNr"> 102 </span><span class="traceContains">+mem: incrementing refcount of 1000: 0 -&gt; 1</span>
-<span id="L103" class="LineNr"> 103 </span><span class="traceContains">+run: {1: (&quot;address&quot; &quot;number&quot;)} &lt;- copy {1: (&quot;address&quot; &quot;number&quot;)}</span>
-<span id="L104" class="LineNr"> 104 </span><span class="traceContains">+mem: incrementing refcount of 1000: 1 -&gt; 2</span>
-<span id="L105" class="LineNr"> 105 </span><span class="traceContains">+mem: decrementing refcount of 1000: 2 -&gt; 1</span>
-<span id="L106" class="LineNr"> 106 </span>
-<span id="L107" class="LineNr"> 107 </span><span class="Delimiter">:(scenario refcounts_call)</span>
-<span id="L108" class="LineNr"> 108 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
-<span id="L109" class="LineNr"> 109 </span>  <span class="Constant">1</span>:<a href='043space.cc.html#L82'>address</a>:num<span class="Special"> &lt;- </span><span class="Normal">new</span> <span class="Constant">number:type</span>
-<span id="L110" class="LineNr"> 110 </span>  <span class="Comment"># passing in addresses to recipes increments refcount</span>
-<span id="L111" class="LineNr"> 111 </span>  foo <span class="Constant">1</span>:<a href='043space.cc.html#L82'>address</a>:num
-<span id="L112" class="LineNr"> 112 </span>  <span class="Comment"># return does NOT yet decrement refcount; memory must be explicitly managed</span>
-<span id="L113" class="LineNr"> 113 </span>  <span class="Constant">1</span>:<a href='043space.cc.html#L82'>address</a>:num<span class="Special"> &lt;- </span><span class="Normal">new</span> <span class="Constant">number:type</span>
-<span id="L114" class="LineNr"> 114 </span>]
-<span id="L115" class="LineNr"> 115 </span><span class="muRecipe">def</span> foo [
-<span id="L116" class="LineNr"> 116 </span>  <span class="Constant">2</span>:<a href='043space.cc.html#L82'>address</a>:num<span class="Special"> &lt;- </span>next-ingredient
-<span id="L117" class="LineNr"> 117 </span>]
+<span id="L78" class="LineNr">  78 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>Trace_stream<span class="Delimiter">)</span> Trace_stream<span class="Delimiter">-&gt;</span><a href='003trace.cc.html#L120'>dump</a><span class="Delimiter">();</span>
+<span id="L79" class="LineNr">  79 </span>  <span class="Conceal">¦</span> exit<span class="Delimiter">(</span><span class="Constant">1</span><span class="Delimiter">);</span>
+<span id="L80" class="LineNr">  80 </span>  <span class="Delimiter">}</span>
+<span id="L81" class="LineNr">  81 </span>  <span class="Comment">// End Decrement Refcount(old_address, payload_type, payload_size)</span>
+<span id="L82" class="LineNr">  82 </span><span class="Delimiter">}</span>
+<span id="L83" class="LineNr">  83 </span>
+<span id="L84" class="LineNr">  84 </span><span class="Normal">int</span> <a href='036refcount.cc.html#L84'>payload_size</a><span class="Delimiter">(</span>reagent<span class="Comment">/*</span><span class="Comment">copy</span><span class="Comment">*/</span> x<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L85" class="LineNr">  85 </span>  x<span class="Delimiter">.</span>properties<span class="Delimiter">.</span>push_back<span class="Delimiter">(</span>pair&lt;string<span class="Delimiter">,</span> string_tree*&gt;<span class="Delimiter">(</span><span class="Constant">&quot;lookup&quot;</span><span class="Delimiter">,</span> <span class="Constant">NULL</span><span class="Delimiter">));</span>
+<span id="L86" class="LineNr">  86 </span>  lookup_memory_core<span class="Delimiter">(</span>x<span class="Delimiter">,</span> <span class="Comment">/*</span><span class="Comment">check for nulls</span><span class="Comment">*/</span><span class="Constant">false</span><span class="Delimiter">);</span>
+<span id="L87" class="LineNr">  87 </span>  <span class="Identifier">return</span> size_of<span class="Delimiter">(</span>x<span class="Delimiter">)</span> + <span class="Comment">/*</span><span class="Comment">refcount</span><span class="Comment">*/</span><span class="Constant">1</span><span class="Delimiter">;</span>
+<span id="L88" class="LineNr">  88 </span><span class="Delimiter">}</span>
+<span id="L89" class="LineNr">  89 </span>
+<span id="L90" class="LineNr">  90 </span><span class="Delimiter">:(scenario refcounts_reflexive)</span>
+<span id="L91" class="LineNr">  91 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
+<span id="L92" class="LineNr">  92 </span>  <span class="Constant">1</span>:<a href='043space.cc.html#L82'>address</a>:num<span class="Special"> &lt;- </span><span class="Normal">new</span> <span class="Constant">number:type</span>
+<span id="L93" class="LineNr">  93 </span>  <span class="Comment"># idempotent copies leave refcount unchanged</span>
+<span id="L94" class="LineNr">  94 </span>  <span class="Constant">1</span>:<a href='043space.cc.html#L82'>address</a>:num<span class="Special"> &lt;- </span>copy <span class="Constant">1</span>:<a href='043space.cc.html#L82'>address</a>:num
+<span id="L95" class="LineNr">  95 </span>]
+<span id="L96" class="LineNr">  96 </span><span class="traceContains">+run: {1: (&quot;address&quot; &quot;number&quot;)} &lt;- new {number: &quot;type&quot;}</span>
+<span id="L97" class="LineNr">  97 </span><span class="traceContains">+mem: incrementing refcount of 1000: 0 -&gt; 1</span>
+<span id="L98" class="LineNr">  98 </span><span class="traceContains">+run: {1: (&quot;address&quot; &quot;number&quot;)} &lt;- copy {1: (&quot;address&quot; &quot;number&quot;)}</span>
+<span id="L99" class="LineNr">  99 </span><span class="traceContains">+mem: incrementing refcount of 1000: 1 -&gt; 2</span>
+<span id="L100" class="LineNr"> 100 </span><span class="traceContains">+mem: decrementing refcount of 1000: 2 -&gt; 1</span>
+<span id="L101" class="LineNr"> 101 </span>
+<span id="L102" class="LineNr"> 102 </span><span class="Delimiter">:(scenario refcounts_call)</span>
+<span id="L103" class="LineNr"> 103 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
+<span id="L104" class="LineNr"> 104 </span>  <span class="Constant">1</span>:<a href='043space.cc.html#L82'>address</a>:num<span class="Special"> &lt;- </span><span class="Normal">new</span> <span class="Constant">number:type</span>
+<span id="L105" class="LineNr"> 105 </span>  <span class="Comment"># passing in addresses to recipes increments refcount</span>
+<span id="L106" class="LineNr"> 106 </span>  foo <span class="Constant">1</span>:<a href='043space.cc.html#L82'>address</a>:num
+<span id="L107" class="LineNr"> 107 </span>  <span class="Comment"># return does NOT yet decrement refcount; memory must be explicitly managed</span>
+<span id="L108" class="LineNr"> 108 </span>  <span class="Constant">1</span>:<a href='043space.cc.html#L82'>address</a>:num<span class="Special"> &lt;- </span><span class="Normal">new</span> <span class="Constant">number:type</span>
+<span id="L109" class="LineNr"> 109 </span>]
+<span id="L110" class="LineNr"> 110 </span><span class="muRecipe">def</span> foo [
+<span id="L111" class="LineNr"> 111 </span>  <span class="Constant">2</span>:<a href='043space.cc.html#L82'>address</a>:num<span class="Special"> &lt;- </span>next-ingredient
+<span id="L112" class="LineNr"> 112 </span>]
+<span id="L113" class="LineNr"> 113 </span><span class="traceContains">+run: {1: (&quot;address&quot; &quot;number&quot;)} &lt;- new {number: &quot;type&quot;}</span>
+<span id="L114" class="LineNr"> 114 </span><span class="traceContains">+mem: incrementing refcount of 1000: 0 -&gt; 1</span>
+<span id="L115" class="LineNr"> 115 </span><span class="traceContains">+run: foo {1: (&quot;address&quot; &quot;number&quot;)}</span>
+<span id="L116" class="LineNr"> 116 </span><span class="Comment"># leave ambiguous precisely when the next increment happens</span>
+<span id="L117" class="LineNr"> 117 </span><span class="traceContains">+mem: incrementing refcount of 1000: 1 -&gt; 2</span>
 <span id="L118" class="LineNr"> 118 </span><span class="traceContains">+run: {1: (&quot;address&quot; &quot;number&quot;)} &lt;- new {number: &quot;type&quot;}</span>
-<span id="L119" class="LineNr"> 119 </span><span class="traceContains">+mem: incrementing refcount of 1000: 0 -&gt; 1</span>
-<span id="L120" class="LineNr"> 120 </span><span class="traceContains">+run: foo {1: (&quot;address&quot; &quot;number&quot;)}</span>
-<span id="L121" class="LineNr"> 121 </span><span class="Comment"># leave ambiguous precisely when the next increment happens</span>
-<span id="L122" class="LineNr"> 122 </span><span class="traceContains">+mem: incrementing refcount of 1000: 1 -&gt; 2</span>
-<span id="L123" class="LineNr"> 123 </span><span class="traceContains">+run: {1: (&quot;address&quot; &quot;number&quot;)} &lt;- new {number: &quot;type&quot;}</span>
-<span id="L124" class="LineNr"> 124 </span><span class="traceContains">+mem: decrementing refcount of 1000: 2 -&gt; 1</span>
-<span id="L125" class="LineNr"> 125 </span>
-<span id="L126" class="LineNr"> 126 </span><span class="Comment">//: fix up any instructions that don't follow the usual flow of read_memory</span>
-<span id="L127" class="LineNr"> 127 </span><span class="Comment">//: before the RUN switch, and write_memory after</span>
-<span id="L128" class="LineNr"> 128 </span>
-<span id="L129" class="LineNr"> 129 </span><span class="Delimiter">:(scenario refcounts_put)</span>
-<span id="L130" class="LineNr"> 130 </span><span class="muData">container</span> foo [
-<span id="L131" class="LineNr"> 131 </span>  <span class="Normal">x</span>:<a href='043space.cc.html#L82'>address</a>:num
+<span id="L119" class="LineNr"> 119 </span><span class="traceContains">+mem: decrementing refcount of 1000: 2 -&gt; 1</span>
+<span id="L120" class="LineNr"> 120 </span>
+<span id="L121" class="LineNr"> 121 </span><span class="Comment">//: fix up any instructions that don't follow the usual flow of read_memory</span>
+<span id="L122" class="LineNr"> 122 </span><span class="Comment">//: before the RUN switch, and write_memory after</span>
+<span id="L123" class="LineNr"> 123 </span>
+<span id="L124" class="LineNr"> 124 </span><span class="Delimiter">:(scenario refcounts_put)</span>
+<span id="L125" class="LineNr"> 125 </span><span class="muData">container</span> foo [
+<span id="L126" class="LineNr"> 126 </span>  <span class="Normal">x</span>:<a href='043space.cc.html#L82'>address</a>:num
+<span id="L127" class="LineNr"> 127 </span>]
+<span id="L128" class="LineNr"> 128 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
+<span id="L129" class="LineNr"> 129 </span>  <span class="Constant">1</span>:<a href='043space.cc.html#L82'>address</a>:num<span class="Special"> &lt;- </span><span class="Normal">new</span> <span class="Constant">number:type</span>
+<span id="L130" class="LineNr"> 130 </span>  <span class="Constant">2</span>:<a href='043space.cc.html#L82'>address</a>:foo<span class="Special"> &lt;- </span><span class="Normal">new</span> <span class="Constant">foo:type</span>
+<span id="L131" class="LineNr"> 131 </span>  *<span class="Constant">2</span>:<a href='043space.cc.html#L82'>address</a>:foo<span class="Special"> &lt;- </span><a href='001help.cc.html#L221'>put</a> *<span class="Constant">2</span>:<a href='043space.cc.html#L82'>address</a>:foo<span class="Delimiter">,</span> <span class="Constant">x:offset</span><span class="Delimiter">,</span> <span class="Constant">1</span>:<a href='043space.cc.html#L82'>address</a>:num
 <span id="L132" class="LineNr"> 132 </span>]
-<span id="L133" class="LineNr"> 133 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
-<span id="L134" class="LineNr"> 134 </span>  <span class="Constant">1</span>:<a href='043space.cc.html#L82'>address</a>:num<span class="Special"> &lt;- </span><span class="Normal">new</span> <span class="Constant">number:type</span>
-<span id="L135" class="LineNr"> 135 </span>  <span class="Constant">2</span>:<a href='043space.cc.html#L82'>address</a>:foo<span class="Special"> &lt;- </span><span class="Normal">new</span> <span class="Constant">foo:type</span>
-<span id="L136" class="LineNr"> 136 </span>  *<span class="Constant">2</span>:<a href='043space.cc.html#L82'>address</a>:foo<span class="Special"> &lt;- </span><a href='001help.cc.html#L221'>put</a> *<span class="Constant">2</span>:<a href='043space.cc.html#L82'>address</a>:foo<span class="Delimiter">,</span> <span class="Constant">x:offset</span><span class="Delimiter">,</span> <span class="Constant">1</span>:<a href='043space.cc.html#L82'>address</a>:num
-<span id="L137" class="LineNr"> 137 </span>]
-<span id="L138" class="LineNr"> 138 </span><span class="traceContains">+run: {1: (&quot;address&quot; &quot;number&quot;)} &lt;- new {number: &quot;type&quot;}</span>
-<span id="L139" class="LineNr"> 139 </span><span class="traceContains">+mem: incrementing refcount of 1000: 0 -&gt; 1</span>
-<span id="L140" class="LineNr"> 140 </span><span class="traceContains">+run: {2: (&quot;address&quot; &quot;foo&quot;)} &lt;- new {foo: &quot;type&quot;}</span>
-<span id="L141" class="LineNr"> 141 </span><span class="traceContains">+mem: incrementing refcount of 1002: 0 -&gt; 1</span>
-<span id="L142" class="LineNr"> 142 </span><span class="traceContains">+run: {2: (&quot;address&quot; &quot;foo&quot;), &quot;lookup&quot;: ()} &lt;- <a href='001help.cc.html#L221'>put</a> {2: (&quot;address&quot; &quot;foo&quot;), &quot;lookup&quot;: ()}, {x: &quot;offset&quot;}, {1: (&quot;address&quot; &quot;number&quot;)}</span>
-<span id="L143" class="LineNr"> 143 </span><span class="Comment"># put increments refcount</span>
-<span id="L144" class="LineNr"> 144 </span><span class="traceContains">+mem: incrementing refcount of 1000: 1 -&gt; 2</span>
-<span id="L145" class="LineNr"> 145 </span>
-<span id="L146" class="LineNr"> 146 </span><span class="Delimiter">:(after &quot;Write Memory in PUT in Run&quot;)</span>
-<span id="L147" class="LineNr"> 147 </span>reagent<span class="Comment">/*</span><span class="Comment">copy</span><span class="Comment">*/</span> element = <a href='030container.cc.html#L429'>element_type</a><span class="Delimiter">(</span>base<span class="Delimiter">.</span>type<span class="Delimiter">,</span> offset<span class="Delimiter">);</span>
-<span id="L148" class="LineNr"> 148 </span>assert<span class="Delimiter">(</span>!has_property<span class="Delimiter">(</span>element<span class="Delimiter">,</span> <span class="Constant">&quot;lookup&quot;</span><span class="Delimiter">));</span>
-<span id="L149" class="LineNr"> 149 </span>element<span class="Delimiter">.</span><a href='010vm.cc.html#L65'>set_value</a><span class="Delimiter">(</span><a href='043space.cc.html#L82'>address</a><span class="Delimiter">);</span>
-<span id="L150" class="LineNr"> 150 </span><a href='036refcount.cc.html#L35'>update_any_refcounts</a><span class="Delimiter">(</span>element<span class="Delimiter">,</span> ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">2</span><span class="Delimiter">));</span>
-<span id="L151" class="LineNr"> 151 </span>
-<span id="L152" class="LineNr"> 152 </span><span class="Delimiter">:(scenario refcounts_put_index)</span>
-<span id="L153" class="LineNr"> 153 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
-<span id="L154" class="LineNr"> 154 </span>  <span class="Constant">1</span>:<a href='043space.cc.html#L82'>address</a>:num<span class="Special"> &lt;- </span><span class="Normal">new</span> <span class="Constant">number:type</span>
-<span id="L155" class="LineNr"> 155 </span>  <span class="Constant">2</span>:<a href='043space.cc.html#L82'>address</a>:array:<a href='043space.cc.html#L82'>address</a>:num<span class="Special"> &lt;- </span><span class="Normal">new</span> <span class="Delimiter">{(</span><a href='043space.cc.html#L82'>address</a> number<span class="Delimiter">)</span>: type<span class="Delimiter">},</span> <span class="Constant">3</span>
-<span id="L156" class="LineNr"> 156 </span>  *<span class="Constant">2</span>:<a href='043space.cc.html#L82'>address</a>:array:<a href='043space.cc.html#L82'>address</a>:num<span class="Special"> &lt;- </span>put-index *<span class="Constant">2</span>:<a href='043space.cc.html#L82'>address</a>:array:<a href='043space.cc.html#L82'>address</a>:num<span class="Delimiter">,</span> <span class="Constant">0</span><span class="Delimiter">,</span> <span class="Constant">1</span>:<a href='043space.cc.html#L82'>address</a>:num
-<span id="L157" class="LineNr"> 157 </span>]
-<span id="L158" class="LineNr"> 158 </span><span class="traceContains">+run: {1: (&quot;address&quot; &quot;number&quot;)} &lt;- new {number: &quot;type&quot;}</span>
-<span id="L159" class="LineNr"> 159 </span><span class="traceContains">+mem: incrementing refcount of 1000: 0 -&gt; 1</span>
-<span id="L160" class="LineNr"> 160 </span><span class="traceContains">+run: {2: (&quot;address&quot; &quot;array&quot; &quot;address&quot; &quot;number&quot;)} &lt;- new {(address number): &quot;type&quot;}, {3: &quot;literal&quot;}</span>
-<span id="L161" class="LineNr"> 161 </span><span class="traceContains">+mem: incrementing refcount of 1002: 0 -&gt; 1</span>
-<span id="L162" class="LineNr"> 162 </span><span class="traceContains">+run: {2: (&quot;address&quot; &quot;array&quot; &quot;address&quot; &quot;number&quot;), &quot;lookup&quot;: ()} &lt;- put-index {2: (&quot;address&quot; &quot;array&quot; &quot;address&quot; &quot;number&quot;), &quot;lookup&quot;: ()}, {0: &quot;literal&quot;}, {1: (&quot;address&quot; &quot;number&quot;)}</span>
-<span id="L163" class="LineNr"> 163 </span><span class="Comment"># put-index increments refcount</span>
-<span id="L164" class="LineNr"> 164 </span><span class="traceContains">+mem: incrementing refcount of 1000: 1 -&gt; 2</span>
-<span id="L165" class="LineNr"> 165 </span>
-<span id="L166" class="LineNr"> 166 </span><span class="Delimiter">:(after &quot;Write Memory in PUT_INDEX in Run&quot;)</span>
-<span id="L167" class="LineNr"> 167 </span>reagent<span class="Comment">/*</span><span class="Comment">local</span><span class="Comment">*/</span> element<span class="Delimiter">;</span>
-<span id="L168" class="LineNr"> 168 </span>element<span class="Delimiter">.</span><a href='010vm.cc.html#L65'>set_value</a><span class="Delimiter">(</span><a href='043space.cc.html#L82'>address</a><span class="Delimiter">);</span>
-<span id="L169" class="LineNr"> 169 </span>element<span class="Delimiter">.</span>type = <a href='032array.cc.html#L377'>copy_array_element</a><span class="Delimiter">(</span>base<span class="Delimiter">.</span>type<span class="Delimiter">);</span>
-<span id="L170" class="LineNr"> 170 </span><a href='036refcount.cc.html#L35'>update_any_refcounts</a><span class="Delimiter">(</span>element<span class="Delimiter">,</span> value<span class="Delimiter">);</span>
-<span id="L171" class="LineNr"> 171 </span>
-<span id="L172" class="LineNr"> 172 </span><span class="Delimiter">:(scenario refcounts_maybe_convert)</span>
-<span id="L173" class="LineNr"> 173 </span><span class="muData">exclusive-container</span> foo [
-<span id="L174" class="LineNr"> 174 </span>  <span class="Normal">x</span>:num
-<span id="L175" class="LineNr"> 175 </span>  <span class="Normal">p</span>:<a href='043space.cc.html#L82'>address</a>:num
+<span id="L133" class="LineNr"> 133 </span><span class="traceContains">+run: {1: (&quot;address&quot; &quot;number&quot;)} &lt;- new {number: &quot;type&quot;}</span>
+<span id="L134" class="LineNr"> 134 </span><span class="traceContains">+mem: incrementing refcount of 1000: 0 -&gt; 1</span>
+<span id="L135" class="LineNr"> 135 </span><span class="traceContains">+run: {2: (&quot;address&quot; &quot;foo&quot;)} &lt;- new {foo: &quot;type&quot;}</span>
+<span id="L136" class="LineNr"> 136 </span><span class="traceContains">+mem: incrementing refcount of 1002: 0 -&gt; 1</span>
+<span id="L137" class="LineNr"> 137 </span><span class="traceContains">+run: {2: (&quot;address&quot; &quot;foo&quot;), &quot;lookup&quot;: ()} &lt;- <a href='001help.cc.html#L221'>put</a> {2: (&quot;address&quot; &quot;foo&quot;), &quot;lookup&quot;: ()}, {x: &quot;offset&quot;}, {1: (&quot;address&quot; &quot;number&quot;)}</span>
+<span id="L138" class="LineNr"> 138 </span><span class="Comment"># put increments refcount</span>
+<span id="L139" class="LineNr"> 139 </span><span class="traceContains">+mem: incrementing refcount of 1000: 1 -&gt; 2</span>
+<span id="L140" class="LineNr"> 140 </span>
+<span id="L141" class="LineNr"> 141 </span><span class="Delimiter">:(after &quot;Write Memory in PUT in Run&quot;)</span>
+<span id="L142" class="LineNr"> 142 </span>reagent<span class="Comment">/*</span><span class="Comment">copy</span><span class="Comment">*/</span> element = <a href='030container.cc.html#L429'>element_type</a><span class="Delimiter">(</span>base<span class="Delimiter">.</span>type<span class="Delimiter">,</span> offset<span class="Delimiter">);</span>
+<span id="L143" class="LineNr"> 143 </span>assert<span class="Delimiter">(</span>!has_property<span class="Delimiter">(</span>element<span class="Delimiter">,</span> <span class="Constant">&quot;lookup&quot;</span><span class="Delimiter">));</span>
+<span id="L144" class="LineNr"> 144 </span>element<span class="Delimiter">.</span><a href='010vm.cc.html#L65'>set_value</a><span class="Delimiter">(</span><a href='043space.cc.html#L82'>address</a><span class="Delimiter">);</span>
+<span id="L145" class="LineNr"> 145 </span><a href='036refcount.cc.html#L35'>update_any_refcounts</a><span class="Delimiter">(</span>element<span class="Delimiter">,</span> ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">2</span><span class="Delimiter">));</span>
+<span id="L146" class="LineNr"> 146 </span>
+<span id="L147" class="LineNr"> 147 </span><span class="Delimiter">:(scenario refcounts_put_index)</span>
+<span id="L148" class="LineNr"> 148 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
+<span id="L149" class="LineNr"> 149 </span>  <span class="Constant">1</span>:<a href='043space.cc.html#L82'>address</a>:num<span class="Special"> &lt;- </span><span class="Normal">new</span> <span class="Constant">number:type</span>
+<span id="L150" class="LineNr"> 150 </span>  <span class="Constant">2</span>:<a href='043space.cc.html#L82'>address</a>:array:<a href='043space.cc.html#L82'>address</a>:num<span class="Special"> &lt;- </span><span class="Normal">new</span> <span class="Delimiter">{(</span><a href='043space.cc.html#L82'>address</a> number<span class="Delimiter">)</span>: type<span class="Delimiter">},</span> <span class="Constant">3</span>
+<span id="L151" class="LineNr"> 151 </span>  *<span class="Constant">2</span>:<a href='043space.cc.html#L82'>address</a>:array:<a href='043space.cc.html#L82'>address</a>:num<span class="Special"> &lt;- </span>put-index *<span class="Constant">2</span>:<a href='043space.cc.html#L82'>address</a>:array:<a href='043space.cc.html#L82'>address</a>:num<span class="Delimiter">,</span> <span class="Constant">0</span><span class="Delimiter">,</span> <span class="Constant">1</span>:<a href='043space.cc.html#L82'>address</a>:num
+<span id="L152" class="LineNr"> 152 </span>]
+<span id="L153" class="LineNr"> 153 </span><span class="traceContains">+run: {1: (&quot;address&quot; &quot;number&quot;)} &lt;- new {number: &quot;type&quot;}</span>
+<span id="L154" class="LineNr"> 154 </span><span class="traceContains">+mem: incrementing refcount of 1000: 0 -&gt; 1</span>
+<span id="L155" class="LineNr"> 155 </span><span class="traceContains">+run: {2: (&quot;address&quot; &quot;array&quot; &quot;address&quot; &quot;number&quot;)} &lt;- new {(address number): &quot;type&quot;}, {3: &quot;literal&quot;}</span>
+<span id="L156" class="LineNr"> 156 </span><span class="traceContains">+mem: incrementing refcount of 1002: 0 -&gt; 1</span>
+<span id="L157" class="LineNr"> 157 </span><span class="traceContains">+run: {2: (&quot;address&quot; &quot;array&quot; &quot;address&quot; &quot;number&quot;), &quot;lookup&quot;: ()} &lt;- put-index {2: (&quot;address&quot; &quot;array&quot; &quot;address&quot; &quot;number&quot;), &quot;lookup&quot;: ()}, {0: &quot;literal&quot;}, {1: (&quot;address&quot; &quot;number&quot;)}</span>
+<span id="L158" class="LineNr"> 158 </span><span class="Comment"># put-index increments refcount</span>
+<span id="L159" class="LineNr"> 159 </span><span class="traceContains">+mem: incrementing refcount of 1000: 1 -&gt; 2</span>
+<span id="L160" class="LineNr"> 160 </span>
+<span id="L161" class="LineNr"> 161 </span><span class="Delimiter">:(after &quot;Write Memory in PUT_INDEX in Run&quot;)</span>
+<span id="L162" class="LineNr"> 162 </span>reagent<span class="Comment">/*</span><span class="Comment">local</span><span class="Comment">*/</span> element<span class="Delimiter">;</span>
+<span id="L163" class="LineNr"> 163 </span>element<span class="Delimiter">.</span><a href='010vm.cc.html#L65'>set_value</a><span class="Delimiter">(</span><a href='043space.cc.html#L82'>address</a><span class="Delimiter">);</span>
+<span id="L164" class="LineNr"> 164 </span>element<span class="Delimiter">.</span>type = <a href='032array.cc.html#L377'>copy_array_element</a><span class="Delimiter">(</span>base<span class="Delimiter">.</span>type<span class="Delimiter">);</span>
+<span id="L165" class="LineNr"> 165 </span><a href='036refcount.cc.html#L35'>update_any_refcounts</a><span class="Delimiter">(</span>element<span class="Delimiter">,</span> value<span class="Delimiter">);</span>
+<span id="L166" class="LineNr"> 166 </span>
+<span id="L167" class="LineNr"> 167 </span><span class="Delimiter">:(scenario refcounts_maybe_convert)</span>
+<span id="L168" class="LineNr"> 168 </span><span class="muData">exclusive-container</span> foo [
+<span id="L169" class="LineNr"> 169 </span>  <span class="Normal">x</span>:num
+<span id="L170" class="LineNr"> 170 </span>  <span class="Normal">p</span>:<a href='043space.cc.html#L82'>address</a>:num
+<span id="L171" class="LineNr"> 171 </span>]
+<span id="L172" class="LineNr"> 172 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
+<span id="L173" class="LineNr"> 173 </span>  <span class="Constant">1</span>:<a href='043space.cc.html#L82'>address</a>:num<span class="Special"> &lt;- </span><span class="Normal">new</span> <span class="Constant">number:type</span>
+<span id="L174" class="LineNr"> 174 </span>  <span class="Constant">2</span>:foo<span class="Special"> &lt;- </span>merge <span class="Constant">1</span>/p<span class="Delimiter">,</span> <span class="Constant">1</span>:<a href='043space.cc.html#L82'>address</a>:num
+<span id="L175" class="LineNr"> 175 </span>  <span class="Constant">4</span>:<a href='043space.cc.html#L82'>address</a>:num<span class="Delimiter">,</span> <span class="Constant">5</span>:<span class="Normal">bool</span><span class="Special"> &lt;- </span>maybe-convert <span class="Constant">2</span>:foo<span class="Delimiter">,</span> <span class="Constant">1:variant/p</span>
 <span id="L176" class="LineNr"> 176 </span>]
-<span id="L177" class="LineNr"> 177 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
-<span id="L178" class="LineNr"> 178 </span>  <span class="Constant">1</span>:<a href='043space.cc.html#L82'>address</a>:num<span class="Special"> &lt;- </span><span class="Normal">new</span> <span class="Constant">number:type</span>
-<span id="L179" class="LineNr"> 179 </span>  <span class="Constant">2</span>:foo<span class="Special"> &lt;- </span>merge <span class="Constant">1</span>/p<span class="Delimiter">,</span> <span class="Constant">1</span>:<a href='043space.cc.html#L82'>address</a>:num
-<span id="L180" class="LineNr"> 180 </span>  <span class="Constant">4</span>:<a href='043space.cc.html#L82'>address</a>:num<span class="Delimiter">,</span> <span class="Constant">5</span>:<span class="Normal">bool</span><span class="Special"> &lt;- </span>maybe-convert <span class="Constant">2</span>:foo<span class="Delimiter">,</span> <span class="Constant">1:variant/p</span>
-<span id="L181" class="LineNr"> 181 </span>]
-<span id="L182" class="LineNr"> 182 </span><span class="traceContains">+run: {1: (&quot;address&quot; &quot;number&quot;)} &lt;- new {number: &quot;type&quot;}</span>
-<span id="L183" class="LineNr"> 183 </span><span class="traceContains">+mem: incrementing refcount of 1000: 0 -&gt; 1</span>
-<span id="L184" class="LineNr"> 184 </span><span class="Comment"># merging in an address increments refcount</span>
-<span id="L185" class="LineNr"> 185 </span><span class="traceContains">+run: {2: &quot;foo&quot;} &lt;- merge {1: &quot;literal&quot;, &quot;p&quot;: ()}, {1: (&quot;address&quot; &quot;number&quot;)}</span>
-<span id="L186" class="LineNr"> 186 </span><span class="traceContains">+mem: incrementing refcount of 1000: 1 -&gt; 2</span>
-<span id="L187" class="LineNr"> 187 </span><span class="traceContains">+run: {4: (&quot;address&quot; &quot;number&quot;)}, {5: &quot;boolean&quot;} &lt;- maybe-convert {2: &quot;foo&quot;}, {1: &quot;variant&quot;, &quot;p&quot;: ()}</span>
-<span id="L188" class="LineNr"> 188 </span><span class="Comment"># maybe-convert increments refcount on success</span>
-<span id="L189" class="LineNr"> 189 </span><span class="traceContains">+mem: incrementing refcount of 1000: 2 -&gt; 3</span>
-<span id="L190" class="LineNr"> 190 </span>
-<span id="L191" class="LineNr"> 191 </span><span class="Delimiter">:(after &quot;Write Memory in Successful MAYBE_CONVERT&quot;)</span>
-<span id="L192" class="LineNr"> 192 </span><span class="Comment">// todo: double-check data here as well</span>
-<span id="L193" class="LineNr"> 193 </span>vector&lt;<span class="Normal">double</span>&gt; data<span class="Delimiter">;</span>
-<span id="L194" class="LineNr"> 194 </span><span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> i = <span class="Constant">0</span><span class="Delimiter">;</span>  i &lt; size_of<span class="Delimiter">(</span>product<span class="Delimiter">);</span>  ++i<span class="Delimiter">)</span>
-<span id="L195" class="LineNr"> 195 </span>  data<span class="Delimiter">.</span>push_back<span class="Delimiter">(</span><a href='001help.cc.html#L229'>get_or_insert</a><span class="Delimiter">(</span>Memory<span class="Delimiter">,</span> base_address+<span class="Comment">/*</span><span class="Comment">skip tag</span><span class="Comment">*/</span><span class="Constant">1</span>+i<span class="Delimiter">));</span>
-<span id="L196" class="LineNr"> 196 </span><a href='036refcount.cc.html#L35'>update_any_refcounts</a><span class="Delimiter">(</span>product<span class="Delimiter">,</span> data<span class="Delimiter">);</span>
-<span id="L197" class="LineNr"> 197 </span>
-<span id="L198" class="LineNr"> 198 </span><span class="SalientComment">//:: manage refcounts in instructions that copy multiple locations at a time</span>
-<span id="L199" class="LineNr"> 199 </span>
-<span id="L200" class="LineNr"> 200 </span><span class="Delimiter">:(scenario refcounts_copy_nested)</span>
-<span id="L201" class="LineNr"> 201 </span><span class="muData">container</span> foo [
-<span id="L202" class="LineNr"> 202 </span>  <span class="Normal">x</span>:<a href='043space.cc.html#L82'>address</a>:num  <span class="Comment"># address inside container</span>
-<span id="L203" class="LineNr"> 203 </span>]
-<span id="L204" class="LineNr"> 204 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
-<span id="L205" class="LineNr"> 205 </span>  <span class="Constant">1</span>:<a href='043space.cc.html#L82'>address</a>:num<span class="Special"> &lt;- </span><span class="Normal">new</span> <span class="Constant">number:type</span>
-<span id="L206" class="LineNr"> 206 </span>  <span class="Constant">2</span>:<a href='043space.cc.html#L82'>address</a>:foo<span class="Special"> &lt;- </span><span class="Normal">new</span> <span class="Constant">foo:type</span>
-<span id="L207" class="LineNr"> 207 </span>  *<span class="Constant">2</span>:<a href='043space.cc.html#L82'>address</a>:foo<span class="Special"> &lt;- </span><a href='001help.cc.html#L221'>put</a> *<span class="Constant">2</span>:<a href='043space.cc.html#L82'>address</a>:foo<span class="Delimiter">,</span> <span class="Constant">x:offset</span><span class="Delimiter">,</span> <span class="Constant">1</span>:<a href='043space.cc.html#L82'>address</a>:num
-<span id="L208" class="LineNr"> 208 </span>  <span class="Constant">3</span>:foo<span class="Special"> &lt;- </span>copy *<span class="Constant">2</span>:<a href='043space.cc.html#L82'>address</a>:foo
-<span id="L209" class="LineNr"> 209 </span>]
-<span id="L210" class="LineNr"> 210 </span><span class="traceContains">+transform: compute <a href='043space.cc.html#L82'>address</a> offsets for container foo</span>
-<span id="L211" class="LineNr"> 211 </span><span class="traceContains">+transform: checking container foo, element 0</span>
-<span id="L212" class="LineNr"> 212 </span><span class="traceContains">+transform: <a href='043space.cc.html#L82'>address</a> at offset 0</span>
-<span id="L213" class="LineNr"> 213 </span><span class="traceContains">+run: {1: (&quot;address&quot; &quot;number&quot;)} &lt;- new {number: &quot;type&quot;}</span>
-<span id="L214" class="LineNr"> 214 </span><span class="traceContains">+mem: incrementing refcount of 1000: 0 -&gt; 1</span>
-<span id="L215" class="LineNr"> 215 </span><span class="traceContains">+run: {2: (&quot;address&quot; &quot;foo&quot;), &quot;lookup&quot;: ()} &lt;- <a href='001help.cc.html#L221'>put</a> {2: (&quot;address&quot; &quot;foo&quot;), &quot;lookup&quot;: ()}, {x: &quot;offset&quot;}, {1: (&quot;address&quot; &quot;number&quot;)}</span>
-<span id="L216" class="LineNr"> 216 </span><span class="traceContains">+mem: incrementing refcount of 1000: 1 -&gt; 2</span>
-<span id="L217" class="LineNr"> 217 </span><span class="Comment"># copying a container increments refcounts of any contained addresses</span>
-<span id="L218" class="LineNr"> 218 </span><span class="traceContains">+run: {3: &quot;foo&quot;} &lt;- copy {2: (&quot;address&quot; &quot;foo&quot;), &quot;lookup&quot;: ()}</span>
-<span id="L219" class="LineNr"> 219 </span><span class="traceContains">+mem: incrementing refcount of 1000: 2 -&gt; 3</span>
-<span id="L220" class="LineNr"> 220 </span>
-<span id="L221" class="LineNr"> 221 </span><span class="Delimiter">:(before &quot;End type_tree Definition&quot;)</span>
-<span id="L222" class="LineNr"> 222 </span><span class="Normal">struct</span> address_element_info <span class="Delimiter">{</span>
-<span id="L223" class="LineNr"> 223 </span>  <span class="Comment">// Where inside a container type (after flattening nested containers!) the</span>
-<span id="L224" class="LineNr"> 224 </span>  <span class="Comment">// address lies</span>
-<span id="L225" class="LineNr"> 225 </span>  <span class="Normal">int</span> offset<span class="Delimiter">;</span>
-<span id="L226" class="LineNr"> 226 </span>
-<span id="L227" class="LineNr"> 227 </span>  <span class="Comment">// All the information we need to compute sizes of items inside an address</span>
-<span id="L228" class="LineNr"> 228 </span>  <span class="Comment">// inside a container. 'payload_type' doesn't need to be a full-scale</span>
-<span id="L229" class="LineNr"> 229 </span>  <span class="Comment">// reagent because an address inside a container can never be an array, and</span>
-<span id="L230" class="LineNr"> 230 </span>  <span class="Comment">// because arrays are the only type that need to know their location to</span>
-<span id="L231" class="LineNr"> 231 </span>  <span class="Comment">// compute their size.</span>
-<span id="L232" class="LineNr"> 232 </span>  <span class="Normal">const</span> type_tree* <a href='030container.cc.html#L238'>payload_type</a><span class="Delimiter">;</span>
-<span id="L233" class="LineNr"> 233 </span>
-<span id="L234" class="LineNr"> 234 </span>  address_element_info<span class="Delimiter">(</span><span class="Normal">int</span> o<span class="Delimiter">,</span> <span class="Normal">const</span> type_tree* p<span class="Delimiter">);</span>
-<span id="L235" class="LineNr"> 235 </span>  address_element_info<span class="Delimiter">(</span><span class="Normal">const</span> address_element_info&amp; other<span class="Delimiter">);</span>
-<span id="L236" class="LineNr"> 236 </span>  <a href='036refcount.cc.html#L248'>~address_element_info</a><span class="Delimiter">();</span>
-<span id="L237" class="LineNr"> 237 </span>  address_element_info&amp; <span class="Normal">operator</span>=<span class="Delimiter">(</span><span class="Normal">const</span> address_element_info&amp; other<span class="Delimiter">);</span>
-<span id="L238" class="LineNr"> 238 </span><span class="Delimiter">};</span>
-<span id="L239" class="LineNr"> 239 </span><span class="Delimiter">:(code)</span>
-<span id="L240" class="LineNr"> 240 </span>address_element_info::address_element_info<span class="Delimiter">(</span><span class="Normal">int</span> o<span class="Delimiter">,</span> <span class="Normal">const</span> type_tree* p<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L241" class="LineNr"> 241 </span>  offset = o<span class="Delimiter">;</span>
-<span id="L242" class="LineNr"> 242 </span>  <a href='030container.cc.html#L238'>payload_type</a> = p<span class="Delimiter">;</span>
-<span id="L243" class="LineNr"> 243 </span><span class="Delimiter">}</span>
-<span id="L244" class="LineNr"> 244 </span>address_element_info::address_element_info<span class="Delimiter">(</span><span class="Normal">const</span> address_element_info&amp; other<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L245" class="LineNr"> 245 </span>  offset = other<span class="Delimiter">.</span>offset<span class="Delimiter">;</span>
-<span id="L246" class="LineNr"> 246 </span>  <a href='030container.cc.html#L238'>payload_type</a> = copy<span class="Delimiter">(</span>other<span class="Delimiter">.</span><a href='030container.cc.html#L238'>payload_type</a><span class="Delimiter">);</span>
-<span id="L247" class="LineNr"> 247 </span><span class="Delimiter">}</span>
-<span id="L248" class="LineNr"> 248 </span>address_element_info::<a href='036refcount.cc.html#L248'>~address_element_info</a><span class="Delimiter">()</span> <span class="Delimiter">{</span>
-<span id="L249" class="LineNr"> 249 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span><a href='030container.cc.html#L238'>payload_type</a><span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L250" class="LineNr"> 250 </span>  <span class="Conceal">¦</span> <span class="Normal">delete</span> <a href='030container.cc.html#L238'>payload_type</a><span class="Delimiter">;</span>
-<span id="L251" class="LineNr"> 251 </span>  <span class="Conceal">¦</span> <a href='030container.cc.html#L238'>payload_type</a> = <span class="Constant">NULL</span><span class="Delimiter">;</span>
-<span id="L252" class="LineNr"> 252 </span>  <span class="Delimiter">}</span>
-<span id="L253" class="LineNr"> 253 </span><span class="Delimiter">}</span>
-<span id="L254" class="LineNr"> 254 </span>address_element_info&amp; address_element_info::<span class="Normal">operator</span>=<span class="Delimiter">(</span><span class="Normal">const</span> address_element_info&amp; other<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L255" class="LineNr"> 255 </span>  offset = other<span class="Delimiter">.</span>offset<span class="Delimiter">;</span>
-<span id="L256" class="LineNr"> 256 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span><a href='030container.cc.html#L238'>payload_type</a><span class="Delimiter">)</span> <span class="Normal">delete</span> <a href='030container.cc.html#L238'>payload_type</a><span class="Delimiter">;</span>
-<span id="L257" class="LineNr"> 257 </span>  <a href='030container.cc.html#L238'>payload_type</a> = copy<span class="Delimiter">(</span>other<span class="Delimiter">.</span><a href='030container.cc.html#L238'>payload_type</a><span class="Delimiter">);</span>
-<span id="L258" class="LineNr"> 258 </span>  <span class="Identifier">return</span> *<span class="Normal">this</span><span class="Delimiter">;</span>
-<span id="L259" class="LineNr"> 259 </span><span class="Delimiter">}</span>
-<span id="L260" class="LineNr"> 260 </span>
-<span id="L261" class="LineNr"> 261 </span><span class="Delimiter">:(before &quot;End type_tree Definition&quot;)</span>
-<span id="L262" class="LineNr"> 262 </span><span class="Comment">// For exclusive containers we might sometimes have an address at some offset</span>
-<span id="L263" class="LineNr"> 263 </span><span class="Comment">// if some other offset has a specific tag. This struct encapsulates such</span>
-<span id="L264" class="LineNr"> 264 </span><span class="Comment">// guards.</span>
-<span id="L265" class="LineNr"> 265 </span><span class="Normal">struct</span> tag_condition_info <span class="Delimiter">{</span>
-<span id="L266" class="LineNr"> 266 </span>  <span class="Normal">int</span> offset<span class="Delimiter">;</span>
-<span id="L267" class="LineNr"> 267 </span>  <span class="Normal">int</span> tag<span class="Delimiter">;</span>
-<span id="L268" class="LineNr"> 268 </span>  tag_condition_info<span class="Delimiter">(</span><span class="Normal">int</span> o<span class="Delimiter">,</span> <span class="Normal">int</span> t<span class="Delimiter">)</span> :offset<span class="Delimiter">(</span>o<span class="Delimiter">),</span> tag<span class="Delimiter">(</span>t<span class="Delimiter">)</span> <span class="Delimiter">{}</span>
-<span id="L269" class="LineNr"> 269 </span><span class="Delimiter">};</span>
-<span id="L270" class="LineNr"> 270 </span>
-<span id="L271" class="LineNr"> 271 </span><span class="Delimiter">:(before &quot;End container_metadata Fields&quot;)</span>
-<span id="L272" class="LineNr"> 272 </span><span class="Comment">// a list of facts of the form:</span>
-<span id="L273" class="LineNr"> 273 </span><span class="Comment">//</span>
-<span id="L274" class="LineNr"> 274 </span><span class="Comment">//  IF offset o1 has tag t2 AND offset o2 has tag t2 AND .., THEN</span>
-<span id="L275" class="LineNr"> 275 </span><span class="Comment">//    for all address_element_infos:</span>
-<span id="L276" class="LineNr"> 276 </span><span class="Comment">//      you need to update refcounts for the address at offset pointing to a payload of type payload_type (just in case we need to abandon something in the process)</span>
-<span id="L277" class="LineNr"> 277 </span>map&lt;set&lt;tag_condition_info&gt;<span class="Delimiter">,</span> set&lt;address_element_info&gt; &gt; <a href='043space.cc.html#L82'>address</a><span class="Delimiter">;</span>
-<span id="L278" class="LineNr"> 278 </span><span class="Delimiter">:(code)</span>
-<span id="L279" class="LineNr"> 279 </span><span class="Normal">bool</span> <span class="Normal">operator</span>&lt;<span class="Delimiter">(</span><span class="Normal">const</span> set&lt;tag_condition_info&gt;&amp; a<span class="Delimiter">,</span> <span class="Normal">const</span> set&lt;tag_condition_info&gt;&amp; b<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L280" class="LineNr"> 280 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>a<span class="Delimiter">.</span>size<span class="Delimiter">()</span> != b<span class="Delimiter">.</span>size<span class="Delimiter">())</span> <span class="Identifier">return</span> a<span class="Delimiter">.</span>size<span class="Delimiter">()</span> &lt; b<span class="Delimiter">.</span>size<span class="Delimiter">();</span>
-<span id="L281" class="LineNr"> 281 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span>set&lt;tag_condition_info&gt;::const_iterator pa = a<span class="Delimiter">.</span>begin<span class="Delimiter">(),</span> pb = b<span class="Delimiter">.</span>begin<span class="Delimiter">();</span>  pa != a<span class="Delimiter">.</span><a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>  ++pa<span class="Delimiter">,</span> ++pb<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L282" class="LineNr"> 282 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>pa<span class="Delimiter">-&gt;</span>offset != pb<span class="Delimiter">-&gt;</span>offset<span class="Delimiter">)</span> <span class="Identifier">return</span> pa<span class="Delimiter">-&gt;</span>offset &lt; pb<span class="Delimiter">-&gt;</span>offset<span class="Delimiter">;</span>
-<span id="L283" class="LineNr"> 283 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>pa<span class="Delimiter">-&gt;</span>tag != pb<span class="Delimiter">-&gt;</span>tag<span class="Delimiter">)</span> <span class="Identifier">return</span> pa<span class="Delimiter">-&gt;</span>tag &lt; pb<span class="Delimiter">-&gt;</span>tag<span class="Delimiter">;</span>
-<span id="L284" class="LineNr"> 284 </span>  <span class="Delimiter">}</span>
+<span id="L177" class="LineNr"> 177 </span><span class="traceContains">+run: {1: (&quot;address&quot; &quot;number&quot;)} &lt;- new {number: &quot;type&quot;}</span>
+<span id="L178" class="LineNr"> 178 </span><span class="traceContains">+mem: incrementing refcount of 1000: 0 -&gt; 1</span>
+<span id="L179" class="LineNr"> 179 </span><span class="Comment"># merging in an address increments refcount</span>
+<span id="L180" class="LineNr"> 180 </span><span class="traceContains">+run: {2: &quot;foo&quot;} &lt;- merge {1: &quot;literal&quot;, &quot;p&quot;: ()}, {1: (&quot;address&quot; &quot;number&quot;)}</span>
+<span id="L181" class="LineNr"> 181 </span><span class="traceContains">+mem: incrementing refcount of 1000: 1 -&gt; 2</span>
+<span id="L182" class="LineNr"> 182 </span><span class="traceContains">+run: {4: (&quot;address&quot; &quot;number&quot;)}, {5: &quot;boolean&quot;} &lt;- maybe-convert {2: &quot;foo&quot;}, {1: &quot;variant&quot;, &quot;p&quot;: ()}</span>
+<span id="L183" class="LineNr"> 183 </span><span class="Comment"># maybe-convert increments refcount on success</span>
+<span id="L184" class="LineNr"> 184 </span><span class="traceContains">+mem: incrementing refcount of 1000: 2 -&gt; 3</span>
+<span id="L185" class="LineNr"> 185 </span>
+<span id="L186" class="LineNr"> 186 </span><span class="Delimiter">:(after &quot;Write Memory in Successful MAYBE_CONVERT&quot;)</span>
+<span id="L187" class="LineNr"> 187 </span><span class="Comment">// todo: double-check data here as well</span>
+<span id="L188" class="LineNr"> 188 </span>vector&lt;<span class="Normal">double</span>&gt; data<span class="Delimiter">;</span>
+<span id="L189" class="LineNr"> 189 </span><span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> i = <span class="Constant">0</span><span class="Delimiter">;</span>  i &lt; size_of<span class="Delimiter">(</span>product<span class="Delimiter">);</span>  ++i<span class="Delimiter">)</span>
+<span id="L190" class="LineNr"> 190 </span>  data<span class="Delimiter">.</span>push_back<span class="Delimiter">(</span><a href='001help.cc.html#L229'>get_or_insert</a><span class="Delimiter">(</span>Memory<span class="Delimiter">,</span> base_address+<span class="Comment">/*</span><span class="Comment">skip tag</span><span class="Comment">*/</span><span class="Constant">1</span>+i<span class="Delimiter">));</span>
+<span id="L191" class="LineNr"> 191 </span><a href='036refcount.cc.html#L35'>update_any_refcounts</a><span class="Delimiter">(</span>product<span class="Delimiter">,</span> data<span class="Delimiter">);</span>
+<span id="L192" class="LineNr"> 192 </span>
+<span id="L193" class="LineNr"> 193 </span><span class="SalientComment">//:: manage refcounts in instructions that copy multiple locations at a time</span>
+<span id="L194" class="LineNr"> 194 </span>
+<span id="L195" class="LineNr"> 195 </span><span class="Delimiter">:(scenario refcounts_copy_nested)</span>
+<span id="L196" class="LineNr"> 196 </span><span class="muData">container</span> foo [
+<span id="L197" class="LineNr"> 197 </span>  <span class="Normal">x</span>:<a href='043space.cc.html#L82'>address</a>:num  <span class="Comment"># address inside container</span>
+<span id="L198" class="LineNr"> 198 </span>]
+<span id="L199" class="LineNr"> 199 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
+<span id="L200" class="LineNr"> 200 </span>  <span class="Constant">1</span>:<a href='043space.cc.html#L82'>address</a>:num<span class="Special"> &lt;- </span><span class="Normal">new</span> <span class="Constant">number:type</span>
+<span id="L201" class="LineNr"> 201 </span>  <span class="Constant">2</span>:<a href='043space.cc.html#L82'>address</a>:foo<span class="Special"> &lt;- </span><span class="Normal">new</span> <span class="Constant">foo:type</span>
+<span id="L202" class="LineNr"> 202 </span>  *<span class="Constant">2</span>:<a href='043space.cc.html#L82'>address</a>:foo<span class="Special"> &lt;- </span><a href='001help.cc.html#L221'>put</a> *<span class="Constant">2</span>:<a href='043space.cc.html#L82'>address</a>:foo<span class="Delimiter">,</span> <span class="Constant">x:offset</span><span class="Delimiter">,</span> <span class="Constant">1</span>:<a href='043space.cc.html#L82'>address</a>:num
+<span id="L203" class="LineNr"> 203 </span>  <span class="Constant">3</span>:foo<span class="Special"> &lt;- </span>copy *<span class="Constant">2</span>:<a href='043space.cc.html#L82'>address</a>:foo
+<span id="L204" class="LineNr"> 204 </span>]
+<span id="L205" class="LineNr"> 205 </span><span class="traceContains">+transform: compute <a href='043space.cc.html#L82'>address</a> offsets for container foo</span>
+<span id="L206" class="LineNr"> 206 </span><span class="traceContains">+transform: checking container foo, element 0</span>
+<span id="L207" class="LineNr"> 207 </span><span class="traceContains">+transform: <a href='043space.cc.html#L82'>address</a> at offset 0</span>
+<span id="L208" class="LineNr"> 208 </span><span class="traceContains">+run: {1: (&quot;address&quot; &quot;number&quot;)} &lt;- new {number: &quot;type&quot;}</span>
+<span id="L209" class="LineNr"> 209 </span><span class="traceContains">+mem: incrementing refcount of 1000: 0 -&gt; 1</span>
+<span id="L210" class="LineNr"> 210 </span><span class="traceContains">+run: {2: (&quot;address&quot; &quot;foo&quot;), &quot;lookup&quot;: ()} &lt;- <a href='001help.cc.html#L221'>put</a> {2: (&quot;address&quot; &quot;foo&quot;), &quot;lookup&quot;: ()}, {x: &quot;offset&quot;}, {1: (&quot;address&quot; &quot;number&quot;)}</span>
+<span id="L211" class="LineNr"> 211 </span><span class="traceContains">+mem: incrementing refcount of 1000: 1 -&gt; 2</span>
+<span id="L212" class="LineNr"> 212 </span><span class="Comment"># copying a container increments refcounts of any contained addresses</span>
+<span id="L213" class="LineNr"> 213 </span><span class="traceContains">+run: {3: &quot;foo&quot;} &lt;- copy {2: (&quot;address&quot; &quot;foo&quot;), &quot;lookup&quot;: ()}</span>
+<span id="L214" class="LineNr"> 214 </span><span class="traceContains">+mem: incrementing refcount of 1000: 2 -&gt; 3</span>
+<span id="L215" class="LineNr"> 215 </span>
+<span id="L216" class="LineNr"> 216 </span><span class="Delimiter">:(before &quot;End type_tree Definition&quot;)</span>
+<span id="L217" class="LineNr"> 217 </span><span class="Normal">struct</span> address_element_info <span class="Delimiter">{</span>
+<span id="L218" class="LineNr"> 218 </span>  <span class="Comment">// Where inside a container type (after flattening nested containers!) the</span>
+<span id="L219" class="LineNr"> 219 </span>  <span class="Comment">// address lies</span>
+<span id="L220" class="LineNr"> 220 </span>  <span class="Normal">int</span> offset<span class="Delimiter">;</span>
+<span id="L221" class="LineNr"> 221 </span>
+<span id="L222" class="LineNr"> 222 </span>  <span class="Comment">// All the information we need to compute sizes of items inside an address</span>
+<span id="L223" class="LineNr"> 223 </span>  <span class="Comment">// inside a container. 'payload_type' doesn't need to be a full-scale</span>
+<span id="L224" class="LineNr"> 224 </span>  <span class="Comment">// reagent because an address inside a container can never be an array, and</span>
+<span id="L225" class="LineNr"> 225 </span>  <span class="Comment">// because arrays are the only type that need to know their location to</span>
+<span id="L226" class="LineNr"> 226 </span>  <span class="Comment">// compute their size.</span>
+<span id="L227" class="LineNr"> 227 </span>  <span class="Normal">const</span> type_tree* <a href='030container.cc.html#L238'>payload_type</a><span class="Delimiter">;</span>
+<span id="L228" class="LineNr"> 228 </span>
+<span id="L229" class="LineNr"> 229 </span>  address_element_info<span class="Delimiter">(</span><span class="Normal">int</span> o<span class="Delimiter">,</span> <span class="Normal">const</span> type_tree* p<span class="Delimiter">);</span>
+<span id="L230" class="LineNr"> 230 </span>  address_element_info<span class="Delimiter">(</span><span class="Normal">const</span> address_element_info&amp; other<span class="Delimiter">);</span>
+<span id="L231" class="LineNr"> 231 </span>  <a href='036refcount.cc.html#L243'>~address_element_info</a><span class="Delimiter">();</span>
+<span id="L232" class="LineNr"> 232 </span>  address_element_info&amp; <span class="Normal">operator</span>=<span class="Delimiter">(</span><span class="Normal">const</span> address_element_info&amp; other<span class="Delimiter">);</span>
+<span id="L233" class="LineNr"> 233 </span><span class="Delimiter">};</span>
+<span id="L234" class="LineNr"> 234 </span><span class="Delimiter">:(code)</span>
+<span id="L235" class="LineNr"> 235 </span>address_element_info::address_element_info<span class="Delimiter">(</span><span class="Normal">int</span> o<span class="Delimiter">,</span> <span class="Normal">const</span> type_tree* p<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L236" class="LineNr"> 236 </span>  offset = o<span class="Delimiter">;</span>
+<span id="L237" class="LineNr"> 237 </span>  <a href='030container.cc.html#L238'>payload_type</a> = p<span class="Delimiter">;</span>
+<span id="L238" class="LineNr"> 238 </span><span class="Delimiter">}</span>
+<span id="L239" class="LineNr"> 239 </span>address_element_info::address_element_info<span class="Delimiter">(</span><span class="Normal">const</span> address_element_info&amp; other<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L240" class="LineNr"> 240 </span>  offset = other<span class="Delimiter">.</span>offset<span class="Delimiter">;</span>
+<span id="L241" class="LineNr"> 241 </span>  <a href='030container.cc.html#L238'>payload_type</a> = copy<span class="Delimiter">(</span>other<span class="Delimiter">.</span><a href='030container.cc.html#L238'>payload_type</a><span class="Delimiter">);</span>
+<span id="L242" class="LineNr"> 242 </span><span class="Delimiter">}</span>
+<span id="L243" class="LineNr"> 243 </span>address_element_info::<a href='036refcount.cc.html#L243'>~address_element_info</a><span class="Delimiter">()</span> <span class="Delimiter">{</span>
+<span id="L244" class="LineNr"> 244 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span><a href='030container.cc.html#L238'>payload_type</a><span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L245" class="LineNr"> 245 </span>  <span class="Conceal">¦</span> <span class="Normal">delete</span> <a href='030container.cc.html#L238'>payload_type</a><span class="Delimiter">;</span>
+<span id="L246" class="LineNr"> 246 </span>  <span class="Conceal">¦</span> <a href='030container.cc.html#L238'>payload_type</a> = <span class="Constant">NULL</span><span class="Delimiter">;</span>
+<span id="L247" class="LineNr"> 247 </span>  <span class="Delimiter">}</span>
+<span id="L248" class="LineNr"> 248 </span><span class="Delimiter">}</span>
+<span id="L249" class="LineNr"> 249 </span>address_element_info&amp; address_element_info::<span class="Normal">operator</span>=<span class="Delimiter">(</span><span class="Normal">const</span> address_element_info&amp; other<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L250" class="LineNr"> 250 </span>  offset = other<span class="Delimiter">.</span>offset<span class="Delimiter">;</span>
+<span id="L251" class="LineNr"> 251 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span><a href='030container.cc.html#L238'>payload_type</a><span class="Delimiter">)</span> <span class="Normal">delete</span> <a href='030container.cc.html#L238'>payload_type</a><span class="Delimiter">;</span>
+<span id="L252" class="LineNr"> 252 </span>  <a href='030container.cc.html#L238'>payload_type</a> = copy<span class="Delimiter">(</span>other<span class="Delimiter">.</span><a href='030container.cc.html#L238'>payload_type</a><span class="Delimiter">);</span>
+<span id="L253" class="LineNr"> 253 </span>  <span class="Identifier">return</span> *<span class="Normal">this</span><span class="Delimiter">;</span>
+<span id="L254" class="LineNr"> 254 </span><span class="Delimiter">}</span>
+<span id="L255" class="LineNr"> 255 </span>
+<span id="L256" class="LineNr"> 256 </span><span class="Delimiter">:(before &quot;End type_tree Definition&quot;)</span>
+<span id="L257" class="LineNr"> 257 </span><span class="Comment">// For exclusive containers we might sometimes have an address at some offset</span>
+<span id="L258" class="LineNr"> 258 </span><span class="Comment">// if some other offset has a specific tag. This struct encapsulates such</span>
+<span id="L259" class="LineNr"> 259 </span><span class="Comment">// guards.</span>
+<span id="L260" class="LineNr"> 260 </span><span class="Normal">struct</span> tag_condition_info <span class="Delimiter">{</span>
+<span id="L261" class="LineNr"> 261 </span>  <span class="Normal">int</span> offset<span class="Delimiter">;</span>
+<span id="L262" class="LineNr"> 262 </span>  <span class="Normal">int</span> tag<span class="Delimiter">;</span>
+<span id="L263" class="LineNr"> 263 </span>  tag_condition_info<span class="Delimiter">(</span><span class="Normal">int</span> o<span class="Delimiter">,</span> <span class="Normal">int</span> t<span class="Delimiter">)</span> :offset<span class="Delimiter">(</span>o<span class="Delimiter">),</span> tag<span class="Delimiter">(</span>t<span class="Delimiter">)</span> <span class="Delimiter">{}</span>
+<span id="L264" class="LineNr"> 264 </span><span class="Delimiter">};</span>
+<span id="L265" class="LineNr"> 265 </span>
+<span id="L266" class="LineNr"> 266 </span><span class="Delimiter">:(before &quot;End container_metadata Fields&quot;)</span>
+<span id="L267" class="LineNr"> 267 </span><span class="Comment">// a list of facts of the form:</span>
+<span id="L268" class="LineNr"> 268 </span><span class="Comment">//</span>
+<span id="L269" class="LineNr"> 269 </span><span class="Comment">//  IF offset o1 has tag t2 AND offset o2 has tag t2 AND .., THEN</span>
+<span id="L270" class="LineNr"> 270 </span><span class="Comment">//    for all address_element_infos:</span>
+<span id="L271" class="LineNr"> 271 </span><span class="Comment">//      you need to update refcounts for the address at offset pointing to a payload of type payload_type (just in case we need to abandon something in the process)</span>
+<span id="L272" class="LineNr"> 272 </span>map&lt;set&lt;tag_condition_info&gt;<span class="Delimiter">,</span> set&lt;address_element_info&gt; &gt; <a href='043space.cc.html#L82'>address</a><span class="Delimiter">;</span>
+<span id="L273" class="LineNr"> 273 </span><span class="Delimiter">:(code)</span>
+<span id="L274" class="LineNr"> 274 </span><span class="Normal">bool</span> <span class="Normal">operator</span>&lt;<span class="Delimiter">(</span><span class="Normal">const</span> set&lt;tag_condition_info&gt;&amp; a<span class="Delimiter">,</span> <span class="Normal">const</span> set&lt;tag_condition_info&gt;&amp; b<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L275" class="LineNr"> 275 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>a<span class="Delimiter">.</span>size<span class="Delimiter">()</span> != b<span class="Delimiter">.</span>size<span class="Delimiter">())</span> <span class="Identifier">return</span> a<span class="Delimiter">.</span>size<span class="Delimiter">()</span> &lt; b<span class="Delimiter">.</span>size<span class="Delimiter">();</span>
+<span id="L276" class="LineNr"> 276 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span>set&lt;tag_condition_info&gt;::const_iterator pa = a<span class="Delimiter">.</span>begin<span class="Delimiter">(),</span> pb = b<span class="Delimiter">.</span>begin<span class="Delimiter">();</span>  pa != a<span class="Delimiter">.</span><a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>  ++pa<span class="Delimiter">,</span> ++pb<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L277" class="LineNr"> 277 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>pa<span class="Delimiter">-&gt;</span>offset != pb<span class="Delimiter">-&gt;</span>offset<span class="Delimiter">)</span> <span class="Identifier">return</span> pa<span class="Delimiter">-&gt;</span>offset &lt; pb<span class="Delimiter">-&gt;</span>offset<span class="Delimiter">;</span>
+<span id="L278" class="LineNr"> 278 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>pa<span class="Delimiter">-&gt;</span>tag != pb<span class="Delimiter">-&gt;</span>tag<span class="Delimiter">)</span> <span class="Identifier">return</span> pa<span class="Delimiter">-&gt;</span>tag &lt; pb<span class="Delimiter">-&gt;</span>tag<span class="Delimiter">;</span>
+<span id="L279" class="LineNr"> 279 </span>  <span class="Delimiter">}</span>
+<span id="L280" class="LineNr"> 280 </span>  <span class="Identifier">return</span> <span class="Constant">false</span><span class="Delimiter">;</span>  <span class="Comment">// equal</span>
+<span id="L281" class="LineNr"> 281 </span><span class="Delimiter">}</span>
+<span id="L282" class="LineNr"> 282 </span><span class="Normal">bool</span> <span class="Normal">operator</span>&lt;<span class="Delimiter">(</span><span class="Normal">const</span> tag_condition_info&amp; a<span class="Delimiter">,</span> <span class="Normal">const</span> tag_condition_info&amp; b<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L283" class="LineNr"> 283 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>a<span class="Delimiter">.</span>offset != b<span class="Delimiter">.</span>offset<span class="Delimiter">)</span> <span class="Identifier">return</span> a<span class="Delimiter">.</span>offset &lt; b<span class="Delimiter">.</span>offset<span class="Delimiter">;</span>
+<span id="L284" class="LineNr"> 284 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>a<span class="Delimiter">.</span>tag != b<span class="Delimiter">.</span>tag<span class="Delimiter">)</span> <span class="Identifier">return</span> a<span class="Delimiter">.</span>tag &lt; b<span class="Delimiter">.</span>tag<span class="Delimiter">;</span>
 <span id="L285" class="LineNr"> 285 </span>  <span class="Identifier">return</span> <span class="Constant">false</span><span class="Delimiter">;</span>  <span class="Comment">// equal</span>
 <span id="L286" class="LineNr"> 286 </span><span class="Delimiter">}</span>
-<span id="L287" class="LineNr"> 287 </span><span class="Normal">bool</span> <span class="Normal">operator</span>&lt;<span class="Delimiter">(</span><span class="Normal">const</span> tag_condition_info&amp; a<span class="Delimiter">,</span> <span class="Normal">const</span> tag_condition_info&amp; b<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L288" class="LineNr"> 288 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>a<span class="Delimiter">.</span>offset != b<span class="Delimiter">.</span>offset<span class="Delimiter">)</span> <span class="Identifier">return</span> a<span class="Delimiter">.</span>offset &lt; b<span class="Delimiter">.</span>offset<span class="Delimiter">;</span>
-<span id="L289" class="LineNr"> 289 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>a<span class="Delimiter">.</span>tag != b<span class="Delimiter">.</span>tag<span class="Delimiter">)</span> <span class="Identifier">return</span> a<span class="Delimiter">.</span>tag &lt; b<span class="Delimiter">.</span>tag<span class="Delimiter">;</span>
-<span id="L290" class="LineNr"> 290 </span>  <span class="Identifier">return</span> <span class="Constant">false</span><span class="Delimiter">;</span>  <span class="Comment">// equal</span>
-<span id="L291" class="LineNr"> 291 </span><span class="Delimiter">}</span>
-<span id="L292" class="LineNr"> 292 </span><span class="Normal">bool</span> <span class="Normal">operator</span>&lt;<span class="Delimiter">(</span><span class="Normal">const</span> set&lt;address_element_info&gt;&amp; a<span class="Delimiter">,</span> <span class="Normal">const</span> set&lt;address_element_info&gt;&amp; b<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L293" class="LineNr"> 293 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>a<span class="Delimiter">.</span>size<span class="Delimiter">()</span> != b<span class="Delimiter">.</span>size<span class="Delimiter">())</span> <span class="Identifier">return</span> a<span class="Delimiter">.</span>size<span class="Delimiter">()</span> &lt; b<span class="Delimiter">.</span>size<span class="Delimiter">();</span>
-<span id="L294" class="LineNr"> 294 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span>set&lt;address_element_info&gt;::const_iterator pa = a<span class="Delimiter">.</span>begin<span class="Delimiter">(),</span> pb = b<span class="Delimiter">.</span>begin<span class="Delimiter">();</span>  pa != a<span class="Delimiter">.</span><a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>  ++pa<span class="Delimiter">,</span> ++pb<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L295" class="LineNr"> 295 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>pa<span class="Delimiter">-&gt;</span>offset != pb<span class="Delimiter">-&gt;</span>offset<span class="Delimiter">)</span> <span class="Identifier">return</span> pa<span class="Delimiter">-&gt;</span>offset &lt; pb<span class="Delimiter">-&gt;</span>offset<span class="Delimiter">;</span>
-<span id="L296" class="LineNr"> 296 </span>  <span class="Delimiter">}</span>
-<span id="L297" class="LineNr"> 297 </span>  <span class="Identifier">return</span> <span class="Constant">false</span><span class="Delimiter">;</span>  <span class="Comment">// equal</span>
-<span id="L298" class="LineNr"> 298 </span><span class="Delimiter">}</span>
-<span id="L299" class="LineNr"> 299 </span><span class="Normal">bool</span> <span class="Normal">operator</span>&lt;<span class="Delimiter">(</span><span class="Normal">const</span> address_element_info&amp; a<span class="Delimiter">,</span> <span class="Normal">const</span> address_element_info&amp; b<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L300" class="LineNr"> 300 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>a<span class="Delimiter">.</span>offset != b<span class="Delimiter">.</span>offset<span class="Delimiter">)</span> <span class="Identifier">return</span> a<span class="Delimiter">.</span>offset &lt; b<span class="Delimiter">.</span>offset<span class="Delimiter">;</span>
-<span id="L301" class="LineNr"> 301 </span>  <span class="Identifier">return</span> <span class="Constant">false</span><span class="Delimiter">;</span>  <span class="Comment">// equal</span>
-<span id="L302" class="LineNr"> 302 </span><span class="Delimiter">}</span>
-<span id="L303" class="LineNr"> 303 </span>
-<span id="L304" class="LineNr"> 304 </span><span class="Comment">//: populate metadata.address in a separate transform, because it requires</span>
-<span id="L305" class="LineNr"> 305 </span><span class="Comment">//: already knowing the sizes of all types</span>
-<span id="L306" class="LineNr"> 306 </span>
-<span id="L307" class="LineNr"> 307 </span><span class="Delimiter">:(after &quot;Transform.push_back(compute_container_sizes)&quot;)</span>
-<span id="L308" class="LineNr"> 308 </span>Transform<span class="Delimiter">.</span>push_back<span class="Delimiter">(</span>compute_container_address_offsets<span class="Delimiter">);</span>  <span class="Comment">// idempotent</span>
-<span id="L309" class="LineNr"> 309 </span><span class="Delimiter">:(code)</span>
-<span id="L310" class="LineNr"> 310 </span><span class="Normal">void</span> compute_container_address_offsets<span class="Delimiter">(</span><span class="Normal">const</span> <a href='010vm.cc.html#L14'>recipe_ordinal</a> r<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L311" class="LineNr"> 311 </span>  recipe&amp; caller = get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">);</span>
-<span id="L312" class="LineNr"> 312 </span>  <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">9992</span><span class="Delimiter">,</span> <span class="Constant">&quot;transform&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;--- compute <a href='043space.cc.html#L82'>address</a> offsets for &quot;</span> &lt;&lt; caller<span class="Delimiter">.</span>name &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
-<span id="L313" class="LineNr"> 313 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> i = <span class="Constant">0</span><span class="Delimiter">;</span>  i &lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>caller<span class="Delimiter">.</span>steps<span class="Delimiter">);</span>  ++i<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L314" class="LineNr"> 314 </span>  <span class="Conceal">¦</span> instruction&amp; inst = caller<span class="Delimiter">.</span>steps<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">);</span>
-<span id="L315" class="LineNr"> 315 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">9993</span><span class="Delimiter">,</span> <span class="Constant">&quot;transform&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;- compute <a href='043space.cc.html#L82'>address</a> offsets for &quot;</span> &lt;&lt; <a href='028call_return.cc.html#L163'>to_string</a><span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
-<span id="L316" class="LineNr"> 316 </span>  <span class="Conceal">¦</span> <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> i = <span class="Constant">0</span><span class="Delimiter">;</span>  i &lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">);</span>  ++i<span class="Delimiter">)</span>
-<span id="L317" class="LineNr"> 317 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> compute_container_address_offsets<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">),</span> <span class="Constant">&quot; in '&quot;</span>+inst<span class="Delimiter">.</span>original_string+<span class="Constant">&quot;'&quot;</span><span class="Delimiter">);</span>
-<span id="L318" class="LineNr"> 318 </span>  <span class="Conceal">¦</span> <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> i = <span class="Constant">0</span><span class="Delimiter">;</span>  i &lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>products<span class="Delimiter">);</span>  ++i<span class="Delimiter">)</span>
-<span id="L319" class="LineNr"> 319 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> compute_container_address_offsets<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">),</span> <span class="Constant">&quot; in '&quot;</span>+inst<span class="Delimiter">.</span>original_string+<span class="Constant">&quot;'&quot;</span><span class="Delimiter">);</span>
-<span id="L320" class="LineNr"> 320 </span>  <span class="Delimiter">}</span>
-<span id="L321" class="LineNr"> 321 </span><span class="Delimiter">}</span>
-<span id="L322" class="LineNr"> 322 </span>
-<span id="L323" class="LineNr"> 323 </span><span class="Normal">void</span> compute_container_address_offsets<span class="Delimiter">(</span>reagent&amp; r<span class="Delimiter">,</span> <span class="Normal">const</span> string&amp; location_for_error_messages<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L324" class="LineNr"> 324 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>is_literal<span class="Delimiter">(</span>r<span class="Delimiter">)</span> || is_dummy<span class="Delimiter">(</span>r<span class="Delimiter">))</span> <span class="Identifier">return</span><span class="Delimiter">;</span>
-<span id="L325" class="LineNr"> 325 </span>  compute_container_address_offsets<span class="Delimiter">(</span>r<span class="Delimiter">.</span>type<span class="Delimiter">,</span> location_for_error_messages<span class="Delimiter">);</span>
-<span id="L326" class="LineNr"> 326 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>contains_key<span class="Delimiter">(</span>Container_metadata<span class="Delimiter">,</span> r<span class="Delimiter">.</span>type<span class="Delimiter">))</span>
-<span id="L327" class="LineNr"> 327 </span>  <span class="Conceal">¦</span> r<span class="Delimiter">.</span>metadata = get<span class="Delimiter">(</span>Container_metadata<span class="Delimiter">,</span> r<span class="Delimiter">.</span>type<span class="Delimiter">);</span>
-<span id="L328" class="LineNr"> 328 </span><span class="Delimiter">}</span>
-<span id="L329" class="LineNr"> 329 </span>
-<span id="L330" class="LineNr"> 330 </span><span class="Comment">// the recursive structure of this function needs to exactly match</span>
-<span id="L331" class="LineNr"> 331 </span><span class="Comment">// compute_container_sizes</span>
-<span id="L332" class="LineNr"> 332 </span><span class="Normal">void</span> compute_container_address_offsets<span class="Delimiter">(</span><span class="Normal">const</span> type_tree* type<span class="Delimiter">,</span> <span class="Normal">const</span> string&amp; location_for_error_messages<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L333" class="LineNr"> 333 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!type<span class="Delimiter">)</span> <span class="Identifier">return</span><span class="Delimiter">;</span>
-<span id="L334" class="LineNr"> 334 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!type<span class="Delimiter">-&gt;</span>atom<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L335" class="LineNr"> 335 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>!type<span class="Delimiter">-&gt;</span>left<span class="Delimiter">-&gt;</span>atom<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L336" class="LineNr"> 336 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <span class="Constant">&quot;invalid type &quot;</span> &lt;&lt; <a href='028call_return.cc.html#L163'>to_string</a><span class="Delimiter">(</span>type<span class="Delimiter">)</span> &lt;&lt; location_for_error_messages &lt;&lt; <span class="cSpecial">'\n'</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
-<span id="L337" class="LineNr"> 337 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Identifier">return</span><span class="Delimiter">;</span>
-<span id="L338" class="LineNr"> 338 </span>  <span class="Conceal">¦</span> <span class="Delimiter">}</span>
-<span id="L339" class="LineNr"> 339 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>type<span class="Delimiter">-&gt;</span>left<span class="Delimiter">-&gt;</span>name == <span class="Constant">&quot;address&quot;</span><span class="Delimiter">)</span>
-<span id="L340" class="LineNr"> 340 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> compute_container_address_offsets<span class="Delimiter">(</span><a href='030container.cc.html#L238'>payload_type</a><span class="Delimiter">(</span>type<span class="Delimiter">),</span> location_for_error_messages<span class="Delimiter">);</span>
-<span id="L341" class="LineNr"> 341 </span>  <span class="Conceal">¦</span> <span class="Normal">else</span> <span class="Normal">if</span> <span class="Delimiter">(</span>type<span class="Delimiter">-&gt;</span>left<span class="Delimiter">-&gt;</span>name == <span class="Constant">&quot;array&quot;</span><span class="Delimiter">)</span>
-<span id="L342" class="LineNr"> 342 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> compute_container_address_offsets<span class="Delimiter">(</span><a href='032array.cc.html#L381'>array_element</a><span class="Delimiter">(</span>type<span class="Delimiter">),</span> location_for_error_messages<span class="Delimiter">);</span>
-<span id="L343" class="LineNr"> 343 </span>  <span class="Conceal">¦</span> <span class="Comment">// End compute_container_address_offsets Non-atom Special-cases</span>
-<span id="L344" class="LineNr"> 344 </span>  <span class="Delimiter">}</span>
-<span id="L345" class="LineNr"> 345 </span>  <span class="Normal">const</span> type_tree* base_type = type<span class="Delimiter">;</span>
-<span id="L346" class="LineNr"> 346 </span>  <span class="Comment">// Update base_type in compute_container_address_offsets</span>
-<span id="L347" class="LineNr"> 347 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!contains_key<span class="Delimiter">(</span>Type<span class="Delimiter">,</span> base_type<span class="Delimiter">-&gt;</span>value<span class="Delimiter">))</span> <span class="Identifier">return</span><span class="Delimiter">;</span>  <span class="Comment">// error raised elsewhere</span>
-<span id="L348" class="LineNr"> 348 </span>  type_info&amp; info = get<span class="Delimiter">(</span>Type<span class="Delimiter">,</span> base_type<span class="Delimiter">-&gt;</span>value<span class="Delimiter">);</span>
-<span id="L349" class="LineNr"> 349 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>info<span class="Delimiter">.</span>kind == <a href='010vm.cc.html#L173'>CONTAINER</a><span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L350" class="LineNr"> 350 </span>  <span class="Conceal">¦</span> compute_container_address_offsets<span class="Delimiter">(</span>info<span class="Delimiter">,</span> type<span class="Delimiter">,</span> location_for_error_messages<span class="Delimiter">);</span>
-<span id="L351" class="LineNr"> 351 </span>  <span class="Delimiter">}</span>
-<span id="L352" class="LineNr"> 352 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>info<span class="Delimiter">.</span>kind == <a href='010vm.cc.html#L174'>EXCLUSIVE_CONTAINER</a><span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L353" class="LineNr"> 353 </span>  <span class="Conceal">¦</span> <a href='036refcount.cc.html#L364'>compute_exclusive_container_address_offsets</a><span class="Delimiter">(</span>info<span class="Delimiter">,</span> type<span class="Delimiter">,</span> location_for_error_messages<span class="Delimiter">);</span>
-<span id="L354" class="LineNr"> 354 </span>  <span class="Delimiter">}</span>
-<span id="L355" class="LineNr"> 355 </span><span class="Delimiter">}</span>
-<span id="L356" class="LineNr"> 356 </span>
-<span id="L357" class="LineNr"> 357 </span><span class="Normal">void</span> compute_container_address_offsets<span class="Delimiter">(</span><span class="Normal">const</span> type_info&amp; container_info<span class="Delimiter">,</span> <span class="Normal">const</span> type_tree* full_type<span class="Delimiter">,</span> <span class="Normal">const</span> string&amp; location_for_error_messages<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L358" class="LineNr"> 358 </span>  container_metadata&amp; metadata = get<span class="Delimiter">(</span>Container_metadata<span class="Delimiter">,</span> full_type<span class="Delimiter">);</span>
-<span id="L359" class="LineNr"> 359 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!metadata<span class="Delimiter">.</span><a href='043space.cc.html#L82'>address</a><span class="Delimiter">.</span>empty<span class="Delimiter">())</span> <span class="Identifier">return</span><span class="Delimiter">;</span>
-<span id="L360" class="LineNr"> 360 </span>  <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">9994</span><span class="Delimiter">,</span> <span class="Constant">&quot;transform&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;compute <a href='043space.cc.html#L82'>address</a> offsets for container &quot;</span> &lt;&lt; container_info<span class="Delimiter">.</span>name &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
-<span id="L361" class="LineNr"> 361 </span>  <a href='036refcount.cc.html#L374'>append_addresses</a><span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">,</span> full_type<span class="Delimiter">,</span> metadata<span class="Delimiter">.</span><a href='043space.cc.html#L82'>address</a><span class="Delimiter">,</span> set&lt;tag_condition_info&gt;<span class="Delimiter">(),</span> location_for_error_messages<span class="Delimiter">);</span>
-<span id="L362" class="LineNr"> 362 </span><span class="Delimiter">}</span>
-<span id="L363" class="LineNr"> 363 </span>
-<span id="L364" class="LineNr"> 364 </span><span class="Normal">void</span> <a href='036refcount.cc.html#L364'>compute_exclusive_container_address_offsets</a><span class="Delimiter">(</span><span class="Normal">const</span> type_info&amp; exclusive_container_info<span class="Delimiter">,</span> <span class="Normal">const</span> type_tree* full_type<span class="Delimiter">,</span> <span class="Normal">const</span> string&amp; location_for_error_messages<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L365" class="LineNr"> 365 </span>  container_metadata&amp; metadata = get<span class="Delimiter">(</span>Container_metadata<span class="Delimiter">,</span> full_type<span class="Delimiter">);</span>
-<span id="L366" class="LineNr"> 366 </span>  <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">9994</span><span class="Delimiter">,</span> <span class="Constant">&quot;transform&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;compute <a href='043space.cc.html#L82'>address</a> offsets for exclusive container &quot;</span> &lt;&lt; exclusive_container_info<span class="Delimiter">.</span>name &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
-<span id="L367" class="LineNr"> 367 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> tag = <span class="Constant">0</span><span class="Delimiter">;</span>  tag &lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>exclusive_container_info<span class="Delimiter">.</span>elements<span class="Delimiter">);</span>  ++tag<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L368" class="LineNr"> 368 </span>  <span class="Conceal">¦</span> set&lt;tag_condition_info&gt; key<span class="Delimiter">;</span>
-<span id="L369" class="LineNr"> 369 </span>  <span class="Conceal">¦</span> key<span class="Delimiter">.</span>insert<span class="Delimiter">(</span>tag_condition_info<span class="Delimiter">(</span><span class="Comment">/*</span><span class="Comment">tag is at offset</span><span class="Comment">*/</span><span class="Constant">0</span><span class="Delimiter">,</span> tag<span class="Delimiter">));</span>
-<span id="L370" class="LineNr"> 370 </span>  <span class="Conceal">¦</span> <a href='036refcount.cc.html#L374'>append_addresses</a><span class="Delimiter">(</span><span class="Comment">/*</span><span class="Comment">skip tag offset</span><span class="Comment">*/</span><span class="Constant">1</span><span class="Delimiter">,</span> variant_type<span class="Delimiter">(</span>full_type<span class="Delimiter">,</span> tag<span class="Delimiter">).</span>type<span class="Delimiter">,</span> metadata<span class="Delimiter">.</span><a href='043space.cc.html#L82'>address</a><span class="Delimiter">,</span> key<span class="Delimiter">,</span> location_for_error_messages<span class="Delimiter">);</span>
-<span id="L371" class="LineNr"> 371 </span>  <span class="Delimiter">}</span>
-<span id="L372" class="LineNr"> 372 </span><span class="Delimiter">}</span>
-<span id="L373" class="LineNr"> 373 </span>
-<span id="L374" class="LineNr"> 374 </span><span class="Normal">void</span> <a href='036refcount.cc.html#L374'>append_addresses</a><span class="Delimiter">(</span><span class="Normal">int</span> base_offset<span class="Delimiter">,</span> <span class="Normal">const</span> type_tree* type<span class="Delimiter">,</span> map&lt;set&lt;tag_condition_info&gt;<span class="Delimiter">,</span> set&lt;address_element_info&gt; &gt;&amp; out<span class="Delimiter">,</span> <span class="Normal">const</span> set&lt;tag_condition_info&gt;&amp; key<span class="Delimiter">,</span> <span class="Normal">const</span> string&amp; location_for_error_messages<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L375" class="LineNr"> 375 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>is_mu_address<span class="Delimiter">(</span>type<span class="Delimiter">))</span> <span class="Delimiter">{</span>
-<span id="L376" class="LineNr"> 376 </span>  <span class="Conceal">¦</span> <a href='001help.cc.html#L229'>get_or_insert</a><span class="Delimiter">(</span>out<span class="Delimiter">,</span> key<span class="Delimiter">).</span>insert<span class="Delimiter">(</span>address_element_info<span class="Delimiter">(</span>base_offset<span class="Delimiter">,</span> <span class="Normal">new</span> type_tree<span class="Delimiter">(</span>*payload_type<span class="Delimiter">(</span>type<span class="Delimiter">))));</span>
-<span id="L377" class="LineNr"> 377 </span>  <span class="Conceal">¦</span> <span class="Identifier">return</span><span class="Delimiter">;</span>
-<span id="L378" class="LineNr"> 378 </span>  <span class="Delimiter">}</span>
-<span id="L379" class="LineNr"> 379 </span>  <span class="Normal">const</span> type_tree* base_type = type<span class="Delimiter">;</span>
-<span id="L380" class="LineNr"> 380 </span>  <span class="Comment">// Update base_type in append_container_address_offsets</span>
-<span id="L381" class="LineNr"> 381 </span>  <span class="Normal">const</span> type_info&amp; info = get<span class="Delimiter">(</span>Type<span class="Delimiter">,</span> base_type<span class="Delimiter">-&gt;</span>value<span class="Delimiter">);</span>
-<span id="L382" class="LineNr"> 382 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>info<span class="Delimiter">.</span>kind == <a href='010vm.cc.html#L173'>CONTAINER</a><span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L383" class="LineNr"> 383 </span>  <span class="Conceal">¦</span> <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> curr_index = <span class="Constant">0</span><span class="Delimiter">,</span> curr_offset = base_offset<span class="Delimiter">;</span>  curr_index &lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>info<span class="Delimiter">.</span>elements<span class="Delimiter">);</span>  ++curr_index<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L384" class="LineNr"> 384 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">9993</span><span class="Delimiter">,</span> <span class="Constant">&quot;transform&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;checking container &quot;</span> &lt;&lt; base_type<span class="Delimiter">-&gt;</span>name &lt;&lt; <span class="Constant">&quot;, element &quot;</span> &lt;&lt; curr_index &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
-<span id="L385" class="LineNr"> 385 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> reagent<span class="Comment">/*</span><span class="Comment">copy</span><span class="Comment">*/</span> element = <a href='030container.cc.html#L429'>element_type</a><span class="Delimiter">(</span>type<span class="Delimiter">,</span> curr_index<span class="Delimiter">);</span>  <span class="Comment">// not base_type</span>
-<span id="L386" class="LineNr"> 386 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Comment">// Compute Container Address Offset(element)</span>
-<span id="L387" class="LineNr"> 387 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>is_mu_address<span class="Delimiter">(</span>element<span class="Delimiter">))</span> <span class="Delimiter">{</span>
-<span id="L388" class="LineNr"> 388 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">9993</span><span class="Delimiter">,</span> <span class="Constant">&quot;transform&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;address at offset &quot;</span> &lt;&lt; curr_offset &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
-<span id="L389" class="LineNr"> 389 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='001help.cc.html#L229'>get_or_insert</a><span class="Delimiter">(</span>out<span class="Delimiter">,</span> key<span class="Delimiter">).</span>insert<span class="Delimiter">(</span>address_element_info<span class="Delimiter">(</span>curr_offset<span class="Delimiter">,</span> <span class="Normal">new</span> type_tree<span class="Delimiter">(</span>*payload_type<span class="Delimiter">(</span>element<span class="Delimiter">.</span>type<span class="Delimiter">))));</span>
-<span id="L390" class="LineNr"> 390 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> ++curr_offset<span class="Delimiter">;</span>
-<span id="L391" class="LineNr"> 391 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Delimiter">}</span>
-<span id="L392" class="LineNr"> 392 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">else</span> <span class="Normal">if</span> <span class="Delimiter">(</span>is_mu_array<span class="Delimiter">(</span>element<span class="Delimiter">))</span> <span class="Delimiter">{</span>
-<span id="L393" class="LineNr"> 393 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> curr_offset += <span class="Comment">/*</span><span class="Comment">array length</span><span class="Comment">*/</span><span class="Constant">1</span><span class="Delimiter">;</span>
-<span id="L394" class="LineNr"> 394 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">const</span> type_tree* array_element_type = <a href='032array.cc.html#L381'>array_element</a><span class="Delimiter">(</span>element<span class="Delimiter">.</span>type<span class="Delimiter">);</span>
-<span id="L395" class="LineNr"> 395 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">int</span> array_element_size = size_of<span class="Delimiter">(</span>array_element_type<span class="Delimiter">);</span>
-<span id="L396" class="LineNr"> 396 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> i = <span class="Constant">0</span><span class="Delimiter">;</span> i &lt; <a href='032array.cc.html#L117'>static_array_length</a><span class="Delimiter">(</span>element<span class="Delimiter">.</span>type<span class="Delimiter">);</span> ++i<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L397" class="LineNr"> 397 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='036refcount.cc.html#L374'>append_addresses</a><span class="Delimiter">(</span>curr_offset<span class="Delimiter">,</span> array_element_type<span class="Delimiter">,</span> out<span class="Delimiter">,</span> key<span class="Delimiter">,</span> location_for_error_messages<span class="Delimiter">);</span>
-<span id="L398" class="LineNr"> 398 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> curr_offset += array_element_size<span class="Delimiter">;</span>
-<span id="L399" class="LineNr"> 399 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Delimiter">}</span>
-<span id="L400" class="LineNr"> 400 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Delimiter">}</span>
-<span id="L401" class="LineNr"> 401 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">else</span> <span class="Normal">if</span> <span class="Delimiter">(</span>is_mu_container<span class="Delimiter">(</span>element<span class="Delimiter">))</span> <span class="Delimiter">{</span>
-<span id="L402" class="LineNr"> 402 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='036refcount.cc.html#L374'>append_addresses</a><span class="Delimiter">(</span>curr_offset<span class="Delimiter">,</span> element<span class="Delimiter">.</span>type<span class="Delimiter">,</span> out<span class="Delimiter">,</span> key<span class="Delimiter">,</span> location_for_error_messages<span class="Delimiter">);</span>
-<span id="L403" class="LineNr"> 403 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> curr_offset += size_of<span class="Delimiter">(</span>element<span class="Delimiter">);</span>
-<span id="L404" class="LineNr"> 404 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Delimiter">}</span>
-<span id="L405" class="LineNr"> 405 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">else</span> <span class="Normal">if</span> <span class="Delimiter">(</span>is_mu_exclusive_container<span class="Delimiter">(</span>element<span class="Delimiter">))</span> <span class="Delimiter">{</span>
-<span id="L406" class="LineNr"> 406 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">const</span> type_tree* element_base_type = element<span class="Delimiter">.</span>type<span class="Delimiter">;</span>
-<span id="L407" class="LineNr"> 407 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Comment">// Update element_base_type For Exclusive Container in append_addresses</span>
-<span id="L408" class="LineNr"> 408 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">const</span> type_info&amp; element_info = get<span class="Delimiter">(</span>Type<span class="Delimiter">,</span> element_base_type<span class="Delimiter">-&gt;</span>value<span class="Delimiter">);</span>
-<span id="L409" class="LineNr"> 409 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> tag = <span class="Constant">0</span><span class="Delimiter">;</span>  tag &lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>element_info<span class="Delimiter">.</span>elements<span class="Delimiter">);</span>  ++tag<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L410" class="LineNr"> 410 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> set&lt;tag_condition_info&gt; new_key = key<span class="Delimiter">;</span>
-<span id="L411" class="LineNr"> 411 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> new_key<span class="Delimiter">.</span>insert<span class="Delimiter">(</span>tag_condition_info<span class="Delimiter">(</span>curr_offset<span class="Delimiter">,</span> tag<span class="Delimiter">));</span>
-<span id="L412" class="LineNr"> 412 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>!contains_key<span class="Delimiter">(</span>out<span class="Delimiter">,</span> new_key<span class="Delimiter">))</span>
-<span id="L413" class="LineNr"> 413 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='036refcount.cc.html#L374'>append_addresses</a><span class="Delimiter">(</span>curr_offset+<span class="Comment">/*</span><span class="Comment">skip tag</span><span class="Comment">*/</span><span class="Constant">1</span><span class="Delimiter">,</span> variant_type<span class="Delimiter">(</span>element<span class="Delimiter">.</span>type<span class="Delimiter">,</span> tag<span class="Delimiter">).</span>type<span class="Delimiter">,</span> out<span class="Delimiter">,</span> new_key<span class="Delimiter">,</span> location_for_error_messages<span class="Delimiter">);</span>
-<span id="L414" class="LineNr"> 414 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Delimiter">}</span>
-<span id="L415" class="LineNr"> 415 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> curr_offset += size_of<span class="Delimiter">(</span>element<span class="Delimiter">);</span>
-<span id="L416" class="LineNr"> 416 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Delimiter">}</span>
-<span id="L417" class="LineNr"> 417 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">else</span> <span class="Delimiter">{</span>
-<span id="L418" class="LineNr"> 418 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Comment">// non-address primitive</span>
-<span id="L419" class="LineNr"> 419 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> ++curr_offset<span class="Delimiter">;</span>
-<span id="L420" class="LineNr"> 420 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Delimiter">}</span>
-<span id="L421" class="LineNr"> 421 </span>  <span class="Conceal">¦</span> <span class="Delimiter">}</span>
-<span id="L422" class="LineNr"> 422 </span>  <span class="Delimiter">}</span>
-<span id="L423" class="LineNr"> 423 </span>  <span class="Normal">else</span> <span class="Normal">if</span> <span class="Delimiter">(</span>info<span class="Delimiter">.</span>kind == <a href='010vm.cc.html#L174'>EXCLUSIVE_CONTAINER</a><span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L424" class="LineNr"> 424 </span>  <span class="Conceal">¦</span> <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> tag = <span class="Constant">0</span><span class="Delimiter">;</span>  tag &lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>info<span class="Delimiter">.</span>elements<span class="Delimiter">);</span>  ++tag<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L425" class="LineNr"> 425 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> set&lt;tag_condition_info&gt; new_key = key<span class="Delimiter">;</span>
-<span id="L426" class="LineNr"> 426 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> new_key<span class="Delimiter">.</span>insert<span class="Delimiter">(</span>tag_condition_info<span class="Delimiter">(</span>base_offset<span class="Delimiter">,</span> tag<span class="Delimiter">));</span>
-<span id="L427" class="LineNr"> 427 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>!contains_key<span class="Delimiter">(</span>out<span class="Delimiter">,</span> new_key<span class="Delimiter">))</span>
-<span id="L428" class="LineNr"> 428 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='036refcount.cc.html#L374'>append_addresses</a><span class="Delimiter">(</span>base_offset+<span class="Comment">/*</span><span class="Comment">skip tag</span><span class="Comment">*/</span><span class="Constant">1</span><span class="Delimiter">,</span> variant_type<span class="Delimiter">(</span>type<span class="Delimiter">,</span> tag<span class="Delimiter">).</span>type<span class="Delimiter">,</span> out<span class="Delimiter">,</span> new_key<span class="Delimiter">,</span> location_for_error_messages<span class="Delimiter">);</span>
-<span id="L429" class="LineNr"> 429 </span>  <span class="Conceal">¦</span> <span class="Delimiter">}</span>
-<span id="L430" class="LineNr"> 430 </span>  <span class="Delimiter">}</span>
-<span id="L431" class="LineNr"> 431 </span><span class="Delimiter">}</span>
-<span id="L432" class="LineNr"> 432 </span>
-<span id="L433" class="LineNr"> 433 </span><span class="Comment">//: for the following unit tests we'll do the work of the transform by hand</span>
-<span id="L434" class="LineNr"> 434 </span>
-<span id="L435" class="LineNr"> 435 </span><span class="Delimiter">:(before &quot;End Unit Tests&quot;)</span>
-<span id="L436" class="LineNr"> 436 </span><span class="Normal">void</span> <a href='036refcount.cc.html#L436'>test_container_address_offsets_empty</a><span class="Delimiter">()</span> <span class="Delimiter">{</span>
-<span id="L437" class="LineNr"> 437 </span>  <span class="Normal">int</span> old_size = <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>Container_metadata<span class="Delimiter">);</span>
-<span id="L438" class="LineNr"> 438 </span>  <span class="Comment">// define a container with no addresses</span>
-<span id="L439" class="LineNr"> 439 </span>  reagent r<span class="Delimiter">(</span><span class="Constant">&quot;x:point&quot;</span><span class="Delimiter">);</span>
-<span id="L440" class="LineNr"> 440 </span>  compute_container_sizes<span class="Delimiter">(</span>r<span class="Delimiter">,</span> <span class="Constant">&quot;&quot;</span><span class="Delimiter">);</span>  <span class="Comment">// need to first pre-populate the metadata</span>
-<span id="L441" class="LineNr"> 441 </span>  <span class="Comment">// scan</span>
-<span id="L442" class="LineNr"> 442 </span>  compute_container_address_offsets<span class="Delimiter">(</span>r<span class="Delimiter">,</span> <span class="Constant">&quot;&quot;</span><span class="Delimiter">);</span>
-<span id="L443" class="LineNr"> 443 </span>  <span class="Comment">// global metadata contains just the entry for foo</span>
-<span id="L444" class="LineNr"> 444 </span>  <span class="Comment">// no entries for non-container types or other junk</span>
-<span id="L445" class="LineNr"> 445 </span>  <a href='002test.cc.html#L31'>CHECK_EQ</a><span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>Container_metadata<span class="Delimiter">)</span>-old_size<span class="Delimiter">,</span> <span class="Constant">1</span><span class="Delimiter">);</span>
-<span id="L446" class="LineNr"> 446 </span>  <span class="Comment">// the reagent we scanned knows it has no addresses</span>
-<span id="L447" class="LineNr"> 447 </span>  <a href='002test.cc.html#L24'>CHECK</a><span class="Delimiter">(</span>r<span class="Delimiter">.</span>metadata<span class="Delimiter">.</span><a href='043space.cc.html#L82'>address</a><span class="Delimiter">.</span>empty<span class="Delimiter">());</span>
-<span id="L448" class="LineNr"> 448 </span>  <span class="Comment">// the global table contains an identical entry</span>
-<span id="L449" class="LineNr"> 449 </span>  <a href='002test.cc.html#L24'>CHECK</a><span class="Delimiter">(</span>contains_key<span class="Delimiter">(</span>Container_metadata<span class="Delimiter">,</span> r<span class="Delimiter">.</span>type<span class="Delimiter">));</span>
-<span id="L450" class="LineNr"> 450 </span>  <a href='002test.cc.html#L24'>CHECK</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Container_metadata<span class="Delimiter">,</span> r<span class="Delimiter">.</span>type<span class="Delimiter">).</span><a href='043space.cc.html#L82'>address</a><span class="Delimiter">.</span>empty<span class="Delimiter">());</span>
-<span id="L451" class="LineNr"> 451 </span>  <span class="Comment">// compute_container_address_offsets creates no new entries</span>
-<span id="L452" class="LineNr"> 452 </span>  <a href='002test.cc.html#L31'>CHECK_EQ</a><span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>Container_metadata<span class="Delimiter">)</span>-old_size<span class="Delimiter">,</span> <span class="Constant">1</span><span class="Delimiter">);</span>
-<span id="L453" class="LineNr"> 453 </span><span class="Delimiter">}</span>
-<span id="L454" class="LineNr"> 454 </span>
-<span id="L455" class="LineNr"> 455 </span><span class="Normal">void</span> <a href='036refcount.cc.html#L455'>test_container_address_offsets</a><span class="Delimiter">()</span> <span class="Delimiter">{</span>
-<span id="L456" class="LineNr"> 456 </span>  <span class="Normal">int</span> old_size = <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>Container_metadata<span class="Delimiter">);</span>
-<span id="L457" class="LineNr"> 457 </span>  <span class="Comment">// define a container with an address at offset 0 that we have the size for</span>
-<span id="L458" class="LineNr"> 458 </span>  run<span class="Delimiter">(</span><span class="Constant">&quot;container foo [</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span>
-<span id="L459" class="LineNr"> 459 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Constant">&quot;  x:<a href='043space.cc.html#L82'>address</a>:num</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span>
-<span id="L460" class="LineNr"> 460 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Constant">&quot;]</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span><span class="Delimiter">);</span>
-<span id="L461" class="LineNr"> 461 </span>  reagent r<span class="Delimiter">(</span><span class="Constant">&quot;x:foo&quot;</span><span class="Delimiter">);</span>
-<span id="L462" class="LineNr"> 462 </span>  compute_container_sizes<span class="Delimiter">(</span>r<span class="Delimiter">,</span> <span class="Constant">&quot;&quot;</span><span class="Delimiter">);</span>  <span class="Comment">// need to first pre-populate the metadata</span>
-<span id="L463" class="LineNr"> 463 </span>  <span class="Comment">// scan</span>
-<span id="L464" class="LineNr"> 464 </span>  compute_container_address_offsets<span class="Delimiter">(</span>r<span class="Delimiter">,</span> <span class="Constant">&quot;&quot;</span><span class="Delimiter">);</span>
-<span id="L465" class="LineNr"> 465 </span>  <span class="Comment">// global metadata contains just the entry for foo</span>
-<span id="L466" class="LineNr"> 466 </span>  <span class="Comment">// no entries for non-container types or other junk</span>
-<span id="L467" class="LineNr"> 467 </span>  <a href='002test.cc.html#L31'>CHECK_EQ</a><span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>Container_metadata<span class="Delimiter">)</span>-old_size<span class="Delimiter">,</span> <span class="Constant">1</span><span class="Delimiter">);</span>
-<span id="L468" class="LineNr"> 468 </span>  <span class="Comment">// the reagent we scanned knows it has an address at offset 0</span>
-<span id="L469" class="LineNr"> 469 </span>  <a href='002test.cc.html#L31'>CHECK_EQ</a><span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>r<span class="Delimiter">.</span>metadata<span class="Delimiter">.</span><a href='043space.cc.html#L82'>address</a><span class="Delimiter">),</span> <span class="Constant">1</span><span class="Delimiter">);</span>
-<span id="L470" class="LineNr"> 470 </span>  <a href='002test.cc.html#L24'>CHECK</a><span class="Delimiter">(</span>contains_key<span class="Delimiter">(</span>r<span class="Delimiter">.</span>metadata<span class="Delimiter">.</span><a href='043space.cc.html#L82'>address</a><span class="Delimiter">,</span> set&lt;tag_condition_info&gt;<span class="Delimiter">()));</span>
-<span id="L471" class="LineNr"> 471 </span>  <span class="Normal">const</span> set&lt;address_element_info&gt;&amp; address_offsets = get<span class="Delimiter">(</span>r<span class="Delimiter">.</span>metadata<span class="Delimiter">.</span><a href='043space.cc.html#L82'>address</a><span class="Delimiter">,</span> set&lt;tag_condition_info&gt;<span class="Delimiter">());</span>  <span class="Comment">// unconditional for containers</span>
-<span id="L472" class="LineNr"> 472 </span>  <a href='002test.cc.html#L31'>CHECK_EQ</a><span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>address_offsets<span class="Delimiter">),</span> <span class="Constant">1</span><span class="Delimiter">);</span>
-<span id="L473" class="LineNr"> 473 </span>  <a href='002test.cc.html#L31'>CHECK_EQ</a><span class="Delimiter">(</span>address_offsets<span class="Delimiter">.</span>begin<span class="Delimiter">()-&gt;</span>offset<span class="Delimiter">,</span> <span class="Constant">0</span><span class="Delimiter">);</span>
-<span id="L474" class="LineNr"> 474 </span>  <a href='002test.cc.html#L24'>CHECK</a><span class="Delimiter">(</span>address_offsets<span class="Delimiter">.</span>begin<span class="Delimiter">()-&gt;</span><a href='030container.cc.html#L238'>payload_type</a><span class="Delimiter">-&gt;</span>atom<span class="Delimiter">);</span>
-<span id="L475" class="LineNr"> 475 </span>  <a href='002test.cc.html#L31'>CHECK_EQ</a><span class="Delimiter">(</span>address_offsets<span class="Delimiter">.</span>begin<span class="Delimiter">()-&gt;</span><a href='030container.cc.html#L238'>payload_type</a><span class="Delimiter">-&gt;</span>name<span class="Delimiter">,</span> <span class="Constant">&quot;number&quot;</span><span class="Delimiter">);</span>
-<span id="L476" class="LineNr"> 476 </span>  <span class="Comment">// the global table contains an identical entry</span>
-<span id="L477" class="LineNr"> 477 </span>  <a href='002test.cc.html#L24'>CHECK</a><span class="Delimiter">(</span>contains_key<span class="Delimiter">(</span>Container_metadata<span class="Delimiter">,</span> r<span class="Delimiter">.</span>type<span class="Delimiter">));</span>
-<span id="L478" class="LineNr"> 478 </span>  <span class="Normal">const</span> set&lt;address_element_info&gt;&amp; address_offsets2 = get<span class="Delimiter">(</span>get<span class="Delimiter">(</span>Container_metadata<span class="Delimiter">,</span> r<span class="Delimiter">.</span>type<span class="Delimiter">).</span><a href='043space.cc.html#L82'>address</a><span class="Delimiter">,</span> set&lt;tag_condition_info&gt;<span class="Delimiter">());</span>
-<span id="L479" class="LineNr"> 479 </span>  <a href='002test.cc.html#L31'>CHECK_EQ</a><span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>address_offsets2<span class="Delimiter">),</span> <span class="Constant">1</span><span class="Delimiter">);</span>
-<span id="L480" class="LineNr"> 480 </span>  <a href='002test.cc.html#L31'>CHECK_EQ</a><span class="Delimiter">(</span>address_offsets2<span class="Delimiter">.</span>begin<span class="Delimiter">()-&gt;</span>offset<span class="Delimiter">,</span> <span class="Constant">0</span><span class="Delimiter">);</span>
-<span id="L481" class="LineNr"> 481 </span>  <a href='002test.cc.html#L24'>CHECK</a><span class="Delimiter">(</span>address_offsets2<span class="Delimiter">.</span>begin<span class="Delimiter">()-&gt;</span><a href='030container.cc.html#L238'>payload_type</a><span class="Delimiter">-&gt;</span>atom<span class="Delimiter">);</span>
-<span id="L482" class="LineNr"> 482 </span>  <a href='002test.cc.html#L31'>CHECK_EQ</a><span class="Delimiter">(</span>address_offsets2<span class="Delimiter">.</span>begin<span class="Delimiter">()-&gt;</span><a href='030container.cc.html#L238'>payload_type</a><span class="Delimiter">-&gt;</span>name<span class="Delimiter">,</span> <span class="Constant">&quot;number&quot;</span><span class="Delimiter">);</span>
-<span id="L483" class="LineNr"> 483 </span>  <span class="Comment">// compute_container_address_offsets creates no new entries</span>
-<span id="L484" class="LineNr"> 484 </span>  <a href='002test.cc.html#L31'>CHECK_EQ</a><span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>Container_metadata<span class="Delimiter">)</span>-old_size<span class="Delimiter">,</span> <span class="Constant">1</span><span class="Delimiter">);</span>
-<span id="L485" class="LineNr"> 485 </span><span class="Delimiter">}</span>
-<span id="L486" class="LineNr"> 486 </span>
-<span id="L487" class="LineNr"> 487 </span><span class="Normal">void</span> <a href='036refcount.cc.html#L487'>test_container_address_offsets_2</a><span class="Delimiter">()</span> <span class="Delimiter">{</span>
-<span id="L488" class="LineNr"> 488 </span>  <span class="Normal">int</span> old_size = <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>Container_metadata<span class="Delimiter">);</span>
-<span id="L489" class="LineNr"> 489 </span>  <span class="Comment">// define a container with an address at offset 1 that we have the size for</span>
-<span id="L490" class="LineNr"> 490 </span>  run<span class="Delimiter">(</span><span class="Constant">&quot;container foo [</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span>
-<span id="L491" class="LineNr"> 491 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Constant">&quot;  x:num</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span>
-<span id="L492" class="LineNr"> 492 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Constant">&quot;  y:<a href='043space.cc.html#L82'>address</a>:num</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span>
-<span id="L493" class="LineNr"> 493 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Constant">&quot;]</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span><span class="Delimiter">);</span>
-<span id="L494" class="LineNr"> 494 </span>  reagent r<span class="Delimiter">(</span><span class="Constant">&quot;x:foo&quot;</span><span class="Delimiter">);</span>
-<span id="L495" class="LineNr"> 495 </span>  compute_container_sizes<span class="Delimiter">(</span>r<span class="Delimiter">,</span> <span class="Constant">&quot;&quot;</span><span class="Delimiter">);</span>  <span class="Comment">// need to first pre-populate the metadata</span>
-<span id="L496" class="LineNr"> 496 </span>  <span class="Comment">// global metadata contains just the entry for foo</span>
-<span id="L497" class="LineNr"> 497 </span>  <span class="Comment">// no entries for non-container types or other junk</span>
-<span id="L498" class="LineNr"> 498 </span>  <a href='002test.cc.html#L31'>CHECK_EQ</a><span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>Container_metadata<span class="Delimiter">)</span>-old_size<span class="Delimiter">,</span> <span class="Constant">1</span><span class="Delimiter">);</span>
-<span id="L499" class="LineNr"> 499 </span>  <span class="Comment">// scan</span>
-<span id="L500" class="LineNr"> 500 </span>  compute_container_address_offsets<span class="Delimiter">(</span>r<span class="Delimiter">,</span> <span class="Constant">&quot;&quot;</span><span class="Delimiter">);</span>
-<span id="L501" class="LineNr"> 501 </span>  <span class="Comment">// compute_container_address_offsets creates no new entries</span>
-<span id="L502" class="LineNr"> 502 </span>  <a href='002test.cc.html#L31'>CHECK_EQ</a><span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>Container_metadata<span class="Delimiter">)</span>-old_size<span class="Delimiter">,</span> <span class="Constant">1</span><span class="Delimiter">);</span>
-<span id="L503" class="LineNr"> 503 </span>  <span class="Comment">// the reagent we scanned knows it has an address at offset 1</span>
-<span id="L504" class="LineNr"> 504 </span>  <a href='002test.cc.html#L31'>CHECK_EQ</a><span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>r<span class="Delimiter">.</span>metadata<span class="Delimiter">.</span><a href='043space.cc.html#L82'>address</a><span class="Delimiter">),</span> <span class="Constant">1</span><span class="Delimiter">);</span>
-<span id="L505" class="LineNr"> 505 </span>  <a href='002test.cc.html#L24'>CHECK</a><span class="Delimiter">(</span>contains_key<span class="Delimiter">(</span>r<span class="Delimiter">.</span>metadata<span class="Delimiter">.</span><a href='043space.cc.html#L82'>address</a><span class="Delimiter">,</span> set&lt;tag_condition_info&gt;<span class="Delimiter">()));</span>
-<span id="L506" class="LineNr"> 506 </span>  <span class="Normal">const</span> set&lt;address_element_info&gt;&amp; address_offsets = get<span class="Delimiter">(</span>r<span class="Delimiter">.</span>metadata<span class="Delimiter">.</span><a href='043space.cc.html#L82'>address</a><span class="Delimiter">,</span> set&lt;tag_condition_info&gt;<span class="Delimiter">());</span>
-<span id="L507" class="LineNr"> 507 </span>  <a href='002test.cc.html#L31'>CHECK_EQ</a><span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>address_offsets<span class="Delimiter">),</span> <span class="Constant">1</span><span class="Delimiter">);</span>
-<span id="L508" class="LineNr"> 508 </span>  <a href='002test.cc.html#L31'>CHECK_EQ</a><span class="Delimiter">(</span>address_offsets<span class="Delimiter">.</span>begin<span class="Delimiter">()-&gt;</span>offset<span class="Delimiter">,</span> <span class="Constant">1</span><span class="Delimiter">);</span>  <span class="Comment">//</span>
-<span id="L509" class="LineNr"> 509 </span>  <a href='002test.cc.html#L24'>CHECK</a><span class="Delimiter">(</span>address_offsets<span class="Delimiter">.</span>begin<span class="Delimiter">()-&gt;</span><a href='030container.cc.html#L238'>payload_type</a><span class="Delimiter">-&gt;</span>atom<span class="Delimiter">);</span>
-<span id="L510" class="LineNr"> 510 </span>  <a href='002test.cc.html#L31'>CHECK_EQ</a><span class="Delimiter">(</span>address_offsets<span class="Delimiter">.</span>begin<span class="Delimiter">()-&gt;</span><a href='030container.cc.html#L238'>payload_type</a><span class="Delimiter">-&gt;</span>name<span class="Delimiter">,</span> <span class="Constant">&quot;number&quot;</span><span class="Delimiter">);</span>
-<span id="L511" class="LineNr"> 511 </span>  <span class="Comment">// the global table contains an identical entry</span>
-<span id="L512" class="LineNr"> 512 </span>  <a href='002test.cc.html#L24'>CHECK</a><span class="Delimiter">(</span>contains_key<span class="Delimiter">(</span>Container_metadata<span class="Delimiter">,</span> r<span class="Delimiter">.</span>type<span class="Delimiter">));</span>
-<span id="L513" class="LineNr"> 513 </span>  <span class="Normal">const</span> set&lt;address_element_info&gt;&amp; address_offsets2 = get<span class="Delimiter">(</span>get<span class="Delimiter">(</span>Container_metadata<span class="Delimiter">,</span> r<span class="Delimiter">.</span>type<span class="Delimiter">).</span><a href='043space.cc.html#L82'>address</a><span class="Delimiter">,</span> set&lt;tag_condition_info&gt;<span class="Delimiter">());</span>
-<span id="L514" class="LineNr"> 514 </span>  <a href='002test.cc.html#L31'>CHECK_EQ</a><span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>address_offsets2<span class="Delimiter">),</span> <span class="Constant">1</span><span class="Delimiter">);</span>
-<span id="L515" class="LineNr"> 515 </span>  <a href='002test.cc.html#L31'>CHECK_EQ</a><span class="Delimiter">(</span>address_offsets2<span class="Delimiter">.</span>begin<span class="Delimiter">()-&gt;</span>offset<span class="Delimiter">,</span> <span class="Constant">1</span><span class="Delimiter">);</span>  <span class="Comment">//</span>
-<span id="L516" class="LineNr"> 516 </span>  <a href='002test.cc.html#L24'>CHECK</a><span class="Delimiter">(</span>address_offsets2<span class="Delimiter">.</span>begin<span class="Delimiter">()-&gt;</span><a href='030container.cc.html#L238'>payload_type</a><span class="Delimiter">-&gt;</span>atom<span class="Delimiter">);</span>
-<span id="L517" class="LineNr"> 517 </span>  <a href='002test.cc.html#L31'>CHECK_EQ</a><span class="Delimiter">(</span>address_offsets2<span class="Delimiter">.</span>begin<span class="Delimiter">()-&gt;</span><a href='030container.cc.html#L238'>payload_type</a><span class="Delimiter">-&gt;</span>name<span class="Delimiter">,</span> <span class="Constant">&quot;number&quot;</span><span class="Delimiter">);</span>
-<span id="L518" class="LineNr"> 518 </span><span class="Delimiter">}</span>
-<span id="L519" class="LineNr"> 519 </span>
-<span id="L520" class="LineNr"> 520 </span><span class="Normal">void</span> <a href='036refcount.cc.html#L520'>test_container_address_offsets_nested</a><span class="Delimiter">()</span> <span class="Delimiter">{</span>
-<span id="L521" class="LineNr"> 521 </span>  <span class="Normal">int</span> old_size = <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>Container_metadata<span class="Delimiter">);</span>
-<span id="L522" class="LineNr"> 522 </span>  <span class="Comment">// define a container with a nested container containing an address</span>
-<span id="L523" class="LineNr"> 523 </span>  run<span class="Delimiter">(</span><span class="Constant">&quot;container foo [</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span>
-<span id="L524" class="LineNr"> 524 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Constant">&quot;  x:<a href='043space.cc.html#L82'>address</a>:num</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span>
-<span id="L525" class="LineNr"> 525 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Constant">&quot;  y:num</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span>
-<span id="L526" class="LineNr"> 526 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Constant">&quot;]</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span>
-<span id="L527" class="LineNr"> 527 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Constant">&quot;container bar [</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span>
-<span id="L528" class="LineNr"> 528 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Constant">&quot;  p:point</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span>
-<span id="L529" class="LineNr"> 529 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Constant">&quot;  f:foo</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span>  <span class="Comment">// nested container containing address</span>
-<span id="L530" class="LineNr"> 530 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Constant">&quot;]</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span><span class="Delimiter">);</span>
-<span id="L531" class="LineNr"> 531 </span>  reagent r<span class="Delimiter">(</span><span class="Constant">&quot;x:bar&quot;</span><span class="Delimiter">);</span>
-<span id="L532" class="LineNr"> 532 </span>  compute_container_sizes<span class="Delimiter">(</span>r<span class="Delimiter">,</span> <span class="Constant">&quot;&quot;</span><span class="Delimiter">);</span>  <span class="Comment">// need to first pre-populate the metadata</span>
-<span id="L533" class="LineNr"> 533 </span>  <span class="Comment">// global metadata contains entries for bar and included types: point and foo</span>
-<span id="L534" class="LineNr"> 534 </span>  <span class="Comment">// no entries for non-container types or other junk</span>
-<span id="L535" class="LineNr"> 535 </span>  <a href='002test.cc.html#L31'>CHECK_EQ</a><span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>Container_metadata<span class="Delimiter">)</span>-old_size<span class="Delimiter">,</span> <span class="Constant">3</span><span class="Delimiter">);</span>
-<span id="L536" class="LineNr"> 536 </span>  <span class="Comment">// scan</span>
-<span id="L537" class="LineNr"> 537 </span>  compute_container_address_offsets<span class="Delimiter">(</span>r<span class="Delimiter">,</span> <span class="Constant">&quot;&quot;</span><span class="Delimiter">);</span>
-<span id="L538" class="LineNr"> 538 </span>  <span class="Comment">// the reagent we scanned knows it has an address at offset 2</span>
-<span id="L539" class="LineNr"> 539 </span>  <a href='002test.cc.html#L31'>CHECK_EQ</a><span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>r<span class="Delimiter">.</span>metadata<span class="Delimiter">.</span><a href='043space.cc.html#L82'>address</a><span class="Delimiter">),</span> <span class="Constant">1</span><span class="Delimiter">);</span>
-<span id="L540" class="LineNr"> 540 </span>  <a href='002test.cc.html#L24'>CHECK</a><span class="Delimiter">(</span>contains_key<span class="Delimiter">(</span>r<span class="Delimiter">.</span>metadata<span class="Delimiter">.</span><a href='043space.cc.html#L82'>address</a><span class="Delimiter">,</span> set&lt;tag_condition_info&gt;<span class="Delimiter">()));</span>
-<span id="L541" class="LineNr"> 541 </span>  <span class="Normal">const</span> set&lt;address_element_info&gt;&amp; address_offsets = get<span class="Delimiter">(</span>r<span class="Delimiter">.</span>metadata<span class="Delimiter">.</span><a href='043space.cc.html#L82'>address</a><span class="Delimiter">,</span> set&lt;tag_condition_info&gt;<span class="Delimiter">());</span>
-<span id="L542" class="LineNr"> 542 </span>  <a href='002test.cc.html#L31'>CHECK_EQ</a><span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>address_offsets<span class="Delimiter">),</span> <span class="Constant">1</span><span class="Delimiter">);</span>
-<span id="L543" class="LineNr"> 543 </span>  <a href='002test.cc.html#L31'>CHECK_EQ</a><span class="Delimiter">(</span>address_offsets<span class="Delimiter">.</span>begin<span class="Delimiter">()-&gt;</span>offset<span class="Delimiter">,</span> <span class="Constant">2</span><span class="Delimiter">);</span>  <span class="Comment">//</span>
-<span id="L544" class="LineNr"> 544 </span>  <a href='002test.cc.html#L24'>CHECK</a><span class="Delimiter">(</span>address_offsets<span class="Delimiter">.</span>begin<span class="Delimiter">()-&gt;</span><a href='030container.cc.html#L238'>payload_type</a><span class="Delimiter">-&gt;</span>atom<span class="Delimiter">);</span>
-<span id="L545" class="LineNr"> 545 </span>  <a href='002test.cc.html#L31'>CHECK_EQ</a><span class="Delimiter">(</span>address_offsets<span class="Delimiter">.</span>begin<span class="Delimiter">()-&gt;</span><a href='030container.cc.html#L238'>payload_type</a><span class="Delimiter">-&gt;</span>name<span class="Delimiter">,</span> <span class="Constant">&quot;number&quot;</span><span class="Delimiter">);</span>
-<span id="L546" class="LineNr"> 546 </span>  <span class="Comment">// the global table also knows its address offset</span>
-<span id="L547" class="LineNr"> 547 </span>  <a href='002test.cc.html#L24'>CHECK</a><span class="Delimiter">(</span>contains_key<span class="Delimiter">(</span>Container_metadata<span class="Delimiter">,</span> r<span class="Delimiter">.</span>type<span class="Delimiter">));</span>
-<span id="L548" class="LineNr"> 548 </span>  <span class="Normal">const</span> set&lt;address_element_info&gt;&amp; address_offsets2 = get<span class="Delimiter">(</span>get<span class="Delimiter">(</span>Container_metadata<span class="Delimiter">,</span> r<span class="Delimiter">.</span>type<span class="Delimiter">).</span><a href='043space.cc.html#L82'>address</a><span class="Delimiter">,</span> set&lt;tag_condition_info&gt;<span class="Delimiter">());</span>
-<span id="L549" class="LineNr"> 549 </span>  <a href='002test.cc.html#L31'>CHECK_EQ</a><span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>address_offsets2<span class="Delimiter">),</span> <span class="Constant">1</span><span class="Delimiter">);</span>
-<span id="L550" class="LineNr"> 550 </span>  <a href='002test.cc.html#L31'>CHECK_EQ</a><span class="Delimiter">(</span>address_offsets2<span class="Delimiter">.</span>begin<span class="Delimiter">()-&gt;</span>offset<span class="Delimiter">,</span> <span class="Constant">2</span><span class="Delimiter">);</span>  <span class="Comment">//</span>
-<span id="L551" class="LineNr"> 551 </span>  <a href='002test.cc.html#L24'>CHECK</a><span class="Delimiter">(</span>address_offsets2<span class="Delimiter">.</span>begin<span class="Delimiter">()-&gt;</span><a href='030container.cc.html#L238'>payload_type</a><span class="Delimiter">-&gt;</span>atom<span class="Delimiter">);</span>
-<span id="L552" class="LineNr"> 552 </span>  <a href='002test.cc.html#L31'>CHECK_EQ</a><span class="Delimiter">(</span>address_offsets2<span class="Delimiter">.</span>begin<span class="Delimiter">()-&gt;</span><a href='030container.cc.html#L238'>payload_type</a><span class="Delimiter">-&gt;</span>name<span class="Delimiter">,</span> <span class="Constant">&quot;number&quot;</span><span class="Delimiter">);</span>
-<span id="L553" class="LineNr"> 553 </span>  <span class="Comment">// compute_container_address_offsets creates no new entries</span>
-<span id="L554" class="LineNr"> 554 </span>  <a href='002test.cc.html#L31'>CHECK_EQ</a><span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>Container_metadata<span class="Delimiter">)</span>-old_size<span class="Delimiter">,</span> <span class="Constant">3</span><span class="Delimiter">);</span>
-<span id="L555" class="LineNr"> 555 </span><span class="Delimiter">}</span>
-<span id="L556" class="LineNr"> 556 </span>
-<span id="L557" class="LineNr"> 557 </span><span class="Normal">void</span> <a href='036refcount.cc.html#L557'>test_container_address_offsets_from_address</a><span class="Delimiter">()</span> <span class="Delimiter">{</span>
-<span id="L558" class="LineNr"> 558 </span>  <span class="Normal">int</span> old_size = <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>Container_metadata<span class="Delimiter">);</span>
-<span id="L559" class="LineNr"> 559 </span>  <span class="Comment">// define a container with an address at offset 0</span>
-<span id="L560" class="LineNr"> 560 </span>  run<span class="Delimiter">(</span><span class="Constant">&quot;container foo [</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span>
-<span id="L561" class="LineNr"> 561 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Constant">&quot;  x:<a href='043space.cc.html#L82'>address</a>:num</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span>
-<span id="L562" class="LineNr"> 562 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Constant">&quot;]</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span><span class="Delimiter">);</span>
-<span id="L563" class="LineNr"> 563 </span>  reagent r<span class="Delimiter">(</span><span class="Constant">&quot;x:<a href='043space.cc.html#L82'>address</a>:foo&quot;</span><span class="Delimiter">);</span>
-<span id="L564" class="LineNr"> 564 </span>  compute_container_sizes<span class="Delimiter">(</span>r<span class="Delimiter">,</span> <span class="Constant">&quot;&quot;</span><span class="Delimiter">);</span>  <span class="Comment">// need to first pre-populate the metadata</span>
-<span id="L565" class="LineNr"> 565 </span>  <span class="Comment">// global metadata contains just the entry for foo</span>
-<span id="L566" class="LineNr"> 566 </span>  <span class="Comment">// no entries for non-container types or other junk</span>
-<span id="L567" class="LineNr"> 567 </span>  <a href='002test.cc.html#L31'>CHECK_EQ</a><span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>Container_metadata<span class="Delimiter">)</span>-old_size<span class="Delimiter">,</span> <span class="Constant">1</span><span class="Delimiter">);</span>
-<span id="L568" class="LineNr"> 568 </span>  <span class="Comment">// scan an address to the container</span>
-<span id="L569" class="LineNr"> 569 </span>  compute_container_address_offsets<span class="Delimiter">(</span>r<span class="Delimiter">,</span> <span class="Constant">&quot;&quot;</span><span class="Delimiter">);</span>
-<span id="L570" class="LineNr"> 570 </span>  <span class="Comment">// compute_container_address_offsets creates no new entries</span>
-<span id="L571" class="LineNr"> 571 </span>  <a href='002test.cc.html#L31'>CHECK_EQ</a><span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>Container_metadata<span class="Delimiter">)</span>-old_size<span class="Delimiter">,</span> <span class="Constant">1</span><span class="Delimiter">);</span>
-<span id="L572" class="LineNr"> 572 </span>  <span class="Comment">// scanning precomputed metadata for the container</span>
-<span id="L573" class="LineNr"> 573 </span>  reagent container<span class="Delimiter">(</span><span class="Constant">&quot;x:foo&quot;</span><span class="Delimiter">);</span>
-<span id="L574" class="LineNr"> 574 </span>  <a href='002test.cc.html#L24'>CHECK</a><span class="Delimiter">(</span>contains_key<span class="Delimiter">(</span>Container_metadata<span class="Delimiter">,</span> container<span class="Delimiter">.</span>type<span class="Delimiter">));</span>
-<span id="L575" class="LineNr"> 575 </span>  <span class="Normal">const</span> set&lt;address_element_info&gt;&amp; address_offsets2 = get<span class="Delimiter">(</span>get<span class="Delimiter">(</span>Container_metadata<span class="Delimiter">,</span> container<span class="Delimiter">.</span>type<span class="Delimiter">).</span><a href='043space.cc.html#L82'>address</a><span class="Delimiter">,</span> set&lt;tag_condition_info&gt;<span class="Delimiter">());</span>
-<span id="L576" class="LineNr"> 576 </span>  <a href='002test.cc.html#L31'>CHECK_EQ</a><span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>address_offsets2<span class="Delimiter">),</span> <span class="Constant">1</span><span class="Delimiter">);</span>
-<span id="L577" class="LineNr"> 577 </span>  <a href='002test.cc.html#L31'>CHECK_EQ</a><span class="Delimiter">(</span>address_offsets2<span class="Delimiter">.</span>begin<span class="Delimiter">()-&gt;</span>offset<span class="Delimiter">,</span> <span class="Constant">0</span><span class="Delimiter">);</span>
-<span id="L578" class="LineNr"> 578 </span>  <a href='002test.cc.html#L24'>CHECK</a><span class="Delimiter">(</span>address_offsets2<span class="Delimiter">.</span>begin<span class="Delimiter">()-&gt;</span><a href='030container.cc.html#L238'>payload_type</a><span class="Delimiter">-&gt;</span>atom<span class="Delimiter">);</span>
-<span id="L579" class="LineNr"> 579 </span>  <a href='002test.cc.html#L31'>CHECK_EQ</a><span class="Delimiter">(</span>address_offsets2<span class="Delimiter">.</span>begin<span class="Delimiter">()-&gt;</span><a href='030container.cc.html#L238'>payload_type</a><span class="Delimiter">-&gt;</span>name<span class="Delimiter">,</span> <span class="Constant">&quot;number&quot;</span><span class="Delimiter">);</span>
-<span id="L580" class="LineNr"> 580 </span><span class="Delimiter">}</span>
-<span id="L581" class="LineNr"> 581 </span>
-<span id="L582" class="LineNr"> 582 </span><span class="Normal">void</span> <a href='036refcount.cc.html#L582'>test_container_address_offsets_from_array</a><span class="Delimiter">()</span> <span class="Delimiter">{</span>
-<span id="L583" class="LineNr"> 583 </span>  <span class="Normal">int</span> old_size = <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>Container_metadata<span class="Delimiter">);</span>
-<span id="L584" class="LineNr"> 584 </span>  <span class="Comment">// define a container with an address at offset 0</span>
-<span id="L585" class="LineNr"> 585 </span>  run<span class="Delimiter">(</span><span class="Constant">&quot;container foo [</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span>
-<span id="L586" class="LineNr"> 586 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Constant">&quot;  x:<a href='043space.cc.html#L82'>address</a>:num</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span>
-<span id="L587" class="LineNr"> 587 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Constant">&quot;]</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span><span class="Delimiter">);</span>
-<span id="L588" class="LineNr"> 588 </span>  reagent r<span class="Delimiter">(</span><span class="Constant">&quot;x:array:foo&quot;</span><span class="Delimiter">);</span>
-<span id="L589" class="LineNr"> 589 </span>  compute_container_sizes<span class="Delimiter">(</span>r<span class="Delimiter">,</span> <span class="Constant">&quot;&quot;</span><span class="Delimiter">);</span>  <span class="Comment">// need to first pre-populate the metadata</span>
-<span id="L590" class="LineNr"> 590 </span>  <span class="Comment">// global metadata contains just the entry for foo</span>
-<span id="L591" class="LineNr"> 591 </span>  <span class="Comment">// no entries for non-container types or other junk</span>
-<span id="L592" class="LineNr"> 592 </span>  <a href='002test.cc.html#L31'>CHECK_EQ</a><span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>Container_metadata<span class="Delimiter">)</span>-old_size<span class="Delimiter">,</span> <span class="Constant">1</span><span class="Delimiter">);</span>
-<span id="L593" class="LineNr"> 593 </span>  <span class="Comment">// scan an array of the container</span>
-<span id="L594" class="LineNr"> 594 </span>  compute_container_address_offsets<span class="Delimiter">(</span>r<span class="Delimiter">,</span> <span class="Constant">&quot;&quot;</span><span class="Delimiter">);</span>
-<span id="L595" class="LineNr"> 595 </span>  <span class="Comment">// compute_container_address_offsets creates no new entries</span>
-<span id="L596" class="LineNr"> 596 </span>  <a href='002test.cc.html#L31'>CHECK_EQ</a><span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>Container_metadata<span class="Delimiter">)</span>-old_size<span class="Delimiter">,</span> <span class="Constant">1</span><span class="Delimiter">);</span>
-<span id="L597" class="LineNr"> 597 </span>  <span class="Comment">// scanning precomputed metadata for the container</span>
-<span id="L598" class="LineNr"> 598 </span>  reagent container<span class="Delimiter">(</span><span class="Constant">&quot;x:foo&quot;</span><span class="Delimiter">);</span>
-<span id="L599" class="LineNr"> 599 </span>  <a href='002test.cc.html#L24'>CHECK</a><span class="Delimiter">(</span>contains_key<span class="Delimiter">(</span>Container_metadata<span class="Delimiter">,</span> container<span class="Delimiter">.</span>type<span class="Delimiter">));</span>
-<span id="L600" class="LineNr"> 600 </span>  <span class="Normal">const</span> set&lt;address_element_info&gt;&amp; address_offsets2 = get<span class="Delimiter">(</span>get<span class="Delimiter">(</span>Container_metadata<span class="Delimiter">,</span> container<span class="Delimiter">.</span>type<span class="Delimiter">).</span><a href='043space.cc.html#L82'>address</a><span class="Delimiter">,</span> set&lt;tag_condition_info&gt;<span class="Delimiter">());</span>
-<span id="L601" class="LineNr"> 601 </span>  <a href='002test.cc.html#L31'>CHECK_EQ</a><span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>address_offsets2<span class="Delimiter">),</span> <span class="Constant">1</span><span class="Delimiter">);</span>
-<span id="L602" class="LineNr"> 602 </span>  <a href='002test.cc.html#L31'>CHECK_EQ</a><span class="Delimiter">(</span>address_offsets2<span class="Delimiter">.</span>begin<span class="Delimiter">()-&gt;</span>offset<span class="Delimiter">,</span> <span class="Constant">0</span><span class="Delimiter">);</span>
-<span id="L603" class="LineNr"> 603 </span>  <a href='002test.cc.html#L24'>CHECK</a><span class="Delimiter">(</span>address_offsets2<span class="Delimiter">.</span>begin<span class="Delimiter">()-&gt;</span><a href='030container.cc.html#L238'>payload_type</a><span class="Delimiter">-&gt;</span>atom<span class="Delimiter">);</span>
-<span id="L604" class="LineNr"> 604 </span>  <a href='002test.cc.html#L31'>CHECK_EQ</a><span class="Delimiter">(</span>address_offsets2<span class="Delimiter">.</span>begin<span class="Delimiter">()-&gt;</span><a href='030container.cc.html#L238'>payload_type</a><span class="Delimiter">-&gt;</span>name<span class="Delimiter">,</span> <span class="Constant">&quot;number&quot;</span><span class="Delimiter">);</span>
-<span id="L605" class="LineNr"> 605 </span><span class="Delimiter">}</span>
-<span id="L606" class="LineNr"> 606 </span>
-<span id="L607" class="LineNr"> 607 </span><span class="Normal">void</span> <a href='036refcount.cc.html#L607'>test_container_address_offsets_from_address_to_array</a><span class="Delimiter">()</span> <span class="Delimiter">{</span>
-<span id="L608" class="LineNr"> 608 </span>  <span class="Normal">int</span> old_size = <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>Container_metadata<span class="Delimiter">);</span>
-<span id="L609" class="LineNr"> 609 </span>  <span class="Comment">// define a container with an address at offset 0</span>
-<span id="L610" class="LineNr"> 610 </span>  run<span class="Delimiter">(</span><span class="Constant">&quot;container foo [</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span>
-<span id="L611" class="LineNr"> 611 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Constant">&quot;  x:<a href='043space.cc.html#L82'>address</a>:num</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span>
-<span id="L612" class="LineNr"> 612 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Constant">&quot;]</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span><span class="Delimiter">);</span>
-<span id="L613" class="LineNr"> 613 </span>  reagent r<span class="Delimiter">(</span><span class="Constant">&quot;x:<a href='043space.cc.html#L82'>address</a>:array:foo&quot;</span><span class="Delimiter">);</span>
-<span id="L614" class="LineNr"> 614 </span>  compute_container_sizes<span class="Delimiter">(</span>r<span class="Delimiter">,</span> <span class="Constant">&quot;&quot;</span><span class="Delimiter">);</span>  <span class="Comment">// need to first pre-populate the metadata</span>
-<span id="L615" class="LineNr"> 615 </span>  <span class="Comment">// global metadata contains just the entry for foo</span>
-<span id="L616" class="LineNr"> 616 </span>  <span class="Comment">// no entries for non-container types or other junk</span>
-<span id="L617" class="LineNr"> 617 </span>  <a href='002test.cc.html#L31'>CHECK_EQ</a><span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>Container_metadata<span class="Delimiter">)</span>-old_size<span class="Delimiter">,</span> <span class="Constant">1</span><span class="Delimiter">);</span>
-<span id="L618" class="LineNr"> 618 </span>  <span class="Comment">// scan an address to an array of the container</span>
-<span id="L619" class="LineNr"> 619 </span>  compute_container_address_offsets<span class="Delimiter">(</span>r<span class="Delimiter">,</span> <span class="Constant">&quot;&quot;</span><span class="Delimiter">);</span>
-<span id="L620" class="LineNr"> 620 </span>  <span class="Comment">// compute_container_address_offsets creates no new entries</span>
-<span id="L621" class="LineNr"> 621 </span>  <a href='002test.cc.html#L31'>CHECK_EQ</a><span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>Container_metadata<span class="Delimiter">)</span>-old_size<span class="Delimiter">,</span> <span class="Constant">1</span><span class="Delimiter">);</span>
-<span id="L622" class="LineNr"> 622 </span>  <span class="Comment">// scanning precomputed metadata for the container</span>
-<span id="L623" class="LineNr"> 623 </span>  reagent container<span class="Delimiter">(</span><span class="Constant">&quot;x:foo&quot;</span><span class="Delimiter">);</span>
-<span id="L624" class="LineNr"> 624 </span>  <a href='002test.cc.html#L24'>CHECK</a><span class="Delimiter">(</span>contains_key<span class="Delimiter">(</span>Container_metadata<span class="Delimiter">,</span> container<span class="Delimiter">.</span>type<span class="Delimiter">));</span>
-<span id="L625" class="LineNr"> 625 </span>  <span class="Normal">const</span> set&lt;address_element_info&gt;&amp; address_offsets2 = get<span class="Delimiter">(</span>get<span class="Delimiter">(</span>Container_metadata<span class="Delimiter">,</span> container<span class="Delimiter">.</span>type<span class="Delimiter">).</span><a href='043space.cc.html#L82'>address</a><span class="Delimiter">,</span> set&lt;tag_condition_info&gt;<span class="Delimiter">());</span>
-<span id="L626" class="LineNr"> 626 </span>  <a href='002test.cc.html#L31'>CHECK_EQ</a><span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>address_offsets2<span class="Delimiter">),</span> <span class="Constant">1</span><span class="Delimiter">);</span>
-<span id="L627" class="LineNr"> 627 </span>  <a href='002test.cc.html#L31'>CHECK_EQ</a><span class="Delimiter">(</span>address_offsets2<span class="Delimiter">.</span>begin<span class="Delimiter">()-&gt;</span>offset<span class="Delimiter">,</span> <span class="Constant">0</span><span class="Delimiter">);</span>
-<span id="L628" class="LineNr"> 628 </span>  <a href='002test.cc.html#L24'>CHECK</a><span class="Delimiter">(</span>address_offsets2<span class="Delimiter">.</span>begin<span class="Delimiter">()-&gt;</span><a href='030container.cc.html#L238'>payload_type</a><span class="Delimiter">-&gt;</span>atom<span class="Delimiter">);</span>
-<span id="L629" class="LineNr"> 629 </span>  <a href='002test.cc.html#L31'>CHECK_EQ</a><span class="Delimiter">(</span>address_offsets2<span class="Delimiter">.</span>begin<span class="Delimiter">()-&gt;</span><a href='030container.cc.html#L238'>payload_type</a><span class="Delimiter">-&gt;</span>name<span class="Delimiter">,</span> <span class="Constant">&quot;number&quot;</span><span class="Delimiter">);</span>
-<span id="L630" class="LineNr"> 630 </span><span class="Delimiter">}</span>
-<span id="L631" class="LineNr"> 631 </span>
-<span id="L632" class="LineNr"> 632 </span><span class="Normal">void</span> <a href='036refcount.cc.html#L632'>test_container_address_offsets_from_static_array</a><span class="Delimiter">()</span> <span class="Delimiter">{</span>
-<span id="L633" class="LineNr"> 633 </span>  <span class="Normal">int</span> old_size = <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>Container_metadata<span class="Delimiter">);</span>
-<span id="L634" class="LineNr"> 634 </span>  <span class="Comment">// define a container with an address at offset 0</span>
-<span id="L635" class="LineNr"> 635 </span>  run<span class="Delimiter">(</span><span class="Constant">&quot;container foo [</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span>
-<span id="L636" class="LineNr"> 636 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Constant">&quot;  x:<a href='043space.cc.html#L82'>address</a>:num</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span>
-<span id="L637" class="LineNr"> 637 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Constant">&quot;]</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span><span class="Delimiter">);</span>
-<span id="L638" class="LineNr"> 638 </span>  reagent r<span class="Delimiter">(</span><span class="Constant">&quot;x:array:foo:10&quot;</span><span class="Delimiter">);</span>
-<span id="L639" class="LineNr"> 639 </span>  compute_container_sizes<span class="Delimiter">(</span>r<span class="Delimiter">,</span> <span class="Constant">&quot;&quot;</span><span class="Delimiter">);</span>  <span class="Comment">// need to first pre-populate the metadata</span>
-<span id="L640" class="LineNr"> 640 </span>  <span class="Comment">// global metadata contains just the entry for foo</span>
-<span id="L641" class="LineNr"> 641 </span>  <span class="Comment">// no entries for non-container types or other junk</span>
-<span id="L642" class="LineNr"> 642 </span>  <a href='002test.cc.html#L31'>CHECK_EQ</a><span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>Container_metadata<span class="Delimiter">)</span>-old_size<span class="Delimiter">,</span> <span class="Constant">1</span><span class="Delimiter">);</span>
-<span id="L643" class="LineNr"> 643 </span>  <span class="Comment">// scan a static array of the container</span>
-<span id="L644" class="LineNr"> 644 </span>  compute_container_address_offsets<span class="Delimiter">(</span>r<span class="Delimiter">,</span> <span class="Constant">&quot;&quot;</span><span class="Delimiter">);</span>
-<span id="L645" class="LineNr"> 645 </span>  <span class="Comment">// compute_container_address_offsets creates no new entries</span>
-<span id="L646" class="LineNr"> 646 </span>  <a href='002test.cc.html#L31'>CHECK_EQ</a><span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>Container_metadata<span class="Delimiter">)</span>-old_size<span class="Delimiter">,</span> <span class="Constant">1</span><span class="Delimiter">);</span>
-<span id="L647" class="LineNr"> 647 </span>  <span class="Comment">// scanning precomputed metadata for the container</span>
-<span id="L648" class="LineNr"> 648 </span>  reagent container<span class="Delimiter">(</span><span class="Constant">&quot;x:foo&quot;</span><span class="Delimiter">);</span>
-<span id="L649" class="LineNr"> 649 </span>  <a href='002test.cc.html#L24'>CHECK</a><span class="Delimiter">(</span>contains_key<span class="Delimiter">(</span>Container_metadata<span class="Delimiter">,</span> container<span class="Delimiter">.</span>type<span class="Delimiter">));</span>
-<span id="L650" class="LineNr"> 650 </span>  <span class="Normal">const</span> set&lt;address_element_info&gt;&amp; address_offsets2 = get<span class="Delimiter">(</span>get<span class="Delimiter">(</span>Container_metadata<span class="Delimiter">,</span> container<span class="Delimiter">.</span>type<span class="Delimiter">).</span><a href='043space.cc.html#L82'>address</a><span class="Delimiter">,</span> set&lt;tag_condition_info&gt;<span class="Delimiter">());</span>
-<span id="L651" class="LineNr"> 651 </span>  <a href='002test.cc.html#L31'>CHECK_EQ</a><span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>address_offsets2<span class="Delimiter">),</span> <span class="Constant">1</span><span class="Delimiter">);</span>
-<span id="L652" class="LineNr"> 652 </span>  <a href='002test.cc.html#L31'>CHECK_EQ</a><span class="Delimiter">(</span>address_offsets2<span class="Delimiter">.</span>begin<span class="Delimiter">()-&gt;</span>offset<span class="Delimiter">,</span> <span class="Constant">0</span><span class="Delimiter">);</span>
-<span id="L653" class="LineNr"> 653 </span>  <a href='002test.cc.html#L24'>CHECK</a><span class="Delimiter">(</span>address_offsets2<span class="Delimiter">.</span>begin<span class="Delimiter">()-&gt;</span><a href='030container.cc.html#L238'>payload_type</a><span class="Delimiter">-&gt;</span>atom<span class="Delimiter">);</span>
-<span id="L654" class="LineNr"> 654 </span>  <a href='002test.cc.html#L31'>CHECK_EQ</a><span class="Delimiter">(</span>address_offsets2<span class="Delimiter">.</span>begin<span class="Delimiter">()-&gt;</span><a href='030container.cc.html#L238'>payload_type</a><span class="Delimiter">-&gt;</span>name<span class="Delimiter">,</span> <span class="Constant">&quot;number&quot;</span><span class="Delimiter">);</span>
-<span id="L655" class="LineNr"> 655 </span><span class="Delimiter">}</span>
-<span id="L656" class="LineNr"> 656 </span>
-<span id="L657" class="LineNr"> 657 </span><span class="Normal">void</span> <a href='036refcount.cc.html#L657'>test_container_address_offsets_from_address_to_static_array</a><span class="Delimiter">()</span> <span class="Delimiter">{</span>
-<span id="L658" class="LineNr"> 658 </span>  <span class="Normal">int</span> old_size = <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>Container_metadata<span class="Delimiter">);</span>
-<span id="L659" class="LineNr"> 659 </span>  <span class="Comment">// define a container with an address at offset 0</span>
-<span id="L660" class="LineNr"> 660 </span>  run<span class="Delimiter">(</span><span class="Constant">&quot;container foo [</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span>
-<span id="L661" class="LineNr"> 661 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Constant">&quot;  x:<a href='043space.cc.html#L82'>address</a>:num</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span>
-<span id="L662" class="LineNr"> 662 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Constant">&quot;]</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span><span class="Delimiter">);</span>
-<span id="L663" class="LineNr"> 663 </span>  reagent r<span class="Delimiter">(</span><span class="Constant">&quot;x:<a href='043space.cc.html#L82'>address</a>:array:foo:10&quot;</span><span class="Delimiter">);</span>
-<span id="L664" class="LineNr"> 664 </span>  compute_container_sizes<span class="Delimiter">(</span>r<span class="Delimiter">,</span> <span class="Constant">&quot;&quot;</span><span class="Delimiter">);</span>  <span class="Comment">// need to first pre-populate the metadata</span>
-<span id="L665" class="LineNr"> 665 </span>  <span class="Comment">// global metadata contains just the entry for foo</span>
-<span id="L666" class="LineNr"> 666 </span>  <span class="Comment">// no entries for non-container types or other junk</span>
-<span id="L667" class="LineNr"> 667 </span>  <a href='002test.cc.html#L31'>CHECK_EQ</a><span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>Container_metadata<span class="Delimiter">)</span>-old_size<span class="Delimiter">,</span> <span class="Constant">1</span><span class="Delimiter">);</span>
-<span id="L668" class="LineNr"> 668 </span>  <span class="Comment">// scan an address to a static array of the container</span>
-<span id="L669" class="LineNr"> 669 </span>  compute_container_address_offsets<span class="Delimiter">(</span>r<span class="Delimiter">,</span> <span class="Constant">&quot;&quot;</span><span class="Delimiter">);</span>
-<span id="L670" class="LineNr"> 670 </span>  <span class="Comment">// compute_container_address_offsets creates no new entries</span>
-<span id="L671" class="LineNr"> 671 </span>  <a href='002test.cc.html#L31'>CHECK_EQ</a><span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>Container_metadata<span class="Delimiter">)</span>-old_size<span class="Delimiter">,</span> <span class="Constant">1</span><span class="Delimiter">);</span>
-<span id="L672" class="LineNr"> 672 </span>  <span class="Comment">// scanning precomputed metadata for the container</span>
-<span id="L673" class="LineNr"> 673 </span>  reagent container<span class="Delimiter">(</span><span class="Constant">&quot;x:foo&quot;</span><span class="Delimiter">);</span>
-<span id="L674" class="LineNr"> 674 </span>  <a href='002test.cc.html#L24'>CHECK</a><span class="Delimiter">(</span>contains_key<span class="Delimiter">(</span>Container_metadata<span class="Delimiter">,</span> container<span class="Delimiter">.</span>type<span class="Delimiter">));</span>
-<span id="L675" class="LineNr"> 675 </span>  <span class="Normal">const</span> set&lt;address_element_info&gt;&amp; address_offsets2 = get<span class="Delimiter">(</span>get<span class="Delimiter">(</span>Container_metadata<span class="Delimiter">,</span> container<span class="Delimiter">.</span>type<span class="Delimiter">).</span><a href='043space.cc.html#L82'>address</a><span class="Delimiter">,</span> set&lt;tag_condition_info&gt;<span class="Delimiter">());</span>
-<span id="L676" class="LineNr"> 676 </span>  <a href='002test.cc.html#L31'>CHECK_EQ</a><span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>address_offsets2<span class="Delimiter">),</span> <span class="Constant">1</span><span class="Delimiter">);</span>
-<span id="L677" class="LineNr"> 677 </span>  <a href='002test.cc.html#L31'>CHECK_EQ</a><span class="Delimiter">(</span>address_offsets2<span class="Delimiter">.</span>begin<span class="Delimiter">()-&gt;</span>offset<span class="Delimiter">,</span> <span class="Constant">0</span><span class="Delimiter">);</span>
-<span id="L678" class="LineNr"> 678 </span>  <a href='002test.cc.html#L24'>CHECK</a><span class="Delimiter">(</span>address_offsets2<span class="Delimiter">.</span>begin<span class="Delimiter">()-&gt;</span><a href='030container.cc.html#L238'>payload_type</a><span class="Delimiter">-&gt;</span>atom<span class="Delimiter">);</span>
-<span id="L679" class="LineNr"> 679 </span>  <a href='002test.cc.html#L31'>CHECK_EQ</a><span class="Delimiter">(</span>address_offsets2<span class="Delimiter">.</span>begin<span class="Delimiter">()-&gt;</span><a href='030container.cc.html#L238'>payload_type</a><span class="Delimiter">-&gt;</span>name<span class="Delimiter">,</span> <span class="Constant">&quot;number&quot;</span><span class="Delimiter">);</span>
-<span id="L680" class="LineNr"> 680 </span><span class="Delimiter">}</span>
-<span id="L681" class="LineNr"> 681 </span>
-<span id="L682" class="LineNr"> 682 </span><span class="Normal">void</span> <a href='036refcount.cc.html#L682'>test_container_address_offsets_from_repeated_address_and_array_types</a><span class="Delimiter">()</span> <span class="Delimiter">{</span>
-<span id="L683" class="LineNr"> 683 </span>  <span class="Normal">int</span> old_size = <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>Container_metadata<span class="Delimiter">);</span>
-<span id="L684" class="LineNr"> 684 </span>  <span class="Comment">// define a container with an address at offset 0</span>
-<span id="L685" class="LineNr"> 685 </span>  run<span class="Delimiter">(</span><span class="Constant">&quot;container foo [</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span>
-<span id="L686" class="LineNr"> 686 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Constant">&quot;  x:<a href='043space.cc.html#L82'>address</a>:num</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span>
-<span id="L687" class="LineNr"> 687 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Constant">&quot;]</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span><span class="Delimiter">);</span>
-<span id="L688" class="LineNr"> 688 </span>  <span class="Comment">// scan a deep nest of 'address' and 'array' types modifying a container</span>
-<span id="L689" class="LineNr"> 689 </span>  reagent r<span class="Delimiter">(</span><span class="Constant">&quot;x:<a href='043space.cc.html#L82'>address</a>:array:<a href='043space.cc.html#L82'>address</a>:<a href='043space.cc.html#L82'>address</a>:array:foo:10&quot;</span><span class="Delimiter">);</span>
-<span id="L690" class="LineNr"> 690 </span>  compute_container_sizes<span class="Delimiter">(</span>r<span class="Delimiter">,</span> <span class="Constant">&quot;&quot;</span><span class="Delimiter">);</span>  <span class="Comment">// need to first pre-populate the metadata</span>
-<span id="L691" class="LineNr"> 691 </span>  <span class="Comment">// global metadata contains just the entry for foo</span>
-<span id="L692" class="LineNr"> 692 </span>  <span class="Comment">// no entries for non-container types or other junk</span>
-<span id="L693" class="LineNr"> 693 </span>  <a href='002test.cc.html#L31'>CHECK_EQ</a><span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>Container_metadata<span class="Delimiter">)</span>-old_size<span class="Delimiter">,</span> <span class="Constant">1</span><span class="Delimiter">);</span>
-<span id="L694" class="LineNr"> 694 </span>  compute_container_address_offsets<span class="Delimiter">(</span>r<span class="Delimiter">,</span> <span class="Constant">&quot;&quot;</span><span class="Delimiter">);</span>
-<span id="L695" class="LineNr"> 695 </span>  <span class="Comment">// compute_container_address_offsets creates no new entries</span>
-<span id="L696" class="LineNr"> 696 </span>  <a href='002test.cc.html#L31'>CHECK_EQ</a><span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>Container_metadata<span class="Delimiter">)</span>-old_size<span class="Delimiter">,</span> <span class="Constant">1</span><span class="Delimiter">);</span>
-<span id="L697" class="LineNr"> 697 </span>  <span class="Comment">// scanning precomputed metadata for the container</span>
-<span id="L698" class="LineNr"> 698 </span>  reagent container<span class="Delimiter">(</span><span class="Constant">&quot;x:foo&quot;</span><span class="Delimiter">);</span>
-<span id="L699" class="LineNr"> 699 </span>  <a href='002test.cc.html#L24'>CHECK</a><span class="Delimiter">(</span>contains_key<span class="Delimiter">(</span>Container_metadata<span class="Delimiter">,</span> container<span class="Delimiter">.</span>type<span class="Delimiter">));</span>
-<span id="L700" class="LineNr"> 700 </span>  <span class="Normal">const</span> set&lt;address_element_info&gt;&amp; address_offsets2 = get<span class="Delimiter">(</span>get<span class="Delimiter">(</span>Container_metadata<span class="Delimiter">,</span> container<span class="Delimiter">.</span>type<span class="Delimiter">).</span><a href='043space.cc.html#L82'>address</a><span class="Delimiter">,</span> set&lt;tag_condition_info&gt;<span class="Delimiter">());</span>
-<span id="L701" class="LineNr"> 701 </span>  <a href='002test.cc.html#L31'>CHECK_EQ</a><span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>address_offsets2<span class="Delimiter">),</span> <span class="Constant">1</span><span class="Delimiter">);</span>
-<span id="L702" class="LineNr"> 702 </span>  <a href='002test.cc.html#L31'>CHECK_EQ</a><span class="Delimiter">(</span>address_offsets2<span class="Delimiter">.</span>begin<span class="Delimiter">()-&gt;</span>offset<span class="Delimiter">,</span> <span class="Constant">0</span><span class="Delimiter">);</span>
-<span id="L703" class="LineNr"> 703 </span>  <a href='002test.cc.html#L24'>CHECK</a><span class="Delimiter">(</span>address_offsets2<span class="Delimiter">.</span>begin<span class="Delimiter">()-&gt;</span><a href='030container.cc.html#L238'>payload_type</a><span class="Delimiter">-&gt;</span>atom<span class="Delimiter">);</span>
-<span id="L704" class="LineNr"> 704 </span>  <a href='002test.cc.html#L31'>CHECK_EQ</a><span class="Delimiter">(</span>address_offsets2<span class="Delimiter">.</span>begin<span class="Delimiter">()-&gt;</span><a href='030container.cc.html#L238'>payload_type</a><span class="Delimiter">-&gt;</span>name<span class="Delimiter">,</span> <span class="Constant">&quot;number&quot;</span><span class="Delimiter">);</span>
-<span id="L705" class="LineNr"> 705 </span><span class="Delimiter">}</span>
-<span id="L706" class="LineNr"> 706 </span>
-<span id="L707" class="LineNr"> 707 </span><span class="Comment">//: use metadata.address to update refcounts within containers, arrays and</span>
-<span id="L708" class="LineNr"> 708 </span><span class="Comment">//: exclusive containers</span>
-<span id="L709" class="LineNr"> 709 </span>
-<span id="L710" class="LineNr"> 710 </span><span class="Delimiter">:(before &quot;End Increment Refcounts(canonized_x)&quot;)</span>
-<span id="L711" class="LineNr"> 711 </span><span class="Normal">if</span> <span class="Delimiter">(</span>is_mu_container<span class="Delimiter">(</span>canonized_x<span class="Delimiter">)</span> || is_mu_exclusive_container<span class="Delimiter">(</span>canonized_x<span class="Delimiter">))</span> <span class="Delimiter">{</span>
-<span id="L712" class="LineNr"> 712 </span>  <span class="Normal">const</span> container_metadata&amp; metadata = get<span class="Delimiter">(</span>Container_metadata<span class="Delimiter">,</span> canonized_x<span class="Delimiter">.</span>type<span class="Delimiter">);</span>
-<span id="L713" class="LineNr"> 713 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span>map&lt;set&lt;tag_condition_info&gt;<span class="Delimiter">,</span> set&lt;address_element_info&gt; &gt;::const_iterator p = metadata<span class="Delimiter">.</span><a href='043space.cc.html#L82'>address</a><span class="Delimiter">.</span>begin<span class="Delimiter">();</span>  p != metadata<span class="Delimiter">.</span><a href='043space.cc.html#L82'>address</a><span class="Delimiter">.</span><a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>  ++p<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L714" class="LineNr"> 714 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>!all_match<span class="Delimiter">(</span>data<span class="Delimiter">,</span> p<span class="Delimiter">-&gt;</span>first<span class="Delimiter">))</span> <span class="Identifier">continue</span><span class="Delimiter">;</span>
-<span id="L715" class="LineNr"> 715 </span>  <span class="Conceal">¦</span> <span class="Normal">for</span> <span class="Delimiter">(</span>set&lt;address_element_info&gt;::const_iterator info = p<span class="Delimiter">-&gt;</span>second<span class="Delimiter">.</span>begin<span class="Delimiter">();</span>  info != p<span class="Delimiter">-&gt;</span>second<span class="Delimiter">.</span><a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>  ++info<span class="Delimiter">)</span>
-<span id="L716" class="LineNr"> 716 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='036refcount.cc.html#L50'>increment_refcount</a><span class="Delimiter">(</span>data<span class="Delimiter">.</span>at<span class="Delimiter">(</span>info<span class="Delimiter">-&gt;</span>offset<span class="Delimiter">));</span>
-<span id="L717" class="LineNr"> 717 </span>  <span class="Delimiter">}</span>
-<span id="L718" class="LineNr"> 718 </span><span class="Delimiter">}</span>
-<span id="L719" class="LineNr"> 719 </span>
-<span id="L720" class="LineNr"> 720 </span><span class="Delimiter">:(before &quot;End Decrement Refcounts(canonized_x)&quot;)</span>
-<span id="L721" class="LineNr"> 721 </span><span class="Normal">if</span> <span class="Delimiter">(</span>is_mu_container<span class="Delimiter">(</span>canonized_x<span class="Delimiter">)</span> || is_mu_exclusive_container<span class="Delimiter">(</span>canonized_x<span class="Delimiter">))</span> <span class="Delimiter">{</span>
-<span id="L722" class="LineNr"> 722 </span>  <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">&quot;mem&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;need to read old value of '&quot;</span> &lt;&lt; to_string<span class="Delimiter">(</span>canonized_x<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;' to figure out what refcounts to decrement&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
-<span id="L723" class="LineNr"> 723 </span>  <span class="Comment">// read from canonized_x but without canonizing again</span>
-<span id="L724" class="LineNr"> 724 </span>  reagent<span class="Comment">/*</span><span class="Comment">copy</span><span class="Comment">*/</span> tmp = canonized_x<span class="Delimiter">;</span>
-<span id="L725" class="LineNr"> 725 </span>  tmp<span class="Delimiter">.</span>properties<span class="Delimiter">.</span>push_back<span class="Delimiter">(</span>pair&lt;string<span class="Delimiter">,</span> string_tree*&gt;<span class="Delimiter">(</span><span class="Constant">&quot;raw&quot;</span><span class="Delimiter">,</span> <span class="Constant">NULL</span><span class="Delimiter">));</span>
-<span id="L726" class="LineNr"> 726 </span>  vector&lt;<span class="Normal">double</span>&gt; data = read_memory<span class="Delimiter">(</span>tmp<span class="Delimiter">);</span>
-<span id="L727" class="LineNr"> 727 </span>  <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">&quot;mem&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;done reading old value of '&quot;</span> &lt;&lt; to_string<span class="Delimiter">(</span>canonized_x<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
-<span id="L728" class="LineNr"> 728 </span>  <span class="Normal">const</span> container_metadata&amp; metadata = get<span class="Delimiter">(</span>Container_metadata<span class="Delimiter">,</span> canonized_x<span class="Delimiter">.</span>type<span class="Delimiter">);</span>
-<span id="L729" class="LineNr"> 729 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span>map&lt;set&lt;tag_condition_info&gt;<span class="Delimiter">,</span> set&lt;address_element_info&gt; &gt;::const_iterator p = metadata<span class="Delimiter">.</span><a href='043space.cc.html#L82'>address</a><span class="Delimiter">.</span>begin<span class="Delimiter">();</span>  p != metadata<span class="Delimiter">.</span><a href='043space.cc.html#L82'>address</a><span class="Delimiter">.</span><a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>  ++p<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L730" class="LineNr"> 730 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>!all_match<span class="Delimiter">(</span>data<span class="Delimiter">,</span> p<span class="Delimiter">-&gt;</span>first<span class="Delimiter">))</span> <span class="Identifier">continue</span><span class="Delimiter">;</span>
-<span id="L731" class="LineNr"> 731 </span>  <span class="Conceal">¦</span> <span class="Normal">for</span> <span class="Delimiter">(</span>set&lt;address_element_info&gt;::const_iterator info = p<span class="Delimiter">-&gt;</span>second<span class="Delimiter">.</span>begin<span class="Delimiter">();</span>  info != p<span class="Delimiter">-&gt;</span>second<span class="Delimiter">.</span><a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>  ++info<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L732" class="LineNr"> 732 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">int</span> element_address = <a href='001help.cc.html#L229'>get_or_insert</a><span class="Delimiter">(</span>Memory<span class="Delimiter">,</span> canonized_x<span class="Delimiter">.</span>value + info<span class="Delimiter">-&gt;</span>offset<span class="Delimiter">);</span>
-<span id="L733" class="LineNr"> 733 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> reagent<span class="Comment">/*</span><span class="Comment">local</span><span class="Comment">*/</span> element<span class="Delimiter">;</span>
-<span id="L734" class="LineNr"> 734 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> element<span class="Delimiter">.</span><a href='010vm.cc.html#L65'>set_value</a><span class="Delimiter">(</span>element_address+<span class="Comment">/*</span><span class="Comment">skip refcount</span><span class="Comment">*/</span><span class="Constant">1</span><span class="Delimiter">);</span>
-<span id="L735" class="LineNr"> 735 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> element<span class="Delimiter">.</span>type = <span class="Normal">new</span> type_tree<span class="Delimiter">(</span>*info<span class="Delimiter">-&gt;</span><a href='030container.cc.html#L238'>payload_type</a><span class="Delimiter">);</span>
-<span id="L736" class="LineNr"> 736 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='036refcount.cc.html#L68'>decrement_refcount</a><span class="Delimiter">(</span>element_address<span class="Delimiter">,</span> info<span class="Delimiter">-&gt;</span><a href='030container.cc.html#L238'>payload_type</a><span class="Delimiter">,</span> size_of<span class="Delimiter">(</span>element<span class="Delimiter">)</span>+<span class="Comment">/*</span><span class="Comment">refcount</span><span class="Comment">*/</span><span class="Constant">1</span><span class="Delimiter">);</span>
-<span id="L737" class="LineNr"> 737 </span>  <span class="Conceal">¦</span> <span class="Delimiter">}</span>
-<span id="L738" class="LineNr"> 738 </span>  <span class="Delimiter">}</span>
-<span id="L739" class="LineNr"> 739 </span><span class="Delimiter">}</span>
-<span id="L740" class="LineNr"> 740 </span>
-<span id="L741" class="LineNr"> 741 </span><span class="Delimiter">:(code)</span>
-<span id="L742" class="LineNr"> 742 </span><span class="Normal">bool</span> <a href='036refcount.cc.html#L742'>all_match</a><span class="Delimiter">(</span><span class="Normal">const</span> vector&lt;<span class="Normal">double</span>&gt;&amp; data<span class="Delimiter">,</span> <span class="Normal">const</span> set&lt;tag_condition_info&gt;&amp; conditions<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L743" class="LineNr"> 743 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span>set&lt;tag_condition_info&gt;::const_iterator p = conditions<span class="Delimiter">.</span>begin<span class="Delimiter">();</span>  p != conditions<span class="Delimiter">.</span><a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>  ++p<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L744" class="LineNr"> 744 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>data<span class="Delimiter">.</span>at<span class="Delimiter">(</span>p<span class="Delimiter">-&gt;</span>offset<span class="Delimiter">)</span> != p<span class="Delimiter">-&gt;</span>tag<span class="Delimiter">)</span>
-<span id="L745" class="LineNr"> 745 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Identifier">return</span> <span class="Constant">false</span><span class="Delimiter">;</span>
-<span id="L746" class="LineNr"> 746 </span>  <span class="Delimiter">}</span>
-<span id="L747" class="LineNr"> 747 </span>  <span class="Identifier">return</span> <span class="Constant">true</span><span class="Delimiter">;</span>
-<span id="L748" class="LineNr"> 748 </span><span class="Delimiter">}</span>
-<span id="L749" class="LineNr"> 749 </span>
-<span id="L750" class="LineNr"> 750 </span><span class="Delimiter">:(scenario refcounts_put_container)</span>
-<span id="L751" class="LineNr"> 751 </span><span class="muData">container</span> foo [
-<span id="L752" class="LineNr"> 752 </span>  <span class="Normal">a</span>:bar  <span class="Comment"># contains an address</span>
-<span id="L753" class="LineNr"> 753 </span>]
-<span id="L754" class="LineNr"> 754 </span><span class="muData">container</span> bar [
-<span id="L755" class="LineNr"> 755 </span>  <span class="Normal">x</span>:<a href='043space.cc.html#L82'>address</a>:num
-<span id="L756" class="LineNr"> 756 </span>]
-<span id="L757" class="LineNr"> 757 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
-<span id="L758" class="LineNr"> 758 </span>  <span class="Constant">1</span>:<a href='043space.cc.html#L82'>address</a>:num<span class="Special"> &lt;- </span><span class="Normal">new</span> <span class="Constant">number:type</span>
-<span id="L759" class="LineNr"> 759 </span>  <span class="Constant">2</span>:bar<span class="Special"> &lt;- </span>merge <span class="Constant">1</span>:<a href='043space.cc.html#L82'>address</a>:num
-<span id="L760" class="LineNr"> 760 </span>  <span class="Constant">3</span>:<a href='043space.cc.html#L82'>address</a>:foo<span class="Special"> &lt;- </span><span class="Normal">new</span> <span class="Constant">foo:type</span>
-<span id="L761" class="LineNr"> 761 </span>  *<span class="Constant">3</span>:<a href='043space.cc.html#L82'>address</a>:foo<span class="Special"> &lt;- </span><a href='001help.cc.html#L221'>put</a> *<span class="Constant">3</span>:<a href='043space.cc.html#L82'>address</a>:foo<span class="Delimiter">,</span> <span class="Constant">a:offset</span><span class="Delimiter">,</span> <span class="Constant">2</span>:bar
-<span id="L762" class="LineNr"> 762 </span>]
-<span id="L763" class="LineNr"> 763 </span><span class="traceContains">+run: {1: (&quot;address&quot; &quot;number&quot;)} &lt;- new {number: &quot;type&quot;}</span>
-<span id="L764" class="LineNr"> 764 </span><span class="traceContains">+mem: incrementing refcount of 1000: 0 -&gt; 1</span>
-<span id="L765" class="LineNr"> 765 </span><span class="traceContains">+run: {2: &quot;bar&quot;} &lt;- merge {1: (&quot;address&quot; &quot;number&quot;)}</span>
-<span id="L766" class="LineNr"> 766 </span><span class="traceContains">+mem: incrementing refcount of 1000: 1 -&gt; 2</span>
-<span id="L767" class="LineNr"> 767 </span><span class="traceContains">+run: {3: (&quot;address&quot; &quot;foo&quot;), &quot;lookup&quot;: ()} &lt;- <a href='001help.cc.html#L221'>put</a> {3: (&quot;address&quot; &quot;foo&quot;), &quot;lookup&quot;: ()}, {a: &quot;offset&quot;}, {2: &quot;bar&quot;}</span>
-<span id="L768" class="LineNr"> 768 </span><span class="Comment"># put increments refcount inside container</span>
-<span id="L769" class="LineNr"> 769 </span><span class="traceContains">+mem: incrementing refcount of 1000: 2 -&gt; 3</span>
-<span id="L770" class="LineNr"> 770 </span>
-<span id="L771" class="LineNr"> 771 </span><span class="Delimiter">:(scenario refcounts_put_index_array)</span>
-<span id="L772" class="LineNr"> 772 </span><span class="muData">container</span> bar [
-<span id="L773" class="LineNr"> 773 </span>  <span class="Normal">x</span>:<a href='043space.cc.html#L82'>address</a>:num
-<span id="L774" class="LineNr"> 774 </span>]
-<span id="L775" class="LineNr"> 775 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
-<span id="L776" class="LineNr"> 776 </span>  <span class="Constant">1</span>:<a href='043space.cc.html#L82'>address</a>:num<span class="Special"> &lt;- </span><span class="Normal">new</span> <span class="Constant">number:type</span>
-<span id="L777" class="LineNr"> 777 </span>  <span class="Constant">2</span>:bar<span class="Special"> &lt;- </span>merge <span class="Constant">1</span>:<a href='043space.cc.html#L82'>address</a>:num
-<span id="L778" class="LineNr"> 778 </span>  <span class="Constant">3</span>:<a href='043space.cc.html#L82'>address</a>:array:bar<span class="Special"> &lt;- </span><span class="Normal">new</span> <span class="Constant">bar:type</span><span class="Delimiter">,</span> <span class="Constant">3</span>
-<span id="L779" class="LineNr"> 779 </span>  *<span class="Constant">3</span>:<a href='043space.cc.html#L82'>address</a>:array:bar<span class="Special"> &lt;- </span>put-index *<span class="Constant">3</span>:<a href='043space.cc.html#L82'>address</a>:array:bar<span class="Delimiter">,</span> <span class="Constant">0</span><span class="Delimiter">,</span> <span class="Constant">2</span>:bar
-<span id="L780" class="LineNr"> 780 </span>]
-<span id="L781" class="LineNr"> 781 </span><span class="traceContains">+run: {1: (&quot;address&quot; &quot;number&quot;)} &lt;- new {number: &quot;type&quot;}</span>
-<span id="L782" class="LineNr"> 782 </span><span class="traceContains">+mem: incrementing refcount of 1000: 0 -&gt; 1</span>
-<span id="L783" class="LineNr"> 783 </span><span class="traceContains">+run: {2: &quot;bar&quot;} &lt;- merge {1: (&quot;address&quot; &quot;number&quot;)}</span>
-<span id="L784" class="LineNr"> 784 </span><span class="traceContains">+mem: incrementing refcount of 1000: 1 -&gt; 2</span>
-<span id="L785" class="LineNr"> 785 </span><span class="traceContains">+run: {3: (&quot;address&quot; &quot;array&quot; &quot;bar&quot;), &quot;lookup&quot;: ()} &lt;- put-index {3: (&quot;address&quot; &quot;array&quot; &quot;bar&quot;), &quot;lookup&quot;: ()}, {0: &quot;literal&quot;}, {2: &quot;bar&quot;}</span>
-<span id="L786" class="LineNr"> 786 </span><span class="Comment"># put-index increments refcount inside container</span>
-<span id="L787" class="LineNr"> 787 </span><span class="traceContains">+mem: incrementing refcount of 1000: 2 -&gt; 3</span>
-<span id="L788" class="LineNr"> 788 </span>
-<span id="L789" class="LineNr"> 789 </span><span class="Delimiter">:(scenario refcounts_maybe_convert_container)</span>
-<span id="L790" class="LineNr"> 790 </span><span class="muData">exclusive-container</span> foo [
-<span id="L791" class="LineNr"> 791 </span>  <span class="Normal">a</span>:num
-<span id="L792" class="LineNr"> 792 </span>  <span class="Normal">b</span>:bar  <span class="Comment"># contains an address</span>
-<span id="L793" class="LineNr"> 793 </span>]
-<span id="L794" class="LineNr"> 794 </span><span class="muData">container</span> bar [
-<span id="L795" class="LineNr"> 795 </span>  <span class="Normal">x</span>:<a href='043space.cc.html#L82'>address</a>:num
-<span id="L796" class="LineNr"> 796 </span>]
-<span id="L797" class="LineNr"> 797 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
-<span id="L798" class="LineNr"> 798 </span>  <span class="Constant">1</span>:<a href='043space.cc.html#L82'>address</a>:num<span class="Special"> &lt;- </span><span class="Normal">new</span> <span class="Constant">number:type</span>
-<span id="L799" class="LineNr"> 799 </span>  <span class="Constant">2</span>:bar<span class="Special"> &lt;- </span>merge <span class="Constant">1</span>:<a href='043space.cc.html#L82'>address</a>:num
-<span id="L800" class="LineNr"> 800 </span>  <span class="Constant">3</span>:foo<span class="Special"> &lt;- </span>merge <span class="Constant">1</span>/b<span class="Delimiter">,</span> <span class="Constant">2</span>:bar
-<span id="L801" class="LineNr"> 801 </span>  <span class="Constant">5</span>:bar<span class="Delimiter">,</span> <span class="Constant">6</span>:<span class="Normal">bool</span><span class="Special"> &lt;- </span>maybe-convert <span class="Constant">3</span>:foo<span class="Delimiter">,</span> <span class="Constant">1:variant/b</span>
-<span id="L802" class="LineNr"> 802 </span>]
-<span id="L803" class="LineNr"> 803 </span><span class="traceContains">+run: {1: (&quot;address&quot; &quot;number&quot;)} &lt;- new {number: &quot;type&quot;}</span>
-<span id="L804" class="LineNr"> 804 </span><span class="traceContains">+mem: incrementing refcount of 1000: 0 -&gt; 1</span>
-<span id="L805" class="LineNr"> 805 </span><span class="traceContains">+run: {2: &quot;bar&quot;} &lt;- merge {1: (&quot;address&quot; &quot;number&quot;)}</span>
-<span id="L806" class="LineNr"> 806 </span><span class="traceContains">+mem: incrementing refcount of 1000: 1 -&gt; 2</span>
-<span id="L807" class="LineNr"> 807 </span><span class="traceContains">+run: {3: &quot;foo&quot;} &lt;- merge {1: &quot;literal&quot;, &quot;b&quot;: ()}, {2: &quot;bar&quot;}</span>
-<span id="L808" class="LineNr"> 808 </span><span class="traceContains">+mem: incrementing refcount of 1000: 2 -&gt; 3</span>
-<span id="L809" class="LineNr"> 809 </span><span class="traceContains">+run: {5: &quot;bar&quot;}, {6: &quot;boolean&quot;} &lt;- maybe-convert {3: &quot;foo&quot;}, {1: &quot;variant&quot;, &quot;b&quot;: ()}</span>
-<span id="L810" class="LineNr"> 810 </span><span class="traceContains">+mem: incrementing refcount of 1000: 3 -&gt; 4</span>
-<span id="L811" class="LineNr"> 811 </span>
-<span id="L812" class="LineNr"> 812 </span><span class="Delimiter">:(scenario refcounts_copy_doubly_nested)</span>
-<span id="L813" class="LineNr"> 813 </span><span class="muData">container</span> foo [
-<span id="L814" class="LineNr"> 814 </span>  <span class="Normal">a</span>:bar  <span class="Comment"># no addresses</span>
-<span id="L815" class="LineNr"> 815 </span>  <span class="Normal">b</span>:curr  <span class="Comment"># contains addresses</span>
-<span id="L816" class="LineNr"> 816 </span>]
-<span id="L817" class="LineNr"> 817 </span><span class="muData">container</span> bar [
-<span id="L818" class="LineNr"> 818 </span>  <span class="Normal">x</span>:num
-<span id="L819" class="LineNr"> 819 </span>  <span class="Normal">y</span>:num
-<span id="L820" class="LineNr"> 820 </span>]
-<span id="L821" class="LineNr"> 821 </span><span class="muData">container</span> curr [
-<span id="L822" class="LineNr"> 822 </span>  <span class="Normal">x</span>:num
-<span id="L823" class="LineNr"> 823 </span>  <span class="Normal">y</span>:<a href='043space.cc.html#L82'>address</a>:num  <span class="Comment"># address inside container inside container</span>
-<span id="L824" class="LineNr"> 824 </span>]
-<span id="L825" class="LineNr"> 825 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
-<span id="L826" class="LineNr"> 826 </span>  <span class="Constant">1</span>:<a href='043space.cc.html#L82'>address</a>:num<span class="Special"> &lt;- </span><span class="Normal">new</span> <span class="Constant">number:type</span>
-<span id="L827" class="LineNr"> 827 </span>  <span class="Constant">2</span>:<a href='043space.cc.html#L82'>address</a>:curr<span class="Special"> &lt;- </span><span class="Normal">new</span> <span class="Constant">curr:type</span>
-<span id="L828" class="LineNr"> 828 </span>  *<span class="Constant">2</span>:<a href='043space.cc.html#L82'>address</a>:curr<span class="Special"> &lt;- </span><a href='001help.cc.html#L221'>put</a> *<span class="Constant">2</span>:<a href='043space.cc.html#L82'>address</a>:curr<span class="Delimiter">,</span> <span class="Constant">1:offset/y</span><span class="Delimiter">,</span> <span class="Constant">1</span>:<a href='043space.cc.html#L82'>address</a>:num
-<span id="L829" class="LineNr"> 829 </span>  <span class="Constant">3</span>:<a href='043space.cc.html#L82'>address</a>:foo<span class="Special"> &lt;- </span><span class="Normal">new</span> <span class="Constant">foo:type</span>
-<span id="L830" class="LineNr"> 830 </span>  *<span class="Constant">3</span>:<a href='043space.cc.html#L82'>address</a>:foo<span class="Special"> &lt;- </span><a href='001help.cc.html#L221'>put</a> *<span class="Constant">3</span>:<a href='043space.cc.html#L82'>address</a>:foo<span class="Delimiter">,</span> <span class="Constant">1:offset/b</span><span class="Delimiter">,</span> *<span class="Constant">2</span>:<a href='043space.cc.html#L82'>address</a>:curr
-<span id="L831" class="LineNr"> 831 </span>  <span class="Constant">4</span>:foo<span class="Special"> &lt;- </span>copy *<span class="Constant">3</span>:<a href='043space.cc.html#L82'>address</a>:foo
-<span id="L832" class="LineNr"> 832 </span>]
-<span id="L833" class="LineNr"> 833 </span><span class="traceContains">+transform: compute <a href='043space.cc.html#L82'>address</a> offsets for container foo</span>
-<span id="L834" class="LineNr"> 834 </span><span class="traceContains">+transform: checking container foo, element 1</span>
-<span id="L835" class="LineNr"> 835 </span><span class="traceContains">+transform: <a href='043space.cc.html#L82'>address</a> at offset 3</span>
-<span id="L836" class="LineNr"> 836 </span><span class="traceContains">+run: {1: (&quot;address&quot; &quot;number&quot;)} &lt;- new {number: &quot;type&quot;}</span>
-<span id="L837" class="LineNr"> 837 </span><span class="traceContains">+mem: incrementing refcount of 1000: 0 -&gt; 1</span>
-<span id="L838" class="LineNr"> 838 </span><span class="Comment"># storing an address in a container updates its refcount</span>
-<span id="L839" class="LineNr"> 839 </span><span class="traceContains">+run: {2: (&quot;address&quot; &quot;curr&quot;), &quot;lookup&quot;: ()} &lt;- <a href='001help.cc.html#L221'>put</a> {2: (&quot;address&quot; &quot;curr&quot;), &quot;lookup&quot;: ()}, {1: &quot;offset&quot;, &quot;y&quot;: ()}, {1: (&quot;address&quot; &quot;number&quot;)}</span>
-<span id="L840" class="LineNr"> 840 </span><span class="traceContains">+mem: incrementing refcount of 1000: 1 -&gt; 2</span>
-<span id="L841" class="LineNr"> 841 </span><span class="Comment"># storing a container in a container updates refcounts of any contained addresses</span>
-<span id="L842" class="LineNr"> 842 </span><span class="traceContains">+run: {3: (&quot;address&quot; &quot;foo&quot;), &quot;lookup&quot;: ()} &lt;- <a href='001help.cc.html#L221'>put</a> {3: (&quot;address&quot; &quot;foo&quot;), &quot;lookup&quot;: ()}, {1: &quot;offset&quot;, &quot;b&quot;: ()}, {2: (&quot;address&quot; &quot;curr&quot;), &quot;lookup&quot;: ()}</span>
-<span id="L843" class="LineNr"> 843 </span><span class="traceContains">+mem: incrementing refcount of 1000: 2 -&gt; 3</span>
-<span id="L844" class="LineNr"> 844 </span><span class="Comment"># copying a container containing a container containing an address updates refcount</span>
-<span id="L845" class="LineNr"> 845 </span><span class="traceContains">+run: {4: &quot;foo&quot;} &lt;- copy {3: (&quot;address&quot; &quot;foo&quot;), &quot;lookup&quot;: ()}</span>
-<span id="L846" class="LineNr"> 846 </span><span class="traceContains">+mem: incrementing refcount of 1000: 3 -&gt; 4</span>
-<span id="L847" class="LineNr"> 847 </span>
-<span id="L848" class="LineNr"> 848 </span><span class="Delimiter">:(scenario refcounts_copy_exclusive_container_within_container)</span>
-<span id="L849" class="LineNr"> 849 </span><span class="muData">container</span> foo [
-<span id="L850" class="LineNr"> 850 </span>  <span class="Normal">a</span>:num
-<span id="L851" class="LineNr"> 851 </span>  <span class="Normal">b</span>:bar
+<span id="L287" class="LineNr"> 287 </span><span class="Normal">bool</span> <span class="Normal">operator</span>&lt;<span class="Delimiter">(</span><span class="Normal">const</span> set&lt;address_element_info&gt;&amp; a<span class="Delimiter">,</span> <span class="Normal">const</span> set&lt;address_element_info&gt;&amp; b<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L288" class="LineNr"> 288 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>a<span class="Delimiter">.</span>size<span class="Delimiter">()</span> != b<span class="Delimiter">.</span>size<span class="Delimiter">())</span> <span class="Identifier">return</span> a<span class="Delimiter">.</span>size<span class="Delimiter">()</span> &lt; b<span class="Delimiter">.</span>size<span class="Delimiter">();</span>
+<span id="L289" class="LineNr"> 289 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span>set&lt;address_element_info&gt;::const_iterator pa = a<span class="Delimiter">.</span>begin<span class="Delimiter">(),</span> pb = b<span class="Delimiter">.</span>begin<span class="Delimiter">();</span>  pa != a<span class="Delimiter">.</span><a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>  ++pa<span class="Delimiter">,</span> ++pb<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L290" class="LineNr"> 290 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>pa<span class="Delimiter">-&gt;</span>offset != pb<span class="Delimiter">-&gt;</span>offset<span class="Delimiter">)</span> <span class="Identifier">return</span> pa<span class="Delimiter">-&gt;</span>offset &lt; pb<span class="Delimiter">-&gt;</span>offset<span class="Delimiter">;</span>
+<span id="L291" class="LineNr"> 291 </span>  <span class="Delimiter">}</span>
+<span id="L292" class="LineNr"> 292 </span>  <span class="Identifier">return</span> <span class="Constant">false</span><span class="Delimiter">;</span>  <span class="Comment">// equal</span>
+<span id="L293" class="LineNr"> 293 </span><span class="Delimiter">}</span>
+<span id="L294" class="LineNr"> 294 </span><span class="Normal">bool</span> <span class="Normal">operator</span>&lt;<span class="Delimiter">(</span><span class="Normal">const</span> address_element_info&amp; a<span class="Delimiter">,</span> <span class="Normal">const</span> address_element_info&amp; b<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L295" class="LineNr"> 295 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>a<span class="Delimiter">.</span>offset != b<span class="Delimiter">.</span>offset<span class="Delimiter">)</span> <span class="Identifier">return</span> a<span class="Delimiter">.</span>offset &lt; b<span class="Delimiter">.</span>offset<span class="Delimiter">;</span>
+<span id="L296" class="LineNr"> 296 </span>  <span class="Identifier">return</span> <span class="Constant">false</span><span class="Delimiter">;</span>  <span class="Comment">// equal</span>
+<span id="L297" class="LineNr"> 297 </span><span class="Delimiter">}</span>
+<span id="L298" class="LineNr"> 298 </span>
+<span id="L299" class="LineNr"> 299 </span><span class="Comment">//: populate metadata.address in a separate transform, because it requires</span>
+<span id="L300" class="LineNr"> 300 </span><span class="Comment">//: already knowing the sizes of all types</span>
+<span id="L301" class="LineNr"> 301 </span>
+<span id="L302" class="LineNr"> 302 </span><span class="Delimiter">:(after &quot;Transform.push_back(compute_container_sizes)&quot;)</span>
+<span id="L303" class="LineNr"> 303 </span>Transform<span class="Delimiter">.</span>push_back<span class="Delimiter">(</span>compute_container_address_offsets<span class="Delimiter">);</span>  <span class="Comment">// idempotent</span>
+<span id="L304" class="LineNr"> 304 </span><span class="Delimiter">:(code)</span>
+<span id="L305" class="LineNr"> 305 </span><span class="Normal">void</span> compute_container_address_offsets<span class="Delimiter">(</span><span class="Normal">const</span> <a href='010vm.cc.html#L14'>recipe_ordinal</a> r<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L306" class="LineNr"> 306 </span>  recipe&amp; caller = get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">);</span>
+<span id="L307" class="LineNr"> 307 </span>  <a href='003trace.cc.html#L167'>trace</a><span class="Delimiter">(</span><span class="Constant">9992</span><span class="Delimiter">,</span> <span class="Constant">&quot;transform&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;--- compute <a href='043space.cc.html#L82'>address</a> offsets for &quot;</span> &lt;&lt; caller<span class="Delimiter">.</span>name &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
+<span id="L308" class="LineNr"> 308 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> i = <span class="Constant">0</span><span class="Delimiter">;</span>  i &lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>caller<span class="Delimiter">.</span>steps<span class="Delimiter">);</span>  ++i<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L309" class="LineNr"> 309 </span>  <span class="Conceal">¦</span> instruction&amp; inst = caller<span class="Delimiter">.</span>steps<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">);</span>
+<span id="L310" class="LineNr"> 310 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L167'>trace</a><span class="Delimiter">(</span><span class="Constant">9993</span><span class="Delimiter">,</span> <span class="Constant">&quot;transform&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;- compute <a href='043space.cc.html#L82'>address</a> offsets for &quot;</span> &lt;&lt; <a href='028call_return.cc.html#L163'>to_string</a><span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
+<span id="L311" class="LineNr"> 311 </span>  <span class="Conceal">¦</span> <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> i = <span class="Constant">0</span><span class="Delimiter">;</span>  i &lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">);</span>  ++i<span class="Delimiter">)</span>
+<span id="L312" class="LineNr"> 312 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> compute_container_address_offsets<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">),</span> <span class="Constant">&quot; in '&quot;</span>+inst<span class="Delimiter">.</span>original_string+<span class="Constant">&quot;'&quot;</span><span class="Delimiter">);</span>
+<span id="L313" class="LineNr"> 313 </span>  <span class="Conceal">¦</span> <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> i = <span class="Constant">0</span><span class="Delimiter">;</span>  i &lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>products<span class="Delimiter">);</span>  ++i<span class="Delimiter">)</span>
+<span id="L314" class="LineNr"> 314 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> compute_container_address_offsets<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">),</span> <span class="Constant">&quot; in '&quot;</span>+inst<span class="Delimiter">.</span>original_string+<span class="Constant">&quot;'&quot;</span><span class="Delimiter">);</span>
+<span id="L315" class="LineNr"> 315 </span>  <span class="Delimiter">}</span>
+<span id="L316" class="LineNr"> 316 </span><span class="Delimiter">}</span>
+<span id="L317" class="LineNr"> 317 </span>
+<span id="L318" class="LineNr"> 318 </span><span class="Normal">void</span> compute_container_address_offsets<span class="Delimiter">(</span>reagent&amp; r<span class="Delimiter">,</span> <span class="Normal">const</span> string&amp; location_for_error_messages<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L319" class="LineNr"> 319 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>is_literal<span class="Delimiter">(</span>r<span class="Delimiter">)</span> || is_dummy<span class="Delimiter">(</span>r<span class="Delimiter">))</span> <span class="Identifier">return</span><span class="Delimiter">;</span>
+<span id="L320" class="LineNr"> 320 </span>  compute_container_address_offsets<span class="Delimiter">(</span>r<span class="Delimiter">.</span>type<span class="Delimiter">,</span> location_for_error_messages<span class="Delimiter">);</span>
+<span id="L321" class="LineNr"> 321 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>contains_key<span class="Delimiter">(</span>Container_metadata<span class="Delimiter">,</span> r<span class="Delimiter">.</span>type<span class="Delimiter">))</span>
+<span id="L322" class="LineNr"> 322 </span>  <span class="Conceal">¦</span> r<span class="Delimiter">.</span>metadata = get<span class="Delimiter">(</span>Container_metadata<span class="Delimiter">,</span> r<span class="Delimiter">.</span>type<span class="Delimiter">);</span>
+<span id="L323" class="LineNr"> 323 </span><span class="Delimiter">}</span>
+<span id="L324" class="LineNr"> 324 </span>
+<span id="L325" class="LineNr"> 325 </span><span class="Comment">// the recursive structure of this function needs to exactly match</span>
+<span id="L326" class="LineNr"> 326 </span><span class="Comment">// compute_container_sizes</span>
+<span id="L327" class="LineNr"> 327 </span><span class="Normal">void</span> compute_container_address_offsets<span class="Delimiter">(</span><span class="Normal">const</span> type_tree* type<span class="Delimiter">,</span> <span class="Normal">const</span> string&amp; location_for_error_messages<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L328" class="LineNr"> 328 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!type<span class="Delimiter">)</span> <span class="Identifier">return</span><span class="Delimiter">;</span>
+<span id="L329" class="LineNr"> 329 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!type<span class="Delimiter">-&gt;</span>atom<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L330" class="LineNr"> 330 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>!type<span class="Delimiter">-&gt;</span>left<span class="Delimiter">-&gt;</span>atom<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L331" class="LineNr"> 331 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <span class="Constant">&quot;invalid type &quot;</span> &lt;&lt; <a href='028call_return.cc.html#L163'>to_string</a><span class="Delimiter">(</span>type<span class="Delimiter">)</span> &lt;&lt; location_for_error_messages &lt;&lt; <span class="cSpecial">'\n'</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
+<span id="L332" class="LineNr"> 332 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Identifier">return</span><span class="Delimiter">;</span>
+<span id="L333" class="LineNr"> 333 </span>  <span class="Conceal">¦</span> <span class="Delimiter">}</span>
+<span id="L334" class="LineNr"> 334 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>type<span class="Delimiter">-&gt;</span>left<span class="Delimiter">-&gt;</span>name == <span class="Constant">&quot;address&quot;</span><span class="Delimiter">)</span>
+<span id="L335" class="LineNr"> 335 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> compute_container_address_offsets<span class="Delimiter">(</span><a href='030container.cc.html#L238'>payload_type</a><span class="Delimiter">(</span>type<span class="Delimiter">),</span> location_for_error_messages<span class="Delimiter">);</span>
+<span id="L336" class="LineNr"> 336 </span>  <span class="Conceal">¦</span> <span class="Normal">else</span> <span class="Normal">if</span> <span class="Delimiter">(</span>type<span class="Delimiter">-&gt;</span>left<span class="Delimiter">-&gt;</span>name == <span class="Constant">&quot;array&quot;</span><span class="Delimiter">)</span>
+<span id="L337" class="LineNr"> 337 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> compute_container_address_offsets<span class="Delimiter">(</span><a href='032array.cc.html#L381'>array_element</a><span class="Delimiter">(</span>type<span class="Delimiter">),</span> location_for_error_messages<span class="Delimiter">);</span>
+<span id="L338" class="LineNr"> 338 </span>  <span class="Conceal">¦</span> <span class="Comment">// End compute_container_address_offsets Non-atom Special-cases</span>
+<span id="L339" class="LineNr"> 339 </span>  <span class="Delimiter">}</span>
+<span id="L340" class="LineNr"> 340 </span>  <span class="Normal">const</span> type_tree* base_type = type<span class="Delimiter">;</span>
+<span id="L341" class="LineNr"> 341 </span>  <span class="Comment">// Update base_type in compute_container_address_offsets</span>
+<span id="L342" class="LineNr"> 342 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!contains_key<span class="Delimiter">(</span>Type<span class="Delimiter">,</span> base_type<span class="Delimiter">-&gt;</span>value<span class="Delimiter">))</span> <span class="Identifier">return</span><span class="Delimiter">;</span>  <span class="Comment">// error raised elsewhere</span>
+<span id="L343" class="LineNr"> 343 </span>  type_info&amp; info = get<span class="Delimiter">(</span>Type<span class="Delimiter">,</span> base_type<span class="Delimiter">-&gt;</span>value<span class="Delimiter">);</span>
+<span id="L344" class="LineNr"> 344 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>info<span class="Delimiter">.</span>kind == <a href='010vm.cc.html#L173'>CONTAINER</a><span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L345" class="LineNr"> 345 </span>  <span class="Conceal">¦</span> compute_container_address_offsets<span class="Delimiter">(</span>info<span class="Delimiter">,</span> type<span class="Delimiter">,</span> location_for_error_messages<span class="Delimiter">);</span>
+<span id="L346" class="LineNr"> 346 </span>  <span class="Delimiter">}</span>
+<span id="L347" class="LineNr"> 347 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>info<span class="Delimiter">.</span>kind == <a href='010vm.cc.html#L174'>EXCLUSIVE_CONTAINER</a><span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L348" class="LineNr"> 348 </span>  <span class="Conceal">¦</span> <a href='036refcount.cc.html#L359'>compute_exclusive_container_address_offsets</a><span class="Delimiter">(</span>info<span class="Delimiter">,</span> type<span class="Delimiter">,</span> location_for_error_messages<span class="Delimiter">);</span>
+<span id="L349" class="LineNr"> 349 </span>  <span class="Delimiter">}</span>
+<span id="L350" class="LineNr"> 350 </span><span class="Delimiter">}</span>
+<span id="L351" class="LineNr"> 351 </span>
+<span id="L352" class="LineNr"> 352 </span><span class="Normal">void</span> compute_container_address_offsets<span class="Delimiter">(</span><span class="Normal">const</span> type_info&amp; container_info<span class="Delimiter">,</span> <span class="Normal">const</span> type_tree* full_type<span class="Delimiter">,</span> <span class="Normal">const</span> string&amp; location_for_error_messages<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L353" class="LineNr"> 353 </span>  container_metadata&amp; metadata = get<span class="Delimiter">(</span>Container_metadata<span class="Delimiter">,</span> full_type<span class="Delimiter">);</span>
+<span id="L354" class="LineNr"> 354 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!metadata<span class="Delimiter">.</span><a href='043space.cc.html#L82'>address</a><span class="Delimiter">.</span>empty<span class="Delimiter">())</span> <span class="Identifier">return</span><span class="Delimiter">;</span>
+<span id="L355" class="LineNr"> 355 </span>  <a href='003trace.cc.html#L167'>trace</a><span class="Delimiter">(</span><span class="Constant">9994</span><span class="Delimiter">,</span> <span class="Constant">&quot;transform&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;compute <a href='043space.cc.html#L82'>address</a> offsets for container &quot;</span> &lt;&lt; container_info<span class="Delimiter">.</span>name &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
+<span id="L356" class="LineNr"> 356 </span>  <a href='036refcount.cc.html#L369'>append_addresses</a><span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">,</span> full_type<span class="Delimiter">,</span> metadata<span class="Delimiter">.</span><a href='043space.cc.html#L82'>address</a><span class="Delimiter">,</span> set&lt;tag_condition_info&gt;<span class="Delimiter">(),</span> location_for_error_messages<span class="Delimiter">);</span>
+<span id="L357" class="LineNr"> 357 </span><span class="Delimiter">}</span>
+<span id="L358" class="LineNr"> 358 </span>
+<span id="L359" class="LineNr"> 359 </span><span class="Normal">void</span> <a href='036refcount.cc.html#L359'>compute_exclusive_container_address_offsets</a><span class="Delimiter">(</span><span class="Normal">const</span> type_info&amp; exclusive_container_info<span class="Delimiter">,</span> <span class="Normal">const</span> type_tree* full_type<span class="Delimiter">,</span> <span class="Normal">const</span> string&amp; location_for_error_messages<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L360" class="LineNr"> 360 </span>  container_metadata&amp; metadata = get<span class="Delimiter">(</span>Container_metadata<span class="Delimiter">,</span> full_type<span class="Delimiter">);</span>
+<span id="L361" class="LineNr"> 361 </span>  <a href='003trace.cc.html#L167'>trace</a><span class="Delimiter">(</span><span class="Constant">9994</span><span class="Delimiter">,</span> <span class="Constant">&quot;transform&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;compute <a href='043space.cc.html#L82'>address</a> offsets for exclusive container &quot;</span> &lt;&lt; exclusive_container_info<span class="Delimiter">.</span>name &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
+<span id="L362" class="LineNr"> 362 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> tag = <span class="Constant">0</span><span class="Delimiter">;</span>  tag &lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>exclusive_container_info<span class="Delimiter">.</span>elements<span class="Delimiter">);</span>  ++tag<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L363" class="LineNr"> 363 </span>  <span class="Conceal">¦</span> set&lt;tag_condition_info&gt; key<span class="Delimiter">;</span>
+<span id="L364" class="LineNr"> 364 </span>  <span class="Conceal">¦</span> key<span class="Delimiter">.</span>insert<span class="Delimiter">(</span>tag_condition_info<span class="Delimiter">(</span><span class="Comment">/*</span><span class="Comment">tag is at offset</span><span class="Comment">*/</span><span class="Constant">0</span><span class="Delimiter">,</span> tag<span class="Delimiter">));</span>
+<span id="L365" class="LineNr"> 365 </span>  <span class="Conceal">¦</span> <a href='036refcount.cc.html#L369'>append_addresses</a><span class="Delimiter">(</span><span class="Comment">/*</span><span class="Comment">skip tag offset</span><span class="Comment">*/</span><span class="Constant">1</span><span class="Delimiter">,</span> variant_type<span class="Delimiter">(</span>full_type<span class="Delimiter">,</span> tag<span class="Delimiter">).</span>type<span class="Delimiter">,</span> metadata<span class="Delimiter">.</span><a href='043space.cc.html#L82'>address</a><span class="Delimiter">,</span> key<span class="Delimiter">,</span> location_for_error_messages<span class="Delimiter">);</span>
+<span id="L366" class="LineNr"> 366 </span>  <span class="Delimiter">}</span>
+<span id="L367" class="LineNr"> 367 </span><span class="Delimiter">}</span>
+<span id="L368" class="LineNr"> 368 </span>
+<span id="L369" class="LineNr"> 369 </span><span class="Normal">void</span> <a href='036refcount.cc.html#L369'>append_addresses</a><span class="Delimiter">(</span><span class="Normal">int</span> base_offset<span class="Delimiter">,</span> <span class="Normal">const</span> type_tree* type<span class="Delimiter">,</span> map&lt;set&lt;tag_condition_info&gt;<span class="Delimiter">,</span> set&lt;address_element_info&gt; &gt;&amp; out<span class="Delimiter">,</span> <span class="Normal">const</span> set&lt;tag_condition_info&gt;&amp; key<span class="Delimiter">,</span> <span class="Normal">const</span> string&amp; location_for_error_messages<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L370" class="LineNr"> 370 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>is_mu_address<span class="Delimiter">(</span>type<span class="Delimiter">))</span> <span class="Delimiter">{</span>
+<span id="L371" class="LineNr"> 371 </span>  <span class="Conceal">¦</span> <a href='001help.cc.html#L229'>get_or_insert</a><span class="Delimiter">(</span>out<span class="Delimiter">,</span> key<span class="Delimiter">).</span>insert<span class="Delimiter">(</span>address_element_info<span class="Delimiter">(</span>base_offset<span class="Delimiter">,</span> <span class="Normal">new</span> type_tree<span class="Delimiter">(</span>*payload_type<span class="Delimiter">(</span>type<span class="Delimiter">))));</span>
+<span id="L372" class="LineNr"> 372 </span>  <span class="Conceal">¦</span> <span class="Identifier">return</span><span class="Delimiter">;</span>
+<span id="L373" class="LineNr"> 373 </span>  <span class="Delimiter">}</span>
+<span id="L374" class="LineNr"> 374 </span>  <span class="Normal">const</span> type_tree* base_type = type<span class="Delimiter">;</span>
+<span id="L375" class="LineNr"> 375 </span>  <span class="Comment">// Update base_type in append_container_address_offsets</span>
+<span id="L376" class="LineNr"> 376 </span>  <span class="Normal">const</span> type_info&amp; info = get<span class="Delimiter">(</span>Type<span class="Delimiter">,</span> base_type<span class="Delimiter">-&gt;</span>value<span class="Delimiter">);</span>
+<span id="L377" class="LineNr"> 377 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>info<span class="Delimiter">.</span>kind == <a href='010vm.cc.html#L173'>CONTAINER</a><span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L378" class="LineNr"> 378 </span>  <span class="Conceal">¦</span> <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> curr_index = <span class="Constant">0</span><span class="Delimiter">,</span> curr_offset = base_offset<span class="Delimiter">;</span>  curr_index &lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>info<span class="Delimiter">.</span>elements<span class="Delimiter">);</span>  ++curr_index<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L379" class="LineNr"> 379 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L167'>trace</a><span class="Delimiter">(</span><span class="Constant">9993</span><span class="Delimiter">,</span> <span class="Constant">&quot;transform&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;checking container &quot;</span> &lt;&lt; base_type<span class="Delimiter">-&gt;</span>name &lt;&lt; <span class="Constant">&quot;, element &quot;</span> &lt;&lt; curr_index &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
+<span id="L380" class="LineNr"> 380 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> reagent<span class="Comment">/*</span><span class="Comment">copy</span><span class="Comment">*/</span> element = <a href='030container.cc.html#L429'>element_type</a><span class="Delimiter">(</span>type<span class="Delimiter">,</span> curr_index<span class="Delimiter">);</span>  <span class="Comment">// not base_type</span>
+<span id="L381" class="LineNr"> 381 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Comment">// Compute Container Address Offset(element)</span>
+<span id="L382" class="LineNr"> 382 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>is_mu_address<span class="Delimiter">(</span>element<span class="Delimiter">))</span> <span class="Delimiter">{</span>
+<span id="L383" class="LineNr"> 383 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L167'>trace</a><span class="Delimiter">(</span><span class="Constant">9993</span><span class="Delimiter">,</span> <span class="Constant">&quot;transform&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;address at offset &quot;</span> &lt;&lt; curr_offset &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
+<span id="L384" class="LineNr"> 384 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='001help.cc.html#L229'>get_or_insert</a><span class="Delimiter">(</span>out<span class="Delimiter">,</span> key<span class="Delimiter">).</span>insert<span class="Delimiter">(</span>address_element_info<span class="Delimiter">(</span>curr_offset<span class="Delimiter">,</span> <span class="Normal">new</span> type_tree<span class="Delimiter">(</span>*payload_type<span class="Delimiter">(</span>element<span class="Delimiter">.</span>type<span class="Delimiter">))));</span>
+<span id="L385" class="LineNr"> 385 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> ++curr_offset<span class="Delimiter">;</span>
+<span id="L386" class="LineNr"> 386 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Delimiter">}</span>
+<span id="L387" class="LineNr"> 387 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">else</span> <span class="Normal">if</span> <span class="Delimiter">(</span>is_mu_array<span class="Delimiter">(</span>element<span class="Delimiter">))</span> <span class="Delimiter">{</span>
+<span id="L388" class="LineNr"> 388 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> curr_offset += <span class="Comment">/*</span><span class="Comment">array length</span><span class="Comment">*/</span><span class="Constant">1</span><span class="Delimiter">;</span>
+<span id="L389" class="LineNr"> 389 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">const</span> type_tree* array_element_type = <a href='032array.cc.html#L381'>array_element</a><span class="Delimiter">(</span>element<span class="Delimiter">.</span>type<span class="Delimiter">);</span>
+<span id="L390" class="LineNr"> 390 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">int</span> array_element_size = size_of<span class="Delimiter">(</span>array_element_type<span class="Delimiter">);</span>
+<span id="L391" class="LineNr"> 391 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> i = <span class="Constant">0</span><span class="Delimiter">;</span> i &lt; <a href='032array.cc.html#L117'>static_array_length</a><span class="Delimiter">(</span>element<span class="Delimiter">.</span>type<span class="Delimiter">);</span> ++i<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L392" class="LineNr"> 392 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='036refcount.cc.html#L369'>append_addresses</a><span class="Delimiter">(</span>curr_offset<span class="Delimiter">,</span> array_element_type<span class="Delimiter">,</span> out<span class="Delimiter">,</span> key<span class="Delimiter">,</span> location_for_error_messages<span class="Delimiter">);</span>
+<span id="L393" class="LineNr"> 393 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> curr_offset += array_element_size<span class="Delimiter">;</span>
+<span id="L394" class="LineNr"> 394 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Delimiter">}</span>
+<span id="L395" class="LineNr"> 395 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Delimiter">}</span>
+<span id="L396" class="LineNr"> 396 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">else</span> <span class="Normal">if</span> <span class="Delimiter">(</span>is_mu_container<span class="Delimiter">(</span>element<span class="Delimiter">))</span> <span class="Delimiter">{</span>
+<span id="L397" class="LineNr"> 397 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='036refcount.cc.html#L369'>append_addresses</a><span class="Delimiter">(</span>curr_offset<span class="Delimiter">,</span> element<span class="Delimiter">.</span>type<span class="Delimiter">,</span> out<span class="Delimiter">,</span> key<span class="Delimiter">,</span> location_for_error_messages<span class="Delimiter">);</span>
+<span id="L398" class="LineNr"> 398 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> curr_offset += size_of<span class="Delimiter">(</span>element<span class="Delimiter">);</span>
+<span id="L399" class="LineNr"> 399 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Delimiter">}</span>
+<span id="L400" class="LineNr"> 400 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">else</span> <span class="Normal">if</span> <span class="Delimiter">(</span>is_mu_exclusive_container<span class="Delimiter">(</span>element<span class="Delimiter">))</span> <span class="Delimiter">{</span>
+<span id="L401" class="LineNr"> 401 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">const</span> type_tree* element_base_type = element<span class="Delimiter">.</span>type<span class="Delimiter">;</span>
+<span id="L402" class="LineNr"> 402 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Comment">// Update element_base_type For Exclusive Container in append_addresses</span>
+<span id="L403" class="LineNr"> 403 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">const</span> type_info&amp; element_info = get<span class="Delimiter">(</span>Type<span class="Delimiter">,</span> element_base_type<span class="Delimiter">-&gt;</span>value<span class="Delimiter">);</span>
+<span id="L404" class="LineNr"> 404 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> tag = <span class="Constant">0</span><span class="Delimiter">;</span>  tag &lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>element_info<span class="Delimiter">.</span>elements<span class="Delimiter">);</span>  ++tag<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L405" class="LineNr"> 405 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> set&lt;tag_condition_info&gt; new_key = key<span class="Delimiter">;</span>
+<span id="L406" class="LineNr"> 406 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> new_key<span class="Delimiter">.</span>insert<span class="Delimiter">(</span>tag_condition_info<span class="Delimiter">(</span>curr_offset<span class="Delimiter">,</span> tag<span class="Delimiter">));</span>
+<span id="L407" class="LineNr"> 407 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>!contains_key<span class="Delimiter">(</span>out<span class="Delimiter">,</span> new_key<span class="Delimiter">))</span>
+<span id="L408" class="LineNr"> 408 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='036refcount.cc.html#L369'>append_addresses</a><span class="Delimiter">(</span>curr_offset+<span class="Comment">/*</span><span class="Comment">skip tag</span><span class="Comment">*/</span><span class="Constant">1</span><span class="Delimiter">,</span> variant_type<span class="Delimiter">(</span>element<span class="Delimiter">.</span>type<span class="Delimiter">,</span> tag<span class="Delimiter">).</span>type<span class="Delimiter">,</span> out<span class="Delimiter">,</span> new_key<span class="Delimiter">,</span> location_for_error_messages<span class="Delimiter">);</span>
+<span id="L409" class="LineNr"> 409 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Delimiter">}</span>
+<span id="L410" class="LineNr"> 410 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> curr_offset += size_of<span class="Delimiter">(</span>element<span class="Delimiter">);</span>
+<span id="L411" class="LineNr"> 411 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Delimiter">}</span>
+<span id="L412" class="LineNr"> 412 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">else</span> <span class="Delimiter">{</span>
+<span id="L413" class="LineNr"> 413 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Comment">// non-address primitive</span>
+<span id="L414" class="LineNr"> 414 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> ++curr_offset<span class="Delimiter">;</span>
+<span id="L415" class="LineNr"> 415 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Delimiter">}</span>
+<span id="L416" class="LineNr"> 416 </span>  <span class="Conceal">¦</span> <span class="Delimiter">}</span>
+<span id="L417" class="LineNr"> 417 </span>  <span class="Delimiter">}</span>
+<span id="L418" class="LineNr"> 418 </span>  <span class="Normal">else</span> <span class="Normal">if</span> <span class="Delimiter">(</span>info<span class="Delimiter">.</span>kind == <a href='010vm.cc.html#L174'>EXCLUSIVE_CONTAINER</a><span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L419" class="LineNr"> 419 </span>  <span class="Conceal">¦</span> <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> tag = <span class="Constant">0</span><span class="Delimiter">;</span>  tag &lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>info<span class="Delimiter">.</span>elements<span class="Delimiter">);</span>  ++tag<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L420" class="LineNr"> 420 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> set&lt;tag_condition_info&gt; new_key = key<span class="Delimiter">;</span>
+<span id="L421" class="LineNr"> 421 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> new_key<span class="Delimiter">.</span>insert<span class="Delimiter">(</span>tag_condition_info<span class="Delimiter">(</span>base_offset<span class="Delimiter">,</span> tag<span class="Delimiter">));</span>
+<span id="L422" class="LineNr"> 422 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>!contains_key<span class="Delimiter">(</span>out<span class="Delimiter">,</span> new_key<span class="Delimiter">))</span>
+<span id="L423" class="LineNr"> 423 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='036refcount.cc.html#L369'>append_addresses</a><span class="Delimiter">(</span>base_offset+<span class="Comment">/*</span><span class="Comment">skip tag</span><span class="Comment">*/</span><span class="Constant">1</span><span class="Delimiter">,</span> variant_type<span class="Delimiter">(</span>type<span class="Delimiter">,</span> tag<span class="Delimiter">).</span>type<span class="Delimiter">,</span> out<span class="Delimiter">,</span> new_key<span class="Delimiter">,</span> location_for_error_messages<span class="Delimiter">);</span>
+<span id="L424" class="LineNr"> 424 </span>  <span class="Conceal">¦</span> <span class="Delimiter">}</span>
+<span id="L425" class="LineNr"> 425 </span>  <span class="Delimiter">}</span>
+<span id="L426" class="LineNr"> 426 </span><span class="Delimiter">}</span>
+<span id="L427" class="LineNr"> 427 </span>
+<span id="L428" class="LineNr"> 428 </span><span class="Comment">//: for the following unit tests we'll do the work of the transform by hand</span>
+<span id="L429" class="LineNr"> 429 </span>
+<span id="L430" class="LineNr"> 430 </span><span class="Delimiter">:(before &quot;End Unit Tests&quot;)</span>
+<span id="L431" class="LineNr"> 431 </span><span class="Normal">void</span> <a href='036refcount.cc.html#L431'>test_container_address_offsets_empty</a><span class="Delimiter">()</span> <span class="Delimiter">{</span>
+<span id="L432" class="LineNr"> 432 </span>  <span class="Normal">int</span> old_size = <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>Container_metadata<span class="Delimiter">);</span>
+<span id="L433" class="LineNr"> 433 </span>  <span class="Comment">// define a container with no addresses</span>
+<span id="L434" class="LineNr"> 434 </span>  reagent r<span class="Delimiter">(</span><span class="Constant">&quot;x:point&quot;</span><span class="Delimiter">);</span>
+<span id="L435" class="LineNr"> 435 </span>  compute_container_sizes<span class="Delimiter">(</span>r<span class="Delimiter">,</span> <span class="Constant">&quot;&quot;</span><span class="Delimiter">);</span>  <span class="Comment">// need to first pre-populate the metadata</span>
+<span id="L436" class="LineNr"> 436 </span>  <span class="Comment">// scan</span>
+<span id="L437" class="LineNr"> 437 </span>  compute_container_address_offsets<span class="Delimiter">(</span>r<span class="Delimiter">,</span> <span class="Constant">&quot;&quot;</span><span class="Delimiter">);</span>
+<span id="L438" class="LineNr"> 438 </span>  <span class="Comment">// global metadata contains just the entry for foo</span>
+<span id="L439" class="LineNr"> 439 </span>  <span class="Comment">// no entries for non-container types or other junk</span>
+<span id="L440" class="LineNr"> 440 </span>  <a href='002test.cc.html#L31'>CHECK_EQ</a><span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>Container_metadata<span class="Delimiter">)</span>-old_size<span class="Delimiter">,</span> <span class="Constant">1</span><span class="Delimiter">);</span>
+<span id="L441" class="LineNr"> 441 </span>  <span class="Comment">// the reagent we scanned knows it has no addresses</span>
+<span id="L442" class="LineNr"> 442 </span>  <a href='002test.cc.html#L24'>CHECK</a><span class="Delimiter">(</span>r<span class="Delimiter">.</span>metadata<span class="Delimiter">.</span><a href='043space.cc.html#L82'>address</a><span class="Delimiter">.</span>empty<span class="Delimiter">());</span>
+<span id="L443" class="LineNr"> 443 </span>  <span class="Comment">// the global table contains an identical entry</span>
+<span id="L444" class="LineNr"> 444 </span>  <a href='002test.cc.html#L24'>CHECK</a><span class="Delimiter">(</span>contains_key<span class="Delimiter">(</span>Container_metadata<span class="Delimiter">,</span> r<span class="Delimiter">.</span>type<span class="Delimiter">));</span>
+<span id="L445" class="LineNr"> 445 </span>  <a href='002test.cc.html#L24'>CHECK</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Container_metadata<span class="Delimiter">,</span> r<span class="Delimiter">.</span>type<span class="Delimiter">).</span><a href='043space.cc.html#L82'>address</a><span class="Delimiter">.</span>empty<span class="Delimiter">());</span>
+<span id="L446" class="LineNr"> 446 </span>  <span class="Comment">// compute_container_address_offsets creates no new entries</span>
+<span id="L447" class="LineNr"> 447 </span>  <a href='002test.cc.html#L31'>CHECK_EQ</a><span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>Container_metadata<span class="Delimiter">)</span>-old_size<span class="Delimiter">,</span> <span class="Constant">1</span><span class="Delimiter">);</span>
+<span id="L448" class="LineNr"> 448 </span><span class="Delimiter">}</span>
+<span id="L449" class="LineNr"> 449 </span>
+<span id="L450" class="LineNr"> 450 </span><span class="Normal">void</span> <a href='036refcount.cc.html#L450'>test_container_address_offsets</a><span class="Delimiter">()</span> <span class="Delimiter">{</span>
+<span id="L451" class="LineNr"> 451 </span>  <span class="Normal">int</span> old_size = <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>Container_metadata<span class="Delimiter">);</span>
+<span id="L452" class="LineNr"> 452 </span>  <span class="Comment">// define a container with an address at offset 0 that we have the size for</span>
+<span id="L453" class="LineNr"> 453 </span>  run<span class="Delimiter">(</span><span class="Constant">&quot;container foo [</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span>
+<span id="L454" class="LineNr"> 454 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Constant">&quot;  x:<a href='043space.cc.html#L82'>address</a>:num</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span>
+<span id="L455" class="LineNr"> 455 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Constant">&quot;]</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span><span class="Delimiter">);</span>
+<span id="L456" class="LineNr"> 456 </span>  reagent r<span class="Delimiter">(</span><span class="Constant">&quot;x:foo&quot;</span><span class="Delimiter">);</span>
+<span id="L457" class="LineNr"> 457 </span>  compute_container_sizes<span class="Delimiter">(</span>r<span class="Delimiter">,</span> <span class="Constant">&quot;&quot;</span><span class="Delimiter">);</span>  <span class="Comment">// need to first pre-populate the metadata</span>
+<span id="L458" class="LineNr"> 458 </span>  <span class="Comment">// scan</span>
+<span id="L459" class="LineNr"> 459 </span>  compute_container_address_offsets<span class="Delimiter">(</span>r<span class="Delimiter">,</span> <span class="Constant">&quot;&quot;</span><span class="Delimiter">);</span>
+<span id="L460" class="LineNr"> 460 </span>  <span class="Comment">// global metadata contains just the entry for foo</span>
+<span id="L461" class="LineNr"> 461 </span>  <span class="Comment">// no entries for non-container types or other junk</span>
+<span id="L462" class="LineNr"> 462 </span>  <a href='002test.cc.html#L31'>CHECK_EQ</a><span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>Container_metadata<span class="Delimiter">)</span>-old_size<span class="Delimiter">,</span> <span class="Constant">1</span><span class="Delimiter">);</span>
+<span id="L463" class="LineNr"> 463 </span>  <span class="Comment">// the reagent we scanned knows it has an address at offset 0</span>
+<span id="L464" class="LineNr"> 464 </span>  <a href='002test.cc.html#L31'>CHECK_EQ</a><span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>r<span class="Delimiter">.</span>metadata<span class="Delimiter">.</span><a href='043space.cc.html#L82'>address</a><span class="Delimiter">),</span> <span class="Constant">1</span><span class="Delimiter">);</span>
+<span id="L465" class="LineNr"> 465 </span>  <a href='002test.cc.html#L24'>CHECK</a><span class="Delimiter">(</span>contains_key<span class="Delimiter">(</span>r<span class="Delimiter">.</span>metadata<span class="Delimiter">.</span><a href='043space.cc.html#L82'>address</a><span class="Delimiter">,</span> set&lt;tag_condition_info&gt;<span class="Delimiter">()));</span>
+<span id="L466" class="LineNr"> 466 </span>  <span class="Normal">const</span> set&lt;address_element_info&gt;&amp; address_offsets = get<span class="Delimiter">(</span>r<span class="Delimiter">.</span>metadata<span class="Delimiter">.</span><a href='043space.cc.html#L82'>address</a><span class="Delimiter">,</span> set&lt;tag_condition_info&gt;<span class="Delimiter">());</span>  <span class="Comment">// unconditional for containers</span>
+<span id="L467" class="LineNr"> 467 </span>  <a href='002test.cc.html#L31'>CHECK_EQ</a><span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>address_offsets<span class="Delimiter">),</span> <span class="Constant">1</span><span class="Delimiter">);</span>
+<span id="L468" class="LineNr"> 468 </span>  <a href='002test.cc.html#L31'>CHECK_EQ</a><span class="Delimiter">(</span>address_offsets<span class="Delimiter">.</span>begin<span class="Delimiter">()-&gt;</span>offset<span class="Delimiter">,</span> <span class="Constant">0</span><span class="Delimiter">);</span>
+<span id="L469" class="LineNr"> 469 </span>  <a href='002test.cc.html#L24'>CHECK</a><span class="Delimiter">(</span>address_offsets<span class="Delimiter">.</span>begin<span class="Delimiter">()-&gt;</span><a href='030container.cc.html#L238'>payload_type</a><span class="Delimiter">-&gt;</span>atom<span class="Delimiter">);</span>
+<span id="L470" class="LineNr"> 470 </span>  <a href='002test.cc.html#L31'>CHECK_EQ</a><span class="Delimiter">(</span>address_offsets<span class="Delimiter">.</span>begin<span class="Delimiter">()-&gt;</span><a href='030container.cc.html#L238'>payload_type</a><span class="Delimiter">-&gt;</span>name<span class="Delimiter">,</span> <span class="Constant">&quot;number&quot;</span><span class="Delimiter">);</span>
+<span id="L471" class="LineNr"> 471 </span>  <span class="Comment">// the global table contains an identical entry</span>
+<span id="L472" class="LineNr"> 472 </span>  <a href='002test.cc.html#L24'>CHECK</a><span class="Delimiter">(</span>contains_key<span class="Delimiter">(</span>Container_metadata<span class="Delimiter">,</span> r<span class="Delimiter">.</span>type<span class="Delimiter">));</span>
+<span id="L473" class="LineNr"> 473 </span>  <span class="Normal">const</span> set&lt;address_element_info&gt;&amp; address_offsets2 = get<span class="Delimiter">(</span>get<span class="Delimiter">(</span>Container_metadata<span class="Delimiter">,</span> r<span class="Delimiter">.</span>type<span class="Delimiter">).</span><a href='043space.cc.html#L82'>address</a><span class="Delimiter">,</span> set&lt;tag_condition_info&gt;<span class="Delimiter">());</span>
+<span id="L474" class="LineNr"> 474 </span>  <a href='002test.cc.html#L31'>CHECK_EQ</a><span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>address_offsets2<span class="Delimiter">),</span> <span class="Constant">1</span><span class="Delimiter">);</span>
+<span id="L475" class="LineNr"> 475 </span>  <a href='002test.cc.html#L31'>CHECK_EQ</a><span class="Delimiter">(</span>address_offsets2<span class="Delimiter">.</span>begin<span class="Delimiter">()-&gt;</span>offset<span class="Delimiter">,</span> <span class="Constant">0</span><span class="Delimiter">);</span>
+<span id="L476" class="LineNr"> 476 </span>  <a href='002test.cc.html#L24'>CHECK</a><span class="Delimiter">(</span>address_offsets2<span class="Delimiter">.</span>begin<span class="Delimiter">()-&gt;</span><a href='030container.cc.html#L238'>payload_type</a><span class="Delimiter">-&gt;</span>atom<span class="Delimiter">);</span>
+<span id="L477" class="LineNr"> 477 </span>  <a href='002test.cc.html#L31'>CHECK_EQ</a><span class="Delimiter">(</span>address_offsets2<span class="Delimiter">.</span>begin<span class="Delimiter">()-&gt;</span><a href='030container.cc.html#L238'>payload_type</a><span class="Delimiter">-&gt;</span>name<span class="Delimiter">,</span> <span class="Constant">&quot;number&quot;</span><span class="Delimiter">);</span>
+<span id="L478" class="LineNr"> 478 </span>  <span class="Comment">// compute_container_address_offsets creates no new entries</span>
+<span id="L479" class="LineNr"> 479 </span>  <a href='002test.cc.html#L31'>CHECK_EQ</a><span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>Container_metadata<span class="Delimiter">)</span>-old_size<span class="Delimiter">,</span> <span class="Constant">1</span><span class="Delimiter">);</span>
+<span id="L480" class="LineNr"> 480 </span><span class="Delimiter">}</span>
+<span id="L481" class="LineNr"> 481 </span>
+<span id="L482" class="LineNr"> 482 </span><span class="Normal">void</span> <a href='036refcount.cc.html#L482'>test_container_address_offsets_2</a><span class="Delimiter">()</span> <span class="Delimiter">{</span>
+<span id="L483" class="LineNr"> 483 </span>  <span class="Normal">int</span> old_size = <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>Container_metadata<span class="Delimiter">);</span>
+<span id="L484" class="LineNr"> 484 </span>  <span class="Comment">// define a container with an address at offset 1 that we have the size for</span>
+<span id="L485" class="LineNr"> 485 </span>  run<span class="Delimiter">(</span><span class="Constant">&quot;container foo [</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span>
+<span id="L486" class="LineNr"> 486 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Constant">&quot;  x:num</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span>
+<span id="L487" class="LineNr"> 487 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Constant">&quot;  y:<a href='043space.cc.html#L82'>address</a>:num</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span>
+<span id="L488" class="LineNr"> 488 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Constant">&quot;]</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span><span class="Delimiter">);</span>
+<span id="L489" class="LineNr"> 489 </span>  reagent r<span class="Delimiter">(</span><span class="Constant">&quot;x:foo&quot;</span><span class="Delimiter">);</span>
+<span id="L490" class="LineNr"> 490 </span>  compute_container_sizes<span class="Delimiter">(</span>r<span class="Delimiter">,</span> <span class="Constant">&quot;&quot;</span><span class="Delimiter">);</span>  <span class="Comment">// need to first pre-populate the metadata</span>
+<span id="L491" class="LineNr"> 491 </span>  <span class="Comment">// global metadata contains just the entry for foo</span>
+<span id="L492" class="LineNr"> 492 </span>  <span class="Comment">// no entries for non-container types or other junk</span>
+<span id="L493" class="LineNr"> 493 </span>  <a href='002test.cc.html#L31'>CHECK_EQ</a><span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>Container_metadata<span class="Delimiter">)</span>-old_size<span class="Delimiter">,</span> <span class="Constant">1</span><span class="Delimiter">);</span>
+<span id="L494" class="LineNr"> 494 </span>  <span class="Comment">// scan</span>
+<span id="L495" class="LineNr"> 495 </span>  compute_container_address_offsets<span class="Delimiter">(</span>r<span class="Delimiter">,</span> <span class="Constant">&quot;&quot;</span><span class="Delimiter">);</span>
+<span id="L496" class="LineNr"> 496 </span>  <span class="Comment">// compute_container_address_offsets creates no new entries</span>
+<span id="L497" class="LineNr"> 497 </span>  <a href='002test.cc.html#L31'>CHECK_EQ</a><span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>Container_metadata<span class="Delimiter">)</span>-old_size<span class="Delimiter">,</span> <span class="Constant">1</span><span class="Delimiter">);</span>
+<span id="L498" class="LineNr"> 498 </span>  <span class="Comment">// the reagent we scanned knows it has an address at offset 1</span>
+<span id="L499" class="LineNr"> 499 </span>  <a href='002test.cc.html#L31'>CHECK_EQ</a><span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>r<span class="Delimiter">.</span>metadata<span class="Delimiter">.</span><a href='043space.cc.html#L82'>address</a><span class="Delimiter">),</span> <span class="Constant">1</span><span class="Delimiter">);</span>
+<span id="L500" class="LineNr"> 500 </span>  <a href='002test.cc.html#L24'>CHECK</a><span class="Delimiter">(</span>contains_key<span class="Delimiter">(</span>r<span class="Delimiter">.</span>metadata<span class="Delimiter">.</span><a href='043space.cc.html#L82'>address</a><span class="Delimiter">,</span> set&lt;tag_condition_info&gt;<span class="Delimiter">()));</span>
+<span id="L501" class="LineNr"> 501 </span>  <span class="Normal">const</span> set&lt;address_element_info&gt;&amp; address_offsets = get<span class="Delimiter">(</span>r<span class="Delimiter">.</span>metadata<span class="Delimiter">.</span><a href='043space.cc.html#L82'>address</a><span class="Delimiter">,</span> set&lt;tag_condition_info&gt;<span class="Delimiter">());</span>
+<span id="L502" class="LineNr"> 502 </span>  <a href='002test.cc.html#L31'>CHECK_EQ</a><span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>address_offsets<span class="Delimiter">),</span> <span class="Constant">1</span><span class="Delimiter">);</span>
+<span id="L503" class="LineNr"> 503 </span>  <a href='002test.cc.html#L31'>CHECK_EQ</a><span class="Delimiter">(</span>address_offsets<span class="Delimiter">.</span>begin<span class="Delimiter">()-&gt;</span>offset<span class="Delimiter">,</span> <span class="Constant">1</span><span class="Delimiter">);</span>  <span class="Comment">//</span>
+<span id="L504" class="LineNr"> 504 </span>  <a href='002test.cc.html#L24'>CHECK</a><span class="Delimiter">(</span>address_offsets<span class="Delimiter">.</span>begin<span class="Delimiter">()-&gt;</span><a href='030container.cc.html#L238'>payload_type</a><span class="Delimiter">-&gt;</span>atom<span class="Delimiter">);</span>
+<span id="L505" class="LineNr"> 505 </span>  <a href='002test.cc.html#L31'>CHECK_EQ</a><span class="Delimiter">(</span>address_offsets<span class="Delimiter">.</span>begin<span class="Delimiter">()-&gt;</span><a href='030container.cc.html#L238'>payload_type</a><span class="Delimiter">-&gt;</span>name<span class="Delimiter">,</span> <span class="Constant">&quot;number&quot;</span><span class="Delimiter">);</span>
+<span id="L506" class="LineNr"> 506 </span>  <span class="Comment">// the global table contains an identical entry</span>
+<span id="L507" class="LineNr"> 507 </span>  <a href='002test.cc.html#L24'>CHECK</a><span class="Delimiter">(</span>contains_key<span class="Delimiter">(</span>Container_metadata<span class="Delimiter">,</span> r<span class="Delimiter">.</span>type<span class="Delimiter">));</span>
+<span id="L508" class="LineNr"> 508 </span>  <span class="Normal">const</span> set&lt;address_element_info&gt;&amp; address_offsets2 = get<span class="Delimiter">(</span>get<span class="Delimiter">(</span>Container_metadata<span class="Delimiter">,</span> r<span class="Delimiter">.</span>type<span class="Delimiter">).</span><a href='043space.cc.html#L82'>address</a><span class="Delimiter">,</span> set&lt;tag_condition_info&gt;<span class="Delimiter">());</span>
+<span id="L509" class="LineNr"> 509 </span>  <a href='002test.cc.html#L31'>CHECK_EQ</a><span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>address_offsets2<span class="Delimiter">),</span> <span class="Constant">1</span><span class="Delimiter">);</span>
+<span id="L510" class="LineNr"> 510 </span>  <a href='002test.cc.html#L31'>CHECK_EQ</a><span class="Delimiter">(</span>address_offsets2<span class="Delimiter">.</span>begin<span class="Delimiter">()-&gt;</span>offset<span class="Delimiter">,</span> <span class="Constant">1</span><span class="Delimiter">);</span>  <span class="Comment">//</span>
+<span id="L511" class="LineNr"> 511 </span>  <a href='002test.cc.html#L24'>CHECK</a><span class="Delimiter">(</span>address_offsets2<span class="Delimiter">.</span>begin<span class="Delimiter">()-&gt;</span><a href='030container.cc.html#L238'>payload_type</a><span class="Delimiter">-&gt;</span>atom<span class="Delimiter">);</span>
+<span id="L512" class="LineNr"> 512 </span>  <a href='002test.cc.html#L31'>CHECK_EQ</a><span class="Delimiter">(</span>address_offsets2<span class="Delimiter">.</span>begin<span class="Delimiter">()-&gt;</span><a href='030container.cc.html#L238'>payload_type</a><span class="Delimiter">-&gt;</span>name<span class="Delimiter">,</span> <span class="Constant">&quot;number&quot;</span><span class="Delimiter">);</span>
+<span id="L513" class="LineNr"> 513 </span><span class="Delimiter">}</span>
+<span id="L514" class="LineNr"> 514 </span>
+<span id="L515" class="LineNr"> 515 </span><span class="Normal">void</span> <a href='036refcount.cc.html#L515'>test_container_address_offsets_nested</a><span class="Delimiter">()</span> <span class="Delimiter">{</span>
+<span id="L516" class="LineNr"> 516 </span>  <span class="Normal">int</span> old_size = <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>Container_metadata<span class="Delimiter">);</span>
+<span id="L517" class="LineNr"> 517 </span>  <span class="Comment">// define a container with a nested container containing an address</span>
+<span id="L518" class="LineNr"> 518 </span>  run<span class="Delimiter">(</span><span class="Constant">&quot;container foo [</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span>
+<span id="L519" class="LineNr"> 519 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Constant">&quot;  x:<a href='043space.cc.html#L82'>address</a>:num</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span>
+<span id="L520" class="LineNr"> 520 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Constant">&quot;  y:num</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span>
+<span id="L521" class="LineNr"> 521 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Constant">&quot;]</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span>
+<span id="L522" class="LineNr"> 522 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Constant">&quot;container bar [</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span>
+<span id="L523" class="LineNr"> 523 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Constant">&quot;  p:point</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span>
+<span id="L524" class="LineNr"> 524 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Constant">&quot;  f:foo</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span>  <span class="Comment">// nested container containing address</span>
+<span id="L525" class="LineNr"> 525 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Constant">&quot;]</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span><span class="Delimiter">);</span>
+<span id="L526" class="LineNr"> 526 </span>  reagent r<span class="Delimiter">(</span><span class="Constant">&quot;x:bar&quot;</span><span class="Delimiter">);</span>
+<span id="L527" class="LineNr"> 527 </span>  compute_container_sizes<span class="Delimiter">(</span>r<span class="Delimiter">,</span> <span class="Constant">&quot;&quot;</span><span class="Delimiter">);</span>  <span class="Comment">// need to first pre-populate the metadata</span>
+<span id="L528" class="LineNr"> 528 </span>  <span class="Comment">// global metadata contains entries for bar and included types: point and foo</span>
+<span id="L529" class="LineNr"> 529 </span>  <span class="Comment">// no entries for non-container types or other junk</span>
+<span id="L530" class="LineNr"> 530 </span>  <a href='002test.cc.html#L31'>CHECK_EQ</a><span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>Container_metadata<span class="Delimiter">)</span>-old_size<span class="Delimiter">,</span> <span class="Constant">3</span><span class="Delimiter">);</span>
+<span id="L531" class="LineNr"> 531 </span>  <span class="Comment">// scan</span>
+<span id="L532" class="LineNr"> 532 </span>  compute_container_address_offsets<span class="Delimiter">(</span>r<span class="Delimiter">,</span> <span class="Constant">&quot;&quot;</span><span class="Delimiter">);</span>
+<span id="L533" class="LineNr"> 533 </span>  <span class="Comment">// the reagent we scanned knows it has an address at offset 2</span>
+<span id="L534" class="LineNr"> 534 </span>  <a href='002test.cc.html#L31'>CHECK_EQ</a><span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>r<span class="Delimiter">.</span>metadata<span class="Delimiter">.</span><a href='043space.cc.html#L82'>address</a><span class="Delimiter">),</span> <span class="Constant">1</span><span class="Delimiter">);</span>
+<span id="L535" class="LineNr"> 535 </span>  <a href='002test.cc.html#L24'>CHECK</a><span class="Delimiter">(</span>contains_key<span class="Delimiter">(</span>r<span class="Delimiter">.</span>metadata<span class="Delimiter">.</span><a href='043space.cc.html#L82'>address</a><span class="Delimiter">,</span> set&lt;tag_condition_info&gt;<span class="Delimiter">()));</span>
+<span id="L536" class="LineNr"> 536 </span>  <span class="Normal">const</span> set&lt;address_element_info&gt;&amp; address_offsets = get<span class="Delimiter">(</span>r<span class="Delimiter">.</span>metadata<span class="Delimiter">.</span><a href='043space.cc.html#L82'>address</a><span class="Delimiter">,</span> set&lt;tag_condition_info&gt;<span class="Delimiter">());</span>
+<span id="L537" class="LineNr"> 537 </span>  <a href='002test.cc.html#L31'>CHECK_EQ</a><span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>address_offsets<span class="Delimiter">),</span> <span class="Constant">1</span><span class="Delimiter">);</span>
+<span id="L538" class="LineNr"> 538 </span>  <a href='002test.cc.html#L31'>CHECK_EQ</a><span class="Delimiter">(</span>address_offsets<span class="Delimiter">.</span>begin<span class="Delimiter">()-&gt;</span>offset<span class="Delimiter">,</span> <span class="Constant">2</span><span class="Delimiter">);</span>  <span class="Comment">//</span>
+<span id="L539" class="LineNr"> 539 </span>  <a href='002test.cc.html#L24'>CHECK</a><span class="Delimiter">(</span>address_offsets<span class="Delimiter">.</span>begin<span class="Delimiter">()-&gt;</span><a href='030container.cc.html#L238'>payload_type</a><span class="Delimiter">-&gt;</span>atom<span class="Delimiter">);</span>
+<span id="L540" class="LineNr"> 540 </span>  <a href='002test.cc.html#L31'>CHECK_EQ</a><span class="Delimiter">(</span>address_offsets<span class="Delimiter">.</span>begin<span class="Delimiter">()-&gt;</span><a href='030container.cc.html#L238'>payload_type</a><span class="Delimiter">-&gt;</span>name<span class="Delimiter">,</span> <span class="Constant">&quot;number&quot;</span><span class="Delimiter">);</span>
+<span id="L541" class="LineNr"> 541 </span>  <span class="Comment">// the global table also knows its address offset</span>
+<span id="L542" class="LineNr"> 542 </span>  <a href='002test.cc.html#L24'>CHECK</a><span class="Delimiter">(</span>contains_key<span class="Delimiter">(</span>Container_metadata<span class="Delimiter">,</span> r<span class="Delimiter">.</span>type<span class="Delimiter">));</span>
+<span id="L543" class="LineNr"> 543 </span>  <span class="Normal">const</span> set&lt;address_element_info&gt;&amp; address_offsets2 = get<span class="Delimiter">(</span>get<span class="Delimiter">(</span>Container_metadata<span class="Delimiter">,</span> r<span class="Delimiter">.</span>type<span class="Delimiter">).</span><a href='043space.cc.html#L82'>address</a><span class="Delimiter">,</span> set&lt;tag_condition_info&gt;<span class="Delimiter">());</span>
+<span id="L544" class="LineNr"> 544 </span>  <a href='002test.cc.html#L31'>CHECK_EQ</a><span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>address_offsets2<span class="Delimiter">),</span> <span class="Constant">1</span><span class="Delimiter">);</span>
+<span id="L545" class="LineNr"> 545 </span>  <a href='002test.cc.html#L31'>CHECK_EQ</a><span class="Delimiter">(</span>address_offsets2<span class="Delimiter">.</span>begin<span class="Delimiter">()-&gt;</span>offset<span class="Delimiter">,</span> <span class="Constant">2</span><span class="Delimiter">);</span>  <span class="Comment">//</span>
+<span id="L546" class="LineNr"> 546 </span>  <a href='002test.cc.html#L24'>CHECK</a><span class="Delimiter">(</span>address_offsets2<span class="Delimiter">.</span>begin<span class="Delimiter">()-&gt;</span><a href='030container.cc.html#L238'>payload_type</a><span class="Delimiter">-&gt;</span>atom<span class="Delimiter">);</span>
+<span id="L547" class="LineNr"> 547 </span>  <a href='002test.cc.html#L31'>CHECK_EQ</a><span class="Delimiter">(</span>address_offsets2<span class="Delimiter">.</span>begin<span class="Delimiter">()-&gt;</span><a href='030container.cc.html#L238'>payload_type</a><span class="Delimiter">-&gt;</span>name<span class="Delimiter">,</span> <span class="Constant">&quot;number&quot;</span><span class="Delimiter">);</span>
+<span id="L548" class="LineNr"> 548 </span>  <span class="Comment">// compute_container_address_offsets creates no new entries</span>
+<span id="L549" class="LineNr"> 549 </span>  <a href='002test.cc.html#L31'>CHECK_EQ</a><span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>Container_metadata<span class="Delimiter">)</span>-old_size<span class="Delimiter">,</span> <span class="Constant">3</span><span class="Delimiter">);</span>
+<span id="L550" class="LineNr"> 550 </span><span class="Delimiter">}</span>
+<span id="L551" class="LineNr"> 551 </span>
+<span id="L552" class="LineNr"> 552 </span><span class="Normal">void</span> <a href='036refcount.cc.html#L552'>test_container_address_offsets_from_address</a><span class="Delimiter">()</span> <span class="Delimiter">{</span>
+<span id="L553" class="LineNr"> 553 </span>  <span class="Normal">int</span> old_size = <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>Container_metadata<span class="Delimiter">);</span>
+<span id="L554" class="LineNr"> 554 </span>  <span class="Comment">// define a container with an address at offset 0</span>
+<span id="L555" class="LineNr"> 555 </span>  run<span class="Delimiter">(</span><span class="Constant">&quot;container foo [</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span>
+<span id="L556" class="LineNr"> 556 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Constant">&quot;  x:<a href='043space.cc.html#L82'>address</a>:num</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span>
+<span id="L557" class="LineNr"> 557 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Constant">&quot;]</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span><span class="Delimiter">);</span>
+<span id="L558" class="LineNr"> 558 </span>  reagent r<span class="Delimiter">(</span><span class="Constant">&quot;x:<a href='043space.cc.html#L82'>address</a>:foo&quot;</span><span class="Delimiter">);</span>
+<span id="L559" class="LineNr"> 559 </span>  compute_container_sizes<span class="Delimiter">(</span>r<span class="Delimiter">,</span> <span class="Constant">&quot;&quot;</span><span class="Delimiter">);</span>  <span class="Comment">// need to first pre-populate the metadata</span>
+<span id="L560" class="LineNr"> 560 </span>  <span class="Comment">// global metadata contains just the entry for foo</span>
+<span id="L561" class="LineNr"> 561 </span>  <span class="Comment">// no entries for non-container types or other junk</span>
+<span id="L562" class="LineNr"> 562 </span>  <a href='002test.cc.html#L31'>CHECK_EQ</a><span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>Container_metadata<span class="Delimiter">)</span>-old_size<span class="Delimiter">,</span> <span class="Constant">1</span><span class="Delimiter">);</span>
+<span id="L563" class="LineNr"> 563 </span>  <span class="Comment">// scan an address to the container</span>
+<span id="L564" class="LineNr"> 564 </span>  compute_container_address_offsets<span class="Delimiter">(</span>r<span class="Delimiter">,</span> <span class="Constant">&quot;&quot;</span><span class="Delimiter">);</span>
+<span id="L565" class="LineNr"> 565 </span>  <span class="Comment">// compute_container_address_offsets creates no new entries</span>
+<span id="L566" class="LineNr"> 566 </span>  <a href='002test.cc.html#L31'>CHECK_EQ</a><span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>Container_metadata<span class="Delimiter">)</span>-old_size<span class="Delimiter">,</span> <span class="Constant">1</span><span class="Delimiter">);</span>
+<span id="L567" class="LineNr"> 567 </span>  <span class="Comment">// scanning precomputed metadata for the container</span>
+<span id="L568" class="LineNr"> 568 </span>  reagent container<span class="Delimiter">(</span><span class="Constant">&quot;x:foo&quot;</span><span class="Delimiter">);</span>
+<span id="L569" class="LineNr"> 569 </span>  <a href='002test.cc.html#L24'>CHECK</a><span class="Delimiter">(</span>contains_key<span class="Delimiter">(</span>Container_metadata<span class="Delimiter">,</span> container<span class="Delimiter">.</span>type<span class="Delimiter">));</span>
+<span id="L570" class="LineNr"> 570 </span>  <span class="Normal">const</span> set&lt;address_element_info&gt;&amp; address_offsets2 = get<span class="Delimiter">(</span>get<span class="Delimiter">(</span>Container_metadata<span class="Delimiter">,</span> container<span class="Delimiter">.</span>type<span class="Delimiter">).</span><a href='043space.cc.html#L82'>address</a><span class="Delimiter">,</span> set&lt;tag_condition_info&gt;<span class="Delimiter">());</span>
+<span id="L571" class="LineNr"> 571 </span>  <a href='002test.cc.html#L31'>CHECK_EQ</a><span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>address_offsets2<span class="Delimiter">),</span> <span class="Constant">1</span><span class="Delimiter">);</span>
+<span id="L572" class="LineNr"> 572 </span>  <a href='002test.cc.html#L31'>CHECK_EQ</a><span class="Delimiter">(</span>address_offsets2<span class="Delimiter">.</span>begin<span class="Delimiter">()-&gt;</span>offset<span class="Delimiter">,</span> <span class="Constant">0</span><span class="Delimiter">);</span>
+<span id="L573" class="LineNr"> 573 </span>  <a href='002test.cc.html#L24'>CHECK</a><span class="Delimiter">(</span>address_offsets2<span class="Delimiter">.</span>begin<span class="Delimiter">()-&gt;</span><a href='030container.cc.html#L238'>payload_type</a><span class="Delimiter">-&gt;</span>atom<span class="Delimiter">);</span>
+<span id="L574" class="LineNr"> 574 </span>  <a href='002test.cc.html#L31'>CHECK_EQ</a><span class="Delimiter">(</span>address_offsets2<span class="Delimiter">.</span>begin<span class="Delimiter">()-&gt;</span><a href='030container.cc.html#L238'>payload_type</a><span class="Delimiter">-&gt;</span>name<span class="Delimiter">,</span> <span class="Constant">&quot;number&quot;</span><span class="Delimiter">);</span>
+<span id="L575" class="LineNr"> 575 </span><span class="Delimiter">}</span>
+<span id="L576" class="LineNr"> 576 </span>
+<span id="L577" class="LineNr"> 577 </span><span class="Normal">void</span> <a href='036refcount.cc.html#L577'>test_container_address_offsets_from_array</a><span class="Delimiter">()</span> <span class="Delimiter">{</span>
+<span id="L578" class="LineNr"> 578 </span>  <span class="Normal">int</span> old_size = <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>Container_metadata<span class="Delimiter">);</span>
+<span id="L579" class="LineNr"> 579 </span>  <span class="Comment">// define a container with an address at offset 0</span>
+<span id="L580" class="LineNr"> 580 </span>  run<span class="Delimiter">(</span><span class="Constant">&quot;container foo [</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span>
+<span id="L581" class="LineNr"> 581 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Constant">&quot;  x:<a href='043space.cc.html#L82'>address</a>:num</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span>
+<span id="L582" class="LineNr"> 582 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Constant">&quot;]</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span><span class="Delimiter">);</span>
+<span id="L583" class="LineNr"> 583 </span>  reagent r<span class="Delimiter">(</span><span class="Constant">&quot;x:array:foo&quot;</span><span class="Delimiter">);</span>
+<span id="L584" class="LineNr"> 584 </span>  compute_container_sizes<span class="Delimiter">(</span>r<span class="Delimiter">,</span> <span class="Constant">&quot;&quot;</span><span class="Delimiter">);</span>  <span class="Comment">// need to first pre-populate the metadata</span>
+<span id="L585" class="LineNr"> 585 </span>  <span class="Comment">// global metadata contains just the entry for foo</span>
+<span id="L586" class="LineNr"> 586 </span>  <span class="Comment">// no entries for non-container types or other junk</span>
+<span id="L587" class="LineNr"> 587 </span>  <a href='002test.cc.html#L31'>CHECK_EQ</a><span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>Container_metadata<span class="Delimiter">)</span>-old_size<span class="Delimiter">,</span> <span class="Constant">1</span><span class="Delimiter">);</span>
+<span id="L588" class="LineNr"> 588 </span>  <span class="Comment">// scan an array of the container</span>
+<span id="L589" class="LineNr"> 589 </span>  compute_container_address_offsets<span class="Delimiter">(</span>r<span class="Delimiter">,</span> <span class="Constant">&quot;&quot;</span><span class="Delimiter">);</span>
+<span id="L590" class="LineNr"> 590 </span>  <span class="Comment">// compute_container_address_offsets creates no new entries</span>
+<span id="L591" class="LineNr"> 591 </span>  <a href='002test.cc.html#L31'>CHECK_EQ</a><span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>Container_metadata<span class="Delimiter">)</span>-old_size<span class="Delimiter">,</span> <span class="Constant">1</span><span class="Delimiter">);</span>
+<span id="L592" class="LineNr"> 592 </span>  <span class="Comment">// scanning precomputed metadata for the container</span>
+<span id="L593" class="LineNr"> 593 </span>  reagent container<span class="Delimiter">(</span><span class="Constant">&quot;x:foo&quot;</span><span class="Delimiter">);</span>
+<span id="L594" class="LineNr"> 594 </span>  <a href='002test.cc.html#L24'>CHECK</a><span class="Delimiter">(</span>contains_key<span class="Delimiter">(</span>Container_metadata<span class="Delimiter">,</span> container<span class="Delimiter">.</span>type<span class="Delimiter">));</span>
+<span id="L595" class="LineNr"> 595 </span>  <span class="Normal">const</span> set&lt;address_element_info&gt;&amp; address_offsets2 = get<span class="Delimiter">(</span>get<span class="Delimiter">(</span>Container_metadata<span class="Delimiter">,</span> container<span class="Delimiter">.</span>type<span class="Delimiter">).</span><a href='043space.cc.html#L82'>address</a><span class="Delimiter">,</span> set&lt;tag_condition_info&gt;<span class="Delimiter">());</span>
+<span id="L596" class="LineNr"> 596 </span>  <a href='002test.cc.html#L31'>CHECK_EQ</a><span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>address_offsets2<span class="Delimiter">),</span> <span class="Constant">1</span><span class="Delimiter">);</span>
+<span id="L597" class="LineNr"> 597 </span>  <a href='002test.cc.html#L31'>CHECK_EQ</a><span class="Delimiter">(</span>address_offsets2<span class="Delimiter">.</span>begin<span class="Delimiter">()-&gt;</span>offset<span class="Delimiter">,</span> <span class="Constant">0</span><span class="Delimiter">);</span>
+<span id="L598" class="LineNr"> 598 </span>  <a href='002test.cc.html#L24'>CHECK</a><span class="Delimiter">(</span>address_offsets2<span class="Delimiter">.</span>begin<span class="Delimiter">()-&gt;</span><a href='030container.cc.html#L238'>payload_type</a><span class="Delimiter">-&gt;</span>atom<span class="Delimiter">);</span>
+<span id="L599" class="LineNr"> 599 </span>  <a href='002test.cc.html#L31'>CHECK_EQ</a><span class="Delimiter">(</span>address_offsets2<span class="Delimiter">.</span>begin<span class="Delimiter">()-&gt;</span><a href='030container.cc.html#L238'>payload_type</a><span class="Delimiter">-&gt;</span>name<span class="Delimiter">,</span> <span class="Constant">&quot;number&quot;</span><span class="Delimiter">);</span>
+<span id="L600" class="LineNr"> 600 </span><span class="Delimiter">}</span>
+<span id="L601" class="LineNr"> 601 </span>
+<span id="L602" class="LineNr"> 602 </span><span class="Normal">void</span> <a href='036refcount.cc.html#L602'>test_container_address_offsets_from_address_to_array</a><span class="Delimiter">()</span> <span class="Delimiter">{</span>
+<span id="L603" class="LineNr"> 603 </span>  <span class="Normal">int</span> old_size = <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>Container_metadata<span class="Delimiter">);</span>
+<span id="L604" class="LineNr"> 604 </span>  <span class="Comment">// define a container with an address at offset 0</span>
+<span id="L605" class="LineNr"> 605 </span>  run<span class="Delimiter">(</span><span class="Constant">&quot;container foo [</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span>
+<span id="L606" class="LineNr"> 606 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Constant">&quot;  x:<a href='043space.cc.html#L82'>address</a>:num</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span>
+<span id="L607" class="LineNr"> 607 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Constant">&quot;]</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span><span class="Delimiter">);</span>
+<span id="L608" class="LineNr"> 608 </span>  reagent r<span class="Delimiter">(</span><span class="Constant">&quot;x:<a href='043space.cc.html#L82'>address</a>:array:foo&quot;</span><span class="Delimiter">);</span>
+<span id="L609" class="LineNr"> 609 </span>  compute_container_sizes<span class="Delimiter">(</span>r<span class="Delimiter">,</span> <span class="Constant">&quot;&quot;</span><span class="Delimiter">);</span>  <span class="Comment">// need to first pre-populate the metadata</span>
+<span id="L610" class="LineNr"> 610 </span>  <span class="Comment">// global metadata contains just the entry for foo</span>
+<span id="L611" class="LineNr"> 611 </span>  <span class="Comment">// no entries for non-container types or other junk</span>
+<span id="L612" class="LineNr"> 612 </span>  <a href='002test.cc.html#L31'>CHECK_EQ</a><span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>Container_metadata<span class="Delimiter">)</span>-old_size<span class="Delimiter">,</span> <span class="Constant">1</span><span class="Delimiter">);</span>
+<span id="L613" class="LineNr"> 613 </span>  <span class="Comment">// scan an address to an array of the container</span>
+<span id="L614" class="LineNr"> 614 </span>  compute_container_address_offsets<span class="Delimiter">(</span>r<span class="Delimiter">,</span> <span class="Constant">&quot;&quot;</span><span class="Delimiter">);</span>
+<span id="L615" class="LineNr"> 615 </span>  <span class="Comment">// compute_container_address_offsets creates no new entries</span>
+<span id="L616" class="LineNr"> 616 </span>  <a href='002test.cc.html#L31'>CHECK_EQ</a><span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>Container_metadata<span class="Delimiter">)</span>-old_size<span class="Delimiter">,</span> <span class="Constant">1</span><span class="Delimiter">);</span>
+<span id="L617" class="LineNr"> 617 </span>  <span class="Comment">// scanning precomputed metadata for the container</span>
+<span id="L618" class="LineNr"> 618 </span>  reagent container<span class="Delimiter">(</span><span class="Constant">&quot;x:foo&quot;</span><span class="Delimiter">);</span>
+<span id="L619" class="LineNr"> 619 </span>  <a href='002test.cc.html#L24'>CHECK</a><span class="Delimiter">(</span>contains_key<span class="Delimiter">(</span>Container_metadata<span class="Delimiter">,</span> container<span class="Delimiter">.</span>type<span class="Delimiter">));</span>
+<span id="L620" class="LineNr"> 620 </span>  <span class="Normal">const</span> set&lt;address_element_info&gt;&amp; address_offsets2 = get<span class="Delimiter">(</span>get<span class="Delimiter">(</span>Container_metadata<span class="Delimiter">,</span> container<span class="Delimiter">.</span>type<span class="Delimiter">).</span><a href='043space.cc.html#L82'>address</a><span class="Delimiter">,</span> set&lt;tag_condition_info&gt;<span class="Delimiter">());</span>
+<span id="L621" class="LineNr"> 621 </span>  <a href='002test.cc.html#L31'>CHECK_EQ</a><span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>address_offsets2<span class="Delimiter">),</span> <span class="Constant">1</span><span class="Delimiter">);</span>
+<span id="L622" class="LineNr"> 622 </span>  <a href='002test.cc.html#L31'>CHECK_EQ</a><span class="Delimiter">(</span>address_offsets2<span class="Delimiter">.</span>begin<span class="Delimiter">()-&gt;</span>offset<span class="Delimiter">,</span> <span class="Constant">0</span><span class="Delimiter">);</span>
+<span id="L623" class="LineNr"> 623 </span>  <a href='002test.cc.html#L24'>CHECK</a><span class="Delimiter">(</span>address_offsets2<span class="Delimiter">.</span>begin<span class="Delimiter">()-&gt;</span><a href='030container.cc.html#L238'>payload_type</a><span class="Delimiter">-&gt;</span>atom<span class="Delimiter">);</span>
+<span id="L624" class="LineNr"> 624 </span>  <a href='002test.cc.html#L31'>CHECK_EQ</a><span class="Delimiter">(</span>address_offsets2<span class="Delimiter">.</span>begin<span class="Delimiter">()-&gt;</span><a href='030container.cc.html#L238'>payload_type</a><span class="Delimiter">-&gt;</span>name<span class="Delimiter">,</span> <span class="Constant">&quot;number&quot;</span><span class="Delimiter">);</span>
+<span id="L625" class="LineNr"> 625 </span><span class="Delimiter">}</span>
+<span id="L626" class="LineNr"> 626 </span>
+<span id="L627" class="LineNr"> 627 </span><span class="Normal">void</span> <a href='036refcount.cc.html#L627'>test_container_address_offsets_from_static_array</a><span class="Delimiter">()</span> <span class="Delimiter">{</span>
+<span id="L628" class="LineNr"> 628 </span>  <span class="Normal">int</span> old_size = <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>Container_metadata<span class="Delimiter">);</span>
+<span id="L629" class="LineNr"> 629 </span>  <span class="Comment">// define a container with an address at offset 0</span>
+<span id="L630" class="LineNr"> 630 </span>  run<span class="Delimiter">(</span><span class="Constant">&quot;container foo [</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span>
+<span id="L631" class="LineNr"> 631 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Constant">&quot;  x:<a href='043space.cc.html#L82'>address</a>:num</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span>
+<span id="L632" class="LineNr"> 632 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Constant">&quot;]</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span><span class="Delimiter">);</span>
+<span id="L633" class="LineNr"> 633 </span>  reagent r<span class="Delimiter">(</span><span class="Constant">&quot;x:array:foo:10&quot;</span><span class="Delimiter">);</span>
+<span id="L634" class="LineNr"> 634 </span>  compute_container_sizes<span class="Delimiter">(</span>r<span class="Delimiter">,</span> <span class="Constant">&quot;&quot;</span><span class="Delimiter">);</span>  <span class="Comment">// need to first pre-populate the metadata</span>
+<span id="L635" class="LineNr"> 635 </span>  <span class="Comment">// global metadata contains just the entry for foo</span>
+<span id="L636" class="LineNr"> 636 </span>  <span class="Comment">// no entries for non-container types or other junk</span>
+<span id="L637" class="LineNr"> 637 </span>  <a href='002test.cc.html#L31'>CHECK_EQ</a><span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>Container_metadata<span class="Delimiter">)</span>-old_size<span class="Delimiter">,</span> <span class="Constant">1</span><span class="Delimiter">);</span>
+<span id="L638" class="LineNr"> 638 </span>  <span class="Comment">// scan a static array of the container</span>
+<span id="L639" class="LineNr"> 639 </span>  compute_container_address_offsets<span class="Delimiter">(</span>r<span class="Delimiter">,</span> <span class="Constant">&quot;&quot;</span><span class="Delimiter">);</span>
+<span id="L640" class="LineNr"> 640 </span>  <span class="Comment">// compute_container_address_offsets creates no new entries</span>
+<span id="L641" class="LineNr"> 641 </span>  <a href='002test.cc.html#L31'>CHECK_EQ</a><span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>Container_metadata<span class="Delimiter">)</span>-old_size<span class="Delimiter">,</span> <span class="Constant">1</span><span class="Delimiter">);</span>
+<span id="L642" class="LineNr"> 642 </span>  <span class="Comment">// scanning precomputed metadata for the container</span>
+<span id="L643" class="LineNr"> 643 </span>  reagent container<span class="Delimiter">(</span><span class="Constant">&quot;x:foo&quot;</span><span class="Delimiter">);</span>
+<span id="L644" class="LineNr"> 644 </span>  <a href='002test.cc.html#L24'>CHECK</a><span class="Delimiter">(</span>contains_key<span class="Delimiter">(</span>Container_metadata<span class="Delimiter">,</span> container<span class="Delimiter">.</span>type<span class="Delimiter">));</span>
+<span id="L645" class="LineNr"> 645 </span>  <span class="Normal">const</span> set&lt;address_element_info&gt;&amp; address_offsets2 = get<span class="Delimiter">(</span>get<span class="Delimiter">(</span>Container_metadata<span class="Delimiter">,</span> container<span class="Delimiter">.</span>type<span class="Delimiter">).</span><a href='043space.cc.html#L82'>address</a><span class="Delimiter">,</span> set&lt;tag_condition_info&gt;<span class="Delimiter">());</span>
+<span id="L646" class="LineNr"> 646 </span>  <a href='002test.cc.html#L31'>CHECK_EQ</a><span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>address_offsets2<span class="Delimiter">),</span> <span class="Constant">1</span><span class="Delimiter">);</span>
+<span id="L647" class="LineNr"> 647 </span>  <a href='002test.cc.html#L31'>CHECK_EQ</a><span class="Delimiter">(</span>address_offsets2<span class="Delimiter">.</span>begin<span class="Delimiter">()-&gt;</span>offset<span class="Delimiter">,</span> <span class="Constant">0</span><span class="Delimiter">);</span>
+<span id="L648" class="LineNr"> 648 </span>  <a href='002test.cc.html#L24'>CHECK</a><span class="Delimiter">(</span>address_offsets2<span class="Delimiter">.</span>begin<span class="Delimiter">()-&gt;</span><a href='030container.cc.html#L238'>payload_type</a><span class="Delimiter">-&gt;</span>atom<span class="Delimiter">);</span>
+<span id="L649" class="LineNr"> 649 </span>  <a href='002test.cc.html#L31'>CHECK_EQ</a><span class="Delimiter">(</span>address_offsets2<span class="Delimiter">.</span>begin<span class="Delimiter">()-&gt;</span><a href='030container.cc.html#L238'>payload_type</a><span class="Delimiter">-&gt;</span>name<span class="Delimiter">,</span> <span class="Constant">&quot;number&quot;</span><span class="Delimiter">);</span>
+<span id="L650" class="LineNr"> 650 </span><span class="Delimiter">}</span>
+<span id="L651" class="LineNr"> 651 </span>
+<span id="L652" class="LineNr"> 652 </span><span class="Normal">void</span> <a href='036refcount.cc.html#L652'>test_container_address_offsets_from_address_to_static_array</a><span class="Delimiter">()</span> <span class="Delimiter">{</span>
+<span id="L653" class="LineNr"> 653 </span>  <span class="Normal">int</span> old_size = <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>Container_metadata<span class="Delimiter">);</span>
+<span id="L654" class="LineNr"> 654 </span>  <span class="Comment">// define a container with an address at offset 0</span>
+<span id="L655" class="LineNr"> 655 </span>  run<span class="Delimiter">(</span><span class="Constant">&quot;container foo [</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span>
+<span id="L656" class="LineNr"> 656 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Constant">&quot;  x:<a href='043space.cc.html#L82'>address</a>:num</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span>
+<span id="L657" class="LineNr"> 657 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Constant">&quot;]</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span><span class="Delimiter">);</span>
+<span id="L658" class="LineNr"> 658 </span>  reagent r<span class="Delimiter">(</span><span class="Constant">&quot;x:<a href='043space.cc.html#L82'>address</a>:array:foo:10&quot;</span><span class="Delimiter">);</span>
+<span id="L659" class="LineNr"> 659 </span>  compute_container_sizes<span class="Delimiter">(</span>r<span class="Delimiter">,</span> <span class="Constant">&quot;&quot;</span><span class="Delimiter">);</span>  <span class="Comment">// need to first pre-populate the metadata</span>
+<span id="L660" class="LineNr"> 660 </span>  <span class="Comment">// global metadata contains just the entry for foo</span>
+<span id="L661" class="LineNr"> 661 </span>  <span class="Comment">// no entries for non-container types or other junk</span>
+<span id="L662" class="LineNr"> 662 </span>  <a href='002test.cc.html#L31'>CHECK_EQ</a><span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>Container_metadata<span class="Delimiter">)</span>-old_size<span class="Delimiter">,</span> <span class="Constant">1</span><span class="Delimiter">);</span>
+<span id="L663" class="LineNr"> 663 </span>  <span class="Comment">// scan an address to a static array of the container</span>
+<span id="L664" class="LineNr"> 664 </span>  compute_container_address_offsets<span class="Delimiter">(</span>r<span class="Delimiter">,</span> <span class="Constant">&quot;&quot;</span><span class="Delimiter">);</span>
+<span id="L665" class="LineNr"> 665 </span>  <span class="Comment">// compute_container_address_offsets creates no new entries</span>
+<span id="L666" class="LineNr"> 666 </span>  <a href='002test.cc.html#L31'>CHECK_EQ</a><span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>Container_metadata<span class="Delimiter">)</span>-old_size<span class="Delimiter">,</span> <span class="Constant">1</span><span class="Delimiter">);</span>
+<span id="L667" class="LineNr"> 667 </span>  <span class="Comment">// scanning precomputed metadata for the container</span>
+<span id="L668" class="LineNr"> 668 </span>  reagent container<span class="Delimiter">(</span><span class="Constant">&quot;x:foo&quot;</span><span class="Delimiter">);</span>
+<span id="L669" class="LineNr"> 669 </span>  <a href='002test.cc.html#L24'>CHECK</a><span class="Delimiter">(</span>contains_key<span class="Delimiter">(</span>Container_metadata<span class="Delimiter">,</span> container<span class="Delimiter">.</span>type<span class="Delimiter">));</span>
+<span id="L670" class="LineNr"> 670 </span>  <span class="Normal">const</span> set&lt;address_element_info&gt;&amp; address_offsets2 = get<span class="Delimiter">(</span>get<span class="Delimiter">(</span>Container_metadata<span class="Delimiter">,</span> container<span class="Delimiter">.</span>type<span class="Delimiter">).</span><a href='043space.cc.html#L82'>address</a><span class="Delimiter">,</span> set&lt;tag_condition_info&gt;<span class="Delimiter">());</span>
+<span id="L671" class="LineNr"> 671 </span>  <a href='002test.cc.html#L31'>CHECK_EQ</a><span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>address_offsets2<span class="Delimiter">),</span> <span class="Constant">1</span><span class="Delimiter">);</span>
+<span id="L672" class="LineNr"> 672 </span>  <a href='002test.cc.html#L31'>CHECK_EQ</a><span class="Delimiter">(</span>address_offsets2<span class="Delimiter">.</span>begin<span class="Delimiter">()-&gt;</span>offset<span class="Delimiter">,</span> <span class="Constant">0</span><span class="Delimiter">);</span>
+<span id="L673" class="LineNr"> 673 </span>  <a href='002test.cc.html#L24'>CHECK</a><span class="Delimiter">(</span>address_offsets2<span class="Delimiter">.</span>begin<span class="Delimiter">()-&gt;</span><a href='030container.cc.html#L238'>payload_type</a><span class="Delimiter">-&gt;</span>atom<span class="Delimiter">);</span>
+<span id="L674" class="LineNr"> 674 </span>  <a href='002test.cc.html#L31'>CHECK_EQ</a><span class="Delimiter">(</span>address_offsets2<span class="Delimiter">.</span>begin<span class="Delimiter">()-&gt;</span><a href='030container.cc.html#L238'>payload_type</a><span class="Delimiter">-&gt;</span>name<span class="Delimiter">,</span> <span class="Constant">&quot;number&quot;</span><span class="Delimiter">);</span>
+<span id="L675" class="LineNr"> 675 </span><span class="Delimiter">}</span>
+<span id="L676" class="LineNr"> 676 </span>
+<span id="L677" class="LineNr"> 677 </span><span class="Normal">void</span> <a href='036refcount.cc.html#L677'>test_container_address_offsets_from_repeated_address_and_array_types</a><span class="Delimiter">()</span> <span class="Delimiter">{</span>
+<span id="L678" class="LineNr"> 678 </span>  <span class="Normal">int</span> old_size = <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>Container_metadata<span class="Delimiter">);</span>
+<span id="L679" class="LineNr"> 679 </span>  <span class="Comment">// define a container with an address at offset 0</span>
+<span id="L680" class="LineNr"> 680 </span>  run<span class="Delimiter">(</span><span class="Constant">&quot;container foo [</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span>
+<span id="L681" class="LineNr"> 681 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Constant">&quot;  x:<a href='043space.cc.html#L82'>address</a>:num</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span>
+<span id="L682" class="LineNr"> 682 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Constant">&quot;]</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span><span class="Delimiter">);</span>
+<span id="L683" class="LineNr"> 683 </span>  <span class="Comment">// scan a deep nest of 'address' and 'array' types modifying a container</span>
+<span id="L684" class="LineNr"> 684 </span>  reagent r<span class="Delimiter">(</span><span class="Constant">&quot;x:<a href='043space.cc.html#L82'>address</a>:array:<a href='043space.cc.html#L82'>address</a>:<a href='043space.cc.html#L82'>address</a>:array:foo:10&quot;</span><span class="Delimiter">);</span>
+<span id="L685" class="LineNr"> 685 </span>  compute_container_sizes<span class="Delimiter">(</span>r<span class="Delimiter">,</span> <span class="Constant">&quot;&quot;</span><span class="Delimiter">);</span>  <span class="Comment">// need to first pre-populate the metadata</span>
+<span id="L686" class="LineNr"> 686 </span>  <span class="Comment">// global metadata contains just the entry for foo</span>
+<span id="L687" class="LineNr"> 687 </span>  <span class="Comment">// no entries for non-container types or other junk</span>
+<span id="L688" class="LineNr"> 688 </span>  <a href='002test.cc.html#L31'>CHECK_EQ</a><span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>Container_metadata<span class="Delimiter">)</span>-old_size<span class="Delimiter">,</span> <span class="Constant">1</span><span class="Delimiter">);</span>
+<span id="L689" class="LineNr"> 689 </span>  compute_container_address_offsets<span class="Delimiter">(</span>r<span class="Delimiter">,</span> <span class="Constant">&quot;&quot;</span><span class="Delimiter">);</span>
+<span id="L690" class="LineNr"> 690 </span>  <span class="Comment">// compute_container_address_offsets creates no new entries</span>
+<span id="L691" class="LineNr"> 691 </span>  <a href='002test.cc.html#L31'>CHECK_EQ</a><span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>Container_metadata<span class="Delimiter">)</span>-old_size<span class="Delimiter">,</span> <span class="Constant">1</span><span class="Delimiter">);</span>
+<span id="L692" class="LineNr"> 692 </span>  <span class="Comment">// scanning precomputed metadata for the container</span>
+<span id="L693" class="LineNr"> 693 </span>  reagent container<span class="Delimiter">(</span><span class="Constant">&quot;x:foo&quot;</span><span class="Delimiter">);</span>
+<span id="L694" class="LineNr"> 694 </span>  <a href='002test.cc.html#L24'>CHECK</a><span class="Delimiter">(</span>contains_key<span class="Delimiter">(</span>Container_metadata<span class="Delimiter">,</span> container<span class="Delimiter">.</span>type<span class="Delimiter">));</span>
+<span id="L695" class="LineNr"> 695 </span>  <span class="Normal">const</span> set&lt;address_element_info&gt;&amp; address_offsets2 = get<span class="Delimiter">(</span>get<span class="Delimiter">(</span>Container_metadata<span class="Delimiter">,</span> container<span class="Delimiter">.</span>type<span class="Delimiter">).</span><a href='043space.cc.html#L82'>address</a><span class="Delimiter">,</span> set&lt;tag_condition_info&gt;<span class="Delimiter">());</span>
+<span id="L696" class="LineNr"> 696 </span>  <a href='002test.cc.html#L31'>CHECK_EQ</a><span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>address_offsets2<span class="Delimiter">),</span> <span class="Constant">1</span><span class="Delimiter">);</span>
+<span id="L697" class="LineNr"> 697 </span>  <a href='002test.cc.html#L31'>CHECK_EQ</a><span class="Delimiter">(</span>address_offsets2<span class="Delimiter">.</span>begin<span class="Delimiter">()-&gt;</span>offset<span class="Delimiter">,</span> <span class="Constant">0</span><span class="Delimiter">);</span>
+<span id="L698" class="LineNr"> 698 </span>  <a href='002test.cc.html#L24'>CHECK</a><span class="Delimiter">(</span>address_offsets2<span class="Delimiter">.</span>begin<span class="Delimiter">()-&gt;</span><a href='030container.cc.html#L238'>payload_type</a><span class="Delimiter">-&gt;</span>atom<span class="Delimiter">);</span>
+<span id="L699" class="LineNr"> 699 </span>  <a href='002test.cc.html#L31'>CHECK_EQ</a><span class="Delimiter">(</span>address_offsets2<span class="Delimiter">.</span>begin<span class="Delimiter">()-&gt;</span><a href='030container.cc.html#L238'>payload_type</a><span class="Delimiter">-&gt;</span>name<span class="Delimiter">,</span> <span class="Constant">&quot;number&quot;</span><span class="Delimiter">);</span>
+<span id="L700" class="LineNr"> 700 </span><span class="Delimiter">}</span>
+<span id="L701" class="LineNr"> 701 </span>
+<span id="L702" class="LineNr"> 702 </span><span class="Comment">//: use metadata.address to update refcounts within containers, arrays and</span>
+<span id="L703" class="LineNr"> 703 </span><span class="Comment">//: exclusive containers</span>
+<span id="L704" class="LineNr"> 704 </span>
+<span id="L705" class="LineNr"> 705 </span><span class="Delimiter">:(before &quot;End Increment Refcounts(canonized_x)&quot;)</span>
+<span id="L706" class="LineNr"> 706 </span><span class="Normal">if</span> <span class="Delimiter">(</span>is_mu_container<span class="Delimiter">(</span>canonized_x<span class="Delimiter">)</span> || is_mu_exclusive_container<span class="Delimiter">(</span>canonized_x<span class="Delimiter">))</span> <span class="Delimiter">{</span>
+<span id="L707" class="LineNr"> 707 </span>  <span class="Normal">const</span> container_metadata&amp; metadata = get<span class="Delimiter">(</span>Container_metadata<span class="Delimiter">,</span> canonized_x<span class="Delimiter">.</span>type<span class="Delimiter">);</span>
+<span id="L708" class="LineNr"> 708 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span>map&lt;set&lt;tag_condition_info&gt;<span class="Delimiter">,</span> set&lt;address_element_info&gt; &gt;::const_iterator p = metadata<span class="Delimiter">.</span><a href='043space.cc.html#L82'>address</a><span class="Delimiter">.</span>begin<span class="Delimiter">();</span>  p != metadata<span class="Delimiter">.</span><a href='043space.cc.html#L82'>address</a><span class="Delimiter">.</span><a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>  ++p<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L709" class="LineNr"> 709 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>!all_match<span class="Delimiter">(</span>data<span class="Delimiter">,</span> p<span class="Delimiter">-&gt;</span>first<span class="Delimiter">))</span> <span class="Identifier">continue</span><span class="Delimiter">;</span>
+<span id="L710" class="LineNr"> 710 </span>  <span class="Conceal">¦</span> <span class="Normal">for</span> <span class="Delimiter">(</span>set&lt;address_element_info&gt;::const_iterator info = p<span class="Delimiter">-&gt;</span>second<span class="Delimiter">.</span>begin<span class="Delimiter">();</span>  info != p<span class="Delimiter">-&gt;</span>second<span class="Delimiter">.</span><a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>  ++info<span class="Delimiter">)</span>
+<span id="L711" class="LineNr"> 711 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='036refcount.cc.html#L50'>increment_refcount</a><span class="Delimiter">(</span>data<span class="Delimiter">.</span>at<span class="Delimiter">(</span>info<span class="Delimiter">-&gt;</span>offset<span class="Delimiter">));</span>
+<span id="L712" class="LineNr"> 712 </span>  <span class="Delimiter">}</span>
+<span id="L713" class="LineNr"> 713 </span><span class="Delimiter">}</span>
+<span id="L714" class="LineNr"> 714 </span>
+<span id="L715" class="LineNr"> 715 </span><span class="Delimiter">:(before &quot;End Decrement Refcounts(canonized_x)&quot;)</span>
+<span id="L716" class="LineNr"> 716 </span><span class="Normal">if</span> <span class="Delimiter">(</span>is_mu_container<span class="Delimiter">(</span>canonized_x<span class="Delimiter">)</span> || is_mu_exclusive_container<span class="Delimiter">(</span>canonized_x<span class="Delimiter">))</span> <span class="Delimiter">{</span>
+<span id="L717" class="LineNr"> 717 </span>  <a href='003trace.cc.html#L167'>trace</a><span class="Delimiter">(</span><span class="Constant">&quot;mem&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;need to read old value of '&quot;</span> &lt;&lt; to_string<span class="Delimiter">(</span>canonized_x<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;' to figure out what refcounts to decrement&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
+<span id="L718" class="LineNr"> 718 </span>  <span class="Comment">// read from canonized_x but without canonizing again</span>
+<span id="L719" class="LineNr"> 719 </span>  reagent<span class="Comment">/*</span><span class="Comment">copy</span><span class="Comment">*/</span> tmp = canonized_x<span class="Delimiter">;</span>
+<span id="L720" class="LineNr"> 720 </span>  tmp<span class="Delimiter">.</span>properties<span class="Delimiter">.</span>push_back<span class="Delimiter">(</span>pair&lt;string<span class="Delimiter">,</span> string_tree*&gt;<span class="Delimiter">(</span><span class="Constant">&quot;raw&quot;</span><span class="Delimiter">,</span> <span class="Constant">NULL</span><span class="Delimiter">));</span>
+<span id="L721" class="LineNr"> 721 </span>  vector&lt;<span class="Normal">double</span>&gt; data = read_memory<span class="Delimiter">(</span>tmp<span class="Delimiter">);</span>
+<span id="L722" class="LineNr"> 722 </span>  <a href='003trace.cc.html#L167'>trace</a><span class="Delimiter">(</span><span class="Constant">&quot;mem&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;done reading old value of '&quot;</span> &lt;&lt; to_string<span class="Delimiter">(</span>canonized_x<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
+<span id="L723" class="LineNr"> 723 </span>  <span class="Normal">const</span> container_metadata&amp; metadata = get<span class="Delimiter">(</span>Container_metadata<span class="Delimiter">,</span> canonized_x<span class="Delimiter">.</span>type<span class="Delimiter">);</span>
+<span id="L724" class="LineNr"> 724 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span>map&lt;set&lt;tag_condition_info&gt;<span class="Delimiter">,</span> set&lt;address_element_info&gt; &gt;::const_iterator p = metadata<span class="Delimiter">.</span><a href='043space.cc.html#L82'>address</a><span class="Delimiter">.</span>begin<span class="Delimiter">();</span>  p != metadata<span class="Delimiter">.</span><a href='043space.cc.html#L82'>address</a><span class="Delimiter">.</span><a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>  ++p<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L725" class="LineNr"> 725 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>!all_match<span class="Delimiter">(</span>data<span class="Delimiter">,</span> p<span class="Delimiter">-&gt;</span>first<span class="Delimiter">))</span> <span class="Identifier">continue</span><span class="Delimiter">;</span>
+<span id="L726" class="LineNr"> 726 </span>  <span class="Conceal">¦</span> <span class="Normal">for</span> <span class="Delimiter">(</span>set&lt;address_element_info&gt;::const_iterator info = p<span class="Delimiter">-&gt;</span>second<span class="Delimiter">.</span>begin<span class="Delimiter">();</span>  info != p<span class="Delimiter">-&gt;</span>second<span class="Delimiter">.</span><a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>  ++info<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L727" class="LineNr"> 727 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">int</span> element_address = <a href='001help.cc.html#L229'>get_or_insert</a><span class="Delimiter">(</span>Memory<span class="Delimiter">,</span> canonized_x<span class="Delimiter">.</span>value + info<span class="Delimiter">-&gt;</span>offset<span class="Delimiter">);</span>
+<span id="L728" class="LineNr"> 728 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> reagent<span class="Comment">/*</span><span class="Comment">local</span><span class="Comment">*/</span> element<span class="Delimiter">;</span>
+<span id="L729" class="LineNr"> 729 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> element<span class="Delimiter">.</span><a href='010vm.cc.html#L65'>set_value</a><span class="Delimiter">(</span>element_address+<span class="Comment">/*</span><span class="Comment">skip refcount</span><span class="Comment">*/</span><span class="Constant">1</span><span class="Delimiter">);</span>
+<span id="L730" class="LineNr"> 730 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> element<span class="Delimiter">.</span>type = <span class="Normal">new</span> type_tree<span class="Delimiter">(</span>*info<span class="Delimiter">-&gt;</span><a href='030container.cc.html#L238'>payload_type</a><span class="Delimiter">);</span>
+<span id="L731" class="LineNr"> 731 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='036refcount.cc.html#L68'>decrement_refcount</a><span class="Delimiter">(</span>element_address<span class="Delimiter">,</span> info<span class="Delimiter">-&gt;</span><a href='030container.cc.html#L238'>payload_type</a><span class="Delimiter">,</span> size_of<span class="Delimiter">(</span>element<span class="Delimiter">)</span>+<span class="Comment">/*</span><span class="Comment">refcount</span><span class="Comment">*/</span><span class="Constant">1</span><span class="Delimiter">);</span>
+<span id="L732" class="LineNr"> 732 </span>  <span class="Conceal">¦</span> <span class="Delimiter">}</span>
+<span id="L733" class="LineNr"> 733 </span>  <span class="Delimiter">}</span>
+<span id="L734" class="LineNr"> 734 </span><span class="Delimiter">}</span>
+<span id="L735" class="LineNr"> 735 </span>
+<span id="L736" class="LineNr"> 736 </span><span class="Delimiter">:(code)</span>
+<span id="L737" class="LineNr"> 737 </span><span class="Normal">bool</span> <a href='036refcount.cc.html#L737'>all_match</a><span class="Delimiter">(</span><span class="Normal">const</span> vector&lt;<span class="Normal">double</span>&gt;&amp; data<span class="Delimiter">,</span> <span class="Normal">const</span> set&lt;tag_condition_info&gt;&amp; conditions<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L738" class="LineNr"> 738 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span>set&lt;tag_condition_info&gt;::const_iterator p = conditions<span class="Delimiter">.</span>begin<span class="Delimiter">();</span>  p != conditions<span class="Delimiter">.</span><a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>  ++p<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L739" class="LineNr"> 739 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>data<span class="Delimiter">.</span>at<span class="Delimiter">(</span>p<span class="Delimiter">-&gt;</span>offset<span class="Delimiter">)</span> != p<span class="Delimiter">-&gt;</span>tag<span class="Delimiter">)</span>
+<span id="L740" class="LineNr"> 740 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Identifier">return</span> <span class="Constant">false</span><span class="Delimiter">;</span>
+<span id="L741" class="LineNr"> 741 </span>  <span class="Delimiter">}</span>
+<span id="L742" class="LineNr"> 742 </span>  <span class="Identifier">return</span> <span class="Constant">true</span><span class="Delimiter">;</span>
+<span id="L743" class="LineNr"> 743 </span><span class="Delimiter">}</span>
+<span id="L744" class="LineNr"> 744 </span>
+<span id="L745" class="LineNr"> 745 </span><span class="Delimiter">:(scenario refcounts_put_container)</span>
+<span id="L746" class="LineNr"> 746 </span><span class="muData">container</span> foo [
+<span id="L747" class="LineNr"> 747 </span>  <span class="Normal">a</span>:bar  <span class="Comment"># contains an address</span>
+<span id="L748" class="LineNr"> 748 </span>]
+<span id="L749" class="LineNr"> 749 </span><span class="muData">container</span> bar [
+<span id="L750" class="LineNr"> 750 </span>  <span class="Normal">x</span>:<a href='043space.cc.html#L82'>address</a>:num
+<span id="L751" class="LineNr"> 751 </span>]
+<span id="L752" class="LineNr"> 752 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
+<span id="L753" class="LineNr"> 753 </span>  <span class="Constant">1</span>:<a href='043space.cc.html#L82'>address</a>:num<span class="Special"> &lt;- </span><span class="Normal">new</span> <span class="Constant">number:type</span>
+<span id="L754" class="LineNr"> 754 </span>  <span class="Constant">2</span>:bar<span class="Special"> &lt;- </span>merge <span class="Constant">1</span>:<a href='043space.cc.html#L82'>address</a>:num
+<span id="L755" class="LineNr"> 755 </span>  <span class="Constant">3</span>:<a href='043space.cc.html#L82'>address</a>:foo<span class="Special"> &lt;- </span><span class="Normal">new</span> <span class="Constant">foo:type</span>
+<span id="L756" class="LineNr"> 756 </span>  *<span class="Constant">3</span>:<a href='043space.cc.html#L82'>address</a>:foo<span class="Special"> &lt;- </span><a href='001help.cc.html#L221'>put</a> *<span class="Constant">3</span>:<a href='043space.cc.html#L82'>address</a>:foo<span class="Delimiter">,</span> <span class="Constant">a:offset</span><span class="Delimiter">,</span> <span class="Constant">2</span>:bar
+<span id="L757" class="LineNr"> 757 </span>]
+<span id="L758" class="LineNr"> 758 </span><span class="traceContains">+run: {1: (&quot;address&quot; &quot;number&quot;)} &lt;- new {number: &quot;type&quot;}</span>
+<span id="L759" class="LineNr"> 759 </span><span class="traceContains">+mem: incrementing refcount of 1000: 0 -&gt; 1</span>
+<span id="L760" class="LineNr"> 760 </span><span class="traceContains">+run: {2: &quot;bar&quot;} &lt;- merge {1: (&quot;address&quot; &quot;number&quot;)}</span>
+<span id="L761" class="LineNr"> 761 </span><span class="traceContains">+mem: incrementing refcount of 1000: 1 -&gt; 2</span>
+<span id="L762" class="LineNr"> 762 </span><span class="traceContains">+run: {3: (&quot;address&quot; &quot;foo&quot;), &quot;lookup&quot;: ()} &lt;- <a href='001help.cc.html#L221'>put</a> {3: (&quot;address&quot; &quot;foo&quot;), &quot;lookup&quot;: ()}, {a: &quot;offset&quot;}, {2: &quot;bar&quot;}</span>
+<span id="L763" class="LineNr"> 763 </span><span class="Comment"># put increments refcount inside container</span>
+<span id="L764" class="LineNr"> 764 </span><span class="traceContains">+mem: incrementing refcount of 1000: 2 -&gt; 3</span>
+<span id="L765" class="LineNr"> 765 </span>
+<span id="L766" class="LineNr"> 766 </span><span class="Delimiter">:(scenario refcounts_put_index_array)</span>
+<span id="L767" class="LineNr"> 767 </span><span class="muData">container</span> bar [
+<span id="L768" class="LineNr"> 768 </span>  <span class="Normal">x</span>:<a href='043space.cc.html#L82'>address</a>:num
+<span id="L769" class="LineNr"> 769 </span>]
+<span id="L770" class="LineNr"> 770 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
+<span id="L771" class="LineNr"> 771 </span>  <span class="Constant">1</span>:<a href='043space.cc.html#L82'>address</a>:num<span class="Special"> &lt;- </span><span class="Normal">new</span> <span class="Constant">number:type</span>
+<span id="L772" class="LineNr"> 772 </span>  <span class="Constant">2</span>:bar<span class="Special"> &lt;- </span>merge <span class="Constant">1</span>:<a href='043space.cc.html#L82'>address</a>:num
+<span id="L773" class="LineNr"> 773 </span>  <span class="Constant">3</span>:<a href='043space.cc.html#L82'>address</a>:array:bar<span class="Special"> &lt;- </span><span class="Normal">new</span> <span class="Constant">bar:type</span><span class="Delimiter">,</span> <span class="Constant">3</span>
+<span id="L774" class="LineNr"> 774 </span>  *<span class="Constant">3</span>:<a href='043space.cc.html#L82'>address</a>:array:bar<span class="Special"> &lt;- </span>put-index *<span class="Constant">3</span>:<a href='043space.cc.html#L82'>address</a>:array:bar<span class="Delimiter">,</span> <span class="Constant">0</span><span class="Delimiter">,</span> <span class="Constant">2</span>:bar
+<span id="L775" class="LineNr"> 775 </span>]
+<span id="L776" class="LineNr"> 776 </span><span class="traceContains">+run: {1: (&quot;address&quot; &quot;number&quot;)} &lt;- new {number: &quot;type&quot;}</span>
+<span id="L777" class="LineNr"> 777 </span><span class="traceContains">+mem: incrementing refcount of 1000: 0 -&gt; 1</span>
+<span id="L778" class="LineNr"> 778 </span><span class="traceContains">+run: {2: &quot;bar&quot;} &lt;- merge {1: (&quot;address&quot; &quot;number&quot;)}</span>
+<span id="L779" class="LineNr"> 779 </span><span class="traceContains">+mem: incrementing refcount of 1000: 1 -&gt; 2</span>
+<span id="L780" class="LineNr"> 780 </span><span class="traceContains">+run: {3: (&quot;address&quot; &quot;array&quot; &quot;bar&quot;), &quot;lookup&quot;: ()} &lt;- put-index {3: (&quot;address&quot; &quot;array&quot; &quot;bar&quot;), &quot;lookup&quot;: ()}, {0: &quot;literal&quot;}, {2: &quot;bar&quot;}</span>
+<span id="L781" class="LineNr"> 781 </span><span class="Comment"># put-index increments refcount inside container</span>
+<span id="L782" class="LineNr"> 782 </span><span class="traceContains">+mem: incrementing refcount of 1000: 2 -&gt; 3</span>
+<span id="L783" class="LineNr"> 783 </span>
+<span id="L784" class="LineNr"> 784 </span><span class="Delimiter">:(scenario refcounts_maybe_convert_container)</span>
+<span id="L785" class="LineNr"> 785 </span><span class="muData">exclusive-container</span> foo [
+<span id="L786" class="LineNr"> 786 </span>  <span class="Normal">a</span>:num
+<span id="L787" class="LineNr"> 787 </span>  <span class="Normal">b</span>:bar  <span class="Comment"># contains an address</span>
+<span id="L788" class="LineNr"> 788 </span>]
+<span id="L789" class="LineNr"> 789 </span><span class="muData">container</span> bar [
+<span id="L790" class="LineNr"> 790 </span>  <span class="Normal">x</span>:<a href='043space.cc.html#L82'>address</a>:num
+<span id="L791" class="LineNr"> 791 </span>]
+<span id="L792" class="LineNr"> 792 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
+<span id="L793" class="LineNr"> 793 </span>  <span class="Constant">1</span>:<a href='043space.cc.html#L82'>address</a>:num<span class="Special"> &lt;- </span><span class="Normal">new</span> <span class="Constant">number:type</span>
+<span id="L794" class="LineNr"> 794 </span>  <span class="Constant">2</span>:bar<span class="Special"> &lt;- </span>merge <span class="Constant">1</span>:<a href='043space.cc.html#L82'>address</a>:num
+<span id="L795" class="LineNr"> 795 </span>  <span class="Constant">3</span>:foo<span class="Special"> &lt;- </span>merge <span class="Constant">1</span>/b<span class="Delimiter">,</span> <span class="Constant">2</span>:bar
+<span id="L796" class="LineNr"> 796 </span>  <span class="Constant">5</span>:bar<span class="Delimiter">,</span> <span class="Constant">6</span>:<span class="Normal">bool</span><span class="Special"> &lt;- </span>maybe-convert <span class="Constant">3</span>:foo<span class="Delimiter">,</span> <span class="Constant">1:variant/b</span>
+<span id="L797" class="LineNr"> 797 </span>]
+<span id="L798" class="LineNr"> 798 </span><span class="traceContains">+run: {1: (&quot;address&quot; &quot;number&quot;)} &lt;- new {number: &quot;type&quot;}</span>
+<span id="L799" class="LineNr"> 799 </span><span class="traceContains">+mem: incrementing refcount of 1000: 0 -&gt; 1</span>
+<span id="L800" class="LineNr"> 800 </span><span class="traceContains">+run: {2: &quot;bar&quot;} &lt;- merge {1: (&quot;address&quot; &quot;number&quot;)}</span>
+<span id="L801" class="LineNr"> 801 </span><span class="traceContains">+mem: incrementing refcount of 1000: 1 -&gt; 2</span>
+<span id="L802" class="LineNr"> 802 </span><span class="traceContains">+run: {3: &quot;foo&quot;} &lt;- merge {1: &quot;literal&quot;, &quot;b&quot;: ()}, {2: &quot;bar&quot;}</span>
+<span id="L803" class="LineNr"> 803 </span><span class="traceContains">+mem: incrementing refcount of 1000: 2 -&gt; 3</span>
+<span id="L804" class="LineNr"> 804 </span><span class="traceContains">+run: {5: &quot;bar&quot;}, {6: &quot;boolean&quot;} &lt;- maybe-convert {3: &quot;foo&quot;}, {1: &quot;variant&quot;, &quot;b&quot;: ()}</span>
+<span id="L805" class="LineNr"> 805 </span><span class="traceContains">+mem: incrementing refcount of 1000: 3 -&gt; 4</span>
+<span id="L806" class="LineNr"> 806 </span>
+<span id="L807" class="LineNr"> 807 </span><span class="Delimiter">:(scenario refcounts_copy_doubly_nested)</span>
+<span id="L808" class="LineNr"> 808 </span><span class="muData">container</span> foo [
+<span id="L809" class="LineNr"> 809 </span>  <span class="Normal">a</span>:bar  <span class="Comment"># no addresses</span>
+<span id="L810" class="LineNr"> 810 </span>  <span class="Normal">b</span>:curr  <span class="Comment"># contains addresses</span>
+<span id="L811" class="LineNr"> 811 </span>]
+<span id="L812" class="LineNr"> 812 </span><span class="muData">container</span> bar [
+<span id="L813" class="LineNr"> 813 </span>  <span class="Normal">x</span>:num
+<span id="L814" class="LineNr"> 814 </span>  <span class="Normal">y</span>:num
+<span id="L815" class="LineNr"> 815 </span>]
+<span id="L816" class="LineNr"> 816 </span><span class="muData">container</span> curr [
+<span id="L817" class="LineNr"> 817 </span>  <span class="Normal">x</span>:num
+<span id="L818" class="LineNr"> 818 </span>  <span class="Normal">y</span>:<a href='043space.cc.html#L82'>address</a>:num  <span class="Comment"># address inside container inside container</span>
+<span id="L819" class="LineNr"> 819 </span>]
+<span id="L820" class="LineNr"> 820 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
+<span id="L821" class="LineNr"> 821 </span>  <span class="Constant">1</span>:<a href='043space.cc.html#L82'>address</a>:num<span class="Special"> &lt;- </span><span class="Normal">new</span> <span class="Constant">number:type</span>
+<span id="L822" class="LineNr"> 822 </span>  <span class="Constant">2</span>:<a href='043space.cc.html#L82'>address</a>:curr<span class="Special"> &lt;- </span><span class="Normal">new</span> <span class="Constant">curr:type</span>
+<span id="L823" class="LineNr"> 823 </span>  *<span class="Constant">2</span>:<a href='043space.cc.html#L82'>address</a>:curr<span class="Special"> &lt;- </span><a href='001help.cc.html#L221'>put</a> *<span class="Constant">2</span>:<a href='043space.cc.html#L82'>address</a>:curr<span class="Delimiter">,</span> <span class="Constant">1:offset/y</span><span class="Delimiter">,</span> <span class="Constant">1</span>:<a href='043space.cc.html#L82'>address</a>:num
+<span id="L824" class="LineNr"> 824 </span>  <span class="Constant">3</span>:<a href='043space.cc.html#L82'>address</a>:foo<span class="Special"> &lt;- </span><span class="Normal">new</span> <span class="Constant">foo:type</span>
+<span id="L825" class="LineNr"> 825 </span>  *<span class="Constant">3</span>:<a href='043space.cc.html#L82'>address</a>:foo<span class="Special"> &lt;- </span><a href='001help.cc.html#L221'>put</a> *<span class="Constant">3</span>:<a href='043space.cc.html#L82'>address</a>:foo<span class="Delimiter">,</span> <span class="Constant">1:offset/b</span><span class="Delimiter">,</span> *<span class="Constant">2</span>:<a href='043space.cc.html#L82'>address</a>:curr
+<span id="L826" class="LineNr"> 826 </span>  <span class="Constant">4</span>:foo<span class="Special"> &lt;- </span>copy *<span class="Constant">3</span>:<a href='043space.cc.html#L82'>address</a>:foo
+<span id="L827" class="LineNr"> 827 </span>]
+<span id="L828" class="LineNr"> 828 </span><span class="traceContains">+transform: compute <a href='043space.cc.html#L82'>address</a> offsets for container foo</span>
+<span id="L829" class="LineNr"> 829 </span><span class="traceContains">+transform: checking container foo, element 1</span>
+<span id="L830" class="LineNr"> 830 </span><span class="traceContains">+transform: <a href='043space.cc.html#L82'>address</a> at offset 3</span>
+<span id="L831" class="LineNr"> 831 </span><span class="traceContains">+run: {1: (&quot;address&quot; &quot;number&quot;)} &lt;- new {number: &quot;type&quot;}</span>
+<span id="L832" class="LineNr"> 832 </span><span class="traceContains">+mem: incrementing refcount of 1000: 0 -&gt; 1</span>
+<span id="L833" class="LineNr"> 833 </span><span class="Comment"># storing an address in a container updates its refcount</span>
+<span id="L834" class="LineNr"> 834 </span><span class="traceContains">+run: {2: (&quot;address&quot; &quot;curr&quot;), &quot;lookup&quot;: ()} &lt;- <a href='001help.cc.html#L221'>put</a> {2: (&quot;address&quot; &quot;curr&quot;), &quot;lookup&quot;: ()}, {1: &quot;offset&quot;, &quot;y&quot;: ()}, {1: (&quot;address&quot; &quot;number&quot;)}</span>
+<span id="L835" class="LineNr"> 835 </span><span class="traceContains">+mem: incrementing refcount of 1000: 1 -&gt; 2</span>
+<span id="L836" class="LineNr"> 836 </span><span class="Comment"># storing a container in a container updates refcounts of any contained addresses</span>
+<span id="L837" class="LineNr"> 837 </span><span class="traceContains">+run: {3: (&quot;address&quot; &quot;foo&quot;), &quot;lookup&quot;: ()} &lt;- <a href='001help.cc.html#L221'>put</a> {3: (&quot;address&quot; &quot;foo&quot;), &quot;lookup&quot;: ()}, {1: &quot;offset&quot;, &quot;b&quot;: ()}, {2: (&quot;address&quot; &quot;curr&quot;), &quot;lookup&quot;: ()}</span>
+<span id="L838" class="LineNr"> 838 </span><span class="traceContains">+mem: incrementing refcount of 1000: 2 -&gt; 3</span>
+<span id="L839" class="LineNr"> 839 </span><span class="Comment"># copying a container containing a container containing an address updates refcount</span>
+<span id="L840" class="LineNr"> 840 </span><span class="traceContains">+run: {4: &quot;foo&quot;} &lt;- copy {3: (&quot;address&quot; &quot;foo&quot;), &quot;lookup&quot;: ()}</span>
+<span id="L841" class="LineNr"> 841 </span><span class="traceContains">+mem: incrementing refcount of 1000: 3 -&gt; 4</span>
+<span id="L842" class="LineNr"> 842 </span>
+<span id="L843" class="LineNr"> 843 </span><span class="Delimiter">:(scenario refcounts_copy_exclusive_container_within_container)</span>
+<span id="L844" class="LineNr"> 844 </span><span class="muData">container</span> foo [
+<span id="L845" class="LineNr"> 845 </span>  <span class="Normal">a</span>:num
+<span id="L846" class="LineNr"> 846 </span>  <span class="Normal">b</span>:bar
+<span id="L847" class="LineNr"> 847 </span>]
+<span id="L848" class="LineNr"> 848 </span><span class="muData">exclusive-container</span> bar [
+<span id="L849" class="LineNr"> 849 </span>  <span class="Normal">x</span>:num
+<span id="L850" class="LineNr"> 850 </span>  <span class="Normal">y</span>:num
+<span id="L851" class="LineNr"> 851 </span>  <span class="Normal">z</span>:<a href='043space.cc.html#L82'>address</a>:num
 <span id="L852" class="LineNr"> 852 </span>]
-<span id="L853" class="LineNr"> 853 </span><span class="muData">exclusive-container</span> bar [
-<span id="L854" class="LineNr"> 854 </span>  <span class="Normal">x</span>:num
-<span id="L855" class="LineNr"> 855 </span>  <span class="Normal">y</span>:num
-<span id="L856" class="LineNr"> 856 </span>  <span class="Normal">z</span>:<a href='043space.cc.html#L82'>address</a>:num
-<span id="L857" class="LineNr"> 857 </span>]
-<span id="L858" class="LineNr"> 858 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
-<span id="L859" class="LineNr"> 859 </span>  <span class="Constant">1</span>:<a href='043space.cc.html#L82'>address</a>:num<span class="Special"> &lt;- </span><span class="Normal">new</span> <span class="Constant">number:type</span>
-<span id="L860" class="LineNr"> 860 </span>  <span class="Constant">2</span>:bar<span class="Special"> &lt;- </span>merge <span class="Constant">0</span>/x<span class="Delimiter">,</span> <span class="Constant">34</span>
-<span id="L861" class="LineNr"> 861 </span>  <span class="Constant">3</span>:foo<span class="Special"> &lt;- </span>merge <span class="Constant">12</span><span class="Delimiter">,</span> <span class="Constant">2</span>:bar
-<span id="L862" class="LineNr"> 862 </span>  <span class="Constant">5</span>:bar<span class="Special"> &lt;- </span>merge <span class="Constant">1</span>/y<span class="Delimiter">,</span> <span class="Constant">35</span>
-<span id="L863" class="LineNr"> 863 </span>  <span class="Constant">6</span>:foo<span class="Special"> &lt;- </span>merge <span class="Constant">13</span><span class="Delimiter">,</span> <span class="Constant">5</span>:bar
-<span id="L864" class="LineNr"> 864 </span>  <span class="Constant">8</span>:bar<span class="Special"> &lt;- </span>merge <span class="Constant">2</span>/z<span class="Delimiter">,</span> <span class="Constant">1</span>:<a href='043space.cc.html#L82'>address</a>:num
-<span id="L865" class="LineNr"> 865 </span>  <span class="Constant">9</span>:foo<span class="Special"> &lt;- </span>merge <span class="Constant">14</span><span class="Delimiter">,</span> <span class="Constant">8</span>:bar
-<span id="L866" class="LineNr"> 866 </span>  <span class="Constant">11</span>:foo<span class="Special"> &lt;- </span>copy <span class="Constant">9</span>:foo
-<span id="L867" class="LineNr"> 867 </span>]
-<span id="L868" class="LineNr"> 868 </span><span class="traceContains">+run: {1: (&quot;address&quot; &quot;number&quot;)} &lt;- new {number: &quot;type&quot;}</span>
-<span id="L869" class="LineNr"> 869 </span><span class="traceContains">+mem: incrementing refcount of 1000: 0 -&gt; 1</span>
-<span id="L870" class="LineNr"> 870 </span><span class="Comment"># no change while merging items of other types</span>
-<span id="L871" class="LineNr"> 871 </span><span class="traceContains">+run: {8: &quot;bar&quot;} &lt;- merge {2: &quot;literal&quot;, &quot;z&quot;: ()}, {1: (&quot;address&quot; &quot;number&quot;)}</span>
-<span id="L872" class="LineNr"> 872 </span><span class="traceContains">+mem: incrementing refcount of 1000: 1 -&gt; 2</span>
-<span id="L873" class="LineNr"> 873 </span><span class="traceContains">+run: {9: &quot;foo&quot;} &lt;- merge {14: &quot;literal&quot;}, {8: &quot;bar&quot;}</span>
-<span id="L874" class="LineNr"> 874 </span><span class="traceContains">+mem: incrementing refcount of 1000: 2 -&gt; 3</span>
-<span id="L875" class="LineNr"> 875 </span><span class="traceContains">+run: {11: &quot;foo&quot;} &lt;- copy {9: &quot;foo&quot;}</span>
-<span id="L876" class="LineNr"> 876 </span><span class="traceContains">+mem: incrementing refcount of 1000: 3 -&gt; 4</span>
-<span id="L877" class="LineNr"> 877 </span>
-<span id="L878" class="LineNr"> 878 </span><span class="Delimiter">:(scenario refcounts_copy_container_within_exclusive_container)</span>
-<span id="L879" class="LineNr"> 879 </span><span class="muData">exclusive-container</span> foo [
-<span id="L880" class="LineNr"> 880 </span>  <span class="Normal">a</span>:num
-<span id="L881" class="LineNr"> 881 </span>  <span class="Normal">b</span>:bar
+<span id="L853" class="LineNr"> 853 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
+<span id="L854" class="LineNr"> 854 </span>  <span class="Constant">1</span>:<a href='043space.cc.html#L82'>address</a>:num<span class="Special"> &lt;- </span><span class="Normal">new</span> <span class="Constant">number:type</span>
+<span id="L855" class="LineNr"> 855 </span>  <span class="Constant">2</span>:bar<span class="Special"> &lt;- </span>merge <span class="Constant">0</span>/x<span class="Delimiter">,</span> <span class="Constant">34</span>
+<span id="L856" class="LineNr"> 856 </span>  <span class="Constant">3</span>:foo<span class="Special"> &lt;- </span>merge <span class="Constant">12</span><span class="Delimiter">,</span> <span class="Constant">2</span>:bar
+<span id="L857" class="LineNr"> 857 </span>  <span class="Constant">5</span>:bar<span class="Special"> &lt;- </span>merge <span class="Constant">1</span>/y<span class="Delimiter">,</span> <span class="Constant">35</span>
+<span id="L858" class="LineNr"> 858 </span>  <span class="Constant">6</span>:foo<span class="Special"> &lt;- </span>merge <span class="Constant">13</span><span class="Delimiter">,</span> <span class="Constant">5</span>:bar
+<span id="L859" class="LineNr"> 859 </span>  <span class="Constant">8</span>:bar<span class="Special"> &lt;- </span>merge <span class="Constant">2</span>/z<span class="Delimiter">,</span> <span class="Constant">1</span>:<a href='043space.cc.html#L82'>address</a>:num
+<span id="L860" class="LineNr"> 860 </span>  <span class="Constant">9</span>:foo<span class="Special"> &lt;- </span>merge <span class="Constant">14</span><span class="Delimiter">,</span> <span class="Constant">8</span>:bar
+<span id="L861" class="LineNr"> 861 </span>  <span class="Constant">11</span>:foo<span class="Special"> &lt;- </span>copy <span class="Constant">9</span>:foo
+<span id="L862" class="LineNr"> 862 </span>]
+<span id="L863" class="LineNr"> 863 </span><span class="traceContains">+run: {1: (&quot;address&quot; &quot;number&quot;)} &lt;- new {number: &quot;type&quot;}</span>
+<span id="L864" class="LineNr"> 864 </span><span class="traceContains">+mem: incrementing refcount of 1000: 0 -&gt; 1</span>
+<span id="L865" class="LineNr"> 865 </span><span class="Comment"># no change while merging items of other types</span>
+<span id="L866" class="LineNr"> 866 </span><span class="traceContains">+run: {8: &quot;bar&quot;} &lt;- merge {2: &quot;literal&quot;, &quot;z&quot;: ()}, {1: (&quot;address&quot; &quot;number&quot;)}</span>
+<span id="L867" class="LineNr"> 867 </span><span class="traceContains">+mem: incrementing refcount of 1000: 1 -&gt; 2</span>
+<span id="L868" class="LineNr"> 868 </span><span class="traceContains">+run: {9: &quot;foo&quot;} &lt;- merge {14: &quot;literal&quot;}, {8: &quot;bar&quot;}</span>
+<span id="L869" class="LineNr"> 869 </span><span class="traceContains">+mem: incrementing refcount of 1000: 2 -&gt; 3</span>
+<span id="L870" class="LineNr"> 870 </span><span class="traceContains">+run: {11: &quot;foo&quot;} &lt;- copy {9: &quot;foo&quot;}</span>
+<span id="L871" class="LineNr"> 871 </span><span class="traceContains">+mem: incrementing refcount of 1000: 3 -&gt; 4</span>
+<span id="L872" class="LineNr"> 872 </span>
+<span id="L873" class="LineNr"> 873 </span><span class="Delimiter">:(scenario refcounts_copy_container_within_exclusive_container)</span>
+<span id="L874" class="LineNr"> 874 </span><span class="muData">exclusive-container</span> foo [
+<span id="L875" class="LineNr"> 875 </span>  <span class="Normal">a</span>:num
+<span id="L876" class="LineNr"> 876 </span>  <span class="Normal">b</span>:bar
+<span id="L877" class="LineNr"> 877 </span>]
+<span id="L878" class="LineNr"> 878 </span><span class="muData">container</span> bar [
+<span id="L879" class="LineNr"> 879 </span>  <span class="Normal">x</span>:num
+<span id="L880" class="LineNr"> 880 </span>  <span class="Normal">y</span>:num
+<span id="L881" class="LineNr"> 881 </span>  <span class="Normal">z</span>:<a href='043space.cc.html#L82'>address</a>:num
 <span id="L882" class="LineNr"> 882 </span>]
-<span id="L883" class="LineNr"> 883 </span><span class="muData">container</span> bar [
-<span id="L884" class="LineNr"> 884 </span>  <span class="Normal">x</span>:num
-<span id="L885" class="LineNr"> 885 </span>  <span class="Normal">y</span>:num
-<span id="L886" class="LineNr"> 886 </span>  <span class="Normal">z</span>:<a href='043space.cc.html#L82'>address</a>:num
-<span id="L887" class="LineNr"> 887 </span>]
-<span id="L888" class="LineNr"> 888 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
-<span id="L889" class="LineNr"> 889 </span>  <span class="Constant">1</span>:<a href='043space.cc.html#L82'>address</a>:num<span class="Special"> &lt;- </span><span class="Normal">new</span> <span class="Constant">number:type</span>
-<span id="L890" class="LineNr"> 890 </span>  <span class="Constant">2</span>:foo<span class="Special"> &lt;- </span>merge <span class="Constant">0</span>/a<span class="Delimiter">,</span> <span class="Constant">34</span>
-<span id="L891" class="LineNr"> 891 </span>  <span class="Constant">6</span>:foo<span class="Special"> &lt;- </span>merge <span class="Constant">0</span>/a<span class="Delimiter">,</span> <span class="Constant">35</span>
-<span id="L892" class="LineNr"> 892 </span>  <span class="Constant">10</span>:bar<span class="Special"> &lt;- </span>merge <span class="Constant">2</span>/x<span class="Delimiter">,</span> <span class="Constant">15</span>/y<span class="Delimiter">,</span> <span class="Constant">1</span>:<a href='043space.cc.html#L82'>address</a>:num
-<span id="L893" class="LineNr"> 893 </span>  <span class="Constant">13</span>:foo<span class="Special"> &lt;- </span>merge <span class="Constant">1</span>/b<span class="Delimiter">,</span> <span class="Constant">10</span>:bar
-<span id="L894" class="LineNr"> 894 </span>  <span class="Constant">17</span>:foo<span class="Special"> &lt;- </span>copy <span class="Constant">13</span>:foo
-<span id="L895" class="LineNr"> 895 </span>]
-<span id="L896" class="LineNr"> 896 </span><span class="traceContains">+run: {1: (&quot;address&quot; &quot;number&quot;)} &lt;- new {number: &quot;type&quot;}</span>
-<span id="L897" class="LineNr"> 897 </span><span class="traceContains">+mem: incrementing refcount of 1000: 0 -&gt; 1</span>
-<span id="L898" class="LineNr"> 898 </span><span class="Comment"># no change while merging items of other types</span>
-<span id="L899" class="LineNr"> 899 </span><span class="traceContains">+run: {10: &quot;bar&quot;} &lt;- merge {2: &quot;literal&quot;, &quot;x&quot;: ()}, {15: &quot;literal&quot;, &quot;y&quot;: ()}, {1: (&quot;address&quot; &quot;number&quot;)}</span>
-<span id="L900" class="LineNr"> 900 </span><span class="traceContains">+mem: incrementing refcount of 1000: 1 -&gt; 2</span>
-<span id="L901" class="LineNr"> 901 </span><span class="traceContains">+run: {13: &quot;foo&quot;} &lt;- merge {1: &quot;literal&quot;, &quot;b&quot;: ()}, {10: &quot;bar&quot;}</span>
-<span id="L902" class="LineNr"> 902 </span><span class="traceContains">+mem: incrementing refcount of 1000: 2 -&gt; 3</span>
-<span id="L903" class="LineNr"> 903 </span><span class="traceContains">+run: {17: &quot;foo&quot;} &lt;- copy {13: &quot;foo&quot;}</span>
-<span id="L904" class="LineNr"> 904 </span><span class="traceContains">+mem: incrementing refcount of 1000: 3 -&gt; 4</span>
-<span id="L905" class="LineNr"> 905 </span>
-<span id="L906" class="LineNr"> 906 </span><span class="Delimiter">:(scenario refcounts_copy_exclusive_container_within_exclusive_container)</span>
-<span id="L907" class="LineNr"> 907 </span><span class="muData">exclusive-container</span> foo [
-<span id="L908" class="LineNr"> 908 </span>  <span class="Normal">a</span>:num
-<span id="L909" class="LineNr"> 909 </span>  <span class="Normal">b</span>:bar
-<span id="L910" class="LineNr"> 910 </span>]
-<span id="L911" class="LineNr"> 911 </span><span class="muData">exclusive-container</span> bar [
-<span id="L912" class="LineNr"> 912 </span>  <span class="Normal">x</span>:num
-<span id="L913" class="LineNr"> 913 </span>  <span class="Normal">y</span>:<a href='043space.cc.html#L82'>address</a>:num
+<span id="L883" class="LineNr"> 883 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
+<span id="L884" class="LineNr"> 884 </span>  <span class="Constant">1</span>:<a href='043space.cc.html#L82'>address</a>:num<span class="Special"> &lt;- </span><span class="Normal">new</span> <span class="Constant">number:type</span>
+<span id="L885" class="LineNr"> 885 </span>  <span class="Constant">2</span>:foo<span class="Special"> &lt;- </span>merge <span class="Constant">0</span>/a<span class="Delimiter">,</span> <span class="Constant">34</span>
+<span id="L886" class="LineNr"> 886 </span>  <span class="Constant">6</span>:foo<span class="Special"> &lt;- </span>merge <span class="Constant">0</span>/a<span class="Delimiter">,</span> <span class="Constant">35</span>
+<span id="L887" class="LineNr"> 887 </span>  <span class="Constant">10</span>:bar<span class="Special"> &lt;- </span>merge <span class="Constant">2</span>/x<span class="Delimiter">,</span> <span class="Constant">15</span>/y<span class="Delimiter">,</span> <span class="Constant">1</span>:<a href='043space.cc.html#L82'>address</a>:num
+<span id="L888" class="LineNr"> 888 </span>  <span class="Constant">13</span>:foo<span class="Special"> &lt;- </span>merge <span class="Constant">1</span>/b<span class="Delimiter">,</span> <span class="Constant">10</span>:bar
+<span id="L889" class="LineNr"> 889 </span>  <span class="Constant">17</span>:foo<span class="Special"> &lt;- </span>copy <span class="Constant">13</span>:foo
+<span id="L890" class="LineNr"> 890 </span>]
+<span id="L891" class="LineNr"> 891 </span><span class="traceContains">+run: {1: (&quot;address&quot; &quot;number&quot;)} &lt;- new {number: &quot;type&quot;}</span>
+<span id="L892" class="LineNr"> 892 </span><span class="traceContains">+mem: incrementing refcount of 1000: 0 -&gt; 1</span>
+<span id="L893" class="LineNr"> 893 </span><span class="Comment"># no change while merging items of other types</span>
+<span id="L894" class="LineNr"> 894 </span><span class="traceContains">+run: {10: &quot;bar&quot;} &lt;- merge {2: &quot;literal&quot;, &quot;x&quot;: ()}, {15: &quot;literal&quot;, &quot;y&quot;: ()}, {1: (&quot;address&quot; &quot;number&quot;)}</span>
+<span id="L895" class="LineNr"> 895 </span><span class="traceContains">+mem: incrementing refcount of 1000: 1 -&gt; 2</span>
+<span id="L896" class="LineNr"> 896 </span><span class="traceContains">+run: {13: &quot;foo&quot;} &lt;- merge {1: &quot;literal&quot;, &quot;b&quot;: ()}, {10: &quot;bar&quot;}</span>
+<span id="L897" class="LineNr"> 897 </span><span class="traceContains">+mem: incrementing refcount of 1000: 2 -&gt; 3</span>
+<span id="L898" class="LineNr"> 898 </span><span class="traceContains">+run: {17: &quot;foo&quot;} &lt;- copy {13: &quot;foo&quot;}</span>
+<span id="L899" class="LineNr"> 899 </span><span class="traceContains">+mem: incrementing refcount of 1000: 3 -&gt; 4</span>
+<span id="L900" class="LineNr"> 900 </span>
+<span id="L901" class="LineNr"> 901 </span><span class="Delimiter">:(scenario refcounts_copy_exclusive_container_within_exclusive_container)</span>
+<span id="L902" class="LineNr"> 902 </span><span class="muData">exclusive-container</span> foo [
+<span id="L903" class="LineNr"> 903 </span>  <span class="Normal">a</span>:num
+<span id="L904" class="LineNr"> 904 </span>  <span class="Normal">b</span>:bar
+<span id="L905" class="LineNr"> 905 </span>]
+<span id="L906" class="LineNr"> 906 </span><span class="muData">exclusive-container</span> bar [
+<span id="L907" class="LineNr"> 907 </span>  <span class="Normal">x</span>:num
+<span id="L908" class="LineNr"> 908 </span>  <span class="Normal">y</span>:<a href='043space.cc.html#L82'>address</a>:num
+<span id="L909" class="LineNr"> 909 </span>]
+<span id="L910" class="LineNr"> 910 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
+<span id="L911" class="LineNr"> 911 </span>  <span class="Constant">1</span>:<a href='043space.cc.html#L82'>address</a>:num<span class="Special"> &lt;- </span><span class="Normal">new</span> <span class="Constant">number:type</span>
+<span id="L912" class="LineNr"> 912 </span>  <span class="Constant">10</span>:foo<span class="Special"> &lt;- </span>merge <span class="Constant">1</span>/b<span class="Delimiter">,</span> <span class="Constant">1</span>/y<span class="Delimiter">,</span> <span class="Constant">1</span>:<a href='043space.cc.html#L82'>address</a>:num
+<span id="L913" class="LineNr"> 913 </span>  <span class="Constant">20</span>:foo<span class="Special"> &lt;- </span>copy <span class="Constant">10</span>:foo
 <span id="L914" class="LineNr"> 914 </span>]
-<span id="L915" class="LineNr"> 915 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
-<span id="L916" class="LineNr"> 916 </span>  <span class="Constant">1</span>:<a href='043space.cc.html#L82'>address</a>:num<span class="Special"> &lt;- </span><span class="Normal">new</span> <span class="Constant">number:type</span>
-<span id="L917" class="LineNr"> 917 </span>  <span class="Constant">10</span>:foo<span class="Special"> &lt;- </span>merge <span class="Constant">1</span>/b<span class="Delimiter">,</span> <span class="Constant">1</span>/y<span class="Delimiter">,</span> <span class="Constant">1</span>:<a href='043space.cc.html#L82'>address</a>:num
-<span id="L918" class="LineNr"> 918 </span>  <span class="Constant">20</span>:foo<span class="Special"> &lt;- </span>copy <span class="Constant">10</span>:foo
-<span id="L919" class="LineNr"> 919 </span>]
-<span id="L920" class="LineNr"> 920 </span><span class="traceContains">+run: {1: (&quot;address&quot; &quot;number&quot;)} &lt;- new {number: &quot;type&quot;}</span>
-<span id="L921" class="LineNr"> 921 </span><span class="traceContains">+mem: incrementing refcount of 1000: 0 -&gt; 1</span>
-<span id="L922" class="LineNr"> 922 </span><span class="Comment"># no change while merging items of other types</span>
-<span id="L923" class="LineNr"> 923 </span><span class="traceContains">+run: {10: &quot;foo&quot;} &lt;- merge {1: &quot;literal&quot;, &quot;b&quot;: ()}, {1: &quot;literal&quot;, &quot;y&quot;: ()}, {1: (&quot;address&quot; &quot;number&quot;)}</span>
-<span id="L924" class="LineNr"> 924 </span><span class="traceContains">+mem: incrementing refcount of 1000: 1 -&gt; 2</span>
-<span id="L925" class="LineNr"> 925 </span><span class="traceContains">+run: {20: &quot;foo&quot;} &lt;- copy {10: &quot;foo&quot;}</span>
-<span id="L926" class="LineNr"> 926 </span><span class="traceContains">+mem: incrementing refcount of 1000: 2 -&gt; 3</span>
-<span id="L927" class="LineNr"> 927 </span>
-<span id="L928" class="LineNr"> 928 </span><span class="Delimiter">:(scenario refcounts_copy_array_within_container)</span>
-<span id="L929" class="LineNr"> 929 </span><span class="muData">container</span> foo [
-<span id="L930" class="LineNr"> 930 </span>  <span class="Normal">x</span>:<a href='043space.cc.html#L82'>address</a>:array:num
-<span id="L931" class="LineNr"> 931 </span>]
-<span id="L932" class="LineNr"> 932 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
-<span id="L933" class="LineNr"> 933 </span>  <span class="Constant">1</span>:<a href='043space.cc.html#L82'>address</a>:array:num<span class="Special"> &lt;- </span><span class="Normal">new</span> <span class="Constant">number:type</span><span class="Delimiter">,</span> <span class="Constant">3</span>
-<span id="L934" class="LineNr"> 934 </span>  <span class="Constant">2</span>:foo<span class="Special"> &lt;- </span>merge <span class="Constant">1</span>:<a href='043space.cc.html#L82'>address</a>:array:num
-<span id="L935" class="LineNr"> 935 </span>  <span class="Constant">3</span>:<a href='043space.cc.html#L82'>address</a>:array:num<span class="Special"> &lt;- </span><span class="Normal">new</span> <span class="Constant">number:type</span><span class="Delimiter">,</span> <span class="Constant">5</span>
-<span id="L936" class="LineNr"> 936 </span>  <span class="Constant">2</span>:foo<span class="Special"> &lt;- </span>merge <span class="Constant">3</span>:<a href='043space.cc.html#L82'>address</a>:array:num
-<span id="L937" class="LineNr"> 937 </span>]
-<span id="L938" class="LineNr"> 938 </span><span class="traceContains">+run: {1: (&quot;address&quot; &quot;array&quot; &quot;number&quot;)} &lt;- new {number: &quot;type&quot;}, {3: &quot;literal&quot;}</span>
-<span id="L939" class="LineNr"> 939 </span><span class="traceContains">+mem: incrementing refcount of 1000: 0 -&gt; 1</span>
-<span id="L940" class="LineNr"> 940 </span><span class="traceContains">+run: {2: &quot;foo&quot;} &lt;- merge {1: (&quot;address&quot; &quot;array&quot; &quot;number&quot;)}</span>
-<span id="L941" class="LineNr"> 941 </span><span class="traceContains">+mem: incrementing refcount of 1000: 1 -&gt; 2</span>
-<span id="L942" class="LineNr"> 942 </span><span class="traceContains">+run: {2: &quot;foo&quot;} &lt;- merge {3: (&quot;address&quot; &quot;array&quot; &quot;number&quot;)}</span>
-<span id="L943" class="LineNr"> 943 </span><span class="traceContains">+mem: decrementing refcount of 1000: 2 -&gt; 1</span>
-<span id="L944" class="LineNr"> 944 </span>
-<span id="L945" class="LineNr"> 945 </span><span class="Delimiter">:(scenario refcounts_copy_address_within_static_array_within_container)</span>
-<span id="L946" class="LineNr"> 946 </span><span class="muData">container</span> foo [
-<span id="L947" class="LineNr"> 947 </span>  <span class="Normal">a</span>:array:bar:<span class="Constant">3</span>
-<span id="L948" class="LineNr"> 948 </span>  <span class="Normal">b</span>:<a href='043space.cc.html#L82'>address</a>:num
-<span id="L949" class="LineNr"> 949 </span>]
-<span id="L950" class="LineNr"> 950 </span><span class="muData">container</span> bar [
-<span id="L951" class="LineNr"> 951 </span>  <span class="Normal">y</span>:num
-<span id="L952" class="LineNr"> 952 </span>  <span class="Normal">z</span>:<a href='043space.cc.html#L82'>address</a>:num
-<span id="L953" class="LineNr"> 953 </span>]
-<span id="L954" class="LineNr"> 954 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
-<span id="L955" class="LineNr"> 955 </span>  <span class="Constant">1</span>:<a href='043space.cc.html#L82'>address</a>:num<span class="Special"> &lt;- </span><span class="Normal">new</span> <span class="Constant">number:type</span>
+<span id="L915" class="LineNr"> 915 </span><span class="traceContains">+run: {1: (&quot;address&quot; &quot;number&quot;)} &lt;- new {number: &quot;type&quot;}</span>
+<span id="L916" class="LineNr"> 916 </span><span class="traceContains">+mem: incrementing refcount of 1000: 0 -&gt; 1</span>
+<span id="L917" class="LineNr"> 917 </span><span class="Comment"># no change while merging items of other types</span>
+<span id="L918" class="LineNr"> 918 </span><span class="traceContains">+run: {10: &quot;foo&quot;} &lt;- merge {1: &quot;literal&quot;, &quot;b&quot;: ()}, {1: &quot;literal&quot;, &quot;y&quot;: ()}, {1: (&quot;address&quot; &quot;number&quot;)}</span>
+<span id="L919" class="LineNr"> 919 </span><span class="traceContains">+mem: incrementing refcount of 1000: 1 -&gt; 2</span>
+<span id="L920" class="LineNr"> 920 </span><span class="traceContains">+run: {20: &quot;foo&quot;} &lt;- copy {10: &quot;foo&quot;}</span>
+<span id="L921" class="LineNr"> 921 </span><span class="traceContains">+mem: incrementing refcount of 1000: 2 -&gt; 3</span>
+<span id="L922" class="LineNr"> 922 </span>
+<span id="L923" class="LineNr"> 923 </span><span class="Delimiter">:(scenario refcounts_copy_array_within_container)</span>
+<span id="L924" class="LineNr"> 924 </span><span class="muData">container</span> foo [
+<span id="L925" class="LineNr"> 925 </span>  <span class="Normal">x</span>:<a href='043space.cc.html#L82'>address</a>:array:num
+<span id="L926" class="LineNr"> 926 </span>]
+<span id="L927" class="LineNr"> 927 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
+<span id="L928" class="LineNr"> 928 </span>  <span class="Constant">1</span>:<a href='043space.cc.html#L82'>address</a>:array:num<span class="Special"> &lt;- </span><span class="Normal">new</span> <span class="Constant">number:type</span><span class="Delimiter">,</span> <span class="Constant">3</span>
+<span id="L929" class="LineNr"> 929 </span>  <span class="Constant">2</span>:foo<span class="Special"> &lt;- </span>merge <span class="Constant">1</span>:<a href='043space.cc.html#L82'>address</a>:array:num
+<span id="L930" class="LineNr"> 930 </span>  <span class="Constant">3</span>:<a href='043space.cc.html#L82'>address</a>:array:num<span class="Special"> &lt;- </span><span class="Normal">new</span> <span class="Constant">number:type</span><span class="Delimiter">,</span> <span class="Constant">5</span>
+<span id="L931" class="LineNr"> 931 </span>  <span class="Constant">2</span>:foo<span class="Special"> &lt;- </span>merge <span class="Constant">3</span>:<a href='043space.cc.html#L82'>address</a>:array:num
+<span id="L932" class="LineNr"> 932 </span>]
+<span id="L933" class="LineNr"> 933 </span><span class="traceContains">+run: {1: (&quot;address&quot; &quot;array&quot; &quot;number&quot;)} &lt;- new {number: &quot;type&quot;}, {3: &quot;literal&quot;}</span>
+<span id="L934" class="LineNr"> 934 </span><span class="traceContains">+mem: incrementing refcount of 1000: 0 -&gt; 1</span>
+<span id="L935" class="LineNr"> 935 </span><span class="traceContains">+run: {2: &quot;foo&quot;} &lt;- merge {1: (&quot;address&quot; &quot;array&quot; &quot;number&quot;)}</span>
+<span id="L936" class="LineNr"> 936 </span><span class="traceContains">+mem: incrementing refcount of 1000: 1 -&gt; 2</span>
+<span id="L937" class="LineNr"> 937 </span><span class="traceContains">+run: {2: &quot;foo&quot;} &lt;- merge {3: (&quot;address&quot; &quot;array&quot; &quot;number&quot;)}</span>
+<span id="L938" class="LineNr"> 938 </span><span class="traceContains">+mem: decrementing refcount of 1000: 2 -&gt; 1</span>
+<span id="L939" class="LineNr"> 939 </span>
+<span id="L940" class="LineNr"> 940 </span><span class="Delimiter">:(scenario refcounts_copy_address_within_static_array_within_container)</span>
+<span id="L941" class="LineNr"> 941 </span><span class="muData">container</span> foo [
+<span id="L942" class="LineNr"> 942 </span>  <span class="Normal">a</span>:array:bar:<span class="Constant">3</span>
+<span id="L943" class="LineNr"> 943 </span>  <span class="Normal">b</span>:<a href='043space.cc.html#L82'>address</a>:num
+<span id="L944" class="LineNr"> 944 </span>]
+<span id="L945" class="LineNr"> 945 </span><span class="muData">container</span> bar [
+<span id="L946" class="LineNr"> 946 </span>  <span class="Normal">y</span>:num
+<span id="L947" class="LineNr"> 947 </span>  <span class="Normal">z</span>:<a href='043space.cc.html#L82'>address</a>:num
+<span id="L948" class="LineNr"> 948 </span>]
+<span id="L949" class="LineNr"> 949 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
+<span id="L950" class="LineNr"> 950 </span>  <span class="Constant">1</span>:<a href='043space.cc.html#L82'>address</a>:num<span class="Special"> &lt;- </span><span class="Normal">new</span> <span class="Constant">number:type</span>
+<span id="L951" class="LineNr"> 951 </span>  <span class="Constant">2</span>:bar<span class="Special"> &lt;- </span>merge <span class="Constant">34</span><span class="Delimiter">,</span> <span class="Constant">1</span>:<a href='043space.cc.html#L82'>address</a>:num
+<span id="L952" class="LineNr"> 952 </span>  <span class="Constant">10</span>:array:bar:<span class="Constant">3</span><span class="Special"> &lt;- </span>create-array
+<span id="L953" class="LineNr"> 953 </span>  put-index <span class="Constant">10</span>:array:bar:<span class="Constant">3</span><span class="Delimiter">,</span> <span class="Constant">1</span><span class="Delimiter">,</span> <span class="Constant">2</span>:bar
+<span id="L954" class="LineNr"> 954 </span>  <span class="Constant">20</span>:foo<span class="Special"> &lt;- </span>merge <span class="Constant">10</span>:array:bar:<span class="Constant">3</span><span class="Delimiter">,</span> <span class="Constant">1</span>:<a href='043space.cc.html#L82'>address</a>:num
+<span id="L955" class="LineNr"> 955 </span>  <span class="Constant">1</span>:<a href='043space.cc.html#L82'>address</a>:num<span class="Special"> &lt;- </span>copy <span class="Constant">0</span>
 <span id="L956" class="LineNr"> 956 </span>  <span class="Constant">2</span>:bar<span class="Special"> &lt;- </span>merge <span class="Constant">34</span><span class="Delimiter">,</span> <span class="Constant">1</span>:<a href='043space.cc.html#L82'>address</a>:num
-<span id="L957" class="LineNr"> 957 </span>  <span class="Constant">10</span>:array:bar:<span class="Constant">3</span><span class="Special"> &lt;- </span>create-array
-<span id="L958" class="LineNr"> 958 </span>  put-index <span class="Constant">10</span>:array:bar:<span class="Constant">3</span><span class="Delimiter">,</span> <span class="Constant">1</span><span class="Delimiter">,</span> <span class="Constant">2</span>:bar
-<span id="L959" class="LineNr"> 959 </span>  <span class="Constant">20</span>:foo<span class="Special"> &lt;- </span>merge <span class="Constant">10</span>:array:bar:<span class="Constant">3</span><span class="Delimiter">,</span> <span class="Constant">1</span>:<a href='043space.cc.html#L82'>address</a>:num
-<span id="L960" class="LineNr"> 960 </span>  <span class="Constant">1</span>:<a href='043space.cc.html#L82'>address</a>:num<span class="Special"> &lt;- </span>copy <span class="Constant">0</span>
-<span id="L961" class="LineNr"> 961 </span>  <span class="Constant">2</span>:bar<span class="Special"> &lt;- </span>merge <span class="Constant">34</span><span class="Delimiter">,</span> <span class="Constant">1</span>:<a href='043space.cc.html#L82'>address</a>:num
-<span id="L962" class="LineNr"> 962 </span>  put-index <span class="Constant">10</span>:array:bar:<span class="Constant">3</span><span class="Delimiter">,</span> <span class="Constant">1</span><span class="Delimiter">,</span> <span class="Constant">2</span>:bar
-<span id="L963" class="LineNr"> 963 </span>  <span class="Constant">20</span>:foo<span class="Special"> &lt;- </span>merge <span class="Constant">10</span>:array:bar:<span class="Constant">3</span><span class="Delimiter">,</span> <span class="Constant">1</span>:<a href='043space.cc.html#L82'>address</a>:num
-<span id="L964" class="LineNr"> 964 </span>]
-<span id="L965" class="LineNr"> 965 </span><span class="traceContains">+run: {1: (&quot;address&quot; &quot;number&quot;)} &lt;- new {number: &quot;type&quot;}</span>
-<span id="L966" class="LineNr"> 966 </span><span class="traceContains">+mem: incrementing refcount of 1000: 0 -&gt; 1</span>
-<span id="L967" class="LineNr"> 967 </span><span class="traceContains">+run: {2: &quot;bar&quot;} &lt;- merge {34: &quot;literal&quot;}, {1: (&quot;address&quot; &quot;number&quot;)}</span>
-<span id="L968" class="LineNr"> 968 </span><span class="traceContains">+mem: incrementing refcount of 1000: 1 -&gt; 2</span>
-<span id="L969" class="LineNr"> 969 </span><span class="traceContains">+run: put-index {10: (&quot;array&quot; &quot;bar&quot; &quot;3&quot;)}, {1: &quot;literal&quot;}, {2: &quot;bar&quot;}</span>
-<span id="L970" class="LineNr"> 970 </span><span class="traceContains">+mem: incrementing refcount of 1000: 2 -&gt; 3</span>
-<span id="L971" class="LineNr"> 971 </span><span class="traceContains">+run: {20: &quot;foo&quot;} &lt;- merge {10: (&quot;array&quot; &quot;bar&quot; &quot;3&quot;)}, {1: (&quot;address&quot; &quot;number&quot;)}</span>
-<span id="L972" class="LineNr"> 972 </span><span class="traceContains">+mem: incrementing refcount of 1000: 3 -&gt; 4</span>
-<span id="L973" class="LineNr"> 973 </span><span class="traceContains">+mem: incrementing refcount of 1000: 4 -&gt; 5</span>
-<span id="L974" class="LineNr"> 974 </span><span class="traceContains">+run: {1: (&quot;address&quot; &quot;number&quot;)} &lt;- copy {0: &quot;literal&quot;}</span>
-<span id="L975" class="LineNr"> 975 </span><span class="traceContains">+mem: decrementing refcount of 1000: 5 -&gt; 4</span>
-<span id="L976" class="LineNr"> 976 </span><span class="traceContains">+run: {2: &quot;bar&quot;} &lt;- merge {34: &quot;literal&quot;}, {1: (&quot;address&quot; &quot;number&quot;)}</span>
-<span id="L977" class="LineNr"> 977 </span><span class="traceContains">+mem: decrementing refcount of 1000: 4 -&gt; 3</span>
-<span id="L978" class="LineNr"> 978 </span><span class="traceContains">+run: put-index {10: (&quot;array&quot; &quot;bar&quot; &quot;3&quot;)}, {1: &quot;literal&quot;}, {2: &quot;bar&quot;}</span>
-<span id="L979" class="LineNr"> 979 </span><span class="traceContains">+mem: decrementing refcount of 1000: 3 -&gt; 2</span>
-<span id="L980" class="LineNr"> 980 </span><span class="traceContains">+run: {20: &quot;foo&quot;} &lt;- merge {10: (&quot;array&quot; &quot;bar&quot; &quot;3&quot;)}, {1: (&quot;address&quot; &quot;number&quot;)}</span>
-<span id="L981" class="LineNr"> 981 </span><span class="traceContains">+mem: decrementing refcount of 1000: 2 -&gt; 1</span>
-<span id="L982" class="LineNr"> 982 </span><span class="traceContains">+mem: decrementing refcount of 1000: 1 -&gt; 0</span>
-<span id="L983" class="LineNr"> 983 </span>
-<span id="L984" class="LineNr"> 984 </span><span class="Delimiter">:(scenario refcounts_handle_exclusive_containers_with_different_tags)</span>
-<span id="L985" class="LineNr"> 985 </span><span class="muData">container</span> foo1 [
-<span id="L986" class="LineNr"> 986 </span>  <span class="Normal">x</span>:<a href='043space.cc.html#L82'>address</a>:num
-<span id="L987" class="LineNr"> 987 </span>  <span class="Normal">y</span>:num
-<span id="L988" class="LineNr"> 988 </span>]
-<span id="L989" class="LineNr"> 989 </span><span class="muData">container</span> foo2 [
-<span id="L990" class="LineNr"> 990 </span>  <span class="Normal">x</span>:num
-<span id="L991" class="LineNr"> 991 </span>  <span class="Normal">y</span>:<a href='043space.cc.html#L82'>address</a>:num
-<span id="L992" class="LineNr"> 992 </span>]
-<span id="L993" class="LineNr"> 993 </span><span class="muData">exclusive-container</span> bar [
-<span id="L994" class="LineNr"> 994 </span>  <span class="Normal">a</span>:foo1
-<span id="L995" class="LineNr"> 995 </span>  <span class="Normal">b</span>:foo2
-<span id="L996" class="LineNr"> 996 </span>]
-<span id="L997" class="LineNr"> 997 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
-<span id="L998" class="LineNr"> 998 </span>  <span class="Constant">1</span>:<a href='043space.cc.html#L82'>address</a>:num<span class="Special"> &lt;- </span>copy <span class="Constant">12000</span>/unsafe  <span class="Comment"># pretend allocation</span>
-<span id="L999" class="LineNr"> 999 </span>  *<span class="Constant">1</span>:<a href='043space.cc.html#L82'>address</a>:num<span class="Special"> &lt;- </span>copy <span class="Constant">34</span>
-<span id="L1000" class="LineNr">1000 </span>  <span class="Constant">2</span>:bar<span class="Special"> &lt;- </span>merge <span class="Constant">0</span>/foo1<span class="Delimiter">,</span> <span class="Constant">1</span>:<a href='043space.cc.html#L82'>address</a>:num<span class="Delimiter">,</span> <span class="Constant">97</span>
-<span id="L1001" class="LineNr">1001 </span>  <span class="Constant">5</span>:<a href='043space.cc.html#L82'>address</a>:num<span class="Special"> &lt;- </span>copy <span class="Constant">13000</span>/unsafe  <span class="Comment"># pretend allocation</span>
-<span id="L1002" class="LineNr">1002 </span>  *<span class="Constant">5</span>:<a href='043space.cc.html#L82'>address</a>:num<span class="Special"> &lt;- </span>copy <span class="Constant">35</span>
-<span id="L1003" class="LineNr">1003 </span>  <span class="Constant">6</span>:bar<span class="Special"> &lt;- </span>merge <span class="Constant">1</span>/foo2<span class="Delimiter">,</span> <span class="Constant">98</span><span class="Delimiter">,</span> <span class="Constant">5</span>:<a href='043space.cc.html#L82'>address</a>:num
-<span id="L1004" class="LineNr">1004 </span>  <span class="Constant">2</span>:bar<span class="Special"> &lt;- </span>copy <span class="Constant">6</span>:bar
-<span id="L1005" class="LineNr">1005 </span>]
-<span id="L1006" class="LineNr">1006 </span><span class="traceContains">+run: {2: &quot;bar&quot;} &lt;- merge {0: &quot;literal&quot;, &quot;foo1&quot;: ()}, {1: (&quot;address&quot; &quot;number&quot;)}, {97: &quot;literal&quot;}</span>
-<span id="L1007" class="LineNr">1007 </span><span class="traceContains">+mem: incrementing refcount of 12000: 1 -&gt; 2</span>
-<span id="L1008" class="LineNr">1008 </span><span class="traceContains">+run: {6: &quot;bar&quot;} &lt;- merge {1: &quot;literal&quot;, &quot;foo2&quot;: ()}, {98: &quot;literal&quot;}, {5: (&quot;address&quot; &quot;number&quot;)}</span>
-<span id="L1009" class="LineNr">1009 </span><span class="traceContains">+mem: incrementing refcount of 13000: 1 -&gt; 2</span>
-<span id="L1010" class="LineNr">1010 </span><span class="traceContains">+run: {2: &quot;bar&quot;} &lt;- copy {6: &quot;bar&quot;}</span>
-<span id="L1011" class="LineNr">1011 </span><span class="traceContains">+mem: incrementing refcount of 13000: 2 -&gt; 3</span>
-<span id="L1012" class="LineNr">1012 </span><span class="traceContains">+mem: decrementing refcount of 12000: 2 -&gt; 1</span>
-<span id="L1013" class="LineNr">1013 </span>
-<span id="L1014" class="LineNr">1014 </span><span class="Delimiter">:(code)</span>
-<span id="L1015" class="LineNr">1015 </span><span class="Normal">bool</span> is_mu_container<span class="Delimiter">(</span><span class="Normal">const</span> reagent&amp; r<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L1016" class="LineNr">1016 </span>  <span class="Identifier">return</span> is_mu_container<span class="Delimiter">(</span>r<span class="Delimiter">.</span>type<span class="Delimiter">);</span>
-<span id="L1017" class="LineNr">1017 </span><span class="Delimiter">}</span>
-<span id="L1018" class="LineNr">1018 </span><span class="Normal">bool</span> is_mu_container<span class="Delimiter">(</span><span class="Normal">const</span> type_tree* type<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L1019" class="LineNr">1019 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!type<span class="Delimiter">)</span> <span class="Identifier">return</span> <span class="Constant">false</span><span class="Delimiter">;</span>
-<span id="L1020" class="LineNr">1020 </span>  <span class="Comment">// End is_mu_container(type) Special-cases</span>
-<span id="L1021" class="LineNr">1021 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>type<span class="Delimiter">-&gt;</span>value == <span class="Constant">0</span><span class="Delimiter">)</span> <span class="Identifier">return</span> <span class="Constant">false</span><span class="Delimiter">;</span>
-<span id="L1022" class="LineNr">1022 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!contains_key<span class="Delimiter">(</span>Type<span class="Delimiter">,</span> type<span class="Delimiter">-&gt;</span>value<span class="Delimiter">))</span> <span class="Identifier">return</span> <span class="Constant">false</span><span class="Delimiter">;</span>  <span class="Comment">// error raised elsewhere</span>
-<span id="L1023" class="LineNr">1023 </span>  type_info&amp; info = get<span class="Delimiter">(</span>Type<span class="Delimiter">,</span> type<span class="Delimiter">-&gt;</span>value<span class="Delimiter">);</span>
-<span id="L1024" class="LineNr">1024 </span>  <span class="Identifier">return</span> info<span class="Delimiter">.</span>kind == <a href='010vm.cc.html#L173'>CONTAINER</a><span class="Delimiter">;</span>
-<span id="L1025" class="LineNr">1025 </span><span class="Delimiter">}</span>
-<span id="L1026" class="LineNr">1026 </span>
-<span id="L1027" class="LineNr">1027 </span><span class="Normal">bool</span> is_mu_exclusive_container<span class="Delimiter">(</span><span class="Normal">const</span> reagent&amp; r<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L1028" class="LineNr">1028 </span>  <span class="Identifier">return</span> is_mu_exclusive_container<span class="Delimiter">(</span>r<span class="Delimiter">.</span>type<span class="Delimiter">);</span>
-<span id="L1029" class="LineNr">1029 </span><span class="Delimiter">}</span>
-<span id="L1030" class="LineNr">1030 </span><span class="Normal">bool</span> is_mu_exclusive_container<span class="Delimiter">(</span><span class="Normal">const</span> type_tree* type<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L1031" class="LineNr">1031 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!type<span class="Delimiter">)</span> <span class="Identifier">return</span> <span class="Constant">false</span><span class="Delimiter">;</span>
-<span id="L1032" class="LineNr">1032 </span>  <span class="Comment">// End is_mu_exclusive_container(type) Special-cases</span>
-<span id="L1033" class="LineNr">1033 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>type<span class="Delimiter">-&gt;</span>value == <span class="Constant">0</span><span class="Delimiter">)</span> <span class="Identifier">return</span> <span class="Constant">false</span><span class="Delimiter">;</span>
-<span id="L1034" class="LineNr">1034 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!contains_key<span class="Delimiter">(</span>Type<span class="Delimiter">,</span> type<span class="Delimiter">-&gt;</span>value<span class="Delimiter">))</span> <span class="Identifier">return</span> <span class="Constant">false</span><span class="Delimiter">;</span>  <span class="Comment">// error raised elsewhere</span>
-<span id="L1035" class="LineNr">1035 </span>  type_info&amp; info = get<span class="Delimiter">(</span>Type<span class="Delimiter">,</span> type<span class="Delimiter">-&gt;</span>value<span class="Delimiter">);</span>
-<span id="L1036" class="LineNr">1036 </span>  <span class="Identifier">return</span> info<span class="Delimiter">.</span>kind == <a href='010vm.cc.html#L174'>EXCLUSIVE_CONTAINER</a><span class="Delimiter">;</span>
-<span id="L1037" class="LineNr">1037 </span><span class="Delimiter">}</span>
-<span id="L1038" class="LineNr">1038 </span>
-<span id="L1039" class="LineNr">1039 </span><span class="SalientComment">//:: Counters for trying to understand where Mu programs are spending time</span>
-<span id="L1040" class="LineNr">1040 </span><span class="SalientComment">//:: updating refcounts.</span>
-<span id="L1041" class="LineNr">1041 </span>
-<span id="L1042" class="LineNr">1042 </span><span class="Delimiter">:(before &quot;End Globals&quot;)</span>
-<span id="L1043" class="LineNr">1043 </span><span class="Normal">int</span> Total_refcount_updates = <span class="Constant">0</span><span class="Delimiter">;</span>
-<span id="L1044" class="LineNr">1044 </span>map&lt;recipe_ordinal<span class="Delimiter">,</span> map&lt;<span class="Comment">/*</span><span class="Comment">step index</span><span class="Comment">*/</span><span class="Normal">int</span><span class="Delimiter">,</span> <span class="Comment">/*</span><span class="Comment">num refcount updates</span><span class="Comment">*/</span><span class="Normal">int</span>&gt; &gt; Num_refcount_updates<span class="Delimiter">;</span>
-<span id="L1045" class="LineNr">1045 </span><span class="Delimiter">:(after &quot;Running One Instruction&quot;)</span>
-<span id="L1046" class="LineNr">1046 </span><span class="Normal">int</span> initial_num_refcount_updates = Total_refcount_updates<span class="Delimiter">;</span>
-<span id="L1047" class="LineNr">1047 </span><span class="Delimiter">:(before &quot;End Running One Instruction&quot;)</span>
-<span id="L1048" class="LineNr">1048 </span><span class="Normal">if</span> <span class="Delimiter">(</span>Run_profiler<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L1049" class="LineNr">1049 </span>  Num_refcount_updates[current_call<span class="Delimiter">().</span>running_recipe][current_call<span class="Delimiter">().</span>running_step_index]
-<span id="L1050" class="LineNr">1050 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> += <span class="Delimiter">(</span>Total_refcount_updates - initial_num_refcount_updates<span class="Delimiter">);</span>
-<span id="L1051" class="LineNr">1051 </span>  initial_num_refcount_updates = Total_refcount_updates<span class="Delimiter">;</span>
-<span id="L1052" class="LineNr">1052 </span><span class="Delimiter">}</span>
-<span id="L1053" class="LineNr">1053 </span><span class="Delimiter">:(before &quot;End Non-primitive Call(caller_frame)&quot;)</span>
-<span id="L1054" class="LineNr">1054 </span><span class="Normal">if</span> <span class="Delimiter">(</span>Run_profiler<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L1055" class="LineNr">1055 </span>  Num_refcount_updates[caller_frame<span class="Delimiter">.</span>running_recipe][caller_frame<span class="Delimiter">.</span>running_step_index]
-<span id="L1056" class="LineNr">1056 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> += <span class="Delimiter">(</span>Total_refcount_updates - initial_num_refcount_updates<span class="Delimiter">);</span>
-<span id="L1057" class="LineNr">1057 </span>  initial_num_refcount_updates = Total_refcount_updates<span class="Delimiter">;</span>
-<span id="L1058" class="LineNr">1058 </span><span class="Delimiter">}</span>
-<span id="L1059" class="LineNr">1059 </span><span class="Delimiter">:(after &quot;Begin Return&quot;)</span>
-<span id="L1060" class="LineNr">1060 </span><span class="Normal">if</span> <span class="Delimiter">(</span>Run_profiler<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L1061" class="LineNr">1061 </span>  Num_refcount_updates[current_call<span class="Delimiter">().</span>running_recipe][current_call<span class="Delimiter">().</span>running_step_index]
-<span id="L1062" class="LineNr">1062 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> += <span class="Delimiter">(</span>Total_refcount_updates - initial_num_refcount_updates<span class="Delimiter">);</span>
-<span id="L1063" class="LineNr">1063 </span>  initial_num_refcount_updates = Total_refcount_updates<span class="Delimiter">;</span>
-<span id="L1064" class="LineNr">1064 </span><span class="Delimiter">}</span>
-<span id="L1065" class="LineNr">1065 </span><span class="Delimiter">:(before &quot;End dump_profile&quot;)</span>
-<span id="L1066" class="LineNr">1066 </span>fout<span class="Delimiter">.</span>open<span class="Delimiter">(</span><span class="Constant">&quot;profile.refcounts&quot;</span><span class="Delimiter">);</span>
-<span id="L1067" class="LineNr">1067 </span><span class="Normal">if</span> <span class="Delimiter">(</span>fout<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L1068" class="LineNr">1068 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span>map&lt;recipe_ordinal<span class="Delimiter">,</span> recipe&gt;::iterator p = Recipe<span class="Delimiter">.</span>begin<span class="Delimiter">();</span>  p != Recipe<span class="Delimiter">.</span><a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>  ++p<span class="Delimiter">)</span>
-<span id="L1069" class="LineNr">1069 </span>  <span class="Conceal">¦</span> <a href='036refcount.cc.html#L1073'>dump_recipe_profile</a><span class="Delimiter">(</span>p<span class="Delimiter">-&gt;</span>first<span class="Delimiter">,</span> p<span class="Delimiter">-&gt;</span>second<span class="Delimiter">,</span> fout<span class="Delimiter">);</span>
-<span id="L1070" class="LineNr">1070 </span><span class="Delimiter">}</span>
-<span id="L1071" class="LineNr">1071 </span>fout<span class="Delimiter">.</span>close<span class="Delimiter">();</span>
-<span id="L1072" class="LineNr">1072 </span><span class="Delimiter">:(code)</span>
-<span id="L1073" class="LineNr">1073 </span><span class="Normal">void</span> <a href='036refcount.cc.html#L1073'>dump_recipe_profile</a><span class="Delimiter">(</span><a href='010vm.cc.html#L14'>recipe_ordinal</a> ridx<span class="Delimiter">,</span> <span class="Normal">const</span> recipe&amp; r<span class="Delimiter">,</span> ostream&amp; out<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L1074" class="LineNr">1074 </span>  out &lt;&lt; <span class="Constant">&quot;recipe &quot;</span> &lt;&lt; r<span class="Delimiter">.</span>name &lt;&lt; <span class="Constant">&quot; [</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span><span class="Delimiter">;</span>
-<span id="L1075" class="LineNr">1075 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> i = <span class="Constant">0</span><span class="Delimiter">;</span>  i &lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>r<span class="Delimiter">.</span>steps<span class="Delimiter">);</span>  ++i<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L1076" class="LineNr">1076 </span>  <span class="Conceal">¦</span> out &lt;&lt; std::setw<span class="Delimiter">(</span><span class="Constant">6</span><span class="Delimiter">)</span> &lt;&lt; Num_refcount_updates[ridx][i] &lt;&lt; <span class="Constant">' '</span> &lt;&lt; <a href='028call_return.cc.html#L163'>to_string</a><span class="Delimiter">(</span>r<span class="Delimiter">.</span>steps<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">))</span> &lt;&lt; <span class="cSpecial">'\n'</span><span class="Delimiter">;</span>
-<span id="L1077" class="LineNr">1077 </span>  <span class="Delimiter">}</span>
-<span id="L1078" class="LineNr">1078 </span>  out &lt;&lt; <span class="Constant">&quot;]</span><span class="cSpecial">\n\n</span><span class="Constant">&quot;</span><span class="Delimiter">;</span>
-<span id="L1079" class="LineNr">1079 </span><span class="Delimiter">}</span>
+<span id="L957" class="LineNr"> 957 </span>  put-index <span class="Constant">10</span>:array:bar:<span class="Constant">3</span><span class="Delimiter">,</span> <span class="Constant">1</span><span class="Delimiter">,</span> <span class="Constant">2</span>:bar
+<span id="L958" class="LineNr"> 958 </span>  <span class="Constant">20</span>:foo<span class="Special"> &lt;- </span>merge <span class="Constant">10</span>:array:bar:<span class="Constant">3</span><span class="Delimiter">,</span> <span class="Constant">1</span>:<a href='043space.cc.html#L82'>address</a>:num
+<span id="L959" class="LineNr"> 959 </span>]
+<span id="L960" class="LineNr"> 960 </span><span class="traceContains">+run: {1: (&quot;address&quot; &quot;number&quot;)} &lt;- new {number: &quot;type&quot;}</span>
+<span id="L961" class="LineNr"> 961 </span><span class="traceContains">+mem: incrementing refcount of 1000: 0 -&gt; 1</span>
+<span id="L962" class="LineNr"> 962 </span><span class="traceContains">+run: {2: &quot;bar&quot;} &lt;- merge {34: &quot;literal&quot;}, {1: (&quot;address&quot; &quot;number&quot;)}</span>
+<span id="L963" class="LineNr"> 963 </span><span class="traceContains">+mem: incrementing refcount of 1000: 1 -&gt; 2</span>
+<span id="L964" class="LineNr"> 964 </span><span class="traceContains">+run: put-index {10: (&quot;array&quot; &quot;bar&quot; &quot;3&quot;)}, {1: &quot;literal&quot;}, {2: &quot;bar&quot;}</span>
+<span id="L965" class="LineNr"> 965 </span><span class="traceContains">+mem: incrementing refcount of 1000: 2 -&gt; 3</span>
+<span id="L966" class="LineNr"> 966 </span><span class="traceContains">+run: {20: &quot;foo&quot;} &lt;- merge {10: (&quot;array&quot; &quot;bar&quot; &quot;3&quot;)}, {1: (&quot;address&quot; &quot;number&quot;)}</span>
+<span id="L967" class="LineNr"> 967 </span><span class="traceContains">+mem: incrementing refcount of 1000: 3 -&gt; 4</span>
+<span id="L968" class="LineNr"> 968 </span><span class="traceContains">+mem: incrementing refcount of 1000: 4 -&gt; 5</span>
+<span id="L969" class="LineNr"> 969 </span><span class="traceContains">+run: {1: (&quot;address&quot; &quot;number&quot;)} &lt;- copy {0: &quot;literal&quot;}</span>
+<span id="L970" class="LineNr"> 970 </span><span class="traceContains">+mem: decrementing refcount of 1000: 5 -&gt; 4</span>
+<span id="L971" class="LineNr"> 971 </span><span class="traceContains">+run: {2: &quot;bar&quot;} &lt;- merge {34: &quot;literal&quot;}, {1: (&quot;address&quot; &quot;number&quot;)}</span>
+<span id="L972" class="LineNr"> 972 </span><span class="traceContains">+mem: decrementing refcount of 1000: 4 -&gt; 3</span>
+<span id="L973" class="LineNr"> 973 </span><span class="traceContains">+run: put-index {10: (&quot;array&quot; &quot;bar&quot; &quot;3&quot;)}, {1: &quot;literal&quot;}, {2: &quot;bar&quot;}</span>
+<span id="L974" class="LineNr"> 974 </span><span class="traceContains">+mem: decrementing refcount of 1000: 3 -&gt; 2</span>
+<span id="L975" class="LineNr"> 975 </span><span class="traceContains">+run: {20: &quot;foo&quot;} &lt;- merge {10: (&quot;array&quot; &quot;bar&quot; &quot;3&quot;)}, {1: (&quot;address&quot; &quot;number&quot;)}</span>
+<span id="L976" class="LineNr"> 976 </span><span class="traceContains">+mem: decrementing refcount of 1000: 2 -&gt; 1</span>
+<span id="L977" class="LineNr"> 977 </span><span class="traceContains">+mem: decrementing refcount of 1000: 1 -&gt; 0</span>
+<span id="L978" class="LineNr"> 978 </span>
+<span id="L979" class="LineNr"> 979 </span><span class="Delimiter">:(scenario refcounts_handle_exclusive_containers_with_different_tags)</span>
+<span id="L980" class="LineNr"> 980 </span><span class="muData">container</span> foo1 [
+<span id="L981" class="LineNr"> 981 </span>  <span class="Normal">x</span>:<a href='043space.cc.html#L82'>address</a>:num
+<span id="L982" class="LineNr"> 982 </span>  <span class="Normal">y</span>:num
+<span id="L983" class="LineNr"> 983 </span>]
+<span id="L984" class="LineNr"> 984 </span><span class="muData">container</span> foo2 [
+<span id="L985" class="LineNr"> 985 </span>  <span class="Normal">x</span>:num
+<span id="L986" class="LineNr"> 986 </span>  <span class="Normal">y</span>:<a href='043space.cc.html#L82'>address</a>:num
+<span id="L987" class="LineNr"> 987 </span>]
+<span id="L988" class="LineNr"> 988 </span><span class="muData">exclusive-container</span> bar [
+<span id="L989" class="LineNr"> 989 </span>  <span class="Normal">a</span>:foo1
+<span id="L990" class="LineNr"> 990 </span>  <span class="Normal">b</span>:foo2
+<span id="L991" class="LineNr"> 991 </span>]
+<span id="L992" class="LineNr"> 992 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
+<span id="L993" class="LineNr"> 993 </span>  <span class="Constant">1</span>:<a href='043space.cc.html#L82'>address</a>:num<span class="Special"> &lt;- </span>copy <span class="Constant">12000</span>/unsafe  <span class="Comment"># pretend allocation</span>
+<span id="L994" class="LineNr"> 994 </span>  *<span class="Constant">1</span>:<a href='043space.cc.html#L82'>address</a>:num<span class="Special"> &lt;- </span>copy <span class="Constant">34</span>
+<span id="L995" class="LineNr"> 995 </span>  <span class="Constant">2</span>:bar<span class="Special"> &lt;- </span>merge <span class="Constant">0</span>/foo1<span class="Delimiter">,</span> <span class="Constant">1</span>:<a href='043space.cc.html#L82'>address</a>:num<span class="Delimiter">,</span> <span class="Constant">97</span>
+<span id="L996" class="LineNr"> 996 </span>  <span class="Constant">5</span>:<a href='043space.cc.html#L82'>address</a>:num<span class="Special"> &lt;- </span>copy <span class="Constant">13000</span>/unsafe  <span class="Comment"># pretend allocation</span>
+<span id="L997" class="LineNr"> 997 </span>  *<span class="Constant">5</span>:<a href='043space.cc.html#L82'>address</a>:num<span class="Special"> &lt;- </span>copy <span class="Constant">35</span>
+<span id="L998" class="LineNr"> 998 </span>  <span class="Constant">6</span>:bar<span class="Special"> &lt;- </span>merge <span class="Constant">1</span>/foo2<span class="Delimiter">,</span> <span class="Constant">98</span><span class="Delimiter">,</span> <span class="Constant">5</span>:<a href='043space.cc.html#L82'>address</a>:num
+<span id="L999" class="LineNr"> 999 </span>  <span class="Constant">2</span>:bar<span class="Special"> &lt;- </span>copy <span class="Constant">6</span>:bar
+<span id="L1000" class="LineNr">1000 </span>]
+<span id="L1001" class="LineNr">1001 </span><span class="traceContains">+run: {2: &quot;bar&quot;} &lt;- merge {0: &quot;literal&quot;, &quot;foo1&quot;: ()}, {1: (&quot;address&quot; &quot;number&quot;)}, {97: &quot;literal&quot;}</span>
+<span id="L1002" class="LineNr">1002 </span><span class="traceContains">+mem: incrementing refcount of 12000: 1 -&gt; 2</span>
+<span id="L1003" class="LineNr">1003 </span><span class="traceContains">+run: {6: &quot;bar&quot;} &lt;- merge {1: &quot;literal&quot;, &quot;foo2&quot;: ()}, {98: &quot;literal&quot;}, {5: (&quot;address&quot; &quot;number&quot;)}</span>
+<span id="L1004" class="LineNr">1004 </span><span class="traceContains">+mem: incrementing refcount of 13000: 1 -&gt; 2</span>
+<span id="L1005" class="LineNr">1005 </span><span class="traceContains">+run: {2: &quot;bar&quot;} &lt;- copy {6: &quot;bar&quot;}</span>
+<span id="L1006" class="LineNr">1006 </span><span class="traceContains">+mem: incrementing refcount of 13000: 2 -&gt; 3</span>
+<span id="L1007" class="LineNr">1007 </span><span class="traceContains">+mem: decrementing refcount of 12000: 2 -&gt; 1</span>
+<span id="L1008" class="LineNr">1008 </span>
+<span id="L1009" class="LineNr">1009 </span><span class="Delimiter">:(code)</span>
+<span id="L1010" class="LineNr">1010 </span><span class="Normal">bool</span> is_mu_container<span class="Delimiter">(</span><span class="Normal">const</span> reagent&amp; r<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L1011" class="LineNr">1011 </span>  <span class="Identifier">return</span> is_mu_container<span class="Delimiter">(</span>r<span class="Delimiter">.</span>type<span class="Delimiter">);</span>
+<span id="L1012" class="LineNr">1012 </span><span class="Delimiter">}</span>
+<span id="L1013" class="LineNr">1013 </span><span class="Normal">bool</span> is_mu_container<span class="Delimiter">(</span><span class="Normal">const</span> type_tree* type<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L1014" class="LineNr">1014 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!type<span class="Delimiter">)</span> <span class="Identifier">return</span> <span class="Constant">false</span><span class="Delimiter">;</span>
+<span id="L1015" class="LineNr">1015 </span>  <span class="Comment">// End is_mu_container(type) Special-cases</span>
+<span id="L1016" class="LineNr">1016 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>type<span class="Delimiter">-&gt;</span>value == <span class="Constant">0</span><span class="Delimiter">)</span> <span class="Identifier">return</span> <span class="Constant">false</span><span class="Delimiter">;</span>
+<span id="L1017" class="LineNr">1017 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!contains_key<span class="Delimiter">(</span>Type<span class="Delimiter">,</span> type<span class="Delimiter">-&gt;</span>value<span class="Delimiter">))</span> <span class="Identifier">return</span> <span class="Constant">false</span><span class="Delimiter">;</span>  <span class="Comment">// error raised elsewhere</span>
+<span id="L1018" class="LineNr">1018 </span>  type_info&amp; info = get<span class="Delimiter">(</span>Type<span class="Delimiter">,</span> type<span class="Delimiter">-&gt;</span>value<span class="Delimiter">);</span>
+<span id="L1019" class="LineNr">1019 </span>  <span class="Identifier">return</span> info<span class="Delimiter">.</span>kind == <a href='010vm.cc.html#L173'>CONTAINER</a><span class="Delimiter">;</span>
+<span id="L1020" class="LineNr">1020 </span><span class="Delimiter">}</span>
+<span id="L1021" class="LineNr">1021 </span>
+<span id="L1022" class="LineNr">1022 </span><span class="Normal">bool</span> is_mu_exclusive_container<span class="Delimiter">(</span><span class="Normal">const</span> reagent&amp; r<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L1023" class="LineNr">1023 </span>  <span class="Identifier">return</span> is_mu_exclusive_container<span class="Delimiter">(</span>r<span class="Delimiter">.</span>type<span class="Delimiter">);</span>
+<span id="L1024" class="LineNr">1024 </span><span class="Delimiter">}</span>
+<span id="L1025" class="LineNr">1025 </span><span class="Normal">bool</span> is_mu_exclusive_container<span class="Delimiter">(</span><span class="Normal">const</span> type_tree* type<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L1026" class="LineNr">1026 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!type<span class="Delimiter">)</span> <span class="Identifier">return</span> <span class="Constant">false</span><span class="Delimiter">;</span>
+<span id="L1027" class="LineNr">1027 </span>  <span class="Comment">// End is_mu_exclusive_container(type) Special-cases</span>
+<span id="L1028" class="LineNr">1028 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>type<span class="Delimiter">-&gt;</span>value == <span class="Constant">0</span><span class="Delimiter">)</span> <span class="Identifier">return</span> <span class="Constant">false</span><span class="Delimiter">;</span>
+<span id="L1029" class="LineNr">1029 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!contains_key<span class="Delimiter">(</span>Type<span class="Delimiter">,</span> type<span class="Delimiter">-&gt;</span>value<span class="Delimiter">))</span> <span class="Identifier">return</span> <span class="Constant">false</span><span class="Delimiter">;</span>  <span class="Comment">// error raised elsewhere</span>
+<span id="L1030" class="LineNr">1030 </span>  type_info&amp; info = get<span class="Delimiter">(</span>Type<span class="Delimiter">,</span> type<span class="Delimiter">-&gt;</span>value<span class="Delimiter">);</span>
+<span id="L1031" class="LineNr">1031 </span>  <span class="Identifier">return</span> info<span class="Delimiter">.</span>kind == <a href='010vm.cc.html#L174'>EXCLUSIVE_CONTAINER</a><span class="Delimiter">;</span>
+<span id="L1032" class="LineNr">1032 </span><span class="Delimiter">}</span>
+<span id="L1033" class="LineNr">1033 </span>
+<span id="L1034" class="LineNr">1034 </span><span class="SalientComment">//:: Counters for trying to understand where Mu programs are spending time</span>
+<span id="L1035" class="LineNr">1035 </span><span class="SalientComment">//:: updating refcounts.</span>
+<span id="L1036" class="LineNr">1036 </span>
+<span id="L1037" class="LineNr">1037 </span><span class="Delimiter">:(before &quot;End Globals&quot;)</span>
+<span id="L1038" class="LineNr">1038 </span><span class="Normal">int</span> Total_refcount_updates = <span class="Constant">0</span><span class="Delimiter">;</span>
+<span id="L1039" class="LineNr">1039 </span>map&lt;recipe_ordinal<span class="Delimiter">,</span> map&lt;<span class="Comment">/*</span><span class="Comment">step index</span><span class="Comment">*/</span><span class="Normal">int</span><span class="Delimiter">,</span> <span class="Comment">/*</span><span class="Comment">num refcount updates</span><span class="Comment">*/</span><span class="Normal">int</span>&gt; &gt; Num_refcount_updates<span class="Delimiter">;</span>
+<span id="L1040" class="LineNr">1040 </span><span class="Delimiter">:(after &quot;Running One Instruction&quot;)</span>
+<span id="L1041" class="LineNr">1041 </span><span class="Normal">int</span> initial_num_refcount_updates = Total_refcount_updates<span class="Delimiter">;</span>
+<span id="L1042" class="LineNr">1042 </span><span class="Delimiter">:(before &quot;End Running One Instruction&quot;)</span>
+<span id="L1043" class="LineNr">1043 </span><span class="Normal">if</span> <span class="Delimiter">(</span>Run_profiler<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L1044" class="LineNr">1044 </span>  Num_refcount_updates[current_call<span class="Delimiter">().</span>running_recipe][current_call<span class="Delimiter">().</span>running_step_index]
+<span id="L1045" class="LineNr">1045 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> += <span class="Delimiter">(</span>Total_refcount_updates - initial_num_refcount_updates<span class="Delimiter">);</span>
+<span id="L1046" class="LineNr">1046 </span>  initial_num_refcount_updates = Total_refcount_updates<span class="Delimiter">;</span>
+<span id="L1047" class="LineNr">1047 </span><span class="Delimiter">}</span>
+<span id="L1048" class="LineNr">1048 </span><span class="Delimiter">:(before &quot;End Non-primitive Call(caller_frame)&quot;)</span>
+<span id="L1049" class="LineNr">1049 </span><span class="Normal">if</span> <span class="Delimiter">(</span>Run_profiler<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L1050" class="LineNr">1050 </span>  Num_refcount_updates[caller_frame<span class="Delimiter">.</span>running_recipe][caller_frame<span class="Delimiter">.</span>running_step_index]
+<span id="L1051" class="LineNr">1051 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> += <span class="Delimiter">(</span>Total_refcount_updates - initial_num_refcount_updates<span class="Delimiter">);</span>
+<span id="L1052" class="LineNr">1052 </span>  initial_num_refcount_updates = Total_refcount_updates<span class="Delimiter">;</span>
+<span id="L1053" class="LineNr">1053 </span><span class="Delimiter">}</span>
+<span id="L1054" class="LineNr">1054 </span><span class="Delimiter">:(after &quot;Begin Return&quot;)</span>
+<span id="L1055" class="LineNr">1055 </span><span class="Normal">if</span> <span class="Delimiter">(</span>Run_profiler<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L1056" class="LineNr">1056 </span>  Num_refcount_updates[current_call<span class="Delimiter">().</span>running_recipe][current_call<span class="Delimiter">().</span>running_step_index]
+<span id="L1057" class="LineNr">1057 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> += <span class="Delimiter">(</span>Total_refcount_updates - initial_num_refcount_updates<span class="Delimiter">);</span>
+<span id="L1058" class="LineNr">1058 </span>  initial_num_refcount_updates = Total_refcount_updates<span class="Delimiter">;</span>
+<span id="L1059" class="LineNr">1059 </span><span class="Delimiter">}</span>
+<span id="L1060" class="LineNr">1060 </span><span class="Delimiter">:(before &quot;End dump_profile&quot;)</span>
+<span id="L1061" class="LineNr">1061 </span>fout<span class="Delimiter">.</span>open<span class="Delimiter">(</span><span class="Constant">&quot;profile.refcounts&quot;</span><span class="Delimiter">);</span>
+<span id="L1062" class="LineNr">1062 </span><span class="Normal">if</span> <span class="Delimiter">(</span>fout<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L1063" class="LineNr">1063 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span>map&lt;recipe_ordinal<span class="Delimiter">,</span> recipe&gt;::iterator p = Recipe<span class="Delimiter">.</span>begin<span class="Delimiter">();</span>  p != Recipe<span class="Delimiter">.</span><a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>  ++p<span class="Delimiter">)</span>
+<span id="L1064" class="LineNr">1064 </span>  <span class="Conceal">¦</span> <a href='036refcount.cc.html#L1068'>dump_recipe_profile</a><span class="Delimiter">(</span>p<span class="Delimiter">-&gt;</span>first<span class="Delimiter">,</span> p<span class="Delimiter">-&gt;</span>second<span class="Delimiter">,</span> fout<span class="Delimiter">);</span>
+<span id="L1065" class="LineNr">1065 </span><span class="Delimiter">}</span>
+<span id="L1066" class="LineNr">1066 </span>fout<span class="Delimiter">.</span>close<span class="Delimiter">();</span>
+<span id="L1067" class="LineNr">1067 </span><span class="Delimiter">:(code)</span>
+<span id="L1068" class="LineNr">1068 </span><span class="Normal">void</span> <a href='036refcount.cc.html#L1068'>dump_recipe_profile</a><span class="Delimiter">(</span><a href='010vm.cc.html#L14'>recipe_ordinal</a> ridx<span class="Delimiter">,</span> <span class="Normal">const</span> recipe&amp; r<span class="Delimiter">,</span> ostream&amp; out<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L1069" class="LineNr">1069 </span>  out &lt;&lt; <span class="Constant">&quot;recipe &quot;</span> &lt;&lt; r<span class="Delimiter">.</span>name &lt;&lt; <span class="Constant">&quot; [</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span><span class="Delimiter">;</span>
+<span id="L1070" class="LineNr">1070 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> i = <span class="Constant">0</span><span class="Delimiter">;</span>  i &lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>r<span class="Delimiter">.</span>steps<span class="Delimiter">);</span>  ++i<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L1071" class="LineNr">1071 </span>  <span class="Conceal">¦</span> out &lt;&lt; std::setw<span class="Delimiter">(</span><span class="Constant">6</span><span class="Delimiter">)</span> &lt;&lt; Num_refcount_updates[ridx][i] &lt;&lt; <span class="Constant">' '</span> &lt;&lt; <a href='028call_return.cc.html#L163'>to_string</a><span class="Delimiter">(</span>r<span class="Delimiter">.</span>steps<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">))</span> &lt;&lt; <span class="cSpecial">'\n'</span><span class="Delimiter">;</span>
+<span id="L1072" class="LineNr">1072 </span>  <span class="Delimiter">}</span>
+<span id="L1073" class="LineNr">1073 </span>  out &lt;&lt; <span class="Constant">&quot;]</span><span class="cSpecial">\n\n</span><span class="Constant">&quot;</span><span class="Delimiter">;</span>
+<span id="L1074" class="LineNr">1074 </span><span class="Delimiter">}</span>
 </pre>
 </body>
 </html>
diff --git a/html/037abandon.cc.html b/html/037abandon.cc.html
index c073c216..aa6d8b76 100644
--- a/html/037abandon.cc.html
+++ b/html/037abandon.cc.html
@@ -80,8 +80,8 @@ if ('onhashchange' in window) {
 <span id="L15" class="LineNr"> 15 </span>
 <span id="L16" class="LineNr"> 16 </span><span class="Delimiter">:(before &quot;End Decrement Refcount(old_address, <a href='030container.cc.html#L238'>payload_type</a>, payload_size)&quot;)</span>
 <span id="L17" class="LineNr"> 17 </span><span class="Normal">if</span> <span class="Delimiter">(</span>old_refcount == <span class="Constant">0</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L18" class="LineNr"> 18 </span>  <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">&quot;mem&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;automatically abandoning &quot;</span> &lt;&lt; old_address &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
-<span id="L19" class="LineNr"> 19 </span>  <a href='037abandon.cc.html#L28'>abandon</a><span class="Delimiter">(</span>old_address<span class="Delimiter">,</span> <a href='030container.cc.html#L238'>payload_type</a><span class="Delimiter">,</span> <a href='036refcount.cc.html#L89'>payload_size</a><span class="Delimiter">);</span>
+<span id="L18" class="LineNr"> 18 </span>  <a href='003trace.cc.html#L167'>trace</a><span class="Delimiter">(</span><span class="Constant">&quot;mem&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;automatically abandoning &quot;</span> &lt;&lt; old_address &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
+<span id="L19" class="LineNr"> 19 </span>  <a href='037abandon.cc.html#L28'>abandon</a><span class="Delimiter">(</span>old_address<span class="Delimiter">,</span> <a href='030container.cc.html#L238'>payload_type</a><span class="Delimiter">,</span> <a href='036refcount.cc.html#L84'>payload_size</a><span class="Delimiter">);</span>
 <span id="L20" class="LineNr"> 20 </span><span class="Delimiter">}</span>
 <span id="L21" class="LineNr"> 21 </span>
 <span id="L22" class="LineNr"> 22 </span><span class="Comment">//: When abandoning addresses we'll save them to a 'free list', segregated by size.</span>
@@ -90,8 +90,8 @@ if ('onhashchange' in window) {
 <span id="L25" class="LineNr"> 25 </span>map&lt;<span class="Normal">int</span><span class="Delimiter">,</span> <span class="Normal">int</span>&gt; free_list<span class="Delimiter">;</span>
 <span id="L26" class="LineNr"> 26 </span>
 <span id="L27" class="LineNr"> 27 </span><span class="Delimiter">:(code)</span>
-<span id="L28" class="LineNr"> 28 </span><span class="Normal">void</span> <a href='037abandon.cc.html#L28'>abandon</a><span class="Delimiter">(</span><span class="Normal">int</span> <a href='043space.cc.html#L82'>address</a><span class="Delimiter">,</span> <span class="Normal">const</span> type_tree* <a href='030container.cc.html#L238'>payload_type</a><span class="Delimiter">,</span> <span class="Normal">int</span> <a href='036refcount.cc.html#L89'>payload_size</a><span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L29" class="LineNr"> 29 </span>  <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">&quot;abandon&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;updating refcounts inside &quot;</span> &lt;&lt; <a href='043space.cc.html#L82'>address</a> &lt;&lt; <span class="Constant">&quot;: &quot;</span> &lt;&lt; <a href='028call_return.cc.html#L163'>to_string</a><span class="Delimiter">(</span><a href='030container.cc.html#L238'>payload_type</a><span class="Delimiter">)</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L28" class="LineNr"> 28 </span><span class="Normal">void</span> <a href='037abandon.cc.html#L28'>abandon</a><span class="Delimiter">(</span><span class="Normal">int</span> <a href='043space.cc.html#L82'>address</a><span class="Delimiter">,</span> <span class="Normal">const</span> type_tree* <a href='030container.cc.html#L238'>payload_type</a><span class="Delimiter">,</span> <span class="Normal">int</span> <a href='036refcount.cc.html#L84'>payload_size</a><span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L29" class="LineNr"> 29 </span>  <a href='003trace.cc.html#L167'>trace</a><span class="Delimiter">(</span><span class="Constant">&quot;abandon&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;updating refcounts inside &quot;</span> &lt;&lt; <a href='043space.cc.html#L82'>address</a> &lt;&lt; <span class="Constant">&quot;: &quot;</span> &lt;&lt; <a href='028call_return.cc.html#L163'>to_string</a><span class="Delimiter">(</span><a href='030container.cc.html#L238'>payload_type</a><span class="Delimiter">)</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L30" class="LineNr"> 30 </span><span class="CommentedCode">//?   Total_free += size;</span>
 <span id="L31" class="LineNr"> 31 </span><span class="CommentedCode">//?   ++Num_free;</span>
 <span id="L32" class="LineNr"> 32 </span><span class="CommentedCode">//?   cerr &lt;&lt; &quot;abandon: &quot; &lt;&lt; size &lt;&lt; '\n';</span>
@@ -117,21 +117,21 @@ if ('onhashchange' in window) {
 <span id="L52" class="LineNr"> 52 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> curr = <a href='043space.cc.html#L82'>address</a><span class="Delimiter">;</span>  curr &lt; address+payload_size<span class="Delimiter">;</span>  ++curr<span class="Delimiter">)</span>
 <span id="L53" class="LineNr"> 53 </span>  <span class="Conceal">¦</span> <a href='001help.cc.html#L221'>put</a><span class="Delimiter">(</span>Memory<span class="Delimiter">,</span> curr<span class="Delimiter">,</span> <span class="Constant">0</span><span class="Delimiter">);</span>
 <span id="L54" class="LineNr"> 54 </span>  <span class="Comment">// append existing free list to address</span>
-<span id="L55" class="LineNr"> 55 </span>  <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">&quot;abandon&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;saving &quot;</span> &lt;&lt; <a href='043space.cc.html#L82'>address</a> &lt;&lt; <span class="Constant">&quot; in free-list of size &quot;</span> &lt;&lt; <a href='036refcount.cc.html#L89'>payload_size</a> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
-<span id="L56" class="LineNr"> 56 </span>  <a href='001help.cc.html#L221'>put</a><span class="Delimiter">(</span>Memory<span class="Delimiter">,</span> <a href='043space.cc.html#L82'>address</a><span class="Delimiter">,</span> <a href='001help.cc.html#L229'>get_or_insert</a><span class="Delimiter">(</span>Current_routine<span class="Delimiter">-&gt;</span>free_list<span class="Delimiter">,</span> <a href='036refcount.cc.html#L89'>payload_size</a><span class="Delimiter">));</span>
-<span id="L57" class="LineNr"> 57 </span>  <a href='001help.cc.html#L221'>put</a><span class="Delimiter">(</span>Current_routine<span class="Delimiter">-&gt;</span>free_list<span class="Delimiter">,</span> <a href='036refcount.cc.html#L89'>payload_size</a><span class="Delimiter">,</span> <a href='043space.cc.html#L82'>address</a><span class="Delimiter">);</span>
+<span id="L55" class="LineNr"> 55 </span>  <a href='003trace.cc.html#L167'>trace</a><span class="Delimiter">(</span><span class="Constant">&quot;abandon&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;saving &quot;</span> &lt;&lt; <a href='043space.cc.html#L82'>address</a> &lt;&lt; <span class="Constant">&quot; in free-list of size &quot;</span> &lt;&lt; <a href='036refcount.cc.html#L84'>payload_size</a> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
+<span id="L56" class="LineNr"> 56 </span>  <a href='001help.cc.html#L221'>put</a><span class="Delimiter">(</span>Memory<span class="Delimiter">,</span> <a href='043space.cc.html#L82'>address</a><span class="Delimiter">,</span> <a href='001help.cc.html#L229'>get_or_insert</a><span class="Delimiter">(</span>Current_routine<span class="Delimiter">-&gt;</span>free_list<span class="Delimiter">,</span> <a href='036refcount.cc.html#L84'>payload_size</a><span class="Delimiter">));</span>
+<span id="L57" class="LineNr"> 57 </span>  <a href='001help.cc.html#L221'>put</a><span class="Delimiter">(</span>Current_routine<span class="Delimiter">-&gt;</span>free_list<span class="Delimiter">,</span> <a href='036refcount.cc.html#L84'>payload_size</a><span class="Delimiter">,</span> <a href='043space.cc.html#L82'>address</a><span class="Delimiter">);</span>
 <span id="L58" class="LineNr"> 58 </span><span class="Delimiter">}</span>
 <span id="L59" class="LineNr"> 59 </span>
 <span id="L60" class="LineNr"> 60 </span><span class="Delimiter">:(after &quot;Allocate Special-cases&quot;)</span>
 <span id="L61" class="LineNr"> 61 </span><span class="Normal">if</span> <span class="Delimiter">(</span><a href='001help.cc.html#L229'>get_or_insert</a><span class="Delimiter">(</span>Current_routine<span class="Delimiter">-&gt;</span>free_list<span class="Delimiter">,</span> size<span class="Delimiter">))</span> <span class="Delimiter">{</span>
-<span id="L62" class="LineNr"> 62 </span>  <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">&quot;abandon&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;picking up space from free-list of size &quot;</span> &lt;&lt; size &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L62" class="LineNr"> 62 </span>  <a href='003trace.cc.html#L167'>trace</a><span class="Delimiter">(</span><span class="Constant">&quot;abandon&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;picking up space from free-list of size &quot;</span> &lt;&lt; size &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L63" class="LineNr"> 63 </span>  <span class="Normal">int</span> result = <a href='001help.cc.html#L229'>get_or_insert</a><span class="Delimiter">(</span>Current_routine<span class="Delimiter">-&gt;</span>free_list<span class="Delimiter">,</span> size<span class="Delimiter">);</span>
-<span id="L64" class="LineNr"> 64 </span>  <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">&quot;mem&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;new alloc from free list: &quot;</span> &lt;&lt; result &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L64" class="LineNr"> 64 </span>  <a href='003trace.cc.html#L167'>trace</a><span class="Delimiter">(</span><span class="Constant">&quot;mem&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;new alloc from free list: &quot;</span> &lt;&lt; result &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L65" class="LineNr"> 65 </span>  <a href='001help.cc.html#L221'>put</a><span class="Delimiter">(</span>Current_routine<span class="Delimiter">-&gt;</span>free_list<span class="Delimiter">,</span> size<span class="Delimiter">,</span> <a href='001help.cc.html#L229'>get_or_insert</a><span class="Delimiter">(</span>Memory<span class="Delimiter">,</span> result<span class="Delimiter">));</span>
 <span id="L66" class="LineNr"> 66 </span>  <a href='001help.cc.html#L221'>put</a><span class="Delimiter">(</span>Memory<span class="Delimiter">,</span> result<span class="Delimiter">,</span> <span class="Constant">0</span><span class="Delimiter">);</span>
 <span id="L67" class="LineNr"> 67 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> curr = result<span class="Delimiter">;</span>  curr &lt; result+size<span class="Delimiter">;</span>  ++curr<span class="Delimiter">)</span> <span class="Delimiter">{</span>
 <span id="L68" class="LineNr"> 68 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span><a href='001help.cc.html#L229'>get_or_insert</a><span class="Delimiter">(</span>Memory<span class="Delimiter">,</span> curr<span class="Delimiter">)</span> != <span class="Constant">0</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L69" class="LineNr"> 69 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span><a href='026call.cc.html#L85'>current_recipe_name</a><span class="Delimiter">())</span> &lt;&lt; <span class="Constant">&quot;memory in free list was not zeroed out: &quot;</span> &lt;&lt; curr &lt;&lt; <span class="Constant">'/'</span> &lt;&lt; result &lt;&lt; <span class="Constant">&quot;; somebody wrote to us after free!!!</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L69" class="LineNr"> 69 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span><a href='026call.cc.html#L87'>current_recipe_name</a><span class="Delimiter">())</span> &lt;&lt; <span class="Constant">&quot;memory in free list was not zeroed out: &quot;</span> &lt;&lt; curr &lt;&lt; <span class="Constant">'/'</span> &lt;&lt; result &lt;&lt; <span class="Constant">&quot;; somebody wrote to us after free!!!</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L70" class="LineNr"> 70 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>  <span class="Comment">// always fatal</span>
 <span id="L71" class="LineNr"> 71 </span>  <span class="Conceal">¦</span> <span class="Delimiter">}</span>
 <span id="L72" class="LineNr"> 72 </span>  <span class="Delimiter">}</span>
diff --git a/html/038new_text.cc.html b/html/038new_text.cc.html
index ba71f478..8563f8fb 100644
--- a/html/038new_text.cc.html
+++ b/html/038new_text.cc.html
@@ -92,10 +92,10 @@ if ('onhashchange' in window) {
 <span id="L27" class="LineNr"> 27 </span><span class="Delimiter">:(before &quot;Convert 'new' To 'allocate'&quot;)</span>
 <span id="L28" class="LineNr"> 28 </span><span class="Normal">if</span> <span class="Delimiter">(</span>inst<span class="Delimiter">.</span>name == <span class="Constant">&quot;new&quot;</span> &amp;&amp; !inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>empty<span class="Delimiter">()</span> &amp;&amp; <a href='014literal_string.cc.html#L126'>is_literal_text</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">)))</span> <span class="Identifier">continue</span><span class="Delimiter">;</span>
 <span id="L29" class="LineNr"> 29 </span><span class="Delimiter">:(after &quot;case NEW&quot; following &quot;Primitive Recipe Implementations&quot;)</span>
-<span id="L30" class="LineNr"> 30 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span><a href='014literal_string.cc.html#L126'>is_literal_text</a><span class="Delimiter">(</span><a href='026call.cc.html#L87'>current_instruction</a><span class="Delimiter">().</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">)))</span> <span class="Delimiter">{</span>
+<span id="L30" class="LineNr"> 30 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span><a href='014literal_string.cc.html#L126'>is_literal_text</a><span class="Delimiter">(</span><a href='026call.cc.html#L89'>current_instruction</a><span class="Delimiter">().</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">)))</span> <span class="Delimiter">{</span>
 <span id="L31" class="LineNr"> 31 </span>  <span class="Conceal">¦</span> products<span class="Delimiter">.</span>resize<span class="Delimiter">(</span><span class="Constant">1</span><span class="Delimiter">);</span>
-<span id="L32" class="LineNr"> 32 </span>  <span class="Conceal">¦</span> products<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>push_back<span class="Delimiter">(</span><a href='038new_text.cc.html#L38'>new_mu_text</a><span class="Delimiter">(</span><a href='026call.cc.html#L87'>current_instruction</a><span class="Delimiter">().</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>name<span class="Delimiter">));</span>
-<span id="L33" class="LineNr"> 33 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">&quot;mem&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;new string alloc: &quot;</span> &lt;&lt; products<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">)</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L32" class="LineNr"> 32 </span>  <span class="Conceal">¦</span> products<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>push_back<span class="Delimiter">(</span><a href='038new_text.cc.html#L38'>new_mu_text</a><span class="Delimiter">(</span><a href='026call.cc.html#L89'>current_instruction</a><span class="Delimiter">().</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>name<span class="Delimiter">));</span>
+<span id="L33" class="LineNr"> 33 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L167'>trace</a><span class="Delimiter">(</span><span class="Constant">&quot;mem&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;new string alloc: &quot;</span> &lt;&lt; products<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">)</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L34" class="LineNr"> 34 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L35" class="LineNr"> 35 </span>  <span class="Delimiter">}</span>
 <span id="L36" class="LineNr"> 36 </span>
@@ -106,10 +106,10 @@ if ('onhashchange' in window) {
 <span id="L41" class="LineNr"> 41 </span><span class="CommentedCode">//?   Total_alloc += string_length+1;</span>
 <span id="L42" class="LineNr"> 42 </span><span class="CommentedCode">//?   ++Num_alloc;</span>
 <span id="L43" class="LineNr"> 43 </span>  <span class="Normal">int</span> result = allocate<span class="Delimiter">(</span>string_length+<span class="Comment">/*</span><span class="Comment">array length</span><span class="Comment">*/</span><span class="Constant">1</span><span class="Delimiter">);</span>
-<span id="L44" class="LineNr"> 44 </span>  <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">&quot;mem&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;storing string refcount 0 in location &quot;</span> &lt;&lt; result &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L44" class="LineNr"> 44 </span>  <a href='003trace.cc.html#L167'>trace</a><span class="Delimiter">(</span><span class="Constant">&quot;mem&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;storing string refcount 0 in location &quot;</span> &lt;&lt; result &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L45" class="LineNr"> 45 </span>  <a href='001help.cc.html#L221'>put</a><span class="Delimiter">(</span>Memory<span class="Delimiter">,</span> result<span class="Delimiter">,</span> <span class="Constant">0</span><span class="Delimiter">);</span>
 <span id="L46" class="LineNr"> 46 </span>  <span class="Normal">int</span> curr_address = result+<span class="Comment">/*</span><span class="Comment">skip refcount</span><span class="Comment">*/</span><span class="Constant">1</span><span class="Delimiter">;</span>
-<span id="L47" class="LineNr"> 47 </span>  <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">&quot;mem&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;storing string length &quot;</span> &lt;&lt; string_length &lt;&lt; <span class="Constant">&quot; in location &quot;</span> &lt;&lt; curr_address &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L47" class="LineNr"> 47 </span>  <a href='003trace.cc.html#L167'>trace</a><span class="Delimiter">(</span><span class="Constant">&quot;mem&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;storing string length &quot;</span> &lt;&lt; string_length &lt;&lt; <span class="Constant">&quot; in location &quot;</span> &lt;&lt; curr_address &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L48" class="LineNr"> 48 </span>  <a href='001help.cc.html#L221'>put</a><span class="Delimiter">(</span>Memory<span class="Delimiter">,</span> curr_address<span class="Delimiter">,</span> string_length<span class="Delimiter">);</span>
 <span id="L49" class="LineNr"> 49 </span>  ++curr_address<span class="Delimiter">;</span>  <span class="Comment">// skip length</span>
 <span id="L50" class="LineNr"> 50 </span>  <span class="Normal">int</span> curr = <span class="Constant">0</span><span class="Delimiter">;</span>
@@ -118,7 +118,7 @@ if ('onhashchange' in window) {
 <span id="L53" class="LineNr"> 53 </span>  <span class="Conceal">¦</span> <span class="Normal">uint32_t</span> curr_character<span class="Delimiter">;</span>
 <span id="L54" class="LineNr"> 54 </span>  <span class="Conceal">¦</span> assert<span class="Delimiter">(</span>curr &lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>contents<span class="Delimiter">));</span>
 <span id="L55" class="LineNr"> 55 </span>  <span class="Conceal">¦</span> tb_utf8_char_to_unicode<span class="Delimiter">(</span>&amp;curr_character<span class="Delimiter">,</span> &amp;raw_contents[curr]<span class="Delimiter">);</span>
-<span id="L56" class="LineNr"> 56 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">&quot;mem&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;storing string character &quot;</span> &lt;&lt; curr_character &lt;&lt; <span class="Constant">&quot; in location &quot;</span> &lt;&lt; curr_address &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L56" class="LineNr"> 56 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L167'>trace</a><span class="Delimiter">(</span><span class="Constant">&quot;mem&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;storing string character &quot;</span> &lt;&lt; curr_character &lt;&lt; <span class="Constant">&quot; in location &quot;</span> &lt;&lt; curr_address &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L57" class="LineNr"> 57 </span>  <span class="Conceal">¦</span> <a href='001help.cc.html#L221'>put</a><span class="Delimiter">(</span>Memory<span class="Delimiter">,</span> curr_address<span class="Delimiter">,</span> curr_character<span class="Delimiter">);</span>
 <span id="L58" class="LineNr"> 58 </span>  <span class="Conceal">¦</span> curr += tb_utf8_char_length<span class="Delimiter">(</span>raw_contents[curr]<span class="Delimiter">);</span>
 <span id="L59" class="LineNr"> 59 </span>  <span class="Conceal">¦</span> ++curr_address<span class="Delimiter">;</span>
@@ -152,7 +152,7 @@ if ('onhashchange' in window) {
 <span id="L87" class="LineNr"> 87 </span><span class="Delimiter">}</span>
 <span id="L88" class="LineNr"> 88 </span>
 <span id="L89" class="LineNr"> 89 </span><span class="Delimiter">:(before &quot;End $print Special-cases&quot;)</span>
-<span id="L90" class="LineNr"> 90 </span><span class="Normal">else</span> <span class="Normal">if</span> <span class="Delimiter">(</span><a href='027call_ingredient.cc.html#L177'>is_mu_text</a><span class="Delimiter">(</span><a href='026call.cc.html#L87'>current_instruction</a><span class="Delimiter">().</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">)))</span> <span class="Delimiter">{</span>
+<span id="L90" class="LineNr"> 90 </span><span class="Normal">else</span> <span class="Normal">if</span> <span class="Delimiter">(</span><a href='027call_ingredient.cc.html#L177'>is_mu_text</a><span class="Delimiter">(</span><a href='026call.cc.html#L89'>current_instruction</a><span class="Delimiter">().</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">)))</span> <span class="Delimiter">{</span>
 <span id="L91" class="LineNr"> 91 </span>  cout &lt;&lt; <a href='038new_text.cc.html#L143'>read_mu_text</a><span class="Delimiter">(</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">).</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">));</span>
 <span id="L92" class="LineNr"> 92 </span><span class="Delimiter">}</span>
 <span id="L93" class="LineNr"> 93 </span>
@@ -238,15 +238,15 @@ if ('onhashchange' in window) {
 <span id="L173" class="LineNr">173 </span><span class="Delimiter">:(before &quot;End Primitive Recipe Checks&quot;)</span>
 <span id="L174" class="LineNr">174 </span><span class="Normal">case</span> ASSERT: <span class="Delimiter">{</span>
 <span id="L175" class="LineNr">175 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">)</span> != <span class="Constant">2</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L176" class="LineNr">176 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'assert' takes exactly two ingredients rather than '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L176" class="LineNr">176 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'assert' takes exactly two ingredients rather than '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L177" class="LineNr">177 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L178" class="LineNr">178 </span>  <span class="Delimiter">}</span>
 <span id="L179" class="LineNr">179 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!is_mu_scalar<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">)))</span> <span class="Delimiter">{</span>
-<span id="L180" class="LineNr">180 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'assert' requires a boolean for its first ingredient, but got '&quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>original_string &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L180" class="LineNr">180 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'assert' requires a boolean for its first ingredient, but got '&quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>original_string &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L181" class="LineNr">181 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L182" class="LineNr">182 </span>  <span class="Delimiter">}</span>
 <span id="L183" class="LineNr">183 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!is_literal_text<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">1</span><span class="Delimiter">))</span> &amp;&amp; !is_mu_text<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">1</span><span class="Delimiter">)))</span> <span class="Delimiter">{</span>
-<span id="L184" class="LineNr">184 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'assert' requires a text as its second ingredient, but got '&quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">1</span><span class="Delimiter">).</span>original_string &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L184" class="LineNr">184 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'assert' requires a text as its second ingredient, but got '&quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">1</span><span class="Delimiter">).</span>original_string &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L185" class="LineNr">185 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L186" class="LineNr">186 </span>  <span class="Delimiter">}</span>
 <span id="L187" class="LineNr">187 </span>  <span class="Identifier">break</span><span class="Delimiter">;</span>
@@ -254,10 +254,10 @@ if ('onhashchange' in window) {
 <span id="L189" class="LineNr">189 </span><span class="Delimiter">:(before &quot;End Primitive Recipe Implementations&quot;)</span>
 <span id="L190" class="LineNr">190 </span><span class="Normal">case</span> ASSERT: <span class="Delimiter">{</span>
 <span id="L191" class="LineNr">191 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">))</span> <span class="Delimiter">{</span>
-<span id="L192" class="LineNr">192 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span><a href='014literal_string.cc.html#L126'>is_literal_text</a><span class="Delimiter">(</span><a href='026call.cc.html#L87'>current_instruction</a><span class="Delimiter">().</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">1</span><span class="Delimiter">)))</span>
-<span id="L193" class="LineNr">193 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='026call.cc.html#L87'>current_instruction</a><span class="Delimiter">().</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">1</span><span class="Delimiter">).</span>name &lt;&lt; <span class="cSpecial">'\n'</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L192" class="LineNr">192 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span><a href='014literal_string.cc.html#L126'>is_literal_text</a><span class="Delimiter">(</span><a href='026call.cc.html#L89'>current_instruction</a><span class="Delimiter">().</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">1</span><span class="Delimiter">)))</span>
+<span id="L193" class="LineNr">193 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='026call.cc.html#L89'>current_instruction</a><span class="Delimiter">().</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">1</span><span class="Delimiter">).</span>name &lt;&lt; <span class="cSpecial">'\n'</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L194" class="LineNr">194 </span>  <span class="Conceal">¦</span> <span class="Normal">else</span>
-<span id="L195" class="LineNr">195 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='038new_text.cc.html#L143'>read_mu_text</a><span class="Delimiter">(</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">1</span><span class="Delimiter">).</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">))</span> &lt;&lt; <span class="cSpecial">'\n'</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L195" class="LineNr">195 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='038new_text.cc.html#L143'>read_mu_text</a><span class="Delimiter">(</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">1</span><span class="Delimiter">).</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">))</span> &lt;&lt; <span class="cSpecial">'\n'</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L196" class="LineNr">196 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>!Hide_errors<span class="Delimiter">)</span> exit<span class="Delimiter">(</span><span class="Constant">1</span><span class="Delimiter">);</span>
 <span id="L197" class="LineNr">197 </span>  <span class="Delimiter">}</span>
 <span id="L198" class="LineNr">198 </span>  <span class="Identifier">break</span><span class="Delimiter">;</span>
diff --git a/html/040brace.cc.html b/html/040brace.cc.html
index 8b58e0eb..d601bb65 100644
--- a/html/040brace.cc.html
+++ b/html/040brace.cc.html
@@ -102,15 +102,15 @@ if ('onhashchange' in window) {
 <span id="L39" class="LineNr"> 39 </span>  <span class="Normal">const</span> <span class="Normal">int</span> OPEN = <span class="Constant">0</span><span class="Delimiter">,</span> CLOSE = <span class="Constant">1</span><span class="Delimiter">;</span>
 <span id="L40" class="LineNr"> 40 </span>  <span class="Comment">// use signed integer for step index because we'll be doing arithmetic on it</span>
 <span id="L41" class="LineNr"> 41 </span>  list&lt;pair&lt;<span class="Normal">int</span><span class="Comment">/*</span><span class="Comment">OPEN/CLOSE</span><span class="Comment">*/</span><span class="Delimiter">,</span> <span class="Comment">/*</span><span class="Comment">step</span><span class="Comment">*/</span><span class="Normal">int</span>&gt; &gt; braces<span class="Delimiter">;</span>
-<span id="L42" class="LineNr"> 42 </span>  <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">9991</span><span class="Delimiter">,</span> <span class="Constant">&quot;transform&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;--- <a href='012transform.cc.html#L99'>transform</a> braces for <a href='010vm.cc.html#L19'>recipe</a> &quot;</span> &lt;&lt; get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L42" class="LineNr"> 42 </span>  <a href='003trace.cc.html#L167'>trace</a><span class="Delimiter">(</span><span class="Constant">9991</span><span class="Delimiter">,</span> <span class="Constant">&quot;transform&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;--- <a href='012transform.cc.html#L99'>transform</a> braces for <a href='010vm.cc.html#L19'>recipe</a> &quot;</span> &lt;&lt; get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L43" class="LineNr"> 43 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> index = <span class="Constant">0</span><span class="Delimiter">;</span>  index &lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>steps<span class="Delimiter">);</span>  ++index<span class="Delimiter">)</span> <span class="Delimiter">{</span>
 <span id="L44" class="LineNr"> 44 </span>  <span class="Conceal">¦</span> <span class="Normal">const</span> instruction&amp; inst = get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>steps<span class="Delimiter">.</span>at<span class="Delimiter">(</span>index<span class="Delimiter">);</span>
 <span id="L45" class="LineNr"> 45 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>inst<span class="Delimiter">.</span>label == <span class="Constant">&quot;{&quot;</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L46" class="LineNr"> 46 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">9993</span><span class="Delimiter">,</span> <span class="Constant">&quot;transform&quot;</span><span class="Delimiter">)</span> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;push (open, &quot;</span> &lt;&lt; index &lt;&lt; <span class="Constant">&quot;)&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L46" class="LineNr"> 46 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L167'>trace</a><span class="Delimiter">(</span><span class="Constant">9993</span><span class="Delimiter">,</span> <span class="Constant">&quot;transform&quot;</span><span class="Delimiter">)</span> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;push (open, &quot;</span> &lt;&lt; index &lt;&lt; <span class="Constant">&quot;)&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L47" class="LineNr"> 47 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> braces<span class="Delimiter">.</span>push_back<span class="Delimiter">(</span>pair&lt;<span class="Normal">int</span><span class="Delimiter">,</span><span class="Normal">int</span>&gt;<span class="Delimiter">(</span>OPEN<span class="Delimiter">,</span> index<span class="Delimiter">));</span>
 <span id="L48" class="LineNr"> 48 </span>  <span class="Conceal">¦</span> <span class="Delimiter">}</span>
 <span id="L49" class="LineNr"> 49 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>inst<span class="Delimiter">.</span>label == <span class="Constant">&quot;}&quot;</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L50" class="LineNr"> 50 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">9993</span><span class="Delimiter">,</span> <span class="Constant">&quot;transform&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;push (close, &quot;</span> &lt;&lt; index &lt;&lt; <span class="Constant">&quot;)&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L50" class="LineNr"> 50 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L167'>trace</a><span class="Delimiter">(</span><span class="Constant">9993</span><span class="Delimiter">,</span> <span class="Constant">&quot;transform&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;push (close, &quot;</span> &lt;&lt; index &lt;&lt; <span class="Constant">&quot;)&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L51" class="LineNr"> 51 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> braces<span class="Delimiter">.</span>push_back<span class="Delimiter">(</span>pair&lt;<span class="Normal">int</span><span class="Delimiter">,</span><span class="Normal">int</span>&gt;<span class="Delimiter">(</span>CLOSE<span class="Delimiter">,</span> index<span class="Delimiter">));</span>
 <span id="L52" class="LineNr"> 52 </span>  <span class="Conceal">¦</span> <span class="Delimiter">}</span>
 <span id="L53" class="LineNr"> 53 </span>  <span class="Delimiter">}</span>
@@ -123,7 +123,7 @@ if ('onhashchange' in window) {
 <span id="L60" class="LineNr"> 60 </span>  <span class="Conceal">¦</span> <span class="Delimiter">}</span>
 <span id="L61" class="LineNr"> 61 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>inst<span class="Delimiter">.</span>label == <span class="Constant">&quot;}&quot;</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
 <span id="L62" class="LineNr"> 62 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>open_braces<span class="Delimiter">.</span>empty<span class="Delimiter">())</span> <span class="Delimiter">{</span>
-<span id="L63" class="LineNr"> 63 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;unbalanced '}'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L63" class="LineNr"> 63 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;unbalanced '}'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L64" class="LineNr"> 64 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Identifier">return</span><span class="Delimiter">;</span>
 <span id="L65" class="LineNr"> 65 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Delimiter">}</span>
 <span id="L66" class="LineNr"> 66 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> open_braces<span class="Delimiter">.</span>pop<span class="Delimiter">();</span>
@@ -136,13 +136,13 @@ if ('onhashchange' in window) {
 <span id="L73" class="LineNr"> 73 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span>&amp;&amp; inst<span class="Delimiter">.</span>name != <span class="Constant">&quot;break&quot;</span>
 <span id="L74" class="LineNr"> 74 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span>&amp;&amp; inst<span class="Delimiter">.</span>name != <span class="Constant">&quot;break-if&quot;</span>
 <span id="L75" class="LineNr"> 75 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span>&amp;&amp; inst<span class="Delimiter">.</span>name != <span class="Constant">&quot;break-unless&quot;</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L76" class="LineNr"> 76 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">9992</span><span class="Delimiter">,</span> <span class="Constant">&quot;transform&quot;</span><span class="Delimiter">)</span> &lt;&lt; inst<span class="Delimiter">.</span>name &lt;&lt; <span class="Constant">&quot; ...&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L76" class="LineNr"> 76 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L167'>trace</a><span class="Delimiter">(</span><span class="Constant">9992</span><span class="Delimiter">,</span> <span class="Constant">&quot;transform&quot;</span><span class="Delimiter">)</span> &lt;&lt; inst<span class="Delimiter">.</span>name &lt;&lt; <span class="Constant">&quot; ...&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L77" class="LineNr"> 77 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Identifier">continue</span><span class="Delimiter">;</span>
 <span id="L78" class="LineNr"> 78 </span>  <span class="Conceal">¦</span> <span class="Delimiter">}</span>
 <span id="L79" class="LineNr"> 79 </span>  <span class="Conceal">¦</span> <span class="Comment">// check for errors</span>
 <span id="L80" class="LineNr"> 80 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>inst<span class="Delimiter">.</span>name<span class="Delimiter">.</span>find<span class="Delimiter">(</span><span class="Constant">&quot;-if&quot;</span><span class="Delimiter">)</span> != string::npos || inst<span class="Delimiter">.</span>name<span class="Delimiter">.</span>find<span class="Delimiter">(</span><span class="Constant">&quot;-unless&quot;</span><span class="Delimiter">)</span> != string::npos<span class="Delimiter">)</span> <span class="Delimiter">{</span>
 <span id="L81" class="LineNr"> 81 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>empty<span class="Delimiter">())</span> <span class="Delimiter">{</span>
-<span id="L82" class="LineNr"> 82 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'&quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>name &lt;&lt; <span class="Constant">&quot;' expects 1 or 2 ingredients, but got none</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L82" class="LineNr"> 82 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'&quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>name &lt;&lt; <span class="Constant">&quot;' expects 1 or 2 ingredients, but got none</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L83" class="LineNr"> 83 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Identifier">continue</span><span class="Delimiter">;</span>
 <span id="L84" class="LineNr"> 84 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Delimiter">}</span>
 <span id="L85" class="LineNr"> 85 </span>  <span class="Conceal">¦</span> <span class="Delimiter">}</span>
@@ -164,14 +164,14 @@ if ('onhashchange' in window) {
 <span id="L101" class="LineNr">101 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>inst<span class="Delimiter">.</span>name<span class="Delimiter">.</span>find<span class="Delimiter">(</span><span class="Constant">&quot;-if&quot;</span><span class="Delimiter">)</span> != string::npos || inst<span class="Delimiter">.</span>name<span class="Delimiter">.</span>find<span class="Delimiter">(</span><span class="Constant">&quot;-unless&quot;</span><span class="Delimiter">)</span> != string::npos<span class="Delimiter">)</span> <span class="Delimiter">{</span>
 <span id="L102" class="LineNr">102 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Comment">// conditional branches check arg 1</span>
 <span id="L103" class="LineNr">103 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">)</span> &gt; <span class="Constant">1</span> &amp;&amp; is_literal<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">1</span><span class="Delimiter">)))</span> <span class="Delimiter">{</span>
-<span id="L104" class="LineNr">104 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">9992</span><span class="Delimiter">,</span> <span class="Constant">&quot;transform&quot;</span><span class="Delimiter">)</span> &lt;&lt; inst<span class="Delimiter">.</span>name &lt;&lt; <span class="Constant">' '</span> &lt;&lt; inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">1</span><span class="Delimiter">).</span>name &lt;&lt; <span class="Constant">&quot;:offset</span><span class="Constant">&quot; &lt;&lt; end();</span>
+<span id="L104" class="LineNr">104 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L167'>trace</a><span class="Delimiter">(</span><span class="Constant">9992</span><span class="Delimiter">,</span> <span class="Constant">&quot;transform&quot;</span><span class="Delimiter">)</span> &lt;&lt; inst<span class="Delimiter">.</span>name &lt;&lt; <span class="Constant">' '</span> &lt;&lt; inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">1</span><span class="Delimiter">).</span>name &lt;&lt; <span class="Constant">&quot;:offset</span><span class="Constant">&quot; &lt;&lt; end();</span>
 <span id="L105" class="LineNr">105 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Identifier">continue</span><span class="Delimiter">;</span>
 <span id="L106" class="LineNr">106 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Delimiter">}</span>
 <span id="L107" class="LineNr">107 </span>  <span class="Conceal">¦</span> <span class="Delimiter">}</span>
 <span id="L108" class="LineNr">108 </span>  <span class="Conceal">¦</span> <span class="Normal">else</span> <span class="Delimiter">{</span>
 <span id="L109" class="LineNr">109 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Comment">// unconditional branches check arg 0</span>
 <span id="L110" class="LineNr">110 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>!inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>empty<span class="Delimiter">()</span> &amp;&amp; is_literal<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">)))</span> <span class="Delimiter">{</span>
-<span id="L111" class="LineNr">111 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">9992</span><span class="Delimiter">,</span> <span class="Constant">&quot;transform&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;jump &quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>name &lt;&lt; <span class="Constant">&quot;:offset</span><span class="Constant">&quot; &lt;&lt; end();</span>
+<span id="L111" class="LineNr">111 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L167'>trace</a><span class="Delimiter">(</span><span class="Constant">9992</span><span class="Delimiter">,</span> <span class="Constant">&quot;transform&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;jump &quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>name &lt;&lt; <span class="Constant">&quot;:offset</span><span class="Constant">&quot; &lt;&lt; end();</span>
 <span id="L112" class="LineNr">112 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Identifier">continue</span><span class="Delimiter">;</span>
 <span id="L113" class="LineNr">113 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Delimiter">}</span>
 <span id="L114" class="LineNr">114 </span>  <span class="Conceal">¦</span> <span class="Delimiter">}</span>
@@ -180,7 +180,7 @@ if ('onhashchange' in window) {
 <span id="L117" class="LineNr">117 </span>  <span class="Conceal">¦</span> target<span class="Delimiter">.</span>type = <span class="Normal">new</span> type_tree<span class="Delimiter">(</span><span class="Constant">&quot;offset&quot;</span><span class="Delimiter">);</span>
 <span id="L118" class="LineNr">118 </span>  <span class="Conceal">¦</span> target<span class="Delimiter">.</span><a href='010vm.cc.html#L65'>set_value</a><span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">);</span>
 <span id="L119" class="LineNr">119 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>open_braces<span class="Delimiter">.</span>empty<span class="Delimiter">())</span>
-<span id="L120" class="LineNr">120 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'&quot;</span> &lt;&lt; old_name &lt;&lt; <span class="Constant">&quot;' needs a '{' before</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L120" class="LineNr">120 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'&quot;</span> &lt;&lt; old_name &lt;&lt; <span class="Constant">&quot;' needs a '{' before</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L121" class="LineNr">121 </span>  <span class="Conceal">¦</span> <span class="Normal">else</span> <span class="Normal">if</span> <span class="Delimiter">(</span>old_name<span class="Delimiter">.</span>find<span class="Delimiter">(</span><span class="Constant">&quot;loop&quot;</span><span class="Delimiter">)</span> != string::npos<span class="Delimiter">)</span>
 <span id="L122" class="LineNr">122 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> target<span class="Delimiter">.</span><a href='010vm.cc.html#L65'>set_value</a><span class="Delimiter">(</span>open_braces<span class="Delimiter">.</span>top<span class="Delimiter">()</span>-index<span class="Delimiter">);</span>
 <span id="L123" class="LineNr">123 </span>  <span class="Conceal">¦</span> <span class="Normal">else</span>  <span class="Comment">// break instruction</span>
@@ -188,9 +188,9 @@ if ('onhashchange' in window) {
 <span id="L125" class="LineNr">125 </span>  <span class="Conceal">¦</span> inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>push_back<span class="Delimiter">(</span>target<span class="Delimiter">);</span>
 <span id="L126" class="LineNr">126 </span>  <span class="Conceal">¦</span> <span class="Comment">// log computed target</span>
 <span id="L127" class="LineNr">127 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>inst<span class="Delimiter">.</span>name == <span class="Constant">&quot;jump&quot;</span><span class="Delimiter">)</span>
-<span id="L128" class="LineNr">128 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">9992</span><span class="Delimiter">,</span> <span class="Constant">&quot;transform&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;jump &quot;</span> &lt;&lt; no_scientific<span class="Delimiter">(</span>target<span class="Delimiter">.</span>value<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;:offset</span><span class="Constant">&quot; &lt;&lt; end();</span>
+<span id="L128" class="LineNr">128 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L167'>trace</a><span class="Delimiter">(</span><span class="Constant">9992</span><span class="Delimiter">,</span> <span class="Constant">&quot;transform&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;jump &quot;</span> &lt;&lt; no_scientific<span class="Delimiter">(</span>target<span class="Delimiter">.</span>value<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;:offset</span><span class="Constant">&quot; &lt;&lt; end();</span>
 <span id="L129" class="LineNr">129 </span>  <span class="Conceal">¦</span> <span class="Normal">else</span>
-<span id="L130" class="LineNr">130 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">9992</span><span class="Delimiter">,</span> <span class="Constant">&quot;transform&quot;</span><span class="Delimiter">)</span> &lt;&lt; inst<span class="Delimiter">.</span>name &lt;&lt; <span class="Constant">' '</span> &lt;&lt; inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>name &lt;&lt; <span class="Constant">&quot;, &quot;</span> &lt;&lt; no_scientific<span class="Delimiter">(</span>target<span class="Delimiter">.</span>value<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;:offset</span><span class="Constant">&quot; &lt;&lt; end();</span>
+<span id="L130" class="LineNr">130 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L167'>trace</a><span class="Delimiter">(</span><span class="Constant">9992</span><span class="Delimiter">,</span> <span class="Constant">&quot;transform&quot;</span><span class="Delimiter">)</span> &lt;&lt; inst<span class="Delimiter">.</span>name &lt;&lt; <span class="Constant">' '</span> &lt;&lt; inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>name &lt;&lt; <span class="Constant">&quot;, &quot;</span> &lt;&lt; no_scientific<span class="Delimiter">(</span>target<span class="Delimiter">.</span>value<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;:offset</span><span class="Constant">&quot; &lt;&lt; end();</span>
 <span id="L131" class="LineNr">131 </span>  <span class="Delimiter">}</span>
 <span id="L132" class="LineNr">132 </span><span class="Delimiter">}</span>
 <span id="L133" class="LineNr">133 </span>
@@ -198,12 +198,12 @@ if ('onhashchange' in window) {
 <span id="L135" class="LineNr">135 </span><span class="Comment">// enable future signed arithmetic</span>
 <span id="L136" class="LineNr">136 </span><span class="Normal">int</span> <a href='040brace.cc.html#L136'>matching_brace</a><span class="Delimiter">(</span><span class="Normal">int</span> index<span class="Delimiter">,</span> <span class="Normal">const</span> list&lt;pair&lt;<span class="Normal">int</span><span class="Delimiter">,</span> <span class="Normal">int</span>&gt; &gt;&amp; braces<span class="Delimiter">,</span> <a href='010vm.cc.html#L14'>recipe_ordinal</a> r<span class="Delimiter">)</span> <span class="Delimiter">{</span>
 <span id="L137" class="LineNr">137 </span>  <span class="Normal">int</span> stacksize = <span class="Constant">0</span><span class="Delimiter">;</span>
-<span id="L138" class="LineNr">138 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span>list&lt;pair&lt;<span class="Normal">int</span><span class="Delimiter">,</span> <span class="Normal">int</span>&gt; &gt;::const_iterator p = braces<span class="Delimiter">.</span>begin<span class="Delimiter">();</span>  p != braces<span class="Delimiter">.</span><a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>  ++p<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L138" class="LineNr">138 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span>list&lt;pair&lt;<span class="Normal">int</span><span class="Delimiter">,</span> <span class="Normal">int</span>&gt; &gt;::const_iterator p = braces<span class="Delimiter">.</span>begin<span class="Delimiter">();</span>  p != braces<span class="Delimiter">.</span><a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>  ++p<span class="Delimiter">)</span> <span class="Delimiter">{</span>
 <span id="L139" class="LineNr">139 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>p<span class="Delimiter">-&gt;</span>second &lt; index<span class="Delimiter">)</span> <span class="Identifier">continue</span><span class="Delimiter">;</span>
 <span id="L140" class="LineNr">140 </span>  <span class="Conceal">¦</span> stacksize += <span class="Delimiter">(</span>p<span class="Delimiter">-&gt;</span>first ? <span class="Constant">1</span> : -<span class="Constant">1</span><span class="Delimiter">);</span>
 <span id="L141" class="LineNr">141 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>stacksize == <span class="Constant">0</span><span class="Delimiter">)</span> <span class="Identifier">return</span> p<span class="Delimiter">-&gt;</span>second<span class="Delimiter">;</span>
 <span id="L142" class="LineNr">142 </span>  <span class="Delimiter">}</span>
-<span id="L143" class="LineNr">143 </span>  <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;unbalanced '{'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L143" class="LineNr">143 </span>  <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;unbalanced '{'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L144" class="LineNr">144 </span>  <span class="Identifier">return</span> <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>steps<span class="Delimiter">);</span>  <span class="Comment">// exit current routine</span>
 <span id="L145" class="LineNr">145 </span><span class="Delimiter">}</span>
 <span id="L146" class="LineNr">146 </span>
@@ -460,7 +460,7 @@ if ('onhashchange' in window) {
 <span id="L397" class="LineNr">397 </span>  <span class="Conceal">¦</span> curr<span class="Delimiter">.</span><a href='050scenario.cc.html#L60'>clear</a><span class="Delimiter">();</span>
 <span id="L398" class="LineNr">398 </span>  <span class="Delimiter">}</span>
 <span id="L399" class="LineNr">399 </span>  <span class="Normal">else</span> <span class="Delimiter">{</span>
-<span id="L400" class="LineNr">400 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <span class="Constant">&quot;'&quot;</span> &lt;&lt; curr<span class="Delimiter">.</span>name &lt;&lt; <span class="Constant">&quot;' never yields any products</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L400" class="LineNr">400 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <span class="Constant">&quot;'&quot;</span> &lt;&lt; curr<span class="Delimiter">.</span>name &lt;&lt; <span class="Constant">&quot;' never yields any products</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L401" class="LineNr">401 </span>  <span class="Delimiter">}</span>
 <span id="L402" class="LineNr">402 </span><span class="Delimiter">}</span>
 <span id="L403" class="LineNr">403 </span><span class="Comment">// rewrite 'return-unless a, b, c, ...' to</span>
@@ -476,7 +476,7 @@ if ('onhashchange' in window) {
 <span id="L413" class="LineNr">413 </span>  <span class="Conceal">¦</span> curr<span class="Delimiter">.</span><a href='050scenario.cc.html#L60'>clear</a><span class="Delimiter">();</span>
 <span id="L414" class="LineNr">414 </span>  <span class="Delimiter">}</span>
 <span id="L415" class="LineNr">415 </span>  <span class="Normal">else</span> <span class="Delimiter">{</span>
-<span id="L416" class="LineNr">416 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <span class="Constant">&quot;'&quot;</span> &lt;&lt; curr<span class="Delimiter">.</span>name &lt;&lt; <span class="Constant">&quot;' never yields any products</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L416" class="LineNr">416 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <span class="Constant">&quot;'&quot;</span> &lt;&lt; curr<span class="Delimiter">.</span>name &lt;&lt; <span class="Constant">&quot;' never yields any products</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L417" class="LineNr">417 </span>  <span class="Delimiter">}</span>
 <span id="L418" class="LineNr">418 </span><span class="Delimiter">}</span>
 <span id="L419" class="LineNr">419 </span>
@@ -485,7 +485,7 @@ if ('onhashchange' in window) {
 <span id="L422" class="LineNr">422 </span>  <span class="Normal">const</span> vector&lt;reagent&gt;&amp; ingredients = inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">;</span>
 <span id="L423" class="LineNr">423 </span>  reagent<span class="Comment">/*</span><span class="Comment">copy</span><span class="Comment">*/</span> condition = ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">);</span>
 <span id="L424" class="LineNr">424 </span>  vector&lt;reagent&gt; return_ingredients<span class="Delimiter">;</span>
-<span id="L425" class="LineNr">425 </span>  copy<span class="Delimiter">(</span>++ingredients<span class="Delimiter">.</span>begin<span class="Delimiter">(),</span> ingredients<span class="Delimiter">.</span><a href='003trace.cc.html#L197'>end</a><span class="Delimiter">(),</span> inserter<span class="Delimiter">(</span>return_ingredients<span class="Delimiter">,</span> return_ingredients<span class="Delimiter">.</span><a href='003trace.cc.html#L197'>end</a><span class="Delimiter">()));</span>
+<span id="L425" class="LineNr">425 </span>  copy<span class="Delimiter">(</span>++ingredients<span class="Delimiter">.</span>begin<span class="Delimiter">(),</span> ingredients<span class="Delimiter">.</span><a href='003trace.cc.html#L203'>end</a><span class="Delimiter">(),</span> inserter<span class="Delimiter">(</span>return_ingredients<span class="Delimiter">,</span> return_ingredients<span class="Delimiter">.</span><a href='003trace.cc.html#L203'>end</a><span class="Delimiter">()));</span>
 <span id="L426" class="LineNr">426 </span>
 <span id="L427" class="LineNr">427 </span>  <span class="Comment">// {</span>
 <span id="L428" class="LineNr">428 </span>  <a href='010vm.cc.html#L32'>instruction</a> open_label<span class="Delimiter">;</span>  open_label<span class="Delimiter">.</span>is_label=<span class="Constant">true</span><span class="Delimiter">;</span>  open_label<span class="Delimiter">.</span>label = <span class="Constant">&quot;{&quot;</span><span class="Delimiter">;</span>
diff --git a/html/041jump_target.cc.html b/html/041jump_target.cc.html
index 5ce32dc9..a378280e 100644
--- a/html/041jump_target.cc.html
+++ b/html/041jump_target.cc.html
@@ -103,7 +103,7 @@ if ('onhashchange' in window) {
 <span id="L39" class="LineNr"> 39 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='001help.cc.html#L221'>put</a><span class="Delimiter">(</span>offset<span class="Delimiter">,</span> inst<span class="Delimiter">.</span>label<span class="Delimiter">,</span> i<span class="Delimiter">);</span>
 <span id="L40" class="LineNr"> 40 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Delimiter">}</span>
 <span id="L41" class="LineNr"> 41 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">else</span> <span class="Delimiter">{</span>
-<span id="L42" class="LineNr"> 42 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;duplicate label '&quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>label &lt;&lt; <span class="Constant">&quot;'&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L42" class="LineNr"> 42 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;duplicate label '&quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>label &lt;&lt; <span class="Constant">&quot;'&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L43" class="LineNr"> 43 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Comment">// have all jumps skip some random but noticeable and deterministic amount of code</span>
 <span id="L44" class="LineNr"> 44 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='001help.cc.html#L221'>put</a><span class="Delimiter">(</span>offset<span class="Delimiter">,</span> inst<span class="Delimiter">.</span>label<span class="Delimiter">,</span> <span class="Constant">9999</span><span class="Delimiter">);</span>
 <span id="L45" class="LineNr"> 45 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Delimiter">}</span>
@@ -113,14 +113,14 @@ if ('onhashchange' in window) {
 <span id="L49" class="LineNr"> 49 </span>  <span class="Conceal">¦</span> instruction&amp; inst = get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>steps<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">);</span>
 <span id="L50" class="LineNr"> 50 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>inst<span class="Delimiter">.</span>name == <span class="Constant">&quot;jump&quot;</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
 <span id="L51" class="LineNr"> 51 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>empty<span class="Delimiter">())</span> <span class="Delimiter">{</span>
-<span id="L52" class="LineNr"> 52 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;' expects an ingredient but got 0</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L52" class="LineNr"> 52 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;' expects an ingredient but got 0</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L53" class="LineNr"> 53 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Identifier">return</span><span class="Delimiter">;</span>
 <span id="L54" class="LineNr"> 54 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Delimiter">}</span>
 <span id="L55" class="LineNr"> 55 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='041jump_target.cc.html#L76'>replace_offset</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">),</span> offset<span class="Delimiter">,</span> i<span class="Delimiter">,</span> r<span class="Delimiter">);</span>
 <span id="L56" class="LineNr"> 56 </span>  <span class="Conceal">¦</span> <span class="Delimiter">}</span>
 <span id="L57" class="LineNr"> 57 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>inst<span class="Delimiter">.</span>name == <span class="Constant">&quot;jump-if&quot;</span> || inst<span class="Delimiter">.</span>name == <span class="Constant">&quot;jump-unless&quot;</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
 <span id="L58" class="LineNr"> 58 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">)</span> &lt; <span class="Constant">2</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L59" class="LineNr"> 59 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;' expects 2 ingredients but got &quot;</span> &lt;&lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">)</span> &lt;&lt; <span class="cSpecial">'\n'</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L59" class="LineNr"> 59 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;' expects 2 ingredients but got &quot;</span> &lt;&lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">)</span> &lt;&lt; <span class="cSpecial">'\n'</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L60" class="LineNr"> 60 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Identifier">return</span><span class="Delimiter">;</span>
 <span id="L61" class="LineNr"> 61 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Delimiter">}</span>
 <span id="L62" class="LineNr"> 62 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='041jump_target.cc.html#L76'>replace_offset</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">1</span><span class="Delimiter">),</span> offset<span class="Delimiter">,</span> i<span class="Delimiter">,</span> r<span class="Delimiter">);</span>
@@ -139,19 +139,19 @@ if ('onhashchange' in window) {
 <span id="L75" class="LineNr"> 75 </span>
 <span id="L76" class="LineNr"> 76 </span><span class="Normal">void</span> <a href='041jump_target.cc.html#L76'>replace_offset</a><span class="Delimiter">(</span>reagent&amp; x<span class="Delimiter">,</span> <span class="Comment">/*</span><span class="Comment">const</span><span class="Comment">*/</span> map&lt;string<span class="Delimiter">,</span> <span class="Normal">int</span>&gt;&amp; offset<span class="Delimiter">,</span> <span class="Normal">const</span> <span class="Normal">int</span> current_offset<span class="Delimiter">,</span> <span class="Normal">const</span> <a href='010vm.cc.html#L14'>recipe_ordinal</a> r<span class="Delimiter">)</span> <span class="Delimiter">{</span>
 <span id="L77" class="LineNr"> 77 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!is_literal<span class="Delimiter">(</span>x<span class="Delimiter">))</span> <span class="Delimiter">{</span>
-<span id="L78" class="LineNr"> 78 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;jump target must be offset or label but is '&quot;</span> &lt;&lt; x<span class="Delimiter">.</span>original_string &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L78" class="LineNr"> 78 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;jump target must be offset or label but is '&quot;</span> &lt;&lt; x<span class="Delimiter">.</span>original_string &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L79" class="LineNr"> 79 </span>  <span class="Conceal">¦</span> x<span class="Delimiter">.</span><a href='010vm.cc.html#L65'>set_value</a><span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">);</span>  <span class="Comment">// no jump by default</span>
 <span id="L80" class="LineNr"> 80 </span>  <span class="Conceal">¦</span> <span class="Identifier">return</span><span class="Delimiter">;</span>
 <span id="L81" class="LineNr"> 81 </span>  <span class="Delimiter">}</span>
 <span id="L82" class="LineNr"> 82 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>x<span class="Delimiter">.</span>initialized<span class="Delimiter">)</span> <span class="Identifier">return</span><span class="Delimiter">;</span>
 <span id="L83" class="LineNr"> 83 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span><a href='002test.cc.html#L85'>is_integer</a><span class="Delimiter">(</span>x<span class="Delimiter">.</span>name<span class="Delimiter">))</span> <span class="Identifier">return</span><span class="Delimiter">;</span>  <span class="Comment">// non-labels will be handled like other number operands</span>
 <span id="L84" class="LineNr"> 84 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!is_jump_target<span class="Delimiter">(</span>x<span class="Delimiter">.</span>name<span class="Delimiter">))</span> <span class="Delimiter">{</span>
-<span id="L85" class="LineNr"> 85 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;can't jump to label '&quot;</span> &lt;&lt; x<span class="Delimiter">.</span>name &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; end<span class="Delimiter">();</span>
+<span id="L85" class="LineNr"> 85 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;can't jump to label '&quot;</span> &lt;&lt; x<span class="Delimiter">.</span>name &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; end<span class="Delimiter">();</span>
 <span id="L86" class="LineNr"> 86 </span>  <span class="Conceal">¦</span> x<span class="Delimiter">.</span><a href='010vm.cc.html#L65'>set_value</a><span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">);</span>  <span class="Comment">// no jump by default</span>
 <span id="L87" class="LineNr"> 87 </span>  <span class="Conceal">¦</span> <span class="Identifier">return</span><span class="Delimiter">;</span>
 <span id="L88" class="LineNr"> 88 </span>  <span class="Delimiter">}</span>
 <span id="L89" class="LineNr"> 89 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!contains_key<span class="Delimiter">(</span>offset<span class="Delimiter">,</span> x<span class="Delimiter">.</span>name<span class="Delimiter">))</span> <span class="Delimiter">{</span>
-<span id="L90" class="LineNr"> 90 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;can't find label '&quot;</span> &lt;&lt; x<span class="Delimiter">.</span>name &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; end<span class="Delimiter">();</span>
+<span id="L90" class="LineNr"> 90 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;can't find label '&quot;</span> &lt;&lt; x<span class="Delimiter">.</span>name &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; end<span class="Delimiter">();</span>
 <span id="L91" class="LineNr"> 91 </span>  <span class="Conceal">¦</span> x<span class="Delimiter">.</span><a href='010vm.cc.html#L65'>set_value</a><span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">);</span>  <span class="Comment">// no jump by default</span>
 <span id="L92" class="LineNr"> 92 </span>  <span class="Conceal">¦</span> <span class="Identifier">return</span><span class="Delimiter">;</span>
 <span id="L93" class="LineNr"> 93 </span>  <span class="Delimiter">}</span>
diff --git a/html/042name.cc.html b/html/042name.cc.html
index 7d046a9f..36806f41 100644
--- a/html/042name.cc.html
+++ b/html/042name.cc.html
@@ -101,7 +101,7 @@ if ('onhashchange' in window) {
 <span id="L36" class="LineNr"> 36 </span><span class="Delimiter">:(code)</span>
 <span id="L37" class="LineNr"> 37 </span><span class="Normal">void</span> <a href='042name.cc.html#L37'>transform_names</a><span class="Delimiter">(</span><span class="Normal">const</span> <a href='010vm.cc.html#L14'>recipe_ordinal</a> r<span class="Delimiter">)</span> <span class="Delimiter">{</span>
 <span id="L38" class="LineNr"> 38 </span>  recipe&amp; caller = get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">);</span>
-<span id="L39" class="LineNr"> 39 </span>  <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">9991</span><span class="Delimiter">,</span> <span class="Constant">&quot;transform&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;--- <a href='012transform.cc.html#L99'>transform</a> names for <a href='010vm.cc.html#L19'>recipe</a> &quot;</span> &lt;&lt; caller<span class="Delimiter">.</span>name &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L39" class="LineNr"> 39 </span>  <a href='003trace.cc.html#L167'>trace</a><span class="Delimiter">(</span><span class="Constant">9991</span><span class="Delimiter">,</span> <span class="Constant">&quot;transform&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;--- <a href='012transform.cc.html#L99'>transform</a> names for <a href='010vm.cc.html#L19'>recipe</a> &quot;</span> &lt;&lt; caller<span class="Delimiter">.</span>name &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L40" class="LineNr"> 40 </span>  <span class="Normal">bool</span> names_used = <span class="Constant">false</span><span class="Delimiter">;</span>
 <span id="L41" class="LineNr"> 41 </span>  <span class="Normal">bool</span> numeric_locations_used = <span class="Constant">false</span><span class="Delimiter">;</span>
 <span id="L42" class="LineNr"> 42 </span>  map&lt;string<span class="Delimiter">,</span> <span class="Normal">int</span>&gt;&amp; names = Name[r]<span class="Delimiter">;</span>
@@ -114,287 +114,285 @@ if ('onhashchange' in window) {
 <span id="L49" class="LineNr"> 49 </span>  <span class="Conceal">¦</span> <span class="Comment">// map names to addresses</span>
 <span id="L50" class="LineNr"> 50 </span>  <span class="Conceal">¦</span> <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> in = <span class="Constant">0</span><span class="Delimiter">;</span>  in &lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">);</span>  ++in<span class="Delimiter">)</span> <span class="Delimiter">{</span>
 <span id="L51" class="LineNr"> 51 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> reagent&amp; ingredient = inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>in<span class="Delimiter">);</span>
-<span id="L52" class="LineNr"> 52 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Comment">// Begin transform_names Ingredient Special-cases(ingredient, inst, caller)</span>
-<span id="L53" class="LineNr"> 53 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span><a href='042name.cc.html#L99'>is_disqualified</a><span class="Delimiter">(</span>ingredient<span class="Delimiter">,</span> inst<span class="Delimiter">,</span> caller<span class="Delimiter">.</span>name<span class="Delimiter">))</span> <span class="Identifier">continue</span><span class="Delimiter">;</span>
-<span id="L54" class="LineNr"> 54 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span><a href='042name.cc.html#L148'>is_numeric_location</a><span class="Delimiter">(</span>ingredient<span class="Delimiter">))</span> numeric_locations_used = <span class="Constant">true</span><span class="Delimiter">;</span>
-<span id="L55" class="LineNr"> 55 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span><a href='042name.cc.html#L155'>is_named_location</a><span class="Delimiter">(</span>ingredient<span class="Delimiter">))</span> names_used = <span class="Constant">true</span><span class="Delimiter">;</span>
-<span id="L56" class="LineNr"> 56 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span><a href='002test.cc.html#L85'>is_integer</a><span class="Delimiter">(</span>ingredient<span class="Delimiter">.</span>name<span class="Delimiter">))</span> <span class="Identifier">continue</span><span class="Delimiter">;</span>
-<span id="L57" class="LineNr"> 57 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>!already_transformed<span class="Delimiter">(</span>ingredient<span class="Delimiter">,</span> names<span class="Delimiter">))</span> <span class="Delimiter">{</span>
-<span id="L58" class="LineNr"> 58 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>caller<span class="Delimiter">.</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;tried to read ingredient '&quot;</span> &lt;&lt; ingredient<span class="Delimiter">.</span>name &lt;&lt; <span class="Constant">&quot;' in '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;' but it hasn't been written to yet</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; end<span class="Delimiter">();</span>
-<span id="L59" class="LineNr"> 59 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Comment">// use-before-set Error</span>
-<span id="L60" class="LineNr"> 60 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Identifier">return</span><span class="Delimiter">;</span>
-<span id="L61" class="LineNr"> 61 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Delimiter">}</span>
-<span id="L62" class="LineNr"> 62 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">int</span> v = lookup_name<span class="Delimiter">(</span>ingredient<span class="Delimiter">,</span> r<span class="Delimiter">);</span>
-<span id="L63" class="LineNr"> 63 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>v &gt;= <span class="Constant">0</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L64" class="LineNr"> 64 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> ingredient<span class="Delimiter">.</span><a href='010vm.cc.html#L65'>set_value</a><span class="Delimiter">(</span>v<span class="Delimiter">);</span>
-<span id="L65" class="LineNr"> 65 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Comment">// Done Placing Ingredient(ingredient, inst, caller)</span>
-<span id="L66" class="LineNr"> 66 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Delimiter">}</span>
-<span id="L67" class="LineNr"> 67 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">else</span> <span class="Delimiter">{</span>
-<span id="L68" class="LineNr"> 68 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>caller<span class="Delimiter">.</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;can't find a place to store '&quot;</span> &lt;&lt; ingredient<span class="Delimiter">.</span>name &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; end<span class="Delimiter">();</span>
-<span id="L69" class="LineNr"> 69 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Identifier">return</span><span class="Delimiter">;</span>
-<span id="L70" class="LineNr"> 70 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Delimiter">}</span>
-<span id="L71" class="LineNr"> 71 </span>  <span class="Conceal">¦</span> <span class="Delimiter">}</span>
-<span id="L72" class="LineNr"> 72 </span>  <span class="Conceal">¦</span> <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> out = <span class="Constant">0</span><span class="Delimiter">;</span>  out &lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>products<span class="Delimiter">);</span>  ++out<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L73" class="LineNr"> 73 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> reagent&amp; product = inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span>out<span class="Delimiter">);</span>
-<span id="L74" class="LineNr"> 74 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Comment">// Begin transform_names Product Special-cases(product, inst, caller)</span>
-<span id="L75" class="LineNr"> 75 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span><a href='042name.cc.html#L99'>is_disqualified</a><span class="Delimiter">(</span>product<span class="Delimiter">,</span> inst<span class="Delimiter">,</span> caller<span class="Delimiter">.</span>name<span class="Delimiter">))</span> <span class="Identifier">continue</span><span class="Delimiter">;</span>
-<span id="L76" class="LineNr"> 76 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span><a href='042name.cc.html#L148'>is_numeric_location</a><span class="Delimiter">(</span>product<span class="Delimiter">))</span> numeric_locations_used = <span class="Constant">true</span><span class="Delimiter">;</span>
-<span id="L77" class="LineNr"> 77 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span><a href='042name.cc.html#L155'>is_named_location</a><span class="Delimiter">(</span>product<span class="Delimiter">))</span> names_used = <span class="Constant">true</span><span class="Delimiter">;</span>
-<span id="L78" class="LineNr"> 78 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span><a href='002test.cc.html#L85'>is_integer</a><span class="Delimiter">(</span>product<span class="Delimiter">.</span>name<span class="Delimiter">))</span> <span class="Identifier">continue</span><span class="Delimiter">;</span>
-<span id="L79" class="LineNr"> 79 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>names<span class="Delimiter">.</span>find<span class="Delimiter">(</span>product<span class="Delimiter">.</span>name<span class="Delimiter">)</span> == names<span class="Delimiter">.</span><a href='003trace.cc.html#L197'>end</a><span class="Delimiter">())</span> <span class="Delimiter">{</span>
-<span id="L80" class="LineNr"> 80 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">9993</span><span class="Delimiter">,</span> <span class="Constant">&quot;name&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;assign &quot;</span> &lt;&lt; product<span class="Delimiter">.</span>name &lt;&lt; <span class="Constant">&quot; &quot;</span> &lt;&lt; curr_idx &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
-<span id="L81" class="LineNr"> 81 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> names[product<span class="Delimiter">.</span>name] = curr_idx<span class="Delimiter">;</span>
-<span id="L82" class="LineNr"> 82 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> curr_idx += size_of<span class="Delimiter">(</span>product<span class="Delimiter">);</span>
-<span id="L83" class="LineNr"> 83 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Delimiter">}</span>
-<span id="L84" class="LineNr"> 84 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">int</span> v = lookup_name<span class="Delimiter">(</span>product<span class="Delimiter">,</span> r<span class="Delimiter">);</span>
-<span id="L85" class="LineNr"> 85 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>v &gt;= <span class="Constant">0</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L86" class="LineNr"> 86 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> product<span class="Delimiter">.</span><a href='010vm.cc.html#L65'>set_value</a><span class="Delimiter">(</span>v<span class="Delimiter">);</span>
-<span id="L87" class="LineNr"> 87 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Comment">// Done Placing Product(product, inst, caller)</span>
-<span id="L88" class="LineNr"> 88 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Delimiter">}</span>
-<span id="L89" class="LineNr"> 89 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">else</span> <span class="Delimiter">{</span>
-<span id="L90" class="LineNr"> 90 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>caller<span class="Delimiter">.</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;can't find a place to store '&quot;</span> &lt;&lt; product<span class="Delimiter">.</span>name &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; end<span class="Delimiter">();</span>
-<span id="L91" class="LineNr"> 91 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Identifier">return</span><span class="Delimiter">;</span>
-<span id="L92" class="LineNr"> 92 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Delimiter">}</span>
-<span id="L93" class="LineNr"> 93 </span>  <span class="Conceal">¦</span> <span class="Delimiter">}</span>
-<span id="L94" class="LineNr"> 94 </span>  <span class="Delimiter">}</span>
-<span id="L95" class="LineNr"> 95 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>names_used &amp;&amp; numeric_locations_used<span class="Delimiter">)</span>
-<span id="L96" class="LineNr"> 96 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>caller<span class="Delimiter">.</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;mixing variable names and numeric addresses</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
-<span id="L97" class="LineNr"> 97 </span><span class="Delimiter">}</span>
-<span id="L98" class="LineNr"> 98 </span>
-<span id="L99" class="LineNr"> 99 </span><span class="Normal">bool</span> <a href='042name.cc.html#L99'>is_disqualified</a><span class="Delimiter">(</span><span class="Comment">/*</span><span class="Comment">mutable</span><span class="Comment">*/</span> reagent&amp; x<span class="Delimiter">,</span> <span class="Normal">const</span> instruction&amp; inst<span class="Delimiter">,</span> <span class="Normal">const</span> string&amp; recipe_name<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L100" class="LineNr">100 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!x<span class="Delimiter">.</span>type<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L101" class="LineNr">101 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>recipe_name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;missing type for '&quot;</span> &lt;&lt; x<span class="Delimiter">.</span>original_string &lt;&lt; <span class="Constant">&quot;' in '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
-<span id="L102" class="LineNr">102 </span>  <span class="Conceal">¦</span> <span class="Comment">// missing-type Error 1</span>
-<span id="L103" class="LineNr">103 </span>  <span class="Conceal">¦</span> <span class="Identifier">return</span> <span class="Constant">true</span><span class="Delimiter">;</span>
-<span id="L104" class="LineNr">104 </span>  <span class="Delimiter">}</span>
-<span id="L105" class="LineNr">105 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span><a href='022arithmetic.cc.html#L108'>is_raw</a><span class="Delimiter">(</span>x<span class="Delimiter">))</span> <span class="Identifier">return</span> <span class="Constant">true</span><span class="Delimiter">;</span>
-<span id="L106" class="LineNr">106 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>is_literal<span class="Delimiter">(</span>x<span class="Delimiter">))</span> <span class="Identifier">return</span> <span class="Constant">true</span><span class="Delimiter">;</span>
-<span id="L107" class="LineNr">107 </span>  <span class="Comment">// End is_disqualified Special-cases</span>
-<span id="L108" class="LineNr">108 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>x<span class="Delimiter">.</span>initialized<span class="Delimiter">)</span> <span class="Identifier">return</span> <span class="Constant">true</span><span class="Delimiter">;</span>
-<span id="L109" class="LineNr">109 </span>  <span class="Identifier">return</span> <span class="Constant">false</span><span class="Delimiter">;</span>
-<span id="L110" class="LineNr">110 </span><span class="Delimiter">}</span>
-<span id="L111" class="LineNr">111 </span>
-<span id="L112" class="LineNr">112 </span><span class="Normal">bool</span> already_transformed<span class="Delimiter">(</span><span class="Normal">const</span> reagent&amp; r<span class="Delimiter">,</span> <span class="Normal">const</span> map&lt;string<span class="Delimiter">,</span> <span class="Normal">int</span>&gt;&amp; names<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L113" class="LineNr">113 </span>  <span class="Identifier">return</span> contains_key<span class="Delimiter">(</span>names<span class="Delimiter">,</span> r<span class="Delimiter">.</span>name<span class="Delimiter">);</span>
-<span id="L114" class="LineNr">114 </span><span class="Delimiter">}</span>
-<span id="L115" class="LineNr">115 </span>
-<span id="L116" class="LineNr">116 </span><span class="Normal">int</span> lookup_name<span class="Delimiter">(</span><span class="Normal">const</span> reagent&amp; r<span class="Delimiter">,</span> <span class="Normal">const</span> <a href='010vm.cc.html#L14'>recipe_ordinal</a> default_recipe<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L117" class="LineNr">117 </span>  <span class="Identifier">return</span> Name[default_recipe][r<span class="Delimiter">.</span>name]<span class="Delimiter">;</span>
-<span id="L118" class="LineNr">118 </span><span class="Delimiter">}</span>
-<span id="L119" class="LineNr">119 </span>
-<span id="L120" class="LineNr">120 </span><a href='010vm.cc.html#L123'>type_ordinal</a> <a href='042name.cc.html#L120'>skip_addresses</a><span class="Delimiter">(</span>type_tree* type<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L121" class="LineNr">121 </span>  <span class="Normal">while</span> <span class="Delimiter">(</span>type &amp;&amp; <a href='042name.cc.html#L133'>is_compound_type_starting_with</a><span class="Delimiter">(</span>type<span class="Delimiter">,</span> <span class="Constant">&quot;address&quot;</span><span class="Delimiter">))</span>
-<span id="L122" class="LineNr">122 </span>  <span class="Conceal">¦</span> type = type<span class="Delimiter">-&gt;</span>right<span class="Delimiter">;</span>
-<span id="L123" class="LineNr">123 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!type<span class="Delimiter">)</span> <span class="Identifier">return</span> -<span class="Constant">1</span><span class="Delimiter">;</span>  <span class="Comment">// error handled elsewhere</span>
-<span id="L124" class="LineNr">124 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>type<span class="Delimiter">-&gt;</span>atom<span class="Delimiter">)</span> <span class="Identifier">return</span> type<span class="Delimiter">-&gt;</span>value<span class="Delimiter">;</span>
-<span id="L125" class="LineNr">125 </span>  <span class="Normal">const</span> type_tree* base_type = type<span class="Delimiter">;</span>
-<span id="L126" class="LineNr">126 </span>  <span class="Comment">// Update base_type in skip_addresses</span>
-<span id="L127" class="LineNr">127 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>base_type<span class="Delimiter">-&gt;</span>atom<span class="Delimiter">)</span>
-<span id="L128" class="LineNr">128 </span>  <span class="Conceal">¦</span> <span class="Identifier">return</span> base_type<span class="Delimiter">-&gt;</span>value<span class="Delimiter">;</span>
-<span id="L129" class="LineNr">129 </span>  assert<span class="Delimiter">(</span>base_type<span class="Delimiter">-&gt;</span>left<span class="Delimiter">-&gt;</span>atom<span class="Delimiter">);</span>
-<span id="L130" class="LineNr">130 </span>  <span class="Identifier">return</span> base_type<span class="Delimiter">-&gt;</span>left<span class="Delimiter">-&gt;</span>value<span class="Delimiter">;</span>
-<span id="L131" class="LineNr">131 </span><span class="Delimiter">}</span>
-<span id="L132" class="LineNr">132 </span>
-<span id="L133" class="LineNr">133 </span><span class="Normal">bool</span> <a href='042name.cc.html#L133'>is_compound_type_starting_with</a><span class="Delimiter">(</span><span class="Normal">const</span> type_tree* type<span class="Delimiter">,</span> <span class="Normal">const</span> string&amp; expected_name<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L134" class="LineNr">134 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!type<span class="Delimiter">)</span> <span class="Identifier">return</span> <span class="Constant">false</span><span class="Delimiter">;</span>
-<span id="L135" class="LineNr">135 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>type<span class="Delimiter">-&gt;</span>atom<span class="Delimiter">)</span> <span class="Identifier">return</span> <span class="Constant">false</span><span class="Delimiter">;</span>
-<span id="L136" class="LineNr">136 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!type<span class="Delimiter">-&gt;</span>left<span class="Delimiter">-&gt;</span>atom<span class="Delimiter">)</span> <span class="Identifier">return</span> <span class="Constant">false</span><span class="Delimiter">;</span>
-<span id="L137" class="LineNr">137 </span>  <span class="Identifier">return</span> type<span class="Delimiter">-&gt;</span>left<span class="Delimiter">-&gt;</span>value == get<span class="Delimiter">(</span>Type_ordinal<span class="Delimiter">,</span> expected_name<span class="Delimiter">);</span>
-<span id="L138" class="LineNr">138 </span><span class="Delimiter">}</span>
-<span id="L139" class="LineNr">139 </span>
-<span id="L140" class="LineNr">140 </span><span class="Normal">int</span> <a href='042name.cc.html#L140'>find_element_name</a><span class="Delimiter">(</span><span class="Normal">const</span> <a href='010vm.cc.html#L123'>type_ordinal</a> t<span class="Delimiter">,</span> <span class="Normal">const</span> string&amp; name<span class="Delimiter">,</span> <span class="Normal">const</span> string&amp; recipe_name<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L141" class="LineNr">141 </span>  <span class="Normal">const</span> type_info&amp; container = get<span class="Delimiter">(</span>Type<span class="Delimiter">,</span> t<span class="Delimiter">);</span>
-<span id="L142" class="LineNr">142 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> i = <span class="Constant">0</span><span class="Delimiter">;</span>  i &lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>container<span class="Delimiter">.</span>elements<span class="Delimiter">);</span>  ++i<span class="Delimiter">)</span>
-<span id="L143" class="LineNr">143 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>container<span class="Delimiter">.</span>elements<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">).</span>name == name<span class="Delimiter">)</span> <span class="Identifier">return</span> i<span class="Delimiter">;</span>
-<span id="L144" class="LineNr">144 </span>  <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>recipe_name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;unknown element '&quot;</span> &lt;&lt; name &lt;&lt; <span class="Constant">&quot;' in container '&quot;</span> &lt;&lt; get<span class="Delimiter">(</span>Type<span class="Delimiter">,</span> t<span class="Delimiter">).</span>name &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
-<span id="L145" class="LineNr">145 </span>  <span class="Identifier">return</span> -<span class="Constant">1</span><span class="Delimiter">;</span>
-<span id="L146" class="LineNr">146 </span><span class="Delimiter">}</span>
-<span id="L147" class="LineNr">147 </span>
-<span id="L148" class="LineNr">148 </span><span class="Normal">bool</span> <a href='042name.cc.html#L148'>is_numeric_location</a><span class="Delimiter">(</span><span class="Normal">const</span> reagent&amp; x<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L149" class="LineNr">149 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>is_literal<span class="Delimiter">(</span>x<span class="Delimiter">))</span> <span class="Identifier">return</span> <span class="Constant">false</span><span class="Delimiter">;</span>
-<span id="L150" class="LineNr">150 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span><a href='022arithmetic.cc.html#L108'>is_raw</a><span class="Delimiter">(</span>x<span class="Delimiter">))</span> <span class="Identifier">return</span> <span class="Constant">false</span><span class="Delimiter">;</span>
-<span id="L151" class="LineNr">151 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>x<span class="Delimiter">.</span>name == <span class="Constant">&quot;0&quot;</span><span class="Delimiter">)</span> <span class="Identifier">return</span> <span class="Constant">false</span><span class="Delimiter">;</span>  <span class="Comment">// used for chaining lexical scopes</span>
-<span id="L152" class="LineNr">152 </span>  <span class="Identifier">return</span> <a href='002test.cc.html#L85'>is_integer</a><span class="Delimiter">(</span>x<span class="Delimiter">.</span>name<span class="Delimiter">);</span>
-<span id="L153" class="LineNr">153 </span><span class="Delimiter">}</span>
-<span id="L154" class="LineNr">154 </span>
-<span id="L155" class="LineNr">155 </span><span class="Normal">bool</span> <a href='042name.cc.html#L155'>is_named_location</a><span class="Delimiter">(</span><span class="Normal">const</span> reagent&amp; x<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L156" class="LineNr">156 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>is_literal<span class="Delimiter">(</span>x<span class="Delimiter">))</span> <span class="Identifier">return</span> <span class="Constant">false</span><span class="Delimiter">;</span>
-<span id="L157" class="LineNr">157 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span><a href='022arithmetic.cc.html#L108'>is_raw</a><span class="Delimiter">(</span>x<span class="Delimiter">))</span> <span class="Identifier">return</span> <span class="Constant">false</span><span class="Delimiter">;</span>
-<span id="L158" class="LineNr">158 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span><a href='042name.cc.html#L163'>is_special_name</a><span class="Delimiter">(</span>x<span class="Delimiter">.</span>name<span class="Delimiter">))</span> <span class="Identifier">return</span> <span class="Constant">false</span><span class="Delimiter">;</span>
-<span id="L159" class="LineNr">159 </span>  <span class="Identifier">return</span> !is_integer<span class="Delimiter">(</span>x<span class="Delimiter">.</span>name<span class="Delimiter">);</span>
-<span id="L160" class="LineNr">160 </span><span class="Delimiter">}</span>
-<span id="L161" class="LineNr">161 </span>
-<span id="L162" class="LineNr">162 </span><span class="Comment">// all names here should either be disqualified or also in bind_special_scenario_names</span>
-<span id="L163" class="LineNr">163 </span><span class="Normal">bool</span> <a href='042name.cc.html#L163'>is_special_name</a><span class="Delimiter">(</span><span class="Normal">const</span> string&amp; s<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L164" class="LineNr">164 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>s == <span class="Constant">&quot;_&quot;</span><span class="Delimiter">)</span> <span class="Identifier">return</span> <span class="Constant">true</span><span class="Delimiter">;</span>
-<span id="L165" class="LineNr">165 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>s == <span class="Constant">&quot;0&quot;</span><span class="Delimiter">)</span> <span class="Identifier">return</span> <span class="Constant">true</span><span class="Delimiter">;</span>
-<span id="L166" class="LineNr">166 </span>  <span class="Comment">// End is_special_name Special-cases</span>
-<span id="L167" class="LineNr">167 </span>  <span class="Identifier">return</span> <span class="Constant">false</span><span class="Delimiter">;</span>
-<span id="L168" class="LineNr">168 </span><span class="Delimiter">}</span>
-<span id="L169" class="LineNr">169 </span>
-<span id="L170" class="LineNr">170 </span><span class="Delimiter">:(scenario transform_names_supports_containers)</span>
-<span id="L171" class="LineNr">171 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
-<span id="L172" class="LineNr">172 </span>  <span class="Normal">x</span>:point<span class="Special"> &lt;- </span>merge <span class="Constant">34</span><span class="Delimiter">,</span> <span class="Constant">35</span>
-<span id="L173" class="LineNr">173 </span>  <span class="Normal">y</span>:num<span class="Special"> &lt;- </span>copy <span class="Constant">3</span>
-<span id="L174" class="LineNr">174 </span>]
-<span id="L175" class="LineNr">175 </span><span class="traceContains">+name: assign x 1</span>
-<span id="L176" class="LineNr">176 </span><span class="Comment"># skip location 2 because x occupies two locations</span>
-<span id="L177" class="LineNr">177 </span><span class="traceContains">+name: assign y 3</span>
-<span id="L178" class="LineNr">178 </span>
-<span id="L179" class="LineNr">179 </span><span class="Delimiter">:(scenario transform_names_supports_static_arrays)</span>
-<span id="L180" class="LineNr">180 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
-<span id="L181" class="LineNr">181 </span>  <span class="Normal">x</span>:@:num:<span class="Constant">3</span><span class="Special"> &lt;- </span>create-array
-<span id="L182" class="LineNr">182 </span>  <span class="Normal">y</span>:num<span class="Special"> &lt;- </span>copy <span class="Constant">3</span>
-<span id="L183" class="LineNr">183 </span>]
-<span id="L184" class="LineNr">184 </span><span class="traceContains">+name: assign x 1</span>
-<span id="L185" class="LineNr">185 </span><span class="Comment"># skip locations 2, 3, 4 because x occupies four locations</span>
-<span id="L186" class="LineNr">186 </span><span class="traceContains">+name: assign y 5</span>
-<span id="L187" class="LineNr">187 </span>
-<span id="L188" class="LineNr">188 </span><span class="Delimiter">:(scenario transform_names_passes_dummy)</span>
-<span id="L189" class="LineNr">189 </span><span class="Comment"># _ is just a dummy result that never gets consumed</span>
-<span id="L190" class="LineNr">190 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
-<span id="L191" class="LineNr">191 </span>  _<span class="Delimiter">,</span> x:num<span class="Special"> &lt;- </span>copy <span class="Constant">0</span><span class="Delimiter">,</span> <span class="Constant">1</span>
-<span id="L192" class="LineNr">192 </span>]
-<span id="L193" class="LineNr">193 </span><span class="traceContains">+name: assign x 1</span>
-<span id="L194" class="LineNr">194 </span><span class="traceAbsent">-name: assign _ 1</span>
-<span id="L195" class="LineNr">195 </span>
-<span id="L196" class="LineNr">196 </span><span class="Comment">//: an escape hatch to suppress name conversion that we'll use later</span>
-<span id="L197" class="LineNr">197 </span><span class="Delimiter">:(scenarios run)</span>
-<span id="L198" class="LineNr">198 </span><span class="Delimiter">:(scenario transform_names_passes_raw)</span>
-<span id="L199" class="LineNr">199 </span><span class="Special">% Hide_errors = true;</span>
-<span id="L200" class="LineNr">200 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
-<span id="L201" class="LineNr">201 </span>  <span class="Normal">x</span>:num/<span class="Special">raw &lt;- </span>copy <span class="Constant">0</span>
-<span id="L202" class="LineNr">202 </span>]
-<span id="L203" class="LineNr">203 </span><span class="traceAbsent">-name: assign x 1</span>
-<span id="L204" class="LineNr">204 </span><span class="traceContains">+error: can't write to location 0 in 'x:num/raw &lt;- copy 0'</span>
-<span id="L205" class="LineNr">205 </span>
-<span id="L206" class="LineNr">206 </span><span class="Delimiter">:(scenarios transform)</span>
-<span id="L207" class="LineNr">207 </span><span class="Delimiter">:(scenario transform_names_fails_when_mixing_names_and_numeric_locations)</span>
-<span id="L208" class="LineNr">208 </span><span class="Special">% Hide_errors = true;</span>
-<span id="L209" class="LineNr">209 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
-<span id="L210" class="LineNr">210 </span>  <span class="Normal">x</span>:num<span class="Special"> &lt;- </span>copy <span class="Constant">1</span>:num
-<span id="L211" class="LineNr">211 </span>]
-<span id="L212" class="LineNr">212 </span><span class="traceContains">+error: <a href='000organization.cc.html#L113'>main</a>: mixing variable names and numeric addresses</span>
-<span id="L213" class="LineNr">213 </span>
-<span id="L214" class="LineNr">214 </span><span class="Delimiter">:(scenario transform_names_fails_when_mixing_names_and_numeric_locations_2)</span>
-<span id="L215" class="LineNr">215 </span><span class="Special">% Hide_errors = true;</span>
-<span id="L216" class="LineNr">216 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
-<span id="L217" class="LineNr">217 </span>  <span class="Normal">x</span>:num<span class="Special"> &lt;- </span>copy <span class="Constant">1</span>
-<span id="L218" class="LineNr">218 </span>  <span class="Constant">1</span>:num<span class="Special"> &lt;- </span>copy x:num
-<span id="L219" class="LineNr">219 </span>]
-<span id="L220" class="LineNr">220 </span><span class="traceContains">+error: <a href='000organization.cc.html#L113'>main</a>: mixing variable names and numeric addresses</span>
-<span id="L221" class="LineNr">221 </span>
-<span id="L222" class="LineNr">222 </span><span class="Delimiter">:(scenario transform_names_does_not_fail_when_mixing_names_and_raw_locations)</span>
-<span id="L223" class="LineNr">223 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
-<span id="L224" class="LineNr">224 </span>  <span class="Normal">x</span>:num<span class="Special"> &lt;- </span>copy <span class="Constant">1</span>:num/<span class="Special">raw</span>
-<span id="L225" class="LineNr">225 </span>]
-<span id="L226" class="LineNr">226 </span><span class="traceAbsent">-error: <a href='000organization.cc.html#L113'>main</a>: mixing variable names and numeric addresses</span>
-<span id="L227" class="LineNr">227 </span>$error: <span class="Constant">0</span>
-<span id="L228" class="LineNr">228 </span>
-<span id="L229" class="LineNr">229 </span><span class="Delimiter">:(scenario transform_names_does_not_fail_when_mixing_names_and_literals)</span>
-<span id="L230" class="LineNr">230 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
-<span id="L231" class="LineNr">231 </span>  <span class="Normal">x</span>:num<span class="Special"> &lt;- </span>copy <span class="Constant">1</span>
-<span id="L232" class="LineNr">232 </span>]
-<span id="L233" class="LineNr">233 </span><span class="traceAbsent">-error: <a href='000organization.cc.html#L113'>main</a>: mixing variable names and numeric addresses</span>
-<span id="L234" class="LineNr">234 </span>$error: <span class="Constant">0</span>
-<span id="L235" class="LineNr">235 </span>
-<span id="L236" class="LineNr">236 </span><span class="SalientComment">//:: Support element names for containers in 'get' and 'get-location' and 'put'.</span>
-<span id="L237" class="LineNr">237 </span><span class="Comment">//: (get-location is implemented later)</span>
-<span id="L238" class="LineNr">238 </span>
-<span id="L239" class="LineNr">239 </span><span class="Delimiter">:(before &quot;End update GET offset_value in Check&quot;)</span>
-<span id="L240" class="LineNr">240 </span><span class="Normal">else</span> <span class="Delimiter">{</span>
-<span id="L241" class="LineNr">241 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!offset<span class="Delimiter">.</span>initialized<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L242" class="LineNr">242 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;uninitialized offset '&quot;</span> &lt;&lt; offset<span class="Delimiter">.</span>name &lt;&lt; <span class="Constant">&quot;' in '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
-<span id="L243" class="LineNr">243 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
-<span id="L244" class="LineNr">244 </span>  <span class="Delimiter">}</span>
-<span id="L245" class="LineNr">245 </span>  offset_value = offset<span class="Delimiter">.</span>value<span class="Delimiter">;</span>
-<span id="L246" class="LineNr">246 </span><span class="Delimiter">}</span>
-<span id="L247" class="LineNr">247 </span>
-<span id="L248" class="LineNr">248 </span><span class="Delimiter">:(scenario transform_names_transforms_container_elements)</span>
-<span id="L249" class="LineNr">249 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
-<span id="L250" class="LineNr">250 </span>  <span class="Normal">p</span>:&amp;:point<span class="Special"> &lt;- </span>copy <span class="Constant">0</span>
-<span id="L251" class="LineNr">251 </span>  <span class="Normal">a</span>:num<span class="Special"> &lt;- </span>get *p:&amp;:point<span class="Delimiter">,</span> <span class="Constant">y:offset</span>
-<span id="L252" class="LineNr">252 </span>  <span class="Normal">b</span>:num<span class="Special"> &lt;- </span>get *p:&amp;:point<span class="Delimiter">,</span> <span class="Constant">x:offset</span>
-<span id="L253" class="LineNr">253 </span>]
-<span id="L254" class="LineNr">254 </span><span class="traceContains">+name: element y of type point is at offset 1</span>
-<span id="L255" class="LineNr">255 </span><span class="traceContains">+name: element x of type point is at offset 0</span>
-<span id="L256" class="LineNr">256 </span>
-<span id="L257" class="LineNr">257 </span><span class="Delimiter">:(before &quot;End transform_names(inst) Special-cases&quot;)</span>
-<span id="L258" class="LineNr">258 </span><span class="Comment">// replace element names of containers with offsets</span>
-<span id="L259" class="LineNr">259 </span><span class="Normal">if</span> <span class="Delimiter">(</span>inst<span class="Delimiter">.</span>name == <span class="Constant">&quot;get&quot;</span> || inst<span class="Delimiter">.</span>name == <span class="Constant">&quot;get-location&quot;</span> || inst<span class="Delimiter">.</span>name == <span class="Constant">&quot;put&quot;</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L260" class="LineNr">260 </span>  <span class="Comment">//: avoid raising any errors here; later layers will support overloading new</span>
-<span id="L261" class="LineNr">261 </span>  <span class="Comment">//: instructions with the same names (static dispatch), which could lead to</span>
-<span id="L262" class="LineNr">262 </span>  <span class="Comment">//: spurious errors</span>
-<span id="L263" class="LineNr">263 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">)</span> &lt; <span class="Constant">2</span><span class="Delimiter">)</span>
+<span id="L52" class="LineNr"> 52 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span><a href='042name.cc.html#L97'>is_disqualified</a><span class="Delimiter">(</span>ingredient<span class="Delimiter">,</span> inst<span class="Delimiter">,</span> caller<span class="Delimiter">.</span>name<span class="Delimiter">))</span> <span class="Identifier">continue</span><span class="Delimiter">;</span>
+<span id="L53" class="LineNr"> 53 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span><a href='042name.cc.html#L146'>is_numeric_location</a><span class="Delimiter">(</span>ingredient<span class="Delimiter">))</span> numeric_locations_used = <span class="Constant">true</span><span class="Delimiter">;</span>
+<span id="L54" class="LineNr"> 54 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span><a href='042name.cc.html#L153'>is_named_location</a><span class="Delimiter">(</span>ingredient<span class="Delimiter">))</span> names_used = <span class="Constant">true</span><span class="Delimiter">;</span>
+<span id="L55" class="LineNr"> 55 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span><a href='002test.cc.html#L85'>is_integer</a><span class="Delimiter">(</span>ingredient<span class="Delimiter">.</span>name<span class="Delimiter">))</span> <span class="Identifier">continue</span><span class="Delimiter">;</span>
+<span id="L56" class="LineNr"> 56 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>!already_transformed<span class="Delimiter">(</span>ingredient<span class="Delimiter">,</span> names<span class="Delimiter">))</span> <span class="Delimiter">{</span>
+<span id="L57" class="LineNr"> 57 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>caller<span class="Delimiter">.</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;tried to read ingredient '&quot;</span> &lt;&lt; ingredient<span class="Delimiter">.</span>name &lt;&lt; <span class="Constant">&quot;' in '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;' but it hasn't been written to yet</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; end<span class="Delimiter">();</span>
+<span id="L58" class="LineNr"> 58 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Comment">// use-before-set Error</span>
+<span id="L59" class="LineNr"> 59 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Identifier">return</span><span class="Delimiter">;</span>
+<span id="L60" class="LineNr"> 60 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Delimiter">}</span>
+<span id="L61" class="LineNr"> 61 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">int</span> v = lookup_name<span class="Delimiter">(</span>ingredient<span class="Delimiter">,</span> r<span class="Delimiter">);</span>
+<span id="L62" class="LineNr"> 62 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>v &gt;= <span class="Constant">0</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L63" class="LineNr"> 63 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> ingredient<span class="Delimiter">.</span><a href='010vm.cc.html#L65'>set_value</a><span class="Delimiter">(</span>v<span class="Delimiter">);</span>
+<span id="L64" class="LineNr"> 64 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Comment">// Done Placing Ingredient(ingredient, inst, caller)</span>
+<span id="L65" class="LineNr"> 65 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Delimiter">}</span>
+<span id="L66" class="LineNr"> 66 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">else</span> <span class="Delimiter">{</span>
+<span id="L67" class="LineNr"> 67 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>caller<span class="Delimiter">.</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;can't find a place to store '&quot;</span> &lt;&lt; ingredient<span class="Delimiter">.</span>name &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; end<span class="Delimiter">();</span>
+<span id="L68" class="LineNr"> 68 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Identifier">return</span><span class="Delimiter">;</span>
+<span id="L69" class="LineNr"> 69 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Delimiter">}</span>
+<span id="L70" class="LineNr"> 70 </span>  <span class="Conceal">¦</span> <span class="Delimiter">}</span>
+<span id="L71" class="LineNr"> 71 </span>  <span class="Conceal">¦</span> <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> out = <span class="Constant">0</span><span class="Delimiter">;</span>  out &lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>products<span class="Delimiter">);</span>  ++out<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L72" class="LineNr"> 72 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> reagent&amp; product = inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span>out<span class="Delimiter">);</span>
+<span id="L73" class="LineNr"> 73 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span><a href='042name.cc.html#L97'>is_disqualified</a><span class="Delimiter">(</span>product<span class="Delimiter">,</span> inst<span class="Delimiter">,</span> caller<span class="Delimiter">.</span>name<span class="Delimiter">))</span> <span class="Identifier">continue</span><span class="Delimiter">;</span>
+<span id="L74" class="LineNr"> 74 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span><a href='042name.cc.html#L146'>is_numeric_location</a><span class="Delimiter">(</span>product<span class="Delimiter">))</span> numeric_locations_used = <span class="Constant">true</span><span class="Delimiter">;</span>
+<span id="L75" class="LineNr"> 75 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span><a href='042name.cc.html#L153'>is_named_location</a><span class="Delimiter">(</span>product<span class="Delimiter">))</span> names_used = <span class="Constant">true</span><span class="Delimiter">;</span>
+<span id="L76" class="LineNr"> 76 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span><a href='002test.cc.html#L85'>is_integer</a><span class="Delimiter">(</span>product<span class="Delimiter">.</span>name<span class="Delimiter">))</span> <span class="Identifier">continue</span><span class="Delimiter">;</span>
+<span id="L77" class="LineNr"> 77 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>names<span class="Delimiter">.</span>find<span class="Delimiter">(</span>product<span class="Delimiter">.</span>name<span class="Delimiter">)</span> == names<span class="Delimiter">.</span><a href='003trace.cc.html#L203'>end</a><span class="Delimiter">())</span> <span class="Delimiter">{</span>
+<span id="L78" class="LineNr"> 78 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L167'>trace</a><span class="Delimiter">(</span><span class="Constant">9993</span><span class="Delimiter">,</span> <span class="Constant">&quot;name&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;assign &quot;</span> &lt;&lt; product<span class="Delimiter">.</span>name &lt;&lt; <span class="Constant">&quot; &quot;</span> &lt;&lt; curr_idx &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
+<span id="L79" class="LineNr"> 79 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> names[product<span class="Delimiter">.</span>name] = curr_idx<span class="Delimiter">;</span>
+<span id="L80" class="LineNr"> 80 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> curr_idx += size_of<span class="Delimiter">(</span>product<span class="Delimiter">);</span>
+<span id="L81" class="LineNr"> 81 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Delimiter">}</span>
+<span id="L82" class="LineNr"> 82 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">int</span> v = lookup_name<span class="Delimiter">(</span>product<span class="Delimiter">,</span> r<span class="Delimiter">);</span>
+<span id="L83" class="LineNr"> 83 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>v &gt;= <span class="Constant">0</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L84" class="LineNr"> 84 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> product<span class="Delimiter">.</span><a href='010vm.cc.html#L65'>set_value</a><span class="Delimiter">(</span>v<span class="Delimiter">);</span>
+<span id="L85" class="LineNr"> 85 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Comment">// Done Placing Product(product, inst, caller)</span>
+<span id="L86" class="LineNr"> 86 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Delimiter">}</span>
+<span id="L87" class="LineNr"> 87 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">else</span> <span class="Delimiter">{</span>
+<span id="L88" class="LineNr"> 88 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>caller<span class="Delimiter">.</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;can't find a place to store '&quot;</span> &lt;&lt; product<span class="Delimiter">.</span>name &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; end<span class="Delimiter">();</span>
+<span id="L89" class="LineNr"> 89 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Identifier">return</span><span class="Delimiter">;</span>
+<span id="L90" class="LineNr"> 90 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Delimiter">}</span>
+<span id="L91" class="LineNr"> 91 </span>  <span class="Conceal">¦</span> <span class="Delimiter">}</span>
+<span id="L92" class="LineNr"> 92 </span>  <span class="Delimiter">}</span>
+<span id="L93" class="LineNr"> 93 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>names_used &amp;&amp; numeric_locations_used<span class="Delimiter">)</span>
+<span id="L94" class="LineNr"> 94 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>caller<span class="Delimiter">.</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;mixing variable names and numeric addresses</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
+<span id="L95" class="LineNr"> 95 </span><span class="Delimiter">}</span>
+<span id="L96" class="LineNr"> 96 </span>
+<span id="L97" class="LineNr"> 97 </span><span class="Normal">bool</span> <a href='042name.cc.html#L97'>is_disqualified</a><span class="Delimiter">(</span><span class="Comment">/*</span><span class="Comment">mutable</span><span class="Comment">*/</span> reagent&amp; x<span class="Delimiter">,</span> <span class="Normal">const</span> instruction&amp; inst<span class="Delimiter">,</span> <span class="Normal">const</span> string&amp; recipe_name<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L98" class="LineNr"> 98 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!x<span class="Delimiter">.</span>type<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L99" class="LineNr"> 99 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>recipe_name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;missing type for '&quot;</span> &lt;&lt; x<span class="Delimiter">.</span>original_string &lt;&lt; <span class="Constant">&quot;' in '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
+<span id="L100" class="LineNr">100 </span>  <span class="Conceal">¦</span> <span class="Comment">// missing-type Error 1</span>
+<span id="L101" class="LineNr">101 </span>  <span class="Conceal">¦</span> <span class="Identifier">return</span> <span class="Constant">true</span><span class="Delimiter">;</span>
+<span id="L102" class="LineNr">102 </span>  <span class="Delimiter">}</span>
+<span id="L103" class="LineNr">103 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span><a href='022arithmetic.cc.html#L108'>is_raw</a><span class="Delimiter">(</span>x<span class="Delimiter">))</span> <span class="Identifier">return</span> <span class="Constant">true</span><span class="Delimiter">;</span>
+<span id="L104" class="LineNr">104 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>is_literal<span class="Delimiter">(</span>x<span class="Delimiter">))</span> <span class="Identifier">return</span> <span class="Constant">true</span><span class="Delimiter">;</span>
+<span id="L105" class="LineNr">105 </span>  <span class="Comment">// End is_disqualified Special-cases</span>
+<span id="L106" class="LineNr">106 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>x<span class="Delimiter">.</span>initialized<span class="Delimiter">)</span> <span class="Identifier">return</span> <span class="Constant">true</span><span class="Delimiter">;</span>
+<span id="L107" class="LineNr">107 </span>  <span class="Identifier">return</span> <span class="Constant">false</span><span class="Delimiter">;</span>
+<span id="L108" class="LineNr">108 </span><span class="Delimiter">}</span>
+<span id="L109" class="LineNr">109 </span>
+<span id="L110" class="LineNr">110 </span><span class="Normal">bool</span> already_transformed<span class="Delimiter">(</span><span class="Normal">const</span> reagent&amp; r<span class="Delimiter">,</span> <span class="Normal">const</span> map&lt;string<span class="Delimiter">,</span> <span class="Normal">int</span>&gt;&amp; names<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L111" class="LineNr">111 </span>  <span class="Identifier">return</span> contains_key<span class="Delimiter">(</span>names<span class="Delimiter">,</span> r<span class="Delimiter">.</span>name<span class="Delimiter">);</span>
+<span id="L112" class="LineNr">112 </span><span class="Delimiter">}</span>
+<span id="L113" class="LineNr">113 </span>
+<span id="L114" class="LineNr">114 </span><span class="Normal">int</span> lookup_name<span class="Delimiter">(</span><span class="Normal">const</span> reagent&amp; r<span class="Delimiter">,</span> <span class="Normal">const</span> <a href='010vm.cc.html#L14'>recipe_ordinal</a> default_recipe<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L115" class="LineNr">115 </span>  <span class="Identifier">return</span> Name[default_recipe][r<span class="Delimiter">.</span>name]<span class="Delimiter">;</span>
+<span id="L116" class="LineNr">116 </span><span class="Delimiter">}</span>
+<span id="L117" class="LineNr">117 </span>
+<span id="L118" class="LineNr">118 </span><a href='010vm.cc.html#L123'>type_ordinal</a> <a href='042name.cc.html#L118'>skip_addresses</a><span class="Delimiter">(</span>type_tree* type<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L119" class="LineNr">119 </span>  <span class="Normal">while</span> <span class="Delimiter">(</span>type &amp;&amp; <a href='042name.cc.html#L131'>is_compound_type_starting_with</a><span class="Delimiter">(</span>type<span class="Delimiter">,</span> <span class="Constant">&quot;address&quot;</span><span class="Delimiter">))</span>
+<span id="L120" class="LineNr">120 </span>  <span class="Conceal">¦</span> type = type<span class="Delimiter">-&gt;</span>right<span class="Delimiter">;</span>
+<span id="L121" class="LineNr">121 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!type<span class="Delimiter">)</span> <span class="Identifier">return</span> -<span class="Constant">1</span><span class="Delimiter">;</span>  <span class="Comment">// error handled elsewhere</span>
+<span id="L122" class="LineNr">122 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>type<span class="Delimiter">-&gt;</span>atom<span class="Delimiter">)</span> <span class="Identifier">return</span> type<span class="Delimiter">-&gt;</span>value<span class="Delimiter">;</span>
+<span id="L123" class="LineNr">123 </span>  <span class="Normal">const</span> type_tree* base_type = type<span class="Delimiter">;</span>
+<span id="L124" class="LineNr">124 </span>  <span class="Comment">// Update base_type in skip_addresses</span>
+<span id="L125" class="LineNr">125 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>base_type<span class="Delimiter">-&gt;</span>atom<span class="Delimiter">)</span>
+<span id="L126" class="LineNr">126 </span>  <span class="Conceal">¦</span> <span class="Identifier">return</span> base_type<span class="Delimiter">-&gt;</span>value<span class="Delimiter">;</span>
+<span id="L127" class="LineNr">127 </span>  assert<span class="Delimiter">(</span>base_type<span class="Delimiter">-&gt;</span>left<span class="Delimiter">-&gt;</span>atom<span class="Delimiter">);</span>
+<span id="L128" class="LineNr">128 </span>  <span class="Identifier">return</span> base_type<span class="Delimiter">-&gt;</span>left<span class="Delimiter">-&gt;</span>value<span class="Delimiter">;</span>
+<span id="L129" class="LineNr">129 </span><span class="Delimiter">}</span>
+<span id="L130" class="LineNr">130 </span>
+<span id="L131" class="LineNr">131 </span><span class="Normal">bool</span> <a href='042name.cc.html#L131'>is_compound_type_starting_with</a><span class="Delimiter">(</span><span class="Normal">const</span> type_tree* type<span class="Delimiter">,</span> <span class="Normal">const</span> string&amp; expected_name<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L132" class="LineNr">132 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!type<span class="Delimiter">)</span> <span class="Identifier">return</span> <span class="Constant">false</span><span class="Delimiter">;</span>
+<span id="L133" class="LineNr">133 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>type<span class="Delimiter">-&gt;</span>atom<span class="Delimiter">)</span> <span class="Identifier">return</span> <span class="Constant">false</span><span class="Delimiter">;</span>
+<span id="L134" class="LineNr">134 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!type<span class="Delimiter">-&gt;</span>left<span class="Delimiter">-&gt;</span>atom<span class="Delimiter">)</span> <span class="Identifier">return</span> <span class="Constant">false</span><span class="Delimiter">;</span>
+<span id="L135" class="LineNr">135 </span>  <span class="Identifier">return</span> type<span class="Delimiter">-&gt;</span>left<span class="Delimiter">-&gt;</span>value == get<span class="Delimiter">(</span>Type_ordinal<span class="Delimiter">,</span> expected_name<span class="Delimiter">);</span>
+<span id="L136" class="LineNr">136 </span><span class="Delimiter">}</span>
+<span id="L137" class="LineNr">137 </span>
+<span id="L138" class="LineNr">138 </span><span class="Normal">int</span> <a href='042name.cc.html#L138'>find_element_name</a><span class="Delimiter">(</span><span class="Normal">const</span> <a href='010vm.cc.html#L123'>type_ordinal</a> t<span class="Delimiter">,</span> <span class="Normal">const</span> string&amp; name<span class="Delimiter">,</span> <span class="Normal">const</span> string&amp; recipe_name<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L139" class="LineNr">139 </span>  <span class="Normal">const</span> type_info&amp; container = get<span class="Delimiter">(</span>Type<span class="Delimiter">,</span> t<span class="Delimiter">);</span>
+<span id="L140" class="LineNr">140 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> i = <span class="Constant">0</span><span class="Delimiter">;</span>  i &lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>container<span class="Delimiter">.</span>elements<span class="Delimiter">);</span>  ++i<span class="Delimiter">)</span>
+<span id="L141" class="LineNr">141 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>container<span class="Delimiter">.</span>elements<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">).</span>name == name<span class="Delimiter">)</span> <span class="Identifier">return</span> i<span class="Delimiter">;</span>
+<span id="L142" class="LineNr">142 </span>  <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>recipe_name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;unknown element '&quot;</span> &lt;&lt; name &lt;&lt; <span class="Constant">&quot;' in container '&quot;</span> &lt;&lt; get<span class="Delimiter">(</span>Type<span class="Delimiter">,</span> t<span class="Delimiter">).</span>name &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
+<span id="L143" class="LineNr">143 </span>  <span class="Identifier">return</span> -<span class="Constant">1</span><span class="Delimiter">;</span>
+<span id="L144" class="LineNr">144 </span><span class="Delimiter">}</span>
+<span id="L145" class="LineNr">145 </span>
+<span id="L146" class="LineNr">146 </span><span class="Normal">bool</span> <a href='042name.cc.html#L146'>is_numeric_location</a><span class="Delimiter">(</span><span class="Normal">const</span> reagent&amp; x<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L147" class="LineNr">147 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>is_literal<span class="Delimiter">(</span>x<span class="Delimiter">))</span> <span class="Identifier">return</span> <span class="Constant">false</span><span class="Delimiter">;</span>
+<span id="L148" class="LineNr">148 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span><a href='022arithmetic.cc.html#L108'>is_raw</a><span class="Delimiter">(</span>x<span class="Delimiter">))</span> <span class="Identifier">return</span> <span class="Constant">false</span><span class="Delimiter">;</span>
+<span id="L149" class="LineNr">149 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>x<span class="Delimiter">.</span>name == <span class="Constant">&quot;0&quot;</span><span class="Delimiter">)</span> <span class="Identifier">return</span> <span class="Constant">false</span><span class="Delimiter">;</span>  <span class="Comment">// used for chaining lexical scopes</span>
+<span id="L150" class="LineNr">150 </span>  <span class="Identifier">return</span> <a href='002test.cc.html#L85'>is_integer</a><span class="Delimiter">(</span>x<span class="Delimiter">.</span>name<span class="Delimiter">);</span>
+<span id="L151" class="LineNr">151 </span><span class="Delimiter">}</span>
+<span id="L152" class="LineNr">152 </span>
+<span id="L153" class="LineNr">153 </span><span class="Normal">bool</span> <a href='042name.cc.html#L153'>is_named_location</a><span class="Delimiter">(</span><span class="Normal">const</span> reagent&amp; x<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L154" class="LineNr">154 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>is_literal<span class="Delimiter">(</span>x<span class="Delimiter">))</span> <span class="Identifier">return</span> <span class="Constant">false</span><span class="Delimiter">;</span>
+<span id="L155" class="LineNr">155 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span><a href='022arithmetic.cc.html#L108'>is_raw</a><span class="Delimiter">(</span>x<span class="Delimiter">))</span> <span class="Identifier">return</span> <span class="Constant">false</span><span class="Delimiter">;</span>
+<span id="L156" class="LineNr">156 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span><a href='042name.cc.html#L161'>is_special_name</a><span class="Delimiter">(</span>x<span class="Delimiter">.</span>name<span class="Delimiter">))</span> <span class="Identifier">return</span> <span class="Constant">false</span><span class="Delimiter">;</span>
+<span id="L157" class="LineNr">157 </span>  <span class="Identifier">return</span> !is_integer<span class="Delimiter">(</span>x<span class="Delimiter">.</span>name<span class="Delimiter">);</span>
+<span id="L158" class="LineNr">158 </span><span class="Delimiter">}</span>
+<span id="L159" class="LineNr">159 </span>
+<span id="L160" class="LineNr">160 </span><span class="Comment">// all names here should either be disqualified or also in bind_special_scenario_names</span>
+<span id="L161" class="LineNr">161 </span><span class="Normal">bool</span> <a href='042name.cc.html#L161'>is_special_name</a><span class="Delimiter">(</span><span class="Normal">const</span> string&amp; s<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L162" class="LineNr">162 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>s == <span class="Constant">&quot;_&quot;</span><span class="Delimiter">)</span> <span class="Identifier">return</span> <span class="Constant">true</span><span class="Delimiter">;</span>
+<span id="L163" class="LineNr">163 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>s == <span class="Constant">&quot;0&quot;</span><span class="Delimiter">)</span> <span class="Identifier">return</span> <span class="Constant">true</span><span class="Delimiter">;</span>
+<span id="L164" class="LineNr">164 </span>  <span class="Comment">// End is_special_name Special-cases</span>
+<span id="L165" class="LineNr">165 </span>  <span class="Identifier">return</span> <span class="Constant">false</span><span class="Delimiter">;</span>
+<span id="L166" class="LineNr">166 </span><span class="Delimiter">}</span>
+<span id="L167" class="LineNr">167 </span>
+<span id="L168" class="LineNr">168 </span><span class="Delimiter">:(scenario transform_names_supports_containers)</span>
+<span id="L169" class="LineNr">169 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
+<span id="L170" class="LineNr">170 </span>  <span class="Normal">x</span>:point<span class="Special"> &lt;- </span>merge <span class="Constant">34</span><span class="Delimiter">,</span> <span class="Constant">35</span>
+<span id="L171" class="LineNr">171 </span>  <span class="Normal">y</span>:num<span class="Special"> &lt;- </span>copy <span class="Constant">3</span>
+<span id="L172" class="LineNr">172 </span>]
+<span id="L173" class="LineNr">173 </span><span class="traceContains">+name: assign x 1</span>
+<span id="L174" class="LineNr">174 </span><span class="Comment"># skip location 2 because x occupies two locations</span>
+<span id="L175" class="LineNr">175 </span><span class="traceContains">+name: assign y 3</span>
+<span id="L176" class="LineNr">176 </span>
+<span id="L177" class="LineNr">177 </span><span class="Delimiter">:(scenario transform_names_supports_static_arrays)</span>
+<span id="L178" class="LineNr">178 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
+<span id="L179" class="LineNr">179 </span>  <span class="Normal">x</span>:@:num:<span class="Constant">3</span><span class="Special"> &lt;- </span>create-array
+<span id="L180" class="LineNr">180 </span>  <span class="Normal">y</span>:num<span class="Special"> &lt;- </span>copy <span class="Constant">3</span>
+<span id="L181" class="LineNr">181 </span>]
+<span id="L182" class="LineNr">182 </span><span class="traceContains">+name: assign x 1</span>
+<span id="L183" class="LineNr">183 </span><span class="Comment"># skip locations 2, 3, 4 because x occupies four locations</span>
+<span id="L184" class="LineNr">184 </span><span class="traceContains">+name: assign y 5</span>
+<span id="L185" class="LineNr">185 </span>
+<span id="L186" class="LineNr">186 </span><span class="Delimiter">:(scenario transform_names_passes_dummy)</span>
+<span id="L187" class="LineNr">187 </span><span class="Comment"># _ is just a dummy result that never gets consumed</span>
+<span id="L188" class="LineNr">188 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
+<span id="L189" class="LineNr">189 </span>  _<span class="Delimiter">,</span> x:num<span class="Special"> &lt;- </span>copy <span class="Constant">0</span><span class="Delimiter">,</span> <span class="Constant">1</span>
+<span id="L190" class="LineNr">190 </span>]
+<span id="L191" class="LineNr">191 </span><span class="traceContains">+name: assign x 1</span>
+<span id="L192" class="LineNr">192 </span><span class="traceAbsent">-name: assign _ 1</span>
+<span id="L193" class="LineNr">193 </span>
+<span id="L194" class="LineNr">194 </span><span class="Comment">//: an escape hatch to suppress name conversion that we'll use later</span>
+<span id="L195" class="LineNr">195 </span><span class="Delimiter">:(scenarios run)</span>
+<span id="L196" class="LineNr">196 </span><span class="Delimiter">:(scenario transform_names_passes_raw)</span>
+<span id="L197" class="LineNr">197 </span><span class="Special">% Hide_errors = true;</span>
+<span id="L198" class="LineNr">198 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
+<span id="L199" class="LineNr">199 </span>  <span class="Normal">x</span>:num/<span class="Special">raw &lt;- </span>copy <span class="Constant">0</span>
+<span id="L200" class="LineNr">200 </span>]
+<span id="L201" class="LineNr">201 </span><span class="traceAbsent">-name: assign x 1</span>
+<span id="L202" class="LineNr">202 </span><span class="traceContains">+error: can't write to location 0 in 'x:num/raw &lt;- copy 0'</span>
+<span id="L203" class="LineNr">203 </span>
+<span id="L204" class="LineNr">204 </span><span class="Delimiter">:(scenarios transform)</span>
+<span id="L205" class="LineNr">205 </span><span class="Delimiter">:(scenario transform_names_fails_when_mixing_names_and_numeric_locations)</span>
+<span id="L206" class="LineNr">206 </span><span class="Special">% Hide_errors = true;</span>
+<span id="L207" class="LineNr">207 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
+<span id="L208" class="LineNr">208 </span>  <span class="Normal">x</span>:num<span class="Special"> &lt;- </span>copy <span class="Constant">1</span>:num
+<span id="L209" class="LineNr">209 </span>]
+<span id="L210" class="LineNr">210 </span><span class="traceContains">+error: <a href='000organization.cc.html#L113'>main</a>: mixing variable names and numeric addresses</span>
+<span id="L211" class="LineNr">211 </span>
+<span id="L212" class="LineNr">212 </span><span class="Delimiter">:(scenario transform_names_fails_when_mixing_names_and_numeric_locations_2)</span>
+<span id="L213" class="LineNr">213 </span><span class="Special">% Hide_errors = true;</span>
+<span id="L214" class="LineNr">214 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
+<span id="L215" class="LineNr">215 </span>  <span class="Normal">x</span>:num<span class="Special"> &lt;- </span>copy <span class="Constant">1</span>
+<span id="L216" class="LineNr">216 </span>  <span class="Constant">1</span>:num<span class="Special"> &lt;- </span>copy x:num
+<span id="L217" class="LineNr">217 </span>]
+<span id="L218" class="LineNr">218 </span><span class="traceContains">+error: <a href='000organization.cc.html#L113'>main</a>: mixing variable names and numeric addresses</span>
+<span id="L219" class="LineNr">219 </span>
+<span id="L220" class="LineNr">220 </span><span class="Delimiter">:(scenario transform_names_does_not_fail_when_mixing_names_and_raw_locations)</span>
+<span id="L221" class="LineNr">221 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
+<span id="L222" class="LineNr">222 </span>  <span class="Normal">x</span>:num<span class="Special"> &lt;- </span>copy <span class="Constant">1</span>:num/<span class="Special">raw</span>
+<span id="L223" class="LineNr">223 </span>]
+<span id="L224" class="LineNr">224 </span><span class="traceAbsent">-error: <a href='000organization.cc.html#L113'>main</a>: mixing variable names and numeric addresses</span>
+<span id="L225" class="LineNr">225 </span>$error: <span class="Constant">0</span>
+<span id="L226" class="LineNr">226 </span>
+<span id="L227" class="LineNr">227 </span><span class="Delimiter">:(scenario transform_names_does_not_fail_when_mixing_names_and_literals)</span>
+<span id="L228" class="LineNr">228 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
+<span id="L229" class="LineNr">229 </span>  <span class="Normal">x</span>:num<span class="Special"> &lt;- </span>copy <span class="Constant">1</span>
+<span id="L230" class="LineNr">230 </span>]
+<span id="L231" class="LineNr">231 </span><span class="traceAbsent">-error: <a href='000organization.cc.html#L113'>main</a>: mixing variable names and numeric addresses</span>
+<span id="L232" class="LineNr">232 </span>$error: <span class="Constant">0</span>
+<span id="L233" class="LineNr">233 </span>
+<span id="L234" class="LineNr">234 </span><span class="SalientComment">//:: Support element names for containers in 'get' and 'get-location' and 'put'.</span>
+<span id="L235" class="LineNr">235 </span><span class="Comment">//: (get-location is implemented later)</span>
+<span id="L236" class="LineNr">236 </span>
+<span id="L237" class="LineNr">237 </span><span class="Delimiter">:(before &quot;End update GET offset_value in Check&quot;)</span>
+<span id="L238" class="LineNr">238 </span><span class="Normal">else</span> <span class="Delimiter">{</span>
+<span id="L239" class="LineNr">239 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!offset<span class="Delimiter">.</span>initialized<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L240" class="LineNr">240 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;uninitialized offset '&quot;</span> &lt;&lt; offset<span class="Delimiter">.</span>name &lt;&lt; <span class="Constant">&quot;' in '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
+<span id="L241" class="LineNr">241 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
+<span id="L242" class="LineNr">242 </span>  <span class="Delimiter">}</span>
+<span id="L243" class="LineNr">243 </span>  offset_value = offset<span class="Delimiter">.</span>value<span class="Delimiter">;</span>
+<span id="L244" class="LineNr">244 </span><span class="Delimiter">}</span>
+<span id="L245" class="LineNr">245 </span>
+<span id="L246" class="LineNr">246 </span><span class="Delimiter">:(scenario transform_names_transforms_container_elements)</span>
+<span id="L247" class="LineNr">247 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
+<span id="L248" class="LineNr">248 </span>  <span class="Normal">p</span>:&amp;:point<span class="Special"> &lt;- </span>copy <span class="Constant">0</span>
+<span id="L249" class="LineNr">249 </span>  <span class="Normal">a</span>:num<span class="Special"> &lt;- </span>get *p:&amp;:point<span class="Delimiter">,</span> <span class="Constant">y:offset</span>
+<span id="L250" class="LineNr">250 </span>  <span class="Normal">b</span>:num<span class="Special"> &lt;- </span>get *p:&amp;:point<span class="Delimiter">,</span> <span class="Constant">x:offset</span>
+<span id="L251" class="LineNr">251 </span>]
+<span id="L252" class="LineNr">252 </span><span class="traceContains">+name: element y of type point is at offset 1</span>
+<span id="L253" class="LineNr">253 </span><span class="traceContains">+name: element x of type point is at offset 0</span>
+<span id="L254" class="LineNr">254 </span>
+<span id="L255" class="LineNr">255 </span><span class="Delimiter">:(before &quot;End transform_names(inst) Special-cases&quot;)</span>
+<span id="L256" class="LineNr">256 </span><span class="Comment">// replace element names of containers with offsets</span>
+<span id="L257" class="LineNr">257 </span><span class="Normal">if</span> <span class="Delimiter">(</span>inst<span class="Delimiter">.</span>name == <span class="Constant">&quot;get&quot;</span> || inst<span class="Delimiter">.</span>name == <span class="Constant">&quot;get-location&quot;</span> || inst<span class="Delimiter">.</span>name == <span class="Constant">&quot;put&quot;</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L258" class="LineNr">258 </span>  <span class="Comment">//: avoid raising any errors here; later layers will support overloading new</span>
+<span id="L259" class="LineNr">259 </span>  <span class="Comment">//: instructions with the same names (static dispatch), which could lead to</span>
+<span id="L260" class="LineNr">260 </span>  <span class="Comment">//: spurious errors</span>
+<span id="L261" class="LineNr">261 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">)</span> &lt; <span class="Constant">2</span><span class="Delimiter">)</span>
+<span id="L262" class="LineNr">262 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>  <span class="Comment">// error raised elsewhere</span>
+<span id="L263" class="LineNr">263 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!is_literal<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">1</span><span class="Delimiter">)))</span>
 <span id="L264" class="LineNr">264 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>  <span class="Comment">// error raised elsewhere</span>
-<span id="L265" class="LineNr">265 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!is_literal<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">1</span><span class="Delimiter">)))</span>
-<span id="L266" class="LineNr">266 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>  <span class="Comment">// error raised elsewhere</span>
-<span id="L267" class="LineNr">267 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">1</span><span class="Delimiter">).</span>name<span class="Delimiter">.</span>find_first_not_of<span class="Delimiter">(</span><span class="Constant">&quot;0123456789&quot;</span><span class="Delimiter">)</span> != string::npos<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L268" class="LineNr">268 </span>  <span class="Conceal">¦</span> <span class="Comment">// since first non-address in base type must be a container, we don't have to canonize</span>
-<span id="L269" class="LineNr">269 </span>  <span class="Conceal">¦</span> <a href='010vm.cc.html#L123'>type_ordinal</a> base_type = <a href='042name.cc.html#L120'>skip_addresses</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>type<span class="Delimiter">);</span>
-<span id="L270" class="LineNr">270 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>contains_key<span class="Delimiter">(</span>Type<span class="Delimiter">,</span> base_type<span class="Delimiter">))</span> <span class="Delimiter">{</span>  <span class="Comment">// otherwise we'll raise an error elsewhere</span>
-<span id="L271" class="LineNr">271 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">1</span><span class="Delimiter">).</span><a href='010vm.cc.html#L65'>set_value</a><span class="Delimiter">(</span><a href='042name.cc.html#L140'>find_element_name</a><span class="Delimiter">(</span>base_type<span class="Delimiter">,</span> inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">1</span><span class="Delimiter">).</span>name<span class="Delimiter">,</span> get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">));</span>
-<span id="L272" class="LineNr">272 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">9993</span><span class="Delimiter">,</span> <span class="Constant">&quot;name&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;element &quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">1</span><span class="Delimiter">).</span>name &lt;&lt; <span class="Constant">&quot; of type &quot;</span> &lt;&lt; get<span class="Delimiter">(</span>Type<span class="Delimiter">,</span> base_type<span class="Delimiter">).</span>name &lt;&lt; <span class="Constant">&quot; is at offset &quot;</span> &lt;&lt; no_scientific<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">1</span><span class="Delimiter">).</span>value<span class="Delimiter">)</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
-<span id="L273" class="LineNr">273 </span>  <span class="Conceal">¦</span> <span class="Delimiter">}</span>
-<span id="L274" class="LineNr">274 </span>  <span class="Delimiter">}</span>
-<span id="L275" class="LineNr">275 </span><span class="Delimiter">}</span>
-<span id="L276" class="LineNr">276 </span>
-<span id="L277" class="LineNr">277 </span><span class="Delimiter">:(scenario missing_type_in_get)</span>
-<span id="L278" class="LineNr">278 </span><span class="Special">% Hide_errors = true;</span>
-<span id="L279" class="LineNr">279 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
-<span id="L280" class="LineNr">280 </span>  get a<span class="Delimiter">,</span> <span class="Constant">x:offset</span>
-<span id="L281" class="LineNr">281 </span>]
-<span id="L282" class="LineNr">282 </span><span class="traceContains">+error: <a href='000organization.cc.html#L113'>main</a>: missing type for 'a' in 'get a, x:offset'</span>
-<span id="L283" class="LineNr">283 </span>
-<span id="L284" class="LineNr">284 </span><span class="Comment">//: this test is actually illegal so can't call run</span>
-<span id="L285" class="LineNr">285 </span><span class="Delimiter">:(scenarios transform)</span>
-<span id="L286" class="LineNr">286 </span><span class="Delimiter">:(scenario transform_names_handles_containers)</span>
-<span id="L287" class="LineNr">287 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
-<span id="L288" class="LineNr">288 </span>  <span class="Normal">a</span>:point<span class="Special"> &lt;- </span>copy <span class="Constant">0</span>/unsafe
-<span id="L289" class="LineNr">289 </span>  <span class="Normal">b</span>:num<span class="Special"> &lt;- </span>copy <span class="Constant">0</span>/unsafe
-<span id="L290" class="LineNr">290 </span>]
-<span id="L291" class="LineNr">291 </span><span class="traceContains">+name: assign a 1</span>
-<span id="L292" class="LineNr">292 </span><span class="traceContains">+name: assign b 3</span>
+<span id="L265" class="LineNr">265 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">1</span><span class="Delimiter">).</span>name<span class="Delimiter">.</span>find_first_not_of<span class="Delimiter">(</span><span class="Constant">&quot;0123456789&quot;</span><span class="Delimiter">)</span> != string::npos<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L266" class="LineNr">266 </span>  <span class="Conceal">¦</span> <span class="Comment">// since first non-address in base type must be a container, we don't have to canonize</span>
+<span id="L267" class="LineNr">267 </span>  <span class="Conceal">¦</span> <a href='010vm.cc.html#L123'>type_ordinal</a> base_type = <a href='042name.cc.html#L118'>skip_addresses</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>type<span class="Delimiter">);</span>
+<span id="L268" class="LineNr">268 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>contains_key<span class="Delimiter">(</span>Type<span class="Delimiter">,</span> base_type<span class="Delimiter">))</span> <span class="Delimiter">{</span>  <span class="Comment">// otherwise we'll raise an error elsewhere</span>
+<span id="L269" class="LineNr">269 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">1</span><span class="Delimiter">).</span><a href='010vm.cc.html#L65'>set_value</a><span class="Delimiter">(</span><a href='042name.cc.html#L138'>find_element_name</a><span class="Delimiter">(</span>base_type<span class="Delimiter">,</span> inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">1</span><span class="Delimiter">).</span>name<span class="Delimiter">,</span> get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">));</span>
+<span id="L270" class="LineNr">270 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L167'>trace</a><span class="Delimiter">(</span><span class="Constant">9993</span><span class="Delimiter">,</span> <span class="Constant">&quot;name&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;element &quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">1</span><span class="Delimiter">).</span>name &lt;&lt; <span class="Constant">&quot; of type &quot;</span> &lt;&lt; get<span class="Delimiter">(</span>Type<span class="Delimiter">,</span> base_type<span class="Delimiter">).</span>name &lt;&lt; <span class="Constant">&quot; is at offset &quot;</span> &lt;&lt; no_scientific<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">1</span><span class="Delimiter">).</span>value<span class="Delimiter">)</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
+<span id="L271" class="LineNr">271 </span>  <span class="Conceal">¦</span> <span class="Delimiter">}</span>
+<span id="L272" class="LineNr">272 </span>  <span class="Delimiter">}</span>
+<span id="L273" class="LineNr">273 </span><span class="Delimiter">}</span>
+<span id="L274" class="LineNr">274 </span>
+<span id="L275" class="LineNr">275 </span><span class="Delimiter">:(scenario missing_type_in_get)</span>
+<span id="L276" class="LineNr">276 </span><span class="Special">% Hide_errors = true;</span>
+<span id="L277" class="LineNr">277 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
+<span id="L278" class="LineNr">278 </span>  get a<span class="Delimiter">,</span> <span class="Constant">x:offset</span>
+<span id="L279" class="LineNr">279 </span>]
+<span id="L280" class="LineNr">280 </span><span class="traceContains">+error: <a href='000organization.cc.html#L113'>main</a>: missing type for 'a' in 'get a, x:offset'</span>
+<span id="L281" class="LineNr">281 </span>
+<span id="L282" class="LineNr">282 </span><span class="Comment">//: this test is actually illegal so can't call run</span>
+<span id="L283" class="LineNr">283 </span><span class="Delimiter">:(scenarios transform)</span>
+<span id="L284" class="LineNr">284 </span><span class="Delimiter">:(scenario transform_names_handles_containers)</span>
+<span id="L285" class="LineNr">285 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
+<span id="L286" class="LineNr">286 </span>  <span class="Normal">a</span>:point<span class="Special"> &lt;- </span>copy <span class="Constant">0</span>/unsafe
+<span id="L287" class="LineNr">287 </span>  <span class="Normal">b</span>:num<span class="Special"> &lt;- </span>copy <span class="Constant">0</span>/unsafe
+<span id="L288" class="LineNr">288 </span>]
+<span id="L289" class="LineNr">289 </span><span class="traceContains">+name: assign a 1</span>
+<span id="L290" class="LineNr">290 </span><span class="traceContains">+name: assign b 3</span>
+<span id="L291" class="LineNr">291 </span>
+<span id="L292" class="LineNr">292 </span><span class="SalientComment">//:: Support variant names for exclusive containers in 'maybe-convert'.</span>
 <span id="L293" class="LineNr">293 </span>
-<span id="L294" class="LineNr">294 </span><span class="SalientComment">//:: Support variant names for exclusive containers in 'maybe-convert'.</span>
-<span id="L295" class="LineNr">295 </span>
-<span id="L296" class="LineNr">296 </span><span class="Delimiter">:(scenarios run)</span>
-<span id="L297" class="LineNr">297 </span><span class="Delimiter">:(scenario transform_names_handles_exclusive_containers)</span>
-<span id="L298" class="LineNr">298 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
-<span id="L299" class="LineNr">299 </span>  <span class="Constant">12</span>:num<span class="Special"> &lt;- </span>copy <span class="Constant">1</span>
-<span id="L300" class="LineNr">300 </span>  <span class="Constant">13</span>:num<span class="Special"> &lt;- </span>copy <span class="Constant">35</span>
-<span id="L301" class="LineNr">301 </span>  <span class="Constant">14</span>:num<span class="Special"> &lt;- </span>copy <span class="Constant">36</span>
-<span id="L302" class="LineNr">302 </span>  <span class="Constant">20</span>:point<span class="Delimiter">,</span> <span class="Constant">22</span>:<span class="Normal">bool</span><span class="Special"> &lt;- </span>maybe-convert <span class="Constant">12</span>:number-<span class="Normal">or</span>-point/unsafe<span class="Delimiter">,</span> <span class="Constant">p:variant</span>
-<span id="L303" class="LineNr">303 </span>]
-<span id="L304" class="LineNr">304 </span><span class="traceContains">+name: variant p of type number-or-point has tag 1</span>
-<span id="L305" class="LineNr">305 </span><span class="traceContains">+mem: storing 1 in location 22</span>
-<span id="L306" class="LineNr">306 </span><span class="traceContains">+mem: storing 35 in location 20</span>
-<span id="L307" class="LineNr">307 </span><span class="traceContains">+mem: storing 36 in location 21</span>
-<span id="L308" class="LineNr">308 </span>
-<span id="L309" class="LineNr">309 </span><span class="Delimiter">:(before &quot;End transform_names(inst) Special-cases&quot;)</span>
-<span id="L310" class="LineNr">310 </span><span class="Comment">// convert variant names of exclusive containers</span>
-<span id="L311" class="LineNr">311 </span><span class="Normal">if</span> <span class="Delimiter">(</span>inst<span class="Delimiter">.</span>name == <span class="Constant">&quot;maybe-convert&quot;</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L312" class="LineNr">312 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">)</span> != <span class="Constant">2</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L313" class="LineNr">313 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;exactly 2 ingredients expected in '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
-<span id="L314" class="LineNr">314 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
-<span id="L315" class="LineNr">315 </span>  <span class="Delimiter">}</span>
-<span id="L316" class="LineNr">316 </span>  assert<span class="Delimiter">(</span>is_literal<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">1</span><span class="Delimiter">)));</span>
-<span id="L317" class="LineNr">317 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">1</span><span class="Delimiter">).</span>name<span class="Delimiter">.</span>find_first_not_of<span class="Delimiter">(</span><span class="Constant">&quot;0123456789&quot;</span><span class="Delimiter">)</span> != string::npos<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L318" class="LineNr">318 </span>  <span class="Conceal">¦</span> <span class="Comment">// since first non-address in base type must be an exclusive container, we don't have to canonize</span>
-<span id="L319" class="LineNr">319 </span>  <span class="Conceal">¦</span> <a href='010vm.cc.html#L123'>type_ordinal</a> base_type = <a href='042name.cc.html#L120'>skip_addresses</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>type<span class="Delimiter">);</span>
-<span id="L320" class="LineNr">320 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>contains_key<span class="Delimiter">(</span>Type<span class="Delimiter">,</span> base_type<span class="Delimiter">))</span> <span class="Delimiter">{</span>  <span class="Comment">// otherwise we'll raise an error elsewhere</span>
-<span id="L321" class="LineNr">321 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">1</span><span class="Delimiter">).</span><a href='010vm.cc.html#L65'>set_value</a><span class="Delimiter">(</span><a href='042name.cc.html#L140'>find_element_name</a><span class="Delimiter">(</span>base_type<span class="Delimiter">,</span> inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">1</span><span class="Delimiter">).</span>name<span class="Delimiter">,</span> get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">));</span>
-<span id="L322" class="LineNr">322 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">9993</span><span class="Delimiter">,</span> <span class="Constant">&quot;name&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;variant &quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">1</span><span class="Delimiter">).</span>name &lt;&lt; <span class="Constant">&quot; of type &quot;</span> &lt;&lt; get<span class="Delimiter">(</span>Type<span class="Delimiter">,</span> base_type<span class="Delimiter">).</span>name &lt;&lt; <span class="Constant">&quot; has tag &quot;</span> &lt;&lt; no_scientific<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">1</span><span class="Delimiter">).</span>value<span class="Delimiter">)</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
-<span id="L323" class="LineNr">323 </span>  <span class="Conceal">¦</span> <span class="Delimiter">}</span>
-<span id="L324" class="LineNr">324 </span>  <span class="Delimiter">}</span>
-<span id="L325" class="LineNr">325 </span><span class="Delimiter">}</span>
-<span id="L326" class="LineNr">326 </span>
-<span id="L327" class="LineNr">327 </span><span class="Delimiter">:(scenario missing_type_in_maybe_convert)</span>
-<span id="L328" class="LineNr">328 </span><span class="Special">% Hide_errors = true;</span>
-<span id="L329" class="LineNr">329 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
-<span id="L330" class="LineNr">330 </span>  maybe-convert a<span class="Delimiter">,</span> <span class="Constant">x:variant</span>
-<span id="L331" class="LineNr">331 </span>]
-<span id="L332" class="LineNr">332 </span><span class="traceContains">+error: <a href='000organization.cc.html#L113'>main</a>: missing type for 'a' in 'maybe-convert a, x:variant'</span>
+<span id="L294" class="LineNr">294 </span><span class="Delimiter">:(scenarios run)</span>
+<span id="L295" class="LineNr">295 </span><span class="Delimiter">:(scenario transform_names_handles_exclusive_containers)</span>
+<span id="L296" class="LineNr">296 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
+<span id="L297" class="LineNr">297 </span>  <span class="Constant">12</span>:num<span class="Special"> &lt;- </span>copy <span class="Constant">1</span>
+<span id="L298" class="LineNr">298 </span>  <span class="Constant">13</span>:num<span class="Special"> &lt;- </span>copy <span class="Constant">35</span>
+<span id="L299" class="LineNr">299 </span>  <span class="Constant">14</span>:num<span class="Special"> &lt;- </span>copy <span class="Constant">36</span>
+<span id="L300" class="LineNr">300 </span>  <span class="Constant">20</span>:point<span class="Delimiter">,</span> <span class="Constant">22</span>:<span class="Normal">bool</span><span class="Special"> &lt;- </span>maybe-convert <span class="Constant">12</span>:number-<span class="Normal">or</span>-point/unsafe<span class="Delimiter">,</span> <span class="Constant">p:variant</span>
+<span id="L301" class="LineNr">301 </span>]
+<span id="L302" class="LineNr">302 </span><span class="traceContains">+name: variant p of type number-or-point has tag 1</span>
+<span id="L303" class="LineNr">303 </span><span class="traceContains">+mem: storing 1 in location 22</span>
+<span id="L304" class="LineNr">304 </span><span class="traceContains">+mem: storing 35 in location 20</span>
+<span id="L305" class="LineNr">305 </span><span class="traceContains">+mem: storing 36 in location 21</span>
+<span id="L306" class="LineNr">306 </span>
+<span id="L307" class="LineNr">307 </span><span class="Delimiter">:(before &quot;End transform_names(inst) Special-cases&quot;)</span>
+<span id="L308" class="LineNr">308 </span><span class="Comment">// convert variant names of exclusive containers</span>
+<span id="L309" class="LineNr">309 </span><span class="Normal">if</span> <span class="Delimiter">(</span>inst<span class="Delimiter">.</span>name == <span class="Constant">&quot;maybe-convert&quot;</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L310" class="LineNr">310 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">)</span> != <span class="Constant">2</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L311" class="LineNr">311 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;exactly 2 ingredients expected in '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
+<span id="L312" class="LineNr">312 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
+<span id="L313" class="LineNr">313 </span>  <span class="Delimiter">}</span>
+<span id="L314" class="LineNr">314 </span>  assert<span class="Delimiter">(</span>is_literal<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">1</span><span class="Delimiter">)));</span>
+<span id="L315" class="LineNr">315 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">1</span><span class="Delimiter">).</span>name<span class="Delimiter">.</span>find_first_not_of<span class="Delimiter">(</span><span class="Constant">&quot;0123456789&quot;</span><span class="Delimiter">)</span> != string::npos<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L316" class="LineNr">316 </span>  <span class="Conceal">¦</span> <span class="Comment">// since first non-address in base type must be an exclusive container, we don't have to canonize</span>
+<span id="L317" class="LineNr">317 </span>  <span class="Conceal">¦</span> <a href='010vm.cc.html#L123'>type_ordinal</a> base_type = <a href='042name.cc.html#L118'>skip_addresses</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>type<span class="Delimiter">);</span>
+<span id="L318" class="LineNr">318 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>contains_key<span class="Delimiter">(</span>Type<span class="Delimiter">,</span> base_type<span class="Delimiter">))</span> <span class="Delimiter">{</span>  <span class="Comment">// otherwise we'll raise an error elsewhere</span>
+<span id="L319" class="LineNr">319 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">1</span><span class="Delimiter">).</span><a href='010vm.cc.html#L65'>set_value</a><span class="Delimiter">(</span><a href='042name.cc.html#L138'>find_element_name</a><span class="Delimiter">(</span>base_type<span class="Delimiter">,</span> inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">1</span><span class="Delimiter">).</span>name<span class="Delimiter">,</span> get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">));</span>
+<span id="L320" class="LineNr">320 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L167'>trace</a><span class="Delimiter">(</span><span class="Constant">9993</span><span class="Delimiter">,</span> <span class="Constant">&quot;name&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;variant &quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">1</span><span class="Delimiter">).</span>name &lt;&lt; <span class="Constant">&quot; of type &quot;</span> &lt;&lt; get<span class="Delimiter">(</span>Type<span class="Delimiter">,</span> base_type<span class="Delimiter">).</span>name &lt;&lt; <span class="Constant">&quot; has tag &quot;</span> &lt;&lt; no_scientific<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">1</span><span class="Delimiter">).</span>value<span class="Delimiter">)</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
+<span id="L321" class="LineNr">321 </span>  <span class="Conceal">¦</span> <span class="Delimiter">}</span>
+<span id="L322" class="LineNr">322 </span>  <span class="Delimiter">}</span>
+<span id="L323" class="LineNr">323 </span><span class="Delimiter">}</span>
+<span id="L324" class="LineNr">324 </span>
+<span id="L325" class="LineNr">325 </span><span class="Delimiter">:(scenario missing_type_in_maybe_convert)</span>
+<span id="L326" class="LineNr">326 </span><span class="Special">% Hide_errors = true;</span>
+<span id="L327" class="LineNr">327 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
+<span id="L328" class="LineNr">328 </span>  maybe-convert a<span class="Delimiter">,</span> <span class="Constant">x:variant</span>
+<span id="L329" class="LineNr">329 </span>]
+<span id="L330" class="LineNr">330 </span><span class="traceContains">+error: <a href='000organization.cc.html#L113'>main</a>: missing type for 'a' in 'maybe-convert a, x:variant'</span>
 </pre>
 </body>
 </html>
diff --git a/html/043space.cc.html b/html/043space.cc.html
index c7e94729..4460d3f7 100644
--- a/html/043space.cc.html
+++ b/html/043space.cc.html
@@ -114,10 +114,10 @@ if ('onhashchange' in window) {
 <span id="L48" class="LineNr"> 48 </span><span class="traceContains">+name: assign x 1</span>
 <span id="L49" class="LineNr"> 49 </span><span class="traceAbsent">-name: assign default-space 1</span>
 <span id="L50" class="LineNr"> 50 </span>
-<span id="L51" class="LineNr"> 51 </span><span class="Delimiter">:(before &quot;End <a href='042name.cc.html#L99'>is_disqualified</a> Special-cases&quot;)</span>
+<span id="L51" class="LineNr"> 51 </span><span class="Delimiter">:(before &quot;End <a href='042name.cc.html#L97'>is_disqualified</a> Special-cases&quot;)</span>
 <span id="L52" class="LineNr"> 52 </span><span class="Normal">if</span> <span class="Delimiter">(</span>x<span class="Delimiter">.</span>name == <span class="Constant">&quot;default-space&quot;</span><span class="Delimiter">)</span>
 <span id="L53" class="LineNr"> 53 </span>  x<span class="Delimiter">.</span>initialized = <span class="Constant">true</span><span class="Delimiter">;</span>
-<span id="L54" class="LineNr"> 54 </span><span class="Delimiter">:(before &quot;End <a href='042name.cc.html#L163'>is_special_name</a> Special-cases&quot;)</span>
+<span id="L54" class="LineNr"> 54 </span><span class="Delimiter">:(before &quot;End <a href='042name.cc.html#L161'>is_special_name</a> Special-cases&quot;)</span>
 <span id="L55" class="LineNr"> 55 </span><span class="Normal">if</span> <span class="Delimiter">(</span>s == <span class="Constant">&quot;default-space&quot;</span><span class="Delimiter">)</span> <span class="Identifier">return</span> <span class="Constant">true</span><span class="Delimiter">;</span>
 <span id="L56" class="LineNr"> 56 </span>
 <span id="L57" class="LineNr"> 57 </span><span class="Comment">//: core implementation</span>
@@ -134,7 +134,7 @@ if ('onhashchange' in window) {
 <span id="L68" class="LineNr"> 68 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span><a href='022arithmetic.cc.html#L108'>is_raw</a><span class="Delimiter">(</span>x<span class="Delimiter">)</span> || is_dummy<span class="Delimiter">(</span>x<span class="Delimiter">))</span> <span class="Identifier">return</span><span class="Delimiter">;</span>
 <span id="L69" class="LineNr"> 69 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>x<span class="Delimiter">.</span>name == <span class="Constant">&quot;default-space&quot;</span><span class="Delimiter">)</span> <span class="Identifier">return</span><span class="Delimiter">;</span>
 <span id="L70" class="LineNr"> 70 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!x<span class="Delimiter">.</span>initialized<span class="Delimiter">)</span>
-<span id="L71" class="LineNr"> 71 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; to_original_string<span class="Delimiter">(</span><a href='026call.cc.html#L87'>current_instruction</a><span class="Delimiter">())</span> &lt;&lt; <span class="Constant">&quot;: reagent not initialized: '&quot;</span> &lt;&lt; x<span class="Delimiter">.</span>original_string &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L71" class="LineNr"> 71 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; to_original_string<span class="Delimiter">(</span><a href='026call.cc.html#L89'>current_instruction</a><span class="Delimiter">())</span> &lt;&lt; <span class="Constant">&quot;: reagent not initialized: '&quot;</span> &lt;&lt; x<span class="Delimiter">.</span>original_string &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L72" class="LineNr"> 72 </span>  x<span class="Delimiter">.</span><a href='010vm.cc.html#L65'>set_value</a><span class="Delimiter">(</span><a href='043space.cc.html#L82'>address</a><span class="Delimiter">(</span>x<span class="Delimiter">.</span>value<span class="Delimiter">,</span> <a href='043space.cc.html#L78'>space_base</a><span class="Delimiter">(</span>x<span class="Delimiter">)));</span>
 <span id="L73" class="LineNr"> 73 </span>  x<span class="Delimiter">.</span>properties<span class="Delimiter">.</span>push_back<span class="Delimiter">(</span>pair&lt;string<span class="Delimiter">,</span> string_tree*&gt;<span class="Delimiter">(</span><span class="Constant">&quot;raw&quot;</span><span class="Delimiter">,</span> <span class="Constant">NULL</span><span class="Delimiter">));</span>
 <span id="L74" class="LineNr"> 74 </span>  assert<span class="Delimiter">(</span><a href='022arithmetic.cc.html#L108'>is_raw</a><span class="Delimiter">(</span>x<span class="Delimiter">));</span>
@@ -142,7 +142,7 @@ if ('onhashchange' in window) {
 <span id="L76" class="LineNr"> 76 </span>
 <span id="L77" class="LineNr"> 77 </span><span class="Comment">//: hook replaced in a later layer</span>
 <span id="L78" class="LineNr"> 78 </span><span class="Normal">int</span> <a href='043space.cc.html#L78'>space_base</a><span class="Delimiter">(</span><span class="Normal">const</span> reagent&amp; x<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L79" class="LineNr"> 79 </span>  <span class="Identifier">return</span> <a href='026call.cc.html#L81'>current_call</a><span class="Delimiter">().</span>default_space ? <span class="Delimiter">(</span><a href='026call.cc.html#L81'>current_call</a><span class="Delimiter">().</span>default_space+<span class="Comment">/*</span><span class="Comment">skip refcount</span><span class="Comment">*/</span><span class="Constant">1</span><span class="Delimiter">)</span> : <span class="Constant">0</span><span class="Delimiter">;</span>
+<span id="L79" class="LineNr"> 79 </span>  <span class="Identifier">return</span> <a href='026call.cc.html#L83'>current_call</a><span class="Delimiter">().</span>default_space ? <span class="Delimiter">(</span><a href='026call.cc.html#L83'>current_call</a><span class="Delimiter">().</span>default_space+<span class="Comment">/*</span><span class="Comment">skip refcount</span><span class="Comment">*/</span><span class="Constant">1</span><span class="Delimiter">)</span> : <span class="Constant">0</span><span class="Delimiter">;</span>
 <span id="L80" class="LineNr"> 80 </span><span class="Delimiter">}</span>
 <span id="L81" class="LineNr"> 81 </span>
 <span id="L82" class="LineNr"> 82 </span><span class="Normal">int</span> <a href='043space.cc.html#L82'>address</a><span class="Delimiter">(</span><span class="Normal">int</span> offset<span class="Delimiter">,</span> <span class="Normal">int</span> base<span class="Delimiter">)</span> <span class="Delimiter">{</span>
@@ -151,8 +151,8 @@ if ('onhashchange' in window) {
 <span id="L85" class="LineNr"> 85 </span>  <span class="Normal">int</span> size = <a href='001help.cc.html#L229'>get_or_insert</a><span class="Delimiter">(</span>Memory<span class="Delimiter">,</span> base<span class="Delimiter">);</span>
 <span id="L86" class="LineNr"> 86 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>offset &gt;= size<span class="Delimiter">)</span> <span class="Delimiter">{</span>
 <span id="L87" class="LineNr"> 87 </span>  <span class="Conceal">¦</span> <span class="Comment">// todo: test</span>
-<span id="L88" class="LineNr"> 88 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='026call.cc.html#L85'>current_recipe_name</a><span class="Delimiter">()</span> &lt;&lt; <span class="Constant">&quot;: location &quot;</span> &lt;&lt; offset &lt;&lt; <span class="Constant">&quot; is out of bounds &quot;</span> &lt;&lt; size &lt;&lt; <span class="Constant">&quot; at &quot;</span> &lt;&lt; base &lt;&lt; <span class="cSpecial">'\n'</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
-<span id="L89" class="LineNr"> 89 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L165'>DUMP</a><span class="Delimiter">(</span><span class="Constant">&quot;&quot;</span><span class="Delimiter">);</span>
+<span id="L88" class="LineNr"> 88 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='026call.cc.html#L87'>current_recipe_name</a><span class="Delimiter">()</span> &lt;&lt; <span class="Constant">&quot;: location &quot;</span> &lt;&lt; offset &lt;&lt; <span class="Constant">&quot; is out of bounds &quot;</span> &lt;&lt; size &lt;&lt; <span class="Constant">&quot; at &quot;</span> &lt;&lt; base &lt;&lt; <span class="cSpecial">'\n'</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
+<span id="L89" class="LineNr"> 89 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L171'>DUMP</a><span class="Delimiter">(</span><span class="Constant">&quot;&quot;</span><span class="Delimiter">);</span>
 <span id="L90" class="LineNr"> 90 </span>  <span class="Conceal">¦</span> exit<span class="Delimiter">(</span><span class="Constant">1</span><span class="Delimiter">);</span>
 <span id="L91" class="LineNr"> 91 </span>  <span class="Conceal">¦</span> <span class="Identifier">return</span> <span class="Constant">0</span><span class="Delimiter">;</span>
 <span id="L92" class="LineNr"> 92 </span>  <span class="Delimiter">}</span>
@@ -164,8 +164,8 @@ if ('onhashchange' in window) {
 <span id="L98" class="LineNr"> 98 </span><span class="Delimiter">:(after &quot;Begin Preprocess write_memory(x, data)&quot;)</span>
 <span id="L99" class="LineNr"> 99 </span><span class="Normal">if</span> <span class="Delimiter">(</span>x<span class="Delimiter">.</span>name == <span class="Constant">&quot;default-space&quot;</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
 <span id="L100" class="LineNr">100 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!scalar<span class="Delimiter">(</span>data<span class="Delimiter">)</span> || !is_mu_space<span class="Delimiter">(</span>x<span class="Delimiter">))</span>
-<span id="L101" class="LineNr">101 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span><a href='026call.cc.html#L85'>current_recipe_name</a><span class="Delimiter">())</span> &lt;&lt; <span class="Constant">&quot;'default-space' should be of type <a href='043space.cc.html#L82'>address</a>:array:location, but is &quot;</span> &lt;&lt; <a href='028call_return.cc.html#L163'>to_string</a><span class="Delimiter">(</span>x<span class="Delimiter">.</span>type<span class="Delimiter">)</span> &lt;&lt; <span class="cSpecial">'\n'</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
-<span id="L102" class="LineNr">102 </span>  <a href='026call.cc.html#L81'>current_call</a><span class="Delimiter">().</span>default_space = data<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">);</span>
+<span id="L101" class="LineNr">101 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span><a href='026call.cc.html#L87'>current_recipe_name</a><span class="Delimiter">())</span> &lt;&lt; <span class="Constant">&quot;'default-space' should be of type <a href='043space.cc.html#L82'>address</a>:array:location, but is &quot;</span> &lt;&lt; <a href='028call_return.cc.html#L163'>to_string</a><span class="Delimiter">(</span>x<span class="Delimiter">.</span>type<span class="Delimiter">)</span> &lt;&lt; <span class="cSpecial">'\n'</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
+<span id="L102" class="LineNr">102 </span>  <a href='026call.cc.html#L83'>current_call</a><span class="Delimiter">().</span>default_space = data<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">);</span>
 <span id="L103" class="LineNr">103 </span>  <span class="Identifier">return</span><span class="Delimiter">;</span>
 <span id="L104" class="LineNr">104 </span><span class="Delimiter">}</span>
 <span id="L105" class="LineNr">105 </span><span class="Delimiter">:(code)</span>
@@ -188,7 +188,7 @@ if ('onhashchange' in window) {
 <span id="L122" class="LineNr">122 </span><span class="Delimiter">:(after &quot;Begin Preprocess read_memory(x)&quot;)</span>
 <span id="L123" class="LineNr">123 </span><span class="Normal">if</span> <span class="Delimiter">(</span>x<span class="Delimiter">.</span>name == <span class="Constant">&quot;default-space&quot;</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
 <span id="L124" class="LineNr">124 </span>  vector&lt;<span class="Normal">double</span>&gt; result<span class="Delimiter">;</span>
-<span id="L125" class="LineNr">125 </span>  result<span class="Delimiter">.</span>push_back<span class="Delimiter">(</span><a href='026call.cc.html#L81'>current_call</a><span class="Delimiter">().</span>default_space<span class="Delimiter">);</span>
+<span id="L125" class="LineNr">125 </span>  result<span class="Delimiter">.</span>push_back<span class="Delimiter">(</span><a href='026call.cc.html#L83'>current_call</a><span class="Delimiter">().</span>default_space<span class="Delimiter">);</span>
 <span id="L126" class="LineNr">126 </span>  <span class="Identifier">return</span> result<span class="Delimiter">;</span>
 <span id="L127" class="LineNr">127 </span><span class="Delimiter">}</span>
 <span id="L128" class="LineNr">128 </span>
@@ -245,10 +245,10 @@ if ('onhashchange' in window) {
 <span id="L179" class="LineNr">179 </span><span class="Comment"># allocate space for x and y, as well as the chaining slot at 0</span>
 <span id="L180" class="LineNr">180 </span><span class="traceContains">+mem: array length is 3</span>
 <span id="L181" class="LineNr">181 </span>
-<span id="L182" class="LineNr">182 </span><span class="Delimiter">:(before &quot;End <a href='042name.cc.html#L99'>is_disqualified</a> Special-cases&quot;)</span>
+<span id="L182" class="LineNr">182 </span><span class="Delimiter">:(before &quot;End <a href='042name.cc.html#L97'>is_disqualified</a> Special-cases&quot;)</span>
 <span id="L183" class="LineNr">183 </span><span class="Normal">if</span> <span class="Delimiter">(</span>x<span class="Delimiter">.</span>name == <span class="Constant">&quot;number-of-locals&quot;</span><span class="Delimiter">)</span>
 <span id="L184" class="LineNr">184 </span>  x<span class="Delimiter">.</span>initialized = <span class="Constant">true</span><span class="Delimiter">;</span>
-<span id="L185" class="LineNr">185 </span><span class="Delimiter">:(before &quot;End <a href='042name.cc.html#L163'>is_special_name</a> Special-cases&quot;)</span>
+<span id="L185" class="LineNr">185 </span><span class="Delimiter">:(before &quot;End <a href='042name.cc.html#L161'>is_special_name</a> Special-cases&quot;)</span>
 <span id="L186" class="LineNr">186 </span><span class="Normal">if</span> <span class="Delimiter">(</span>s == <span class="Constant">&quot;number-of-locals&quot;</span><span class="Delimiter">)</span> <span class="Identifier">return</span> <span class="Constant">true</span><span class="Delimiter">;</span>
 <span id="L187" class="LineNr">187 </span>
 <span id="L188" class="LineNr">188 </span><span class="Delimiter">:(before &quot;End Rewrite Instruction(curr, <a href='010vm.cc.html#L19'>recipe</a> result)&quot;)</span>
@@ -263,25 +263,25 @@ if ('onhashchange' in window) {
 <span id="L197" class="LineNr">197 </span><span class="Delimiter">:(code)</span>
 <span id="L198" class="LineNr">198 </span><span class="Normal">void</span> <a href='043space.cc.html#L198'>rewrite_default_space_instruction</a><span class="Delimiter">(</span>instruction&amp; curr<span class="Delimiter">)</span> <span class="Delimiter">{</span>
 <span id="L199" class="LineNr">199 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!curr<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>empty<span class="Delimiter">())</span>
-<span id="L200" class="LineNr">200 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <span class="Constant">&quot;'&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>curr<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;' can't take any ingredients</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; end<span class="Delimiter">();</span>
+<span id="L200" class="LineNr">200 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <span class="Constant">&quot;'&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>curr<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;' can't take any ingredients</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; end<span class="Delimiter">();</span>
 <span id="L201" class="LineNr">201 </span>  curr<span class="Delimiter">.</span>name = <span class="Constant">&quot;new&quot;</span><span class="Delimiter">;</span>
 <span id="L202" class="LineNr">202 </span>  <span class="Constant">curr.ingredients.push_back(reagent(&quot;location:type</span><span class="Constant">&quot;));</span>
 <span id="L203" class="LineNr">203 </span>  <span class="Constant">curr.ingredients.push_back(reagent(&quot;number-of-locals:literal</span><span class="Constant">&quot;));</span>
 <span id="L204" class="LineNr">204 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!curr<span class="Delimiter">.</span>products<span class="Delimiter">.</span>empty<span class="Delimiter">())</span>
-<span id="L205" class="LineNr">205 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <span class="Constant">&quot;new-default-space can't take any results</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; end<span class="Delimiter">();</span>
+<span id="L205" class="LineNr">205 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <span class="Constant">&quot;new-default-space can't take any results</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; end<span class="Delimiter">();</span>
 <span id="L206" class="LineNr">206 </span>  curr<span class="Delimiter">.</span>products<span class="Delimiter">.</span>push_back<span class="Delimiter">(</span>reagent<span class="Delimiter">(</span><span class="Constant">&quot;default-space:space&quot;</span><span class="Delimiter">));</span>
 <span id="L207" class="LineNr">207 </span><span class="Delimiter">}</span>
 <span id="L208" class="LineNr">208 </span><span class="Delimiter">:(after &quot;Begin Preprocess read_memory(x)&quot;)</span>
 <span id="L209" class="LineNr">209 </span><span class="Normal">if</span> <span class="Delimiter">(</span>x<span class="Delimiter">.</span>name == <span class="Constant">&quot;number-of-locals&quot;</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
 <span id="L210" class="LineNr">210 </span>  vector&lt;<span class="Normal">double</span>&gt; result<span class="Delimiter">;</span>
-<span id="L211" class="LineNr">211 </span>  result<span class="Delimiter">.</span>push_back<span class="Delimiter">(</span>Name[get<span class="Delimiter">(</span>Recipe_ordinal<span class="Delimiter">,</span> <a href='026call.cc.html#L85'>current_recipe_name</a><span class="Delimiter">())</span>][<span class="Constant">&quot;&quot;</span>]<span class="Delimiter">);</span>
+<span id="L211" class="LineNr">211 </span>  result<span class="Delimiter">.</span>push_back<span class="Delimiter">(</span>Name[get<span class="Delimiter">(</span>Recipe_ordinal<span class="Delimiter">,</span> <a href='026call.cc.html#L87'>current_recipe_name</a><span class="Delimiter">())</span>][<span class="Constant">&quot;&quot;</span>]<span class="Delimiter">);</span>
 <span id="L212" class="LineNr">212 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>result<span class="Delimiter">.</span>back<span class="Delimiter">()</span> == <span class="Constant">0</span><span class="Delimiter">)</span>
-<span id="L213" class="LineNr">213 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <span class="Constant">&quot;no space allocated for default-space in <a href='010vm.cc.html#L19'>recipe</a> &quot;</span> &lt;&lt; <a href='026call.cc.html#L85'>current_recipe_name</a><span class="Delimiter">()</span> &lt;&lt; <span class="Constant">&quot;; are you using names?</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L213" class="LineNr">213 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <span class="Constant">&quot;no space allocated for default-space in <a href='010vm.cc.html#L19'>recipe</a> &quot;</span> &lt;&lt; <a href='026call.cc.html#L87'>current_recipe_name</a><span class="Delimiter">()</span> &lt;&lt; <span class="Constant">&quot;; are you using names?</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L214" class="LineNr">214 </span>  <span class="Identifier">return</span> result<span class="Delimiter">;</span>
 <span id="L215" class="LineNr">215 </span><span class="Delimiter">}</span>
 <span id="L216" class="LineNr">216 </span><span class="Delimiter">:(after &quot;Begin Preprocess write_memory(x, data)&quot;)</span>
 <span id="L217" class="LineNr">217 </span><span class="Normal">if</span> <span class="Delimiter">(</span>x<span class="Delimiter">.</span>name == <span class="Constant">&quot;number-of-locals&quot;</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L218" class="LineNr">218 </span>  <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span><a href='026call.cc.html#L85'>current_recipe_name</a><span class="Delimiter">())</span> &lt;&lt; <span class="Constant">&quot;can't write to special name 'number-of-locals'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; end<span class="Delimiter">();</span>
+<span id="L218" class="LineNr">218 </span>  <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span><a href='026call.cc.html#L87'>current_recipe_name</a><span class="Delimiter">())</span> &lt;&lt; <span class="Constant">&quot;can't write to special name 'number-of-locals'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; end<span class="Delimiter">();</span>
 <span id="L219" class="LineNr">219 </span>  <span class="Identifier">return</span><span class="Delimiter">;</span>
 <span id="L220" class="LineNr">220 </span><span class="Delimiter">}</span>
 <span id="L221" class="LineNr">221 </span>
@@ -314,7 +314,7 @@ if ('onhashchange' in window) {
 <span id="L248" class="LineNr">248 </span><span class="Delimiter">}</span>
 <span id="L249" class="LineNr">249 </span><span class="Delimiter">:(after &quot;Begin Decrement Refcounts(canonized_x)&quot;)</span>
 <span id="L250" class="LineNr">250 </span><span class="Normal">if</span> <span class="Delimiter">(</span><a href='043space.cc.html#L106'>is_mu_space</a><span class="Delimiter">(</span>canonized_x<span class="Delimiter">))</span> <span class="Delimiter">{</span>
-<span id="L251" class="LineNr">251 </span>  <span class="Normal">int</span> space_address = <span class="Delimiter">(</span>canonized_x<span class="Delimiter">.</span>name == <span class="Constant">&quot;default-space&quot;</span><span class="Delimiter">)</span> ? <a href='026call.cc.html#L81'>current_call</a><span class="Delimiter">().</span>default_space : <a href='001help.cc.html#L229'>get_or_insert</a><span class="Delimiter">(</span>Memory<span class="Delimiter">,</span> canonized_x<span class="Delimiter">.</span>value<span class="Delimiter">);</span>
+<span id="L251" class="LineNr">251 </span>  <span class="Normal">int</span> space_address = <span class="Delimiter">(</span>canonized_x<span class="Delimiter">.</span>name == <span class="Constant">&quot;default-space&quot;</span><span class="Delimiter">)</span> ? <a href='026call.cc.html#L83'>current_call</a><span class="Delimiter">().</span>default_space : <a href='001help.cc.html#L229'>get_or_insert</a><span class="Delimiter">(</span>Memory<span class="Delimiter">,</span> canonized_x<span class="Delimiter">.</span>value<span class="Delimiter">);</span>
 <span id="L252" class="LineNr">252 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>space_address == <span class="Constant">0</span><span class="Delimiter">)</span> <span class="Identifier">return</span><span class="Delimiter">;</span>
 <span id="L253" class="LineNr">253 </span>  <span class="Comment">// this branch relies on global state</span>
 <span id="L254" class="LineNr">254 </span>  string recipe_name<span class="Delimiter">;</span>
@@ -324,9 +324,9 @@ if ('onhashchange' in window) {
 <span id="L258" class="LineNr">258 </span>  <span class="Delimiter">}</span>
 <span id="L259" class="LineNr">259 </span>  <span class="Normal">else</span> <span class="Delimiter">{</span>
 <span id="L260" class="LineNr">260 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>canonized_x<span class="Delimiter">.</span>name != <span class="Constant">&quot;default-space&quot;</span><span class="Delimiter">)</span>
-<span id="L261" class="LineNr">261 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> cerr &lt;&lt; <a href='026call.cc.html#L85'>current_recipe_name</a><span class="Delimiter">()</span> &lt;&lt; <span class="Constant">&quot;: &quot;</span> &lt;&lt; <a href='028call_return.cc.html#L163'>to_string</a><span class="Delimiter">(</span>canonized_x<span class="Delimiter">)</span> &lt;&lt; <span class="cSpecial">'\n'</span><span class="Delimiter">;</span>
+<span id="L261" class="LineNr">261 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> cerr &lt;&lt; <a href='026call.cc.html#L87'>current_recipe_name</a><span class="Delimiter">()</span> &lt;&lt; <span class="Constant">&quot;: &quot;</span> &lt;&lt; <a href='028call_return.cc.html#L163'>to_string</a><span class="Delimiter">(</span>canonized_x<span class="Delimiter">)</span> &lt;&lt; <span class="cSpecial">'\n'</span><span class="Delimiter">;</span>
 <span id="L262" class="LineNr">262 </span>  <span class="Conceal">¦</span> assert<span class="Delimiter">(</span>canonized_x<span class="Delimiter">.</span>name == <span class="Constant">&quot;default-space&quot;</span><span class="Delimiter">);</span>
-<span id="L263" class="LineNr">263 </span>  <span class="Conceal">¦</span> recipe_name = <a href='026call.cc.html#L85'>current_recipe_name</a><span class="Delimiter">();</span>
+<span id="L263" class="LineNr">263 </span>  <span class="Conceal">¦</span> recipe_name = <a href='026call.cc.html#L87'>current_recipe_name</a><span class="Delimiter">();</span>
 <span id="L264" class="LineNr">264 </span>  <span class="Delimiter">}</span>
 <span id="L265" class="LineNr">265 </span>  <span class="Normal">const</span> <a href='010vm.cc.html#L14'>recipe_ordinal</a> space_recipe_ordinal = get<span class="Delimiter">(</span>Recipe_ordinal<span class="Delimiter">,</span> recipe_name<span class="Delimiter">);</span>
 <span id="L266" class="LineNr">266 </span>  <span class="Normal">const</span> recipe&amp; space_recipe = get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> space_recipe_ordinal<span class="Delimiter">);</span>
@@ -358,7 +358,7 @@ if ('onhashchange' in window) {
 <span id="L292" class="LineNr">292 </span><span class="Delimiter">:(before &quot;Reclaim Space(space_address, space_recipe_ordinal, space_recipe)&quot;)</span>
 <span id="L293" class="LineNr">293 </span><span class="Normal">if</span> <span class="Delimiter">(</span><a href='001help.cc.html#L229'>get_or_insert</a><span class="Delimiter">(</span>Memory<span class="Delimiter">,</span> space_address<span class="Delimiter">)</span> &lt;= <span class="Constant">1</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
 <span id="L294" class="LineNr">294 </span>  set&lt;string&gt; reclaimed_locals<span class="Delimiter">;</span>
-<span id="L295" class="LineNr">295 </span>  <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">&quot;mem&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;trying to reclaim locals&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L295" class="LineNr">295 </span>  <a href='003trace.cc.html#L167'>trace</a><span class="Delimiter">(</span><span class="Constant">&quot;mem&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;trying to reclaim locals&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L296" class="LineNr">296 </span>  <span class="Comment">// update any refcounts for variables in the space -- in the context of the space</span>
 <span id="L297" class="LineNr">297 </span>  call_stack calls_stash = <a href='043space.cc.html#L318'>save_call_stack</a><span class="Delimiter">(</span>space_address<span class="Delimiter">,</span> space_recipe_ordinal<span class="Delimiter">);</span>
 <span id="L298" class="LineNr">298 </span>  Current_routine<span class="Delimiter">-&gt;</span>calls<span class="Delimiter">.</span>swap<span class="Delimiter">(</span>calls_stash<span class="Delimiter">);</span>
@@ -367,13 +367,13 @@ if ('onhashchange' in window) {
 <span id="L301" class="LineNr">301 </span>  <span class="Conceal">¦</span> <span class="Normal">const</span> instruction&amp; inst = space_recipe<span class="Delimiter">.</span>steps<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">);</span>
 <span id="L302" class="LineNr">302 </span>  <span class="Conceal">¦</span> <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> i = <span class="Constant">0</span><span class="Delimiter">;</span>  i &lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>products<span class="Delimiter">);</span>  ++i<span class="Delimiter">)</span> <span class="Delimiter">{</span>
 <span id="L303" class="LineNr">303 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> reagent<span class="Comment">/*</span><span class="Comment">copy</span><span class="Comment">*/</span> product = inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">);</span>
-<span id="L304" class="LineNr">304 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>reclaimed_locals<span class="Delimiter">.</span>find<span class="Delimiter">(</span>product<span class="Delimiter">.</span>name<span class="Delimiter">)</span> != reclaimed_locals<span class="Delimiter">.</span><a href='003trace.cc.html#L197'>end</a><span class="Delimiter">())</span> <span class="Identifier">continue</span><span class="Delimiter">;</span>
+<span id="L304" class="LineNr">304 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>reclaimed_locals<span class="Delimiter">.</span>find<span class="Delimiter">(</span>product<span class="Delimiter">.</span>name<span class="Delimiter">)</span> != reclaimed_locals<span class="Delimiter">.</span><a href='003trace.cc.html#L203'>end</a><span class="Delimiter">())</span> <span class="Identifier">continue</span><span class="Delimiter">;</span>
 <span id="L305" class="LineNr">305 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> reclaimed_locals<span class="Delimiter">.</span>insert<span class="Delimiter">(</span>product<span class="Delimiter">.</span>name<span class="Delimiter">);</span>
 <span id="L306" class="LineNr">306 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Comment">// local variables only</span>
 <span id="L307" class="LineNr">307 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>has_property<span class="Delimiter">(</span>product<span class="Delimiter">,</span> <span class="Constant">&quot;lookup&quot;</span><span class="Delimiter">))</span> <span class="Identifier">continue</span><span class="Delimiter">;</span>
 <span id="L308" class="LineNr">308 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>has_property<span class="Delimiter">(</span>product<span class="Delimiter">,</span> <span class="Constant">&quot;raw&quot;</span><span class="Delimiter">))</span> <span class="Identifier">continue</span><span class="Delimiter">;</span>  <span class="Comment">// tests often want to check such locations after they run</span>
 <span id="L309" class="LineNr">309 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Comment">// End Checks For Reclaiming Locals</span>
-<span id="L310" class="LineNr">310 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">&quot;mem&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;trying to reclaim local &quot;</span> &lt;&lt; product<span class="Delimiter">.</span>original_string &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L310" class="LineNr">310 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L167'>trace</a><span class="Delimiter">(</span><span class="Constant">&quot;mem&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;trying to reclaim local &quot;</span> &lt;&lt; product<span class="Delimiter">.</span>original_string &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L311" class="LineNr">311 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> canonize<span class="Delimiter">(</span>product<span class="Delimiter">);</span>
 <span id="L312" class="LineNr">312 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='036refcount.cc.html#L59'>decrement_any_refcounts</a><span class="Delimiter">(</span>product<span class="Delimiter">);</span>
 <span id="L313" class="LineNr">313 </span>  <span class="Conceal">¦</span> <span class="Delimiter">}</span>
@@ -417,14 +417,14 @@ if ('onhashchange' in window) {
 <span id="L351" class="LineNr">351 </span><a href='043space.cc.html#L353'>increment_refcounts_of_return_ingredients</a><span class="Delimiter">(</span>ingredients<span class="Delimiter">);</span>
 <span id="L352" class="LineNr">352 </span><span class="Delimiter">:(code)</span>
 <span id="L353" class="LineNr">353 </span><span class="Normal">void</span> <a href='043space.cc.html#L353'>increment_refcounts_of_return_ingredients</a><span class="Delimiter">(</span><span class="Normal">const</span> vector&lt;vector&lt;<span class="Normal">double</span>&gt; &gt;&amp; ingredients<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L354" class="LineNr">354 </span>  assert<span class="Delimiter">(</span><a href='026call.cc.html#L87'>current_instruction</a><span class="Delimiter">().</span>operation == RETURN<span class="Delimiter">);</span>
+<span id="L354" class="LineNr">354 </span>  assert<span class="Delimiter">(</span><a href='026call.cc.html#L89'>current_instruction</a><span class="Delimiter">().</span>operation == RETURN<span class="Delimiter">);</span>
 <span id="L355" class="LineNr">355 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>Current_routine<span class="Delimiter">-&gt;</span>calls<span class="Delimiter">)</span> == <span class="Constant">1</span><span class="Delimiter">)</span>  <span class="Comment">// no caller to receive result</span>
 <span id="L356" class="LineNr">356 </span>  <span class="Conceal">¦</span> <span class="Identifier">return</span><span class="Delimiter">;</span>
-<span id="L357" class="LineNr">357 </span>  <span class="Normal">const</span> instruction&amp; caller_instruction = <a href='026call.cc.html#L86'>to_instruction</a><span class="Delimiter">(</span>*++Current_routine<span class="Delimiter">-&gt;</span>calls<span class="Delimiter">.</span>begin<span class="Delimiter">());</span>
-<span id="L358" class="LineNr">358 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> i = <span class="Constant">0</span><span class="Delimiter">;</span>  i &lt; min<span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span><a href='026call.cc.html#L87'>current_instruction</a><span class="Delimiter">().</span>ingredients<span class="Delimiter">),</span> <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>caller_instruction<span class="Delimiter">.</span>products<span class="Delimiter">));</span>  ++i<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L357" class="LineNr">357 </span>  <span class="Normal">const</span> instruction&amp; caller_instruction = <a href='026call.cc.html#L88'>to_instruction</a><span class="Delimiter">(</span>*++Current_routine<span class="Delimiter">-&gt;</span>calls<span class="Delimiter">.</span>begin<span class="Delimiter">());</span>
+<span id="L358" class="LineNr">358 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> i = <span class="Constant">0</span><span class="Delimiter">;</span>  i &lt; min<span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span><a href='026call.cc.html#L89'>current_instruction</a><span class="Delimiter">().</span>ingredients<span class="Delimiter">),</span> <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>caller_instruction<span class="Delimiter">.</span>products<span class="Delimiter">));</span>  ++i<span class="Delimiter">)</span> <span class="Delimiter">{</span>
 <span id="L359" class="LineNr">359 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>!is_dummy<span class="Delimiter">(</span>caller_instruction<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">)))</span> <span class="Delimiter">{</span>
 <span id="L360" class="LineNr">360 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Comment">// no need to canonize ingredient because we ignore its value</span>
-<span id="L361" class="LineNr">361 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='036refcount.cc.html#L41'>increment_any_refcounts</a><span class="Delimiter">(</span><a href='026call.cc.html#L87'>current_instruction</a><span class="Delimiter">().</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">),</span> ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">));</span>
+<span id="L361" class="LineNr">361 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='036refcount.cc.html#L41'>increment_any_refcounts</a><span class="Delimiter">(</span><a href='026call.cc.html#L89'>current_instruction</a><span class="Delimiter">().</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">),</span> ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">));</span>
 <span id="L362" class="LineNr">362 </span>  <span class="Conceal">¦</span> <span class="Delimiter">}</span>
 <span id="L363" class="LineNr">363 </span>  <span class="Delimiter">}</span>
 <span id="L364" class="LineNr">364 </span><span class="Delimiter">}</span>
@@ -507,10 +507,10 @@ if ('onhashchange' in window) {
 <span id="L441" class="LineNr">441 </span>  <span class="Comment">// End check_default_space Special-cases</span>
 <span id="L442" class="LineNr">442 </span>  <span class="Comment">// assume recipes with only numeric addresses know what they're doing (usually tests)</span>
 <span id="L443" class="LineNr">443 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!contains_non_special_name<span class="Delimiter">(</span>r<span class="Delimiter">))</span> <span class="Identifier">return</span><span class="Delimiter">;</span>
-<span id="L444" class="LineNr">444 </span>  <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">9991</span><span class="Delimiter">,</span> <span class="Constant">&quot;transform&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;--- check that <a href='010vm.cc.html#L19'>recipe</a> &quot;</span> &lt;&lt; caller<span class="Delimiter">.</span>name &lt;&lt; <span class="Constant">&quot; sets default-space&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L444" class="LineNr">444 </span>  <a href='003trace.cc.html#L167'>trace</a><span class="Delimiter">(</span><span class="Constant">9991</span><span class="Delimiter">,</span> <span class="Constant">&quot;transform&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;--- check that <a href='010vm.cc.html#L19'>recipe</a> &quot;</span> &lt;&lt; caller<span class="Delimiter">.</span>name &lt;&lt; <span class="Constant">&quot; sets default-space&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L445" class="LineNr">445 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>caller<span class="Delimiter">.</span>steps<span class="Delimiter">.</span>empty<span class="Delimiter">())</span> <span class="Identifier">return</span><span class="Delimiter">;</span>
 <span id="L446" class="LineNr">446 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!starts_by_setting_default_space<span class="Delimiter">(</span>caller<span class="Delimiter">))</span>
-<span id="L447" class="LineNr">447 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; caller<span class="Delimiter">.</span>name &lt;&lt; <span class="Constant">&quot; does not seem to start with 'local-scope' or 'default-space'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L447" class="LineNr">447 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; caller<span class="Delimiter">.</span>name &lt;&lt; <span class="Constant">&quot; does not seem to start with 'local-scope' or 'default-space'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L448" class="LineNr">448 </span><span class="Delimiter">}</span>
 <span id="L449" class="LineNr">449 </span><span class="Delimiter">:(after &quot;Load Mu Prelude&quot;)</span>
 <span id="L450" class="LineNr">450 </span>Hide_missing_default_space_errors = <span class="Constant">false</span><span class="Delimiter">;</span>
@@ -521,7 +521,7 @@ if ('onhashchange' in window) {
 <span id="L455" class="LineNr">455 </span>
 <span id="L456" class="LineNr">456 </span><span class="Delimiter">:(code)</span>
 <span id="L457" class="LineNr">457 </span><span class="Normal">bool</span> contains_non_special_name<span class="Delimiter">(</span><span class="Normal">const</span> <a href='010vm.cc.html#L14'>recipe_ordinal</a> r<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L458" class="LineNr">458 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span>map&lt;string<span class="Delimiter">,</span> <span class="Normal">int</span>&gt;::iterator p = Name[r]<span class="Delimiter">.</span>begin<span class="Delimiter">();</span>  p != Name[r]<span class="Delimiter">.</span><a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>  ++p<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L458" class="LineNr">458 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span>map&lt;string<span class="Delimiter">,</span> <span class="Normal">int</span>&gt;::iterator p = Name[r]<span class="Delimiter">.</span>begin<span class="Delimiter">();</span>  p != Name[r]<span class="Delimiter">.</span><a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>  ++p<span class="Delimiter">)</span> <span class="Delimiter">{</span>
 <span id="L459" class="LineNr">459 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>p<span class="Delimiter">-&gt;</span>first<span class="Delimiter">.</span>empty<span class="Delimiter">())</span> <span class="Identifier">continue</span><span class="Delimiter">;</span>
 <span id="L460" class="LineNr">460 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>p<span class="Delimiter">-&gt;</span>first<span class="Delimiter">.</span>find<span class="Delimiter">(</span><span class="Constant">&quot;stash_&quot;</span><span class="Delimiter">)</span> == <span class="Constant">0</span><span class="Delimiter">)</span> <span class="Identifier">continue</span><span class="Delimiter">;</span>  <span class="Comment">// generated by rewrite_stashes_to_text (cross-layer)</span>
 <span id="L461" class="LineNr">461 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>!is_special_name<span class="Delimiter">(</span>p<span class="Delimiter">-&gt;</span>first<span class="Delimiter">))</span>
diff --git a/html/044space_surround.cc.html b/html/044space_surround.cc.html
index 312a9293..312db856 100644
--- a/html/044space_surround.cc.html
+++ b/html/044space_surround.cc.html
@@ -101,7 +101,7 @@ if ('onhashchange' in window) {
 <span id="L38" class="LineNr">38 </span>
 <span id="L39" class="LineNr">39 </span><span class="Delimiter">:(replace{} &quot;int space_base(const reagent&amp; x)&quot;)</span>
 <span id="L40" class="LineNr">40 </span><span class="Normal">int</span> <a href='043space.cc.html#L78'>space_base</a><span class="Delimiter">(</span><span class="Normal">const</span> reagent&amp; x<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L41" class="LineNr">41 </span>  <span class="Normal">int</span> base = <a href='026call.cc.html#L81'>current_call</a><span class="Delimiter">().</span>default_space ? <span class="Delimiter">(</span><a href='026call.cc.html#L81'>current_call</a><span class="Delimiter">().</span>default_space+<span class="Comment">/*</span><span class="Comment">skip refcount</span><span class="Comment">*/</span><span class="Constant">1</span><span class="Delimiter">)</span> : <span class="Constant">0</span><span class="Delimiter">;</span>
+<span id="L41" class="LineNr">41 </span>  <span class="Normal">int</span> base = <a href='026call.cc.html#L83'>current_call</a><span class="Delimiter">().</span>default_space ? <span class="Delimiter">(</span><a href='026call.cc.html#L83'>current_call</a><span class="Delimiter">().</span>default_space+<span class="Comment">/*</span><span class="Comment">skip refcount</span><span class="Comment">*/</span><span class="Constant">1</span><span class="Delimiter">)</span> : <span class="Constant">0</span><span class="Delimiter">;</span>
 <span id="L42" class="LineNr">42 </span>  <span class="Identifier">return</span> <a href='043space.cc.html#L78'>space_base</a><span class="Delimiter">(</span>x<span class="Delimiter">,</span> space_index<span class="Delimiter">(</span>x<span class="Delimiter">),</span> base<span class="Delimiter">);</span>
 <span id="L43" class="LineNr">43 </span><span class="Delimiter">}</span>
 <span id="L44" class="LineNr">44 </span>
@@ -116,7 +116,7 @@ if ('onhashchange' in window) {
 <span id="L53" class="LineNr">53 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> i = <span class="Constant">0</span><span class="Delimiter">;</span>  i &lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>x<span class="Delimiter">.</span>properties<span class="Delimiter">);</span>  ++i<span class="Delimiter">)</span> <span class="Delimiter">{</span>
 <span id="L54" class="LineNr">54 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>x<span class="Delimiter">.</span>properties<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">).</span>first == <span class="Constant">&quot;space&quot;</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
 <span id="L55" class="LineNr">55 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>!x<span class="Delimiter">.</span>properties<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">).</span>second || x<span class="Delimiter">.</span>properties<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">).</span>second<span class="Delimiter">-&gt;</span>right<span class="Delimiter">)</span>
-<span id="L56" class="LineNr">56 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span><a href='026call.cc.html#L85'>current_recipe_name</a><span class="Delimiter">())</span> &lt;&lt; <span class="Constant">&quot;/space metadata should take exactly one value in '&quot;</span> &lt;&lt; x<span class="Delimiter">.</span>original_string &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L56" class="LineNr">56 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span><a href='026call.cc.html#L87'>current_recipe_name</a><span class="Delimiter">())</span> &lt;&lt; <span class="Constant">&quot;/space metadata should take exactly one value in '&quot;</span> &lt;&lt; x<span class="Delimiter">.</span>original_string &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L57" class="LineNr">57 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Identifier">return</span> <a href='002test.cc.html#L91'>to_integer</a><span class="Delimiter">(</span>x<span class="Delimiter">.</span>properties<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">).</span>second<span class="Delimiter">-&gt;</span>value<span class="Delimiter">);</span>
 <span id="L58" class="LineNr">58 </span>  <span class="Conceal">¦</span> <span class="Delimiter">}</span>
 <span id="L59" class="LineNr">59 </span>  <span class="Delimiter">}</span>
diff --git a/html/045closure_name.cc.html b/html/045closure_name.cc.html
index 579fb9ef..aae9944e 100644
--- a/html/045closure_name.cc.html
+++ b/html/045closure_name.cc.html
@@ -103,7 +103,7 @@ if ('onhashchange' in window) {
 <span id="L40" class="LineNr"> 40 </span>
 <span id="L41" class="LineNr"> 41 </span><span class="Delimiter">:(code)</span>
 <span id="L42" class="LineNr"> 42 </span><span class="Normal">void</span> <a href='045closure_name.cc.html#L42'>collect_surrounding_spaces</a><span class="Delimiter">(</span><span class="Normal">const</span> <a href='010vm.cc.html#L14'>recipe_ordinal</a> r<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L43" class="LineNr"> 43 </span>  <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">9991</span><span class="Delimiter">,</span> <span class="Constant">&quot;transform&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;--- collect surrounding spaces for <a href='010vm.cc.html#L19'>recipe</a> &quot;</span> &lt;&lt; get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L43" class="LineNr"> 43 </span>  <a href='003trace.cc.html#L167'>trace</a><span class="Delimiter">(</span><span class="Constant">9991</span><span class="Delimiter">,</span> <span class="Constant">&quot;transform&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;--- collect surrounding spaces for <a href='010vm.cc.html#L19'>recipe</a> &quot;</span> &lt;&lt; get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L44" class="LineNr"> 44 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> i = <span class="Constant">0</span><span class="Delimiter">;</span>  i &lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>steps<span class="Delimiter">);</span>  ++i<span class="Delimiter">)</span> <span class="Delimiter">{</span>
 <span id="L45" class="LineNr"> 45 </span>  <span class="Conceal">¦</span> <span class="Normal">const</span> instruction&amp; inst = get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>steps<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">);</span>
 <span id="L46" class="LineNr"> 46 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>inst<span class="Delimiter">.</span>is_label<span class="Delimiter">)</span> <span class="Identifier">continue</span><span class="Delimiter">;</span>
@@ -111,28 +111,28 @@ if ('onhashchange' in window) {
 <span id="L48" class="LineNr"> 48 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>is_literal<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span>j<span class="Delimiter">)))</span> <span class="Identifier">continue</span><span class="Delimiter">;</span>
 <span id="L49" class="LineNr"> 49 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span>j<span class="Delimiter">).</span>name != <span class="Constant">&quot;0&quot;</span><span class="Delimiter">)</span> <span class="Identifier">continue</span><span class="Delimiter">;</span>
 <span id="L50" class="LineNr"> 50 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>!is_mu_space<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span>j<span class="Delimiter">)))</span> <span class="Delimiter">{</span>
-<span id="L51" class="LineNr"> 51 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <span class="Constant">&quot;slot 0 should always have type <a href='043space.cc.html#L82'>address</a>:array:location, but is '&quot;</span> &lt;&lt; to_string<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span>j<span class="Delimiter">))</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L51" class="LineNr"> 51 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <span class="Constant">&quot;slot 0 should always have type <a href='043space.cc.html#L82'>address</a>:array:location, but is '&quot;</span> &lt;&lt; to_string<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span>j<span class="Delimiter">))</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L52" class="LineNr"> 52 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Identifier">continue</span><span class="Delimiter">;</span>
 <span id="L53" class="LineNr"> 53 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Delimiter">}</span>
 <span id="L54" class="LineNr"> 54 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> string_tree* s = property<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span>j<span class="Delimiter">),</span> <span class="Constant">&quot;names&quot;</span><span class="Delimiter">);</span>
 <span id="L55" class="LineNr"> 55 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>!s<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L56" class="LineNr"> 56 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <span class="Constant">&quot;slot 0 requires a /names property in <a href='010vm.cc.html#L19'>recipe</a> '&quot;</span> &lt;&lt; get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L56" class="LineNr"> 56 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <span class="Constant">&quot;slot 0 requires a /names property in <a href='010vm.cc.html#L19'>recipe</a> '&quot;</span> &lt;&lt; get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L57" class="LineNr"> 57 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Identifier">continue</span><span class="Delimiter">;</span>
 <span id="L58" class="LineNr"> 58 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Delimiter">}</span>
-<span id="L59" class="LineNr"> 59 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>!s<span class="Delimiter">-&gt;</span>atom<span class="Delimiter">)</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <span class="Constant">&quot;slot 0 should have a single value in /names, but got '&quot;</span> &lt;&lt; to_string<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span>j<span class="Delimiter">))</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L59" class="LineNr"> 59 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>!s<span class="Delimiter">-&gt;</span>atom<span class="Delimiter">)</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <span class="Constant">&quot;slot 0 should have a single value in /names, but got '&quot;</span> &lt;&lt; to_string<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span>j<span class="Delimiter">))</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L60" class="LineNr"> 60 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">const</span> string&amp; surrounding_recipe_name = s<span class="Delimiter">-&gt;</span>value<span class="Delimiter">;</span>
 <span id="L61" class="LineNr"> 61 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>surrounding_recipe_name<span class="Delimiter">.</span>empty<span class="Delimiter">())</span> <span class="Delimiter">{</span>
-<span id="L62" class="LineNr"> 62 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <span class="Constant">&quot;slot 0 doesn't initialize its /names property in recipe '&quot;</span> &lt;&lt; get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; end<span class="Delimiter">();</span>
+<span id="L62" class="LineNr"> 62 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <span class="Constant">&quot;slot 0 doesn't initialize its /names property in recipe '&quot;</span> &lt;&lt; get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; end<span class="Delimiter">();</span>
 <span id="L63" class="LineNr"> 63 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Identifier">continue</span><span class="Delimiter">;</span>
 <span id="L64" class="LineNr"> 64 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Delimiter">}</span>
 <span id="L65" class="LineNr"> 65 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>contains_key<span class="Delimiter">(</span>Surrounding_space<span class="Delimiter">,</span> r<span class="Delimiter">)</span>
 <span id="L66" class="LineNr"> 66 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> &amp;&amp; get<span class="Delimiter">(</span>Surrounding_space<span class="Delimiter">,</span> r<span class="Delimiter">)</span> != get<span class="Delimiter">(</span>Recipe_ordinal<span class="Delimiter">,</span> surrounding_recipe_name<span class="Delimiter">))</span> <span class="Delimiter">{</span>
-<span id="L67" class="LineNr"> 67 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <span class="Constant">&quot;recipe '&quot;</span> &lt;&lt; get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name &lt;&lt; <span class="Constant">&quot;' can have only one 'surrounding' <a href='010vm.cc.html#L19'>recipe</a> but has '&quot;</span> &lt;&lt; get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> get<span class="Delimiter">(</span>Surrounding_space<span class="Delimiter">,</span> r<span class="Delimiter">)).</span>name &lt;&lt; <span class="Constant">&quot;' and '&quot;</span> &lt;&lt; surrounding_recipe_name &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L67" class="LineNr"> 67 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <span class="Constant">&quot;recipe '&quot;</span> &lt;&lt; get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name &lt;&lt; <span class="Constant">&quot;' can have only one 'surrounding' <a href='010vm.cc.html#L19'>recipe</a> but has '&quot;</span> &lt;&lt; get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> get<span class="Delimiter">(</span>Surrounding_space<span class="Delimiter">,</span> r<span class="Delimiter">)).</span>name &lt;&lt; <span class="Constant">&quot;' and '&quot;</span> &lt;&lt; surrounding_recipe_name &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L68" class="LineNr"> 68 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Identifier">continue</span><span class="Delimiter">;</span>
 <span id="L69" class="LineNr"> 69 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Delimiter">}</span>
-<span id="L70" class="LineNr"> 70 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">9993</span><span class="Delimiter">,</span> <span class="Constant">&quot;name&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;lexically surrounding space for <a href='010vm.cc.html#L19'>recipe</a> &quot;</span> &lt;&lt; get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name &lt;&lt; <span class="Constant">&quot; comes from &quot;</span> &lt;&lt; surrounding_recipe_name &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L70" class="LineNr"> 70 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L167'>trace</a><span class="Delimiter">(</span><span class="Constant">9993</span><span class="Delimiter">,</span> <span class="Constant">&quot;name&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;lexically surrounding space for <a href='010vm.cc.html#L19'>recipe</a> &quot;</span> &lt;&lt; get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name &lt;&lt; <span class="Constant">&quot; comes from &quot;</span> &lt;&lt; surrounding_recipe_name &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L71" class="LineNr"> 71 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>!contains_key<span class="Delimiter">(</span>Recipe_ordinal<span class="Delimiter">,</span> surrounding_recipe_name<span class="Delimiter">))</span> <span class="Delimiter">{</span>
-<span id="L72" class="LineNr"> 72 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <span class="Constant">&quot;can't find recipe providing surrounding space for '&quot;</span> &lt;&lt; get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name &lt;&lt; <span class="Constant">&quot;'; looking for '&quot;</span> &lt;&lt; surrounding_recipe_name &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; end<span class="Delimiter">();</span>
+<span id="L72" class="LineNr"> 72 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <span class="Constant">&quot;can't find recipe providing surrounding space for '&quot;</span> &lt;&lt; get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name &lt;&lt; <span class="Constant">&quot;'; looking for '&quot;</span> &lt;&lt; surrounding_recipe_name &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; end<span class="Delimiter">();</span>
 <span id="L73" class="LineNr"> 73 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Identifier">continue</span><span class="Delimiter">;</span>
 <span id="L74" class="LineNr"> 74 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Delimiter">}</span>
 <span id="L75" class="LineNr"> 75 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='001help.cc.html#L221'>put</a><span class="Delimiter">(</span>Surrounding_space<span class="Delimiter">,</span> r<span class="Delimiter">,</span> get<span class="Delimiter">(</span>Recipe_ordinal<span class="Delimiter">,</span> surrounding_recipe_name<span class="Delimiter">));</span>
@@ -146,11 +146,11 @@ if ('onhashchange' in window) {
 <span id="L83" class="LineNr"> 83 </span><span class="Delimiter">:(replace{} &quot;int lookup_name(const reagent&amp; r, const <a href='010vm.cc.html#L14'>recipe_ordinal</a> default_recipe)&quot;)</span>
 <span id="L84" class="LineNr"> 84 </span><span class="Normal">int</span> lookup_name<span class="Delimiter">(</span><span class="Normal">const</span> reagent&amp; x<span class="Delimiter">,</span> <span class="Normal">const</span> <a href='010vm.cc.html#L14'>recipe_ordinal</a> default_recipe<span class="Delimiter">)</span> <span class="Delimiter">{</span>
 <span id="L85" class="LineNr"> 85 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!has_property<span class="Delimiter">(</span>x<span class="Delimiter">,</span> <span class="Constant">&quot;space&quot;</span><span class="Delimiter">))</span> <span class="Delimiter">{</span>
-<span id="L86" class="LineNr"> 86 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>Name[default_recipe]<span class="Delimiter">.</span>empty<span class="Delimiter">())</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <span class="Constant">&quot;name not found: &quot;</span> &lt;&lt; x<span class="Delimiter">.</span>name &lt;&lt; <span class="cSpecial">'\n'</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L86" class="LineNr"> 86 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>Name[default_recipe]<span class="Delimiter">.</span>empty<span class="Delimiter">())</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <span class="Constant">&quot;name not found: &quot;</span> &lt;&lt; x<span class="Delimiter">.</span>name &lt;&lt; <span class="cSpecial">'\n'</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L87" class="LineNr"> 87 </span>  <span class="Conceal">¦</span> <span class="Identifier">return</span> Name[default_recipe][x<span class="Delimiter">.</span>name]<span class="Delimiter">;</span>
 <span id="L88" class="LineNr"> 88 </span>  <span class="Delimiter">}</span>
 <span id="L89" class="LineNr"> 89 </span>  string_tree* p = property<span class="Delimiter">(</span>x<span class="Delimiter">,</span> <span class="Constant">&quot;space&quot;</span><span class="Delimiter">);</span>
-<span id="L90" class="LineNr"> 90 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!p || !p<span class="Delimiter">-&gt;</span>atom<span class="Delimiter">)</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <span class="Constant">&quot;/space property should have exactly one (non-negative integer) value</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L90" class="LineNr"> 90 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!p || !p<span class="Delimiter">-&gt;</span>atom<span class="Delimiter">)</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <span class="Constant">&quot;/space property should have exactly one (non-negative integer) value</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L91" class="LineNr"> 91 </span>  <span class="Normal">int</span> n = <a href='002test.cc.html#L91'>to_integer</a><span class="Delimiter">(</span>p<span class="Delimiter">-&gt;</span>value<span class="Delimiter">);</span>
 <span id="L92" class="LineNr"> 92 </span>  assert<span class="Delimiter">(</span>n &gt;= <span class="Constant">0</span><span class="Delimiter">);</span>
 <span id="L93" class="LineNr"> 93 </span>  <a href='010vm.cc.html#L14'>recipe_ordinal</a> surrounding_recipe = <a href='045closure_name.cc.html#L119'>lookup_surrounding_recipe</a><span class="Delimiter">(</span>default_recipe<span class="Delimiter">,</span> n<span class="Delimiter">);</span>
@@ -165,11 +165,11 @@ if ('onhashchange' in window) {
 <span id="L102" class="LineNr">102 </span><span class="Normal">int</span> lookup_name<span class="Delimiter">(</span><span class="Normal">const</span> reagent&amp; x<span class="Delimiter">,</span> <span class="Normal">const</span> <a href='010vm.cc.html#L14'>recipe_ordinal</a> r<span class="Delimiter">,</span> set&lt;recipe_ordinal&gt;&amp; done<span class="Delimiter">,</span> vector&lt;recipe_ordinal&gt;&amp; path<span class="Delimiter">)</span> <span class="Delimiter">{</span>
 <span id="L103" class="LineNr">103 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!Name[r]<span class="Delimiter">.</span>empty<span class="Delimiter">())</span> <span class="Identifier">return</span> Name[r][x<span class="Delimiter">.</span>name]<span class="Delimiter">;</span>
 <span id="L104" class="LineNr">104 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>contains_key<span class="Delimiter">(</span>done<span class="Delimiter">,</span> r<span class="Delimiter">))</span> <span class="Delimiter">{</span>
-<span id="L105" class="LineNr">105 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <span class="Constant">&quot;can't compute address of '&quot;</span> &lt;&lt; <a href='028call_return.cc.html#L163'>to_string</a><span class="Delimiter">(</span>x<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;' because</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; end<span class="Delimiter">();</span>
+<span id="L105" class="LineNr">105 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <span class="Constant">&quot;can't compute address of '&quot;</span> &lt;&lt; <a href='028call_return.cc.html#L163'>to_string</a><span class="Delimiter">(</span>x<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;' because</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; end<span class="Delimiter">();</span>
 <span id="L106" class="LineNr">106 </span>  <span class="Conceal">¦</span> <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> i = <span class="Constant">1</span><span class="Delimiter">;</span>  i &lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>path<span class="Delimiter">);</span>  ++i<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L107" class="LineNr">107 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; path<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i-<span class="Constant">1</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot; requires computing names of &quot;</span> &lt;&lt; path<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">)</span> &lt;&lt; <span class="cSpecial">'\n'</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L107" class="LineNr">107 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; path<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i-<span class="Constant">1</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot; requires computing names of &quot;</span> &lt;&lt; path<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">)</span> &lt;&lt; <span class="cSpecial">'\n'</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L108" class="LineNr">108 </span>  <span class="Conceal">¦</span> <span class="Delimiter">}</span>
-<span id="L109" class="LineNr">109 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; path<span class="Delimiter">.</span>at<span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>path<span class="Delimiter">)</span>-<span class="Constant">1</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot; requires computing names of &quot;</span> &lt;&lt; r &lt;&lt; <span class="Constant">&quot;..ad infinitum</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L109" class="LineNr">109 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; path<span class="Delimiter">.</span>at<span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>path<span class="Delimiter">)</span>-<span class="Constant">1</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot; requires computing names of &quot;</span> &lt;&lt; r &lt;&lt; <span class="Constant">&quot;..ad infinitum</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L110" class="LineNr">110 </span>  <span class="Conceal">¦</span> <span class="Identifier">return</span> -<span class="Constant">1</span><span class="Delimiter">;</span>
 <span id="L111" class="LineNr">111 </span>  <span class="Delimiter">}</span>
 <span id="L112" class="LineNr">112 </span>  done<span class="Delimiter">.</span>insert<span class="Delimiter">(</span>r<span class="Delimiter">);</span>
@@ -182,7 +182,7 @@ if ('onhashchange' in window) {
 <span id="L119" class="LineNr">119 </span><a href='010vm.cc.html#L14'>recipe_ordinal</a> <a href='045closure_name.cc.html#L119'>lookup_surrounding_recipe</a><span class="Delimiter">(</span><span class="Normal">const</span> <a href='010vm.cc.html#L14'>recipe_ordinal</a> r<span class="Delimiter">,</span> <span class="Normal">int</span> n<span class="Delimiter">)</span> <span class="Delimiter">{</span>
 <span id="L120" class="LineNr">120 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>n == <span class="Constant">0</span><span class="Delimiter">)</span> <span class="Identifier">return</span> r<span class="Delimiter">;</span>
 <span id="L121" class="LineNr">121 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!contains_key<span class="Delimiter">(</span>Surrounding_space<span class="Delimiter">,</span> r<span class="Delimiter">))</span> <span class="Delimiter">{</span>
-<span id="L122" class="LineNr">122 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <span class="Constant">&quot;don't know surrounding recipe of '&quot;</span> &lt;&lt; get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; end<span class="Delimiter">();</span>
+<span id="L122" class="LineNr">122 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <span class="Constant">&quot;don't know surrounding recipe of '&quot;</span> &lt;&lt; get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; end<span class="Delimiter">();</span>
 <span id="L123" class="LineNr">123 </span>  <span class="Conceal">¦</span> <span class="Identifier">return</span> -<span class="Constant">1</span><span class="Delimiter">;</span>
 <span id="L124" class="LineNr">124 </span>  <span class="Delimiter">}</span>
 <span id="L125" class="LineNr">125 </span>  assert<span class="Delimiter">(</span>contains_key<span class="Delimiter">(</span>Surrounding_space<span class="Delimiter">,</span> r<span class="Delimiter">));</span>
@@ -195,7 +195,7 @@ if ('onhashchange' in window) {
 <span id="L132" class="LineNr">132 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>has_property<span class="Delimiter">(</span>r<span class="Delimiter">,</span> <span class="Constant">&quot;space&quot;</span><span class="Delimiter">))</span> <span class="Delimiter">{</span>
 <span id="L133" class="LineNr">133 </span>  <span class="Conceal">¦</span> string_tree* p = property<span class="Delimiter">(</span>r<span class="Delimiter">,</span> <span class="Constant">&quot;space&quot;</span><span class="Delimiter">);</span>
 <span id="L134" class="LineNr">134 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>!p || !p<span class="Delimiter">-&gt;</span>atom<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L135" class="LineNr">135 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <span class="Constant">&quot;/space property should have exactly one (non-negative integer) value in '&quot;</span> &lt;&lt; r<span class="Delimiter">.</span>original_string &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L135" class="LineNr">135 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <span class="Constant">&quot;/space property should have exactly one (non-negative integer) value in '&quot;</span> &lt;&lt; r<span class="Delimiter">.</span>original_string &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L136" class="LineNr">136 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Identifier">return</span> <span class="Constant">false</span><span class="Delimiter">;</span>
 <span id="L137" class="LineNr">137 </span>  <span class="Conceal">¦</span> <span class="Delimiter">}</span>
 <span id="L138" class="LineNr">138 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>p<span class="Delimiter">-&gt;</span>value != <span class="Constant">&quot;0&quot;</span><span class="Delimiter">)</span> <span class="Identifier">return</span> <span class="Constant">true</span><span class="Delimiter">;</span>
diff --git a/html/046check_type_by_name.cc.html b/html/046check_type_by_name.cc.html
index 332f1843..d9c6c6dc 100644
--- a/html/046check_type_by_name.cc.html
+++ b/html/046check_type_by_name.cc.html
@@ -83,153 +83,154 @@ if ('onhashchange' in window) {
 <span id="L19" class="LineNr"> 19 </span>
 <span id="L20" class="LineNr"> 20 </span><span class="Delimiter">:(code)</span>
 <span id="L21" class="LineNr"> 21 </span><span class="Normal">void</span> <a href='046check_type_by_name.cc.html#L21'>check_or_set_types_by_name</a><span class="Delimiter">(</span><span class="Normal">const</span> <a href='010vm.cc.html#L14'>recipe_ordinal</a> r<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L22" class="LineNr"> 22 </span>  <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">9991</span><span class="Delimiter">,</span> <span class="Constant">&quot;transform&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;--- deduce types for <a href='010vm.cc.html#L19'>recipe</a> &quot;</span> &lt;&lt; get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L22" class="LineNr"> 22 </span>  <a href='003trace.cc.html#L167'>trace</a><span class="Delimiter">(</span><span class="Constant">9991</span><span class="Delimiter">,</span> <span class="Constant">&quot;transform&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;--- deduce types for <a href='010vm.cc.html#L19'>recipe</a> &quot;</span> &lt;&lt; get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L23" class="LineNr"> 23 </span>  recipe&amp; caller = get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">);</span>
 <span id="L24" class="LineNr"> 24 </span>  set&lt;reagent&gt; known<span class="Delimiter">;</span>
 <span id="L25" class="LineNr"> 25 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> i = <span class="Constant">0</span><span class="Delimiter">;</span>  i &lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>caller<span class="Delimiter">.</span>steps<span class="Delimiter">);</span>  ++i<span class="Delimiter">)</span> <span class="Delimiter">{</span>
 <span id="L26" class="LineNr"> 26 </span>  <span class="Conceal">¦</span> instruction&amp; inst = caller<span class="Delimiter">.</span>steps<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">);</span>
 <span id="L27" class="LineNr"> 27 </span>  <span class="Conceal">¦</span> <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> in = <span class="Constant">0</span><span class="Delimiter">;</span>  in &lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">);</span>  ++in<span class="Delimiter">)</span> <span class="Delimiter">{</span>
 <span id="L28" class="LineNr"> 28 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='046check_type_by_name.cc.html#L38'>deduce_missing_type</a><span class="Delimiter">(</span>known<span class="Delimiter">,</span> inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>in<span class="Delimiter">),</span> caller<span class="Delimiter">);</span>
-<span id="L29" class="LineNr"> 29 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='046check_type_by_name.cc.html#L58'>check_type</a><span class="Delimiter">(</span>known<span class="Delimiter">,</span> inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>in<span class="Delimiter">),</span> caller<span class="Delimiter">);</span>
+<span id="L29" class="LineNr"> 29 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='046check_type_by_name.cc.html#L59'>check_type</a><span class="Delimiter">(</span>known<span class="Delimiter">,</span> inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>in<span class="Delimiter">),</span> caller<span class="Delimiter">);</span>
 <span id="L30" class="LineNr"> 30 </span>  <span class="Conceal">¦</span> <span class="Delimiter">}</span>
 <span id="L31" class="LineNr"> 31 </span>  <span class="Conceal">¦</span> <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> out = <span class="Constant">0</span><span class="Delimiter">;</span>  out &lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>products<span class="Delimiter">);</span>  ++out<span class="Delimiter">)</span> <span class="Delimiter">{</span>
 <span id="L32" class="LineNr"> 32 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='046check_type_by_name.cc.html#L38'>deduce_missing_type</a><span class="Delimiter">(</span>known<span class="Delimiter">,</span> inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span>out<span class="Delimiter">),</span> caller<span class="Delimiter">);</span>
-<span id="L33" class="LineNr"> 33 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='046check_type_by_name.cc.html#L58'>check_type</a><span class="Delimiter">(</span>known<span class="Delimiter">,</span> inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span>out<span class="Delimiter">),</span> caller<span class="Delimiter">);</span>
+<span id="L33" class="LineNr"> 33 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='046check_type_by_name.cc.html#L59'>check_type</a><span class="Delimiter">(</span>known<span class="Delimiter">,</span> inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span>out<span class="Delimiter">),</span> caller<span class="Delimiter">);</span>
 <span id="L34" class="LineNr"> 34 </span>  <span class="Conceal">¦</span> <span class="Delimiter">}</span>
 <span id="L35" class="LineNr"> 35 </span>  <span class="Delimiter">}</span>
 <span id="L36" class="LineNr"> 36 </span><span class="Delimiter">}</span>
 <span id="L37" class="LineNr"> 37 </span>
 <span id="L38" class="LineNr"> 38 </span><span class="Normal">void</span> <a href='046check_type_by_name.cc.html#L38'>deduce_missing_type</a><span class="Delimiter">(</span>set&lt;reagent&gt;&amp; known<span class="Delimiter">,</span> reagent&amp; x<span class="Delimiter">,</span> <span class="Normal">const</span> recipe&amp; caller<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L39" class="LineNr"> 39 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>x<span class="Delimiter">.</span>type<span class="Delimiter">)</span> <span class="Identifier">return</span><span class="Delimiter">;</span>
-<span id="L40" class="LineNr"> 40 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span><a href='041jump_target.cc.html#L11'>is_jump_target</a><span class="Delimiter">(</span>x<span class="Delimiter">.</span>name<span class="Delimiter">))</span> <span class="Delimiter">{</span>
-<span id="L41" class="LineNr"> 41 </span>  <span class="Conceal">¦</span> x<span class="Delimiter">.</span>type = <span class="Normal">new</span> type_tree<span class="Delimiter">(</span><span class="Constant">&quot;label&quot;</span><span class="Delimiter">);</span>
-<span id="L42" class="LineNr"> 42 </span>  <span class="Conceal">¦</span> <span class="Identifier">return</span><span class="Delimiter">;</span>
-<span id="L43" class="LineNr"> 43 </span>  <span class="Delimiter">}</span>
-<span id="L44" class="LineNr"> 44 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>known<span class="Delimiter">.</span>find<span class="Delimiter">(</span>x<span class="Delimiter">)</span> == known<span class="Delimiter">.</span><a href='003trace.cc.html#L197'>end</a><span class="Delimiter">())</span> <span class="Identifier">return</span><span class="Delimiter">;</span>
-<span id="L45" class="LineNr"> 45 </span>  <span class="Normal">const</span> reagent&amp; exemplar = *known<span class="Delimiter">.</span>find<span class="Delimiter">(</span>x<span class="Delimiter">);</span>
-<span id="L46" class="LineNr"> 46 </span>  x<span class="Delimiter">.</span>type = <span class="Normal">new</span> type_tree<span class="Delimiter">(</span>*exemplar<span class="Delimiter">.</span>type<span class="Delimiter">);</span>
-<span id="L47" class="LineNr"> 47 </span>  <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">9992</span><span class="Delimiter">,</span> <span class="Constant">&quot;transform&quot;</span><span class="Delimiter">)</span> &lt;&lt; x<span class="Delimiter">.</span>name &lt;&lt; <span class="Constant">&quot; &lt;= &quot;</span> &lt;&lt; names_to_string<span class="Delimiter">(</span>x<span class="Delimiter">.</span>type<span class="Delimiter">)</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
-<span id="L48" class="LineNr"> 48 </span>  <span class="Comment">// spaces are special; their type includes their /names property</span>
-<span id="L49" class="LineNr"> 49 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span><a href='043space.cc.html#L106'>is_mu_space</a><span class="Delimiter">(</span>x<span class="Delimiter">)</span> &amp;&amp; !has_property<span class="Delimiter">(</span>x<span class="Delimiter">,</span> <span class="Constant">&quot;names&quot;</span><span class="Delimiter">))</span> <span class="Delimiter">{</span>
-<span id="L50" class="LineNr"> 50 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>!has_property<span class="Delimiter">(</span>exemplar<span class="Delimiter">,</span> <span class="Constant">&quot;names&quot;</span><span class="Delimiter">))</span> <span class="Delimiter">{</span>
-<span id="L51" class="LineNr"> 51 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>caller<span class="Delimiter">.</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;missing /names property for space variable '&quot;</span> &lt;&lt; exemplar<span class="Delimiter">.</span>name &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
-<span id="L52" class="LineNr"> 52 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Identifier">return</span><span class="Delimiter">;</span>
-<span id="L53" class="LineNr"> 53 </span>  <span class="Conceal">¦</span> <span class="Delimiter">}</span>
-<span id="L54" class="LineNr"> 54 </span>  <span class="Conceal">¦</span> x<span class="Delimiter">.</span>properties<span class="Delimiter">.</span>push_back<span class="Delimiter">(</span>pair&lt;string<span class="Delimiter">,</span> string_tree*&gt;<span class="Delimiter">(</span><span class="Constant">&quot;names&quot;</span><span class="Delimiter">,</span> <span class="Normal">new</span> string_tree<span class="Delimiter">(</span>*property<span class="Delimiter">(</span>exemplar<span class="Delimiter">,</span> <span class="Constant">&quot;names&quot;</span><span class="Delimiter">))));</span>
-<span id="L55" class="LineNr"> 55 </span>  <span class="Delimiter">}</span>
-<span id="L56" class="LineNr"> 56 </span><span class="Delimiter">}</span>
-<span id="L57" class="LineNr"> 57 </span>
-<span id="L58" class="LineNr"> 58 </span><span class="Normal">void</span> <a href='046check_type_by_name.cc.html#L58'>check_type</a><span class="Delimiter">(</span>set&lt;reagent&gt;&amp; known<span class="Delimiter">,</span> <span class="Normal">const</span> reagent&amp; x<span class="Delimiter">,</span> <span class="Normal">const</span> recipe&amp; caller<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L59" class="LineNr"> 59 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>is_literal<span class="Delimiter">(</span>x<span class="Delimiter">))</span> <span class="Identifier">return</span><span class="Delimiter">;</span>
-<span id="L60" class="LineNr"> 60 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span><a href='002test.cc.html#L85'>is_integer</a><span class="Delimiter">(</span>x<span class="Delimiter">.</span>name<span class="Delimiter">))</span> <span class="Identifier">return</span><span class="Delimiter">;</span>  <span class="Comment">// if you use raw locations you're probably doing something unsafe</span>
-<span id="L61" class="LineNr"> 61 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!x<span class="Delimiter">.</span>type<span class="Delimiter">)</span> <span class="Identifier">return</span><span class="Delimiter">;</span>  <span class="Comment">// might get filled in by other logic later</span>
-<span id="L62" class="LineNr"> 62 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span><a href='041jump_target.cc.html#L11'>is_jump_target</a><span class="Delimiter">(</span>x<span class="Delimiter">.</span>name<span class="Delimiter">))</span> <span class="Delimiter">{</span>
-<span id="L63" class="LineNr"> 63 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>!x<span class="Delimiter">.</span>type<span class="Delimiter">-&gt;</span>atom || x<span class="Delimiter">.</span>type<span class="Delimiter">-&gt;</span>name != <span class="Constant">&quot;label&quot;</span><span class="Delimiter">)</span>
-<span id="L64" class="LineNr"> 64 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>caller<span class="Delimiter">.</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;non-label '&quot;</span> &lt;&lt; x<span class="Delimiter">.</span>name &lt;&lt; <span class="Constant">&quot;' must begin with a letter</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
-<span id="L65" class="LineNr"> 65 </span>  <span class="Conceal">¦</span> <span class="Identifier">return</span><span class="Delimiter">;</span>
-<span id="L66" class="LineNr"> 66 </span>  <span class="Delimiter">}</span>
-<span id="L67" class="LineNr"> 67 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>known<span class="Delimiter">.</span>find<span class="Delimiter">(</span>x<span class="Delimiter">)</span> == known<span class="Delimiter">.</span><a href='003trace.cc.html#L197'>end</a><span class="Delimiter">())</span> <span class="Delimiter">{</span>
-<span id="L68" class="LineNr"> 68 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">9992</span><span class="Delimiter">,</span> <span class="Constant">&quot;transform&quot;</span><span class="Delimiter">)</span> &lt;&lt; x<span class="Delimiter">.</span>name &lt;&lt; <span class="Constant">&quot; =&gt; &quot;</span> &lt;&lt; names_to_string<span class="Delimiter">(</span>x<span class="Delimiter">.</span>type<span class="Delimiter">)</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
-<span id="L69" class="LineNr"> 69 </span>  <span class="Conceal">¦</span> known<span class="Delimiter">.</span>insert<span class="Delimiter">(</span>x<span class="Delimiter">);</span>
-<span id="L70" class="LineNr"> 70 </span>  <span class="Delimiter">}</span>
-<span id="L71" class="LineNr"> 71 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!types_strictly_match<span class="Delimiter">(</span>known<span class="Delimiter">.</span>find<span class="Delimiter">(</span>x<span class="Delimiter">)-&gt;</span>type<span class="Delimiter">,</span> x<span class="Delimiter">.</span>type<span class="Delimiter">))</span> <span class="Delimiter">{</span>
-<span id="L72" class="LineNr"> 72 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>caller<span class="Delimiter">.</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'&quot;</span> &lt;&lt; x<span class="Delimiter">.</span>name &lt;&lt; <span class="Constant">&quot;' used with multiple types</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
-<span id="L73" class="LineNr"> 73 </span>  <span class="Conceal">¦</span> <span class="Identifier">return</span><span class="Delimiter">;</span>
-<span id="L74" class="LineNr"> 74 </span>  <span class="Delimiter">}</span>
-<span id="L75" class="LineNr"> 75 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>is_mu_array<span class="Delimiter">(</span>x<span class="Delimiter">))</span> <span class="Delimiter">{</span>
-<span id="L76" class="LineNr"> 76 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>!x<span class="Delimiter">.</span>type<span class="Delimiter">-&gt;</span>right<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L77" class="LineNr"> 77 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>caller<span class="Delimiter">.</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'&quot;</span> &lt;&lt; x<span class="Delimiter">.</span>name &lt;&lt; <span class="Constant">&quot;: can't be just an array. What is it an array of?</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
-<span id="L78" class="LineNr"> 78 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Identifier">return</span><span class="Delimiter">;</span>
-<span id="L79" class="LineNr"> 79 </span>  <span class="Conceal">¦</span> <span class="Delimiter">}</span>
-<span id="L80" class="LineNr"> 80 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>!x<span class="Delimiter">.</span>type<span class="Delimiter">-&gt;</span>right<span class="Delimiter">-&gt;</span>right<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L81" class="LineNr"> 81 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; caller<span class="Delimiter">.</span>name &lt;&lt; <span class="Constant">&quot; can't determine the size of array variable '&quot;</span> &lt;&lt; x<span class="Delimiter">.</span>name &lt;&lt; <span class="Constant">&quot;'. Either allocate it separately and make the type of '&quot;</span> &lt;&lt; x<span class="Delimiter">.</span>name &lt;&lt; <span class="Constant">&quot;' an address, or specify the length of the array in the type of '&quot;</span> &lt;&lt; x<span class="Delimiter">.</span>name &lt;&lt; <span class="Constant">&quot;'.</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; end<span class="Delimiter">();</span>
-<span id="L82" class="LineNr"> 82 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Identifier">return</span><span class="Delimiter">;</span>
-<span id="L83" class="LineNr"> 83 </span>  <span class="Conceal">¦</span> <span class="Delimiter">}</span>
-<span id="L84" class="LineNr"> 84 </span>  <span class="Delimiter">}</span>
-<span id="L85" class="LineNr"> 85 </span><span class="Delimiter">}</span>
-<span id="L86" class="LineNr"> 86 </span>
-<span id="L87" class="LineNr"> 87 </span><span class="Delimiter">:(scenario transform_fills_in_missing_types)</span>
-<span id="L88" class="LineNr"> 88 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
-<span id="L89" class="LineNr"> 89 </span>  <span class="Normal">x</span>:num<span class="Special"> &lt;- </span>copy <span class="Constant">1</span>
-<span id="L90" class="LineNr"> 90 </span>  <span class="Normal">y</span>:num<span class="Special"> &lt;- </span>add x<span class="Delimiter">,</span> <span class="Constant">1</span>
-<span id="L91" class="LineNr"> 91 </span>]
-<span id="L92" class="LineNr"> 92 </span><span class="Comment"># x is in location 1, y in location 2</span>
-<span id="L93" class="LineNr"> 93 </span><span class="traceContains">+mem: storing 2 in location 2</span>
-<span id="L94" class="LineNr"> 94 </span>
-<span id="L95" class="LineNr"> 95 </span><span class="Delimiter">:(scenario transform_fills_in_missing_types_in_product)</span>
-<span id="L96" class="LineNr"> 96 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
-<span id="L97" class="LineNr"> 97 </span>  <span class="Normal">x</span>:num<span class="Special"> &lt;- </span>copy <span class="Constant">1</span>
-<span id="L98" class="LineNr"> 98 </span>  x<span class="Special"> &lt;- </span>copy <span class="Constant">2</span>
-<span id="L99" class="LineNr"> 99 </span>]
-<span id="L100" class="LineNr">100 </span><span class="Comment"># x is in location 1</span>
-<span id="L101" class="LineNr">101 </span><span class="traceContains">+mem: storing 2 in location 1</span>
-<span id="L102" class="LineNr">102 </span>
-<span id="L103" class="LineNr">103 </span><span class="Delimiter">:(scenario transform_fills_in_missing_types_in_product_and_ingredient)</span>
-<span id="L104" class="LineNr">104 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
-<span id="L105" class="LineNr">105 </span>  <span class="Normal">x</span>:num<span class="Special"> &lt;- </span>copy <span class="Constant">1</span>
-<span id="L106" class="LineNr">106 </span>  x<span class="Special"> &lt;- </span>add x<span class="Delimiter">,</span> <span class="Constant">1</span>
-<span id="L107" class="LineNr">107 </span>]
-<span id="L108" class="LineNr">108 </span><span class="Comment"># x is in location 1</span>
-<span id="L109" class="LineNr">109 </span><span class="traceContains">+mem: storing 2 in location 1</span>
-<span id="L110" class="LineNr">110 </span>
-<span id="L111" class="LineNr">111 </span><span class="Delimiter">:(scenario transform_fills_in_missing_label_type)</span>
-<span id="L112" class="LineNr">112 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
-<span id="L113" class="LineNr">113 </span>  jump +target
-<span id="L114" class="LineNr">114 </span>  <span class="Constant">1</span>:num<span class="Special"> &lt;- </span>copy <span class="Constant">0</span>
-<span id="L115" class="LineNr">115 </span>  +target
-<span id="L116" class="LineNr">116 </span>]
-<span id="L117" class="LineNr">117 </span><span class="traceAbsent">-mem: storing 0 in location 1</span>
-<span id="L118" class="LineNr">118 </span>
-<span id="L119" class="LineNr">119 </span><span class="Delimiter">:(scenario transform_fails_on_missing_types_in_first_mention)</span>
-<span id="L120" class="LineNr">120 </span><span class="Special">% Hide_errors = true;</span>
-<span id="L121" class="LineNr">121 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
-<span id="L122" class="LineNr">122 </span>  x<span class="Special"> &lt;- </span>copy <span class="Constant">1</span>
-<span id="L123" class="LineNr">123 </span>  <span class="Normal">x</span>:num<span class="Special"> &lt;- </span>copy <span class="Constant">2</span>
-<span id="L124" class="LineNr">124 </span>]
-<span id="L125" class="LineNr">125 </span><span class="traceContains">+error: <a href='000organization.cc.html#L113'>main</a>: missing type for 'x' in 'x &lt;- copy 1'</span>
-<span id="L126" class="LineNr">126 </span>
-<span id="L127" class="LineNr">127 </span><span class="Delimiter">:(scenario transform_fails_on_wrong_type_for_label)</span>
-<span id="L128" class="LineNr">128 </span><span class="Special">% Hide_errors = true;</span>
-<span id="L129" class="LineNr">129 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
-<span id="L130" class="LineNr">130 </span>  +foo:num<span class="Special"> &lt;- </span>copy <span class="Constant">34</span>
-<span id="L131" class="LineNr">131 </span>]
-<span id="L132" class="LineNr">132 </span><span class="traceContains">+error: <a href='000organization.cc.html#L113'>main</a>: non-label '+foo' must begin with a letter</span>
-<span id="L133" class="LineNr">133 </span>
-<span id="L134" class="LineNr">134 </span><span class="Delimiter">:(scenario typo_in_address_type_fails)</span>
-<span id="L135" class="LineNr">135 </span><span class="Special">% Hide_errors = true;</span>
-<span id="L136" class="LineNr">136 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
-<span id="L137" class="LineNr">137 </span>  <span class="Normal">y</span>:&amp;:charcter<span class="Special"> &lt;- </span><span class="Normal">new</span> <span class="Constant">character:type</span>
-<span id="L138" class="LineNr">138 </span>  *y<span class="Special"> &lt;- </span>copy <span class="Constant">67</span>
-<span id="L139" class="LineNr">139 </span>]
-<span id="L140" class="LineNr">140 </span><span class="traceContains">+error: <a href='000organization.cc.html#L113'>main</a>: unknown type charcter in 'y:&amp;:charcter &lt;- new character:type'</span>
-<span id="L141" class="LineNr">141 </span>
-<span id="L142" class="LineNr">142 </span><span class="Delimiter">:(scenario array_type_without_size_fails)</span>
-<span id="L143" class="LineNr">143 </span><span class="Special">% Hide_errors = true;</span>
-<span id="L144" class="LineNr">144 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
-<span id="L145" class="LineNr">145 </span>  <span class="Normal">x</span>:@:num<span class="Special"> &lt;- </span>merge <span class="Constant">2</span><span class="Delimiter">,</span> <span class="Constant">12</span><span class="Delimiter">,</span> <span class="Constant">13</span>
-<span id="L146" class="LineNr">146 </span>]
-<span id="L147" class="LineNr">147 </span><span class="traceContains">+error: <a href='000organization.cc.html#L113'>main</a> can't determine the size of array variable 'x'. Either allocate it separately and make the type of 'x' an address, or specify the length of the array in the type of 'x'.</span>
-<span id="L148" class="LineNr">148 </span>
-<span id="L149" class="LineNr">149 </span><span class="Delimiter">:(scenarios transform)</span>
-<span id="L150" class="LineNr">150 </span><span class="Delimiter">:(scenario transform_checks_types_of_identical_reagents_in_multiple_spaces)</span>
-<span id="L151" class="LineNr">151 </span><span class="muRecipe">def</span> foo [  <span class="Comment"># dummy</span>
-<span id="L152" class="LineNr">152 </span>]
-<span id="L153" class="LineNr">153 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
-<span id="L154" class="LineNr">154 </span>  local-scope
-<span id="L155" class="LineNr">155 </span>  <span class="Constant">0</span>:space/names:foo<span class="Special"> &lt;- </span>copy <span class="Constant">0</span>  <span class="Comment"># specify surrounding space</span>
-<span id="L156" class="LineNr">156 </span>  <span class="Normal">x</span>:<span class="Normal">bool</span><span class="Special"> &lt;- </span>copy <span class="Constant">1</span>/<span class="Constant">true</span>
-<span id="L157" class="LineNr">157 </span>  <span class="Normal">x</span>:num/space:<span class="Constant">1</span><span class="Special"> &lt;- </span>copy <span class="Constant">34</span>
-<span id="L158" class="LineNr">158 </span>  x/space:<span class="Constant">1</span><span class="Special"> &lt;- </span>copy <span class="Constant">35</span>
-<span id="L159" class="LineNr">159 </span>]
-<span id="L160" class="LineNr">160 </span>$error: <span class="Constant">0</span>
-<span id="L161" class="LineNr">161 </span>
-<span id="L162" class="LineNr">162 </span><span class="Delimiter">:(scenario transform_handles_empty_reagents)</span>
-<span id="L163" class="LineNr">163 </span><span class="Special">% Hide_errors = true;</span>
-<span id="L164" class="LineNr">164 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
-<span id="L165" class="LineNr">165 </span>  add *
-<span id="L166" class="LineNr">166 </span>]
-<span id="L167" class="LineNr">167 </span><span class="traceContains">+error: illegal name '*'</span>
-<span id="L168" class="LineNr">168 </span><span class="Comment"># no crash</span>
+<span id="L39" class="LineNr"> 39 </span>  <span class="Comment">// Deduce Missing Type(x, caller)</span>
+<span id="L40" class="LineNr"> 40 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>x<span class="Delimiter">.</span>type<span class="Delimiter">)</span> <span class="Identifier">return</span><span class="Delimiter">;</span>
+<span id="L41" class="LineNr"> 41 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span><a href='041jump_target.cc.html#L11'>is_jump_target</a><span class="Delimiter">(</span>x<span class="Delimiter">.</span>name<span class="Delimiter">))</span> <span class="Delimiter">{</span>
+<span id="L42" class="LineNr"> 42 </span>  <span class="Conceal">¦</span> x<span class="Delimiter">.</span>type = <span class="Normal">new</span> type_tree<span class="Delimiter">(</span><span class="Constant">&quot;label&quot;</span><span class="Delimiter">);</span>
+<span id="L43" class="LineNr"> 43 </span>  <span class="Conceal">¦</span> <span class="Identifier">return</span><span class="Delimiter">;</span>
+<span id="L44" class="LineNr"> 44 </span>  <span class="Delimiter">}</span>
+<span id="L45" class="LineNr"> 45 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>known<span class="Delimiter">.</span>find<span class="Delimiter">(</span>x<span class="Delimiter">)</span> == known<span class="Delimiter">.</span><a href='003trace.cc.html#L203'>end</a><span class="Delimiter">())</span> <span class="Identifier">return</span><span class="Delimiter">;</span>
+<span id="L46" class="LineNr"> 46 </span>  <span class="Normal">const</span> reagent&amp; exemplar = *known<span class="Delimiter">.</span>find<span class="Delimiter">(</span>x<span class="Delimiter">);</span>
+<span id="L47" class="LineNr"> 47 </span>  x<span class="Delimiter">.</span>type = <span class="Normal">new</span> type_tree<span class="Delimiter">(</span>*exemplar<span class="Delimiter">.</span>type<span class="Delimiter">);</span>
+<span id="L48" class="LineNr"> 48 </span>  <a href='003trace.cc.html#L167'>trace</a><span class="Delimiter">(</span><span class="Constant">9992</span><span class="Delimiter">,</span> <span class="Constant">&quot;transform&quot;</span><span class="Delimiter">)</span> &lt;&lt; x<span class="Delimiter">.</span>name &lt;&lt; <span class="Constant">&quot; &lt;= &quot;</span> &lt;&lt; names_to_string<span class="Delimiter">(</span>x<span class="Delimiter">.</span>type<span class="Delimiter">)</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
+<span id="L49" class="LineNr"> 49 </span>  <span class="Comment">// spaces are special; their type includes their /names property</span>
+<span id="L50" class="LineNr"> 50 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span><a href='043space.cc.html#L106'>is_mu_space</a><span class="Delimiter">(</span>x<span class="Delimiter">)</span> &amp;&amp; !has_property<span class="Delimiter">(</span>x<span class="Delimiter">,</span> <span class="Constant">&quot;names&quot;</span><span class="Delimiter">))</span> <span class="Delimiter">{</span>
+<span id="L51" class="LineNr"> 51 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>!has_property<span class="Delimiter">(</span>exemplar<span class="Delimiter">,</span> <span class="Constant">&quot;names&quot;</span><span class="Delimiter">))</span> <span class="Delimiter">{</span>
+<span id="L52" class="LineNr"> 52 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>caller<span class="Delimiter">.</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;missing /names property for space variable '&quot;</span> &lt;&lt; exemplar<span class="Delimiter">.</span>name &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
+<span id="L53" class="LineNr"> 53 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Identifier">return</span><span class="Delimiter">;</span>
+<span id="L54" class="LineNr"> 54 </span>  <span class="Conceal">¦</span> <span class="Delimiter">}</span>
+<span id="L55" class="LineNr"> 55 </span>  <span class="Conceal">¦</span> x<span class="Delimiter">.</span>properties<span class="Delimiter">.</span>push_back<span class="Delimiter">(</span>pair&lt;string<span class="Delimiter">,</span> string_tree*&gt;<span class="Delimiter">(</span><span class="Constant">&quot;names&quot;</span><span class="Delimiter">,</span> <span class="Normal">new</span> string_tree<span class="Delimiter">(</span>*property<span class="Delimiter">(</span>exemplar<span class="Delimiter">,</span> <span class="Constant">&quot;names&quot;</span><span class="Delimiter">))));</span>
+<span id="L56" class="LineNr"> 56 </span>  <span class="Delimiter">}</span>
+<span id="L57" class="LineNr"> 57 </span><span class="Delimiter">}</span>
+<span id="L58" class="LineNr"> 58 </span>
+<span id="L59" class="LineNr"> 59 </span><span class="Normal">void</span> <a href='046check_type_by_name.cc.html#L59'>check_type</a><span class="Delimiter">(</span>set&lt;reagent&gt;&amp; known<span class="Delimiter">,</span> <span class="Normal">const</span> reagent&amp; x<span class="Delimiter">,</span> <span class="Normal">const</span> recipe&amp; caller<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L60" class="LineNr"> 60 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>is_literal<span class="Delimiter">(</span>x<span class="Delimiter">))</span> <span class="Identifier">return</span><span class="Delimiter">;</span>
+<span id="L61" class="LineNr"> 61 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span><a href='002test.cc.html#L85'>is_integer</a><span class="Delimiter">(</span>x<span class="Delimiter">.</span>name<span class="Delimiter">))</span> <span class="Identifier">return</span><span class="Delimiter">;</span>  <span class="Comment">// if you use raw locations you're probably doing something unsafe</span>
+<span id="L62" class="LineNr"> 62 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!x<span class="Delimiter">.</span>type<span class="Delimiter">)</span> <span class="Identifier">return</span><span class="Delimiter">;</span>  <span class="Comment">// might get filled in by other logic later</span>
+<span id="L63" class="LineNr"> 63 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span><a href='041jump_target.cc.html#L11'>is_jump_target</a><span class="Delimiter">(</span>x<span class="Delimiter">.</span>name<span class="Delimiter">))</span> <span class="Delimiter">{</span>
+<span id="L64" class="LineNr"> 64 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>!x<span class="Delimiter">.</span>type<span class="Delimiter">-&gt;</span>atom || x<span class="Delimiter">.</span>type<span class="Delimiter">-&gt;</span>name != <span class="Constant">&quot;label&quot;</span><span class="Delimiter">)</span>
+<span id="L65" class="LineNr"> 65 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>caller<span class="Delimiter">.</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;non-label '&quot;</span> &lt;&lt; x<span class="Delimiter">.</span>name &lt;&lt; <span class="Constant">&quot;' must begin with a letter</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
+<span id="L66" class="LineNr"> 66 </span>  <span class="Conceal">¦</span> <span class="Identifier">return</span><span class="Delimiter">;</span>
+<span id="L67" class="LineNr"> 67 </span>  <span class="Delimiter">}</span>
+<span id="L68" class="LineNr"> 68 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>known<span class="Delimiter">.</span>find<span class="Delimiter">(</span>x<span class="Delimiter">)</span> == known<span class="Delimiter">.</span><a href='003trace.cc.html#L203'>end</a><span class="Delimiter">())</span> <span class="Delimiter">{</span>
+<span id="L69" class="LineNr"> 69 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L167'>trace</a><span class="Delimiter">(</span><span class="Constant">9992</span><span class="Delimiter">,</span> <span class="Constant">&quot;transform&quot;</span><span class="Delimiter">)</span> &lt;&lt; x<span class="Delimiter">.</span>name &lt;&lt; <span class="Constant">&quot; =&gt; &quot;</span> &lt;&lt; names_to_string<span class="Delimiter">(</span>x<span class="Delimiter">.</span>type<span class="Delimiter">)</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
+<span id="L70" class="LineNr"> 70 </span>  <span class="Conceal">¦</span> known<span class="Delimiter">.</span>insert<span class="Delimiter">(</span>x<span class="Delimiter">);</span>
+<span id="L71" class="LineNr"> 71 </span>  <span class="Delimiter">}</span>
+<span id="L72" class="LineNr"> 72 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!types_strictly_match<span class="Delimiter">(</span>known<span class="Delimiter">.</span>find<span class="Delimiter">(</span>x<span class="Delimiter">)-&gt;</span>type<span class="Delimiter">,</span> x<span class="Delimiter">.</span>type<span class="Delimiter">))</span> <span class="Delimiter">{</span>
+<span id="L73" class="LineNr"> 73 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>caller<span class="Delimiter">.</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'&quot;</span> &lt;&lt; x<span class="Delimiter">.</span>name &lt;&lt; <span class="Constant">&quot;' used with multiple types</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
+<span id="L74" class="LineNr"> 74 </span>  <span class="Conceal">¦</span> <span class="Identifier">return</span><span class="Delimiter">;</span>
+<span id="L75" class="LineNr"> 75 </span>  <span class="Delimiter">}</span>
+<span id="L76" class="LineNr"> 76 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>is_mu_array<span class="Delimiter">(</span>x<span class="Delimiter">))</span> <span class="Delimiter">{</span>
+<span id="L77" class="LineNr"> 77 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>!x<span class="Delimiter">.</span>type<span class="Delimiter">-&gt;</span>right<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L78" class="LineNr"> 78 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>caller<span class="Delimiter">.</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'&quot;</span> &lt;&lt; x<span class="Delimiter">.</span>name &lt;&lt; <span class="Constant">&quot;: can't be just an array. What is it an array of?</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
+<span id="L79" class="LineNr"> 79 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Identifier">return</span><span class="Delimiter">;</span>
+<span id="L80" class="LineNr"> 80 </span>  <span class="Conceal">¦</span> <span class="Delimiter">}</span>
+<span id="L81" class="LineNr"> 81 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>!x<span class="Delimiter">.</span>type<span class="Delimiter">-&gt;</span>right<span class="Delimiter">-&gt;</span>right<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L82" class="LineNr"> 82 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; caller<span class="Delimiter">.</span>name &lt;&lt; <span class="Constant">&quot; can't determine the size of array variable '&quot;</span> &lt;&lt; x<span class="Delimiter">.</span>name &lt;&lt; <span class="Constant">&quot;'. Either allocate it separately and make the type of '&quot;</span> &lt;&lt; x<span class="Delimiter">.</span>name &lt;&lt; <span class="Constant">&quot;' an address, or specify the length of the array in the type of '&quot;</span> &lt;&lt; x<span class="Delimiter">.</span>name &lt;&lt; <span class="Constant">&quot;'.</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; end<span class="Delimiter">();</span>
+<span id="L83" class="LineNr"> 83 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Identifier">return</span><span class="Delimiter">;</span>
+<span id="L84" class="LineNr"> 84 </span>  <span class="Conceal">¦</span> <span class="Delimiter">}</span>
+<span id="L85" class="LineNr"> 85 </span>  <span class="Delimiter">}</span>
+<span id="L86" class="LineNr"> 86 </span><span class="Delimiter">}</span>
+<span id="L87" class="LineNr"> 87 </span>
+<span id="L88" class="LineNr"> 88 </span><span class="Delimiter">:(scenario transform_fills_in_missing_types)</span>
+<span id="L89" class="LineNr"> 89 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
+<span id="L90" class="LineNr"> 90 </span>  <span class="Normal">x</span>:num<span class="Special"> &lt;- </span>copy <span class="Constant">1</span>
+<span id="L91" class="LineNr"> 91 </span>  <span class="Normal">y</span>:num<span class="Special"> &lt;- </span>add x<span class="Delimiter">,</span> <span class="Constant">1</span>
+<span id="L92" class="LineNr"> 92 </span>]
+<span id="L93" class="LineNr"> 93 </span><span class="Comment"># x is in location 1, y in location 2</span>
+<span id="L94" class="LineNr"> 94 </span><span class="traceContains">+mem: storing 2 in location 2</span>
+<span id="L95" class="LineNr"> 95 </span>
+<span id="L96" class="LineNr"> 96 </span><span class="Delimiter">:(scenario transform_fills_in_missing_types_in_product)</span>
+<span id="L97" class="LineNr"> 97 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
+<span id="L98" class="LineNr"> 98 </span>  <span class="Normal">x</span>:num<span class="Special"> &lt;- </span>copy <span class="Constant">1</span>
+<span id="L99" class="LineNr"> 99 </span>  x<span class="Special"> &lt;- </span>copy <span class="Constant">2</span>
+<span id="L100" class="LineNr">100 </span>]
+<span id="L101" class="LineNr">101 </span><span class="Comment"># x is in location 1</span>
+<span id="L102" class="LineNr">102 </span><span class="traceContains">+mem: storing 2 in location 1</span>
+<span id="L103" class="LineNr">103 </span>
+<span id="L104" class="LineNr">104 </span><span class="Delimiter">:(scenario transform_fills_in_missing_types_in_product_and_ingredient)</span>
+<span id="L105" class="LineNr">105 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
+<span id="L106" class="LineNr">106 </span>  <span class="Normal">x</span>:num<span class="Special"> &lt;- </span>copy <span class="Constant">1</span>
+<span id="L107" class="LineNr">107 </span>  x<span class="Special"> &lt;- </span>add x<span class="Delimiter">,</span> <span class="Constant">1</span>
+<span id="L108" class="LineNr">108 </span>]
+<span id="L109" class="LineNr">109 </span><span class="Comment"># x is in location 1</span>
+<span id="L110" class="LineNr">110 </span><span class="traceContains">+mem: storing 2 in location 1</span>
+<span id="L111" class="LineNr">111 </span>
+<span id="L112" class="LineNr">112 </span><span class="Delimiter">:(scenario transform_fills_in_missing_label_type)</span>
+<span id="L113" class="LineNr">113 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
+<span id="L114" class="LineNr">114 </span>  jump +target
+<span id="L115" class="LineNr">115 </span>  <span class="Constant">1</span>:num<span class="Special"> &lt;- </span>copy <span class="Constant">0</span>
+<span id="L116" class="LineNr">116 </span>  +target
+<span id="L117" class="LineNr">117 </span>]
+<span id="L118" class="LineNr">118 </span><span class="traceAbsent">-mem: storing 0 in location 1</span>
+<span id="L119" class="LineNr">119 </span>
+<span id="L120" class="LineNr">120 </span><span class="Delimiter">:(scenario transform_fails_on_missing_types_in_first_mention)</span>
+<span id="L121" class="LineNr">121 </span><span class="Special">% Hide_errors = true;</span>
+<span id="L122" class="LineNr">122 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
+<span id="L123" class="LineNr">123 </span>  x<span class="Special"> &lt;- </span>copy <span class="Constant">1</span>
+<span id="L124" class="LineNr">124 </span>  <span class="Normal">x</span>:num<span class="Special"> &lt;- </span>copy <span class="Constant">2</span>
+<span id="L125" class="LineNr">125 </span>]
+<span id="L126" class="LineNr">126 </span><span class="traceContains">+error: <a href='000organization.cc.html#L113'>main</a>: missing type for 'x' in 'x &lt;- copy 1'</span>
+<span id="L127" class="LineNr">127 </span>
+<span id="L128" class="LineNr">128 </span><span class="Delimiter">:(scenario transform_fails_on_wrong_type_for_label)</span>
+<span id="L129" class="LineNr">129 </span><span class="Special">% Hide_errors = true;</span>
+<span id="L130" class="LineNr">130 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
+<span id="L131" class="LineNr">131 </span>  +foo:num<span class="Special"> &lt;- </span>copy <span class="Constant">34</span>
+<span id="L132" class="LineNr">132 </span>]
+<span id="L133" class="LineNr">133 </span><span class="traceContains">+error: <a href='000organization.cc.html#L113'>main</a>: non-label '+foo' must begin with a letter</span>
+<span id="L134" class="LineNr">134 </span>
+<span id="L135" class="LineNr">135 </span><span class="Delimiter">:(scenario typo_in_address_type_fails)</span>
+<span id="L136" class="LineNr">136 </span><span class="Special">% Hide_errors = true;</span>
+<span id="L137" class="LineNr">137 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
+<span id="L138" class="LineNr">138 </span>  <span class="Normal">y</span>:&amp;:charcter<span class="Special"> &lt;- </span><span class="Normal">new</span> <span class="Constant">character:type</span>
+<span id="L139" class="LineNr">139 </span>  *y<span class="Special"> &lt;- </span>copy <span class="Constant">67</span>
+<span id="L140" class="LineNr">140 </span>]
+<span id="L141" class="LineNr">141 </span><span class="traceContains">+error: <a href='000organization.cc.html#L113'>main</a>: unknown type charcter in 'y:&amp;:charcter &lt;- new character:type'</span>
+<span id="L142" class="LineNr">142 </span>
+<span id="L143" class="LineNr">143 </span><span class="Delimiter">:(scenario array_type_without_size_fails)</span>
+<span id="L144" class="LineNr">144 </span><span class="Special">% Hide_errors = true;</span>
+<span id="L145" class="LineNr">145 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
+<span id="L146" class="LineNr">146 </span>  <span class="Normal">x</span>:@:num<span class="Special"> &lt;- </span>merge <span class="Constant">2</span><span class="Delimiter">,</span> <span class="Constant">12</span><span class="Delimiter">,</span> <span class="Constant">13</span>
+<span id="L147" class="LineNr">147 </span>]
+<span id="L148" class="LineNr">148 </span><span class="traceContains">+error: <a href='000organization.cc.html#L113'>main</a> can't determine the size of array variable 'x'. Either allocate it separately and make the type of 'x' an address, or specify the length of the array in the type of 'x'.</span>
+<span id="L149" class="LineNr">149 </span>
+<span id="L150" class="LineNr">150 </span><span class="Delimiter">:(scenarios transform)</span>
+<span id="L151" class="LineNr">151 </span><span class="Delimiter">:(scenario transform_checks_types_of_identical_reagents_in_multiple_spaces)</span>
+<span id="L152" class="LineNr">152 </span><span class="muRecipe">def</span> foo [  <span class="Comment"># dummy</span>
+<span id="L153" class="LineNr">153 </span>]
+<span id="L154" class="LineNr">154 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
+<span id="L155" class="LineNr">155 </span>  local-scope
+<span id="L156" class="LineNr">156 </span>  <span class="Constant">0</span>:space/names:foo<span class="Special"> &lt;- </span>copy <span class="Constant">0</span>  <span class="Comment"># specify surrounding space</span>
+<span id="L157" class="LineNr">157 </span>  <span class="Normal">x</span>:<span class="Normal">bool</span><span class="Special"> &lt;- </span>copy <span class="Constant">1</span>/<span class="Constant">true</span>
+<span id="L158" class="LineNr">158 </span>  <span class="Normal">x</span>:num/space:<span class="Constant">1</span><span class="Special"> &lt;- </span>copy <span class="Constant">34</span>
+<span id="L159" class="LineNr">159 </span>  x/space:<span class="Constant">1</span><span class="Special"> &lt;- </span>copy <span class="Constant">35</span>
+<span id="L160" class="LineNr">160 </span>]
+<span id="L161" class="LineNr">161 </span>$error: <span class="Constant">0</span>
+<span id="L162" class="LineNr">162 </span>
+<span id="L163" class="LineNr">163 </span><span class="Delimiter">:(scenario transform_handles_empty_reagents)</span>
+<span id="L164" class="LineNr">164 </span><span class="Special">% Hide_errors = true;</span>
+<span id="L165" class="LineNr">165 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
+<span id="L166" class="LineNr">166 </span>  add *
+<span id="L167" class="LineNr">167 </span>]
+<span id="L168" class="LineNr">168 </span><span class="traceContains">+error: illegal name '*'</span>
+<span id="L169" class="LineNr">169 </span><span class="Comment"># no crash</span>
 </pre>
 </body>
 </html>
diff --git a/html/050scenario.cc.html b/html/050scenario.cc.html
index 0cffb879..0721c6bc 100644
--- a/html/050scenario.cc.html
+++ b/html/050scenario.cc.html
@@ -104,7 +104,7 @@ if ('onhashchange' in window) {
 <span id="L37" class="LineNr"> 37 </span><span class="muScenario"><a href='050scenario.cc.html#L57'>scenario</a></span> foo [
 <span id="L38" class="LineNr"> 38 </span>  run [
 <span id="L39" class="LineNr"> 39 </span>  <span class="Conceal">¦</span> <span class="Constant">1</span>:num<span class="Special"> &lt;- </span>copy <span class="Constant">13</span>
-<span id="L40" class="LineNr"> 40 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L161'>trace</a> <span class="Constant">1</span><span class="Delimiter">,</span> [a]<span class="Delimiter">,</span> [a b c]
+<span id="L40" class="LineNr"> 40 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L167'>trace</a> <span class="Constant">1</span><span class="Delimiter">,</span> [a]<span class="Delimiter">,</span> [a b c]
 <span id="L41" class="LineNr"> 41 </span>  ]
 <span id="L42" class="LineNr"> 42 </span>  memory-should-contain [
 <span id="L43" class="LineNr"> 43 </span>  <span class="Conceal">¦</span> <span class="Constant">1</span><span class="Special"> &lt;- </span><span class="Constant">13</span>
@@ -159,16 +159,16 @@ if ('onhashchange' in window) {
 <span id="L92" class="LineNr"> 92 </span>  <a href='050scenario.cc.html#L57'>scenario</a> result<span class="Delimiter">;</span>
 <span id="L93" class="LineNr"> 93 </span>  result<span class="Delimiter">.</span>name = <a href='011load.cc.html#L167'>next_word</a><span class="Delimiter">(</span>in<span class="Delimiter">);</span>
 <span id="L94" class="LineNr"> 94 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>contains_key<span class="Delimiter">(</span>Scenario_names<span class="Delimiter">,</span> result<span class="Delimiter">.</span>name<span class="Delimiter">))</span>
-<span id="L95" class="LineNr"> 95 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <span class="Constant">&quot;duplicate <a href='050scenario.cc.html#L57'>scenario</a> name: '&quot;</span> &lt;&lt; result<span class="Delimiter">.</span>name &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L95" class="LineNr"> 95 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <span class="Constant">&quot;duplicate <a href='050scenario.cc.html#L57'>scenario</a> name: '&quot;</span> &lt;&lt; result<span class="Delimiter">.</span>name &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L96" class="LineNr"> 96 </span>  Scenario_names<span class="Delimiter">.</span>insert<span class="Delimiter">(</span>result<span class="Delimiter">.</span>name<span class="Delimiter">);</span>
 <span id="L97" class="LineNr"> 97 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>result<span class="Delimiter">.</span>name<span class="Delimiter">.</span>empty<span class="Delimiter">())</span> <span class="Delimiter">{</span>
 <span id="L98" class="LineNr"> 98 </span>  <span class="Conceal">¦</span> assert<span class="Delimiter">(</span>!has_data<span class="Delimiter">(</span>in<span class="Delimiter">));</span>
-<span id="L99" class="LineNr"> 99 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <span class="Constant">&quot;incomplete <a href='050scenario.cc.html#L57'>scenario</a> at <a href='003trace.cc.html#L197'>end</a> of file</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L99" class="LineNr"> 99 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <span class="Constant">&quot;incomplete <a href='050scenario.cc.html#L57'>scenario</a> at <a href='003trace.cc.html#L203'>end</a> of file</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L100" class="LineNr">100 </span>  <span class="Conceal">¦</span> <span class="Identifier">return</span> result<span class="Delimiter">;</span>
 <span id="L101" class="LineNr">101 </span>  <span class="Delimiter">}</span>
 <span id="L102" class="LineNr">102 </span>  <a href='011load.cc.html#L209'>skip_whitespace_and_comments</a><span class="Delimiter">(</span>in<span class="Delimiter">);</span>
 <span id="L103" class="LineNr">103 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>in<span class="Delimiter">.</span>peek<span class="Delimiter">()</span> != <span class="Constant">'['</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L104" class="LineNr">104 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <span class="Constant">&quot;Expected '[' after <a href='050scenario.cc.html#L57'>scenario</a> '&quot;</span> &lt;&lt; result<span class="Delimiter">.</span>name &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L104" class="LineNr">104 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <span class="Constant">&quot;Expected '[' after <a href='050scenario.cc.html#L57'>scenario</a> '&quot;</span> &lt;&lt; result<span class="Delimiter">.</span>name &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L105" class="LineNr">105 </span>  <span class="Conceal">¦</span> exit<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">);</span>
 <span id="L106" class="LineNr">106 </span>  <span class="Delimiter">}</span>
 <span id="L107" class="LineNr">107 </span>  <span class="Comment">// scenarios are take special 'code' strings so we need to ignore brackets</span>
@@ -176,13 +176,13 @@ if ('onhashchange' in window) {
 <span id="L109" class="LineNr">109 </span>  result<span class="Delimiter">.</span>to_run = <a href='014literal_string.cc.html#L33'>slurp_quoted</a><span class="Delimiter">(</span>in<span class="Delimiter">);</span>
 <span id="L110" class="LineNr">110 </span>  <span class="Comment">// delete [] delimiters</span>
 <span id="L111" class="LineNr">111 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!starts_with<span class="Delimiter">(</span>result<span class="Delimiter">.</span>to_run<span class="Delimiter">,</span> <span class="Constant">&quot;[&quot;</span><span class="Delimiter">))</span> <span class="Delimiter">{</span>
-<span id="L112" class="LineNr">112 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <span class="Constant">&quot;scenario &quot;</span> &lt;&lt; result<span class="Delimiter">.</span>name &lt;&lt; <span class="Constant">&quot; should start with '['</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L112" class="LineNr">112 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <span class="Constant">&quot;scenario &quot;</span> &lt;&lt; result<span class="Delimiter">.</span>name &lt;&lt; <span class="Constant">&quot; should start with '['</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L113" class="LineNr">113 </span>  <span class="Conceal">¦</span> result<span class="Delimiter">.</span><a href='050scenario.cc.html#L60'>clear</a><span class="Delimiter">();</span>
 <span id="L114" class="LineNr">114 </span>  <span class="Conceal">¦</span> <span class="Identifier">return</span> result<span class="Delimiter">;</span>
 <span id="L115" class="LineNr">115 </span>  <span class="Delimiter">}</span>
 <span id="L116" class="LineNr">116 </span>  result<span class="Delimiter">.</span>to_run<span class="Delimiter">.</span>erase<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">,</span> <span class="Constant">1</span><span class="Delimiter">);</span>
 <span id="L117" class="LineNr">117 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>result<span class="Delimiter">.</span>to_run<span class="Delimiter">.</span>at<span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>result<span class="Delimiter">.</span>to_run<span class="Delimiter">)</span>-<span class="Constant">1</span><span class="Delimiter">)</span> != <span class="Constant">']'</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L118" class="LineNr">118 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <span class="Constant">&quot;scenario &quot;</span> &lt;&lt; result<span class="Delimiter">.</span>name &lt;&lt; <span class="Constant">&quot; has an unbalanced '['</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L118" class="LineNr">118 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <span class="Constant">&quot;scenario &quot;</span> &lt;&lt; result<span class="Delimiter">.</span>name &lt;&lt; <span class="Constant">&quot; has an unbalanced '['</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L119" class="LineNr">119 </span>  <span class="Conceal">¦</span> result<span class="Delimiter">.</span><a href='050scenario.cc.html#L60'>clear</a><span class="Delimiter">();</span>
 <span id="L120" class="LineNr">120 </span>  <span class="Conceal">¦</span> <span class="Identifier">return</span> result<span class="Delimiter">;</span>
 <span id="L121" class="LineNr">121 </span>  <span class="Delimiter">}</span>
@@ -293,701 +293,697 @@ if ('onhashchange' in window) {
 <span id="L226" class="LineNr">226 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!trace_contains_errors<span class="Delimiter">())</span>
 <span id="L227" class="LineNr">227 </span>  <span class="Conceal">¦</span> run<span class="Delimiter">(</span>tmp<span class="Delimiter">.</span>front<span class="Delimiter">());</span>
 <span id="L228" class="LineNr">228 </span>  <span class="Comment">// End Mu Test Teardown</span>
-<span id="L229" class="LineNr">229 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!Hide_errors &amp;&amp; <a href='003trace.cc.html#L192'>trace_contains_errors</a><span class="Delimiter">()</span> &amp;&amp; !Scenario_testing_scenario<span class="Delimiter">)</span>
+<span id="L229" class="LineNr">229 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!Hide_errors &amp;&amp; <a href='003trace.cc.html#L198'>trace_contains_errors</a><span class="Delimiter">()</span> &amp;&amp; !Scenario_testing_scenario<span class="Delimiter">)</span>
 <span id="L230" class="LineNr">230 </span>  <span class="Conceal">¦</span> Passed = <span class="Constant">false</span><span class="Delimiter">;</span>
 <span id="L231" class="LineNr">231 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>not_already_inside_test &amp;&amp; Trace_stream<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L232" class="LineNr">232 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>Save_trace<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L233" class="LineNr">233 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> ofstream fout<span class="Delimiter">(</span><span class="Constant">&quot;last_trace&quot;</span><span class="Delimiter">);</span>
-<span id="L234" class="LineNr">234 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> fout &lt;&lt; Trace_stream<span class="Delimiter">-&gt;</span><a href='003trace.cc.html#L143'>readable_contents</a><span class="Delimiter">(</span><span class="Constant">&quot;&quot;</span><span class="Delimiter">);</span>
-<span id="L235" class="LineNr">235 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> fout<span class="Delimiter">.</span>close<span class="Delimiter">();</span>
-<span id="L236" class="LineNr">236 </span>  <span class="Conceal">¦</span> <span class="Delimiter">}</span>
-<span id="L237" class="LineNr">237 </span>  <span class="Conceal">¦</span> <span class="Normal">delete</span> Trace_stream<span class="Delimiter">;</span>
-<span id="L238" class="LineNr">238 </span>  <span class="Conceal">¦</span> Trace_stream = <span class="Constant">NULL</span><span class="Delimiter">;</span>
-<span id="L239" class="LineNr">239 </span>  <span class="Delimiter">}</span>
-<span id="L240" class="LineNr">240 </span>  Current_scenario = <span class="Constant">NULL</span><span class="Delimiter">;</span>
-<span id="L241" class="LineNr">241 </span><span class="Delimiter">}</span>
-<span id="L242" class="LineNr">242 </span>
-<span id="L243" class="LineNr">243 </span><span class="Comment">//: Permit numeric locations to be accessed in scenarios.</span>
-<span id="L244" class="LineNr">244 </span><span class="Delimiter">:(before &quot;End check_default_space Special-cases&quot;)</span>
-<span id="L245" class="LineNr">245 </span><span class="Comment">// user code should never create recipes with underscores in their names</span>
-<span id="L246" class="LineNr">246 </span><span class="Normal">if</span> <span class="Delimiter">(</span><a href='001help.cc.html#L77'>starts_with</a><span class="Delimiter">(</span>caller<span class="Delimiter">.</span>name<span class="Delimiter">,</span> <span class="Constant">&quot;scenario_&quot;</span><span class="Delimiter">))</span> <span class="Identifier">return</span><span class="Delimiter">;</span>  <span class="Comment">// skip Mu scenarios which will use raw memory locations</span>
-<span id="L247" class="LineNr">247 </span><span class="Normal">if</span> <span class="Delimiter">(</span><a href='001help.cc.html#L77'>starts_with</a><span class="Delimiter">(</span>caller<span class="Delimiter">.</span>name<span class="Delimiter">,</span> <span class="Constant">&quot;run_&quot;</span><span class="Delimiter">))</span> <span class="Identifier">return</span><span class="Delimiter">;</span>  <span class="Comment">// skip calls to 'run', which should be in scenarios and will also use raw memory locations</span>
+<span id="L232" class="LineNr">232 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>Save_trace<span class="Delimiter">)</span> Trace_stream<span class="Delimiter">-&gt;</span><a href='003trace.cc.html#L120'>dump</a><span class="Delimiter">();</span>
+<span id="L233" class="LineNr">233 </span>  <span class="Conceal">¦</span> <span class="Normal">delete</span> Trace_stream<span class="Delimiter">;</span>
+<span id="L234" class="LineNr">234 </span>  <span class="Conceal">¦</span> Trace_stream = <span class="Constant">NULL</span><span class="Delimiter">;</span>
+<span id="L235" class="LineNr">235 </span>  <span class="Delimiter">}</span>
+<span id="L236" class="LineNr">236 </span>  Current_scenario = <span class="Constant">NULL</span><span class="Delimiter">;</span>
+<span id="L237" class="LineNr">237 </span><span class="Delimiter">}</span>
+<span id="L238" class="LineNr">238 </span>
+<span id="L239" class="LineNr">239 </span><span class="Comment">//: Permit numeric locations to be accessed in scenarios.</span>
+<span id="L240" class="LineNr">240 </span><span class="Delimiter">:(before &quot;End check_default_space Special-cases&quot;)</span>
+<span id="L241" class="LineNr">241 </span><span class="Comment">// user code should never create recipes with underscores in their names</span>
+<span id="L242" class="LineNr">242 </span><span class="Normal">if</span> <span class="Delimiter">(</span><a href='001help.cc.html#L77'>starts_with</a><span class="Delimiter">(</span>caller<span class="Delimiter">.</span>name<span class="Delimiter">,</span> <span class="Constant">&quot;scenario_&quot;</span><span class="Delimiter">))</span> <span class="Identifier">return</span><span class="Delimiter">;</span>  <span class="Comment">// skip Mu scenarios which will use raw memory locations</span>
+<span id="L243" class="LineNr">243 </span><span class="Normal">if</span> <span class="Delimiter">(</span><a href='001help.cc.html#L77'>starts_with</a><span class="Delimiter">(</span>caller<span class="Delimiter">.</span>name<span class="Delimiter">,</span> <span class="Constant">&quot;run_&quot;</span><span class="Delimiter">))</span> <span class="Identifier">return</span><span class="Delimiter">;</span>  <span class="Comment">// skip calls to 'run', which should be in scenarios and will also use raw memory locations</span>
+<span id="L244" class="LineNr">244 </span>
+<span id="L245" class="LineNr">245 </span><span class="Delimiter">:(before &quot;End maybe(recipe_name) Special-cases&quot;)</span>
+<span id="L246" class="LineNr">246 </span><span class="Normal">if</span> <span class="Delimiter">(</span><a href='001help.cc.html#L77'>starts_with</a><span class="Delimiter">(</span>recipe_name<span class="Delimiter">,</span> <span class="Constant">&quot;scenario_&quot;</span><span class="Delimiter">))</span>
+<span id="L247" class="LineNr">247 </span>  <span class="Identifier">return</span> recipe_name<span class="Delimiter">.</span>substr<span class="Delimiter">(</span>strlen<span class="Delimiter">(</span><span class="Constant">&quot;scenario_&quot;</span><span class="Delimiter">))</span> + <span class="Constant">&quot;: &quot;</span><span class="Delimiter">;</span>
 <span id="L248" class="LineNr">248 </span>
-<span id="L249" class="LineNr">249 </span><span class="Delimiter">:(before &quot;End maybe(recipe_name) Special-cases&quot;)</span>
-<span id="L250" class="LineNr">250 </span><span class="Normal">if</span> <span class="Delimiter">(</span><a href='001help.cc.html#L77'>starts_with</a><span class="Delimiter">(</span>recipe_name<span class="Delimiter">,</span> <span class="Constant">&quot;scenario_&quot;</span><span class="Delimiter">))</span>
-<span id="L251" class="LineNr">251 </span>  <span class="Identifier">return</span> recipe_name<span class="Delimiter">.</span>substr<span class="Delimiter">(</span>strlen<span class="Delimiter">(</span><span class="Constant">&quot;scenario_&quot;</span><span class="Delimiter">))</span> + <span class="Constant">&quot;: &quot;</span><span class="Delimiter">;</span>
-<span id="L252" class="LineNr">252 </span>
-<span id="L253" class="LineNr">253 </span><span class="Comment">//: Some variables for fake resources always get special /raw addresses in scenarios.</span>
-<span id="L254" class="LineNr">254 </span>
-<span id="L255" class="LineNr">255 </span><span class="Delimiter">:(code)</span>
-<span id="L256" class="LineNr">256 </span><span class="Comment">// Should contain everything passed by is_special_name but failed by is_disqualified.</span>
-<span id="L257" class="LineNr">257 </span><span class="Normal">void</span> bind_special_scenario_names<span class="Delimiter">(</span><span class="Normal">const</span> <a href='010vm.cc.html#L14'>recipe_ordinal</a> r<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L258" class="LineNr">258 </span>  <span class="Comment">// Special Scenario Variable Names(r)</span>
-<span id="L259" class="LineNr">259 </span>  <span class="Comment">// End Special Scenario Variable Names(r)</span>
-<span id="L260" class="LineNr">260 </span><span class="Delimiter">}</span>
-<span id="L261" class="LineNr">261 </span><span class="Delimiter">:(before &quot;Done Placing Ingredient(ingredient, inst, caller)&quot;)</span>
-<span id="L262" class="LineNr">262 </span>maybe_make_raw<span class="Delimiter">(</span>ingredient<span class="Delimiter">,</span> caller<span class="Delimiter">);</span>
-<span id="L263" class="LineNr">263 </span><span class="Delimiter">:(before &quot;Done Placing Product(product, inst, caller)&quot;)</span>
-<span id="L264" class="LineNr">264 </span>maybe_make_raw<span class="Delimiter">(</span>product<span class="Delimiter">,</span> caller<span class="Delimiter">);</span>
-<span id="L265" class="LineNr">265 </span><span class="Delimiter">:(code)</span>
-<span id="L266" class="LineNr">266 </span><span class="Normal">void</span> maybe_make_raw<span class="Delimiter">(</span>reagent&amp; r<span class="Delimiter">,</span> <span class="Normal">const</span> recipe&amp; caller<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L267" class="LineNr">267 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!is_special_name<span class="Delimiter">(</span>r<span class="Delimiter">.</span>name<span class="Delimiter">))</span> <span class="Identifier">return</span><span class="Delimiter">;</span>
-<span id="L268" class="LineNr">268 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span><a href='001help.cc.html#L77'>starts_with</a><span class="Delimiter">(</span>caller<span class="Delimiter">.</span>name<span class="Delimiter">,</span> <span class="Constant">&quot;scenario_&quot;</span><span class="Delimiter">))</span>
-<span id="L269" class="LineNr">269 </span>  <span class="Conceal">¦</span> r<span class="Delimiter">.</span>properties<span class="Delimiter">.</span>push_back<span class="Delimiter">(</span>pair&lt;string<span class="Delimiter">,</span> string_tree*&gt;<span class="Delimiter">(</span><span class="Constant">&quot;raw&quot;</span><span class="Delimiter">,</span> <span class="Constant">NULL</span><span class="Delimiter">));</span>
-<span id="L270" class="LineNr">270 </span>  <span class="Comment">// End maybe_make_raw</span>
-<span id="L271" class="LineNr">271 </span><span class="Delimiter">}</span>
-<span id="L272" class="LineNr">272 </span>
-<span id="L273" class="LineNr">273 </span><span class="Comment">//: Test.</span>
-<span id="L274" class="LineNr">274 </span><span class="Delimiter">:(before &quot;End <a href='042name.cc.html#L163'>is_special_name</a> Special-cases&quot;)</span>
-<span id="L275" class="LineNr">275 </span><span class="Normal">if</span> <span class="Delimiter">(</span>s == <span class="Constant">&quot;__maybe_make_raw_test__&quot;</span><span class="Delimiter">)</span> <span class="Identifier">return</span> <span class="Constant">true</span><span class="Delimiter">;</span>
-<span id="L276" class="LineNr">276 </span><span class="Delimiter">:(before &quot;End Special Scenario Variable Names(r)&quot;)</span>
-<span id="L277" class="LineNr">277 </span><span class="Comment">//: ugly: we only need this for this one test, but need to define it for all time</span>
-<span id="L278" class="LineNr">278 </span>Name[r][<span class="Constant">&quot;__maybe_make_raw_test__&quot;</span>] = Reserved_for_tests-<span class="Constant">1</span><span class="Delimiter">;</span>
-<span id="L279" class="LineNr">279 </span><span class="Delimiter">:(code)</span>
-<span id="L280" class="LineNr">280 </span><span class="Normal">void</span> test_maybe_make_raw<span class="Delimiter">()</span> <span class="Delimiter">{</span>
-<span id="L281" class="LineNr">281 </span>  <span class="Comment">// check that scenarios can use local-scope and special variables together</span>
-<span id="L282" class="LineNr">282 </span>  vector&lt;recipe_ordinal&gt; tmp = load<span class="Delimiter">(</span>
-<span id="L283" class="LineNr">283 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Constant">&quot;def scenario_foo [</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span>
-<span id="L284" class="LineNr">284 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Constant">&quot;  local-scope</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span>
-<span id="L285" class="LineNr">285 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Constant">&quot;  __maybe_make_raw_test__:num &lt;- copy 34</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span>
-<span id="L286" class="LineNr">286 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Constant">&quot;]</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span><span class="Delimiter">);</span>
-<span id="L287" class="LineNr">287 </span>  mark_autogenerated<span class="Delimiter">(</span>tmp<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">));</span>
-<span id="L288" class="LineNr">288 </span>  bind_special_scenario_names<span class="Delimiter">(</span>tmp<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">));</span>
-<span id="L289" class="LineNr">289 </span>  <a href='012transform.cc.html#L46'>transform_all</a><span class="Delimiter">();</span>
-<span id="L290" class="LineNr">290 </span>  run<span class="Delimiter">(</span>tmp<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">));</span>
-<span id="L291" class="LineNr">291 </span>  <a href='003trace.cc.html#L233'>CHECK_TRACE_DOESNT_CONTAIN_ERRORS</a><span class="Delimiter">();</span>
-<span id="L292" class="LineNr">292 </span><span class="Delimiter">}</span>
-<span id="L293" class="LineNr">293 </span>
-<span id="L294" class="LineNr">294 </span><span class="Comment">//: Watch out for redefinitions of scenario routines. We should never ever be</span>
-<span id="L295" class="LineNr">295 </span><span class="Comment">//: doing that, regardless of anything else.</span>
-<span id="L296" class="LineNr">296 </span><span class="Delimiter">:(scenario forbid_redefining_scenario_even_if_forced)</span>
-<span id="L297" class="LineNr">297 </span><span class="Special">% Hide_errors = true;</span>
-<span id="L298" class="LineNr">298 </span><span class="Special">% Disable_redefine_checks = true;</span>
-<span id="L299" class="LineNr">299 </span><span class="muRecipe">def</span> scenario-foo [
-<span id="L300" class="LineNr">300 </span>  <span class="Constant">1</span>:num<span class="Special"> &lt;- </span>copy <span class="Constant">34</span>
-<span id="L301" class="LineNr">301 </span>]
-<span id="L302" class="LineNr">302 </span><span class="muRecipe">def</span> scenario-foo [
-<span id="L303" class="LineNr">303 </span>  <span class="Constant">1</span>:num<span class="Special"> &lt;- </span>copy <span class="Constant">35</span>
-<span id="L304" class="LineNr">304 </span>]
-<span id="L305" class="LineNr">305 </span><span class="traceContains">+error: redefining <a href='010vm.cc.html#L19'>recipe</a> scenario-foo</span>
-<span id="L306" class="LineNr">306 </span>
-<span id="L307" class="LineNr">307 </span><span class="Delimiter">:(scenario scenario_containing_parse_error)</span>
-<span id="L308" class="LineNr">308 </span><span class="Special">% Hide_errors = true;</span>
-<span id="L309" class="LineNr">309 </span><span class="muScenario"><a href='050scenario.cc.html#L57'>scenario</a></span> foo [
-<span id="L310" class="LineNr">310 </span>  memory-should-contain [
-<span id="L311" class="LineNr">311 </span>  <span class="Conceal">¦</span> <span class="Constant">1</span><span class="Special"> &lt;- </span><span class="Constant">0</span>
-<span id="L312" class="LineNr">312 </span>  <span class="Comment"># missing ']'</span>
-<span id="L313" class="LineNr">313 </span>]
-<span id="L314" class="LineNr">314 </span><span class="Comment"># no crash</span>
-<span id="L315" class="LineNr">315 </span>
-<span id="L316" class="LineNr">316 </span><span class="Delimiter">:(scenario scenario_containing_transform_error)</span>
-<span id="L317" class="LineNr">317 </span><span class="Special">% Hide_errors = true;</span>
-<span id="L318" class="LineNr">318 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
-<span id="L319" class="LineNr">319 </span>  local-scope
-<span id="L320" class="LineNr">320 </span>  add x<span class="Delimiter">,</span> <span class="Constant">1</span>
-<span id="L321" class="LineNr">321 </span>]
-<span id="L322" class="LineNr">322 </span><span class="Comment"># no crash</span>
-<span id="L323" class="LineNr">323 </span>
-<span id="L324" class="LineNr">324 </span><span class="Delimiter">:(after &quot;bool should_check_for_redefine(const string&amp; recipe_name)&quot;)</span>
-<span id="L325" class="LineNr">325 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>recipe_name<span class="Delimiter">.</span>find<span class="Delimiter">(</span><span class="Constant">&quot;scenario-&quot;</span><span class="Delimiter">)</span> == <span class="Constant">0</span><span class="Delimiter">)</span> <span class="Identifier">return</span> <span class="Constant">true</span><span class="Delimiter">;</span>
+<span id="L249" class="LineNr">249 </span><span class="Comment">//: Some variables for fake resources always get special /raw addresses in scenarios.</span>
+<span id="L250" class="LineNr">250 </span>
+<span id="L251" class="LineNr">251 </span><span class="Delimiter">:(code)</span>
+<span id="L252" class="LineNr">252 </span><span class="Comment">// Should contain everything passed by is_special_name but failed by is_disqualified.</span>
+<span id="L253" class="LineNr">253 </span><span class="Normal">void</span> bind_special_scenario_names<span class="Delimiter">(</span><span class="Normal">const</span> <a href='010vm.cc.html#L14'>recipe_ordinal</a> r<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L254" class="LineNr">254 </span>  <span class="Comment">// Special Scenario Variable Names(r)</span>
+<span id="L255" class="LineNr">255 </span>  <span class="Comment">// End Special Scenario Variable Names(r)</span>
+<span id="L256" class="LineNr">256 </span><span class="Delimiter">}</span>
+<span id="L257" class="LineNr">257 </span><span class="Delimiter">:(before &quot;Done Placing Ingredient(ingredient, inst, caller)&quot;)</span>
+<span id="L258" class="LineNr">258 </span>maybe_make_raw<span class="Delimiter">(</span>ingredient<span class="Delimiter">,</span> caller<span class="Delimiter">);</span>
+<span id="L259" class="LineNr">259 </span><span class="Delimiter">:(before &quot;Done Placing Product(product, inst, caller)&quot;)</span>
+<span id="L260" class="LineNr">260 </span>maybe_make_raw<span class="Delimiter">(</span>product<span class="Delimiter">,</span> caller<span class="Delimiter">);</span>
+<span id="L261" class="LineNr">261 </span><span class="Delimiter">:(code)</span>
+<span id="L262" class="LineNr">262 </span><span class="Normal">void</span> maybe_make_raw<span class="Delimiter">(</span>reagent&amp; r<span class="Delimiter">,</span> <span class="Normal">const</span> recipe&amp; caller<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L263" class="LineNr">263 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!is_special_name<span class="Delimiter">(</span>r<span class="Delimiter">.</span>name<span class="Delimiter">))</span> <span class="Identifier">return</span><span class="Delimiter">;</span>
+<span id="L264" class="LineNr">264 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span><a href='001help.cc.html#L77'>starts_with</a><span class="Delimiter">(</span>caller<span class="Delimiter">.</span>name<span class="Delimiter">,</span> <span class="Constant">&quot;scenario_&quot;</span><span class="Delimiter">))</span>
+<span id="L265" class="LineNr">265 </span>  <span class="Conceal">¦</span> r<span class="Delimiter">.</span>properties<span class="Delimiter">.</span>push_back<span class="Delimiter">(</span>pair&lt;string<span class="Delimiter">,</span> string_tree*&gt;<span class="Delimiter">(</span><span class="Constant">&quot;raw&quot;</span><span class="Delimiter">,</span> <span class="Constant">NULL</span><span class="Delimiter">));</span>
+<span id="L266" class="LineNr">266 </span>  <span class="Comment">// End maybe_make_raw</span>
+<span id="L267" class="LineNr">267 </span><span class="Delimiter">}</span>
+<span id="L268" class="LineNr">268 </span>
+<span id="L269" class="LineNr">269 </span><span class="Comment">//: Test.</span>
+<span id="L270" class="LineNr">270 </span><span class="Delimiter">:(before &quot;End <a href='042name.cc.html#L161'>is_special_name</a> Special-cases&quot;)</span>
+<span id="L271" class="LineNr">271 </span><span class="Normal">if</span> <span class="Delimiter">(</span>s == <span class="Constant">&quot;__maybe_make_raw_test__&quot;</span><span class="Delimiter">)</span> <span class="Identifier">return</span> <span class="Constant">true</span><span class="Delimiter">;</span>
+<span id="L272" class="LineNr">272 </span><span class="Delimiter">:(before &quot;End Special Scenario Variable Names(r)&quot;)</span>
+<span id="L273" class="LineNr">273 </span><span class="Comment">//: ugly: we only need this for this one test, but need to define it for all time</span>
+<span id="L274" class="LineNr">274 </span>Name[r][<span class="Constant">&quot;__maybe_make_raw_test__&quot;</span>] = Reserved_for_tests-<span class="Constant">1</span><span class="Delimiter">;</span>
+<span id="L275" class="LineNr">275 </span><span class="Delimiter">:(code)</span>
+<span id="L276" class="LineNr">276 </span><span class="Normal">void</span> test_maybe_make_raw<span class="Delimiter">()</span> <span class="Delimiter">{</span>
+<span id="L277" class="LineNr">277 </span>  <span class="Comment">// check that scenarios can use local-scope and special variables together</span>
+<span id="L278" class="LineNr">278 </span>  vector&lt;recipe_ordinal&gt; tmp = load<span class="Delimiter">(</span>
+<span id="L279" class="LineNr">279 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Constant">&quot;def scenario_foo [</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span>
+<span id="L280" class="LineNr">280 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Constant">&quot;  local-scope</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span>
+<span id="L281" class="LineNr">281 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Constant">&quot;  __maybe_make_raw_test__:num &lt;- copy 34</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span>
+<span id="L282" class="LineNr">282 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Constant">&quot;]</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span><span class="Delimiter">);</span>
+<span id="L283" class="LineNr">283 </span>  mark_autogenerated<span class="Delimiter">(</span>tmp<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">));</span>
+<span id="L284" class="LineNr">284 </span>  bind_special_scenario_names<span class="Delimiter">(</span>tmp<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">));</span>
+<span id="L285" class="LineNr">285 </span>  <a href='012transform.cc.html#L46'>transform_all</a><span class="Delimiter">();</span>
+<span id="L286" class="LineNr">286 </span>  run<span class="Delimiter">(</span>tmp<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">));</span>
+<span id="L287" class="LineNr">287 </span>  <a href='003trace.cc.html#L235'>CHECK_TRACE_DOESNT_CONTAIN_ERRORS</a><span class="Delimiter">();</span>
+<span id="L288" class="LineNr">288 </span><span class="Delimiter">}</span>
+<span id="L289" class="LineNr">289 </span>
+<span id="L290" class="LineNr">290 </span><span class="Comment">//: Watch out for redefinitions of scenario routines. We should never ever be</span>
+<span id="L291" class="LineNr">291 </span><span class="Comment">//: doing that, regardless of anything else.</span>
+<span id="L292" class="LineNr">292 </span><span class="Delimiter">:(scenario forbid_redefining_scenario_even_if_forced)</span>
+<span id="L293" class="LineNr">293 </span><span class="Special">% Hide_errors = true;</span>
+<span id="L294" class="LineNr">294 </span><span class="Special">% Disable_redefine_checks = true;</span>
+<span id="L295" class="LineNr">295 </span><span class="muRecipe">def</span> scenario-foo [
+<span id="L296" class="LineNr">296 </span>  <span class="Constant">1</span>:num<span class="Special"> &lt;- </span>copy <span class="Constant">34</span>
+<span id="L297" class="LineNr">297 </span>]
+<span id="L298" class="LineNr">298 </span><span class="muRecipe">def</span> scenario-foo [
+<span id="L299" class="LineNr">299 </span>  <span class="Constant">1</span>:num<span class="Special"> &lt;- </span>copy <span class="Constant">35</span>
+<span id="L300" class="LineNr">300 </span>]
+<span id="L301" class="LineNr">301 </span><span class="traceContains">+error: redefining <a href='010vm.cc.html#L19'>recipe</a> scenario-foo</span>
+<span id="L302" class="LineNr">302 </span>
+<span id="L303" class="LineNr">303 </span><span class="Delimiter">:(scenario scenario_containing_parse_error)</span>
+<span id="L304" class="LineNr">304 </span><span class="Special">% Hide_errors = true;</span>
+<span id="L305" class="LineNr">305 </span><span class="muScenario"><a href='050scenario.cc.html#L57'>scenario</a></span> foo [
+<span id="L306" class="LineNr">306 </span>  memory-should-contain [
+<span id="L307" class="LineNr">307 </span>  <span class="Conceal">¦</span> <span class="Constant">1</span><span class="Special"> &lt;- </span><span class="Constant">0</span>
+<span id="L308" class="LineNr">308 </span>  <span class="Comment"># missing ']'</span>
+<span id="L309" class="LineNr">309 </span>]
+<span id="L310" class="LineNr">310 </span><span class="Comment"># no crash</span>
+<span id="L311" class="LineNr">311 </span>
+<span id="L312" class="LineNr">312 </span><span class="Delimiter">:(scenario scenario_containing_transform_error)</span>
+<span id="L313" class="LineNr">313 </span><span class="Special">% Hide_errors = true;</span>
+<span id="L314" class="LineNr">314 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
+<span id="L315" class="LineNr">315 </span>  local-scope
+<span id="L316" class="LineNr">316 </span>  add x<span class="Delimiter">,</span> <span class="Constant">1</span>
+<span id="L317" class="LineNr">317 </span>]
+<span id="L318" class="LineNr">318 </span><span class="Comment"># no crash</span>
+<span id="L319" class="LineNr">319 </span>
+<span id="L320" class="LineNr">320 </span><span class="Delimiter">:(after &quot;bool should_check_for_redefine(const string&amp; recipe_name)&quot;)</span>
+<span id="L321" class="LineNr">321 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>recipe_name<span class="Delimiter">.</span>find<span class="Delimiter">(</span><span class="Constant">&quot;scenario-&quot;</span><span class="Delimiter">)</span> == <span class="Constant">0</span><span class="Delimiter">)</span> <span class="Identifier">return</span> <span class="Constant">true</span><span class="Delimiter">;</span>
+<span id="L322" class="LineNr">322 </span>
+<span id="L323" class="LineNr">323 </span><span class="SalientComment">//:: The special instructions we want to support inside scenarios.</span>
+<span id="L324" class="LineNr">324 </span><span class="Comment">//: These are easy to support in an interpreter, but will require more work</span>
+<span id="L325" class="LineNr">325 </span><span class="Comment">//: when we eventually build a compiler.</span>
 <span id="L326" class="LineNr">326 </span>
-<span id="L327" class="LineNr">327 </span><span class="SalientComment">//:: The special instructions we want to support inside scenarios.</span>
-<span id="L328" class="LineNr">328 </span><span class="Comment">//: These are easy to support in an interpreter, but will require more work</span>
-<span id="L329" class="LineNr">329 </span><span class="Comment">//: when we eventually build a compiler.</span>
-<span id="L330" class="LineNr">330 </span>
-<span id="L331" class="LineNr">331 </span><span class="Comment">//: 'run' is a purely lexical convenience to separate the code actually being</span>
-<span id="L332" class="LineNr">332 </span><span class="Comment">//: tested from any setup</span>
-<span id="L333" class="LineNr">333 </span>
-<span id="L334" class="LineNr">334 </span><span class="Delimiter">:(scenario run)</span>
-<span id="L335" class="LineNr">335 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
-<span id="L336" class="LineNr">336 </span>  run [
-<span id="L337" class="LineNr">337 </span>  <span class="Conceal">¦</span> <span class="Constant">1</span>:num<span class="Special"> &lt;- </span>copy <span class="Constant">13</span>
-<span id="L338" class="LineNr">338 </span>  ]
-<span id="L339" class="LineNr">339 </span>]
-<span id="L340" class="LineNr">340 </span><span class="traceContains">+mem: storing 13 in location 1</span>
-<span id="L341" class="LineNr">341 </span>
-<span id="L342" class="LineNr">342 </span><span class="Delimiter">:(before &quot;End Rewrite Instruction(curr, <a href='010vm.cc.html#L19'>recipe</a> result)&quot;)</span>
-<span id="L343" class="LineNr">343 </span><span class="Normal">if</span> <span class="Delimiter">(</span>curr<span class="Delimiter">.</span>name == <span class="Constant">&quot;run&quot;</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L344" class="LineNr">344 </span>  <span class="Comment">// Just inline all instructions inside the run block in the containing</span>
-<span id="L345" class="LineNr">345 </span>  <span class="Comment">// recipe. 'run' is basically a comment; pretend it doesn't exist.</span>
-<span id="L346" class="LineNr">346 </span>  istringstream in2<span class="Delimiter">(</span><span class="Constant">&quot;[</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span>+curr<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>name+<span class="Constant">&quot;</span><span class="cSpecial">\n</span><span class="Constant">]</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span><span class="Delimiter">);</span>
-<span id="L347" class="LineNr">347 </span>  <a href='011load.cc.html#L81'>slurp_body</a><span class="Delimiter">(</span>in2<span class="Delimiter">,</span> result<span class="Delimiter">);</span>
-<span id="L348" class="LineNr">348 </span>  curr<span class="Delimiter">.</span><a href='050scenario.cc.html#L60'>clear</a><span class="Delimiter">();</span>
-<span id="L349" class="LineNr">349 </span><span class="Delimiter">}</span>
-<span id="L350" class="LineNr">350 </span>
-<span id="L351" class="LineNr">351 </span><span class="Delimiter">:(scenario run_multiple)</span>
-<span id="L352" class="LineNr">352 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
-<span id="L353" class="LineNr">353 </span>  run [
-<span id="L354" class="LineNr">354 </span>  <span class="Conceal">¦</span> <span class="Constant">1</span>:num<span class="Special"> &lt;- </span>copy <span class="Constant">13</span>
-<span id="L355" class="LineNr">355 </span>  ]
-<span id="L356" class="LineNr">356 </span>  run [
-<span id="L357" class="LineNr">357 </span>  <span class="Conceal">¦</span> <span class="Constant">2</span>:num<span class="Special"> &lt;- </span>copy <span class="Constant">13</span>
-<span id="L358" class="LineNr">358 </span>  ]
-<span id="L359" class="LineNr">359 </span>]
-<span id="L360" class="LineNr">360 </span><span class="traceContains">+mem: storing 13 in location 1</span>
-<span id="L361" class="LineNr">361 </span><span class="traceContains">+mem: storing 13 in location 2</span>
-<span id="L362" class="LineNr">362 </span>
-<span id="L363" class="LineNr">363 </span><span class="Comment">//: 'memory-should-contain' raises errors if specific locations aren't as expected</span>
-<span id="L364" class="LineNr">364 </span><span class="Comment">//: Also includes some special support for checking Mu texts.</span>
-<span id="L365" class="LineNr">365 </span>
-<span id="L366" class="LineNr">366 </span><span class="Delimiter">:(before &quot;End Globals&quot;)</span>
-<span id="L367" class="LineNr">367 </span><span class="Normal">bool</span> Scenario_testing_scenario = <span class="Constant">false</span><span class="Delimiter">;</span>
-<span id="L368" class="LineNr">368 </span><span class="Delimiter">:(before &quot;End Reset&quot;)</span>
-<span id="L369" class="LineNr">369 </span>Scenario_testing_scenario = <span class="Constant">false</span><span class="Delimiter">;</span>
-<span id="L370" class="LineNr">370 </span>
-<span id="L371" class="LineNr">371 </span><span class="Delimiter">:(scenario memory_check)</span>
-<span id="L372" class="LineNr">372 </span><span class="Special">% Scenario_testing_scenario = true;</span>
-<span id="L373" class="LineNr">373 </span><span class="Special">% Hide_errors = true;</span>
-<span id="L374" class="LineNr">374 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
-<span id="L375" class="LineNr">375 </span>  memory-should-contain [
-<span id="L376" class="LineNr">376 </span>  <span class="Conceal">¦</span> <span class="Constant">1</span><span class="Special"> &lt;- </span><span class="Constant">13</span>
-<span id="L377" class="LineNr">377 </span>  ]
-<span id="L378" class="LineNr">378 </span>]
-<span id="L379" class="LineNr">379 </span><span class="traceContains">+run: checking location 1</span>
-<span id="L380" class="LineNr">380 </span><span class="traceContains">+error: F - <a href='000organization.cc.html#L113'>main</a>: expected location '1' to contain 13 but saw 0</span>
-<span id="L381" class="LineNr">381 </span>
-<span id="L382" class="LineNr">382 </span><span class="Delimiter">:(before &quot;End Primitive Recipe Declarations&quot;)</span>
-<span id="L383" class="LineNr">383 </span>MEMORY_SHOULD_CONTAIN<span class="Delimiter">,</span>
-<span id="L384" class="LineNr">384 </span><span class="Delimiter">:(before &quot;End Primitive Recipe Numbers&quot;)</span>
-<span id="L385" class="LineNr">385 </span><a href='001help.cc.html#L221'>put</a><span class="Delimiter">(</span>Recipe_ordinal<span class="Delimiter">,</span> <span class="Constant">&quot;memory-should-contain&quot;</span><span class="Delimiter">,</span> MEMORY_SHOULD_CONTAIN<span class="Delimiter">);</span>
-<span id="L386" class="LineNr">386 </span><span class="Delimiter">:(before &quot;End Primitive Recipe Checks&quot;)</span>
+<span id="L327" class="LineNr">327 </span><span class="Comment">//: 'run' is a purely lexical convenience to separate the code actually being</span>
+<span id="L328" class="LineNr">328 </span><span class="Comment">//: tested from any setup</span>
+<span id="L329" class="LineNr">329 </span>
+<span id="L330" class="LineNr">330 </span><span class="Delimiter">:(scenario run)</span>
+<span id="L331" class="LineNr">331 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
+<span id="L332" class="LineNr">332 </span>  run [
+<span id="L333" class="LineNr">333 </span>  <span class="Conceal">¦</span> <span class="Constant">1</span>:num<span class="Special"> &lt;- </span>copy <span class="Constant">13</span>
+<span id="L334" class="LineNr">334 </span>  ]
+<span id="L335" class="LineNr">335 </span>]
+<span id="L336" class="LineNr">336 </span><span class="traceContains">+mem: storing 13 in location 1</span>
+<span id="L337" class="LineNr">337 </span>
+<span id="L338" class="LineNr">338 </span><span class="Delimiter">:(before &quot;End Rewrite Instruction(curr, <a href='010vm.cc.html#L19'>recipe</a> result)&quot;)</span>
+<span id="L339" class="LineNr">339 </span><span class="Normal">if</span> <span class="Delimiter">(</span>curr<span class="Delimiter">.</span>name == <span class="Constant">&quot;run&quot;</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L340" class="LineNr">340 </span>  <span class="Comment">// Just inline all instructions inside the run block in the containing</span>
+<span id="L341" class="LineNr">341 </span>  <span class="Comment">// recipe. 'run' is basically a comment; pretend it doesn't exist.</span>
+<span id="L342" class="LineNr">342 </span>  istringstream in2<span class="Delimiter">(</span><span class="Constant">&quot;[</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span>+curr<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>name+<span class="Constant">&quot;</span><span class="cSpecial">\n</span><span class="Constant">]</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span><span class="Delimiter">);</span>
+<span id="L343" class="LineNr">343 </span>  <a href='011load.cc.html#L81'>slurp_body</a><span class="Delimiter">(</span>in2<span class="Delimiter">,</span> result<span class="Delimiter">);</span>
+<span id="L344" class="LineNr">344 </span>  curr<span class="Delimiter">.</span><a href='050scenario.cc.html#L60'>clear</a><span class="Delimiter">();</span>
+<span id="L345" class="LineNr">345 </span><span class="Delimiter">}</span>
+<span id="L346" class="LineNr">346 </span>
+<span id="L347" class="LineNr">347 </span><span class="Delimiter">:(scenario run_multiple)</span>
+<span id="L348" class="LineNr">348 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
+<span id="L349" class="LineNr">349 </span>  run [
+<span id="L350" class="LineNr">350 </span>  <span class="Conceal">¦</span> <span class="Constant">1</span>:num<span class="Special"> &lt;- </span>copy <span class="Constant">13</span>
+<span id="L351" class="LineNr">351 </span>  ]
+<span id="L352" class="LineNr">352 </span>  run [
+<span id="L353" class="LineNr">353 </span>  <span class="Conceal">¦</span> <span class="Constant">2</span>:num<span class="Special"> &lt;- </span>copy <span class="Constant">13</span>
+<span id="L354" class="LineNr">354 </span>  ]
+<span id="L355" class="LineNr">355 </span>]
+<span id="L356" class="LineNr">356 </span><span class="traceContains">+mem: storing 13 in location 1</span>
+<span id="L357" class="LineNr">357 </span><span class="traceContains">+mem: storing 13 in location 2</span>
+<span id="L358" class="LineNr">358 </span>
+<span id="L359" class="LineNr">359 </span><span class="Comment">//: 'memory-should-contain' raises errors if specific locations aren't as expected</span>
+<span id="L360" class="LineNr">360 </span><span class="Comment">//: Also includes some special support for checking Mu texts.</span>
+<span id="L361" class="LineNr">361 </span>
+<span id="L362" class="LineNr">362 </span><span class="Delimiter">:(before &quot;End Globals&quot;)</span>
+<span id="L363" class="LineNr">363 </span><span class="Normal">bool</span> Scenario_testing_scenario = <span class="Constant">false</span><span class="Delimiter">;</span>
+<span id="L364" class="LineNr">364 </span><span class="Delimiter">:(before &quot;End Reset&quot;)</span>
+<span id="L365" class="LineNr">365 </span>Scenario_testing_scenario = <span class="Constant">false</span><span class="Delimiter">;</span>
+<span id="L366" class="LineNr">366 </span>
+<span id="L367" class="LineNr">367 </span><span class="Delimiter">:(scenario memory_check)</span>
+<span id="L368" class="LineNr">368 </span><span class="Special">% Scenario_testing_scenario = true;</span>
+<span id="L369" class="LineNr">369 </span><span class="Special">% Hide_errors = true;</span>
+<span id="L370" class="LineNr">370 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
+<span id="L371" class="LineNr">371 </span>  memory-should-contain [
+<span id="L372" class="LineNr">372 </span>  <span class="Conceal">¦</span> <span class="Constant">1</span><span class="Special"> &lt;- </span><span class="Constant">13</span>
+<span id="L373" class="LineNr">373 </span>  ]
+<span id="L374" class="LineNr">374 </span>]
+<span id="L375" class="LineNr">375 </span><span class="traceContains">+run: checking location 1</span>
+<span id="L376" class="LineNr">376 </span><span class="traceContains">+error: F - <a href='000organization.cc.html#L113'>main</a>: expected location '1' to contain 13 but saw 0</span>
+<span id="L377" class="LineNr">377 </span>
+<span id="L378" class="LineNr">378 </span><span class="Delimiter">:(before &quot;End Primitive Recipe Declarations&quot;)</span>
+<span id="L379" class="LineNr">379 </span>MEMORY_SHOULD_CONTAIN<span class="Delimiter">,</span>
+<span id="L380" class="LineNr">380 </span><span class="Delimiter">:(before &quot;End Primitive Recipe Numbers&quot;)</span>
+<span id="L381" class="LineNr">381 </span><a href='001help.cc.html#L221'>put</a><span class="Delimiter">(</span>Recipe_ordinal<span class="Delimiter">,</span> <span class="Constant">&quot;memory-should-contain&quot;</span><span class="Delimiter">,</span> MEMORY_SHOULD_CONTAIN<span class="Delimiter">);</span>
+<span id="L382" class="LineNr">382 </span><span class="Delimiter">:(before &quot;End Primitive Recipe Checks&quot;)</span>
+<span id="L383" class="LineNr">383 </span><span class="Normal">case</span> MEMORY_SHOULD_CONTAIN: <span class="Delimiter">{</span>
+<span id="L384" class="LineNr">384 </span>  <span class="Identifier">break</span><span class="Delimiter">;</span>
+<span id="L385" class="LineNr">385 </span><span class="Delimiter">}</span>
+<span id="L386" class="LineNr">386 </span><span class="Delimiter">:(before &quot;End Primitive Recipe Implementations&quot;)</span>
 <span id="L387" class="LineNr">387 </span><span class="Normal">case</span> MEMORY_SHOULD_CONTAIN: <span class="Delimiter">{</span>
-<span id="L388" class="LineNr">388 </span>  <span class="Identifier">break</span><span class="Delimiter">;</span>
-<span id="L389" class="LineNr">389 </span><span class="Delimiter">}</span>
-<span id="L390" class="LineNr">390 </span><span class="Delimiter">:(before &quot;End Primitive Recipe Implementations&quot;)</span>
-<span id="L391" class="LineNr">391 </span><span class="Normal">case</span> MEMORY_SHOULD_CONTAIN: <span class="Delimiter">{</span>
-<span id="L392" class="LineNr">392 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!Passed<span class="Delimiter">)</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
-<span id="L393" class="LineNr">393 </span>  check_memory<span class="Delimiter">(</span><a href='026call.cc.html#L87'>current_instruction</a><span class="Delimiter">().</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>name<span class="Delimiter">);</span>
-<span id="L394" class="LineNr">394 </span>  <span class="Identifier">break</span><span class="Delimiter">;</span>
-<span id="L395" class="LineNr">395 </span><span class="Delimiter">}</span>
-<span id="L396" class="LineNr">396 </span>
-<span id="L397" class="LineNr">397 </span><span class="Delimiter">:(code)</span>
-<span id="L398" class="LineNr">398 </span><span class="Normal">void</span> check_memory<span class="Delimiter">(</span><span class="Normal">const</span> string&amp; s<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L399" class="LineNr">399 </span>  istringstream in<span class="Delimiter">(</span>s<span class="Delimiter">);</span>
-<span id="L400" class="LineNr">400 </span>  in &gt;&gt; std::noskipws<span class="Delimiter">;</span>
-<span id="L401" class="LineNr">401 </span>  set&lt;<span class="Normal">int</span>&gt; locations_checked<span class="Delimiter">;</span>
-<span id="L402" class="LineNr">402 </span>  <span class="Normal">while</span> <span class="Delimiter">(</span><span class="Constant">true</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L403" class="LineNr">403 </span>  <span class="Conceal">¦</span> <a href='011load.cc.html#L209'>skip_whitespace_and_comments</a><span class="Delimiter">(</span>in<span class="Delimiter">);</span>
-<span id="L404" class="LineNr">404 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>!has_data<span class="Delimiter">(</span>in<span class="Delimiter">))</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
-<span id="L405" class="LineNr">405 </span>  <span class="Conceal">¦</span> string lhs = <a href='011load.cc.html#L167'>next_word</a><span class="Delimiter">(</span>in<span class="Delimiter">);</span>
-<span id="L406" class="LineNr">406 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>lhs<span class="Delimiter">.</span>empty<span class="Delimiter">())</span> <span class="Delimiter">{</span>
-<span id="L407" class="LineNr">407 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> assert<span class="Delimiter">(</span>!has_data<span class="Delimiter">(</span>in<span class="Delimiter">));</span>
-<span id="L408" class="LineNr">408 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span><a href='026call.cc.html#L85'>current_recipe_name</a><span class="Delimiter">())</span> &lt;&lt; <span class="Constant">&quot;incomplete 'memory-should-contain' block at <a href='003trace.cc.html#L197'>end</a> of file (0)</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
-<span id="L409" class="LineNr">409 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Identifier">return</span><span class="Delimiter">;</span>
+<span id="L388" class="LineNr">388 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!Passed<span class="Delimiter">)</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
+<span id="L389" class="LineNr">389 </span>  check_memory<span class="Delimiter">(</span><a href='026call.cc.html#L89'>current_instruction</a><span class="Delimiter">().</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>name<span class="Delimiter">);</span>
+<span id="L390" class="LineNr">390 </span>  <span class="Identifier">break</span><span class="Delimiter">;</span>
+<span id="L391" class="LineNr">391 </span><span class="Delimiter">}</span>
+<span id="L392" class="LineNr">392 </span>
+<span id="L393" class="LineNr">393 </span><span class="Delimiter">:(code)</span>
+<span id="L394" class="LineNr">394 </span><span class="Normal">void</span> check_memory<span class="Delimiter">(</span><span class="Normal">const</span> string&amp; s<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L395" class="LineNr">395 </span>  istringstream in<span class="Delimiter">(</span>s<span class="Delimiter">);</span>
+<span id="L396" class="LineNr">396 </span>  in &gt;&gt; std::noskipws<span class="Delimiter">;</span>
+<span id="L397" class="LineNr">397 </span>  set&lt;<span class="Normal">int</span>&gt; locations_checked<span class="Delimiter">;</span>
+<span id="L398" class="LineNr">398 </span>  <span class="Normal">while</span> <span class="Delimiter">(</span><span class="Constant">true</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L399" class="LineNr">399 </span>  <span class="Conceal">¦</span> <a href='011load.cc.html#L209'>skip_whitespace_and_comments</a><span class="Delimiter">(</span>in<span class="Delimiter">);</span>
+<span id="L400" class="LineNr">400 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>!has_data<span class="Delimiter">(</span>in<span class="Delimiter">))</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
+<span id="L401" class="LineNr">401 </span>  <span class="Conceal">¦</span> string lhs = <a href='011load.cc.html#L167'>next_word</a><span class="Delimiter">(</span>in<span class="Delimiter">);</span>
+<span id="L402" class="LineNr">402 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>lhs<span class="Delimiter">.</span>empty<span class="Delimiter">())</span> <span class="Delimiter">{</span>
+<span id="L403" class="LineNr">403 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> assert<span class="Delimiter">(</span>!has_data<span class="Delimiter">(</span>in<span class="Delimiter">));</span>
+<span id="L404" class="LineNr">404 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span><a href='026call.cc.html#L87'>current_recipe_name</a><span class="Delimiter">())</span> &lt;&lt; <span class="Constant">&quot;incomplete 'memory-should-contain' block at <a href='003trace.cc.html#L203'>end</a> of file (0)</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
+<span id="L405" class="LineNr">405 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Identifier">return</span><span class="Delimiter">;</span>
+<span id="L406" class="LineNr">406 </span>  <span class="Conceal">¦</span> <span class="Delimiter">}</span>
+<span id="L407" class="LineNr">407 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>!is_integer<span class="Delimiter">(</span>lhs<span class="Delimiter">))</span> <span class="Delimiter">{</span>
+<span id="L408" class="LineNr">408 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='046check_type_by_name.cc.html#L59'>check_type</a><span class="Delimiter">(</span>lhs<span class="Delimiter">,</span> in<span class="Delimiter">);</span>
+<span id="L409" class="LineNr">409 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Identifier">continue</span><span class="Delimiter">;</span>
 <span id="L410" class="LineNr">410 </span>  <span class="Conceal">¦</span> <span class="Delimiter">}</span>
-<span id="L411" class="LineNr">411 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>!is_integer<span class="Delimiter">(</span>lhs<span class="Delimiter">))</span> <span class="Delimiter">{</span>
-<span id="L412" class="LineNr">412 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='046check_type_by_name.cc.html#L58'>check_type</a><span class="Delimiter">(</span>lhs<span class="Delimiter">,</span> in<span class="Delimiter">);</span>
-<span id="L413" class="LineNr">413 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Identifier">continue</span><span class="Delimiter">;</span>
-<span id="L414" class="LineNr">414 </span>  <span class="Conceal">¦</span> <span class="Delimiter">}</span>
-<span id="L415" class="LineNr">415 </span>  <span class="Conceal">¦</span> <span class="Normal">int</span> <a href='043space.cc.html#L82'>address</a> = <a href='002test.cc.html#L91'>to_integer</a><span class="Delimiter">(</span>lhs<span class="Delimiter">);</span>
-<span id="L416" class="LineNr">416 </span>  <span class="Conceal">¦</span> <a href='011load.cc.html#L209'>skip_whitespace_and_comments</a><span class="Delimiter">(</span>in<span class="Delimiter">);</span>
-<span id="L417" class="LineNr">417 </span>  <span class="Conceal">¦</span> string _assign<span class="Delimiter">;</span>  in &gt;&gt; _assign<span class="Delimiter">;</span>  assert<span class="Delimiter">(</span>_assign == <span class="Constant">&quot;&lt;-&quot;</span><span class="Delimiter">);</span>
-<span id="L418" class="LineNr">418 </span>  <span class="Conceal">¦</span> <a href='011load.cc.html#L209'>skip_whitespace_and_comments</a><span class="Delimiter">(</span>in<span class="Delimiter">);</span>
-<span id="L419" class="LineNr">419 </span>  <span class="Conceal">¦</span> string rhs = <a href='011load.cc.html#L167'>next_word</a><span class="Delimiter">(</span>in<span class="Delimiter">);</span>
-<span id="L420" class="LineNr">420 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>rhs<span class="Delimiter">.</span>empty<span class="Delimiter">())</span> <span class="Delimiter">{</span>
-<span id="L421" class="LineNr">421 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> assert<span class="Delimiter">(</span>!has_data<span class="Delimiter">(</span>in<span class="Delimiter">));</span>
-<span id="L422" class="LineNr">422 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span><a href='026call.cc.html#L85'>current_recipe_name</a><span class="Delimiter">())</span> &lt;&lt; <span class="Constant">&quot;incomplete 'memory-should-contain' block at <a href='003trace.cc.html#L197'>end</a> of file (1)</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
-<span id="L423" class="LineNr">423 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Identifier">return</span><span class="Delimiter">;</span>
-<span id="L424" class="LineNr">424 </span>  <span class="Conceal">¦</span> <span class="Delimiter">}</span>
-<span id="L425" class="LineNr">425 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>!is_integer<span class="Delimiter">(</span>rhs<span class="Delimiter">)</span> &amp;&amp; !is_noninteger<span class="Delimiter">(</span>rhs<span class="Delimiter">))</span> <span class="Delimiter">{</span>
-<span id="L426" class="LineNr">426 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>!Hide_errors<span class="Delimiter">)</span> cerr &lt;&lt; <span class="cSpecial">'\n'</span><span class="Delimiter">;</span>
-<span id="L427" class="LineNr">427 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <span class="Constant">&quot;F - &quot;</span> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span><a href='026call.cc.html#L85'>current_recipe_name</a><span class="Delimiter">())</span> &lt;&lt; <span class="Constant">&quot;location '&quot;</span> &lt;&lt; address &lt;&lt; <span class="Constant">&quot;' can't contain non-number &quot;</span> &lt;&lt; rhs &lt;&lt; <span class="cSpecial">'\n'</span> &lt;&lt; end<span class="Delimiter">();</span>
-<span id="L428" class="LineNr">428 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>!Scenario_testing_scenario<span class="Delimiter">)</span> Passed = <span class="Constant">false</span><span class="Delimiter">;</span>
-<span id="L429" class="LineNr">429 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Identifier">return</span><span class="Delimiter">;</span>
-<span id="L430" class="LineNr">430 </span>  <span class="Conceal">¦</span> <span class="Delimiter">}</span>
-<span id="L431" class="LineNr">431 </span>  <span class="Conceal">¦</span> <span class="Normal">double</span> value = <a href='015literal_noninteger.cc.html#L26'>to_double</a><span class="Delimiter">(</span>rhs<span class="Delimiter">);</span>
-<span id="L432" class="LineNr">432 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>contains_key<span class="Delimiter">(</span>locations_checked<span class="Delimiter">,</span> <a href='043space.cc.html#L82'>address</a><span class="Delimiter">))</span>
-<span id="L433" class="LineNr">433 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span><a href='026call.cc.html#L85'>current_recipe_name</a><span class="Delimiter">())</span> &lt;&lt; <span class="Constant">&quot;duplicate expectation for location '&quot;</span> &lt;&lt; address &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
-<span id="L434" class="LineNr">434 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">&quot;run&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;checking location &quot;</span> &lt;&lt; <a href='043space.cc.html#L82'>address</a> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
-<span id="L435" class="LineNr">435 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span><a href='001help.cc.html#L229'>get_or_insert</a><span class="Delimiter">(</span>Memory<span class="Delimiter">,</span> <a href='043space.cc.html#L82'>address</a><span class="Delimiter">)</span> != value<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L436" class="LineNr">436 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>!Hide_errors<span class="Delimiter">)</span> cerr &lt;&lt; <span class="cSpecial">'\n'</span><span class="Delimiter">;</span>
-<span id="L437" class="LineNr">437 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <span class="Constant">&quot;F - &quot;</span> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span><a href='026call.cc.html#L85'>current_recipe_name</a><span class="Delimiter">())</span> &lt;&lt; <span class="Constant">&quot;expected location '&quot;</span> &lt;&lt; address &lt;&lt; <span class="Constant">&quot;' to contain &quot;</span> &lt;&lt; no_scientific<span class="Delimiter">(</span>value<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot; but saw &quot;</span> &lt;&lt; no_scientific<span class="Delimiter">(</span><a href='001help.cc.html#L229'>get_or_insert</a><span class="Delimiter">(</span>Memory<span class="Delimiter">,</span> <a href='043space.cc.html#L82'>address</a><span class="Delimiter">))</span> &lt;&lt; <span class="cSpecial">'\n'</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
-<span id="L438" class="LineNr">438 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>!Scenario_testing_scenario<span class="Delimiter">)</span> Passed = <span class="Constant">false</span><span class="Delimiter">;</span>
-<span id="L439" class="LineNr">439 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Identifier">return</span><span class="Delimiter">;</span>
-<span id="L440" class="LineNr">440 </span>  <span class="Conceal">¦</span> <span class="Delimiter">}</span>
-<span id="L441" class="LineNr">441 </span>  <span class="Conceal">¦</span> locations_checked<span class="Delimiter">.</span>insert<span class="Delimiter">(</span><a href='043space.cc.html#L82'>address</a><span class="Delimiter">);</span>
-<span id="L442" class="LineNr">442 </span>  <span class="Delimiter">}</span>
-<span id="L443" class="LineNr">443 </span><span class="Delimiter">}</span>
-<span id="L444" class="LineNr">444 </span>
-<span id="L445" class="LineNr">445 </span><span class="Normal">void</span> <a href='046check_type_by_name.cc.html#L58'>check_type</a><span class="Delimiter">(</span><span class="Normal">const</span> string&amp; lhs<span class="Delimiter">,</span> istream&amp; in<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L446" class="LineNr">446 </span>  reagent x<span class="Delimiter">(</span>lhs<span class="Delimiter">);</span>
-<span id="L447" class="LineNr">447 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>is_mu_array<span class="Delimiter">(</span>x<span class="Delimiter">.</span>type<span class="Delimiter">)</span> &amp;&amp; is_mu_character<span class="Delimiter">(</span><a href='032array.cc.html#L381'>array_element</a><span class="Delimiter">(</span>x<span class="Delimiter">.</span>type<span class="Delimiter">)))</span> <span class="Delimiter">{</span>
-<span id="L448" class="LineNr">448 </span>  <span class="Conceal">¦</span> x<span class="Delimiter">.</span><a href='010vm.cc.html#L65'>set_value</a><span class="Delimiter">(</span><a href='002test.cc.html#L91'>to_integer</a><span class="Delimiter">(</span>x<span class="Delimiter">.</span>name<span class="Delimiter">));</span>
-<span id="L449" class="LineNr">449 </span>  <span class="Conceal">¦</span> <a href='011load.cc.html#L209'>skip_whitespace_and_comments</a><span class="Delimiter">(</span>in<span class="Delimiter">);</span>
-<span id="L450" class="LineNr">450 </span>  <span class="Conceal">¦</span> string _assign = <a href='011load.cc.html#L167'>next_word</a><span class="Delimiter">(</span>in<span class="Delimiter">);</span>
-<span id="L451" class="LineNr">451 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>_assign<span class="Delimiter">.</span>empty<span class="Delimiter">())</span> <span class="Delimiter">{</span>
-<span id="L452" class="LineNr">452 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> assert<span class="Delimiter">(</span>!has_data<span class="Delimiter">(</span>in<span class="Delimiter">));</span>
-<span id="L453" class="LineNr">453 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span><a href='026call.cc.html#L85'>current_recipe_name</a><span class="Delimiter">())</span> &lt;&lt; <span class="Constant">&quot;incomplete 'memory-should-contain' block at <a href='003trace.cc.html#L197'>end</a> of file (2)</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
-<span id="L454" class="LineNr">454 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Identifier">return</span><span class="Delimiter">;</span>
-<span id="L455" class="LineNr">455 </span>  <span class="Conceal">¦</span> <span class="Delimiter">}</span>
-<span id="L456" class="LineNr">456 </span>  <span class="Conceal">¦</span> assert<span class="Delimiter">(</span>_assign == <span class="Constant">&quot;&lt;-&quot;</span><span class="Delimiter">);</span>
-<span id="L457" class="LineNr">457 </span>  <span class="Conceal">¦</span> <a href='011load.cc.html#L209'>skip_whitespace_and_comments</a><span class="Delimiter">(</span>in<span class="Delimiter">);</span>
-<span id="L458" class="LineNr">458 </span>  <span class="Conceal">¦</span> string literal = <a href='011load.cc.html#L167'>next_word</a><span class="Delimiter">(</span>in<span class="Delimiter">);</span>
-<span id="L459" class="LineNr">459 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>literal<span class="Delimiter">.</span>empty<span class="Delimiter">())</span> <span class="Delimiter">{</span>
-<span id="L460" class="LineNr">460 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> assert<span class="Delimiter">(</span>!has_data<span class="Delimiter">(</span>in<span class="Delimiter">));</span>
-<span id="L461" class="LineNr">461 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span><a href='026call.cc.html#L85'>current_recipe_name</a><span class="Delimiter">())</span> &lt;&lt; <span class="Constant">&quot;incomplete 'memory-should-contain' block at <a href='003trace.cc.html#L197'>end</a> of file (3)</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
-<span id="L462" class="LineNr">462 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Identifier">return</span><span class="Delimiter">;</span>
-<span id="L463" class="LineNr">463 </span>  <span class="Conceal">¦</span> <span class="Delimiter">}</span>
-<span id="L464" class="LineNr">464 </span>  <span class="Conceal">¦</span> <span class="Normal">int</span> <a href='043space.cc.html#L82'>address</a> = x<span class="Delimiter">.</span>value<span class="Delimiter">;</span>
-<span id="L465" class="LineNr">465 </span>  <span class="Conceal">¦</span> <span class="Comment">// exclude quoting brackets</span>
-<span id="L466" class="LineNr">466 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>*literal<span class="Delimiter">.</span>begin<span class="Delimiter">()</span> != <span class="Constant">'['</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L467" class="LineNr">467 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span><a href='026call.cc.html#L85'>current_recipe_name</a><span class="Delimiter">())</span> &lt;&lt; <span class="Constant">&quot;array:character types inside 'memory-should-contain' can only be compared with text literals surrounded by [], not '&quot;</span> &lt;&lt; literal &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
-<span id="L468" class="LineNr">468 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Identifier">return</span><span class="Delimiter">;</span>
-<span id="L469" class="LineNr">469 </span>  <span class="Conceal">¦</span> <span class="Delimiter">}</span>
-<span id="L470" class="LineNr">470 </span>  <span class="Conceal">¦</span> literal<span class="Delimiter">.</span>erase<span class="Delimiter">(</span>literal<span class="Delimiter">.</span>begin<span class="Delimiter">());</span>
-<span id="L471" class="LineNr">471 </span>  <span class="Conceal">¦</span> assert<span class="Delimiter">(</span>*--literal<span class="Delimiter">.</span><a href='003trace.cc.html#L197'>end</a><span class="Delimiter">()</span> == <span class="Constant">']'</span><span class="Delimiter">);</span>  literal<span class="Delimiter">.</span>erase<span class="Delimiter">(</span>--literal<span class="Delimiter">.</span><a href='003trace.cc.html#L197'>end</a><span class="Delimiter">());</span>
-<span id="L472" class="LineNr">472 </span>  <span class="Conceal">¦</span> check_mu_text<span class="Delimiter">(</span><a href='043space.cc.html#L82'>address</a><span class="Delimiter">,</span> literal<span class="Delimiter">);</span>
-<span id="L473" class="LineNr">473 </span>  <span class="Conceal">¦</span> <span class="Identifier">return</span><span class="Delimiter">;</span>
-<span id="L474" class="LineNr">474 </span>  <span class="Delimiter">}</span>
-<span id="L475" class="LineNr">475 </span>  <span class="Comment">// End Scenario Type Special-cases</span>
-<span id="L476" class="LineNr">476 </span>  <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <span class="Constant">&quot;don't know how to check memory for '&quot;</span> &lt;&lt; lhs &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; end<span class="Delimiter">();</span>
-<span id="L477" class="LineNr">477 </span><span class="Delimiter">}</span>
-<span id="L478" class="LineNr">478 </span>
-<span id="L479" class="LineNr">479 </span><span class="Normal">void</span> check_mu_text<span class="Delimiter">(</span><span class="Normal">int</span> start<span class="Delimiter">,</span> <span class="Normal">const</span> string&amp; literal<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L480" class="LineNr">480 </span>  <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">&quot;run&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;checking text length at &quot;</span> &lt;&lt; start &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
-<span id="L481" class="LineNr">481 </span>  <span class="Normal">int</span> <a href='032array.cc.html#L397'>array_length</a> = <span class="Normal">static_cast</span>&lt;<span class="Normal">int</span>&gt;<span class="Delimiter">(</span><a href='001help.cc.html#L229'>get_or_insert</a><span class="Delimiter">(</span>Memory<span class="Delimiter">,</span> start<span class="Delimiter">));</span>
-<span id="L482" class="LineNr">482 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span><a href='032array.cc.html#L397'>array_length</a> != <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>literal<span class="Delimiter">))</span> <span class="Delimiter">{</span>
-<span id="L483" class="LineNr">483 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>!Hide_errors<span class="Delimiter">)</span> cerr &lt;&lt; <span class="cSpecial">'\n'</span><span class="Delimiter">;</span>
-<span id="L484" class="LineNr">484 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <span class="Constant">&quot;F - &quot;</span> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span><a href='026call.cc.html#L85'>current_recipe_name</a><span class="Delimiter">())</span> &lt;&lt; <span class="Constant">&quot;expected location '&quot;</span> &lt;&lt; start &lt;&lt; <span class="Constant">&quot;' to contain length &quot;</span> &lt;&lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>literal<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot; of text [&quot;</span> &lt;&lt; literal &lt;&lt; <span class="Constant">&quot;] but saw &quot;</span> &lt;&lt; <a href='032array.cc.html#L397'>array_length</a> &lt;&lt; <span class="Constant">&quot; (for text [&quot;</span> &lt;&lt; <a href='038new_text.cc.html#L151'>read_mu_characters</a><span class="Delimiter">(</span>start+<span class="Comment">/*</span><span class="Comment">skip length</span><span class="Comment">*/</span><span class="Constant">1</span><span class="Delimiter">,</span> <a href='032array.cc.html#L397'>array_length</a><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;])</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
-<span id="L485" class="LineNr">485 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>!Scenario_testing_scenario<span class="Delimiter">)</span> Passed = <span class="Constant">false</span><span class="Delimiter">;</span>
-<span id="L486" class="LineNr">486 </span>  <span class="Conceal">¦</span> <span class="Identifier">return</span><span class="Delimiter">;</span>
-<span id="L487" class="LineNr">487 </span>  <span class="Delimiter">}</span>
-<span id="L488" class="LineNr">488 </span>  <span class="Normal">int</span> curr = start+<span class="Constant">1</span><span class="Delimiter">;</span>  <span class="Comment">// now skip length</span>
-<span id="L489" class="LineNr">489 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> i = <span class="Constant">0</span><span class="Delimiter">;</span>  i &lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>literal<span class="Delimiter">);</span>  ++i<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L490" class="LineNr">490 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">&quot;run&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;checking location &quot;</span> &lt;&lt; curr+i &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
-<span id="L491" class="LineNr">491 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span><a href='001help.cc.html#L229'>get_or_insert</a><span class="Delimiter">(</span>Memory<span class="Delimiter">,</span> curr+i<span class="Delimiter">)</span> != literal<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">))</span> <span class="Delimiter">{</span>
-<span id="L492" class="LineNr">492 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>!Hide_errors<span class="Delimiter">)</span> cerr &lt;&lt; <span class="cSpecial">'\n'</span><span class="Delimiter">;</span>
-<span id="L493" class="LineNr">493 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <span class="Constant">&quot;F - &quot;</span> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span><a href='026call.cc.html#L85'>current_recipe_name</a><span class="Delimiter">())</span> &lt;&lt; <span class="Constant">&quot;expected location &quot;</span> &lt;&lt; <span class="Delimiter">(</span>curr+i<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot; to contain &quot;</span> &lt;&lt; literal<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot; but saw &quot;</span> &lt;&lt; no_scientific<span class="Delimiter">(</span><a href='001help.cc.html#L229'>get_or_insert</a><span class="Delimiter">(</span>Memory<span class="Delimiter">,</span> curr+i<span class="Delimiter">))</span> &lt;&lt; <span class="cSpecial">'\n'</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
-<span id="L494" class="LineNr">494 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>!Scenario_testing_scenario<span class="Delimiter">)</span> Passed = <span class="Constant">false</span><span class="Delimiter">;</span>
-<span id="L495" class="LineNr">495 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Identifier">return</span><span class="Delimiter">;</span>
-<span id="L496" class="LineNr">496 </span>  <span class="Conceal">¦</span> <span class="Delimiter">}</span>
-<span id="L497" class="LineNr">497 </span>  <span class="Delimiter">}</span>
-<span id="L498" class="LineNr">498 </span><span class="Delimiter">}</span>
-<span id="L499" class="LineNr">499 </span>
-<span id="L500" class="LineNr">500 </span><span class="Delimiter">:(scenario memory_check_multiple)</span>
-<span id="L501" class="LineNr">501 </span><span class="Special">% Scenario_testing_scenario = true;</span>
-<span id="L502" class="LineNr">502 </span><span class="Special">% Hide_errors = true;</span>
-<span id="L503" class="LineNr">503 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
-<span id="L504" class="LineNr">504 </span>  memory-should-contain [
-<span id="L505" class="LineNr">505 </span>  <span class="Conceal">¦</span> <span class="Constant">1</span><span class="Special"> &lt;- </span><span class="Constant">0</span>
-<span id="L506" class="LineNr">506 </span>  <span class="Conceal">¦</span> <span class="Constant">1</span><span class="Special"> &lt;- </span><span class="Constant">0</span>
-<span id="L507" class="LineNr">507 </span>  ]
-<span id="L508" class="LineNr">508 </span>]
-<span id="L509" class="LineNr">509 </span><span class="traceContains">+error: <a href='000organization.cc.html#L113'>main</a>: duplicate expectation for location '1'</span>
-<span id="L510" class="LineNr">510 </span>
-<span id="L511" class="LineNr">511 </span><span class="Delimiter">:(scenario memory_check_mu_text_length)</span>
-<span id="L512" class="LineNr">512 </span><span class="Special">% Scenario_testing_scenario = true;</span>
-<span id="L513" class="LineNr">513 </span><span class="Special">% Hide_errors = true;</span>
-<span id="L514" class="LineNr">514 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
-<span id="L515" class="LineNr">515 </span>  <span class="Constant">1</span>:num<span class="Special"> &lt;- </span>copy <span class="Constant">3</span>
-<span id="L516" class="LineNr">516 </span>  <span class="Constant">2</span>:num<span class="Special"> &lt;- </span>copy <span class="Constant">97</span>  <span class="Comment"># 'a'</span>
-<span id="L517" class="LineNr">517 </span>  <span class="Constant">3</span>:num<span class="Special"> &lt;- </span>copy <span class="Constant">98</span>  <span class="Comment"># 'b'</span>
-<span id="L518" class="LineNr">518 </span>  <span class="Constant">4</span>:num<span class="Special"> &lt;- </span>copy <span class="Constant">99</span>  <span class="Comment"># 'c'</span>
-<span id="L519" class="LineNr">519 </span>  memory-should-contain [
-<span id="L520" class="LineNr">520 </span>  <span class="Conceal">¦</span> <span class="Constant">1</span>:array:character<span class="Special"> &lt;- </span>[ab]
-<span id="L521" class="LineNr">521 </span>  ]
-<span id="L522" class="LineNr">522 </span>]
-<span id="L523" class="LineNr">523 </span><span class="traceContains">+error: F - <a href='000organization.cc.html#L113'>main</a>: expected location '1' to contain length 2 of text [ab] but saw 3 (for text [abc])</span>
-<span id="L524" class="LineNr">524 </span>
-<span id="L525" class="LineNr">525 </span><span class="Delimiter">:(scenario memory_check_mu_text)</span>
-<span id="L526" class="LineNr">526 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
-<span id="L527" class="LineNr">527 </span>  <span class="Constant">1</span>:num<span class="Special"> &lt;- </span>copy <span class="Constant">3</span>
-<span id="L528" class="LineNr">528 </span>  <span class="Constant">2</span>:num<span class="Special"> &lt;- </span>copy <span class="Constant">97</span>  <span class="Comment"># 'a'</span>
-<span id="L529" class="LineNr">529 </span>  <span class="Constant">3</span>:num<span class="Special"> &lt;- </span>copy <span class="Constant">98</span>  <span class="Comment"># 'b'</span>
-<span id="L530" class="LineNr">530 </span>  <span class="Constant">4</span>:num<span class="Special"> &lt;- </span>copy <span class="Constant">99</span>  <span class="Comment"># 'c'</span>
-<span id="L531" class="LineNr">531 </span>  memory-should-contain [
-<span id="L532" class="LineNr">532 </span>  <span class="Conceal">¦</span> <span class="Constant">1</span>:array:character<span class="Special"> &lt;- </span>[abc]
-<span id="L533" class="LineNr">533 </span>  ]
-<span id="L534" class="LineNr">534 </span>]
-<span id="L535" class="LineNr">535 </span><span class="traceContains">+run: checking text length at 1</span>
-<span id="L536" class="LineNr">536 </span><span class="traceContains">+run: checking location 2</span>
-<span id="L537" class="LineNr">537 </span><span class="traceContains">+run: checking location 3</span>
-<span id="L538" class="LineNr">538 </span><span class="traceContains">+run: checking location 4</span>
-<span id="L539" class="LineNr">539 </span>
-<span id="L540" class="LineNr">540 </span><span class="Delimiter">:(scenario memory_invalid_string_check)</span>
-<span id="L541" class="LineNr">541 </span><span class="Special">% Scenario_testing_scenario = true;</span>
-<span id="L542" class="LineNr">542 </span><span class="Special">% Hide_errors = true;</span>
-<span id="L543" class="LineNr">543 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
-<span id="L544" class="LineNr">544 </span>  memory-should-contain [
-<span id="L545" class="LineNr">545 </span>  <span class="Conceal">¦</span> <span class="Constant">1</span><span class="Special"> &lt;- </span>[abc]
-<span id="L546" class="LineNr">546 </span>  ]
-<span id="L547" class="LineNr">547 </span>]
-<span id="L548" class="LineNr">548 </span><span class="traceContains">+error: F - <a href='000organization.cc.html#L113'>main</a>: location '1' can't contain non-number [abc]</span>
-<span id="L549" class="LineNr">549 </span>
-<span id="L550" class="LineNr">550 </span><span class="Delimiter">:(scenario memory_invalid_string_check2)</span>
-<span id="L551" class="LineNr">551 </span><span class="Special">% Hide_errors = true;</span>
-<span id="L552" class="LineNr">552 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
-<span id="L553" class="LineNr">553 </span>  <span class="Constant">1</span>:num<span class="Special"> &lt;- </span>copy <span class="Constant">3</span>
-<span id="L554" class="LineNr">554 </span>  <span class="Constant">2</span>:num<span class="Special"> &lt;- </span>copy <span class="Constant">97</span>  <span class="Comment"># 'a'</span>
-<span id="L555" class="LineNr">555 </span>  <span class="Constant">3</span>:num<span class="Special"> &lt;- </span>copy <span class="Constant">98</span>  <span class="Comment"># 'b'</span>
-<span id="L556" class="LineNr">556 </span>  <span class="Constant">4</span>:num<span class="Special"> &lt;- </span>copy <span class="Constant">99</span>  <span class="Comment"># 'c'</span>
-<span id="L557" class="LineNr">557 </span>  memory-should-contain [
-<span id="L558" class="LineNr">558 </span>  <span class="Conceal">¦</span> <span class="Constant">1</span>:array:character<span class="Special"> &lt;- </span><span class="Constant">0</span>
-<span id="L559" class="LineNr">559 </span>  ]
-<span id="L560" class="LineNr">560 </span>]
-<span id="L561" class="LineNr">561 </span><span class="traceContains">+error: <a href='000organization.cc.html#L113'>main</a>: array:character types inside 'memory-should-contain' can only be compared with text literals surrounded by [], not '0'</span>
-<span id="L562" class="LineNr">562 </span>
-<span id="L563" class="LineNr">563 </span><span class="Delimiter">:(scenario memory_check_with_comment)</span>
-<span id="L564" class="LineNr">564 </span><span class="Special">% Scenario_testing_scenario = true;</span>
-<span id="L565" class="LineNr">565 </span><span class="Special">% Hide_errors = true;</span>
-<span id="L566" class="LineNr">566 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
-<span id="L567" class="LineNr">567 </span>  memory-should-contain [
-<span id="L568" class="LineNr">568 </span>  <span class="Conceal">¦</span> <span class="Constant">1</span><span class="Special"> &lt;- </span><span class="Constant">34</span>  <span class="Comment"># comment</span>
-<span id="L569" class="LineNr">569 </span>  ]
-<span id="L570" class="LineNr">570 </span>]
-<span id="L571" class="LineNr">571 </span><span class="traceAbsent">-error: location 1 can't contain non-number 34  # comment</span>
-<span id="L572" class="LineNr">572 </span><span class="Comment"># but there'll be an error signalled by memory-should-contain</span>
-<span id="L573" class="LineNr">573 </span>
-<span id="L574" class="LineNr">574 </span><span class="Comment">//: 'trace-should-contain' is like the '+' lines in our scenarios so far</span>
-<span id="L575" class="LineNr">575 </span><span class="Comment">// Like runs of contiguous '+' lines, order is important. The trace checks</span>
-<span id="L576" class="LineNr">576 </span><span class="Comment">// that the lines are present *and* in the specified sequence. (There can be</span>
-<span id="L577" class="LineNr">577 </span><span class="Comment">// other lines in between.)</span>
-<span id="L578" class="LineNr">578 </span>
-<span id="L579" class="LineNr">579 </span><span class="Delimiter">:(scenario trace_check_fails)</span>
-<span id="L580" class="LineNr">580 </span><span class="Special">% Scenario_testing_scenario = true;</span>
-<span id="L581" class="LineNr">581 </span><span class="Special">% Hide_errors = true;</span>
-<span id="L582" class="LineNr">582 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
-<span id="L583" class="LineNr">583 </span>  trace-should-contain [
-<span id="L584" class="LineNr">584 </span>  <span class="Conceal">¦</span> <span class="Normal">a</span>: b
-<span id="L585" class="LineNr">585 </span>  <span class="Conceal">¦</span> <span class="Normal">a</span>: d
-<span id="L586" class="LineNr">586 </span>  ]
-<span id="L587" class="LineNr">587 </span>]
-<span id="L588" class="LineNr">588 </span><span class="traceContains">+error: F - <a href='000organization.cc.html#L113'>main</a>: missing [b] in <a href='003trace.cc.html#L161'>trace</a> with label 'a'</span>
-<span id="L589" class="LineNr">589 </span>
-<span id="L590" class="LineNr">590 </span><span class="Delimiter">:(before &quot;End Primitive Recipe Declarations&quot;)</span>
-<span id="L591" class="LineNr">591 </span>TRACE_SHOULD_CONTAIN<span class="Delimiter">,</span>
-<span id="L592" class="LineNr">592 </span><span class="Delimiter">:(before &quot;End Primitive Recipe Numbers&quot;)</span>
-<span id="L593" class="LineNr">593 </span><a href='001help.cc.html#L221'>put</a><span class="Delimiter">(</span>Recipe_ordinal<span class="Delimiter">,</span> <span class="Constant">&quot;trace-should-contain&quot;</span><span class="Delimiter">,</span> TRACE_SHOULD_CONTAIN<span class="Delimiter">);</span>
-<span id="L594" class="LineNr">594 </span><span class="Delimiter">:(before &quot;End Primitive Recipe Checks&quot;)</span>
+<span id="L411" class="LineNr">411 </span>  <span class="Conceal">¦</span> <span class="Normal">int</span> <a href='043space.cc.html#L82'>address</a> = <a href='002test.cc.html#L91'>to_integer</a><span class="Delimiter">(</span>lhs<span class="Delimiter">);</span>
+<span id="L412" class="LineNr">412 </span>  <span class="Conceal">¦</span> <a href='011load.cc.html#L209'>skip_whitespace_and_comments</a><span class="Delimiter">(</span>in<span class="Delimiter">);</span>
+<span id="L413" class="LineNr">413 </span>  <span class="Conceal">¦</span> string _assign<span class="Delimiter">;</span>  in &gt;&gt; _assign<span class="Delimiter">;</span>  assert<span class="Delimiter">(</span>_assign == <span class="Constant">&quot;&lt;-&quot;</span><span class="Delimiter">);</span>
+<span id="L414" class="LineNr">414 </span>  <span class="Conceal">¦</span> <a href='011load.cc.html#L209'>skip_whitespace_and_comments</a><span class="Delimiter">(</span>in<span class="Delimiter">);</span>
+<span id="L415" class="LineNr">415 </span>  <span class="Conceal">¦</span> string rhs = <a href='011load.cc.html#L167'>next_word</a><span class="Delimiter">(</span>in<span class="Delimiter">);</span>
+<span id="L416" class="LineNr">416 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>rhs<span class="Delimiter">.</span>empty<span class="Delimiter">())</span> <span class="Delimiter">{</span>
+<span id="L417" class="LineNr">417 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> assert<span class="Delimiter">(</span>!has_data<span class="Delimiter">(</span>in<span class="Delimiter">));</span>
+<span id="L418" class="LineNr">418 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span><a href='026call.cc.html#L87'>current_recipe_name</a><span class="Delimiter">())</span> &lt;&lt; <span class="Constant">&quot;incomplete 'memory-should-contain' block at <a href='003trace.cc.html#L203'>end</a> of file (1)</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
+<span id="L419" class="LineNr">419 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Identifier">return</span><span class="Delimiter">;</span>
+<span id="L420" class="LineNr">420 </span>  <span class="Conceal">¦</span> <span class="Delimiter">}</span>
+<span id="L421" class="LineNr">421 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>!is_integer<span class="Delimiter">(</span>rhs<span class="Delimiter">)</span> &amp;&amp; !is_noninteger<span class="Delimiter">(</span>rhs<span class="Delimiter">))</span> <span class="Delimiter">{</span>
+<span id="L422" class="LineNr">422 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>!Hide_errors<span class="Delimiter">)</span> cerr &lt;&lt; <span class="cSpecial">'\n'</span><span class="Delimiter">;</span>
+<span id="L423" class="LineNr">423 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <span class="Constant">&quot;F - &quot;</span> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span><a href='026call.cc.html#L87'>current_recipe_name</a><span class="Delimiter">())</span> &lt;&lt; <span class="Constant">&quot;location '&quot;</span> &lt;&lt; address &lt;&lt; <span class="Constant">&quot;' can't contain non-number &quot;</span> &lt;&lt; rhs &lt;&lt; <span class="cSpecial">'\n'</span> &lt;&lt; end<span class="Delimiter">();</span>
+<span id="L424" class="LineNr">424 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>!Scenario_testing_scenario<span class="Delimiter">)</span> Passed = <span class="Constant">false</span><span class="Delimiter">;</span>
+<span id="L425" class="LineNr">425 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Identifier">return</span><span class="Delimiter">;</span>
+<span id="L426" class="LineNr">426 </span>  <span class="Conceal">¦</span> <span class="Delimiter">}</span>
+<span id="L427" class="LineNr">427 </span>  <span class="Conceal">¦</span> <span class="Normal">double</span> value = <a href='015literal_noninteger.cc.html#L26'>to_double</a><span class="Delimiter">(</span>rhs<span class="Delimiter">);</span>
+<span id="L428" class="LineNr">428 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>contains_key<span class="Delimiter">(</span>locations_checked<span class="Delimiter">,</span> <a href='043space.cc.html#L82'>address</a><span class="Delimiter">))</span>
+<span id="L429" class="LineNr">429 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span><a href='026call.cc.html#L87'>current_recipe_name</a><span class="Delimiter">())</span> &lt;&lt; <span class="Constant">&quot;duplicate expectation for location '&quot;</span> &lt;&lt; address &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
+<span id="L430" class="LineNr">430 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L167'>trace</a><span class="Delimiter">(</span><span class="Constant">&quot;run&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;checking location &quot;</span> &lt;&lt; <a href='043space.cc.html#L82'>address</a> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
+<span id="L431" class="LineNr">431 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span><a href='001help.cc.html#L229'>get_or_insert</a><span class="Delimiter">(</span>Memory<span class="Delimiter">,</span> <a href='043space.cc.html#L82'>address</a><span class="Delimiter">)</span> != value<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L432" class="LineNr">432 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>!Hide_errors<span class="Delimiter">)</span> cerr &lt;&lt; <span class="cSpecial">'\n'</span><span class="Delimiter">;</span>
+<span id="L433" class="LineNr">433 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <span class="Constant">&quot;F - &quot;</span> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span><a href='026call.cc.html#L87'>current_recipe_name</a><span class="Delimiter">())</span> &lt;&lt; <span class="Constant">&quot;expected location '&quot;</span> &lt;&lt; address &lt;&lt; <span class="Constant">&quot;' to contain &quot;</span> &lt;&lt; no_scientific<span class="Delimiter">(</span>value<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot; but saw &quot;</span> &lt;&lt; no_scientific<span class="Delimiter">(</span><a href='001help.cc.html#L229'>get_or_insert</a><span class="Delimiter">(</span>Memory<span class="Delimiter">,</span> <a href='043space.cc.html#L82'>address</a><span class="Delimiter">))</span> &lt;&lt; <span class="cSpecial">'\n'</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
+<span id="L434" class="LineNr">434 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>!Scenario_testing_scenario<span class="Delimiter">)</span> Passed = <span class="Constant">false</span><span class="Delimiter">;</span>
+<span id="L435" class="LineNr">435 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Identifier">return</span><span class="Delimiter">;</span>
+<span id="L436" class="LineNr">436 </span>  <span class="Conceal">¦</span> <span class="Delimiter">}</span>
+<span id="L437" class="LineNr">437 </span>  <span class="Conceal">¦</span> locations_checked<span class="Delimiter">.</span>insert<span class="Delimiter">(</span><a href='043space.cc.html#L82'>address</a><span class="Delimiter">);</span>
+<span id="L438" class="LineNr">438 </span>  <span class="Delimiter">}</span>
+<span id="L439" class="LineNr">439 </span><span class="Delimiter">}</span>
+<span id="L440" class="LineNr">440 </span>
+<span id="L441" class="LineNr">441 </span><span class="Normal">void</span> <a href='046check_type_by_name.cc.html#L59'>check_type</a><span class="Delimiter">(</span><span class="Normal">const</span> string&amp; lhs<span class="Delimiter">,</span> istream&amp; in<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L442" class="LineNr">442 </span>  reagent x<span class="Delimiter">(</span>lhs<span class="Delimiter">);</span>
+<span id="L443" class="LineNr">443 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>is_mu_array<span class="Delimiter">(</span>x<span class="Delimiter">.</span>type<span class="Delimiter">)</span> &amp;&amp; is_mu_character<span class="Delimiter">(</span><a href='032array.cc.html#L381'>array_element</a><span class="Delimiter">(</span>x<span class="Delimiter">.</span>type<span class="Delimiter">)))</span> <span class="Delimiter">{</span>
+<span id="L444" class="LineNr">444 </span>  <span class="Conceal">¦</span> x<span class="Delimiter">.</span><a href='010vm.cc.html#L65'>set_value</a><span class="Delimiter">(</span><a href='002test.cc.html#L91'>to_integer</a><span class="Delimiter">(</span>x<span class="Delimiter">.</span>name<span class="Delimiter">));</span>
+<span id="L445" class="LineNr">445 </span>  <span class="Conceal">¦</span> <a href='011load.cc.html#L209'>skip_whitespace_and_comments</a><span class="Delimiter">(</span>in<span class="Delimiter">);</span>
+<span id="L446" class="LineNr">446 </span>  <span class="Conceal">¦</span> string _assign = <a href='011load.cc.html#L167'>next_word</a><span class="Delimiter">(</span>in<span class="Delimiter">);</span>
+<span id="L447" class="LineNr">447 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>_assign<span class="Delimiter">.</span>empty<span class="Delimiter">())</span> <span class="Delimiter">{</span>
+<span id="L448" class="LineNr">448 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> assert<span class="Delimiter">(</span>!has_data<span class="Delimiter">(</span>in<span class="Delimiter">));</span>
+<span id="L449" class="LineNr">449 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span><a href='026call.cc.html#L87'>current_recipe_name</a><span class="Delimiter">())</span> &lt;&lt; <span class="Constant">&quot;incomplete 'memory-should-contain' block at <a href='003trace.cc.html#L203'>end</a> of file (2)</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
+<span id="L450" class="LineNr">450 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Identifier">return</span><span class="Delimiter">;</span>
+<span id="L451" class="LineNr">451 </span>  <span class="Conceal">¦</span> <span class="Delimiter">}</span>
+<span id="L452" class="LineNr">452 </span>  <span class="Conceal">¦</span> assert<span class="Delimiter">(</span>_assign == <span class="Constant">&quot;&lt;-&quot;</span><span class="Delimiter">);</span>
+<span id="L453" class="LineNr">453 </span>  <span class="Conceal">¦</span> <a href='011load.cc.html#L209'>skip_whitespace_and_comments</a><span class="Delimiter">(</span>in<span class="Delimiter">);</span>
+<span id="L454" class="LineNr">454 </span>  <span class="Conceal">¦</span> string literal = <a href='011load.cc.html#L167'>next_word</a><span class="Delimiter">(</span>in<span class="Delimiter">);</span>
+<span id="L455" class="LineNr">455 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>literal<span class="Delimiter">.</span>empty<span class="Delimiter">())</span> <span class="Delimiter">{</span>
+<span id="L456" class="LineNr">456 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> assert<span class="Delimiter">(</span>!has_data<span class="Delimiter">(</span>in<span class="Delimiter">));</span>
+<span id="L457" class="LineNr">457 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span><a href='026call.cc.html#L87'>current_recipe_name</a><span class="Delimiter">())</span> &lt;&lt; <span class="Constant">&quot;incomplete 'memory-should-contain' block at <a href='003trace.cc.html#L203'>end</a> of file (3)</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
+<span id="L458" class="LineNr">458 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Identifier">return</span><span class="Delimiter">;</span>
+<span id="L459" class="LineNr">459 </span>  <span class="Conceal">¦</span> <span class="Delimiter">}</span>
+<span id="L460" class="LineNr">460 </span>  <span class="Conceal">¦</span> <span class="Normal">int</span> <a href='043space.cc.html#L82'>address</a> = x<span class="Delimiter">.</span>value<span class="Delimiter">;</span>
+<span id="L461" class="LineNr">461 </span>  <span class="Conceal">¦</span> <span class="Comment">// exclude quoting brackets</span>
+<span id="L462" class="LineNr">462 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>*literal<span class="Delimiter">.</span>begin<span class="Delimiter">()</span> != <span class="Constant">'['</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L463" class="LineNr">463 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span><a href='026call.cc.html#L87'>current_recipe_name</a><span class="Delimiter">())</span> &lt;&lt; <span class="Constant">&quot;array:character types inside 'memory-should-contain' can only be compared with text literals surrounded by [], not '&quot;</span> &lt;&lt; literal &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
+<span id="L464" class="LineNr">464 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Identifier">return</span><span class="Delimiter">;</span>
+<span id="L465" class="LineNr">465 </span>  <span class="Conceal">¦</span> <span class="Delimiter">}</span>
+<span id="L466" class="LineNr">466 </span>  <span class="Conceal">¦</span> literal<span class="Delimiter">.</span>erase<span class="Delimiter">(</span>literal<span class="Delimiter">.</span>begin<span class="Delimiter">());</span>
+<span id="L467" class="LineNr">467 </span>  <span class="Conceal">¦</span> assert<span class="Delimiter">(</span>*--literal<span class="Delimiter">.</span><a href='003trace.cc.html#L203'>end</a><span class="Delimiter">()</span> == <span class="Constant">']'</span><span class="Delimiter">);</span>  literal<span class="Delimiter">.</span>erase<span class="Delimiter">(</span>--literal<span class="Delimiter">.</span><a href='003trace.cc.html#L203'>end</a><span class="Delimiter">());</span>
+<span id="L468" class="LineNr">468 </span>  <span class="Conceal">¦</span> check_mu_text<span class="Delimiter">(</span><a href='043space.cc.html#L82'>address</a><span class="Delimiter">,</span> literal<span class="Delimiter">);</span>
+<span id="L469" class="LineNr">469 </span>  <span class="Conceal">¦</span> <span class="Identifier">return</span><span class="Delimiter">;</span>
+<span id="L470" class="LineNr">470 </span>  <span class="Delimiter">}</span>
+<span id="L471" class="LineNr">471 </span>  <span class="Comment">// End Scenario Type Special-cases</span>
+<span id="L472" class="LineNr">472 </span>  <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <span class="Constant">&quot;don't know how to check memory for '&quot;</span> &lt;&lt; lhs &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; end<span class="Delimiter">();</span>
+<span id="L473" class="LineNr">473 </span><span class="Delimiter">}</span>
+<span id="L474" class="LineNr">474 </span>
+<span id="L475" class="LineNr">475 </span><span class="Normal">void</span> check_mu_text<span class="Delimiter">(</span><span class="Normal">int</span> start<span class="Delimiter">,</span> <span class="Normal">const</span> string&amp; literal<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L476" class="LineNr">476 </span>  <a href='003trace.cc.html#L167'>trace</a><span class="Delimiter">(</span><span class="Constant">&quot;run&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;checking text length at &quot;</span> &lt;&lt; start &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
+<span id="L477" class="LineNr">477 </span>  <span class="Normal">int</span> <a href='032array.cc.html#L397'>array_length</a> = <span class="Normal">static_cast</span>&lt;<span class="Normal">int</span>&gt;<span class="Delimiter">(</span><a href='001help.cc.html#L229'>get_or_insert</a><span class="Delimiter">(</span>Memory<span class="Delimiter">,</span> start<span class="Delimiter">));</span>
+<span id="L478" class="LineNr">478 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span><a href='032array.cc.html#L397'>array_length</a> != <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>literal<span class="Delimiter">))</span> <span class="Delimiter">{</span>
+<span id="L479" class="LineNr">479 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>!Hide_errors<span class="Delimiter">)</span> cerr &lt;&lt; <span class="cSpecial">'\n'</span><span class="Delimiter">;</span>
+<span id="L480" class="LineNr">480 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <span class="Constant">&quot;F - &quot;</span> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span><a href='026call.cc.html#L87'>current_recipe_name</a><span class="Delimiter">())</span> &lt;&lt; <span class="Constant">&quot;expected location '&quot;</span> &lt;&lt; start &lt;&lt; <span class="Constant">&quot;' to contain length &quot;</span> &lt;&lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>literal<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot; of text [&quot;</span> &lt;&lt; literal &lt;&lt; <span class="Constant">&quot;] but saw &quot;</span> &lt;&lt; <a href='032array.cc.html#L397'>array_length</a> &lt;&lt; <span class="Constant">&quot; (for text [&quot;</span> &lt;&lt; <a href='038new_text.cc.html#L151'>read_mu_characters</a><span class="Delimiter">(</span>start+<span class="Comment">/*</span><span class="Comment">skip length</span><span class="Comment">*/</span><span class="Constant">1</span><span class="Delimiter">,</span> <a href='032array.cc.html#L397'>array_length</a><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;])</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
+<span id="L481" class="LineNr">481 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>!Scenario_testing_scenario<span class="Delimiter">)</span> Passed = <span class="Constant">false</span><span class="Delimiter">;</span>
+<span id="L482" class="LineNr">482 </span>  <span class="Conceal">¦</span> <span class="Identifier">return</span><span class="Delimiter">;</span>
+<span id="L483" class="LineNr">483 </span>  <span class="Delimiter">}</span>
+<span id="L484" class="LineNr">484 </span>  <span class="Normal">int</span> curr = start+<span class="Constant">1</span><span class="Delimiter">;</span>  <span class="Comment">// now skip length</span>
+<span id="L485" class="LineNr">485 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> i = <span class="Constant">0</span><span class="Delimiter">;</span>  i &lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>literal<span class="Delimiter">);</span>  ++i<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L486" class="LineNr">486 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L167'>trace</a><span class="Delimiter">(</span><span class="Constant">&quot;run&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;checking location &quot;</span> &lt;&lt; curr+i &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
+<span id="L487" class="LineNr">487 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span><a href='001help.cc.html#L229'>get_or_insert</a><span class="Delimiter">(</span>Memory<span class="Delimiter">,</span> curr+i<span class="Delimiter">)</span> != literal<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">))</span> <span class="Delimiter">{</span>
+<span id="L488" class="LineNr">488 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>!Hide_errors<span class="Delimiter">)</span> cerr &lt;&lt; <span class="cSpecial">'\n'</span><span class="Delimiter">;</span>
+<span id="L489" class="LineNr">489 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <span class="Constant">&quot;F - &quot;</span> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span><a href='026call.cc.html#L87'>current_recipe_name</a><span class="Delimiter">())</span> &lt;&lt; <span class="Constant">&quot;expected location &quot;</span> &lt;&lt; <span class="Delimiter">(</span>curr+i<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot; to contain &quot;</span> &lt;&lt; literal<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot; but saw &quot;</span> &lt;&lt; no_scientific<span class="Delimiter">(</span><a href='001help.cc.html#L229'>get_or_insert</a><span class="Delimiter">(</span>Memory<span class="Delimiter">,</span> curr+i<span class="Delimiter">))</span> &lt;&lt; <span class="cSpecial">'\n'</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
+<span id="L490" class="LineNr">490 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>!Scenario_testing_scenario<span class="Delimiter">)</span> Passed = <span class="Constant">false</span><span class="Delimiter">;</span>
+<span id="L491" class="LineNr">491 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Identifier">return</span><span class="Delimiter">;</span>
+<span id="L492" class="LineNr">492 </span>  <span class="Conceal">¦</span> <span class="Delimiter">}</span>
+<span id="L493" class="LineNr">493 </span>  <span class="Delimiter">}</span>
+<span id="L494" class="LineNr">494 </span><span class="Delimiter">}</span>
+<span id="L495" class="LineNr">495 </span>
+<span id="L496" class="LineNr">496 </span><span class="Delimiter">:(scenario memory_check_multiple)</span>
+<span id="L497" class="LineNr">497 </span><span class="Special">% Scenario_testing_scenario = true;</span>
+<span id="L498" class="LineNr">498 </span><span class="Special">% Hide_errors = true;</span>
+<span id="L499" class="LineNr">499 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
+<span id="L500" class="LineNr">500 </span>  memory-should-contain [
+<span id="L501" class="LineNr">501 </span>  <span class="Conceal">¦</span> <span class="Constant">1</span><span class="Special"> &lt;- </span><span class="Constant">0</span>
+<span id="L502" class="LineNr">502 </span>  <span class="Conceal">¦</span> <span class="Constant">1</span><span class="Special"> &lt;- </span><span class="Constant">0</span>
+<span id="L503" class="LineNr">503 </span>  ]
+<span id="L504" class="LineNr">504 </span>]
+<span id="L505" class="LineNr">505 </span><span class="traceContains">+error: <a href='000organization.cc.html#L113'>main</a>: duplicate expectation for location '1'</span>
+<span id="L506" class="LineNr">506 </span>
+<span id="L507" class="LineNr">507 </span><span class="Delimiter">:(scenario memory_check_mu_text_length)</span>
+<span id="L508" class="LineNr">508 </span><span class="Special">% Scenario_testing_scenario = true;</span>
+<span id="L509" class="LineNr">509 </span><span class="Special">% Hide_errors = true;</span>
+<span id="L510" class="LineNr">510 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
+<span id="L511" class="LineNr">511 </span>  <span class="Constant">1</span>:num<span class="Special"> &lt;- </span>copy <span class="Constant">3</span>
+<span id="L512" class="LineNr">512 </span>  <span class="Constant">2</span>:num<span class="Special"> &lt;- </span>copy <span class="Constant">97</span>  <span class="Comment"># 'a'</span>
+<span id="L513" class="LineNr">513 </span>  <span class="Constant">3</span>:num<span class="Special"> &lt;- </span>copy <span class="Constant">98</span>  <span class="Comment"># 'b'</span>
+<span id="L514" class="LineNr">514 </span>  <span class="Constant">4</span>:num<span class="Special"> &lt;- </span>copy <span class="Constant">99</span>  <span class="Comment"># 'c'</span>
+<span id="L515" class="LineNr">515 </span>  memory-should-contain [
+<span id="L516" class="LineNr">516 </span>  <span class="Conceal">¦</span> <span class="Constant">1</span>:array:character<span class="Special"> &lt;- </span>[ab]
+<span id="L517" class="LineNr">517 </span>  ]
+<span id="L518" class="LineNr">518 </span>]
+<span id="L519" class="LineNr">519 </span><span class="traceContains">+error: F - <a href='000organization.cc.html#L113'>main</a>: expected location '1' to contain length 2 of text [ab] but saw 3 (for text [abc])</span>
+<span id="L520" class="LineNr">520 </span>
+<span id="L521" class="LineNr">521 </span><span class="Delimiter">:(scenario memory_check_mu_text)</span>
+<span id="L522" class="LineNr">522 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
+<span id="L523" class="LineNr">523 </span>  <span class="Constant">1</span>:num<span class="Special"> &lt;- </span>copy <span class="Constant">3</span>
+<span id="L524" class="LineNr">524 </span>  <span class="Constant">2</span>:num<span class="Special"> &lt;- </span>copy <span class="Constant">97</span>  <span class="Comment"># 'a'</span>
+<span id="L525" class="LineNr">525 </span>  <span class="Constant">3</span>:num<span class="Special"> &lt;- </span>copy <span class="Constant">98</span>  <span class="Comment"># 'b'</span>
+<span id="L526" class="LineNr">526 </span>  <span class="Constant">4</span>:num<span class="Special"> &lt;- </span>copy <span class="Constant">99</span>  <span class="Comment"># 'c'</span>
+<span id="L527" class="LineNr">527 </span>  memory-should-contain [
+<span id="L528" class="LineNr">528 </span>  <span class="Conceal">¦</span> <span class="Constant">1</span>:array:character<span class="Special"> &lt;- </span>[abc]
+<span id="L529" class="LineNr">529 </span>  ]
+<span id="L530" class="LineNr">530 </span>]
+<span id="L531" class="LineNr">531 </span><span class="traceContains">+run: checking text length at 1</span>
+<span id="L532" class="LineNr">532 </span><span class="traceContains">+run: checking location 2</span>
+<span id="L533" class="LineNr">533 </span><span class="traceContains">+run: checking location 3</span>
+<span id="L534" class="LineNr">534 </span><span class="traceContains">+run: checking location 4</span>
+<span id="L535" class="LineNr">535 </span>
+<span id="L536" class="LineNr">536 </span><span class="Delimiter">:(scenario memory_invalid_string_check)</span>
+<span id="L537" class="LineNr">537 </span><span class="Special">% Scenario_testing_scenario = true;</span>
+<span id="L538" class="LineNr">538 </span><span class="Special">% Hide_errors = true;</span>
+<span id="L539" class="LineNr">539 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
+<span id="L540" class="LineNr">540 </span>  memory-should-contain [
+<span id="L541" class="LineNr">541 </span>  <span class="Conceal">¦</span> <span class="Constant">1</span><span class="Special"> &lt;- </span>[abc]
+<span id="L542" class="LineNr">542 </span>  ]
+<span id="L543" class="LineNr">543 </span>]
+<span id="L544" class="LineNr">544 </span><span class="traceContains">+error: F - <a href='000organization.cc.html#L113'>main</a>: location '1' can't contain non-number [abc]</span>
+<span id="L545" class="LineNr">545 </span>
+<span id="L546" class="LineNr">546 </span><span class="Delimiter">:(scenario memory_invalid_string_check2)</span>
+<span id="L547" class="LineNr">547 </span><span class="Special">% Hide_errors = true;</span>
+<span id="L548" class="LineNr">548 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
+<span id="L549" class="LineNr">549 </span>  <span class="Constant">1</span>:num<span class="Special"> &lt;- </span>copy <span class="Constant">3</span>
+<span id="L550" class="LineNr">550 </span>  <span class="Constant">2</span>:num<span class="Special"> &lt;- </span>copy <span class="Constant">97</span>  <span class="Comment"># 'a'</span>
+<span id="L551" class="LineNr">551 </span>  <span class="Constant">3</span>:num<span class="Special"> &lt;- </span>copy <span class="Constant">98</span>  <span class="Comment"># 'b'</span>
+<span id="L552" class="LineNr">552 </span>  <span class="Constant">4</span>:num<span class="Special"> &lt;- </span>copy <span class="Constant">99</span>  <span class="Comment"># 'c'</span>
+<span id="L553" class="LineNr">553 </span>  memory-should-contain [
+<span id="L554" class="LineNr">554 </span>  <span class="Conceal">¦</span> <span class="Constant">1</span>:array:character<span class="Special"> &lt;- </span><span class="Constant">0</span>
+<span id="L555" class="LineNr">555 </span>  ]
+<span id="L556" class="LineNr">556 </span>]
+<span id="L557" class="LineNr">557 </span><span class="traceContains">+error: <a href='000organization.cc.html#L113'>main</a>: array:character types inside 'memory-should-contain' can only be compared with text literals surrounded by [], not '0'</span>
+<span id="L558" class="LineNr">558 </span>
+<span id="L559" class="LineNr">559 </span><span class="Delimiter">:(scenario memory_check_with_comment)</span>
+<span id="L560" class="LineNr">560 </span><span class="Special">% Scenario_testing_scenario = true;</span>
+<span id="L561" class="LineNr">561 </span><span class="Special">% Hide_errors = true;</span>
+<span id="L562" class="LineNr">562 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
+<span id="L563" class="LineNr">563 </span>  memory-should-contain [
+<span id="L564" class="LineNr">564 </span>  <span class="Conceal">¦</span> <span class="Constant">1</span><span class="Special"> &lt;- </span><span class="Constant">34</span>  <span class="Comment"># comment</span>
+<span id="L565" class="LineNr">565 </span>  ]
+<span id="L566" class="LineNr">566 </span>]
+<span id="L567" class="LineNr">567 </span><span class="traceAbsent">-error: location 1 can't contain non-number 34  # comment</span>
+<span id="L568" class="LineNr">568 </span><span class="Comment"># but there'll be an error signalled by memory-should-contain</span>
+<span id="L569" class="LineNr">569 </span>
+<span id="L570" class="LineNr">570 </span><span class="Comment">//: 'trace-should-contain' is like the '+' lines in our scenarios so far</span>
+<span id="L571" class="LineNr">571 </span><span class="Comment">// Like runs of contiguous '+' lines, order is important. The trace checks</span>
+<span id="L572" class="LineNr">572 </span><span class="Comment">// that the lines are present *and* in the specified sequence. (There can be</span>
+<span id="L573" class="LineNr">573 </span><span class="Comment">// other lines in between.)</span>
+<span id="L574" class="LineNr">574 </span>
+<span id="L575" class="LineNr">575 </span><span class="Delimiter">:(scenario trace_check_fails)</span>
+<span id="L576" class="LineNr">576 </span><span class="Special">% Scenario_testing_scenario = true;</span>
+<span id="L577" class="LineNr">577 </span><span class="Special">% Hide_errors = true;</span>
+<span id="L578" class="LineNr">578 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
+<span id="L579" class="LineNr">579 </span>  trace-should-contain [
+<span id="L580" class="LineNr">580 </span>  <span class="Conceal">¦</span> <span class="Normal">a</span>: b
+<span id="L581" class="LineNr">581 </span>  <span class="Conceal">¦</span> <span class="Normal">a</span>: d
+<span id="L582" class="LineNr">582 </span>  ]
+<span id="L583" class="LineNr">583 </span>]
+<span id="L584" class="LineNr">584 </span><span class="traceContains">+error: F - <a href='000organization.cc.html#L113'>main</a>: missing [b] in <a href='003trace.cc.html#L167'>trace</a> with label 'a'</span>
+<span id="L585" class="LineNr">585 </span>
+<span id="L586" class="LineNr">586 </span><span class="Delimiter">:(before &quot;End Primitive Recipe Declarations&quot;)</span>
+<span id="L587" class="LineNr">587 </span>TRACE_SHOULD_CONTAIN<span class="Delimiter">,</span>
+<span id="L588" class="LineNr">588 </span><span class="Delimiter">:(before &quot;End Primitive Recipe Numbers&quot;)</span>
+<span id="L589" class="LineNr">589 </span><a href='001help.cc.html#L221'>put</a><span class="Delimiter">(</span>Recipe_ordinal<span class="Delimiter">,</span> <span class="Constant">&quot;trace-should-contain&quot;</span><span class="Delimiter">,</span> TRACE_SHOULD_CONTAIN<span class="Delimiter">);</span>
+<span id="L590" class="LineNr">590 </span><span class="Delimiter">:(before &quot;End Primitive Recipe Checks&quot;)</span>
+<span id="L591" class="LineNr">591 </span><span class="Normal">case</span> TRACE_SHOULD_CONTAIN: <span class="Delimiter">{</span>
+<span id="L592" class="LineNr">592 </span>  <span class="Identifier">break</span><span class="Delimiter">;</span>
+<span id="L593" class="LineNr">593 </span><span class="Delimiter">}</span>
+<span id="L594" class="LineNr">594 </span><span class="Delimiter">:(before &quot;End Primitive Recipe Implementations&quot;)</span>
 <span id="L595" class="LineNr">595 </span><span class="Normal">case</span> TRACE_SHOULD_CONTAIN: <span class="Delimiter">{</span>
-<span id="L596" class="LineNr">596 </span>  <span class="Identifier">break</span><span class="Delimiter">;</span>
-<span id="L597" class="LineNr">597 </span><span class="Delimiter">}</span>
-<span id="L598" class="LineNr">598 </span><span class="Delimiter">:(before &quot;End Primitive Recipe Implementations&quot;)</span>
-<span id="L599" class="LineNr">599 </span><span class="Normal">case</span> TRACE_SHOULD_CONTAIN: <span class="Delimiter">{</span>
-<span id="L600" class="LineNr">600 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!Passed<span class="Delimiter">)</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
-<span id="L601" class="LineNr">601 </span>  check_trace<span class="Delimiter">(</span><a href='026call.cc.html#L87'>current_instruction</a><span class="Delimiter">().</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>name<span class="Delimiter">);</span>
-<span id="L602" class="LineNr">602 </span>  <span class="Identifier">break</span><span class="Delimiter">;</span>
-<span id="L603" class="LineNr">603 </span><span class="Delimiter">}</span>
-<span id="L604" class="LineNr">604 </span>
-<span id="L605" class="LineNr">605 </span><span class="Delimiter">:(code)</span>
-<span id="L606" class="LineNr">606 </span><span class="Comment">// simplified version of check_trace_contents() that emits errors rather</span>
-<span id="L607" class="LineNr">607 </span><span class="Comment">// than just printing to stderr</span>
-<span id="L608" class="LineNr">608 </span><span class="Normal">void</span> check_trace<span class="Delimiter">(</span><span class="Normal">const</span> string&amp; expected<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L609" class="LineNr">609 </span>  Trace_stream<span class="Delimiter">-&gt;</span><a href='003trace.cc.html#L127'>newline</a><span class="Delimiter">();</span>
-<span id="L610" class="LineNr">610 </span>  vector&lt;trace_line&gt; expected_lines = parse_trace<span class="Delimiter">(</span>expected<span class="Delimiter">);</span>
-<span id="L611" class="LineNr">611 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>expected_lines<span class="Delimiter">.</span>empty<span class="Delimiter">())</span> <span class="Identifier">return</span><span class="Delimiter">;</span>
-<span id="L612" class="LineNr">612 </span>  <span class="Normal">int</span> curr_expected_line = <span class="Constant">0</span><span class="Delimiter">;</span>
-<span id="L613" class="LineNr">613 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span>vector&lt;trace_line&gt;::iterator p = Trace_stream<span class="Delimiter">-&gt;</span>past_lines<span class="Delimiter">.</span>begin<span class="Delimiter">();</span>  p != Trace_stream<span class="Delimiter">-&gt;</span>past_lines<span class="Delimiter">.</span><a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>  ++p<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L614" class="LineNr">614 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>expected_lines<span class="Delimiter">.</span>at<span class="Delimiter">(</span>curr_expected_line<span class="Delimiter">).</span>label != p<span class="Delimiter">-&gt;</span>label<span class="Delimiter">)</span> <span class="Identifier">continue</span><span class="Delimiter">;</span>
-<span id="L615" class="LineNr">615 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>expected_lines<span class="Delimiter">.</span>at<span class="Delimiter">(</span>curr_expected_line<span class="Delimiter">).</span>contents != <a href='003trace.cc.html#L367'>trim</a><span class="Delimiter">(</span>p<span class="Delimiter">-&gt;</span>contents<span class="Delimiter">))</span> <span class="Identifier">continue</span><span class="Delimiter">;</span>
-<span id="L616" class="LineNr">616 </span>  <span class="Conceal">¦</span> <span class="Comment">// match</span>
-<span id="L617" class="LineNr">617 </span>  <span class="Conceal">¦</span> ++curr_expected_line<span class="Delimiter">;</span>
-<span id="L618" class="LineNr">618 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>curr_expected_line == <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>expected_lines<span class="Delimiter">))</span> <span class="Identifier">return</span><span class="Delimiter">;</span>
-<span id="L619" class="LineNr">619 </span>  <span class="Delimiter">}</span>
-<span id="L620" class="LineNr">620 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!Hide_errors<span class="Delimiter">)</span> cerr &lt;&lt; <span class="cSpecial">'\n'</span><span class="Delimiter">;</span>
-<span id="L621" class="LineNr">621 </span>  <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <span class="Constant">&quot;F - &quot;</span> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span><a href='026call.cc.html#L85'>current_recipe_name</a><span class="Delimiter">())</span> &lt;&lt; <span class="Constant">&quot;missing [&quot;</span> &lt;&lt; expected_lines<span class="Delimiter">.</span>at<span class="Delimiter">(</span>curr_expected_line<span class="Delimiter">).</span>contents &lt;&lt; <span class="Constant">&quot;] &quot;</span>
-<span id="L622" class="LineNr">622 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> &lt;&lt; <span class="Constant">&quot;in <a href='003trace.cc.html#L161'>trace</a> with label '&quot;</span> &lt;&lt; expected_lines<span class="Delimiter">.</span>at<span class="Delimiter">(</span>curr_expected_line<span class="Delimiter">).</span>label &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
-<span id="L623" class="LineNr">623 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!Hide_errors<span class="Delimiter">)</span>
-<span id="L624" class="LineNr">624 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L165'>DUMP</a><span class="Delimiter">(</span>expected_lines<span class="Delimiter">.</span>at<span class="Delimiter">(</span>curr_expected_line<span class="Delimiter">).</span>label<span class="Delimiter">);</span>
-<span id="L625" class="LineNr">625 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!Scenario_testing_scenario<span class="Delimiter">)</span> Passed = <span class="Constant">false</span><span class="Delimiter">;</span>
-<span id="L626" class="LineNr">626 </span><span class="Delimiter">}</span>
-<span id="L627" class="LineNr">627 </span>
-<span id="L628" class="LineNr">628 </span>vector&lt;trace_line&gt; parse_trace<span class="Delimiter">(</span><span class="Normal">const</span> string&amp; expected<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L629" class="LineNr">629 </span>  vector&lt;string&gt; buf = <a href='003trace.cc.html#L343'>split</a><span class="Delimiter">(</span>expected<span class="Delimiter">,</span> <span class="Constant">&quot;</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span><span class="Delimiter">);</span>
-<span id="L630" class="LineNr">630 </span>  vector&lt;trace_line&gt; result<span class="Delimiter">;</span>
-<span id="L631" class="LineNr">631 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> i = <span class="Constant">0</span><span class="Delimiter">;</span>  i &lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>buf<span class="Delimiter">);</span>  ++i<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L632" class="LineNr">632 </span>  <span class="Conceal">¦</span> buf<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">)</span> = <a href='003trace.cc.html#L367'>trim</a><span class="Delimiter">(</span>buf<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">));</span>
-<span id="L633" class="LineNr">633 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>buf<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">).</span>empty<span class="Delimiter">())</span> <span class="Identifier">continue</span><span class="Delimiter">;</span>
-<span id="L634" class="LineNr">634 </span>  <span class="Conceal">¦</span> <span class="Normal">int</span> delim = buf<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">).</span>find<span class="Delimiter">(</span><span class="Constant">&quot;: &quot;</span><span class="Delimiter">);</span>
-<span id="L635" class="LineNr">635 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>delim == -<span class="Constant">1</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L636" class="LineNr">636 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span><a href='026call.cc.html#L85'>current_recipe_name</a><span class="Delimiter">())</span> &lt;&lt; <span class="Constant">&quot;lines in 'trace-should-contain' should be of the form &lt;label&gt;: &lt;contents&gt;. Both parts are required.</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
-<span id="L637" class="LineNr">637 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> result<span class="Delimiter">.</span><a href='050scenario.cc.html#L60'>clear</a><span class="Delimiter">();</span>
-<span id="L638" class="LineNr">638 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Identifier">return</span> result<span class="Delimiter">;</span>
-<span id="L639" class="LineNr">639 </span>  <span class="Conceal">¦</span> <span class="Delimiter">}</span>
-<span id="L640" class="LineNr">640 </span>  <span class="Conceal">¦</span> result<span class="Delimiter">.</span>push_back<span class="Delimiter">(</span>trace_line<span class="Delimiter">(</span><a href='003trace.cc.html#L367'>trim</a><span class="Delimiter">(</span>buf<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">).</span>substr<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">,</span> delim<span class="Delimiter">)),</span>  <a href='003trace.cc.html#L367'>trim</a><span class="Delimiter">(</span>buf<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">).</span>substr<span class="Delimiter">(</span>delim+<span class="Constant">2</span><span class="Delimiter">))));</span>
-<span id="L641" class="LineNr">641 </span>  <span class="Delimiter">}</span>
-<span id="L642" class="LineNr">642 </span>  <span class="Identifier">return</span> result<span class="Delimiter">;</span>
-<span id="L643" class="LineNr">643 </span><span class="Delimiter">}</span>
-<span id="L644" class="LineNr">644 </span>
-<span id="L645" class="LineNr">645 </span><span class="Delimiter">:(scenario trace_check_fails_in_nonfirst_line)</span>
-<span id="L646" class="LineNr">646 </span><span class="Special">% Scenario_testing_scenario = true;</span>
-<span id="L647" class="LineNr">647 </span><span class="Special">% Hide_errors = true;</span>
-<span id="L648" class="LineNr">648 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
-<span id="L649" class="LineNr">649 </span>  run [
-<span id="L650" class="LineNr">650 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L161'>trace</a> <span class="Constant">1</span><span class="Delimiter">,</span> [a]<span class="Delimiter">,</span> [b]
+<span id="L596" class="LineNr">596 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!Passed<span class="Delimiter">)</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
+<span id="L597" class="LineNr">597 </span>  check_trace<span class="Delimiter">(</span><a href='026call.cc.html#L89'>current_instruction</a><span class="Delimiter">().</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>name<span class="Delimiter">);</span>
+<span id="L598" class="LineNr">598 </span>  <span class="Identifier">break</span><span class="Delimiter">;</span>
+<span id="L599" class="LineNr">599 </span><span class="Delimiter">}</span>
+<span id="L600" class="LineNr">600 </span>
+<span id="L601" class="LineNr">601 </span><span class="Delimiter">:(code)</span>
+<span id="L602" class="LineNr">602 </span><span class="Comment">// simplified version of check_trace_contents() that emits errors rather</span>
+<span id="L603" class="LineNr">603 </span><span class="Comment">// than just printing to stderr</span>
+<span id="L604" class="LineNr">604 </span><span class="Normal">void</span> check_trace<span class="Delimiter">(</span><span class="Normal">const</span> string&amp; expected<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L605" class="LineNr">605 </span>  Trace_stream<span class="Delimiter">-&gt;</span><a href='003trace.cc.html#L133'>newline</a><span class="Delimiter">();</span>
+<span id="L606" class="LineNr">606 </span>  vector&lt;trace_line&gt; expected_lines = parse_trace<span class="Delimiter">(</span>expected<span class="Delimiter">);</span>
+<span id="L607" class="LineNr">607 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>expected_lines<span class="Delimiter">.</span>empty<span class="Delimiter">())</span> <span class="Identifier">return</span><span class="Delimiter">;</span>
+<span id="L608" class="LineNr">608 </span>  <span class="Normal">int</span> curr_expected_line = <span class="Constant">0</span><span class="Delimiter">;</span>
+<span id="L609" class="LineNr">609 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span>vector&lt;trace_line&gt;::iterator p = Trace_stream<span class="Delimiter">-&gt;</span>past_lines<span class="Delimiter">.</span>begin<span class="Delimiter">();</span>  p != Trace_stream<span class="Delimiter">-&gt;</span>past_lines<span class="Delimiter">.</span><a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>  ++p<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L610" class="LineNr">610 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>expected_lines<span class="Delimiter">.</span>at<span class="Delimiter">(</span>curr_expected_line<span class="Delimiter">).</span>label != p<span class="Delimiter">-&gt;</span>label<span class="Delimiter">)</span> <span class="Identifier">continue</span><span class="Delimiter">;</span>
+<span id="L611" class="LineNr">611 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>expected_lines<span class="Delimiter">.</span>at<span class="Delimiter">(</span>curr_expected_line<span class="Delimiter">).</span>contents != <a href='003trace.cc.html#L369'>trim</a><span class="Delimiter">(</span>p<span class="Delimiter">-&gt;</span>contents<span class="Delimiter">))</span> <span class="Identifier">continue</span><span class="Delimiter">;</span>
+<span id="L612" class="LineNr">612 </span>  <span class="Conceal">¦</span> <span class="Comment">// match</span>
+<span id="L613" class="LineNr">613 </span>  <span class="Conceal">¦</span> ++curr_expected_line<span class="Delimiter">;</span>
+<span id="L614" class="LineNr">614 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>curr_expected_line == <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>expected_lines<span class="Delimiter">))</span> <span class="Identifier">return</span><span class="Delimiter">;</span>
+<span id="L615" class="LineNr">615 </span>  <span class="Delimiter">}</span>
+<span id="L616" class="LineNr">616 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!Hide_errors<span class="Delimiter">)</span> cerr &lt;&lt; <span class="cSpecial">'\n'</span><span class="Delimiter">;</span>
+<span id="L617" class="LineNr">617 </span>  <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <span class="Constant">&quot;F - &quot;</span> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span><a href='026call.cc.html#L87'>current_recipe_name</a><span class="Delimiter">())</span> &lt;&lt; <span class="Constant">&quot;missing [&quot;</span> &lt;&lt; expected_lines<span class="Delimiter">.</span>at<span class="Delimiter">(</span>curr_expected_line<span class="Delimiter">).</span>contents &lt;&lt; <span class="Constant">&quot;] &quot;</span>
+<span id="L618" class="LineNr">618 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> &lt;&lt; <span class="Constant">&quot;in <a href='003trace.cc.html#L167'>trace</a> with label '&quot;</span> &lt;&lt; expected_lines<span class="Delimiter">.</span>at<span class="Delimiter">(</span>curr_expected_line<span class="Delimiter">).</span>label &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
+<span id="L619" class="LineNr">619 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!Hide_errors<span class="Delimiter">)</span>
+<span id="L620" class="LineNr">620 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L171'>DUMP</a><span class="Delimiter">(</span>expected_lines<span class="Delimiter">.</span>at<span class="Delimiter">(</span>curr_expected_line<span class="Delimiter">).</span>label<span class="Delimiter">);</span>
+<span id="L621" class="LineNr">621 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!Scenario_testing_scenario<span class="Delimiter">)</span> Passed = <span class="Constant">false</span><span class="Delimiter">;</span>
+<span id="L622" class="LineNr">622 </span><span class="Delimiter">}</span>
+<span id="L623" class="LineNr">623 </span>
+<span id="L624" class="LineNr">624 </span>vector&lt;trace_line&gt; parse_trace<span class="Delimiter">(</span><span class="Normal">const</span> string&amp; expected<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L625" class="LineNr">625 </span>  vector&lt;string&gt; buf = <a href='003trace.cc.html#L345'>split</a><span class="Delimiter">(</span>expected<span class="Delimiter">,</span> <span class="Constant">&quot;</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span><span class="Delimiter">);</span>
+<span id="L626" class="LineNr">626 </span>  vector&lt;trace_line&gt; result<span class="Delimiter">;</span>
+<span id="L627" class="LineNr">627 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> i = <span class="Constant">0</span><span class="Delimiter">;</span>  i &lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>buf<span class="Delimiter">);</span>  ++i<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L628" class="LineNr">628 </span>  <span class="Conceal">¦</span> buf<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">)</span> = <a href='003trace.cc.html#L369'>trim</a><span class="Delimiter">(</span>buf<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">));</span>
+<span id="L629" class="LineNr">629 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>buf<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">).</span>empty<span class="Delimiter">())</span> <span class="Identifier">continue</span><span class="Delimiter">;</span>
+<span id="L630" class="LineNr">630 </span>  <span class="Conceal">¦</span> <span class="Normal">int</span> delim = buf<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">).</span>find<span class="Delimiter">(</span><span class="Constant">&quot;: &quot;</span><span class="Delimiter">);</span>
+<span id="L631" class="LineNr">631 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>delim == -<span class="Constant">1</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L632" class="LineNr">632 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span><a href='026call.cc.html#L87'>current_recipe_name</a><span class="Delimiter">())</span> &lt;&lt; <span class="Constant">&quot;lines in 'trace-should-contain' should be of the form &lt;label&gt;: &lt;contents&gt;. Both parts are required.</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
+<span id="L633" class="LineNr">633 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> result<span class="Delimiter">.</span><a href='050scenario.cc.html#L60'>clear</a><span class="Delimiter">();</span>
+<span id="L634" class="LineNr">634 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Identifier">return</span> result<span class="Delimiter">;</span>
+<span id="L635" class="LineNr">635 </span>  <span class="Conceal">¦</span> <span class="Delimiter">}</span>
+<span id="L636" class="LineNr">636 </span>  <span class="Conceal">¦</span> result<span class="Delimiter">.</span>push_back<span class="Delimiter">(</span>trace_line<span class="Delimiter">(</span><a href='003trace.cc.html#L369'>trim</a><span class="Delimiter">(</span>buf<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">).</span>substr<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">,</span> delim<span class="Delimiter">)),</span>  <a href='003trace.cc.html#L369'>trim</a><span class="Delimiter">(</span>buf<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">).</span>substr<span class="Delimiter">(</span>delim+<span class="Constant">2</span><span class="Delimiter">))));</span>
+<span id="L637" class="LineNr">637 </span>  <span class="Delimiter">}</span>
+<span id="L638" class="LineNr">638 </span>  <span class="Identifier">return</span> result<span class="Delimiter">;</span>
+<span id="L639" class="LineNr">639 </span><span class="Delimiter">}</span>
+<span id="L640" class="LineNr">640 </span>
+<span id="L641" class="LineNr">641 </span><span class="Delimiter">:(scenario trace_check_fails_in_nonfirst_line)</span>
+<span id="L642" class="LineNr">642 </span><span class="Special">% Scenario_testing_scenario = true;</span>
+<span id="L643" class="LineNr">643 </span><span class="Special">% Hide_errors = true;</span>
+<span id="L644" class="LineNr">644 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
+<span id="L645" class="LineNr">645 </span>  run [
+<span id="L646" class="LineNr">646 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L167'>trace</a> <span class="Constant">1</span><span class="Delimiter">,</span> [a]<span class="Delimiter">,</span> [b]
+<span id="L647" class="LineNr">647 </span>  ]
+<span id="L648" class="LineNr">648 </span>  trace-should-contain [
+<span id="L649" class="LineNr">649 </span>  <span class="Conceal">¦</span> <span class="Normal">a</span>: b
+<span id="L650" class="LineNr">650 </span>  <span class="Conceal">¦</span> <span class="Normal">a</span>: d
 <span id="L651" class="LineNr">651 </span>  ]
-<span id="L652" class="LineNr">652 </span>  trace-should-contain [
-<span id="L653" class="LineNr">653 </span>  <span class="Conceal">¦</span> <span class="Normal">a</span>: b
-<span id="L654" class="LineNr">654 </span>  <span class="Conceal">¦</span> <span class="Normal">a</span>: d
-<span id="L655" class="LineNr">655 </span>  ]
-<span id="L656" class="LineNr">656 </span>]
-<span id="L657" class="LineNr">657 </span><span class="traceContains">+error: F - <a href='000organization.cc.html#L113'>main</a>: missing [d] in <a href='003trace.cc.html#L161'>trace</a> with label 'a'</span>
-<span id="L658" class="LineNr">658 </span>
-<span id="L659" class="LineNr">659 </span><span class="Delimiter">:(scenario trace_check_passes_silently)</span>
-<span id="L660" class="LineNr">660 </span><span class="Special">% Scenario_testing_scenario = true;</span>
-<span id="L661" class="LineNr">661 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
-<span id="L662" class="LineNr">662 </span>  run [
-<span id="L663" class="LineNr">663 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L161'>trace</a> <span class="Constant">1</span><span class="Delimiter">,</span> [a]<span class="Delimiter">,</span> [b]
-<span id="L664" class="LineNr">664 </span>  ]
-<span id="L665" class="LineNr">665 </span>  trace-should-contain [
-<span id="L666" class="LineNr">666 </span>  <span class="Conceal">¦</span> <span class="Normal">a</span>: b
-<span id="L667" class="LineNr">667 </span>  ]
-<span id="L668" class="LineNr">668 </span>]
-<span id="L669" class="LineNr">669 </span><span class="traceAbsent">-error: missing [b] in <a href='003trace.cc.html#L161'>trace</a> with label 'a'</span>
-<span id="L670" class="LineNr">670 </span>$error: <span class="Constant">0</span>
+<span id="L652" class="LineNr">652 </span>]
+<span id="L653" class="LineNr">653 </span><span class="traceContains">+error: F - <a href='000organization.cc.html#L113'>main</a>: missing [d] in <a href='003trace.cc.html#L167'>trace</a> with label 'a'</span>
+<span id="L654" class="LineNr">654 </span>
+<span id="L655" class="LineNr">655 </span><span class="Delimiter">:(scenario trace_check_passes_silently)</span>
+<span id="L656" class="LineNr">656 </span><span class="Special">% Scenario_testing_scenario = true;</span>
+<span id="L657" class="LineNr">657 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
+<span id="L658" class="LineNr">658 </span>  run [
+<span id="L659" class="LineNr">659 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L167'>trace</a> <span class="Constant">1</span><span class="Delimiter">,</span> [a]<span class="Delimiter">,</span> [b]
+<span id="L660" class="LineNr">660 </span>  ]
+<span id="L661" class="LineNr">661 </span>  trace-should-contain [
+<span id="L662" class="LineNr">662 </span>  <span class="Conceal">¦</span> <span class="Normal">a</span>: b
+<span id="L663" class="LineNr">663 </span>  ]
+<span id="L664" class="LineNr">664 </span>]
+<span id="L665" class="LineNr">665 </span><span class="traceAbsent">-error: missing [b] in <a href='003trace.cc.html#L167'>trace</a> with label 'a'</span>
+<span id="L666" class="LineNr">666 </span>$error: <span class="Constant">0</span>
+<span id="L667" class="LineNr">667 </span>
+<span id="L668" class="LineNr">668 </span><span class="Comment">//: 'trace-should-not-contain' is like the '-' lines in our scenarios so far</span>
+<span id="L669" class="LineNr">669 </span><span class="Comment">//: Each trace line is separately checked for absense. Order is *not*</span>
+<span id="L670" class="LineNr">670 </span><span class="Comment">//: important, so you can't say things like &quot;B should not exist after A.&quot;</span>
 <span id="L671" class="LineNr">671 </span>
-<span id="L672" class="LineNr">672 </span><span class="Comment">//: 'trace-should-not-contain' is like the '-' lines in our scenarios so far</span>
-<span id="L673" class="LineNr">673 </span><span class="Comment">//: Each trace line is separately checked for absense. Order is *not*</span>
-<span id="L674" class="LineNr">674 </span><span class="Comment">//: important, so you can't say things like &quot;B should not exist after A.&quot;</span>
-<span id="L675" class="LineNr">675 </span>
-<span id="L676" class="LineNr">676 </span><span class="Delimiter">:(scenario trace_negative_check_fails)</span>
-<span id="L677" class="LineNr">677 </span><span class="Special">% Scenario_testing_scenario = true;</span>
-<span id="L678" class="LineNr">678 </span><span class="Special">% Hide_errors = true;</span>
-<span id="L679" class="LineNr">679 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
-<span id="L680" class="LineNr">680 </span>  run [
-<span id="L681" class="LineNr">681 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L161'>trace</a> <span class="Constant">1</span><span class="Delimiter">,</span> [a]<span class="Delimiter">,</span> [b]
-<span id="L682" class="LineNr">682 </span>  ]
-<span id="L683" class="LineNr">683 </span>  trace-should-<span class="Normal">not</span>-contain [
-<span id="L684" class="LineNr">684 </span>  <span class="Conceal">¦</span> <span class="Normal">a</span>: b
-<span id="L685" class="LineNr">685 </span>  ]
-<span id="L686" class="LineNr">686 </span>]
-<span id="L687" class="LineNr">687 </span><span class="traceContains">+error: F - <a href='000organization.cc.html#L113'>main</a>: unexpected [b] in <a href='003trace.cc.html#L161'>trace</a> with label 'a'</span>
-<span id="L688" class="LineNr">688 </span>
-<span id="L689" class="LineNr">689 </span><span class="Delimiter">:(before &quot;End Primitive Recipe Declarations&quot;)</span>
-<span id="L690" class="LineNr">690 </span>TRACE_SHOULD_NOT_CONTAIN<span class="Delimiter">,</span>
-<span id="L691" class="LineNr">691 </span><span class="Delimiter">:(before &quot;End Primitive Recipe Numbers&quot;)</span>
-<span id="L692" class="LineNr">692 </span><a href='001help.cc.html#L221'>put</a><span class="Delimiter">(</span>Recipe_ordinal<span class="Delimiter">,</span> <span class="Constant">&quot;trace-should-not-contain&quot;</span><span class="Delimiter">,</span> TRACE_SHOULD_NOT_CONTAIN<span class="Delimiter">);</span>
-<span id="L693" class="LineNr">693 </span><span class="Delimiter">:(before &quot;End Primitive Recipe Checks&quot;)</span>
+<span id="L672" class="LineNr">672 </span><span class="Delimiter">:(scenario trace_negative_check_fails)</span>
+<span id="L673" class="LineNr">673 </span><span class="Special">% Scenario_testing_scenario = true;</span>
+<span id="L674" class="LineNr">674 </span><span class="Special">% Hide_errors = true;</span>
+<span id="L675" class="LineNr">675 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
+<span id="L676" class="LineNr">676 </span>  run [
+<span id="L677" class="LineNr">677 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L167'>trace</a> <span class="Constant">1</span><span class="Delimiter">,</span> [a]<span class="Delimiter">,</span> [b]
+<span id="L678" class="LineNr">678 </span>  ]
+<span id="L679" class="LineNr">679 </span>  trace-should-<span class="Normal">not</span>-contain [
+<span id="L680" class="LineNr">680 </span>  <span class="Conceal">¦</span> <span class="Normal">a</span>: b
+<span id="L681" class="LineNr">681 </span>  ]
+<span id="L682" class="LineNr">682 </span>]
+<span id="L683" class="LineNr">683 </span><span class="traceContains">+error: F - <a href='000organization.cc.html#L113'>main</a>: unexpected [b] in <a href='003trace.cc.html#L167'>trace</a> with label 'a'</span>
+<span id="L684" class="LineNr">684 </span>
+<span id="L685" class="LineNr">685 </span><span class="Delimiter">:(before &quot;End Primitive Recipe Declarations&quot;)</span>
+<span id="L686" class="LineNr">686 </span>TRACE_SHOULD_NOT_CONTAIN<span class="Delimiter">,</span>
+<span id="L687" class="LineNr">687 </span><span class="Delimiter">:(before &quot;End Primitive Recipe Numbers&quot;)</span>
+<span id="L688" class="LineNr">688 </span><a href='001help.cc.html#L221'>put</a><span class="Delimiter">(</span>Recipe_ordinal<span class="Delimiter">,</span> <span class="Constant">&quot;trace-should-not-contain&quot;</span><span class="Delimiter">,</span> TRACE_SHOULD_NOT_CONTAIN<span class="Delimiter">);</span>
+<span id="L689" class="LineNr">689 </span><span class="Delimiter">:(before &quot;End Primitive Recipe Checks&quot;)</span>
+<span id="L690" class="LineNr">690 </span><span class="Normal">case</span> TRACE_SHOULD_NOT_CONTAIN: <span class="Delimiter">{</span>
+<span id="L691" class="LineNr">691 </span>  <span class="Identifier">break</span><span class="Delimiter">;</span>
+<span id="L692" class="LineNr">692 </span><span class="Delimiter">}</span>
+<span id="L693" class="LineNr">693 </span><span class="Delimiter">:(before &quot;End Primitive Recipe Implementations&quot;)</span>
 <span id="L694" class="LineNr">694 </span><span class="Normal">case</span> TRACE_SHOULD_NOT_CONTAIN: <span class="Delimiter">{</span>
-<span id="L695" class="LineNr">695 </span>  <span class="Identifier">break</span><span class="Delimiter">;</span>
-<span id="L696" class="LineNr">696 </span><span class="Delimiter">}</span>
-<span id="L697" class="LineNr">697 </span><span class="Delimiter">:(before &quot;End Primitive Recipe Implementations&quot;)</span>
-<span id="L698" class="LineNr">698 </span><span class="Normal">case</span> TRACE_SHOULD_NOT_CONTAIN: <span class="Delimiter">{</span>
-<span id="L699" class="LineNr">699 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!Passed<span class="Delimiter">)</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
-<span id="L700" class="LineNr">700 </span>  check_trace_missing<span class="Delimiter">(</span><a href='026call.cc.html#L87'>current_instruction</a><span class="Delimiter">().</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>name<span class="Delimiter">);</span>
-<span id="L701" class="LineNr">701 </span>  <span class="Identifier">break</span><span class="Delimiter">;</span>
-<span id="L702" class="LineNr">702 </span><span class="Delimiter">}</span>
-<span id="L703" class="LineNr">703 </span>
-<span id="L704" class="LineNr">704 </span><span class="Delimiter">:(code)</span>
-<span id="L705" class="LineNr">705 </span><span class="Comment">// simplified version of check_trace_contents() that emits errors rather</span>
-<span id="L706" class="LineNr">706 </span><span class="Comment">// than just printing to stderr</span>
-<span id="L707" class="LineNr">707 </span><span class="Normal">bool</span> check_trace_missing<span class="Delimiter">(</span><span class="Normal">const</span> string&amp; in<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L708" class="LineNr">708 </span>  Trace_stream<span class="Delimiter">-&gt;</span><a href='003trace.cc.html#L127'>newline</a><span class="Delimiter">();</span>
-<span id="L709" class="LineNr">709 </span>  vector&lt;trace_line&gt; lines = parse_trace<span class="Delimiter">(</span>in<span class="Delimiter">);</span>
-<span id="L710" class="LineNr">710 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> i = <span class="Constant">0</span><span class="Delimiter">;</span>  i &lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>lines<span class="Delimiter">);</span>  ++i<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L711" class="LineNr">711 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>trace_count<span class="Delimiter">(</span>lines<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">).</span>label<span class="Delimiter">,</span> lines<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">).</span>contents<span class="Delimiter">)</span> != <span class="Constant">0</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L712" class="LineNr">712 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <span class="Constant">&quot;F - &quot;</span> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span><a href='026call.cc.html#L85'>current_recipe_name</a><span class="Delimiter">())</span> &lt;&lt; <span class="Constant">&quot;unexpected [&quot;</span> &lt;&lt; lines<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">).</span>contents &lt;&lt; <span class="Constant">&quot;] in <a href='003trace.cc.html#L161'>trace</a> with label '&quot;</span> &lt;&lt; lines<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">).</span>label &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
-<span id="L713" class="LineNr">713 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>!Scenario_testing_scenario<span class="Delimiter">)</span> Passed = <span class="Constant">false</span><span class="Delimiter">;</span>
-<span id="L714" class="LineNr">714 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Identifier">return</span> <span class="Constant">false</span><span class="Delimiter">;</span>
-<span id="L715" class="LineNr">715 </span>  <span class="Conceal">¦</span> <span class="Delimiter">}</span>
-<span id="L716" class="LineNr">716 </span>  <span class="Delimiter">}</span>
-<span id="L717" class="LineNr">717 </span>  <span class="Identifier">return</span> <span class="Constant">true</span><span class="Delimiter">;</span>
-<span id="L718" class="LineNr">718 </span><span class="Delimiter">}</span>
-<span id="L719" class="LineNr">719 </span>
-<span id="L720" class="LineNr">720 </span><span class="Delimiter">:(scenario trace_negative_check_passes_silently)</span>
-<span id="L721" class="LineNr">721 </span><span class="Special">% Scenario_testing_scenario = true;</span>
-<span id="L722" class="LineNr">722 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
-<span id="L723" class="LineNr">723 </span>  trace-should-<span class="Normal">not</span>-contain [
-<span id="L724" class="LineNr">724 </span>  <span class="Conceal">¦</span> <span class="Normal">a</span>: b
-<span id="L725" class="LineNr">725 </span>  ]
-<span id="L726" class="LineNr">726 </span>]
-<span id="L727" class="LineNr">727 </span><span class="traceAbsent">-error: unexpected [b] in <a href='003trace.cc.html#L161'>trace</a> with label 'a'</span>
-<span id="L728" class="LineNr">728 </span>$error: <span class="Constant">0</span>
-<span id="L729" class="LineNr">729 </span>
-<span id="L730" class="LineNr">730 </span><span class="Delimiter">:(scenario trace_negative_check_fails_on_any_unexpected_line)</span>
-<span id="L731" class="LineNr">731 </span><span class="Special">% Scenario_testing_scenario = true;</span>
-<span id="L732" class="LineNr">732 </span><span class="Special">% Hide_errors = true;</span>
-<span id="L733" class="LineNr">733 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
-<span id="L734" class="LineNr">734 </span>  run [
-<span id="L735" class="LineNr">735 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L161'>trace</a> <span class="Constant">1</span><span class="Delimiter">,</span> [a]<span class="Delimiter">,</span> [d]
+<span id="L695" class="LineNr">695 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!Passed<span class="Delimiter">)</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
+<span id="L696" class="LineNr">696 </span>  check_trace_missing<span class="Delimiter">(</span><a href='026call.cc.html#L89'>current_instruction</a><span class="Delimiter">().</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>name<span class="Delimiter">);</span>
+<span id="L697" class="LineNr">697 </span>  <span class="Identifier">break</span><span class="Delimiter">;</span>
+<span id="L698" class="LineNr">698 </span><span class="Delimiter">}</span>
+<span id="L699" class="LineNr">699 </span>
+<span id="L700" class="LineNr">700 </span><span class="Delimiter">:(code)</span>
+<span id="L701" class="LineNr">701 </span><span class="Comment">// simplified version of check_trace_contents() that emits errors rather</span>
+<span id="L702" class="LineNr">702 </span><span class="Comment">// than just printing to stderr</span>
+<span id="L703" class="LineNr">703 </span><span class="Normal">bool</span> check_trace_missing<span class="Delimiter">(</span><span class="Normal">const</span> string&amp; in<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L704" class="LineNr">704 </span>  Trace_stream<span class="Delimiter">-&gt;</span><a href='003trace.cc.html#L133'>newline</a><span class="Delimiter">();</span>
+<span id="L705" class="LineNr">705 </span>  vector&lt;trace_line&gt; lines = parse_trace<span class="Delimiter">(</span>in<span class="Delimiter">);</span>
+<span id="L706" class="LineNr">706 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> i = <span class="Constant">0</span><span class="Delimiter">;</span>  i &lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>lines<span class="Delimiter">);</span>  ++i<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L707" class="LineNr">707 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>trace_count<span class="Delimiter">(</span>lines<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">).</span>label<span class="Delimiter">,</span> lines<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">).</span>contents<span class="Delimiter">)</span> != <span class="Constant">0</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L708" class="LineNr">708 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <span class="Constant">&quot;F - &quot;</span> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span><a href='026call.cc.html#L87'>current_recipe_name</a><span class="Delimiter">())</span> &lt;&lt; <span class="Constant">&quot;unexpected [&quot;</span> &lt;&lt; lines<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">).</span>contents &lt;&lt; <span class="Constant">&quot;] in <a href='003trace.cc.html#L167'>trace</a> with label '&quot;</span> &lt;&lt; lines<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">).</span>label &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
+<span id="L709" class="LineNr">709 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>!Scenario_testing_scenario<span class="Delimiter">)</span> Passed = <span class="Constant">false</span><span class="Delimiter">;</span>
+<span id="L710" class="LineNr">710 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Identifier">return</span> <span class="Constant">false</span><span class="Delimiter">;</span>
+<span id="L711" class="LineNr">711 </span>  <span class="Conceal">¦</span> <span class="Delimiter">}</span>
+<span id="L712" class="LineNr">712 </span>  <span class="Delimiter">}</span>
+<span id="L713" class="LineNr">713 </span>  <span class="Identifier">return</span> <span class="Constant">true</span><span class="Delimiter">;</span>
+<span id="L714" class="LineNr">714 </span><span class="Delimiter">}</span>
+<span id="L715" class="LineNr">715 </span>
+<span id="L716" class="LineNr">716 </span><span class="Delimiter">:(scenario trace_negative_check_passes_silently)</span>
+<span id="L717" class="LineNr">717 </span><span class="Special">% Scenario_testing_scenario = true;</span>
+<span id="L718" class="LineNr">718 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
+<span id="L719" class="LineNr">719 </span>  trace-should-<span class="Normal">not</span>-contain [
+<span id="L720" class="LineNr">720 </span>  <span class="Conceal">¦</span> <span class="Normal">a</span>: b
+<span id="L721" class="LineNr">721 </span>  ]
+<span id="L722" class="LineNr">722 </span>]
+<span id="L723" class="LineNr">723 </span><span class="traceAbsent">-error: unexpected [b] in <a href='003trace.cc.html#L167'>trace</a> with label 'a'</span>
+<span id="L724" class="LineNr">724 </span>$error: <span class="Constant">0</span>
+<span id="L725" class="LineNr">725 </span>
+<span id="L726" class="LineNr">726 </span><span class="Delimiter">:(scenario trace_negative_check_fails_on_any_unexpected_line)</span>
+<span id="L727" class="LineNr">727 </span><span class="Special">% Scenario_testing_scenario = true;</span>
+<span id="L728" class="LineNr">728 </span><span class="Special">% Hide_errors = true;</span>
+<span id="L729" class="LineNr">729 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
+<span id="L730" class="LineNr">730 </span>  run [
+<span id="L731" class="LineNr">731 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L167'>trace</a> <span class="Constant">1</span><span class="Delimiter">,</span> [a]<span class="Delimiter">,</span> [d]
+<span id="L732" class="LineNr">732 </span>  ]
+<span id="L733" class="LineNr">733 </span>  trace-should-<span class="Normal">not</span>-contain [
+<span id="L734" class="LineNr">734 </span>  <span class="Conceal">¦</span> <span class="Normal">a</span>: b
+<span id="L735" class="LineNr">735 </span>  <span class="Conceal">¦</span> <span class="Normal">a</span>: d
 <span id="L736" class="LineNr">736 </span>  ]
-<span id="L737" class="LineNr">737 </span>  trace-should-<span class="Normal">not</span>-contain [
-<span id="L738" class="LineNr">738 </span>  <span class="Conceal">¦</span> <span class="Normal">a</span>: b
-<span id="L739" class="LineNr">739 </span>  <span class="Conceal">¦</span> <span class="Normal">a</span>: d
-<span id="L740" class="LineNr">740 </span>  ]
-<span id="L741" class="LineNr">741 </span>]
-<span id="L742" class="LineNr">742 </span><span class="traceContains">+error: F - <a href='000organization.cc.html#L113'>main</a>: unexpected [d] in <a href='003trace.cc.html#L161'>trace</a> with label 'a'</span>
-<span id="L743" class="LineNr">743 </span>
-<span id="L744" class="LineNr">744 </span><span class="Delimiter">:(scenario trace_count_check)</span>
-<span id="L745" class="LineNr">745 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
-<span id="L746" class="LineNr">746 </span>  run [
-<span id="L747" class="LineNr">747 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L161'>trace</a> <span class="Constant">1</span><span class="Delimiter">,</span> [a]<span class="Delimiter">,</span> [foo]
-<span id="L748" class="LineNr">748 </span>  ]
-<span id="L749" class="LineNr">749 </span>  check-trace-count-<span class="Normal">for</span>-label <span class="Constant">1</span><span class="Delimiter">,</span> [a]
-<span id="L750" class="LineNr">750 </span>]
-<span id="L751" class="LineNr">751 </span><span class="Comment"># checks are inside scenario</span>
-<span id="L752" class="LineNr">752 </span>
-<span id="L753" class="LineNr">753 </span><span class="Delimiter">:(before &quot;End Primitive Recipe Declarations&quot;)</span>
-<span id="L754" class="LineNr">754 </span>CHECK_TRACE_COUNT_FOR_LABEL<span class="Delimiter">,</span>
-<span id="L755" class="LineNr">755 </span><span class="Delimiter">:(before &quot;End Primitive Recipe Numbers&quot;)</span>
-<span id="L756" class="LineNr">756 </span><a href='001help.cc.html#L221'>put</a><span class="Delimiter">(</span>Recipe_ordinal<span class="Delimiter">,</span> <span class="Constant">&quot;check-trace-count-for-label&quot;</span><span class="Delimiter">,</span> CHECK_TRACE_COUNT_FOR_LABEL<span class="Delimiter">);</span>
-<span id="L757" class="LineNr">757 </span><span class="Delimiter">:(before &quot;End Primitive Recipe Checks&quot;)</span>
-<span id="L758" class="LineNr">758 </span><span class="Normal">case</span> CHECK_TRACE_COUNT_FOR_LABEL: <span class="Delimiter">{</span>
-<span id="L759" class="LineNr">759 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">)</span> != <span class="Constant">2</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L760" class="LineNr">760 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'check-trace-count-for-label' requires exactly two ingredients, but got '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L737" class="LineNr">737 </span>]
+<span id="L738" class="LineNr">738 </span><span class="traceContains">+error: F - <a href='000organization.cc.html#L113'>main</a>: unexpected [d] in <a href='003trace.cc.html#L167'>trace</a> with label 'a'</span>
+<span id="L739" class="LineNr">739 </span>
+<span id="L740" class="LineNr">740 </span><span class="Delimiter">:(scenario trace_count_check)</span>
+<span id="L741" class="LineNr">741 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
+<span id="L742" class="LineNr">742 </span>  run [
+<span id="L743" class="LineNr">743 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L167'>trace</a> <span class="Constant">1</span><span class="Delimiter">,</span> [a]<span class="Delimiter">,</span> [foo]
+<span id="L744" class="LineNr">744 </span>  ]
+<span id="L745" class="LineNr">745 </span>  check-trace-count-<span class="Normal">for</span>-label <span class="Constant">1</span><span class="Delimiter">,</span> [a]
+<span id="L746" class="LineNr">746 </span>]
+<span id="L747" class="LineNr">747 </span><span class="Comment"># checks are inside scenario</span>
+<span id="L748" class="LineNr">748 </span>
+<span id="L749" class="LineNr">749 </span><span class="Delimiter">:(before &quot;End Primitive Recipe Declarations&quot;)</span>
+<span id="L750" class="LineNr">750 </span>CHECK_TRACE_COUNT_FOR_LABEL<span class="Delimiter">,</span>
+<span id="L751" class="LineNr">751 </span><span class="Delimiter">:(before &quot;End Primitive Recipe Numbers&quot;)</span>
+<span id="L752" class="LineNr">752 </span><a href='001help.cc.html#L221'>put</a><span class="Delimiter">(</span>Recipe_ordinal<span class="Delimiter">,</span> <span class="Constant">&quot;check-trace-count-for-label&quot;</span><span class="Delimiter">,</span> CHECK_TRACE_COUNT_FOR_LABEL<span class="Delimiter">);</span>
+<span id="L753" class="LineNr">753 </span><span class="Delimiter">:(before &quot;End Primitive Recipe Checks&quot;)</span>
+<span id="L754" class="LineNr">754 </span><span class="Normal">case</span> CHECK_TRACE_COUNT_FOR_LABEL: <span class="Delimiter">{</span>
+<span id="L755" class="LineNr">755 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">)</span> != <span class="Constant">2</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L756" class="LineNr">756 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'check-trace-count-for-label' requires exactly two ingredients, but got '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
+<span id="L757" class="LineNr">757 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
+<span id="L758" class="LineNr">758 </span>  <span class="Delimiter">}</span>
+<span id="L759" class="LineNr">759 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!is_mu_number<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">)))</span> <span class="Delimiter">{</span>
+<span id="L760" class="LineNr">760 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;first ingredient of 'check-trace-count-for-label' should be a number (count), but got '&quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>original_string &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L761" class="LineNr">761 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L762" class="LineNr">762 </span>  <span class="Delimiter">}</span>
-<span id="L763" class="LineNr">763 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!is_mu_number<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">)))</span> <span class="Delimiter">{</span>
-<span id="L764" class="LineNr">764 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;first ingredient of 'check-trace-count-for-label' should be a number (count), but got '&quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>original_string &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L763" class="LineNr">763 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!is_literal_text<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">1</span><span class="Delimiter">)))</span> <span class="Delimiter">{</span>
+<span id="L764" class="LineNr">764 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;second ingredient of 'check-trace-count-for-label' should be a literal string (label), but got '&quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">1</span><span class="Delimiter">).</span>original_string &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L765" class="LineNr">765 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L766" class="LineNr">766 </span>  <span class="Delimiter">}</span>
-<span id="L767" class="LineNr">767 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!is_literal_text<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">1</span><span class="Delimiter">)))</span> <span class="Delimiter">{</span>
-<span id="L768" class="LineNr">768 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;second ingredient of 'check-trace-count-for-label' should be a literal string (label), but got '&quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">1</span><span class="Delimiter">).</span>original_string &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
-<span id="L769" class="LineNr">769 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
-<span id="L770" class="LineNr">770 </span>  <span class="Delimiter">}</span>
-<span id="L771" class="LineNr">771 </span>  <span class="Identifier">break</span><span class="Delimiter">;</span>
-<span id="L772" class="LineNr">772 </span><span class="Delimiter">}</span>
-<span id="L773" class="LineNr">773 </span><span class="Delimiter">:(before &quot;End Primitive Recipe Implementations&quot;)</span>
-<span id="L774" class="LineNr">774 </span><span class="Normal">case</span> CHECK_TRACE_COUNT_FOR_LABEL: <span class="Delimiter">{</span>
-<span id="L775" class="LineNr">775 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!Passed<span class="Delimiter">)</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
-<span id="L776" class="LineNr">776 </span>  <span class="Normal">int</span> expected_count = ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">);</span>
-<span id="L777" class="LineNr">777 </span>  string label = <a href='026call.cc.html#L87'>current_instruction</a><span class="Delimiter">().</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">1</span><span class="Delimiter">).</span>name<span class="Delimiter">;</span>
-<span id="L778" class="LineNr">778 </span>  <span class="Normal">int</span> count = trace_count<span class="Delimiter">(</span>label<span class="Delimiter">);</span>
-<span id="L779" class="LineNr">779 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>count != expected_count<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L780" class="LineNr">780 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>!Hide_errors<span class="Delimiter">)</span> cerr &lt;&lt; <span class="cSpecial">'\n'</span><span class="Delimiter">;</span>
-<span id="L781" class="LineNr">781 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <span class="Constant">&quot;F - &quot;</span> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span><a href='026call.cc.html#L85'>current_recipe_name</a><span class="Delimiter">())</span> &lt;&lt; <span class="Constant">&quot;expected &quot;</span> &lt;&lt; expected_count &lt;&lt; <span class="Constant">&quot; lines in <a href='003trace.cc.html#L161'>trace</a> with label '&quot;</span> &lt;&lt; label &lt;&lt; <span class="Constant">&quot;' in <a href='003trace.cc.html#L161'>trace</a></span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
-<span id="L782" class="LineNr">782 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>!Hide_errors<span class="Delimiter">)</span> <a href='003trace.cc.html#L165'>DUMP</a><span class="Delimiter">(</span>label<span class="Delimiter">);</span>
-<span id="L783" class="LineNr">783 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>!Scenario_testing_scenario<span class="Delimiter">)</span> Passed = <span class="Constant">false</span><span class="Delimiter">;</span>
-<span id="L784" class="LineNr">784 </span>  <span class="Delimiter">}</span>
-<span id="L785" class="LineNr">785 </span>  <span class="Identifier">break</span><span class="Delimiter">;</span>
-<span id="L786" class="LineNr">786 </span><span class="Delimiter">}</span>
-<span id="L787" class="LineNr">787 </span>
-<span id="L788" class="LineNr">788 </span><span class="Delimiter">:(before &quot;End Primitive Recipe Declarations&quot;)</span>
-<span id="L789" class="LineNr">789 </span>CHECK_TRACE_COUNT_FOR_LABEL_GREATER_THAN<span class="Delimiter">,</span>
-<span id="L790" class="LineNr">790 </span><span class="Delimiter">:(before &quot;End Primitive Recipe Numbers&quot;)</span>
-<span id="L791" class="LineNr">791 </span><a href='001help.cc.html#L221'>put</a><span class="Delimiter">(</span>Recipe_ordinal<span class="Delimiter">,</span> <span class="Constant">&quot;check-trace-count-for-label-greater-than&quot;</span><span class="Delimiter">,</span> CHECK_TRACE_COUNT_FOR_LABEL_GREATER_THAN<span class="Delimiter">);</span>
-<span id="L792" class="LineNr">792 </span><span class="Delimiter">:(before &quot;End Primitive Recipe Checks&quot;)</span>
-<span id="L793" class="LineNr">793 </span><span class="Normal">case</span> CHECK_TRACE_COUNT_FOR_LABEL_GREATER_THAN: <span class="Delimiter">{</span>
-<span id="L794" class="LineNr">794 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">)</span> != <span class="Constant">2</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L795" class="LineNr">795 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'check-trace-count-for-label' requires exactly two ingredients, but got '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L767" class="LineNr">767 </span>  <span class="Identifier">break</span><span class="Delimiter">;</span>
+<span id="L768" class="LineNr">768 </span><span class="Delimiter">}</span>
+<span id="L769" class="LineNr">769 </span><span class="Delimiter">:(before &quot;End Primitive Recipe Implementations&quot;)</span>
+<span id="L770" class="LineNr">770 </span><span class="Normal">case</span> CHECK_TRACE_COUNT_FOR_LABEL: <span class="Delimiter">{</span>
+<span id="L771" class="LineNr">771 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!Passed<span class="Delimiter">)</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
+<span id="L772" class="LineNr">772 </span>  <span class="Normal">int</span> expected_count = ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">);</span>
+<span id="L773" class="LineNr">773 </span>  string label = <a href='026call.cc.html#L89'>current_instruction</a><span class="Delimiter">().</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">1</span><span class="Delimiter">).</span>name<span class="Delimiter">;</span>
+<span id="L774" class="LineNr">774 </span>  <span class="Normal">int</span> count = trace_count<span class="Delimiter">(</span>label<span class="Delimiter">);</span>
+<span id="L775" class="LineNr">775 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>count != expected_count<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L776" class="LineNr">776 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>!Hide_errors<span class="Delimiter">)</span> cerr &lt;&lt; <span class="cSpecial">'\n'</span><span class="Delimiter">;</span>
+<span id="L777" class="LineNr">777 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <span class="Constant">&quot;F - &quot;</span> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span><a href='026call.cc.html#L87'>current_recipe_name</a><span class="Delimiter">())</span> &lt;&lt; <span class="Constant">&quot;expected &quot;</span> &lt;&lt; expected_count &lt;&lt; <span class="Constant">&quot; lines in <a href='003trace.cc.html#L167'>trace</a> with label '&quot;</span> &lt;&lt; label &lt;&lt; <span class="Constant">&quot;' in <a href='003trace.cc.html#L167'>trace</a></span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
+<span id="L778" class="LineNr">778 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>!Hide_errors<span class="Delimiter">)</span> <a href='003trace.cc.html#L171'>DUMP</a><span class="Delimiter">(</span>label<span class="Delimiter">);</span>
+<span id="L779" class="LineNr">779 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>!Scenario_testing_scenario<span class="Delimiter">)</span> Passed = <span class="Constant">false</span><span class="Delimiter">;</span>
+<span id="L780" class="LineNr">780 </span>  <span class="Delimiter">}</span>
+<span id="L781" class="LineNr">781 </span>  <span class="Identifier">break</span><span class="Delimiter">;</span>
+<span id="L782" class="LineNr">782 </span><span class="Delimiter">}</span>
+<span id="L783" class="LineNr">783 </span>
+<span id="L784" class="LineNr">784 </span><span class="Delimiter">:(before &quot;End Primitive Recipe Declarations&quot;)</span>
+<span id="L785" class="LineNr">785 </span>CHECK_TRACE_COUNT_FOR_LABEL_GREATER_THAN<span class="Delimiter">,</span>
+<span id="L786" class="LineNr">786 </span><span class="Delimiter">:(before &quot;End Primitive Recipe Numbers&quot;)</span>
+<span id="L787" class="LineNr">787 </span><a href='001help.cc.html#L221'>put</a><span class="Delimiter">(</span>Recipe_ordinal<span class="Delimiter">,</span> <span class="Constant">&quot;check-trace-count-for-label-greater-than&quot;</span><span class="Delimiter">,</span> CHECK_TRACE_COUNT_FOR_LABEL_GREATER_THAN<span class="Delimiter">);</span>
+<span id="L788" class="LineNr">788 </span><span class="Delimiter">:(before &quot;End Primitive Recipe Checks&quot;)</span>
+<span id="L789" class="LineNr">789 </span><span class="Normal">case</span> CHECK_TRACE_COUNT_FOR_LABEL_GREATER_THAN: <span class="Delimiter">{</span>
+<span id="L790" class="LineNr">790 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">)</span> != <span class="Constant">2</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L791" class="LineNr">791 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'check-trace-count-for-label' requires exactly two ingredients, but got '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
+<span id="L792" class="LineNr">792 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
+<span id="L793" class="LineNr">793 </span>  <span class="Delimiter">}</span>
+<span id="L794" class="LineNr">794 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!is_mu_number<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">)))</span> <span class="Delimiter">{</span>
+<span id="L795" class="LineNr">795 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;first ingredient of 'check-trace-count-for-label' should be a number (count), but got '&quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>original_string &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L796" class="LineNr">796 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L797" class="LineNr">797 </span>  <span class="Delimiter">}</span>
-<span id="L798" class="LineNr">798 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!is_mu_number<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">)))</span> <span class="Delimiter">{</span>
-<span id="L799" class="LineNr">799 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;first ingredient of 'check-trace-count-for-label' should be a number (count), but got '&quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>original_string &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L798" class="LineNr">798 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!is_literal_text<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">1</span><span class="Delimiter">)))</span> <span class="Delimiter">{</span>
+<span id="L799" class="LineNr">799 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;second ingredient of 'check-trace-count-for-label' should be a literal string (label), but got '&quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">1</span><span class="Delimiter">).</span>original_string &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L800" class="LineNr">800 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L801" class="LineNr">801 </span>  <span class="Delimiter">}</span>
-<span id="L802" class="LineNr">802 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!is_literal_text<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">1</span><span class="Delimiter">)))</span> <span class="Delimiter">{</span>
-<span id="L803" class="LineNr">803 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;second ingredient of 'check-trace-count-for-label' should be a literal string (label), but got '&quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">1</span><span class="Delimiter">).</span>original_string &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
-<span id="L804" class="LineNr">804 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
-<span id="L805" class="LineNr">805 </span>  <span class="Delimiter">}</span>
-<span id="L806" class="LineNr">806 </span>  <span class="Identifier">break</span><span class="Delimiter">;</span>
-<span id="L807" class="LineNr">807 </span><span class="Delimiter">}</span>
-<span id="L808" class="LineNr">808 </span><span class="Delimiter">:(before &quot;End Primitive Recipe Implementations&quot;)</span>
-<span id="L809" class="LineNr">809 </span><span class="Normal">case</span> CHECK_TRACE_COUNT_FOR_LABEL_GREATER_THAN: <span class="Delimiter">{</span>
-<span id="L810" class="LineNr">810 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!Passed<span class="Delimiter">)</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
-<span id="L811" class="LineNr">811 </span>  <span class="Normal">int</span> expected_count = ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">);</span>
-<span id="L812" class="LineNr">812 </span>  string label = <a href='026call.cc.html#L87'>current_instruction</a><span class="Delimiter">().</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">1</span><span class="Delimiter">).</span>name<span class="Delimiter">;</span>
-<span id="L813" class="LineNr">813 </span>  <span class="Normal">int</span> count = trace_count<span class="Delimiter">(</span>label<span class="Delimiter">);</span>
-<span id="L814" class="LineNr">814 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>count &lt;= expected_count<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L815" class="LineNr">815 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>!Hide_errors<span class="Delimiter">)</span> cerr &lt;&lt; <span class="cSpecial">'\n'</span><span class="Delimiter">;</span>
-<span id="L816" class="LineNr">816 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span><a href='026call.cc.html#L85'>current_recipe_name</a><span class="Delimiter">())</span> &lt;&lt; <span class="Constant">&quot;expected more than &quot;</span> &lt;&lt; expected_count &lt;&lt; <span class="Constant">&quot; lines in <a href='003trace.cc.html#L161'>trace</a> with label '&quot;</span> &lt;&lt; label &lt;&lt; <span class="Constant">&quot;' in <a href='003trace.cc.html#L161'>trace</a></span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
-<span id="L817" class="LineNr">817 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>!Hide_errors<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L818" class="LineNr">818 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> cerr &lt;&lt; <span class="Constant">&quot;trace contents:</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span><span class="Delimiter">;</span>
-<span id="L819" class="LineNr">819 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L165'>DUMP</a><span class="Delimiter">(</span>label<span class="Delimiter">);</span>
-<span id="L820" class="LineNr">820 </span>  <span class="Conceal">¦</span> <span class="Delimiter">}</span>
-<span id="L821" class="LineNr">821 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>!Scenario_testing_scenario<span class="Delimiter">)</span> Passed = <span class="Constant">false</span><span class="Delimiter">;</span>
-<span id="L822" class="LineNr">822 </span>  <span class="Delimiter">}</span>
-<span id="L823" class="LineNr">823 </span>  <span class="Identifier">break</span><span class="Delimiter">;</span>
-<span id="L824" class="LineNr">824 </span><span class="Delimiter">}</span>
-<span id="L825" class="LineNr">825 </span>
-<span id="L826" class="LineNr">826 </span><span class="Delimiter">:(before &quot;End Primitive Recipe Declarations&quot;)</span>
-<span id="L827" class="LineNr">827 </span>CHECK_TRACE_COUNT_FOR_LABEL_LESSER_THAN<span class="Delimiter">,</span>
-<span id="L828" class="LineNr">828 </span><span class="Delimiter">:(before &quot;End Primitive Recipe Numbers&quot;)</span>
-<span id="L829" class="LineNr">829 </span><a href='001help.cc.html#L221'>put</a><span class="Delimiter">(</span>Recipe_ordinal<span class="Delimiter">,</span> <span class="Constant">&quot;check-trace-count-for-label-lesser-than&quot;</span><span class="Delimiter">,</span> CHECK_TRACE_COUNT_FOR_LABEL_LESSER_THAN<span class="Delimiter">);</span>
-<span id="L830" class="LineNr">830 </span><span class="Delimiter">:(before &quot;End Primitive Recipe Checks&quot;)</span>
-<span id="L831" class="LineNr">831 </span><span class="Normal">case</span> CHECK_TRACE_COUNT_FOR_LABEL_LESSER_THAN: <span class="Delimiter">{</span>
-<span id="L832" class="LineNr">832 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">)</span> != <span class="Constant">2</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L833" class="LineNr">833 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'check-trace-count-for-label' requires exactly two ingredients, but got '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L802" class="LineNr">802 </span>  <span class="Identifier">break</span><span class="Delimiter">;</span>
+<span id="L803" class="LineNr">803 </span><span class="Delimiter">}</span>
+<span id="L804" class="LineNr">804 </span><span class="Delimiter">:(before &quot;End Primitive Recipe Implementations&quot;)</span>
+<span id="L805" class="LineNr">805 </span><span class="Normal">case</span> CHECK_TRACE_COUNT_FOR_LABEL_GREATER_THAN: <span class="Delimiter">{</span>
+<span id="L806" class="LineNr">806 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!Passed<span class="Delimiter">)</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
+<span id="L807" class="LineNr">807 </span>  <span class="Normal">int</span> expected_count = ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">);</span>
+<span id="L808" class="LineNr">808 </span>  string label = <a href='026call.cc.html#L89'>current_instruction</a><span class="Delimiter">().</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">1</span><span class="Delimiter">).</span>name<span class="Delimiter">;</span>
+<span id="L809" class="LineNr">809 </span>  <span class="Normal">int</span> count = trace_count<span class="Delimiter">(</span>label<span class="Delimiter">);</span>
+<span id="L810" class="LineNr">810 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>count &lt;= expected_count<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L811" class="LineNr">811 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>!Hide_errors<span class="Delimiter">)</span> cerr &lt;&lt; <span class="cSpecial">'\n'</span><span class="Delimiter">;</span>
+<span id="L812" class="LineNr">812 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span><a href='026call.cc.html#L87'>current_recipe_name</a><span class="Delimiter">())</span> &lt;&lt; <span class="Constant">&quot;expected more than &quot;</span> &lt;&lt; expected_count &lt;&lt; <span class="Constant">&quot; lines in <a href='003trace.cc.html#L167'>trace</a> with label '&quot;</span> &lt;&lt; label &lt;&lt; <span class="Constant">&quot;' in <a href='003trace.cc.html#L167'>trace</a></span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
+<span id="L813" class="LineNr">813 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>!Hide_errors<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L814" class="LineNr">814 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> cerr &lt;&lt; <span class="Constant">&quot;trace contents:</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span><span class="Delimiter">;</span>
+<span id="L815" class="LineNr">815 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L171'>DUMP</a><span class="Delimiter">(</span>label<span class="Delimiter">);</span>
+<span id="L816" class="LineNr">816 </span>  <span class="Conceal">¦</span> <span class="Delimiter">}</span>
+<span id="L817" class="LineNr">817 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>!Scenario_testing_scenario<span class="Delimiter">)</span> Passed = <span class="Constant">false</span><span class="Delimiter">;</span>
+<span id="L818" class="LineNr">818 </span>  <span class="Delimiter">}</span>
+<span id="L819" class="LineNr">819 </span>  <span class="Identifier">break</span><span class="Delimiter">;</span>
+<span id="L820" class="LineNr">820 </span><span class="Delimiter">}</span>
+<span id="L821" class="LineNr">821 </span>
+<span id="L822" class="LineNr">822 </span><span class="Delimiter">:(before &quot;End Primitive Recipe Declarations&quot;)</span>
+<span id="L823" class="LineNr">823 </span>CHECK_TRACE_COUNT_FOR_LABEL_LESSER_THAN<span class="Delimiter">,</span>
+<span id="L824" class="LineNr">824 </span><span class="Delimiter">:(before &quot;End Primitive Recipe Numbers&quot;)</span>
+<span id="L825" class="LineNr">825 </span><a href='001help.cc.html#L221'>put</a><span class="Delimiter">(</span>Recipe_ordinal<span class="Delimiter">,</span> <span class="Constant">&quot;check-trace-count-for-label-lesser-than&quot;</span><span class="Delimiter">,</span> CHECK_TRACE_COUNT_FOR_LABEL_LESSER_THAN<span class="Delimiter">);</span>
+<span id="L826" class="LineNr">826 </span><span class="Delimiter">:(before &quot;End Primitive Recipe Checks&quot;)</span>
+<span id="L827" class="LineNr">827 </span><span class="Normal">case</span> CHECK_TRACE_COUNT_FOR_LABEL_LESSER_THAN: <span class="Delimiter">{</span>
+<span id="L828" class="LineNr">828 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">)</span> != <span class="Constant">2</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L829" class="LineNr">829 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'check-trace-count-for-label' requires exactly two ingredients, but got '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
+<span id="L830" class="LineNr">830 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
+<span id="L831" class="LineNr">831 </span>  <span class="Delimiter">}</span>
+<span id="L832" class="LineNr">832 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!is_mu_number<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">)))</span> <span class="Delimiter">{</span>
+<span id="L833" class="LineNr">833 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;first ingredient of 'check-trace-count-for-label' should be a number (count), but got '&quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>original_string &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L834" class="LineNr">834 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L835" class="LineNr">835 </span>  <span class="Delimiter">}</span>
-<span id="L836" class="LineNr">836 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!is_mu_number<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">)))</span> <span class="Delimiter">{</span>
-<span id="L837" class="LineNr">837 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;first ingredient of 'check-trace-count-for-label' should be a number (count), but got '&quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>original_string &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L836" class="LineNr">836 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!is_literal_text<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">1</span><span class="Delimiter">)))</span> <span class="Delimiter">{</span>
+<span id="L837" class="LineNr">837 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;second ingredient of 'check-trace-count-for-label' should be a literal string (label), but got '&quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">1</span><span class="Delimiter">).</span>original_string &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L838" class="LineNr">838 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L839" class="LineNr">839 </span>  <span class="Delimiter">}</span>
-<span id="L840" class="LineNr">840 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!is_literal_text<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">1</span><span class="Delimiter">)))</span> <span class="Delimiter">{</span>
-<span id="L841" class="LineNr">841 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;second ingredient of 'check-trace-count-for-label' should be a literal string (label), but got '&quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">1</span><span class="Delimiter">).</span>original_string &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
-<span id="L842" class="LineNr">842 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
-<span id="L843" class="LineNr">843 </span>  <span class="Delimiter">}</span>
-<span id="L844" class="LineNr">844 </span>  <span class="Identifier">break</span><span class="Delimiter">;</span>
-<span id="L845" class="LineNr">845 </span><span class="Delimiter">}</span>
-<span id="L846" class="LineNr">846 </span><span class="Delimiter">:(before &quot;End Primitive Recipe Implementations&quot;)</span>
-<span id="L847" class="LineNr">847 </span><span class="Normal">case</span> CHECK_TRACE_COUNT_FOR_LABEL_LESSER_THAN: <span class="Delimiter">{</span>
-<span id="L848" class="LineNr">848 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!Passed<span class="Delimiter">)</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
-<span id="L849" class="LineNr">849 </span>  <span class="Normal">int</span> expected_count = ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">);</span>
-<span id="L850" class="LineNr">850 </span>  string label = <a href='026call.cc.html#L87'>current_instruction</a><span class="Delimiter">().</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">1</span><span class="Delimiter">).</span>name<span class="Delimiter">;</span>
-<span id="L851" class="LineNr">851 </span>  <span class="Normal">int</span> count = trace_count<span class="Delimiter">(</span>label<span class="Delimiter">);</span>
-<span id="L852" class="LineNr">852 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>count &gt;= expected_count<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L853" class="LineNr">853 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>!Hide_errors<span class="Delimiter">)</span> cerr &lt;&lt; <span class="cSpecial">'\n'</span><span class="Delimiter">;</span>
-<span id="L854" class="LineNr">854 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <span class="Constant">&quot;F - &quot;</span> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span><a href='026call.cc.html#L85'>current_recipe_name</a><span class="Delimiter">())</span> &lt;&lt; <span class="Constant">&quot;expected less than &quot;</span> &lt;&lt; expected_count &lt;&lt; <span class="Constant">&quot; lines in <a href='003trace.cc.html#L161'>trace</a> with label '&quot;</span> &lt;&lt; label &lt;&lt; <span class="Constant">&quot;' in <a href='003trace.cc.html#L161'>trace</a></span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
-<span id="L855" class="LineNr">855 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>!Hide_errors<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L856" class="LineNr">856 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> cerr &lt;&lt; <span class="Constant">&quot;trace contents:</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span><span class="Delimiter">;</span>
-<span id="L857" class="LineNr">857 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L165'>DUMP</a><span class="Delimiter">(</span>label<span class="Delimiter">);</span>
-<span id="L858" class="LineNr">858 </span>  <span class="Conceal">¦</span> <span class="Delimiter">}</span>
-<span id="L859" class="LineNr">859 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>!Scenario_testing_scenario<span class="Delimiter">)</span> Passed = <span class="Constant">false</span><span class="Delimiter">;</span>
-<span id="L860" class="LineNr">860 </span>  <span class="Delimiter">}</span>
-<span id="L861" class="LineNr">861 </span>  <span class="Identifier">break</span><span class="Delimiter">;</span>
-<span id="L862" class="LineNr">862 </span><span class="Delimiter">}</span>
-<span id="L863" class="LineNr">863 </span>
-<span id="L864" class="LineNr">864 </span><span class="Delimiter">:(scenario trace_count_check_2)</span>
-<span id="L865" class="LineNr">865 </span><span class="Special">% Scenario_testing_scenario = true;</span>
-<span id="L866" class="LineNr">866 </span><span class="Special">% Hide_errors = true;</span>
-<span id="L867" class="LineNr">867 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
-<span id="L868" class="LineNr">868 </span>  run [
-<span id="L869" class="LineNr">869 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L161'>trace</a> <span class="Constant">1</span><span class="Delimiter">,</span> [a]<span class="Delimiter">,</span> [foo]
-<span id="L870" class="LineNr">870 </span>  ]
-<span id="L871" class="LineNr">871 </span>  check-trace-count-<span class="Normal">for</span>-label <span class="Constant">2</span><span class="Delimiter">,</span> [a]
-<span id="L872" class="LineNr">872 </span>]
-<span id="L873" class="LineNr">873 </span><span class="traceContains">+error: F - <a href='000organization.cc.html#L113'>main</a>: expected 2 lines in <a href='003trace.cc.html#L161'>trace</a> with label 'a' in <a href='003trace.cc.html#L161'>trace</a></span>
-<span id="L874" class="LineNr">874 </span>
-<span id="L875" class="LineNr">875 </span><span class="Comment">//: Minor detail: ignore 'system' calls in scenarios, since anything we do</span>
-<span id="L876" class="LineNr">876 </span><span class="Comment">//: with them is by definition impossible to test through Mu.</span>
-<span id="L877" class="LineNr">877 </span><span class="Delimiter">:(after &quot;case _SYSTEM:&quot;)</span>
-<span id="L878" class="LineNr">878 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>Current_scenario<span class="Delimiter">)</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
-<span id="L879" class="LineNr">879 </span>
-<span id="L880" class="LineNr">880 </span><span class="SalientComment">//:: Warn if people use '_' manually in recipe names. They're reserved for internal use.</span>
-<span id="L881" class="LineNr">881 </span>
-<span id="L882" class="LineNr">882 </span><span class="Delimiter">:(scenario recipe_name_with_underscore)</span>
-<span id="L883" class="LineNr">883 </span><span class="Special">% Hide_errors = true;</span>
-<span id="L884" class="LineNr">884 </span><span class="muRecipe">def</span> foo_bar [
-<span id="L885" class="LineNr">885 </span>]
-<span id="L886" class="LineNr">886 </span><span class="traceContains">+error: foo_bar: don't create recipes with '_' in the name</span>
-<span id="L887" class="LineNr">887 </span>
-<span id="L888" class="LineNr">888 </span><span class="Delimiter">:(before &quot;End <a href='010vm.cc.html#L19'>recipe</a> Fields&quot;)</span>
-<span id="L889" class="LineNr">889 </span><span class="Normal">bool</span> is_autogenerated<span class="Delimiter">;</span>
-<span id="L890" class="LineNr">890 </span><span class="Delimiter">:(before &quot;End <a href='010vm.cc.html#L19'>recipe</a> Constructor&quot;)</span>
-<span id="L891" class="LineNr">891 </span>is_autogenerated = <span class="Constant">false</span><span class="Delimiter">;</span>
-<span id="L892" class="LineNr">892 </span><span class="Delimiter">:(code)</span>
-<span id="L893" class="LineNr">893 </span><span class="Normal">void</span> mark_autogenerated<span class="Delimiter">(</span><a href='010vm.cc.html#L14'>recipe_ordinal</a> r<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L894" class="LineNr">894 </span>  get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>is_autogenerated = <span class="Constant">true</span><span class="Delimiter">;</span>
-<span id="L895" class="LineNr">895 </span><span class="Delimiter">}</span>
-<span id="L896" class="LineNr">896 </span>
-<span id="L897" class="LineNr">897 </span><span class="Delimiter">:(after &quot;void transform_all()&quot;)</span>
-<span id="L898" class="LineNr">898 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span>map&lt;recipe_ordinal<span class="Delimiter">,</span> recipe&gt;::iterator p = Recipe<span class="Delimiter">.</span>begin<span class="Delimiter">();</span>  p != Recipe<span class="Delimiter">.</span><a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>  ++p<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L899" class="LineNr">899 </span>  <span class="Conceal">¦</span> <span class="Normal">const</span> recipe&amp; r = p<span class="Delimiter">-&gt;</span>second<span class="Delimiter">;</span>
-<span id="L900" class="LineNr">900 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>r<span class="Delimiter">.</span>name<span class="Delimiter">.</span>find<span class="Delimiter">(</span><span class="Constant">'_'</span><span class="Delimiter">)</span> == string::npos<span class="Delimiter">)</span> <span class="Identifier">continue</span><span class="Delimiter">;</span>
-<span id="L901" class="LineNr">901 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>r<span class="Delimiter">.</span>is_autogenerated<span class="Delimiter">)</span> <span class="Identifier">continue</span><span class="Delimiter">;</span>  <span class="Comment">// created by previous call to transform_all()</span>
-<span id="L902" class="LineNr">902 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; r<span class="Delimiter">.</span>name &lt;&lt; <span class="Constant">&quot;: don't create recipes with '_' in the name</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; end<span class="Delimiter">();</span>
-<span id="L903" class="LineNr">903 </span>  <span class="Delimiter">}</span>
-<span id="L904" class="LineNr">904 </span>
-<span id="L905" class="LineNr">905 </span><span class="SalientComment">//:: Helpers</span>
-<span id="L906" class="LineNr">906 </span>
-<span id="L907" class="LineNr">907 </span><span class="Delimiter">:(code)</span>
-<span id="L908" class="LineNr">908 </span><span class="Comment">// just for the scenarios running scenarios in C++ layers</span>
-<span id="L909" class="LineNr">909 </span><span class="Normal">void</span> run_mu_scenario<span class="Delimiter">(</span><span class="Normal">const</span> string&amp; form<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L910" class="LineNr">910 </span>  Scenario_names<span class="Delimiter">.</span><a href='050scenario.cc.html#L60'>clear</a><span class="Delimiter">();</span>
-<span id="L911" class="LineNr">911 </span>  istringstream in<span class="Delimiter">(</span>form<span class="Delimiter">);</span>
-<span id="L912" class="LineNr">912 </span>  in &gt;&gt; std::noskipws<span class="Delimiter">;</span>
-<span id="L913" class="LineNr">913 </span>  <a href='011load.cc.html#L209'>skip_whitespace_and_comments</a><span class="Delimiter">(</span>in<span class="Delimiter">);</span>
-<span id="L914" class="LineNr">914 </span>  string _scenario = <a href='011load.cc.html#L167'>next_word</a><span class="Delimiter">(</span>in<span class="Delimiter">);</span>
-<span id="L915" class="LineNr">915 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>_scenario<span class="Delimiter">.</span>empty<span class="Delimiter">())</span> <span class="Delimiter">{</span>
-<span id="L916" class="LineNr">916 </span>  <span class="Conceal">¦</span> assert<span class="Delimiter">(</span>!has_data<span class="Delimiter">(</span>in<span class="Delimiter">));</span>
-<span id="L917" class="LineNr">917 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <span class="Constant">&quot;no <a href='050scenario.cc.html#L57'>scenario</a> in string passed into run_mu_scenario()</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
-<span id="L918" class="LineNr">918 </span>  <span class="Conceal">¦</span> <span class="Identifier">return</span><span class="Delimiter">;</span>
-<span id="L919" class="LineNr">919 </span>  <span class="Delimiter">}</span>
-<span id="L920" class="LineNr">920 </span>  assert<span class="Delimiter">(</span>_scenario == <span class="Constant">&quot;scenario&quot;</span><span class="Delimiter">);</span>
-<span id="L921" class="LineNr">921 </span>  <a href='050scenario.cc.html#L57'>scenario</a> s = <a href='050scenario.cc.html#L91'>parse_scenario</a><span class="Delimiter">(</span>in<span class="Delimiter">);</span>
-<span id="L922" class="LineNr">922 </span>  run_mu_scenario<span class="Delimiter">(</span>s<span class="Delimiter">);</span>
-<span id="L923" class="LineNr">923 </span><span class="Delimiter">}</span>
+<span id="L840" class="LineNr">840 </span>  <span class="Identifier">break</span><span class="Delimiter">;</span>
+<span id="L841" class="LineNr">841 </span><span class="Delimiter">}</span>
+<span id="L842" class="LineNr">842 </span><span class="Delimiter">:(before &quot;End Primitive Recipe Implementations&quot;)</span>
+<span id="L843" class="LineNr">843 </span><span class="Normal">case</span> CHECK_TRACE_COUNT_FOR_LABEL_LESSER_THAN: <span class="Delimiter">{</span>
+<span id="L844" class="LineNr">844 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!Passed<span class="Delimiter">)</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
+<span id="L845" class="LineNr">845 </span>  <span class="Normal">int</span> expected_count = ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">);</span>
+<span id="L846" class="LineNr">846 </span>  string label = <a href='026call.cc.html#L89'>current_instruction</a><span class="Delimiter">().</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">1</span><span class="Delimiter">).</span>name<span class="Delimiter">;</span>
+<span id="L847" class="LineNr">847 </span>  <span class="Normal">int</span> count = trace_count<span class="Delimiter">(</span>label<span class="Delimiter">);</span>
+<span id="L848" class="LineNr">848 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>count &gt;= expected_count<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L849" class="LineNr">849 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>!Hide_errors<span class="Delimiter">)</span> cerr &lt;&lt; <span class="cSpecial">'\n'</span><span class="Delimiter">;</span>
+<span id="L850" class="LineNr">850 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <span class="Constant">&quot;F - &quot;</span> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span><a href='026call.cc.html#L87'>current_recipe_name</a><span class="Delimiter">())</span> &lt;&lt; <span class="Constant">&quot;expected less than &quot;</span> &lt;&lt; expected_count &lt;&lt; <span class="Constant">&quot; lines in <a href='003trace.cc.html#L167'>trace</a> with label '&quot;</span> &lt;&lt; label &lt;&lt; <span class="Constant">&quot;' in <a href='003trace.cc.html#L167'>trace</a></span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
+<span id="L851" class="LineNr">851 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>!Hide_errors<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L852" class="LineNr">852 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> cerr &lt;&lt; <span class="Constant">&quot;trace contents:</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span><span class="Delimiter">;</span>
+<span id="L853" class="LineNr">853 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L171'>DUMP</a><span class="Delimiter">(</span>label<span class="Delimiter">);</span>
+<span id="L854" class="LineNr">854 </span>  <span class="Conceal">¦</span> <span class="Delimiter">}</span>
+<span id="L855" class="LineNr">855 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>!Scenario_testing_scenario<span class="Delimiter">)</span> Passed = <span class="Constant">false</span><span class="Delimiter">;</span>
+<span id="L856" class="LineNr">856 </span>  <span class="Delimiter">}</span>
+<span id="L857" class="LineNr">857 </span>  <span class="Identifier">break</span><span class="Delimiter">;</span>
+<span id="L858" class="LineNr">858 </span><span class="Delimiter">}</span>
+<span id="L859" class="LineNr">859 </span>
+<span id="L860" class="LineNr">860 </span><span class="Delimiter">:(scenario trace_count_check_2)</span>
+<span id="L861" class="LineNr">861 </span><span class="Special">% Scenario_testing_scenario = true;</span>
+<span id="L862" class="LineNr">862 </span><span class="Special">% Hide_errors = true;</span>
+<span id="L863" class="LineNr">863 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
+<span id="L864" class="LineNr">864 </span>  run [
+<span id="L865" class="LineNr">865 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L167'>trace</a> <span class="Constant">1</span><span class="Delimiter">,</span> [a]<span class="Delimiter">,</span> [foo]
+<span id="L866" class="LineNr">866 </span>  ]
+<span id="L867" class="LineNr">867 </span>  check-trace-count-<span class="Normal">for</span>-label <span class="Constant">2</span><span class="Delimiter">,</span> [a]
+<span id="L868" class="LineNr">868 </span>]
+<span id="L869" class="LineNr">869 </span><span class="traceContains">+error: F - <a href='000organization.cc.html#L113'>main</a>: expected 2 lines in <a href='003trace.cc.html#L167'>trace</a> with label 'a' in <a href='003trace.cc.html#L167'>trace</a></span>
+<span id="L870" class="LineNr">870 </span>
+<span id="L871" class="LineNr">871 </span><span class="Comment">//: Minor detail: ignore 'system' calls in scenarios, since anything we do</span>
+<span id="L872" class="LineNr">872 </span><span class="Comment">//: with them is by definition impossible to test through Mu.</span>
+<span id="L873" class="LineNr">873 </span><span class="Delimiter">:(after &quot;case _SYSTEM:&quot;)</span>
+<span id="L874" class="LineNr">874 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>Current_scenario<span class="Delimiter">)</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
+<span id="L875" class="LineNr">875 </span>
+<span id="L876" class="LineNr">876 </span><span class="SalientComment">//:: Warn if people use '_' manually in recipe names. They're reserved for internal use.</span>
+<span id="L877" class="LineNr">877 </span>
+<span id="L878" class="LineNr">878 </span><span class="Delimiter">:(scenario recipe_name_with_underscore)</span>
+<span id="L879" class="LineNr">879 </span><span class="Special">% Hide_errors = true;</span>
+<span id="L880" class="LineNr">880 </span><span class="muRecipe">def</span> foo_bar [
+<span id="L881" class="LineNr">881 </span>]
+<span id="L882" class="LineNr">882 </span><span class="traceContains">+error: foo_bar: don't create recipes with '_' in the name</span>
+<span id="L883" class="LineNr">883 </span>
+<span id="L884" class="LineNr">884 </span><span class="Delimiter">:(before &quot;End <a href='010vm.cc.html#L19'>recipe</a> Fields&quot;)</span>
+<span id="L885" class="LineNr">885 </span><span class="Normal">bool</span> is_autogenerated<span class="Delimiter">;</span>
+<span id="L886" class="LineNr">886 </span><span class="Delimiter">:(before &quot;End <a href='010vm.cc.html#L19'>recipe</a> Constructor&quot;)</span>
+<span id="L887" class="LineNr">887 </span>is_autogenerated = <span class="Constant">false</span><span class="Delimiter">;</span>
+<span id="L888" class="LineNr">888 </span><span class="Delimiter">:(code)</span>
+<span id="L889" class="LineNr">889 </span><span class="Normal">void</span> mark_autogenerated<span class="Delimiter">(</span><a href='010vm.cc.html#L14'>recipe_ordinal</a> r<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L890" class="LineNr">890 </span>  get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>is_autogenerated = <span class="Constant">true</span><span class="Delimiter">;</span>
+<span id="L891" class="LineNr">891 </span><span class="Delimiter">}</span>
+<span id="L892" class="LineNr">892 </span>
+<span id="L893" class="LineNr">893 </span><span class="Delimiter">:(after &quot;void transform_all()&quot;)</span>
+<span id="L894" class="LineNr">894 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span>map&lt;recipe_ordinal<span class="Delimiter">,</span> recipe&gt;::iterator p = Recipe<span class="Delimiter">.</span>begin<span class="Delimiter">();</span>  p != Recipe<span class="Delimiter">.</span><a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>  ++p<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L895" class="LineNr">895 </span>  <span class="Conceal">¦</span> <span class="Normal">const</span> recipe&amp; r = p<span class="Delimiter">-&gt;</span>second<span class="Delimiter">;</span>
+<span id="L896" class="LineNr">896 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>r<span class="Delimiter">.</span>name<span class="Delimiter">.</span>find<span class="Delimiter">(</span><span class="Constant">'_'</span><span class="Delimiter">)</span> == string::npos<span class="Delimiter">)</span> <span class="Identifier">continue</span><span class="Delimiter">;</span>
+<span id="L897" class="LineNr">897 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>r<span class="Delimiter">.</span>is_autogenerated<span class="Delimiter">)</span> <span class="Identifier">continue</span><span class="Delimiter">;</span>  <span class="Comment">// created by previous call to transform_all()</span>
+<span id="L898" class="LineNr">898 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; r<span class="Delimiter">.</span>name &lt;&lt; <span class="Constant">&quot;: don't create recipes with '_' in the name</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; end<span class="Delimiter">();</span>
+<span id="L899" class="LineNr">899 </span>  <span class="Delimiter">}</span>
+<span id="L900" class="LineNr">900 </span>
+<span id="L901" class="LineNr">901 </span><span class="SalientComment">//:: Helpers</span>
+<span id="L902" class="LineNr">902 </span>
+<span id="L903" class="LineNr">903 </span><span class="Delimiter">:(code)</span>
+<span id="L904" class="LineNr">904 </span><span class="Comment">// just for the scenarios running scenarios in C++ layers</span>
+<span id="L905" class="LineNr">905 </span><span class="Normal">void</span> run_mu_scenario<span class="Delimiter">(</span><span class="Normal">const</span> string&amp; form<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L906" class="LineNr">906 </span>  Scenario_names<span class="Delimiter">.</span><a href='050scenario.cc.html#L60'>clear</a><span class="Delimiter">();</span>
+<span id="L907" class="LineNr">907 </span>  istringstream in<span class="Delimiter">(</span>form<span class="Delimiter">);</span>
+<span id="L908" class="LineNr">908 </span>  in &gt;&gt; std::noskipws<span class="Delimiter">;</span>
+<span id="L909" class="LineNr">909 </span>  <a href='011load.cc.html#L209'>skip_whitespace_and_comments</a><span class="Delimiter">(</span>in<span class="Delimiter">);</span>
+<span id="L910" class="LineNr">910 </span>  string _scenario = <a href='011load.cc.html#L167'>next_word</a><span class="Delimiter">(</span>in<span class="Delimiter">);</span>
+<span id="L911" class="LineNr">911 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>_scenario<span class="Delimiter">.</span>empty<span class="Delimiter">())</span> <span class="Delimiter">{</span>
+<span id="L912" class="LineNr">912 </span>  <span class="Conceal">¦</span> assert<span class="Delimiter">(</span>!has_data<span class="Delimiter">(</span>in<span class="Delimiter">));</span>
+<span id="L913" class="LineNr">913 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <span class="Constant">&quot;no <a href='050scenario.cc.html#L57'>scenario</a> in string passed into run_mu_scenario()</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
+<span id="L914" class="LineNr">914 </span>  <span class="Conceal">¦</span> <span class="Identifier">return</span><span class="Delimiter">;</span>
+<span id="L915" class="LineNr">915 </span>  <span class="Delimiter">}</span>
+<span id="L916" class="LineNr">916 </span>  assert<span class="Delimiter">(</span>_scenario == <span class="Constant">&quot;scenario&quot;</span><span class="Delimiter">);</span>
+<span id="L917" class="LineNr">917 </span>  <a href='050scenario.cc.html#L57'>scenario</a> s = <a href='050scenario.cc.html#L91'>parse_scenario</a><span class="Delimiter">(</span>in<span class="Delimiter">);</span>
+<span id="L918" class="LineNr">918 </span>  run_mu_scenario<span class="Delimiter">(</span>s<span class="Delimiter">);</span>
+<span id="L919" class="LineNr">919 </span><span class="Delimiter">}</span>
 </pre>
 </body>
 </html>
diff --git a/html/052tangle.cc.html b/html/052tangle.cc.html
index b3ac5808..91d1ddf8 100644
--- a/html/052tangle.cc.html
+++ b/html/052tangle.cc.html
@@ -108,30 +108,30 @@ if ('onhashchange' in window) {
 <span id="L44" class="LineNr"> 44 </span>  string label = <a href='011load.cc.html#L167'>next_word</a><span class="Delimiter">(</span>in<span class="Delimiter">);</span>
 <span id="L45" class="LineNr"> 45 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>label<span class="Delimiter">.</span>empty<span class="Delimiter">())</span> <span class="Delimiter">{</span>
 <span id="L46" class="LineNr"> 46 </span>  <span class="Conceal">¦</span> assert<span class="Delimiter">(</span>!has_data<span class="Delimiter">(</span>in<span class="Delimiter">));</span>
-<span id="L47" class="LineNr"> 47 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <span class="Constant">&quot;incomplete 'before' block at <a href='003trace.cc.html#L197'>end</a> of file</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L47" class="LineNr"> 47 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <span class="Constant">&quot;incomplete 'before' block at <a href='003trace.cc.html#L203'>end</a> of file</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L48" class="LineNr"> 48 </span>  <span class="Conceal">¦</span> <span class="Identifier">return</span> result<span class="Delimiter">;</span>
 <span id="L49" class="LineNr"> 49 </span>  <span class="Delimiter">}</span>
 <span id="L50" class="LineNr"> 50 </span>  <a href='010vm.cc.html#L19'>recipe</a> tmp<span class="Delimiter">;</span>
 <span id="L51" class="LineNr"> 51 </span>  <a href='011load.cc.html#L81'>slurp_body</a><span class="Delimiter">(</span>in<span class="Delimiter">,</span> tmp<span class="Delimiter">);</span>
 <span id="L52" class="LineNr"> 52 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span><a href='052tangle.cc.html#L13'>is_waypoint</a><span class="Delimiter">(</span>label<span class="Delimiter">))</span>
-<span id="L53" class="LineNr"> 53 </span>  <span class="Conceal">¦</span> Before_fragments[label]<span class="Delimiter">.</span>steps<span class="Delimiter">.</span>insert<span class="Delimiter">(</span>Before_fragments[label]<span class="Delimiter">.</span>steps<span class="Delimiter">.</span><a href='003trace.cc.html#L197'>end</a><span class="Delimiter">(),</span> tmp<span class="Delimiter">.</span>steps<span class="Delimiter">.</span>begin<span class="Delimiter">(),</span> tmp<span class="Delimiter">.</span>steps<span class="Delimiter">.</span><a href='003trace.cc.html#L197'>end</a><span class="Delimiter">());</span>
+<span id="L53" class="LineNr"> 53 </span>  <span class="Conceal">¦</span> Before_fragments[label]<span class="Delimiter">.</span>steps<span class="Delimiter">.</span>insert<span class="Delimiter">(</span>Before_fragments[label]<span class="Delimiter">.</span>steps<span class="Delimiter">.</span><a href='003trace.cc.html#L203'>end</a><span class="Delimiter">(),</span> tmp<span class="Delimiter">.</span>steps<span class="Delimiter">.</span>begin<span class="Delimiter">(),</span> tmp<span class="Delimiter">.</span>steps<span class="Delimiter">.</span><a href='003trace.cc.html#L203'>end</a><span class="Delimiter">());</span>
 <span id="L54" class="LineNr"> 54 </span>  <span class="Normal">else</span>
-<span id="L55" class="LineNr"> 55 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <span class="Constant">&quot;can't tangle before non-waypoint &quot;</span> &lt;&lt; label &lt;&lt; <span class="cSpecial">'\n'</span> &lt;&lt; end<span class="Delimiter">();</span>
+<span id="L55" class="LineNr"> 55 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <span class="Constant">&quot;can't tangle before non-waypoint &quot;</span> &lt;&lt; label &lt;&lt; <span class="cSpecial">'\n'</span> &lt;&lt; end<span class="Delimiter">();</span>
 <span id="L56" class="LineNr"> 56 </span>  <span class="Comment">// End before Command Handler</span>
 <span id="L57" class="LineNr"> 57 </span><span class="Delimiter">}</span>
 <span id="L58" class="LineNr"> 58 </span><span class="Normal">else</span> <span class="Normal">if</span> <span class="Delimiter">(</span>command == <span class="Constant">&quot;after&quot;</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
 <span id="L59" class="LineNr"> 59 </span>  string label = <a href='011load.cc.html#L167'>next_word</a><span class="Delimiter">(</span>in<span class="Delimiter">);</span>
 <span id="L60" class="LineNr"> 60 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>label<span class="Delimiter">.</span>empty<span class="Delimiter">())</span> <span class="Delimiter">{</span>
 <span id="L61" class="LineNr"> 61 </span>  <span class="Conceal">¦</span> assert<span class="Delimiter">(</span>!has_data<span class="Delimiter">(</span>in<span class="Delimiter">));</span>
-<span id="L62" class="LineNr"> 62 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <span class="Constant">&quot;incomplete 'after' block at <a href='003trace.cc.html#L197'>end</a> of file</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L62" class="LineNr"> 62 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <span class="Constant">&quot;incomplete 'after' block at <a href='003trace.cc.html#L203'>end</a> of file</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L63" class="LineNr"> 63 </span>  <span class="Conceal">¦</span> <span class="Identifier">return</span> result<span class="Delimiter">;</span>
 <span id="L64" class="LineNr"> 64 </span>  <span class="Delimiter">}</span>
 <span id="L65" class="LineNr"> 65 </span>  <a href='010vm.cc.html#L19'>recipe</a> tmp<span class="Delimiter">;</span>
 <span id="L66" class="LineNr"> 66 </span>  <a href='011load.cc.html#L81'>slurp_body</a><span class="Delimiter">(</span>in<span class="Delimiter">,</span> tmp<span class="Delimiter">);</span>
 <span id="L67" class="LineNr"> 67 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span><a href='052tangle.cc.html#L13'>is_waypoint</a><span class="Delimiter">(</span>label<span class="Delimiter">))</span>
-<span id="L68" class="LineNr"> 68 </span>  <span class="Conceal">¦</span> After_fragments[label]<span class="Delimiter">.</span>steps<span class="Delimiter">.</span>insert<span class="Delimiter">(</span>After_fragments[label]<span class="Delimiter">.</span>steps<span class="Delimiter">.</span>begin<span class="Delimiter">(),</span> tmp<span class="Delimiter">.</span>steps<span class="Delimiter">.</span>begin<span class="Delimiter">(),</span> tmp<span class="Delimiter">.</span>steps<span class="Delimiter">.</span><a href='003trace.cc.html#L197'>end</a><span class="Delimiter">());</span>
+<span id="L68" class="LineNr"> 68 </span>  <span class="Conceal">¦</span> After_fragments[label]<span class="Delimiter">.</span>steps<span class="Delimiter">.</span>insert<span class="Delimiter">(</span>After_fragments[label]<span class="Delimiter">.</span>steps<span class="Delimiter">.</span>begin<span class="Delimiter">(),</span> tmp<span class="Delimiter">.</span>steps<span class="Delimiter">.</span>begin<span class="Delimiter">(),</span> tmp<span class="Delimiter">.</span>steps<span class="Delimiter">.</span><a href='003trace.cc.html#L203'>end</a><span class="Delimiter">());</span>
 <span id="L69" class="LineNr"> 69 </span>  <span class="Normal">else</span>
-<span id="L70" class="LineNr"> 70 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <span class="Constant">&quot;can't tangle after non-waypoint &quot;</span> &lt;&lt; label &lt;&lt; <span class="cSpecial">'\n'</span> &lt;&lt; end<span class="Delimiter">();</span>
+<span id="L70" class="LineNr"> 70 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <span class="Constant">&quot;can't tangle after non-waypoint &quot;</span> &lt;&lt; label &lt;&lt; <span class="cSpecial">'\n'</span> &lt;&lt; end<span class="Delimiter">();</span>
 <span id="L71" class="LineNr"> 71 </span>  <span class="Comment">// End after Command Handler</span>
 <span id="L72" class="LineNr"> 72 </span><span class="Delimiter">}</span>
 <span id="L73" class="LineNr"> 73 </span>
@@ -154,7 +154,7 @@ if ('onhashchange' in window) {
 <span id="L90" class="LineNr"> 90 </span><span class="Delimiter">}</span>
 <span id="L91" class="LineNr"> 91 </span>
 <span id="L92" class="LineNr"> 92 </span><span class="Normal">void</span> insert_fragments<span class="Delimiter">(</span>recipe&amp; r<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L93" class="LineNr"> 93 </span>  <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">9991</span><span class="Delimiter">,</span> <span class="Constant">&quot;transform&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;--- insert fragments into <a href='010vm.cc.html#L19'>recipe</a> &quot;</span> &lt;&lt; r<span class="Delimiter">.</span>name &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L93" class="LineNr"> 93 </span>  <a href='003trace.cc.html#L167'>trace</a><span class="Delimiter">(</span><span class="Constant">9991</span><span class="Delimiter">,</span> <span class="Constant">&quot;transform&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;--- insert fragments into <a href='010vm.cc.html#L19'>recipe</a> &quot;</span> &lt;&lt; r<span class="Delimiter">.</span>name &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L94" class="LineNr"> 94 </span>  <span class="Normal">bool</span> made_progress = <span class="Constant">true</span><span class="Delimiter">;</span>
 <span id="L95" class="LineNr"> 95 </span>  <span class="Normal">int</span> pass = <span class="Constant">0</span><span class="Delimiter">;</span>
 <span id="L96" class="LineNr"> 96 </span>  <span class="Normal">while</span> <span class="Delimiter">(</span>made_progress<span class="Delimiter">)</span> <span class="Delimiter">{</span>
@@ -175,12 +175,12 @@ if ('onhashchange' in window) {
 <span id="L111" class="LineNr">111 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Comment">// ok to use contains_key even though Before_fragments uses [],</span>
 <span id="L112" class="LineNr">112 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Comment">// because appending an empty recipe is a noop</span>
 <span id="L113" class="LineNr">113 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>contains_key<span class="Delimiter">(</span>Before_fragments<span class="Delimiter">,</span> inst<span class="Delimiter">.</span>label<span class="Delimiter">))</span> <span class="Delimiter">{</span>
-<span id="L114" class="LineNr">114 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">9992</span><span class="Delimiter">,</span> <span class="Constant">&quot;transform&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;insert fragments before label &quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>label &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L114" class="LineNr">114 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L167'>trace</a><span class="Delimiter">(</span><span class="Constant">9992</span><span class="Delimiter">,</span> <span class="Constant">&quot;transform&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;insert fragments before label &quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>label &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L115" class="LineNr">115 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='052tangle.cc.html#L128'>append_fragment</a><span class="Delimiter">(</span>result<span class="Delimiter">,</span> Before_fragments[inst<span class="Delimiter">.</span>label]<span class="Delimiter">.</span>steps<span class="Delimiter">,</span> prefix<span class="Delimiter">.</span>str<span class="Delimiter">());</span>
 <span id="L116" class="LineNr">116 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Delimiter">}</span>
 <span id="L117" class="LineNr">117 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> result<span class="Delimiter">.</span>push_back<span class="Delimiter">(</span>inst<span class="Delimiter">);</span>
 <span id="L118" class="LineNr">118 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>contains_key<span class="Delimiter">(</span>After_fragments<span class="Delimiter">,</span> inst<span class="Delimiter">.</span>label<span class="Delimiter">))</span> <span class="Delimiter">{</span>
-<span id="L119" class="LineNr">119 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">9992</span><span class="Delimiter">,</span> <span class="Constant">&quot;transform&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;insert fragments after label &quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>label &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L119" class="LineNr">119 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L167'>trace</a><span class="Delimiter">(</span><span class="Constant">9992</span><span class="Delimiter">,</span> <span class="Constant">&quot;transform&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;insert fragments after label &quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>label &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L120" class="LineNr">120 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='052tangle.cc.html#L128'>append_fragment</a><span class="Delimiter">(</span>result<span class="Delimiter">,</span> After_fragments[inst<span class="Delimiter">.</span>label]<span class="Delimiter">.</span>steps<span class="Delimiter">,</span> prefix<span class="Delimiter">.</span>str<span class="Delimiter">());</span>
 <span id="L121" class="LineNr">121 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Delimiter">}</span>
 <span id="L122" class="LineNr">122 </span>  <span class="Conceal">¦</span> <span class="Delimiter">}</span>
@@ -229,13 +229,13 @@ if ('onhashchange' in window) {
 <span id="L165" class="LineNr">165 </span><a href='052tangle.cc.html#L167'>check_insert_fragments</a><span class="Delimiter">();</span>
 <span id="L166" class="LineNr">166 </span><span class="Delimiter">:(code)</span>
 <span id="L167" class="LineNr">167 </span><span class="Normal">void</span> <a href='052tangle.cc.html#L167'>check_insert_fragments</a><span class="Delimiter">()</span> <span class="Delimiter">{</span>
-<span id="L168" class="LineNr">168 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span>map&lt;string<span class="Delimiter">,</span> recipe&gt;::iterator p = Before_fragments<span class="Delimiter">.</span>begin<span class="Delimiter">();</span>  p != Before_fragments<span class="Delimiter">.</span><a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>  ++p<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L168" class="LineNr">168 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span>map&lt;string<span class="Delimiter">,</span> recipe&gt;::iterator p = Before_fragments<span class="Delimiter">.</span>begin<span class="Delimiter">();</span>  p != Before_fragments<span class="Delimiter">.</span><a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>  ++p<span class="Delimiter">)</span> <span class="Delimiter">{</span>
 <span id="L169" class="LineNr">169 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>!contains_key<span class="Delimiter">(</span>Fragments_used<span class="Delimiter">,</span> p<span class="Delimiter">-&gt;</span>first<span class="Delimiter">))</span>
-<span id="L170" class="LineNr">170 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <span class="Constant">&quot;could not locate insert before label &quot;</span> &lt;&lt; p<span class="Delimiter">-&gt;</span>first &lt;&lt; <span class="cSpecial">'\n'</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L170" class="LineNr">170 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <span class="Constant">&quot;could not locate insert before label &quot;</span> &lt;&lt; p<span class="Delimiter">-&gt;</span>first &lt;&lt; <span class="cSpecial">'\n'</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L171" class="LineNr">171 </span>  <span class="Delimiter">}</span>
-<span id="L172" class="LineNr">172 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span>map&lt;string<span class="Delimiter">,</span> recipe&gt;::iterator p = After_fragments<span class="Delimiter">.</span>begin<span class="Delimiter">();</span>  p != After_fragments<span class="Delimiter">.</span><a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>  ++p<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L172" class="LineNr">172 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span>map&lt;string<span class="Delimiter">,</span> recipe&gt;::iterator p = After_fragments<span class="Delimiter">.</span>begin<span class="Delimiter">();</span>  p != After_fragments<span class="Delimiter">.</span><a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>  ++p<span class="Delimiter">)</span> <span class="Delimiter">{</span>
 <span id="L173" class="LineNr">173 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>!contains_key<span class="Delimiter">(</span>Fragments_used<span class="Delimiter">,</span> p<span class="Delimiter">-&gt;</span>first<span class="Delimiter">))</span>
-<span id="L174" class="LineNr">174 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <span class="Constant">&quot;could not locate insert after label &quot;</span> &lt;&lt; p<span class="Delimiter">-&gt;</span>first &lt;&lt; <span class="cSpecial">'\n'</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L174" class="LineNr">174 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <span class="Constant">&quot;could not locate insert after label &quot;</span> &lt;&lt; p<span class="Delimiter">-&gt;</span>first &lt;&lt; <span class="cSpecial">'\n'</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L175" class="LineNr">175 </span>  <span class="Delimiter">}</span>
 <span id="L176" class="LineNr">176 </span><span class="Delimiter">}</span>
 <span id="L177" class="LineNr">177 </span>
@@ -516,21 +516,21 @@ if ('onhashchange' in window) {
 <span id="L452" class="LineNr">452 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span><span class="Constant">&quot;  1:num/raw &lt;- copy 34</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span>
 <span id="L453" class="LineNr">453 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span><span class="Constant">&quot;]</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span><span class="Delimiter">);</span>
 <span id="L454" class="LineNr">454 </span>  <a href='012transform.cc.html#L46'>transform_all</a><span class="Delimiter">();</span>
-<span id="L455" class="LineNr">455 </span>  <a href='003trace.cc.html#L233'>CHECK_TRACE_DOESNT_CONTAIN_ERRORS</a><span class="Delimiter">();</span>
+<span id="L455" class="LineNr">455 </span>  <a href='003trace.cc.html#L235'>CHECK_TRACE_DOESNT_CONTAIN_ERRORS</a><span class="Delimiter">();</span>
 <span id="L456" class="LineNr">456 </span>  Hide_errors = <span class="Constant">true</span><span class="Delimiter">;</span>
 <span id="L457" class="LineNr">457 </span>  <span class="Comment">// try to tangle into recipe foo after transform</span>
 <span id="L458" class="LineNr">458 </span>  load<span class="Delimiter">(</span><span class="Constant">&quot;before &lt;label&gt; [</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span>
 <span id="L459" class="LineNr">459 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span><span class="Constant">&quot;  2:num/raw &lt;- copy 35</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span>
 <span id="L460" class="LineNr">460 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span><span class="Constant">&quot;]</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span><span class="Delimiter">);</span>
-<span id="L461" class="LineNr">461 </span>  <a href='003trace.cc.html#L232'>CHECK_TRACE_CONTAINS_ERRORS</a><span class="Delimiter">();</span>
+<span id="L461" class="LineNr">461 </span>  <a href='003trace.cc.html#L234'>CHECK_TRACE_CONTAINS_ERRORS</a><span class="Delimiter">();</span>
 <span id="L462" class="LineNr">462 </span><span class="Delimiter">}</span>
 <span id="L463" class="LineNr">463 </span>
 <span id="L464" class="LineNr">464 </span><span class="Delimiter">:(before &quot;End before Command Handler&quot;)</span>
 <span id="L465" class="LineNr">465 </span><span class="Normal">if</span> <span class="Delimiter">(</span>contains_key<span class="Delimiter">(</span>Fragments_used<span class="Delimiter">,</span> label<span class="Delimiter">))</span>
-<span id="L466" class="LineNr">466 </span>  <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <span class="Constant">&quot;we've already tangled some code at label &quot;</span> &lt;&lt; label &lt;&lt; <span class="Constant">&quot; in a previous call to transform_all(). Those locations won't be updated.</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L466" class="LineNr">466 </span>  <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <span class="Constant">&quot;we've already tangled some code at label &quot;</span> &lt;&lt; label &lt;&lt; <span class="Constant">&quot; in a previous call to transform_all(). Those locations won't be updated.</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L467" class="LineNr">467 </span><span class="Delimiter">:(before &quot;End after Command Handler&quot;)</span>
 <span id="L468" class="LineNr">468 </span><span class="Normal">if</span> <span class="Delimiter">(</span>contains_key<span class="Delimiter">(</span>Fragments_used<span class="Delimiter">,</span> label<span class="Delimiter">))</span>
-<span id="L469" class="LineNr">469 </span>  <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <span class="Constant">&quot;we've already tangled some code at label &quot;</span> &lt;&lt; label &lt;&lt; <span class="Constant">&quot; in a previous call to transform_all(). Those locations won't be updated.</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L469" class="LineNr">469 </span>  <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <span class="Constant">&quot;we've already tangled some code at label &quot;</span> &lt;&lt; label &lt;&lt; <span class="Constant">&quot; in a previous call to transform_all(). Those locations won't be updated.</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 </pre>
 </body>
 </html>
diff --git a/html/053recipe_header.cc.html b/html/053recipe_header.cc.html
index 09471737..0d81785c 100644
--- a/html/053recipe_header.cc.html
+++ b/html/053recipe_header.cc.html
@@ -90,7 +90,7 @@ if ('onhashchange' in window) {
 <span id="L24" class="LineNr"> 24 </span>
 <span id="L25" class="LineNr"> 25 </span><span class="Delimiter">:(before &quot;End Recipe Refinements&quot;)</span>
 <span id="L26" class="LineNr"> 26 </span><span class="Normal">if</span> <span class="Delimiter">(</span>in<span class="Delimiter">.</span>peek<span class="Delimiter">()</span> != <span class="Constant">'['</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L27" class="LineNr"> 27 </span>  <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">&quot;parse&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;recipe has a header; parsing&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L27" class="LineNr"> 27 </span>  <a href='003trace.cc.html#L167'>trace</a><span class="Delimiter">(</span><span class="Constant">&quot;parse&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;recipe has a header; parsing&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L28" class="LineNr"> 28 </span>  <a href='053recipe_header.cc.html#L32'>load_recipe_header</a><span class="Delimiter">(</span>in<span class="Delimiter">,</span> result<span class="Delimiter">);</span>
 <span id="L29" class="LineNr"> 29 </span><span class="Delimiter">}</span>
 <span id="L30" class="LineNr"> 30 </span>
@@ -101,25 +101,25 @@ if ('onhashchange' in window) {
 <span id="L35" class="LineNr"> 35 </span>  <span class="Conceal">¦</span> string s = <a href='011load.cc.html#L167'>next_word</a><span class="Delimiter">(</span>in<span class="Delimiter">);</span>
 <span id="L36" class="LineNr"> 36 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>s<span class="Delimiter">.</span>empty<span class="Delimiter">())</span> <span class="Delimiter">{</span>
 <span id="L37" class="LineNr"> 37 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> assert<span class="Delimiter">(</span>!has_data<span class="Delimiter">(</span>in<span class="Delimiter">));</span>
-<span id="L38" class="LineNr"> 38 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <span class="Constant">&quot;incomplete <a href='010vm.cc.html#L19'>recipe</a> header at <a href='003trace.cc.html#L197'>end</a> of file (0)</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L38" class="LineNr"> 38 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <span class="Constant">&quot;incomplete <a href='010vm.cc.html#L19'>recipe</a> header at <a href='003trace.cc.html#L203'>end</a> of file (0)</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L39" class="LineNr"> 39 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Identifier">return</span><span class="Delimiter">;</span>
 <span id="L40" class="LineNr"> 40 </span>  <span class="Conceal">¦</span> <span class="Delimiter">}</span>
 <span id="L41" class="LineNr"> 41 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>s == <span class="Constant">&quot;&lt;-&quot;</span><span class="Delimiter">)</span>
-<span id="L42" class="LineNr"> 42 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <span class="Constant">&quot;recipe &quot;</span> &lt;&lt; result<span class="Delimiter">.</span>name &lt;&lt; <span class="Constant">&quot; should say '-&gt;' and not '&lt;-'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L42" class="LineNr"> 42 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <span class="Constant">&quot;recipe &quot;</span> &lt;&lt; result<span class="Delimiter">.</span>name &lt;&lt; <span class="Constant">&quot; should say '-&gt;' and not '&lt;-'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L43" class="LineNr"> 43 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>s == <span class="Constant">&quot;-&gt;&quot;</span><span class="Delimiter">)</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L44" class="LineNr"> 44 </span>  <span class="Conceal">¦</span> result<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>push_back<span class="Delimiter">(</span>reagent<span class="Delimiter">(</span>s<span class="Delimiter">));</span>
-<span id="L45" class="LineNr"> 45 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">&quot;parse&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;header ingredient: &quot;</span> &lt;&lt; result<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>back<span class="Delimiter">().</span>original_string &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L45" class="LineNr"> 45 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L167'>trace</a><span class="Delimiter">(</span><span class="Constant">&quot;parse&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;header ingredient: &quot;</span> &lt;&lt; result<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>back<span class="Delimiter">().</span>original_string &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L46" class="LineNr"> 46 </span>  <span class="Conceal">¦</span> skip_whitespace_but_not_newline<span class="Delimiter">(</span>in<span class="Delimiter">);</span>
 <span id="L47" class="LineNr"> 47 </span>  <span class="Delimiter">}</span>
 <span id="L48" class="LineNr"> 48 </span>  <span class="Normal">while</span> <span class="Delimiter">(</span><a href='001help.cc.html#L239'>has_data</a><span class="Delimiter">(</span>in<span class="Delimiter">)</span> &amp;&amp; in<span class="Delimiter">.</span>peek<span class="Delimiter">()</span> != <span class="Constant">'['</span> &amp;&amp; in<span class="Delimiter">.</span>peek<span class="Delimiter">()</span> != <span class="cSpecial">'\n'</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
 <span id="L49" class="LineNr"> 49 </span>  <span class="Conceal">¦</span> string s = <a href='011load.cc.html#L167'>next_word</a><span class="Delimiter">(</span>in<span class="Delimiter">);</span>
 <span id="L50" class="LineNr"> 50 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>s<span class="Delimiter">.</span>empty<span class="Delimiter">())</span> <span class="Delimiter">{</span>
 <span id="L51" class="LineNr"> 51 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> assert<span class="Delimiter">(</span>!has_data<span class="Delimiter">(</span>in<span class="Delimiter">));</span>
-<span id="L52" class="LineNr"> 52 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <span class="Constant">&quot;incomplete <a href='010vm.cc.html#L19'>recipe</a> header at <a href='003trace.cc.html#L197'>end</a> of file (1)</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L52" class="LineNr"> 52 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <span class="Constant">&quot;incomplete <a href='010vm.cc.html#L19'>recipe</a> header at <a href='003trace.cc.html#L203'>end</a> of file (1)</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L53" class="LineNr"> 53 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Identifier">return</span><span class="Delimiter">;</span>
 <span id="L54" class="LineNr"> 54 </span>  <span class="Conceal">¦</span> <span class="Delimiter">}</span>
 <span id="L55" class="LineNr"> 55 </span>  <span class="Conceal">¦</span> result<span class="Delimiter">.</span>products<span class="Delimiter">.</span>push_back<span class="Delimiter">(</span>reagent<span class="Delimiter">(</span>s<span class="Delimiter">));</span>
-<span id="L56" class="LineNr"> 56 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">&quot;parse&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;header product: &quot;</span> &lt;&lt; result<span class="Delimiter">.</span>products<span class="Delimiter">.</span>back<span class="Delimiter">().</span>original_string &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L56" class="LineNr"> 56 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L167'>trace</a><span class="Delimiter">(</span><span class="Constant">&quot;parse&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;header product: &quot;</span> &lt;&lt; result<span class="Delimiter">.</span>products<span class="Delimiter">.</span>back<span class="Delimiter">().</span>original_string &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L57" class="LineNr"> 57 </span>  <span class="Conceal">¦</span> skip_whitespace_but_not_newline<span class="Delimiter">(</span>in<span class="Delimiter">);</span>
 <span id="L58" class="LineNr"> 58 </span>  <span class="Delimiter">}</span>
 <span id="L59" class="LineNr"> 59 </span>  <span class="Comment">// End Load Recipe Header(result)</span>
@@ -215,7 +215,7 @@ if ('onhashchange' in window) {
 <span id="L149" class="LineNr">149 </span>  <span class="Delimiter">}</span>
 <span id="L150" class="LineNr">150 </span><span class="Delimiter">}</span>
 <span id="L151" class="LineNr">151 </span><span class="Normal">if</span> <span class="Delimiter">(</span>result<span class="Delimiter">.</span>has_header<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L152" class="LineNr">152 </span>  <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">&quot;parse&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;recipe &quot;</span> &lt;&lt; result<span class="Delimiter">.</span>name &lt;&lt; <span class="Constant">&quot; has a header&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L152" class="LineNr">152 </span>  <a href='003trace.cc.html#L167'>trace</a><span class="Delimiter">(</span><span class="Constant">&quot;parse&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;recipe &quot;</span> &lt;&lt; result<span class="Delimiter">.</span>name &lt;&lt; <span class="Constant">&quot; has a header&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L153" class="LineNr">153 </span><span class="Delimiter">}</span>
 <span id="L154" class="LineNr">154 </span>
 <span id="L155" class="LineNr">155 </span><span class="Comment">//: Support type abbreviations in headers.</span>
@@ -254,7 +254,7 @@ if ('onhashchange' in window) {
 <span id="L188" class="LineNr">188 </span>  <span class="Delimiter">}</span>
 <span id="L189" class="LineNr">189 </span><span class="Delimiter">}</span>
 <span id="L190" class="LineNr">190 </span><span class="Normal">if</span> <span class="Delimiter">(</span>curr<span class="Delimiter">.</span>name == <span class="Constant">&quot;next-ingredient-without-typechecking&quot;</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L191" class="LineNr">191 </span>  <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>result<span class="Delimiter">.</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;never call 'next-ingredient-without-typechecking' directly</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L191" class="LineNr">191 </span>  <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>result<span class="Delimiter">.</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;never call 'next-ingredient-without-typechecking' directly</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L192" class="LineNr">192 </span>  curr<span class="Delimiter">.</span><a href='050scenario.cc.html#L60'>clear</a><span class="Delimiter">();</span>
 <span id="L193" class="LineNr">193 </span><span class="Delimiter">}</span>
 <span id="L194" class="LineNr">194 </span>
@@ -270,9 +270,9 @@ if ('onhashchange' in window) {
 <span id="L204" class="LineNr">204 </span><span class="Delimiter">:(before &quot;End Primitive Recipe Implementations&quot;)</span>
 <span id="L205" class="LineNr">205 </span><span class="Normal">case</span> NEXT_INGREDIENT_WITHOUT_TYPECHECKING: <span class="Delimiter">{</span>
 <span id="L206" class="LineNr">206 </span>  assert<span class="Delimiter">(</span>!Current_routine<span class="Delimiter">-&gt;</span>calls<span class="Delimiter">.</span>empty<span class="Delimiter">());</span>
-<span id="L207" class="LineNr">207 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span><a href='026call.cc.html#L81'>current_call</a><span class="Delimiter">().</span>next_ingredient_to_process &lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span><a href='026call.cc.html#L81'>current_call</a><span class="Delimiter">().</span>ingredient_atoms<span class="Delimiter">))</span> <span class="Delimiter">{</span>
+<span id="L207" class="LineNr">207 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span><a href='026call.cc.html#L83'>current_call</a><span class="Delimiter">().</span>next_ingredient_to_process &lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span><a href='026call.cc.html#L83'>current_call</a><span class="Delimiter">().</span>ingredient_atoms<span class="Delimiter">))</span> <span class="Delimiter">{</span>
 <span id="L208" class="LineNr">208 </span>  <span class="Conceal">¦</span> products<span class="Delimiter">.</span>push_back<span class="Delimiter">(</span>
-<span id="L209" class="LineNr">209 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='026call.cc.html#L81'>current_call</a><span class="Delimiter">().</span>ingredient_atoms<span class="Delimiter">.</span>at<span class="Delimiter">(</span><a href='026call.cc.html#L81'>current_call</a><span class="Delimiter">().</span>next_ingredient_to_process<span class="Delimiter">));</span>
+<span id="L209" class="LineNr">209 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='026call.cc.html#L83'>current_call</a><span class="Delimiter">().</span>ingredient_atoms<span class="Delimiter">.</span>at<span class="Delimiter">(</span><a href='026call.cc.html#L83'>current_call</a><span class="Delimiter">().</span>next_ingredient_to_process<span class="Delimiter">));</span>
 <span id="L210" class="LineNr">210 </span>  <span class="Conceal">¦</span> assert<span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>products<span class="Delimiter">)</span> == <span class="Constant">1</span><span class="Delimiter">);</span>  products<span class="Delimiter">.</span>resize<span class="Delimiter">(</span><span class="Constant">2</span><span class="Delimiter">);</span>  <span class="Comment">// push a new vector</span>
 <span id="L211" class="LineNr">211 </span>  <span class="Conceal">¦</span> products<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">1</span><span class="Delimiter">).</span>push_back<span class="Delimiter">(</span><span class="Constant">1</span><span class="Delimiter">);</span>
 <span id="L212" class="LineNr">212 </span>  <span class="Conceal">¦</span> ++current_call<span class="Delimiter">().</span>next_ingredient_to_process<span class="Delimiter">;</span>
@@ -280,7 +280,7 @@ if ('onhashchange' in window) {
 <span id="L214" class="LineNr">214 </span>  <span class="Normal">else</span> <span class="Delimiter">{</span>
 <span id="L215" class="LineNr">215 </span>  <span class="Conceal">¦</span> products<span class="Delimiter">.</span>resize<span class="Delimiter">(</span><span class="Constant">2</span><span class="Delimiter">);</span>
 <span id="L216" class="LineNr">216 </span>  <span class="Conceal">¦</span> <span class="Comment">// pad the first product with sufficient zeros to match its type</span>
-<span id="L217" class="LineNr">217 </span>  <span class="Conceal">¦</span> products<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>resize<span class="Delimiter">(</span>size_of<span class="Delimiter">(</span><a href='026call.cc.html#L87'>current_instruction</a><span class="Delimiter">().</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">)));</span>
+<span id="L217" class="LineNr">217 </span>  <span class="Conceal">¦</span> products<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>resize<span class="Delimiter">(</span>size_of<span class="Delimiter">(</span><a href='026call.cc.html#L89'>current_instruction</a><span class="Delimiter">().</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">)));</span>
 <span id="L218" class="LineNr">218 </span>  <span class="Conceal">¦</span> products<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">1</span><span class="Delimiter">).</span>push_back<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">);</span>
 <span id="L219" class="LineNr">219 </span>  <span class="Delimiter">}</span>
 <span id="L220" class="LineNr">220 </span>  <span class="Identifier">break</span><span class="Delimiter">;</span>
@@ -299,7 +299,7 @@ if ('onhashchange' in window) {
 <span id="L233" class="LineNr">233 </span>
 <span id="L234" class="LineNr">234 </span><span class="Delimiter">:(after &quot;use-before-set Error&quot;)</span>
 <span id="L235" class="LineNr">235 </span><span class="Normal">if</span> <span class="Delimiter">(</span>is_present_in_ingredients<span class="Delimiter">(</span>caller<span class="Delimiter">,</span> ingredient<span class="Delimiter">.</span>name<span class="Delimiter">))</span>
-<span id="L236" class="LineNr">236 </span>  <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <span class="Constant">&quot;  did you forget 'load-ingredients'?</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L236" class="LineNr">236 </span>  <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <span class="Constant">&quot;  did you forget 'load-ingredients'?</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L237" class="LineNr">237 </span>
 <span id="L238" class="LineNr">238 </span><span class="Delimiter">:(scenario load_ingredients_missing_error_2)</span>
 <span id="L239" class="LineNr">239 </span><span class="Special">% Hide_errors = true;</span>
@@ -312,7 +312,7 @@ if ('onhashchange' in window) {
 <span id="L246" class="LineNr">246 </span>
 <span id="L247" class="LineNr">247 </span><span class="Delimiter">:(after &quot;missing-type Error 1&quot;)</span>
 <span id="L248" class="LineNr">248 </span><span class="Normal">if</span> <span class="Delimiter">(</span>is_present_in_ingredients<span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> get<span class="Delimiter">(</span>Recipe_ordinal<span class="Delimiter">,</span> recipe_name<span class="Delimiter">)),</span> x<span class="Delimiter">.</span>name<span class="Delimiter">))</span>
-<span id="L249" class="LineNr">249 </span>  <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <span class="Constant">&quot;  did you forget 'load-ingredients'?</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L249" class="LineNr">249 </span>  <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <span class="Constant">&quot;  did you forget 'load-ingredients'?</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L250" class="LineNr">250 </span>
 <span id="L251" class="LineNr">251 </span><span class="Delimiter">:(code)</span>
 <span id="L252" class="LineNr">252 </span><span class="Normal">bool</span> is_present_in_ingredients<span class="Delimiter">(</span><span class="Normal">const</span> recipe&amp; callee<span class="Delimiter">,</span> <span class="Normal">const</span> string&amp; ingredient_name<span class="Delimiter">)</span> <span class="Delimiter">{</span>
@@ -354,7 +354,7 @@ if ('onhashchange' in window) {
 <span id="L288" class="LineNr">288 </span><span class="Delimiter">:(code)</span>
 <span id="L289" class="LineNr">289 </span><span class="Normal">void</span> check_calls_against_header<span class="Delimiter">(</span><span class="Normal">const</span> <a href='010vm.cc.html#L14'>recipe_ordinal</a> r<span class="Delimiter">)</span> <span class="Delimiter">{</span>
 <span id="L290" class="LineNr">290 </span>  <span class="Normal">const</span> recipe&amp; caller = get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">);</span>
-<span id="L291" class="LineNr">291 </span>  <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">9991</span><span class="Delimiter">,</span> <span class="Constant">&quot;transform&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;--- type-check calls inside <a href='010vm.cc.html#L19'>recipe</a> &quot;</span> &lt;&lt; caller<span class="Delimiter">.</span>name &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L291" class="LineNr">291 </span>  <a href='003trace.cc.html#L167'>trace</a><span class="Delimiter">(</span><span class="Constant">9991</span><span class="Delimiter">,</span> <span class="Constant">&quot;transform&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;--- type-check calls inside <a href='010vm.cc.html#L19'>recipe</a> &quot;</span> &lt;&lt; caller<span class="Delimiter">.</span>name &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L292" class="LineNr">292 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> i = <span class="Constant">0</span><span class="Delimiter">;</span>  i &lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>caller<span class="Delimiter">.</span>steps<span class="Delimiter">);</span>  ++i<span class="Delimiter">)</span> <span class="Delimiter">{</span>
 <span id="L293" class="LineNr">293 </span>  <span class="Conceal">¦</span> <span class="Normal">const</span> instruction&amp; inst = caller<span class="Delimiter">.</span>steps<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">);</span>
 <span id="L294" class="LineNr">294 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span><a href='028call_return.cc.html#L115'>is_primitive</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>operation<span class="Delimiter">))</span> <span class="Identifier">continue</span><span class="Delimiter">;</span>
@@ -363,16 +363,16 @@ if ('onhashchange' in window) {
 <span id="L297" class="LineNr">297 </span>  <span class="Conceal">¦</span> <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">long</span> <span class="Normal">int</span> i = <span class="Constant">0</span><span class="Delimiter">;</span>  i &lt; min<span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">),</span> <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>callee<span class="Delimiter">.</span>ingredients<span class="Delimiter">));</span>  ++i<span class="Delimiter">)</span> <span class="Delimiter">{</span>
 <span id="L298" class="LineNr">298 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Comment">// ingredients coerced from call to callee</span>
 <span id="L299" class="LineNr">299 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>!types_coercible<span class="Delimiter">(</span>callee<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">),</span> inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">)))</span> <span class="Delimiter">{</span>
-<span id="L300" class="LineNr">300 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>caller<span class="Delimiter">.</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;ingredient &quot;</span> &lt;&lt; i &lt;&lt; <span class="Constant">&quot; has the wrong type at '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
-<span id="L301" class="LineNr">301 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <span class="Constant">&quot;  ['&quot;</span> &lt;&lt; to_string<span class="Delimiter">(</span>callee<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">).</span>type<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;' vs '&quot;</span> &lt;&lt; to_string<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">).</span>type<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;']</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L300" class="LineNr">300 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>caller<span class="Delimiter">.</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;ingredient &quot;</span> &lt;&lt; i &lt;&lt; <span class="Constant">&quot; has the wrong type at '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
+<span id="L301" class="LineNr">301 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <span class="Constant">&quot;  ['&quot;</span> &lt;&lt; to_string<span class="Delimiter">(</span>callee<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">).</span>type<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;' vs '&quot;</span> &lt;&lt; to_string<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">).</span>type<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;']</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L302" class="LineNr">302 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Delimiter">}</span>
 <span id="L303" class="LineNr">303 </span>  <span class="Conceal">¦</span> <span class="Delimiter">}</span>
 <span id="L304" class="LineNr">304 </span>  <span class="Conceal">¦</span> <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">long</span> <span class="Normal">int</span> i = <span class="Constant">0</span><span class="Delimiter">;</span>  i &lt; min<span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>products<span class="Delimiter">),</span> <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>callee<span class="Delimiter">.</span>products<span class="Delimiter">));</span>  ++i<span class="Delimiter">)</span> <span class="Delimiter">{</span>
 <span id="L305" class="LineNr">305 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>is_dummy<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">)))</span> <span class="Identifier">continue</span><span class="Delimiter">;</span>
 <span id="L306" class="LineNr">306 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Comment">// products coerced from callee to call</span>
 <span id="L307" class="LineNr">307 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>!types_coercible<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">),</span> callee<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">)))</span> <span class="Delimiter">{</span>
-<span id="L308" class="LineNr">308 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>caller<span class="Delimiter">.</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;product &quot;</span> &lt;&lt; i &lt;&lt; <span class="Constant">&quot; has the wrong type at '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
-<span id="L309" class="LineNr">309 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <span class="Constant">&quot;  ['&quot;</span> &lt;&lt; to_string<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">).</span>type<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;' vs '&quot;</span> &lt;&lt; to_string<span class="Delimiter">(</span>callee<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">).</span>type<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;']</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L308" class="LineNr">308 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>caller<span class="Delimiter">.</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;product &quot;</span> &lt;&lt; i &lt;&lt; <span class="Constant">&quot; has the wrong type at '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
+<span id="L309" class="LineNr">309 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <span class="Constant">&quot;  ['&quot;</span> &lt;&lt; to_string<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">).</span>type<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;' vs '&quot;</span> &lt;&lt; to_string<span class="Delimiter">(</span>callee<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">).</span>type<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;']</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L310" class="LineNr">310 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Delimiter">}</span>
 <span id="L311" class="LineNr">311 </span>  <span class="Conceal">¦</span> <span class="Delimiter">}</span>
 <span id="L312" class="LineNr">312 </span>  <span class="Delimiter">}</span>
@@ -398,17 +398,17 @@ if ('onhashchange' in window) {
 <span id="L332" class="LineNr">332 </span><span class="Normal">void</span> check_return_instructions_against_header<span class="Delimiter">(</span><span class="Normal">const</span> <a href='010vm.cc.html#L14'>recipe_ordinal</a> r<span class="Delimiter">)</span> <span class="Delimiter">{</span>
 <span id="L333" class="LineNr">333 </span>  <span class="Normal">const</span> recipe&amp; caller_recipe = get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">);</span>
 <span id="L334" class="LineNr">334 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!caller_recipe<span class="Delimiter">.</span>has_header<span class="Delimiter">)</span> <span class="Identifier">return</span><span class="Delimiter">;</span>
-<span id="L335" class="LineNr">335 </span>  <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">9991</span><span class="Delimiter">,</span> <span class="Constant">&quot;transform&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;--- checking return instructions against header for &quot;</span> &lt;&lt; caller_recipe<span class="Delimiter">.</span>name &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L335" class="LineNr">335 </span>  <a href='003trace.cc.html#L167'>trace</a><span class="Delimiter">(</span><span class="Constant">9991</span><span class="Delimiter">,</span> <span class="Constant">&quot;transform&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;--- checking return instructions against header for &quot;</span> &lt;&lt; caller_recipe<span class="Delimiter">.</span>name &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L336" class="LineNr">336 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> i = <span class="Constant">0</span><span class="Delimiter">;</span>  i &lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>caller_recipe<span class="Delimiter">.</span>steps<span class="Delimiter">);</span>  ++i<span class="Delimiter">)</span> <span class="Delimiter">{</span>
 <span id="L337" class="LineNr">337 </span>  <span class="Conceal">¦</span> <span class="Normal">const</span> instruction&amp; inst = caller_recipe<span class="Delimiter">.</span>steps<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">);</span>
 <span id="L338" class="LineNr">338 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>inst<span class="Delimiter">.</span>name != <span class="Constant">&quot;reply&quot;</span> &amp;&amp; inst<span class="Delimiter">.</span>name != <span class="Constant">&quot;return&quot;</span><span class="Delimiter">)</span> <span class="Identifier">continue</span><span class="Delimiter">;</span>
 <span id="L339" class="LineNr">339 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>caller_recipe<span class="Delimiter">.</span>products<span class="Delimiter">)</span> != <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">))</span> <span class="Delimiter">{</span>
-<span id="L340" class="LineNr">340 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>caller_recipe<span class="Delimiter">.</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;replied with the wrong number of products at '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L340" class="LineNr">340 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>caller_recipe<span class="Delimiter">.</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;replied with the wrong number of products at '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L341" class="LineNr">341 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Identifier">continue</span><span class="Delimiter">;</span>
 <span id="L342" class="LineNr">342 </span>  <span class="Conceal">¦</span> <span class="Delimiter">}</span>
 <span id="L343" class="LineNr">343 </span>  <span class="Conceal">¦</span> <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> i = <span class="Constant">0</span><span class="Delimiter">;</span>  i &lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>caller_recipe<span class="Delimiter">.</span>products<span class="Delimiter">);</span>  ++i<span class="Delimiter">)</span> <span class="Delimiter">{</span>
 <span id="L344" class="LineNr">344 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>!types_match<span class="Delimiter">(</span>caller_recipe<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">),</span> inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">)))</span>
-<span id="L345" class="LineNr">345 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>caller_recipe<span class="Delimiter">.</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;replied with the wrong type at '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L345" class="LineNr">345 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>caller_recipe<span class="Delimiter">.</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;replied with the wrong type at '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L346" class="LineNr">346 </span>  <span class="Conceal">¦</span> <span class="Delimiter">}</span>
 <span id="L347" class="LineNr">347 </span>  <span class="Delimiter">}</span>
 <span id="L348" class="LineNr">348 </span><span class="Delimiter">}</span>
@@ -469,12 +469,12 @@ if ('onhashchange' in window) {
 <span id="L403" class="LineNr">403 </span><span class="Normal">void</span> check_header_ingredients<span class="Delimiter">(</span><span class="Normal">const</span> <a href='010vm.cc.html#L14'>recipe_ordinal</a> r<span class="Delimiter">)</span> <span class="Delimiter">{</span>
 <span id="L404" class="LineNr">404 </span>  recipe&amp; caller_recipe = get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">);</span>
 <span id="L405" class="LineNr">405 </span>  caller_recipe<span class="Delimiter">.</span>ingredient_index<span class="Delimiter">.</span><a href='050scenario.cc.html#L60'>clear</a><span class="Delimiter">();</span>
-<span id="L406" class="LineNr">406 </span>  <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">9991</span><span class="Delimiter">,</span> <span class="Constant">&quot;transform&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;--- checking return instructions against header for &quot;</span> &lt;&lt; caller_recipe<span class="Delimiter">.</span>name &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L406" class="LineNr">406 </span>  <a href='003trace.cc.html#L167'>trace</a><span class="Delimiter">(</span><span class="Constant">9991</span><span class="Delimiter">,</span> <span class="Constant">&quot;transform&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;--- checking return instructions against header for &quot;</span> &lt;&lt; caller_recipe<span class="Delimiter">.</span>name &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L407" class="LineNr">407 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> i = <span class="Constant">0</span><span class="Delimiter">;</span>  i &lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>caller_recipe<span class="Delimiter">.</span>ingredients<span class="Delimiter">);</span>  ++i<span class="Delimiter">)</span> <span class="Delimiter">{</span>
 <span id="L408" class="LineNr">408 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>caller_recipe<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">).</span>type == <span class="Constant">NULL</span><span class="Delimiter">)</span>
-<span id="L409" class="LineNr">409 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>caller_recipe<span class="Delimiter">.</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;ingredient '&quot;</span> &lt;&lt; caller_recipe<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">).</span>name &lt;&lt; <span class="Constant">&quot;' has no type</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L409" class="LineNr">409 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>caller_recipe<span class="Delimiter">.</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;ingredient '&quot;</span> &lt;&lt; caller_recipe<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">).</span>name &lt;&lt; <span class="Constant">&quot;' has no type</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L410" class="LineNr">410 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>contains_key<span class="Delimiter">(</span>caller_recipe<span class="Delimiter">.</span>ingredient_index<span class="Delimiter">,</span> caller_recipe<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">).</span>name<span class="Delimiter">))</span>
-<span id="L411" class="LineNr">411 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>caller_recipe<span class="Delimiter">.</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'&quot;</span> &lt;&lt; caller_recipe<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">).</span>name &lt;&lt; <span class="Constant">&quot;' can't repeat in the ingredients</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; end<span class="Delimiter">();</span>
+<span id="L411" class="LineNr">411 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>caller_recipe<span class="Delimiter">.</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'&quot;</span> &lt;&lt; caller_recipe<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">).</span>name &lt;&lt; <span class="Constant">&quot;' can't repeat in the ingredients</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; end<span class="Delimiter">();</span>
 <span id="L412" class="LineNr">412 </span>  <span class="Conceal">¦</span> <a href='001help.cc.html#L221'>put</a><span class="Delimiter">(</span>caller_recipe<span class="Delimiter">.</span>ingredient_index<span class="Delimiter">,</span> caller_recipe<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">).</span>name<span class="Delimiter">,</span> i<span class="Delimiter">);</span>
 <span id="L413" class="LineNr">413 </span>  <span class="Delimiter">}</span>
 <span id="L414" class="LineNr">414 </span><span class="Delimiter">}</span>
@@ -501,37 +501,37 @@ if ('onhashchange' in window) {
 <span id="L435" class="LineNr">435 </span><span class="Normal">void</span> deduce_types_from_header<span class="Delimiter">(</span><span class="Normal">const</span> <a href='010vm.cc.html#L14'>recipe_ordinal</a> r<span class="Delimiter">)</span> <span class="Delimiter">{</span>
 <span id="L436" class="LineNr">436 </span>  recipe&amp; caller_recipe = get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">);</span>
 <span id="L437" class="LineNr">437 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>caller_recipe<span class="Delimiter">.</span>products<span class="Delimiter">.</span>empty<span class="Delimiter">())</span> <span class="Identifier">return</span><span class="Delimiter">;</span>
-<span id="L438" class="LineNr">438 </span>  <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">9991</span><span class="Delimiter">,</span> <span class="Constant">&quot;transform&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;--- deduce types from header for &quot;</span> &lt;&lt; caller_recipe<span class="Delimiter">.</span>name &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L438" class="LineNr">438 </span>  <a href='003trace.cc.html#L167'>trace</a><span class="Delimiter">(</span><span class="Constant">9991</span><span class="Delimiter">,</span> <span class="Constant">&quot;transform&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;--- deduce types from header for &quot;</span> &lt;&lt; caller_recipe<span class="Delimiter">.</span>name &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L439" class="LineNr">439 </span>  map&lt;string<span class="Delimiter">,</span> <span class="Normal">const</span> type_tree*&gt; header_type<span class="Delimiter">;</span>
 <span id="L440" class="LineNr">440 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> i = <span class="Constant">0</span><span class="Delimiter">;</span>  i &lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>caller_recipe<span class="Delimiter">.</span>ingredients<span class="Delimiter">);</span>  ++i<span class="Delimiter">)</span> <span class="Delimiter">{</span>
 <span id="L441" class="LineNr">441 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>!caller_recipe<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">).</span>type<span class="Delimiter">)</span> <span class="Identifier">continue</span><span class="Delimiter">;</span>  <span class="Comment">// error handled elsewhere</span>
 <span id="L442" class="LineNr">442 </span>  <span class="Conceal">¦</span> <a href='001help.cc.html#L221'>put</a><span class="Delimiter">(</span>header_type<span class="Delimiter">,</span> caller_recipe<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">).</span>name<span class="Delimiter">,</span> caller_recipe<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">).</span>type<span class="Delimiter">);</span>
-<span id="L443" class="LineNr">443 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">9993</span><span class="Delimiter">,</span> <span class="Constant">&quot;transform&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;type of &quot;</span> &lt;&lt; caller_recipe<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">).</span>name &lt;&lt; <span class="Constant">&quot; is &quot;</span> &lt;&lt; names_to_string<span class="Delimiter">(</span>caller_recipe<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">).</span>type<span class="Delimiter">)</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L443" class="LineNr">443 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L167'>trace</a><span class="Delimiter">(</span><span class="Constant">9993</span><span class="Delimiter">,</span> <span class="Constant">&quot;transform&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;type of &quot;</span> &lt;&lt; caller_recipe<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">).</span>name &lt;&lt; <span class="Constant">&quot; is &quot;</span> &lt;&lt; names_to_string<span class="Delimiter">(</span>caller_recipe<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">).</span>type<span class="Delimiter">)</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L444" class="LineNr">444 </span>  <span class="Delimiter">}</span>
 <span id="L445" class="LineNr">445 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> i = <span class="Constant">0</span><span class="Delimiter">;</span>  i &lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>caller_recipe<span class="Delimiter">.</span>products<span class="Delimiter">);</span>  ++i<span class="Delimiter">)</span> <span class="Delimiter">{</span>
 <span id="L446" class="LineNr">446 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>!caller_recipe<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">).</span>type<span class="Delimiter">)</span> <span class="Identifier">continue</span><span class="Delimiter">;</span>  <span class="Comment">// error handled elsewhere</span>
 <span id="L447" class="LineNr">447 </span>  <span class="Conceal">¦</span> <a href='001help.cc.html#L221'>put</a><span class="Delimiter">(</span>header_type<span class="Delimiter">,</span> caller_recipe<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">).</span>name<span class="Delimiter">,</span> caller_recipe<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">).</span>type<span class="Delimiter">);</span>
-<span id="L448" class="LineNr">448 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">9993</span><span class="Delimiter">,</span> <span class="Constant">&quot;transform&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;type of &quot;</span> &lt;&lt; caller_recipe<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">).</span>name &lt;&lt; <span class="Constant">&quot; is &quot;</span> &lt;&lt; names_to_string<span class="Delimiter">(</span>caller_recipe<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">).</span>type<span class="Delimiter">)</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L448" class="LineNr">448 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L167'>trace</a><span class="Delimiter">(</span><span class="Constant">9993</span><span class="Delimiter">,</span> <span class="Constant">&quot;transform&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;type of &quot;</span> &lt;&lt; caller_recipe<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">).</span>name &lt;&lt; <span class="Constant">&quot; is &quot;</span> &lt;&lt; names_to_string<span class="Delimiter">(</span>caller_recipe<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">).</span>type<span class="Delimiter">)</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L449" class="LineNr">449 </span>  <span class="Delimiter">}</span>
 <span id="L450" class="LineNr">450 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> i = <span class="Constant">0</span><span class="Delimiter">;</span>  i &lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>caller_recipe<span class="Delimiter">.</span>steps<span class="Delimiter">);</span>  ++i<span class="Delimiter">)</span> <span class="Delimiter">{</span>
 <span id="L451" class="LineNr">451 </span>  <span class="Conceal">¦</span> instruction&amp; inst = caller_recipe<span class="Delimiter">.</span>steps<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">);</span>
-<span id="L452" class="LineNr">452 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">9992</span><span class="Delimiter">,</span> <span class="Constant">&quot;transform&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;instruction: &quot;</span> &lt;&lt; <a href='028call_return.cc.html#L163'>to_string</a><span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L452" class="LineNr">452 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L167'>trace</a><span class="Delimiter">(</span><span class="Constant">9992</span><span class="Delimiter">,</span> <span class="Constant">&quot;transform&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;instruction: &quot;</span> &lt;&lt; <a href='028call_return.cc.html#L163'>to_string</a><span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L453" class="LineNr">453 </span>  <span class="Conceal">¦</span> <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> i = <span class="Constant">0</span><span class="Delimiter">;</span>  i &lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">);</span>  ++i<span class="Delimiter">)</span> <span class="Delimiter">{</span>
 <span id="L454" class="LineNr">454 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">).</span>type<span class="Delimiter">)</span> <span class="Identifier">continue</span><span class="Delimiter">;</span>
-<span id="L455" class="LineNr">455 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>header_type<span class="Delimiter">.</span>find<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">).</span>name<span class="Delimiter">)</span> == header_type<span class="Delimiter">.</span><a href='003trace.cc.html#L197'>end</a><span class="Delimiter">())</span>
+<span id="L455" class="LineNr">455 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>header_type<span class="Delimiter">.</span>find<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">).</span>name<span class="Delimiter">)</span> == header_type<span class="Delimiter">.</span><a href='003trace.cc.html#L203'>end</a><span class="Delimiter">())</span>
 <span id="L456" class="LineNr">456 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Identifier">continue</span><span class="Delimiter">;</span>
 <span id="L457" class="LineNr">457 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>!contains_key<span class="Delimiter">(</span>header_type<span class="Delimiter">,</span> inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">).</span>name<span class="Delimiter">))</span> <span class="Identifier">continue</span><span class="Delimiter">;</span>  <span class="Comment">// error handled elsewhere</span>
 <span id="L458" class="LineNr">458 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">).</span>type = <span class="Normal">new</span> type_tree<span class="Delimiter">(</span>*get<span class="Delimiter">(</span>header_type<span class="Delimiter">,</span> inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">).</span>name<span class="Delimiter">));</span>
-<span id="L459" class="LineNr">459 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">9993</span><span class="Delimiter">,</span> <span class="Constant">&quot;transform&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;type of &quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">).</span>name &lt;&lt; <span class="Constant">&quot; is &quot;</span> &lt;&lt; names_to_string<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">).</span>type<span class="Delimiter">)</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L459" class="LineNr">459 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L167'>trace</a><span class="Delimiter">(</span><span class="Constant">9993</span><span class="Delimiter">,</span> <span class="Constant">&quot;transform&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;type of &quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">).</span>name &lt;&lt; <span class="Constant">&quot; is &quot;</span> &lt;&lt; names_to_string<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">).</span>type<span class="Delimiter">)</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L460" class="LineNr">460 </span>  <span class="Conceal">¦</span> <span class="Delimiter">}</span>
 <span id="L461" class="LineNr">461 </span>  <span class="Conceal">¦</span> <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> i = <span class="Constant">0</span><span class="Delimiter">;</span>  i &lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>products<span class="Delimiter">);</span>  ++i<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L462" class="LineNr">462 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">9993</span><span class="Delimiter">,</span> <span class="Constant">&quot;transform&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;  product: &quot;</span> &lt;&lt; <a href='028call_return.cc.html#L163'>to_string</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">))</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L462" class="LineNr">462 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L167'>trace</a><span class="Delimiter">(</span><span class="Constant">9993</span><span class="Delimiter">,</span> <span class="Constant">&quot;transform&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;  product: &quot;</span> &lt;&lt; <a href='028call_return.cc.html#L163'>to_string</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">))</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L463" class="LineNr">463 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">).</span>type<span class="Delimiter">)</span> <span class="Identifier">continue</span><span class="Delimiter">;</span>
-<span id="L464" class="LineNr">464 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>header_type<span class="Delimiter">.</span>find<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">).</span>name<span class="Delimiter">)</span> == header_type<span class="Delimiter">.</span><a href='003trace.cc.html#L197'>end</a><span class="Delimiter">())</span>
+<span id="L464" class="LineNr">464 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>header_type<span class="Delimiter">.</span>find<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">).</span>name<span class="Delimiter">)</span> == header_type<span class="Delimiter">.</span><a href='003trace.cc.html#L203'>end</a><span class="Delimiter">())</span>
 <span id="L465" class="LineNr">465 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Identifier">continue</span><span class="Delimiter">;</span>
 <span id="L466" class="LineNr">466 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>!contains_key<span class="Delimiter">(</span>header_type<span class="Delimiter">,</span> inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">).</span>name<span class="Delimiter">))</span> <span class="Identifier">continue</span><span class="Delimiter">;</span>  <span class="Comment">// error handled elsewhere</span>
 <span id="L467" class="LineNr">467 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">).</span>type = <span class="Normal">new</span> type_tree<span class="Delimiter">(</span>*get<span class="Delimiter">(</span>header_type<span class="Delimiter">,</span> inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">).</span>name<span class="Delimiter">));</span>
-<span id="L468" class="LineNr">468 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">9993</span><span class="Delimiter">,</span> <span class="Constant">&quot;transform&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;type of &quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">).</span>name &lt;&lt; <span class="Constant">&quot; is &quot;</span> &lt;&lt; names_to_string<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">).</span>type<span class="Delimiter">)</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L468" class="LineNr">468 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L167'>trace</a><span class="Delimiter">(</span><span class="Constant">9993</span><span class="Delimiter">,</span> <span class="Constant">&quot;transform&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;type of &quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">).</span>name &lt;&lt; <span class="Constant">&quot; is &quot;</span> &lt;&lt; names_to_string<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">).</span>type<span class="Delimiter">)</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L469" class="LineNr">469 </span>  <span class="Conceal">¦</span> <span class="Delimiter">}</span>
 <span id="L470" class="LineNr">470 </span>  <span class="Delimiter">}</span>
 <span id="L471" class="LineNr">471 </span><span class="Delimiter">}</span>
@@ -557,7 +557,7 @@ if ('onhashchange' in window) {
 <span id="L491" class="LineNr">491 </span><span class="Delimiter">:(code)</span>
 <span id="L492" class="LineNr">492 </span><span class="Normal">void</span> fill_in_return_ingredients<span class="Delimiter">(</span><span class="Normal">const</span> <a href='010vm.cc.html#L14'>recipe_ordinal</a> r<span class="Delimiter">)</span> <span class="Delimiter">{</span>
 <span id="L493" class="LineNr">493 </span>  recipe&amp; caller_recipe = get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">);</span>
-<span id="L494" class="LineNr">494 </span>  <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">9991</span><span class="Delimiter">,</span> <span class="Constant">&quot;transform&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;--- fill in return ingredients from header for <a href='010vm.cc.html#L19'>recipe</a> &quot;</span> &lt;&lt; caller_recipe<span class="Delimiter">.</span>name &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L494" class="LineNr">494 </span>  <a href='003trace.cc.html#L167'>trace</a><span class="Delimiter">(</span><span class="Constant">9991</span><span class="Delimiter">,</span> <span class="Constant">&quot;transform&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;--- fill in return ingredients from header for <a href='010vm.cc.html#L19'>recipe</a> &quot;</span> &lt;&lt; caller_recipe<span class="Delimiter">.</span>name &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L495" class="LineNr">495 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!caller_recipe<span class="Delimiter">.</span>has_header<span class="Delimiter">)</span> <span class="Identifier">return</span><span class="Delimiter">;</span>
 <span id="L496" class="LineNr">496 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> i = <span class="Constant">0</span><span class="Delimiter">;</span>  i &lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>caller_recipe<span class="Delimiter">.</span>steps<span class="Delimiter">);</span>  ++i<span class="Delimiter">)</span> <span class="Delimiter">{</span>
 <span id="L497" class="LineNr">497 </span>  <span class="Conceal">¦</span> instruction&amp; inst = caller_recipe<span class="Delimiter">.</span>steps<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">);</span>
@@ -690,12 +690,12 @@ if ('onhashchange' in window) {
 <span id="L624" class="LineNr">624 </span><span class="Normal">void</span> check_recipe_header_constraints<span class="Delimiter">(</span><span class="Normal">const</span> <a href='010vm.cc.html#L14'>recipe_ordinal</a> r<span class="Delimiter">)</span> <span class="Delimiter">{</span>
 <span id="L625" class="LineNr">625 </span>  <span class="Normal">const</span> recipe&amp; caller = get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">);</span>
 <span id="L626" class="LineNr">626 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>caller<span class="Delimiter">.</span>name != <span class="Constant">&quot;main&quot;</span><span class="Delimiter">)</span> <span class="Identifier">return</span><span class="Delimiter">;</span>
-<span id="L627" class="LineNr">627 </span>  <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">9992</span><span class="Delimiter">,</span> <span class="Constant">&quot;transform&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;check <a href='010vm.cc.html#L19'>recipe</a> header constraints for <a href='010vm.cc.html#L19'>recipe</a> &quot;</span> &lt;&lt; caller<span class="Delimiter">.</span>name &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L627" class="LineNr">627 </span>  <a href='003trace.cc.html#L167'>trace</a><span class="Delimiter">(</span><span class="Constant">9992</span><span class="Delimiter">,</span> <span class="Constant">&quot;transform&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;check <a href='010vm.cc.html#L19'>recipe</a> header constraints for <a href='010vm.cc.html#L19'>recipe</a> &quot;</span> &lt;&lt; caller<span class="Delimiter">.</span>name &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L628" class="LineNr">628 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!caller<span class="Delimiter">.</span>has_header<span class="Delimiter">)</span> <span class="Identifier">return</span><span class="Delimiter">;</span>
 <span id="L629" class="LineNr">629 </span>  reagent<span class="Comment">/*</span><span class="Comment">local</span><span class="Comment">*/</span> expected_ingredient<span class="Delimiter">(</span><span class="Constant">&quot;x:<a href='043space.cc.html#L82'>address</a>:array:character&quot;</span><span class="Delimiter">);</span>
 <span id="L630" class="LineNr">630 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> i = <span class="Constant">0</span><span class="Delimiter">;</span> i &lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>caller<span class="Delimiter">.</span>ingredients<span class="Delimiter">);</span> ++i<span class="Delimiter">)</span> <span class="Delimiter">{</span>
 <span id="L631" class="LineNr">631 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>!types_strictly_match<span class="Delimiter">(</span>expected_ingredient<span class="Delimiter">,</span> caller<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">)))</span> <span class="Delimiter">{</span>
-<span id="L632" class="LineNr">632 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <span class="Constant">&quot;ingredients of <a href='010vm.cc.html#L19'>recipe</a> 'main' must all be text (address:array:character)</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L632" class="LineNr">632 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <span class="Constant">&quot;ingredients of <a href='010vm.cc.html#L19'>recipe</a> 'main' must all be text (address:array:character)</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L633" class="LineNr">633 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L634" class="LineNr">634 </span>  <span class="Conceal">¦</span> <span class="Delimiter">}</span>
 <span id="L635" class="LineNr">635 </span>  <span class="Delimiter">}</span>
@@ -703,7 +703,7 @@ if ('onhashchange' in window) {
 <span id="L637" class="LineNr">637 </span>  reagent<span class="Comment">/*</span><span class="Comment">local</span><span class="Comment">*/</span> expected_product<span class="Delimiter">(</span><span class="Constant">&quot;x:number&quot;</span><span class="Delimiter">);</span>
 <span id="L638" class="LineNr">638 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>nprod &gt; <span class="Constant">1</span>
 <span id="L639" class="LineNr">639 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> || <span class="Delimiter">(</span>nprod == <span class="Constant">1</span> &amp;&amp; !types_strictly_match<span class="Delimiter">(</span>expected_product<span class="Delimiter">,</span> caller<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">))))</span> <span class="Delimiter">{</span>
-<span id="L640" class="LineNr">640 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <span class="Constant">&quot;recipe 'main' must return at most a single product, a number</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L640" class="LineNr">640 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <span class="Constant">&quot;recipe 'main' must return at most a single product, a number</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L641" class="LineNr">641 </span>  <span class="Delimiter">}</span>
 <span id="L642" class="LineNr">642 </span><span class="Delimiter">}</span>
 </pre>
diff --git a/html/054static_dispatch.cc.html b/html/054static_dispatch.cc.html
index 80cceda0..b639bdb8 100644
--- a/html/054static_dispatch.cc.html
+++ b/html/054static_dispatch.cc.html
@@ -107,7 +107,7 @@ if ('onhashchange' in window) {
 <span id="L41" class="LineNr"> 41 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='001help.cc.html#L221'>put</a><span class="Delimiter">(</span>Recipe_ordinal<span class="Delimiter">,</span> new_name<span class="Delimiter">,</span> Next_recipe_ordinal++<span class="Delimiter">);</span>
 <span id="L42" class="LineNr"> 42 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='001help.cc.html#L229'>get_or_insert</a><span class="Delimiter">(</span>Recipe_variants<span class="Delimiter">,</span> result<span class="Delimiter">.</span>name<span class="Delimiter">).</span>push_back<span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe_ordinal<span class="Delimiter">,</span> new_name<span class="Delimiter">));</span>
 <span id="L43" class="LineNr"> 43 </span>  <span class="Conceal">¦</span> <span class="Delimiter">}</span>
-<span id="L44" class="LineNr"> 44 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">&quot;load&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;switching &quot;</span> &lt;&lt; result<span class="Delimiter">.</span>name &lt;&lt; <span class="Constant">&quot; to &quot;</span> &lt;&lt; new_name &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L44" class="LineNr"> 44 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L167'>trace</a><span class="Delimiter">(</span><span class="Constant">&quot;load&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;switching &quot;</span> &lt;&lt; result<span class="Delimiter">.</span>name &lt;&lt; <span class="Constant">&quot; to &quot;</span> &lt;&lt; new_name &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L45" class="LineNr"> 45 </span>  <span class="Conceal">¦</span> result<span class="Delimiter">.</span>name = new_name<span class="Delimiter">;</span>
 <span id="L46" class="LineNr"> 46 </span>  <span class="Conceal">¦</span> result<span class="Delimiter">.</span>is_autogenerated = <span class="Constant">true</span><span class="Delimiter">;</span>
 <span id="L47" class="LineNr"> 47 </span>  <span class="Delimiter">}</span>
@@ -165,9 +165,9 @@ if ('onhashchange' in window) {
 <span id="L99" class="LineNr"> 99 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>a<span class="Delimiter">-&gt;</span>name == <span class="Constant">&quot;literal&quot;</span> &amp;&amp; b<span class="Delimiter">-&gt;</span>name == <span class="Constant">&quot;literal&quot;</span><span class="Delimiter">)</span>
 <span id="L100" class="LineNr">100 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Identifier">return</span> <span class="Constant">true</span><span class="Delimiter">;</span>
 <span id="L101" class="LineNr">101 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>a<span class="Delimiter">-&gt;</span>name == <span class="Constant">&quot;literal&quot;</span><span class="Delimiter">)</span>
-<span id="L102" class="LineNr">102 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Identifier">return</span> Literal_type_names<span class="Delimiter">.</span>find<span class="Delimiter">(</span>b<span class="Delimiter">-&gt;</span>name<span class="Delimiter">)</span> != Literal_type_names<span class="Delimiter">.</span><a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L102" class="LineNr">102 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Identifier">return</span> Literal_type_names<span class="Delimiter">.</span>find<span class="Delimiter">(</span>b<span class="Delimiter">-&gt;</span>name<span class="Delimiter">)</span> != Literal_type_names<span class="Delimiter">.</span><a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L103" class="LineNr">103 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>b<span class="Delimiter">-&gt;</span>name == <span class="Constant">&quot;literal&quot;</span><span class="Delimiter">)</span>
-<span id="L104" class="LineNr">104 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Identifier">return</span> Literal_type_names<span class="Delimiter">.</span>find<span class="Delimiter">(</span>a<span class="Delimiter">-&gt;</span>name<span class="Delimiter">)</span> != Literal_type_names<span class="Delimiter">.</span><a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L104" class="LineNr">104 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Identifier">return</span> Literal_type_names<span class="Delimiter">.</span>find<span class="Delimiter">(</span>a<span class="Delimiter">-&gt;</span>name<span class="Delimiter">)</span> != Literal_type_names<span class="Delimiter">.</span><a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L105" class="LineNr">105 </span>  <span class="Conceal">¦</span> <span class="Identifier">return</span> a<span class="Delimiter">-&gt;</span>name == b<span class="Delimiter">-&gt;</span>name<span class="Delimiter">;</span>
 <span id="L106" class="LineNr">106 </span>  <span class="Delimiter">}</span>
 <span id="L107" class="LineNr">107 </span>  <span class="Identifier">return</span> deeply_equal_type_names<span class="Delimiter">(</span>a<span class="Delimiter">-&gt;</span>left<span class="Delimiter">,</span> b<span class="Delimiter">-&gt;</span>left<span class="Delimiter">)</span>
@@ -228,534 +228,538 @@ if ('onhashchange' in window) {
 <span id="L162" class="LineNr">162 </span><span class="Delimiter">:(code)</span>
 <span id="L163" class="LineNr">163 </span><span class="Normal">void</span> <a href='054static_dispatch.cc.html#L163'>resolve_ambiguous_calls</a><span class="Delimiter">(</span><span class="Normal">const</span> <a href='010vm.cc.html#L14'>recipe_ordinal</a> r<span class="Delimiter">)</span> <span class="Delimiter">{</span>
 <span id="L164" class="LineNr">164 </span>  recipe&amp; caller_recipe = get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">);</span>
-<span id="L165" class="LineNr">165 </span>  <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">9991</span><span class="Delimiter">,</span> <span class="Constant">&quot;transform&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;--- resolve ambiguous calls for <a href='010vm.cc.html#L19'>recipe</a> &quot;</span> &lt;&lt; caller_recipe<span class="Delimiter">.</span>name &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L165" class="LineNr">165 </span>  <a href='003trace.cc.html#L167'>trace</a><span class="Delimiter">(</span><span class="Constant">9991</span><span class="Delimiter">,</span> <span class="Constant">&quot;transform&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;--- resolve ambiguous calls for <a href='010vm.cc.html#L19'>recipe</a> &quot;</span> &lt;&lt; caller_recipe<span class="Delimiter">.</span>name &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L166" class="LineNr">166 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> index = <span class="Constant">0</span><span class="Delimiter">;</span>  index &lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>caller_recipe<span class="Delimiter">.</span>steps<span class="Delimiter">);</span>  ++index<span class="Delimiter">)</span> <span class="Delimiter">{</span>
 <span id="L167" class="LineNr">167 </span>  <span class="Conceal">¦</span> instruction&amp; inst = caller_recipe<span class="Delimiter">.</span>steps<span class="Delimiter">.</span>at<span class="Delimiter">(</span>index<span class="Delimiter">);</span>
 <span id="L168" class="LineNr">168 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>inst<span class="Delimiter">.</span>is_label<span class="Delimiter">)</span> <span class="Identifier">continue</span><span class="Delimiter">;</span>
-<span id="L169" class="LineNr">169 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span><a href='054static_dispatch.cc.html#L366'>non_ghost_size</a><span class="Delimiter">(</span><a href='001help.cc.html#L229'>get_or_insert</a><span class="Delimiter">(</span>Recipe_variants<span class="Delimiter">,</span> inst<span class="Delimiter">.</span>name<span class="Delimiter">))</span> == <span class="Constant">0</span><span class="Delimiter">)</span> <span class="Identifier">continue</span><span class="Delimiter">;</span>
-<span id="L170" class="LineNr">170 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">9992</span><span class="Delimiter">,</span> <span class="Constant">&quot;transform&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;instruction &quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
-<span id="L171" class="LineNr">171 </span>  <span class="Conceal">¦</span> Resolve_stack<span class="Delimiter">.</span>push_front<span class="Delimiter">(</span>call<span class="Delimiter">(</span>r<span class="Delimiter">));</span>
-<span id="L172" class="LineNr">172 </span>  <span class="Conceal">¦</span> Resolve_stack<span class="Delimiter">.</span>front<span class="Delimiter">().</span>running_step_index = index<span class="Delimiter">;</span>
-<span id="L173" class="LineNr">173 </span>  <span class="Conceal">¦</span> string new_name = best_variant<span class="Delimiter">(</span>inst<span class="Delimiter">,</span> caller_recipe<span class="Delimiter">);</span>
-<span id="L174" class="LineNr">174 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>!new_name<span class="Delimiter">.</span>empty<span class="Delimiter">())</span>
-<span id="L175" class="LineNr">175 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> inst<span class="Delimiter">.</span>name = new_name<span class="Delimiter">;</span>
-<span id="L176" class="LineNr">176 </span>  <span class="Conceal">¦</span> assert<span class="Delimiter">(</span>Resolve_stack<span class="Delimiter">.</span>front<span class="Delimiter">().</span>running_recipe == r<span class="Delimiter">);</span>
-<span id="L177" class="LineNr">177 </span>  <span class="Conceal">¦</span> assert<span class="Delimiter">(</span>Resolve_stack<span class="Delimiter">.</span>front<span class="Delimiter">().</span>running_step_index == index<span class="Delimiter">);</span>
-<span id="L178" class="LineNr">178 </span>  <span class="Conceal">¦</span> Resolve_stack<span class="Delimiter">.</span>pop_front<span class="Delimiter">();</span>
-<span id="L179" class="LineNr">179 </span>  <span class="Delimiter">}</span>
-<span id="L180" class="LineNr">180 </span><span class="Delimiter">}</span>
-<span id="L181" class="LineNr">181 </span>
-<span id="L182" class="LineNr">182 </span>string best_variant<span class="Delimiter">(<span class="Normal">const</span> </span>instruction&amp; inst<span class="Delimiter">,</span> <span class="Normal">const</span> recipe&amp; caller_recipe<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L183" class="LineNr">183 </span>  <span class="Normal">const</span> vector&lt;recipe_ordinal&gt;&amp; variants = get<span class="Delimiter">(</span>Recipe_variants<span class="Delimiter">,</span> inst<span class="Delimiter">.</span>name<span class="Delimiter">);</span>
-<span id="L184" class="LineNr">184 </span>  vector&lt;recipe_ordinal&gt; candidates<span class="Delimiter">;</span>
+<span id="L169" class="LineNr">169 </span>  <span class="Conceal">¦</span> <a href='054static_dispatch.cc.html#L173'>resolve_ambiguous_call</a><span class="Delimiter">(</span>r<span class="Delimiter">,</span> index<span class="Delimiter">,</span> inst<span class="Delimiter">,</span> caller_recipe<span class="Delimiter">);</span>
+<span id="L170" class="LineNr">170 </span>  <span class="Delimiter">}</span>
+<span id="L171" class="LineNr">171 </span><span class="Delimiter">}</span>
+<span id="L172" class="LineNr">172 </span>
+<span id="L173" class="LineNr">173 </span><span class="Normal">void</span> <a href='054static_dispatch.cc.html#L173'>resolve_ambiguous_call</a><span class="Delimiter">(</span><span class="Normal">const</span> <a href='010vm.cc.html#L14'>recipe_ordinal</a> r<span class="Delimiter">,</span> <span class="Normal">int</span> index<span class="Delimiter">,</span> instruction&amp; inst<span class="Delimiter">,</span> <span class="Normal">const</span> recipe&amp; caller_recipe<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L174" class="LineNr">174 </span>  <span class="Comment">// End resolve_ambiguous_call(r, index, inst, caller_recipe) Special-cases</span>
+<span id="L175" class="LineNr">175 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span><a href='054static_dispatch.cc.html#L370'>non_ghost_size</a><span class="Delimiter">(</span><a href='001help.cc.html#L229'>get_or_insert</a><span class="Delimiter">(</span>Recipe_variants<span class="Delimiter">,</span> inst<span class="Delimiter">.</span>name<span class="Delimiter">))</span> == <span class="Constant">0</span><span class="Delimiter">)</span> <span class="Identifier">return</span><span class="Delimiter">;</span>
+<span id="L176" class="LineNr">176 </span>  <a href='003trace.cc.html#L167'>trace</a><span class="Delimiter">(</span><span class="Constant">9992</span><span class="Delimiter">,</span> <span class="Constant">&quot;transform&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;instruction &quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
+<span id="L177" class="LineNr">177 </span>  Resolve_stack<span class="Delimiter">.</span>push_front<span class="Delimiter">(</span>call<span class="Delimiter">(</span>r<span class="Delimiter">,</span> index<span class="Delimiter">));</span>
+<span id="L178" class="LineNr">178 </span>  string new_name = best_variant<span class="Delimiter">(</span>inst<span class="Delimiter">,</span> caller_recipe<span class="Delimiter">);</span>
+<span id="L179" class="LineNr">179 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!new_name<span class="Delimiter">.</span>empty<span class="Delimiter">())</span>
+<span id="L180" class="LineNr">180 </span>  <span class="Conceal">¦</span> inst<span class="Delimiter">.</span>name = new_name<span class="Delimiter">;</span>
+<span id="L181" class="LineNr">181 </span>  assert<span class="Delimiter">(</span>Resolve_stack<span class="Delimiter">.</span>front<span class="Delimiter">().</span>running_recipe == r<span class="Delimiter">);</span>
+<span id="L182" class="LineNr">182 </span>  assert<span class="Delimiter">(</span>Resolve_stack<span class="Delimiter">.</span>front<span class="Delimiter">().</span>running_step_index == index<span class="Delimiter">);</span>
+<span id="L183" class="LineNr">183 </span>  Resolve_stack<span class="Delimiter">.</span>pop_front<span class="Delimiter">();</span>
+<span id="L184" class="LineNr">184 </span><span class="Delimiter">}</span>
 <span id="L185" class="LineNr">185 </span>
-<span id="L186" class="LineNr">186 </span>  <span class="Comment">// Static Dispatch Phase 1</span>
-<span id="L187" class="LineNr">187 </span><span class="CommentedCode">//?   cerr &lt;&lt; inst.name &lt;&lt; &quot; phase 1\n&quot;;</span>
-<span id="L188" class="LineNr">188 </span>  candidates = <a href='054static_dispatch.cc.html#L241'>strictly_matching_variants</a><span class="Delimiter">(</span>inst<span class="Delimiter">,</span> variants<span class="Delimiter">);</span>
-<span id="L189" class="LineNr">189 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!candidates<span class="Delimiter">.</span>empty<span class="Delimiter">())</span> <span class="Identifier">return</span> best_variant<span class="Delimiter">(</span>inst<span class="Delimiter">,</span> candidates<span class="Delimiter">).</span>name<span class="Delimiter">;</span>
-<span id="L190" class="LineNr">190 </span>
-<span id="L191" class="LineNr">191 </span>  <span class="Comment">// Static Dispatch Phase 2</span>
-<span id="L192" class="LineNr">192 </span><span class="CommentedCode">//?   cerr &lt;&lt; inst.name &lt;&lt; &quot; phase 2\n&quot;;</span>
-<span id="L193" class="LineNr">193 </span>  candidates = <a href='054static_dispatch.cc.html#L270'>strictly_matching_variants_except_literal_against_address_or_boolean</a><span class="Delimiter">(</span>inst<span class="Delimiter">,</span> variants<span class="Delimiter">);</span>
-<span id="L194" class="LineNr">194 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!candidates<span class="Delimiter">.</span>empty<span class="Delimiter">())</span> <span class="Identifier">return</span> best_variant<span class="Delimiter">(</span>inst<span class="Delimiter">,</span> candidates<span class="Delimiter">).</span>name<span class="Delimiter">;</span>
-<span id="L195" class="LineNr">195 </span>
-<span id="L196" class="LineNr">196 </span><span class="CommentedCode">//?   cerr &lt;&lt; inst.name &lt;&lt; &quot; phase 3\n&quot;;</span>
-<span id="L197" class="LineNr">197 </span>  <span class="Comment">// Static Dispatch Phase 3</span>
-<span id="L198" class="LineNr">198 </span>  <span class="Comment">//: (shape-shifting recipes in a later layer)</span>
-<span id="L199" class="LineNr">199 </span>  <span class="Comment">// End Static Dispatch Phase 3</span>
-<span id="L200" class="LineNr">200 </span>
-<span id="L201" class="LineNr">201 </span>  <span class="Comment">// Static Dispatch Phase 4</span>
-<span id="L202" class="LineNr">202 </span><span class="CommentedCode">//?   cerr &lt;&lt; inst.name &lt;&lt; &quot; phase 4\n&quot;;</span>
-<span id="L203" class="LineNr">203 </span>  candidates = <a href='054static_dispatch.cc.html#L309'>matching_variants</a><span class="Delimiter">(</span>inst<span class="Delimiter">,</span> variants<span class="Delimiter">);</span>
-<span id="L204" class="LineNr">204 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!candidates<span class="Delimiter">.</span>empty<span class="Delimiter">())</span> <span class="Identifier">return</span> best_variant<span class="Delimiter">(</span>inst<span class="Delimiter">,</span> candidates<span class="Delimiter">).</span>name<span class="Delimiter">;</span>
-<span id="L205" class="LineNr">205 </span>
-<span id="L206" class="LineNr">206 </span>  <span class="Comment">// error messages</span>
-<span id="L207" class="LineNr">207 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!is_primitive<span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe_ordinal<span class="Delimiter">,</span> inst<span class="Delimiter">.</span>name<span class="Delimiter">)))</span> <span class="Delimiter">{</span>  <span class="Comment">// we currently don't check types for primitive variants</span>
-<span id="L208" class="LineNr">208 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>variants<span class="Delimiter">)</span> == <span class="Constant">1</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L209" class="LineNr">209 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>caller_recipe<span class="Delimiter">.</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;types don't match in call for '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; end<span class="Delimiter">();</span>
-<span id="L210" class="LineNr">210 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <span class="Constant">&quot;  which tries to call '&quot;</span> &lt;&lt; original_header_label<span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> variants<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">)))</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
-<span id="L211" class="LineNr">211 </span>  <span class="Conceal">¦</span> <span class="Delimiter">}</span>
-<span id="L212" class="LineNr">212 </span>  <span class="Conceal">¦</span> <span class="Normal">else</span> <span class="Delimiter">{</span>
-<span id="L213" class="LineNr">213 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>caller_recipe<span class="Delimiter">.</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;failed to find a matching call for '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
-<span id="L214" class="LineNr">214 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <span class="Constant">&quot;  available variants are:</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
-<span id="L215" class="LineNr">215 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> i = <span class="Constant">0</span><span class="Delimiter">;</span>  i &lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>variants<span class="Delimiter">);</span>  ++i<span class="Delimiter">)</span>
-<span id="L216" class="LineNr">216 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <span class="Constant">&quot;    &quot;</span> &lt;&lt; <a href='054static_dispatch.cc.html#L590'>original_header_label</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> variants<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">)))</span> &lt;&lt; <span class="cSpecial">'\n'</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
-<span id="L217" class="LineNr">217 </span>  <span class="Conceal">¦</span> <span class="Delimiter">}</span>
-<span id="L218" class="LineNr">218 </span>  <span class="Conceal">¦</span> <span class="Normal">for</span> <span class="Delimiter">(</span>list&lt;call&gt;::iterator p = <span class="Comment">/*</span><span class="Comment">skip</span><span class="Comment">*/</span>++Resolve_stack<span class="Delimiter">.</span>begin<span class="Delimiter">();</span>  p != Resolve_stack<span class="Delimiter">.</span><a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>  ++p<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L219" class="LineNr">219 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">const</span> recipe&amp; specializer_recipe = get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> p<span class="Delimiter">-&gt;</span>running_recipe<span class="Delimiter">);</span>
-<span id="L220" class="LineNr">220 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">const</span> instruction&amp; specializer_inst = specializer_recipe<span class="Delimiter">.</span>steps<span class="Delimiter">.</span>at<span class="Delimiter">(</span>p<span class="Delimiter">-&gt;</span>running_step_index<span class="Delimiter">);</span>
-<span id="L221" class="LineNr">221 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>specializer_recipe<span class="Delimiter">.</span>name != <span class="Constant">&quot;interactive&quot;</span><span class="Delimiter">)</span>
-<span id="L222" class="LineNr">222 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <span class="Constant">&quot;  (from '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>specializer_inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;' in &quot;</span> &lt;&lt; specializer_recipe<span class="Delimiter">.</span>name &lt;&lt; <span class="Constant">&quot;)</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
-<span id="L223" class="LineNr">223 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">else</span>
-<span id="L224" class="LineNr">224 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <span class="Constant">&quot;  (from '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>specializer_inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;')</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
-<span id="L225" class="LineNr">225 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Comment">// One special-case to help with the rewrite_stash transform. (cross-layer)</span>
-<span id="L226" class="LineNr">226 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>specializer_inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>name<span class="Delimiter">.</span>find<span class="Delimiter">(</span><span class="Constant">&quot;stash_&quot;</span><span class="Delimiter">)</span> == <span class="Constant">0</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L227" class="LineNr">227 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='010vm.cc.html#L32'>instruction</a> stash_inst<span class="Delimiter">;</span>
-<span id="L228" class="LineNr">228 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span><a href='054static_dispatch.cc.html#L373'>next_stash</a><span class="Delimiter">(</span>*p<span class="Delimiter">,</span> &amp;stash_inst<span class="Delimiter">))</span> <span class="Delimiter">{</span>
-<span id="L229" class="LineNr">229 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>specializer_recipe<span class="Delimiter">.</span>name != <span class="Constant">&quot;interactive&quot;</span><span class="Delimiter">)</span>
-<span id="L230" class="LineNr">230 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <span class="Constant">&quot;  (part of '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>stash_inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;' in &quot;</span> &lt;&lt; specializer_recipe<span class="Delimiter">.</span>name &lt;&lt; <span class="Constant">&quot;)</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
-<span id="L231" class="LineNr">231 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">else</span>
-<span id="L232" class="LineNr">232 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <span class="Constant">&quot;  (part of '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>stash_inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;')</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
-<span id="L233" class="LineNr">233 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Delimiter">}</span>
-<span id="L234" class="LineNr">234 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Delimiter">}</span>
-<span id="L235" class="LineNr">235 </span>  <span class="Conceal">¦</span> <span class="Delimiter">}</span>
-<span id="L236" class="LineNr">236 </span>  <span class="Delimiter">}</span>
-<span id="L237" class="LineNr">237 </span>  <span class="Identifier">return</span> <span class="Constant">&quot;&quot;</span><span class="Delimiter">;</span>
-<span id="L238" class="LineNr">238 </span><span class="Delimiter">}</span>
-<span id="L239" class="LineNr">239 </span>
-<span id="L240" class="LineNr">240 </span><span class="Comment">// phase 1</span>
-<span id="L241" class="LineNr">241 </span>vector&lt;recipe_ordinal&gt; <a href='054static_dispatch.cc.html#L241'>strictly_matching_variants</a><span class="Delimiter">(</span><span class="Normal">const</span> instruction&amp; inst<span class="Delimiter">,</span> <span class="Normal">const</span> vector&lt;recipe_ordinal&gt;&amp; variants<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L242" class="LineNr">242 </span>  vector&lt;recipe_ordinal&gt; result<span class="Delimiter">;</span>
-<span id="L243" class="LineNr">243 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> i = <span class="Constant">0</span><span class="Delimiter">;</span>  i &lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>variants<span class="Delimiter">);</span>  ++i<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L244" class="LineNr">244 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>variants<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">)</span> == -<span class="Constant">1</span><span class="Delimiter">)</span> <span class="Identifier">continue</span><span class="Delimiter">;</span>
-<span id="L245" class="LineNr">245 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">9992</span><span class="Delimiter">,</span> <span class="Constant">&quot;transform&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;checking variant (strict) &quot;</span> &lt;&lt; i &lt;&lt; <span class="Constant">&quot;: &quot;</span> &lt;&lt; header_label<span class="Delimiter">(</span>variants<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">))</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
-<span id="L246" class="LineNr">246 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span><a href='054static_dispatch.cc.html#L252'>all_header_reagents_strictly_match</a><span class="Delimiter">(</span>inst<span class="Delimiter">,</span> get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> variants<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">))))</span>
-<span id="L247" class="LineNr">247 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> result<span class="Delimiter">.</span>push_back<span class="Delimiter">(</span>variants<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">));</span>
-<span id="L248" class="LineNr">248 </span>  <span class="Delimiter">}</span>
-<span id="L249" class="LineNr">249 </span>  <span class="Identifier">return</span> result<span class="Delimiter">;</span>
-<span id="L250" class="LineNr">250 </span><span class="Delimiter">}</span>
-<span id="L251" class="LineNr">251 </span>
-<span id="L252" class="LineNr">252 </span><span class="Normal">bool</span> <a href='054static_dispatch.cc.html#L252'>all_header_reagents_strictly_match</a><span class="Delimiter">(</span><span class="Normal">const</span> instruction&amp; inst<span class="Delimiter">,</span> <span class="Normal">const</span> recipe&amp; variant<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L253" class="LineNr">253 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> i = <span class="Constant">0</span><span class="Delimiter">;</span>  i &lt; min<span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">),</span> <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>variant<span class="Delimiter">.</span>ingredients<span class="Delimiter">));</span>  ++i<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L254" class="LineNr">254 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>!types_strictly_match<span class="Delimiter">(</span>variant<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">),</span> inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">)))</span> <span class="Delimiter">{</span>
-<span id="L255" class="LineNr">255 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">9993</span><span class="Delimiter">,</span> <span class="Constant">&quot;transform&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;strict match failed: ingredient &quot;</span> &lt;&lt; i &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
-<span id="L256" class="LineNr">256 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Identifier">return</span> <span class="Constant">false</span><span class="Delimiter">;</span>
-<span id="L257" class="LineNr">257 </span>  <span class="Conceal">¦</span> <span class="Delimiter">}</span>
-<span id="L258" class="LineNr">258 </span>  <span class="Delimiter">}</span>
-<span id="L259" class="LineNr">259 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> i = <span class="Constant">0</span><span class="Delimiter">;</span>  i &lt; min<span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>products<span class="Delimiter">),</span> <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>variant<span class="Delimiter">.</span>products<span class="Delimiter">));</span>  ++i<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L260" class="LineNr">260 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>is_dummy<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">)))</span> <span class="Identifier">continue</span><span class="Delimiter">;</span>
-<span id="L261" class="LineNr">261 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>!types_strictly_match<span class="Delimiter">(</span>variant<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">),</span> inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">)))</span> <span class="Delimiter">{</span>
-<span id="L262" class="LineNr">262 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">9993</span><span class="Delimiter">,</span> <span class="Constant">&quot;transform&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;strict match failed: product &quot;</span> &lt;&lt; i &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
-<span id="L263" class="LineNr">263 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Identifier">return</span> <span class="Constant">false</span><span class="Delimiter">;</span>
-<span id="L264" class="LineNr">264 </span>  <span class="Conceal">¦</span> <span class="Delimiter">}</span>
-<span id="L265" class="LineNr">265 </span>  <span class="Delimiter">}</span>
-<span id="L266" class="LineNr">266 </span>  <span class="Identifier">return</span> <span class="Constant">true</span><span class="Delimiter">;</span>
-<span id="L267" class="LineNr">267 </span><span class="Delimiter">}</span>
-<span id="L268" class="LineNr">268 </span>
-<span id="L269" class="LineNr">269 </span><span class="Comment">// phase 2</span>
-<span id="L270" class="LineNr">270 </span>vector&lt;recipe_ordinal&gt; <a href='054static_dispatch.cc.html#L270'>strictly_matching_variants_except_literal_against_address_or_boolean</a><span class="Delimiter">(</span><span class="Normal">const</span> instruction&amp; inst<span class="Delimiter">,</span> <span class="Normal">const</span> vector&lt;recipe_ordinal&gt;&amp; variants<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L271" class="LineNr">271 </span>  vector&lt;recipe_ordinal&gt; result<span class="Delimiter">;</span>
-<span id="L272" class="LineNr">272 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> i = <span class="Constant">0</span><span class="Delimiter">;</span>  i &lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>variants<span class="Delimiter">);</span>  ++i<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L273" class="LineNr">273 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>variants<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">)</span> == -<span class="Constant">1</span><span class="Delimiter">)</span> <span class="Identifier">continue</span><span class="Delimiter">;</span>
-<span id="L274" class="LineNr">274 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">9992</span><span class="Delimiter">,</span> <span class="Constant">&quot;transform&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;checking variant (strict except literal-against-boolean) &quot;</span> &lt;&lt; i &lt;&lt; <span class="Constant">&quot;: &quot;</span> &lt;&lt; header_label<span class="Delimiter">(</span>variants<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">))</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
-<span id="L275" class="LineNr">275 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span><a href='054static_dispatch.cc.html#L281'>all_header_reagents_strictly_match_except_literal_against_address_or_boolean</a><span class="Delimiter">(</span>inst<span class="Delimiter">,</span> get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> variants<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">))))</span>
-<span id="L276" class="LineNr">276 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> result<span class="Delimiter">.</span>push_back<span class="Delimiter">(</span>variants<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">));</span>
-<span id="L277" class="LineNr">277 </span>  <span class="Delimiter">}</span>
-<span id="L278" class="LineNr">278 </span>  <span class="Identifier">return</span> result<span class="Delimiter">;</span>
-<span id="L279" class="LineNr">279 </span><span class="Delimiter">}</span>
-<span id="L280" class="LineNr">280 </span>
-<span id="L281" class="LineNr">281 </span><span class="Normal">bool</span> <a href='054static_dispatch.cc.html#L281'>all_header_reagents_strictly_match_except_literal_against_address_or_boolean</a><span class="Delimiter">(</span><span class="Normal">const</span> instruction&amp; inst<span class="Delimiter">,</span> <span class="Normal">const</span> recipe&amp; variant<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L282" class="LineNr">282 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> i = <span class="Constant">0</span><span class="Delimiter">;</span>  i &lt; min<span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">),</span> <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>variant<span class="Delimiter">.</span>ingredients<span class="Delimiter">));</span>  ++i<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L283" class="LineNr">283 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>!types_strictly_match_except_literal_against_address_or_boolean<span class="Delimiter">(</span>variant<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">),</span> inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">)))</span> <span class="Delimiter">{</span>
-<span id="L284" class="LineNr">284 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">9993</span><span class="Delimiter">,</span> <span class="Constant">&quot;transform&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;match failed: ingredient &quot;</span> &lt;&lt; i &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
-<span id="L285" class="LineNr">285 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Identifier">return</span> <span class="Constant">false</span><span class="Delimiter">;</span>
-<span id="L286" class="LineNr">286 </span>  <span class="Conceal">¦</span> <span class="Delimiter">}</span>
-<span id="L287" class="LineNr">287 </span>  <span class="Delimiter">}</span>
-<span id="L288" class="LineNr">288 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> i = <span class="Constant">0</span><span class="Delimiter">;</span>  i &lt; min<span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>variant<span class="Delimiter">.</span>products<span class="Delimiter">),</span> <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>products<span class="Delimiter">));</span>  ++i<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L289" class="LineNr">289 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>is_dummy<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">)))</span> <span class="Identifier">continue</span><span class="Delimiter">;</span>
-<span id="L290" class="LineNr">290 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>!types_strictly_match_except_literal_against_address_or_boolean<span class="Delimiter">(</span>variant<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">),</span> inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">)))</span> <span class="Delimiter">{</span>
-<span id="L291" class="LineNr">291 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">9993</span><span class="Delimiter">,</span> <span class="Constant">&quot;transform&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;match failed: product &quot;</span> &lt;&lt; i &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
-<span id="L292" class="LineNr">292 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Identifier">return</span> <span class="Constant">false</span><span class="Delimiter">;</span>
-<span id="L293" class="LineNr">293 </span>  <span class="Conceal">¦</span> <span class="Delimiter">}</span>
-<span id="L294" class="LineNr">294 </span>  <span class="Delimiter">}</span>
-<span id="L295" class="LineNr">295 </span>  <span class="Identifier">return</span> <span class="Constant">true</span><span class="Delimiter">;</span>
-<span id="L296" class="LineNr">296 </span><span class="Delimiter">}</span>
-<span id="L297" class="LineNr">297 </span>
-<span id="L298" class="LineNr">298 </span><span class="Normal">bool</span> <a href='054static_dispatch.cc.html#L298'>types_strictly_match_except_literal_against_address_or_boolean</a><span class="Delimiter">(</span><span class="Normal">const</span> reagent&amp; to<span class="Delimiter">,</span> <span class="Normal">const</span> reagent&amp; from<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L299" class="LineNr">299 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>is_literal<span class="Delimiter">(</span>from<span class="Delimiter">)</span> &amp;&amp; <a href='021check_instruction.cc.html#L232'>is_mu_boolean</a><span class="Delimiter">(</span>to<span class="Delimiter">))</span>
-<span id="L300" class="LineNr">300 </span>  <span class="Conceal">¦</span> <span class="Identifier">return</span> from<span class="Delimiter">.</span>name == <span class="Constant">&quot;0&quot;</span> || from<span class="Delimiter">.</span>name == <span class="Constant">&quot;1&quot;</span><span class="Delimiter">;</span>
-<span id="L301" class="LineNr">301 </span>  <span class="Comment">// Match Literal Zero Against Address {</span>
-<span id="L302" class="LineNr">302 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>is_literal<span class="Delimiter">(</span>from<span class="Delimiter">)</span> &amp;&amp; is_mu_address<span class="Delimiter">(</span>to<span class="Delimiter">))</span>
-<span id="L303" class="LineNr">303 </span>  <span class="Conceal">¦</span> <span class="Identifier">return</span> from<span class="Delimiter">.</span>name == <span class="Constant">&quot;0&quot;</span><span class="Delimiter">;</span>
-<span id="L304" class="LineNr">304 </span>  <span class="Comment">// }</span>
-<span id="L305" class="LineNr">305 </span>  <span class="Identifier">return</span> types_strictly_match<span class="Delimiter">(</span>to<span class="Delimiter">,</span> from<span class="Delimiter">);</span>
-<span id="L306" class="LineNr">306 </span><span class="Delimiter">}</span>
-<span id="L307" class="LineNr">307 </span>
-<span id="L308" class="LineNr">308 </span><span class="Comment">// phase 4</span>
-<span id="L309" class="LineNr">309 </span>vector&lt;recipe_ordinal&gt; <a href='054static_dispatch.cc.html#L309'>matching_variants</a><span class="Delimiter">(</span><span class="Normal">const</span> instruction&amp; inst<span class="Delimiter">,</span> <span class="Normal">const</span> vector&lt;recipe_ordinal&gt;&amp; variants<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L310" class="LineNr">310 </span>  vector&lt;recipe_ordinal&gt; result<span class="Delimiter">;</span>
-<span id="L311" class="LineNr">311 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> i = <span class="Constant">0</span><span class="Delimiter">;</span>  i &lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>variants<span class="Delimiter">);</span>  ++i<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L312" class="LineNr">312 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>variants<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">)</span> == -<span class="Constant">1</span><span class="Delimiter">)</span> <span class="Identifier">continue</span><span class="Delimiter">;</span>
-<span id="L313" class="LineNr">313 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">9992</span><span class="Delimiter">,</span> <span class="Constant">&quot;transform&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;checking variant &quot;</span> &lt;&lt; i &lt;&lt; <span class="Constant">&quot;: &quot;</span> &lt;&lt; header_label<span class="Delimiter">(</span>variants<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">))</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
-<span id="L314" class="LineNr">314 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span><a href='054static_dispatch.cc.html#L320'>all_header_reagents_match</a><span class="Delimiter">(</span>inst<span class="Delimiter">,</span> get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> variants<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">))))</span>
-<span id="L315" class="LineNr">315 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> result<span class="Delimiter">.</span>push_back<span class="Delimiter">(</span>variants<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">));</span>
-<span id="L316" class="LineNr">316 </span>  <span class="Delimiter">}</span>
-<span id="L317" class="LineNr">317 </span>  <span class="Identifier">return</span> result<span class="Delimiter">;</span>
-<span id="L318" class="LineNr">318 </span><span class="Delimiter">}</span>
-<span id="L319" class="LineNr">319 </span>
-<span id="L320" class="LineNr">320 </span><span class="Normal">bool</span> <a href='054static_dispatch.cc.html#L320'>all_header_reagents_match</a><span class="Delimiter">(</span><span class="Normal">const</span> instruction&amp; inst<span class="Delimiter">,</span> <span class="Normal">const</span> recipe&amp; variant<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L321" class="LineNr">321 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> i = <span class="Constant">0</span><span class="Delimiter">;</span>  i &lt; min<span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">),</span> <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>variant<span class="Delimiter">.</span>ingredients<span class="Delimiter">));</span>  ++i<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L322" class="LineNr">322 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>!types_match<span class="Delimiter">(</span>variant<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">),</span> inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">)))</span> <span class="Delimiter">{</span>
-<span id="L323" class="LineNr">323 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">9993</span><span class="Delimiter">,</span> <span class="Constant">&quot;transform&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;match failed: ingredient &quot;</span> &lt;&lt; i &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
-<span id="L324" class="LineNr">324 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Identifier">return</span> <span class="Constant">false</span><span class="Delimiter">;</span>
-<span id="L325" class="LineNr">325 </span>  <span class="Conceal">¦</span> <span class="Delimiter">}</span>
-<span id="L326" class="LineNr">326 </span>  <span class="Delimiter">}</span>
-<span id="L327" class="LineNr">327 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> i = <span class="Constant">0</span><span class="Delimiter">;</span>  i &lt; min<span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>variant<span class="Delimiter">.</span>products<span class="Delimiter">),</span> <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>products<span class="Delimiter">));</span>  ++i<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L328" class="LineNr">328 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>is_dummy<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">)))</span> <span class="Identifier">continue</span><span class="Delimiter">;</span>
-<span id="L329" class="LineNr">329 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>!types_match<span class="Delimiter">(</span>variant<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">),</span> inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">)))</span> <span class="Delimiter">{</span>
-<span id="L330" class="LineNr">330 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">9993</span><span class="Delimiter">,</span> <span class="Constant">&quot;transform&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;match failed: product &quot;</span> &lt;&lt; i &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
-<span id="L331" class="LineNr">331 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Identifier">return</span> <span class="Constant">false</span><span class="Delimiter">;</span>
-<span id="L332" class="LineNr">332 </span>  <span class="Conceal">¦</span> <span class="Delimiter">}</span>
-<span id="L333" class="LineNr">333 </span>  <span class="Delimiter">}</span>
-<span id="L334" class="LineNr">334 </span>  <span class="Identifier">return</span> <span class="Constant">true</span><span class="Delimiter">;</span>
-<span id="L335" class="LineNr">335 </span><span class="Delimiter">}</span>
-<span id="L336" class="LineNr">336 </span>
-<span id="L337" class="LineNr">337 </span><span class="Comment">// tie-breaker for each phase</span>
-<span id="L338" class="LineNr">338 </span><span class="Normal">const</span> recipe&amp; best_variant<span class="Delimiter">(</span><span class="Normal">const</span> instruction&amp; inst<span class="Delimiter">,</span> vector&lt;recipe_ordinal&gt;&amp; candidates<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L339" class="LineNr">339 </span>  assert<span class="Delimiter">(</span>!candidates<span class="Delimiter">.</span>empty<span class="Delimiter">());</span>
-<span id="L340" class="LineNr">340 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>candidates<span class="Delimiter">)</span> == <span class="Constant">1</span><span class="Delimiter">)</span> <span class="Identifier">return</span> get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> candidates<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">));</span>
-<span id="L341" class="LineNr">341 </span>  <span class="Normal">int</span> min_score = <span class="Constant">999</span><span class="Delimiter">;</span>
-<span id="L342" class="LineNr">342 </span>  <span class="Normal">int</span> min_index = <span class="Constant">0</span><span class="Delimiter">;</span>
-<span id="L343" class="LineNr">343 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> i = <span class="Constant">0</span><span class="Delimiter">;</span>  i &lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>candidates<span class="Delimiter">);</span>  ++i<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L344" class="LineNr">344 </span>  <span class="Conceal">¦</span> <span class="Normal">const</span> recipe&amp; candidate = get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> candidates<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">));</span>
-<span id="L345" class="LineNr">345 </span>  <span class="Conceal">¦</span> <span class="Comment">// prefer variants without extra or missing ingredients or products</span>
-<span id="L346" class="LineNr">346 </span>  <span class="Conceal">¦</span> <span class="Normal">int</span> score = abs<span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>candidate<span class="Delimiter">.</span>products<span class="Delimiter">)</span>-SIZE<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>products<span class="Delimiter">))</span>
-<span id="L347" class="LineNr">347 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span>     + abs<span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>candidate<span class="Delimiter">.</span>ingredients<span class="Delimiter">)</span>-SIZE<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">));</span>
-<span id="L348" class="LineNr">348 </span>  <span class="Conceal">¦</span> <span class="Comment">// prefer variants with non-address ingredients or products</span>
-<span id="L349" class="LineNr">349 </span>  <span class="Conceal">¦</span> <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> j = <span class="Constant">0</span><span class="Delimiter">;</span>  j &lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>candidate<span class="Delimiter">.</span>ingredients<span class="Delimiter">);</span>  ++j<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L350" class="LineNr">350 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>is_mu_address<span class="Delimiter">(</span>candidate<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>j<span class="Delimiter">)))</span>
-<span id="L351" class="LineNr">351 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> ++score<span class="Delimiter">;</span>
-<span id="L352" class="LineNr">352 </span>  <span class="Conceal">¦</span> <span class="Delimiter">}</span>
-<span id="L353" class="LineNr">353 </span>  <span class="Conceal">¦</span> <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> j = <span class="Constant">0</span><span class="Delimiter">;</span>  j &lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>candidate<span class="Delimiter">.</span>products<span class="Delimiter">);</span>  ++j<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L354" class="LineNr">354 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>is_mu_address<span class="Delimiter">(</span>candidate<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span>j<span class="Delimiter">)))</span>
+<span id="L186" class="LineNr">186 </span>string best_variant<span class="Delimiter">(</span><span class="Normal">const</span> instruction&amp; inst<span class="Delimiter">,</span> <span class="Normal">const</span> recipe&amp; caller_recipe<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L187" class="LineNr">187 </span>  <span class="Normal">const</span> vector&lt;recipe_ordinal&gt;&amp; variants = get<span class="Delimiter">(</span>Recipe_variants<span class="Delimiter">,</span> inst<span class="Delimiter">.</span>name<span class="Delimiter">);</span>
+<span id="L188" class="LineNr">188 </span>  vector&lt;recipe_ordinal&gt; candidates<span class="Delimiter">;</span>
+<span id="L189" class="LineNr">189 </span>
+<span id="L190" class="LineNr">190 </span>  <span class="Comment">// Static Dispatch Phase 1</span>
+<span id="L191" class="LineNr">191 </span><span class="CommentedCode">//?   cerr &lt;&lt; inst.name &lt;&lt; &quot; phase 1\n&quot;;</span>
+<span id="L192" class="LineNr">192 </span>  candidates = <a href='054static_dispatch.cc.html#L245'>strictly_matching_variants</a><span class="Delimiter">(</span>inst<span class="Delimiter">,</span> variants<span class="Delimiter">);</span>
+<span id="L193" class="LineNr">193 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!candidates<span class="Delimiter">.</span>empty<span class="Delimiter">())</span> <span class="Identifier">return</span> best_variant<span class="Delimiter">(</span>inst<span class="Delimiter">,</span> candidates<span class="Delimiter">).</span>name<span class="Delimiter">;</span>
+<span id="L194" class="LineNr">194 </span>
+<span id="L195" class="LineNr">195 </span>  <span class="Comment">// Static Dispatch Phase 2</span>
+<span id="L196" class="LineNr">196 </span><span class="CommentedCode">//?   cerr &lt;&lt; inst.name &lt;&lt; &quot; phase 2\n&quot;;</span>
+<span id="L197" class="LineNr">197 </span>  candidates = <a href='054static_dispatch.cc.html#L274'>strictly_matching_variants_except_literal_against_address_or_boolean</a><span class="Delimiter">(</span>inst<span class="Delimiter">,</span> variants<span class="Delimiter">);</span>
+<span id="L198" class="LineNr">198 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!candidates<span class="Delimiter">.</span>empty<span class="Delimiter">())</span> <span class="Identifier">return</span> best_variant<span class="Delimiter">(</span>inst<span class="Delimiter">,</span> candidates<span class="Delimiter">).</span>name<span class="Delimiter">;</span>
+<span id="L199" class="LineNr">199 </span>
+<span id="L200" class="LineNr">200 </span><span class="CommentedCode">//?   cerr &lt;&lt; inst.name &lt;&lt; &quot; phase 3\n&quot;;</span>
+<span id="L201" class="LineNr">201 </span>  <span class="Comment">// Static Dispatch Phase 3</span>
+<span id="L202" class="LineNr">202 </span>  <span class="Comment">//: (shape-shifting recipes in a later layer)</span>
+<span id="L203" class="LineNr">203 </span>  <span class="Comment">// End Static Dispatch Phase 3</span>
+<span id="L204" class="LineNr">204 </span>
+<span id="L205" class="LineNr">205 </span>  <span class="Comment">// Static Dispatch Phase 4</span>
+<span id="L206" class="LineNr">206 </span><span class="CommentedCode">//?   cerr &lt;&lt; inst.name &lt;&lt; &quot; phase 4\n&quot;;</span>
+<span id="L207" class="LineNr">207 </span>  candidates = <a href='054static_dispatch.cc.html#L313'>matching_variants</a><span class="Delimiter">(</span>inst<span class="Delimiter">,</span> variants<span class="Delimiter">);</span>
+<span id="L208" class="LineNr">208 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!candidates<span class="Delimiter">.</span>empty<span class="Delimiter">())</span> <span class="Identifier">return</span> best_variant<span class="Delimiter">(</span>inst<span class="Delimiter">,</span> candidates<span class="Delimiter">).</span>name<span class="Delimiter">;</span>
+<span id="L209" class="LineNr">209 </span>
+<span id="L210" class="LineNr">210 </span>  <span class="Comment">// error messages</span>
+<span id="L211" class="LineNr">211 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!is_primitive<span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe_ordinal<span class="Delimiter">,</span> inst<span class="Delimiter">.</span>name<span class="Delimiter">)))</span> <span class="Delimiter">{</span>  <span class="Comment">// we currently don't check types for primitive variants</span>
+<span id="L212" class="LineNr">212 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>variants<span class="Delimiter">)</span> == <span class="Constant">1</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L213" class="LineNr">213 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>caller_recipe<span class="Delimiter">.</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;types don't match in call for '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; end<span class="Delimiter">();</span>
+<span id="L214" class="LineNr">214 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <span class="Constant">&quot;  which tries to call '&quot;</span> &lt;&lt; original_header_label<span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> variants<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">)))</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
+<span id="L215" class="LineNr">215 </span>  <span class="Conceal">¦</span> <span class="Delimiter">}</span>
+<span id="L216" class="LineNr">216 </span>  <span class="Conceal">¦</span> <span class="Normal">else</span> <span class="Delimiter">{</span>
+<span id="L217" class="LineNr">217 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>caller_recipe<span class="Delimiter">.</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;failed to find a matching call for '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
+<span id="L218" class="LineNr">218 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <span class="Constant">&quot;  available variants are:</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
+<span id="L219" class="LineNr">219 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> i = <span class="Constant">0</span><span class="Delimiter">;</span>  i &lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>variants<span class="Delimiter">);</span>  ++i<span class="Delimiter">)</span>
+<span id="L220" class="LineNr">220 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <span class="Constant">&quot;    &quot;</span> &lt;&lt; <a href='054static_dispatch.cc.html#L594'>original_header_label</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> variants<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">)))</span> &lt;&lt; <span class="cSpecial">'\n'</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
+<span id="L221" class="LineNr">221 </span>  <span class="Conceal">¦</span> <span class="Delimiter">}</span>
+<span id="L222" class="LineNr">222 </span>  <span class="Conceal">¦</span> <span class="Normal">for</span> <span class="Delimiter">(</span>list&lt;call&gt;::iterator p = <span class="Comment">/*</span><span class="Comment">skip</span><span class="Comment">*/</span>++Resolve_stack<span class="Delimiter">.</span>begin<span class="Delimiter">();</span>  p != Resolve_stack<span class="Delimiter">.</span><a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>  ++p<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L223" class="LineNr">223 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">const</span> recipe&amp; specializer_recipe = get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> p<span class="Delimiter">-&gt;</span>running_recipe<span class="Delimiter">);</span>
+<span id="L224" class="LineNr">224 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">const</span> instruction&amp; specializer_inst = specializer_recipe<span class="Delimiter">.</span>steps<span class="Delimiter">.</span>at<span class="Delimiter">(</span>p<span class="Delimiter">-&gt;</span>running_step_index<span class="Delimiter">);</span>
+<span id="L225" class="LineNr">225 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>specializer_recipe<span class="Delimiter">.</span>name != <span class="Constant">&quot;interactive&quot;</span><span class="Delimiter">)</span>
+<span id="L226" class="LineNr">226 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <span class="Constant">&quot;  (from '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>specializer_inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;' in &quot;</span> &lt;&lt; specializer_recipe<span class="Delimiter">.</span>name &lt;&lt; <span class="Constant">&quot;)</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
+<span id="L227" class="LineNr">227 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">else</span>
+<span id="L228" class="LineNr">228 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <span class="Constant">&quot;  (from '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>specializer_inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;')</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
+<span id="L229" class="LineNr">229 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Comment">// One special-case to help with the rewrite_stash transform. (cross-layer)</span>
+<span id="L230" class="LineNr">230 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>specializer_inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>name<span class="Delimiter">.</span>find<span class="Delimiter">(</span><span class="Constant">&quot;stash_&quot;</span><span class="Delimiter">)</span> == <span class="Constant">0</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L231" class="LineNr">231 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='010vm.cc.html#L32'>instruction</a> stash_inst<span class="Delimiter">;</span>
+<span id="L232" class="LineNr">232 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span><a href='054static_dispatch.cc.html#L377'>next_stash</a><span class="Delimiter">(</span>*p<span class="Delimiter">,</span> &amp;stash_inst<span class="Delimiter">))</span> <span class="Delimiter">{</span>
+<span id="L233" class="LineNr">233 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>specializer_recipe<span class="Delimiter">.</span>name != <span class="Constant">&quot;interactive&quot;</span><span class="Delimiter">)</span>
+<span id="L234" class="LineNr">234 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <span class="Constant">&quot;  (part of '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>stash_inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;' in &quot;</span> &lt;&lt; specializer_recipe<span class="Delimiter">.</span>name &lt;&lt; <span class="Constant">&quot;)</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
+<span id="L235" class="LineNr">235 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">else</span>
+<span id="L236" class="LineNr">236 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <span class="Constant">&quot;  (part of '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>stash_inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;')</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
+<span id="L237" class="LineNr">237 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Delimiter">}</span>
+<span id="L238" class="LineNr">238 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Delimiter">}</span>
+<span id="L239" class="LineNr">239 </span>  <span class="Conceal">¦</span> <span class="Delimiter">}</span>
+<span id="L240" class="LineNr">240 </span>  <span class="Delimiter">}</span>
+<span id="L241" class="LineNr">241 </span>  <span class="Identifier">return</span> <span class="Constant">&quot;&quot;</span><span class="Delimiter">;</span>
+<span id="L242" class="LineNr">242 </span><span class="Delimiter">}</span>
+<span id="L243" class="LineNr">243 </span>
+<span id="L244" class="LineNr">244 </span><span class="Comment">// phase 1</span>
+<span id="L245" class="LineNr">245 </span>vector&lt;recipe_ordinal&gt; <a href='054static_dispatch.cc.html#L245'>strictly_matching_variants</a><span class="Delimiter">(</span><span class="Normal">const</span> instruction&amp; inst<span class="Delimiter">,</span> <span class="Normal">const</span> vector&lt;recipe_ordinal&gt;&amp; variants<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L246" class="LineNr">246 </span>  vector&lt;recipe_ordinal&gt; result<span class="Delimiter">;</span>
+<span id="L247" class="LineNr">247 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> i = <span class="Constant">0</span><span class="Delimiter">;</span>  i &lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>variants<span class="Delimiter">);</span>  ++i<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L248" class="LineNr">248 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>variants<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">)</span> == -<span class="Constant">1</span><span class="Delimiter">)</span> <span class="Identifier">continue</span><span class="Delimiter">;</span>
+<span id="L249" class="LineNr">249 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L167'>trace</a><span class="Delimiter">(</span><span class="Constant">9992</span><span class="Delimiter">,</span> <span class="Constant">&quot;transform&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;checking variant (strict) &quot;</span> &lt;&lt; i &lt;&lt; <span class="Constant">&quot;: &quot;</span> &lt;&lt; header_label<span class="Delimiter">(</span>variants<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">))</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
+<span id="L250" class="LineNr">250 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span><a href='054static_dispatch.cc.html#L256'>all_header_reagents_strictly_match</a><span class="Delimiter">(</span>inst<span class="Delimiter">,</span> get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> variants<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">))))</span>
+<span id="L251" class="LineNr">251 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> result<span class="Delimiter">.</span>push_back<span class="Delimiter">(</span>variants<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">));</span>
+<span id="L252" class="LineNr">252 </span>  <span class="Delimiter">}</span>
+<span id="L253" class="LineNr">253 </span>  <span class="Identifier">return</span> result<span class="Delimiter">;</span>
+<span id="L254" class="LineNr">254 </span><span class="Delimiter">}</span>
+<span id="L255" class="LineNr">255 </span>
+<span id="L256" class="LineNr">256 </span><span class="Normal">bool</span> <a href='054static_dispatch.cc.html#L256'>all_header_reagents_strictly_match</a><span class="Delimiter">(</span><span class="Normal">const</span> instruction&amp; inst<span class="Delimiter">,</span> <span class="Normal">const</span> recipe&amp; variant<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L257" class="LineNr">257 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> i = <span class="Constant">0</span><span class="Delimiter">;</span>  i &lt; min<span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">),</span> <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>variant<span class="Delimiter">.</span>ingredients<span class="Delimiter">));</span>  ++i<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L258" class="LineNr">258 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>!types_strictly_match<span class="Delimiter">(</span>variant<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">),</span> inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">)))</span> <span class="Delimiter">{</span>
+<span id="L259" class="LineNr">259 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L167'>trace</a><span class="Delimiter">(</span><span class="Constant">9993</span><span class="Delimiter">,</span> <span class="Constant">&quot;transform&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;strict match failed: ingredient &quot;</span> &lt;&lt; i &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
+<span id="L260" class="LineNr">260 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Identifier">return</span> <span class="Constant">false</span><span class="Delimiter">;</span>
+<span id="L261" class="LineNr">261 </span>  <span class="Conceal">¦</span> <span class="Delimiter">}</span>
+<span id="L262" class="LineNr">262 </span>  <span class="Delimiter">}</span>
+<span id="L263" class="LineNr">263 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> i = <span class="Constant">0</span><span class="Delimiter">;</span>  i &lt; min<span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>products<span class="Delimiter">),</span> <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>variant<span class="Delimiter">.</span>products<span class="Delimiter">));</span>  ++i<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L264" class="LineNr">264 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>is_dummy<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">)))</span> <span class="Identifier">continue</span><span class="Delimiter">;</span>
+<span id="L265" class="LineNr">265 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>!types_strictly_match<span class="Delimiter">(</span>variant<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">),</span> inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">)))</span> <span class="Delimiter">{</span>
+<span id="L266" class="LineNr">266 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L167'>trace</a><span class="Delimiter">(</span><span class="Constant">9993</span><span class="Delimiter">,</span> <span class="Constant">&quot;transform&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;strict match failed: product &quot;</span> &lt;&lt; i &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
+<span id="L267" class="LineNr">267 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Identifier">return</span> <span class="Constant">false</span><span class="Delimiter">;</span>
+<span id="L268" class="LineNr">268 </span>  <span class="Conceal">¦</span> <span class="Delimiter">}</span>
+<span id="L269" class="LineNr">269 </span>  <span class="Delimiter">}</span>
+<span id="L270" class="LineNr">270 </span>  <span class="Identifier">return</span> <span class="Constant">true</span><span class="Delimiter">;</span>
+<span id="L271" class="LineNr">271 </span><span class="Delimiter">}</span>
+<span id="L272" class="LineNr">272 </span>
+<span id="L273" class="LineNr">273 </span><span class="Comment">// phase 2</span>
+<span id="L274" class="LineNr">274 </span>vector&lt;recipe_ordinal&gt; <a href='054static_dispatch.cc.html#L274'>strictly_matching_variants_except_literal_against_address_or_boolean</a><span class="Delimiter">(</span><span class="Normal">const</span> instruction&amp; inst<span class="Delimiter">,</span> <span class="Normal">const</span> vector&lt;recipe_ordinal&gt;&amp; variants<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L275" class="LineNr">275 </span>  vector&lt;recipe_ordinal&gt; result<span class="Delimiter">;</span>
+<span id="L276" class="LineNr">276 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> i = <span class="Constant">0</span><span class="Delimiter">;</span>  i &lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>variants<span class="Delimiter">);</span>  ++i<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L277" class="LineNr">277 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>variants<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">)</span> == -<span class="Constant">1</span><span class="Delimiter">)</span> <span class="Identifier">continue</span><span class="Delimiter">;</span>
+<span id="L278" class="LineNr">278 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L167'>trace</a><span class="Delimiter">(</span><span class="Constant">9992</span><span class="Delimiter">,</span> <span class="Constant">&quot;transform&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;checking variant (strict except literal-against-boolean) &quot;</span> &lt;&lt; i &lt;&lt; <span class="Constant">&quot;: &quot;</span> &lt;&lt; header_label<span class="Delimiter">(</span>variants<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">))</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
+<span id="L279" class="LineNr">279 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span><a href='054static_dispatch.cc.html#L285'>all_header_reagents_strictly_match_except_literal_against_address_or_boolean</a><span class="Delimiter">(</span>inst<span class="Delimiter">,</span> get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> variants<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">))))</span>
+<span id="L280" class="LineNr">280 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> result<span class="Delimiter">.</span>push_back<span class="Delimiter">(</span>variants<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">));</span>
+<span id="L281" class="LineNr">281 </span>  <span class="Delimiter">}</span>
+<span id="L282" class="LineNr">282 </span>  <span class="Identifier">return</span> result<span class="Delimiter">;</span>
+<span id="L283" class="LineNr">283 </span><span class="Delimiter">}</span>
+<span id="L284" class="LineNr">284 </span>
+<span id="L285" class="LineNr">285 </span><span class="Normal">bool</span> <a href='054static_dispatch.cc.html#L285'>all_header_reagents_strictly_match_except_literal_against_address_or_boolean</a><span class="Delimiter">(</span><span class="Normal">const</span> instruction&amp; inst<span class="Delimiter">,</span> <span class="Normal">const</span> recipe&amp; variant<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L286" class="LineNr">286 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> i = <span class="Constant">0</span><span class="Delimiter">;</span>  i &lt; min<span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">),</span> <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>variant<span class="Delimiter">.</span>ingredients<span class="Delimiter">));</span>  ++i<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L287" class="LineNr">287 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>!types_strictly_match_except_literal_against_address_or_boolean<span class="Delimiter">(</span>variant<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">),</span> inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">)))</span> <span class="Delimiter">{</span>
+<span id="L288" class="LineNr">288 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L167'>trace</a><span class="Delimiter">(</span><span class="Constant">9993</span><span class="Delimiter">,</span> <span class="Constant">&quot;transform&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;match failed: ingredient &quot;</span> &lt;&lt; i &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
+<span id="L289" class="LineNr">289 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Identifier">return</span> <span class="Constant">false</span><span class="Delimiter">;</span>
+<span id="L290" class="LineNr">290 </span>  <span class="Conceal">¦</span> <span class="Delimiter">}</span>
+<span id="L291" class="LineNr">291 </span>  <span class="Delimiter">}</span>
+<span id="L292" class="LineNr">292 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> i = <span class="Constant">0</span><span class="Delimiter">;</span>  i &lt; min<span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>variant<span class="Delimiter">.</span>products<span class="Delimiter">),</span> <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>products<span class="Delimiter">));</span>  ++i<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L293" class="LineNr">293 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>is_dummy<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">)))</span> <span class="Identifier">continue</span><span class="Delimiter">;</span>
+<span id="L294" class="LineNr">294 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>!types_strictly_match_except_literal_against_address_or_boolean<span class="Delimiter">(</span>variant<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">),</span> inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">)))</span> <span class="Delimiter">{</span>
+<span id="L295" class="LineNr">295 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L167'>trace</a><span class="Delimiter">(</span><span class="Constant">9993</span><span class="Delimiter">,</span> <span class="Constant">&quot;transform&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;match failed: product &quot;</span> &lt;&lt; i &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
+<span id="L296" class="LineNr">296 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Identifier">return</span> <span class="Constant">false</span><span class="Delimiter">;</span>
+<span id="L297" class="LineNr">297 </span>  <span class="Conceal">¦</span> <span class="Delimiter">}</span>
+<span id="L298" class="LineNr">298 </span>  <span class="Delimiter">}</span>
+<span id="L299" class="LineNr">299 </span>  <span class="Identifier">return</span> <span class="Constant">true</span><span class="Delimiter">;</span>
+<span id="L300" class="LineNr">300 </span><span class="Delimiter">}</span>
+<span id="L301" class="LineNr">301 </span>
+<span id="L302" class="LineNr">302 </span><span class="Normal">bool</span> <a href='054static_dispatch.cc.html#L302'>types_strictly_match_except_literal_against_address_or_boolean</a><span class="Delimiter">(</span><span class="Normal">const</span> reagent&amp; to<span class="Delimiter">,</span> <span class="Normal">const</span> reagent&amp; from<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L303" class="LineNr">303 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>is_literal<span class="Delimiter">(</span>from<span class="Delimiter">)</span> &amp;&amp; <a href='021check_instruction.cc.html#L232'>is_mu_boolean</a><span class="Delimiter">(</span>to<span class="Delimiter">))</span>
+<span id="L304" class="LineNr">304 </span>  <span class="Conceal">¦</span> <span class="Identifier">return</span> from<span class="Delimiter">.</span>name == <span class="Constant">&quot;0&quot;</span> || from<span class="Delimiter">.</span>name == <span class="Constant">&quot;1&quot;</span><span class="Delimiter">;</span>
+<span id="L305" class="LineNr">305 </span>  <span class="Comment">// Match Literal Zero Against Address {</span>
+<span id="L306" class="LineNr">306 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>is_literal<span class="Delimiter">(</span>from<span class="Delimiter">)</span> &amp;&amp; is_mu_address<span class="Delimiter">(</span>to<span class="Delimiter">))</span>
+<span id="L307" class="LineNr">307 </span>  <span class="Conceal">¦</span> <span class="Identifier">return</span> from<span class="Delimiter">.</span>name == <span class="Constant">&quot;0&quot;</span><span class="Delimiter">;</span>
+<span id="L308" class="LineNr">308 </span>  <span class="Comment">// }</span>
+<span id="L309" class="LineNr">309 </span>  <span class="Identifier">return</span> types_strictly_match<span class="Delimiter">(</span>to<span class="Delimiter">,</span> from<span class="Delimiter">);</span>
+<span id="L310" class="LineNr">310 </span><span class="Delimiter">}</span>
+<span id="L311" class="LineNr">311 </span>
+<span id="L312" class="LineNr">312 </span><span class="Comment">// phase 4</span>
+<span id="L313" class="LineNr">313 </span>vector&lt;recipe_ordinal&gt; <a href='054static_dispatch.cc.html#L313'>matching_variants</a><span class="Delimiter">(</span><span class="Normal">const</span> instruction&amp; inst<span class="Delimiter">,</span> <span class="Normal">const</span> vector&lt;recipe_ordinal&gt;&amp; variants<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L314" class="LineNr">314 </span>  vector&lt;recipe_ordinal&gt; result<span class="Delimiter">;</span>
+<span id="L315" class="LineNr">315 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> i = <span class="Constant">0</span><span class="Delimiter">;</span>  i &lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>variants<span class="Delimiter">);</span>  ++i<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L316" class="LineNr">316 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>variants<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">)</span> == -<span class="Constant">1</span><span class="Delimiter">)</span> <span class="Identifier">continue</span><span class="Delimiter">;</span>
+<span id="L317" class="LineNr">317 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L167'>trace</a><span class="Delimiter">(</span><span class="Constant">9992</span><span class="Delimiter">,</span> <span class="Constant">&quot;transform&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;checking variant &quot;</span> &lt;&lt; i &lt;&lt; <span class="Constant">&quot;: &quot;</span> &lt;&lt; header_label<span class="Delimiter">(</span>variants<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">))</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
+<span id="L318" class="LineNr">318 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span><a href='054static_dispatch.cc.html#L324'>all_header_reagents_match</a><span class="Delimiter">(</span>inst<span class="Delimiter">,</span> get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> variants<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">))))</span>
+<span id="L319" class="LineNr">319 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> result<span class="Delimiter">.</span>push_back<span class="Delimiter">(</span>variants<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">));</span>
+<span id="L320" class="LineNr">320 </span>  <span class="Delimiter">}</span>
+<span id="L321" class="LineNr">321 </span>  <span class="Identifier">return</span> result<span class="Delimiter">;</span>
+<span id="L322" class="LineNr">322 </span><span class="Delimiter">}</span>
+<span id="L323" class="LineNr">323 </span>
+<span id="L324" class="LineNr">324 </span><span class="Normal">bool</span> <a href='054static_dispatch.cc.html#L324'>all_header_reagents_match</a><span class="Delimiter">(</span><span class="Normal">const</span> instruction&amp; inst<span class="Delimiter">,</span> <span class="Normal">const</span> recipe&amp; variant<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L325" class="LineNr">325 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> i = <span class="Constant">0</span><span class="Delimiter">;</span>  i &lt; min<span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">),</span> <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>variant<span class="Delimiter">.</span>ingredients<span class="Delimiter">));</span>  ++i<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L326" class="LineNr">326 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>!types_match<span class="Delimiter">(</span>variant<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">),</span> inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">)))</span> <span class="Delimiter">{</span>
+<span id="L327" class="LineNr">327 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L167'>trace</a><span class="Delimiter">(</span><span class="Constant">9993</span><span class="Delimiter">,</span> <span class="Constant">&quot;transform&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;match failed: ingredient &quot;</span> &lt;&lt; i &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
+<span id="L328" class="LineNr">328 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Identifier">return</span> <span class="Constant">false</span><span class="Delimiter">;</span>
+<span id="L329" class="LineNr">329 </span>  <span class="Conceal">¦</span> <span class="Delimiter">}</span>
+<span id="L330" class="LineNr">330 </span>  <span class="Delimiter">}</span>
+<span id="L331" class="LineNr">331 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> i = <span class="Constant">0</span><span class="Delimiter">;</span>  i &lt; min<span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>variant<span class="Delimiter">.</span>products<span class="Delimiter">),</span> <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>products<span class="Delimiter">));</span>  ++i<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L332" class="LineNr">332 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>is_dummy<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">)))</span> <span class="Identifier">continue</span><span class="Delimiter">;</span>
+<span id="L333" class="LineNr">333 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>!types_match<span class="Delimiter">(</span>variant<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">),</span> inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">)))</span> <span class="Delimiter">{</span>
+<span id="L334" class="LineNr">334 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L167'>trace</a><span class="Delimiter">(</span><span class="Constant">9993</span><span class="Delimiter">,</span> <span class="Constant">&quot;transform&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;match failed: product &quot;</span> &lt;&lt; i &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
+<span id="L335" class="LineNr">335 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Identifier">return</span> <span class="Constant">false</span><span class="Delimiter">;</span>
+<span id="L336" class="LineNr">336 </span>  <span class="Conceal">¦</span> <span class="Delimiter">}</span>
+<span id="L337" class="LineNr">337 </span>  <span class="Delimiter">}</span>
+<span id="L338" class="LineNr">338 </span>  <span class="Identifier">return</span> <span class="Constant">true</span><span class="Delimiter">;</span>
+<span id="L339" class="LineNr">339 </span><span class="Delimiter">}</span>
+<span id="L340" class="LineNr">340 </span>
+<span id="L341" class="LineNr">341 </span><span class="Comment">// tie-breaker for each phase</span>
+<span id="L342" class="LineNr">342 </span><span class="Normal">const</span> recipe&amp; best_variant<span class="Delimiter">(</span><span class="Normal">const</span> instruction&amp; inst<span class="Delimiter">,</span> vector&lt;recipe_ordinal&gt;&amp; candidates<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L343" class="LineNr">343 </span>  assert<span class="Delimiter">(</span>!candidates<span class="Delimiter">.</span>empty<span class="Delimiter">());</span>
+<span id="L344" class="LineNr">344 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>candidates<span class="Delimiter">)</span> == <span class="Constant">1</span><span class="Delimiter">)</span> <span class="Identifier">return</span> get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> candidates<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">));</span>
+<span id="L345" class="LineNr">345 </span>  <span class="Normal">int</span> min_score = <span class="Constant">999</span><span class="Delimiter">;</span>
+<span id="L346" class="LineNr">346 </span>  <span class="Normal">int</span> min_index = <span class="Constant">0</span><span class="Delimiter">;</span>
+<span id="L347" class="LineNr">347 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> i = <span class="Constant">0</span><span class="Delimiter">;</span>  i &lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>candidates<span class="Delimiter">);</span>  ++i<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L348" class="LineNr">348 </span>  <span class="Conceal">¦</span> <span class="Normal">const</span> recipe&amp; candidate = get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> candidates<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">));</span>
+<span id="L349" class="LineNr">349 </span>  <span class="Conceal">¦</span> <span class="Comment">// prefer variants without extra or missing ingredients or products</span>
+<span id="L350" class="LineNr">350 </span>  <span class="Conceal">¦</span> <span class="Normal">int</span> score = abs<span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>candidate<span class="Delimiter">.</span>products<span class="Delimiter">)</span>-SIZE<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>products<span class="Delimiter">))</span>
+<span id="L351" class="LineNr">351 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span>     + abs<span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>candidate<span class="Delimiter">.</span>ingredients<span class="Delimiter">)</span>-SIZE<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">));</span>
+<span id="L352" class="LineNr">352 </span>  <span class="Conceal">¦</span> <span class="Comment">// prefer variants with non-address ingredients or products</span>
+<span id="L353" class="LineNr">353 </span>  <span class="Conceal">¦</span> <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> j = <span class="Constant">0</span><span class="Delimiter">;</span>  j &lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>candidate<span class="Delimiter">.</span>ingredients<span class="Delimiter">);</span>  ++j<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L354" class="LineNr">354 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>is_mu_address<span class="Delimiter">(</span>candidate<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>j<span class="Delimiter">)))</span>
 <span id="L355" class="LineNr">355 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> ++score<span class="Delimiter">;</span>
 <span id="L356" class="LineNr">356 </span>  <span class="Conceal">¦</span> <span class="Delimiter">}</span>
-<span id="L357" class="LineNr">357 </span>  <span class="Conceal">¦</span> assert<span class="Delimiter">(</span>score &lt; <span class="Constant">999</span><span class="Delimiter">);</span>
-<span id="L358" class="LineNr">358 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>score &lt; min_score<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L359" class="LineNr">359 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> min_score = score<span class="Delimiter">;</span>
-<span id="L360" class="LineNr">360 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> min_index = i<span class="Delimiter">;</span>
-<span id="L361" class="LineNr">361 </span>  <span class="Conceal">¦</span> <span class="Delimiter">}</span>
-<span id="L362" class="LineNr">362 </span>  <span class="Delimiter">}</span>
-<span id="L363" class="LineNr">363 </span>  <span class="Identifier">return</span> get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> candidates<span class="Delimiter">.</span>at<span class="Delimiter">(</span>min_index<span class="Delimiter">));</span>
-<span id="L364" class="LineNr">364 </span><span class="Delimiter">}</span>
-<span id="L365" class="LineNr">365 </span>
-<span id="L366" class="LineNr">366 </span><span class="Normal">int</span> <a href='054static_dispatch.cc.html#L366'>non_ghost_size</a><span class="Delimiter">(</span>vector&lt;recipe_ordinal&gt;&amp; variants<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L367" class="LineNr">367 </span>  <span class="Normal">int</span> result = <span class="Constant">0</span><span class="Delimiter">;</span>
-<span id="L368" class="LineNr">368 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> i = <span class="Constant">0</span><span class="Delimiter">;</span>  i &lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>variants<span class="Delimiter">);</span>  ++i<span class="Delimiter">)</span>
-<span id="L369" class="LineNr">369 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>variants<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">)</span> != -<span class="Constant">1</span><span class="Delimiter">)</span> ++result<span class="Delimiter">;</span>
-<span id="L370" class="LineNr">370 </span>  <span class="Identifier">return</span> result<span class="Delimiter">;</span>
-<span id="L371" class="LineNr">371 </span><span class="Delimiter">}</span>
-<span id="L372" class="LineNr">372 </span>
-<span id="L373" class="LineNr">373 </span><span class="Normal">bool</span> <a href='054static_dispatch.cc.html#L373'>next_stash</a><span class="Delimiter">(</span><span class="Normal">const</span> call&amp; c<span class="Delimiter">,</span> instruction* stash_inst<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L374" class="LineNr">374 </span>  <span class="Normal">const</span> recipe&amp; specializer_recipe = get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> c<span class="Delimiter">.</span>running_recipe<span class="Delimiter">);</span>
-<span id="L375" class="LineNr">375 </span>  <span class="Normal">int</span> index = c<span class="Delimiter">.</span>running_step_index<span class="Delimiter">;</span>
-<span id="L376" class="LineNr">376 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span>++index<span class="Delimiter">;</span>  index &lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>specializer_recipe<span class="Delimiter">.</span>steps<span class="Delimiter">);</span>  ++index<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L377" class="LineNr">377 </span>  <span class="Conceal">¦</span> <span class="Normal">const</span> instruction&amp; inst = specializer_recipe<span class="Delimiter">.</span>steps<span class="Delimiter">.</span>at<span class="Delimiter">(</span>index<span class="Delimiter">);</span>
-<span id="L378" class="LineNr">378 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>inst<span class="Delimiter">.</span>name == <span class="Constant">&quot;stash&quot;</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L379" class="LineNr">379 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> *stash_inst = inst<span class="Delimiter">;</span>
-<span id="L380" class="LineNr">380 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Identifier">return</span> <span class="Constant">true</span><span class="Delimiter">;</span>
-<span id="L381" class="LineNr">381 </span>  <span class="Conceal">¦</span> <span class="Delimiter">}</span>
-<span id="L382" class="LineNr">382 </span>  <span class="Delimiter">}</span>
-<span id="L383" class="LineNr">383 </span>  <span class="Identifier">return</span> <span class="Constant">false</span><span class="Delimiter">;</span>
-<span id="L384" class="LineNr">384 </span><span class="Delimiter">}</span>
-<span id="L385" class="LineNr">385 </span>
-<span id="L386" class="LineNr">386 </span><span class="Delimiter">:(scenario static_dispatch_disabled_in_recipe_without_variants)</span>
-<span id="L387" class="LineNr">387 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
-<span id="L388" class="LineNr">388 </span>  <span class="Constant">1</span>:num<span class="Special"> &lt;- </span>test <span class="Constant">3</span>
-<span id="L389" class="LineNr">389 </span>]
-<span id="L390" class="LineNr">390 </span><span class="muRecipe">def</span> test [
-<span id="L391" class="LineNr">391 </span>  <span class="Constant">2</span>:num<span class="Special"> &lt;- </span>next-ingredient  <span class="Comment"># ensure no header</span>
-<span id="L392" class="LineNr">392 </span>  <span class="Identifier">return</span> <span class="Constant">34</span>
+<span id="L357" class="LineNr">357 </span>  <span class="Conceal">¦</span> <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> j = <span class="Constant">0</span><span class="Delimiter">;</span>  j &lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>candidate<span class="Delimiter">.</span>products<span class="Delimiter">);</span>  ++j<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L358" class="LineNr">358 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>is_mu_address<span class="Delimiter">(</span>candidate<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span>j<span class="Delimiter">)))</span>
+<span id="L359" class="LineNr">359 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> ++score<span class="Delimiter">;</span>
+<span id="L360" class="LineNr">360 </span>  <span class="Conceal">¦</span> <span class="Delimiter">}</span>
+<span id="L361" class="LineNr">361 </span>  <span class="Conceal">¦</span> assert<span class="Delimiter">(</span>score &lt; <span class="Constant">999</span><span class="Delimiter">);</span>
+<span id="L362" class="LineNr">362 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>score &lt; min_score<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L363" class="LineNr">363 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> min_score = score<span class="Delimiter">;</span>
+<span id="L364" class="LineNr">364 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> min_index = i<span class="Delimiter">;</span>
+<span id="L365" class="LineNr">365 </span>  <span class="Conceal">¦</span> <span class="Delimiter">}</span>
+<span id="L366" class="LineNr">366 </span>  <span class="Delimiter">}</span>
+<span id="L367" class="LineNr">367 </span>  <span class="Identifier">return</span> get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> candidates<span class="Delimiter">.</span>at<span class="Delimiter">(</span>min_index<span class="Delimiter">));</span>
+<span id="L368" class="LineNr">368 </span><span class="Delimiter">}</span>
+<span id="L369" class="LineNr">369 </span>
+<span id="L370" class="LineNr">370 </span><span class="Normal">int</span> <a href='054static_dispatch.cc.html#L370'>non_ghost_size</a><span class="Delimiter">(</span>vector&lt;recipe_ordinal&gt;&amp; variants<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L371" class="LineNr">371 </span>  <span class="Normal">int</span> result = <span class="Constant">0</span><span class="Delimiter">;</span>
+<span id="L372" class="LineNr">372 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> i = <span class="Constant">0</span><span class="Delimiter">;</span>  i &lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>variants<span class="Delimiter">);</span>  ++i<span class="Delimiter">)</span>
+<span id="L373" class="LineNr">373 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>variants<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">)</span> != -<span class="Constant">1</span><span class="Delimiter">)</span> ++result<span class="Delimiter">;</span>
+<span id="L374" class="LineNr">374 </span>  <span class="Identifier">return</span> result<span class="Delimiter">;</span>
+<span id="L375" class="LineNr">375 </span><span class="Delimiter">}</span>
+<span id="L376" class="LineNr">376 </span>
+<span id="L377" class="LineNr">377 </span><span class="Normal">bool</span> <a href='054static_dispatch.cc.html#L377'>next_stash</a><span class="Delimiter">(</span><span class="Normal">const</span> call&amp; c<span class="Delimiter">,</span> instruction* stash_inst<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L378" class="LineNr">378 </span>  <span class="Normal">const</span> recipe&amp; specializer_recipe = get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> c<span class="Delimiter">.</span>running_recipe<span class="Delimiter">);</span>
+<span id="L379" class="LineNr">379 </span>  <span class="Normal">int</span> index = c<span class="Delimiter">.</span>running_step_index<span class="Delimiter">;</span>
+<span id="L380" class="LineNr">380 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span>++index<span class="Delimiter">;</span>  index &lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>specializer_recipe<span class="Delimiter">.</span>steps<span class="Delimiter">);</span>  ++index<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L381" class="LineNr">381 </span>  <span class="Conceal">¦</span> <span class="Normal">const</span> instruction&amp; inst = specializer_recipe<span class="Delimiter">.</span>steps<span class="Delimiter">.</span>at<span class="Delimiter">(</span>index<span class="Delimiter">);</span>
+<span id="L382" class="LineNr">382 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>inst<span class="Delimiter">.</span>name == <span class="Constant">&quot;stash&quot;</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L383" class="LineNr">383 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> *stash_inst = inst<span class="Delimiter">;</span>
+<span id="L384" class="LineNr">384 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Identifier">return</span> <span class="Constant">true</span><span class="Delimiter">;</span>
+<span id="L385" class="LineNr">385 </span>  <span class="Conceal">¦</span> <span class="Delimiter">}</span>
+<span id="L386" class="LineNr">386 </span>  <span class="Delimiter">}</span>
+<span id="L387" class="LineNr">387 </span>  <span class="Identifier">return</span> <span class="Constant">false</span><span class="Delimiter">;</span>
+<span id="L388" class="LineNr">388 </span><span class="Delimiter">}</span>
+<span id="L389" class="LineNr">389 </span>
+<span id="L390" class="LineNr">390 </span><span class="Delimiter">:(scenario static_dispatch_disabled_in_recipe_without_variants)</span>
+<span id="L391" class="LineNr">391 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
+<span id="L392" class="LineNr">392 </span>  <span class="Constant">1</span>:num<span class="Special"> &lt;- </span>test <span class="Constant">3</span>
 <span id="L393" class="LineNr">393 </span>]
-<span id="L394" class="LineNr">394 </span><span class="traceContains">+mem: storing 34 in location 1</span>
-<span id="L395" class="LineNr">395 </span>
-<span id="L396" class="LineNr">396 </span><span class="Delimiter">:(scenario static_dispatch_disabled_on_headerless_definition)</span>
-<span id="L397" class="LineNr">397 </span><span class="Special">% Hide_errors = true;</span>
-<span id="L398" class="LineNr">398 </span><span class="muRecipe">def</span> test a:num<span class="muRecipe"> -&gt; </span>z:num [
-<span id="L399" class="LineNr">399 </span>  z<span class="Special"> &lt;- </span>copy <span class="Constant">1</span>
-<span id="L400" class="LineNr">400 </span>]
-<span id="L401" class="LineNr">401 </span><span class="muRecipe">def</span> test [
-<span id="L402" class="LineNr">402 </span>  <span class="Identifier">return</span> <span class="Constant">34</span>
-<span id="L403" class="LineNr">403 </span>]
-<span id="L404" class="LineNr">404 </span><span class="traceContains">+error: redefining <a href='010vm.cc.html#L19'>recipe</a> test</span>
-<span id="L405" class="LineNr">405 </span>
-<span id="L406" class="LineNr">406 </span><span class="Delimiter">:(scenario static_dispatch_disabled_on_headerless_definition_2)</span>
-<span id="L407" class="LineNr">407 </span><span class="Special">% Hide_errors = true;</span>
-<span id="L408" class="LineNr">408 </span><span class="muRecipe">def</span> test [
-<span id="L409" class="LineNr">409 </span>  <span class="Identifier">return</span> <span class="Constant">34</span>
-<span id="L410" class="LineNr">410 </span>]
-<span id="L411" class="LineNr">411 </span><span class="muRecipe">def</span> test a:num<span class="muRecipe"> -&gt; </span>z:num [
-<span id="L412" class="LineNr">412 </span>  z<span class="Special"> &lt;- </span>copy <span class="Constant">1</span>
-<span id="L413" class="LineNr">413 </span>]
-<span id="L414" class="LineNr">414 </span><span class="traceContains">+error: redefining <a href='010vm.cc.html#L19'>recipe</a> test</span>
-<span id="L415" class="LineNr">415 </span>
-<span id="L416" class="LineNr">416 </span><span class="Delimiter">:(scenario static_dispatch_on_primitive_names)</span>
-<span id="L417" class="LineNr">417 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
-<span id="L418" class="LineNr">418 </span>  <span class="Constant">1</span>:num<span class="Special"> &lt;- </span>copy <span class="Constant">34</span>
-<span id="L419" class="LineNr">419 </span>  <span class="Constant">2</span>:num<span class="Special"> &lt;- </span>copy <span class="Constant">34</span>
-<span id="L420" class="LineNr">420 </span>  <span class="Constant">3</span>:<span class="Normal">bool</span><span class="Special"> &lt;- </span>equal <span class="Constant">1</span>:num<span class="Delimiter">,</span> <span class="Constant">2</span>:num
-<span id="L421" class="LineNr">421 </span>  <span class="Constant">4</span>:<span class="Normal">bool</span><span class="Special"> &lt;- </span>copy <span class="Constant">0</span>/<span class="Constant">false</span>
-<span id="L422" class="LineNr">422 </span>  <span class="Constant">5</span>:<span class="Normal">bool</span><span class="Special"> &lt;- </span>copy <span class="Constant">0</span>/<span class="Constant">false</span>
-<span id="L423" class="LineNr">423 </span>  <span class="Constant">6</span>:<span class="Normal">bool</span><span class="Special"> &lt;- </span>equal <span class="Constant">4</span>:<span class="Normal">bool</span><span class="Delimiter">,</span> <span class="Constant">5</span>:<span class="Normal">bool</span>
-<span id="L424" class="LineNr">424 </span>]
-<span id="L425" class="LineNr">425 </span><span class="Comment"># temporarily hardcode number equality to always fail</span>
-<span id="L426" class="LineNr">426 </span><span class="muRecipe">def</span> equal x:num<span class="Delimiter">,</span> y:num<span class="muRecipe"> -&gt; </span>z:<span class="Normal">bool</span> [
-<span id="L427" class="LineNr">427 </span>  local-scope
-<span id="L428" class="LineNr">428 </span>  load-ingredients
-<span id="L429" class="LineNr">429 </span>  z<span class="Special"> &lt;- </span>copy <span class="Constant">0</span>/<span class="Constant">false</span>
-<span id="L430" class="LineNr">430 </span>]
-<span id="L431" class="LineNr">431 </span><span class="Comment"># comparing numbers used overload</span>
-<span id="L432" class="LineNr">432 </span><span class="traceContains">+mem: storing 0 in location 3</span>
-<span id="L433" class="LineNr">433 </span><span class="Comment"># comparing booleans continues to use primitive</span>
-<span id="L434" class="LineNr">434 </span><span class="traceContains">+mem: storing 1 in location 6</span>
-<span id="L435" class="LineNr">435 </span>
-<span id="L436" class="LineNr">436 </span><span class="Delimiter">:(scenario static_dispatch_works_with_dummy_results_for_containers)</span>
-<span id="L437" class="LineNr">437 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
-<span id="L438" class="LineNr">438 </span>  _<span class="Special"> &lt;- </span>test <span class="Constant">3</span><span class="Delimiter">,</span> <span class="Constant">4</span>
-<span id="L439" class="LineNr">439 </span>]
-<span id="L440" class="LineNr">440 </span><span class="muRecipe">def</span> test a:num<span class="muRecipe"> -&gt; </span>z:point [
-<span id="L441" class="LineNr">441 </span>  local-scope
-<span id="L442" class="LineNr">442 </span>  load-ingredients
-<span id="L443" class="LineNr">443 </span>  z<span class="Special"> &lt;- </span>merge a<span class="Delimiter">,</span> <span class="Constant">0</span>
-<span id="L444" class="LineNr">444 </span>]
-<span id="L445" class="LineNr">445 </span><span class="muRecipe">def</span> test a:num<span class="Delimiter">,</span> b:num<span class="muRecipe"> -&gt; </span>z:point [
-<span id="L446" class="LineNr">446 </span>  local-scope
-<span id="L447" class="LineNr">447 </span>  load-ingredients
-<span id="L448" class="LineNr">448 </span>  z<span class="Special"> &lt;- </span>merge a<span class="Delimiter">,</span> b
-<span id="L449" class="LineNr">449 </span>]
-<span id="L450" class="LineNr">450 </span>$error: <span class="Constant">0</span>
-<span id="L451" class="LineNr">451 </span>
-<span id="L452" class="LineNr">452 </span><span class="Delimiter">:(scenario static_dispatch_works_with_compound_type_containing_container_defined_after_first_use)</span>
-<span id="L453" class="LineNr">453 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
-<span id="L454" class="LineNr">454 </span>  <span class="Normal">x</span>:&amp;:foo<span class="Special"> &lt;- </span><span class="Normal">new</span> <span class="Constant">foo:type</span>
-<span id="L455" class="LineNr">455 </span>  test x
-<span id="L456" class="LineNr">456 </span>]
-<span id="L457" class="LineNr">457 </span><span class="muData">container</span> foo [
-<span id="L458" class="LineNr">458 </span>  <span class="Normal">x</span>:num
-<span id="L459" class="LineNr">459 </span>]
-<span id="L460" class="LineNr">460 </span><span class="muRecipe">def</span> test a:&amp;:foo<span class="muRecipe"> -&gt; </span>z:num [
-<span id="L461" class="LineNr">461 </span>  local-scope
-<span id="L462" class="LineNr">462 </span>  load-ingredients
-<span id="L463" class="LineNr">463 </span>  <span class="Normal">z</span>:num<span class="Special"> &lt;- </span>get *a<span class="Delimiter">,</span> <span class="Constant">x:offset</span>
-<span id="L464" class="LineNr">464 </span>]
-<span id="L465" class="LineNr">465 </span>$error: <span class="Constant">0</span>
-<span id="L466" class="LineNr">466 </span>
-<span id="L467" class="LineNr">467 </span><span class="Delimiter">:(scenario static_dispatch_works_with_compound_type_containing_container_defined_after_second_use)</span>
-<span id="L468" class="LineNr">468 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
-<span id="L469" class="LineNr">469 </span>  <span class="Normal">x</span>:&amp;:foo<span class="Special"> &lt;- </span><span class="Normal">new</span> <span class="Constant">foo:type</span>
-<span id="L470" class="LineNr">470 </span>  test x
-<span id="L471" class="LineNr">471 </span>]
-<span id="L472" class="LineNr">472 </span><span class="muRecipe">def</span> test a:&amp;:foo<span class="muRecipe"> -&gt; </span>z:num [
-<span id="L473" class="LineNr">473 </span>  local-scope
-<span id="L474" class="LineNr">474 </span>  load-ingredients
-<span id="L475" class="LineNr">475 </span>  <span class="Normal">z</span>:num<span class="Special"> &lt;- </span>get *a<span class="Delimiter">,</span> <span class="Constant">x:offset</span>
-<span id="L476" class="LineNr">476 </span>]
-<span id="L477" class="LineNr">477 </span><span class="muData">container</span> foo [
-<span id="L478" class="LineNr">478 </span>  <span class="Normal">x</span>:num
-<span id="L479" class="LineNr">479 </span>]
-<span id="L480" class="LineNr">480 </span>$error: <span class="Constant">0</span>
-<span id="L481" class="LineNr">481 </span>
-<span id="L482" class="LineNr">482 </span><span class="Delimiter">:(scenario static_dispatch_prefers_literals_to_be_numbers_rather_than_addresses)</span>
-<span id="L483" class="LineNr">483 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
-<span id="L484" class="LineNr">484 </span>  <span class="Constant">1</span>:num<span class="Special"> &lt;- </span>foo <span class="Constant">0</span>
-<span id="L485" class="LineNr">485 </span>]
-<span id="L486" class="LineNr">486 </span><span class="muRecipe">def</span> foo x:&amp;:num<span class="muRecipe"> -&gt; </span>y:num [
-<span id="L487" class="LineNr">487 </span>  <span class="Identifier">return</span> <span class="Constant">34</span>
-<span id="L488" class="LineNr">488 </span>]
-<span id="L489" class="LineNr">489 </span><span class="muRecipe">def</span> foo x:num<span class="muRecipe"> -&gt; </span>y:num [
-<span id="L490" class="LineNr">490 </span>  <span class="Identifier">return</span> <span class="Constant">35</span>
-<span id="L491" class="LineNr">491 </span>]
-<span id="L492" class="LineNr">492 </span><span class="traceContains">+mem: storing 35 in location 1</span>
-<span id="L493" class="LineNr">493 </span>
-<span id="L494" class="LineNr">494 </span><span class="Delimiter">:(scenario static_dispatch_prefers_literals_to_be_numbers_rather_than_addresses_2)</span>
-<span id="L495" class="LineNr">495 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
-<span id="L496" class="LineNr">496 </span>  <span class="Constant">1</span>:num<span class="Special"> &lt;- </span>foo <span class="Constant">0</span> <span class="Constant">0</span>
-<span id="L497" class="LineNr">497 </span>]
-<span id="L498" class="LineNr">498 </span><span class="Comment"># Both variants need to bind 0 to address in first ingredient.</span>
-<span id="L499" class="LineNr">499 </span><span class="Comment"># We still want to prefer the variant with a number rather than address for</span>
-<span id="L500" class="LineNr">500 </span><span class="Comment"># _subsequent_ ingredients.</span>
-<span id="L501" class="LineNr">501 </span><span class="muRecipe">def</span> foo x:&amp;:num y:&amp;:num<span class="muRecipe"> -&gt; </span>z:num [  <span class="Comment"># put the bad match before the good one</span>
-<span id="L502" class="LineNr">502 </span>  <span class="Identifier">return</span> <span class="Constant">34</span>
-<span id="L503" class="LineNr">503 </span>]
-<span id="L504" class="LineNr">504 </span><span class="muRecipe">def</span> foo x:&amp;:num y:num<span class="muRecipe"> -&gt; </span>z:num [
-<span id="L505" class="LineNr">505 </span>  <span class="Identifier">return</span> <span class="Constant">35</span>
-<span id="L506" class="LineNr">506 </span>]
-<span id="L507" class="LineNr">507 </span><span class="traceContains">+mem: storing 35 in location 1</span>
-<span id="L508" class="LineNr">508 </span>
-<span id="L509" class="LineNr">509 </span><span class="Delimiter">:(scenario static_dispatch_on_non_literal_character_ignores_variant_with_numbers)</span>
-<span id="L510" class="LineNr">510 </span><span class="Special">% Hide_errors = true;</span>
-<span id="L511" class="LineNr">511 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
-<span id="L512" class="LineNr">512 </span>  local-scope
-<span id="L513" class="LineNr">513 </span>  <span class="Normal">x</span>:<span class="Normal">char</span><span class="Special"> &lt;- </span>copy <span class="Constant">10</span>/newline
-<span id="L514" class="LineNr">514 </span>  <span class="Constant">1</span>:num/<span class="Special">raw &lt;- </span>foo x
-<span id="L515" class="LineNr">515 </span>]
-<span id="L516" class="LineNr">516 </span><span class="muRecipe">def</span> foo x:num<span class="muRecipe"> -&gt; </span>y:num [
-<span id="L517" class="LineNr">517 </span>  load-ingredients
-<span id="L518" class="LineNr">518 </span>  <span class="Identifier">return</span> <span class="Constant">34</span>
+<span id="L394" class="LineNr">394 </span><span class="muRecipe">def</span> test [
+<span id="L395" class="LineNr">395 </span>  <span class="Constant">2</span>:num<span class="Special"> &lt;- </span>next-ingredient  <span class="Comment"># ensure no header</span>
+<span id="L396" class="LineNr">396 </span>  <span class="Identifier">return</span> <span class="Constant">34</span>
+<span id="L397" class="LineNr">397 </span>]
+<span id="L398" class="LineNr">398 </span><span class="traceContains">+mem: storing 34 in location 1</span>
+<span id="L399" class="LineNr">399 </span>
+<span id="L400" class="LineNr">400 </span><span class="Delimiter">:(scenario static_dispatch_disabled_on_headerless_definition)</span>
+<span id="L401" class="LineNr">401 </span><span class="Special">% Hide_errors = true;</span>
+<span id="L402" class="LineNr">402 </span><span class="muRecipe">def</span> test a:num<span class="muRecipe"> -&gt; </span>z:num [
+<span id="L403" class="LineNr">403 </span>  z<span class="Special"> &lt;- </span>copy <span class="Constant">1</span>
+<span id="L404" class="LineNr">404 </span>]
+<span id="L405" class="LineNr">405 </span><span class="muRecipe">def</span> test [
+<span id="L406" class="LineNr">406 </span>  <span class="Identifier">return</span> <span class="Constant">34</span>
+<span id="L407" class="LineNr">407 </span>]
+<span id="L408" class="LineNr">408 </span><span class="traceContains">+error: redefining <a href='010vm.cc.html#L19'>recipe</a> test</span>
+<span id="L409" class="LineNr">409 </span>
+<span id="L410" class="LineNr">410 </span><span class="Delimiter">:(scenario static_dispatch_disabled_on_headerless_definition_2)</span>
+<span id="L411" class="LineNr">411 </span><span class="Special">% Hide_errors = true;</span>
+<span id="L412" class="LineNr">412 </span><span class="muRecipe">def</span> test [
+<span id="L413" class="LineNr">413 </span>  <span class="Identifier">return</span> <span class="Constant">34</span>
+<span id="L414" class="LineNr">414 </span>]
+<span id="L415" class="LineNr">415 </span><span class="muRecipe">def</span> test a:num<span class="muRecipe"> -&gt; </span>z:num [
+<span id="L416" class="LineNr">416 </span>  z<span class="Special"> &lt;- </span>copy <span class="Constant">1</span>
+<span id="L417" class="LineNr">417 </span>]
+<span id="L418" class="LineNr">418 </span><span class="traceContains">+error: redefining <a href='010vm.cc.html#L19'>recipe</a> test</span>
+<span id="L419" class="LineNr">419 </span>
+<span id="L420" class="LineNr">420 </span><span class="Delimiter">:(scenario static_dispatch_on_primitive_names)</span>
+<span id="L421" class="LineNr">421 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
+<span id="L422" class="LineNr">422 </span>  <span class="Constant">1</span>:num<span class="Special"> &lt;- </span>copy <span class="Constant">34</span>
+<span id="L423" class="LineNr">423 </span>  <span class="Constant">2</span>:num<span class="Special"> &lt;- </span>copy <span class="Constant">34</span>
+<span id="L424" class="LineNr">424 </span>  <span class="Constant">3</span>:<span class="Normal">bool</span><span class="Special"> &lt;- </span>equal <span class="Constant">1</span>:num<span class="Delimiter">,</span> <span class="Constant">2</span>:num
+<span id="L425" class="LineNr">425 </span>  <span class="Constant">4</span>:<span class="Normal">bool</span><span class="Special"> &lt;- </span>copy <span class="Constant">0</span>/<span class="Constant">false</span>
+<span id="L426" class="LineNr">426 </span>  <span class="Constant">5</span>:<span class="Normal">bool</span><span class="Special"> &lt;- </span>copy <span class="Constant">0</span>/<span class="Constant">false</span>
+<span id="L427" class="LineNr">427 </span>  <span class="Constant">6</span>:<span class="Normal">bool</span><span class="Special"> &lt;- </span>equal <span class="Constant">4</span>:<span class="Normal">bool</span><span class="Delimiter">,</span> <span class="Constant">5</span>:<span class="Normal">bool</span>
+<span id="L428" class="LineNr">428 </span>]
+<span id="L429" class="LineNr">429 </span><span class="Comment"># temporarily hardcode number equality to always fail</span>
+<span id="L430" class="LineNr">430 </span><span class="muRecipe">def</span> equal x:num<span class="Delimiter">,</span> y:num<span class="muRecipe"> -&gt; </span>z:<span class="Normal">bool</span> [
+<span id="L431" class="LineNr">431 </span>  local-scope
+<span id="L432" class="LineNr">432 </span>  load-ingredients
+<span id="L433" class="LineNr">433 </span>  z<span class="Special"> &lt;- </span>copy <span class="Constant">0</span>/<span class="Constant">false</span>
+<span id="L434" class="LineNr">434 </span>]
+<span id="L435" class="LineNr">435 </span><span class="Comment"># comparing numbers used overload</span>
+<span id="L436" class="LineNr">436 </span><span class="traceContains">+mem: storing 0 in location 3</span>
+<span id="L437" class="LineNr">437 </span><span class="Comment"># comparing booleans continues to use primitive</span>
+<span id="L438" class="LineNr">438 </span><span class="traceContains">+mem: storing 1 in location 6</span>
+<span id="L439" class="LineNr">439 </span>
+<span id="L440" class="LineNr">440 </span><span class="Delimiter">:(scenario static_dispatch_works_with_dummy_results_for_containers)</span>
+<span id="L441" class="LineNr">441 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
+<span id="L442" class="LineNr">442 </span>  _<span class="Special"> &lt;- </span>test <span class="Constant">3</span><span class="Delimiter">,</span> <span class="Constant">4</span>
+<span id="L443" class="LineNr">443 </span>]
+<span id="L444" class="LineNr">444 </span><span class="muRecipe">def</span> test a:num<span class="muRecipe"> -&gt; </span>z:point [
+<span id="L445" class="LineNr">445 </span>  local-scope
+<span id="L446" class="LineNr">446 </span>  load-ingredients
+<span id="L447" class="LineNr">447 </span>  z<span class="Special"> &lt;- </span>merge a<span class="Delimiter">,</span> <span class="Constant">0</span>
+<span id="L448" class="LineNr">448 </span>]
+<span id="L449" class="LineNr">449 </span><span class="muRecipe">def</span> test a:num<span class="Delimiter">,</span> b:num<span class="muRecipe"> -&gt; </span>z:point [
+<span id="L450" class="LineNr">450 </span>  local-scope
+<span id="L451" class="LineNr">451 </span>  load-ingredients
+<span id="L452" class="LineNr">452 </span>  z<span class="Special"> &lt;- </span>merge a<span class="Delimiter">,</span> b
+<span id="L453" class="LineNr">453 </span>]
+<span id="L454" class="LineNr">454 </span>$error: <span class="Constant">0</span>
+<span id="L455" class="LineNr">455 </span>
+<span id="L456" class="LineNr">456 </span><span class="Delimiter">:(scenario static_dispatch_works_with_compound_type_containing_container_defined_after_first_use)</span>
+<span id="L457" class="LineNr">457 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
+<span id="L458" class="LineNr">458 </span>  <span class="Normal">x</span>:&amp;:foo<span class="Special"> &lt;- </span><span class="Normal">new</span> <span class="Constant">foo:type</span>
+<span id="L459" class="LineNr">459 </span>  test x
+<span id="L460" class="LineNr">460 </span>]
+<span id="L461" class="LineNr">461 </span><span class="muData">container</span> foo [
+<span id="L462" class="LineNr">462 </span>  <span class="Normal">x</span>:num
+<span id="L463" class="LineNr">463 </span>]
+<span id="L464" class="LineNr">464 </span><span class="muRecipe">def</span> test a:&amp;:foo<span class="muRecipe"> -&gt; </span>z:num [
+<span id="L465" class="LineNr">465 </span>  local-scope
+<span id="L466" class="LineNr">466 </span>  load-ingredients
+<span id="L467" class="LineNr">467 </span>  <span class="Normal">z</span>:num<span class="Special"> &lt;- </span>get *a<span class="Delimiter">,</span> <span class="Constant">x:offset</span>
+<span id="L468" class="LineNr">468 </span>]
+<span id="L469" class="LineNr">469 </span>$error: <span class="Constant">0</span>
+<span id="L470" class="LineNr">470 </span>
+<span id="L471" class="LineNr">471 </span><span class="Delimiter">:(scenario static_dispatch_works_with_compound_type_containing_container_defined_after_second_use)</span>
+<span id="L472" class="LineNr">472 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
+<span id="L473" class="LineNr">473 </span>  <span class="Normal">x</span>:&amp;:foo<span class="Special"> &lt;- </span><span class="Normal">new</span> <span class="Constant">foo:type</span>
+<span id="L474" class="LineNr">474 </span>  test x
+<span id="L475" class="LineNr">475 </span>]
+<span id="L476" class="LineNr">476 </span><span class="muRecipe">def</span> test a:&amp;:foo<span class="muRecipe"> -&gt; </span>z:num [
+<span id="L477" class="LineNr">477 </span>  local-scope
+<span id="L478" class="LineNr">478 </span>  load-ingredients
+<span id="L479" class="LineNr">479 </span>  <span class="Normal">z</span>:num<span class="Special"> &lt;- </span>get *a<span class="Delimiter">,</span> <span class="Constant">x:offset</span>
+<span id="L480" class="LineNr">480 </span>]
+<span id="L481" class="LineNr">481 </span><span class="muData">container</span> foo [
+<span id="L482" class="LineNr">482 </span>  <span class="Normal">x</span>:num
+<span id="L483" class="LineNr">483 </span>]
+<span id="L484" class="LineNr">484 </span>$error: <span class="Constant">0</span>
+<span id="L485" class="LineNr">485 </span>
+<span id="L486" class="LineNr">486 </span><span class="Delimiter">:(scenario static_dispatch_prefers_literals_to_be_numbers_rather_than_addresses)</span>
+<span id="L487" class="LineNr">487 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
+<span id="L488" class="LineNr">488 </span>  <span class="Constant">1</span>:num<span class="Special"> &lt;- </span>foo <span class="Constant">0</span>
+<span id="L489" class="LineNr">489 </span>]
+<span id="L490" class="LineNr">490 </span><span class="muRecipe">def</span> foo x:&amp;:num<span class="muRecipe"> -&gt; </span>y:num [
+<span id="L491" class="LineNr">491 </span>  <span class="Identifier">return</span> <span class="Constant">34</span>
+<span id="L492" class="LineNr">492 </span>]
+<span id="L493" class="LineNr">493 </span><span class="muRecipe">def</span> foo x:num<span class="muRecipe"> -&gt; </span>y:num [
+<span id="L494" class="LineNr">494 </span>  <span class="Identifier">return</span> <span class="Constant">35</span>
+<span id="L495" class="LineNr">495 </span>]
+<span id="L496" class="LineNr">496 </span><span class="traceContains">+mem: storing 35 in location 1</span>
+<span id="L497" class="LineNr">497 </span>
+<span id="L498" class="LineNr">498 </span><span class="Delimiter">:(scenario static_dispatch_prefers_literals_to_be_numbers_rather_than_addresses_2)</span>
+<span id="L499" class="LineNr">499 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
+<span id="L500" class="LineNr">500 </span>  <span class="Constant">1</span>:num<span class="Special"> &lt;- </span>foo <span class="Constant">0</span> <span class="Constant">0</span>
+<span id="L501" class="LineNr">501 </span>]
+<span id="L502" class="LineNr">502 </span><span class="Comment"># Both variants need to bind 0 to address in first ingredient.</span>
+<span id="L503" class="LineNr">503 </span><span class="Comment"># We still want to prefer the variant with a number rather than address for</span>
+<span id="L504" class="LineNr">504 </span><span class="Comment"># _subsequent_ ingredients.</span>
+<span id="L505" class="LineNr">505 </span><span class="muRecipe">def</span> foo x:&amp;:num y:&amp;:num<span class="muRecipe"> -&gt; </span>z:num [  <span class="Comment"># put the bad match before the good one</span>
+<span id="L506" class="LineNr">506 </span>  <span class="Identifier">return</span> <span class="Constant">34</span>
+<span id="L507" class="LineNr">507 </span>]
+<span id="L508" class="LineNr">508 </span><span class="muRecipe">def</span> foo x:&amp;:num y:num<span class="muRecipe"> -&gt; </span>z:num [
+<span id="L509" class="LineNr">509 </span>  <span class="Identifier">return</span> <span class="Constant">35</span>
+<span id="L510" class="LineNr">510 </span>]
+<span id="L511" class="LineNr">511 </span><span class="traceContains">+mem: storing 35 in location 1</span>
+<span id="L512" class="LineNr">512 </span>
+<span id="L513" class="LineNr">513 </span><span class="Delimiter">:(scenario static_dispatch_on_non_literal_character_ignores_variant_with_numbers)</span>
+<span id="L514" class="LineNr">514 </span><span class="Special">% Hide_errors = true;</span>
+<span id="L515" class="LineNr">515 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
+<span id="L516" class="LineNr">516 </span>  local-scope
+<span id="L517" class="LineNr">517 </span>  <span class="Normal">x</span>:<span class="Normal">char</span><span class="Special"> &lt;- </span>copy <span class="Constant">10</span>/newline
+<span id="L518" class="LineNr">518 </span>  <span class="Constant">1</span>:num/<span class="Special">raw &lt;- </span>foo x
 <span id="L519" class="LineNr">519 </span>]
-<span id="L520" class="LineNr">520 </span><span class="traceContains">+error: <a href='000organization.cc.html#L113'>main</a>: ingredient 0 has the wrong type at '1:num/raw &lt;- foo x'</span>
-<span id="L521" class="LineNr">521 </span><span class="traceAbsent">-mem: storing 34 in location 1</span>
-<span id="L522" class="LineNr">522 </span>
-<span id="L523" class="LineNr">523 </span><span class="Delimiter">:(scenario static_dispatch_dispatches_literal_to_boolean_before_character)</span>
-<span id="L524" class="LineNr">524 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
-<span id="L525" class="LineNr">525 </span>  <span class="Constant">1</span>:num/<span class="Special">raw &lt;- </span>foo <span class="Constant">0</span>  <span class="Comment"># valid literal for boolean</span>
-<span id="L526" class="LineNr">526 </span>]
-<span id="L527" class="LineNr">527 </span><span class="muRecipe">def</span> foo x:<span class="Normal">char</span><span class="muRecipe"> -&gt; </span>y:num [
-<span id="L528" class="LineNr">528 </span>  local-scope
-<span id="L529" class="LineNr">529 </span>  load-ingredients
-<span id="L530" class="LineNr">530 </span>  <span class="Identifier">return</span> <span class="Constant">34</span>
-<span id="L531" class="LineNr">531 </span>]
-<span id="L532" class="LineNr">532 </span><span class="muRecipe">def</span> foo x:<span class="Normal">bool</span><span class="muRecipe"> -&gt; </span>y:num [
-<span id="L533" class="LineNr">533 </span>  local-scope
-<span id="L534" class="LineNr">534 </span>  load-ingredients
-<span id="L535" class="LineNr">535 </span>  <span class="Identifier">return</span> <span class="Constant">35</span>
-<span id="L536" class="LineNr">536 </span>]
-<span id="L537" class="LineNr">537 </span><span class="Comment"># boolean variant is preferred</span>
-<span id="L538" class="LineNr">538 </span><span class="traceContains">+mem: storing 35 in location 1</span>
-<span id="L539" class="LineNr">539 </span>
-<span id="L540" class="LineNr">540 </span><span class="Delimiter">:(scenario static_dispatch_dispatches_literal_to_character_when_out_of_boolean_range)</span>
-<span id="L541" class="LineNr">541 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
-<span id="L542" class="LineNr">542 </span>  <span class="Constant">1</span>:num/<span class="Special">raw &lt;- </span>foo <span class="Constant">97</span>  <span class="Comment"># not a valid literal for boolean</span>
-<span id="L543" class="LineNr">543 </span>]
-<span id="L544" class="LineNr">544 </span><span class="muRecipe">def</span> foo x:<span class="Normal">char</span><span class="muRecipe"> -&gt; </span>y:num [
-<span id="L545" class="LineNr">545 </span>  local-scope
-<span id="L546" class="LineNr">546 </span>  load-ingredients
-<span id="L547" class="LineNr">547 </span>  <span class="Identifier">return</span> <span class="Constant">34</span>
-<span id="L548" class="LineNr">548 </span>]
-<span id="L549" class="LineNr">549 </span><span class="muRecipe">def</span> foo x:<span class="Normal">bool</span><span class="muRecipe"> -&gt; </span>y:num [
-<span id="L550" class="LineNr">550 </span>  local-scope
-<span id="L551" class="LineNr">551 </span>  load-ingredients
-<span id="L552" class="LineNr">552 </span>  <span class="Identifier">return</span> <span class="Constant">35</span>
-<span id="L553" class="LineNr">553 </span>]
-<span id="L554" class="LineNr">554 </span><span class="Comment"># character variant is preferred</span>
-<span id="L555" class="LineNr">555 </span><span class="traceContains">+mem: storing 34 in location 1</span>
-<span id="L556" class="LineNr">556 </span>
-<span id="L557" class="LineNr">557 </span><span class="Delimiter">:(scenario static_dispatch_dispatches_literal_to_number_if_at_all_possible)</span>
-<span id="L558" class="LineNr">558 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
-<span id="L559" class="LineNr">559 </span>  <span class="Constant">1</span>:num/<span class="Special">raw &lt;- </span>foo <span class="Constant">97</span>
-<span id="L560" class="LineNr">560 </span>]
-<span id="L561" class="LineNr">561 </span><span class="muRecipe">def</span> foo x:<span class="Normal">char</span><span class="muRecipe"> -&gt; </span>y:num [
-<span id="L562" class="LineNr">562 </span>  local-scope
-<span id="L563" class="LineNr">563 </span>  load-ingredients
-<span id="L564" class="LineNr">564 </span>  <span class="Identifier">return</span> <span class="Constant">34</span>
-<span id="L565" class="LineNr">565 </span>]
-<span id="L566" class="LineNr">566 </span><span class="muRecipe">def</span> foo x:num<span class="muRecipe"> -&gt; </span>y:num [
-<span id="L567" class="LineNr">567 </span>  local-scope
-<span id="L568" class="LineNr">568 </span>  load-ingredients
-<span id="L569" class="LineNr">569 </span>  <span class="Identifier">return</span> <span class="Constant">35</span>
-<span id="L570" class="LineNr">570 </span>]
-<span id="L571" class="LineNr">571 </span><span class="Comment"># number variant is preferred</span>
-<span id="L572" class="LineNr">572 </span><span class="traceContains">+mem: storing 35 in location 1</span>
-<span id="L573" class="LineNr">573 </span>
-<span id="L574" class="LineNr">574 </span><span class="Delimiter">:(replace{} &quot;string header_label(const <a href='010vm.cc.html#L14'>recipe_ordinal</a> r)&quot;)</span>
-<span id="L575" class="LineNr">575 </span>string header_label<span class="Delimiter">(</span><span class="Normal">const</span> <a href='010vm.cc.html#L14'>recipe_ordinal</a> r<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L576" class="LineNr">576 </span>  <span class="Identifier">return</span> header_label<span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">));</span>
-<span id="L577" class="LineNr">577 </span><span class="Delimiter">}</span>
-<span id="L578" class="LineNr">578 </span><span class="Delimiter">:(code)</span>
-<span id="L579" class="LineNr">579 </span>string header_label<span class="Delimiter">(</span><span class="Normal">const</span> recipe&amp; caller<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L580" class="LineNr">580 </span>  ostringstream out<span class="Delimiter">;</span>
-<span id="L581" class="LineNr">581 </span>  out &lt;&lt; <span class="Constant">&quot;recipe &quot;</span> &lt;&lt; caller<span class="Delimiter">.</span>name<span class="Delimiter">;</span>
-<span id="L582" class="LineNr">582 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> i = <span class="Constant">0</span><span class="Delimiter">;</span>  i &lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>caller<span class="Delimiter">.</span>ingredients<span class="Delimiter">);</span>  ++i<span class="Delimiter">)</span>
-<span id="L583" class="LineNr">583 </span>  <span class="Conceal">¦</span> out &lt;&lt; <span class="Constant">' '</span> &lt;&lt; <a href='028call_return.cc.html#L163'>to_string</a><span class="Delimiter">(</span>caller<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">));</span>
-<span id="L584" class="LineNr">584 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!caller<span class="Delimiter">.</span>products<span class="Delimiter">.</span>empty<span class="Delimiter">())</span> out &lt;&lt; <span class="Constant">&quot; -&gt;&quot;</span><span class="Delimiter">;</span>
-<span id="L585" class="LineNr">585 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> i = <span class="Constant">0</span><span class="Delimiter">;</span>  i &lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>caller<span class="Delimiter">.</span>products<span class="Delimiter">);</span>  ++i<span class="Delimiter">)</span>
-<span id="L586" class="LineNr">586 </span>  <span class="Conceal">¦</span> out &lt;&lt; <span class="Constant">' '</span> &lt;&lt; <a href='028call_return.cc.html#L163'>to_string</a><span class="Delimiter">(</span>caller<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">));</span>
-<span id="L587" class="LineNr">587 </span>  <span class="Identifier">return</span> out<span class="Delimiter">.</span>str<span class="Delimiter">();</span>
-<span id="L588" class="LineNr">588 </span><span class="Delimiter">}</span>
-<span id="L589" class="LineNr">589 </span>
-<span id="L590" class="LineNr">590 </span>string <a href='054static_dispatch.cc.html#L590'>original_header_label</a><span class="Delimiter">(</span><span class="Normal">const</span> recipe&amp; caller<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L591" class="LineNr">591 </span>  ostringstream out<span class="Delimiter">;</span>
-<span id="L592" class="LineNr">592 </span>  out &lt;&lt; <span class="Constant">&quot;recipe &quot;</span> &lt;&lt; caller<span class="Delimiter">.</span>original_name<span class="Delimiter">;</span>
-<span id="L593" class="LineNr">593 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> i = <span class="Constant">0</span><span class="Delimiter">;</span>  i &lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>caller<span class="Delimiter">.</span>ingredients<span class="Delimiter">);</span>  ++i<span class="Delimiter">)</span>
-<span id="L594" class="LineNr">594 </span>  <span class="Conceal">¦</span> out &lt;&lt; <span class="Constant">' '</span> &lt;&lt; caller<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">).</span>original_string<span class="Delimiter">;</span>
-<span id="L595" class="LineNr">595 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!caller<span class="Delimiter">.</span>products<span class="Delimiter">.</span>empty<span class="Delimiter">())</span> out &lt;&lt; <span class="Constant">&quot; -&gt;&quot;</span><span class="Delimiter">;</span>
-<span id="L596" class="LineNr">596 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> i = <span class="Constant">0</span><span class="Delimiter">;</span>  i &lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>caller<span class="Delimiter">.</span>products<span class="Delimiter">);</span>  ++i<span class="Delimiter">)</span>
-<span id="L597" class="LineNr">597 </span>  <span class="Conceal">¦</span> out &lt;&lt; <span class="Constant">' '</span> &lt;&lt; caller<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">).</span>original_string<span class="Delimiter">;</span>
-<span id="L598" class="LineNr">598 </span>  <span class="Identifier">return</span> out<span class="Delimiter">.</span>str<span class="Delimiter">();</span>
-<span id="L599" class="LineNr">599 </span><span class="Delimiter">}</span>
-<span id="L600" class="LineNr">600 </span>
-<span id="L601" class="LineNr">601 </span><span class="Delimiter">:(scenario reload_variant_retains_other_variants)</span>
-<span id="L602" class="LineNr">602 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
-<span id="L603" class="LineNr">603 </span>  <span class="Constant">1</span>:num<span class="Special"> &lt;- </span>copy <span class="Constant">34</span>
-<span id="L604" class="LineNr">604 </span>  <span class="Constant">2</span>:num<span class="Special"> &lt;- </span>foo <span class="Constant">1</span>:num
-<span id="L605" class="LineNr">605 </span>]
-<span id="L606" class="LineNr">606 </span><span class="muRecipe">def</span> foo x:num<span class="muRecipe"> -&gt; </span>y:num [
-<span id="L607" class="LineNr">607 </span>  local-scope
-<span id="L608" class="LineNr">608 </span>  load-ingredients
-<span id="L609" class="LineNr">609 </span>  <span class="Identifier">return</span> <span class="Constant">34</span>
-<span id="L610" class="LineNr">610 </span>]
-<span id="L611" class="LineNr">611 </span><span class="muRecipe">def</span> foo x:&amp;:num<span class="muRecipe"> -&gt; </span>y:num [
-<span id="L612" class="LineNr">612 </span>  local-scope
-<span id="L613" class="LineNr">613 </span>  load-ingredients
-<span id="L614" class="LineNr">614 </span>  <span class="Identifier">return</span> <span class="Constant">35</span>
-<span id="L615" class="LineNr">615 </span>]
-<span id="L616" class="LineNr">616 </span><span class="muRecipe">def</span>! foo x:&amp;:num<span class="muRecipe"> -&gt; </span>y:num [
-<span id="L617" class="LineNr">617 </span>  local-scope
-<span id="L618" class="LineNr">618 </span>  load-ingredients
-<span id="L619" class="LineNr">619 </span>  <span class="Identifier">return</span> <span class="Constant">36</span>
-<span id="L620" class="LineNr">620 </span>]
-<span id="L621" class="LineNr">621 </span><span class="traceContains">+mem: storing 34 in location 2</span>
-<span id="L622" class="LineNr">622 </span>$error: <span class="Constant">0</span>
-<span id="L623" class="LineNr">623 </span>
-<span id="L624" class="LineNr">624 </span><span class="Delimiter">:(scenario dispatch_errors_come_after_unknown_name_errors)</span>
-<span id="L625" class="LineNr">625 </span><span class="Special">% Hide_errors = true;</span>
-<span id="L626" class="LineNr">626 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
-<span id="L627" class="LineNr">627 </span>  <span class="Normal">y</span>:num<span class="Special"> &lt;- </span>foo x
-<span id="L628" class="LineNr">628 </span>]
-<span id="L629" class="LineNr">629 </span><span class="muRecipe">def</span> foo a:num<span class="muRecipe"> -&gt; </span>b:num [
-<span id="L630" class="LineNr">630 </span>  local-scope
-<span id="L631" class="LineNr">631 </span>  load-ingredients
-<span id="L632" class="LineNr">632 </span>  <span class="Identifier">return</span> <span class="Constant">34</span>
-<span id="L633" class="LineNr">633 </span>]
-<span id="L634" class="LineNr">634 </span><span class="muRecipe">def</span> foo a:<span class="Normal">bool</span><span class="muRecipe"> -&gt; </span>b:num [
-<span id="L635" class="LineNr">635 </span>  local-scope
-<span id="L636" class="LineNr">636 </span>  load-ingredients
-<span id="L637" class="LineNr">637 </span>  <span class="Identifier">return</span> <span class="Constant">35</span>
-<span id="L638" class="LineNr">638 </span>]
-<span id="L639" class="LineNr">639 </span><span class="traceContains">+error: <a href='000organization.cc.html#L113'>main</a>: missing type for 'x' in 'y:num &lt;- foo x'</span>
-<span id="L640" class="LineNr">640 </span><span class="traceContains">+error: <a href='000organization.cc.html#L113'>main</a>: failed to find a matching call for 'y:num &lt;- foo x'</span>
-<span id="L641" class="LineNr">641 </span>
-<span id="L642" class="LineNr">642 </span><span class="Delimiter">:(scenario override_methods_with_type_abbreviations)</span>
-<span id="L643" class="LineNr">643 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
-<span id="L644" class="LineNr">644 </span>  local-scope
-<span id="L645" class="LineNr">645 </span>  <span class="Normal">s</span>:text<span class="Special"> &lt;- </span><span class="Normal">new</span> [abc]
-<span id="L646" class="LineNr">646 </span>  <span class="Constant">1</span>:num/<span class="Special">raw &lt;- </span>foo s
-<span id="L647" class="LineNr">647 </span>]
-<span id="L648" class="LineNr">648 </span><span class="muRecipe">def</span> foo a:<a href='043space.cc.html#L82'>address</a>:array:character<span class="muRecipe"> -&gt; </span>result:number [
-<span id="L649" class="LineNr">649 </span>  <span class="Identifier">return</span> <span class="Constant">34</span>
-<span id="L650" class="LineNr">650 </span>]
-<span id="L651" class="LineNr">651 </span><span class="Comment"># identical to previous variant once you take type abbreviations into account</span>
-<span id="L652" class="LineNr">652 </span><span class="muRecipe">def</span>! foo a:text<span class="muRecipe"> -&gt; </span>result:num [
-<span id="L653" class="LineNr">653 </span>  <span class="Identifier">return</span> <span class="Constant">35</span>
+<span id="L520" class="LineNr">520 </span><span class="muRecipe">def</span> foo x:num<span class="muRecipe"> -&gt; </span>y:num [
+<span id="L521" class="LineNr">521 </span>  load-ingredients
+<span id="L522" class="LineNr">522 </span>  <span class="Identifier">return</span> <span class="Constant">34</span>
+<span id="L523" class="LineNr">523 </span>]
+<span id="L524" class="LineNr">524 </span><span class="traceContains">+error: <a href='000organization.cc.html#L113'>main</a>: ingredient 0 has the wrong type at '1:num/raw &lt;- foo x'</span>
+<span id="L525" class="LineNr">525 </span><span class="traceAbsent">-mem: storing 34 in location 1</span>
+<span id="L526" class="LineNr">526 </span>
+<span id="L527" class="LineNr">527 </span><span class="Delimiter">:(scenario static_dispatch_dispatches_literal_to_boolean_before_character)</span>
+<span id="L528" class="LineNr">528 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
+<span id="L529" class="LineNr">529 </span>  <span class="Constant">1</span>:num/<span class="Special">raw &lt;- </span>foo <span class="Constant">0</span>  <span class="Comment"># valid literal for boolean</span>
+<span id="L530" class="LineNr">530 </span>]
+<span id="L531" class="LineNr">531 </span><span class="muRecipe">def</span> foo x:<span class="Normal">char</span><span class="muRecipe"> -&gt; </span>y:num [
+<span id="L532" class="LineNr">532 </span>  local-scope
+<span id="L533" class="LineNr">533 </span>  load-ingredients
+<span id="L534" class="LineNr">534 </span>  <span class="Identifier">return</span> <span class="Constant">34</span>
+<span id="L535" class="LineNr">535 </span>]
+<span id="L536" class="LineNr">536 </span><span class="muRecipe">def</span> foo x:<span class="Normal">bool</span><span class="muRecipe"> -&gt; </span>y:num [
+<span id="L537" class="LineNr">537 </span>  local-scope
+<span id="L538" class="LineNr">538 </span>  load-ingredients
+<span id="L539" class="LineNr">539 </span>  <span class="Identifier">return</span> <span class="Constant">35</span>
+<span id="L540" class="LineNr">540 </span>]
+<span id="L541" class="LineNr">541 </span><span class="Comment"># boolean variant is preferred</span>
+<span id="L542" class="LineNr">542 </span><span class="traceContains">+mem: storing 35 in location 1</span>
+<span id="L543" class="LineNr">543 </span>
+<span id="L544" class="LineNr">544 </span><span class="Delimiter">:(scenario static_dispatch_dispatches_literal_to_character_when_out_of_boolean_range)</span>
+<span id="L545" class="LineNr">545 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
+<span id="L546" class="LineNr">546 </span>  <span class="Constant">1</span>:num/<span class="Special">raw &lt;- </span>foo <span class="Constant">97</span>  <span class="Comment"># not a valid literal for boolean</span>
+<span id="L547" class="LineNr">547 </span>]
+<span id="L548" class="LineNr">548 </span><span class="muRecipe">def</span> foo x:<span class="Normal">char</span><span class="muRecipe"> -&gt; </span>y:num [
+<span id="L549" class="LineNr">549 </span>  local-scope
+<span id="L550" class="LineNr">550 </span>  load-ingredients
+<span id="L551" class="LineNr">551 </span>  <span class="Identifier">return</span> <span class="Constant">34</span>
+<span id="L552" class="LineNr">552 </span>]
+<span id="L553" class="LineNr">553 </span><span class="muRecipe">def</span> foo x:<span class="Normal">bool</span><span class="muRecipe"> -&gt; </span>y:num [
+<span id="L554" class="LineNr">554 </span>  local-scope
+<span id="L555" class="LineNr">555 </span>  load-ingredients
+<span id="L556" class="LineNr">556 </span>  <span class="Identifier">return</span> <span class="Constant">35</span>
+<span id="L557" class="LineNr">557 </span>]
+<span id="L558" class="LineNr">558 </span><span class="Comment"># character variant is preferred</span>
+<span id="L559" class="LineNr">559 </span><span class="traceContains">+mem: storing 34 in location 1</span>
+<span id="L560" class="LineNr">560 </span>
+<span id="L561" class="LineNr">561 </span><span class="Delimiter">:(scenario static_dispatch_dispatches_literal_to_number_if_at_all_possible)</span>
+<span id="L562" class="LineNr">562 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
+<span id="L563" class="LineNr">563 </span>  <span class="Constant">1</span>:num/<span class="Special">raw &lt;- </span>foo <span class="Constant">97</span>
+<span id="L564" class="LineNr">564 </span>]
+<span id="L565" class="LineNr">565 </span><span class="muRecipe">def</span> foo x:<span class="Normal">char</span><span class="muRecipe"> -&gt; </span>y:num [
+<span id="L566" class="LineNr">566 </span>  local-scope
+<span id="L567" class="LineNr">567 </span>  load-ingredients
+<span id="L568" class="LineNr">568 </span>  <span class="Identifier">return</span> <span class="Constant">34</span>
+<span id="L569" class="LineNr">569 </span>]
+<span id="L570" class="LineNr">570 </span><span class="muRecipe">def</span> foo x:num<span class="muRecipe"> -&gt; </span>y:num [
+<span id="L571" class="LineNr">571 </span>  local-scope
+<span id="L572" class="LineNr">572 </span>  load-ingredients
+<span id="L573" class="LineNr">573 </span>  <span class="Identifier">return</span> <span class="Constant">35</span>
+<span id="L574" class="LineNr">574 </span>]
+<span id="L575" class="LineNr">575 </span><span class="Comment"># number variant is preferred</span>
+<span id="L576" class="LineNr">576 </span><span class="traceContains">+mem: storing 35 in location 1</span>
+<span id="L577" class="LineNr">577 </span>
+<span id="L578" class="LineNr">578 </span><span class="Delimiter">:(replace{} &quot;string header_label(const <a href='010vm.cc.html#L14'>recipe_ordinal</a> r)&quot;)</span>
+<span id="L579" class="LineNr">579 </span>string header_label<span class="Delimiter">(</span><span class="Normal">const</span> <a href='010vm.cc.html#L14'>recipe_ordinal</a> r<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L580" class="LineNr">580 </span>  <span class="Identifier">return</span> header_label<span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">));</span>
+<span id="L581" class="LineNr">581 </span><span class="Delimiter">}</span>
+<span id="L582" class="LineNr">582 </span><span class="Delimiter">:(code)</span>
+<span id="L583" class="LineNr">583 </span>string header_label<span class="Delimiter">(</span><span class="Normal">const</span> recipe&amp; caller<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L584" class="LineNr">584 </span>  ostringstream out<span class="Delimiter">;</span>
+<span id="L585" class="LineNr">585 </span>  out &lt;&lt; <span class="Constant">&quot;recipe &quot;</span> &lt;&lt; caller<span class="Delimiter">.</span>name<span class="Delimiter">;</span>
+<span id="L586" class="LineNr">586 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> i = <span class="Constant">0</span><span class="Delimiter">;</span>  i &lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>caller<span class="Delimiter">.</span>ingredients<span class="Delimiter">);</span>  ++i<span class="Delimiter">)</span>
+<span id="L587" class="LineNr">587 </span>  <span class="Conceal">¦</span> out &lt;&lt; <span class="Constant">' '</span> &lt;&lt; <a href='028call_return.cc.html#L163'>to_string</a><span class="Delimiter">(</span>caller<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">));</span>
+<span id="L588" class="LineNr">588 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!caller<span class="Delimiter">.</span>products<span class="Delimiter">.</span>empty<span class="Delimiter">())</span> out &lt;&lt; <span class="Constant">&quot; -&gt;&quot;</span><span class="Delimiter">;</span>
+<span id="L589" class="LineNr">589 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> i = <span class="Constant">0</span><span class="Delimiter">;</span>  i &lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>caller<span class="Delimiter">.</span>products<span class="Delimiter">);</span>  ++i<span class="Delimiter">)</span>
+<span id="L590" class="LineNr">590 </span>  <span class="Conceal">¦</span> out &lt;&lt; <span class="Constant">' '</span> &lt;&lt; <a href='028call_return.cc.html#L163'>to_string</a><span class="Delimiter">(</span>caller<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">));</span>
+<span id="L591" class="LineNr">591 </span>  <span class="Identifier">return</span> out<span class="Delimiter">.</span>str<span class="Delimiter">();</span>
+<span id="L592" class="LineNr">592 </span><span class="Delimiter">}</span>
+<span id="L593" class="LineNr">593 </span>
+<span id="L594" class="LineNr">594 </span>string <a href='054static_dispatch.cc.html#L594'>original_header_label</a><span class="Delimiter">(</span><span class="Normal">const</span> recipe&amp; caller<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L595" class="LineNr">595 </span>  ostringstream out<span class="Delimiter">;</span>
+<span id="L596" class="LineNr">596 </span>  out &lt;&lt; <span class="Constant">&quot;recipe &quot;</span> &lt;&lt; caller<span class="Delimiter">.</span>original_name<span class="Delimiter">;</span>
+<span id="L597" class="LineNr">597 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> i = <span class="Constant">0</span><span class="Delimiter">;</span>  i &lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>caller<span class="Delimiter">.</span>ingredients<span class="Delimiter">);</span>  ++i<span class="Delimiter">)</span>
+<span id="L598" class="LineNr">598 </span>  <span class="Conceal">¦</span> out &lt;&lt; <span class="Constant">' '</span> &lt;&lt; caller<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">).</span>original_string<span class="Delimiter">;</span>
+<span id="L599" class="LineNr">599 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!caller<span class="Delimiter">.</span>products<span class="Delimiter">.</span>empty<span class="Delimiter">())</span> out &lt;&lt; <span class="Constant">&quot; -&gt;&quot;</span><span class="Delimiter">;</span>
+<span id="L600" class="LineNr">600 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> i = <span class="Constant">0</span><span class="Delimiter">;</span>  i &lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>caller<span class="Delimiter">.</span>products<span class="Delimiter">);</span>  ++i<span class="Delimiter">)</span>
+<span id="L601" class="LineNr">601 </span>  <span class="Conceal">¦</span> out &lt;&lt; <span class="Constant">' '</span> &lt;&lt; caller<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">).</span>original_string<span class="Delimiter">;</span>
+<span id="L602" class="LineNr">602 </span>  <span class="Identifier">return</span> out<span class="Delimiter">.</span>str<span class="Delimiter">();</span>
+<span id="L603" class="LineNr">603 </span><span class="Delimiter">}</span>
+<span id="L604" class="LineNr">604 </span>
+<span id="L605" class="LineNr">605 </span><span class="Delimiter">:(scenario reload_variant_retains_other_variants)</span>
+<span id="L606" class="LineNr">606 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
+<span id="L607" class="LineNr">607 </span>  <span class="Constant">1</span>:num<span class="Special"> &lt;- </span>copy <span class="Constant">34</span>
+<span id="L608" class="LineNr">608 </span>  <span class="Constant">2</span>:num<span class="Special"> &lt;- </span>foo <span class="Constant">1</span>:num
+<span id="L609" class="LineNr">609 </span>]
+<span id="L610" class="LineNr">610 </span><span class="muRecipe">def</span> foo x:num<span class="muRecipe"> -&gt; </span>y:num [
+<span id="L611" class="LineNr">611 </span>  local-scope
+<span id="L612" class="LineNr">612 </span>  load-ingredients
+<span id="L613" class="LineNr">613 </span>  <span class="Identifier">return</span> <span class="Constant">34</span>
+<span id="L614" class="LineNr">614 </span>]
+<span id="L615" class="LineNr">615 </span><span class="muRecipe">def</span> foo x:&amp;:num<span class="muRecipe"> -&gt; </span>y:num [
+<span id="L616" class="LineNr">616 </span>  local-scope
+<span id="L617" class="LineNr">617 </span>  load-ingredients
+<span id="L618" class="LineNr">618 </span>  <span class="Identifier">return</span> <span class="Constant">35</span>
+<span id="L619" class="LineNr">619 </span>]
+<span id="L620" class="LineNr">620 </span><span class="muRecipe">def</span>! foo x:&amp;:num<span class="muRecipe"> -&gt; </span>y:num [
+<span id="L621" class="LineNr">621 </span>  local-scope
+<span id="L622" class="LineNr">622 </span>  load-ingredients
+<span id="L623" class="LineNr">623 </span>  <span class="Identifier">return</span> <span class="Constant">36</span>
+<span id="L624" class="LineNr">624 </span>]
+<span id="L625" class="LineNr">625 </span><span class="traceContains">+mem: storing 34 in location 2</span>
+<span id="L626" class="LineNr">626 </span>$error: <span class="Constant">0</span>
+<span id="L627" class="LineNr">627 </span>
+<span id="L628" class="LineNr">628 </span><span class="Delimiter">:(scenario dispatch_errors_come_after_unknown_name_errors)</span>
+<span id="L629" class="LineNr">629 </span><span class="Special">% Hide_errors = true;</span>
+<span id="L630" class="LineNr">630 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
+<span id="L631" class="LineNr">631 </span>  <span class="Normal">y</span>:num<span class="Special"> &lt;- </span>foo x
+<span id="L632" class="LineNr">632 </span>]
+<span id="L633" class="LineNr">633 </span><span class="muRecipe">def</span> foo a:num<span class="muRecipe"> -&gt; </span>b:num [
+<span id="L634" class="LineNr">634 </span>  local-scope
+<span id="L635" class="LineNr">635 </span>  load-ingredients
+<span id="L636" class="LineNr">636 </span>  <span class="Identifier">return</span> <span class="Constant">34</span>
+<span id="L637" class="LineNr">637 </span>]
+<span id="L638" class="LineNr">638 </span><span class="muRecipe">def</span> foo a:<span class="Normal">bool</span><span class="muRecipe"> -&gt; </span>b:num [
+<span id="L639" class="LineNr">639 </span>  local-scope
+<span id="L640" class="LineNr">640 </span>  load-ingredients
+<span id="L641" class="LineNr">641 </span>  <span class="Identifier">return</span> <span class="Constant">35</span>
+<span id="L642" class="LineNr">642 </span>]
+<span id="L643" class="LineNr">643 </span><span class="traceContains">+error: <a href='000organization.cc.html#L113'>main</a>: missing type for 'x' in 'y:num &lt;- foo x'</span>
+<span id="L644" class="LineNr">644 </span><span class="traceContains">+error: <a href='000organization.cc.html#L113'>main</a>: failed to find a matching call for 'y:num &lt;- foo x'</span>
+<span id="L645" class="LineNr">645 </span>
+<span id="L646" class="LineNr">646 </span><span class="Delimiter">:(scenario override_methods_with_type_abbreviations)</span>
+<span id="L647" class="LineNr">647 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
+<span id="L648" class="LineNr">648 </span>  local-scope
+<span id="L649" class="LineNr">649 </span>  <span class="Normal">s</span>:text<span class="Special"> &lt;- </span><span class="Normal">new</span> [abc]
+<span id="L650" class="LineNr">650 </span>  <span class="Constant">1</span>:num/<span class="Special">raw &lt;- </span>foo s
+<span id="L651" class="LineNr">651 </span>]
+<span id="L652" class="LineNr">652 </span><span class="muRecipe">def</span> foo a:<a href='043space.cc.html#L82'>address</a>:array:character<span class="muRecipe"> -&gt; </span>result:number [
+<span id="L653" class="LineNr">653 </span>  <span class="Identifier">return</span> <span class="Constant">34</span>
 <span id="L654" class="LineNr">654 </span>]
-<span id="L655" class="LineNr">655 </span><span class="traceContains">+mem: storing 35 in location 1</span>
-<span id="L656" class="LineNr">656 </span>
-<span id="L657" class="LineNr">657 </span><span class="Delimiter">:(scenario ignore_static_dispatch_in_type_errors_without_overloading)</span>
-<span id="L658" class="LineNr">658 </span><span class="Special">% Hide_errors = true;</span>
-<span id="L659" class="LineNr">659 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
-<span id="L660" class="LineNr">660 </span>  local-scope
-<span id="L661" class="LineNr">661 </span>  <span class="Normal">x</span>:&amp;:num<span class="Special"> &lt;- </span>copy <span class="Constant">0</span>
-<span id="L662" class="LineNr">662 </span>  foo x
-<span id="L663" class="LineNr">663 </span>]
-<span id="L664" class="LineNr">664 </span><span class="muRecipe">def</span> foo x:&amp;:<span class="Normal">char</span> [
-<span id="L665" class="LineNr">665 </span>  local-scope
-<span id="L666" class="LineNr">666 </span>  load-ingredients
+<span id="L655" class="LineNr">655 </span><span class="Comment"># identical to previous variant once you take type abbreviations into account</span>
+<span id="L656" class="LineNr">656 </span><span class="muRecipe">def</span>! foo a:text<span class="muRecipe"> -&gt; </span>result:num [
+<span id="L657" class="LineNr">657 </span>  <span class="Identifier">return</span> <span class="Constant">35</span>
+<span id="L658" class="LineNr">658 </span>]
+<span id="L659" class="LineNr">659 </span><span class="traceContains">+mem: storing 35 in location 1</span>
+<span id="L660" class="LineNr">660 </span>
+<span id="L661" class="LineNr">661 </span><span class="Delimiter">:(scenario ignore_static_dispatch_in_type_errors_without_overloading)</span>
+<span id="L662" class="LineNr">662 </span><span class="Special">% Hide_errors = true;</span>
+<span id="L663" class="LineNr">663 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
+<span id="L664" class="LineNr">664 </span>  local-scope
+<span id="L665" class="LineNr">665 </span>  <span class="Normal">x</span>:&amp;:num<span class="Special"> &lt;- </span>copy <span class="Constant">0</span>
+<span id="L666" class="LineNr">666 </span>  foo x
 <span id="L667" class="LineNr">667 </span>]
-<span id="L668" class="LineNr">668 </span><span class="traceContains">+error: <a href='000organization.cc.html#L113'>main</a>: types don't match in call for 'foo x'</span>
-<span id="L669" class="LineNr">669 </span><span class="traceContains">+error:   which tries to call 'recipe foo x:&amp;:char'</span>
-<span id="L670" class="LineNr">670 </span>
-<span id="L671" class="LineNr">671 </span><span class="Delimiter">:(scenario show_available_variants_in_dispatch_errors)</span>
-<span id="L672" class="LineNr">672 </span><span class="Special">% Hide_errors = true;</span>
-<span id="L673" class="LineNr">673 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
-<span id="L674" class="LineNr">674 </span>  local-scope
-<span id="L675" class="LineNr">675 </span>  <span class="Normal">x</span>:&amp;:num<span class="Special"> &lt;- </span>copy <span class="Constant">0</span>
-<span id="L676" class="LineNr">676 </span>  foo x
-<span id="L677" class="LineNr">677 </span>]
-<span id="L678" class="LineNr">678 </span><span class="muRecipe">def</span> foo x:&amp;:<span class="Normal">char</span> [
-<span id="L679" class="LineNr">679 </span>  local-scope
-<span id="L680" class="LineNr">680 </span>  load-ingredients
+<span id="L668" class="LineNr">668 </span><span class="muRecipe">def</span> foo x:&amp;:<span class="Normal">char</span> [
+<span id="L669" class="LineNr">669 </span>  local-scope
+<span id="L670" class="LineNr">670 </span>  load-ingredients
+<span id="L671" class="LineNr">671 </span>]
+<span id="L672" class="LineNr">672 </span><span class="traceContains">+error: <a href='000organization.cc.html#L113'>main</a>: types don't match in call for 'foo x'</span>
+<span id="L673" class="LineNr">673 </span><span class="traceContains">+error:   which tries to call 'recipe foo x:&amp;:char'</span>
+<span id="L674" class="LineNr">674 </span>
+<span id="L675" class="LineNr">675 </span><span class="Delimiter">:(scenario show_available_variants_in_dispatch_errors)</span>
+<span id="L676" class="LineNr">676 </span><span class="Special">% Hide_errors = true;</span>
+<span id="L677" class="LineNr">677 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
+<span id="L678" class="LineNr">678 </span>  local-scope
+<span id="L679" class="LineNr">679 </span>  <span class="Normal">x</span>:&amp;:num<span class="Special"> &lt;- </span>copy <span class="Constant">0</span>
+<span id="L680" class="LineNr">680 </span>  foo x
 <span id="L681" class="LineNr">681 </span>]
-<span id="L682" class="LineNr">682 </span><span class="muRecipe">def</span> foo x:&amp;:<span class="Normal">bool</span> [
+<span id="L682" class="LineNr">682 </span><span class="muRecipe">def</span> foo x:&amp;:<span class="Normal">char</span> [
 <span id="L683" class="LineNr">683 </span>  local-scope
 <span id="L684" class="LineNr">684 </span>  load-ingredients
 <span id="L685" class="LineNr">685 </span>]
-<span id="L686" class="LineNr">686 </span><span class="traceContains">+error: <a href='000organization.cc.html#L113'>main</a>: failed to find a matching call for 'foo x'</span>
-<span id="L687" class="LineNr">687 </span><span class="traceContains">+error:   available variants are:</span>
-<span id="L688" class="LineNr">688 </span><span class="traceContains">+error:     <a href='010vm.cc.html#L19'>recipe</a> foo x:&amp;:char</span>
-<span id="L689" class="LineNr">689 </span><span class="traceContains">+error:     <a href='010vm.cc.html#L19'>recipe</a> foo x:&amp;:bool</span>
-<span id="L690" class="LineNr">690 </span>
-<span id="L691" class="LineNr">691 </span><span class="Delimiter">:(before &quot;End Includes&quot;)</span>
-<span id="L692" class="LineNr">692 </span><span class="Normal">using</span> std::abs<span class="Delimiter">;</span>
+<span id="L686" class="LineNr">686 </span><span class="muRecipe">def</span> foo x:&amp;:<span class="Normal">bool</span> [
+<span id="L687" class="LineNr">687 </span>  local-scope
+<span id="L688" class="LineNr">688 </span>  load-ingredients
+<span id="L689" class="LineNr">689 </span>]
+<span id="L690" class="LineNr">690 </span><span class="traceContains">+error: <a href='000organization.cc.html#L113'>main</a>: failed to find a matching call for 'foo x'</span>
+<span id="L691" class="LineNr">691 </span><span class="traceContains">+error:   available variants are:</span>
+<span id="L692" class="LineNr">692 </span><span class="traceContains">+error:     <a href='010vm.cc.html#L19'>recipe</a> foo x:&amp;:char</span>
+<span id="L693" class="LineNr">693 </span><span class="traceContains">+error:     <a href='010vm.cc.html#L19'>recipe</a> foo x:&amp;:bool</span>
+<span id="L694" class="LineNr">694 </span>
+<span id="L695" class="LineNr">695 </span><span class="Delimiter">:(before &quot;End Includes&quot;)</span>
+<span id="L696" class="LineNr">696 </span><span class="Normal">using</span> std::abs<span class="Delimiter">;</span>
 </pre>
 </body>
 </html>
diff --git a/html/055shape_shifting_container.cc.html b/html/055shape_shifting_container.cc.html
index 5fce35b6..c4065bb4 100644
--- a/html/055shape_shifting_container.cc.html
+++ b/html/055shape_shifting_container.cc.html
@@ -100,7 +100,7 @@ if ('onhashchange' in window) {
 <span id="L34" class="LineNr"> 34 </span><span class="Normal">const</span> type_tree* get_base_type<span class="Delimiter">(</span><span class="Normal">const</span> type_tree* t<span class="Delimiter">)</span> <span class="Delimiter">{</span>
 <span id="L35" class="LineNr"> 35 </span>  <span class="Normal">const</span> type_tree* result = t<span class="Delimiter">-&gt;</span>atom ? t : t<span class="Delimiter">-&gt;</span>left<span class="Delimiter">;</span>
 <span id="L36" class="LineNr"> 36 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!result<span class="Delimiter">-&gt;</span>atom<span class="Delimiter">)</span>
-<span id="L37" class="LineNr"> 37 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <span class="Constant">&quot;invalid type &quot;</span> &lt;&lt; <a href='028call_return.cc.html#L163'>to_string</a><span class="Delimiter">(</span>t<span class="Delimiter">)</span> &lt;&lt; <span class="cSpecial">'\n'</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L37" class="LineNr"> 37 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <span class="Constant">&quot;invalid type &quot;</span> &lt;&lt; <a href='028call_return.cc.html#L163'>to_string</a><span class="Delimiter">(</span>t<span class="Delimiter">)</span> &lt;&lt; <span class="cSpecial">'\n'</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L38" class="LineNr"> 38 </span>  <span class="Identifier">return</span> result<span class="Delimiter">;</span>
 <span id="L39" class="LineNr"> 39 </span><span class="Delimiter">}</span>
 <span id="L40" class="LineNr"> 40 </span>
@@ -210,7 +210,7 @@ if ('onhashchange' in window) {
 <span id="L144" class="LineNr">144 </span>
 <span id="L145" class="LineNr">145 </span><span class="Delimiter">:(before &quot;End container Name Refinements&quot;)</span>
 <span id="L146" class="LineNr">146 </span><span class="Normal">if</span> <span class="Delimiter">(</span>name<span class="Delimiter">.</span>find<span class="Delimiter">(</span><span class="Constant">':'</span><span class="Delimiter">)</span> != string::npos<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L147" class="LineNr">147 </span>  <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">&quot;parse&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;container has type ingredients; parsing&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L147" class="LineNr">147 </span>  <a href='003trace.cc.html#L167'>trace</a><span class="Delimiter">(</span><span class="Constant">&quot;parse&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;container has type ingredients; parsing&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L148" class="LineNr">148 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!read_type_ingredients<span class="Delimiter">(</span>name<span class="Delimiter">,</span> command<span class="Delimiter">))</span> <span class="Delimiter">{</span>
 <span id="L149" class="LineNr">149 </span>  <span class="Conceal">¦</span> <span class="Comment">// error; skip rest of the container definition and continue</span>
 <span id="L150" class="LineNr">150 </span>  <span class="Conceal">¦</span> <a href='016dilated_reagent.cc.html#L57'>slurp_balanced_bracket</a><span class="Delimiter">(</span>in<span class="Delimiter">);</span>
@@ -232,7 +232,7 @@ if ('onhashchange' in window) {
 <span id="L166" class="LineNr">166 </span>  <span class="Conceal">¦</span> <span class="Normal">const</span> type_info&amp; previous_info = get<span class="Delimiter">(</span>Type<span class="Delimiter">,</span> get<span class="Delimiter">(</span>Type_ordinal<span class="Delimiter">,</span> name<span class="Delimiter">));</span>
 <span id="L167" class="LineNr">167 </span>  <span class="Conceal">¦</span> <span class="Comment">// we've already seen this container; make sure type ingredients match</span>
 <span id="L168" class="LineNr">168 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>!type_ingredients_match<span class="Delimiter">(</span>type_ingredient_names<span class="Delimiter">,</span> previous_info<span class="Delimiter">.</span>type_ingredient_names<span class="Delimiter">))</span> <span class="Delimiter">{</span>
-<span id="L169" class="LineNr">169 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <span class="Constant">&quot;headers of &quot;</span> &lt;&lt; command &lt;&lt; <span class="Constant">&quot; '&quot;</span> &lt;&lt; name &lt;&lt; <span class="Constant">&quot;' must use identical type ingredients</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L169" class="LineNr">169 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <span class="Constant">&quot;headers of &quot;</span> &lt;&lt; command &lt;&lt; <span class="Constant">&quot; '&quot;</span> &lt;&lt; name &lt;&lt; <span class="Constant">&quot;' must use identical type ingredients</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L170" class="LineNr">170 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Identifier">return</span> <span class="Constant">false</span><span class="Delimiter">;</span>
 <span id="L171" class="LineNr">171 </span>  <span class="Conceal">¦</span> <span class="Delimiter">}</span>
 <span id="L172" class="LineNr">172 </span>  <span class="Conceal">¦</span> <span class="Identifier">return</span> <span class="Constant">true</span><span class="Delimiter">;</span>
@@ -250,15 +250,15 @@ if ('onhashchange' in window) {
 <span id="L184" class="LineNr">184 </span>  <span class="Normal">while</span> <span class="Delimiter">(</span><a href='001help.cc.html#L239'>has_data</a><span class="Delimiter">(</span>in<span class="Delimiter">))</span> <span class="Delimiter">{</span>
 <span id="L185" class="LineNr">185 </span>  <span class="Conceal">¦</span> string curr = slurp_until<span class="Delimiter">(</span>in<span class="Delimiter">,</span> <span class="Constant">':'</span><span class="Delimiter">);</span>
 <span id="L186" class="LineNr">186 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>curr<span class="Delimiter">.</span>empty<span class="Delimiter">())</span> <span class="Delimiter">{</span>
-<span id="L187" class="LineNr">187 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; container_name &lt;&lt; <span class="Constant">&quot;: empty type ingredients not permitted</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L187" class="LineNr">187 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; container_name &lt;&lt; <span class="Constant">&quot;: empty type ingredients not permitted</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L188" class="LineNr">188 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Identifier">return</span> <span class="Constant">false</span><span class="Delimiter">;</span>
 <span id="L189" class="LineNr">189 </span>  <span class="Conceal">¦</span> <span class="Delimiter">}</span>
 <span id="L190" class="LineNr">190 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>!starts_with<span class="Delimiter">(</span>curr<span class="Delimiter">,</span> <span class="Constant">&quot;_&quot;</span><span class="Delimiter">))</span> <span class="Delimiter">{</span>
-<span id="L191" class="LineNr">191 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; container_name &lt;&lt; <span class="Constant">&quot;: type ingredient '&quot;</span> &lt;&lt; curr &lt;&lt; <span class="Constant">&quot;' must begin with an underscore</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L191" class="LineNr">191 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; container_name &lt;&lt; <span class="Constant">&quot;: type ingredient '&quot;</span> &lt;&lt; curr &lt;&lt; <span class="Constant">&quot;' must begin with an underscore</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L192" class="LineNr">192 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Identifier">return</span> <span class="Constant">false</span><span class="Delimiter">;</span>
 <span id="L193" class="LineNr">193 </span>  <span class="Conceal">¦</span> <span class="Delimiter">}</span>
-<span id="L194" class="LineNr">194 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>out<span class="Delimiter">.</span>find<span class="Delimiter">(</span>curr<span class="Delimiter">)</span> != out<span class="Delimiter">.</span><a href='003trace.cc.html#L197'>end</a><span class="Delimiter">())</span> <span class="Delimiter">{</span>
-<span id="L195" class="LineNr">195 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; container_name &lt;&lt; <span class="Constant">&quot;: can't repeat type ingredient name'&quot;</span> &lt;&lt; curr &lt;&lt; <span class="Constant">&quot;' in a single container definition</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; end<span class="Delimiter">();</span>
+<span id="L194" class="LineNr">194 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>out<span class="Delimiter">.</span>find<span class="Delimiter">(</span>curr<span class="Delimiter">)</span> != out<span class="Delimiter">.</span><a href='003trace.cc.html#L203'>end</a><span class="Delimiter">())</span> <span class="Delimiter">{</span>
+<span id="L195" class="LineNr">195 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; container_name &lt;&lt; <span class="Constant">&quot;: can't repeat type ingredient name'&quot;</span> &lt;&lt; curr &lt;&lt; <span class="Constant">&quot;' in a single container definition</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; end<span class="Delimiter">();</span>
 <span id="L196" class="LineNr">196 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Identifier">return</span> <span class="Constant">false</span><span class="Delimiter">;</span>
 <span id="L197" class="LineNr">197 </span>  <span class="Conceal">¦</span> <span class="Delimiter">}</span>
 <span id="L198" class="LineNr">198 </span>  <span class="Conceal">¦</span> <a href='001help.cc.html#L221'>put</a><span class="Delimiter">(</span>out<span class="Delimiter">,</span> curr<span class="Delimiter">,</span> next_type_ordinal++<span class="Delimiter">);</span>
@@ -268,7 +268,7 @@ if ('onhashchange' in window) {
 <span id="L202" class="LineNr">202 </span>
 <span id="L203" class="LineNr">203 </span><span class="Normal">bool</span> type_ingredients_match<span class="Delimiter">(</span><span class="Normal">const</span> map&lt;string<span class="Delimiter">,</span> type_ordinal&gt;&amp; a<span class="Delimiter">,</span> <span class="Normal">const</span> map&lt;string<span class="Delimiter">,</span> type_ordinal&gt;&amp; b<span class="Delimiter">)</span> <span class="Delimiter">{</span>
 <span id="L204" class="LineNr">204 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>a<span class="Delimiter">)</span> != <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>b<span class="Delimiter">))</span> <span class="Identifier">return</span> <span class="Constant">false</span><span class="Delimiter">;</span>
-<span id="L205" class="LineNr">205 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span>map&lt;string<span class="Delimiter">,</span> type_ordinal&gt;::const_iterator p = a<span class="Delimiter">.</span>begin<span class="Delimiter">();</span>  p != a<span class="Delimiter">.</span><a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>  ++p<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L205" class="LineNr">205 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span>map&lt;string<span class="Delimiter">,</span> type_ordinal&gt;::const_iterator p = a<span class="Delimiter">.</span>begin<span class="Delimiter">();</span>  p != a<span class="Delimiter">.</span><a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>  ++p<span class="Delimiter">)</span> <span class="Delimiter">{</span>
 <span id="L206" class="LineNr">206 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>!contains_key<span class="Delimiter">(</span>b<span class="Delimiter">,</span> p<span class="Delimiter">-&gt;</span>first<span class="Delimiter">))</span> <span class="Identifier">return</span> <span class="Constant">false</span><span class="Delimiter">;</span>
 <span id="L207" class="LineNr">207 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>p<span class="Delimiter">-&gt;</span>second != get<span class="Delimiter">(</span>b<span class="Delimiter">,</span> p<span class="Delimiter">-&gt;</span>first<span class="Delimiter">))</span> <span class="Identifier">return</span> <span class="Constant">false</span><span class="Delimiter">;</span>
 <span id="L208" class="LineNr">208 </span>  <span class="Delimiter">}</span>
@@ -409,7 +409,7 @@ if ('onhashchange' in window) {
 <span id="L343" class="LineNr">343 </span><span class="Normal">void</span> replace_type_ingredients<span class="Delimiter">(</span>reagent&amp; element<span class="Delimiter">,</span> <span class="Normal">const</span> type_tree* caller_type<span class="Delimiter">,</span> <span class="Normal">const</span> type_info&amp; info<span class="Delimiter">,</span> <span class="Normal">const</span> string&amp; location_for_error_messages<span class="Delimiter">)</span> <span class="Delimiter">{</span>
 <span id="L344" class="LineNr">344 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>contains_type_ingredient<span class="Delimiter">(</span>element<span class="Delimiter">))</span> <span class="Delimiter">{</span>
 <span id="L345" class="LineNr">345 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>!caller_type<span class="Delimiter">-&gt;</span>right<span class="Delimiter">)</span>
-<span id="L346" class="LineNr">346 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <span class="Constant">&quot;illegal type &quot;</span> &lt;&lt; names_to_string<span class="Delimiter">(</span>caller_type<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot; seems to be missing a type ingredient or three&quot;</span> &lt;&lt; location_for_error_messages &lt;&lt; <span class="cSpecial">'\n'</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L346" class="LineNr">346 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <span class="Constant">&quot;illegal type &quot;</span> &lt;&lt; names_to_string<span class="Delimiter">(</span>caller_type<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot; seems to be missing a type ingredient or three&quot;</span> &lt;&lt; location_for_error_messages &lt;&lt; <span class="cSpecial">'\n'</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L347" class="LineNr">347 </span>  <span class="Conceal">¦</span> replace_type_ingredients<span class="Delimiter">(</span>element<span class="Delimiter">.</span>type<span class="Delimiter">,</span> caller_type<span class="Delimiter">-&gt;</span>right<span class="Delimiter">,</span> info<span class="Delimiter">,</span> location_for_error_messages<span class="Delimiter">);</span>
 <span id="L348" class="LineNr">348 </span>  <span class="Delimiter">}</span>
 <span id="L349" class="LineNr">349 </span><span class="Delimiter">}</span>
@@ -437,11 +437,11 @@ if ('onhashchange' in window) {
 <span id="L371" class="LineNr">371 </span>
 <span id="L372" class="LineNr">372 </span><span class="Normal">const</span> type_tree* corresponding<span class="Delimiter">(</span><span class="Normal">const</span> type_tree* type<span class="Delimiter">,</span> <span class="Normal">int</span> index<span class="Delimiter">,</span> <span class="Normal">bool</span> <span class="Normal">final</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
 <span id="L373" class="LineNr">373 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">const</span> type_tree* curr = type<span class="Delimiter">;</span>  curr<span class="Delimiter">;</span>  curr = curr<span class="Delimiter">-&gt;</span>right<span class="Delimiter">,</span> --index<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L374" class="LineNr">374 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L171'>assert_for_now</a><span class="Delimiter">(</span>!curr<span class="Delimiter">-&gt;</span>atom<span class="Delimiter">);</span>
+<span id="L374" class="LineNr">374 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L177'>assert_for_now</a><span class="Delimiter">(</span>!curr<span class="Delimiter">-&gt;</span>atom<span class="Delimiter">);</span>
 <span id="L375" class="LineNr">375 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>index == <span class="Constant">0</span><span class="Delimiter">)</span>
 <span id="L376" class="LineNr">376 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Identifier">return</span> <span class="Normal">final</span> ? curr : curr<span class="Delimiter">-&gt;</span>left<span class="Delimiter">;</span>
 <span id="L377" class="LineNr">377 </span>  <span class="Delimiter">}</span>
-<span id="L378" class="LineNr">378 </span>  <a href='003trace.cc.html#L171'>assert_for_now</a><span class="Delimiter">(</span><span class="Constant">false</span><span class="Delimiter">);</span>
+<span id="L378" class="LineNr">378 </span>  <a href='003trace.cc.html#L177'>assert_for_now</a><span class="Delimiter">(</span><span class="Constant">false</span><span class="Delimiter">);</span>
 <span id="L379" class="LineNr">379 </span><span class="Delimiter">}</span>
 <span id="L380" class="LineNr">380 </span>
 <span id="L381" class="LineNr">381 </span><span class="Normal">bool</span> is_type_ingredient<span class="Delimiter">(</span><span class="Normal">const</span> type_tree* type<span class="Delimiter">)</span> <span class="Delimiter">{</span>
@@ -455,7 +455,7 @@ if ('onhashchange' in window) {
 <span id="L389" class="LineNr">389 </span>
 <span id="L390" class="LineNr">390 </span><span class="Normal">void</span> replace_type_ingredient_at<span class="Delimiter">(</span><span class="Normal">const</span> <span class="Normal">int</span> type_ingredient_index<span class="Delimiter">,</span> type_tree* <a href='030container.cc.html#L429'>element_type</a><span class="Delimiter">,</span> <span class="Normal">const</span> type_tree* callsite_type<span class="Delimiter">,</span> <span class="Normal">const</span> type_info&amp; container_info<span class="Delimiter">,</span> <span class="Normal">const</span> string&amp; location_for_error_messages<span class="Delimiter">)</span> <span class="Delimiter">{</span>
 <span id="L391" class="LineNr">391 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!has_nth_type<span class="Delimiter">(</span>callsite_type<span class="Delimiter">,</span> type_ingredient_index<span class="Delimiter">))</span> <span class="Delimiter">{</span>
-<span id="L392" class="LineNr">392 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <span class="Constant">&quot;illegal type &quot;</span> &lt;&lt; names_to_string<span class="Delimiter">(</span>callsite_type<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot; seems to be missing a type ingredient or three&quot;</span> &lt;&lt; location_for_error_messages &lt;&lt; <span class="cSpecial">'\n'</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L392" class="LineNr">392 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <span class="Constant">&quot;illegal type &quot;</span> &lt;&lt; names_to_string<span class="Delimiter">(</span>callsite_type<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot; seems to be missing a type ingredient or three&quot;</span> &lt;&lt; location_for_error_messages &lt;&lt; <span class="cSpecial">'\n'</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L393" class="LineNr">393 </span>  <span class="Conceal">¦</span> <span class="Identifier">return</span><span class="Delimiter">;</span>
 <span id="L394" class="LineNr">394 </span>  <span class="Delimiter">}</span>
 <span id="L395" class="LineNr">395 </span>  *element_type = *nth_type_ingredient<span class="Delimiter">(</span>callsite_type<span class="Delimiter">,</span> type_ingredient_index<span class="Delimiter">,</span> container_info<span class="Delimiter">);</span>
@@ -479,7 +479,7 @@ if ('onhashchange' in window) {
 <span id="L413" class="LineNr">413 </span>
 <span id="L414" class="LineNr">414 </span><span class="Normal">bool</span> is_final_type_ingredient<span class="Delimiter">(</span><span class="Normal">int</span> type_ingredient_index<span class="Delimiter">,</span> <span class="Normal">const</span> type_info&amp; container_info<span class="Delimiter">)</span> <span class="Delimiter">{</span>
 <span id="L415" class="LineNr">415 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span>map&lt;string<span class="Delimiter">,</span> type_ordinal&gt;::const_iterator p = container_info<span class="Delimiter">.</span>type_ingredient_names<span class="Delimiter">.</span>begin<span class="Delimiter">();</span>
-<span id="L416" class="LineNr">416 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span>p != container_info<span class="Delimiter">.</span>type_ingredient_names<span class="Delimiter">.</span><a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L416" class="LineNr">416 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span>p != container_info<span class="Delimiter">.</span>type_ingredient_names<span class="Delimiter">.</span><a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L417" class="LineNr">417 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span>++p<span class="Delimiter">)</span> <span class="Delimiter">{</span>
 <span id="L418" class="LineNr">418 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>p<span class="Delimiter">-&gt;</span>second &gt; START_TYPE_INGREDIENTS+type_ingredient_index<span class="Delimiter">)</span> <span class="Identifier">return</span> <span class="Constant">false</span><span class="Delimiter">;</span>
 <span id="L419" class="LineNr">419 </span>  <span class="Delimiter">}</span>
@@ -690,7 +690,7 @@ if ('onhashchange' in window) {
 <span id="L624" class="LineNr">624 </span>  <span class="Identifier">return</span><span class="Delimiter">;</span>
 <span id="L625" class="LineNr">625 </span><span class="Delimiter">}</span>
 <span id="L626" class="LineNr">626 </span><span class="Normal">if</span> <span class="Delimiter">(</span>info<span class="Delimiter">.</span>kind == <a href='010vm.cc.html#L174'>EXCLUSIVE_CONTAINER</a><span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L627" class="LineNr">627 </span>  <a href='036refcount.cc.html#L364'>compute_exclusive_container_address_offsets</a><span class="Delimiter">(</span>info<span class="Delimiter">,</span> type<span class="Delimiter">,</span> location_for_error_messages<span class="Delimiter">);</span>
+<span id="L627" class="LineNr">627 </span>  <a href='036refcount.cc.html#L359'>compute_exclusive_container_address_offsets</a><span class="Delimiter">(</span>info<span class="Delimiter">,</span> type<span class="Delimiter">,</span> location_for_error_messages<span class="Delimiter">);</span>
 <span id="L628" class="LineNr">628 </span>  <span class="Identifier">return</span><span class="Delimiter">;</span>
 <span id="L629" class="LineNr">629 </span><span class="Delimiter">}</span>
 <span id="L630" class="LineNr">630 </span>
@@ -722,7 +722,7 @@ if ('onhashchange' in window) {
 <span id="L656" class="LineNr">656 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Constant">&quot;  y:foo:_t</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span>
 <span id="L657" class="LineNr">657 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Constant">&quot;]</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span><span class="Delimiter">);</span>
 <span id="L658" class="LineNr">658 </span>  reagent r<span class="Delimiter">(</span><span class="Constant">&quot;x:bar:&amp;:num&quot;</span><span class="Delimiter">);</span>
-<span id="L659" class="LineNr">659 </span>  <a href='003trace.cc.html#L158'>CLEAR_TRACE</a><span class="Delimiter">;</span>
+<span id="L659" class="LineNr">659 </span>  <a href='003trace.cc.html#L164'>CLEAR_TRACE</a><span class="Delimiter">;</span>
 <span id="L660" class="LineNr">660 </span>  compute_container_sizes<span class="Delimiter">(</span>r<span class="Delimiter">,</span> <span class="Constant">&quot;&quot;</span><span class="Delimiter">);</span>
 <span id="L661" class="LineNr">661 </span>  compute_container_address_offsets<span class="Delimiter">(</span>r<span class="Delimiter">,</span> <span class="Constant">&quot;&quot;</span><span class="Delimiter">);</span>
 <span id="L662" class="LineNr">662 </span>  <a href='002test.cc.html#L31'>CHECK_EQ</a><span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>r<span class="Delimiter">.</span>metadata<span class="Delimiter">.</span><a href='043space.cc.html#L82'>address</a><span class="Delimiter">),</span> <span class="Constant">1</span><span class="Delimiter">);</span>
diff --git a/html/056shape_shifting_recipe.cc.html b/html/056shape_shifting_recipe.cc.html
index c087b354..254302cb 100644
--- a/html/056shape_shifting_recipe.cc.html
+++ b/html/056shape_shifting_recipe.cc.html
@@ -98,13 +98,13 @@ if ('onhashchange' in window) {
 <span id="L31" class="LineNr">  31 </span>
 <span id="L32" class="LineNr">  32 </span><span class="Delimiter">:(before &quot;End Transform Checks&quot;)</span>
 <span id="L33" class="LineNr">  33 </span>r<span class="Delimiter">.</span>transformed_until = t<span class="Delimiter">;</span>
-<span id="L34" class="LineNr">  34 </span><span class="Normal">if</span> <span class="Delimiter">(</span>Transform<span class="Delimiter">.</span>at<span class="Delimiter">(</span>t<span class="Delimiter">)</span> != <span class="Normal">static_cast</span>&lt;transform_fn&gt;<span class="Delimiter">(</span>expand_type_abbreviations<span class="Delimiter">)</span> &amp;&amp; <a href='056shape_shifting_recipe.cc.html#L173'>any_type_ingredient_in_header</a><span class="Delimiter">(</span><span class="Comment">/*</span><span class="Comment"><a href='010vm.cc.html#L14'>recipe_ordinal</a></span><span class="Comment">*/</span>p<span class="Delimiter">-&gt;</span>first<span class="Delimiter">))</span> <span class="Identifier">continue</span><span class="Delimiter">;</span>
+<span id="L34" class="LineNr">  34 </span><span class="Normal">if</span> <span class="Delimiter">(</span>Transform<span class="Delimiter">.</span>at<span class="Delimiter">(</span>t<span class="Delimiter">)</span> != <span class="Normal">static_cast</span>&lt;transform_fn&gt;<span class="Delimiter">(</span>expand_type_abbreviations<span class="Delimiter">)</span> &amp;&amp; <a href='056shape_shifting_recipe.cc.html#L160'>any_type_ingredient_in_header</a><span class="Delimiter">(</span><span class="Comment">/*</span><span class="Comment"><a href='010vm.cc.html#L14'>recipe_ordinal</a></span><span class="Comment">*/</span>p<span class="Delimiter">-&gt;</span>first<span class="Delimiter">))</span> <span class="Identifier">continue</span><span class="Delimiter">;</span>
 <span id="L35" class="LineNr">  35 </span>
 <span id="L36" class="LineNr">  36 </span><span class="Delimiter">:(after &quot;Running One Instruction&quot;)</span>
 <span id="L37" class="LineNr">  37 </span><span class="Normal">if</span> <span class="Delimiter">(</span>Current_routine<span class="Delimiter">-&gt;</span>calls<span class="Delimiter">.</span>front<span class="Delimiter">().</span>running_step_index == <span class="Constant">0</span>
-<span id="L38" class="LineNr">  38 </span>  <span class="Conceal">¦</span> &amp;&amp; <a href='056shape_shifting_recipe.cc.html#L173'>any_type_ingredient_in_header</a><span class="Delimiter">(</span>Current_routine<span class="Delimiter">-&gt;</span>calls<span class="Delimiter">.</span>front<span class="Delimiter">().</span>running_recipe<span class="Delimiter">))</span> <span class="Delimiter">{</span>
+<span id="L38" class="LineNr">  38 </span>  <span class="Conceal">¦</span> &amp;&amp; <a href='056shape_shifting_recipe.cc.html#L160'>any_type_ingredient_in_header</a><span class="Delimiter">(</span>Current_routine<span class="Delimiter">-&gt;</span>calls<span class="Delimiter">.</span>front<span class="Delimiter">().</span>running_recipe<span class="Delimiter">))</span> <span class="Delimiter">{</span>
 <span id="L39" class="LineNr">  39 </span><span class="CommentedCode">//?   DUMP(&quot;&quot;);</span>
-<span id="L40" class="LineNr">  40 </span>  <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <span class="Constant">&quot;ran into unspecialized shape-shifting <a href='010vm.cc.html#L19'>recipe</a> &quot;</span> &lt;&lt; <a href='026call.cc.html#L85'>current_recipe_name</a><span class="Delimiter">()</span> &lt;&lt; <span class="cSpecial">'\n'</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L40" class="LineNr">  40 </span>  <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <span class="Constant">&quot;ran into unspecialized shape-shifting <a href='010vm.cc.html#L19'>recipe</a> &quot;</span> &lt;&lt; <a href='026call.cc.html#L87'>current_recipe_name</a><span class="Delimiter">()</span> &lt;&lt; <span class="cSpecial">'\n'</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L41" class="LineNr">  41 </span><span class="CommentedCode">//?   exit(0);</span>
 <span id="L42" class="LineNr">  42 </span><span class="Delimiter">}</span>
 <span id="L43" class="LineNr">  43 </span>
@@ -114,1112 +114,1114 @@ if ('onhashchange' in window) {
 <span id="L47" class="LineNr">  47 </span><span class="Normal">if</span> <span class="Delimiter">(</span>contains_type_ingredient_name<span class="Delimiter">(</span>to<span class="Delimiter">))</span> <span class="Identifier">return</span> <span class="Constant">false</span><span class="Delimiter">;</span>
 <span id="L48" class="LineNr">  48 </span>
 <span id="L49" class="LineNr">  49 </span><span class="Delimiter">:(after &quot;Static Dispatch Phase 3&quot;)</span>
-<span id="L50" class="LineNr">  50 </span>candidates = <a href='056shape_shifting_recipe.cc.html#L90'>strictly_matching_shape_shifting_variants</a><span class="Delimiter">(</span>inst<span class="Delimiter">,</span> variants<span class="Delimiter">);</span>
+<span id="L50" class="LineNr">  50 </span>candidates = <a href='056shape_shifting_recipe.cc.html#L77'>strictly_matching_shape_shifting_variants</a><span class="Delimiter">(</span>inst<span class="Delimiter">,</span> variants<span class="Delimiter">);</span>
 <span id="L51" class="LineNr">  51 </span><span class="Normal">if</span> <span class="Delimiter">(</span>!candidates<span class="Delimiter">.</span>empty<span class="Delimiter">())</span> <span class="Delimiter">{</span>
-<span id="L52" class="LineNr">  52 </span>  <a href='010vm.cc.html#L14'>recipe_ordinal</a> exemplar = <a href='056shape_shifting_recipe.cc.html#L123'>best_shape_shifting_variant</a><span class="Delimiter">(</span>inst<span class="Delimiter">,</span> candidates<span class="Delimiter">);</span>
-<span id="L53" class="LineNr">  53 </span>  <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">9992</span><span class="Delimiter">,</span> <span class="Constant">&quot;transform&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;found variant to specialize: &quot;</span> &lt;&lt; exemplar &lt;&lt; <span class="Constant">' '</span> &lt;&lt; get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> exemplar<span class="Delimiter">).</span>name &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
-<span id="L54" class="LineNr">  54 </span>  <a href='010vm.cc.html#L14'>recipe_ordinal</a> new_recipe_ordinal = <a href='056shape_shifting_recipe.cc.html#L257'>new_variant</a><span class="Delimiter">(</span>exemplar<span class="Delimiter">,</span> inst<span class="Delimiter">,</span> caller_recipe<span class="Delimiter">);</span>
-<span id="L55" class="LineNr">  55 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>new_recipe_ordinal == <span class="Constant">0</span><span class="Delimiter">)</span> <span class="Identifier">goto</span> skip_shape_shifting_variants<span class="Delimiter">;</span>
-<span id="L56" class="LineNr">  56 </span>  get<span class="Delimiter">(</span>Recipe_variants<span class="Delimiter">,</span> inst<span class="Delimiter">.</span>name<span class="Delimiter">).</span>push_back<span class="Delimiter">(</span>new_recipe_ordinal<span class="Delimiter">);</span>  <span class="Comment">// side-effect</span>
-<span id="L57" class="LineNr">  57 </span>  recipe&amp; variant = get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> new_recipe_ordinal<span class="Delimiter">);</span>
-<span id="L58" class="LineNr">  58 </span>  <span class="Comment">// perform all transforms on the new specialization</span>
-<span id="L59" class="LineNr">  59 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!variant<span class="Delimiter">.</span>steps<span class="Delimiter">.</span>empty<span class="Delimiter">())</span> <span class="Delimiter">{</span>
-<span id="L60" class="LineNr">  60 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">9992</span><span class="Delimiter">,</span> <span class="Constant">&quot;transform&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;transforming new specialization: &quot;</span> &lt;&lt; variant<span class="Delimiter">.</span>name &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
-<span id="L61" class="LineNr">  61 </span>  <span class="Conceal">¦</span> <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> t = <span class="Constant">0</span><span class="Delimiter">;</span>  t &lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>Transform<span class="Delimiter">);</span>  ++t<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L62" class="LineNr">  62 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Comment">// one exception: skip tangle, which would have already occurred inside new_variant above</span>
-<span id="L63" class="LineNr">  63 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>Transform<span class="Delimiter">.</span>at<span class="Delimiter">(</span>t<span class="Delimiter">)</span> == <span class="Comment">/*</span><span class="Comment">disambiguate overloading</span><span class="Comment">*/</span><span class="Normal">static_cast</span>&lt;transform_fn&gt;<span class="Delimiter">(</span>insert_fragments<span class="Delimiter">))</span>
-<span id="L64" class="LineNr">  64 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Identifier">continue</span><span class="Delimiter">;</span>
-<span id="L65" class="LineNr">  65 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Delimiter">(</span>*Transform<span class="Delimiter">.</span>at<span class="Delimiter">(</span>t<span class="Delimiter">))(</span>new_recipe_ordinal<span class="Delimiter">);</span>
-<span id="L66" class="LineNr">  66 </span>  <span class="Conceal">¦</span> <span class="Delimiter">}</span>
-<span id="L67" class="LineNr">  67 </span>  <span class="Delimiter">}</span>
-<span id="L68" class="LineNr">  68 </span>  variant<span class="Delimiter">.</span>transformed_until = <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>Transform<span class="Delimiter">)</span>-<span class="Constant">1</span><span class="Delimiter">;</span>
-<span id="L69" class="LineNr">  69 </span>  <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">9992</span><span class="Delimiter">,</span> <span class="Constant">&quot;transform&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;new specialization: &quot;</span> &lt;&lt; variant<span class="Delimiter">.</span>name &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
-<span id="L70" class="LineNr">  70 </span>  <span class="Identifier">return</span> variant<span class="Delimiter">.</span>name<span class="Delimiter">;</span>
-<span id="L71" class="LineNr">  71 </span><span class="Delimiter">}</span>
-<span id="L72" class="LineNr">  72 </span><span class="Normal">skip_shape_shifting_variants</span>:<span class="Delimiter">;</span>
-<span id="L73" class="LineNr">  73 </span>
-<span id="L74" class="LineNr">  74 </span><span class="Comment">//: before running Mu programs, make sure no unspecialized shape-shifting</span>
-<span id="L75" class="LineNr">  75 </span><span class="Comment">//: recipes can be called</span>
-<span id="L76" class="LineNr">  76 </span>
-<span id="L77" class="LineNr">  77 </span><span class="Delimiter">:(before &quot;End Instruction Operation Checks&quot;)</span>
-<span id="L78" class="LineNr">  78 </span><span class="Normal">if</span> <span class="Delimiter">(</span>contains_key<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> inst<span class="Delimiter">.</span>operation<span class="Delimiter">)</span> &amp;&amp; !is_primitive<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>operation<span class="Delimiter">)</span>
-<span id="L79" class="LineNr">  79 </span>  <span class="Conceal">¦</span> &amp;&amp; <a href='056shape_shifting_recipe.cc.html#L173'>any_type_ingredient_in_header</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>operation<span class="Delimiter">))</span> <span class="Delimiter">{</span>
-<span id="L80" class="LineNr">  80 </span>  <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>caller<span class="Delimiter">.</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;instruction '&quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>name &lt;&lt; <span class="Constant">&quot;' has no valid specialization</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
-<span id="L81" class="LineNr">  81 </span>  <span class="Identifier">return</span><span class="Delimiter">;</span>
-<span id="L82" class="LineNr">  82 </span><span class="Delimiter">}</span>
-<span id="L83" class="LineNr">  83 </span>
-<span id="L84" class="LineNr">  84 </span><span class="Delimiter">:(replace{} &quot;Match Literal Zero Against Address&quot;)</span>
-<span id="L85" class="LineNr">  85 </span><span class="Normal">if</span> <span class="Delimiter">(</span>is_literal<span class="Delimiter">(</span>from<span class="Delimiter">)</span> &amp;&amp; is_mu_address<span class="Delimiter">(</span>to<span class="Delimiter">))</span>
-<span id="L86" class="LineNr">  86 </span>  <span class="Identifier">return</span> from<span class="Delimiter">.</span>name == <span class="Constant">&quot;0&quot;</span> &amp;&amp; !contains_type_ingredient_name<span class="Delimiter">(</span>to<span class="Delimiter">);</span>
+<span id="L52" class="LineNr">  52 </span>  <a href='010vm.cc.html#L14'>recipe_ordinal</a> exemplar = <a href='056shape_shifting_recipe.cc.html#L110'>best_shape_shifting_variant</a><span class="Delimiter">(</span>inst<span class="Delimiter">,</span> candidates<span class="Delimiter">);</span>
+<span id="L53" class="LineNr">  53 </span>  <a href='003trace.cc.html#L167'>trace</a><span class="Delimiter">(</span><span class="Constant">9992</span><span class="Delimiter">,</span> <span class="Constant">&quot;transform&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;found variant to specialize: &quot;</span> &lt;&lt; exemplar &lt;&lt; <span class="Constant">' '</span> &lt;&lt; get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> exemplar<span class="Delimiter">).</span>name &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
+<span id="L54" class="LineNr">  54 </span>  string new_recipe_name = <a href='056shape_shifting_recipe.cc.html#L245'>insert_new_variant</a><span class="Delimiter">(</span>exemplar<span class="Delimiter">,</span> inst<span class="Delimiter">,</span> caller_recipe<span class="Delimiter">);</span>
+<span id="L55" class="LineNr">  55 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>new_recipe_name != <span class="Constant">&quot;&quot;</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L56" class="LineNr">  56 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L167'>trace</a><span class="Delimiter">(</span><span class="Constant">9992</span><span class="Delimiter">,</span> <span class="Constant">&quot;transform&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;new specialization: &quot;</span> &lt;&lt; new_recipe_name &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
+<span id="L57" class="LineNr">  57 </span>  <span class="Conceal">¦</span> <span class="Identifier">return</span> new_recipe_name<span class="Delimiter">;</span>
+<span id="L58" class="LineNr">  58 </span>  <span class="Delimiter">}</span>
+<span id="L59" class="LineNr">  59 </span><span class="Delimiter">}</span>
+<span id="L60" class="LineNr">  60 </span>
+<span id="L61" class="LineNr">  61 </span><span class="Comment">//: before running Mu programs, make sure no unspecialized shape-shifting</span>
+<span id="L62" class="LineNr">  62 </span><span class="Comment">//: recipes can be called</span>
+<span id="L63" class="LineNr">  63 </span>
+<span id="L64" class="LineNr">  64 </span><span class="Delimiter">:(before &quot;End Instruction Operation Checks&quot;)</span>
+<span id="L65" class="LineNr">  65 </span><span class="Normal">if</span> <span class="Delimiter">(</span>contains_key<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> inst<span class="Delimiter">.</span>operation<span class="Delimiter">)</span> &amp;&amp; !is_primitive<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>operation<span class="Delimiter">)</span>
+<span id="L66" class="LineNr">  66 </span>  <span class="Conceal">¦</span> &amp;&amp; <a href='056shape_shifting_recipe.cc.html#L160'>any_type_ingredient_in_header</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>operation<span class="Delimiter">))</span> <span class="Delimiter">{</span>
+<span id="L67" class="LineNr">  67 </span>  <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>caller<span class="Delimiter">.</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;instruction '&quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>name &lt;&lt; <span class="Constant">&quot;' has no valid specialization</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
+<span id="L68" class="LineNr">  68 </span>  <span class="Identifier">return</span><span class="Delimiter">;</span>
+<span id="L69" class="LineNr">  69 </span><span class="Delimiter">}</span>
+<span id="L70" class="LineNr">  70 </span>
+<span id="L71" class="LineNr">  71 </span><span class="Delimiter">:(replace{} &quot;Match Literal Zero Against Address&quot;)</span>
+<span id="L72" class="LineNr">  72 </span><span class="Normal">if</span> <span class="Delimiter">(</span>is_literal<span class="Delimiter">(</span>from<span class="Delimiter">)</span> &amp;&amp; is_mu_address<span class="Delimiter">(</span>to<span class="Delimiter">))</span>
+<span id="L73" class="LineNr">  73 </span>  <span class="Identifier">return</span> from<span class="Delimiter">.</span>name == <span class="Constant">&quot;0&quot;</span> &amp;&amp; !contains_type_ingredient_name<span class="Delimiter">(</span>to<span class="Delimiter">);</span>
+<span id="L74" class="LineNr">  74 </span>
+<span id="L75" class="LineNr">  75 </span><span class="Delimiter">:(code)</span>
+<span id="L76" class="LineNr">  76 </span><span class="Comment">// phase 3 of static dispatch</span>
+<span id="L77" class="LineNr">  77 </span>vector&lt;recipe_ordinal&gt; <a href='056shape_shifting_recipe.cc.html#L77'>strictly_matching_shape_shifting_variants</a><span class="Delimiter">(</span><span class="Normal">const</span> instruction&amp; inst<span class="Delimiter">,</span> <span class="Normal">const</span> vector&lt;recipe_ordinal&gt;&amp; variants<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L78" class="LineNr">  78 </span>  vector&lt;recipe_ordinal&gt; result<span class="Delimiter">;</span>
+<span id="L79" class="LineNr">  79 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> i = <span class="Constant">0</span><span class="Delimiter">;</span>  i &lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>variants<span class="Delimiter">);</span>  ++i<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L80" class="LineNr">  80 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>variants<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">)</span> == -<span class="Constant">1</span><span class="Delimiter">)</span> <span class="Identifier">continue</span><span class="Delimiter">;</span>
+<span id="L81" class="LineNr">  81 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>!any_type_ingredient_in_header<span class="Delimiter">(</span>variants<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">)))</span> <span class="Identifier">continue</span><span class="Delimiter">;</span>
+<span id="L82" class="LineNr">  82 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>!all_concrete_header_reagents_strictly_match<span class="Delimiter">(</span>inst<span class="Delimiter">,</span> get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> variants<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">))))</span> <span class="Identifier">continue</span><span class="Delimiter">;</span>
+<span id="L83" class="LineNr">  83 </span>  <span class="Conceal">¦</span> result<span class="Delimiter">.</span>push_back<span class="Delimiter">(</span>variants<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">));</span>
+<span id="L84" class="LineNr">  84 </span>  <span class="Delimiter">}</span>
+<span id="L85" class="LineNr">  85 </span>  <span class="Identifier">return</span> result<span class="Delimiter">;</span>
+<span id="L86" class="LineNr">  86 </span><span class="Delimiter">}</span>
 <span id="L87" class="LineNr">  87 </span>
-<span id="L88" class="LineNr">  88 </span><span class="Delimiter">:(code)</span>
-<span id="L89" class="LineNr">  89 </span><span class="Comment">// phase 3 of static dispatch</span>
-<span id="L90" class="LineNr">  90 </span>vector&lt;recipe_ordinal&gt; <a href='056shape_shifting_recipe.cc.html#L90'>strictly_matching_shape_shifting_variants</a><span class="Delimiter">(</span><span class="Normal">const</span> instruction&amp; inst<span class="Delimiter">,</span> <span class="Normal">const</span> vector&lt;recipe_ordinal&gt;&amp; variants<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L91" class="LineNr">  91 </span>  vector&lt;recipe_ordinal&gt; result<span class="Delimiter">;</span>
-<span id="L92" class="LineNr">  92 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> i = <span class="Constant">0</span><span class="Delimiter">;</span>  i &lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>variants<span class="Delimiter">);</span>  ++i<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L93" class="LineNr">  93 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>variants<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">)</span> == -<span class="Constant">1</span><span class="Delimiter">)</span> <span class="Identifier">continue</span><span class="Delimiter">;</span>
-<span id="L94" class="LineNr">  94 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>!any_type_ingredient_in_header<span class="Delimiter">(</span>variants<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">)))</span> <span class="Identifier">continue</span><span class="Delimiter">;</span>
-<span id="L95" class="LineNr">  95 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>!all_concrete_header_reagents_strictly_match<span class="Delimiter">(</span>inst<span class="Delimiter">,</span> get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> variants<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">))))</span> <span class="Identifier">continue</span><span class="Delimiter">;</span>
-<span id="L96" class="LineNr">  96 </span>  <span class="Conceal">¦</span> result<span class="Delimiter">.</span>push_back<span class="Delimiter">(</span>variants<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">));</span>
-<span id="L97" class="LineNr">  97 </span>  <span class="Delimiter">}</span>
-<span id="L98" class="LineNr">  98 </span>  <span class="Identifier">return</span> result<span class="Delimiter">;</span>
-<span id="L99" class="LineNr">  99 </span><span class="Delimiter">}</span>
-<span id="L100" class="LineNr"> 100 </span>
-<span id="L101" class="LineNr"> 101 </span><span class="Normal">bool</span> <a href='056shape_shifting_recipe.cc.html#L101'>all_concrete_header_reagents_strictly_match</a><span class="Delimiter">(</span><span class="Normal">const</span> instruction&amp; inst<span class="Delimiter">,</span> <span class="Normal">const</span> recipe&amp; variant<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L102" class="LineNr"> 102 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> i = <span class="Constant">0</span><span class="Delimiter">;</span>  i &lt; min<span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">),</span> <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>variant<span class="Delimiter">.</span>ingredients<span class="Delimiter">));</span>  ++i<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L103" class="LineNr"> 103 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>!concrete_type_names_strictly_match<span class="Delimiter">(</span>variant<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">),</span> inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">)))</span> <span class="Delimiter">{</span>
-<span id="L104" class="LineNr"> 104 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">9993</span><span class="Delimiter">,</span> <span class="Constant">&quot;transform&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;concrete-type match failed: ingredient &quot;</span> &lt;&lt; i &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
-<span id="L105" class="LineNr"> 105 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Identifier">return</span> <span class="Constant">false</span><span class="Delimiter">;</span>
-<span id="L106" class="LineNr"> 106 </span>  <span class="Conceal">¦</span> <span class="Delimiter">}</span>
-<span id="L107" class="LineNr"> 107 </span>  <span class="Delimiter">}</span>
-<span id="L108" class="LineNr"> 108 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> i = <span class="Constant">0</span><span class="Delimiter">;</span>  i &lt; min<span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>products<span class="Delimiter">),</span> <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>variant<span class="Delimiter">.</span>ingredients<span class="Delimiter">));</span>  ++i<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L109" class="LineNr"> 109 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>is_dummy<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">)))</span> <span class="Identifier">continue</span><span class="Delimiter">;</span>
-<span id="L110" class="LineNr"> 110 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>!concrete_type_names_strictly_match<span class="Delimiter">(</span>variant<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">),</span> inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">)))</span> <span class="Delimiter">{</span>
-<span id="L111" class="LineNr"> 111 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">9993</span><span class="Delimiter">,</span> <span class="Constant">&quot;transform&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;concrete-type match failed: product &quot;</span> &lt;&lt; i &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
-<span id="L112" class="LineNr"> 112 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Identifier">return</span> <span class="Constant">false</span><span class="Delimiter">;</span>
-<span id="L113" class="LineNr"> 113 </span>  <span class="Conceal">¦</span> <span class="Delimiter">}</span>
-<span id="L114" class="LineNr"> 114 </span>  <span class="Delimiter">}</span>
-<span id="L115" class="LineNr"> 115 </span>  <span class="Identifier">return</span> <span class="Constant">true</span><span class="Delimiter">;</span>
-<span id="L116" class="LineNr"> 116 </span><span class="Delimiter">}</span>
-<span id="L117" class="LineNr"> 117 </span>
-<span id="L118" class="LineNr"> 118 </span><span class="Comment">// manual prototype</span>
-<span id="L119" class="LineNr"> 119 </span>vector&lt;recipe_ordinal&gt; <a href='056shape_shifting_recipe.cc.html#L145'>keep_max</a><span class="Delimiter">(</span><span class="Normal">const</span> instruction&amp;<span class="Delimiter">,</span> <span class="Normal">const</span> vector&lt;recipe_ordinal&gt;&amp;<span class="Delimiter">,</span>
-<span id="L120" class="LineNr"> 120 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span>           <span class="Normal">int</span> <span class="Delimiter">(</span>*<span class="Delimiter">)(</span><span class="Normal">const</span> instruction&amp;<span class="Delimiter">,</span> <a href='010vm.cc.html#L14'>recipe_ordinal</a><span class="Delimiter">));</span>
-<span id="L121" class="LineNr"> 121 </span>
-<span id="L122" class="LineNr"> 122 </span><span class="Comment">// tie-breaker for phase 3</span>
-<span id="L123" class="LineNr"> 123 </span><a href='010vm.cc.html#L14'>recipe_ordinal</a> <a href='056shape_shifting_recipe.cc.html#L123'>best_shape_shifting_variant</a><span class="Delimiter">(</span><span class="Normal">const</span> instruction&amp; inst<span class="Delimiter">,</span> <span class="Normal">const</span> vector&lt;recipe_ordinal&gt;&amp; candidates<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L124" class="LineNr"> 124 </span>  assert<span class="Delimiter">(</span>!candidates<span class="Delimiter">.</span>empty<span class="Delimiter">());</span>
-<span id="L125" class="LineNr"> 125 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>candidates<span class="Delimiter">)</span> == <span class="Constant">1</span><span class="Delimiter">)</span> <span class="Identifier">return</span> candidates<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">);</span>
-<span id="L126" class="LineNr"> 126 </span><span class="CommentedCode">//?   cerr &lt;&lt; &quot;A picking shape-shifting variant:\n&quot;;</span>
-<span id="L127" class="LineNr"> 127 </span>  vector&lt;recipe_ordinal&gt; result1 = <a href='056shape_shifting_recipe.cc.html#L145'>keep_max</a><span class="Delimiter">(</span>inst<span class="Delimiter">,</span> candidates<span class="Delimiter">,</span> number_of_concrete_type_names<span class="Delimiter">);</span>
-<span id="L128" class="LineNr"> 128 </span>  assert<span class="Delimiter">(</span>!result1<span class="Delimiter">.</span>empty<span class="Delimiter">());</span>
-<span id="L129" class="LineNr"> 129 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>result1<span class="Delimiter">)</span> == <span class="Constant">1</span><span class="Delimiter">)</span> <span class="Identifier">return</span> result1<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">);</span>
-<span id="L130" class="LineNr"> 130 </span><span class="CommentedCode">//?   cerr &lt;&lt; &quot;B picking shape-shifting variant:\n&quot;;</span>
-<span id="L131" class="LineNr"> 131 </span>  vector&lt;recipe_ordinal&gt; result2 = <a href='056shape_shifting_recipe.cc.html#L145'>keep_max</a><span class="Delimiter">(</span>inst<span class="Delimiter">,</span> result1<span class="Delimiter">,</span> <a href='056shape_shifting_recipe.cc.html#L167'>arity_fit</a><span class="Delimiter">);</span>
-<span id="L132" class="LineNr"> 132 </span>  assert<span class="Delimiter">(</span>!result2<span class="Delimiter">.</span>empty<span class="Delimiter">());</span>
-<span id="L133" class="LineNr"> 133 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>result2<span class="Delimiter">)</span> == <span class="Constant">1</span><span class="Delimiter">)</span> <span class="Identifier">return</span> result2<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">);</span>
-<span id="L134" class="LineNr"> 134 </span><span class="CommentedCode">//?   cerr &lt;&lt; &quot;C picking shape-shifting variant:\n&quot;;</span>
-<span id="L135" class="LineNr"> 135 </span>  vector&lt;recipe_ordinal&gt; result3 = <a href='056shape_shifting_recipe.cc.html#L145'>keep_max</a><span class="Delimiter">(</span>inst<span class="Delimiter">,</span> result2<span class="Delimiter">,</span> number_of_type_ingredients<span class="Delimiter">);</span>
-<span id="L136" class="LineNr"> 136 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>result3<span class="Delimiter">)</span> &gt; <span class="Constant">1</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L137" class="LineNr"> 137 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <span class="Constant">&quot;</span><span class="cSpecial">\n</span><span class="Constant">Couldn't decide the best shape-shifting variant for instruction '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; end<span class="Delimiter">();</span>
-<span id="L138" class="LineNr"> 138 </span>  <span class="Conceal">¦</span> cerr &lt;&lt; <span class="Constant">&quot;This is a hole in Mu. Please copy the following candidates into an email to Kartik Agaram &lt;mu@akkartik.com&gt;</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span><span class="Delimiter">;</span>
-<span id="L139" class="LineNr"> 139 </span>  <span class="Conceal">¦</span> <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> i = <span class="Constant">0</span><span class="Delimiter">;</span>  i &lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>candidates<span class="Delimiter">);</span>  ++i<span class="Delimiter">)</span>
-<span id="L140" class="LineNr"> 140 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> cerr &lt;&lt; <span class="Constant">&quot;  &quot;</span> &lt;&lt; header_label<span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> candidates<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">)))</span> &lt;&lt; <span class="cSpecial">'\n'</span><span class="Delimiter">;</span>
-<span id="L141" class="LineNr"> 141 </span>  <span class="Delimiter">}</span>
-<span id="L142" class="LineNr"> 142 </span>  <span class="Identifier">return</span> result3<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">);</span>
-<span id="L143" class="LineNr"> 143 </span><span class="Delimiter">}</span>
-<span id="L144" class="LineNr"> 144 </span>
-<span id="L145" class="LineNr"> 145 </span>vector&lt;recipe_ordinal&gt; <a href='056shape_shifting_recipe.cc.html#L145'>keep_max</a><span class="Delimiter">(</span><span class="Normal">const</span> instruction&amp; inst<span class="Delimiter">,</span> <span class="Normal">const</span> vector&lt;recipe_ordinal&gt;&amp; in<span class="Delimiter">,</span>
-<span id="L146" class="LineNr"> 146 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span>           <span class="Normal">int</span> <span class="Delimiter">(</span>*scorer<span class="Delimiter">)(</span><span class="Normal">const</span> instruction&amp;<span class="Delimiter">,</span> <a href='010vm.cc.html#L14'>recipe_ordinal</a><span class="Delimiter">))</span> <span class="Delimiter">{</span>
-<span id="L147" class="LineNr"> 147 </span>  assert<span class="Delimiter">(</span>!in<span class="Delimiter">.</span>empty<span class="Delimiter">());</span>
-<span id="L148" class="LineNr"> 148 </span>  vector&lt;recipe_ordinal&gt; out<span class="Delimiter">;</span>
-<span id="L149" class="LineNr"> 149 </span>  out<span class="Delimiter">.</span>push_back<span class="Delimiter">(</span>in<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">));</span>
-<span id="L150" class="LineNr"> 150 </span>  <span class="Normal">int</span> best_score = <span class="Delimiter">(</span>*scorer<span class="Delimiter">)(</span>inst<span class="Delimiter">,</span> in<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">));</span>
-<span id="L151" class="LineNr"> 151 </span><span class="CommentedCode">//?   cerr &lt;&lt; best_score &lt;&lt; &quot; &quot; &lt;&lt; header_label(get(Recipe, in.at(0))) &lt;&lt; '\n';</span>
-<span id="L152" class="LineNr"> 152 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> i = <span class="Constant">1</span><span class="Delimiter">;</span>  i &lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>in<span class="Delimiter">);</span>  ++i<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L153" class="LineNr"> 153 </span>  <span class="Conceal">¦</span> <span class="Normal">int</span> score = <span class="Delimiter">(</span>*scorer<span class="Delimiter">)(</span>inst<span class="Delimiter">,</span> in<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">));</span>
-<span id="L154" class="LineNr"> 154 </span><span class="CommentedCode">//?     cerr &lt;&lt; score &lt;&lt; &quot; &quot; &lt;&lt; header_label(get(Recipe, in.at(i))) &lt;&lt; '\n';</span>
-<span id="L155" class="LineNr"> 155 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>score == best_score<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L156" class="LineNr"> 156 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> out<span class="Delimiter">.</span>push_back<span class="Delimiter">(</span>in<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">));</span>
-<span id="L157" class="LineNr"> 157 </span>  <span class="Conceal">¦</span> <span class="Delimiter">}</span>
-<span id="L158" class="LineNr"> 158 </span>  <span class="Conceal">¦</span> <span class="Normal">else</span> <span class="Normal">if</span> <span class="Delimiter">(</span>score &gt; best_score<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L159" class="LineNr"> 159 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> best_score = score<span class="Delimiter">;</span>
-<span id="L160" class="LineNr"> 160 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> out<span class="Delimiter">.</span><a href='050scenario.cc.html#L60'>clear</a><span class="Delimiter">();</span>
-<span id="L161" class="LineNr"> 161 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> out<span class="Delimiter">.</span>push_back<span class="Delimiter">(</span>in<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">));</span>
-<span id="L162" class="LineNr"> 162 </span>  <span class="Conceal">¦</span> <span class="Delimiter">}</span>
-<span id="L163" class="LineNr"> 163 </span>  <span class="Delimiter">}</span>
-<span id="L164" class="LineNr"> 164 </span>  <span class="Identifier">return</span> out<span class="Delimiter">;</span>
-<span id="L165" class="LineNr"> 165 </span><span class="Delimiter">}</span>
-<span id="L166" class="LineNr"> 166 </span>
-<span id="L167" class="LineNr"> 167 </span><span class="Normal">int</span> <a href='056shape_shifting_recipe.cc.html#L167'>arity_fit</a><span class="Delimiter">(</span><span class="Normal">const</span> instruction&amp; inst<span class="Delimiter">,</span> <a href='010vm.cc.html#L14'>recipe_ordinal</a> candidate<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L168" class="LineNr"> 168 </span>  <span class="Normal">const</span> recipe&amp; r = get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> candidate<span class="Delimiter">);</span>
-<span id="L169" class="LineNr"> 169 </span>  <span class="Identifier">return</span> <span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>products<span class="Delimiter">)</span> - <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>r<span class="Delimiter">.</span>products<span class="Delimiter">))</span>
-<span id="L170" class="LineNr"> 170 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span>+ <span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>r<span class="Delimiter">.</span>ingredients<span class="Delimiter">)</span> - <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">));</span>
+<span id="L88" class="LineNr">  88 </span><span class="Normal">bool</span> <a href='056shape_shifting_recipe.cc.html#L88'>all_concrete_header_reagents_strictly_match</a><span class="Delimiter">(</span><span class="Normal">const</span> instruction&amp; inst<span class="Delimiter">,</span> <span class="Normal">const</span> recipe&amp; variant<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L89" class="LineNr">  89 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> i = <span class="Constant">0</span><span class="Delimiter">;</span>  i &lt; min<span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">),</span> <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>variant<span class="Delimiter">.</span>ingredients<span class="Delimiter">));</span>  ++i<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L90" class="LineNr">  90 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>!concrete_type_names_strictly_match<span class="Delimiter">(</span>variant<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">),</span> inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">)))</span> <span class="Delimiter">{</span>
+<span id="L91" class="LineNr">  91 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L167'>trace</a><span class="Delimiter">(</span><span class="Constant">9993</span><span class="Delimiter">,</span> <span class="Constant">&quot;transform&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;concrete-type match failed: ingredient &quot;</span> &lt;&lt; i &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
+<span id="L92" class="LineNr">  92 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Identifier">return</span> <span class="Constant">false</span><span class="Delimiter">;</span>
+<span id="L93" class="LineNr">  93 </span>  <span class="Conceal">¦</span> <span class="Delimiter">}</span>
+<span id="L94" class="LineNr">  94 </span>  <span class="Delimiter">}</span>
+<span id="L95" class="LineNr">  95 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> i = <span class="Constant">0</span><span class="Delimiter">;</span>  i &lt; min<span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>products<span class="Delimiter">),</span> <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>variant<span class="Delimiter">.</span>products<span class="Delimiter">));</span>  ++i<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L96" class="LineNr">  96 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>is_dummy<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">)))</span> <span class="Identifier">continue</span><span class="Delimiter">;</span>
+<span id="L97" class="LineNr">  97 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>!concrete_type_names_strictly_match<span class="Delimiter">(</span>variant<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">),</span> inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">)))</span> <span class="Delimiter">{</span>
+<span id="L98" class="LineNr">  98 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L167'>trace</a><span class="Delimiter">(</span><span class="Constant">9993</span><span class="Delimiter">,</span> <span class="Constant">&quot;transform&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;concrete-type match failed: product &quot;</span> &lt;&lt; i &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
+<span id="L99" class="LineNr">  99 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Identifier">return</span> <span class="Constant">false</span><span class="Delimiter">;</span>
+<span id="L100" class="LineNr"> 100 </span>  <span class="Conceal">¦</span> <span class="Delimiter">}</span>
+<span id="L101" class="LineNr"> 101 </span>  <span class="Delimiter">}</span>
+<span id="L102" class="LineNr"> 102 </span>  <span class="Identifier">return</span> <span class="Constant">true</span><span class="Delimiter">;</span>
+<span id="L103" class="LineNr"> 103 </span><span class="Delimiter">}</span>
+<span id="L104" class="LineNr"> 104 </span>
+<span id="L105" class="LineNr"> 105 </span><span class="Comment">// manual prototype</span>
+<span id="L106" class="LineNr"> 106 </span>vector&lt;recipe_ordinal&gt; <a href='056shape_shifting_recipe.cc.html#L132'>keep_max</a><span class="Delimiter">(</span><span class="Normal">const</span> instruction&amp;<span class="Delimiter">,</span> <span class="Normal">const</span> vector&lt;recipe_ordinal&gt;&amp;<span class="Delimiter">,</span>
+<span id="L107" class="LineNr"> 107 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span>           <span class="Normal">int</span> <span class="Delimiter">(</span>*<span class="Delimiter">)(</span><span class="Normal">const</span> instruction&amp;<span class="Delimiter">,</span> <a href='010vm.cc.html#L14'>recipe_ordinal</a><span class="Delimiter">));</span>
+<span id="L108" class="LineNr"> 108 </span>
+<span id="L109" class="LineNr"> 109 </span><span class="Comment">// tie-breaker for phase 3</span>
+<span id="L110" class="LineNr"> 110 </span><a href='010vm.cc.html#L14'>recipe_ordinal</a> <a href='056shape_shifting_recipe.cc.html#L110'>best_shape_shifting_variant</a><span class="Delimiter">(</span><span class="Normal">const</span> instruction&amp; inst<span class="Delimiter">,</span> <span class="Normal">const</span> vector&lt;recipe_ordinal&gt;&amp; candidates<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L111" class="LineNr"> 111 </span>  assert<span class="Delimiter">(</span>!candidates<span class="Delimiter">.</span>empty<span class="Delimiter">());</span>
+<span id="L112" class="LineNr"> 112 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>candidates<span class="Delimiter">)</span> == <span class="Constant">1</span><span class="Delimiter">)</span> <span class="Identifier">return</span> candidates<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">);</span>
+<span id="L113" class="LineNr"> 113 </span><span class="CommentedCode">//?   cerr &lt;&lt; &quot;A picking shape-shifting variant:\n&quot;;</span>
+<span id="L114" class="LineNr"> 114 </span>  vector&lt;recipe_ordinal&gt; result1 = <a href='056shape_shifting_recipe.cc.html#L132'>keep_max</a><span class="Delimiter">(</span>inst<span class="Delimiter">,</span> candidates<span class="Delimiter">,</span> number_of_concrete_type_names<span class="Delimiter">);</span>
+<span id="L115" class="LineNr"> 115 </span>  assert<span class="Delimiter">(</span>!result1<span class="Delimiter">.</span>empty<span class="Delimiter">());</span>
+<span id="L116" class="LineNr"> 116 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>result1<span class="Delimiter">)</span> == <span class="Constant">1</span><span class="Delimiter">)</span> <span class="Identifier">return</span> result1<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">);</span>
+<span id="L117" class="LineNr"> 117 </span><span class="CommentedCode">//?   cerr &lt;&lt; &quot;B picking shape-shifting variant:\n&quot;;</span>
+<span id="L118" class="LineNr"> 118 </span>  vector&lt;recipe_ordinal&gt; result2 = <a href='056shape_shifting_recipe.cc.html#L132'>keep_max</a><span class="Delimiter">(</span>inst<span class="Delimiter">,</span> result1<span class="Delimiter">,</span> <a href='056shape_shifting_recipe.cc.html#L154'>arity_fit</a><span class="Delimiter">);</span>
+<span id="L119" class="LineNr"> 119 </span>  assert<span class="Delimiter">(</span>!result2<span class="Delimiter">.</span>empty<span class="Delimiter">());</span>
+<span id="L120" class="LineNr"> 120 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>result2<span class="Delimiter">)</span> == <span class="Constant">1</span><span class="Delimiter">)</span> <span class="Identifier">return</span> result2<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">);</span>
+<span id="L121" class="LineNr"> 121 </span><span class="CommentedCode">//?   cerr &lt;&lt; &quot;C picking shape-shifting variant:\n&quot;;</span>
+<span id="L122" class="LineNr"> 122 </span>  vector&lt;recipe_ordinal&gt; result3 = <a href='056shape_shifting_recipe.cc.html#L132'>keep_max</a><span class="Delimiter">(</span>inst<span class="Delimiter">,</span> result2<span class="Delimiter">,</span> number_of_type_ingredients<span class="Delimiter">);</span>
+<span id="L123" class="LineNr"> 123 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>result3<span class="Delimiter">)</span> &gt; <span class="Constant">1</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L124" class="LineNr"> 124 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <span class="Constant">&quot;</span><span class="cSpecial">\n</span><span class="Constant">Couldn't decide the best shape-shifting variant for instruction '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; end<span class="Delimiter">();</span>
+<span id="L125" class="LineNr"> 125 </span>  <span class="Conceal">¦</span> cerr &lt;&lt; <span class="Constant">&quot;This is a hole in Mu. Please copy the following candidates into an email to Kartik Agaram &lt;mu@akkartik.com&gt;</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span><span class="Delimiter">;</span>
+<span id="L126" class="LineNr"> 126 </span>  <span class="Conceal">¦</span> <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> i = <span class="Constant">0</span><span class="Delimiter">;</span>  i &lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>candidates<span class="Delimiter">);</span>  ++i<span class="Delimiter">)</span>
+<span id="L127" class="LineNr"> 127 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> cerr &lt;&lt; <span class="Constant">&quot;  &quot;</span> &lt;&lt; header_label<span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> candidates<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">)))</span> &lt;&lt; <span class="cSpecial">'\n'</span><span class="Delimiter">;</span>
+<span id="L128" class="LineNr"> 128 </span>  <span class="Delimiter">}</span>
+<span id="L129" class="LineNr"> 129 </span>  <span class="Identifier">return</span> result3<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">);</span>
+<span id="L130" class="LineNr"> 130 </span><span class="Delimiter">}</span>
+<span id="L131" class="LineNr"> 131 </span>
+<span id="L132" class="LineNr"> 132 </span>vector&lt;recipe_ordinal&gt; <a href='056shape_shifting_recipe.cc.html#L132'>keep_max</a><span class="Delimiter">(</span><span class="Normal">const</span> instruction&amp; inst<span class="Delimiter">,</span> <span class="Normal">const</span> vector&lt;recipe_ordinal&gt;&amp; in<span class="Delimiter">,</span>
+<span id="L133" class="LineNr"> 133 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span>           <span class="Normal">int</span> <span class="Delimiter">(</span>*scorer<span class="Delimiter">)(</span><span class="Normal">const</span> instruction&amp;<span class="Delimiter">,</span> <a href='010vm.cc.html#L14'>recipe_ordinal</a><span class="Delimiter">))</span> <span class="Delimiter">{</span>
+<span id="L134" class="LineNr"> 134 </span>  assert<span class="Delimiter">(</span>!in<span class="Delimiter">.</span>empty<span class="Delimiter">());</span>
+<span id="L135" class="LineNr"> 135 </span>  vector&lt;recipe_ordinal&gt; out<span class="Delimiter">;</span>
+<span id="L136" class="LineNr"> 136 </span>  out<span class="Delimiter">.</span>push_back<span class="Delimiter">(</span>in<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">));</span>
+<span id="L137" class="LineNr"> 137 </span>  <span class="Normal">int</span> best_score = <span class="Delimiter">(</span>*scorer<span class="Delimiter">)(</span>inst<span class="Delimiter">,</span> in<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">));</span>
+<span id="L138" class="LineNr"> 138 </span><span class="CommentedCode">//?   cerr &lt;&lt; best_score &lt;&lt; &quot; &quot; &lt;&lt; header_label(get(Recipe, in.at(0))) &lt;&lt; '\n';</span>
+<span id="L139" class="LineNr"> 139 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> i = <span class="Constant">1</span><span class="Delimiter">;</span>  i &lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>in<span class="Delimiter">);</span>  ++i<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L140" class="LineNr"> 140 </span>  <span class="Conceal">¦</span> <span class="Normal">int</span> score = <span class="Delimiter">(</span>*scorer<span class="Delimiter">)(</span>inst<span class="Delimiter">,</span> in<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">));</span>
+<span id="L141" class="LineNr"> 141 </span><span class="CommentedCode">//?     cerr &lt;&lt; score &lt;&lt; &quot; &quot; &lt;&lt; header_label(get(Recipe, in.at(i))) &lt;&lt; '\n';</span>
+<span id="L142" class="LineNr"> 142 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>score == best_score<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L143" class="LineNr"> 143 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> out<span class="Delimiter">.</span>push_back<span class="Delimiter">(</span>in<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">));</span>
+<span id="L144" class="LineNr"> 144 </span>  <span class="Conceal">¦</span> <span class="Delimiter">}</span>
+<span id="L145" class="LineNr"> 145 </span>  <span class="Conceal">¦</span> <span class="Normal">else</span> <span class="Normal">if</span> <span class="Delimiter">(</span>score &gt; best_score<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L146" class="LineNr"> 146 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> best_score = score<span class="Delimiter">;</span>
+<span id="L147" class="LineNr"> 147 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> out<span class="Delimiter">.</span><a href='050scenario.cc.html#L60'>clear</a><span class="Delimiter">();</span>
+<span id="L148" class="LineNr"> 148 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> out<span class="Delimiter">.</span>push_back<span class="Delimiter">(</span>in<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">));</span>
+<span id="L149" class="LineNr"> 149 </span>  <span class="Conceal">¦</span> <span class="Delimiter">}</span>
+<span id="L150" class="LineNr"> 150 </span>  <span class="Delimiter">}</span>
+<span id="L151" class="LineNr"> 151 </span>  <span class="Identifier">return</span> out<span class="Delimiter">;</span>
+<span id="L152" class="LineNr"> 152 </span><span class="Delimiter">}</span>
+<span id="L153" class="LineNr"> 153 </span>
+<span id="L154" class="LineNr"> 154 </span><span class="Normal">int</span> <a href='056shape_shifting_recipe.cc.html#L154'>arity_fit</a><span class="Delimiter">(</span><span class="Normal">const</span> instruction&amp; inst<span class="Delimiter">,</span> <a href='010vm.cc.html#L14'>recipe_ordinal</a> candidate<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L155" class="LineNr"> 155 </span>  <span class="Normal">const</span> recipe&amp; r = get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> candidate<span class="Delimiter">);</span>
+<span id="L156" class="LineNr"> 156 </span>  <span class="Identifier">return</span> <span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>products<span class="Delimiter">)</span> - <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>r<span class="Delimiter">.</span>products<span class="Delimiter">))</span>
+<span id="L157" class="LineNr"> 157 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span>+ <span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>r<span class="Delimiter">.</span>ingredients<span class="Delimiter">)</span> - <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">));</span>
+<span id="L158" class="LineNr"> 158 </span><span class="Delimiter">}</span>
+<span id="L159" class="LineNr"> 159 </span>
+<span id="L160" class="LineNr"> 160 </span><span class="Normal">bool</span> <a href='056shape_shifting_recipe.cc.html#L160'>any_type_ingredient_in_header</a><span class="Delimiter">(</span><a href='010vm.cc.html#L14'>recipe_ordinal</a> variant<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L161" class="LineNr"> 161 </span>  <span class="Normal">const</span> recipe&amp; caller = get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> variant<span class="Delimiter">);</span>
+<span id="L162" class="LineNr"> 162 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> i = <span class="Constant">0</span><span class="Delimiter">;</span>  i &lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>caller<span class="Delimiter">.</span>ingredients<span class="Delimiter">);</span>  ++i<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L163" class="LineNr"> 163 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>contains_type_ingredient_name<span class="Delimiter">(</span>caller<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">)))</span>
+<span id="L164" class="LineNr"> 164 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Identifier">return</span> <span class="Constant">true</span><span class="Delimiter">;</span>
+<span id="L165" class="LineNr"> 165 </span>  <span class="Delimiter">}</span>
+<span id="L166" class="LineNr"> 166 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> i = <span class="Constant">0</span><span class="Delimiter">;</span>  i &lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>caller<span class="Delimiter">.</span>products<span class="Delimiter">);</span>  ++i<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L167" class="LineNr"> 167 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>contains_type_ingredient_name<span class="Delimiter">(</span>caller<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">)))</span>
+<span id="L168" class="LineNr"> 168 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Identifier">return</span> <span class="Constant">true</span><span class="Delimiter">;</span>
+<span id="L169" class="LineNr"> 169 </span>  <span class="Delimiter">}</span>
+<span id="L170" class="LineNr"> 170 </span>  <span class="Identifier">return</span> <span class="Constant">false</span><span class="Delimiter">;</span>
 <span id="L171" class="LineNr"> 171 </span><span class="Delimiter">}</span>
 <span id="L172" class="LineNr"> 172 </span>
-<span id="L173" class="LineNr"> 173 </span><span class="Normal">bool</span> <a href='056shape_shifting_recipe.cc.html#L173'>any_type_ingredient_in_header</a><span class="Delimiter">(</span><a href='010vm.cc.html#L14'>recipe_ordinal</a> variant<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L174" class="LineNr"> 174 </span>  <span class="Normal">const</span> recipe&amp; caller = get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> variant<span class="Delimiter">);</span>
-<span id="L175" class="LineNr"> 175 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> i = <span class="Constant">0</span><span class="Delimiter">;</span>  i &lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>caller<span class="Delimiter">.</span>ingredients<span class="Delimiter">);</span>  ++i<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L176" class="LineNr"> 176 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>contains_type_ingredient_name<span class="Delimiter">(</span>caller<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">)))</span>
-<span id="L177" class="LineNr"> 177 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Identifier">return</span> <span class="Constant">true</span><span class="Delimiter">;</span>
-<span id="L178" class="LineNr"> 178 </span>  <span class="Delimiter">}</span>
-<span id="L179" class="LineNr"> 179 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> i = <span class="Constant">0</span><span class="Delimiter">;</span>  i &lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>caller<span class="Delimiter">.</span>products<span class="Delimiter">);</span>  ++i<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L180" class="LineNr"> 180 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>contains_type_ingredient_name<span class="Delimiter">(</span>caller<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">)))</span>
-<span id="L181" class="LineNr"> 181 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Identifier">return</span> <span class="Constant">true</span><span class="Delimiter">;</span>
-<span id="L182" class="LineNr"> 182 </span>  <span class="Delimiter">}</span>
-<span id="L183" class="LineNr"> 183 </span>  <span class="Identifier">return</span> <span class="Constant">false</span><span class="Delimiter">;</span>
-<span id="L184" class="LineNr"> 184 </span><span class="Delimiter">}</span>
-<span id="L185" class="LineNr"> 185 </span>
-<span id="L186" class="LineNr"> 186 </span><span class="Normal">bool</span> concrete_type_names_strictly_match<span class="Delimiter">(</span>reagent<span class="Comment">/*</span><span class="Comment">copy</span><span class="Comment">*/</span> to<span class="Delimiter">,</span> reagent<span class="Comment">/*</span><span class="Comment">copy</span><span class="Comment">*/</span> from<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L187" class="LineNr"> 187 </span>  canonize_type<span class="Delimiter">(</span>to<span class="Delimiter">);</span>
-<span id="L188" class="LineNr"> 188 </span>  canonize_type<span class="Delimiter">(</span>from<span class="Delimiter">);</span>
-<span id="L189" class="LineNr"> 189 </span>  <span class="Identifier">return</span> concrete_type_names_strictly_match<span class="Delimiter">(</span>to<span class="Delimiter">.</span>type<span class="Delimiter">,</span> from<span class="Delimiter">.</span>type<span class="Delimiter">,</span> from<span class="Delimiter">);</span>
-<span id="L190" class="LineNr"> 190 </span><span class="Delimiter">}</span>
-<span id="L191" class="LineNr"> 191 </span>
-<span id="L192" class="LineNr"> 192 </span><span class="Normal">bool</span> concrete_type_names_strictly_match<span class="Delimiter">(</span><span class="Normal">const</span> type_tree* to<span class="Delimiter">,</span> <span class="Normal">const</span> type_tree* from<span class="Delimiter">,</span> <span class="Normal">const</span> reagent&amp; rhs_reagent<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L193" class="LineNr"> 193 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!to<span class="Delimiter">)</span> <span class="Identifier">return</span> !from<span class="Delimiter">;</span>
-<span id="L194" class="LineNr"> 194 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!from<span class="Delimiter">)</span> <span class="Identifier">return</span> !to<span class="Delimiter">;</span>
-<span id="L195" class="LineNr"> 195 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>to<span class="Delimiter">-&gt;</span>atom &amp;&amp; is_type_ingredient_name<span class="Delimiter">(</span>to<span class="Delimiter">-&gt;</span>name<span class="Delimiter">))</span> <span class="Identifier">return</span> <span class="Constant">true</span><span class="Delimiter">;</span>  <span class="Comment">// type ingredient matches anything</span>
-<span id="L196" class="LineNr"> 196 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!to<span class="Delimiter">-&gt;</span>atom &amp;&amp; to<span class="Delimiter">-&gt;</span>right == <span class="Constant">NULL</span> &amp;&amp; to<span class="Delimiter">-&gt;</span>left != <span class="Constant">NULL</span> &amp;&amp; to<span class="Delimiter">-&gt;</span>left<span class="Delimiter">-&gt;</span>atom &amp;&amp; is_type_ingredient_name<span class="Delimiter">(</span>to<span class="Delimiter">-&gt;</span>left<span class="Delimiter">-&gt;</span>name<span class="Delimiter">))</span> <span class="Identifier">return</span> <span class="Constant">true</span><span class="Delimiter">;</span>
-<span id="L197" class="LineNr"> 197 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>from<span class="Delimiter">-&gt;</span>atom &amp;&amp; is_mu_address<span class="Delimiter">(</span>to<span class="Delimiter">))</span>
-<span id="L198" class="LineNr"> 198 </span>  <span class="Conceal">¦</span> <span class="Identifier">return</span> from<span class="Delimiter">-&gt;</span>name == <span class="Constant">&quot;literal&quot;</span> &amp;&amp; rhs_reagent<span class="Delimiter">.</span>name == <span class="Constant">&quot;0&quot;</span><span class="Delimiter">;</span>
-<span id="L199" class="LineNr"> 199 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!from<span class="Delimiter">-&gt;</span>atom &amp;&amp; !to<span class="Delimiter">-&gt;</span>atom<span class="Delimiter">)</span>
-<span id="L200" class="LineNr"> 200 </span>  <span class="Conceal">¦</span> <span class="Identifier">return</span> concrete_type_names_strictly_match<span class="Delimiter">(</span>to<span class="Delimiter">-&gt;</span>left<span class="Delimiter">,</span> from<span class="Delimiter">-&gt;</span>left<span class="Delimiter">,</span> rhs_reagent<span class="Delimiter">)</span>
-<span id="L201" class="LineNr"> 201 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> &amp;&amp; concrete_type_names_strictly_match<span class="Delimiter">(</span>to<span class="Delimiter">-&gt;</span>right<span class="Delimiter">,</span> from<span class="Delimiter">-&gt;</span>right<span class="Delimiter">,</span> rhs_reagent<span class="Delimiter">);</span>
-<span id="L202" class="LineNr"> 202 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>from<span class="Delimiter">-&gt;</span>atom != to<span class="Delimiter">-&gt;</span>atom<span class="Delimiter">)</span> <span class="Identifier">return</span> <span class="Constant">false</span><span class="Delimiter">;</span>
-<span id="L203" class="LineNr"> 203 </span>  <span class="Comment">// both from and to are atoms</span>
-<span id="L204" class="LineNr"> 204 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>from<span class="Delimiter">-&gt;</span>name == <span class="Constant">&quot;literal&quot;</span><span class="Delimiter">)</span>
-<span id="L205" class="LineNr"> 205 </span>  <span class="Conceal">¦</span> <span class="Identifier">return</span> Literal_type_names<span class="Delimiter">.</span>find<span class="Delimiter">(</span>to<span class="Delimiter">-&gt;</span>name<span class="Delimiter">)</span> != Literal_type_names<span class="Delimiter">.</span><a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
-<span id="L206" class="LineNr"> 206 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>to<span class="Delimiter">-&gt;</span>name == <span class="Constant">&quot;literal&quot;</span><span class="Delimiter">)</span>
-<span id="L207" class="LineNr"> 207 </span>  <span class="Conceal">¦</span> <span class="Identifier">return</span> Literal_type_names<span class="Delimiter">.</span>find<span class="Delimiter">(</span>from<span class="Delimiter">-&gt;</span>name<span class="Delimiter">)</span> != Literal_type_names<span class="Delimiter">.</span><a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
-<span id="L208" class="LineNr"> 208 </span>  <span class="Identifier">return</span> to<span class="Delimiter">-&gt;</span>name == from<span class="Delimiter">-&gt;</span>name<span class="Delimiter">;</span>
-<span id="L209" class="LineNr"> 209 </span><span class="Delimiter">}</span>
-<span id="L210" class="LineNr"> 210 </span>
-<span id="L211" class="LineNr"> 211 </span><span class="Normal">bool</span> contains_type_ingredient_name<span class="Delimiter">(</span><span class="Normal">const</span> reagent&amp; x<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L212" class="LineNr"> 212 </span>  <span class="Identifier">return</span> contains_type_ingredient_name<span class="Delimiter">(</span>x<span class="Delimiter">.</span>type<span class="Delimiter">);</span>
-<span id="L213" class="LineNr"> 213 </span><span class="Delimiter">}</span>
-<span id="L214" class="LineNr"> 214 </span>
-<span id="L215" class="LineNr"> 215 </span><span class="Normal">bool</span> contains_type_ingredient_name<span class="Delimiter">(</span><span class="Normal">const</span> type_tree* type<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L216" class="LineNr"> 216 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!type<span class="Delimiter">)</span> <span class="Identifier">return</span> <span class="Constant">false</span><span class="Delimiter">;</span>
-<span id="L217" class="LineNr"> 217 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>is_type_ingredient_name<span class="Delimiter">(</span>type<span class="Delimiter">-&gt;</span>name<span class="Delimiter">))</span> <span class="Identifier">return</span> <span class="Constant">true</span><span class="Delimiter">;</span>
-<span id="L218" class="LineNr"> 218 </span>  <span class="Identifier">return</span> contains_type_ingredient_name<span class="Delimiter">(</span>type<span class="Delimiter">-&gt;</span>left<span class="Delimiter">)</span> || contains_type_ingredient_name<span class="Delimiter">(</span>type<span class="Delimiter">-&gt;</span>right<span class="Delimiter">);</span>
-<span id="L219" class="LineNr"> 219 </span><span class="Delimiter">}</span>
-<span id="L220" class="LineNr"> 220 </span>
-<span id="L221" class="LineNr"> 221 </span><span class="Normal">int</span> number_of_concrete_type_names<span class="Delimiter">(</span><a href='001help.cc.html#L259'>unused</a> <span class="Normal">const</span> instruction&amp; inst<span class="Delimiter">,</span> <a href='010vm.cc.html#L14'>recipe_ordinal</a> r<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L222" class="LineNr"> 222 </span>  <span class="Normal">const</span> recipe&amp; caller = get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">);</span>
-<span id="L223" class="LineNr"> 223 </span>  <span class="Normal">int</span> result = <span class="Constant">0</span><span class="Delimiter">;</span>
-<span id="L224" class="LineNr"> 224 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> i = <span class="Constant">0</span><span class="Delimiter">;</span>  i &lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>caller<span class="Delimiter">.</span>ingredients<span class="Delimiter">);</span>  ++i<span class="Delimiter">)</span>
-<span id="L225" class="LineNr"> 225 </span>  <span class="Conceal">¦</span> result += number_of_concrete_type_names<span class="Delimiter">(</span>caller<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">).</span>type<span class="Delimiter">);</span>
-<span id="L226" class="LineNr"> 226 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> i = <span class="Constant">0</span><span class="Delimiter">;</span>  i &lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>caller<span class="Delimiter">.</span>products<span class="Delimiter">);</span>  ++i<span class="Delimiter">)</span>
-<span id="L227" class="LineNr"> 227 </span>  <span class="Conceal">¦</span> result += number_of_concrete_type_names<span class="Delimiter">(</span>caller<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">).</span>type<span class="Delimiter">);</span>
-<span id="L228" class="LineNr"> 228 </span>  <span class="Identifier">return</span> result<span class="Delimiter">;</span>
-<span id="L229" class="LineNr"> 229 </span><span class="Delimiter">}</span>
-<span id="L230" class="LineNr"> 230 </span>
-<span id="L231" class="LineNr"> 231 </span><span class="Normal">int</span> number_of_concrete_type_names<span class="Delimiter">(</span><span class="Normal">const</span> type_tree* type<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L232" class="LineNr"> 232 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!type<span class="Delimiter">)</span> <span class="Identifier">return</span> <span class="Constant">0</span><span class="Delimiter">;</span>
-<span id="L233" class="LineNr"> 233 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>type<span class="Delimiter">-&gt;</span>atom<span class="Delimiter">)</span>
-<span id="L234" class="LineNr"> 234 </span>  <span class="Conceal">¦</span> <span class="Identifier">return</span> is_type_ingredient_name<span class="Delimiter">(</span>type<span class="Delimiter">-&gt;</span>name<span class="Delimiter">)</span> ? <span class="Constant">0</span> : <span class="Constant">1</span><span class="Delimiter">;</span>
-<span id="L235" class="LineNr"> 235 </span>  <span class="Identifier">return</span> number_of_concrete_type_names<span class="Delimiter">(</span>type<span class="Delimiter">-&gt;</span>left<span class="Delimiter">)</span>
-<span id="L236" class="LineNr"> 236 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span>+ number_of_concrete_type_names<span class="Delimiter">(</span>type<span class="Delimiter">-&gt;</span>right<span class="Delimiter">);</span>
-<span id="L237" class="LineNr"> 237 </span><span class="Delimiter">}</span>
-<span id="L238" class="LineNr"> 238 </span>
-<span id="L239" class="LineNr"> 239 </span><span class="Normal">int</span> number_of_type_ingredients<span class="Delimiter">(</span><a href='001help.cc.html#L259'>unused</a> <span class="Normal">const</span> instruction&amp; inst<span class="Delimiter">,</span> <a href='010vm.cc.html#L14'>recipe_ordinal</a> r<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L240" class="LineNr"> 240 </span>  <span class="Normal">const</span> recipe&amp; caller = get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">);</span>
-<span id="L241" class="LineNr"> 241 </span>  <span class="Normal">int</span> result = <span class="Constant">0</span><span class="Delimiter">;</span>
-<span id="L242" class="LineNr"> 242 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> i = <span class="Constant">0</span><span class="Delimiter">;</span>  i &lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>caller<span class="Delimiter">.</span>ingredients<span class="Delimiter">);</span>  ++i<span class="Delimiter">)</span>
-<span id="L243" class="LineNr"> 243 </span>  <span class="Conceal">¦</span> result += number_of_type_ingredients<span class="Delimiter">(</span>caller<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">).</span>type<span class="Delimiter">);</span>
-<span id="L244" class="LineNr"> 244 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> i = <span class="Constant">0</span><span class="Delimiter">;</span>  i &lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>caller<span class="Delimiter">.</span>products<span class="Delimiter">);</span>  ++i<span class="Delimiter">)</span>
-<span id="L245" class="LineNr"> 245 </span>  <span class="Conceal">¦</span> result += number_of_type_ingredients<span class="Delimiter">(</span>caller<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">).</span>type<span class="Delimiter">);</span>
-<span id="L246" class="LineNr"> 246 </span>  <span class="Identifier">return</span> result<span class="Delimiter">;</span>
-<span id="L247" class="LineNr"> 247 </span><span class="Delimiter">}</span>
-<span id="L248" class="LineNr"> 248 </span>
-<span id="L249" class="LineNr"> 249 </span><span class="Normal">int</span> number_of_type_ingredients<span class="Delimiter">(</span><span class="Normal">const</span> type_tree* type<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L250" class="LineNr"> 250 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!type<span class="Delimiter">)</span> <span class="Identifier">return</span> <span class="Constant">0</span><span class="Delimiter">;</span>
-<span id="L251" class="LineNr"> 251 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>type<span class="Delimiter">-&gt;</span>atom<span class="Delimiter">)</span>
-<span id="L252" class="LineNr"> 252 </span>  <span class="Conceal">¦</span> <span class="Identifier">return</span> is_type_ingredient_name<span class="Delimiter">(</span>type<span class="Delimiter">-&gt;</span>name<span class="Delimiter">)</span> ? <span class="Constant">1</span> : <span class="Constant">0</span><span class="Delimiter">;</span>
-<span id="L253" class="LineNr"> 253 </span>  <span class="Identifier">return</span> number_of_type_ingredients<span class="Delimiter">(</span>type<span class="Delimiter">-&gt;</span>left<span class="Delimiter">)</span>
-<span id="L254" class="LineNr"> 254 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span>+ number_of_type_ingredients<span class="Delimiter">(</span>type<span class="Delimiter">-&gt;</span>right<span class="Delimiter">);</span>
-<span id="L255" class="LineNr"> 255 </span><span class="Delimiter">}</span>
-<span id="L256" class="LineNr"> 256 </span>
-<span id="L257" class="LineNr"> 257 </span><a href='010vm.cc.html#L14'>recipe_ordinal</a> <a href='056shape_shifting_recipe.cc.html#L257'>new_variant</a><span class="Delimiter">(</span><a href='010vm.cc.html#L14'>recipe_ordinal</a> exemplar<span class="Delimiter">,</span> <span class="Normal">const</span> instruction&amp; inst<span class="Delimiter">,</span> <span class="Normal">const</span> recipe&amp; caller_recipe<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L258" class="LineNr"> 258 </span>  string new_name = <a href='054static_dispatch.cc.html#L111'>next_unused_recipe_name</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>name<span class="Delimiter">);</span>
-<span id="L259" class="LineNr"> 259 </span>  assert<span class="Delimiter">(</span>!contains_key<span class="Delimiter">(</span>Recipe_ordinal<span class="Delimiter">,</span> new_name<span class="Delimiter">));</span>
-<span id="L260" class="LineNr"> 260 </span>  <a href='010vm.cc.html#L14'>recipe_ordinal</a> new_recipe_ordinal = <a href='001help.cc.html#L221'>put</a><span class="Delimiter">(</span>Recipe_ordinal<span class="Delimiter">,</span> new_name<span class="Delimiter">,</span> Next_recipe_ordinal++<span class="Delimiter">);</span>
-<span id="L261" class="LineNr"> 261 </span>  <span class="Comment">// make a copy</span>
-<span id="L262" class="LineNr"> 262 </span>  assert<span class="Delimiter">(</span>contains_key<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> exemplar<span class="Delimiter">));</span>
-<span id="L263" class="LineNr"> 263 </span>  assert<span class="Delimiter">(</span>!contains_key<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> new_recipe_ordinal<span class="Delimiter">));</span>
-<span id="L264" class="LineNr"> 264 </span>  <a href='010vm.cc.html#L19'>recipe</a> new_recipe = get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> exemplar<span class="Delimiter">);</span>
-<span id="L265" class="LineNr"> 265 </span>  new_recipe<span class="Delimiter">.</span>name = new_name<span class="Delimiter">;</span>
-<span id="L266" class="LineNr"> 266 </span>  new_recipe<span class="Delimiter">.</span>is_autogenerated = <span class="Constant">true</span><span class="Delimiter">;</span>
-<span id="L267" class="LineNr"> 267 </span>  <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">9993</span><span class="Delimiter">,</span> <span class="Constant">&quot;transform&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;switching &quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>name &lt;&lt; <span class="Constant">&quot; to specialized &quot;</span> &lt;&lt; header_label<span class="Delimiter">(</span>new_recipe<span class="Delimiter">)</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
-<span id="L268" class="LineNr"> 268 </span>
-<span id="L269" class="LineNr"> 269 </span>  <span class="Comment">// Replace type ingredients with concrete types in new_recipe.</span>
-<span id="L270" class="LineNr"> 270 </span>  <span class="Comment">//</span>
-<span id="L271" class="LineNr"> 271 </span>  <span class="Comment">// preprocessing: micro-manage a couple of transforms</span>
-<span id="L272" class="LineNr"> 272 </span>  <span class="Comment">// a) perform tangle *before* replacing type ingredients, just in case</span>
-<span id="L273" class="LineNr"> 273 </span>  <span class="Comment">// inserted code involves type ingredients</span>
-<span id="L274" class="LineNr"> 274 </span>  insert_fragments<span class="Delimiter">(</span>new_recipe<span class="Delimiter">);</span>
-<span id="L275" class="LineNr"> 275 </span>  <span class="Comment">// b) do the work of check_or_set_types_by_name (and its prerequisites)</span>
-<span id="L276" class="LineNr"> 276 </span>  <span class="Comment">// while supporting type-ingredients</span>
-<span id="L277" class="LineNr"> 277 </span>  expand_type_abbreviations<span class="Delimiter">(</span>new_recipe<span class="Delimiter">);</span>
-<span id="L278" class="LineNr"> 278 </span>  <a href='056shape_shifting_recipe.cc.html#L295'>compute_type_names</a><span class="Delimiter">(</span>new_recipe<span class="Delimiter">);</span>
-<span id="L279" class="LineNr"> 279 </span>  <span class="Comment">// that gives enough information to replace type-ingredients with concrete types</span>
-<span id="L280" class="LineNr"> 280 </span>  <span class="Delimiter">{</span>
-<span id="L281" class="LineNr"> 281 </span>  <span class="Conceal">¦</span> map&lt;string<span class="Delimiter">,</span> <span class="Normal">const</span> type_tree*&gt; mappings<span class="Delimiter">;</span>
-<span id="L282" class="LineNr"> 282 </span>  <span class="Conceal">¦</span> <span class="Normal">bool</span> error = <span class="Constant">false</span><span class="Delimiter">;</span>
-<span id="L283" class="LineNr"> 283 </span>  <span class="Conceal">¦</span> <a href='056shape_shifting_recipe.cc.html#L329'>compute_type_ingredient_mappings</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> exemplar<span class="Delimiter">),</span> inst<span class="Delimiter">,</span> mappings<span class="Delimiter">,</span> caller_recipe<span class="Delimiter">,</span> &amp;error<span class="Delimiter">);</span>
-<span id="L284" class="LineNr"> 284 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>!error<span class="Delimiter">)</span> error = <span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>mappings<span class="Delimiter">)</span> != <a href='056shape_shifting_recipe.cc.html#L467'>type_ingredient_count_in_header</a><span class="Delimiter">(</span>exemplar<span class="Delimiter">));</span>
-<span id="L285" class="LineNr"> 285 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>!error<span class="Delimiter">)</span> replace_type_ingredients<span class="Delimiter">(</span>new_recipe<span class="Delimiter">,</span> mappings<span class="Delimiter">);</span>
-<span id="L286" class="LineNr"> 286 </span>  <span class="Conceal">¦</span> <span class="Normal">for</span> <span class="Delimiter">(</span>map&lt;string<span class="Delimiter">,</span> <span class="Normal">const</span> type_tree*&gt;::iterator p = mappings<span class="Delimiter">.</span>begin<span class="Delimiter">();</span>  p != mappings<span class="Delimiter">.</span><a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>  ++p<span class="Delimiter">)</span>
-<span id="L287" class="LineNr"> 287 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">delete</span> p<span class="Delimiter">-&gt;</span>second<span class="Delimiter">;</span>
-<span id="L288" class="LineNr"> 288 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>error<span class="Delimiter">)</span> <span class="Identifier">return</span> <span class="Constant">0</span><span class="Delimiter">;</span>
-<span id="L289" class="LineNr"> 289 </span>  <span class="Delimiter">}</span>
-<span id="L290" class="LineNr"> 290 </span>  ensure_all_concrete_types<span class="Delimiter">(</span>new_recipe<span class="Delimiter">,</span> get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> exemplar<span class="Delimiter">));</span>
-<span id="L291" class="LineNr"> 291 </span>  <a href='001help.cc.html#L221'>put</a><span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> new_recipe_ordinal<span class="Delimiter">,</span> new_recipe<span class="Delimiter">);</span>
-<span id="L292" class="LineNr"> 292 </span>  <span class="Identifier">return</span> new_recipe_ordinal<span class="Delimiter">;</span>
-<span id="L293" class="LineNr"> 293 </span><span class="Delimiter">}</span>
-<span id="L294" class="LineNr"> 294 </span>
-<span id="L295" class="LineNr"> 295 </span><span class="Normal">void</span> <a href='056shape_shifting_recipe.cc.html#L295'>compute_type_names</a><span class="Delimiter">(</span>recipe&amp; variant<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L296" class="LineNr"> 296 </span>  <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">9993</span><span class="Delimiter">,</span> <span class="Constant">&quot;transform&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;-- compute type names: &quot;</span> &lt;&lt; variant<span class="Delimiter">.</span>name &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
-<span id="L297" class="LineNr"> 297 </span>  map&lt;string<span class="Delimiter">,</span> type_tree*&gt; type_names<span class="Delimiter">;</span>
-<span id="L298" class="LineNr"> 298 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> i = <span class="Constant">0</span><span class="Delimiter">;</span>  i &lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>variant<span class="Delimiter">.</span>ingredients<span class="Delimiter">);</span>  ++i<span class="Delimiter">)</span>
-<span id="L299" class="LineNr"> 299 </span>  <span class="Conceal">¦</span> <a href='056shape_shifting_recipe.cc.html#L312'>save_or_deduce_type_name</a><span class="Delimiter">(</span>variant<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">),</span> type_names<span class="Delimiter">,</span> variant<span class="Delimiter">,</span> <span class="Constant">&quot;&quot;</span><span class="Delimiter">);</span>
-<span id="L300" class="LineNr"> 300 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> i = <span class="Constant">0</span><span class="Delimiter">;</span>  i &lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>variant<span class="Delimiter">.</span>products<span class="Delimiter">);</span>  ++i<span class="Delimiter">)</span>
-<span id="L301" class="LineNr"> 301 </span>  <span class="Conceal">¦</span> <a href='056shape_shifting_recipe.cc.html#L312'>save_or_deduce_type_name</a><span class="Delimiter">(</span>variant<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">),</span> type_names<span class="Delimiter">,</span> variant<span class="Delimiter">,</span> <span class="Constant">&quot;&quot;</span><span class="Delimiter">);</span>
-<span id="L302" class="LineNr"> 302 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> i = <span class="Constant">0</span><span class="Delimiter">;</span>  i &lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>variant<span class="Delimiter">.</span>steps<span class="Delimiter">);</span>  ++i<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L303" class="LineNr"> 303 </span>  <span class="Conceal">¦</span> instruction&amp; inst = variant<span class="Delimiter">.</span>steps<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">);</span>
-<span id="L304" class="LineNr"> 304 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">9993</span><span class="Delimiter">,</span> <span class="Constant">&quot;transform&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;  <a href='010vm.cc.html#L32'>instruction</a>: &quot;</span> &lt;&lt; <a href='028call_return.cc.html#L163'>to_string</a><span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
-<span id="L305" class="LineNr"> 305 </span>  <span class="Conceal">¦</span> <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> in = <span class="Constant">0</span><span class="Delimiter">;</span>  in &lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">);</span>  ++in<span class="Delimiter">)</span>
-<span id="L306" class="LineNr"> 306 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='056shape_shifting_recipe.cc.html#L312'>save_or_deduce_type_name</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>in<span class="Delimiter">),</span> type_names<span class="Delimiter">,</span> variant<span class="Delimiter">,</span> <span class="Constant">&quot; in '&quot;</span> + to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> + <span class="Constant">&quot;'&quot;</span><span class="Delimiter">);</span>
-<span id="L307" class="LineNr"> 307 </span>  <span class="Conceal">¦</span> <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> out = <span class="Constant">0</span><span class="Delimiter">;</span>  out &lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>products<span class="Delimiter">);</span>  ++out<span class="Delimiter">)</span>
-<span id="L308" class="LineNr"> 308 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='056shape_shifting_recipe.cc.html#L312'>save_or_deduce_type_name</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span>out<span class="Delimiter">),</span> type_names<span class="Delimiter">,</span> variant<span class="Delimiter">,</span> <span class="Constant">&quot; in '&quot;</span> + to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> + <span class="Constant">&quot;'&quot;</span><span class="Delimiter">);</span>
-<span id="L309" class="LineNr"> 309 </span>  <span class="Delimiter">}</span>
-<span id="L310" class="LineNr"> 310 </span><span class="Delimiter">}</span>
-<span id="L311" class="LineNr"> 311 </span>
-<span id="L312" class="LineNr"> 312 </span><span class="Normal">void</span> <a href='056shape_shifting_recipe.cc.html#L312'>save_or_deduce_type_name</a><span class="Delimiter">(</span>reagent&amp; x<span class="Delimiter">,</span> map&lt;string<span class="Delimiter">,</span> type_tree*&gt;&amp; type<span class="Delimiter">,</span> <span class="Normal">const</span> recipe&amp; variant<span class="Delimiter">,</span> <span class="Normal">const</span> string&amp; context<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L313" class="LineNr"> 313 </span>  <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">9994</span><span class="Delimiter">,</span> <span class="Constant">&quot;transform&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;    checking &quot;</span> &lt;&lt; <a href='028call_return.cc.html#L163'>to_string</a><span class="Delimiter">(</span>x<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;: &quot;</span> &lt;&lt; names_to_string<span class="Delimiter">(</span>x<span class="Delimiter">.</span>type<span class="Delimiter">)</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
-<span id="L314" class="LineNr"> 314 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!x<span class="Delimiter">.</span>type &amp;&amp; contains_key<span class="Delimiter">(</span>type<span class="Delimiter">,</span> x<span class="Delimiter">.</span>name<span class="Delimiter">))</span> <span class="Delimiter">{</span>
-<span id="L315" class="LineNr"> 315 </span>  <span class="Conceal">¦</span> x<span class="Delimiter">.</span>type = <span class="Normal">new</span> type_tree<span class="Delimiter">(</span>*get<span class="Delimiter">(</span>type<span class="Delimiter">,</span> x<span class="Delimiter">.</span>name<span class="Delimiter">));</span>
-<span id="L316" class="LineNr"> 316 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">9994</span><span class="Delimiter">,</span> <span class="Constant">&quot;transform&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;    deducing type to &quot;</span> &lt;&lt; names_to_string<span class="Delimiter">(</span>x<span class="Delimiter">.</span>type<span class="Delimiter">)</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
-<span id="L317" class="LineNr"> 317 </span>  <span class="Conceal">¦</span> <span class="Identifier">return</span><span class="Delimiter">;</span>
-<span id="L318" class="LineNr"> 318 </span>  <span class="Delimiter">}</span>
-<span id="L319" class="LineNr"> 319 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!x<span class="Delimiter">.</span>type<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L320" class="LineNr"> 320 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>variant<span class="Delimiter">.</span>original_name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;unknown type for '&quot;</span> &lt;&lt; x<span class="Delimiter">.</span>original_string &lt;&lt; <span class="Constant">&quot;'&quot;</span> &lt;&lt; context &lt;&lt; <span class="Constant">&quot; (check the name for typos)</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
-<span id="L321" class="LineNr"> 321 </span>  <span class="Conceal">¦</span> <span class="Identifier">return</span><span class="Delimiter">;</span>
-<span id="L322" class="LineNr"> 322 </span>  <span class="Delimiter">}</span>
-<span id="L323" class="LineNr"> 323 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>contains_key<span class="Delimiter">(</span>type<span class="Delimiter">,</span> x<span class="Delimiter">.</span>name<span class="Delimiter">))</span> <span class="Identifier">return</span><span class="Delimiter">;</span>
-<span id="L324" class="LineNr"> 324 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>x<span class="Delimiter">.</span>type<span class="Delimiter">-&gt;</span>name == <span class="Constant">&quot;offset&quot;</span> || x<span class="Delimiter">.</span>type<span class="Delimiter">-&gt;</span>name == <span class="Constant">&quot;variant&quot;</span><span class="Delimiter">)</span> <span class="Identifier">return</span><span class="Delimiter">;</span>  <span class="Comment">// special-case for container-access instructions</span>
-<span id="L325" class="LineNr"> 325 </span>  <a href='001help.cc.html#L221'>put</a><span class="Delimiter">(</span>type<span class="Delimiter">,</span> x<span class="Delimiter">.</span>name<span class="Delimiter">,</span> x<span class="Delimiter">.</span>type<span class="Delimiter">);</span>
-<span id="L326" class="LineNr"> 326 </span>  <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">9993</span><span class="Delimiter">,</span> <span class="Constant">&quot;transform&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;type of '&quot;</span> &lt;&lt; x<span class="Delimiter">.</span>name &lt;&lt; <span class="Constant">&quot;' is &quot;</span> &lt;&lt; names_to_string<span class="Delimiter">(</span>x<span class="Delimiter">.</span>type<span class="Delimiter">)</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
-<span id="L327" class="LineNr"> 327 </span><span class="Delimiter">}</span>
-<span id="L328" class="LineNr"> 328 </span>
-<span id="L329" class="LineNr"> 329 </span><span class="Normal">void</span> <a href='056shape_shifting_recipe.cc.html#L329'>compute_type_ingredient_mappings</a><span class="Delimiter">(</span><span class="Normal">const</span> recipe&amp; exemplar<span class="Delimiter">,</span> <span class="Normal">const</span> instruction&amp; inst<span class="Delimiter">,</span> map&lt;string<span class="Delimiter">,</span> <span class="Normal">const</span> type_tree*&gt;&amp; mappings<span class="Delimiter">,</span> <span class="Normal">const</span> recipe&amp; caller_recipe<span class="Delimiter">,</span> <span class="Normal">bool</span>* error<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L330" class="LineNr"> 330 </span>  <span class="Normal">int</span> limit = min<span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">),</span> <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>exemplar<span class="Delimiter">.</span>ingredients<span class="Delimiter">));</span>
-<span id="L331" class="LineNr"> 331 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> i = <span class="Constant">0</span><span class="Delimiter">;</span>  i &lt; limit<span class="Delimiter">;</span>  ++i<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L332" class="LineNr"> 332 </span>  <span class="Conceal">¦</span> <span class="Normal">const</span> reagent&amp; exemplar_reagent = exemplar<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">);</span>
-<span id="L333" class="LineNr"> 333 </span>  <span class="Conceal">¦</span> reagent<span class="Comment">/*</span><span class="Comment">copy</span><span class="Comment">*/</span> ingredient = inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">);</span>
-<span id="L334" class="LineNr"> 334 </span>  <span class="Conceal">¦</span> canonize_type<span class="Delimiter">(</span>ingredient<span class="Delimiter">);</span>
-<span id="L335" class="LineNr"> 335 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>is_mu_address<span class="Delimiter">(</span>exemplar_reagent<span class="Delimiter">)</span> &amp;&amp; ingredient<span class="Delimiter">.</span>name == <span class="Constant">&quot;0&quot;</span><span class="Delimiter">)</span> <span class="Identifier">continue</span><span class="Delimiter">;</span>  <span class="Comment">// assume it matches</span>
-<span id="L336" class="LineNr"> 336 </span>  <span class="Conceal">¦</span> accumulate_type_ingredients<span class="Delimiter">(</span>exemplar_reagent<span class="Delimiter">,</span> ingredient<span class="Delimiter">,</span> mappings<span class="Delimiter">,</span> exemplar<span class="Delimiter">,</span> inst<span class="Delimiter">,</span> caller_recipe<span class="Delimiter">,</span> error<span class="Delimiter">);</span>
-<span id="L337" class="LineNr"> 337 </span>  <span class="Delimiter">}</span>
-<span id="L338" class="LineNr"> 338 </span>  limit = min<span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>products<span class="Delimiter">),</span> <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>exemplar<span class="Delimiter">.</span>products<span class="Delimiter">));</span>
-<span id="L339" class="LineNr"> 339 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> i = <span class="Constant">0</span><span class="Delimiter">;</span>  i &lt; limit<span class="Delimiter">;</span>  ++i<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L340" class="LineNr"> 340 </span>  <span class="Conceal">¦</span> <span class="Normal">const</span> reagent&amp; exemplar_reagent = exemplar<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">);</span>
-<span id="L341" class="LineNr"> 341 </span>  <span class="Conceal">¦</span> reagent<span class="Comment">/*</span><span class="Comment">copy</span><span class="Comment">*/</span> product = inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">);</span>
-<span id="L342" class="LineNr"> 342 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>is_dummy<span class="Delimiter">(</span>product<span class="Delimiter">))</span> <span class="Identifier">continue</span><span class="Delimiter">;</span>
-<span id="L343" class="LineNr"> 343 </span>  <span class="Conceal">¦</span> canonize_type<span class="Delimiter">(</span>product<span class="Delimiter">);</span>
-<span id="L344" class="LineNr"> 344 </span>  <span class="Conceal">¦</span> accumulate_type_ingredients<span class="Delimiter">(</span>exemplar_reagent<span class="Delimiter">,</span> product<span class="Delimiter">,</span> mappings<span class="Delimiter">,</span> exemplar<span class="Delimiter">,</span> inst<span class="Delimiter">,</span> caller_recipe<span class="Delimiter">,</span> error<span class="Delimiter">);</span>
-<span id="L345" class="LineNr"> 345 </span>  <span class="Delimiter">}</span>
-<span id="L346" class="LineNr"> 346 </span><span class="Delimiter">}</span>
-<span id="L347" class="LineNr"> 347 </span>
-<span id="L348" class="LineNr"> 348 </span><span class="Normal">void</span> accumulate_type_ingredients<span class="Delimiter">(</span><span class="Normal">const</span> reagent&amp; exemplar_reagent<span class="Delimiter">,</span> reagent&amp; refinement<span class="Delimiter">,</span> map&lt;string<span class="Delimiter">,</span> <span class="Normal">const</span> type_tree*&gt;&amp; mappings<span class="Delimiter">,</span> <span class="Normal">const</span> recipe&amp; exemplar<span class="Delimiter">,</span> <span class="Normal">const</span> instruction&amp; call_instruction<span class="Delimiter">,</span> <span class="Normal">const</span> recipe&amp; caller_recipe<span class="Delimiter">,</span> <span class="Normal">bool</span>* error<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L349" class="LineNr"> 349 </span>  assert<span class="Delimiter">(</span>refinement<span class="Delimiter">.</span>type<span class="Delimiter">);</span>
-<span id="L350" class="LineNr"> 350 </span>  accumulate_type_ingredients<span class="Delimiter">(</span>exemplar_reagent<span class="Delimiter">.</span>type<span class="Delimiter">,</span> refinement<span class="Delimiter">.</span>type<span class="Delimiter">,</span> mappings<span class="Delimiter">,</span> exemplar<span class="Delimiter">,</span> exemplar_reagent<span class="Delimiter">,</span> call_instruction<span class="Delimiter">,</span> caller_recipe<span class="Delimiter">,</span> error<span class="Delimiter">);</span>
-<span id="L351" class="LineNr"> 351 </span><span class="Delimiter">}</span>
-<span id="L352" class="LineNr"> 352 </span>
-<span id="L353" class="LineNr"> 353 </span><span class="Normal">void</span> accumulate_type_ingredients<span class="Delimiter">(</span><span class="Normal">const</span> type_tree* exemplar_type<span class="Delimiter">,</span> <span class="Normal">const</span> type_tree* refinement_type<span class="Delimiter">,</span> map&lt;string<span class="Delimiter">,</span> <span class="Normal">const</span> type_tree*&gt;&amp; mappings<span class="Delimiter">,</span> <span class="Normal">const</span> recipe&amp; exemplar<span class="Delimiter">,</span> <span class="Normal">const</span> reagent&amp; exemplar_reagent<span class="Delimiter">,</span> <span class="Normal">const</span> instruction&amp; call_instruction<span class="Delimiter">,</span> <span class="Normal">const</span> recipe&amp; caller_recipe<span class="Delimiter">,</span> <span class="Normal">bool</span>* error<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L354" class="LineNr"> 354 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!exemplar_type<span class="Delimiter">)</span> <span class="Identifier">return</span><span class="Delimiter">;</span>
-<span id="L355" class="LineNr"> 355 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!refinement_type<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L356" class="LineNr"> 356 </span>  <span class="Conceal">¦</span> <span class="Comment">// probably a bug in mu</span>
-<span id="L357" class="LineNr"> 357 </span>  <span class="Conceal">¦</span> <span class="Comment">// todo: make this smarter; only flag an error if exemplar_type contains some *new* type ingredient</span>
-<span id="L358" class="LineNr"> 358 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>exemplar<span class="Delimiter">.</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;missing type ingredient for &quot;</span> &lt;&lt; exemplar_reagent<span class="Delimiter">.</span>original_string &lt;&lt; <span class="cSpecial">'\n'</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
-<span id="L359" class="LineNr"> 359 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <span class="Constant">&quot;  (called from '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>call_instruction<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;')</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
-<span id="L360" class="LineNr"> 360 </span>  <span class="Conceal">¦</span> <span class="Identifier">return</span><span class="Delimiter">;</span>
-<span id="L361" class="LineNr"> 361 </span>  <span class="Delimiter">}</span>
-<span id="L362" class="LineNr"> 362 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!exemplar_type<span class="Delimiter">-&gt;</span>atom &amp;&amp; exemplar_type<span class="Delimiter">-&gt;</span>right == <span class="Constant">NULL</span> &amp;&amp; !refinement_type<span class="Delimiter">-&gt;</span>atom &amp;&amp; refinement_type<span class="Delimiter">-&gt;</span>right != <span class="Constant">NULL</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L363" class="LineNr"> 363 </span>  <span class="Conceal">¦</span> exemplar_type = exemplar_type<span class="Delimiter">-&gt;</span>left<span class="Delimiter">;</span>
-<span id="L364" class="LineNr"> 364 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L171'>assert_for_now</a><span class="Delimiter">(</span>exemplar_type<span class="Delimiter">-&gt;</span>atom<span class="Delimiter">);</span>
-<span id="L365" class="LineNr"> 365 </span>  <span class="Delimiter">}</span>
-<span id="L366" class="LineNr"> 366 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>exemplar_type<span class="Delimiter">-&gt;</span>atom<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L367" class="LineNr"> 367 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>is_type_ingredient_name<span class="Delimiter">(</span>exemplar_type<span class="Delimiter">-&gt;</span>name<span class="Delimiter">))</span> <span class="Delimiter">{</span>
-<span id="L368" class="LineNr"> 368 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">const</span> type_tree* curr_refinement_type = <span class="Constant">NULL</span><span class="Delimiter">;</span>  <span class="Comment">// temporary heap allocation; must always be deleted before it goes out of scope</span>
-<span id="L369" class="LineNr"> 369 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>exemplar_type<span class="Delimiter">-&gt;</span>atom<span class="Delimiter">)</span>
-<span id="L370" class="LineNr"> 370 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> curr_refinement_type = <span class="Normal">new</span> type_tree<span class="Delimiter">(</span>*refinement_type<span class="Delimiter">);</span>
-<span id="L371" class="LineNr"> 371 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">else</span> <span class="Delimiter">{</span>
-<span id="L372" class="LineNr"> 372 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> assert<span class="Delimiter">(</span>!refinement_type<span class="Delimiter">-&gt;</span>atom<span class="Delimiter">);</span>
-<span id="L373" class="LineNr"> 373 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> curr_refinement_type = <span class="Normal">new</span> type_tree<span class="Delimiter">(</span>*refinement_type<span class="Delimiter">-&gt;</span>left<span class="Delimiter">);</span>
-<span id="L374" class="LineNr"> 374 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Delimiter">}</span>
-<span id="L375" class="LineNr"> 375 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>!contains_key<span class="Delimiter">(</span>mappings<span class="Delimiter">,</span> exemplar_type<span class="Delimiter">-&gt;</span>name<span class="Delimiter">))</span> <span class="Delimiter">{</span>
-<span id="L376" class="LineNr"> 376 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">9993</span><span class="Delimiter">,</span> <span class="Constant">&quot;transform&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;adding mapping from &quot;</span> &lt;&lt; exemplar_type<span class="Delimiter">-&gt;</span>name &lt;&lt; <span class="Constant">&quot; to &quot;</span> &lt;&lt; <a href='028call_return.cc.html#L163'>to_string</a><span class="Delimiter">(</span>curr_refinement_type<span class="Delimiter">)</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
-<span id="L377" class="LineNr"> 377 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='001help.cc.html#L221'>put</a><span class="Delimiter">(</span>mappings<span class="Delimiter">,</span> exemplar_type<span class="Delimiter">-&gt;</span>name<span class="Delimiter">,</span> <span class="Normal">new</span> type_tree<span class="Delimiter">(</span>*curr_refinement_type<span class="Delimiter">));</span>
-<span id="L378" class="LineNr"> 378 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Delimiter">}</span>
-<span id="L379" class="LineNr"> 379 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">else</span> <span class="Delimiter">{</span>
-<span id="L380" class="LineNr"> 380 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>!deeply_equal_type_names<span class="Delimiter">(</span>get<span class="Delimiter">(</span>mappings<span class="Delimiter">,</span> exemplar_type<span class="Delimiter">-&gt;</span>name<span class="Delimiter">),</span> curr_refinement_type<span class="Delimiter">))</span> <span class="Delimiter">{</span>
-<span id="L381" class="LineNr"> 381 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>caller_recipe<span class="Delimiter">.</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;no call found for '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>call_instruction<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
-<span id="L382" class="LineNr"> 382 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> *error = <span class="Constant">true</span><span class="Delimiter">;</span>
-<span id="L383" class="LineNr"> 383 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">delete</span> curr_refinement_type<span class="Delimiter">;</span>
-<span id="L384" class="LineNr"> 384 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Identifier">return</span><span class="Delimiter">;</span>
-<span id="L385" class="LineNr"> 385 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Delimiter">}</span>
-<span id="L386" class="LineNr"> 386 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>get<span class="Delimiter">(</span>mappings<span class="Delimiter">,</span> exemplar_type<span class="Delimiter">-&gt;</span>name<span class="Delimiter">)-&gt;</span>name == <span class="Constant">&quot;literal&quot;</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L387" class="LineNr"> 387 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">delete</span> get<span class="Delimiter">(</span>mappings<span class="Delimiter">,</span> exemplar_type<span class="Delimiter">-&gt;</span>name<span class="Delimiter">);</span>
-<span id="L388" class="LineNr"> 388 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='001help.cc.html#L221'>put</a><span class="Delimiter">(</span>mappings<span class="Delimiter">,</span> exemplar_type<span class="Delimiter">-&gt;</span>name<span class="Delimiter">,</span> <span class="Normal">new</span> type_tree<span class="Delimiter">(</span>*curr_refinement_type<span class="Delimiter">));</span>
-<span id="L389" class="LineNr"> 389 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Delimiter">}</span>
-<span id="L390" class="LineNr"> 390 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Delimiter">}</span>
-<span id="L391" class="LineNr"> 391 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">delete</span> curr_refinement_type<span class="Delimiter">;</span>
-<span id="L392" class="LineNr"> 392 </span>  <span class="Conceal">¦</span> <span class="Delimiter">}</span>
-<span id="L393" class="LineNr"> 393 </span>  <span class="Delimiter">}</span>
-<span id="L394" class="LineNr"> 394 </span>  <span class="Normal">else</span> <span class="Delimiter">{</span>
-<span id="L395" class="LineNr"> 395 </span>  <span class="Conceal">¦</span> accumulate_type_ingredients<span class="Delimiter">(</span>exemplar_type<span class="Delimiter">-&gt;</span>left<span class="Delimiter">,</span> refinement_type<span class="Delimiter">-&gt;</span>left<span class="Delimiter">,</span> mappings<span class="Delimiter">,</span> exemplar<span class="Delimiter">,</span> exemplar_reagent<span class="Delimiter">,</span> call_instruction<span class="Delimiter">,</span> caller_recipe<span class="Delimiter">,</span> error<span class="Delimiter">);</span>
-<span id="L396" class="LineNr"> 396 </span>  <span class="Conceal">¦</span> accumulate_type_ingredients<span class="Delimiter">(</span>exemplar_type<span class="Delimiter">-&gt;</span>right<span class="Delimiter">,</span> refinement_type<span class="Delimiter">-&gt;</span>right<span class="Delimiter">,</span> mappings<span class="Delimiter">,</span> exemplar<span class="Delimiter">,</span> exemplar_reagent<span class="Delimiter">,</span> call_instruction<span class="Delimiter">,</span> caller_recipe<span class="Delimiter">,</span> error<span class="Delimiter">);</span>
-<span id="L397" class="LineNr"> 397 </span>  <span class="Delimiter">}</span>
-<span id="L398" class="LineNr"> 398 </span><span class="Delimiter">}</span>
-<span id="L399" class="LineNr"> 399 </span>
-<span id="L400" class="LineNr"> 400 </span><span class="Normal">void</span> replace_type_ingredients<span class="Delimiter">(</span>recipe&amp; new_recipe<span class="Delimiter">,</span> <span class="Normal">const</span> map&lt;string<span class="Delimiter">,</span> <span class="Normal">const</span> type_tree*&gt;&amp; mappings<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L401" class="LineNr"> 401 </span>  <span class="Comment">// update its header</span>
-<span id="L402" class="LineNr"> 402 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>mappings<span class="Delimiter">.</span>empty<span class="Delimiter">())</span> <span class="Identifier">return</span><span class="Delimiter">;</span>
-<span id="L403" class="LineNr"> 403 </span>  <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">9993</span><span class="Delimiter">,</span> <span class="Constant">&quot;transform&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;replacing in <a href='010vm.cc.html#L19'>recipe</a> header ingredients&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
-<span id="L404" class="LineNr"> 404 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> i = <span class="Constant">0</span><span class="Delimiter">;</span>  i &lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>new_recipe<span class="Delimiter">.</span>ingredients<span class="Delimiter">);</span>  ++i<span class="Delimiter">)</span>
-<span id="L405" class="LineNr"> 405 </span>  <span class="Conceal">¦</span> replace_type_ingredients<span class="Delimiter">(</span>new_recipe<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">),</span> mappings<span class="Delimiter">,</span> new_recipe<span class="Delimiter">);</span>
-<span id="L406" class="LineNr"> 406 </span>  <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">9993</span><span class="Delimiter">,</span> <span class="Constant">&quot;transform&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;replacing in <a href='010vm.cc.html#L19'>recipe</a> header products&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
-<span id="L407" class="LineNr"> 407 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> i = <span class="Constant">0</span><span class="Delimiter">;</span>  i &lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>new_recipe<span class="Delimiter">.</span>products<span class="Delimiter">);</span>  ++i<span class="Delimiter">)</span>
-<span id="L408" class="LineNr"> 408 </span>  <span class="Conceal">¦</span> replace_type_ingredients<span class="Delimiter">(</span>new_recipe<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">),</span> mappings<span class="Delimiter">,</span> new_recipe<span class="Delimiter">);</span>
-<span id="L409" class="LineNr"> 409 </span>  <span class="Comment">// update its body</span>
-<span id="L410" class="LineNr"> 410 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> i = <span class="Constant">0</span><span class="Delimiter">;</span>  i &lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>new_recipe<span class="Delimiter">.</span>steps<span class="Delimiter">);</span>  ++i<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L411" class="LineNr"> 411 </span>  <span class="Conceal">¦</span> instruction&amp; inst = new_recipe<span class="Delimiter">.</span>steps<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">);</span>
-<span id="L412" class="LineNr"> 412 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">9993</span><span class="Delimiter">,</span> <span class="Constant">&quot;transform&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;replacing in <a href='010vm.cc.html#L32'>instruction</a> '&quot;</span> &lt;&lt; to_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
-<span id="L413" class="LineNr"> 413 </span>  <span class="Conceal">¦</span> <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> j = <span class="Constant">0</span><span class="Delimiter">;</span>  j &lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">);</span>  ++j<span class="Delimiter">)</span>
-<span id="L414" class="LineNr"> 414 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> replace_type_ingredients<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>j<span class="Delimiter">),</span> mappings<span class="Delimiter">,</span> new_recipe<span class="Delimiter">);</span>
-<span id="L415" class="LineNr"> 415 </span>  <span class="Conceal">¦</span> <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> j = <span class="Constant">0</span><span class="Delimiter">;</span>  j &lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>products<span class="Delimiter">);</span>  ++j<span class="Delimiter">)</span>
-<span id="L416" class="LineNr"> 416 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> replace_type_ingredients<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span>j<span class="Delimiter">),</span> mappings<span class="Delimiter">,</span> new_recipe<span class="Delimiter">);</span>
-<span id="L417" class="LineNr"> 417 </span>  <span class="Conceal">¦</span> <span class="Comment">// special-case for new: replace type ingredient in first ingredient *value*</span>
-<span id="L418" class="LineNr"> 418 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>inst<span class="Delimiter">.</span>name == <span class="Constant">&quot;new&quot;</span> &amp;&amp; inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>type<span class="Delimiter">-&gt;</span>name != <span class="Constant">&quot;literal-string&quot;</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L419" class="LineNr"> 419 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> type_tree* type = <a href='056shape_shifting_recipe.cc.html#L484'>parse_type_tree</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>name<span class="Delimiter">);</span>
-<span id="L420" class="LineNr"> 420 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> replace_type_ingredients<span class="Delimiter">(</span>type<span class="Delimiter">,</span> mappings<span class="Delimiter">);</span>
-<span id="L421" class="LineNr"> 421 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>name = inspect<span class="Delimiter">(</span>type<span class="Delimiter">);</span>
-<span id="L422" class="LineNr"> 422 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">delete</span> type<span class="Delimiter">;</span>
-<span id="L423" class="LineNr"> 423 </span>  <span class="Conceal">¦</span> <span class="Delimiter">}</span>
-<span id="L424" class="LineNr"> 424 </span>  <span class="Delimiter">}</span>
-<span id="L425" class="LineNr"> 425 </span><span class="Delimiter">}</span>
-<span id="L426" class="LineNr"> 426 </span>
-<span id="L427" class="LineNr"> 427 </span><span class="Normal">void</span> replace_type_ingredients<span class="Delimiter">(</span>reagent&amp; x<span class="Delimiter">,</span> <span class="Normal">const</span> map&lt;string<span class="Delimiter">,</span> <span class="Normal">const</span> type_tree*&gt;&amp; mappings<span class="Delimiter">,</span> <span class="Normal">const</span> recipe&amp; caller<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L428" class="LineNr"> 428 </span>  string before = <a href='028call_return.cc.html#L163'>to_string</a><span class="Delimiter">(</span>x<span class="Delimiter">);</span>
-<span id="L429" class="LineNr"> 429 </span>  <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">9993</span><span class="Delimiter">,</span> <span class="Constant">&quot;transform&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;replacing in ingredient &quot;</span> &lt;&lt; x<span class="Delimiter">.</span>original_string &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
-<span id="L430" class="LineNr"> 430 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!x<span class="Delimiter">.</span>type<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L431" class="LineNr"> 431 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <span class="Constant">&quot;specializing &quot;</span> &lt;&lt; caller<span class="Delimiter">.</span>original_name &lt;&lt; <span class="Constant">&quot;: missing type for '&quot;</span> &lt;&lt; x<span class="Delimiter">.</span>original_string &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
-<span id="L432" class="LineNr"> 432 </span>  <span class="Conceal">¦</span> <span class="Identifier">return</span><span class="Delimiter">;</span>
-<span id="L433" class="LineNr"> 433 </span>  <span class="Delimiter">}</span>
-<span id="L434" class="LineNr"> 434 </span>  replace_type_ingredients<span class="Delimiter">(</span>x<span class="Delimiter">.</span>type<span class="Delimiter">,</span> mappings<span class="Delimiter">);</span>
-<span id="L435" class="LineNr"> 435 </span><span class="Delimiter">}</span>
-<span id="L436" class="LineNr"> 436 </span>
-<span id="L437" class="LineNr"> 437 </span><span class="Normal">void</span> replace_type_ingredients<span class="Delimiter">(</span>type_tree* type<span class="Delimiter">,</span> <span class="Normal">const</span> map&lt;string<span class="Delimiter">,</span> <span class="Normal">const</span> type_tree*&gt;&amp; mappings<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L438" class="LineNr"> 438 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!type<span class="Delimiter">)</span> <span class="Identifier">return</span><span class="Delimiter">;</span>
-<span id="L439" class="LineNr"> 439 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!type<span class="Delimiter">-&gt;</span>atom<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L440" class="LineNr"> 440 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>type<span class="Delimiter">-&gt;</span>right == <span class="Constant">NULL</span> &amp;&amp; type<span class="Delimiter">-&gt;</span>left != <span class="Constant">NULL</span> &amp;&amp; type<span class="Delimiter">-&gt;</span>left<span class="Delimiter">-&gt;</span>atom &amp;&amp; contains_key<span class="Delimiter">(</span>mappings<span class="Delimiter">,</span> type<span class="Delimiter">-&gt;</span>left<span class="Delimiter">-&gt;</span>name<span class="Delimiter">)</span> &amp;&amp; !get<span class="Delimiter">(</span>mappings<span class="Delimiter">,</span> type<span class="Delimiter">-&gt;</span>left<span class="Delimiter">-&gt;</span>name<span class="Delimiter">)-&gt;</span>atom &amp;&amp; get<span class="Delimiter">(</span>mappings<span class="Delimiter">,</span> type<span class="Delimiter">-&gt;</span>left<span class="Delimiter">-&gt;</span>name<span class="Delimiter">)-&gt;</span>right != <span class="Constant">NULL</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L441" class="LineNr"> 441 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> *type = *get<span class="Delimiter">(</span>mappings<span class="Delimiter">,</span> type<span class="Delimiter">-&gt;</span>left<span class="Delimiter">-&gt;</span>name<span class="Delimiter">);</span>
-<span id="L442" class="LineNr"> 442 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Identifier">return</span><span class="Delimiter">;</span>
-<span id="L443" class="LineNr"> 443 </span>  <span class="Conceal">¦</span> <span class="Delimiter">}</span>
-<span id="L444" class="LineNr"> 444 </span>  <span class="Conceal">¦</span> replace_type_ingredients<span class="Delimiter">(</span>type<span class="Delimiter">-&gt;</span>left<span class="Delimiter">,</span> mappings<span class="Delimiter">);</span>
-<span id="L445" class="LineNr"> 445 </span>  <span class="Conceal">¦</span> replace_type_ingredients<span class="Delimiter">(</span>type<span class="Delimiter">-&gt;</span>right<span class="Delimiter">,</span> mappings<span class="Delimiter">);</span>
-<span id="L446" class="LineNr"> 446 </span>  <span class="Conceal">¦</span> <span class="Identifier">return</span><span class="Delimiter">;</span>
-<span id="L447" class="LineNr"> 447 </span>  <span class="Delimiter">}</span>
-<span id="L448" class="LineNr"> 448 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>contains_key<span class="Delimiter">(</span>Type_ordinal<span class="Delimiter">,</span> type<span class="Delimiter">-&gt;</span>name<span class="Delimiter">))</span>  <span class="Comment">// todo: ugly side effect</span>
-<span id="L449" class="LineNr"> 449 </span>  <span class="Conceal">¦</span> type<span class="Delimiter">-&gt;</span>value = get<span class="Delimiter">(</span>Type_ordinal<span class="Delimiter">,</span> type<span class="Delimiter">-&gt;</span>name<span class="Delimiter">);</span>
-<span id="L450" class="LineNr"> 450 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!contains_key<span class="Delimiter">(</span>mappings<span class="Delimiter">,</span> type<span class="Delimiter">-&gt;</span>name<span class="Delimiter">))</span>
-<span id="L451" class="LineNr"> 451 </span>  <span class="Conceal">¦</span> <span class="Identifier">return</span><span class="Delimiter">;</span>
-<span id="L452" class="LineNr"> 452 </span>  <span class="Normal">const</span> type_tree* replacement = get<span class="Delimiter">(</span>mappings<span class="Delimiter">,</span> type<span class="Delimiter">-&gt;</span>name<span class="Delimiter">);</span>
-<span id="L453" class="LineNr"> 453 </span>  <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">9993</span><span class="Delimiter">,</span> <span class="Constant">&quot;transform&quot;</span><span class="Delimiter">)</span> &lt;&lt; type<span class="Delimiter">-&gt;</span>name &lt;&lt; <span class="Constant">&quot; =&gt; &quot;</span> &lt;&lt; names_to_string<span class="Delimiter">(</span>replacement<span class="Delimiter">)</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
-<span id="L454" class="LineNr"> 454 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>replacement<span class="Delimiter">-&gt;</span>atom<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L455" class="LineNr"> 455 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>!contains_key<span class="Delimiter">(</span>Type_ordinal<span class="Delimiter">,</span> replacement<span class="Delimiter">-&gt;</span>name<span class="Delimiter">))</span> <span class="Delimiter">{</span>
-<span id="L456" class="LineNr"> 456 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Comment">// error in program; should be reported elsewhere</span>
-<span id="L457" class="LineNr"> 457 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Identifier">return</span><span class="Delimiter">;</span>
-<span id="L458" class="LineNr"> 458 </span>  <span class="Conceal">¦</span> <span class="Delimiter">}</span>
-<span id="L459" class="LineNr"> 459 </span>  <span class="Conceal">¦</span> type<span class="Delimiter">-&gt;</span>name = <span class="Delimiter">(</span>replacement<span class="Delimiter">-&gt;</span>name == <span class="Constant">&quot;literal&quot;</span><span class="Delimiter">)</span> ? <span class="Constant">&quot;number&quot;</span> : replacement<span class="Delimiter">-&gt;</span>name<span class="Delimiter">;</span>
-<span id="L460" class="LineNr"> 460 </span>  <span class="Conceal">¦</span> type<span class="Delimiter">-&gt;</span>value = get<span class="Delimiter">(</span>Type_ordinal<span class="Delimiter">,</span> type<span class="Delimiter">-&gt;</span>name<span class="Delimiter">);</span>
-<span id="L461" class="LineNr"> 461 </span>  <span class="Delimiter">}</span>
-<span id="L462" class="LineNr"> 462 </span>  <span class="Normal">else</span> <span class="Delimiter">{</span>
-<span id="L463" class="LineNr"> 463 </span>  <span class="Conceal">¦</span> *type = *replacement<span class="Delimiter">;</span>
-<span id="L464" class="LineNr"> 464 </span>  <span class="Delimiter">}</span>
-<span id="L465" class="LineNr"> 465 </span><span class="Delimiter">}</span>
-<span id="L466" class="LineNr"> 466 </span>
-<span id="L467" class="LineNr"> 467 </span><span class="Normal">int</span> <a href='056shape_shifting_recipe.cc.html#L467'>type_ingredient_count_in_header</a><span class="Delimiter">(</span><a href='010vm.cc.html#L14'>recipe_ordinal</a> variant<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L468" class="LineNr"> 468 </span>  <span class="Normal">const</span> recipe&amp; caller = get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> variant<span class="Delimiter">);</span>
-<span id="L469" class="LineNr"> 469 </span>  set&lt;string&gt; type_ingredients<span class="Delimiter">;</span>
-<span id="L470" class="LineNr"> 470 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> i = <span class="Constant">0</span><span class="Delimiter">;</span>  i &lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>caller<span class="Delimiter">.</span>ingredients<span class="Delimiter">);</span>  ++i<span class="Delimiter">)</span>
-<span id="L471" class="LineNr"> 471 </span>  <span class="Conceal">¦</span> accumulate_type_ingredients<span class="Delimiter">(</span>caller<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">).</span>type<span class="Delimiter">,</span> type_ingredients<span class="Delimiter">);</span>
-<span id="L472" class="LineNr"> 472 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> i = <span class="Constant">0</span><span class="Delimiter">;</span>  i &lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>caller<span class="Delimiter">.</span>products<span class="Delimiter">);</span>  ++i<span class="Delimiter">)</span>
-<span id="L473" class="LineNr"> 473 </span>  <span class="Conceal">¦</span> accumulate_type_ingredients<span class="Delimiter">(</span>caller<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">).</span>type<span class="Delimiter">,</span> type_ingredients<span class="Delimiter">);</span>
-<span id="L474" class="LineNr"> 474 </span>  <span class="Identifier">return</span> <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>type_ingredients<span class="Delimiter">);</span>
-<span id="L475" class="LineNr"> 475 </span><span class="Delimiter">}</span>
-<span id="L476" class="LineNr"> 476 </span>
-<span id="L477" class="LineNr"> 477 </span><span class="Normal">void</span> accumulate_type_ingredients<span class="Delimiter">(</span><span class="Normal">const</span> type_tree* type<span class="Delimiter">,</span> set&lt;string&gt;&amp; out<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L478" class="LineNr"> 478 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!type<span class="Delimiter">)</span> <span class="Identifier">return</span><span class="Delimiter">;</span>
-<span id="L479" class="LineNr"> 479 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>is_type_ingredient_name<span class="Delimiter">(</span>type<span class="Delimiter">-&gt;</span>name<span class="Delimiter">))</span> out<span class="Delimiter">.</span>insert<span class="Delimiter">(</span>type<span class="Delimiter">-&gt;</span>name<span class="Delimiter">);</span>
-<span id="L480" class="LineNr"> 480 </span>  accumulate_type_ingredients<span class="Delimiter">(</span>type<span class="Delimiter">-&gt;</span>left<span class="Delimiter">,</span> out<span class="Delimiter">);</span>
-<span id="L481" class="LineNr"> 481 </span>  accumulate_type_ingredients<span class="Delimiter">(</span>type<span class="Delimiter">-&gt;</span>right<span class="Delimiter">,</span> out<span class="Delimiter">);</span>
-<span id="L482" class="LineNr"> 482 </span><span class="Delimiter">}</span>
-<span id="L483" class="LineNr"> 483 </span>
-<span id="L484" class="LineNr"> 484 </span>type_tree* <a href='056shape_shifting_recipe.cc.html#L484'>parse_type_tree</a><span class="Delimiter">(</span><span class="Normal">const</span> string&amp; s<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L485" class="LineNr"> 485 </span>  string_tree* s2 = parse_string_tree<span class="Delimiter">(</span>s<span class="Delimiter">);</span>
-<span id="L486" class="LineNr"> 486 </span>  type_tree* result = <a href='018type_abbreviations.cc.html#L58'>new_type_tree</a><span class="Delimiter">(</span>s2<span class="Delimiter">);</span>
-<span id="L487" class="LineNr"> 487 </span>  <span class="Normal">delete</span> s2<span class="Delimiter">;</span>
-<span id="L488" class="LineNr"> 488 </span>  <span class="Identifier">return</span> result<span class="Delimiter">;</span>
-<span id="L489" class="LineNr"> 489 </span><span class="Delimiter">}</span>
-<span id="L490" class="LineNr"> 490 </span>
-<span id="L491" class="LineNr"> 491 </span>string inspect<span class="Delimiter">(</span><span class="Normal">const</span> type_tree* x<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L492" class="LineNr"> 492 </span>  ostringstream out<span class="Delimiter">;</span>
-<span id="L493" class="LineNr"> 493 </span>  <a href='056shape_shifting_recipe.cc.html#L497'>dump_inspect</a><span class="Delimiter">(</span>x<span class="Delimiter">,</span> out<span class="Delimiter">);</span>
-<span id="L494" class="LineNr"> 494 </span>  <span class="Identifier">return</span> out<span class="Delimiter">.</span>str<span class="Delimiter">();</span>
-<span id="L495" class="LineNr"> 495 </span><span class="Delimiter">}</span>
-<span id="L496" class="LineNr"> 496 </span>
-<span id="L497" class="LineNr"> 497 </span><span class="Normal">void</span> <a href='056shape_shifting_recipe.cc.html#L497'>dump_inspect</a><span class="Delimiter">(</span><span class="Normal">const</span> type_tree* x<span class="Delimiter">,</span> ostream&amp; out<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L498" class="LineNr"> 498 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!x<span class="Delimiter">-&gt;</span>left &amp;&amp; !x<span class="Delimiter">-&gt;</span>right<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L499" class="LineNr"> 499 </span>  <span class="Conceal">¦</span> out &lt;&lt; x<span class="Delimiter">-&gt;</span>name<span class="Delimiter">;</span>
-<span id="L500" class="LineNr"> 500 </span>  <span class="Conceal">¦</span> <span class="Identifier">return</span><span class="Delimiter">;</span>
-<span id="L501" class="LineNr"> 501 </span>  <span class="Delimiter">}</span>
-<span id="L502" class="LineNr"> 502 </span>  out &lt;&lt; <span class="Constant">'('</span><span class="Delimiter">;</span>
-<span id="L503" class="LineNr"> 503 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">const</span> type_tree* curr = x<span class="Delimiter">;</span>  curr<span class="Delimiter">;</span>  curr = curr<span class="Delimiter">-&gt;</span>right<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L504" class="LineNr"> 504 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>curr != x<span class="Delimiter">)</span> out &lt;&lt; <span class="Constant">' '</span><span class="Delimiter">;</span>
-<span id="L505" class="LineNr"> 505 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>curr<span class="Delimiter">-&gt;</span>left<span class="Delimiter">)</span>
-<span id="L506" class="LineNr"> 506 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='056shape_shifting_recipe.cc.html#L497'>dump_inspect</a><span class="Delimiter">(</span>curr<span class="Delimiter">-&gt;</span>left<span class="Delimiter">,</span> out<span class="Delimiter">);</span>
-<span id="L507" class="LineNr"> 507 </span>  <span class="Conceal">¦</span> <span class="Normal">else</span>
-<span id="L508" class="LineNr"> 508 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> out &lt;&lt; curr<span class="Delimiter">-&gt;</span>name<span class="Delimiter">;</span>
-<span id="L509" class="LineNr"> 509 </span>  <span class="Delimiter">}</span>
-<span id="L510" class="LineNr"> 510 </span>  out &lt;&lt; <span class="Constant">')'</span><span class="Delimiter">;</span>
-<span id="L511" class="LineNr"> 511 </span><span class="Delimiter">}</span>
-<span id="L512" class="LineNr"> 512 </span>
-<span id="L513" class="LineNr"> 513 </span><span class="Normal">void</span> ensure_all_concrete_types<span class="Delimiter">(</span><span class="Comment">/*</span><span class="Comment">const</span><span class="Comment">*/</span> recipe&amp; new_recipe<span class="Delimiter">,</span> <span class="Normal">const</span> recipe&amp; exemplar<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L514" class="LineNr"> 514 </span>  <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">9993</span><span class="Delimiter">,</span> <span class="Constant">&quot;transform&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;-- ensure all concrete types in <a href='010vm.cc.html#L19'>recipe</a> &quot;</span> &lt;&lt; new_recipe<span class="Delimiter">.</span>name &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
-<span id="L515" class="LineNr"> 515 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> i = <span class="Constant">0</span><span class="Delimiter">;</span>  i &lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>new_recipe<span class="Delimiter">.</span>ingredients<span class="Delimiter">);</span>  ++i<span class="Delimiter">)</span>
-<span id="L516" class="LineNr"> 516 </span>  <span class="Conceal">¦</span> ensure_all_concrete_types<span class="Delimiter">(</span>new_recipe<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">),</span> exemplar<span class="Delimiter">);</span>
-<span id="L517" class="LineNr"> 517 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> i = <span class="Constant">0</span><span class="Delimiter">;</span>  i &lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>new_recipe<span class="Delimiter">.</span>products<span class="Delimiter">);</span>  ++i<span class="Delimiter">)</span>
-<span id="L518" class="LineNr"> 518 </span>  <span class="Conceal">¦</span> ensure_all_concrete_types<span class="Delimiter">(</span>new_recipe<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">),</span> exemplar<span class="Delimiter">);</span>
-<span id="L519" class="LineNr"> 519 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> i = <span class="Constant">0</span><span class="Delimiter">;</span>  i &lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>new_recipe<span class="Delimiter">.</span>steps<span class="Delimiter">);</span>  ++i<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L520" class="LineNr"> 520 </span>  <span class="Conceal">¦</span> instruction&amp; inst = new_recipe<span class="Delimiter">.</span>steps<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">);</span>
-<span id="L521" class="LineNr"> 521 </span>  <span class="Conceal">¦</span> <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> j = <span class="Constant">0</span><span class="Delimiter">;</span>  j &lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">);</span>  ++j<span class="Delimiter">)</span>
-<span id="L522" class="LineNr"> 522 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> ensure_all_concrete_types<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>j<span class="Delimiter">),</span> exemplar<span class="Delimiter">);</span>
-<span id="L523" class="LineNr"> 523 </span>  <span class="Conceal">¦</span> <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> j = <span class="Constant">0</span><span class="Delimiter">;</span>  j &lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>products<span class="Delimiter">);</span>  ++j<span class="Delimiter">)</span>
-<span id="L524" class="LineNr"> 524 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> ensure_all_concrete_types<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span>j<span class="Delimiter">),</span> exemplar<span class="Delimiter">);</span>
-<span id="L525" class="LineNr"> 525 </span>  <span class="Delimiter">}</span>
-<span id="L526" class="LineNr"> 526 </span><span class="Delimiter">}</span>
-<span id="L527" class="LineNr"> 527 </span>
-<span id="L528" class="LineNr"> 528 </span><span class="Normal">void</span> ensure_all_concrete_types<span class="Delimiter">(</span><span class="Comment">/*</span><span class="Comment">const</span><span class="Comment">*/</span> reagent&amp; x<span class="Delimiter">,</span> <span class="Normal">const</span> recipe&amp; exemplar<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L529" class="LineNr"> 529 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!x<span class="Delimiter">.</span>type || contains_type_ingredient_name<span class="Delimiter">(</span>x<span class="Delimiter">.</span>type<span class="Delimiter">))</span> <span class="Delimiter">{</span>
-<span id="L530" class="LineNr"> 530 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>exemplar<span class="Delimiter">.</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;failed to map a type to &quot;</span> &lt;&lt; x<span class="Delimiter">.</span>original_string &lt;&lt; <span class="cSpecial">'\n'</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
-<span id="L531" class="LineNr"> 531 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>!x<span class="Delimiter">.</span>type<span class="Delimiter">)</span> x<span class="Delimiter">.</span>type = <span class="Normal">new</span> type_tree<span class="Delimiter">(</span><span class="Constant">&quot;&quot;</span><span class="Delimiter">,</span> <span class="Constant">0</span><span class="Delimiter">);</span>  <span class="Comment">// just to prevent crashes later</span>
-<span id="L532" class="LineNr"> 532 </span>  <span class="Conceal">¦</span> <span class="Identifier">return</span><span class="Delimiter">;</span>
-<span id="L533" class="LineNr"> 533 </span>  <span class="Delimiter">}</span>
-<span id="L534" class="LineNr"> 534 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>x<span class="Delimiter">.</span>type<span class="Delimiter">-&gt;</span>value == -<span class="Constant">1</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L535" class="LineNr"> 535 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>exemplar<span class="Delimiter">.</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;failed to map a type to the unknown &quot;</span> &lt;&lt; x<span class="Delimiter">.</span>original_string &lt;&lt; <span class="cSpecial">'\n'</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
-<span id="L536" class="LineNr"> 536 </span>  <span class="Conceal">¦</span> <span class="Identifier">return</span><span class="Delimiter">;</span>
-<span id="L537" class="LineNr"> 537 </span>  <span class="Delimiter">}</span>
-<span id="L538" class="LineNr"> 538 </span><span class="Delimiter">}</span>
-<span id="L539" class="LineNr"> 539 </span>
-<span id="L540" class="LineNr"> 540 </span><span class="Delimiter">:(scenario shape_shifting_recipe_2)</span>
-<span id="L541" class="LineNr"> 541 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
-<span id="L542" class="LineNr"> 542 </span>  <span class="Constant">10</span>:point<span class="Special"> &lt;- </span>merge <span class="Constant">14</span><span class="Delimiter">,</span> <span class="Constant">15</span>
-<span id="L543" class="LineNr"> 543 </span>  <span class="Constant">11</span>:point<span class="Special"> &lt;- </span>foo <span class="Constant">10</span>:point
-<span id="L544" class="LineNr"> 544 </span>]
-<span id="L545" class="LineNr"> 545 </span><span class="Comment"># non-matching shape-shifting variant</span>
-<span id="L546" class="LineNr"> 546 </span><span class="muRecipe">def</span> foo a:_t<span class="Delimiter">,</span> b:_t<span class="muRecipe"> -&gt; </span>result:num [
-<span id="L547" class="LineNr"> 547 </span>  local-scope
-<span id="L548" class="LineNr"> 548 </span>  load-ingredients
-<span id="L549" class="LineNr"> 549 </span>  result<span class="Special"> &lt;- </span>copy <span class="Constant">34</span>
-<span id="L550" class="LineNr"> 550 </span>]
-<span id="L551" class="LineNr"> 551 </span><span class="Comment"># matching shape-shifting variant</span>
-<span id="L552" class="LineNr"> 552 </span><span class="muRecipe">def</span> foo a:_t<span class="muRecipe"> -&gt; </span>result:_t [
-<span id="L553" class="LineNr"> 553 </span>  local-scope
-<span id="L554" class="LineNr"> 554 </span>  load-ingredients
-<span id="L555" class="LineNr"> 555 </span>  result<span class="Special"> &lt;- </span>copy a
-<span id="L556" class="LineNr"> 556 </span>]
-<span id="L557" class="LineNr"> 557 </span><span class="traceContains">+mem: storing 14 in location 11</span>
-<span id="L558" class="LineNr"> 558 </span><span class="traceContains">+mem: storing 15 in location 12</span>
-<span id="L559" class="LineNr"> 559 </span>
-<span id="L560" class="LineNr"> 560 </span><span class="Delimiter">:(scenario shape_shifting_recipe_nonroot)</span>
-<span id="L561" class="LineNr"> 561 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
-<span id="L562" class="LineNr"> 562 </span>  <span class="Constant">10</span>:foo:point<span class="Special"> &lt;- </span>merge <span class="Constant">14</span><span class="Delimiter">,</span> <span class="Constant">15</span><span class="Delimiter">,</span> <span class="Constant">16</span>
-<span id="L563" class="LineNr"> 563 </span>  <span class="Constant">20</span>:point/<span class="Special">raw &lt;- </span>bar <span class="Constant">10</span>:foo:point
-<span id="L564" class="LineNr"> 564 </span>]
-<span id="L565" class="LineNr"> 565 </span><span class="Comment"># shape-shifting recipe with type ingredient following some other type</span>
-<span id="L566" class="LineNr"> 566 </span><span class="muRecipe">def</span> bar a:foo:_t<span class="muRecipe"> -&gt; </span>result:_t [
-<span id="L567" class="LineNr"> 567 </span>  local-scope
-<span id="L568" class="LineNr"> 568 </span>  load-ingredients
-<span id="L569" class="LineNr"> 569 </span>  result<span class="Special"> &lt;- </span>get a<span class="Delimiter">,</span> <span class="Constant">x:offset</span>
-<span id="L570" class="LineNr"> 570 </span>]
-<span id="L571" class="LineNr"> 571 </span><span class="muData">container</span> foo:_t [
-<span id="L572" class="LineNr"> 572 </span>  <span class="Normal">x</span>:_t
-<span id="L573" class="LineNr"> 573 </span>  <span class="Normal">y</span>:num
-<span id="L574" class="LineNr"> 574 </span>]
-<span id="L575" class="LineNr"> 575 </span><span class="traceContains">+mem: storing 14 in location 20</span>
-<span id="L576" class="LineNr"> 576 </span><span class="traceContains">+mem: storing 15 in location 21</span>
-<span id="L577" class="LineNr"> 577 </span>
-<span id="L578" class="LineNr"> 578 </span><span class="Delimiter">:(scenario shape_shifting_recipe_nested)</span>
-<span id="L579" class="LineNr"> 579 </span><span class="muData">container</span> c:_a:_b [
-<span id="L580" class="LineNr"> 580 </span>  <span class="Normal">a</span>:_a
-<span id="L581" class="LineNr"> 581 </span>  <span class="Normal">b</span>:_b
-<span id="L582" class="LineNr"> 582 </span>]
-<span id="L583" class="LineNr"> 583 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
-<span id="L584" class="LineNr"> 584 </span>  <span class="Normal">s</span>:text<span class="Special"> &lt;- </span><span class="Normal">new</span> [abc]
-<span id="L585" class="LineNr"> 585 </span>  <span class="Delimiter">{</span>x: <span class="Delimiter">(</span>c <span class="Delimiter">(</span><a href='043space.cc.html#L82'>address</a> array character<span class="Delimiter">)</span> number<span class="Delimiter">)}</span><span class="Special"> &lt;- </span>merge s<span class="Delimiter">,</span> <span class="Constant">34</span>
-<span id="L586" class="LineNr"> 586 </span>  foo x
-<span id="L587" class="LineNr"> 587 </span>]
-<span id="L588" class="LineNr"> 588 </span><span class="muRecipe">def</span> foo x:c:_bar:_baz [
-<span id="L589" class="LineNr"> 589 </span>  local-scope
-<span id="L590" class="LineNr"> 590 </span>  load-ingredients
-<span id="L591" class="LineNr"> 591 </span>]
-<span id="L592" class="LineNr"> 592 </span><span class="Comment"># no errors</span>
-<span id="L593" class="LineNr"> 593 </span>
-<span id="L594" class="LineNr"> 594 </span><span class="Delimiter">:(scenario shape_shifting_recipe_type_deduction_ignores_offsets)</span>
-<span id="L595" class="LineNr"> 595 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
-<span id="L596" class="LineNr"> 596 </span>  <span class="Constant">10</span>:foo:point<span class="Special"> &lt;- </span>merge <span class="Constant">14</span><span class="Delimiter">,</span> <span class="Constant">15</span><span class="Delimiter">,</span> <span class="Constant">16</span>
-<span id="L597" class="LineNr"> 597 </span>  <span class="Constant">20</span>:point/<span class="Special">raw &lt;- </span>bar <span class="Constant">10</span>:foo:point
-<span id="L598" class="LineNr"> 598 </span>]
-<span id="L599" class="LineNr"> 599 </span><span class="muRecipe">def</span> bar a:foo:_t<span class="muRecipe"> -&gt; </span>result:_t [
-<span id="L600" class="LineNr"> 600 </span>  local-scope
-<span id="L601" class="LineNr"> 601 </span>  load-ingredients
-<span id="L602" class="LineNr"> 602 </span>  <span class="Normal">x</span>:num<span class="Special"> &lt;- </span>copy <span class="Constant">1</span>
-<span id="L603" class="LineNr"> 603 </span>  result<span class="Special"> &lt;- </span>get a<span class="Delimiter">,</span> <span class="Constant">x:offset</span>  <span class="Comment"># shouldn't collide with other variable</span>
-<span id="L604" class="LineNr"> 604 </span>]
-<span id="L605" class="LineNr"> 605 </span><span class="muData">container</span> foo:_t [
-<span id="L606" class="LineNr"> 606 </span>  <span class="Normal">x</span>:_t
-<span id="L607" class="LineNr"> 607 </span>  <span class="Normal">y</span>:num
-<span id="L608" class="LineNr"> 608 </span>]
-<span id="L609" class="LineNr"> 609 </span><span class="traceContains">+mem: storing 14 in location 20</span>
-<span id="L610" class="LineNr"> 610 </span><span class="traceContains">+mem: storing 15 in location 21</span>
-<span id="L611" class="LineNr"> 611 </span>
-<span id="L612" class="LineNr"> 612 </span><span class="Delimiter">:(scenario shape_shifting_recipe_empty)</span>
-<span id="L613" class="LineNr"> 613 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
-<span id="L614" class="LineNr"> 614 </span>  foo <span class="Constant">1</span>
-<span id="L615" class="LineNr"> 615 </span>]
-<span id="L616" class="LineNr"> 616 </span><span class="Comment"># shape-shifting recipe with no body</span>
-<span id="L617" class="LineNr"> 617 </span><span class="muRecipe">def</span> foo a:_t [
-<span id="L618" class="LineNr"> 618 </span>]
-<span id="L619" class="LineNr"> 619 </span><span class="Comment"># shouldn't crash</span>
-<span id="L620" class="LineNr"> 620 </span>
-<span id="L621" class="LineNr"> 621 </span><span class="Delimiter">:(scenario shape_shifting_recipe_handles_shape_shifting_new_ingredient)</span>
-<span id="L622" class="LineNr"> 622 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
-<span id="L623" class="LineNr"> 623 </span>  <span class="Constant">1</span>:&amp;:foo:point<span class="Special"> &lt;- </span>bar <span class="Constant">3</span>
-<span id="L624" class="LineNr"> 624 </span>  <span class="Constant">11</span>:foo:point<span class="Special"> &lt;- </span>copy *<span class="Constant">1</span>:&amp;:foo:point
-<span id="L625" class="LineNr"> 625 </span>]
-<span id="L626" class="LineNr"> 626 </span><span class="muData">container</span> foo:_t [
-<span id="L627" class="LineNr"> 627 </span>  <span class="Normal">x</span>:_t
-<span id="L628" class="LineNr"> 628 </span>  <span class="Normal">y</span>:num
-<span id="L629" class="LineNr"> 629 </span>]
-<span id="L630" class="LineNr"> 630 </span><span class="muRecipe">def</span> bar x:num<span class="muRecipe"> -&gt; </span>result:&amp;:foo:_t [
-<span id="L631" class="LineNr"> 631 </span>  local-scope
-<span id="L632" class="LineNr"> 632 </span>  load-ingredients
-<span id="L633" class="LineNr"> 633 </span>  <span class="Comment"># new refers to _t in its ingredient *value*</span>
-<span id="L634" class="LineNr"> 634 </span>  result<span class="Special"> &lt;- </span><span class="Normal">new</span> <span class="Delimiter">{(</span>foo _t<span class="Delimiter">)</span> : type<span class="Delimiter">}</span>
-<span id="L635" class="LineNr"> 635 </span>]
-<span id="L636" class="LineNr"> 636 </span><span class="traceContains">+mem: storing 0 in location 11</span>
-<span id="L637" class="LineNr"> 637 </span><span class="traceContains">+mem: storing 0 in location 12</span>
-<span id="L638" class="LineNr"> 638 </span><span class="traceContains">+mem: storing 0 in location 13</span>
-<span id="L639" class="LineNr"> 639 </span>
-<span id="L640" class="LineNr"> 640 </span><span class="Delimiter">:(scenario shape_shifting_recipe_handles_shape_shifting_new_ingredient_2)</span>
-<span id="L641" class="LineNr"> 641 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
-<span id="L642" class="LineNr"> 642 </span>  <span class="Constant">1</span>:&amp;:foo:point<span class="Special"> &lt;- </span>bar <span class="Constant">3</span>
-<span id="L643" class="LineNr"> 643 </span>  <span class="Constant">11</span>:foo:point<span class="Special"> &lt;- </span>copy *<span class="Constant">1</span>:&amp;:foo:point
-<span id="L644" class="LineNr"> 644 </span>]
-<span id="L645" class="LineNr"> 645 </span><span class="muRecipe">def</span> bar x:num<span class="muRecipe"> -&gt; </span>result:&amp;:foo:_t [
-<span id="L646" class="LineNr"> 646 </span>  local-scope
-<span id="L647" class="LineNr"> 647 </span>  load-ingredients
-<span id="L648" class="LineNr"> 648 </span>  <span class="Comment"># new refers to _t in its ingredient *value*</span>
-<span id="L649" class="LineNr"> 649 </span>  result<span class="Special"> &lt;- </span><span class="Normal">new</span> <span class="Delimiter">{(</span>foo _t<span class="Delimiter">)</span> : type<span class="Delimiter">}</span>
-<span id="L650" class="LineNr"> 650 </span>]
-<span id="L651" class="LineNr"> 651 </span><span class="Comment"># container defined after use</span>
-<span id="L652" class="LineNr"> 652 </span><span class="muData">container</span> foo:_t [
-<span id="L653" class="LineNr"> 653 </span>  <span class="Normal">x</span>:_t
-<span id="L654" class="LineNr"> 654 </span>  <span class="Normal">y</span>:num
-<span id="L655" class="LineNr"> 655 </span>]
-<span id="L656" class="LineNr"> 656 </span><span class="traceContains">+mem: storing 0 in location 11</span>
-<span id="L657" class="LineNr"> 657 </span><span class="traceContains">+mem: storing 0 in location 12</span>
-<span id="L658" class="LineNr"> 658 </span><span class="traceContains">+mem: storing 0 in location 13</span>
-<span id="L659" class="LineNr"> 659 </span>
-<span id="L660" class="LineNr"> 660 </span><span class="Delimiter">:(scenario shape_shifting_recipe_called_with_dummy)</span>
-<span id="L661" class="LineNr"> 661 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
-<span id="L662" class="LineNr"> 662 </span>  _<span class="Special"> &lt;- </span>bar <span class="Constant">34</span>
-<span id="L663" class="LineNr"> 663 </span>]
-<span id="L664" class="LineNr"> 664 </span><span class="muRecipe">def</span> bar x:_t<span class="muRecipe"> -&gt; </span>result:&amp;:_t [
-<span id="L665" class="LineNr"> 665 </span>  local-scope
-<span id="L666" class="LineNr"> 666 </span>  load-ingredients
-<span id="L667" class="LineNr"> 667 </span>  result<span class="Special"> &lt;- </span>copy <span class="Constant">0</span>
-<span id="L668" class="LineNr"> 668 </span>]
-<span id="L669" class="LineNr"> 669 </span>$error: <span class="Constant">0</span>
-<span id="L670" class="LineNr"> 670 </span>
-<span id="L671" class="LineNr"> 671 </span><span class="Delimiter">:(code)</span>
-<span id="L672" class="LineNr"> 672 </span><span class="Comment">// this one needs a little more fine-grained control</span>
-<span id="L673" class="LineNr"> 673 </span><span class="Normal">void</span> <a href='056shape_shifting_recipe.cc.html#L673'>test_shape_shifting_new_ingredient_does_not_pollute_global_namespace</a><span class="Delimiter">()</span> <span class="Delimiter">{</span>
-<span id="L674" class="LineNr"> 674 </span>  <span class="Comment">// if you specialize a shape-shifting recipe that allocates a type-ingredient..</span>
-<span id="L675" class="LineNr"> 675 </span>  <a href='012transform.cc.html#L99'>transform</a><span class="Delimiter">(</span><span class="Constant">&quot;def barz x:_elem [</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span>
-<span id="L676" class="LineNr"> 676 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Constant">&quot;  local-scope</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span>
-<span id="L677" class="LineNr"> 677 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Constant">&quot;  load-ingredients</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span>
-<span id="L678" class="LineNr"> 678 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Constant">&quot;  y:&amp;:num &lt;- new _elem:type</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span>
-<span id="L679" class="LineNr"> 679 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Constant">&quot;]</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span>
-<span id="L680" class="LineNr"> 680 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Constant">&quot;def fooz [</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span>
-<span id="L681" class="LineNr"> 681 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Constant">&quot;  local-scope</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span>
-<span id="L682" class="LineNr"> 682 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Constant">&quot;  barz 34</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span>
-<span id="L683" class="LineNr"> 683 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Constant">&quot;]</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span><span class="Delimiter">);</span>
-<span id="L684" class="LineNr"> 684 </span>  <span class="Comment">// ..and if you then try to load a new shape-shifting container with that</span>
-<span id="L685" class="LineNr"> 685 </span>  <span class="Comment">// type-ingredient</span>
-<span id="L686" class="LineNr"> 686 </span>  run<span class="Delimiter">(</span><span class="Constant">&quot;container foo:_elem [</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span>
-<span id="L687" class="LineNr"> 687 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Constant">&quot;  x:_elem</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span>
-<span id="L688" class="LineNr"> 688 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Constant">&quot;  y:num</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span>
-<span id="L689" class="LineNr"> 689 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Constant">&quot;]</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span><span class="Delimiter">);</span>
-<span id="L690" class="LineNr"> 690 </span>  <span class="Comment">// then it should work as usual</span>
-<span id="L691" class="LineNr"> 691 </span>  reagent callsite<span class="Delimiter">(</span><span class="Constant">&quot;x:foo:point&quot;</span><span class="Delimiter">);</span>
-<span id="L692" class="LineNr"> 692 </span>  reagent element = <a href='030container.cc.html#L429'>element_type</a><span class="Delimiter">(</span>callsite<span class="Delimiter">.</span>type<span class="Delimiter">,</span> <span class="Constant">0</span><span class="Delimiter">);</span>
-<span id="L693" class="LineNr"> 693 </span>  <a href='002test.cc.html#L31'>CHECK_EQ</a><span class="Delimiter">(</span>element<span class="Delimiter">.</span>name<span class="Delimiter">,</span> <span class="Constant">&quot;x&quot;</span><span class="Delimiter">);</span>
-<span id="L694" class="LineNr"> 694 </span>  <a href='002test.cc.html#L31'>CHECK_EQ</a><span class="Delimiter">(</span>element<span class="Delimiter">.</span>type<span class="Delimiter">-&gt;</span>name<span class="Delimiter">,</span> <span class="Constant">&quot;point&quot;</span><span class="Delimiter">);</span>
-<span id="L695" class="LineNr"> 695 </span>  <a href='002test.cc.html#L24'>CHECK</a><span class="Delimiter">(</span>!element<span class="Delimiter">.</span>type<span class="Delimiter">-&gt;</span>right<span class="Delimiter">);</span>
-<span id="L696" class="LineNr"> 696 </span><span class="Delimiter">}</span>
-<span id="L697" class="LineNr"> 697 </span>
-<span id="L698" class="LineNr"> 698 </span><span class="Comment">//: specializing a type ingredient with a compound type</span>
-<span id="L699" class="LineNr"> 699 </span><span class="Delimiter">:(scenario shape_shifting_recipe_supports_compound_types)</span>
-<span id="L700" class="LineNr"> 700 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
-<span id="L701" class="LineNr"> 701 </span>  <span class="Constant">1</span>:&amp;:point<span class="Special"> &lt;- </span><span class="Normal">new</span> <span class="Constant">point:type</span>
-<span id="L702" class="LineNr"> 702 </span>  *<span class="Constant">1</span>:&amp;:point<span class="Special"> &lt;- </span><a href='001help.cc.html#L221'>put</a> *<span class="Constant">1</span>:&amp;:point<span class="Delimiter">,</span> <span class="Constant">y:offset</span><span class="Delimiter">,</span> <span class="Constant">34</span>
-<span id="L703" class="LineNr"> 703 </span>  <span class="Constant">3</span>:&amp;:point<span class="Special"> &lt;- </span>bar <span class="Constant">1</span>:&amp;:point  <span class="Comment"># specialize _t to address:point</span>
-<span id="L704" class="LineNr"> 704 </span>  <span class="Constant">4</span>:point<span class="Special"> &lt;- </span>copy *<span class="Constant">3</span>:&amp;:point
-<span id="L705" class="LineNr"> 705 </span>]
-<span id="L706" class="LineNr"> 706 </span><span class="muRecipe">def</span> bar a:_t<span class="muRecipe"> -&gt; </span>result:_t [
-<span id="L707" class="LineNr"> 707 </span>  local-scope
-<span id="L708" class="LineNr"> 708 </span>  load-ingredients
-<span id="L709" class="LineNr"> 709 </span>  result<span class="Special"> &lt;- </span>copy a
-<span id="L710" class="LineNr"> 710 </span>]
-<span id="L711" class="LineNr"> 711 </span><span class="traceContains">+mem: storing 34 in location 5</span>
-<span id="L712" class="LineNr"> 712 </span>
-<span id="L713" class="LineNr"> 713 </span><span class="Comment">//: specializing a type ingredient with a compound type -- while *inside* another compound type</span>
-<span id="L714" class="LineNr"> 714 </span><span class="Delimiter">:(scenario shape_shifting_recipe_supports_compound_types_2)</span>
-<span id="L715" class="LineNr"> 715 </span><span class="muData">container</span> foo:_t [
-<span id="L716" class="LineNr"> 716 </span>  <span class="Normal">value</span>:_t
-<span id="L717" class="LineNr"> 717 </span>]
-<span id="L718" class="LineNr"> 718 </span><span class="muRecipe">def</span> bar x:&amp;:foo:_t<span class="muRecipe"> -&gt; </span>result:_t [
-<span id="L719" class="LineNr"> 719 </span>  local-scope
-<span id="L720" class="LineNr"> 720 </span>  load-ingredients
-<span id="L721" class="LineNr"> 721 </span>  result<span class="Special"> &lt;- </span>get *x<span class="Delimiter">,</span> <span class="Constant">value:offset</span>
-<span id="L722" class="LineNr"> 722 </span>]
-<span id="L723" class="LineNr"> 723 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
-<span id="L724" class="LineNr"> 724 </span>  <span class="Constant">1</span>:&amp;:foo:&amp;:point<span class="Special"> &lt;- </span><span class="Normal">new</span> <span class="Delimiter">{(</span>foo <a href='043space.cc.html#L82'>address</a> point<span class="Delimiter">)</span>: type<span class="Delimiter">}</span>
-<span id="L725" class="LineNr"> 725 </span>  <span class="Constant">2</span>:&amp;:point<span class="Special"> &lt;- </span>bar <span class="Constant">1</span>:&amp;:foo:&amp;:point
-<span id="L726" class="LineNr"> 726 </span>]
-<span id="L727" class="LineNr"> 727 </span><span class="Comment"># no errors; call to 'bar' successfully specialized</span>
-<span id="L728" class="LineNr"> 728 </span>
-<span id="L729" class="LineNr"> 729 </span><span class="Delimiter">:(scenario shape_shifting_recipe_error)</span>
-<span id="L730" class="LineNr"> 730 </span><span class="Special">% Hide_errors = true;</span>
-<span id="L731" class="LineNr"> 731 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
-<span id="L732" class="LineNr"> 732 </span>  <span class="Normal">a</span>:num<span class="Special"> &lt;- </span>copy <span class="Constant">3</span>
-<span id="L733" class="LineNr"> 733 </span>  <span class="Normal">b</span>:&amp;:num<span class="Special"> &lt;- </span>foo a
-<span id="L734" class="LineNr"> 734 </span>]
-<span id="L735" class="LineNr"> 735 </span><span class="muRecipe">def</span> foo a:_t<span class="muRecipe"> -&gt; </span>b:_t [
-<span id="L736" class="LineNr"> 736 </span>  load-ingredients
-<span id="L737" class="LineNr"> 737 </span>  b<span class="Special"> &lt;- </span>copy a
-<span id="L738" class="LineNr"> 738 </span>]
-<span id="L739" class="LineNr"> 739 </span><span class="traceContains">+error: <a href='000organization.cc.html#L113'>main</a>: no call found for 'b:&amp;:num &lt;- foo a'</span>
-<span id="L740" class="LineNr"> 740 </span>
-<span id="L741" class="LineNr"> 741 </span><span class="Delimiter">:(scenario specialize_inside_recipe_without_header)</span>
-<span id="L742" class="LineNr"> 742 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
-<span id="L743" class="LineNr"> 743 </span>  foo <span class="Constant">3</span>
-<span id="L744" class="LineNr"> 744 </span>]
-<span id="L745" class="LineNr"> 745 </span><span class="muRecipe">def</span> foo [
-<span id="L746" class="LineNr"> 746 </span>  local-scope
-<span id="L747" class="LineNr"> 747 </span>  <span class="Normal">x</span>:num<span class="Special"> &lt;- </span>next-ingredient  <span class="Comment"># ensure no header</span>
-<span id="L748" class="LineNr"> 748 </span>  <span class="Constant">1</span>:num/<span class="Special">raw &lt;- </span>bar x  <span class="Comment"># call a shape-shifting recipe</span>
-<span id="L749" class="LineNr"> 749 </span>]
-<span id="L750" class="LineNr"> 750 </span><span class="muRecipe">def</span> bar x:_elem<span class="muRecipe"> -&gt; </span>y:_elem [
-<span id="L751" class="LineNr"> 751 </span>  local-scope
-<span id="L752" class="LineNr"> 752 </span>  load-ingredients
-<span id="L753" class="LineNr"> 753 </span>  y<span class="Special"> &lt;- </span>add x<span class="Delimiter">,</span> <span class="Constant">1</span>
-<span id="L754" class="LineNr"> 754 </span>]
-<span id="L755" class="LineNr"> 755 </span><span class="traceContains">+mem: storing 4 in location 1</span>
-<span id="L756" class="LineNr"> 756 </span>
-<span id="L757" class="LineNr"> 757 </span><span class="Delimiter">:(scenario specialize_with_literal)</span>
-<span id="L758" class="LineNr"> 758 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
-<span id="L759" class="LineNr"> 759 </span>  local-scope
-<span id="L760" class="LineNr"> 760 </span>  <span class="Comment"># permit literal to map to number</span>
-<span id="L761" class="LineNr"> 761 </span>  <span class="Constant">1</span>:num/<span class="Special">raw &lt;- </span>foo <span class="Constant">3</span>
-<span id="L762" class="LineNr"> 762 </span>]
-<span id="L763" class="LineNr"> 763 </span><span class="muRecipe">def</span> foo x:_elem<span class="muRecipe"> -&gt; </span>y:_elem [
-<span id="L764" class="LineNr"> 764 </span>  local-scope
-<span id="L765" class="LineNr"> 765 </span>  load-ingredients
-<span id="L766" class="LineNr"> 766 </span>  y<span class="Special"> &lt;- </span>add x<span class="Delimiter">,</span> <span class="Constant">1</span>
-<span id="L767" class="LineNr"> 767 </span>]
-<span id="L768" class="LineNr"> 768 </span><span class="traceContains">+mem: storing 4 in location 1</span>
-<span id="L769" class="LineNr"> 769 </span>
-<span id="L770" class="LineNr"> 770 </span><span class="Delimiter">:(scenario specialize_with_literal_2)</span>
-<span id="L771" class="LineNr"> 771 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
-<span id="L772" class="LineNr"> 772 </span>  local-scope
-<span id="L773" class="LineNr"> 773 </span>  <span class="Comment"># permit literal to map to character</span>
-<span id="L774" class="LineNr"> 774 </span>  <span class="Constant">1</span>:<span class="Normal">char</span>/<span class="Special">raw &lt;- </span>foo <span class="Constant">3</span>
-<span id="L775" class="LineNr"> 775 </span>]
-<span id="L776" class="LineNr"> 776 </span><span class="muRecipe">def</span> foo x:_elem<span class="muRecipe"> -&gt; </span>y:_elem [
-<span id="L777" class="LineNr"> 777 </span>  local-scope
-<span id="L778" class="LineNr"> 778 </span>  load-ingredients
-<span id="L779" class="LineNr"> 779 </span>  y<span class="Special"> &lt;- </span>add x<span class="Delimiter">,</span> <span class="Constant">1</span>
-<span id="L780" class="LineNr"> 780 </span>]
-<span id="L781" class="LineNr"> 781 </span><span class="traceContains">+mem: storing 4 in location 1</span>
-<span id="L782" class="LineNr"> 782 </span>
-<span id="L783" class="LineNr"> 783 </span><span class="Delimiter">:(scenario specialize_with_literal_3)</span>
-<span id="L784" class="LineNr"> 784 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
-<span id="L785" class="LineNr"> 785 </span>  local-scope
-<span id="L786" class="LineNr"> 786 </span>  <span class="Comment"># permit '0' to map to address to shape-shifting type-ingredient</span>
-<span id="L787" class="LineNr"> 787 </span>  <span class="Constant">1</span>:&amp;:<span class="Normal">char</span>/<span class="Special">raw &lt;- </span>foo <span class="Constant">0</span>
-<span id="L788" class="LineNr"> 788 </span>]
-<span id="L789" class="LineNr"> 789 </span><span class="muRecipe">def</span> foo x:&amp;:_elem<span class="muRecipe"> -&gt; </span>y:&amp;:_elem [
-<span id="L790" class="LineNr"> 790 </span>  local-scope
-<span id="L791" class="LineNr"> 791 </span>  load-ingredients
-<span id="L792" class="LineNr"> 792 </span>  y<span class="Special"> &lt;- </span>copy x
-<span id="L793" class="LineNr"> 793 </span>]
-<span id="L794" class="LineNr"> 794 </span><span class="traceContains">+mem: storing 0 in location 1</span>
-<span id="L795" class="LineNr"> 795 </span>$error: <span class="Constant">0</span>
-<span id="L796" class="LineNr"> 796 </span>
-<span id="L797" class="LineNr"> 797 </span><span class="Delimiter">:(scenario specialize_with_literal_4)</span>
-<span id="L798" class="LineNr"> 798 </span><span class="Special">% Hide_errors = true;</span>
-<span id="L799" class="LineNr"> 799 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
-<span id="L800" class="LineNr"> 800 </span>  local-scope
-<span id="L801" class="LineNr"> 801 </span>  <span class="Comment"># ambiguous call: what's the type of its ingredient?!</span>
-<span id="L802" class="LineNr"> 802 </span>  foo <span class="Constant">0</span>
-<span id="L803" class="LineNr"> 803 </span>]
-<span id="L804" class="LineNr"> 804 </span><span class="muRecipe">def</span> foo x:&amp;:_elem<span class="muRecipe"> -&gt; </span>y:&amp;:_elem [
-<span id="L805" class="LineNr"> 805 </span>  local-scope
-<span id="L806" class="LineNr"> 806 </span>  load-ingredients
-<span id="L807" class="LineNr"> 807 </span>  y<span class="Special"> &lt;- </span>copy x
-<span id="L808" class="LineNr"> 808 </span>]
-<span id="L809" class="LineNr"> 809 </span><span class="traceContains">+error: <a href='000organization.cc.html#L113'>main</a>: <a href='010vm.cc.html#L32'>instruction</a> 'foo' has no valid specialization</span>
-<span id="L810" class="LineNr"> 810 </span>
-<span id="L811" class="LineNr"> 811 </span><span class="Delimiter">:(scenario specialize_with_literal_5)</span>
-<span id="L812" class="LineNr"> 812 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
-<span id="L813" class="LineNr"> 813 </span>  foo <span class="Constant">3</span><span class="Delimiter">,</span> <span class="Constant">4</span>  <span class="Comment"># recipe mapping two variables to literals</span>
-<span id="L814" class="LineNr"> 814 </span>]
-<span id="L815" class="LineNr"> 815 </span><span class="muRecipe">def</span> foo x:_elem<span class="Delimiter">,</span> y:_elem [
-<span id="L816" class="LineNr"> 816 </span>  local-scope
-<span id="L817" class="LineNr"> 817 </span>  load-ingredients
-<span id="L818" class="LineNr"> 818 </span>  <span class="Constant">1</span>:num/<span class="Special">raw &lt;- </span>add x<span class="Delimiter">,</span> y
-<span id="L819" class="LineNr"> 819 </span>]
-<span id="L820" class="LineNr"> 820 </span><span class="traceContains">+mem: storing 7 in location 1</span>
-<span id="L821" class="LineNr"> 821 </span>
-<span id="L822" class="LineNr"> 822 </span><span class="Delimiter">:(scenario multiple_shape_shifting_variants)</span>
-<span id="L823" class="LineNr"> 823 </span><span class="Comment"># try to call two different shape-shifting recipes with the same name</span>
-<span id="L824" class="LineNr"> 824 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
-<span id="L825" class="LineNr"> 825 </span>  <span class="Normal">e1</span>:d1:num<span class="Special"> &lt;- </span>merge <span class="Constant">3</span>
-<span id="L826" class="LineNr"> 826 </span>  <span class="Normal">e2</span>:d2:num<span class="Special"> &lt;- </span>merge <span class="Constant">4</span><span class="Delimiter">,</span> <span class="Constant">5</span>
-<span id="L827" class="LineNr"> 827 </span>  <span class="Constant">1</span>:num/<span class="Special">raw &lt;- </span>foo e1
-<span id="L828" class="LineNr"> 828 </span>  <span class="Constant">2</span>:num/<span class="Special">raw &lt;- </span>foo e2
-<span id="L829" class="LineNr"> 829 </span>]
-<span id="L830" class="LineNr"> 830 </span><span class="Comment"># the two shape-shifting definitions</span>
-<span id="L831" class="LineNr"> 831 </span><span class="muRecipe">def</span> foo a:d1:_elem<span class="muRecipe"> -&gt; </span>b:num [
-<span id="L832" class="LineNr"> 832 </span>  local-scope
-<span id="L833" class="LineNr"> 833 </span>  load-ingredients
-<span id="L834" class="LineNr"> 834 </span>  <span class="Identifier">return</span> <span class="Constant">34</span>
-<span id="L835" class="LineNr"> 835 </span>]
-<span id="L836" class="LineNr"> 836 </span><span class="muRecipe">def</span> foo a:d2:_elem<span class="muRecipe"> -&gt; </span>b:num [
-<span id="L837" class="LineNr"> 837 </span>  local-scope
-<span id="L838" class="LineNr"> 838 </span>  load-ingredients
-<span id="L839" class="LineNr"> 839 </span>  <span class="Identifier">return</span> <span class="Constant">35</span>
-<span id="L840" class="LineNr"> 840 </span>]
-<span id="L841" class="LineNr"> 841 </span><span class="Comment"># the shape-shifting containers they use</span>
-<span id="L842" class="LineNr"> 842 </span><span class="muData">container</span> d1:_elem [
-<span id="L843" class="LineNr"> 843 </span>  <span class="Normal">x</span>:_elem
-<span id="L844" class="LineNr"> 844 </span>]
-<span id="L845" class="LineNr"> 845 </span><span class="muData">container</span> d2:_elem [
-<span id="L846" class="LineNr"> 846 </span>  <span class="Normal">x</span>:num
-<span id="L847" class="LineNr"> 847 </span>  <span class="Normal">y</span>:_elem
-<span id="L848" class="LineNr"> 848 </span>]
-<span id="L849" class="LineNr"> 849 </span><span class="traceContains">+mem: storing 34 in location 1</span>
-<span id="L850" class="LineNr"> 850 </span><span class="traceContains">+mem: storing 35 in location 2</span>
-<span id="L851" class="LineNr"> 851 </span>
-<span id="L852" class="LineNr"> 852 </span><span class="Delimiter">:(scenario multiple_shape_shifting_variants_2)</span>
-<span id="L853" class="LineNr"> 853 </span><span class="Comment"># static dispatch between shape-shifting variants, _including pointer lookups_</span>
-<span id="L854" class="LineNr"> 854 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
-<span id="L855" class="LineNr"> 855 </span>  <span class="Normal">e1</span>:d1:num<span class="Special"> &lt;- </span>merge <span class="Constant">3</span>
-<span id="L856" class="LineNr"> 856 </span>  <span class="Normal">e2</span>:&amp;:d2:num<span class="Special"> &lt;- </span><span class="Normal">new</span> <span class="Delimiter">{(</span>d2 number<span class="Delimiter">)</span>: type<span class="Delimiter">}</span>
-<span id="L857" class="LineNr"> 857 </span>  <span class="Constant">1</span>:num/<span class="Special">raw &lt;- </span>foo e1
-<span id="L858" class="LineNr"> 858 </span>  <span class="Constant">2</span>:num/<span class="Special">raw &lt;- </span>foo *e2  <span class="Comment"># different from previous scenario</span>
-<span id="L859" class="LineNr"> 859 </span>]
-<span id="L860" class="LineNr"> 860 </span><span class="muRecipe">def</span> foo a:d1:_elem<span class="muRecipe"> -&gt; </span>b:num [
-<span id="L861" class="LineNr"> 861 </span>  local-scope
-<span id="L862" class="LineNr"> 862 </span>  load-ingredients
-<span id="L863" class="LineNr"> 863 </span>  <span class="Identifier">return</span> <span class="Constant">34</span>
-<span id="L864" class="LineNr"> 864 </span>]
-<span id="L865" class="LineNr"> 865 </span><span class="muRecipe">def</span> foo a:d2:_elem<span class="muRecipe"> -&gt; </span>b:num [
-<span id="L866" class="LineNr"> 866 </span>  local-scope
-<span id="L867" class="LineNr"> 867 </span>  load-ingredients
-<span id="L868" class="LineNr"> 868 </span>  <span class="Identifier">return</span> <span class="Constant">35</span>
-<span id="L869" class="LineNr"> 869 </span>]
-<span id="L870" class="LineNr"> 870 </span><span class="muData">container</span> d1:_elem [
-<span id="L871" class="LineNr"> 871 </span>  <span class="Normal">x</span>:_elem
-<span id="L872" class="LineNr"> 872 </span>]
-<span id="L873" class="LineNr"> 873 </span><span class="muData">container</span> d2:_elem [
-<span id="L874" class="LineNr"> 874 </span>  <span class="Normal">x</span>:num
-<span id="L875" class="LineNr"> 875 </span>  <span class="Normal">y</span>:_elem
-<span id="L876" class="LineNr"> 876 </span>]
-<span id="L877" class="LineNr"> 877 </span><span class="traceContains">+mem: storing 34 in location 1</span>
-<span id="L878" class="LineNr"> 878 </span><span class="traceContains">+mem: storing 35 in location 2</span>
-<span id="L879" class="LineNr"> 879 </span>
-<span id="L880" class="LineNr"> 880 </span><span class="Delimiter">:(scenario missing_type_in_shape_shifting_recipe)</span>
-<span id="L881" class="LineNr"> 881 </span><span class="Special">% Hide_errors = true;</span>
-<span id="L882" class="LineNr"> 882 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
-<span id="L883" class="LineNr"> 883 </span>  <span class="Normal">a</span>:d1:num<span class="Special"> &lt;- </span>merge <span class="Constant">3</span>
-<span id="L884" class="LineNr"> 884 </span>  foo a
-<span id="L885" class="LineNr"> 885 </span>]
-<span id="L886" class="LineNr"> 886 </span><span class="muRecipe">def</span> foo a:d1:_elem<span class="muRecipe"> -&gt; </span>b:num [
-<span id="L887" class="LineNr"> 887 </span>  local-scope
-<span id="L888" class="LineNr"> 888 </span>  load-ingredients
-<span id="L889" class="LineNr"> 889 </span>  copy e  <span class="Comment"># no such variable</span>
-<span id="L890" class="LineNr"> 890 </span>  <span class="Identifier">return</span> <span class="Constant">34</span>
-<span id="L891" class="LineNr"> 891 </span>]
-<span id="L892" class="LineNr"> 892 </span><span class="muData">container</span> d1:_elem [
-<span id="L893" class="LineNr"> 893 </span>  <span class="Normal">x</span>:_elem
-<span id="L894" class="LineNr"> 894 </span>]
-<span id="L895" class="LineNr"> 895 </span><span class="traceContains">+error: foo: unknown type for 'e' in 'copy e' (check the name for typos)</span>
-<span id="L896" class="LineNr"> 896 </span><span class="traceContains">+error: specializing foo: missing type for 'e'</span>
-<span id="L897" class="LineNr"> 897 </span><span class="Comment"># and it doesn't crash</span>
-<span id="L898" class="LineNr"> 898 </span>
-<span id="L899" class="LineNr"> 899 </span><span class="Delimiter">:(scenario missing_type_in_shape_shifting_recipe_2)</span>
-<span id="L900" class="LineNr"> 900 </span><span class="Special">% Hide_errors = true;</span>
-<span id="L901" class="LineNr"> 901 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
-<span id="L902" class="LineNr"> 902 </span>  <span class="Normal">a</span>:d1:num<span class="Special"> &lt;- </span>merge <span class="Constant">3</span>
-<span id="L903" class="LineNr"> 903 </span>  foo a
-<span id="L904" class="LineNr"> 904 </span>]
-<span id="L905" class="LineNr"> 905 </span><span class="muRecipe">def</span> foo a:d1:_elem<span class="muRecipe"> -&gt; </span>b:num [
-<span id="L906" class="LineNr"> 906 </span>  local-scope
-<span id="L907" class="LineNr"> 907 </span>  load-ingredients
-<span id="L908" class="LineNr"> 908 </span>  get e<span class="Delimiter">,</span> <span class="Constant">x:offset</span>  <span class="Comment"># unknown variable in a 'get', which does some extra checking</span>
-<span id="L909" class="LineNr"> 909 </span>  <span class="Identifier">return</span> <span class="Constant">34</span>
-<span id="L910" class="LineNr"> 910 </span>]
-<span id="L911" class="LineNr"> 911 </span><span class="muData">container</span> d1:_elem [
-<span id="L912" class="LineNr"> 912 </span>  <span class="Normal">x</span>:_elem
-<span id="L913" class="LineNr"> 913 </span>]
-<span id="L914" class="LineNr"> 914 </span><span class="traceContains">+error: foo: unknown type for 'e' in 'get e, x:offset' (check the name for typos)</span>
-<span id="L915" class="LineNr"> 915 </span><span class="traceContains">+error: specializing foo: missing type for 'e'</span>
-<span id="L916" class="LineNr"> 916 </span><span class="Comment"># and it doesn't crash</span>
-<span id="L917" class="LineNr"> 917 </span>
-<span id="L918" class="LineNr"> 918 </span><span class="Delimiter">:(scenarios transform)</span>
-<span id="L919" class="LineNr"> 919 </span><span class="Delimiter">:(scenario specialize_recursive_shape_shifting_recipe)</span>
-<span id="L920" class="LineNr"> 920 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
-<span id="L921" class="LineNr"> 921 </span>  <span class="Constant">1</span>:num<span class="Special"> &lt;- </span>copy <span class="Constant">34</span>
-<span id="L922" class="LineNr"> 922 </span>  <span class="Constant">2</span>:num<span class="Special"> &lt;- </span>foo <span class="Constant">1</span>:num
-<span id="L923" class="LineNr"> 923 </span>]
-<span id="L924" class="LineNr"> 924 </span><span class="muRecipe">def</span> foo x:_elem<span class="muRecipe"> -&gt; </span>y:num [
-<span id="L925" class="LineNr"> 925 </span>  local-scope
-<span id="L926" class="LineNr"> 926 </span>  load-ingredients
-<span id="L927" class="LineNr"> 927 </span>  <span class="Delimiter">{</span>
-<span id="L928" class="LineNr"> 928 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span>
-<span id="L929" class="LineNr"> 929 </span>  <span class="Conceal">¦</span> <span class="Normal">y</span>:num<span class="Special"> &lt;- </span>foo x
-<span id="L930" class="LineNr"> 930 </span>  <span class="Delimiter">}</span>
-<span id="L931" class="LineNr"> 931 </span>  <span class="Identifier">return</span> y
-<span id="L932" class="LineNr"> 932 </span>]
-<span id="L933" class="LineNr"> 933 </span><span class="traceContains">+transform: new specialization: foo_2</span>
-<span id="L934" class="LineNr"> 934 </span><span class="Comment"># transform terminates</span>
-<span id="L935" class="LineNr"> 935 </span>
-<span id="L936" class="LineNr"> 936 </span><span class="Delimiter">:(scenarios run)</span>
-<span id="L937" class="LineNr"> 937 </span><span class="Delimiter">:(scenario specialize_most_similar_variant)</span>
-<span id="L938" class="LineNr"> 938 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
-<span id="L939" class="LineNr"> 939 </span>  <span class="Constant">1</span>:&amp;:num<span class="Special"> &lt;- </span><span class="Normal">new</span> <span class="Constant">number:type</span>
-<span id="L940" class="LineNr"> 940 </span>  <span class="Constant">2</span>:num<span class="Special"> &lt;- </span>foo <span class="Constant">1</span>:&amp;:num
-<span id="L941" class="LineNr"> 941 </span>]
-<span id="L942" class="LineNr"> 942 </span><span class="muRecipe">def</span> foo x:_elem<span class="muRecipe"> -&gt; </span>y:num [
-<span id="L943" class="LineNr"> 943 </span>  local-scope
-<span id="L944" class="LineNr"> 944 </span>  load-ingredients
-<span id="L945" class="LineNr"> 945 </span>  <span class="Identifier">return</span> <span class="Constant">34</span>
-<span id="L946" class="LineNr"> 946 </span>]
-<span id="L947" class="LineNr"> 947 </span><span class="muRecipe">def</span> foo x:&amp;:_elem<span class="muRecipe"> -&gt; </span>y:num [
-<span id="L948" class="LineNr"> 948 </span>  local-scope
-<span id="L949" class="LineNr"> 949 </span>  load-ingredients
-<span id="L950" class="LineNr"> 950 </span>  <span class="Identifier">return</span> <span class="Constant">35</span>
-<span id="L951" class="LineNr"> 951 </span>]
-<span id="L952" class="LineNr"> 952 </span><span class="traceContains">+mem: storing 35 in location 2</span>
-<span id="L953" class="LineNr"> 953 </span>
-<span id="L954" class="LineNr"> 954 </span><span class="Delimiter">:(scenario specialize_most_similar_variant_2)</span>
-<span id="L955" class="LineNr"> 955 </span><span class="Comment"># version with headers padded with lots of unrelated concrete types</span>
-<span id="L956" class="LineNr"> 956 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
-<span id="L957" class="LineNr"> 957 </span>  <span class="Constant">1</span>:num<span class="Special"> &lt;- </span>copy <span class="Constant">23</span>
-<span id="L958" class="LineNr"> 958 </span>  <span class="Constant">2</span>:&amp;:@:num<span class="Special"> &lt;- </span>copy <span class="Constant">0</span>
-<span id="L959" class="LineNr"> 959 </span>  <span class="Constant">3</span>:num<span class="Special"> &lt;- </span>foo <span class="Constant">2</span>:&amp;:@:num<span class="Delimiter">,</span> <span class="Constant">1</span>:num
-<span id="L960" class="LineNr"> 960 </span>]
-<span id="L961" class="LineNr"> 961 </span><span class="Comment"># variant with concrete type</span>
-<span id="L962" class="LineNr"> 962 </span><span class="muRecipe">def</span> foo dummy:&amp;:@:num<span class="Delimiter">,</span> x:num<span class="muRecipe"> -&gt; </span>y:num<span class="Delimiter">,</span> dummy:&amp;:@:num [
-<span id="L963" class="LineNr"> 963 </span>  local-scope
-<span id="L964" class="LineNr"> 964 </span>  load-ingredients
-<span id="L965" class="LineNr"> 965 </span>  <span class="Identifier">return</span> <span class="Constant">34</span>
-<span id="L966" class="LineNr"> 966 </span>]
-<span id="L967" class="LineNr"> 967 </span><span class="Comment"># shape-shifting variant</span>
-<span id="L968" class="LineNr"> 968 </span><span class="muRecipe">def</span> foo dummy:&amp;:@:num<span class="Delimiter">,</span> x:_elem<span class="muRecipe"> -&gt; </span>y:num<span class="Delimiter">,</span> dummy:&amp;:@:num [
-<span id="L969" class="LineNr"> 969 </span>  local-scope
-<span id="L970" class="LineNr"> 970 </span>  load-ingredients
-<span id="L971" class="LineNr"> 971 </span>  <span class="Identifier">return</span> <span class="Constant">35</span>
-<span id="L972" class="LineNr"> 972 </span>]
-<span id="L973" class="LineNr"> 973 </span><span class="Comment"># prefer the concrete variant</span>
-<span id="L974" class="LineNr"> 974 </span><span class="traceContains">+mem: storing 34 in location 3</span>
-<span id="L975" class="LineNr"> 975 </span>
-<span id="L976" class="LineNr"> 976 </span><span class="Delimiter">:(scenario specialize_most_similar_variant_3)</span>
-<span id="L977" class="LineNr"> 977 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
-<span id="L978" class="LineNr"> 978 </span>  <span class="Constant">1</span>:text<span class="Special"> &lt;- </span><span class="Normal">new</span> [abc]
-<span id="L979" class="LineNr"> 979 </span>  foo <span class="Constant">1</span>:text
-<span id="L980" class="LineNr"> 980 </span>]
-<span id="L981" class="LineNr"> 981 </span><span class="muRecipe">def</span> foo x:text [
-<span id="L982" class="LineNr"> 982 </span>  <span class="Constant">2</span>:num<span class="Special"> &lt;- </span>copy <span class="Constant">34</span>
-<span id="L983" class="LineNr"> 983 </span>]
-<span id="L984" class="LineNr"> 984 </span><span class="muRecipe">def</span> foo x:&amp;:_elem [
-<span id="L985" class="LineNr"> 985 </span>  <span class="Constant">2</span>:num<span class="Special"> &lt;- </span>copy <span class="Constant">35</span>
-<span id="L986" class="LineNr"> 986 </span>]
-<span id="L987" class="LineNr"> 987 </span><span class="Comment"># make sure the more precise version was used</span>
-<span id="L988" class="LineNr"> 988 </span><span class="traceContains">+mem: storing 34 in location 2</span>
-<span id="L989" class="LineNr"> 989 </span>
-<span id="L990" class="LineNr"> 990 </span><span class="Delimiter">:(scenario specialize_literal_as_number)</span>
-<span id="L991" class="LineNr"> 991 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
-<span id="L992" class="LineNr"> 992 </span>  <span class="Constant">1</span>:num<span class="Special"> &lt;- </span>foo <span class="Constant">23</span>
-<span id="L993" class="LineNr"> 993 </span>]
-<span id="L994" class="LineNr"> 994 </span><span class="muRecipe">def</span> foo x:_elem<span class="muRecipe"> -&gt; </span>y:num [
-<span id="L995" class="LineNr"> 995 </span>  local-scope
-<span id="L996" class="LineNr"> 996 </span>  load-ingredients
-<span id="L997" class="LineNr"> 997 </span>  <span class="Identifier">return</span> <span class="Constant">34</span>
-<span id="L998" class="LineNr"> 998 </span>]
-<span id="L999" class="LineNr"> 999 </span><span class="muRecipe">def</span> foo x:<span class="Normal">char</span><span class="muRecipe"> -&gt; </span>y:num [
-<span id="L1000" class="LineNr">1000 </span>  local-scope
-<span id="L1001" class="LineNr">1001 </span>  load-ingredients
-<span id="L1002" class="LineNr">1002 </span>  <span class="Identifier">return</span> <span class="Constant">35</span>
-<span id="L1003" class="LineNr">1003 </span>]
-<span id="L1004" class="LineNr">1004 </span><span class="traceContains">+mem: storing 34 in location 1</span>
-<span id="L1005" class="LineNr">1005 </span>
-<span id="L1006" class="LineNr">1006 </span><span class="Delimiter">:(scenario specialize_literal_as_number_2)</span>
-<span id="L1007" class="LineNr">1007 </span><span class="Comment"># version calling with literal</span>
-<span id="L1008" class="LineNr">1008 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
-<span id="L1009" class="LineNr">1009 </span>  <span class="Constant">1</span>:num<span class="Special"> &lt;- </span>foo <span class="Constant">0</span>
-<span id="L1010" class="LineNr">1010 </span>]
-<span id="L1011" class="LineNr">1011 </span><span class="Comment"># variant with concrete type</span>
-<span id="L1012" class="LineNr">1012 </span><span class="muRecipe">def</span> foo x:num<span class="muRecipe"> -&gt; </span>y:num [
-<span id="L1013" class="LineNr">1013 </span>  local-scope
-<span id="L1014" class="LineNr">1014 </span>  load-ingredients
-<span id="L1015" class="LineNr">1015 </span>  <span class="Identifier">return</span> <span class="Constant">34</span>
-<span id="L1016" class="LineNr">1016 </span>]
-<span id="L1017" class="LineNr">1017 </span><span class="Comment"># shape-shifting variant</span>
-<span id="L1018" class="LineNr">1018 </span><span class="muRecipe">def</span> foo x:&amp;:_elem<span class="muRecipe"> -&gt; </span>y:num [
-<span id="L1019" class="LineNr">1019 </span>  local-scope
-<span id="L1020" class="LineNr">1020 </span>  load-ingredients
-<span id="L1021" class="LineNr">1021 </span>  <span class="Identifier">return</span> <span class="Constant">35</span>
-<span id="L1022" class="LineNr">1022 </span>]
-<span id="L1023" class="LineNr">1023 </span><span class="Comment"># prefer the concrete variant, ignore concrete types in scoring the shape-shifting variant</span>
-<span id="L1024" class="LineNr">1024 </span><span class="traceContains">+mem: storing 34 in location 1</span>
-<span id="L1025" class="LineNr">1025 </span>
-<span id="L1026" class="LineNr">1026 </span><span class="Delimiter">:(scenario specialize_literal_as_address)</span>
-<span id="L1027" class="LineNr">1027 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
-<span id="L1028" class="LineNr">1028 </span>  <span class="Constant">1</span>:num<span class="Special"> &lt;- </span>foo <span class="Constant">0</span>
-<span id="L1029" class="LineNr">1029 </span>]
-<span id="L1030" class="LineNr">1030 </span><span class="Comment"># variant with concrete address type</span>
-<span id="L1031" class="LineNr">1031 </span><span class="muRecipe">def</span> foo x:&amp;:num<span class="muRecipe"> -&gt; </span>y:num [
-<span id="L1032" class="LineNr">1032 </span>  local-scope
-<span id="L1033" class="LineNr">1033 </span>  load-ingredients
-<span id="L1034" class="LineNr">1034 </span>  <span class="Identifier">return</span> <span class="Constant">34</span>
-<span id="L1035" class="LineNr">1035 </span>]
-<span id="L1036" class="LineNr">1036 </span><span class="Comment"># shape-shifting variant</span>
-<span id="L1037" class="LineNr">1037 </span><span class="muRecipe">def</span> foo x:&amp;:_elem<span class="muRecipe"> -&gt; </span>y:num [
-<span id="L1038" class="LineNr">1038 </span>  local-scope
-<span id="L1039" class="LineNr">1039 </span>  load-ingredients
-<span id="L1040" class="LineNr">1040 </span>  <span class="Identifier">return</span> <span class="Constant">35</span>
-<span id="L1041" class="LineNr">1041 </span>]
-<span id="L1042" class="LineNr">1042 </span><span class="Comment"># prefer the concrete variant, ignore concrete types in scoring the shape-shifting variant</span>
-<span id="L1043" class="LineNr">1043 </span><span class="traceContains">+mem: storing 34 in location 1</span>
-<span id="L1044" class="LineNr">1044 </span>
-<span id="L1045" class="LineNr">1045 </span><span class="Delimiter">:(scenario missing_type_during_specialization)</span>
-<span id="L1046" class="LineNr">1046 </span><span class="Special">% Hide_errors = true;</span>
-<span id="L1047" class="LineNr">1047 </span><span class="Comment"># define a shape-shifting recipe</span>
-<span id="L1048" class="LineNr">1048 </span><span class="muRecipe">def</span> foo a:_elem [
-<span id="L1049" class="LineNr">1049 </span>]
-<span id="L1050" class="LineNr">1050 </span><span class="Comment"># define a container with field 'z'</span>
-<span id="L1051" class="LineNr">1051 </span><span class="muData">container</span> foo2 [
-<span id="L1052" class="LineNr">1052 </span>  <span class="Normal">z</span>:num
-<span id="L1053" class="LineNr">1053 </span>]
-<span id="L1054" class="LineNr">1054 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
-<span id="L1055" class="LineNr">1055 </span>  local-scope
-<span id="L1056" class="LineNr">1056 </span>  <span class="Normal">x</span>:foo2<span class="Special"> &lt;- </span>merge <span class="Constant">34</span>
-<span id="L1057" class="LineNr">1057 </span>  <span class="Normal">y</span>:num<span class="Special"> &lt;- </span>get x<span class="Delimiter">,</span> z:offse  <span class="Comment"># typo in 'offset'</span>
-<span id="L1058" class="LineNr">1058 </span><span class="PreProc">  </span><span class="Comment"># define a variable with the same name 'z'</span>
-<span id="L1059" class="LineNr">1059 </span>  <span class="Normal">z</span>:num<span class="Special"> &lt;- </span>copy <span class="Constant">34</span>
-<span id="L1060" class="LineNr">1060 </span>  <span class="Comment"># trigger specialization of the shape-shifting recipe</span>
-<span id="L1061" class="LineNr">1061 </span>  foo z
-<span id="L1062" class="LineNr">1062 </span>]
-<span id="L1063" class="LineNr">1063 </span><span class="Comment"># shouldn't crash</span>
-<span id="L1064" class="LineNr">1064 </span>
-<span id="L1065" class="LineNr">1065 </span><span class="Delimiter">:(scenario missing_type_during_specialization2)</span>
-<span id="L1066" class="LineNr">1066 </span><span class="Special">% Hide_errors = true;</span>
-<span id="L1067" class="LineNr">1067 </span><span class="Comment"># define a shape-shifting recipe</span>
-<span id="L1068" class="LineNr">1068 </span><span class="muRecipe">def</span> foo a:_elem [
-<span id="L1069" class="LineNr">1069 </span>]
-<span id="L1070" class="LineNr">1070 </span><span class="Comment"># define a container with field 'z'</span>
-<span id="L1071" class="LineNr">1071 </span><span class="muData">container</span> foo2 [
-<span id="L1072" class="LineNr">1072 </span>  <span class="Normal">z</span>:num
-<span id="L1073" class="LineNr">1073 </span>]
-<span id="L1074" class="LineNr">1074 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
-<span id="L1075" class="LineNr">1075 </span>  local-scope
-<span id="L1076" class="LineNr">1076 </span>  <span class="Normal">x</span>:foo2<span class="Special"> &lt;- </span>merge <span class="Constant">34</span>
-<span id="L1077" class="LineNr">1077 </span>  <span class="Normal">y</span>:num<span class="Special"> &lt;- </span>get x<span class="Delimiter">,</span> z:offse  <span class="Comment"># typo in 'offset'</span>
-<span id="L1078" class="LineNr">1078 </span><span class="PreProc">  </span><span class="Comment"># define a variable with the same name 'z'</span>
-<span id="L1079" class="LineNr">1079 </span>  <span class="Normal">z</span>:&amp;:num<span class="Special"> &lt;- </span>copy <span class="Constant">34</span>
-<span id="L1080" class="LineNr">1080 </span>  <span class="Comment"># trigger specialization of the shape-shifting recipe</span>
-<span id="L1081" class="LineNr">1081 </span>  foo *z
-<span id="L1082" class="LineNr">1082 </span>]
-<span id="L1083" class="LineNr">1083 </span><span class="Comment"># shouldn't crash</span>
-<span id="L1084" class="LineNr">1084 </span>
-<span id="L1085" class="LineNr">1085 </span><span class="Delimiter">:(scenario tangle_shape_shifting_recipe)</span>
-<span id="L1086" class="LineNr">1086 </span><span class="Comment"># shape-shifting recipe</span>
-<span id="L1087" class="LineNr">1087 </span><span class="muRecipe">def</span> foo a:_elem [
-<span id="L1088" class="LineNr">1088 </span>  local-scope
-<span id="L1089" class="LineNr">1089 </span>  load-ingredients
-<span id="L1090" class="LineNr">1090 </span>  &lt;label1&gt;
-<span id="L1091" class="LineNr">1091 </span>]
-<span id="L1092" class="LineNr">1092 </span><span class="Comment"># tangle some code that refers to the type ingredient</span>
-<span id="L1093" class="LineNr">1093 </span><span class="muRecipe">after</span> &lt;label1&gt; [
-<span id="L1094" class="LineNr">1094 </span>  <span class="Normal">b</span>:_elem<span class="Special"> &lt;- </span>copy a
-<span id="L1095" class="LineNr">1095 </span>]
-<span id="L1096" class="LineNr">1096 </span><span class="Comment"># trigger specialization</span>
-<span id="L1097" class="LineNr">1097 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
-<span id="L1098" class="LineNr">1098 </span>  local-scope
-<span id="L1099" class="LineNr">1099 </span>  foo <span class="Constant">34</span>
-<span id="L1100" class="LineNr">1100 </span>]
-<span id="L1101" class="LineNr">1101 </span>$error: <span class="Constant">0</span>
-<span id="L1102" class="LineNr">1102 </span>
-<span id="L1103" class="LineNr">1103 </span><span class="Delimiter">:(scenario tangle_shape_shifting_recipe_with_type_abbreviation)</span>
-<span id="L1104" class="LineNr">1104 </span><span class="Comment"># shape-shifting recipe</span>
-<span id="L1105" class="LineNr">1105 </span><span class="muRecipe">def</span> foo a:_elem [
-<span id="L1106" class="LineNr">1106 </span>  local-scope
-<span id="L1107" class="LineNr">1107 </span>  load-ingredients
-<span id="L1108" class="LineNr">1108 </span>  &lt;label1&gt;
-<span id="L1109" class="LineNr">1109 </span>]
-<span id="L1110" class="LineNr">1110 </span><span class="Comment"># tangle some code that refers to the type ingredient</span>
-<span id="L1111" class="LineNr">1111 </span><span class="muRecipe">after</span> &lt;label1&gt; [
-<span id="L1112" class="LineNr">1112 </span>  <span class="Normal">b</span>:<span class="Normal">bool</span><span class="Special"> &lt;- </span>copy <span class="Constant">0</span>  <span class="Comment"># type abbreviation</span>
-<span id="L1113" class="LineNr">1113 </span>]
-<span id="L1114" class="LineNr">1114 </span><span class="Comment"># trigger specialization</span>
-<span id="L1115" class="LineNr">1115 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
-<span id="L1116" class="LineNr">1116 </span>  local-scope
-<span id="L1117" class="LineNr">1117 </span>  foo <span class="Constant">34</span>
-<span id="L1118" class="LineNr">1118 </span>]
-<span id="L1119" class="LineNr">1119 </span>$error: <span class="Constant">0</span>
-<span id="L1120" class="LineNr">1120 </span>
-<span id="L1121" class="LineNr">1121 </span><span class="Delimiter">:(scenario shape_shifting_recipe_coexists_with_primitive)</span>
-<span id="L1122" class="LineNr">1122 </span><span class="Comment"># recipe overloading a primitive with a generic type</span>
-<span id="L1123" class="LineNr">1123 </span><span class="muRecipe">def</span> add a:&amp;:foo:_elem [
-<span id="L1124" class="LineNr">1124 </span>  assert <span class="Constant">0</span><span class="Delimiter">,</span> [should <span class="Normal">not</span> get here]
-<span id="L1125" class="LineNr">1125 </span>]
-<span id="L1126" class="LineNr">1126 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
-<span id="L1127" class="LineNr">1127 </span>  <span class="Comment"># call primitive add with literal 0</span>
-<span id="L1128" class="LineNr">1128 </span>  add <span class="Constant">0</span><span class="Delimiter">,</span> <span class="Constant">0</span>
-<span id="L1129" class="LineNr">1129 </span>]
-<span id="L1130" class="LineNr">1130 </span>$error: <span class="Constant">0</span>
-<span id="L1131" class="LineNr">1131 </span>
-<span id="L1132" class="LineNr">1132 </span><span class="Delimiter">:(scenario specialization_heuristic_test_1)</span>
-<span id="L1133" class="LineNr">1133 </span><span class="Comment"># modeled on the 'buffer' container in text.mu</span>
-<span id="L1134" class="LineNr">1134 </span><span class="muData">container</span> foo_buffer:_elem [
-<span id="L1135" class="LineNr">1135 </span>  <span class="Normal">x</span>:num
-<span id="L1136" class="LineNr">1136 </span>]
-<span id="L1137" class="LineNr">1137 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
-<span id="L1138" class="LineNr">1138 </span>  append <span class="Constant">1</span>:&amp;:foo_buffer:<span class="Normal">char</span>/<span class="Special">raw</span><span class="Delimiter">,</span> <span class="Constant">2</span>:text/<span class="Special">raw</span>
-<span id="L1139" class="LineNr">1139 </span>]
-<span id="L1140" class="LineNr">1140 </span><span class="muRecipe">def</span> append buf:&amp;:foo_buffer:_elem<span class="Delimiter">,</span> x:_elem<span class="muRecipe"> -&gt; </span>buf:&amp;:foo_buffer:_elem [
-<span id="L1141" class="LineNr">1141 </span>  local-scope
-<span id="L1142" class="LineNr">1142 </span>  load-ingredients
-<span id="L1143" class="LineNr">1143 </span>  stash <span class="Constant">34</span>
-<span id="L1144" class="LineNr">1144 </span>]
-<span id="L1145" class="LineNr">1145 </span><span class="muRecipe">def</span> append buf:&amp;:foo_buffer:<span class="Normal">char</span><span class="Delimiter">,</span> x:_elem<span class="muRecipe"> -&gt; </span>buf:&amp;:foo_buffer:<span class="Normal">char</span> [
-<span id="L1146" class="LineNr">1146 </span>  local-scope
-<span id="L1147" class="LineNr">1147 </span>  load-ingredients
-<span id="L1148" class="LineNr">1148 </span>  stash <span class="Constant">35</span>
-<span id="L1149" class="LineNr">1149 </span>]
-<span id="L1150" class="LineNr">1150 </span><span class="muRecipe">def</span> append buf:&amp;:foo_buffer:_elem<span class="Delimiter">,</span> x:&amp;:@:_elem<span class="muRecipe"> -&gt; </span>buf:&amp;:foo_buffer:_elem [
-<span id="L1151" class="LineNr">1151 </span>  local-scope
-<span id="L1152" class="LineNr">1152 </span>  load-ingredients
-<span id="L1153" class="LineNr">1153 </span>  stash <span class="Constant">36</span>
-<span id="L1154" class="LineNr">1154 </span>]
-<span id="L1155" class="LineNr">1155 </span><span class="traceContains">+app: 36</span>
+<span id="L173" class="LineNr"> 173 </span><span class="Normal">bool</span> concrete_type_names_strictly_match<span class="Delimiter">(</span>reagent<span class="Comment">/*</span><span class="Comment">copy</span><span class="Comment">*/</span> to<span class="Delimiter">,</span> reagent<span class="Comment">/*</span><span class="Comment">copy</span><span class="Comment">*/</span> from<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L174" class="LineNr"> 174 </span>  canonize_type<span class="Delimiter">(</span>to<span class="Delimiter">);</span>
+<span id="L175" class="LineNr"> 175 </span>  canonize_type<span class="Delimiter">(</span>from<span class="Delimiter">);</span>
+<span id="L176" class="LineNr"> 176 </span>  <span class="Identifier">return</span> concrete_type_names_strictly_match<span class="Delimiter">(</span>to<span class="Delimiter">.</span>type<span class="Delimiter">,</span> from<span class="Delimiter">.</span>type<span class="Delimiter">,</span> from<span class="Delimiter">);</span>
+<span id="L177" class="LineNr"> 177 </span><span class="Delimiter">}</span>
+<span id="L178" class="LineNr"> 178 </span>
+<span id="L179" class="LineNr"> 179 </span><span class="Normal">bool</span> concrete_type_names_strictly_match<span class="Delimiter">(</span><span class="Normal">const</span> type_tree* to<span class="Delimiter">,</span> <span class="Normal">const</span> type_tree* from<span class="Delimiter">,</span> <span class="Normal">const</span> reagent&amp; rhs_reagent<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L180" class="LineNr"> 180 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!to<span class="Delimiter">)</span> <span class="Identifier">return</span> !from<span class="Delimiter">;</span>
+<span id="L181" class="LineNr"> 181 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!from<span class="Delimiter">)</span> <span class="Identifier">return</span> !to<span class="Delimiter">;</span>
+<span id="L182" class="LineNr"> 182 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>to<span class="Delimiter">-&gt;</span>atom &amp;&amp; is_type_ingredient_name<span class="Delimiter">(</span>to<span class="Delimiter">-&gt;</span>name<span class="Delimiter">))</span> <span class="Identifier">return</span> <span class="Constant">true</span><span class="Delimiter">;</span>  <span class="Comment">// type ingredient matches anything</span>
+<span id="L183" class="LineNr"> 183 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!to<span class="Delimiter">-&gt;</span>atom &amp;&amp; to<span class="Delimiter">-&gt;</span>right == <span class="Constant">NULL</span> &amp;&amp; to<span class="Delimiter">-&gt;</span>left != <span class="Constant">NULL</span> &amp;&amp; to<span class="Delimiter">-&gt;</span>left<span class="Delimiter">-&gt;</span>atom &amp;&amp; is_type_ingredient_name<span class="Delimiter">(</span>to<span class="Delimiter">-&gt;</span>left<span class="Delimiter">-&gt;</span>name<span class="Delimiter">))</span> <span class="Identifier">return</span> <span class="Constant">true</span><span class="Delimiter">;</span>
+<span id="L184" class="LineNr"> 184 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>from<span class="Delimiter">-&gt;</span>atom &amp;&amp; is_mu_address<span class="Delimiter">(</span>to<span class="Delimiter">))</span>
+<span id="L185" class="LineNr"> 185 </span>  <span class="Conceal">¦</span> <span class="Identifier">return</span> from<span class="Delimiter">-&gt;</span>name == <span class="Constant">&quot;literal&quot;</span> &amp;&amp; rhs_reagent<span class="Delimiter">.</span>name == <span class="Constant">&quot;0&quot;</span><span class="Delimiter">;</span>
+<span id="L186" class="LineNr"> 186 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!from<span class="Delimiter">-&gt;</span>atom &amp;&amp; !to<span class="Delimiter">-&gt;</span>atom<span class="Delimiter">)</span>
+<span id="L187" class="LineNr"> 187 </span>  <span class="Conceal">¦</span> <span class="Identifier">return</span> concrete_type_names_strictly_match<span class="Delimiter">(</span>to<span class="Delimiter">-&gt;</span>left<span class="Delimiter">,</span> from<span class="Delimiter">-&gt;</span>left<span class="Delimiter">,</span> rhs_reagent<span class="Delimiter">)</span>
+<span id="L188" class="LineNr"> 188 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> &amp;&amp; concrete_type_names_strictly_match<span class="Delimiter">(</span>to<span class="Delimiter">-&gt;</span>right<span class="Delimiter">,</span> from<span class="Delimiter">-&gt;</span>right<span class="Delimiter">,</span> rhs_reagent<span class="Delimiter">);</span>
+<span id="L189" class="LineNr"> 189 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>from<span class="Delimiter">-&gt;</span>atom != to<span class="Delimiter">-&gt;</span>atom<span class="Delimiter">)</span> <span class="Identifier">return</span> <span class="Constant">false</span><span class="Delimiter">;</span>
+<span id="L190" class="LineNr"> 190 </span>  <span class="Comment">// both from and to are atoms</span>
+<span id="L191" class="LineNr"> 191 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>from<span class="Delimiter">-&gt;</span>name == <span class="Constant">&quot;literal&quot;</span><span class="Delimiter">)</span>
+<span id="L192" class="LineNr"> 192 </span>  <span class="Conceal">¦</span> <span class="Identifier">return</span> Literal_type_names<span class="Delimiter">.</span>find<span class="Delimiter">(</span>to<span class="Delimiter">-&gt;</span>name<span class="Delimiter">)</span> != Literal_type_names<span class="Delimiter">.</span><a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
+<span id="L193" class="LineNr"> 193 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>to<span class="Delimiter">-&gt;</span>name == <span class="Constant">&quot;literal&quot;</span><span class="Delimiter">)</span>
+<span id="L194" class="LineNr"> 194 </span>  <span class="Conceal">¦</span> <span class="Identifier">return</span> Literal_type_names<span class="Delimiter">.</span>find<span class="Delimiter">(</span>from<span class="Delimiter">-&gt;</span>name<span class="Delimiter">)</span> != Literal_type_names<span class="Delimiter">.</span><a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
+<span id="L195" class="LineNr"> 195 </span>  <span class="Identifier">return</span> to<span class="Delimiter">-&gt;</span>name == from<span class="Delimiter">-&gt;</span>name<span class="Delimiter">;</span>
+<span id="L196" class="LineNr"> 196 </span><span class="Delimiter">}</span>
+<span id="L197" class="LineNr"> 197 </span>
+<span id="L198" class="LineNr"> 198 </span><span class="Normal">bool</span> contains_type_ingredient_name<span class="Delimiter">(</span><span class="Normal">const</span> reagent&amp; x<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L199" class="LineNr"> 199 </span>  <span class="Identifier">return</span> contains_type_ingredient_name<span class="Delimiter">(</span>x<span class="Delimiter">.</span>type<span class="Delimiter">);</span>
+<span id="L200" class="LineNr"> 200 </span><span class="Delimiter">}</span>
+<span id="L201" class="LineNr"> 201 </span>
+<span id="L202" class="LineNr"> 202 </span><span class="Normal">bool</span> contains_type_ingredient_name<span class="Delimiter">(</span><span class="Normal">const</span> type_tree* type<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L203" class="LineNr"> 203 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!type<span class="Delimiter">)</span> <span class="Identifier">return</span> <span class="Constant">false</span><span class="Delimiter">;</span>
+<span id="L204" class="LineNr"> 204 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>is_type_ingredient_name<span class="Delimiter">(</span>type<span class="Delimiter">-&gt;</span>name<span class="Delimiter">))</span> <span class="Identifier">return</span> <span class="Constant">true</span><span class="Delimiter">;</span>
+<span id="L205" class="LineNr"> 205 </span>  <span class="Identifier">return</span> contains_type_ingredient_name<span class="Delimiter">(</span>type<span class="Delimiter">-&gt;</span>left<span class="Delimiter">)</span> || contains_type_ingredient_name<span class="Delimiter">(</span>type<span class="Delimiter">-&gt;</span>right<span class="Delimiter">);</span>
+<span id="L206" class="LineNr"> 206 </span><span class="Delimiter">}</span>
+<span id="L207" class="LineNr"> 207 </span>
+<span id="L208" class="LineNr"> 208 </span><span class="Normal">int</span> number_of_concrete_type_names<span class="Delimiter">(</span><a href='001help.cc.html#L259'>unused</a> <span class="Normal">const</span> instruction&amp; inst<span class="Delimiter">,</span> <a href='010vm.cc.html#L14'>recipe_ordinal</a> r<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L209" class="LineNr"> 209 </span>  <span class="Normal">const</span> recipe&amp; caller = get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">);</span>
+<span id="L210" class="LineNr"> 210 </span>  <span class="Normal">int</span> result = <span class="Constant">0</span><span class="Delimiter">;</span>
+<span id="L211" class="LineNr"> 211 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> i = <span class="Constant">0</span><span class="Delimiter">;</span>  i &lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>caller<span class="Delimiter">.</span>ingredients<span class="Delimiter">);</span>  ++i<span class="Delimiter">)</span>
+<span id="L212" class="LineNr"> 212 </span>  <span class="Conceal">¦</span> result += number_of_concrete_type_names<span class="Delimiter">(</span>caller<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">).</span>type<span class="Delimiter">);</span>
+<span id="L213" class="LineNr"> 213 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> i = <span class="Constant">0</span><span class="Delimiter">;</span>  i &lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>caller<span class="Delimiter">.</span>products<span class="Delimiter">);</span>  ++i<span class="Delimiter">)</span>
+<span id="L214" class="LineNr"> 214 </span>  <span class="Conceal">¦</span> result += number_of_concrete_type_names<span class="Delimiter">(</span>caller<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">).</span>type<span class="Delimiter">);</span>
+<span id="L215" class="LineNr"> 215 </span>  <span class="Identifier">return</span> result<span class="Delimiter">;</span>
+<span id="L216" class="LineNr"> 216 </span><span class="Delimiter">}</span>
+<span id="L217" class="LineNr"> 217 </span>
+<span id="L218" class="LineNr"> 218 </span><span class="Normal">int</span> number_of_concrete_type_names<span class="Delimiter">(</span><span class="Normal">const</span> type_tree* type<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L219" class="LineNr"> 219 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!type<span class="Delimiter">)</span> <span class="Identifier">return</span> <span class="Constant">0</span><span class="Delimiter">;</span>
+<span id="L220" class="LineNr"> 220 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>type<span class="Delimiter">-&gt;</span>atom<span class="Delimiter">)</span>
+<span id="L221" class="LineNr"> 221 </span>  <span class="Conceal">¦</span> <span class="Identifier">return</span> is_type_ingredient_name<span class="Delimiter">(</span>type<span class="Delimiter">-&gt;</span>name<span class="Delimiter">)</span> ? <span class="Constant">0</span> : <span class="Constant">1</span><span class="Delimiter">;</span>
+<span id="L222" class="LineNr"> 222 </span>  <span class="Identifier">return</span> number_of_concrete_type_names<span class="Delimiter">(</span>type<span class="Delimiter">-&gt;</span>left<span class="Delimiter">)</span>
+<span id="L223" class="LineNr"> 223 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span>+ number_of_concrete_type_names<span class="Delimiter">(</span>type<span class="Delimiter">-&gt;</span>right<span class="Delimiter">);</span>
+<span id="L224" class="LineNr"> 224 </span><span class="Delimiter">}</span>
+<span id="L225" class="LineNr"> 225 </span>
+<span id="L226" class="LineNr"> 226 </span><span class="Normal">int</span> number_of_type_ingredients<span class="Delimiter">(</span><a href='001help.cc.html#L259'>unused</a> <span class="Normal">const</span> instruction&amp; inst<span class="Delimiter">,</span> <a href='010vm.cc.html#L14'>recipe_ordinal</a> r<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L227" class="LineNr"> 227 </span>  <span class="Normal">const</span> recipe&amp; caller = get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">);</span>
+<span id="L228" class="LineNr"> 228 </span>  <span class="Normal">int</span> result = <span class="Constant">0</span><span class="Delimiter">;</span>
+<span id="L229" class="LineNr"> 229 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> i = <span class="Constant">0</span><span class="Delimiter">;</span>  i &lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>caller<span class="Delimiter">.</span>ingredients<span class="Delimiter">);</span>  ++i<span class="Delimiter">)</span>
+<span id="L230" class="LineNr"> 230 </span>  <span class="Conceal">¦</span> result += number_of_type_ingredients<span class="Delimiter">(</span>caller<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">).</span>type<span class="Delimiter">);</span>
+<span id="L231" class="LineNr"> 231 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> i = <span class="Constant">0</span><span class="Delimiter">;</span>  i &lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>caller<span class="Delimiter">.</span>products<span class="Delimiter">);</span>  ++i<span class="Delimiter">)</span>
+<span id="L232" class="LineNr"> 232 </span>  <span class="Conceal">¦</span> result += number_of_type_ingredients<span class="Delimiter">(</span>caller<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">).</span>type<span class="Delimiter">);</span>
+<span id="L233" class="LineNr"> 233 </span>  <span class="Identifier">return</span> result<span class="Delimiter">;</span>
+<span id="L234" class="LineNr"> 234 </span><span class="Delimiter">}</span>
+<span id="L235" class="LineNr"> 235 </span>
+<span id="L236" class="LineNr"> 236 </span><span class="Normal">int</span> number_of_type_ingredients<span class="Delimiter">(</span><span class="Normal">const</span> type_tree* type<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L237" class="LineNr"> 237 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!type<span class="Delimiter">)</span> <span class="Identifier">return</span> <span class="Constant">0</span><span class="Delimiter">;</span>
+<span id="L238" class="LineNr"> 238 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>type<span class="Delimiter">-&gt;</span>atom<span class="Delimiter">)</span>
+<span id="L239" class="LineNr"> 239 </span>  <span class="Conceal">¦</span> <span class="Identifier">return</span> is_type_ingredient_name<span class="Delimiter">(</span>type<span class="Delimiter">-&gt;</span>name<span class="Delimiter">)</span> ? <span class="Constant">1</span> : <span class="Constant">0</span><span class="Delimiter">;</span>
+<span id="L240" class="LineNr"> 240 </span>  <span class="Identifier">return</span> number_of_type_ingredients<span class="Delimiter">(</span>type<span class="Delimiter">-&gt;</span>left<span class="Delimiter">)</span>
+<span id="L241" class="LineNr"> 241 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span>+ number_of_type_ingredients<span class="Delimiter">(</span>type<span class="Delimiter">-&gt;</span>right<span class="Delimiter">);</span>
+<span id="L242" class="LineNr"> 242 </span><span class="Delimiter">}</span>
+<span id="L243" class="LineNr"> 243 </span>
+<span id="L244" class="LineNr"> 244 </span><span class="Comment">// returns name of new variant</span>
+<span id="L245" class="LineNr"> 245 </span>string <a href='056shape_shifting_recipe.cc.html#L245'>insert_new_variant</a><span class="Delimiter">(</span><a href='010vm.cc.html#L14'>recipe_ordinal</a> exemplar<span class="Delimiter">,</span> <span class="Normal">const</span> instruction&amp; inst<span class="Delimiter">,</span> <span class="Normal">const</span> recipe&amp; caller_recipe<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L246" class="LineNr"> 246 </span>  string new_name = <a href='054static_dispatch.cc.html#L111'>next_unused_recipe_name</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>name<span class="Delimiter">);</span>
+<span id="L247" class="LineNr"> 247 </span>  assert<span class="Delimiter">(</span>!contains_key<span class="Delimiter">(</span>Recipe_ordinal<span class="Delimiter">,</span> new_name<span class="Delimiter">));</span>
+<span id="L248" class="LineNr"> 248 </span>  <a href='010vm.cc.html#L14'>recipe_ordinal</a> new_recipe_ordinal = <a href='001help.cc.html#L221'>put</a><span class="Delimiter">(</span>Recipe_ordinal<span class="Delimiter">,</span> new_name<span class="Delimiter">,</span> Next_recipe_ordinal++<span class="Delimiter">);</span>
+<span id="L249" class="LineNr"> 249 </span>  <span class="Comment">// make a copy</span>
+<span id="L250" class="LineNr"> 250 </span>  assert<span class="Delimiter">(</span>contains_key<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> exemplar<span class="Delimiter">));</span>
+<span id="L251" class="LineNr"> 251 </span>  assert<span class="Delimiter">(</span>!contains_key<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> new_recipe_ordinal<span class="Delimiter">));</span>
+<span id="L252" class="LineNr"> 252 </span>  <a href='001help.cc.html#L221'>put</a><span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> new_recipe_ordinal<span class="Delimiter">,</span> <span class="Comment">/*</span><span class="Comment">copy</span><span class="Comment">*/</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> exemplar<span class="Delimiter">));</span>
+<span id="L253" class="LineNr"> 253 </span>  recipe&amp; new_recipe = get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> new_recipe_ordinal<span class="Delimiter">);</span>
+<span id="L254" class="LineNr"> 254 </span>  new_recipe<span class="Delimiter">.</span>name = new_name<span class="Delimiter">;</span>
+<span id="L255" class="LineNr"> 255 </span>  new_recipe<span class="Delimiter">.</span>is_autogenerated = <span class="Constant">true</span><span class="Delimiter">;</span>
+<span id="L256" class="LineNr"> 256 </span>  <a href='003trace.cc.html#L167'>trace</a><span class="Delimiter">(</span><span class="Constant">9993</span><span class="Delimiter">,</span> <span class="Constant">&quot;transform&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;switching &quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>name &lt;&lt; <span class="Constant">&quot; to specialized &quot;</span> &lt;&lt; header_label<span class="Delimiter">(</span>new_recipe<span class="Delimiter">)</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
+<span id="L257" class="LineNr"> 257 </span>
+<span id="L258" class="LineNr"> 258 </span>  <a href='003trace.cc.html#L167'>trace</a><span class="Delimiter">(</span><span class="Constant">9992</span><span class="Delimiter">,</span> <span class="Constant">&quot;transform&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;transforming new specialization: &quot;</span> &lt;&lt; new_recipe<span class="Delimiter">.</span>name &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
+<span id="L259" class="LineNr"> 259 </span>  <a href='003trace.cc.html#L167'>trace</a><span class="Delimiter">(</span><span class="Constant">9992</span><span class="Delimiter">,</span> <span class="Constant">&quot;transform&quot;</span><span class="Delimiter">)</span> &lt;&lt; new_recipe<span class="Delimiter">.</span>name &lt;&lt; <span class="Constant">&quot;: performing transforms until check_or_set_types_by_name&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
+<span id="L260" class="LineNr"> 260 </span>  <span class="Normal">int</span> transform_index = <span class="Constant">0</span><span class="Delimiter">;</span>
+<span id="L261" class="LineNr"> 261 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span>transform_index = <span class="Constant">0</span><span class="Delimiter">;</span>  transform_index &lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>Transform<span class="Delimiter">);</span>  ++transform_index<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L262" class="LineNr"> 262 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>Transform<span class="Delimiter">.</span>at<span class="Delimiter">(</span>transform_index<span class="Delimiter">)</span> == <a href='046check_type_by_name.cc.html#L21'>check_or_set_types_by_name</a><span class="Delimiter">)</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
+<span id="L263" class="LineNr"> 263 </span>  <span class="Conceal">¦</span> <span class="Delimiter">(</span>*Transform<span class="Delimiter">.</span>at<span class="Delimiter">(</span>transform_index<span class="Delimiter">))(</span>new_recipe_ordinal<span class="Delimiter">);</span>
+<span id="L264" class="LineNr"> 264 </span>  <span class="Delimiter">}</span>
+<span id="L265" class="LineNr"> 265 </span>  new_recipe<span class="Delimiter">.</span>transformed_until = transform_index-<span class="Constant">1</span><span class="Delimiter">;</span>
+<span id="L266" class="LineNr"> 266 </span>
+<span id="L267" class="LineNr"> 267 </span>  <a href='003trace.cc.html#L167'>trace</a><span class="Delimiter">(</span><span class="Constant">9992</span><span class="Delimiter">,</span> <span class="Constant">&quot;transform&quot;</span><span class="Delimiter">)</span> &lt;&lt; new_recipe<span class="Delimiter">.</span>name &lt;&lt; <span class="Constant">&quot;: performing type-ingredient-aware version of <a href='012transform.cc.html#L99'>transform</a> check_or_set_types_by_name&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
+<span id="L268" class="LineNr"> 268 </span>  <a href='056shape_shifting_recipe.cc.html#L293'>compute_type_names</a><span class="Delimiter">(</span>new_recipe<span class="Delimiter">);</span>
+<span id="L269" class="LineNr"> 269 </span>  new_recipe<span class="Delimiter">.</span>transformed_until++<span class="Delimiter">;</span>
+<span id="L270" class="LineNr"> 270 </span>
+<span id="L271" class="LineNr"> 271 </span>  <a href='003trace.cc.html#L167'>trace</a><span class="Delimiter">(</span><span class="Constant">9992</span><span class="Delimiter">,</span> <span class="Constant">&quot;transform&quot;</span><span class="Delimiter">)</span> &lt;&lt; new_recipe<span class="Delimiter">.</span>name &lt;&lt; <span class="Constant">&quot;: replacing type ingredients&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
+<span id="L272" class="LineNr"> 272 </span>  <span class="Delimiter">{</span>
+<span id="L273" class="LineNr"> 273 </span>  <span class="Conceal">¦</span> map&lt;string<span class="Delimiter">,</span> <span class="Normal">const</span> type_tree*&gt; mappings<span class="Delimiter">;</span>
+<span id="L274" class="LineNr"> 274 </span>  <span class="Conceal">¦</span> <span class="Normal">bool</span> error = <span class="Constant">false</span><span class="Delimiter">;</span>
+<span id="L275" class="LineNr"> 275 </span>  <span class="Conceal">¦</span> <a href='056shape_shifting_recipe.cc.html#L331'>compute_type_ingredient_mappings</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> exemplar<span class="Delimiter">),</span> inst<span class="Delimiter">,</span> mappings<span class="Delimiter">,</span> caller_recipe<span class="Delimiter">,</span> &amp;error<span class="Delimiter">);</span>
+<span id="L276" class="LineNr"> 276 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>!error<span class="Delimiter">)</span> error = <span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>mappings<span class="Delimiter">)</span> != <a href='056shape_shifting_recipe.cc.html#L469'>type_ingredient_count_in_header</a><span class="Delimiter">(</span>exemplar<span class="Delimiter">));</span>
+<span id="L277" class="LineNr"> 277 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>!error<span class="Delimiter">)</span> replace_type_ingredients<span class="Delimiter">(</span>new_recipe<span class="Delimiter">,</span> mappings<span class="Delimiter">);</span>
+<span id="L278" class="LineNr"> 278 </span>  <span class="Conceal">¦</span> <span class="Normal">for</span> <span class="Delimiter">(</span>map&lt;string<span class="Delimiter">,</span> <span class="Normal">const</span> type_tree*&gt;::iterator p = mappings<span class="Delimiter">.</span>begin<span class="Delimiter">();</span>  p != mappings<span class="Delimiter">.</span><a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>  ++p<span class="Delimiter">)</span>
+<span id="L279" class="LineNr"> 279 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">delete</span> p<span class="Delimiter">-&gt;</span>second<span class="Delimiter">;</span>
+<span id="L280" class="LineNr"> 280 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>error<span class="Delimiter">)</span> <span class="Identifier">return</span> <span class="Constant">&quot;&quot;</span><span class="Delimiter">;</span>
+<span id="L281" class="LineNr"> 281 </span>  <span class="Delimiter">}</span>
+<span id="L282" class="LineNr"> 282 </span>  ensure_all_concrete_types<span class="Delimiter">(</span>new_recipe<span class="Delimiter">,</span> get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> exemplar<span class="Delimiter">));</span>
+<span id="L283" class="LineNr"> 283 </span>
+<span id="L284" class="LineNr"> 284 </span>  <a href='003trace.cc.html#L167'>trace</a><span class="Delimiter">(</span><span class="Constant">9992</span><span class="Delimiter">,</span> <span class="Constant">&quot;transform&quot;</span><span class="Delimiter">)</span> &lt;&lt; new_recipe<span class="Delimiter">.</span>name &lt;&lt; <span class="Constant">&quot;: recording the new variant before recursively calling resolve_ambiguous_calls&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
+<span id="L285" class="LineNr"> 285 </span>  get<span class="Delimiter">(</span>Recipe_variants<span class="Delimiter">,</span> inst<span class="Delimiter">.</span>name<span class="Delimiter">).</span>push_back<span class="Delimiter">(</span>new_recipe_ordinal<span class="Delimiter">);</span>
+<span id="L286" class="LineNr"> 286 </span>  <a href='003trace.cc.html#L167'>trace</a><span class="Delimiter">(</span><span class="Constant">9992</span><span class="Delimiter">,</span> <span class="Constant">&quot;transform&quot;</span><span class="Delimiter">)</span> &lt;&lt; new_recipe<span class="Delimiter">.</span>name &lt;&lt; <span class="Constant">&quot;: performing remaining transforms (including resolve_ambiguous_calls)&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
+<span id="L287" class="LineNr"> 287 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Comment">/*</span><span class="Comment">nada</span><span class="Comment">*/</span><span class="Delimiter">;</span>  transform_index &lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>Transform<span class="Delimiter">);</span>  ++transform_index<span class="Delimiter">)</span>
+<span id="L288" class="LineNr"> 288 </span>  <span class="Conceal">¦</span> <span class="Delimiter">(</span>*Transform<span class="Delimiter">.</span>at<span class="Delimiter">(</span>transform_index<span class="Delimiter">))(</span>new_recipe_ordinal<span class="Delimiter">);</span>
+<span id="L289" class="LineNr"> 289 </span>  new_recipe<span class="Delimiter">.</span>transformed_until = <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>Transform<span class="Delimiter">)</span>-<span class="Constant">1</span><span class="Delimiter">;</span>
+<span id="L290" class="LineNr"> 290 </span>  <span class="Identifier">return</span> new_recipe<span class="Delimiter">.</span>name<span class="Delimiter">;</span>
+<span id="L291" class="LineNr"> 291 </span><span class="Delimiter">}</span>
+<span id="L292" class="LineNr"> 292 </span>
+<span id="L293" class="LineNr"> 293 </span><span class="Normal">void</span> <a href='056shape_shifting_recipe.cc.html#L293'>compute_type_names</a><span class="Delimiter">(</span>recipe&amp; variant<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L294" class="LineNr"> 294 </span>  <a href='003trace.cc.html#L167'>trace</a><span class="Delimiter">(</span><span class="Constant">9993</span><span class="Delimiter">,</span> <span class="Constant">&quot;transform&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;-- compute type names: &quot;</span> &lt;&lt; variant<span class="Delimiter">.</span>name &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
+<span id="L295" class="LineNr"> 295 </span>  map&lt;string<span class="Delimiter">,</span> type_tree*&gt; type_names<span class="Delimiter">;</span>
+<span id="L296" class="LineNr"> 296 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> i = <span class="Constant">0</span><span class="Delimiter">;</span>  i &lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>variant<span class="Delimiter">.</span>ingredients<span class="Delimiter">);</span>  ++i<span class="Delimiter">)</span>
+<span id="L297" class="LineNr"> 297 </span>  <span class="Conceal">¦</span> <a href='056shape_shifting_recipe.cc.html#L310'>save_or_deduce_type_name</a><span class="Delimiter">(</span>variant<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">),</span> type_names<span class="Delimiter">,</span> variant<span class="Delimiter">,</span> <span class="Constant">&quot;&quot;</span><span class="Delimiter">);</span>
+<span id="L298" class="LineNr"> 298 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> i = <span class="Constant">0</span><span class="Delimiter">;</span>  i &lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>variant<span class="Delimiter">.</span>products<span class="Delimiter">);</span>  ++i<span class="Delimiter">)</span>
+<span id="L299" class="LineNr"> 299 </span>  <span class="Conceal">¦</span> <a href='056shape_shifting_recipe.cc.html#L310'>save_or_deduce_type_name</a><span class="Delimiter">(</span>variant<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">),</span> type_names<span class="Delimiter">,</span> variant<span class="Delimiter">,</span> <span class="Constant">&quot;&quot;</span><span class="Delimiter">);</span>
+<span id="L300" class="LineNr"> 300 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> i = <span class="Constant">0</span><span class="Delimiter">;</span>  i &lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>variant<span class="Delimiter">.</span>steps<span class="Delimiter">);</span>  ++i<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L301" class="LineNr"> 301 </span>  <span class="Conceal">¦</span> instruction&amp; inst = variant<span class="Delimiter">.</span>steps<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">);</span>
+<span id="L302" class="LineNr"> 302 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L167'>trace</a><span class="Delimiter">(</span><span class="Constant">9993</span><span class="Delimiter">,</span> <span class="Constant">&quot;transform&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;  <a href='010vm.cc.html#L32'>instruction</a>: &quot;</span> &lt;&lt; <a href='028call_return.cc.html#L163'>to_string</a><span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
+<span id="L303" class="LineNr"> 303 </span>  <span class="Conceal">¦</span> <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> in = <span class="Constant">0</span><span class="Delimiter">;</span>  in &lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">);</span>  ++in<span class="Delimiter">)</span>
+<span id="L304" class="LineNr"> 304 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='056shape_shifting_recipe.cc.html#L310'>save_or_deduce_type_name</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>in<span class="Delimiter">),</span> type_names<span class="Delimiter">,</span> variant<span class="Delimiter">,</span> <span class="Constant">&quot; in '&quot;</span> + to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> + <span class="Constant">&quot;'&quot;</span><span class="Delimiter">);</span>
+<span id="L305" class="LineNr"> 305 </span>  <span class="Conceal">¦</span> <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> out = <span class="Constant">0</span><span class="Delimiter">;</span>  out &lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>products<span class="Delimiter">);</span>  ++out<span class="Delimiter">)</span>
+<span id="L306" class="LineNr"> 306 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='056shape_shifting_recipe.cc.html#L310'>save_or_deduce_type_name</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span>out<span class="Delimiter">),</span> type_names<span class="Delimiter">,</span> variant<span class="Delimiter">,</span> <span class="Constant">&quot; in '&quot;</span> + to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> + <span class="Constant">&quot;'&quot;</span><span class="Delimiter">);</span>
+<span id="L307" class="LineNr"> 307 </span>  <span class="Delimiter">}</span>
+<span id="L308" class="LineNr"> 308 </span><span class="Delimiter">}</span>
+<span id="L309" class="LineNr"> 309 </span>
+<span id="L310" class="LineNr"> 310 </span><span class="Normal">void</span> <a href='056shape_shifting_recipe.cc.html#L310'>save_or_deduce_type_name</a><span class="Delimiter">(</span>reagent&amp; x<span class="Delimiter">,</span> map&lt;string<span class="Delimiter">,</span> type_tree*&gt;&amp; type<span class="Delimiter">,</span> <span class="Normal">const</span> recipe&amp; variant<span class="Delimiter">,</span> <span class="Normal">const</span> string&amp; context<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L311" class="LineNr"> 311 </span>  <a href='003trace.cc.html#L167'>trace</a><span class="Delimiter">(</span><span class="Constant">9994</span><span class="Delimiter">,</span> <span class="Constant">&quot;transform&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;    checking &quot;</span> &lt;&lt; <a href='028call_return.cc.html#L163'>to_string</a><span class="Delimiter">(</span>x<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;: &quot;</span> &lt;&lt; names_to_string<span class="Delimiter">(</span>x<span class="Delimiter">.</span>type<span class="Delimiter">)</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
+<span id="L312" class="LineNr"> 312 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!x<span class="Delimiter">.</span>type &amp;&amp; contains_key<span class="Delimiter">(</span>type<span class="Delimiter">,</span> x<span class="Delimiter">.</span>name<span class="Delimiter">))</span> <span class="Delimiter">{</span>
+<span id="L313" class="LineNr"> 313 </span>  <span class="Conceal">¦</span> x<span class="Delimiter">.</span>type = <span class="Normal">new</span> type_tree<span class="Delimiter">(</span>*get<span class="Delimiter">(</span>type<span class="Delimiter">,</span> x<span class="Delimiter">.</span>name<span class="Delimiter">));</span>
+<span id="L314" class="LineNr"> 314 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L167'>trace</a><span class="Delimiter">(</span><span class="Constant">9994</span><span class="Delimiter">,</span> <span class="Constant">&quot;transform&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;    deducing type to &quot;</span> &lt;&lt; names_to_string<span class="Delimiter">(</span>x<span class="Delimiter">.</span>type<span class="Delimiter">)</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
+<span id="L315" class="LineNr"> 315 </span>  <span class="Conceal">¦</span> <span class="Identifier">return</span><span class="Delimiter">;</span>
+<span id="L316" class="LineNr"> 316 </span>  <span class="Delimiter">}</span>
+<span id="L317" class="LineNr"> 317 </span>  <span class="Comment">// Type Check in Type-ingredient-aware check_or_set_types_by_name</span>
+<span id="L318" class="LineNr"> 318 </span>  <span class="Comment">// This is different from check_or_set_types_by_name.</span>
+<span id="L319" class="LineNr"> 319 </span>  <span class="Comment">// We've found it useful in the past for tracking down bugs in</span>
+<span id="L320" class="LineNr"> 320 </span>  <span class="Comment">// specialization.</span>
+<span id="L321" class="LineNr"> 321 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!x<span class="Delimiter">.</span>type<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L322" class="LineNr"> 322 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>variant<span class="Delimiter">.</span>original_name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;unknown type for '&quot;</span> &lt;&lt; x<span class="Delimiter">.</span>original_string &lt;&lt; <span class="Constant">&quot;'&quot;</span> &lt;&lt; context &lt;&lt; <span class="Constant">&quot; (check the name for typos)</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
+<span id="L323" class="LineNr"> 323 </span>  <span class="Conceal">¦</span> <span class="Identifier">return</span><span class="Delimiter">;</span>
+<span id="L324" class="LineNr"> 324 </span>  <span class="Delimiter">}</span>
+<span id="L325" class="LineNr"> 325 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>contains_key<span class="Delimiter">(</span>type<span class="Delimiter">,</span> x<span class="Delimiter">.</span>name<span class="Delimiter">))</span> <span class="Identifier">return</span><span class="Delimiter">;</span>
+<span id="L326" class="LineNr"> 326 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>x<span class="Delimiter">.</span>type<span class="Delimiter">-&gt;</span>name == <span class="Constant">&quot;offset&quot;</span> || x<span class="Delimiter">.</span>type<span class="Delimiter">-&gt;</span>name == <span class="Constant">&quot;variant&quot;</span><span class="Delimiter">)</span> <span class="Identifier">return</span><span class="Delimiter">;</span>  <span class="Comment">// special-case for container-access instructions</span>
+<span id="L327" class="LineNr"> 327 </span>  <a href='001help.cc.html#L221'>put</a><span class="Delimiter">(</span>type<span class="Delimiter">,</span> x<span class="Delimiter">.</span>name<span class="Delimiter">,</span> x<span class="Delimiter">.</span>type<span class="Delimiter">);</span>
+<span id="L328" class="LineNr"> 328 </span>  <a href='003trace.cc.html#L167'>trace</a><span class="Delimiter">(</span><span class="Constant">9993</span><span class="Delimiter">,</span> <span class="Constant">&quot;transform&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;type of '&quot;</span> &lt;&lt; x<span class="Delimiter">.</span>name &lt;&lt; <span class="Constant">&quot;' is &quot;</span> &lt;&lt; names_to_string<span class="Delimiter">(</span>x<span class="Delimiter">.</span>type<span class="Delimiter">)</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
+<span id="L329" class="LineNr"> 329 </span><span class="Delimiter">}</span>
+<span id="L330" class="LineNr"> 330 </span>
+<span id="L331" class="LineNr"> 331 </span><span class="Normal">void</span> <a href='056shape_shifting_recipe.cc.html#L331'>compute_type_ingredient_mappings</a><span class="Delimiter">(</span><span class="Normal">const</span> recipe&amp; exemplar<span class="Delimiter">,</span> <span class="Normal">const</span> instruction&amp; inst<span class="Delimiter">,</span> map&lt;string<span class="Delimiter">,</span> <span class="Normal">const</span> type_tree*&gt;&amp; mappings<span class="Delimiter">,</span> <span class="Normal">const</span> recipe&amp; caller_recipe<span class="Delimiter">,</span> <span class="Normal">bool</span>* error<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L332" class="LineNr"> 332 </span>  <span class="Normal">int</span> limit = min<span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">),</span> <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>exemplar<span class="Delimiter">.</span>ingredients<span class="Delimiter">));</span>
+<span id="L333" class="LineNr"> 333 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> i = <span class="Constant">0</span><span class="Delimiter">;</span>  i &lt; limit<span class="Delimiter">;</span>  ++i<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L334" class="LineNr"> 334 </span>  <span class="Conceal">¦</span> <span class="Normal">const</span> reagent&amp; exemplar_reagent = exemplar<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">);</span>
+<span id="L335" class="LineNr"> 335 </span>  <span class="Conceal">¦</span> reagent<span class="Comment">/*</span><span class="Comment">copy</span><span class="Comment">*/</span> ingredient = inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">);</span>
+<span id="L336" class="LineNr"> 336 </span>  <span class="Conceal">¦</span> canonize_type<span class="Delimiter">(</span>ingredient<span class="Delimiter">);</span>
+<span id="L337" class="LineNr"> 337 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>is_mu_address<span class="Delimiter">(</span>exemplar_reagent<span class="Delimiter">)</span> &amp;&amp; ingredient<span class="Delimiter">.</span>name == <span class="Constant">&quot;0&quot;</span><span class="Delimiter">)</span> <span class="Identifier">continue</span><span class="Delimiter">;</span>  <span class="Comment">// assume it matches</span>
+<span id="L338" class="LineNr"> 338 </span>  <span class="Conceal">¦</span> accumulate_type_ingredients<span class="Delimiter">(</span>exemplar_reagent<span class="Delimiter">,</span> ingredient<span class="Delimiter">,</span> mappings<span class="Delimiter">,</span> exemplar<span class="Delimiter">,</span> inst<span class="Delimiter">,</span> caller_recipe<span class="Delimiter">,</span> error<span class="Delimiter">);</span>
+<span id="L339" class="LineNr"> 339 </span>  <span class="Delimiter">}</span>
+<span id="L340" class="LineNr"> 340 </span>  limit = min<span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>products<span class="Delimiter">),</span> <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>exemplar<span class="Delimiter">.</span>products<span class="Delimiter">));</span>
+<span id="L341" class="LineNr"> 341 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> i = <span class="Constant">0</span><span class="Delimiter">;</span>  i &lt; limit<span class="Delimiter">;</span>  ++i<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L342" class="LineNr"> 342 </span>  <span class="Conceal">¦</span> <span class="Normal">const</span> reagent&amp; exemplar_reagent = exemplar<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">);</span>
+<span id="L343" class="LineNr"> 343 </span>  <span class="Conceal">¦</span> reagent<span class="Comment">/*</span><span class="Comment">copy</span><span class="Comment">*/</span> product = inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">);</span>
+<span id="L344" class="LineNr"> 344 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>is_dummy<span class="Delimiter">(</span>product<span class="Delimiter">))</span> <span class="Identifier">continue</span><span class="Delimiter">;</span>
+<span id="L345" class="LineNr"> 345 </span>  <span class="Conceal">¦</span> canonize_type<span class="Delimiter">(</span>product<span class="Delimiter">);</span>
+<span id="L346" class="LineNr"> 346 </span>  <span class="Conceal">¦</span> accumulate_type_ingredients<span class="Delimiter">(</span>exemplar_reagent<span class="Delimiter">,</span> product<span class="Delimiter">,</span> mappings<span class="Delimiter">,</span> exemplar<span class="Delimiter">,</span> inst<span class="Delimiter">,</span> caller_recipe<span class="Delimiter">,</span> error<span class="Delimiter">);</span>
+<span id="L347" class="LineNr"> 347 </span>  <span class="Delimiter">}</span>
+<span id="L348" class="LineNr"> 348 </span><span class="Delimiter">}</span>
+<span id="L349" class="LineNr"> 349 </span>
+<span id="L350" class="LineNr"> 350 </span><span class="Normal">void</span> accumulate_type_ingredients<span class="Delimiter">(</span><span class="Normal">const</span> reagent&amp; exemplar_reagent<span class="Delimiter">,</span> reagent&amp; refinement<span class="Delimiter">,</span> map&lt;string<span class="Delimiter">,</span> <span class="Normal">const</span> type_tree*&gt;&amp; mappings<span class="Delimiter">,</span> <span class="Normal">const</span> recipe&amp; exemplar<span class="Delimiter">,</span> <span class="Normal">const</span> instruction&amp; call_instruction<span class="Delimiter">,</span> <span class="Normal">const</span> recipe&amp; caller_recipe<span class="Delimiter">,</span> <span class="Normal">bool</span>* error<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L351" class="LineNr"> 351 </span>  assert<span class="Delimiter">(</span>refinement<span class="Delimiter">.</span>type<span class="Delimiter">);</span>
+<span id="L352" class="LineNr"> 352 </span>  accumulate_type_ingredients<span class="Delimiter">(</span>exemplar_reagent<span class="Delimiter">.</span>type<span class="Delimiter">,</span> refinement<span class="Delimiter">.</span>type<span class="Delimiter">,</span> mappings<span class="Delimiter">,</span> exemplar<span class="Delimiter">,</span> exemplar_reagent<span class="Delimiter">,</span> call_instruction<span class="Delimiter">,</span> caller_recipe<span class="Delimiter">,</span> error<span class="Delimiter">);</span>
+<span id="L353" class="LineNr"> 353 </span><span class="Delimiter">}</span>
+<span id="L354" class="LineNr"> 354 </span>
+<span id="L355" class="LineNr"> 355 </span><span class="Normal">void</span> accumulate_type_ingredients<span class="Delimiter">(</span><span class="Normal">const</span> type_tree* exemplar_type<span class="Delimiter">,</span> <span class="Normal">const</span> type_tree* refinement_type<span class="Delimiter">,</span> map&lt;string<span class="Delimiter">,</span> <span class="Normal">const</span> type_tree*&gt;&amp; mappings<span class="Delimiter">,</span> <span class="Normal">const</span> recipe&amp; exemplar<span class="Delimiter">,</span> <span class="Normal">const</span> reagent&amp; exemplar_reagent<span class="Delimiter">,</span> <span class="Normal">const</span> instruction&amp; call_instruction<span class="Delimiter">,</span> <span class="Normal">const</span> recipe&amp; caller_recipe<span class="Delimiter">,</span> <span class="Normal">bool</span>* error<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L356" class="LineNr"> 356 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!exemplar_type<span class="Delimiter">)</span> <span class="Identifier">return</span><span class="Delimiter">;</span>
+<span id="L357" class="LineNr"> 357 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!refinement_type<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L358" class="LineNr"> 358 </span>  <span class="Conceal">¦</span> <span class="Comment">// probably a bug in mu</span>
+<span id="L359" class="LineNr"> 359 </span>  <span class="Conceal">¦</span> <span class="Comment">// todo: make this smarter; only flag an error if exemplar_type contains some *new* type ingredient</span>
+<span id="L360" class="LineNr"> 360 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>exemplar<span class="Delimiter">.</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;missing type ingredient for &quot;</span> &lt;&lt; exemplar_reagent<span class="Delimiter">.</span>original_string &lt;&lt; <span class="cSpecial">'\n'</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
+<span id="L361" class="LineNr"> 361 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <span class="Constant">&quot;  (called from '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>call_instruction<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;')</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
+<span id="L362" class="LineNr"> 362 </span>  <span class="Conceal">¦</span> <span class="Identifier">return</span><span class="Delimiter">;</span>
+<span id="L363" class="LineNr"> 363 </span>  <span class="Delimiter">}</span>
+<span id="L364" class="LineNr"> 364 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!exemplar_type<span class="Delimiter">-&gt;</span>atom &amp;&amp; exemplar_type<span class="Delimiter">-&gt;</span>right == <span class="Constant">NULL</span> &amp;&amp; !refinement_type<span class="Delimiter">-&gt;</span>atom &amp;&amp; refinement_type<span class="Delimiter">-&gt;</span>right != <span class="Constant">NULL</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L365" class="LineNr"> 365 </span>  <span class="Conceal">¦</span> exemplar_type = exemplar_type<span class="Delimiter">-&gt;</span>left<span class="Delimiter">;</span>
+<span id="L366" class="LineNr"> 366 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L177'>assert_for_now</a><span class="Delimiter">(</span>exemplar_type<span class="Delimiter">-&gt;</span>atom<span class="Delimiter">);</span>
+<span id="L367" class="LineNr"> 367 </span>  <span class="Delimiter">}</span>
+<span id="L368" class="LineNr"> 368 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>exemplar_type<span class="Delimiter">-&gt;</span>atom<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L369" class="LineNr"> 369 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>is_type_ingredient_name<span class="Delimiter">(</span>exemplar_type<span class="Delimiter">-&gt;</span>name<span class="Delimiter">))</span> <span class="Delimiter">{</span>
+<span id="L370" class="LineNr"> 370 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">const</span> type_tree* curr_refinement_type = <span class="Constant">NULL</span><span class="Delimiter">;</span>  <span class="Comment">// temporary heap allocation; must always be deleted before it goes out of scope</span>
+<span id="L371" class="LineNr"> 371 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>exemplar_type<span class="Delimiter">-&gt;</span>atom<span class="Delimiter">)</span>
+<span id="L372" class="LineNr"> 372 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> curr_refinement_type = <span class="Normal">new</span> type_tree<span class="Delimiter">(</span>*refinement_type<span class="Delimiter">);</span>
+<span id="L373" class="LineNr"> 373 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">else</span> <span class="Delimiter">{</span>
+<span id="L374" class="LineNr"> 374 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> assert<span class="Delimiter">(</span>!refinement_type<span class="Delimiter">-&gt;</span>atom<span class="Delimiter">);</span>
+<span id="L375" class="LineNr"> 375 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> curr_refinement_type = <span class="Normal">new</span> type_tree<span class="Delimiter">(</span>*refinement_type<span class="Delimiter">-&gt;</span>left<span class="Delimiter">);</span>
+<span id="L376" class="LineNr"> 376 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Delimiter">}</span>
+<span id="L377" class="LineNr"> 377 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>!contains_key<span class="Delimiter">(</span>mappings<span class="Delimiter">,</span> exemplar_type<span class="Delimiter">-&gt;</span>name<span class="Delimiter">))</span> <span class="Delimiter">{</span>
+<span id="L378" class="LineNr"> 378 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L167'>trace</a><span class="Delimiter">(</span><span class="Constant">9993</span><span class="Delimiter">,</span> <span class="Constant">&quot;transform&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;adding mapping from &quot;</span> &lt;&lt; exemplar_type<span class="Delimiter">-&gt;</span>name &lt;&lt; <span class="Constant">&quot; to &quot;</span> &lt;&lt; <a href='028call_return.cc.html#L163'>to_string</a><span class="Delimiter">(</span>curr_refinement_type<span class="Delimiter">)</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
+<span id="L379" class="LineNr"> 379 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='001help.cc.html#L221'>put</a><span class="Delimiter">(</span>mappings<span class="Delimiter">,</span> exemplar_type<span class="Delimiter">-&gt;</span>name<span class="Delimiter">,</span> <span class="Normal">new</span> type_tree<span class="Delimiter">(</span>*curr_refinement_type<span class="Delimiter">));</span>
+<span id="L380" class="LineNr"> 380 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Delimiter">}</span>
+<span id="L381" class="LineNr"> 381 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">else</span> <span class="Delimiter">{</span>
+<span id="L382" class="LineNr"> 382 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>!deeply_equal_type_names<span class="Delimiter">(</span>get<span class="Delimiter">(</span>mappings<span class="Delimiter">,</span> exemplar_type<span class="Delimiter">-&gt;</span>name<span class="Delimiter">),</span> curr_refinement_type<span class="Delimiter">))</span> <span class="Delimiter">{</span>
+<span id="L383" class="LineNr"> 383 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>caller_recipe<span class="Delimiter">.</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;no call found for '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>call_instruction<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
+<span id="L384" class="LineNr"> 384 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> *error = <span class="Constant">true</span><span class="Delimiter">;</span>
+<span id="L385" class="LineNr"> 385 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">delete</span> curr_refinement_type<span class="Delimiter">;</span>
+<span id="L386" class="LineNr"> 386 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Identifier">return</span><span class="Delimiter">;</span>
+<span id="L387" class="LineNr"> 387 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Delimiter">}</span>
+<span id="L388" class="LineNr"> 388 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>get<span class="Delimiter">(</span>mappings<span class="Delimiter">,</span> exemplar_type<span class="Delimiter">-&gt;</span>name<span class="Delimiter">)-&gt;</span>name == <span class="Constant">&quot;literal&quot;</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L389" class="LineNr"> 389 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">delete</span> get<span class="Delimiter">(</span>mappings<span class="Delimiter">,</span> exemplar_type<span class="Delimiter">-&gt;</span>name<span class="Delimiter">);</span>
+<span id="L390" class="LineNr"> 390 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='001help.cc.html#L221'>put</a><span class="Delimiter">(</span>mappings<span class="Delimiter">,</span> exemplar_type<span class="Delimiter">-&gt;</span>name<span class="Delimiter">,</span> <span class="Normal">new</span> type_tree<span class="Delimiter">(</span>*curr_refinement_type<span class="Delimiter">));</span>
+<span id="L391" class="LineNr"> 391 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Delimiter">}</span>
+<span id="L392" class="LineNr"> 392 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Delimiter">}</span>
+<span id="L393" class="LineNr"> 393 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">delete</span> curr_refinement_type<span class="Delimiter">;</span>
+<span id="L394" class="LineNr"> 394 </span>  <span class="Conceal">¦</span> <span class="Delimiter">}</span>
+<span id="L395" class="LineNr"> 395 </span>  <span class="Delimiter">}</span>
+<span id="L396" class="LineNr"> 396 </span>  <span class="Normal">else</span> <span class="Delimiter">{</span>
+<span id="L397" class="LineNr"> 397 </span>  <span class="Conceal">¦</span> accumulate_type_ingredients<span class="Delimiter">(</span>exemplar_type<span class="Delimiter">-&gt;</span>left<span class="Delimiter">,</span> refinement_type<span class="Delimiter">-&gt;</span>left<span class="Delimiter">,</span> mappings<span class="Delimiter">,</span> exemplar<span class="Delimiter">,</span> exemplar_reagent<span class="Delimiter">,</span> call_instruction<span class="Delimiter">,</span> caller_recipe<span class="Delimiter">,</span> error<span class="Delimiter">);</span>
+<span id="L398" class="LineNr"> 398 </span>  <span class="Conceal">¦</span> accumulate_type_ingredients<span class="Delimiter">(</span>exemplar_type<span class="Delimiter">-&gt;</span>right<span class="Delimiter">,</span> refinement_type<span class="Delimiter">-&gt;</span>right<span class="Delimiter">,</span> mappings<span class="Delimiter">,</span> exemplar<span class="Delimiter">,</span> exemplar_reagent<span class="Delimiter">,</span> call_instruction<span class="Delimiter">,</span> caller_recipe<span class="Delimiter">,</span> error<span class="Delimiter">);</span>
+<span id="L399" class="LineNr"> 399 </span>  <span class="Delimiter">}</span>
+<span id="L400" class="LineNr"> 400 </span><span class="Delimiter">}</span>
+<span id="L401" class="LineNr"> 401 </span>
+<span id="L402" class="LineNr"> 402 </span><span class="Normal">void</span> replace_type_ingredients<span class="Delimiter">(</span>recipe&amp; new_recipe<span class="Delimiter">,</span> <span class="Normal">const</span> map&lt;string<span class="Delimiter">,</span> <span class="Normal">const</span> type_tree*&gt;&amp; mappings<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L403" class="LineNr"> 403 </span>  <span class="Comment">// update its header</span>
+<span id="L404" class="LineNr"> 404 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>mappings<span class="Delimiter">.</span>empty<span class="Delimiter">())</span> <span class="Identifier">return</span><span class="Delimiter">;</span>
+<span id="L405" class="LineNr"> 405 </span>  <a href='003trace.cc.html#L167'>trace</a><span class="Delimiter">(</span><span class="Constant">9993</span><span class="Delimiter">,</span> <span class="Constant">&quot;transform&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;replacing in <a href='010vm.cc.html#L19'>recipe</a> header ingredients&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
+<span id="L406" class="LineNr"> 406 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> i = <span class="Constant">0</span><span class="Delimiter">;</span>  i &lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>new_recipe<span class="Delimiter">.</span>ingredients<span class="Delimiter">);</span>  ++i<span class="Delimiter">)</span>
+<span id="L407" class="LineNr"> 407 </span>  <span class="Conceal">¦</span> replace_type_ingredients<span class="Delimiter">(</span>new_recipe<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">),</span> mappings<span class="Delimiter">,</span> new_recipe<span class="Delimiter">);</span>
+<span id="L408" class="LineNr"> 408 </span>  <a href='003trace.cc.html#L167'>trace</a><span class="Delimiter">(</span><span class="Constant">9993</span><span class="Delimiter">,</span> <span class="Constant">&quot;transform&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;replacing in <a href='010vm.cc.html#L19'>recipe</a> header products&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
+<span id="L409" class="LineNr"> 409 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> i = <span class="Constant">0</span><span class="Delimiter">;</span>  i &lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>new_recipe<span class="Delimiter">.</span>products<span class="Delimiter">);</span>  ++i<span class="Delimiter">)</span>
+<span id="L410" class="LineNr"> 410 </span>  <span class="Conceal">¦</span> replace_type_ingredients<span class="Delimiter">(</span>new_recipe<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">),</span> mappings<span class="Delimiter">,</span> new_recipe<span class="Delimiter">);</span>
+<span id="L411" class="LineNr"> 411 </span>  <span class="Comment">// update its body</span>
+<span id="L412" class="LineNr"> 412 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> i = <span class="Constant">0</span><span class="Delimiter">;</span>  i &lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>new_recipe<span class="Delimiter">.</span>steps<span class="Delimiter">);</span>  ++i<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L413" class="LineNr"> 413 </span>  <span class="Conceal">¦</span> instruction&amp; inst = new_recipe<span class="Delimiter">.</span>steps<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">);</span>
+<span id="L414" class="LineNr"> 414 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L167'>trace</a><span class="Delimiter">(</span><span class="Constant">9993</span><span class="Delimiter">,</span> <span class="Constant">&quot;transform&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;replacing in <a href='010vm.cc.html#L32'>instruction</a> '&quot;</span> &lt;&lt; to_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
+<span id="L415" class="LineNr"> 415 </span>  <span class="Conceal">¦</span> <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> j = <span class="Constant">0</span><span class="Delimiter">;</span>  j &lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">);</span>  ++j<span class="Delimiter">)</span>
+<span id="L416" class="LineNr"> 416 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> replace_type_ingredients<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>j<span class="Delimiter">),</span> mappings<span class="Delimiter">,</span> new_recipe<span class="Delimiter">);</span>
+<span id="L417" class="LineNr"> 417 </span>  <span class="Conceal">¦</span> <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> j = <span class="Constant">0</span><span class="Delimiter">;</span>  j &lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>products<span class="Delimiter">);</span>  ++j<span class="Delimiter">)</span>
+<span id="L418" class="LineNr"> 418 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> replace_type_ingredients<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span>j<span class="Delimiter">),</span> mappings<span class="Delimiter">,</span> new_recipe<span class="Delimiter">);</span>
+<span id="L419" class="LineNr"> 419 </span>  <span class="Conceal">¦</span> <span class="Comment">// special-case for new: replace type ingredient in first ingredient *value*</span>
+<span id="L420" class="LineNr"> 420 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>inst<span class="Delimiter">.</span>name == <span class="Constant">&quot;new&quot;</span> &amp;&amp; inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>type<span class="Delimiter">-&gt;</span>name != <span class="Constant">&quot;literal-string&quot;</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L421" class="LineNr"> 421 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> type_tree* type = <a href='056shape_shifting_recipe.cc.html#L486'>parse_type_tree</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>name<span class="Delimiter">);</span>
+<span id="L422" class="LineNr"> 422 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> replace_type_ingredients<span class="Delimiter">(</span>type<span class="Delimiter">,</span> mappings<span class="Delimiter">);</span>
+<span id="L423" class="LineNr"> 423 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>name = inspect<span class="Delimiter">(</span>type<span class="Delimiter">);</span>
+<span id="L424" class="LineNr"> 424 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">delete</span> type<span class="Delimiter">;</span>
+<span id="L425" class="LineNr"> 425 </span>  <span class="Conceal">¦</span> <span class="Delimiter">}</span>
+<span id="L426" class="LineNr"> 426 </span>  <span class="Delimiter">}</span>
+<span id="L427" class="LineNr"> 427 </span><span class="Delimiter">}</span>
+<span id="L428" class="LineNr"> 428 </span>
+<span id="L429" class="LineNr"> 429 </span><span class="Normal">void</span> replace_type_ingredients<span class="Delimiter">(</span>reagent&amp; x<span class="Delimiter">,</span> <span class="Normal">const</span> map&lt;string<span class="Delimiter">,</span> <span class="Normal">const</span> type_tree*&gt;&amp; mappings<span class="Delimiter">,</span> <span class="Normal">const</span> recipe&amp; caller<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L430" class="LineNr"> 430 </span>  string before = <a href='028call_return.cc.html#L163'>to_string</a><span class="Delimiter">(</span>x<span class="Delimiter">);</span>
+<span id="L431" class="LineNr"> 431 </span>  <a href='003trace.cc.html#L167'>trace</a><span class="Delimiter">(</span><span class="Constant">9993</span><span class="Delimiter">,</span> <span class="Constant">&quot;transform&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;replacing in ingredient &quot;</span> &lt;&lt; x<span class="Delimiter">.</span>original_string &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
+<span id="L432" class="LineNr"> 432 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!x<span class="Delimiter">.</span>type<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L433" class="LineNr"> 433 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <span class="Constant">&quot;specializing &quot;</span> &lt;&lt; caller<span class="Delimiter">.</span>original_name &lt;&lt; <span class="Constant">&quot;: missing type for '&quot;</span> &lt;&lt; x<span class="Delimiter">.</span>original_string &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
+<span id="L434" class="LineNr"> 434 </span>  <span class="Conceal">¦</span> <span class="Identifier">return</span><span class="Delimiter">;</span>
+<span id="L435" class="LineNr"> 435 </span>  <span class="Delimiter">}</span>
+<span id="L436" class="LineNr"> 436 </span>  replace_type_ingredients<span class="Delimiter">(</span>x<span class="Delimiter">.</span>type<span class="Delimiter">,</span> mappings<span class="Delimiter">);</span>
+<span id="L437" class="LineNr"> 437 </span><span class="Delimiter">}</span>
+<span id="L438" class="LineNr"> 438 </span>
+<span id="L439" class="LineNr"> 439 </span><span class="Normal">void</span> replace_type_ingredients<span class="Delimiter">(</span>type_tree* type<span class="Delimiter">,</span> <span class="Normal">const</span> map&lt;string<span class="Delimiter">,</span> <span class="Normal">const</span> type_tree*&gt;&amp; mappings<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L440" class="LineNr"> 440 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!type<span class="Delimiter">)</span> <span class="Identifier">return</span><span class="Delimiter">;</span>
+<span id="L441" class="LineNr"> 441 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!type<span class="Delimiter">-&gt;</span>atom<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L442" class="LineNr"> 442 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>type<span class="Delimiter">-&gt;</span>right == <span class="Constant">NULL</span> &amp;&amp; type<span class="Delimiter">-&gt;</span>left != <span class="Constant">NULL</span> &amp;&amp; type<span class="Delimiter">-&gt;</span>left<span class="Delimiter">-&gt;</span>atom &amp;&amp; contains_key<span class="Delimiter">(</span>mappings<span class="Delimiter">,</span> type<span class="Delimiter">-&gt;</span>left<span class="Delimiter">-&gt;</span>name<span class="Delimiter">)</span> &amp;&amp; !get<span class="Delimiter">(</span>mappings<span class="Delimiter">,</span> type<span class="Delimiter">-&gt;</span>left<span class="Delimiter">-&gt;</span>name<span class="Delimiter">)-&gt;</span>atom &amp;&amp; get<span class="Delimiter">(</span>mappings<span class="Delimiter">,</span> type<span class="Delimiter">-&gt;</span>left<span class="Delimiter">-&gt;</span>name<span class="Delimiter">)-&gt;</span>right != <span class="Constant">NULL</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L443" class="LineNr"> 443 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> *type = *get<span class="Delimiter">(</span>mappings<span class="Delimiter">,</span> type<span class="Delimiter">-&gt;</span>left<span class="Delimiter">-&gt;</span>name<span class="Delimiter">);</span>
+<span id="L444" class="LineNr"> 444 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Identifier">return</span><span class="Delimiter">;</span>
+<span id="L445" class="LineNr"> 445 </span>  <span class="Conceal">¦</span> <span class="Delimiter">}</span>
+<span id="L446" class="LineNr"> 446 </span>  <span class="Conceal">¦</span> replace_type_ingredients<span class="Delimiter">(</span>type<span class="Delimiter">-&gt;</span>left<span class="Delimiter">,</span> mappings<span class="Delimiter">);</span>
+<span id="L447" class="LineNr"> 447 </span>  <span class="Conceal">¦</span> replace_type_ingredients<span class="Delimiter">(</span>type<span class="Delimiter">-&gt;</span>right<span class="Delimiter">,</span> mappings<span class="Delimiter">);</span>
+<span id="L448" class="LineNr"> 448 </span>  <span class="Conceal">¦</span> <span class="Identifier">return</span><span class="Delimiter">;</span>
+<span id="L449" class="LineNr"> 449 </span>  <span class="Delimiter">}</span>
+<span id="L450" class="LineNr"> 450 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>contains_key<span class="Delimiter">(</span>Type_ordinal<span class="Delimiter">,</span> type<span class="Delimiter">-&gt;</span>name<span class="Delimiter">))</span>  <span class="Comment">// todo: ugly side effect</span>
+<span id="L451" class="LineNr"> 451 </span>  <span class="Conceal">¦</span> type<span class="Delimiter">-&gt;</span>value = get<span class="Delimiter">(</span>Type_ordinal<span class="Delimiter">,</span> type<span class="Delimiter">-&gt;</span>name<span class="Delimiter">);</span>
+<span id="L452" class="LineNr"> 452 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!contains_key<span class="Delimiter">(</span>mappings<span class="Delimiter">,</span> type<span class="Delimiter">-&gt;</span>name<span class="Delimiter">))</span>
+<span id="L453" class="LineNr"> 453 </span>  <span class="Conceal">¦</span> <span class="Identifier">return</span><span class="Delimiter">;</span>
+<span id="L454" class="LineNr"> 454 </span>  <span class="Normal">const</span> type_tree* replacement = get<span class="Delimiter">(</span>mappings<span class="Delimiter">,</span> type<span class="Delimiter">-&gt;</span>name<span class="Delimiter">);</span>
+<span id="L455" class="LineNr"> 455 </span>  <a href='003trace.cc.html#L167'>trace</a><span class="Delimiter">(</span><span class="Constant">9993</span><span class="Delimiter">,</span> <span class="Constant">&quot;transform&quot;</span><span class="Delimiter">)</span> &lt;&lt; type<span class="Delimiter">-&gt;</span>name &lt;&lt; <span class="Constant">&quot; =&gt; &quot;</span> &lt;&lt; names_to_string<span class="Delimiter">(</span>replacement<span class="Delimiter">)</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
+<span id="L456" class="LineNr"> 456 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>replacement<span class="Delimiter">-&gt;</span>atom<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L457" class="LineNr"> 457 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>!contains_key<span class="Delimiter">(</span>Type_ordinal<span class="Delimiter">,</span> replacement<span class="Delimiter">-&gt;</span>name<span class="Delimiter">))</span> <span class="Delimiter">{</span>
+<span id="L458" class="LineNr"> 458 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Comment">// error in program; should be reported elsewhere</span>
+<span id="L459" class="LineNr"> 459 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Identifier">return</span><span class="Delimiter">;</span>
+<span id="L460" class="LineNr"> 460 </span>  <span class="Conceal">¦</span> <span class="Delimiter">}</span>
+<span id="L461" class="LineNr"> 461 </span>  <span class="Conceal">¦</span> type<span class="Delimiter">-&gt;</span>name = <span class="Delimiter">(</span>replacement<span class="Delimiter">-&gt;</span>name == <span class="Constant">&quot;literal&quot;</span><span class="Delimiter">)</span> ? <span class="Constant">&quot;number&quot;</span> : replacement<span class="Delimiter">-&gt;</span>name<span class="Delimiter">;</span>
+<span id="L462" class="LineNr"> 462 </span>  <span class="Conceal">¦</span> type<span class="Delimiter">-&gt;</span>value = get<span class="Delimiter">(</span>Type_ordinal<span class="Delimiter">,</span> type<span class="Delimiter">-&gt;</span>name<span class="Delimiter">);</span>
+<span id="L463" class="LineNr"> 463 </span>  <span class="Delimiter">}</span>
+<span id="L464" class="LineNr"> 464 </span>  <span class="Normal">else</span> <span class="Delimiter">{</span>
+<span id="L465" class="LineNr"> 465 </span>  <span class="Conceal">¦</span> *type = *replacement<span class="Delimiter">;</span>
+<span id="L466" class="LineNr"> 466 </span>  <span class="Delimiter">}</span>
+<span id="L467" class="LineNr"> 467 </span><span class="Delimiter">}</span>
+<span id="L468" class="LineNr"> 468 </span>
+<span id="L469" class="LineNr"> 469 </span><span class="Normal">int</span> <a href='056shape_shifting_recipe.cc.html#L469'>type_ingredient_count_in_header</a><span class="Delimiter">(</span><a href='010vm.cc.html#L14'>recipe_ordinal</a> variant<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L470" class="LineNr"> 470 </span>  <span class="Normal">const</span> recipe&amp; caller = get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> variant<span class="Delimiter">);</span>
+<span id="L471" class="LineNr"> 471 </span>  set&lt;string&gt; type_ingredients<span class="Delimiter">;</span>
+<span id="L472" class="LineNr"> 472 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> i = <span class="Constant">0</span><span class="Delimiter">;</span>  i &lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>caller<span class="Delimiter">.</span>ingredients<span class="Delimiter">);</span>  ++i<span class="Delimiter">)</span>
+<span id="L473" class="LineNr"> 473 </span>  <span class="Conceal">¦</span> accumulate_type_ingredients<span class="Delimiter">(</span>caller<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">).</span>type<span class="Delimiter">,</span> type_ingredients<span class="Delimiter">);</span>
+<span id="L474" class="LineNr"> 474 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> i = <span class="Constant">0</span><span class="Delimiter">;</span>  i &lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>caller<span class="Delimiter">.</span>products<span class="Delimiter">);</span>  ++i<span class="Delimiter">)</span>
+<span id="L475" class="LineNr"> 475 </span>  <span class="Conceal">¦</span> accumulate_type_ingredients<span class="Delimiter">(</span>caller<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">).</span>type<span class="Delimiter">,</span> type_ingredients<span class="Delimiter">);</span>
+<span id="L476" class="LineNr"> 476 </span>  <span class="Identifier">return</span> <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>type_ingredients<span class="Delimiter">);</span>
+<span id="L477" class="LineNr"> 477 </span><span class="Delimiter">}</span>
+<span id="L478" class="LineNr"> 478 </span>
+<span id="L479" class="LineNr"> 479 </span><span class="Normal">void</span> accumulate_type_ingredients<span class="Delimiter">(</span><span class="Normal">const</span> type_tree* type<span class="Delimiter">,</span> set&lt;string&gt;&amp; out<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L480" class="LineNr"> 480 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!type<span class="Delimiter">)</span> <span class="Identifier">return</span><span class="Delimiter">;</span>
+<span id="L481" class="LineNr"> 481 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>is_type_ingredient_name<span class="Delimiter">(</span>type<span class="Delimiter">-&gt;</span>name<span class="Delimiter">))</span> out<span class="Delimiter">.</span>insert<span class="Delimiter">(</span>type<span class="Delimiter">-&gt;</span>name<span class="Delimiter">);</span>
+<span id="L482" class="LineNr"> 482 </span>  accumulate_type_ingredients<span class="Delimiter">(</span>type<span class="Delimiter">-&gt;</span>left<span class="Delimiter">,</span> out<span class="Delimiter">);</span>
+<span id="L483" class="LineNr"> 483 </span>  accumulate_type_ingredients<span class="Delimiter">(</span>type<span class="Delimiter">-&gt;</span>right<span class="Delimiter">,</span> out<span class="Delimiter">);</span>
+<span id="L484" class="LineNr"> 484 </span><span class="Delimiter">}</span>
+<span id="L485" class="LineNr"> 485 </span>
+<span id="L486" class="LineNr"> 486 </span>type_tree* <a href='056shape_shifting_recipe.cc.html#L486'>parse_type_tree</a><span class="Delimiter">(</span><span class="Normal">const</span> string&amp; s<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L487" class="LineNr"> 487 </span>  string_tree* s2 = parse_string_tree<span class="Delimiter">(</span>s<span class="Delimiter">);</span>
+<span id="L488" class="LineNr"> 488 </span>  type_tree* result = <a href='018type_abbreviations.cc.html#L58'>new_type_tree</a><span class="Delimiter">(</span>s2<span class="Delimiter">);</span>
+<span id="L489" class="LineNr"> 489 </span>  <span class="Normal">delete</span> s2<span class="Delimiter">;</span>
+<span id="L490" class="LineNr"> 490 </span>  <span class="Identifier">return</span> result<span class="Delimiter">;</span>
+<span id="L491" class="LineNr"> 491 </span><span class="Delimiter">}</span>
+<span id="L492" class="LineNr"> 492 </span>
+<span id="L493" class="LineNr"> 493 </span>string inspect<span class="Delimiter">(</span><span class="Normal">const</span> type_tree* x<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L494" class="LineNr"> 494 </span>  ostringstream out<span class="Delimiter">;</span>
+<span id="L495" class="LineNr"> 495 </span>  <a href='056shape_shifting_recipe.cc.html#L499'>dump_inspect</a><span class="Delimiter">(</span>x<span class="Delimiter">,</span> out<span class="Delimiter">);</span>
+<span id="L496" class="LineNr"> 496 </span>  <span class="Identifier">return</span> out<span class="Delimiter">.</span>str<span class="Delimiter">();</span>
+<span id="L497" class="LineNr"> 497 </span><span class="Delimiter">}</span>
+<span id="L498" class="LineNr"> 498 </span>
+<span id="L499" class="LineNr"> 499 </span><span class="Normal">void</span> <a href='056shape_shifting_recipe.cc.html#L499'>dump_inspect</a><span class="Delimiter">(</span><span class="Normal">const</span> type_tree* x<span class="Delimiter">,</span> ostream&amp; out<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L500" class="LineNr"> 500 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!x<span class="Delimiter">-&gt;</span>left &amp;&amp; !x<span class="Delimiter">-&gt;</span>right<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L501" class="LineNr"> 501 </span>  <span class="Conceal">¦</span> out &lt;&lt; x<span class="Delimiter">-&gt;</span>name<span class="Delimiter">;</span>
+<span id="L502" class="LineNr"> 502 </span>  <span class="Conceal">¦</span> <span class="Identifier">return</span><span class="Delimiter">;</span>
+<span id="L503" class="LineNr"> 503 </span>  <span class="Delimiter">}</span>
+<span id="L504" class="LineNr"> 504 </span>  out &lt;&lt; <span class="Constant">'('</span><span class="Delimiter">;</span>
+<span id="L505" class="LineNr"> 505 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">const</span> type_tree* curr = x<span class="Delimiter">;</span>  curr<span class="Delimiter">;</span>  curr = curr<span class="Delimiter">-&gt;</span>right<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L506" class="LineNr"> 506 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>curr != x<span class="Delimiter">)</span> out &lt;&lt; <span class="Constant">' '</span><span class="Delimiter">;</span>
+<span id="L507" class="LineNr"> 507 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>curr<span class="Delimiter">-&gt;</span>left<span class="Delimiter">)</span>
+<span id="L508" class="LineNr"> 508 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='056shape_shifting_recipe.cc.html#L499'>dump_inspect</a><span class="Delimiter">(</span>curr<span class="Delimiter">-&gt;</span>left<span class="Delimiter">,</span> out<span class="Delimiter">);</span>
+<span id="L509" class="LineNr"> 509 </span>  <span class="Conceal">¦</span> <span class="Normal">else</span>
+<span id="L510" class="LineNr"> 510 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> out &lt;&lt; curr<span class="Delimiter">-&gt;</span>name<span class="Delimiter">;</span>
+<span id="L511" class="LineNr"> 511 </span>  <span class="Delimiter">}</span>
+<span id="L512" class="LineNr"> 512 </span>  out &lt;&lt; <span class="Constant">')'</span><span class="Delimiter">;</span>
+<span id="L513" class="LineNr"> 513 </span><span class="Delimiter">}</span>
+<span id="L514" class="LineNr"> 514 </span>
+<span id="L515" class="LineNr"> 515 </span><span class="Normal">void</span> ensure_all_concrete_types<span class="Delimiter">(</span><span class="Comment">/*</span><span class="Comment">const</span><span class="Comment">*/</span> recipe&amp; new_recipe<span class="Delimiter">,</span> <span class="Normal">const</span> recipe&amp; exemplar<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L516" class="LineNr"> 516 </span>  <a href='003trace.cc.html#L167'>trace</a><span class="Delimiter">(</span><span class="Constant">9993</span><span class="Delimiter">,</span> <span class="Constant">&quot;transform&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;-- ensure all concrete types in <a href='010vm.cc.html#L19'>recipe</a> &quot;</span> &lt;&lt; new_recipe<span class="Delimiter">.</span>name &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
+<span id="L517" class="LineNr"> 517 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> i = <span class="Constant">0</span><span class="Delimiter">;</span>  i &lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>new_recipe<span class="Delimiter">.</span>ingredients<span class="Delimiter">);</span>  ++i<span class="Delimiter">)</span>
+<span id="L518" class="LineNr"> 518 </span>  <span class="Conceal">¦</span> ensure_all_concrete_types<span class="Delimiter">(</span>new_recipe<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">),</span> exemplar<span class="Delimiter">);</span>
+<span id="L519" class="LineNr"> 519 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> i = <span class="Constant">0</span><span class="Delimiter">;</span>  i &lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>new_recipe<span class="Delimiter">.</span>products<span class="Delimiter">);</span>  ++i<span class="Delimiter">)</span>
+<span id="L520" class="LineNr"> 520 </span>  <span class="Conceal">¦</span> ensure_all_concrete_types<span class="Delimiter">(</span>new_recipe<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">),</span> exemplar<span class="Delimiter">);</span>
+<span id="L521" class="LineNr"> 521 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> i = <span class="Constant">0</span><span class="Delimiter">;</span>  i &lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>new_recipe<span class="Delimiter">.</span>steps<span class="Delimiter">);</span>  ++i<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L522" class="LineNr"> 522 </span>  <span class="Conceal">¦</span> instruction&amp; inst = new_recipe<span class="Delimiter">.</span>steps<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">);</span>
+<span id="L523" class="LineNr"> 523 </span>  <span class="Conceal">¦</span> <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> j = <span class="Constant">0</span><span class="Delimiter">;</span>  j &lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">);</span>  ++j<span class="Delimiter">)</span>
+<span id="L524" class="LineNr"> 524 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> ensure_all_concrete_types<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>j<span class="Delimiter">),</span> exemplar<span class="Delimiter">);</span>
+<span id="L525" class="LineNr"> 525 </span>  <span class="Conceal">¦</span> <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> j = <span class="Constant">0</span><span class="Delimiter">;</span>  j &lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>products<span class="Delimiter">);</span>  ++j<span class="Delimiter">)</span>
+<span id="L526" class="LineNr"> 526 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> ensure_all_concrete_types<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span>j<span class="Delimiter">),</span> exemplar<span class="Delimiter">);</span>
+<span id="L527" class="LineNr"> 527 </span>  <span class="Delimiter">}</span>
+<span id="L528" class="LineNr"> 528 </span><span class="Delimiter">}</span>
+<span id="L529" class="LineNr"> 529 </span>
+<span id="L530" class="LineNr"> 530 </span><span class="Normal">void</span> ensure_all_concrete_types<span class="Delimiter">(</span><span class="Comment">/*</span><span class="Comment">const</span><span class="Comment">*/</span> reagent&amp; x<span class="Delimiter">,</span> <span class="Normal">const</span> recipe&amp; exemplar<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L531" class="LineNr"> 531 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!x<span class="Delimiter">.</span>type || contains_type_ingredient_name<span class="Delimiter">(</span>x<span class="Delimiter">.</span>type<span class="Delimiter">))</span> <span class="Delimiter">{</span>
+<span id="L532" class="LineNr"> 532 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>exemplar<span class="Delimiter">.</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;failed to map a type to &quot;</span> &lt;&lt; x<span class="Delimiter">.</span>original_string &lt;&lt; <span class="cSpecial">'\n'</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
+<span id="L533" class="LineNr"> 533 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>!x<span class="Delimiter">.</span>type<span class="Delimiter">)</span> x<span class="Delimiter">.</span>type = <span class="Normal">new</span> type_tree<span class="Delimiter">(</span><span class="Constant">&quot;added_by_ensure_all_concrete_types&quot;</span><span class="Delimiter">,</span> <span class="Constant">0</span><span class="Delimiter">);</span>  <span class="Comment">// just to prevent crashes later</span>
+<span id="L534" class="LineNr"> 534 </span>  <span class="Conceal">¦</span> <span class="Identifier">return</span><span class="Delimiter">;</span>
+<span id="L535" class="LineNr"> 535 </span>  <span class="Delimiter">}</span>
+<span id="L536" class="LineNr"> 536 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>x<span class="Delimiter">.</span>type<span class="Delimiter">-&gt;</span>value == -<span class="Constant">1</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L537" class="LineNr"> 537 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>exemplar<span class="Delimiter">.</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;failed to map a type to the unknown &quot;</span> &lt;&lt; x<span class="Delimiter">.</span>original_string &lt;&lt; <span class="cSpecial">'\n'</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
+<span id="L538" class="LineNr"> 538 </span>  <span class="Conceal">¦</span> <span class="Identifier">return</span><span class="Delimiter">;</span>
+<span id="L539" class="LineNr"> 539 </span>  <span class="Delimiter">}</span>
+<span id="L540" class="LineNr"> 540 </span><span class="Delimiter">}</span>
+<span id="L541" class="LineNr"> 541 </span>
+<span id="L542" class="LineNr"> 542 </span><span class="Delimiter">:(scenario shape_shifting_recipe_2)</span>
+<span id="L543" class="LineNr"> 543 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
+<span id="L544" class="LineNr"> 544 </span>  <span class="Constant">10</span>:point<span class="Special"> &lt;- </span>merge <span class="Constant">14</span><span class="Delimiter">,</span> <span class="Constant">15</span>
+<span id="L545" class="LineNr"> 545 </span>  <span class="Constant">11</span>:point<span class="Special"> &lt;- </span>foo <span class="Constant">10</span>:point
+<span id="L546" class="LineNr"> 546 </span>]
+<span id="L547" class="LineNr"> 547 </span><span class="Comment"># non-matching shape-shifting variant</span>
+<span id="L548" class="LineNr"> 548 </span><span class="muRecipe">def</span> foo a:_t<span class="Delimiter">,</span> b:_t<span class="muRecipe"> -&gt; </span>result:num [
+<span id="L549" class="LineNr"> 549 </span>  local-scope
+<span id="L550" class="LineNr"> 550 </span>  load-ingredients
+<span id="L551" class="LineNr"> 551 </span>  result<span class="Special"> &lt;- </span>copy <span class="Constant">34</span>
+<span id="L552" class="LineNr"> 552 </span>]
+<span id="L553" class="LineNr"> 553 </span><span class="Comment"># matching shape-shifting variant</span>
+<span id="L554" class="LineNr"> 554 </span><span class="muRecipe">def</span> foo a:_t<span class="muRecipe"> -&gt; </span>result:_t [
+<span id="L555" class="LineNr"> 555 </span>  local-scope
+<span id="L556" class="LineNr"> 556 </span>  load-ingredients
+<span id="L557" class="LineNr"> 557 </span>  result<span class="Special"> &lt;- </span>copy a
+<span id="L558" class="LineNr"> 558 </span>]
+<span id="L559" class="LineNr"> 559 </span><span class="traceContains">+mem: storing 14 in location 11</span>
+<span id="L560" class="LineNr"> 560 </span><span class="traceContains">+mem: storing 15 in location 12</span>
+<span id="L561" class="LineNr"> 561 </span>
+<span id="L562" class="LineNr"> 562 </span><span class="Delimiter">:(scenario shape_shifting_recipe_nonroot)</span>
+<span id="L563" class="LineNr"> 563 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
+<span id="L564" class="LineNr"> 564 </span>  <span class="Constant">10</span>:foo:point<span class="Special"> &lt;- </span>merge <span class="Constant">14</span><span class="Delimiter">,</span> <span class="Constant">15</span><span class="Delimiter">,</span> <span class="Constant">16</span>
+<span id="L565" class="LineNr"> 565 </span>  <span class="Constant">20</span>:point/<span class="Special">raw &lt;- </span>bar <span class="Constant">10</span>:foo:point
+<span id="L566" class="LineNr"> 566 </span>]
+<span id="L567" class="LineNr"> 567 </span><span class="Comment"># shape-shifting recipe with type ingredient following some other type</span>
+<span id="L568" class="LineNr"> 568 </span><span class="muRecipe">def</span> bar a:foo:_t<span class="muRecipe"> -&gt; </span>result:_t [
+<span id="L569" class="LineNr"> 569 </span>  local-scope
+<span id="L570" class="LineNr"> 570 </span>  load-ingredients
+<span id="L571" class="LineNr"> 571 </span>  result<span class="Special"> &lt;- </span>get a<span class="Delimiter">,</span> <span class="Constant">x:offset</span>
+<span id="L572" class="LineNr"> 572 </span>]
+<span id="L573" class="LineNr"> 573 </span><span class="muData">container</span> foo:_t [
+<span id="L574" class="LineNr"> 574 </span>  <span class="Normal">x</span>:_t
+<span id="L575" class="LineNr"> 575 </span>  <span class="Normal">y</span>:num
+<span id="L576" class="LineNr"> 576 </span>]
+<span id="L577" class="LineNr"> 577 </span><span class="traceContains">+mem: storing 14 in location 20</span>
+<span id="L578" class="LineNr"> 578 </span><span class="traceContains">+mem: storing 15 in location 21</span>
+<span id="L579" class="LineNr"> 579 </span>
+<span id="L580" class="LineNr"> 580 </span><span class="Delimiter">:(scenario shape_shifting_recipe_nested)</span>
+<span id="L581" class="LineNr"> 581 </span><span class="muData">container</span> c:_a:_b [
+<span id="L582" class="LineNr"> 582 </span>  <span class="Normal">a</span>:_a
+<span id="L583" class="LineNr"> 583 </span>  <span class="Normal">b</span>:_b
+<span id="L584" class="LineNr"> 584 </span>]
+<span id="L585" class="LineNr"> 585 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
+<span id="L586" class="LineNr"> 586 </span>  <span class="Normal">s</span>:text<span class="Special"> &lt;- </span><span class="Normal">new</span> [abc]
+<span id="L587" class="LineNr"> 587 </span>  <span class="Delimiter">{</span>x: <span class="Delimiter">(</span>c <span class="Delimiter">(</span><a href='043space.cc.html#L82'>address</a> array character<span class="Delimiter">)</span> number<span class="Delimiter">)}</span><span class="Special"> &lt;- </span>merge s<span class="Delimiter">,</span> <span class="Constant">34</span>
+<span id="L588" class="LineNr"> 588 </span>  foo x
+<span id="L589" class="LineNr"> 589 </span>]
+<span id="L590" class="LineNr"> 590 </span><span class="muRecipe">def</span> foo x:c:_bar:_baz [
+<span id="L591" class="LineNr"> 591 </span>  local-scope
+<span id="L592" class="LineNr"> 592 </span>  load-ingredients
+<span id="L593" class="LineNr"> 593 </span>]
+<span id="L594" class="LineNr"> 594 </span><span class="Comment"># no errors</span>
+<span id="L595" class="LineNr"> 595 </span>
+<span id="L596" class="LineNr"> 596 </span><span class="Delimiter">:(scenario shape_shifting_recipe_type_deduction_ignores_offsets)</span>
+<span id="L597" class="LineNr"> 597 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
+<span id="L598" class="LineNr"> 598 </span>  <span class="Constant">10</span>:foo:point<span class="Special"> &lt;- </span>merge <span class="Constant">14</span><span class="Delimiter">,</span> <span class="Constant">15</span><span class="Delimiter">,</span> <span class="Constant">16</span>
+<span id="L599" class="LineNr"> 599 </span>  <span class="Constant">20</span>:point/<span class="Special">raw &lt;- </span>bar <span class="Constant">10</span>:foo:point
+<span id="L600" class="LineNr"> 600 </span>]
+<span id="L601" class="LineNr"> 601 </span><span class="muRecipe">def</span> bar a:foo:_t<span class="muRecipe"> -&gt; </span>result:_t [
+<span id="L602" class="LineNr"> 602 </span>  local-scope
+<span id="L603" class="LineNr"> 603 </span>  load-ingredients
+<span id="L604" class="LineNr"> 604 </span>  <span class="Normal">x</span>:num<span class="Special"> &lt;- </span>copy <span class="Constant">1</span>
+<span id="L605" class="LineNr"> 605 </span>  result<span class="Special"> &lt;- </span>get a<span class="Delimiter">,</span> <span class="Constant">x:offset</span>  <span class="Comment"># shouldn't collide with other variable</span>
+<span id="L606" class="LineNr"> 606 </span>]
+<span id="L607" class="LineNr"> 607 </span><span class="muData">container</span> foo:_t [
+<span id="L608" class="LineNr"> 608 </span>  <span class="Normal">x</span>:_t
+<span id="L609" class="LineNr"> 609 </span>  <span class="Normal">y</span>:num
+<span id="L610" class="LineNr"> 610 </span>]
+<span id="L611" class="LineNr"> 611 </span><span class="traceContains">+mem: storing 14 in location 20</span>
+<span id="L612" class="LineNr"> 612 </span><span class="traceContains">+mem: storing 15 in location 21</span>
+<span id="L613" class="LineNr"> 613 </span>
+<span id="L614" class="LineNr"> 614 </span><span class="Delimiter">:(scenario shape_shifting_recipe_empty)</span>
+<span id="L615" class="LineNr"> 615 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
+<span id="L616" class="LineNr"> 616 </span>  foo <span class="Constant">1</span>
+<span id="L617" class="LineNr"> 617 </span>]
+<span id="L618" class="LineNr"> 618 </span><span class="Comment"># shape-shifting recipe with no body</span>
+<span id="L619" class="LineNr"> 619 </span><span class="muRecipe">def</span> foo a:_t [
+<span id="L620" class="LineNr"> 620 </span>]
+<span id="L621" class="LineNr"> 621 </span><span class="Comment"># shouldn't crash</span>
+<span id="L622" class="LineNr"> 622 </span>
+<span id="L623" class="LineNr"> 623 </span><span class="Delimiter">:(scenario shape_shifting_recipe_handles_shape_shifting_new_ingredient)</span>
+<span id="L624" class="LineNr"> 624 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
+<span id="L625" class="LineNr"> 625 </span>  <span class="Constant">1</span>:&amp;:foo:point<span class="Special"> &lt;- </span>bar <span class="Constant">3</span>
+<span id="L626" class="LineNr"> 626 </span>  <span class="Constant">11</span>:foo:point<span class="Special"> &lt;- </span>copy *<span class="Constant">1</span>:&amp;:foo:point
+<span id="L627" class="LineNr"> 627 </span>]
+<span id="L628" class="LineNr"> 628 </span><span class="muData">container</span> foo:_t [
+<span id="L629" class="LineNr"> 629 </span>  <span class="Normal">x</span>:_t
+<span id="L630" class="LineNr"> 630 </span>  <span class="Normal">y</span>:num
+<span id="L631" class="LineNr"> 631 </span>]
+<span id="L632" class="LineNr"> 632 </span><span class="muRecipe">def</span> bar x:num<span class="muRecipe"> -&gt; </span>result:&amp;:foo:_t [
+<span id="L633" class="LineNr"> 633 </span>  local-scope
+<span id="L634" class="LineNr"> 634 </span>  load-ingredients
+<span id="L635" class="LineNr"> 635 </span>  <span class="Comment"># new refers to _t in its ingredient *value*</span>
+<span id="L636" class="LineNr"> 636 </span>  result<span class="Special"> &lt;- </span><span class="Normal">new</span> <span class="Delimiter">{(</span>foo _t<span class="Delimiter">)</span> : type<span class="Delimiter">}</span>
+<span id="L637" class="LineNr"> 637 </span>]
+<span id="L638" class="LineNr"> 638 </span><span class="traceContains">+mem: storing 0 in location 11</span>
+<span id="L639" class="LineNr"> 639 </span><span class="traceContains">+mem: storing 0 in location 12</span>
+<span id="L640" class="LineNr"> 640 </span><span class="traceContains">+mem: storing 0 in location 13</span>
+<span id="L641" class="LineNr"> 641 </span>
+<span id="L642" class="LineNr"> 642 </span><span class="Delimiter">:(scenario shape_shifting_recipe_handles_shape_shifting_new_ingredient_2)</span>
+<span id="L643" class="LineNr"> 643 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
+<span id="L644" class="LineNr"> 644 </span>  <span class="Constant">1</span>:&amp;:foo:point<span class="Special"> &lt;- </span>bar <span class="Constant">3</span>
+<span id="L645" class="LineNr"> 645 </span>  <span class="Constant">11</span>:foo:point<span class="Special"> &lt;- </span>copy *<span class="Constant">1</span>:&amp;:foo:point
+<span id="L646" class="LineNr"> 646 </span>]
+<span id="L647" class="LineNr"> 647 </span><span class="muRecipe">def</span> bar x:num<span class="muRecipe"> -&gt; </span>result:&amp;:foo:_t [
+<span id="L648" class="LineNr"> 648 </span>  local-scope
+<span id="L649" class="LineNr"> 649 </span>  load-ingredients
+<span id="L650" class="LineNr"> 650 </span>  <span class="Comment"># new refers to _t in its ingredient *value*</span>
+<span id="L651" class="LineNr"> 651 </span>  result<span class="Special"> &lt;- </span><span class="Normal">new</span> <span class="Delimiter">{(</span>foo _t<span class="Delimiter">)</span> : type<span class="Delimiter">}</span>
+<span id="L652" class="LineNr"> 652 </span>]
+<span id="L653" class="LineNr"> 653 </span><span class="Comment"># container defined after use</span>
+<span id="L654" class="LineNr"> 654 </span><span class="muData">container</span> foo:_t [
+<span id="L655" class="LineNr"> 655 </span>  <span class="Normal">x</span>:_t
+<span id="L656" class="LineNr"> 656 </span>  <span class="Normal">y</span>:num
+<span id="L657" class="LineNr"> 657 </span>]
+<span id="L658" class="LineNr"> 658 </span><span class="traceContains">+mem: storing 0 in location 11</span>
+<span id="L659" class="LineNr"> 659 </span><span class="traceContains">+mem: storing 0 in location 12</span>
+<span id="L660" class="LineNr"> 660 </span><span class="traceContains">+mem: storing 0 in location 13</span>
+<span id="L661" class="LineNr"> 661 </span>
+<span id="L662" class="LineNr"> 662 </span><span class="Delimiter">:(scenario shape_shifting_recipe_called_with_dummy)</span>
+<span id="L663" class="LineNr"> 663 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
+<span id="L664" class="LineNr"> 664 </span>  _<span class="Special"> &lt;- </span>bar <span class="Constant">34</span>
+<span id="L665" class="LineNr"> 665 </span>]
+<span id="L666" class="LineNr"> 666 </span><span class="muRecipe">def</span> bar x:_t<span class="muRecipe"> -&gt; </span>result:&amp;:_t [
+<span id="L667" class="LineNr"> 667 </span>  local-scope
+<span id="L668" class="LineNr"> 668 </span>  load-ingredients
+<span id="L669" class="LineNr"> 669 </span>  result<span class="Special"> &lt;- </span>copy <span class="Constant">0</span>
+<span id="L670" class="LineNr"> 670 </span>]
+<span id="L671" class="LineNr"> 671 </span>$error: <span class="Constant">0</span>
+<span id="L672" class="LineNr"> 672 </span>
+<span id="L673" class="LineNr"> 673 </span><span class="Delimiter">:(code)</span>
+<span id="L674" class="LineNr"> 674 </span><span class="Comment">// this one needs a little more fine-grained control</span>
+<span id="L675" class="LineNr"> 675 </span><span class="Normal">void</span> <a href='056shape_shifting_recipe.cc.html#L675'>test_shape_shifting_new_ingredient_does_not_pollute_global_namespace</a><span class="Delimiter">()</span> <span class="Delimiter">{</span>
+<span id="L676" class="LineNr"> 676 </span>  <span class="Comment">// if you specialize a shape-shifting recipe that allocates a type-ingredient..</span>
+<span id="L677" class="LineNr"> 677 </span>  <a href='012transform.cc.html#L99'>transform</a><span class="Delimiter">(</span><span class="Constant">&quot;def barz x:_elem [</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span>
+<span id="L678" class="LineNr"> 678 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Constant">&quot;  local-scope</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span>
+<span id="L679" class="LineNr"> 679 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Constant">&quot;  load-ingredients</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span>
+<span id="L680" class="LineNr"> 680 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Constant">&quot;  y:&amp;:num &lt;- new _elem:type</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span>
+<span id="L681" class="LineNr"> 681 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Constant">&quot;]</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span>
+<span id="L682" class="LineNr"> 682 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Constant">&quot;def fooz [</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span>
+<span id="L683" class="LineNr"> 683 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Constant">&quot;  local-scope</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span>
+<span id="L684" class="LineNr"> 684 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Constant">&quot;  barz 34</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span>
+<span id="L685" class="LineNr"> 685 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Constant">&quot;]</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span><span class="Delimiter">);</span>
+<span id="L686" class="LineNr"> 686 </span>  <span class="Comment">// ..and if you then try to load a new shape-shifting container with that</span>
+<span id="L687" class="LineNr"> 687 </span>  <span class="Comment">// type-ingredient</span>
+<span id="L688" class="LineNr"> 688 </span>  run<span class="Delimiter">(</span><span class="Constant">&quot;container foo:_elem [</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span>
+<span id="L689" class="LineNr"> 689 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Constant">&quot;  x:_elem</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span>
+<span id="L690" class="LineNr"> 690 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Constant">&quot;  y:num</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span>
+<span id="L691" class="LineNr"> 691 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Constant">&quot;]</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span><span class="Delimiter">);</span>
+<span id="L692" class="LineNr"> 692 </span>  <span class="Comment">// then it should work as usual</span>
+<span id="L693" class="LineNr"> 693 </span>  reagent callsite<span class="Delimiter">(</span><span class="Constant">&quot;x:foo:point&quot;</span><span class="Delimiter">);</span>
+<span id="L694" class="LineNr"> 694 </span>  reagent element = <a href='030container.cc.html#L429'>element_type</a><span class="Delimiter">(</span>callsite<span class="Delimiter">.</span>type<span class="Delimiter">,</span> <span class="Constant">0</span><span class="Delimiter">);</span>
+<span id="L695" class="LineNr"> 695 </span>  <a href='002test.cc.html#L31'>CHECK_EQ</a><span class="Delimiter">(</span>element<span class="Delimiter">.</span>name<span class="Delimiter">,</span> <span class="Constant">&quot;x&quot;</span><span class="Delimiter">);</span>
+<span id="L696" class="LineNr"> 696 </span>  <a href='002test.cc.html#L31'>CHECK_EQ</a><span class="Delimiter">(</span>element<span class="Delimiter">.</span>type<span class="Delimiter">-&gt;</span>name<span class="Delimiter">,</span> <span class="Constant">&quot;point&quot;</span><span class="Delimiter">);</span>
+<span id="L697" class="LineNr"> 697 </span>  <a href='002test.cc.html#L24'>CHECK</a><span class="Delimiter">(</span>!element<span class="Delimiter">.</span>type<span class="Delimiter">-&gt;</span>right<span class="Delimiter">);</span>
+<span id="L698" class="LineNr"> 698 </span><span class="Delimiter">}</span>
+<span id="L699" class="LineNr"> 699 </span>
+<span id="L700" class="LineNr"> 700 </span><span class="Comment">//: specializing a type ingredient with a compound type</span>
+<span id="L701" class="LineNr"> 701 </span><span class="Delimiter">:(scenario shape_shifting_recipe_supports_compound_types)</span>
+<span id="L702" class="LineNr"> 702 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
+<span id="L703" class="LineNr"> 703 </span>  <span class="Constant">1</span>:&amp;:point<span class="Special"> &lt;- </span><span class="Normal">new</span> <span class="Constant">point:type</span>
+<span id="L704" class="LineNr"> 704 </span>  *<span class="Constant">1</span>:&amp;:point<span class="Special"> &lt;- </span><a href='001help.cc.html#L221'>put</a> *<span class="Constant">1</span>:&amp;:point<span class="Delimiter">,</span> <span class="Constant">y:offset</span><span class="Delimiter">,</span> <span class="Constant">34</span>
+<span id="L705" class="LineNr"> 705 </span>  <span class="Constant">3</span>:&amp;:point<span class="Special"> &lt;- </span>bar <span class="Constant">1</span>:&amp;:point  <span class="Comment"># specialize _t to address:point</span>
+<span id="L706" class="LineNr"> 706 </span>  <span class="Constant">4</span>:point<span class="Special"> &lt;- </span>copy *<span class="Constant">3</span>:&amp;:point
+<span id="L707" class="LineNr"> 707 </span>]
+<span id="L708" class="LineNr"> 708 </span><span class="muRecipe">def</span> bar a:_t<span class="muRecipe"> -&gt; </span>result:_t [
+<span id="L709" class="LineNr"> 709 </span>  local-scope
+<span id="L710" class="LineNr"> 710 </span>  load-ingredients
+<span id="L711" class="LineNr"> 711 </span>  result<span class="Special"> &lt;- </span>copy a
+<span id="L712" class="LineNr"> 712 </span>]
+<span id="L713" class="LineNr"> 713 </span><span class="traceContains">+mem: storing 34 in location 5</span>
+<span id="L714" class="LineNr"> 714 </span>
+<span id="L715" class="LineNr"> 715 </span><span class="Comment">//: specializing a type ingredient with a compound type -- while *inside* another compound type</span>
+<span id="L716" class="LineNr"> 716 </span><span class="Delimiter">:(scenario shape_shifting_recipe_supports_compound_types_2)</span>
+<span id="L717" class="LineNr"> 717 </span><span class="muData">container</span> foo:_t [
+<span id="L718" class="LineNr"> 718 </span>  <span class="Normal">value</span>:_t
+<span id="L719" class="LineNr"> 719 </span>]
+<span id="L720" class="LineNr"> 720 </span><span class="muRecipe">def</span> bar x:&amp;:foo:_t<span class="muRecipe"> -&gt; </span>result:_t [
+<span id="L721" class="LineNr"> 721 </span>  local-scope
+<span id="L722" class="LineNr"> 722 </span>  load-ingredients
+<span id="L723" class="LineNr"> 723 </span>  result<span class="Special"> &lt;- </span>get *x<span class="Delimiter">,</span> <span class="Constant">value:offset</span>
+<span id="L724" class="LineNr"> 724 </span>]
+<span id="L725" class="LineNr"> 725 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
+<span id="L726" class="LineNr"> 726 </span>  <span class="Constant">1</span>:&amp;:foo:&amp;:point<span class="Special"> &lt;- </span><span class="Normal">new</span> <span class="Delimiter">{(</span>foo <a href='043space.cc.html#L82'>address</a> point<span class="Delimiter">)</span>: type<span class="Delimiter">}</span>
+<span id="L727" class="LineNr"> 727 </span>  <span class="Constant">2</span>:&amp;:point<span class="Special"> &lt;- </span>bar <span class="Constant">1</span>:&amp;:foo:&amp;:point
+<span id="L728" class="LineNr"> 728 </span>]
+<span id="L729" class="LineNr"> 729 </span><span class="Comment"># no errors; call to 'bar' successfully specialized</span>
+<span id="L730" class="LineNr"> 730 </span>
+<span id="L731" class="LineNr"> 731 </span><span class="Delimiter">:(scenario shape_shifting_recipe_error)</span>
+<span id="L732" class="LineNr"> 732 </span><span class="Special">% Hide_errors = true;</span>
+<span id="L733" class="LineNr"> 733 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
+<span id="L734" class="LineNr"> 734 </span>  <span class="Normal">a</span>:num<span class="Special"> &lt;- </span>copy <span class="Constant">3</span>
+<span id="L735" class="LineNr"> 735 </span>  <span class="Normal">b</span>:&amp;:num<span class="Special"> &lt;- </span>foo a
+<span id="L736" class="LineNr"> 736 </span>]
+<span id="L737" class="LineNr"> 737 </span><span class="muRecipe">def</span> foo a:_t<span class="muRecipe"> -&gt; </span>b:_t [
+<span id="L738" class="LineNr"> 738 </span>  load-ingredients
+<span id="L739" class="LineNr"> 739 </span>  b<span class="Special"> &lt;- </span>copy a
+<span id="L740" class="LineNr"> 740 </span>]
+<span id="L741" class="LineNr"> 741 </span><span class="traceContains">+error: <a href='000organization.cc.html#L113'>main</a>: no call found for 'b:&amp;:num &lt;- foo a'</span>
+<span id="L742" class="LineNr"> 742 </span>
+<span id="L743" class="LineNr"> 743 </span><span class="Delimiter">:(scenario specialize_inside_recipe_without_header)</span>
+<span id="L744" class="LineNr"> 744 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
+<span id="L745" class="LineNr"> 745 </span>  foo <span class="Constant">3</span>
+<span id="L746" class="LineNr"> 746 </span>]
+<span id="L747" class="LineNr"> 747 </span><span class="muRecipe">def</span> foo [
+<span id="L748" class="LineNr"> 748 </span>  local-scope
+<span id="L749" class="LineNr"> 749 </span>  <span class="Normal">x</span>:num<span class="Special"> &lt;- </span>next-ingredient  <span class="Comment"># ensure no header</span>
+<span id="L750" class="LineNr"> 750 </span>  <span class="Constant">1</span>:num/<span class="Special">raw &lt;- </span>bar x  <span class="Comment"># call a shape-shifting recipe</span>
+<span id="L751" class="LineNr"> 751 </span>]
+<span id="L752" class="LineNr"> 752 </span><span class="muRecipe">def</span> bar x:_elem<span class="muRecipe"> -&gt; </span>y:_elem [
+<span id="L753" class="LineNr"> 753 </span>  local-scope
+<span id="L754" class="LineNr"> 754 </span>  load-ingredients
+<span id="L755" class="LineNr"> 755 </span>  y<span class="Special"> &lt;- </span>add x<span class="Delimiter">,</span> <span class="Constant">1</span>
+<span id="L756" class="LineNr"> 756 </span>]
+<span id="L757" class="LineNr"> 757 </span><span class="traceContains">+mem: storing 4 in location 1</span>
+<span id="L758" class="LineNr"> 758 </span>
+<span id="L759" class="LineNr"> 759 </span><span class="Delimiter">:(scenario specialize_with_literal)</span>
+<span id="L760" class="LineNr"> 760 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
+<span id="L761" class="LineNr"> 761 </span>  local-scope
+<span id="L762" class="LineNr"> 762 </span>  <span class="Comment"># permit literal to map to number</span>
+<span id="L763" class="LineNr"> 763 </span>  <span class="Constant">1</span>:num/<span class="Special">raw &lt;- </span>foo <span class="Constant">3</span>
+<span id="L764" class="LineNr"> 764 </span>]
+<span id="L765" class="LineNr"> 765 </span><span class="muRecipe">def</span> foo x:_elem<span class="muRecipe"> -&gt; </span>y:_elem [
+<span id="L766" class="LineNr"> 766 </span>  local-scope
+<span id="L767" class="LineNr"> 767 </span>  load-ingredients
+<span id="L768" class="LineNr"> 768 </span>  y<span class="Special"> &lt;- </span>add x<span class="Delimiter">,</span> <span class="Constant">1</span>
+<span id="L769" class="LineNr"> 769 </span>]
+<span id="L770" class="LineNr"> 770 </span><span class="traceContains">+mem: storing 4 in location 1</span>
+<span id="L771" class="LineNr"> 771 </span>
+<span id="L772" class="LineNr"> 772 </span><span class="Delimiter">:(scenario specialize_with_literal_2)</span>
+<span id="L773" class="LineNr"> 773 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
+<span id="L774" class="LineNr"> 774 </span>  local-scope
+<span id="L775" class="LineNr"> 775 </span>  <span class="Comment"># permit literal to map to character</span>
+<span id="L776" class="LineNr"> 776 </span>  <span class="Constant">1</span>:<span class="Normal">char</span>/<span class="Special">raw &lt;- </span>foo <span class="Constant">3</span>
+<span id="L777" class="LineNr"> 777 </span>]
+<span id="L778" class="LineNr"> 778 </span><span class="muRecipe">def</span> foo x:_elem<span class="muRecipe"> -&gt; </span>y:_elem [
+<span id="L779" class="LineNr"> 779 </span>  local-scope
+<span id="L780" class="LineNr"> 780 </span>  load-ingredients
+<span id="L781" class="LineNr"> 781 </span>  y<span class="Special"> &lt;- </span>add x<span class="Delimiter">,</span> <span class="Constant">1</span>
+<span id="L782" class="LineNr"> 782 </span>]
+<span id="L783" class="LineNr"> 783 </span><span class="traceContains">+mem: storing 4 in location 1</span>
+<span id="L784" class="LineNr"> 784 </span>
+<span id="L785" class="LineNr"> 785 </span><span class="Delimiter">:(scenario specialize_with_literal_3)</span>
+<span id="L786" class="LineNr"> 786 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
+<span id="L787" class="LineNr"> 787 </span>  local-scope
+<span id="L788" class="LineNr"> 788 </span>  <span class="Comment"># permit '0' to map to address to shape-shifting type-ingredient</span>
+<span id="L789" class="LineNr"> 789 </span>  <span class="Constant">1</span>:&amp;:<span class="Normal">char</span>/<span class="Special">raw &lt;- </span>foo <span class="Constant">0</span>
+<span id="L790" class="LineNr"> 790 </span>]
+<span id="L791" class="LineNr"> 791 </span><span class="muRecipe">def</span> foo x:&amp;:_elem<span class="muRecipe"> -&gt; </span>y:&amp;:_elem [
+<span id="L792" class="LineNr"> 792 </span>  local-scope
+<span id="L793" class="LineNr"> 793 </span>  load-ingredients
+<span id="L794" class="LineNr"> 794 </span>  y<span class="Special"> &lt;- </span>copy x
+<span id="L795" class="LineNr"> 795 </span>]
+<span id="L796" class="LineNr"> 796 </span><span class="traceContains">+mem: storing 0 in location 1</span>
+<span id="L797" class="LineNr"> 797 </span>$error: <span class="Constant">0</span>
+<span id="L798" class="LineNr"> 798 </span>
+<span id="L799" class="LineNr"> 799 </span><span class="Delimiter">:(scenario specialize_with_literal_4)</span>
+<span id="L800" class="LineNr"> 800 </span><span class="Special">% Hide_errors = true;</span>
+<span id="L801" class="LineNr"> 801 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
+<span id="L802" class="LineNr"> 802 </span>  local-scope
+<span id="L803" class="LineNr"> 803 </span>  <span class="Comment"># ambiguous call: what's the type of its ingredient?!</span>
+<span id="L804" class="LineNr"> 804 </span>  foo <span class="Constant">0</span>
+<span id="L805" class="LineNr"> 805 </span>]
+<span id="L806" class="LineNr"> 806 </span><span class="muRecipe">def</span> foo x:&amp;:_elem<span class="muRecipe"> -&gt; </span>y:&amp;:_elem [
+<span id="L807" class="LineNr"> 807 </span>  local-scope
+<span id="L808" class="LineNr"> 808 </span>  load-ingredients
+<span id="L809" class="LineNr"> 809 </span>  y<span class="Special"> &lt;- </span>copy x
+<span id="L810" class="LineNr"> 810 </span>]
+<span id="L811" class="LineNr"> 811 </span><span class="traceContains">+error: <a href='000organization.cc.html#L113'>main</a>: <a href='010vm.cc.html#L32'>instruction</a> 'foo' has no valid specialization</span>
+<span id="L812" class="LineNr"> 812 </span>
+<span id="L813" class="LineNr"> 813 </span><span class="Delimiter">:(scenario specialize_with_literal_5)</span>
+<span id="L814" class="LineNr"> 814 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
+<span id="L815" class="LineNr"> 815 </span>  foo <span class="Constant">3</span><span class="Delimiter">,</span> <span class="Constant">4</span>  <span class="Comment"># recipe mapping two variables to literals</span>
+<span id="L816" class="LineNr"> 816 </span>]
+<span id="L817" class="LineNr"> 817 </span><span class="muRecipe">def</span> foo x:_elem<span class="Delimiter">,</span> y:_elem [
+<span id="L818" class="LineNr"> 818 </span>  local-scope
+<span id="L819" class="LineNr"> 819 </span>  load-ingredients
+<span id="L820" class="LineNr"> 820 </span>  <span class="Constant">1</span>:num/<span class="Special">raw &lt;- </span>add x<span class="Delimiter">,</span> y
+<span id="L821" class="LineNr"> 821 </span>]
+<span id="L822" class="LineNr"> 822 </span><span class="traceContains">+mem: storing 7 in location 1</span>
+<span id="L823" class="LineNr"> 823 </span>
+<span id="L824" class="LineNr"> 824 </span><span class="Delimiter">:(scenario multiple_shape_shifting_variants)</span>
+<span id="L825" class="LineNr"> 825 </span><span class="Comment"># try to call two different shape-shifting recipes with the same name</span>
+<span id="L826" class="LineNr"> 826 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
+<span id="L827" class="LineNr"> 827 </span>  <span class="Normal">e1</span>:d1:num<span class="Special"> &lt;- </span>merge <span class="Constant">3</span>
+<span id="L828" class="LineNr"> 828 </span>  <span class="Normal">e2</span>:d2:num<span class="Special"> &lt;- </span>merge <span class="Constant">4</span><span class="Delimiter">,</span> <span class="Constant">5</span>
+<span id="L829" class="LineNr"> 829 </span>  <span class="Constant">1</span>:num/<span class="Special">raw &lt;- </span>foo e1
+<span id="L830" class="LineNr"> 830 </span>  <span class="Constant">2</span>:num/<span class="Special">raw &lt;- </span>foo e2
+<span id="L831" class="LineNr"> 831 </span>]
+<span id="L832" class="LineNr"> 832 </span><span class="Comment"># the two shape-shifting definitions</span>
+<span id="L833" class="LineNr"> 833 </span><span class="muRecipe">def</span> foo a:d1:_elem<span class="muRecipe"> -&gt; </span>b:num [
+<span id="L834" class="LineNr"> 834 </span>  local-scope
+<span id="L835" class="LineNr"> 835 </span>  load-ingredients
+<span id="L836" class="LineNr"> 836 </span>  <span class="Identifier">return</span> <span class="Constant">34</span>
+<span id="L837" class="LineNr"> 837 </span>]
+<span id="L838" class="LineNr"> 838 </span><span class="muRecipe">def</span> foo a:d2:_elem<span class="muRecipe"> -&gt; </span>b:num [
+<span id="L839" class="LineNr"> 839 </span>  local-scope
+<span id="L840" class="LineNr"> 840 </span>  load-ingredients
+<span id="L841" class="LineNr"> 841 </span>  <span class="Identifier">return</span> <span class="Constant">35</span>
+<span id="L842" class="LineNr"> 842 </span>]
+<span id="L843" class="LineNr"> 843 </span><span class="Comment"># the shape-shifting containers they use</span>
+<span id="L844" class="LineNr"> 844 </span><span class="muData">container</span> d1:_elem [
+<span id="L845" class="LineNr"> 845 </span>  <span class="Normal">x</span>:_elem
+<span id="L846" class="LineNr"> 846 </span>]
+<span id="L847" class="LineNr"> 847 </span><span class="muData">container</span> d2:_elem [
+<span id="L848" class="LineNr"> 848 </span>  <span class="Normal">x</span>:num
+<span id="L849" class="LineNr"> 849 </span>  <span class="Normal">y</span>:_elem
+<span id="L850" class="LineNr"> 850 </span>]
+<span id="L851" class="LineNr"> 851 </span><span class="traceContains">+mem: storing 34 in location 1</span>
+<span id="L852" class="LineNr"> 852 </span><span class="traceContains">+mem: storing 35 in location 2</span>
+<span id="L853" class="LineNr"> 853 </span>
+<span id="L854" class="LineNr"> 854 </span><span class="Delimiter">:(scenario multiple_shape_shifting_variants_2)</span>
+<span id="L855" class="LineNr"> 855 </span><span class="Comment"># static dispatch between shape-shifting variants, _including pointer lookups_</span>
+<span id="L856" class="LineNr"> 856 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
+<span id="L857" class="LineNr"> 857 </span>  <span class="Normal">e1</span>:d1:num<span class="Special"> &lt;- </span>merge <span class="Constant">3</span>
+<span id="L858" class="LineNr"> 858 </span>  <span class="Normal">e2</span>:&amp;:d2:num<span class="Special"> &lt;- </span><span class="Normal">new</span> <span class="Delimiter">{(</span>d2 number<span class="Delimiter">)</span>: type<span class="Delimiter">}</span>
+<span id="L859" class="LineNr"> 859 </span>  <span class="Constant">1</span>:num/<span class="Special">raw &lt;- </span>foo e1
+<span id="L860" class="LineNr"> 860 </span>  <span class="Constant">2</span>:num/<span class="Special">raw &lt;- </span>foo *e2  <span class="Comment"># different from previous scenario</span>
+<span id="L861" class="LineNr"> 861 </span>]
+<span id="L862" class="LineNr"> 862 </span><span class="muRecipe">def</span> foo a:d1:_elem<span class="muRecipe"> -&gt; </span>b:num [
+<span id="L863" class="LineNr"> 863 </span>  local-scope
+<span id="L864" class="LineNr"> 864 </span>  load-ingredients
+<span id="L865" class="LineNr"> 865 </span>  <span class="Identifier">return</span> <span class="Constant">34</span>
+<span id="L866" class="LineNr"> 866 </span>]
+<span id="L867" class="LineNr"> 867 </span><span class="muRecipe">def</span> foo a:d2:_elem<span class="muRecipe"> -&gt; </span>b:num [
+<span id="L868" class="LineNr"> 868 </span>  local-scope
+<span id="L869" class="LineNr"> 869 </span>  load-ingredients
+<span id="L870" class="LineNr"> 870 </span>  <span class="Identifier">return</span> <span class="Constant">35</span>
+<span id="L871" class="LineNr"> 871 </span>]
+<span id="L872" class="LineNr"> 872 </span><span class="muData">container</span> d1:_elem [
+<span id="L873" class="LineNr"> 873 </span>  <span class="Normal">x</span>:_elem
+<span id="L874" class="LineNr"> 874 </span>]
+<span id="L875" class="LineNr"> 875 </span><span class="muData">container</span> d2:_elem [
+<span id="L876" class="LineNr"> 876 </span>  <span class="Normal">x</span>:num
+<span id="L877" class="LineNr"> 877 </span>  <span class="Normal">y</span>:_elem
+<span id="L878" class="LineNr"> 878 </span>]
+<span id="L879" class="LineNr"> 879 </span><span class="traceContains">+mem: storing 34 in location 1</span>
+<span id="L880" class="LineNr"> 880 </span><span class="traceContains">+mem: storing 35 in location 2</span>
+<span id="L881" class="LineNr"> 881 </span>
+<span id="L882" class="LineNr"> 882 </span><span class="Delimiter">:(scenario missing_type_in_shape_shifting_recipe)</span>
+<span id="L883" class="LineNr"> 883 </span><span class="Special">% Hide_errors = true;</span>
+<span id="L884" class="LineNr"> 884 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
+<span id="L885" class="LineNr"> 885 </span>  <span class="Normal">a</span>:d1:num<span class="Special"> &lt;- </span>merge <span class="Constant">3</span>
+<span id="L886" class="LineNr"> 886 </span>  foo a
+<span id="L887" class="LineNr"> 887 </span>]
+<span id="L888" class="LineNr"> 888 </span><span class="muRecipe">def</span> foo a:d1:_elem<span class="muRecipe"> -&gt; </span>b:num [
+<span id="L889" class="LineNr"> 889 </span>  local-scope
+<span id="L890" class="LineNr"> 890 </span>  load-ingredients
+<span id="L891" class="LineNr"> 891 </span>  copy e  <span class="Comment"># no such variable</span>
+<span id="L892" class="LineNr"> 892 </span>  <span class="Identifier">return</span> <span class="Constant">34</span>
+<span id="L893" class="LineNr"> 893 </span>]
+<span id="L894" class="LineNr"> 894 </span><span class="muData">container</span> d1:_elem [
+<span id="L895" class="LineNr"> 895 </span>  <span class="Normal">x</span>:_elem
+<span id="L896" class="LineNr"> 896 </span>]
+<span id="L897" class="LineNr"> 897 </span><span class="traceContains">+error: foo: unknown type for 'e' in 'copy e' (check the name for typos)</span>
+<span id="L898" class="LineNr"> 898 </span><span class="traceContains">+error: specializing foo: missing type for 'e'</span>
+<span id="L899" class="LineNr"> 899 </span><span class="Comment"># and it doesn't crash</span>
+<span id="L900" class="LineNr"> 900 </span>
+<span id="L901" class="LineNr"> 901 </span><span class="Delimiter">:(scenario missing_type_in_shape_shifting_recipe_2)</span>
+<span id="L902" class="LineNr"> 902 </span><span class="Special">% Hide_errors = true;</span>
+<span id="L903" class="LineNr"> 903 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
+<span id="L904" class="LineNr"> 904 </span>  <span class="Normal">a</span>:d1:num<span class="Special"> &lt;- </span>merge <span class="Constant">3</span>
+<span id="L905" class="LineNr"> 905 </span>  foo a
+<span id="L906" class="LineNr"> 906 </span>]
+<span id="L907" class="LineNr"> 907 </span><span class="muRecipe">def</span> foo a:d1:_elem<span class="muRecipe"> -&gt; </span>b:num [
+<span id="L908" class="LineNr"> 908 </span>  local-scope
+<span id="L909" class="LineNr"> 909 </span>  load-ingredients
+<span id="L910" class="LineNr"> 910 </span>  get e<span class="Delimiter">,</span> <span class="Constant">x:offset</span>  <span class="Comment"># unknown variable in a 'get', which does some extra checking</span>
+<span id="L911" class="LineNr"> 911 </span>  <span class="Identifier">return</span> <span class="Constant">34</span>
+<span id="L912" class="LineNr"> 912 </span>]
+<span id="L913" class="LineNr"> 913 </span><span class="muData">container</span> d1:_elem [
+<span id="L914" class="LineNr"> 914 </span>  <span class="Normal">x</span>:_elem
+<span id="L915" class="LineNr"> 915 </span>]
+<span id="L916" class="LineNr"> 916 </span><span class="traceContains">+error: foo: unknown type for 'e' in 'get e, x:offset' (check the name for typos)</span>
+<span id="L917" class="LineNr"> 917 </span><span class="traceContains">+error: specializing foo: missing type for 'e'</span>
+<span id="L918" class="LineNr"> 918 </span><span class="Comment"># and it doesn't crash</span>
+<span id="L919" class="LineNr"> 919 </span>
+<span id="L920" class="LineNr"> 920 </span><span class="Delimiter">:(scenarios transform)</span>
+<span id="L921" class="LineNr"> 921 </span><span class="Delimiter">:(scenario specialize_recursive_shape_shifting_recipe)</span>
+<span id="L922" class="LineNr"> 922 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
+<span id="L923" class="LineNr"> 923 </span>  <span class="Constant">1</span>:num<span class="Special"> &lt;- </span>copy <span class="Constant">34</span>
+<span id="L924" class="LineNr"> 924 </span>  <span class="Constant">2</span>:num<span class="Special"> &lt;- </span>foo <span class="Constant">1</span>:num
+<span id="L925" class="LineNr"> 925 </span>]
+<span id="L926" class="LineNr"> 926 </span><span class="muRecipe">def</span> foo x:_elem<span class="muRecipe"> -&gt; </span>y:num [
+<span id="L927" class="LineNr"> 927 </span>  local-scope
+<span id="L928" class="LineNr"> 928 </span>  load-ingredients
+<span id="L929" class="LineNr"> 929 </span>  <span class="Delimiter">{</span>
+<span id="L930" class="LineNr"> 930 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span>
+<span id="L931" class="LineNr"> 931 </span>  <span class="Conceal">¦</span> <span class="Normal">y</span>:num<span class="Special"> &lt;- </span>foo x
+<span id="L932" class="LineNr"> 932 </span>  <span class="Delimiter">}</span>
+<span id="L933" class="LineNr"> 933 </span>  <span class="Identifier">return</span> y
+<span id="L934" class="LineNr"> 934 </span>]
+<span id="L935" class="LineNr"> 935 </span><span class="traceContains">+transform: new specialization: foo_2</span>
+<span id="L936" class="LineNr"> 936 </span><span class="Comment"># transform terminates</span>
+<span id="L937" class="LineNr"> 937 </span>
+<span id="L938" class="LineNr"> 938 </span><span class="Delimiter">:(scenarios run)</span>
+<span id="L939" class="LineNr"> 939 </span><span class="Delimiter">:(scenario specialize_most_similar_variant)</span>
+<span id="L940" class="LineNr"> 940 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
+<span id="L941" class="LineNr"> 941 </span>  <span class="Constant">1</span>:&amp;:num<span class="Special"> &lt;- </span><span class="Normal">new</span> <span class="Constant">number:type</span>
+<span id="L942" class="LineNr"> 942 </span>  <span class="Constant">2</span>:num<span class="Special"> &lt;- </span>foo <span class="Constant">1</span>:&amp;:num
+<span id="L943" class="LineNr"> 943 </span>]
+<span id="L944" class="LineNr"> 944 </span><span class="muRecipe">def</span> foo x:_elem<span class="muRecipe"> -&gt; </span>y:num [
+<span id="L945" class="LineNr"> 945 </span>  local-scope
+<span id="L946" class="LineNr"> 946 </span>  load-ingredients
+<span id="L947" class="LineNr"> 947 </span>  <span class="Identifier">return</span> <span class="Constant">34</span>
+<span id="L948" class="LineNr"> 948 </span>]
+<span id="L949" class="LineNr"> 949 </span><span class="muRecipe">def</span> foo x:&amp;:_elem<span class="muRecipe"> -&gt; </span>y:num [
+<span id="L950" class="LineNr"> 950 </span>  local-scope
+<span id="L951" class="LineNr"> 951 </span>  load-ingredients
+<span id="L952" class="LineNr"> 952 </span>  <span class="Identifier">return</span> <span class="Constant">35</span>
+<span id="L953" class="LineNr"> 953 </span>]
+<span id="L954" class="LineNr"> 954 </span><span class="traceContains">+mem: storing 35 in location 2</span>
+<span id="L955" class="LineNr"> 955 </span>
+<span id="L956" class="LineNr"> 956 </span><span class="Delimiter">:(scenario specialize_most_similar_variant_2)</span>
+<span id="L957" class="LineNr"> 957 </span><span class="Comment"># version with headers padded with lots of unrelated concrete types</span>
+<span id="L958" class="LineNr"> 958 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
+<span id="L959" class="LineNr"> 959 </span>  <span class="Constant">1</span>:num<span class="Special"> &lt;- </span>copy <span class="Constant">23</span>
+<span id="L960" class="LineNr"> 960 </span>  <span class="Constant">2</span>:&amp;:@:num<span class="Special"> &lt;- </span>copy <span class="Constant">0</span>
+<span id="L961" class="LineNr"> 961 </span>  <span class="Constant">3</span>:num<span class="Special"> &lt;- </span>foo <span class="Constant">2</span>:&amp;:@:num<span class="Delimiter">,</span> <span class="Constant">1</span>:num
+<span id="L962" class="LineNr"> 962 </span>]
+<span id="L963" class="LineNr"> 963 </span><span class="Comment"># variant with concrete type</span>
+<span id="L964" class="LineNr"> 964 </span><span class="muRecipe">def</span> foo dummy:&amp;:@:num<span class="Delimiter">,</span> x:num<span class="muRecipe"> -&gt; </span>y:num<span class="Delimiter">,</span> dummy:&amp;:@:num [
+<span id="L965" class="LineNr"> 965 </span>  local-scope
+<span id="L966" class="LineNr"> 966 </span>  load-ingredients
+<span id="L967" class="LineNr"> 967 </span>  <span class="Identifier">return</span> <span class="Constant">34</span>
+<span id="L968" class="LineNr"> 968 </span>]
+<span id="L969" class="LineNr"> 969 </span><span class="Comment"># shape-shifting variant</span>
+<span id="L970" class="LineNr"> 970 </span><span class="muRecipe">def</span> foo dummy:&amp;:@:num<span class="Delimiter">,</span> x:_elem<span class="muRecipe"> -&gt; </span>y:num<span class="Delimiter">,</span> dummy:&amp;:@:num [
+<span id="L971" class="LineNr"> 971 </span>  local-scope
+<span id="L972" class="LineNr"> 972 </span>  load-ingredients
+<span id="L973" class="LineNr"> 973 </span>  <span class="Identifier">return</span> <span class="Constant">35</span>
+<span id="L974" class="LineNr"> 974 </span>]
+<span id="L975" class="LineNr"> 975 </span><span class="Comment"># prefer the concrete variant</span>
+<span id="L976" class="LineNr"> 976 </span><span class="traceContains">+mem: storing 34 in location 3</span>
+<span id="L977" class="LineNr"> 977 </span>
+<span id="L978" class="LineNr"> 978 </span><span class="Delimiter">:(scenario specialize_most_similar_variant_3)</span>
+<span id="L979" class="LineNr"> 979 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
+<span id="L980" class="LineNr"> 980 </span>  <span class="Constant">1</span>:text<span class="Special"> &lt;- </span><span class="Normal">new</span> [abc]
+<span id="L981" class="LineNr"> 981 </span>  foo <span class="Constant">1</span>:text
+<span id="L982" class="LineNr"> 982 </span>]
+<span id="L983" class="LineNr"> 983 </span><span class="muRecipe">def</span> foo x:text [
+<span id="L984" class="LineNr"> 984 </span>  <span class="Constant">2</span>:num<span class="Special"> &lt;- </span>copy <span class="Constant">34</span>
+<span id="L985" class="LineNr"> 985 </span>]
+<span id="L986" class="LineNr"> 986 </span><span class="muRecipe">def</span> foo x:&amp;:_elem [
+<span id="L987" class="LineNr"> 987 </span>  <span class="Constant">2</span>:num<span class="Special"> &lt;- </span>copy <span class="Constant">35</span>
+<span id="L988" class="LineNr"> 988 </span>]
+<span id="L989" class="LineNr"> 989 </span><span class="Comment"># make sure the more precise version was used</span>
+<span id="L990" class="LineNr"> 990 </span><span class="traceContains">+mem: storing 34 in location 2</span>
+<span id="L991" class="LineNr"> 991 </span>
+<span id="L992" class="LineNr"> 992 </span><span class="Delimiter">:(scenario specialize_literal_as_number)</span>
+<span id="L993" class="LineNr"> 993 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
+<span id="L994" class="LineNr"> 994 </span>  <span class="Constant">1</span>:num<span class="Special"> &lt;- </span>foo <span class="Constant">23</span>
+<span id="L995" class="LineNr"> 995 </span>]
+<span id="L996" class="LineNr"> 996 </span><span class="muRecipe">def</span> foo x:_elem<span class="muRecipe"> -&gt; </span>y:num [
+<span id="L997" class="LineNr"> 997 </span>  local-scope
+<span id="L998" class="LineNr"> 998 </span>  load-ingredients
+<span id="L999" class="LineNr"> 999 </span>  <span class="Identifier">return</span> <span class="Constant">34</span>
+<span id="L1000" class="LineNr">1000 </span>]
+<span id="L1001" class="LineNr">1001 </span><span class="muRecipe">def</span> foo x:<span class="Normal">char</span><span class="muRecipe"> -&gt; </span>y:num [
+<span id="L1002" class="LineNr">1002 </span>  local-scope
+<span id="L1003" class="LineNr">1003 </span>  load-ingredients
+<span id="L1004" class="LineNr">1004 </span>  <span class="Identifier">return</span> <span class="Constant">35</span>
+<span id="L1005" class="LineNr">1005 </span>]
+<span id="L1006" class="LineNr">1006 </span><span class="traceContains">+mem: storing 34 in location 1</span>
+<span id="L1007" class="LineNr">1007 </span>
+<span id="L1008" class="LineNr">1008 </span><span class="Delimiter">:(scenario specialize_literal_as_number_2)</span>
+<span id="L1009" class="LineNr">1009 </span><span class="Comment"># version calling with literal</span>
+<span id="L1010" class="LineNr">1010 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
+<span id="L1011" class="LineNr">1011 </span>  <span class="Constant">1</span>:num<span class="Special"> &lt;- </span>foo <span class="Constant">0</span>
+<span id="L1012" class="LineNr">1012 </span>]
+<span id="L1013" class="LineNr">1013 </span><span class="Comment"># variant with concrete type</span>
+<span id="L1014" class="LineNr">1014 </span><span class="muRecipe">def</span> foo x:num<span class="muRecipe"> -&gt; </span>y:num [
+<span id="L1015" class="LineNr">1015 </span>  local-scope
+<span id="L1016" class="LineNr">1016 </span>  load-ingredients
+<span id="L1017" class="LineNr">1017 </span>  <span class="Identifier">return</span> <span class="Constant">34</span>
+<span id="L1018" class="LineNr">1018 </span>]
+<span id="L1019" class="LineNr">1019 </span><span class="Comment"># shape-shifting variant</span>
+<span id="L1020" class="LineNr">1020 </span><span class="muRecipe">def</span> foo x:&amp;:_elem<span class="muRecipe"> -&gt; </span>y:num [
+<span id="L1021" class="LineNr">1021 </span>  local-scope
+<span id="L1022" class="LineNr">1022 </span>  load-ingredients
+<span id="L1023" class="LineNr">1023 </span>  <span class="Identifier">return</span> <span class="Constant">35</span>
+<span id="L1024" class="LineNr">1024 </span>]
+<span id="L1025" class="LineNr">1025 </span><span class="Comment"># prefer the concrete variant, ignore concrete types in scoring the shape-shifting variant</span>
+<span id="L1026" class="LineNr">1026 </span><span class="traceContains">+mem: storing 34 in location 1</span>
+<span id="L1027" class="LineNr">1027 </span>
+<span id="L1028" class="LineNr">1028 </span><span class="Delimiter">:(scenario specialize_literal_as_address)</span>
+<span id="L1029" class="LineNr">1029 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
+<span id="L1030" class="LineNr">1030 </span>  <span class="Constant">1</span>:num<span class="Special"> &lt;- </span>foo <span class="Constant">0</span>
+<span id="L1031" class="LineNr">1031 </span>]
+<span id="L1032" class="LineNr">1032 </span><span class="Comment"># variant with concrete address type</span>
+<span id="L1033" class="LineNr">1033 </span><span class="muRecipe">def</span> foo x:&amp;:num<span class="muRecipe"> -&gt; </span>y:num [
+<span id="L1034" class="LineNr">1034 </span>  local-scope
+<span id="L1035" class="LineNr">1035 </span>  load-ingredients
+<span id="L1036" class="LineNr">1036 </span>  <span class="Identifier">return</span> <span class="Constant">34</span>
+<span id="L1037" class="LineNr">1037 </span>]
+<span id="L1038" class="LineNr">1038 </span><span class="Comment"># shape-shifting variant</span>
+<span id="L1039" class="LineNr">1039 </span><span class="muRecipe">def</span> foo x:&amp;:_elem<span class="muRecipe"> -&gt; </span>y:num [
+<span id="L1040" class="LineNr">1040 </span>  local-scope
+<span id="L1041" class="LineNr">1041 </span>  load-ingredients
+<span id="L1042" class="LineNr">1042 </span>  <span class="Identifier">return</span> <span class="Constant">35</span>
+<span id="L1043" class="LineNr">1043 </span>]
+<span id="L1044" class="LineNr">1044 </span><span class="Comment"># prefer the concrete variant, ignore concrete types in scoring the shape-shifting variant</span>
+<span id="L1045" class="LineNr">1045 </span><span class="traceContains">+mem: storing 34 in location 1</span>
+<span id="L1046" class="LineNr">1046 </span>
+<span id="L1047" class="LineNr">1047 </span><span class="Delimiter">:(scenario missing_type_during_specialization)</span>
+<span id="L1048" class="LineNr">1048 </span><span class="Special">% Hide_errors = true;</span>
+<span id="L1049" class="LineNr">1049 </span><span class="Comment"># define a shape-shifting recipe</span>
+<span id="L1050" class="LineNr">1050 </span><span class="muRecipe">def</span> foo a:_elem [
+<span id="L1051" class="LineNr">1051 </span>]
+<span id="L1052" class="LineNr">1052 </span><span class="Comment"># define a container with field 'z'</span>
+<span id="L1053" class="LineNr">1053 </span><span class="muData">container</span> foo2 [
+<span id="L1054" class="LineNr">1054 </span>  <span class="Normal">z</span>:num
+<span id="L1055" class="LineNr">1055 </span>]
+<span id="L1056" class="LineNr">1056 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
+<span id="L1057" class="LineNr">1057 </span>  local-scope
+<span id="L1058" class="LineNr">1058 </span>  <span class="Normal">x</span>:foo2<span class="Special"> &lt;- </span>merge <span class="Constant">34</span>
+<span id="L1059" class="LineNr">1059 </span>  <span class="Normal">y</span>:num<span class="Special"> &lt;- </span>get x<span class="Delimiter">,</span> z:offse  <span class="Comment"># typo in 'offset'</span>
+<span id="L1060" class="LineNr">1060 </span><span class="PreProc">  </span><span class="Comment"># define a variable with the same name 'z'</span>
+<span id="L1061" class="LineNr">1061 </span>  <span class="Normal">z</span>:num<span class="Special"> &lt;- </span>copy <span class="Constant">34</span>
+<span id="L1062" class="LineNr">1062 </span>  <span class="Comment"># trigger specialization of the shape-shifting recipe</span>
+<span id="L1063" class="LineNr">1063 </span>  foo z
+<span id="L1064" class="LineNr">1064 </span>]
+<span id="L1065" class="LineNr">1065 </span><span class="Comment"># shouldn't crash</span>
+<span id="L1066" class="LineNr">1066 </span>
+<span id="L1067" class="LineNr">1067 </span><span class="Delimiter">:(scenario missing_type_during_specialization2)</span>
+<span id="L1068" class="LineNr">1068 </span><span class="Special">% Hide_errors = true;</span>
+<span id="L1069" class="LineNr">1069 </span><span class="Comment"># define a shape-shifting recipe</span>
+<span id="L1070" class="LineNr">1070 </span><span class="muRecipe">def</span> foo a:_elem [
+<span id="L1071" class="LineNr">1071 </span>]
+<span id="L1072" class="LineNr">1072 </span><span class="Comment"># define a container with field 'z'</span>
+<span id="L1073" class="LineNr">1073 </span><span class="muData">container</span> foo2 [
+<span id="L1074" class="LineNr">1074 </span>  <span class="Normal">z</span>:num
+<span id="L1075" class="LineNr">1075 </span>]
+<span id="L1076" class="LineNr">1076 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
+<span id="L1077" class="LineNr">1077 </span>  local-scope
+<span id="L1078" class="LineNr">1078 </span>  <span class="Normal">x</span>:foo2<span class="Special"> &lt;- </span>merge <span class="Constant">34</span>
+<span id="L1079" class="LineNr">1079 </span>  <span class="Normal">y</span>:num<span class="Special"> &lt;- </span>get x<span class="Delimiter">,</span> z:offse  <span class="Comment"># typo in 'offset'</span>
+<span id="L1080" class="LineNr">1080 </span><span class="PreProc">  </span><span class="Comment"># define a variable with the same name 'z'</span>
+<span id="L1081" class="LineNr">1081 </span>  <span class="Normal">z</span>:&amp;:num<span class="Special"> &lt;- </span>copy <span class="Constant">34</span>
+<span id="L1082" class="LineNr">1082 </span>  <span class="Comment"># trigger specialization of the shape-shifting recipe</span>
+<span id="L1083" class="LineNr">1083 </span>  foo *z
+<span id="L1084" class="LineNr">1084 </span>]
+<span id="L1085" class="LineNr">1085 </span><span class="Comment"># shouldn't crash</span>
+<span id="L1086" class="LineNr">1086 </span>
+<span id="L1087" class="LineNr">1087 </span><span class="Delimiter">:(scenario tangle_shape_shifting_recipe)</span>
+<span id="L1088" class="LineNr">1088 </span><span class="Comment"># shape-shifting recipe</span>
+<span id="L1089" class="LineNr">1089 </span><span class="muRecipe">def</span> foo a:_elem [
+<span id="L1090" class="LineNr">1090 </span>  local-scope
+<span id="L1091" class="LineNr">1091 </span>  load-ingredients
+<span id="L1092" class="LineNr">1092 </span>  &lt;label1&gt;
+<span id="L1093" class="LineNr">1093 </span>]
+<span id="L1094" class="LineNr">1094 </span><span class="Comment"># tangle some code that refers to the type ingredient</span>
+<span id="L1095" class="LineNr">1095 </span><span class="muRecipe">after</span> &lt;label1&gt; [
+<span id="L1096" class="LineNr">1096 </span>  <span class="Normal">b</span>:_elem<span class="Special"> &lt;- </span>copy a
+<span id="L1097" class="LineNr">1097 </span>]
+<span id="L1098" class="LineNr">1098 </span><span class="Comment"># trigger specialization</span>
+<span id="L1099" class="LineNr">1099 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
+<span id="L1100" class="LineNr">1100 </span>  local-scope
+<span id="L1101" class="LineNr">1101 </span>  foo <span class="Constant">34</span>
+<span id="L1102" class="LineNr">1102 </span>]
+<span id="L1103" class="LineNr">1103 </span>$error: <span class="Constant">0</span>
+<span id="L1104" class="LineNr">1104 </span>
+<span id="L1105" class="LineNr">1105 </span><span class="Delimiter">:(scenario tangle_shape_shifting_recipe_with_type_abbreviation)</span>
+<span id="L1106" class="LineNr">1106 </span><span class="Comment"># shape-shifting recipe</span>
+<span id="L1107" class="LineNr">1107 </span><span class="muRecipe">def</span> foo a:_elem [
+<span id="L1108" class="LineNr">1108 </span>  local-scope
+<span id="L1109" class="LineNr">1109 </span>  load-ingredients
+<span id="L1110" class="LineNr">1110 </span>  &lt;label1&gt;
+<span id="L1111" class="LineNr">1111 </span>]
+<span id="L1112" class="LineNr">1112 </span><span class="Comment"># tangle some code that refers to the type ingredient</span>
+<span id="L1113" class="LineNr">1113 </span><span class="muRecipe">after</span> &lt;label1&gt; [
+<span id="L1114" class="LineNr">1114 </span>  <span class="Normal">b</span>:<span class="Normal">bool</span><span class="Special"> &lt;- </span>copy <span class="Constant">0</span>  <span class="Comment"># type abbreviation</span>
+<span id="L1115" class="LineNr">1115 </span>]
+<span id="L1116" class="LineNr">1116 </span><span class="Comment"># trigger specialization</span>
+<span id="L1117" class="LineNr">1117 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
+<span id="L1118" class="LineNr">1118 </span>  local-scope
+<span id="L1119" class="LineNr">1119 </span>  foo <span class="Constant">34</span>
+<span id="L1120" class="LineNr">1120 </span>]
+<span id="L1121" class="LineNr">1121 </span>$error: <span class="Constant">0</span>
+<span id="L1122" class="LineNr">1122 </span>
+<span id="L1123" class="LineNr">1123 </span><span class="Delimiter">:(scenario shape_shifting_recipe_coexists_with_primitive)</span>
+<span id="L1124" class="LineNr">1124 </span><span class="Comment"># recipe overloading a primitive with a generic type</span>
+<span id="L1125" class="LineNr">1125 </span><span class="muRecipe">def</span> add a:&amp;:foo:_elem [
+<span id="L1126" class="LineNr">1126 </span>  assert <span class="Constant">0</span><span class="Delimiter">,</span> [should <span class="Normal">not</span> get here]
+<span id="L1127" class="LineNr">1127 </span>]
+<span id="L1128" class="LineNr">1128 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
+<span id="L1129" class="LineNr">1129 </span>  <span class="Comment"># call primitive add with literal 0</span>
+<span id="L1130" class="LineNr">1130 </span>  add <span class="Constant">0</span><span class="Delimiter">,</span> <span class="Constant">0</span>
+<span id="L1131" class="LineNr">1131 </span>]
+<span id="L1132" class="LineNr">1132 </span>$error: <span class="Constant">0</span>
+<span id="L1133" class="LineNr">1133 </span>
+<span id="L1134" class="LineNr">1134 </span><span class="Delimiter">:(scenario specialization_heuristic_test_1)</span>
+<span id="L1135" class="LineNr">1135 </span><span class="Comment"># modeled on the 'buffer' container in text.mu</span>
+<span id="L1136" class="LineNr">1136 </span><span class="muData">container</span> foo_buffer:_elem [
+<span id="L1137" class="LineNr">1137 </span>  <span class="Normal">x</span>:num
+<span id="L1138" class="LineNr">1138 </span>]
+<span id="L1139" class="LineNr">1139 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
+<span id="L1140" class="LineNr">1140 </span>  append <span class="Constant">1</span>:&amp;:foo_buffer:<span class="Normal">char</span>/<span class="Special">raw</span><span class="Delimiter">,</span> <span class="Constant">2</span>:text/<span class="Special">raw</span>
+<span id="L1141" class="LineNr">1141 </span>]
+<span id="L1142" class="LineNr">1142 </span><span class="muRecipe">def</span> append buf:&amp;:foo_buffer:_elem<span class="Delimiter">,</span> x:_elem<span class="muRecipe"> -&gt; </span>buf:&amp;:foo_buffer:_elem [
+<span id="L1143" class="LineNr">1143 </span>  local-scope
+<span id="L1144" class="LineNr">1144 </span>  load-ingredients
+<span id="L1145" class="LineNr">1145 </span>  stash <span class="Constant">34</span>
+<span id="L1146" class="LineNr">1146 </span>]
+<span id="L1147" class="LineNr">1147 </span><span class="muRecipe">def</span> append buf:&amp;:foo_buffer:<span class="Normal">char</span><span class="Delimiter">,</span> x:_elem<span class="muRecipe"> -&gt; </span>buf:&amp;:foo_buffer:<span class="Normal">char</span> [
+<span id="L1148" class="LineNr">1148 </span>  local-scope
+<span id="L1149" class="LineNr">1149 </span>  load-ingredients
+<span id="L1150" class="LineNr">1150 </span>  stash <span class="Constant">35</span>
+<span id="L1151" class="LineNr">1151 </span>]
+<span id="L1152" class="LineNr">1152 </span><span class="muRecipe">def</span> append buf:&amp;:foo_buffer:_elem<span class="Delimiter">,</span> x:&amp;:@:_elem<span class="muRecipe"> -&gt; </span>buf:&amp;:foo_buffer:_elem [
+<span id="L1153" class="LineNr">1153 </span>  local-scope
+<span id="L1154" class="LineNr">1154 </span>  load-ingredients
+<span id="L1155" class="LineNr">1155 </span>  stash <span class="Constant">36</span>
+<span id="L1156" class="LineNr">1156 </span>]
+<span id="L1157" class="LineNr">1157 </span><span class="traceContains">+app: 36</span>
 </pre>
 </body>
 </html>
diff --git a/html/057immutable.cc.html b/html/057immutable.cc.html
index 5b28aafb..17c2dffb 100644
--- a/html/057immutable.cc.html
+++ b/html/057immutable.cc.html
@@ -408,7 +408,7 @@ if ('onhashchange' in window) {
 <span id="L344" class="LineNr">344 </span>  <span class="Comment">//   b) we never call 'put' or 'put-index' on it, and</span>
 <span id="L345" class="LineNr">345 </span>  <span class="Comment">//   c) any non-primitive recipe calls in the body aren't returning it as a product</span>
 <span id="L346" class="LineNr">346 </span>  <span class="Normal">const</span> recipe&amp; caller = get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">);</span>
-<span id="L347" class="LineNr">347 </span>  <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">9991</span><span class="Delimiter">,</span> <span class="Constant">&quot;transform&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;--- check mutability of ingredients in <a href='010vm.cc.html#L19'>recipe</a> &quot;</span> &lt;&lt; caller<span class="Delimiter">.</span>name &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L347" class="LineNr">347 </span>  <a href='003trace.cc.html#L167'>trace</a><span class="Delimiter">(</span><span class="Constant">9991</span><span class="Delimiter">,</span> <span class="Constant">&quot;transform&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;--- check mutability of ingredients in <a href='010vm.cc.html#L19'>recipe</a> &quot;</span> &lt;&lt; caller<span class="Delimiter">.</span>name &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L348" class="LineNr">348 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!caller<span class="Delimiter">.</span>has_header<span class="Delimiter">)</span> <span class="Identifier">return</span><span class="Delimiter">;</span>  <span class="Comment">// skip check for old-style recipes calling next-ingredient directly</span>
 <span id="L349" class="LineNr">349 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> i = <span class="Constant">0</span><span class="Delimiter">;</span>  i &lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>caller<span class="Delimiter">.</span>ingredients<span class="Delimiter">);</span>  ++i<span class="Delimiter">)</span> <span class="Delimiter">{</span>
 <span id="L350" class="LineNr">350 </span>  <span class="Conceal">¦</span> <span class="Normal">const</span> reagent&amp; current_ingredient = caller<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">);</span>
@@ -431,7 +431,7 @@ if ('onhashchange' in window) {
 <span id="L367" class="LineNr">367 </span>  <span class="Conceal">¦</span> <span class="Comment">// primitive recipe</span>
 <span id="L368" class="LineNr">368 </span>  <span class="Conceal">¦</span> <span class="Normal">switch</span> <span class="Delimiter">(</span>inst<span class="Delimiter">.</span>operation<span class="Delimiter">)</span> <span class="Delimiter">{</span>
 <span id="L369" class="LineNr">369 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">case</span> <a href='010vm.cc.html#L189'>COPY</a>:
-<span id="L370" class="LineNr">370 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">for</span> <span class="Delimiter">(</span>set&lt;<span class="Normal">int</span>&gt;::iterator p = current_ingredient_indices<span class="Delimiter">.</span>begin<span class="Delimiter">();</span>  p != current_ingredient_indices<span class="Delimiter">.</span><a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>  ++p<span class="Delimiter">)</span>
+<span id="L370" class="LineNr">370 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">for</span> <span class="Delimiter">(</span>set&lt;<span class="Normal">int</span>&gt;::iterator p = current_ingredient_indices<span class="Delimiter">.</span>begin<span class="Delimiter">();</span>  p != current_ingredient_indices<span class="Delimiter">.</span><a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>  ++p<span class="Delimiter">)</span>
 <span id="L371" class="LineNr">371 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> current_ingredient_and_aliases<span class="Delimiter">.</span>insert<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span>*p<span class="Delimiter">).</span>name<span class="Delimiter">);</span>
 <span id="L372" class="LineNr">372 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L373" class="LineNr">373 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">case</span> GET:
@@ -449,7 +449,7 @@ if ('onhashchange' in window) {
 <span id="L385" class="LineNr">385 </span>  <span class="Normal">else</span> <span class="Delimiter">{</span>
 <span id="L386" class="LineNr">386 </span>  <span class="Conceal">¦</span> <span class="Comment">// defined recipe</span>
 <span id="L387" class="LineNr">387 </span>  <span class="Conceal">¦</span> set&lt;<span class="Normal">int</span>&gt; contained_in_product_indices = <a href='057immutable.cc.html#L395'>scan_contained_in_product_indices</a><span class="Delimiter">(</span>inst<span class="Delimiter">,</span> current_ingredient_indices<span class="Delimiter">);</span>
-<span id="L388" class="LineNr">388 </span>  <span class="Conceal">¦</span> <span class="Normal">for</span> <span class="Delimiter">(</span>set&lt;<span class="Normal">int</span>&gt;::iterator p = contained_in_product_indices<span class="Delimiter">.</span>begin<span class="Delimiter">();</span>  p != contained_in_product_indices<span class="Delimiter">.</span><a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>  ++p<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L388" class="LineNr">388 </span>  <span class="Conceal">¦</span> <span class="Normal">for</span> <span class="Delimiter">(</span>set&lt;<span class="Normal">int</span>&gt;::iterator p = contained_in_product_indices<span class="Delimiter">.</span>begin<span class="Delimiter">();</span>  p != contained_in_product_indices<span class="Delimiter">.</span><a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>  ++p<span class="Delimiter">)</span> <span class="Delimiter">{</span>
 <span id="L389" class="LineNr">389 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>*p &lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>products<span class="Delimiter">))</span>
 <span id="L390" class="LineNr">390 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> current_ingredient_and_aliases<span class="Delimiter">.</span>insert<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span>*p<span class="Delimiter">));</span>
 <span id="L391" class="LineNr">391 </span>  <span class="Conceal">¦</span> <span class="Delimiter">}</span>
@@ -459,7 +459,7 @@ if ('onhashchange' in window) {
 <span id="L395" class="LineNr">395 </span>set&lt;<span class="Normal">int</span>&gt; <a href='057immutable.cc.html#L395'>scan_contained_in_product_indices</a><span class="Delimiter">(</span><span class="Normal">const</span> instruction&amp; inst<span class="Delimiter">,</span> set&lt;<span class="Normal">int</span>&gt;&amp; <a href='057immutable.cc.html#L504'>ingredient_indices</a><span class="Delimiter">)</span> <span class="Delimiter">{</span>
 <span id="L396" class="LineNr">396 </span>  set&lt;reagent&gt; selected_ingredients<span class="Delimiter">;</span>
 <span id="L397" class="LineNr">397 </span>  <span class="Normal">const</span> recipe&amp; callee = get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> inst<span class="Delimiter">.</span>operation<span class="Delimiter">);</span>
-<span id="L398" class="LineNr">398 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span>set&lt;<span class="Normal">int</span>&gt;::iterator p = <a href='057immutable.cc.html#L504'>ingredient_indices</a><span class="Delimiter">.</span>begin<span class="Delimiter">();</span>  p != <a href='057immutable.cc.html#L504'>ingredient_indices</a><span class="Delimiter">.</span><a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>  ++p<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L398" class="LineNr">398 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span>set&lt;<span class="Normal">int</span>&gt;::iterator p = <a href='057immutable.cc.html#L504'>ingredient_indices</a><span class="Delimiter">.</span>begin<span class="Delimiter">();</span>  p != <a href='057immutable.cc.html#L504'>ingredient_indices</a><span class="Delimiter">.</span><a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>  ++p<span class="Delimiter">)</span> <span class="Delimiter">{</span>
 <span id="L399" class="LineNr">399 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>*p &gt;= <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>callee<span class="Delimiter">.</span>ingredients<span class="Delimiter">))</span> <span class="Identifier">continue</span><span class="Delimiter">;</span>  <span class="Comment">// optional immutable ingredient</span>
 <span id="L400" class="LineNr">400 </span>  <span class="Conceal">¦</span> selected_ingredients<span class="Delimiter">.</span>insert<span class="Delimiter">(</span>callee<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>*p<span class="Delimiter">));</span>
 <span id="L401" class="LineNr">401 </span>  <span class="Delimiter">}</span>
@@ -467,7 +467,7 @@ if ('onhashchange' in window) {
 <span id="L403" class="LineNr">403 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> i = <span class="Constant">0</span><span class="Delimiter">;</span>  i &lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>callee<span class="Delimiter">.</span>products<span class="Delimiter">);</span>  ++i<span class="Delimiter">)</span> <span class="Delimiter">{</span>
 <span id="L404" class="LineNr">404 </span>  <span class="Conceal">¦</span> <span class="Normal">const</span> reagent&amp; current_product = callee<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">);</span>
 <span id="L405" class="LineNr">405 </span>  <span class="Conceal">¦</span> <span class="Normal">const</span> string_tree* contained_in_name = property<span class="Delimiter">(</span>current_product<span class="Delimiter">,</span> <span class="Constant">&quot;contained-in&quot;</span><span class="Delimiter">);</span>
-<span id="L406" class="LineNr">406 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>contained_in_name &amp;&amp; selected_ingredients<span class="Delimiter">.</span>find<span class="Delimiter">(</span>contained_in_name<span class="Delimiter">-&gt;</span>value<span class="Delimiter">)</span> != selected_ingredients<span class="Delimiter">.</span><a href='003trace.cc.html#L197'>end</a><span class="Delimiter">())</span>
+<span id="L406" class="LineNr">406 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>contained_in_name &amp;&amp; selected_ingredients<span class="Delimiter">.</span>find<span class="Delimiter">(</span>contained_in_name<span class="Delimiter">-&gt;</span>value<span class="Delimiter">)</span> != selected_ingredients<span class="Delimiter">.</span><a href='003trace.cc.html#L203'>end</a><span class="Delimiter">())</span>
 <span id="L407" class="LineNr">407 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> result<span class="Delimiter">.</span>insert<span class="Delimiter">(</span>i<span class="Delimiter">);</span>
 <span id="L408" class="LineNr">408 </span>  <span class="Delimiter">}</span>
 <span id="L409" class="LineNr">409 </span>  <span class="Identifier">return</span> result<span class="Delimiter">;</span>
@@ -503,19 +503,19 @@ if ('onhashchange' in window) {
 <span id="L439" class="LineNr">439 </span>  <span class="Comment">// first check if the instruction is directly modifying something it shouldn't</span>
 <span id="L440" class="LineNr">440 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> i = <span class="Constant">0</span><span class="Delimiter">;</span>  i &lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>products<span class="Delimiter">);</span>  ++i<span class="Delimiter">)</span> <span class="Delimiter">{</span>
 <span id="L441" class="LineNr">441 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>has_property<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">),</span> <span class="Constant">&quot;lookup&quot;</span><span class="Delimiter">)</span>
-<span id="L442" class="LineNr">442 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> &amp;&amp; current_ingredient_and_aliases<span class="Delimiter">.</span>find<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">))</span> != current_ingredient_and_aliases<span class="Delimiter">.</span><a href='003trace.cc.html#L197'>end</a><span class="Delimiter">())</span> <span class="Delimiter">{</span>
+<span id="L442" class="LineNr">442 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> &amp;&amp; current_ingredient_and_aliases<span class="Delimiter">.</span>find<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">))</span> != current_ingredient_and_aliases<span class="Delimiter">.</span><a href='003trace.cc.html#L203'>end</a><span class="Delimiter">())</span> <span class="Delimiter">{</span>
 <span id="L443" class="LineNr">443 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> string current_product_name = inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">).</span>name<span class="Delimiter">;</span>
 <span id="L444" class="LineNr">444 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>current_product_name == original_ingredient_name<span class="Delimiter">)</span>
-<span id="L445" class="LineNr">445 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>caller<span class="Delimiter">.</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;cannot modify '&quot;</span> &lt;&lt; current_product_name &lt;&lt; <span class="Constant">&quot;' in <a href='010vm.cc.html#L32'>instruction</a> '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;' because it's an ingredient of recipe &quot;</span> &lt;&lt; caller<span class="Delimiter">.</span>name &lt;&lt; <span class="Constant">&quot; but not also a product</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; end<span class="Delimiter">();</span>
+<span id="L445" class="LineNr">445 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>caller<span class="Delimiter">.</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;cannot modify '&quot;</span> &lt;&lt; current_product_name &lt;&lt; <span class="Constant">&quot;' in <a href='010vm.cc.html#L32'>instruction</a> '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;' because it's an ingredient of recipe &quot;</span> &lt;&lt; caller<span class="Delimiter">.</span>name &lt;&lt; <span class="Constant">&quot; but not also a product</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; end<span class="Delimiter">();</span>
 <span id="L446" class="LineNr">446 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">else</span>
-<span id="L447" class="LineNr">447 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>caller<span class="Delimiter">.</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;cannot modify '&quot;</span> &lt;&lt; current_product_name &lt;&lt; <span class="Constant">&quot;' in <a href='010vm.cc.html#L32'>instruction</a> '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;' because that would modify &quot;</span> &lt;&lt; original_ingredient_name &lt;&lt; <span class="Constant">&quot; which is an ingredient of <a href='010vm.cc.html#L19'>recipe</a> &quot;</span> &lt;&lt; caller<span class="Delimiter">.</span>name &lt;&lt; <span class="Constant">&quot; but not also a product</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L447" class="LineNr">447 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>caller<span class="Delimiter">.</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;cannot modify '&quot;</span> &lt;&lt; current_product_name &lt;&lt; <span class="Constant">&quot;' in <a href='010vm.cc.html#L32'>instruction</a> '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;' because that would modify &quot;</span> &lt;&lt; original_ingredient_name &lt;&lt; <span class="Constant">&quot; which is an ingredient of <a href='010vm.cc.html#L19'>recipe</a> &quot;</span> &lt;&lt; caller<span class="Delimiter">.</span>name &lt;&lt; <span class="Constant">&quot; but not also a product</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L448" class="LineNr">448 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Identifier">return</span><span class="Delimiter">;</span>
 <span id="L449" class="LineNr">449 </span>  <span class="Conceal">¦</span> <span class="Delimiter">}</span>
 <span id="L450" class="LineNr">450 </span>  <span class="Delimiter">}</span>
 <span id="L451" class="LineNr">451 </span>  <span class="Comment">// check if there's any indirect modification going on</span>
 <span id="L452" class="LineNr">452 </span>  set&lt;<span class="Normal">int</span>&gt; current_ingredient_indices = <a href='057immutable.cc.html#L504'>ingredient_indices</a><span class="Delimiter">(</span>inst<span class="Delimiter">,</span> current_ingredient_and_aliases<span class="Delimiter">);</span>
 <span id="L453" class="LineNr">453 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>current_ingredient_indices<span class="Delimiter">.</span>empty<span class="Delimiter">())</span> <span class="Identifier">return</span><span class="Delimiter">;</span>  <span class="Comment">// ingredient not found in call</span>
-<span id="L454" class="LineNr">454 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span>set&lt;<span class="Normal">int</span>&gt;::iterator p = current_ingredient_indices<span class="Delimiter">.</span>begin<span class="Delimiter">();</span>  p != current_ingredient_indices<span class="Delimiter">.</span><a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>  ++p<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L454" class="LineNr">454 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span>set&lt;<span class="Normal">int</span>&gt;::iterator p = current_ingredient_indices<span class="Delimiter">.</span>begin<span class="Delimiter">();</span>  p != current_ingredient_indices<span class="Delimiter">.</span><a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>  ++p<span class="Delimiter">)</span> <span class="Delimiter">{</span>
 <span id="L455" class="LineNr">455 </span>  <span class="Conceal">¦</span> <span class="Normal">const</span> <span class="Normal">int</span> current_ingredient_index = *p<span class="Delimiter">;</span>
 <span id="L456" class="LineNr">456 </span>  <span class="Conceal">¦</span> reagent current_ingredient = inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>current_ingredient_index<span class="Delimiter">);</span>
 <span id="L457" class="LineNr">457 </span>  <span class="Conceal">¦</span> canonize_type<span class="Delimiter">(</span>current_ingredient<span class="Delimiter">);</span>
@@ -529,9 +529,9 @@ if ('onhashchange' in window) {
 <span id="L465" class="LineNr">465 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>inst<span class="Delimiter">.</span>operation == PUT || inst<span class="Delimiter">.</span>operation == PUT_INDEX<span class="Delimiter">)</span> <span class="Delimiter">{</span>
 <span id="L466" class="LineNr">466 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>current_ingredient_index == <span class="Constant">0</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
 <span id="L467" class="LineNr">467 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>current_ingredient_name == original_ingredient_name<span class="Delimiter">)</span>
-<span id="L468" class="LineNr">468 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>caller<span class="Delimiter">.</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;cannot modify '&quot;</span> &lt;&lt; current_ingredient_name &lt;&lt; <span class="Constant">&quot;' in <a href='010vm.cc.html#L32'>instruction</a> '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;' because it's an ingredient of recipe &quot;</span> &lt;&lt; caller<span class="Delimiter">.</span>name &lt;&lt; <span class="Constant">&quot; but not also a product</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; end<span class="Delimiter">();</span>
+<span id="L468" class="LineNr">468 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>caller<span class="Delimiter">.</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;cannot modify '&quot;</span> &lt;&lt; current_ingredient_name &lt;&lt; <span class="Constant">&quot;' in <a href='010vm.cc.html#L32'>instruction</a> '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;' because it's an ingredient of recipe &quot;</span> &lt;&lt; caller<span class="Delimiter">.</span>name &lt;&lt; <span class="Constant">&quot; but not also a product</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; end<span class="Delimiter">();</span>
 <span id="L469" class="LineNr">469 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">else</span>
-<span id="L470" class="LineNr">470 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>caller<span class="Delimiter">.</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;cannot modify '&quot;</span> &lt;&lt; current_ingredient_name &lt;&lt; <span class="Constant">&quot;' in <a href='010vm.cc.html#L32'>instruction</a> '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;' because that would modify '&quot;</span> &lt;&lt; original_ingredient_name &lt;&lt; <span class="Constant">&quot;' which is an ingredient of <a href='010vm.cc.html#L19'>recipe</a> &quot;</span> &lt;&lt; caller<span class="Delimiter">.</span>name &lt;&lt; <span class="Constant">&quot; but not also a product</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L470" class="LineNr">470 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>caller<span class="Delimiter">.</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;cannot modify '&quot;</span> &lt;&lt; current_ingredient_name &lt;&lt; <span class="Constant">&quot;' in <a href='010vm.cc.html#L32'>instruction</a> '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;' because that would modify '&quot;</span> &lt;&lt; original_ingredient_name &lt;&lt; <span class="Constant">&quot;' which is an ingredient of <a href='010vm.cc.html#L19'>recipe</a> &quot;</span> &lt;&lt; caller<span class="Delimiter">.</span>name &lt;&lt; <span class="Constant">&quot; but not also a product</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L471" class="LineNr">471 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Delimiter">}</span>
 <span id="L472" class="LineNr">472 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Delimiter">}</span>
 <span id="L473" class="LineNr">473 </span>  <span class="Conceal">¦</span> <span class="Delimiter">}</span>
@@ -539,9 +539,9 @@ if ('onhashchange' in window) {
 <span id="L475" class="LineNr">475 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Comment">// defined recipe</span>
 <span id="L476" class="LineNr">476 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span><a href='057immutable.cc.html#L486'>is_modified_in_recipe</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>operation<span class="Delimiter">,</span> current_ingredient_index<span class="Delimiter">,</span> caller<span class="Delimiter">))</span> <span class="Delimiter">{</span>
 <span id="L477" class="LineNr">477 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>current_ingredient_name == original_ingredient_name<span class="Delimiter">)</span>
-<span id="L478" class="LineNr">478 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>caller<span class="Delimiter">.</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;cannot modify '&quot;</span> &lt;&lt; current_ingredient_name &lt;&lt; <span class="Constant">&quot;' in <a href='010vm.cc.html#L32'>instruction</a> '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;' because it's an ingredient of recipe &quot;</span> &lt;&lt; caller<span class="Delimiter">.</span>name &lt;&lt; <span class="Constant">&quot; but not also a product</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; end<span class="Delimiter">();</span>
+<span id="L478" class="LineNr">478 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>caller<span class="Delimiter">.</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;cannot modify '&quot;</span> &lt;&lt; current_ingredient_name &lt;&lt; <span class="Constant">&quot;' in <a href='010vm.cc.html#L32'>instruction</a> '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;' because it's an ingredient of recipe &quot;</span> &lt;&lt; caller<span class="Delimiter">.</span>name &lt;&lt; <span class="Constant">&quot; but not also a product</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; end<span class="Delimiter">();</span>
 <span id="L479" class="LineNr">479 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">else</span>
-<span id="L480" class="LineNr">480 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>caller<span class="Delimiter">.</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;cannot modify '&quot;</span> &lt;&lt; current_ingredient_name &lt;&lt; <span class="Constant">&quot;' in <a href='010vm.cc.html#L32'>instruction</a> '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;' because that would modify '&quot;</span> &lt;&lt; original_ingredient_name &lt;&lt; <span class="Constant">&quot;' which is an ingredient of <a href='010vm.cc.html#L19'>recipe</a> &quot;</span> &lt;&lt; caller<span class="Delimiter">.</span>name &lt;&lt; <span class="Constant">&quot; but not also a product</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L480" class="LineNr">480 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>caller<span class="Delimiter">.</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;cannot modify '&quot;</span> &lt;&lt; current_ingredient_name &lt;&lt; <span class="Constant">&quot;' in <a href='010vm.cc.html#L32'>instruction</a> '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;' because that would modify '&quot;</span> &lt;&lt; original_ingredient_name &lt;&lt; <span class="Constant">&quot;' which is an ingredient of <a href='010vm.cc.html#L19'>recipe</a> &quot;</span> &lt;&lt; caller<span class="Delimiter">.</span>name &lt;&lt; <span class="Constant">&quot; but not also a product</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L481" class="LineNr">481 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Delimiter">}</span>
 <span id="L482" class="LineNr">482 </span>  <span class="Conceal">¦</span> <span class="Delimiter">}</span>
 <span id="L483" class="LineNr">483 </span>  <span class="Delimiter">}</span>
@@ -550,7 +550,7 @@ if ('onhashchange' in window) {
 <span id="L486" class="LineNr">486 </span><span class="Normal">bool</span> <a href='057immutable.cc.html#L486'>is_modified_in_recipe</a><span class="Delimiter">(</span><span class="Normal">const</span> <a href='010vm.cc.html#L14'>recipe_ordinal</a> r<span class="Delimiter">,</span> <span class="Normal">const</span> <span class="Normal">int</span> ingredient_index<span class="Delimiter">,</span> <span class="Normal">const</span> recipe&amp; caller<span class="Delimiter">)</span> <span class="Delimiter">{</span>
 <span id="L487" class="LineNr">487 </span>  <span class="Normal">const</span> recipe&amp; callee = get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">);</span>
 <span id="L488" class="LineNr">488 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!callee<span class="Delimiter">.</span>has_header<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L489" class="LineNr">489 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>caller<span class="Delimiter">.</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;can't check mutability of ingredients in recipe &quot;</span> &lt;&lt; callee<span class="Delimiter">.</span>name &lt;&lt; <span class="Constant">&quot; because it uses 'next-ingredient' directly, rather than a recipe header.</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; end<span class="Delimiter">();</span>
+<span id="L489" class="LineNr">489 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>caller<span class="Delimiter">.</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;can't check mutability of ingredients in recipe &quot;</span> &lt;&lt; callee<span class="Delimiter">.</span>name &lt;&lt; <span class="Constant">&quot; because it uses 'next-ingredient' directly, rather than a recipe header.</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; end<span class="Delimiter">();</span>
 <span id="L490" class="LineNr">490 </span>  <span class="Conceal">¦</span> <span class="Identifier">return</span> <span class="Constant">true</span><span class="Delimiter">;</span>
 <span id="L491" class="LineNr">491 </span>  <span class="Delimiter">}</span>
 <span id="L492" class="LineNr">492 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>ingredient_index &gt;= <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>callee<span class="Delimiter">.</span>ingredients<span class="Delimiter">))</span> <span class="Identifier">return</span> <span class="Constant">false</span><span class="Delimiter">;</span>  <span class="Comment">// optional immutable ingredient</span>
@@ -569,7 +569,7 @@ if ('onhashchange' in window) {
 <span id="L505" class="LineNr">505 </span>  set&lt;<span class="Normal">int</span>&gt; result<span class="Delimiter">;</span>
 <span id="L506" class="LineNr">506 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> i = <span class="Constant">0</span><span class="Delimiter">;</span>  i &lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">);</span>  ++i<span class="Delimiter">)</span> <span class="Delimiter">{</span>
 <span id="L507" class="LineNr">507 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>is_literal<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">)))</span> <span class="Identifier">continue</span><span class="Delimiter">;</span>
-<span id="L508" class="LineNr">508 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>ingredient_names<span class="Delimiter">.</span>find<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">))</span> != ingredient_names<span class="Delimiter">.</span><a href='003trace.cc.html#L197'>end</a><span class="Delimiter">())</span>
+<span id="L508" class="LineNr">508 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>ingredient_names<span class="Delimiter">.</span>find<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">))</span> != ingredient_names<span class="Delimiter">.</span><a href='003trace.cc.html#L203'>end</a><span class="Delimiter">())</span>
 <span id="L509" class="LineNr">509 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> result<span class="Delimiter">.</span>insert<span class="Delimiter">(</span>i<span class="Delimiter">);</span>
 <span id="L510" class="LineNr">510 </span>  <span class="Delimiter">}</span>
 <span id="L511" class="LineNr">511 </span>  <span class="Identifier">return</span> result<span class="Delimiter">;</span>
@@ -621,7 +621,7 @@ if ('onhashchange' in window) {
 <span id="L557" class="LineNr">557 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!tmp<span class="Delimiter">-&gt;</span>atom
 <span id="L558" class="LineNr">558 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> || <span class="Delimiter">(</span>!is_present_in_ingredients<span class="Delimiter">(</span>caller<span class="Delimiter">,</span> tmp<span class="Delimiter">-&gt;</span>value<span class="Delimiter">)</span>
 <span id="L559" class="LineNr">559 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> &amp;&amp; !is_present_in_products<span class="Delimiter">(</span>caller<span class="Delimiter">,</span> tmp<span class="Delimiter">-&gt;</span>value<span class="Delimiter">)))</span> <span class="Delimiter">{</span>
-<span id="L560" class="LineNr">560 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>caller<span class="Delimiter">.</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;/contained-in can only point to another ingredient or product, but got '&quot;</span> &lt;&lt; to_string<span class="Delimiter">(</span>property<span class="Delimiter">(</span>current_ingredient<span class="Delimiter">,</span> <span class="Constant">&quot;contained-in&quot;</span><span class="Delimiter">))</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L560" class="LineNr">560 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>caller<span class="Delimiter">.</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;/contained-in can only point to another ingredient or product, but got '&quot;</span> &lt;&lt; to_string<span class="Delimiter">(</span>property<span class="Delimiter">(</span>current_ingredient<span class="Delimiter">,</span> <span class="Constant">&quot;contained-in&quot;</span><span class="Delimiter">))</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L561" class="LineNr">561 </span>  <span class="Delimiter">}</span>
 <span id="L562" class="LineNr">562 </span>  <span class="Identifier">continue</span><span class="Delimiter">;</span>
 <span id="L563" class="LineNr">563 </span><span class="Delimiter">}</span>
diff --git a/html/058to_text.cc.html b/html/058to_text.cc.html
index ab99a6e9..b0798332 100644
--- a/html/058to_text.cc.html
+++ b/html/058to_text.cc.html
@@ -69,7 +69,7 @@ if ('onhashchange' in window) {
 <span id="L9" class="LineNr"> 9 </span><span class="Delimiter">:(before &quot;End Primitive Recipe Checks&quot;)</span>
 <span id="L10" class="LineNr">10 </span><span class="Normal">case</span> TO_TEXT: <span class="Delimiter">{</span>
 <span id="L11" class="LineNr">11 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">)</span> != <span class="Constant">1</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L12" class="LineNr">12 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'to-text' requires a single ingredient, but got '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L12" class="LineNr">12 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'to-text' requires a single ingredient, but got '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L13" class="LineNr">13 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L14" class="LineNr">14 </span>  <span class="Delimiter">}</span>
 <span id="L15" class="LineNr">15 </span>  <span class="Comment">// can handle any type</span>
@@ -78,7 +78,7 @@ if ('onhashchange' in window) {
 <span id="L18" class="LineNr">18 </span><span class="Delimiter">:(before &quot;End Primitive Recipe Implementations&quot;)</span>
 <span id="L19" class="LineNr">19 </span><span class="Normal">case</span> TO_TEXT: <span class="Delimiter">{</span>
 <span id="L20" class="LineNr">20 </span>  products<span class="Delimiter">.</span>resize<span class="Delimiter">(</span><span class="Constant">1</span><span class="Delimiter">);</span>
-<span id="L21" class="LineNr">21 </span>  products<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>push_back<span class="Delimiter">(</span><a href='038new_text.cc.html#L38'>new_mu_text</a><span class="Delimiter">(</span>inspect<span class="Delimiter">(</span><a href='026call.cc.html#L87'>current_instruction</a><span class="Delimiter">().</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">),</span> ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">))));</span>
+<span id="L21" class="LineNr">21 </span>  products<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>push_back<span class="Delimiter">(</span><a href='038new_text.cc.html#L38'>new_mu_text</a><span class="Delimiter">(</span>inspect<span class="Delimiter">(</span><a href='026call.cc.html#L89'>current_instruction</a><span class="Delimiter">().</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">),</span> ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">))));</span>
 <span id="L22" class="LineNr">22 </span>  <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L23" class="LineNr">23 </span><span class="Delimiter">}</span>
 </pre>
diff --git a/html/060rewrite_literal_string.cc.html b/html/060rewrite_literal_string.cc.html
index a60ef3a0..578ec354 100644
--- a/html/060rewrite_literal_string.cc.html
+++ b/html/060rewrite_literal_string.cc.html
@@ -99,12 +99,12 @@ if ('onhashchange' in window) {
 <span id="L37" class="LineNr">37 </span>
 <span id="L38" class="LineNr">38 </span><span class="Normal">void</span> <a href='060rewrite_literal_string.cc.html#L38'>rewrite_literal_string_to_text</a><span class="Delimiter">(</span><span class="Normal">const</span> <a href='010vm.cc.html#L14'>recipe_ordinal</a> r<span class="Delimiter">)</span> <span class="Delimiter">{</span>
 <span id="L39" class="LineNr">39 </span>  recipe&amp; caller = get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">);</span>
-<span id="L40" class="LineNr">40 </span>  <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">9991</span><span class="Delimiter">,</span> <span class="Constant">&quot;transform&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;--- rewrite literal strings in <a href='010vm.cc.html#L19'>recipe</a> &quot;</span> &lt;&lt; caller<span class="Delimiter">.</span>name &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L40" class="LineNr">40 </span>  <a href='003trace.cc.html#L167'>trace</a><span class="Delimiter">(</span><span class="Constant">9991</span><span class="Delimiter">,</span> <span class="Constant">&quot;transform&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;--- rewrite literal strings in <a href='010vm.cc.html#L19'>recipe</a> &quot;</span> &lt;&lt; caller<span class="Delimiter">.</span>name &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L41" class="LineNr">41 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span><a href='060rewrite_literal_string.cc.html#L64'>contains_numeric_locations</a><span class="Delimiter">(</span>caller<span class="Delimiter">))</span> <span class="Identifier">return</span><span class="Delimiter">;</span>
 <span id="L42" class="LineNr">42 </span>  vector&lt;instruction&gt; new_instructions<span class="Delimiter">;</span>
 <span id="L43" class="LineNr">43 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> i = <span class="Constant">0</span><span class="Delimiter">;</span>  i &lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>caller<span class="Delimiter">.</span>steps<span class="Delimiter">);</span>  ++i<span class="Delimiter">)</span> <span class="Delimiter">{</span>
 <span id="L44" class="LineNr">44 </span>  <span class="Conceal">¦</span> instruction&amp; inst = caller<span class="Delimiter">.</span>steps<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">);</span>
-<span id="L45" class="LineNr">45 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>recipes_taking_literal_strings<span class="Delimiter">.</span>find<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>name<span class="Delimiter">)</span> == recipes_taking_literal_strings<span class="Delimiter">.</span><a href='003trace.cc.html#L197'>end</a><span class="Delimiter">())</span> <span class="Delimiter">{</span>
+<span id="L45" class="LineNr">45 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>recipes_taking_literal_strings<span class="Delimiter">.</span>find<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>name<span class="Delimiter">)</span> == recipes_taking_literal_strings<span class="Delimiter">.</span><a href='003trace.cc.html#L203'>end</a><span class="Delimiter">())</span> <span class="Delimiter">{</span>
 <span id="L46" class="LineNr">46 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> j = <span class="Constant">0</span><span class="Delimiter">;</span>  j &lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">);</span>  ++j<span class="Delimiter">)</span> <span class="Delimiter">{</span>
 <span id="L47" class="LineNr">47 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>!is_literal_text<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>j<span class="Delimiter">)))</span> <span class="Identifier">continue</span><span class="Delimiter">;</span>
 <span id="L48" class="LineNr">48 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='010vm.cc.html#L32'>instruction</a> def<span class="Delimiter">;</span>
@@ -127,10 +127,10 @@ if ('onhashchange' in window) {
 <span id="L65" class="LineNr">65 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> i = <span class="Constant">0</span><span class="Delimiter">;</span>  i &lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>caller<span class="Delimiter">.</span>steps<span class="Delimiter">);</span>  ++i<span class="Delimiter">)</span> <span class="Delimiter">{</span>
 <span id="L66" class="LineNr">66 </span>  <span class="Conceal">¦</span> <span class="Normal">const</span> instruction&amp; inst = caller<span class="Delimiter">.</span>steps<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">);</span>
 <span id="L67" class="LineNr">67 </span>  <span class="Conceal">¦</span> <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> in = <span class="Constant">0</span><span class="Delimiter">;</span>  in &lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">);</span>  ++in<span class="Delimiter">)</span>
-<span id="L68" class="LineNr">68 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span><a href='042name.cc.html#L148'>is_numeric_location</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>in<span class="Delimiter">)))</span>
+<span id="L68" class="LineNr">68 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span><a href='042name.cc.html#L146'>is_numeric_location</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>in<span class="Delimiter">)))</span>
 <span id="L69" class="LineNr">69 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Identifier">return</span> <span class="Constant">true</span><span class="Delimiter">;</span>
 <span id="L70" class="LineNr">70 </span>  <span class="Conceal">¦</span> <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> out = <span class="Constant">0</span><span class="Delimiter">;</span>  out &lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>products<span class="Delimiter">);</span>  ++out<span class="Delimiter">)</span>
-<span id="L71" class="LineNr">71 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span><a href='042name.cc.html#L148'>is_numeric_location</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span>out<span class="Delimiter">)))</span>
+<span id="L71" class="LineNr">71 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span><a href='042name.cc.html#L146'>is_numeric_location</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span>out<span class="Delimiter">)))</span>
 <span id="L72" class="LineNr">72 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Identifier">return</span> <span class="Constant">true</span><span class="Delimiter">;</span>
 <span id="L73" class="LineNr">73 </span>  <span class="Delimiter">}</span>
 <span id="L74" class="LineNr">74 </span>  <span class="Identifier">return</span> <span class="Constant">false</span><span class="Delimiter">;</span>
diff --git a/html/062convert_ingredients_to_text.cc.html b/html/062convert_ingredients_to_text.cc.html
index be118d13..fadab53b 100644
--- a/html/062convert_ingredients_to_text.cc.html
+++ b/html/062convert_ingredients_to_text.cc.html
@@ -77,10 +77,10 @@ if ('onhashchange' in window) {
 <span id="L14" class="LineNr"> 14 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
 <span id="L15" class="LineNr"> 15 </span>  local-scope
 <span id="L16" class="LineNr"> 16 </span>  <span class="Normal">n</span>:num<span class="Special"> &lt;- </span>copy <span class="Constant">34</span>
-<span id="L17" class="LineNr"> 17 </span>  <a href='003trace.cc.html#L161'>trace</a> <span class="Constant">2</span><span class="Delimiter">,</span> [app]<span class="Delimiter">,</span> n
+<span id="L17" class="LineNr"> 17 </span>  <a href='003trace.cc.html#L167'>trace</a> <span class="Constant">2</span><span class="Delimiter">,</span> [app]<span class="Delimiter">,</span> n
 <span id="L18" class="LineNr"> 18 </span>]
 <span id="L19" class="LineNr"> 19 </span><span class="traceContains">+transform: {trace_2_2: (&quot;address&quot; &quot;array&quot; &quot;character&quot;)} &lt;- to-text-line {n: &quot;number&quot;}</span>
-<span id="L20" class="LineNr"> 20 </span><span class="traceContains">+transform: <a href='003trace.cc.html#L161'>trace</a> {2: &quot;literal&quot;}, {&quot;app&quot;: &quot;literal-string&quot;}, {trace_2_2: (&quot;address&quot; &quot;array&quot; &quot;character&quot;)}</span>
+<span id="L20" class="LineNr"> 20 </span><span class="traceContains">+transform: <a href='003trace.cc.html#L167'>trace</a> {2: &quot;literal&quot;}, {&quot;app&quot;: &quot;literal-string&quot;}, {trace_2_2: (&quot;address&quot; &quot;array&quot; &quot;character&quot;)}</span>
 <span id="L21" class="LineNr"> 21 </span>
 <span id="L22" class="LineNr"> 22 </span><span class="Comment">//: special case: rewrite attempts to stash contents of most arrays to avoid</span>
 <span id="L23" class="LineNr"> 23 </span><span class="Comment">//: passing addresses around</span>
@@ -122,7 +122,7 @@ if ('onhashchange' in window) {
 <span id="L59" class="LineNr"> 59 </span><span class="Delimiter">:(code)</span>
 <span id="L60" class="LineNr"> 60 </span><span class="Normal">void</span> convert_ingredients_to_text<span class="Delimiter">(</span><span class="Normal">const</span> <a href='010vm.cc.html#L14'>recipe_ordinal</a> r<span class="Delimiter">)</span> <span class="Delimiter">{</span>
 <span id="L61" class="LineNr"> 61 </span>  recipe&amp; caller = get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">);</span>
-<span id="L62" class="LineNr"> 62 </span>  <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">9991</span><span class="Delimiter">,</span> <span class="Constant">&quot;transform&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;--- convert some ingredients to text in <a href='010vm.cc.html#L19'>recipe</a> &quot;</span> &lt;&lt; caller<span class="Delimiter">.</span>name &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L62" class="LineNr"> 62 </span>  <a href='003trace.cc.html#L167'>trace</a><span class="Delimiter">(</span><span class="Constant">9991</span><span class="Delimiter">,</span> <span class="Constant">&quot;transform&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;--- convert some ingredients to text in <a href='010vm.cc.html#L19'>recipe</a> &quot;</span> &lt;&lt; caller<span class="Delimiter">.</span>name &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L63" class="LineNr"> 63 </span>  <span class="Comment">// in recipes without named locations, 'stash' is still not extensible</span>
 <span id="L64" class="LineNr"> 64 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span><a href='060rewrite_literal_string.cc.html#L64'>contains_numeric_locations</a><span class="Delimiter">(</span>caller<span class="Delimiter">))</span> <span class="Identifier">return</span><span class="Delimiter">;</span>
 <span id="L65" class="LineNr"> 65 </span>  convert_ingredients_to_text<span class="Delimiter">(</span>caller<span class="Delimiter">);</span>
@@ -163,7 +163,7 @@ if ('onhashchange' in window) {
 <span id="L100" class="LineNr">100 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Delimiter">}</span>
 <span id="L101" class="LineNr">101 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Delimiter">}</span>
 <span id="L102" class="LineNr">102 </span>  <span class="Conceal">¦</span> <span class="Delimiter">}</span>
-<span id="L103" class="LineNr">103 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">9993</span><span class="Delimiter">,</span> <span class="Constant">&quot;transform&quot;</span><span class="Delimiter">)</span> &lt;&lt; <a href='028call_return.cc.html#L163'>to_string</a><span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L103" class="LineNr">103 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L167'>trace</a><span class="Delimiter">(</span><span class="Constant">9993</span><span class="Delimiter">,</span> <span class="Constant">&quot;transform&quot;</span><span class="Delimiter">)</span> &lt;&lt; <a href='028call_return.cc.html#L163'>to_string</a><span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L104" class="LineNr">104 </span>  <span class="Conceal">¦</span> new_instructions<span class="Delimiter">.</span>push_back<span class="Delimiter">(</span>inst<span class="Delimiter">);</span>
 <span id="L105" class="LineNr">105 </span>  <span class="Delimiter">}</span>
 <span id="L106" class="LineNr">106 </span>  caller<span class="Delimiter">.</span>steps<span class="Delimiter">.</span>swap<span class="Delimiter">(</span>new_instructions<span class="Delimiter">);</span>
@@ -188,7 +188,7 @@ if ('onhashchange' in window) {
 <span id="L125" class="LineNr">125 </span>  <span class="Conceal">¦</span> def<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>push_back<span class="Delimiter">(</span>r<span class="Delimiter">);</span>
 <span id="L126" class="LineNr">126 </span>  <span class="Delimiter">}</span>
 <span id="L127" class="LineNr">127 </span>  def<span class="Delimiter">.</span>products<span class="Delimiter">.</span>push_back<span class="Delimiter">(</span>reagent<span class="Delimiter">(</span>tmp_var<span class="Delimiter">));</span>
-<span id="L128" class="LineNr">128 </span>  <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">9993</span><span class="Delimiter">,</span> <span class="Constant">&quot;transform&quot;</span><span class="Delimiter">)</span> &lt;&lt; <a href='028call_return.cc.html#L163'>to_string</a><span class="Delimiter">(</span>def<span class="Delimiter">)</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L128" class="LineNr">128 </span>  <a href='003trace.cc.html#L167'>trace</a><span class="Delimiter">(</span><span class="Constant">9993</span><span class="Delimiter">,</span> <span class="Constant">&quot;transform&quot;</span><span class="Delimiter">)</span> &lt;&lt; <a href='028call_return.cc.html#L163'>to_string</a><span class="Delimiter">(</span>def<span class="Delimiter">)</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L129" class="LineNr">129 </span>  out<span class="Delimiter">.</span>push_back<span class="Delimiter">(</span>def<span class="Delimiter">);</span>
 <span id="L130" class="LineNr">130 </span>  r<span class="Delimiter">.</span><a href='050scenario.cc.html#L60'>clear</a><span class="Delimiter">();</span>  <span class="Comment">// reclaim old memory</span>
 <span id="L131" class="LineNr">131 </span>  r = reagent<span class="Delimiter">(</span>tmp_var<span class="Delimiter">);</span>
diff --git a/html/069hash.cc.html b/html/069hash.cc.html
index defa9784..6af75ee9 100644
--- a/html/069hash.cc.html
+++ b/html/069hash.cc.html
@@ -80,14 +80,14 @@ if ('onhashchange' in window) {
 <span id="L15" class="LineNr"> 15 </span><span class="Delimiter">:(before &quot;End Primitive Recipe Checks&quot;)</span>
 <span id="L16" class="LineNr"> 16 </span><span class="Normal">case</span> HASH: <span class="Delimiter">{</span>
 <span id="L17" class="LineNr"> 17 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">)</span> != <span class="Constant">1</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L18" class="LineNr"> 18 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'hash' takes exactly one ingredient rather than '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L18" class="LineNr"> 18 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'hash' takes exactly one ingredient rather than '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L19" class="LineNr"> 19 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L20" class="LineNr"> 20 </span>  <span class="Delimiter">}</span>
 <span id="L21" class="LineNr"> 21 </span>  <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L22" class="LineNr"> 22 </span><span class="Delimiter">}</span>
 <span id="L23" class="LineNr"> 23 </span><span class="Delimiter">:(before &quot;End Primitive Recipe Implementations&quot;)</span>
 <span id="L24" class="LineNr"> 24 </span><span class="Normal">case</span> HASH: <span class="Delimiter">{</span>
-<span id="L25" class="LineNr"> 25 </span>  <span class="Normal">const</span> reagent&amp; input = <a href='026call.cc.html#L87'>current_instruction</a><span class="Delimiter">().</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">);</span>
+<span id="L25" class="LineNr"> 25 </span>  <span class="Normal">const</span> reagent&amp; input = <a href='026call.cc.html#L89'>current_instruction</a><span class="Delimiter">().</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">);</span>
 <span id="L26" class="LineNr"> 26 </span>  products<span class="Delimiter">.</span>resize<span class="Delimiter">(</span><span class="Constant">1</span><span class="Delimiter">);</span>
 <span id="L27" class="LineNr"> 27 </span>  products<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>push_back<span class="Delimiter">(</span><a href='069hash.cc.html#L34'>hash</a><span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">,</span> input<span class="Delimiter">));</span>
 <span id="L28" class="LineNr"> 28 </span>  <span class="Identifier">break</span><span class="Delimiter">;</span>
@@ -120,10 +120,10 @@ if ('onhashchange' in window) {
 <span id="L55" class="LineNr"> 55 </span>
 <span id="L56" class="LineNr"> 56 </span><span class="Normal">size_t</span> <a href='069hash.cc.html#L56'>hash_mu_address</a><span class="Delimiter">(</span><span class="Normal">size_t</span> h<span class="Delimiter">,</span> reagent&amp; r<span class="Delimiter">)</span> <span class="Delimiter">{</span>
 <span id="L57" class="LineNr"> 57 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>r<span class="Delimiter">.</span>value == <span class="Constant">0</span><span class="Delimiter">)</span> <span class="Identifier">return</span> <span class="Constant">0</span><span class="Delimiter">;</span>
-<span id="L58" class="LineNr"> 58 </span>  <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">&quot;mem&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;location &quot;</span> &lt;&lt; r<span class="Delimiter">.</span>value &lt;&lt; <span class="Constant">&quot; is &quot;</span> &lt;&lt; no_scientific<span class="Delimiter">(</span><a href='001help.cc.html#L229'>get_or_insert</a><span class="Delimiter">(</span>Memory<span class="Delimiter">,</span> r<span class="Delimiter">.</span>value<span class="Delimiter">))</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L58" class="LineNr"> 58 </span>  <a href='003trace.cc.html#L167'>trace</a><span class="Delimiter">(</span><span class="Constant">&quot;mem&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;location &quot;</span> &lt;&lt; r<span class="Delimiter">.</span>value &lt;&lt; <span class="Constant">&quot; is &quot;</span> &lt;&lt; no_scientific<span class="Delimiter">(</span><a href='001help.cc.html#L229'>get_or_insert</a><span class="Delimiter">(</span>Memory<span class="Delimiter">,</span> r<span class="Delimiter">.</span>value<span class="Delimiter">))</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L59" class="LineNr"> 59 </span>  r<span class="Delimiter">.</span><a href='010vm.cc.html#L65'>set_value</a><span class="Delimiter">(</span><a href='001help.cc.html#L229'>get_or_insert</a><span class="Delimiter">(</span>Memory<span class="Delimiter">,</span> r<span class="Delimiter">.</span>value<span class="Delimiter">));</span>
 <span id="L60" class="LineNr"> 60 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>r<span class="Delimiter">.</span>value != <span class="Constant">0</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L61" class="LineNr"> 61 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">&quot;mem&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;skipping refcount at &quot;</span> &lt;&lt; r<span class="Delimiter">.</span>value &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L61" class="LineNr"> 61 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L167'>trace</a><span class="Delimiter">(</span><span class="Constant">&quot;mem&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;skipping refcount at &quot;</span> &lt;&lt; r<span class="Delimiter">.</span>value &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L62" class="LineNr"> 62 </span>  <span class="Conceal">¦</span> r<span class="Delimiter">.</span><a href='010vm.cc.html#L65'>set_value</a><span class="Delimiter">(</span>r<span class="Delimiter">.</span>value+<span class="Constant">1</span><span class="Delimiter">);</span>  <span class="Comment">// skip refcount</span>
 <span id="L63" class="LineNr"> 63 </span>  <span class="Delimiter">}</span>
 <span id="L64" class="LineNr"> 64 </span>  drop_from_type<span class="Delimiter">(</span>r<span class="Delimiter">,</span> <span class="Constant">&quot;address&quot;</span><span class="Delimiter">);</span>
@@ -175,7 +175,7 @@ if ('onhashchange' in window) {
 <span id="L110" class="LineNr">110 </span>  reagent<span class="Comment">/*</span><span class="Comment">copy</span><span class="Comment">*/</span> variant = variant_type<span class="Delimiter">(</span>r<span class="Delimiter">,</span> tag<span class="Delimiter">);</span>
 <span id="L111" class="LineNr">111 </span>  <span class="Comment">// todo: move this error to container definition time</span>
 <span id="L112" class="LineNr">112 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>has_property<span class="Delimiter">(</span>variant<span class="Delimiter">,</span> <span class="Constant">&quot;ignore-for-hash&quot;</span><span class="Delimiter">))</span>
-<span id="L113" class="LineNr">113 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; get<span class="Delimiter">(</span>Type<span class="Delimiter">,</span> type<span class="Delimiter">-&gt;</span>value<span class="Delimiter">).</span>name &lt;&lt; <span class="Constant">&quot;: /ignore-for-hash won't work in exclusive containers</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; end<span class="Delimiter">();</span>
+<span id="L113" class="LineNr">113 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; get<span class="Delimiter">(</span>Type<span class="Delimiter">,</span> type<span class="Delimiter">-&gt;</span>value<span class="Delimiter">).</span>name &lt;&lt; <span class="Constant">&quot;: /ignore-for-hash won't work in exclusive containers</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; end<span class="Delimiter">();</span>
 <span id="L114" class="LineNr">114 </span>  variant<span class="Delimiter">.</span><a href='010vm.cc.html#L65'>set_value</a><span class="Delimiter">(</span>r<span class="Delimiter">.</span>value + <span class="Comment">/*</span><span class="Comment">skip tag</span><span class="Comment">*/</span><span class="Constant">1</span><span class="Delimiter">);</span>
 <span id="L115" class="LineNr">115 </span>  h = <a href='069hash.cc.html#L34'>hash</a><span class="Delimiter">(</span>h<span class="Delimiter">,</span> variant<span class="Delimiter">);</span>
 <span id="L116" class="LineNr">116 </span>  <span class="Identifier">return</span> h<span class="Delimiter">;</span>
@@ -416,11 +416,11 @@ if ('onhashchange' in window) {
 <span id="L351" class="LineNr">351 </span><span class="Delimiter">:(before &quot;End Primitive Recipe Checks&quot;)</span>
 <span id="L352" class="LineNr">352 </span><span class="Normal">case</span> HASH_OLD: <span class="Delimiter">{</span>
 <span id="L353" class="LineNr">353 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">)</span> != <span class="Constant">1</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L354" class="LineNr">354 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'hash_old' takes exactly one ingredient rather than '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L354" class="LineNr">354 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'hash_old' takes exactly one ingredient rather than '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L355" class="LineNr">355 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L356" class="LineNr">356 </span>  <span class="Delimiter">}</span>
 <span id="L357" class="LineNr">357 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!is_mu_text<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">)))</span> <span class="Delimiter">{</span>
-<span id="L358" class="LineNr">358 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'hash_old' currently only supports texts (address array character), but got '&quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>original_string &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L358" class="LineNr">358 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'hash_old' currently only supports texts (address array character), but got '&quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>original_string &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L359" class="LineNr">359 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L360" class="LineNr">360 </span>  <span class="Delimiter">}</span>
 <span id="L361" class="LineNr">361 </span>  <span class="Identifier">break</span><span class="Delimiter">;</span>
diff --git a/html/071deep_copy.cc.html b/html/071deep_copy.cc.html
index 6a4b577e..0a7f6295 100644
--- a/html/071deep_copy.cc.html
+++ b/html/071deep_copy.cc.html
@@ -269,36 +269,36 @@ if ('onhashchange' in window) {
 <span id="L205" class="LineNr">205 </span><span class="Delimiter">:(before &quot;End Primitive Recipe Checks&quot;)</span>
 <span id="L206" class="LineNr">206 </span><span class="Normal">case</span> DEEP_COPY: <span class="Delimiter">{</span>
 <span id="L207" class="LineNr">207 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">)</span> != <span class="Constant">1</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L208" class="LineNr">208 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'deep-copy' takes exactly one ingredient rather than '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L208" class="LineNr">208 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'deep-copy' takes exactly one ingredient rather than '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L209" class="LineNr">209 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L210" class="LineNr">210 </span>  <span class="Delimiter">}</span>
 <span id="L211" class="LineNr">211 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>products<span class="Delimiter">)</span> != <span class="Constant">1</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L212" class="LineNr">212 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'deep-copy' takes exactly one ingredient rather than '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L212" class="LineNr">212 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'deep-copy' takes exactly one ingredient rather than '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L213" class="LineNr">213 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L214" class="LineNr">214 </span>  <span class="Delimiter">}</span>
 <span id="L215" class="LineNr">215 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!types_strictly_match<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">),</span> inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">)))</span> <span class="Delimiter">{</span>
-<span id="L216" class="LineNr">216 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'deep-copy' requires its ingredient and product to be the same type, but got '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L216" class="LineNr">216 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'deep-copy' requires its ingredient and product to be the same type, but got '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L217" class="LineNr">217 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L218" class="LineNr">218 </span>  <span class="Delimiter">}</span>
 <span id="L219" class="LineNr">219 </span>  <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L220" class="LineNr">220 </span><span class="Delimiter">}</span>
 <span id="L221" class="LineNr">221 </span><span class="Delimiter">:(before &quot;End Primitive Recipe Implementations&quot;)</span>
 <span id="L222" class="LineNr">222 </span><span class="Normal">case</span> DEEP_COPY: <span class="Delimiter">{</span>
-<span id="L223" class="LineNr">223 </span>  products<span class="Delimiter">.</span>push_back<span class="Delimiter">(</span>deep_copy<span class="Delimiter">(</span><a href='026call.cc.html#L87'>current_instruction</a><span class="Delimiter">().</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">)));</span>
+<span id="L223" class="LineNr">223 </span>  products<span class="Delimiter">.</span>push_back<span class="Delimiter">(</span>deep_copy<span class="Delimiter">(</span><a href='026call.cc.html#L89'>current_instruction</a><span class="Delimiter">().</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">)));</span>
 <span id="L224" class="LineNr">224 </span>  <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L225" class="LineNr">225 </span><span class="Delimiter">}</span>
 <span id="L226" class="LineNr">226 </span>
 <span id="L227" class="LineNr">227 </span><span class="Delimiter">:(code)</span>
 <span id="L228" class="LineNr">228 </span>vector&lt;<span class="Normal">double</span>&gt; deep_copy<span class="Delimiter">(</span><span class="Normal">const</span> reagent&amp; in<span class="Delimiter">)</span> <span class="Delimiter">{</span>
 <span id="L229" class="LineNr">229 </span>  <span class="Comment">// allocate a tiny bit of temporary space for deep_copy()</span>
-<span id="L230" class="LineNr">230 </span>  <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">9991</span><span class="Delimiter">,</span> <span class="Constant">&quot;run&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;deep-copy: allocating space for temporary&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L230" class="LineNr">230 </span>  <a href='003trace.cc.html#L167'>trace</a><span class="Delimiter">(</span><span class="Constant">9991</span><span class="Delimiter">,</span> <span class="Constant">&quot;run&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;deep-copy: allocating space for temporary&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L231" class="LineNr">231 </span>  reagent tmp<span class="Delimiter">(</span><span class="Constant">&quot;tmp:<a href='043space.cc.html#L82'>address</a>:number&quot;</span><span class="Delimiter">);</span>
 <span id="L232" class="LineNr">232 </span>  tmp<span class="Delimiter">.</span><a href='010vm.cc.html#L65'>set_value</a><span class="Delimiter">(</span>allocate<span class="Delimiter">(</span><span class="Constant">1</span><span class="Delimiter">));</span>
 <span id="L233" class="LineNr">233 </span>  map&lt;<span class="Normal">int</span><span class="Delimiter">,</span> <span class="Normal">int</span>&gt; addresses_copied<span class="Delimiter">;</span>
 <span id="L234" class="LineNr">234 </span>  vector&lt;<span class="Normal">double</span>&gt; result = deep_copy<span class="Delimiter">(</span>in<span class="Delimiter">,</span> addresses_copied<span class="Delimiter">,</span> tmp<span class="Delimiter">);</span>
 <span id="L235" class="LineNr">235 </span>  <span class="Comment">// reclaim Mu memory allocated for tmp</span>
-<span id="L236" class="LineNr">236 </span>  <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">9991</span><span class="Delimiter">,</span> <span class="Constant">&quot;run&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;deep-copy: reclaiming temporary&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
-<span id="L237" class="LineNr">237 </span>  <a href='037abandon.cc.html#L28'>abandon</a><span class="Delimiter">(</span>tmp<span class="Delimiter">.</span>value<span class="Delimiter">,</span> <a href='030container.cc.html#L238'>payload_type</a><span class="Delimiter">(</span>tmp<span class="Delimiter">.</span>type<span class="Delimiter">),</span> <a href='036refcount.cc.html#L89'>payload_size</a><span class="Delimiter">(</span>tmp<span class="Delimiter">));</span>
+<span id="L236" class="LineNr">236 </span>  <a href='003trace.cc.html#L167'>trace</a><span class="Delimiter">(</span><span class="Constant">9991</span><span class="Delimiter">,</span> <span class="Constant">&quot;run&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;deep-copy: reclaiming temporary&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
+<span id="L237" class="LineNr">237 </span>  <a href='037abandon.cc.html#L28'>abandon</a><span class="Delimiter">(</span>tmp<span class="Delimiter">.</span>value<span class="Delimiter">,</span> <a href='030container.cc.html#L238'>payload_type</a><span class="Delimiter">(</span>tmp<span class="Delimiter">.</span>type<span class="Delimiter">),</span> <a href='036refcount.cc.html#L84'>payload_size</a><span class="Delimiter">(</span>tmp<span class="Delimiter">));</span>
 <span id="L238" class="LineNr">238 </span>  <span class="Comment">// reclaim host memory allocated for tmp.type when tmp goes out of scope</span>
 <span id="L239" class="LineNr">239 </span>  <span class="Identifier">return</span> result<span class="Delimiter">;</span>
 <span id="L240" class="LineNr">240 </span><span class="Delimiter">}</span>
@@ -323,31 +323,31 @@ if ('onhashchange' in window) {
 <span id="L259" class="LineNr">259 </span><span class="Normal">int</span> <a href='071deep_copy.cc.html#L259'>deep_copy_address</a><span class="Delimiter">(</span><span class="Normal">const</span> reagent&amp; canonized_in<span class="Delimiter">,</span> map&lt;<span class="Normal">int</span><span class="Delimiter">,</span> <span class="Normal">int</span>&gt;&amp; addresses_copied<span class="Delimiter">,</span> <span class="Normal">const</span> reagent&amp; tmp<span class="Delimiter">)</span> <span class="Delimiter">{</span>
 <span id="L260" class="LineNr">260 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span><a href='071deep_copy.cc.html#L327'>address_value</a><span class="Delimiter">(</span>canonized_in<span class="Delimiter">)</span> == <span class="Constant">0</span><span class="Delimiter">)</span> <span class="Identifier">return</span> <span class="Constant">0</span><span class="Delimiter">;</span>
 <span id="L261" class="LineNr">261 </span>  <span class="Normal">int</span> in_address = <a href='071deep_copy.cc.html#L321'>payload_address</a><span class="Delimiter">(</span>canonized_in<span class="Delimiter">);</span>
-<span id="L262" class="LineNr">262 </span>  <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">9991</span><span class="Delimiter">,</span> <span class="Constant">&quot;run&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;deep-copy: copying <a href='043space.cc.html#L82'>address</a> &quot;</span> &lt;&lt; in_address &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L262" class="LineNr">262 </span>  <a href='003trace.cc.html#L167'>trace</a><span class="Delimiter">(</span><span class="Constant">9991</span><span class="Delimiter">,</span> <span class="Constant">&quot;run&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;deep-copy: copying <a href='043space.cc.html#L82'>address</a> &quot;</span> &lt;&lt; in_address &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L263" class="LineNr">263 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>contains_key<span class="Delimiter">(</span>addresses_copied<span class="Delimiter">,</span> in_address<span class="Delimiter">))</span> <span class="Delimiter">{</span>
 <span id="L264" class="LineNr">264 </span>  <span class="Conceal">¦</span> <span class="Normal">int</span> out = get<span class="Delimiter">(</span>addresses_copied<span class="Delimiter">,</span> in_address<span class="Delimiter">);</span>
-<span id="L265" class="LineNr">265 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">9991</span><span class="Delimiter">,</span> <span class="Constant">&quot;run&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;deep-copy: copy already exists: &quot;</span> &lt;&lt; out &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L265" class="LineNr">265 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L167'>trace</a><span class="Delimiter">(</span><span class="Constant">9991</span><span class="Delimiter">,</span> <span class="Constant">&quot;run&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;deep-copy: copy already exists: &quot;</span> &lt;&lt; out &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L266" class="LineNr">266 </span>  <span class="Conceal">¦</span> assert<span class="Delimiter">(</span>contains_key<span class="Delimiter">(</span>Memory<span class="Delimiter">,</span> out<span class="Delimiter">));</span>  <span class="Comment">// refcount must already be incremented</span>
 <span id="L267" class="LineNr">267 </span>  <span class="Conceal">¦</span> ++get<span class="Delimiter">(</span>Memory<span class="Delimiter">,</span> out<span class="Delimiter">);</span>
 <span id="L268" class="LineNr">268 </span>  <span class="Conceal">¦</span> <span class="Identifier">return</span> out<span class="Delimiter">;</span>
 <span id="L269" class="LineNr">269 </span>  <span class="Delimiter">}</span>
-<span id="L270" class="LineNr">270 </span>  <span class="Normal">int</span> out = allocate<span class="Delimiter">(</span><a href='036refcount.cc.html#L89'>payload_size</a><span class="Delimiter">(</span>canonized_in<span class="Delimiter">));</span>
-<span id="L271" class="LineNr">271 </span>  <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">9991</span><span class="Delimiter">,</span> <span class="Constant">&quot;run&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;deep-copy: new <a href='043space.cc.html#L82'>address</a> is &quot;</span> &lt;&lt; out &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L270" class="LineNr">270 </span>  <span class="Normal">int</span> out = allocate<span class="Delimiter">(</span><a href='036refcount.cc.html#L84'>payload_size</a><span class="Delimiter">(</span>canonized_in<span class="Delimiter">));</span>
+<span id="L271" class="LineNr">271 </span>  <a href='003trace.cc.html#L167'>trace</a><span class="Delimiter">(</span><span class="Constant">9991</span><span class="Delimiter">,</span> <span class="Constant">&quot;run&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;deep-copy: new <a href='043space.cc.html#L82'>address</a> is &quot;</span> &lt;&lt; out &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L272" class="LineNr">272 </span>  <a href='001help.cc.html#L221'>put</a><span class="Delimiter">(</span>addresses_copied<span class="Delimiter">,</span> in_address<span class="Delimiter">,</span> out<span class="Delimiter">);</span>
 <span id="L273" class="LineNr">273 </span>  reagent<span class="Comment">/*</span><span class="Comment">copy</span><span class="Comment">*/</span> payload = canonized_in<span class="Delimiter">;</span>
 <span id="L274" class="LineNr">274 </span>  payload<span class="Delimiter">.</span>properties<span class="Delimiter">.</span>push_back<span class="Delimiter">(</span>pair&lt;string<span class="Delimiter">,</span> string_tree*&gt;<span class="Delimiter">(</span><span class="Constant">&quot;lookup&quot;</span><span class="Delimiter">,</span> <span class="Constant">NULL</span><span class="Delimiter">));</span>
-<span id="L275" class="LineNr">275 </span>  <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">9991</span><span class="Delimiter">,</span> <span class="Constant">&quot;run&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;recursing on payload &quot;</span> &lt;&lt; payload<span class="Delimiter">.</span>value &lt;&lt; <span class="Constant">' '</span> &lt;&lt; <a href='028call_return.cc.html#L163'>to_string</a><span class="Delimiter">(</span>payload<span class="Delimiter">)</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L275" class="LineNr">275 </span>  <a href='003trace.cc.html#L167'>trace</a><span class="Delimiter">(</span><span class="Constant">9991</span><span class="Delimiter">,</span> <span class="Constant">&quot;run&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;recursing on payload &quot;</span> &lt;&lt; payload<span class="Delimiter">.</span>value &lt;&lt; <span class="Constant">' '</span> &lt;&lt; <a href='028call_return.cc.html#L163'>to_string</a><span class="Delimiter">(</span>payload<span class="Delimiter">)</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L276" class="LineNr">276 </span>  vector&lt;<span class="Normal">double</span>&gt; data = deep_copy<span class="Delimiter">(</span>payload<span class="Delimiter">,</span> addresses_copied<span class="Delimiter">,</span> tmp<span class="Delimiter">);</span>
-<span id="L277" class="LineNr">277 </span>  <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">9991</span><span class="Delimiter">,</span> <span class="Constant">&quot;run&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;deep-copy: writing result &quot;</span> &lt;&lt; out &lt;&lt; <span class="Constant">&quot;: &quot;</span> &lt;&lt; <a href='028call_return.cc.html#L163'>to_string</a><span class="Delimiter">(</span>data<span class="Delimiter">)</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L277" class="LineNr">277 </span>  <a href='003trace.cc.html#L167'>trace</a><span class="Delimiter">(</span><span class="Constant">9991</span><span class="Delimiter">,</span> <span class="Constant">&quot;run&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;deep-copy: writing result &quot;</span> &lt;&lt; out &lt;&lt; <span class="Constant">&quot;: &quot;</span> &lt;&lt; <a href='028call_return.cc.html#L163'>to_string</a><span class="Delimiter">(</span>data<span class="Delimiter">)</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L278" class="LineNr">278 </span>  <span class="Comment">// HACK: write_memory interface isn't ideal for this situation; we need</span>
 <span id="L279" class="LineNr">279 </span>  <span class="Comment">// a temporary location to help copy the payload.</span>
-<span id="L280" class="LineNr">280 </span>  <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">9991</span><span class="Delimiter">,</span> <span class="Constant">&quot;run&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;deep-copy: writing temporary &quot;</span> &lt;&lt; tmp<span class="Delimiter">.</span>value &lt;&lt; <span class="Constant">&quot;: &quot;</span> &lt;&lt; out &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L280" class="LineNr">280 </span>  <a href='003trace.cc.html#L167'>trace</a><span class="Delimiter">(</span><span class="Constant">9991</span><span class="Delimiter">,</span> <span class="Constant">&quot;run&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;deep-copy: writing temporary &quot;</span> &lt;&lt; tmp<span class="Delimiter">.</span>value &lt;&lt; <span class="Constant">&quot;: &quot;</span> &lt;&lt; out &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L281" class="LineNr">281 </span>  <a href='001help.cc.html#L221'>put</a><span class="Delimiter">(</span>Memory<span class="Delimiter">,</span> tmp<span class="Delimiter">.</span>value<span class="Delimiter">,</span> out<span class="Delimiter">);</span>
 <span id="L282" class="LineNr">282 </span>  payload<span class="Delimiter">.</span><a href='010vm.cc.html#L65'>set_value</a><span class="Delimiter">(</span>tmp<span class="Delimiter">.</span>value<span class="Delimiter">);</span>  <span class="Comment">// now modified for output</span>
 <span id="L283" class="LineNr">283 </span>  vector&lt;<span class="Normal">double</span>&gt; old_data = read_memory<span class="Delimiter">(</span>payload<span class="Delimiter">);</span>
-<span id="L284" class="LineNr">284 </span>  <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">9991</span><span class="Delimiter">,</span> <span class="Constant">&quot;run&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;deep-copy: really writing to &quot;</span> &lt;&lt; payload<span class="Delimiter">.</span>value &lt;&lt; <span class="Constant">' '</span> &lt;&lt; <a href='028call_return.cc.html#L163'>to_string</a><span class="Delimiter">(</span>payload<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot; (old value &quot;</span> &lt;&lt; <a href='028call_return.cc.html#L163'>to_string</a><span class="Delimiter">(</span>old_data<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot; new value &quot;</span> &lt;&lt; <a href='028call_return.cc.html#L163'>to_string</a><span class="Delimiter">(</span>data<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;)&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L284" class="LineNr">284 </span>  <a href='003trace.cc.html#L167'>trace</a><span class="Delimiter">(</span><span class="Constant">9991</span><span class="Delimiter">,</span> <span class="Constant">&quot;run&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;deep-copy: really writing to &quot;</span> &lt;&lt; payload<span class="Delimiter">.</span>value &lt;&lt; <span class="Constant">' '</span> &lt;&lt; <a href='028call_return.cc.html#L163'>to_string</a><span class="Delimiter">(</span>payload<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot; (old value &quot;</span> &lt;&lt; <a href='028call_return.cc.html#L163'>to_string</a><span class="Delimiter">(</span>old_data<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot; new value &quot;</span> &lt;&lt; <a href='028call_return.cc.html#L163'>to_string</a><span class="Delimiter">(</span>data<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;)&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L285" class="LineNr">285 </span>  write_memory<span class="Delimiter">(</span>payload<span class="Delimiter">,</span> data<span class="Delimiter">);</span>
-<span id="L286" class="LineNr">286 </span>  <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">9991</span><span class="Delimiter">,</span> <span class="Constant">&quot;run&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;deep-copy: output is &quot;</span> &lt;&lt; <a href='028call_return.cc.html#L163'>to_string</a><span class="Delimiter">(</span>data<span class="Delimiter">)</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L286" class="LineNr">286 </span>  <a href='003trace.cc.html#L167'>trace</a><span class="Delimiter">(</span><span class="Constant">9991</span><span class="Delimiter">,</span> <span class="Constant">&quot;run&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;deep-copy: output is &quot;</span> &lt;&lt; <a href='028call_return.cc.html#L163'>to_string</a><span class="Delimiter">(</span>data<span class="Delimiter">)</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L287" class="LineNr">287 </span>  <span class="Identifier">return</span> out<span class="Delimiter">;</span>
 <span id="L288" class="LineNr">288 </span><span class="Delimiter">}</span>
 <span id="L289" class="LineNr">289 </span>
@@ -355,13 +355,13 @@ if ('onhashchange' in window) {
 <span id="L291" class="LineNr">291 </span><span class="Normal">void</span> deep_copy<span class="Delimiter">(</span><span class="Normal">const</span> reagent&amp; canonized_in<span class="Delimiter">,</span> map&lt;<span class="Normal">int</span><span class="Delimiter">,</span> <span class="Normal">int</span>&gt;&amp; addresses_copied<span class="Delimiter">,</span> <span class="Normal">const</span> reagent&amp; tmp<span class="Delimiter">,</span> vector&lt;<span class="Normal">double</span>&gt;&amp; out<span class="Delimiter">)</span> <span class="Delimiter">{</span>
 <span id="L292" class="LineNr">292 </span>  assert<span class="Delimiter">(</span>!is_mu_address<span class="Delimiter">(</span>canonized_in<span class="Delimiter">));</span>
 <span id="L293" class="LineNr">293 </span>  vector&lt;<span class="Normal">double</span>&gt; data = read_memory<span class="Delimiter">(</span>canonized_in<span class="Delimiter">);</span>
-<span id="L294" class="LineNr">294 </span>  out<span class="Delimiter">.</span>insert<span class="Delimiter">(</span>out<span class="Delimiter">.</span><a href='003trace.cc.html#L197'>end</a><span class="Delimiter">(),</span> data<span class="Delimiter">.</span>begin<span class="Delimiter">(),</span> data<span class="Delimiter">.</span><a href='003trace.cc.html#L197'>end</a><span class="Delimiter">());</span>
+<span id="L294" class="LineNr">294 </span>  out<span class="Delimiter">.</span>insert<span class="Delimiter">(</span>out<span class="Delimiter">.</span><a href='003trace.cc.html#L203'>end</a><span class="Delimiter">(),</span> data<span class="Delimiter">.</span>begin<span class="Delimiter">(),</span> data<span class="Delimiter">.</span><a href='003trace.cc.html#L203'>end</a><span class="Delimiter">());</span>
 <span id="L295" class="LineNr">295 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!contains_key<span class="Delimiter">(</span>Container_metadata<span class="Delimiter">,</span> canonized_in<span class="Delimiter">.</span>type<span class="Delimiter">))</span> <span class="Identifier">return</span><span class="Delimiter">;</span>
-<span id="L296" class="LineNr">296 </span>  <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">9991</span><span class="Delimiter">,</span> <span class="Constant">&quot;run&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;deep-copy: scanning for addresses in &quot;</span> &lt;&lt; <a href='028call_return.cc.html#L163'>to_string</a><span class="Delimiter">(</span>data<span class="Delimiter">)</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L296" class="LineNr">296 </span>  <a href='003trace.cc.html#L167'>trace</a><span class="Delimiter">(</span><span class="Constant">9991</span><span class="Delimiter">,</span> <span class="Constant">&quot;run&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;deep-copy: scanning for addresses in &quot;</span> &lt;&lt; <a href='028call_return.cc.html#L163'>to_string</a><span class="Delimiter">(</span>data<span class="Delimiter">)</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L297" class="LineNr">297 </span>  <span class="Normal">const</span> container_metadata&amp; metadata = get<span class="Delimiter">(</span>Container_metadata<span class="Delimiter">,</span> canonized_in<span class="Delimiter">.</span>type<span class="Delimiter">);</span>
-<span id="L298" class="LineNr">298 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span>map&lt;set&lt;tag_condition_info&gt;<span class="Delimiter">,</span> set&lt;address_element_info&gt; &gt;::const_iterator p = metadata<span class="Delimiter">.</span><a href='043space.cc.html#L82'>address</a><span class="Delimiter">.</span>begin<span class="Delimiter">();</span>  p != metadata<span class="Delimiter">.</span><a href='043space.cc.html#L82'>address</a><span class="Delimiter">.</span><a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>  ++p<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L298" class="LineNr">298 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span>map&lt;set&lt;tag_condition_info&gt;<span class="Delimiter">,</span> set&lt;address_element_info&gt; &gt;::const_iterator p = metadata<span class="Delimiter">.</span><a href='043space.cc.html#L82'>address</a><span class="Delimiter">.</span>begin<span class="Delimiter">();</span>  p != metadata<span class="Delimiter">.</span><a href='043space.cc.html#L82'>address</a><span class="Delimiter">.</span><a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>  ++p<span class="Delimiter">)</span> <span class="Delimiter">{</span>
 <span id="L299" class="LineNr">299 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>!all_match<span class="Delimiter">(</span>data<span class="Delimiter">,</span> p<span class="Delimiter">-&gt;</span>first<span class="Delimiter">))</span> <span class="Identifier">continue</span><span class="Delimiter">;</span>
-<span id="L300" class="LineNr">300 </span>  <span class="Conceal">¦</span> <span class="Normal">for</span> <span class="Delimiter">(</span>set&lt;address_element_info&gt;::const_iterator info = p<span class="Delimiter">-&gt;</span>second<span class="Delimiter">.</span>begin<span class="Delimiter">();</span>  info != p<span class="Delimiter">-&gt;</span>second<span class="Delimiter">.</span><a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>  ++info<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L300" class="LineNr">300 </span>  <span class="Conceal">¦</span> <span class="Normal">for</span> <span class="Delimiter">(</span>set&lt;address_element_info&gt;::const_iterator info = p<span class="Delimiter">-&gt;</span>second<span class="Delimiter">.</span>begin<span class="Delimiter">();</span>  info != p<span class="Delimiter">-&gt;</span>second<span class="Delimiter">.</span><a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>  ++info<span class="Delimiter">)</span> <span class="Delimiter">{</span>
 <span id="L301" class="LineNr">301 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Comment">// hack: skip primitive containers that do their own locking; they're designed to be shared between routines</span>
 <span id="L302" class="LineNr">302 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>!info<span class="Delimiter">-&gt;</span><a href='030container.cc.html#L238'>payload_type</a><span class="Delimiter">-&gt;</span>atom &amp;&amp; info<span class="Delimiter">-&gt;</span><a href='030container.cc.html#L238'>payload_type</a><span class="Delimiter">-&gt;</span>left<span class="Delimiter">-&gt;</span>name == <span class="Constant">&quot;channel&quot;</span><span class="Delimiter">)</span>
 <span id="L303" class="LineNr">303 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Identifier">continue</span><span class="Delimiter">;</span>
@@ -376,7 +376,7 @@ if ('onhashchange' in window) {
 <span id="L312" class="LineNr">312 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> curr<span class="Delimiter">.</span>type = <span class="Normal">new</span> type_tree<span class="Delimiter">(</span><span class="Normal">new</span> type_tree<span class="Delimiter">(</span><span class="Constant">&quot;address&quot;</span><span class="Delimiter">),</span> <span class="Normal">new</span> type_tree<span class="Delimiter">(</span>*info<span class="Delimiter">-&gt;</span><a href='030container.cc.html#L238'>payload_type</a><span class="Delimiter">));</span>
 <span id="L313" class="LineNr">313 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> curr<span class="Delimiter">.</span><a href='010vm.cc.html#L65'>set_value</a><span class="Delimiter">(</span>canonized_in<span class="Delimiter">.</span>value + info<span class="Delimiter">-&gt;</span>offset<span class="Delimiter">);</span>
 <span id="L314" class="LineNr">314 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> curr<span class="Delimiter">.</span>properties<span class="Delimiter">.</span>push_back<span class="Delimiter">(</span>pair&lt;string<span class="Delimiter">,</span> string_tree*&gt;<span class="Delimiter">(</span><span class="Constant">&quot;raw&quot;</span><span class="Delimiter">,</span> <span class="Constant">NULL</span><span class="Delimiter">));</span>
-<span id="L315" class="LineNr">315 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">9991</span><span class="Delimiter">,</span> <span class="Constant">&quot;run&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;deep-copy: copying <a href='043space.cc.html#L82'>address</a> &quot;</span> &lt;&lt; curr<span class="Delimiter">.</span>value &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L315" class="LineNr">315 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L167'>trace</a><span class="Delimiter">(</span><span class="Constant">9991</span><span class="Delimiter">,</span> <span class="Constant">&quot;run&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;deep-copy: copying <a href='043space.cc.html#L82'>address</a> &quot;</span> &lt;&lt; curr<span class="Delimiter">.</span>value &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L316" class="LineNr">316 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> out<span class="Delimiter">.</span>at<span class="Delimiter">(</span>info<span class="Delimiter">-&gt;</span>offset<span class="Delimiter">)</span> = <a href='071deep_copy.cc.html#L259'>deep_copy_address</a><span class="Delimiter">(</span>curr<span class="Delimiter">,</span> addresses_copied<span class="Delimiter">,</span> tmp<span class="Delimiter">);</span>
 <span id="L317" class="LineNr">317 </span>  <span class="Conceal">¦</span> <span class="Delimiter">}</span>
 <span id="L318" class="LineNr">318 </span>  <span class="Delimiter">}</span>
diff --git a/html/072recipe.cc.html b/html/072recipe.cc.html
index fc52668a..3c0351d5 100644
--- a/html/072recipe.cc.html
+++ b/html/072recipe.cc.html
@@ -19,6 +19,7 @@ a:hover { text-decoration: underline; }
 .muRecipe { color: #ff8700; }
 .Special { color: #c00000; }
 .Conceal { color: #4e4e4e; }
+.cSpecial { color: #008000; }
 .SalientComment { color: #00ffff; }
 .Comment { color: #9090ff; }
 .Comment a { color:#0000ee; text-decoration:underline; }
@@ -26,7 +27,6 @@ a:hover { text-decoration: underline; }
 .LineNr { color: #444444; }
 .Identifier { color: #c0a020; }
 .Normal { color: #aaaaaa; background-color: #080808; padding-bottom: 1px; }
-.cSpecial { color: #008000; }
 .traceContains { color: #008000; }
 -->
 </style>
@@ -79,385 +79,453 @@ if ('onhashchange' in window) {
 <span id="L15" class="LineNr"> 15 </span>]
 <span id="L16" class="LineNr"> 16 </span><span class="traceContains">+mem: storing 34 in location 1</span>
 <span id="L17" class="LineNr"> 17 </span>
-<span id="L18" class="LineNr"> 18 </span><span class="Delimiter">:(scenario call_variable)</span>
-<span id="L19" class="LineNr"> 19 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
-<span id="L20" class="LineNr"> 20 </span>  <span class="Delimiter">{</span><span class="Constant">1</span>: <span class="Delimiter">(</span><a href='010vm.cc.html#L19'>recipe</a> number<span class="muRecipe"> -&gt; </span>number<span class="Delimiter">)}</span><span class="Special"> &lt;- </span>copy f
-<span id="L21" class="LineNr"> 21 </span>  <span class="Constant">2</span>:num<span class="Special"> &lt;- </span>call <span class="Delimiter">{</span><span class="Constant">1</span>: <span class="Delimiter">(</span><a href='010vm.cc.html#L19'>recipe</a> number<span class="muRecipe"> -&gt; </span>number<span class="Delimiter">)},</span> <span class="Constant">34</span>
-<span id="L22" class="LineNr"> 22 </span>]
-<span id="L23" class="LineNr"> 23 </span><span class="muRecipe">def</span> f x:num<span class="muRecipe"> -&gt; </span>y:num [
-<span id="L24" class="LineNr"> 24 </span>  local-scope
-<span id="L25" class="LineNr"> 25 </span>  load-ingredients
-<span id="L26" class="LineNr"> 26 </span>  y<span class="Special"> &lt;- </span>copy x
-<span id="L27" class="LineNr"> 27 </span>]
-<span id="L28" class="LineNr"> 28 </span><span class="traceContains">+mem: storing 34 in location 2</span>
-<span id="L29" class="LineNr"> 29 </span>
-<span id="L30" class="LineNr"> 30 </span><span class="Delimiter">:(before &quot;End Mu Types Initialization&quot;)</span>
-<span id="L31" class="LineNr"> 31 </span><a href='001help.cc.html#L221'>put</a><span class="Delimiter">(</span>Type_ordinal<span class="Delimiter">,</span> <span class="Constant">&quot;recipe-literal&quot;</span><span class="Delimiter">,</span> <span class="Constant">0</span><span class="Delimiter">);</span>
-<span id="L32" class="LineNr"> 32 </span><span class="Comment">// 'recipe' variables can store recipe-literal</span>
-<span id="L33" class="LineNr"> 33 </span><a href='010vm.cc.html#L123'>type_ordinal</a> <a href='010vm.cc.html#L19'>recipe</a> = <a href='001help.cc.html#L221'>put</a><span class="Delimiter">(</span>Type_ordinal<span class="Delimiter">,</span> <span class="Constant">&quot;recipe&quot;</span><span class="Delimiter">,</span> Next_type_ordinal++<span class="Delimiter">);</span>
-<span id="L34" class="LineNr"> 34 </span><a href='001help.cc.html#L229'>get_or_insert</a><span class="Delimiter">(</span>Type<span class="Delimiter">,</span> <a href='010vm.cc.html#L19'>recipe</a><span class="Delimiter">).</span>name = <span class="Constant">&quot;recipe&quot;</span><span class="Delimiter">;</span>
-<span id="L35" class="LineNr"> 35 </span>
-<span id="L36" class="LineNr"> 36 </span><span class="Delimiter">:(after &quot;Begin <a href='042name.cc.html#L37'>transform_names</a> Ingredient Special-cases(ingredient, inst, caller)&quot;)</span>
-<span id="L37" class="LineNr"> 37 </span><span class="Normal">if</span> <span class="Delimiter">(</span><a href='072recipe.cc.html#L47'>is_recipe_literal</a><span class="Delimiter">(</span>ingredient<span class="Delimiter">,</span> caller<span class="Delimiter">))</span> <span class="Delimiter">{</span>
-<span id="L38" class="LineNr"> 38 </span>  <a href='072recipe.cc.html#L56'>initialize_recipe_literal</a><span class="Delimiter">(</span>ingredient<span class="Delimiter">);</span>
-<span id="L39" class="LineNr"> 39 </span>  <span class="Identifier">continue</span><span class="Delimiter">;</span>
-<span id="L40" class="LineNr"> 40 </span><span class="Delimiter">}</span>
-<span id="L41" class="LineNr"> 41 </span><span class="Delimiter">:(after &quot;Begin <a href='042name.cc.html#L37'>transform_names</a> Product Special-cases(product, inst, caller)&quot;)</span>
-<span id="L42" class="LineNr"> 42 </span><span class="Normal">if</span> <span class="Delimiter">(</span><a href='072recipe.cc.html#L47'>is_recipe_literal</a><span class="Delimiter">(</span>product<span class="Delimiter">,</span> caller<span class="Delimiter">))</span> <span class="Delimiter">{</span>
-<span id="L43" class="LineNr"> 43 </span>  <a href='072recipe.cc.html#L56'>initialize_recipe_literal</a><span class="Delimiter">(</span>product<span class="Delimiter">);</span>
-<span id="L44" class="LineNr"> 44 </span>  <span class="Identifier">continue</span><span class="Delimiter">;</span>
-<span id="L45" class="LineNr"> 45 </span><span class="Delimiter">}</span>
-<span id="L46" class="LineNr"> 46 </span><span class="Delimiter">:(code)</span>
-<span id="L47" class="LineNr"> 47 </span><span class="Normal">bool</span> <a href='072recipe.cc.html#L47'>is_recipe_literal</a><span class="Delimiter">(</span><span class="Normal">const</span> reagent&amp; x<span class="Delimiter">,</span> <span class="Normal">const</span> recipe&amp; caller<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L48" class="LineNr"> 48 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>x<span class="Delimiter">.</span>type<span class="Delimiter">)</span> <span class="Identifier">return</span> <span class="Constant">false</span><span class="Delimiter">;</span>
-<span id="L49" class="LineNr"> 49 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!contains_key<span class="Delimiter">(</span>Recipe_ordinal<span class="Delimiter">,</span> x<span class="Delimiter">.</span>name<span class="Delimiter">))</span> <span class="Identifier">return</span> <span class="Constant">false</span><span class="Delimiter">;</span>
-<span id="L50" class="LineNr"> 50 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span><a href='072recipe.cc.html#L60'>contains_reagent_with_type</a><span class="Delimiter">(</span>caller<span class="Delimiter">,</span> x<span class="Delimiter">.</span>name<span class="Delimiter">))</span> <span class="Delimiter">{</span>
-<span id="L51" class="LineNr"> 51 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>caller<span class="Delimiter">.</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;you can't use '&quot;</span> &lt;&lt; x<span class="Delimiter">.</span>name &lt;&lt; <span class="Constant">&quot;' as a recipe literal when it's also a variable</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
-<span id="L52" class="LineNr"> 52 </span>  <span class="Conceal">¦</span> <span class="Identifier">return</span> <span class="Constant">false</span><span class="Delimiter">;</span>
-<span id="L53" class="LineNr"> 53 </span>  <span class="Delimiter">}</span>
-<span id="L54" class="LineNr"> 54 </span>  <span class="Identifier">return</span> <span class="Constant">true</span><span class="Delimiter">;</span>
-<span id="L55" class="LineNr"> 55 </span><span class="Delimiter">}</span>
-<span id="L56" class="LineNr"> 56 </span><span class="Normal">void</span> <a href='072recipe.cc.html#L56'>initialize_recipe_literal</a><span class="Delimiter">(</span>reagent&amp; x<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L57" class="LineNr"> 57 </span>  x<span class="Delimiter">.</span>type = <span class="Normal">new</span> type_tree<span class="Delimiter">(</span><span class="Constant">&quot;recipe-literal&quot;</span><span class="Delimiter">);</span>
-<span id="L58" class="LineNr"> 58 </span>  x<span class="Delimiter">.</span><a href='010vm.cc.html#L65'>set_value</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe_ordinal<span class="Delimiter">,</span> x<span class="Delimiter">.</span>name<span class="Delimiter">));</span>
-<span id="L59" class="LineNr"> 59 </span><span class="Delimiter">}</span>
-<span id="L60" class="LineNr"> 60 </span><span class="Normal">bool</span> <a href='072recipe.cc.html#L60'>contains_reagent_with_type</a><span class="Delimiter">(</span><span class="Normal">const</span> recipe&amp; caller<span class="Delimiter">,</span> <span class="Normal">const</span> string&amp; name<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L61" class="LineNr"> 61 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> i = <span class="Constant">0</span><span class="Delimiter">;</span>  i &lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>caller<span class="Delimiter">.</span>steps<span class="Delimiter">);</span>  ++i<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L62" class="LineNr"> 62 </span>  <span class="Conceal">¦</span> <span class="Normal">const</span> instruction&amp; inst = caller<span class="Delimiter">.</span>steps<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">);</span>
-<span id="L63" class="LineNr"> 63 </span>  <span class="Conceal">¦</span> <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> i = <span class="Constant">0</span><span class="Delimiter">;</span>  i &lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">);</span>  ++i<span class="Delimiter">)</span>
-<span id="L64" class="LineNr"> 64 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span><a href='072recipe.cc.html#L70'>is_matching_non_recipe_literal</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">),</span> name<span class="Delimiter">))</span> <span class="Identifier">return</span> <span class="Constant">true</span><span class="Delimiter">;</span>
-<span id="L65" class="LineNr"> 65 </span>  <span class="Conceal">¦</span> <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> i = <span class="Constant">0</span><span class="Delimiter">;</span>  i &lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>products<span class="Delimiter">);</span>  ++i<span class="Delimiter">)</span>
-<span id="L66" class="LineNr"> 66 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span><a href='072recipe.cc.html#L70'>is_matching_non_recipe_literal</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">),</span> name<span class="Delimiter">))</span> <span class="Identifier">return</span> <span class="Constant">true</span><span class="Delimiter">;</span>
-<span id="L67" class="LineNr"> 67 </span>  <span class="Delimiter">}</span>
-<span id="L68" class="LineNr"> 68 </span>  <span class="Identifier">return</span> <span class="Constant">false</span><span class="Delimiter">;</span>
-<span id="L69" class="LineNr"> 69 </span><span class="Delimiter">}</span>
-<span id="L70" class="LineNr"> 70 </span><span class="Normal">bool</span> <a href='072recipe.cc.html#L70'>is_matching_non_recipe_literal</a><span class="Delimiter">(</span><span class="Normal">const</span> reagent&amp; x<span class="Delimiter">,</span> <span class="Normal">const</span> string&amp; name<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L71" class="LineNr"> 71 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>x<span class="Delimiter">.</span>name != name<span class="Delimiter">)</span> <span class="Identifier">return</span> <span class="Constant">false</span><span class="Delimiter">;</span>
-<span id="L72" class="LineNr"> 72 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!x<span class="Delimiter">.</span>type<span class="Delimiter">)</span> <span class="Identifier">return</span> <span class="Constant">false</span><span class="Delimiter">;</span>
-<span id="L73" class="LineNr"> 73 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!x<span class="Delimiter">.</span>type<span class="Delimiter">-&gt;</span>atom<span class="Delimiter">)</span> <span class="Identifier">return</span> <span class="Constant">false</span><span class="Delimiter">;</span>
-<span id="L74" class="LineNr"> 74 </span>  <span class="Identifier">return</span> x<span class="Delimiter">.</span>type<span class="Delimiter">-&gt;</span>value != get<span class="Delimiter">(</span>Type_ordinal<span class="Delimiter">,</span> <span class="Constant">&quot;recipe-literal&quot;</span><span class="Delimiter">);</span>
-<span id="L75" class="LineNr"> 75 </span><span class="Delimiter">}</span>
-<span id="L76" class="LineNr"> 76 </span>
-<span id="L77" class="LineNr"> 77 </span><span class="Comment">//: It's confusing to use variable names that are also recipe names. Always</span>
-<span id="L78" class="LineNr"> 78 </span><span class="Comment">//: assume variable types override recipe literals.</span>
-<span id="L79" class="LineNr"> 79 </span><span class="Delimiter">:(scenario error_on_recipe_literal_used_as_a_variable)</span>
-<span id="L80" class="LineNr"> 80 </span><span class="Special">% Hide_errors = true;</span>
-<span id="L81" class="LineNr"> 81 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
-<span id="L82" class="LineNr"> 82 </span>  local-scope
-<span id="L83" class="LineNr"> 83 </span>  <span class="Normal">a</span>:<span class="Normal">bool</span><span class="Special"> &lt;- </span>equal <span class="Identifier">break</span> <span class="Constant">0</span>
-<span id="L84" class="LineNr"> 84 </span>  <span class="Normal">break</span>:<span class="Normal">bool</span><span class="Special"> &lt;- </span>copy <span class="Constant">0</span>
-<span id="L85" class="LineNr"> 85 </span>]
-<span id="L86" class="LineNr"> 86 </span><span class="traceContains">+error: <a href='000organization.cc.html#L113'>main</a>: you can't use 'break' as a recipe literal when it's also a variable</span>
-<span id="L87" class="LineNr"> 87 </span><span class="traceContains">+error: <a href='000organization.cc.html#L113'>main</a>: missing type for 'break' in 'a:bool &lt;- equal break, 0'</span>
-<span id="L88" class="LineNr"> 88 </span>
-<span id="L89" class="LineNr"> 89 </span><span class="Delimiter">:(before &quot;End Primitive Recipe Declarations&quot;)</span>
-<span id="L90" class="LineNr"> 90 </span>CALL<span class="Delimiter">,</span>
-<span id="L91" class="LineNr"> 91 </span><span class="Delimiter">:(before &quot;End Primitive Recipe Numbers&quot;)</span>
-<span id="L92" class="LineNr"> 92 </span><a href='001help.cc.html#L221'>put</a><span class="Delimiter">(</span>Recipe_ordinal<span class="Delimiter">,</span> <span class="Constant">&quot;call&quot;</span><span class="Delimiter">,</span> CALL<span class="Delimiter">);</span>
-<span id="L93" class="LineNr"> 93 </span><span class="Delimiter">:(before &quot;End Primitive Recipe Checks&quot;)</span>
-<span id="L94" class="LineNr"> 94 </span><span class="Normal">case</span> CALL: <span class="Delimiter">{</span>
-<span id="L95" class="LineNr"> 95 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>empty<span class="Delimiter">())</span> <span class="Delimiter">{</span>
-<span id="L96" class="LineNr"> 96 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'call' requires at least one ingredient (the <a href='010vm.cc.html#L19'>recipe</a> to call)</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
-<span id="L97" class="LineNr"> 97 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
-<span id="L98" class="LineNr"> 98 </span>  <span class="Delimiter">}</span>
-<span id="L99" class="LineNr"> 99 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!is_mu_recipe<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">)))</span> <span class="Delimiter">{</span>
-<span id="L100" class="LineNr">100 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;first ingredient of 'call' should be a <a href='010vm.cc.html#L19'>recipe</a>, but got '&quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>original_string &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
-<span id="L101" class="LineNr">101 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
-<span id="L102" class="LineNr">102 </span>  <span class="Delimiter">}</span>
-<span id="L103" class="LineNr">103 </span>  <span class="Identifier">break</span><span class="Delimiter">;</span>
-<span id="L104" class="LineNr">104 </span><span class="Delimiter">}</span>
-<span id="L105" class="LineNr">105 </span><span class="Delimiter">:(before &quot;End Primitive Recipe Implementations&quot;)</span>
-<span id="L106" class="LineNr">106 </span><span class="Normal">case</span> CALL: <span class="Delimiter">{</span>
-<span id="L107" class="LineNr">107 </span>  <span class="Comment">// Begin Call</span>
-<span id="L108" class="LineNr">108 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>Trace_stream<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L109" class="LineNr">109 </span>  <span class="Conceal">¦</span> ++Trace_stream<span class="Delimiter">-&gt;</span>callstack_depth<span class="Delimiter">;</span>
-<span id="L110" class="LineNr">110 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">&quot;trace&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;indirect 'call': incrementing callstack depth to &quot;</span> &lt;&lt; Trace_stream<span class="Delimiter">-&gt;</span>callstack_depth &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
-<span id="L111" class="LineNr">111 </span>  <span class="Conceal">¦</span> assert<span class="Delimiter">(</span>Trace_stream<span class="Delimiter">-&gt;</span>callstack_depth &lt; <span class="Constant">9000</span><span class="Delimiter">);</span>  <span class="Comment">// 9998-101 plus cushion</span>
-<span id="L112" class="LineNr">112 </span>  <span class="Delimiter">}</span>
-<span id="L113" class="LineNr">113 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">))</span> <span class="Delimiter">{</span>
-<span id="L114" class="LineNr">114 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span><a href='026call.cc.html#L85'>current_recipe_name</a><span class="Delimiter">())</span> &lt;&lt; <span class="Constant">&quot;tried to call empty <a href='010vm.cc.html#L19'>recipe</a> in '&quot;</span> &lt;&lt; to_string<span class="Delimiter">(</span>current_instruction<span class="Delimiter">())</span> &lt;&lt; <span class="Constant">&quot;'&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
-<span id="L115" class="LineNr">115 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
-<span id="L116" class="LineNr">116 </span>  <span class="Delimiter">}</span>
-<span id="L117" class="LineNr">117 </span>  <span class="Normal">const</span> call&amp; caller_frame = <a href='026call.cc.html#L81'>current_call</a><span class="Delimiter">();</span>
-<span id="L118" class="LineNr">118 </span>  <a href='010vm.cc.html#L32'>instruction</a><span class="Comment">/*</span><span class="Comment">copy</span><span class="Comment">*/</span> call_instruction = <a href='026call.cc.html#L86'>to_instruction</a><span class="Delimiter">(</span>caller_frame<span class="Delimiter">);</span>
-<span id="L119" class="LineNr">119 </span>  call_instruction<span class="Delimiter">.</span>operation = ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">);</span>
-<span id="L120" class="LineNr">120 </span>  call_instruction<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>erase<span class="Delimiter">(</span>call_instruction<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>begin<span class="Delimiter">());</span>
-<span id="L121" class="LineNr">121 </span>  Current_routine<span class="Delimiter">-&gt;</span>calls<span class="Delimiter">.</span>push_front<span class="Delimiter">(</span>call<span class="Delimiter">(</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">)));</span>
-<span id="L122" class="LineNr">122 </span>  ingredients<span class="Delimiter">.</span>erase<span class="Delimiter">(</span>ingredients<span class="Delimiter">.</span>begin<span class="Delimiter">());</span>  <span class="Comment">// drop the callee</span>
-<span id="L123" class="LineNr">123 </span>  finish_call_housekeeping<span class="Delimiter">(</span>call_instruction<span class="Delimiter">,</span> ingredients<span class="Delimiter">);</span>
-<span id="L124" class="LineNr">124 </span>  Num_refcount_updates[caller_frame<span class="Delimiter">.</span>running_recipe][caller_frame<span class="Delimiter">.</span>running_step_index]
-<span id="L125" class="LineNr">125 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> += <span class="Delimiter">(</span>Total_refcount_updates - initial_num_refcount_updates<span class="Delimiter">);</span>
-<span id="L126" class="LineNr">126 </span>  initial_num_refcount_updates = Total_refcount_updates<span class="Delimiter">;</span>
-<span id="L127" class="LineNr">127 </span>  <span class="Comment">// not done with caller</span>
-<span id="L128" class="LineNr">128 </span>  write_products = <span class="Constant">false</span><span class="Delimiter">;</span>
-<span id="L129" class="LineNr">129 </span>  fall_through_to_next_instruction = <span class="Constant">false</span><span class="Delimiter">;</span>
-<span id="L130" class="LineNr">130 </span>  <span class="Identifier">break</span><span class="Delimiter">;</span>
-<span id="L131" class="LineNr">131 </span><span class="Delimiter">}</span>
-<span id="L132" class="LineNr">132 </span>
-<span id="L133" class="LineNr">133 </span><span class="SalientComment">//:: check types for 'call' instructions</span>
-<span id="L134" class="LineNr">134 </span>
-<span id="L135" class="LineNr">135 </span><span class="Delimiter">:(scenario call_check_literal_recipe)</span>
-<span id="L136" class="LineNr">136 </span><span class="Special">% Hide_errors = true;</span>
-<span id="L137" class="LineNr">137 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
-<span id="L138" class="LineNr">138 </span>  <span class="Constant">1</span>:num<span class="Special"> &lt;- </span>call f<span class="Delimiter">,</span> <span class="Constant">34</span>
-<span id="L139" class="LineNr">139 </span>]
-<span id="L140" class="LineNr">140 </span><span class="muRecipe">def</span> f x:point<span class="muRecipe"> -&gt; </span>y:point [
-<span id="L141" class="LineNr">141 </span>  local-scope
-<span id="L142" class="LineNr">142 </span>  load-ingredients
-<span id="L143" class="LineNr">143 </span>  y<span class="Special"> &lt;- </span>copy x
-<span id="L144" class="LineNr">144 </span>]
-<span id="L145" class="LineNr">145 </span><span class="traceContains">+error: <a href='000organization.cc.html#L113'>main</a>: ingredient 0 has the wrong type at '1:num &lt;- call f, 34'</span>
-<span id="L146" class="LineNr">146 </span><span class="traceContains">+error: <a href='000organization.cc.html#L113'>main</a>: product 0 has the wrong type at '1:num &lt;- call f, 34'</span>
-<span id="L147" class="LineNr">147 </span>
-<span id="L148" class="LineNr">148 </span><span class="Delimiter">:(scenario call_check_variable_recipe)</span>
-<span id="L149" class="LineNr">149 </span><span class="Special">% Hide_errors = true;</span>
-<span id="L150" class="LineNr">150 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
-<span id="L151" class="LineNr">151 </span>  <span class="Delimiter">{</span><span class="Constant">1</span>: <span class="Delimiter">(</span><a href='010vm.cc.html#L19'>recipe</a> point<span class="muRecipe"> -&gt; </span>point<span class="Delimiter">)}</span><span class="Special"> &lt;- </span>copy f
-<span id="L152" class="LineNr">152 </span>  <span class="Constant">2</span>:num<span class="Special"> &lt;- </span>call <span class="Delimiter">{</span><span class="Constant">1</span>: <span class="Delimiter">(</span><a href='010vm.cc.html#L19'>recipe</a> point<span class="muRecipe"> -&gt; </span>point<span class="Delimiter">)},</span> <span class="Constant">34</span>
+<span id="L18" class="LineNr"> 18 </span><span class="Delimiter">:(before &quot;End Mu Types Initialization&quot;)</span>
+<span id="L19" class="LineNr"> 19 </span><a href='001help.cc.html#L221'>put</a><span class="Delimiter">(</span>Type_ordinal<span class="Delimiter">,</span> <span class="Constant">&quot;recipe-literal&quot;</span><span class="Delimiter">,</span> <span class="Constant">0</span><span class="Delimiter">);</span>
+<span id="L20" class="LineNr"> 20 </span><span class="Comment">// 'recipe' variables can store recipe-literal</span>
+<span id="L21" class="LineNr"> 21 </span><a href='010vm.cc.html#L123'>type_ordinal</a> <a href='010vm.cc.html#L19'>recipe</a> = <a href='001help.cc.html#L221'>put</a><span class="Delimiter">(</span>Type_ordinal<span class="Delimiter">,</span> <span class="Constant">&quot;recipe&quot;</span><span class="Delimiter">,</span> Next_type_ordinal++<span class="Delimiter">);</span>
+<span id="L22" class="LineNr"> 22 </span><a href='001help.cc.html#L229'>get_or_insert</a><span class="Delimiter">(</span>Type<span class="Delimiter">,</span> <a href='010vm.cc.html#L19'>recipe</a><span class="Delimiter">).</span>name = <span class="Constant">&quot;recipe&quot;</span><span class="Delimiter">;</span>
+<span id="L23" class="LineNr"> 23 </span>
+<span id="L24" class="LineNr"> 24 </span><span class="Delimiter">:(after &quot;Deduce Missing Type(x, caller)&quot;)</span>
+<span id="L25" class="LineNr"> 25 </span><span class="Normal">if</span> <span class="Delimiter">(</span>!x<span class="Delimiter">.</span>type<span class="Delimiter">)</span>
+<span id="L26" class="LineNr"> 26 </span>  <a href='072recipe.cc.html#L31'>try_initialize_recipe_literal</a><span class="Delimiter">(</span>x<span class="Delimiter">,</span> caller<span class="Delimiter">);</span>
+<span id="L27" class="LineNr"> 27 </span><span class="Delimiter">:(before &quot;Type Check in Type-ingredient-aware check_or_set_types_by_name&quot;)</span>
+<span id="L28" class="LineNr"> 28 </span><span class="Normal">if</span> <span class="Delimiter">(</span>!x<span class="Delimiter">.</span>type<span class="Delimiter">)</span>
+<span id="L29" class="LineNr"> 29 </span>  <a href='072recipe.cc.html#L31'>try_initialize_recipe_literal</a><span class="Delimiter">(</span>x<span class="Delimiter">,</span> variant<span class="Delimiter">);</span>
+<span id="L30" class="LineNr"> 30 </span><span class="Delimiter">:(code)</span>
+<span id="L31" class="LineNr"> 31 </span><span class="Normal">void</span> <a href='072recipe.cc.html#L31'>try_initialize_recipe_literal</a><span class="Delimiter">(</span>reagent&amp; x<span class="Delimiter">,</span> <span class="Normal">const</span> recipe&amp; caller<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L32" class="LineNr"> 32 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>x<span class="Delimiter">.</span>type<span class="Delimiter">)</span> <span class="Identifier">return</span><span class="Delimiter">;</span>
+<span id="L33" class="LineNr"> 33 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!contains_key<span class="Delimiter">(</span>Recipe_ordinal<span class="Delimiter">,</span> x<span class="Delimiter">.</span>name<span class="Delimiter">))</span> <span class="Identifier">return</span><span class="Delimiter">;</span>
+<span id="L34" class="LineNr"> 34 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span><a href='072recipe.cc.html#L38'>contains_reagent_with_non_recipe_literal_type</a><span class="Delimiter">(</span>caller<span class="Delimiter">,</span> x<span class="Delimiter">.</span>name<span class="Delimiter">))</span> <span class="Identifier">return</span><span class="Delimiter">;</span>
+<span id="L35" class="LineNr"> 35 </span>  x<span class="Delimiter">.</span>type = <span class="Normal">new</span> type_tree<span class="Delimiter">(</span><span class="Constant">&quot;recipe-literal&quot;</span><span class="Delimiter">);</span>
+<span id="L36" class="LineNr"> 36 </span>  x<span class="Delimiter">.</span><a href='010vm.cc.html#L65'>set_value</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe_ordinal<span class="Delimiter">,</span> x<span class="Delimiter">.</span>name<span class="Delimiter">));</span>
+<span id="L37" class="LineNr"> 37 </span><span class="Delimiter">}</span>
+<span id="L38" class="LineNr"> 38 </span><span class="Normal">bool</span> <a href='072recipe.cc.html#L38'>contains_reagent_with_non_recipe_literal_type</a><span class="Delimiter">(</span><span class="Normal">const</span> recipe&amp; caller<span class="Delimiter">,</span> <span class="Normal">const</span> string&amp; name<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L39" class="LineNr"> 39 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> i = <span class="Constant">0</span><span class="Delimiter">;</span>  i &lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>caller<span class="Delimiter">.</span>steps<span class="Delimiter">);</span>  ++i<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L40" class="LineNr"> 40 </span>  <span class="Conceal">¦</span> <span class="Normal">const</span> instruction&amp; inst = caller<span class="Delimiter">.</span>steps<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">);</span>
+<span id="L41" class="LineNr"> 41 </span>  <span class="Conceal">¦</span> <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> i = <span class="Constant">0</span><span class="Delimiter">;</span>  i &lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">);</span>  ++i<span class="Delimiter">)</span>
+<span id="L42" class="LineNr"> 42 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span><a href='072recipe.cc.html#L48'>is_matching_non_recipe_literal</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">),</span> name<span class="Delimiter">))</span> <span class="Identifier">return</span> <span class="Constant">true</span><span class="Delimiter">;</span>
+<span id="L43" class="LineNr"> 43 </span>  <span class="Conceal">¦</span> <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> i = <span class="Constant">0</span><span class="Delimiter">;</span>  i &lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>products<span class="Delimiter">);</span>  ++i<span class="Delimiter">)</span>
+<span id="L44" class="LineNr"> 44 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span><a href='072recipe.cc.html#L48'>is_matching_non_recipe_literal</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">),</span> name<span class="Delimiter">))</span> <span class="Identifier">return</span> <span class="Constant">true</span><span class="Delimiter">;</span>
+<span id="L45" class="LineNr"> 45 </span>  <span class="Delimiter">}</span>
+<span id="L46" class="LineNr"> 46 </span>  <span class="Identifier">return</span> <span class="Constant">false</span><span class="Delimiter">;</span>
+<span id="L47" class="LineNr"> 47 </span><span class="Delimiter">}</span>
+<span id="L48" class="LineNr"> 48 </span><span class="Normal">bool</span> <a href='072recipe.cc.html#L48'>is_matching_non_recipe_literal</a><span class="Delimiter">(</span><span class="Normal">const</span> reagent&amp; x<span class="Delimiter">,</span> <span class="Normal">const</span> string&amp; name<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L49" class="LineNr"> 49 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>x<span class="Delimiter">.</span>name != name<span class="Delimiter">)</span> <span class="Identifier">return</span> <span class="Constant">false</span><span class="Delimiter">;</span>
+<span id="L50" class="LineNr"> 50 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!x<span class="Delimiter">.</span>type<span class="Delimiter">)</span> <span class="Identifier">return</span> <span class="Constant">false</span><span class="Delimiter">;</span>
+<span id="L51" class="LineNr"> 51 </span>  <span class="Identifier">return</span> !x<span class="Delimiter">.</span>type<span class="Delimiter">-&gt;</span>atom || x<span class="Delimiter">.</span>type<span class="Delimiter">-&gt;</span>name != <span class="Constant">&quot;recipe-literal&quot;</span><span class="Delimiter">;</span>
+<span id="L52" class="LineNr"> 52 </span><span class="Delimiter">}</span>
+<span id="L53" class="LineNr"> 53 </span>
+<span id="L54" class="LineNr"> 54 </span><span class="Comment">//: It's confusing to use variable names that are also recipe names. Always</span>
+<span id="L55" class="LineNr"> 55 </span><span class="Comment">//: assume variable types override recipe literals.</span>
+<span id="L56" class="LineNr"> 56 </span><span class="Delimiter">:(scenario error_on_recipe_literal_used_as_a_variable)</span>
+<span id="L57" class="LineNr"> 57 </span><span class="Special">% Hide_errors = true;</span>
+<span id="L58" class="LineNr"> 58 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
+<span id="L59" class="LineNr"> 59 </span>  local-scope
+<span id="L60" class="LineNr"> 60 </span>  <span class="Normal">a</span>:<span class="Normal">bool</span><span class="Special"> &lt;- </span>equal <span class="Identifier">break</span> <span class="Constant">0</span>
+<span id="L61" class="LineNr"> 61 </span>  <span class="Normal">break</span>:<span class="Normal">bool</span><span class="Special"> &lt;- </span>copy <span class="Constant">0</span>
+<span id="L62" class="LineNr"> 62 </span>]
+<span id="L63" class="LineNr"> 63 </span><span class="traceContains">+error: <a href='000organization.cc.html#L113'>main</a>: missing type for 'break' in 'a:bool &lt;- equal break, 0'</span>
+<span id="L64" class="LineNr"> 64 </span>
+<span id="L65" class="LineNr"> 65 </span><span class="Delimiter">:(before &quot;End Primitive Recipe Declarations&quot;)</span>
+<span id="L66" class="LineNr"> 66 </span>CALL<span class="Delimiter">,</span>
+<span id="L67" class="LineNr"> 67 </span><span class="Delimiter">:(before &quot;End Primitive Recipe Numbers&quot;)</span>
+<span id="L68" class="LineNr"> 68 </span><a href='001help.cc.html#L221'>put</a><span class="Delimiter">(</span>Recipe_ordinal<span class="Delimiter">,</span> <span class="Constant">&quot;call&quot;</span><span class="Delimiter">,</span> CALL<span class="Delimiter">);</span>
+<span id="L69" class="LineNr"> 69 </span><span class="Delimiter">:(before &quot;End Primitive Recipe Checks&quot;)</span>
+<span id="L70" class="LineNr"> 70 </span><span class="Normal">case</span> CALL: <span class="Delimiter">{</span>
+<span id="L71" class="LineNr"> 71 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>empty<span class="Delimiter">())</span> <span class="Delimiter">{</span>
+<span id="L72" class="LineNr"> 72 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'call' requires at least one ingredient (the <a href='010vm.cc.html#L19'>recipe</a> to call)</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
+<span id="L73" class="LineNr"> 73 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
+<span id="L74" class="LineNr"> 74 </span>  <span class="Delimiter">}</span>
+<span id="L75" class="LineNr"> 75 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!is_mu_recipe<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">)))</span> <span class="Delimiter">{</span>
+<span id="L76" class="LineNr"> 76 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;first ingredient of 'call' should be a <a href='010vm.cc.html#L19'>recipe</a>, but got '&quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>original_string &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
+<span id="L77" class="LineNr"> 77 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
+<span id="L78" class="LineNr"> 78 </span>  <span class="Delimiter">}</span>
+<span id="L79" class="LineNr"> 79 </span>  <span class="Identifier">break</span><span class="Delimiter">;</span>
+<span id="L80" class="LineNr"> 80 </span><span class="Delimiter">}</span>
+<span id="L81" class="LineNr"> 81 </span><span class="Delimiter">:(before &quot;End Primitive Recipe Implementations&quot;)</span>
+<span id="L82" class="LineNr"> 82 </span><span class="Normal">case</span> CALL: <span class="Delimiter">{</span>
+<span id="L83" class="LineNr"> 83 </span>  <span class="Comment">// Begin Call</span>
+<span id="L84" class="LineNr"> 84 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>Trace_stream<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L85" class="LineNr"> 85 </span>  <span class="Conceal">¦</span> ++Trace_stream<span class="Delimiter">-&gt;</span>callstack_depth<span class="Delimiter">;</span>
+<span id="L86" class="LineNr"> 86 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L167'>trace</a><span class="Delimiter">(</span><span class="Constant">&quot;trace&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;indirect 'call': incrementing callstack depth to &quot;</span> &lt;&lt; Trace_stream<span class="Delimiter">-&gt;</span>callstack_depth &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
+<span id="L87" class="LineNr"> 87 </span>  <span class="Conceal">¦</span> assert<span class="Delimiter">(</span>Trace_stream<span class="Delimiter">-&gt;</span>callstack_depth &lt; <span class="Constant">9000</span><span class="Delimiter">);</span>  <span class="Comment">// 9998-101 plus cushion</span>
+<span id="L88" class="LineNr"> 88 </span>  <span class="Delimiter">}</span>
+<span id="L89" class="LineNr"> 89 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">))</span> <span class="Delimiter">{</span>
+<span id="L90" class="LineNr"> 90 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span><a href='026call.cc.html#L87'>current_recipe_name</a><span class="Delimiter">())</span> &lt;&lt; <span class="Constant">&quot;tried to call empty <a href='010vm.cc.html#L19'>recipe</a> in '&quot;</span> &lt;&lt; to_string<span class="Delimiter">(</span>current_instruction<span class="Delimiter">())</span> &lt;&lt; <span class="Constant">&quot;'&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
+<span id="L91" class="LineNr"> 91 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
+<span id="L92" class="LineNr"> 92 </span>  <span class="Delimiter">}</span>
+<span id="L93" class="LineNr"> 93 </span>  <span class="Normal">const</span> call&amp; caller_frame = <a href='026call.cc.html#L83'>current_call</a><span class="Delimiter">();</span>
+<span id="L94" class="LineNr"> 94 </span>  <a href='010vm.cc.html#L32'>instruction</a><span class="Comment">/*</span><span class="Comment">copy</span><span class="Comment">*/</span> call_instruction = <a href='026call.cc.html#L88'>to_instruction</a><span class="Delimiter">(</span>caller_frame<span class="Delimiter">);</span>
+<span id="L95" class="LineNr"> 95 </span>  call_instruction<span class="Delimiter">.</span>operation = ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">);</span>
+<span id="L96" class="LineNr"> 96 </span>  call_instruction<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>erase<span class="Delimiter">(</span>call_instruction<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>begin<span class="Delimiter">());</span>
+<span id="L97" class="LineNr"> 97 </span>  Current_routine<span class="Delimiter">-&gt;</span>calls<span class="Delimiter">.</span>push_front<span class="Delimiter">(</span>call<span class="Delimiter">(</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">)));</span>
+<span id="L98" class="LineNr"> 98 </span>  ingredients<span class="Delimiter">.</span>erase<span class="Delimiter">(</span>ingredients<span class="Delimiter">.</span>begin<span class="Delimiter">());</span>  <span class="Comment">// drop the callee</span>
+<span id="L99" class="LineNr"> 99 </span>  finish_call_housekeeping<span class="Delimiter">(</span>call_instruction<span class="Delimiter">,</span> ingredients<span class="Delimiter">);</span>
+<span id="L100" class="LineNr">100 </span>  Num_refcount_updates[caller_frame<span class="Delimiter">.</span>running_recipe][caller_frame<span class="Delimiter">.</span>running_step_index]
+<span id="L101" class="LineNr">101 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> += <span class="Delimiter">(</span>Total_refcount_updates - initial_num_refcount_updates<span class="Delimiter">);</span>
+<span id="L102" class="LineNr">102 </span>  initial_num_refcount_updates = Total_refcount_updates<span class="Delimiter">;</span>
+<span id="L103" class="LineNr">103 </span>  <span class="Comment">// not done with caller</span>
+<span id="L104" class="LineNr">104 </span>  write_products = <span class="Constant">false</span><span class="Delimiter">;</span>
+<span id="L105" class="LineNr">105 </span>  fall_through_to_next_instruction = <span class="Constant">false</span><span class="Delimiter">;</span>
+<span id="L106" class="LineNr">106 </span>  <span class="Identifier">break</span><span class="Delimiter">;</span>
+<span id="L107" class="LineNr">107 </span><span class="Delimiter">}</span>
+<span id="L108" class="LineNr">108 </span>
+<span id="L109" class="LineNr">109 </span><span class="Delimiter">:(scenario call_variable)</span>
+<span id="L110" class="LineNr">110 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
+<span id="L111" class="LineNr">111 </span>  <span class="Delimiter">{</span><span class="Constant">1</span>: <span class="Delimiter">(</span><a href='010vm.cc.html#L19'>recipe</a> number<span class="muRecipe"> -&gt; </span>number<span class="Delimiter">)}</span><span class="Special"> &lt;- </span>copy f
+<span id="L112" class="LineNr">112 </span>  <span class="Constant">2</span>:num<span class="Special"> &lt;- </span>call <span class="Delimiter">{</span><span class="Constant">1</span>: <span class="Delimiter">(</span><a href='010vm.cc.html#L19'>recipe</a> number<span class="muRecipe"> -&gt; </span>number<span class="Delimiter">)},</span> <span class="Constant">34</span>
+<span id="L113" class="LineNr">113 </span>]
+<span id="L114" class="LineNr">114 </span><span class="muRecipe">def</span> f x:num<span class="muRecipe"> -&gt; </span>y:num [
+<span id="L115" class="LineNr">115 </span>  local-scope
+<span id="L116" class="LineNr">116 </span>  load-ingredients
+<span id="L117" class="LineNr">117 </span>  y<span class="Special"> &lt;- </span>copy x
+<span id="L118" class="LineNr">118 </span>]
+<span id="L119" class="LineNr">119 </span><span class="traceContains">+mem: storing 34 in location 2</span>
+<span id="L120" class="LineNr">120 </span>
+<span id="L121" class="LineNr">121 </span><span class="Delimiter">:(scenario call_literal_recipe_repeatedly)</span>
+<span id="L122" class="LineNr">122 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
+<span id="L123" class="LineNr">123 </span>  <span class="Constant">1</span>:num<span class="Special"> &lt;- </span>call f<span class="Delimiter">,</span> <span class="Constant">34</span>
+<span id="L124" class="LineNr">124 </span>  <span class="Constant">1</span>:num<span class="Special"> &lt;- </span>call f<span class="Delimiter">,</span> <span class="Constant">35</span>
+<span id="L125" class="LineNr">125 </span>]
+<span id="L126" class="LineNr">126 </span><span class="muRecipe">def</span> f x:num<span class="muRecipe"> -&gt; </span>y:num [
+<span id="L127" class="LineNr">127 </span>  local-scope
+<span id="L128" class="LineNr">128 </span>  load-ingredients
+<span id="L129" class="LineNr">129 </span>  y<span class="Special"> &lt;- </span>copy x
+<span id="L130" class="LineNr">130 </span>]
+<span id="L131" class="LineNr">131 </span><span class="traceContains">+mem: storing 34 in location 1</span>
+<span id="L132" class="LineNr">132 </span><span class="traceContains">+mem: storing 35 in location 1</span>
+<span id="L133" class="LineNr">133 </span>
+<span id="L134" class="LineNr">134 </span><span class="Delimiter">:(scenario call_shape_shifting_recipe)</span>
+<span id="L135" class="LineNr">135 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
+<span id="L136" class="LineNr">136 </span>  <span class="Constant">1</span>:num<span class="Special"> &lt;- </span>call f<span class="Delimiter">,</span> <span class="Constant">34</span>
+<span id="L137" class="LineNr">137 </span>]
+<span id="L138" class="LineNr">138 </span><span class="muRecipe">def</span> f x:_elem<span class="muRecipe"> -&gt; </span>y:_elem [
+<span id="L139" class="LineNr">139 </span>  local-scope
+<span id="L140" class="LineNr">140 </span>  load-ingredients
+<span id="L141" class="LineNr">141 </span>  y<span class="Special"> &lt;- </span>copy x
+<span id="L142" class="LineNr">142 </span>]
+<span id="L143" class="LineNr">143 </span><span class="traceContains">+mem: storing 34 in location 1</span>
+<span id="L144" class="LineNr">144 </span>
+<span id="L145" class="LineNr">145 </span><span class="Delimiter">:(scenario call_shape_shifting_recipe_inside_shape_shifting_recipe)</span>
+<span id="L146" class="LineNr">146 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
+<span id="L147" class="LineNr">147 </span>  <span class="Constant">1</span>:num<span class="Special"> &lt;- </span>f <span class="Constant">34</span>
+<span id="L148" class="LineNr">148 </span>]
+<span id="L149" class="LineNr">149 </span><span class="muRecipe">def</span> f x:_elem<span class="muRecipe"> -&gt; </span>y:_elem [
+<span id="L150" class="LineNr">150 </span>  local-scope
+<span id="L151" class="LineNr">151 </span>  load-ingredients
+<span id="L152" class="LineNr">152 </span>  y<span class="Special"> &lt;- </span>call g x
 <span id="L153" class="LineNr">153 </span>]
-<span id="L154" class="LineNr">154 </span><span class="muRecipe">def</span> f x:point<span class="muRecipe"> -&gt; </span>y:point [
+<span id="L154" class="LineNr">154 </span><span class="muRecipe">def</span> g x:_elem<span class="muRecipe"> -&gt; </span>y:_elem [
 <span id="L155" class="LineNr">155 </span>  local-scope
 <span id="L156" class="LineNr">156 </span>  load-ingredients
 <span id="L157" class="LineNr">157 </span>  y<span class="Special"> &lt;- </span>copy x
 <span id="L158" class="LineNr">158 </span>]
-<span id="L159" class="LineNr">159 </span><span class="traceContains">+error: <a href='000organization.cc.html#L113'>main</a>: ingredient 0 has the wrong type at '2:num &lt;- call {1: (recipe point -&gt; point)}, 34'</span>
-<span id="L160" class="LineNr">160 </span><span class="traceContains">+error: <a href='000organization.cc.html#L113'>main</a>: product 0 has the wrong type at '2:num &lt;- call {1: (recipe point -&gt; point)}, 34'</span>
-<span id="L161" class="LineNr">161 </span>
-<span id="L162" class="LineNr">162 </span><span class="Delimiter">:(after &quot;Transform.push_back(check_instruction)&quot;)</span>
-<span id="L163" class="LineNr">163 </span>Transform<span class="Delimiter">.</span>push_back<span class="Delimiter">(</span><a href='072recipe.cc.html#L165'>check_indirect_calls_against_header</a><span class="Delimiter">);</span>  <span class="Comment">// idempotent</span>
-<span id="L164" class="LineNr">164 </span><span class="Delimiter">:(code)</span>
-<span id="L165" class="LineNr">165 </span><span class="Normal">void</span> <a href='072recipe.cc.html#L165'>check_indirect_calls_against_header</a><span class="Delimiter">(</span><span class="Normal">const</span> <a href='010vm.cc.html#L14'>recipe_ordinal</a> r<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L166" class="LineNr">166 </span>  <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">9991</span><span class="Delimiter">,</span> <span class="Constant">&quot;transform&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;--- type-check 'call' instructions inside <a href='010vm.cc.html#L19'>recipe</a> &quot;</span> &lt;&lt; get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
-<span id="L167" class="LineNr">167 </span>  <span class="Normal">const</span> recipe&amp; caller = get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">);</span>
-<span id="L168" class="LineNr">168 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> i = <span class="Constant">0</span><span class="Delimiter">;</span>  i &lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>caller<span class="Delimiter">.</span>steps<span class="Delimiter">);</span>  ++i<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L169" class="LineNr">169 </span>  <span class="Conceal">¦</span> <span class="Normal">const</span> instruction&amp; inst = caller<span class="Delimiter">.</span>steps<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">);</span>
-<span id="L170" class="LineNr">170 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>!is_indirect_call<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>operation<span class="Delimiter">))</span> <span class="Identifier">continue</span><span class="Delimiter">;</span>
-<span id="L171" class="LineNr">171 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>empty<span class="Delimiter">())</span> <span class="Identifier">continue</span><span class="Delimiter">;</span>  <span class="Comment">// error raised above</span>
-<span id="L172" class="LineNr">172 </span>  <span class="Conceal">¦</span> <span class="Normal">const</span> reagent&amp; callee = inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">);</span>
-<span id="L173" class="LineNr">173 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>!is_mu_recipe<span class="Delimiter">(</span>callee<span class="Delimiter">))</span> <span class="Identifier">continue</span><span class="Delimiter">;</span>  <span class="Comment">// error raised above</span>
-<span id="L174" class="LineNr">174 </span>  <span class="Conceal">¦</span> <span class="Normal">const</span> <a href='010vm.cc.html#L19'>recipe</a> callee_header = is_literal<span class="Delimiter">(</span>callee<span class="Delimiter">)</span> ? get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> callee<span class="Delimiter">.</span>value<span class="Delimiter">)</span> : <a href='072recipe.cc.html#L207'>from_reagent</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">));</span>
-<span id="L175" class="LineNr">175 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>!callee_header<span class="Delimiter">.</span>has_header<span class="Delimiter">)</span> <span class="Identifier">continue</span><span class="Delimiter">;</span>
-<span id="L176" class="LineNr">176 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span><a href='072recipe.cc.html#L196'>is_indirect_call_with_ingredients</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>operation<span class="Delimiter">))</span> <span class="Delimiter">{</span>
-<span id="L177" class="LineNr">177 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">long</span> <span class="Normal">int</span> i = <span class="Comment">/*</span><span class="Comment">skip callee</span><span class="Comment">*/</span><span class="Constant">1</span><span class="Delimiter">;</span>  i &lt; min<span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">),</span> <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>callee_header<span class="Delimiter">.</span>ingredients<span class="Delimiter">)</span>+<span class="Comment">/*</span><span class="Comment">skip callee</span><span class="Comment">*/</span><span class="Constant">1</span><span class="Delimiter">);</span>  ++i<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L178" class="LineNr">178 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>!types_coercible<span class="Delimiter">(</span>callee_header<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i-<span class="Comment">/*</span><span class="Comment">skip callee</span><span class="Comment">*/</span><span class="Constant">1</span><span class="Delimiter">),</span> inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">)))</span>
-<span id="L179" class="LineNr">179 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>caller<span class="Delimiter">.</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;ingredient &quot;</span> &lt;&lt; i-<span class="Comment">/*</span><span class="Comment">skip callee</span><span class="Comment">*/</span><span class="Constant">1</span> &lt;&lt; <span class="Constant">&quot; has the wrong type at '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
-<span id="L180" class="LineNr">180 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Delimiter">}</span>
-<span id="L181" class="LineNr">181 </span>  <span class="Conceal">¦</span> <span class="Delimiter">}</span>
-<span id="L182" class="LineNr">182 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span><a href='072recipe.cc.html#L201'>is_indirect_call_with_products</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>operation<span class="Delimiter">))</span> <span class="Delimiter">{</span>
-<span id="L183" class="LineNr">183 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">long</span> <span class="Normal">int</span> i = <span class="Constant">0</span><span class="Delimiter">;</span>  i &lt; min<span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>products<span class="Delimiter">),</span> <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>callee_header<span class="Delimiter">.</span>products<span class="Delimiter">));</span>  ++i<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L184" class="LineNr">184 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>is_dummy<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">)))</span> <span class="Identifier">continue</span><span class="Delimiter">;</span>
-<span id="L185" class="LineNr">185 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>!types_coercible<span class="Delimiter">(</span>callee_header<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">),</span> inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">)))</span>
-<span id="L186" class="LineNr">186 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>caller<span class="Delimiter">.</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;product &quot;</span> &lt;&lt; i &lt;&lt; <span class="Constant">&quot; has the wrong type at '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
-<span id="L187" class="LineNr">187 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Delimiter">}</span>
-<span id="L188" class="LineNr">188 </span>  <span class="Conceal">¦</span> <span class="Delimiter">}</span>
-<span id="L189" class="LineNr">189 </span>  <span class="Delimiter">}</span>
-<span id="L190" class="LineNr">190 </span><span class="Delimiter">}</span>
-<span id="L191" class="LineNr">191 </span>
-<span id="L192" class="LineNr">192 </span><span class="Normal">bool</span> <a href='072recipe.cc.html#L192'>is_indirect_call</a><span class="Delimiter">(</span><span class="Normal">const</span> <a href='010vm.cc.html#L14'>recipe_ordinal</a> r<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L193" class="LineNr">193 </span>  <span class="Identifier">return</span> <a href='072recipe.cc.html#L196'>is_indirect_call_with_ingredients</a><span class="Delimiter">(</span>r<span class="Delimiter">)</span> || <a href='072recipe.cc.html#L201'>is_indirect_call_with_products</a><span class="Delimiter">(</span>r<span class="Delimiter">);</span>
-<span id="L194" class="LineNr">194 </span><span class="Delimiter">}</span>
-<span id="L195" class="LineNr">195 </span>
-<span id="L196" class="LineNr">196 </span><span class="Normal">bool</span> <a href='072recipe.cc.html#L196'>is_indirect_call_with_ingredients</a><span class="Delimiter">(</span><span class="Normal">const</span> <a href='010vm.cc.html#L14'>recipe_ordinal</a> r<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L197" class="LineNr">197 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>r == CALL<span class="Delimiter">)</span> <span class="Identifier">return</span> <span class="Constant">true</span><span class="Delimiter">;</span>
-<span id="L198" class="LineNr">198 </span>  <span class="Comment">// End is_indirect_call_with_ingredients Special-cases</span>
-<span id="L199" class="LineNr">199 </span>  <span class="Identifier">return</span> <span class="Constant">false</span><span class="Delimiter">;</span>
-<span id="L200" class="LineNr">200 </span><span class="Delimiter">}</span>
-<span id="L201" class="LineNr">201 </span><span class="Normal">bool</span> <a href='072recipe.cc.html#L201'>is_indirect_call_with_products</a><span class="Delimiter">(</span><span class="Normal">const</span> <a href='010vm.cc.html#L14'>recipe_ordinal</a> r<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L202" class="LineNr">202 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>r == CALL<span class="Delimiter">)</span> <span class="Identifier">return</span> <span class="Constant">true</span><span class="Delimiter">;</span>
-<span id="L203" class="LineNr">203 </span>  <span class="Comment">// End is_indirect_call_with_products Special-cases</span>
-<span id="L204" class="LineNr">204 </span>  <span class="Identifier">return</span> <span class="Constant">false</span><span class="Delimiter">;</span>
-<span id="L205" class="LineNr">205 </span><span class="Delimiter">}</span>
+<span id="L159" class="LineNr">159 </span><span class="traceContains">+mem: storing 34 in location 1</span>
+<span id="L160" class="LineNr">160 </span>
+<span id="L161" class="LineNr">161 </span><span class="Delimiter">:(scenario call_shape_shifting_recipe_repeatedly_inside_shape_shifting_recipe)</span>
+<span id="L162" class="LineNr">162 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
+<span id="L163" class="LineNr">163 </span>  <span class="Constant">1</span>:num<span class="Special"> &lt;- </span>f <span class="Constant">34</span>
+<span id="L164" class="LineNr">164 </span>]
+<span id="L165" class="LineNr">165 </span><span class="muRecipe">def</span> f x:_elem<span class="muRecipe"> -&gt; </span>y:_elem [
+<span id="L166" class="LineNr">166 </span>  local-scope
+<span id="L167" class="LineNr">167 </span>  load-ingredients
+<span id="L168" class="LineNr">168 </span>  y<span class="Special"> &lt;- </span>call g x
+<span id="L169" class="LineNr">169 </span>  y<span class="Special"> &lt;- </span>call g x
+<span id="L170" class="LineNr">170 </span>]
+<span id="L171" class="LineNr">171 </span><span class="muRecipe">def</span> g x:_elem<span class="muRecipe"> -&gt; </span>y:_elem [
+<span id="L172" class="LineNr">172 </span>  local-scope
+<span id="L173" class="LineNr">173 </span>  load-ingredients
+<span id="L174" class="LineNr">174 </span>  y<span class="Special"> &lt;- </span>copy x
+<span id="L175" class="LineNr">175 </span>]
+<span id="L176" class="LineNr">176 </span><span class="traceContains">+mem: storing 34 in location 1</span>
+<span id="L177" class="LineNr">177 </span>
+<span id="L178" class="LineNr">178 </span><span class="SalientComment">//:: check types for 'call' instructions</span>
+<span id="L179" class="LineNr">179 </span>
+<span id="L180" class="LineNr">180 </span><span class="Delimiter">:(scenario call_check_literal_recipe)</span>
+<span id="L181" class="LineNr">181 </span><span class="Special">% Hide_errors = true;</span>
+<span id="L182" class="LineNr">182 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
+<span id="L183" class="LineNr">183 </span>  <span class="Constant">1</span>:num<span class="Special"> &lt;- </span>call f<span class="Delimiter">,</span> <span class="Constant">34</span>
+<span id="L184" class="LineNr">184 </span>]
+<span id="L185" class="LineNr">185 </span><span class="muRecipe">def</span> f x:point<span class="muRecipe"> -&gt; </span>y:point [
+<span id="L186" class="LineNr">186 </span>  local-scope
+<span id="L187" class="LineNr">187 </span>  load-ingredients
+<span id="L188" class="LineNr">188 </span>  y<span class="Special"> &lt;- </span>copy x
+<span id="L189" class="LineNr">189 </span>]
+<span id="L190" class="LineNr">190 </span><span class="traceContains">+error: <a href='000organization.cc.html#L113'>main</a>: ingredient 0 has the wrong type at '1:num &lt;- call f, 34'</span>
+<span id="L191" class="LineNr">191 </span><span class="traceContains">+error: <a href='000organization.cc.html#L113'>main</a>: product 0 has the wrong type at '1:num &lt;- call f, 34'</span>
+<span id="L192" class="LineNr">192 </span>
+<span id="L193" class="LineNr">193 </span><span class="Delimiter">:(scenario call_check_variable_recipe)</span>
+<span id="L194" class="LineNr">194 </span><span class="Special">% Hide_errors = true;</span>
+<span id="L195" class="LineNr">195 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
+<span id="L196" class="LineNr">196 </span>  <span class="Delimiter">{</span><span class="Constant">1</span>: <span class="Delimiter">(</span><a href='010vm.cc.html#L19'>recipe</a> point<span class="muRecipe"> -&gt; </span>point<span class="Delimiter">)}</span><span class="Special"> &lt;- </span>copy f
+<span id="L197" class="LineNr">197 </span>  <span class="Constant">2</span>:num<span class="Special"> &lt;- </span>call <span class="Delimiter">{</span><span class="Constant">1</span>: <span class="Delimiter">(</span><a href='010vm.cc.html#L19'>recipe</a> point<span class="muRecipe"> -&gt; </span>point<span class="Delimiter">)},</span> <span class="Constant">34</span>
+<span id="L198" class="LineNr">198 </span>]
+<span id="L199" class="LineNr">199 </span><span class="muRecipe">def</span> f x:point<span class="muRecipe"> -&gt; </span>y:point [
+<span id="L200" class="LineNr">200 </span>  local-scope
+<span id="L201" class="LineNr">201 </span>  load-ingredients
+<span id="L202" class="LineNr">202 </span>  y<span class="Special"> &lt;- </span>copy x
+<span id="L203" class="LineNr">203 </span>]
+<span id="L204" class="LineNr">204 </span><span class="traceContains">+error: <a href='000organization.cc.html#L113'>main</a>: ingredient 0 has the wrong type at '2:num &lt;- call {1: (recipe point -&gt; point)}, 34'</span>
+<span id="L205" class="LineNr">205 </span><span class="traceContains">+error: <a href='000organization.cc.html#L113'>main</a>: product 0 has the wrong type at '2:num &lt;- call {1: (recipe point -&gt; point)}, 34'</span>
 <span id="L206" class="LineNr">206 </span>
-<span id="L207" class="LineNr">207 </span><span class="muRecipe"><a href='010vm.cc.html#L19'>recipe</a></span> <a href='072recipe.cc.html#L207'>from_reagent</a><span class="Delimiter">(</span><span class="Normal">const</span> reagent&amp; r<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L208" class="LineNr">208 </span>  assert<span class="Delimiter">(</span>r<span class="Delimiter">.</span>type<span class="Delimiter">);</span>
-<span id="L209" class="LineNr">209 </span>  <a href='010vm.cc.html#L19'>recipe</a> result_header<span class="Delimiter">;</span>  <span class="Comment">// will contain only ingredients and products, nothing else</span>
-<span id="L210" class="LineNr">210 </span>  result_header<span class="Delimiter">.</span>has_header = <span class="Constant">true</span><span class="Delimiter">;</span>
-<span id="L211" class="LineNr">211 </span>  <span class="Comment">// Begin Reagent-&gt;Recipe(r, recipe_header)</span>
-<span id="L212" class="LineNr">212 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>r<span class="Delimiter">.</span>type<span class="Delimiter">-&gt;</span>atom<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L213" class="LineNr">213 </span>  <span class="Conceal">¦</span> assert<span class="Delimiter">(</span>r<span class="Delimiter">.</span>type<span class="Delimiter">-&gt;</span>name == <span class="Constant">&quot;recipe&quot;</span><span class="Delimiter">);</span>
-<span id="L214" class="LineNr">214 </span>  <span class="Conceal">¦</span> <span class="Identifier">return</span> result_header<span class="Delimiter">;</span>
-<span id="L215" class="LineNr">215 </span>  <span class="Delimiter">}</span>
-<span id="L216" class="LineNr">216 </span>  <span class="Normal">const</span> type_tree* root_type = r<span class="Delimiter">.</span>type<span class="Delimiter">-&gt;</span>atom ? r<span class="Delimiter">.</span>type : r<span class="Delimiter">.</span>type<span class="Delimiter">-&gt;</span>left<span class="Delimiter">;</span>
-<span id="L217" class="LineNr">217 </span>  assert<span class="Delimiter">(</span>root_type<span class="Delimiter">-&gt;</span>atom<span class="Delimiter">);</span>
-<span id="L218" class="LineNr">218 </span>  assert<span class="Delimiter">(</span>root_type<span class="Delimiter">-&gt;</span>name == <span class="Constant">&quot;recipe&quot;</span><span class="Delimiter">);</span>
-<span id="L219" class="LineNr">219 </span>  <span class="Normal">const</span> type_tree* curr = r<span class="Delimiter">.</span>type<span class="Delimiter">-&gt;</span>right<span class="Delimiter">;</span>
-<span id="L220" class="LineNr">220 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Comment">/*</span><span class="Comment">nada</span><span class="Comment">*/</span><span class="Delimiter">;</span>  curr &amp;&amp; !curr<span class="Delimiter">-&gt;</span>atom<span class="Delimiter">;</span>  curr = curr<span class="Delimiter">-&gt;</span>right<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L221" class="LineNr">221 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>curr<span class="Delimiter">-&gt;</span>left<span class="Delimiter">-&gt;</span>atom &amp;&amp; curr<span class="Delimiter">-&gt;</span>left<span class="Delimiter">-&gt;</span>name == <span class="Constant">&quot;-&gt;&quot;</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L222" class="LineNr">222 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> curr = curr<span class="Delimiter">-&gt;</span>right<span class="Delimiter">;</span>  <span class="Comment">// skip delimiter</span>
-<span id="L223" class="LineNr">223 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Identifier">goto</span> read_products<span class="Delimiter">;</span>
-<span id="L224" class="LineNr">224 </span>  <span class="Conceal">¦</span> <span class="Delimiter">}</span>
-<span id="L225" class="LineNr">225 </span>  <span class="Conceal">¦</span> result_header<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>push_back<span class="Delimiter">(</span><a href='072recipe.cc.html#L269'>next_recipe_reagent</a><span class="Delimiter">(</span>curr<span class="Delimiter">-&gt;</span>left<span class="Delimiter">));</span>
-<span id="L226" class="LineNr">226 </span>  <span class="Delimiter">}</span>
-<span id="L227" class="LineNr">227 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>curr<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L228" class="LineNr">228 </span>  <span class="Conceal">¦</span> assert<span class="Delimiter">(</span>curr<span class="Delimiter">-&gt;</span>atom<span class="Delimiter">);</span>
-<span id="L229" class="LineNr">229 </span>  <span class="Conceal">¦</span> result_header<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>push_back<span class="Delimiter">(</span><a href='072recipe.cc.html#L269'>next_recipe_reagent</a><span class="Delimiter">(</span>curr<span class="Delimiter">));</span>
-<span id="L230" class="LineNr">230 </span>  <span class="Conceal">¦</span> <span class="Identifier">return</span> result_header<span class="Delimiter">;</span>  <span class="Comment">// no products</span>
-<span id="L231" class="LineNr">231 </span>  <span class="Delimiter">}</span>
-<span id="L232" class="LineNr">232 </span>  <span class="Normal">read_products</span>:
-<span id="L233" class="LineNr">233 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Comment">/*</span><span class="Comment">nada</span><span class="Comment">*/</span><span class="Delimiter">;</span>  curr &amp;&amp; !curr<span class="Delimiter">-&gt;</span>atom<span class="Delimiter">;</span>  curr = curr<span class="Delimiter">-&gt;</span>right<span class="Delimiter">)</span>
-<span id="L234" class="LineNr">234 </span>  <span class="Conceal">¦</span> result_header<span class="Delimiter">.</span>products<span class="Delimiter">.</span>push_back<span class="Delimiter">(</span><a href='072recipe.cc.html#L269'>next_recipe_reagent</a><span class="Delimiter">(</span>curr<span class="Delimiter">-&gt;</span>left<span class="Delimiter">));</span>
-<span id="L235" class="LineNr">235 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>curr<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L236" class="LineNr">236 </span>  <span class="Conceal">¦</span> assert<span class="Delimiter">(</span>curr<span class="Delimiter">-&gt;</span>atom<span class="Delimiter">);</span>
-<span id="L237" class="LineNr">237 </span>  <span class="Conceal">¦</span> result_header<span class="Delimiter">.</span>products<span class="Delimiter">.</span>push_back<span class="Delimiter">(</span><a href='072recipe.cc.html#L269'>next_recipe_reagent</a><span class="Delimiter">(</span>curr<span class="Delimiter">));</span>
-<span id="L238" class="LineNr">238 </span>  <span class="Delimiter">}</span>
-<span id="L239" class="LineNr">239 </span>  <span class="Identifier">return</span> result_header<span class="Delimiter">;</span>
-<span id="L240" class="LineNr">240 </span><span class="Delimiter">}</span>
-<span id="L241" class="LineNr">241 </span>
-<span id="L242" class="LineNr">242 </span><span class="Delimiter">:(before &quot;End Unit Tests&quot;)</span>
-<span id="L243" class="LineNr">243 </span><span class="Normal">void</span> <a href='072recipe.cc.html#L243'>test_from_reagent_atomic</a><span class="Delimiter">()</span> <span class="Delimiter">{</span>
-<span id="L244" class="LineNr">244 </span>  reagent a<span class="Delimiter">(</span><span class="Constant">&quot;{f: recipe}&quot;</span><span class="Delimiter">);</span>
-<span id="L245" class="LineNr">245 </span>  <a href='010vm.cc.html#L19'>recipe</a> r_header = <a href='072recipe.cc.html#L207'>from_reagent</a><span class="Delimiter">(</span>a<span class="Delimiter">);</span>
-<span id="L246" class="LineNr">246 </span>  <a href='002test.cc.html#L24'>CHECK</a><span class="Delimiter">(</span>r_header<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>empty<span class="Delimiter">());</span>
-<span id="L247" class="LineNr">247 </span>  <a href='002test.cc.html#L24'>CHECK</a><span class="Delimiter">(</span>r_header<span class="Delimiter">.</span>products<span class="Delimiter">.</span>empty<span class="Delimiter">());</span>
-<span id="L248" class="LineNr">248 </span><span class="Delimiter">}</span>
-<span id="L249" class="LineNr">249 </span><span class="Normal">void</span> <a href='072recipe.cc.html#L249'>test_from_reagent_non_atomic</a><span class="Delimiter">()</span> <span class="Delimiter">{</span>
-<span id="L250" class="LineNr">250 </span>  reagent a<span class="Delimiter">(</span><span class="Constant">&quot;{f: (recipe number -&gt; number)}&quot;</span><span class="Delimiter">);</span>
-<span id="L251" class="LineNr">251 </span>  <a href='010vm.cc.html#L19'>recipe</a> r_header = <a href='072recipe.cc.html#L207'>from_reagent</a><span class="Delimiter">(</span>a<span class="Delimiter">);</span>
-<span id="L252" class="LineNr">252 </span>  <a href='002test.cc.html#L31'>CHECK_EQ</a><span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>r_header<span class="Delimiter">.</span>ingredients<span class="Delimiter">),</span> <span class="Constant">1</span><span class="Delimiter">);</span>
-<span id="L253" class="LineNr">253 </span>  <a href='002test.cc.html#L31'>CHECK_EQ</a><span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>r_header<span class="Delimiter">.</span>products<span class="Delimiter">),</span> <span class="Constant">1</span><span class="Delimiter">);</span>
-<span id="L254" class="LineNr">254 </span><span class="Delimiter">}</span>
-<span id="L255" class="LineNr">255 </span><span class="Normal">void</span> <a href='072recipe.cc.html#L255'>test_from_reagent_reads_ingredient_at_end</a><span class="Delimiter">()</span> <span class="Delimiter">{</span>
-<span id="L256" class="LineNr">256 </span>  reagent a<span class="Delimiter">(</span><span class="Constant">&quot;{f: (recipe number number)}&quot;</span><span class="Delimiter">);</span>
-<span id="L257" class="LineNr">257 </span>  <a href='010vm.cc.html#L19'>recipe</a> r_header = <a href='072recipe.cc.html#L207'>from_reagent</a><span class="Delimiter">(</span>a<span class="Delimiter">);</span>
-<span id="L258" class="LineNr">258 </span>  <a href='002test.cc.html#L31'>CHECK_EQ</a><span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>r_header<span class="Delimiter">.</span>ingredients<span class="Delimiter">),</span> <span class="Constant">2</span><span class="Delimiter">);</span>
-<span id="L259" class="LineNr">259 </span>  <a href='002test.cc.html#L24'>CHECK</a><span class="Delimiter">(</span>r_header<span class="Delimiter">.</span>products<span class="Delimiter">.</span>empty<span class="Delimiter">());</span>
-<span id="L260" class="LineNr">260 </span><span class="Delimiter">}</span>
-<span id="L261" class="LineNr">261 </span><span class="Normal">void</span> <a href='072recipe.cc.html#L261'>test_from_reagent_reads_sole_ingredient_at_end</a><span class="Delimiter">()</span> <span class="Delimiter">{</span>
-<span id="L262" class="LineNr">262 </span>  reagent a<span class="Delimiter">(</span><span class="Constant">&quot;{f: (recipe number)}&quot;</span><span class="Delimiter">);</span>
-<span id="L263" class="LineNr">263 </span>  <a href='010vm.cc.html#L19'>recipe</a> r_header = <a href='072recipe.cc.html#L207'>from_reagent</a><span class="Delimiter">(</span>a<span class="Delimiter">);</span>
-<span id="L264" class="LineNr">264 </span>  <a href='002test.cc.html#L31'>CHECK_EQ</a><span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>r_header<span class="Delimiter">.</span>ingredients<span class="Delimiter">),</span> <span class="Constant">1</span><span class="Delimiter">);</span>
-<span id="L265" class="LineNr">265 </span>  <a href='002test.cc.html#L24'>CHECK</a><span class="Delimiter">(</span>r_header<span class="Delimiter">.</span>products<span class="Delimiter">.</span>empty<span class="Delimiter">());</span>
-<span id="L266" class="LineNr">266 </span><span class="Delimiter">}</span>
-<span id="L267" class="LineNr">267 </span>
-<span id="L268" class="LineNr">268 </span><span class="Delimiter">:(code)</span>
-<span id="L269" class="LineNr">269 </span>reagent <a href='072recipe.cc.html#L269'>next_recipe_reagent</a><span class="Delimiter">(</span><span class="Normal">const</span> type_tree* curr<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L270" class="LineNr">270 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!curr<span class="Delimiter">-&gt;</span>left<span class="Delimiter">)</span> <span class="Identifier">return</span> reagent<span class="Delimiter">(</span><span class="Constant">&quot;recipe:&quot;</span>+curr<span class="Delimiter">-&gt;</span>name<span class="Delimiter">);</span>
-<span id="L271" class="LineNr">271 </span>  reagent result<span class="Delimiter">;</span>
-<span id="L272" class="LineNr">272 </span>  result<span class="Delimiter">.</span>name = <span class="Constant">&quot;recipe&quot;</span><span class="Delimiter">;</span>
-<span id="L273" class="LineNr">273 </span>  result<span class="Delimiter">.</span>type = <span class="Normal">new</span> type_tree<span class="Delimiter">(</span>*curr<span class="Delimiter">);</span>
-<span id="L274" class="LineNr">274 </span>  <span class="Identifier">return</span> result<span class="Delimiter">;</span>
-<span id="L275" class="LineNr">275 </span><span class="Delimiter">}</span>
-<span id="L276" class="LineNr">276 </span>
-<span id="L277" class="LineNr">277 </span><span class="Normal">bool</span> <a href='072recipe.cc.html#L277'>is_mu_recipe</a><span class="Delimiter">(</span><span class="Normal">const</span> reagent&amp; r<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L278" class="LineNr">278 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!r<span class="Delimiter">.</span>type<span class="Delimiter">)</span> <span class="Identifier">return</span> <span class="Constant">false</span><span class="Delimiter">;</span>
-<span id="L279" class="LineNr">279 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>r<span class="Delimiter">.</span>type<span class="Delimiter">-&gt;</span>atom<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L280" class="LineNr">280 </span>  <span class="Conceal">¦</span> <span class="Comment">// End is_mu_recipe Atom Cases(r)</span>
-<span id="L281" class="LineNr">281 </span>  <span class="Conceal">¦</span> <span class="Identifier">return</span> r<span class="Delimiter">.</span>type<span class="Delimiter">-&gt;</span>name == <span class="Constant">&quot;recipe-literal&quot;</span><span class="Delimiter">;</span>
-<span id="L282" class="LineNr">282 </span>  <span class="Delimiter">}</span>
-<span id="L283" class="LineNr">283 </span>  <span class="Identifier">return</span> r<span class="Delimiter">.</span>type<span class="Delimiter">-&gt;</span>left<span class="Delimiter">-&gt;</span>atom &amp;&amp; r<span class="Delimiter">.</span>type<span class="Delimiter">-&gt;</span>left<span class="Delimiter">-&gt;</span>name == <span class="Constant">&quot;recipe&quot;</span><span class="Delimiter">;</span>
-<span id="L284" class="LineNr">284 </span><span class="Delimiter">}</span>
-<span id="L285" class="LineNr">285 </span>
-<span id="L286" class="LineNr">286 </span><span class="Delimiter">:(scenario copy_typecheck_recipe_variable)</span>
-<span id="L287" class="LineNr">287 </span><span class="Special">% Hide_errors = true;</span>
-<span id="L288" class="LineNr">288 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
-<span id="L289" class="LineNr">289 </span>  <span class="Constant">3</span>:num<span class="Special"> &lt;- </span>copy <span class="Constant">34</span>  <span class="Comment"># abc def</span>
-<span id="L290" class="LineNr">290 </span>  <span class="Delimiter">{</span><span class="Constant">1</span>: <span class="Delimiter">(</span><a href='010vm.cc.html#L19'>recipe</a> number<span class="muRecipe"> -&gt; </span>number<span class="Delimiter">)}</span><span class="Special"> &lt;- </span>copy f  <span class="Comment"># store literal in a matching variable</span>
-<span id="L291" class="LineNr">291 </span>  <span class="Delimiter">{</span><span class="Constant">2</span>: <span class="Delimiter">(</span><a href='010vm.cc.html#L19'>recipe</a> boolean<span class="muRecipe"> -&gt; </span>boolean<span class="Delimiter">)}</span><span class="Special"> &lt;- </span>copy <span class="Delimiter">{</span><span class="Constant">1</span>: <span class="Delimiter">(</span><a href='010vm.cc.html#L19'>recipe</a> number<span class="muRecipe"> -&gt; </span>number<span class="Delimiter">)}</span>  <span class="Comment"># mismatch between recipe variables</span>
-<span id="L292" class="LineNr">292 </span>]
-<span id="L293" class="LineNr">293 </span><span class="muRecipe">def</span> f x:num<span class="muRecipe"> -&gt; </span>y:num [
-<span id="L294" class="LineNr">294 </span>  local-scope
-<span id="L295" class="LineNr">295 </span>  load-ingredients
-<span id="L296" class="LineNr">296 </span>  y<span class="Special"> &lt;- </span>copy x
-<span id="L297" class="LineNr">297 </span>]
-<span id="L298" class="LineNr">298 </span><span class="traceContains">+error: <a href='000organization.cc.html#L113'>main</a>: can't copy '{1: (recipe number -&gt; number)}' to '{2: (recipe boolean -&gt; boolean)}'; types don't match</span>
-<span id="L299" class="LineNr">299 </span>
-<span id="L300" class="LineNr">300 </span><span class="Delimiter">:(scenario copy_typecheck_recipe_variable_2)</span>
-<span id="L301" class="LineNr">301 </span><span class="Special">% Hide_errors = true;</span>
-<span id="L302" class="LineNr">302 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
-<span id="L303" class="LineNr">303 </span>  <span class="Delimiter">{</span><span class="Constant">1</span>: <span class="Delimiter">(</span><a href='010vm.cc.html#L19'>recipe</a> number<span class="muRecipe"> -&gt; </span>number<span class="Delimiter">)}</span><span class="Special"> &lt;- </span>copy f  <span class="Comment"># mismatch with a recipe literal</span>
-<span id="L304" class="LineNr">304 </span>]
-<span id="L305" class="LineNr">305 </span><span class="muRecipe">def</span> f x:<span class="Normal">bool</span><span class="muRecipe"> -&gt; </span>y:<span class="Normal">bool</span> [
-<span id="L306" class="LineNr">306 </span>  local-scope
-<span id="L307" class="LineNr">307 </span>  load-ingredients
-<span id="L308" class="LineNr">308 </span>  y<span class="Special"> &lt;- </span>copy x
-<span id="L309" class="LineNr">309 </span>]
-<span id="L310" class="LineNr">310 </span><span class="traceContains">+error: <a href='000organization.cc.html#L113'>main</a>: can't copy 'f' to '{1: (recipe number -&gt; number)}'; types don't match</span>
-<span id="L311" class="LineNr">311 </span>
-<span id="L312" class="LineNr">312 </span><span class="Delimiter">:(before &quot;End Matching Types For Literal(to)&quot;)</span>
-<span id="L313" class="LineNr">313 </span><span class="Normal">if</span> <span class="Delimiter">(</span><a href='072recipe.cc.html#L277'>is_mu_recipe</a><span class="Delimiter">(</span>to<span class="Delimiter">))</span> <span class="Delimiter">{</span>
-<span id="L314" class="LineNr">314 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!contains_key<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> from<span class="Delimiter">.</span>value<span class="Delimiter">))</span> <span class="Delimiter">{</span>
-<span id="L315" class="LineNr">315 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <span class="Constant">&quot;trying to store <a href='010vm.cc.html#L19'>recipe</a> &quot;</span> &lt;&lt; from<span class="Delimiter">.</span>name &lt;&lt; <span class="Constant">&quot; into &quot;</span> &lt;&lt; <a href='028call_return.cc.html#L163'>to_string</a><span class="Delimiter">(</span>to<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot; but there's no such recipe</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; end<span class="Delimiter">();</span>
-<span id="L316" class="LineNr">316 </span>  <span class="Conceal">¦</span> <span class="Identifier">return</span> <span class="Constant">false</span><span class="Delimiter">;</span>
-<span id="L317" class="LineNr">317 </span>  <span class="Delimiter">}</span>
-<span id="L318" class="LineNr">318 </span>  <span class="Normal">const</span> recipe&amp; rrhs = get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> from<span class="Delimiter">.</span>value<span class="Delimiter">);</span>
-<span id="L319" class="LineNr">319 </span>  <span class="Normal">const</span> recipe&amp; rlhs = <a href='072recipe.cc.html#L207'>from_reagent</a><span class="Delimiter">(</span>to<span class="Delimiter">);</span>
-<span id="L320" class="LineNr">320 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">long</span> <span class="Normal">int</span> i = <span class="Constant">0</span><span class="Delimiter">;</span>  i &lt; min<span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>rlhs<span class="Delimiter">.</span>ingredients<span class="Delimiter">),</span> <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>rrhs<span class="Delimiter">.</span>ingredients<span class="Delimiter">));</span>  ++i<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L321" class="LineNr">321 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>!types_match<span class="Delimiter">(</span>rlhs<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">),</span> rrhs<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">)))</span>
-<span id="L322" class="LineNr">322 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Identifier">return</span> <span class="Constant">false</span><span class="Delimiter">;</span>
-<span id="L323" class="LineNr">323 </span>  <span class="Delimiter">}</span>
-<span id="L324" class="LineNr">324 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">long</span> <span class="Normal">int</span> i = <span class="Constant">0</span><span class="Delimiter">;</span>  i &lt; min<span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>rlhs<span class="Delimiter">.</span>products<span class="Delimiter">),</span> <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>rrhs<span class="Delimiter">.</span>products<span class="Delimiter">));</span>  ++i<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L325" class="LineNr">325 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>!types_match<span class="Delimiter">(</span>rlhs<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">),</span> rrhs<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">)))</span>
-<span id="L326" class="LineNr">326 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Identifier">return</span> <span class="Constant">false</span><span class="Delimiter">;</span>
-<span id="L327" class="LineNr">327 </span>  <span class="Delimiter">}</span>
-<span id="L328" class="LineNr">328 </span>  <span class="Identifier">return</span> <span class="Constant">true</span><span class="Delimiter">;</span>
-<span id="L329" class="LineNr">329 </span><span class="Delimiter">}</span>
-<span id="L330" class="LineNr">330 </span>
-<span id="L331" class="LineNr">331 </span><span class="Delimiter">:(scenario call_variable_compound_ingredient)</span>
-<span id="L332" class="LineNr">332 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
-<span id="L333" class="LineNr">333 </span>  <span class="Delimiter">{</span><span class="Constant">1</span>: <span class="Delimiter">(</span><a href='010vm.cc.html#L19'>recipe</a> <span class="Delimiter">(</span><a href='043space.cc.html#L82'>address</a> number<span class="Delimiter">)</span><span class="muRecipe"> -&gt; </span>number<span class="Delimiter">)}</span><span class="Special"> &lt;- </span>copy f
-<span id="L334" class="LineNr">334 </span>  <span class="Constant">2</span>:&amp;:num<span class="Special"> &lt;- </span>copy <span class="Constant">0</span>
-<span id="L335" class="LineNr">335 </span>  <span class="Constant">3</span>:num<span class="Special"> &lt;- </span>call <span class="Delimiter">{</span><span class="Constant">1</span>: <span class="Delimiter">(</span><a href='010vm.cc.html#L19'>recipe</a> <span class="Delimiter">(</span><a href='043space.cc.html#L82'>address</a> number<span class="Delimiter">)</span><span class="muRecipe"> -&gt; </span>number<span class="Delimiter">)},</span> <span class="Constant">2</span>:&amp;:num
-<span id="L336" class="LineNr">336 </span>]
-<span id="L337" class="LineNr">337 </span><span class="muRecipe">def</span> f x:&amp;:num<span class="muRecipe"> -&gt; </span>y:num [
-<span id="L338" class="LineNr">338 </span>  local-scope
-<span id="L339" class="LineNr">339 </span>  load-ingredients
-<span id="L340" class="LineNr">340 </span>  y<span class="Special"> &lt;- </span>copy x
-<span id="L341" class="LineNr">341 </span>]
-<span id="L342" class="LineNr">342 </span>$error: <span class="Constant">0</span>
-<span id="L343" class="LineNr">343 </span>
-<span id="L344" class="LineNr">344 </span><span class="Comment">//: make sure we don't accidentally break on a recipe literal</span>
-<span id="L345" class="LineNr">345 </span><span class="Delimiter">:(scenario jump_forbidden_on_recipe_literals)</span>
-<span id="L346" class="LineNr">346 </span><span class="Special">% Hide_errors = true;</span>
-<span id="L347" class="LineNr">347 </span><span class="muRecipe">def</span> foo [
-<span id="L348" class="LineNr">348 </span>  local-scope
-<span id="L349" class="LineNr">349 </span>]
-<span id="L350" class="LineNr">350 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
-<span id="L351" class="LineNr">351 </span>  local-scope
-<span id="L352" class="LineNr">352 </span>  <span class="Delimiter">{</span>
-<span id="L353" class="LineNr">353 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span>-<span class="Normal">if</span> foo
-<span id="L354" class="LineNr">354 </span>  <span class="Delimiter">}</span>
-<span id="L355" class="LineNr">355 </span>]
-<span id="L356" class="LineNr">356 </span><span class="Comment"># error should be as if foo is not a recipe</span>
-<span id="L357" class="LineNr">357 </span><span class="traceContains">+error: <a href='000organization.cc.html#L113'>main</a>: missing type for 'foo' in 'break-if foo'</span>
-<span id="L358" class="LineNr">358 </span>
-<span id="L359" class="LineNr">359 </span><span class="Delimiter">:(before &quot;End JUMP_IF Checks&quot;)</span>
-<span id="L360" class="LineNr">360 </span><a href='072recipe.cc.html#L364'>check_for_recipe_literals</a><span class="Delimiter">(</span>inst<span class="Delimiter">,</span> get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">));</span>
-<span id="L361" class="LineNr">361 </span><span class="Delimiter">:(before &quot;End JUMP_UNLESS Checks&quot;)</span>
-<span id="L362" class="LineNr">362 </span><a href='072recipe.cc.html#L364'>check_for_recipe_literals</a><span class="Delimiter">(</span>inst<span class="Delimiter">,</span> get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">));</span>
-<span id="L363" class="LineNr">363 </span><span class="Delimiter">:(code)</span>
-<span id="L364" class="LineNr">364 </span><span class="Normal">void</span> <a href='072recipe.cc.html#L364'>check_for_recipe_literals</a><span class="Delimiter">(</span><span class="Normal">const</span> instruction&amp; inst<span class="Delimiter">,</span> <span class="Normal">const</span> recipe&amp; caller<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L365" class="LineNr">365 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> i = <span class="Constant">0</span><span class="Delimiter">;</span>  i &lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">);</span>  ++i<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L366" class="LineNr">366 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span><a href='072recipe.cc.html#L277'>is_mu_recipe</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">)))</span> <span class="Delimiter">{</span>
-<span id="L367" class="LineNr">367 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>caller<span class="Delimiter">.</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;missing type for '&quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">).</span>original_string &lt;&lt; <span class="Constant">&quot;' in '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
-<span id="L368" class="LineNr">368 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>is_present_in_ingredients<span class="Delimiter">(</span>caller<span class="Delimiter">,</span> inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">).</span>name<span class="Delimiter">))</span>
-<span id="L369" class="LineNr">369 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <span class="Constant">&quot;  did you forget 'load-ingredients'?</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
-<span id="L370" class="LineNr">370 </span>  <span class="Conceal">¦</span> <span class="Delimiter">}</span>
-<span id="L371" class="LineNr">371 </span>  <span class="Delimiter">}</span>
-<span id="L372" class="LineNr">372 </span><span class="Delimiter">}</span>
-<span id="L373" class="LineNr">373 </span>
-<span id="L374" class="LineNr">374 </span><span class="Delimiter">:(scenario load_ingredients_missing_error_3)</span>
-<span id="L375" class="LineNr">375 </span><span class="Special">% Hide_errors = true;</span>
-<span id="L376" class="LineNr">376 </span><span class="muRecipe">def</span> foo <span class="Delimiter">{</span>f: <span class="Delimiter">(</span><a href='010vm.cc.html#L19'>recipe</a> num<span class="muRecipe"> -&gt; </span>num<span class="Delimiter">)}</span> [
-<span id="L377" class="LineNr">377 </span>  local-scope
-<span id="L378" class="LineNr">378 </span>  <span class="Normal">b</span>:num<span class="Special"> &lt;- </span>call f<span class="Delimiter">,</span> <span class="Constant">1</span>
-<span id="L379" class="LineNr">379 </span>]
-<span id="L380" class="LineNr">380 </span><span class="traceContains">+error: foo: missing type for 'f' in 'b:num &lt;- call f, 1'</span>
-<span id="L381" class="LineNr">381 </span><span class="traceContains">+error:   did you forget 'load-ingredients'?</span>
-<span id="L382" class="LineNr">382 </span>
-<span id="L383" class="LineNr">383 </span><span class="Delimiter">:(before &quot;End Mu Types Initialization&quot;)</span>
-<span id="L384" class="LineNr">384 </span><a href='001help.cc.html#L221'>put</a><span class="Delimiter">(</span>Type_abbreviations<span class="Delimiter">,</span> <span class="Constant">&quot;function&quot;</span><span class="Delimiter">,</span> <a href='018type_abbreviations.cc.html#L58'>new_type_tree</a><span class="Delimiter">(</span><span class="Constant">&quot;recipe&quot;</span><span class="Delimiter">));</span>
-<span id="L385" class="LineNr">385 </span>
-<span id="L386" class="LineNr">386 </span><span class="Delimiter">:(scenario call_function)</span>
-<span id="L387" class="LineNr">387 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
-<span id="L388" class="LineNr">388 </span>  <span class="Delimiter">{</span><span class="Constant">1</span>: <span class="Delimiter">(</span>function number<span class="muRecipe"> -&gt; </span>number<span class="Delimiter">)}</span><span class="Special"> &lt;- </span>copy f
-<span id="L389" class="LineNr">389 </span>  <span class="Constant">2</span>:num<span class="Special"> &lt;- </span>call <span class="Delimiter">{</span><span class="Constant">1</span>: <span class="Delimiter">(</span>function number<span class="muRecipe"> -&gt; </span>number<span class="Delimiter">)},</span> <span class="Constant">34</span>
-<span id="L390" class="LineNr">390 </span>]
-<span id="L391" class="LineNr">391 </span><span class="muRecipe">def</span> f x:num<span class="muRecipe"> -&gt; </span>y:num [
-<span id="L392" class="LineNr">392 </span>  local-scope
-<span id="L393" class="LineNr">393 </span>  load-ingredients
-<span id="L394" class="LineNr">394 </span>  y<span class="Special"> &lt;- </span>copy x
-<span id="L395" class="LineNr">395 </span>]
-<span id="L396" class="LineNr">396 </span><span class="traceContains">+mem: storing 34 in location 2</span>
+<span id="L207" class="LineNr">207 </span><span class="Delimiter">:(before &quot;End resolve_ambiguous_call(r, index, inst, caller_recipe) Special-cases&quot;)</span>
+<span id="L208" class="LineNr">208 </span><span class="Normal">if</span> <span class="Delimiter">(</span>inst<span class="Delimiter">.</span>name == <span class="Constant">&quot;call&quot;</span> &amp;&amp; <a href='072recipe.cc.html#L213'>first_ingredient_is_recipe_literal</a><span class="Delimiter">(</span>inst<span class="Delimiter">))</span> <span class="Delimiter">{</span>
+<span id="L209" class="LineNr">209 </span>  <a href='072recipe.cc.html#L218'>resolve_indirect_ambiguous_call</a><span class="Delimiter">(</span>r<span class="Delimiter">,</span> index<span class="Delimiter">,</span> inst<span class="Delimiter">,</span> caller_recipe<span class="Delimiter">);</span>
+<span id="L210" class="LineNr">210 </span>  <span class="Identifier">return</span><span class="Delimiter">;</span>
+<span id="L211" class="LineNr">211 </span><span class="Delimiter">}</span>
+<span id="L212" class="LineNr">212 </span><span class="Delimiter">:(code)</span>
+<span id="L213" class="LineNr">213 </span><span class="Normal">bool</span> <a href='072recipe.cc.html#L213'>first_ingredient_is_recipe_literal</a><span class="Delimiter">(</span><span class="Normal">const</span> instruction&amp; inst<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L214" class="LineNr">214 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>empty<span class="Delimiter">())</span> <span class="Identifier">return</span> <span class="Constant">false</span><span class="Delimiter">;</span>
+<span id="L215" class="LineNr">215 </span>  <span class="Normal">const</span> reagent&amp; ingredient = inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">);</span>
+<span id="L216" class="LineNr">216 </span>  <span class="Identifier">return</span> ingredient<span class="Delimiter">.</span>type &amp;&amp; ingredient<span class="Delimiter">.</span>type<span class="Delimiter">-&gt;</span>atom &amp;&amp; ingredient<span class="Delimiter">.</span>type<span class="Delimiter">-&gt;</span>name == <span class="Constant">&quot;recipe-literal&quot;</span><span class="Delimiter">;</span>
+<span id="L217" class="LineNr">217 </span><span class="Delimiter">}</span>
+<span id="L218" class="LineNr">218 </span><span class="Normal">void</span> <a href='072recipe.cc.html#L218'>resolve_indirect_ambiguous_call</a><span class="Delimiter">(</span><span class="Normal">const</span> <a href='010vm.cc.html#L14'>recipe_ordinal</a> r<span class="Delimiter">,</span> <span class="Normal">int</span> index<span class="Delimiter">,</span> instruction&amp; inst<span class="Delimiter">,</span> <span class="Normal">const</span> recipe&amp; caller_recipe<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L219" class="LineNr">219 </span>  <a href='010vm.cc.html#L32'>instruction</a> inst2<span class="Delimiter">;</span>
+<span id="L220" class="LineNr">220 </span>  inst2<span class="Delimiter">.</span>name = inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>name<span class="Delimiter">;</span>
+<span id="L221" class="LineNr">221 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> i = <span class="Comment">/*</span><span class="Comment">skip <a href='010vm.cc.html#L19'>recipe</a></span><span class="Comment">*/</span><span class="Constant">1</span><span class="Delimiter">;</span>  i &lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">);</span>  ++i<span class="Delimiter">)</span>
+<span id="L222" class="LineNr">222 </span>  <span class="Conceal">¦</span> inst2<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>push_back<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">));</span>
+<span id="L223" class="LineNr">223 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> i = <span class="Constant">0</span><span class="Delimiter">;</span>  i &lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>products<span class="Delimiter">);</span>  ++i<span class="Delimiter">)</span>
+<span id="L224" class="LineNr">224 </span>  <span class="Conceal">¦</span> inst2<span class="Delimiter">.</span>products<span class="Delimiter">.</span>push_back<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">));</span>
+<span id="L225" class="LineNr">225 </span>  <a href='054static_dispatch.cc.html#L173'>resolve_ambiguous_call</a><span class="Delimiter">(</span>r<span class="Delimiter">,</span> index<span class="Delimiter">,</span> inst2<span class="Delimiter">,</span> caller_recipe<span class="Delimiter">);</span>
+<span id="L226" class="LineNr">226 </span>  inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>name = inst2<span class="Delimiter">.</span>name<span class="Delimiter">;</span>
+<span id="L227" class="LineNr">227 </span>  inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span><a href='010vm.cc.html#L65'>set_value</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe_ordinal<span class="Delimiter">,</span> inst2<span class="Delimiter">.</span>name<span class="Delimiter">));</span>
+<span id="L228" class="LineNr">228 </span><span class="Delimiter">}</span>
+<span id="L229" class="LineNr">229 </span>
+<span id="L230" class="LineNr">230 </span><span class="Delimiter">:(after &quot;Transform.push_back(check_instruction)&quot;)</span>
+<span id="L231" class="LineNr">231 </span>Transform<span class="Delimiter">.</span>push_back<span class="Delimiter">(</span><a href='072recipe.cc.html#L233'>check_indirect_calls_against_header</a><span class="Delimiter">);</span>  <span class="Comment">// idempotent</span>
+<span id="L232" class="LineNr">232 </span><span class="Delimiter">:(code)</span>
+<span id="L233" class="LineNr">233 </span><span class="Normal">void</span> <a href='072recipe.cc.html#L233'>check_indirect_calls_against_header</a><span class="Delimiter">(</span><span class="Normal">const</span> <a href='010vm.cc.html#L14'>recipe_ordinal</a> r<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L234" class="LineNr">234 </span>  <a href='003trace.cc.html#L167'>trace</a><span class="Delimiter">(</span><span class="Constant">9991</span><span class="Delimiter">,</span> <span class="Constant">&quot;transform&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;--- type-check 'call' instructions inside <a href='010vm.cc.html#L19'>recipe</a> &quot;</span> &lt;&lt; get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
+<span id="L235" class="LineNr">235 </span>  <span class="Normal">const</span> recipe&amp; caller = get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">);</span>
+<span id="L236" class="LineNr">236 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> i = <span class="Constant">0</span><span class="Delimiter">;</span>  i &lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>caller<span class="Delimiter">.</span>steps<span class="Delimiter">);</span>  ++i<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L237" class="LineNr">237 </span>  <span class="Conceal">¦</span> <span class="Normal">const</span> instruction&amp; inst = caller<span class="Delimiter">.</span>steps<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">);</span>
+<span id="L238" class="LineNr">238 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>!is_indirect_call<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>operation<span class="Delimiter">))</span> <span class="Identifier">continue</span><span class="Delimiter">;</span>
+<span id="L239" class="LineNr">239 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>empty<span class="Delimiter">())</span> <span class="Identifier">continue</span><span class="Delimiter">;</span>  <span class="Comment">// error raised above</span>
+<span id="L240" class="LineNr">240 </span>  <span class="Conceal">¦</span> <span class="Normal">const</span> reagent&amp; callee = inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">);</span>
+<span id="L241" class="LineNr">241 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>!is_mu_recipe<span class="Delimiter">(</span>callee<span class="Delimiter">))</span> <span class="Identifier">continue</span><span class="Delimiter">;</span>  <span class="Comment">// error raised above</span>
+<span id="L242" class="LineNr">242 </span>  <span class="Conceal">¦</span> <span class="Normal">const</span> <a href='010vm.cc.html#L19'>recipe</a> callee_header = is_literal<span class="Delimiter">(</span>callee<span class="Delimiter">)</span> ? get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> callee<span class="Delimiter">.</span>value<span class="Delimiter">)</span> : <a href='072recipe.cc.html#L275'>from_reagent</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">));</span>
+<span id="L243" class="LineNr">243 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>!callee_header<span class="Delimiter">.</span>has_header<span class="Delimiter">)</span> <span class="Identifier">continue</span><span class="Delimiter">;</span>
+<span id="L244" class="LineNr">244 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span><a href='072recipe.cc.html#L264'>is_indirect_call_with_ingredients</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>operation<span class="Delimiter">))</span> <span class="Delimiter">{</span>
+<span id="L245" class="LineNr">245 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">long</span> <span class="Normal">int</span> i = <span class="Comment">/*</span><span class="Comment">skip callee</span><span class="Comment">*/</span><span class="Constant">1</span><span class="Delimiter">;</span>  i &lt; min<span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">),</span> <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>callee_header<span class="Delimiter">.</span>ingredients<span class="Delimiter">)</span>+<span class="Comment">/*</span><span class="Comment">skip callee</span><span class="Comment">*/</span><span class="Constant">1</span><span class="Delimiter">);</span>  ++i<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L246" class="LineNr">246 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>!types_coercible<span class="Delimiter">(</span>callee_header<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i-<span class="Comment">/*</span><span class="Comment">skip callee</span><span class="Comment">*/</span><span class="Constant">1</span><span class="Delimiter">),</span> inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">)))</span>
+<span id="L247" class="LineNr">247 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>caller<span class="Delimiter">.</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;ingredient &quot;</span> &lt;&lt; i-<span class="Comment">/*</span><span class="Comment">skip callee</span><span class="Comment">*/</span><span class="Constant">1</span> &lt;&lt; <span class="Constant">&quot; has the wrong type at '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
+<span id="L248" class="LineNr">248 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Delimiter">}</span>
+<span id="L249" class="LineNr">249 </span>  <span class="Conceal">¦</span> <span class="Delimiter">}</span>
+<span id="L250" class="LineNr">250 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span><a href='072recipe.cc.html#L269'>is_indirect_call_with_products</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>operation<span class="Delimiter">))</span> <span class="Delimiter">{</span>
+<span id="L251" class="LineNr">251 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">long</span> <span class="Normal">int</span> i = <span class="Constant">0</span><span class="Delimiter">;</span>  i &lt; min<span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>products<span class="Delimiter">),</span> <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>callee_header<span class="Delimiter">.</span>products<span class="Delimiter">));</span>  ++i<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L252" class="LineNr">252 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>is_dummy<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">)))</span> <span class="Identifier">continue</span><span class="Delimiter">;</span>
+<span id="L253" class="LineNr">253 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>!types_coercible<span class="Delimiter">(</span>callee_header<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">),</span> inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">)))</span>
+<span id="L254" class="LineNr">254 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>caller<span class="Delimiter">.</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;product &quot;</span> &lt;&lt; i &lt;&lt; <span class="Constant">&quot; has the wrong type at '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
+<span id="L255" class="LineNr">255 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Delimiter">}</span>
+<span id="L256" class="LineNr">256 </span>  <span class="Conceal">¦</span> <span class="Delimiter">}</span>
+<span id="L257" class="LineNr">257 </span>  <span class="Delimiter">}</span>
+<span id="L258" class="LineNr">258 </span><span class="Delimiter">}</span>
+<span id="L259" class="LineNr">259 </span>
+<span id="L260" class="LineNr">260 </span><span class="Normal">bool</span> <a href='072recipe.cc.html#L260'>is_indirect_call</a><span class="Delimiter">(</span><span class="Normal">const</span> <a href='010vm.cc.html#L14'>recipe_ordinal</a> r<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L261" class="LineNr">261 </span>  <span class="Identifier">return</span> <a href='072recipe.cc.html#L264'>is_indirect_call_with_ingredients</a><span class="Delimiter">(</span>r<span class="Delimiter">)</span> || <a href='072recipe.cc.html#L269'>is_indirect_call_with_products</a><span class="Delimiter">(</span>r<span class="Delimiter">);</span>
+<span id="L262" class="LineNr">262 </span><span class="Delimiter">}</span>
+<span id="L263" class="LineNr">263 </span>
+<span id="L264" class="LineNr">264 </span><span class="Normal">bool</span> <a href='072recipe.cc.html#L264'>is_indirect_call_with_ingredients</a><span class="Delimiter">(</span><span class="Normal">const</span> <a href='010vm.cc.html#L14'>recipe_ordinal</a> r<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L265" class="LineNr">265 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>r == CALL<span class="Delimiter">)</span> <span class="Identifier">return</span> <span class="Constant">true</span><span class="Delimiter">;</span>
+<span id="L266" class="LineNr">266 </span>  <span class="Comment">// End is_indirect_call_with_ingredients Special-cases</span>
+<span id="L267" class="LineNr">267 </span>  <span class="Identifier">return</span> <span class="Constant">false</span><span class="Delimiter">;</span>
+<span id="L268" class="LineNr">268 </span><span class="Delimiter">}</span>
+<span id="L269" class="LineNr">269 </span><span class="Normal">bool</span> <a href='072recipe.cc.html#L269'>is_indirect_call_with_products</a><span class="Delimiter">(</span><span class="Normal">const</span> <a href='010vm.cc.html#L14'>recipe_ordinal</a> r<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L270" class="LineNr">270 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>r == CALL<span class="Delimiter">)</span> <span class="Identifier">return</span> <span class="Constant">true</span><span class="Delimiter">;</span>
+<span id="L271" class="LineNr">271 </span>  <span class="Comment">// End is_indirect_call_with_products Special-cases</span>
+<span id="L272" class="LineNr">272 </span>  <span class="Identifier">return</span> <span class="Constant">false</span><span class="Delimiter">;</span>
+<span id="L273" class="LineNr">273 </span><span class="Delimiter">}</span>
+<span id="L274" class="LineNr">274 </span>
+<span id="L275" class="LineNr">275 </span><span class="muRecipe"><a href='010vm.cc.html#L19'>recipe</a></span> <a href='072recipe.cc.html#L275'>from_reagent</a><span class="Delimiter">(</span><span class="Normal">const</span> reagent&amp; r<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L276" class="LineNr">276 </span>  assert<span class="Delimiter">(</span>r<span class="Delimiter">.</span>type<span class="Delimiter">);</span>
+<span id="L277" class="LineNr">277 </span>  <a href='010vm.cc.html#L19'>recipe</a> result_header<span class="Delimiter">;</span>  <span class="Comment">// will contain only ingredients and products, nothing else</span>
+<span id="L278" class="LineNr">278 </span>  result_header<span class="Delimiter">.</span>has_header = <span class="Constant">true</span><span class="Delimiter">;</span>
+<span id="L279" class="LineNr">279 </span>  <span class="Comment">// Begin Reagent-&gt;Recipe(r, recipe_header)</span>
+<span id="L280" class="LineNr">280 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>r<span class="Delimiter">.</span>type<span class="Delimiter">-&gt;</span>atom<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L281" class="LineNr">281 </span>  <span class="Conceal">¦</span> assert<span class="Delimiter">(</span>r<span class="Delimiter">.</span>type<span class="Delimiter">-&gt;</span>name == <span class="Constant">&quot;recipe&quot;</span><span class="Delimiter">);</span>
+<span id="L282" class="LineNr">282 </span>  <span class="Conceal">¦</span> <span class="Identifier">return</span> result_header<span class="Delimiter">;</span>
+<span id="L283" class="LineNr">283 </span>  <span class="Delimiter">}</span>
+<span id="L284" class="LineNr">284 </span>  <span class="Normal">const</span> type_tree* root_type = r<span class="Delimiter">.</span>type<span class="Delimiter">-&gt;</span>atom ? r<span class="Delimiter">.</span>type : r<span class="Delimiter">.</span>type<span class="Delimiter">-&gt;</span>left<span class="Delimiter">;</span>
+<span id="L285" class="LineNr">285 </span>  assert<span class="Delimiter">(</span>root_type<span class="Delimiter">-&gt;</span>atom<span class="Delimiter">);</span>
+<span id="L286" class="LineNr">286 </span>  assert<span class="Delimiter">(</span>root_type<span class="Delimiter">-&gt;</span>name == <span class="Constant">&quot;recipe&quot;</span><span class="Delimiter">);</span>
+<span id="L287" class="LineNr">287 </span>  <span class="Normal">const</span> type_tree* curr = r<span class="Delimiter">.</span>type<span class="Delimiter">-&gt;</span>right<span class="Delimiter">;</span>
+<span id="L288" class="LineNr">288 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Comment">/*</span><span class="Comment">nada</span><span class="Comment">*/</span><span class="Delimiter">;</span>  curr &amp;&amp; !curr<span class="Delimiter">-&gt;</span>atom<span class="Delimiter">;</span>  curr = curr<span class="Delimiter">-&gt;</span>right<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L289" class="LineNr">289 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>curr<span class="Delimiter">-&gt;</span>left<span class="Delimiter">-&gt;</span>atom &amp;&amp; curr<span class="Delimiter">-&gt;</span>left<span class="Delimiter">-&gt;</span>name == <span class="Constant">&quot;-&gt;&quot;</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L290" class="LineNr">290 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> curr = curr<span class="Delimiter">-&gt;</span>right<span class="Delimiter">;</span>  <span class="Comment">// skip delimiter</span>
+<span id="L291" class="LineNr">291 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Identifier">goto</span> read_products<span class="Delimiter">;</span>
+<span id="L292" class="LineNr">292 </span>  <span class="Conceal">¦</span> <span class="Delimiter">}</span>
+<span id="L293" class="LineNr">293 </span>  <span class="Conceal">¦</span> result_header<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>push_back<span class="Delimiter">(</span><a href='072recipe.cc.html#L337'>next_recipe_reagent</a><span class="Delimiter">(</span>curr<span class="Delimiter">-&gt;</span>left<span class="Delimiter">));</span>
+<span id="L294" class="LineNr">294 </span>  <span class="Delimiter">}</span>
+<span id="L295" class="LineNr">295 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>curr<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L296" class="LineNr">296 </span>  <span class="Conceal">¦</span> assert<span class="Delimiter">(</span>curr<span class="Delimiter">-&gt;</span>atom<span class="Delimiter">);</span>
+<span id="L297" class="LineNr">297 </span>  <span class="Conceal">¦</span> result_header<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>push_back<span class="Delimiter">(</span><a href='072recipe.cc.html#L337'>next_recipe_reagent</a><span class="Delimiter">(</span>curr<span class="Delimiter">));</span>
+<span id="L298" class="LineNr">298 </span>  <span class="Conceal">¦</span> <span class="Identifier">return</span> result_header<span class="Delimiter">;</span>  <span class="Comment">// no products</span>
+<span id="L299" class="LineNr">299 </span>  <span class="Delimiter">}</span>
+<span id="L300" class="LineNr">300 </span>  <span class="Normal">read_products</span>:
+<span id="L301" class="LineNr">301 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Comment">/*</span><span class="Comment">nada</span><span class="Comment">*/</span><span class="Delimiter">;</span>  curr &amp;&amp; !curr<span class="Delimiter">-&gt;</span>atom<span class="Delimiter">;</span>  curr = curr<span class="Delimiter">-&gt;</span>right<span class="Delimiter">)</span>
+<span id="L302" class="LineNr">302 </span>  <span class="Conceal">¦</span> result_header<span class="Delimiter">.</span>products<span class="Delimiter">.</span>push_back<span class="Delimiter">(</span><a href='072recipe.cc.html#L337'>next_recipe_reagent</a><span class="Delimiter">(</span>curr<span class="Delimiter">-&gt;</span>left<span class="Delimiter">));</span>
+<span id="L303" class="LineNr">303 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>curr<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L304" class="LineNr">304 </span>  <span class="Conceal">¦</span> assert<span class="Delimiter">(</span>curr<span class="Delimiter">-&gt;</span>atom<span class="Delimiter">);</span>
+<span id="L305" class="LineNr">305 </span>  <span class="Conceal">¦</span> result_header<span class="Delimiter">.</span>products<span class="Delimiter">.</span>push_back<span class="Delimiter">(</span><a href='072recipe.cc.html#L337'>next_recipe_reagent</a><span class="Delimiter">(</span>curr<span class="Delimiter">));</span>
+<span id="L306" class="LineNr">306 </span>  <span class="Delimiter">}</span>
+<span id="L307" class="LineNr">307 </span>  <span class="Identifier">return</span> result_header<span class="Delimiter">;</span>
+<span id="L308" class="LineNr">308 </span><span class="Delimiter">}</span>
+<span id="L309" class="LineNr">309 </span>
+<span id="L310" class="LineNr">310 </span><span class="Delimiter">:(before &quot;End Unit Tests&quot;)</span>
+<span id="L311" class="LineNr">311 </span><span class="Normal">void</span> <a href='072recipe.cc.html#L311'>test_from_reagent_atomic</a><span class="Delimiter">()</span> <span class="Delimiter">{</span>
+<span id="L312" class="LineNr">312 </span>  reagent a<span class="Delimiter">(</span><span class="Constant">&quot;{f: recipe}&quot;</span><span class="Delimiter">);</span>
+<span id="L313" class="LineNr">313 </span>  <a href='010vm.cc.html#L19'>recipe</a> r_header = <a href='072recipe.cc.html#L275'>from_reagent</a><span class="Delimiter">(</span>a<span class="Delimiter">);</span>
+<span id="L314" class="LineNr">314 </span>  <a href='002test.cc.html#L24'>CHECK</a><span class="Delimiter">(</span>r_header<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>empty<span class="Delimiter">());</span>
+<span id="L315" class="LineNr">315 </span>  <a href='002test.cc.html#L24'>CHECK</a><span class="Delimiter">(</span>r_header<span class="Delimiter">.</span>products<span class="Delimiter">.</span>empty<span class="Delimiter">());</span>
+<span id="L316" class="LineNr">316 </span><span class="Delimiter">}</span>
+<span id="L317" class="LineNr">317 </span><span class="Normal">void</span> <a href='072recipe.cc.html#L317'>test_from_reagent_non_atomic</a><span class="Delimiter">()</span> <span class="Delimiter">{</span>
+<span id="L318" class="LineNr">318 </span>  reagent a<span class="Delimiter">(</span><span class="Constant">&quot;{f: (recipe number -&gt; number)}&quot;</span><span class="Delimiter">);</span>
+<span id="L319" class="LineNr">319 </span>  <a href='010vm.cc.html#L19'>recipe</a> r_header = <a href='072recipe.cc.html#L275'>from_reagent</a><span class="Delimiter">(</span>a<span class="Delimiter">);</span>
+<span id="L320" class="LineNr">320 </span>  <a href='002test.cc.html#L31'>CHECK_EQ</a><span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>r_header<span class="Delimiter">.</span>ingredients<span class="Delimiter">),</span> <span class="Constant">1</span><span class="Delimiter">);</span>
+<span id="L321" class="LineNr">321 </span>  <a href='002test.cc.html#L31'>CHECK_EQ</a><span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>r_header<span class="Delimiter">.</span>products<span class="Delimiter">),</span> <span class="Constant">1</span><span class="Delimiter">);</span>
+<span id="L322" class="LineNr">322 </span><span class="Delimiter">}</span>
+<span id="L323" class="LineNr">323 </span><span class="Normal">void</span> <a href='072recipe.cc.html#L323'>test_from_reagent_reads_ingredient_at_end</a><span class="Delimiter">()</span> <span class="Delimiter">{</span>
+<span id="L324" class="LineNr">324 </span>  reagent a<span class="Delimiter">(</span><span class="Constant">&quot;{f: (recipe number number)}&quot;</span><span class="Delimiter">);</span>
+<span id="L325" class="LineNr">325 </span>  <a href='010vm.cc.html#L19'>recipe</a> r_header = <a href='072recipe.cc.html#L275'>from_reagent</a><span class="Delimiter">(</span>a<span class="Delimiter">);</span>
+<span id="L326" class="LineNr">326 </span>  <a href='002test.cc.html#L31'>CHECK_EQ</a><span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>r_header<span class="Delimiter">.</span>ingredients<span class="Delimiter">),</span> <span class="Constant">2</span><span class="Delimiter">);</span>
+<span id="L327" class="LineNr">327 </span>  <a href='002test.cc.html#L24'>CHECK</a><span class="Delimiter">(</span>r_header<span class="Delimiter">.</span>products<span class="Delimiter">.</span>empty<span class="Delimiter">());</span>
+<span id="L328" class="LineNr">328 </span><span class="Delimiter">}</span>
+<span id="L329" class="LineNr">329 </span><span class="Normal">void</span> <a href='072recipe.cc.html#L329'>test_from_reagent_reads_sole_ingredient_at_end</a><span class="Delimiter">()</span> <span class="Delimiter">{</span>
+<span id="L330" class="LineNr">330 </span>  reagent a<span class="Delimiter">(</span><span class="Constant">&quot;{f: (recipe number)}&quot;</span><span class="Delimiter">);</span>
+<span id="L331" class="LineNr">331 </span>  <a href='010vm.cc.html#L19'>recipe</a> r_header = <a href='072recipe.cc.html#L275'>from_reagent</a><span class="Delimiter">(</span>a<span class="Delimiter">);</span>
+<span id="L332" class="LineNr">332 </span>  <a href='002test.cc.html#L31'>CHECK_EQ</a><span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>r_header<span class="Delimiter">.</span>ingredients<span class="Delimiter">),</span> <span class="Constant">1</span><span class="Delimiter">);</span>
+<span id="L333" class="LineNr">333 </span>  <a href='002test.cc.html#L24'>CHECK</a><span class="Delimiter">(</span>r_header<span class="Delimiter">.</span>products<span class="Delimiter">.</span>empty<span class="Delimiter">());</span>
+<span id="L334" class="LineNr">334 </span><span class="Delimiter">}</span>
+<span id="L335" class="LineNr">335 </span>
+<span id="L336" class="LineNr">336 </span><span class="Delimiter">:(code)</span>
+<span id="L337" class="LineNr">337 </span>reagent <a href='072recipe.cc.html#L337'>next_recipe_reagent</a><span class="Delimiter">(</span><span class="Normal">const</span> type_tree* curr<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L338" class="LineNr">338 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!curr<span class="Delimiter">-&gt;</span>left<span class="Delimiter">)</span> <span class="Identifier">return</span> reagent<span class="Delimiter">(</span><span class="Constant">&quot;recipe:&quot;</span>+curr<span class="Delimiter">-&gt;</span>name<span class="Delimiter">);</span>
+<span id="L339" class="LineNr">339 </span>  reagent result<span class="Delimiter">;</span>
+<span id="L340" class="LineNr">340 </span>  result<span class="Delimiter">.</span>name = <span class="Constant">&quot;recipe&quot;</span><span class="Delimiter">;</span>
+<span id="L341" class="LineNr">341 </span>  result<span class="Delimiter">.</span>type = <span class="Normal">new</span> type_tree<span class="Delimiter">(</span>*curr<span class="Delimiter">);</span>
+<span id="L342" class="LineNr">342 </span>  <span class="Identifier">return</span> result<span class="Delimiter">;</span>
+<span id="L343" class="LineNr">343 </span><span class="Delimiter">}</span>
+<span id="L344" class="LineNr">344 </span>
+<span id="L345" class="LineNr">345 </span><span class="Normal">bool</span> <a href='072recipe.cc.html#L345'>is_mu_recipe</a><span class="Delimiter">(</span><span class="Normal">const</span> reagent&amp; r<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L346" class="LineNr">346 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!r<span class="Delimiter">.</span>type<span class="Delimiter">)</span> <span class="Identifier">return</span> <span class="Constant">false</span><span class="Delimiter">;</span>
+<span id="L347" class="LineNr">347 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>r<span class="Delimiter">.</span>type<span class="Delimiter">-&gt;</span>atom<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L348" class="LineNr">348 </span>  <span class="Conceal">¦</span> <span class="Comment">// End is_mu_recipe Atom Cases(r)</span>
+<span id="L349" class="LineNr">349 </span>  <span class="Conceal">¦</span> <span class="Identifier">return</span> r<span class="Delimiter">.</span>type<span class="Delimiter">-&gt;</span>name == <span class="Constant">&quot;recipe-literal&quot;</span><span class="Delimiter">;</span>
+<span id="L350" class="LineNr">350 </span>  <span class="Delimiter">}</span>
+<span id="L351" class="LineNr">351 </span>  <span class="Identifier">return</span> r<span class="Delimiter">.</span>type<span class="Delimiter">-&gt;</span>left<span class="Delimiter">-&gt;</span>atom &amp;&amp; r<span class="Delimiter">.</span>type<span class="Delimiter">-&gt;</span>left<span class="Delimiter">-&gt;</span>name == <span class="Constant">&quot;recipe&quot;</span><span class="Delimiter">;</span>
+<span id="L352" class="LineNr">352 </span><span class="Delimiter">}</span>
+<span id="L353" class="LineNr">353 </span>
+<span id="L354" class="LineNr">354 </span><span class="Delimiter">:(scenario copy_typecheck_recipe_variable)</span>
+<span id="L355" class="LineNr">355 </span><span class="Special">% Hide_errors = true;</span>
+<span id="L356" class="LineNr">356 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
+<span id="L357" class="LineNr">357 </span>  <span class="Constant">3</span>:num<span class="Special"> &lt;- </span>copy <span class="Constant">34</span>  <span class="Comment"># abc def</span>
+<span id="L358" class="LineNr">358 </span>  <span class="Delimiter">{</span><span class="Constant">1</span>: <span class="Delimiter">(</span><a href='010vm.cc.html#L19'>recipe</a> number<span class="muRecipe"> -&gt; </span>number<span class="Delimiter">)}</span><span class="Special"> &lt;- </span>copy f  <span class="Comment"># store literal in a matching variable</span>
+<span id="L359" class="LineNr">359 </span>  <span class="Delimiter">{</span><span class="Constant">2</span>: <span class="Delimiter">(</span><a href='010vm.cc.html#L19'>recipe</a> boolean<span class="muRecipe"> -&gt; </span>boolean<span class="Delimiter">)}</span><span class="Special"> &lt;- </span>copy <span class="Delimiter">{</span><span class="Constant">1</span>: <span class="Delimiter">(</span><a href='010vm.cc.html#L19'>recipe</a> number<span class="muRecipe"> -&gt; </span>number<span class="Delimiter">)}</span>  <span class="Comment"># mismatch between recipe variables</span>
+<span id="L360" class="LineNr">360 </span>]
+<span id="L361" class="LineNr">361 </span><span class="muRecipe">def</span> f x:num<span class="muRecipe"> -&gt; </span>y:num [
+<span id="L362" class="LineNr">362 </span>  local-scope
+<span id="L363" class="LineNr">363 </span>  load-ingredients
+<span id="L364" class="LineNr">364 </span>  y<span class="Special"> &lt;- </span>copy x
+<span id="L365" class="LineNr">365 </span>]
+<span id="L366" class="LineNr">366 </span><span class="traceContains">+error: <a href='000organization.cc.html#L113'>main</a>: can't copy '{1: (recipe number -&gt; number)}' to '{2: (recipe boolean -&gt; boolean)}'; types don't match</span>
+<span id="L367" class="LineNr">367 </span>
+<span id="L368" class="LineNr">368 </span><span class="Delimiter">:(scenario copy_typecheck_recipe_variable_2)</span>
+<span id="L369" class="LineNr">369 </span><span class="Special">% Hide_errors = true;</span>
+<span id="L370" class="LineNr">370 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
+<span id="L371" class="LineNr">371 </span>  <span class="Delimiter">{</span><span class="Constant">1</span>: <span class="Delimiter">(</span><a href='010vm.cc.html#L19'>recipe</a> number<span class="muRecipe"> -&gt; </span>number<span class="Delimiter">)}</span><span class="Special"> &lt;- </span>copy f  <span class="Comment"># mismatch with a recipe literal</span>
+<span id="L372" class="LineNr">372 </span>]
+<span id="L373" class="LineNr">373 </span><span class="muRecipe">def</span> f x:<span class="Normal">bool</span><span class="muRecipe"> -&gt; </span>y:<span class="Normal">bool</span> [
+<span id="L374" class="LineNr">374 </span>  local-scope
+<span id="L375" class="LineNr">375 </span>  load-ingredients
+<span id="L376" class="LineNr">376 </span>  y<span class="Special"> &lt;- </span>copy x
+<span id="L377" class="LineNr">377 </span>]
+<span id="L378" class="LineNr">378 </span><span class="traceContains">+error: <a href='000organization.cc.html#L113'>main</a>: can't copy 'f' to '{1: (recipe number -&gt; number)}'; types don't match</span>
+<span id="L379" class="LineNr">379 </span>
+<span id="L380" class="LineNr">380 </span><span class="Delimiter">:(before &quot;End Matching Types For Literal(to)&quot;)</span>
+<span id="L381" class="LineNr">381 </span><span class="Normal">if</span> <span class="Delimiter">(</span><a href='072recipe.cc.html#L345'>is_mu_recipe</a><span class="Delimiter">(</span>to<span class="Delimiter">))</span> <span class="Delimiter">{</span>
+<span id="L382" class="LineNr">382 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!contains_key<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> from<span class="Delimiter">.</span>value<span class="Delimiter">))</span> <span class="Delimiter">{</span>
+<span id="L383" class="LineNr">383 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <span class="Constant">&quot;trying to store <a href='010vm.cc.html#L19'>recipe</a> &quot;</span> &lt;&lt; from<span class="Delimiter">.</span>name &lt;&lt; <span class="Constant">&quot; into &quot;</span> &lt;&lt; <a href='028call_return.cc.html#L163'>to_string</a><span class="Delimiter">(</span>to<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot; but there's no such recipe</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; end<span class="Delimiter">();</span>
+<span id="L384" class="LineNr">384 </span>  <span class="Conceal">¦</span> <span class="Identifier">return</span> <span class="Constant">false</span><span class="Delimiter">;</span>
+<span id="L385" class="LineNr">385 </span>  <span class="Delimiter">}</span>
+<span id="L386" class="LineNr">386 </span>  <span class="Normal">const</span> recipe&amp; rrhs = get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> from<span class="Delimiter">.</span>value<span class="Delimiter">);</span>
+<span id="L387" class="LineNr">387 </span>  <span class="Normal">const</span> recipe&amp; rlhs = <a href='072recipe.cc.html#L275'>from_reagent</a><span class="Delimiter">(</span>to<span class="Delimiter">);</span>
+<span id="L388" class="LineNr">388 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">long</span> <span class="Normal">int</span> i = <span class="Constant">0</span><span class="Delimiter">;</span>  i &lt; min<span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>rlhs<span class="Delimiter">.</span>ingredients<span class="Delimiter">),</span> <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>rrhs<span class="Delimiter">.</span>ingredients<span class="Delimiter">));</span>  ++i<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L389" class="LineNr">389 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>!types_match<span class="Delimiter">(</span>rlhs<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">),</span> rrhs<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">)))</span>
+<span id="L390" class="LineNr">390 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Identifier">return</span> <span class="Constant">false</span><span class="Delimiter">;</span>
+<span id="L391" class="LineNr">391 </span>  <span class="Delimiter">}</span>
+<span id="L392" class="LineNr">392 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">long</span> <span class="Normal">int</span> i = <span class="Constant">0</span><span class="Delimiter">;</span>  i &lt; min<span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>rlhs<span class="Delimiter">.</span>products<span class="Delimiter">),</span> <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>rrhs<span class="Delimiter">.</span>products<span class="Delimiter">));</span>  ++i<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L393" class="LineNr">393 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>!types_match<span class="Delimiter">(</span>rlhs<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">),</span> rrhs<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">)))</span>
+<span id="L394" class="LineNr">394 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Identifier">return</span> <span class="Constant">false</span><span class="Delimiter">;</span>
+<span id="L395" class="LineNr">395 </span>  <span class="Delimiter">}</span>
+<span id="L396" class="LineNr">396 </span>  <span class="Identifier">return</span> <span class="Constant">true</span><span class="Delimiter">;</span>
+<span id="L397" class="LineNr">397 </span><span class="Delimiter">}</span>
+<span id="L398" class="LineNr">398 </span>
+<span id="L399" class="LineNr">399 </span><span class="Delimiter">:(scenario call_variable_compound_ingredient)</span>
+<span id="L400" class="LineNr">400 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
+<span id="L401" class="LineNr">401 </span>  <span class="Delimiter">{</span><span class="Constant">1</span>: <span class="Delimiter">(</span><a href='010vm.cc.html#L19'>recipe</a> <span class="Delimiter">(</span><a href='043space.cc.html#L82'>address</a> number<span class="Delimiter">)</span><span class="muRecipe"> -&gt; </span>number<span class="Delimiter">)}</span><span class="Special"> &lt;- </span>copy f
+<span id="L402" class="LineNr">402 </span>  <span class="Constant">2</span>:&amp;:num<span class="Special"> &lt;- </span>copy <span class="Constant">0</span>
+<span id="L403" class="LineNr">403 </span>  <span class="Constant">3</span>:num<span class="Special"> &lt;- </span>call <span class="Delimiter">{</span><span class="Constant">1</span>: <span class="Delimiter">(</span><a href='010vm.cc.html#L19'>recipe</a> <span class="Delimiter">(</span><a href='043space.cc.html#L82'>address</a> number<span class="Delimiter">)</span><span class="muRecipe"> -&gt; </span>number<span class="Delimiter">)},</span> <span class="Constant">2</span>:&amp;:num
+<span id="L404" class="LineNr">404 </span>]
+<span id="L405" class="LineNr">405 </span><span class="muRecipe">def</span> f x:&amp;:num<span class="muRecipe"> -&gt; </span>y:num [
+<span id="L406" class="LineNr">406 </span>  local-scope
+<span id="L407" class="LineNr">407 </span>  load-ingredients
+<span id="L408" class="LineNr">408 </span>  y<span class="Special"> &lt;- </span>copy x
+<span id="L409" class="LineNr">409 </span>]
+<span id="L410" class="LineNr">410 </span>$error: <span class="Constant">0</span>
+<span id="L411" class="LineNr">411 </span>
+<span id="L412" class="LineNr">412 </span><span class="Comment">//: make sure we don't accidentally break on a recipe literal</span>
+<span id="L413" class="LineNr">413 </span><span class="Delimiter">:(scenario jump_forbidden_on_recipe_literals)</span>
+<span id="L414" class="LineNr">414 </span><span class="Special">% Hide_errors = true;</span>
+<span id="L415" class="LineNr">415 </span><span class="muRecipe">def</span> foo [
+<span id="L416" class="LineNr">416 </span>  local-scope
+<span id="L417" class="LineNr">417 </span>]
+<span id="L418" class="LineNr">418 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
+<span id="L419" class="LineNr">419 </span>  local-scope
+<span id="L420" class="LineNr">420 </span>  <span class="Delimiter">{</span>
+<span id="L421" class="LineNr">421 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span>-<span class="Normal">if</span> foo
+<span id="L422" class="LineNr">422 </span>  <span class="Delimiter">}</span>
+<span id="L423" class="LineNr">423 </span>]
+<span id="L424" class="LineNr">424 </span><span class="Comment"># error should be as if foo is not a recipe</span>
+<span id="L425" class="LineNr">425 </span><span class="traceContains">+error: <a href='000organization.cc.html#L113'>main</a>: missing type for 'foo' in 'break-if foo'</span>
+<span id="L426" class="LineNr">426 </span>
+<span id="L427" class="LineNr">427 </span><span class="Delimiter">:(before &quot;End JUMP_IF Checks&quot;)</span>
+<span id="L428" class="LineNr">428 </span><a href='072recipe.cc.html#L432'>check_for_recipe_literals</a><span class="Delimiter">(</span>inst<span class="Delimiter">,</span> get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">));</span>
+<span id="L429" class="LineNr">429 </span><span class="Delimiter">:(before &quot;End JUMP_UNLESS Checks&quot;)</span>
+<span id="L430" class="LineNr">430 </span><a href='072recipe.cc.html#L432'>check_for_recipe_literals</a><span class="Delimiter">(</span>inst<span class="Delimiter">,</span> get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">));</span>
+<span id="L431" class="LineNr">431 </span><span class="Delimiter">:(code)</span>
+<span id="L432" class="LineNr">432 </span><span class="Normal">void</span> <a href='072recipe.cc.html#L432'>check_for_recipe_literals</a><span class="Delimiter">(</span><span class="Normal">const</span> instruction&amp; inst<span class="Delimiter">,</span> <span class="Normal">const</span> recipe&amp; caller<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L433" class="LineNr">433 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> i = <span class="Constant">0</span><span class="Delimiter">;</span>  i &lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">);</span>  ++i<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L434" class="LineNr">434 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span><a href='072recipe.cc.html#L345'>is_mu_recipe</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">)))</span> <span class="Delimiter">{</span>
+<span id="L435" class="LineNr">435 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>caller<span class="Delimiter">.</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;missing type for '&quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">).</span>original_string &lt;&lt; <span class="Constant">&quot;' in '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
+<span id="L436" class="LineNr">436 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>is_present_in_ingredients<span class="Delimiter">(</span>caller<span class="Delimiter">,</span> inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">).</span>name<span class="Delimiter">))</span>
+<span id="L437" class="LineNr">437 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <span class="Constant">&quot;  did you forget 'load-ingredients'?</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
+<span id="L438" class="LineNr">438 </span>  <span class="Conceal">¦</span> <span class="Delimiter">}</span>
+<span id="L439" class="LineNr">439 </span>  <span class="Delimiter">}</span>
+<span id="L440" class="LineNr">440 </span><span class="Delimiter">}</span>
+<span id="L441" class="LineNr">441 </span>
+<span id="L442" class="LineNr">442 </span><span class="Delimiter">:(scenario load_ingredients_missing_error_3)</span>
+<span id="L443" class="LineNr">443 </span><span class="Special">% Hide_errors = true;</span>
+<span id="L444" class="LineNr">444 </span><span class="muRecipe">def</span> foo <span class="Delimiter">{</span>f: <span class="Delimiter">(</span><a href='010vm.cc.html#L19'>recipe</a> num<span class="muRecipe"> -&gt; </span>num<span class="Delimiter">)}</span> [
+<span id="L445" class="LineNr">445 </span>  local-scope
+<span id="L446" class="LineNr">446 </span>  <span class="Normal">b</span>:num<span class="Special"> &lt;- </span>call f<span class="Delimiter">,</span> <span class="Constant">1</span>
+<span id="L447" class="LineNr">447 </span>]
+<span id="L448" class="LineNr">448 </span><span class="traceContains">+error: foo: missing type for 'f' in 'b:num &lt;- call f, 1'</span>
+<span id="L449" class="LineNr">449 </span><span class="traceContains">+error:   did you forget 'load-ingredients'?</span>
+<span id="L450" class="LineNr">450 </span>
+<span id="L451" class="LineNr">451 </span><span class="Delimiter">:(before &quot;End Mu Types Initialization&quot;)</span>
+<span id="L452" class="LineNr">452 </span><a href='001help.cc.html#L221'>put</a><span class="Delimiter">(</span>Type_abbreviations<span class="Delimiter">,</span> <span class="Constant">&quot;function&quot;</span><span class="Delimiter">,</span> <a href='018type_abbreviations.cc.html#L58'>new_type_tree</a><span class="Delimiter">(</span><span class="Constant">&quot;recipe&quot;</span><span class="Delimiter">));</span>
+<span id="L453" class="LineNr">453 </span>
+<span id="L454" class="LineNr">454 </span><span class="Delimiter">:(scenario call_function)</span>
+<span id="L455" class="LineNr">455 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
+<span id="L456" class="LineNr">456 </span>  <span class="Delimiter">{</span><span class="Constant">1</span>: <span class="Delimiter">(</span>function number<span class="muRecipe"> -&gt; </span>number<span class="Delimiter">)}</span><span class="Special"> &lt;- </span>copy f
+<span id="L457" class="LineNr">457 </span>  <span class="Constant">2</span>:num<span class="Special"> &lt;- </span>call <span class="Delimiter">{</span><span class="Constant">1</span>: <span class="Delimiter">(</span>function number<span class="muRecipe"> -&gt; </span>number<span class="Delimiter">)},</span> <span class="Constant">34</span>
+<span id="L458" class="LineNr">458 </span>]
+<span id="L459" class="LineNr">459 </span><span class="muRecipe">def</span> f x:num<span class="muRecipe"> -&gt; </span>y:num [
+<span id="L460" class="LineNr">460 </span>  local-scope
+<span id="L461" class="LineNr">461 </span>  load-ingredients
+<span id="L462" class="LineNr">462 </span>  y<span class="Special"> &lt;- </span>copy x
+<span id="L463" class="LineNr">463 </span>]
+<span id="L464" class="LineNr">464 </span><span class="traceContains">+mem: storing 34 in location 2</span>
 </pre>
 </body>
 </html>
diff --git a/html/073scheduler.cc.html b/html/073scheduler.cc.html
index af9330ba..c6b093d8 100644
--- a/html/073scheduler.cc.html
+++ b/html/073scheduler.cc.html
@@ -134,7 +134,7 @@ if ('onhashchange' in window) {
 <span id="L69" class="LineNr"> 69 </span>  <span class="Conceal">¦</span> <a href='073scheduler.cc.html#L94'>skip_to_next_routine</a><span class="Delimiter">();</span>
 <span id="L70" class="LineNr"> 70 </span>  <span class="Conceal">¦</span> assert<span class="Delimiter">(</span>Current_routine<span class="Delimiter">);</span>
 <span id="L71" class="LineNr"> 71 </span>  <span class="Conceal">¦</span> assert<span class="Delimiter">(</span>Current_routine<span class="Delimiter">-&gt;</span>state == <a href='073scheduler.cc.html#L41'>RUNNING</a><span class="Delimiter">);</span>
-<span id="L72" class="LineNr"> 72 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">9990</span><span class="Delimiter">,</span> <span class="Constant">&quot;schedule&quot;</span><span class="Delimiter">)</span> &lt;&lt; <a href='073scheduler.cc.html#L106'>current_routine_label</a><span class="Delimiter">()</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L72" class="LineNr"> 72 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L167'>trace</a><span class="Delimiter">(</span><span class="Constant">9990</span><span class="Delimiter">,</span> <span class="Constant">&quot;schedule&quot;</span><span class="Delimiter">)</span> &lt;&lt; <a href='073scheduler.cc.html#L106'>current_routine_label</a><span class="Delimiter">()</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L73" class="LineNr"> 73 </span>  <span class="Conceal">¦</span> run_current_routine<span class="Delimiter">();</span>
 <span id="L74" class="LineNr"> 74 </span>  <span class="Conceal">¦</span> <span class="Comment">// Scheduler State Transitions</span>
 <span id="L75" class="LineNr"> 75 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>Current_routine<span class="Delimiter">-&gt;</span>completed<span class="Delimiter">())</span>
@@ -175,7 +175,7 @@ if ('onhashchange' in window) {
 <span id="L110" class="LineNr">110 </span>string <a href='073scheduler.cc.html#L110'>routine_label</a><span class="Delimiter">(</span>routine* r<span class="Delimiter">)</span> <span class="Delimiter">{</span>
 <span id="L111" class="LineNr">111 </span>  ostringstream result<span class="Delimiter">;</span>
 <span id="L112" class="LineNr">112 </span>  <span class="Normal">const</span> call_stack&amp; calls = r<span class="Delimiter">-&gt;</span>calls<span class="Delimiter">;</span>
-<span id="L113" class="LineNr">113 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span>call_stack::const_iterator p = calls<span class="Delimiter">.</span>begin<span class="Delimiter">();</span>  p != calls<span class="Delimiter">.</span><a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>  ++p<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L113" class="LineNr">113 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span>call_stack::const_iterator p = calls<span class="Delimiter">.</span>begin<span class="Delimiter">();</span>  p != calls<span class="Delimiter">.</span><a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>  ++p<span class="Delimiter">)</span> <span class="Delimiter">{</span>
 <span id="L114" class="LineNr">114 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>p != calls<span class="Delimiter">.</span>begin<span class="Delimiter">())</span> result &lt;&lt; <span class="Constant">'/'</span><span class="Delimiter">;</span>
 <span id="L115" class="LineNr">115 </span>  <span class="Conceal">¦</span> result &lt;&lt; get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> p<span class="Delimiter">-&gt;</span>running_recipe<span class="Delimiter">).</span>name<span class="Delimiter">;</span>
 <span id="L116" class="LineNr">116 </span>  <span class="Delimiter">}</span>
@@ -196,7 +196,7 @@ if ('onhashchange' in window) {
 <span id="L131" class="LineNr">131 </span>  <span class="Conceal">¦</span> arg<span class="Delimiter">.</span>push_back<span class="Delimiter">(</span><a href='038new_text.cc.html#L38'>new_mu_text</a><span class="Delimiter">(</span>argv[i]<span class="Delimiter">));</span>
 <span id="L132" class="LineNr">132 </span>  <span class="Conceal">¦</span> assert<span class="Delimiter">(</span>get<span class="Delimiter">(</span>Memory<span class="Delimiter">,</span> arg<span class="Delimiter">.</span>back<span class="Delimiter">())</span> == <span class="Constant">0</span><span class="Delimiter">);</span>
 <span id="L133" class="LineNr">133 </span>  <span class="Conceal">¦</span> <a href='001help.cc.html#L221'>put</a><span class="Delimiter">(</span>Memory<span class="Delimiter">,</span> arg<span class="Delimiter">.</span>back<span class="Delimiter">(),</span> <span class="Constant">1</span><span class="Delimiter">);</span>  <span class="Comment">// update refcount</span>
-<span id="L134" class="LineNr">134 </span>  <span class="Conceal">¦</span> <a href='026call.cc.html#L81'>current_call</a><span class="Delimiter">().</span>ingredient_atoms<span class="Delimiter">.</span>push_back<span class="Delimiter">(</span>arg<span class="Delimiter">);</span>
+<span id="L134" class="LineNr">134 </span>  <span class="Conceal">¦</span> <a href='026call.cc.html#L83'>current_call</a><span class="Delimiter">().</span>ingredient_atoms<span class="Delimiter">.</span>push_back<span class="Delimiter">(</span>arg<span class="Delimiter">);</span>
 <span id="L135" class="LineNr">135 </span>  <span class="Delimiter">}</span>
 <span id="L136" class="LineNr">136 </span>  run<span class="Delimiter">(</span>main_routine<span class="Delimiter">);</span>
 <span id="L137" class="LineNr">137 </span><span class="Delimiter">}</span>
@@ -229,11 +229,11 @@ if ('onhashchange' in window) {
 <span id="L164" class="LineNr">164 </span><span class="Delimiter">:(before &quot;End Primitive Recipe Checks&quot;)</span>
 <span id="L165" class="LineNr">165 </span><span class="Normal">case</span> START_RUNNING: <span class="Delimiter">{</span>
 <span id="L166" class="LineNr">166 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>empty<span class="Delimiter">())</span> <span class="Delimiter">{</span>
-<span id="L167" class="LineNr">167 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'start-running' requires at least one ingredient: the <a href='010vm.cc.html#L19'>recipe</a> to start running</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L167" class="LineNr">167 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'start-running' requires at least one ingredient: the <a href='010vm.cc.html#L19'>recipe</a> to start running</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L168" class="LineNr">168 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L169" class="LineNr">169 </span>  <span class="Delimiter">}</span>
 <span id="L170" class="LineNr">170 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!is_mu_recipe<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">)))</span> <span class="Delimiter">{</span>
-<span id="L171" class="LineNr">171 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;first ingredient of 'start-running' should be a <a href='010vm.cc.html#L19'>recipe</a>, but got '&quot;</span> &lt;&lt; to_string<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">))</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L171" class="LineNr">171 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;first ingredient of 'start-running' should be a <a href='010vm.cc.html#L19'>recipe</a>, but got '&quot;</span> &lt;&lt; to_string<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">))</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L172" class="LineNr">172 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L173" class="LineNr">173 </span>  <span class="Delimiter">}</span>
 <span id="L174" class="LineNr">174 </span>  <span class="Identifier">break</span><span class="Delimiter">;</span>
@@ -243,8 +243,8 @@ if ('onhashchange' in window) {
 <span id="L178" class="LineNr">178 </span>  routine* new_routine = <span class="Normal">new</span> routine<span class="Delimiter">(</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">));</span>
 <span id="L179" class="LineNr">179 </span>  new_routine<span class="Delimiter">-&gt;</span>parent_index = Current_routine_index<span class="Delimiter">;</span>
 <span id="L180" class="LineNr">180 </span>  <span class="Comment">// populate ingredients</span>
-<span id="L181" class="LineNr">181 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> i = <span class="Comment">/*</span><span class="Comment">skip callee</span><span class="Comment">*/</span><span class="Constant">1</span><span class="Delimiter">;</span>  i &lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span><a href='026call.cc.html#L87'>current_instruction</a><span class="Delimiter">().</span>ingredients<span class="Delimiter">);</span>  ++i<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L182" class="LineNr">182 </span>  <span class="Conceal">¦</span> reagent<span class="Comment">/*</span><span class="Comment">copy</span><span class="Comment">*/</span> ingredient = <a href='026call.cc.html#L87'>current_instruction</a><span class="Delimiter">().</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">);</span>
+<span id="L181" class="LineNr">181 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> i = <span class="Comment">/*</span><span class="Comment">skip callee</span><span class="Comment">*/</span><span class="Constant">1</span><span class="Delimiter">;</span>  i &lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span><a href='026call.cc.html#L89'>current_instruction</a><span class="Delimiter">().</span>ingredients<span class="Delimiter">);</span>  ++i<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L182" class="LineNr">182 </span>  <span class="Conceal">¦</span> reagent<span class="Comment">/*</span><span class="Comment">copy</span><span class="Comment">*/</span> ingredient = <a href='026call.cc.html#L89'>current_instruction</a><span class="Delimiter">().</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">);</span>
 <span id="L183" class="LineNr">183 </span>  <span class="Conceal">¦</span> new_routine<span class="Delimiter">-&gt;</span>calls<span class="Delimiter">.</span>front<span class="Delimiter">().</span>ingredients<span class="Delimiter">.</span>push_back<span class="Delimiter">(</span>ingredient<span class="Delimiter">);</span>
 <span id="L184" class="LineNr">184 </span>  <span class="Conceal">¦</span> vector&lt;<span class="Normal">double</span>&gt; new_ingredient_atoms = deep_copy<span class="Delimiter">(</span>ingredient<span class="Delimiter">);</span>
 <span id="L185" class="LineNr">185 </span>  <span class="Conceal">¦</span> new_routine<span class="Delimiter">-&gt;</span>calls<span class="Delimiter">.</span>front<span class="Delimiter">().</span>ingredient_atoms<span class="Delimiter">.</span>push_back<span class="Delimiter">(</span>new_ingredient_atoms<span class="Delimiter">);</span>
@@ -315,7 +315,7 @@ if ('onhashchange' in window) {
 <span id="L250" class="LineNr">250 </span><span class="traceContains">+error: f1: ingredient 0 has the wrong type at 'start-running f2, 3'</span>
 <span id="L251" class="LineNr">251 </span>
 <span id="L252" class="LineNr">252 </span><span class="Comment">// 'start-running' only uses the ingredients of the callee, not its products</span>
-<span id="L253" class="LineNr">253 </span><span class="Delimiter">:(before &quot;End <a href='072recipe.cc.html#L196'>is_indirect_call_with_ingredients</a> Special-cases&quot;)</span>
+<span id="L253" class="LineNr">253 </span><span class="Delimiter">:(before &quot;End <a href='072recipe.cc.html#L264'>is_indirect_call_with_ingredients</a> Special-cases&quot;)</span>
 <span id="L254" class="LineNr">254 </span><span class="Normal">if</span> <span class="Delimiter">(</span>r == START_RUNNING<span class="Delimiter">)</span> <span class="Identifier">return</span> <span class="Constant">true</span><span class="Delimiter">;</span>
 <span id="L255" class="LineNr">255 </span>
 <span id="L256" class="LineNr">256 </span><span class="Comment">//: refcounting management when starting up new routines</span>
@@ -506,11 +506,11 @@ if ('onhashchange' in window) {
 <span id="L441" class="LineNr">441 </span><span class="Delimiter">:(before &quot;End Primitive Recipe Checks&quot;)</span>
 <span id="L442" class="LineNr">442 </span><span class="Normal">case</span> ROUTINE_STATE: <span class="Delimiter">{</span>
 <span id="L443" class="LineNr">443 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">)</span> != <span class="Constant">1</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L444" class="LineNr">444 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'routine-state' requires exactly one ingredient, but got '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L444" class="LineNr">444 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'routine-state' requires exactly one ingredient, but got '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L445" class="LineNr">445 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L446" class="LineNr">446 </span>  <span class="Delimiter">}</span>
 <span id="L447" class="LineNr">447 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!is_mu_number<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">)))</span> <span class="Delimiter">{</span>
-<span id="L448" class="LineNr">448 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;first ingredient of 'routine-state' should be a routine id generated by 'start-running', but got '&quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>original_string &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L448" class="LineNr">448 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;first ingredient of 'routine-state' should be a routine id generated by 'start-running', but got '&quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>original_string &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L449" class="LineNr">449 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L450" class="LineNr">450 </span>  <span class="Delimiter">}</span>
 <span id="L451" class="LineNr">451 </span>  <span class="Identifier">break</span><span class="Delimiter">;</span>
@@ -539,11 +539,11 @@ if ('onhashchange' in window) {
 <span id="L474" class="LineNr">474 </span><span class="Delimiter">:(before &quot;End Primitive Recipe Checks&quot;)</span>
 <span id="L475" class="LineNr">475 </span><span class="Normal">case</span> STOP: <span class="Delimiter">{</span>
 <span id="L476" class="LineNr">476 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">)</span> != <span class="Constant">1</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L477" class="LineNr">477 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'stop' requires exactly one ingredient, but got '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L477" class="LineNr">477 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'stop' requires exactly one ingredient, but got '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L478" class="LineNr">478 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L479" class="LineNr">479 </span>  <span class="Delimiter">}</span>
 <span id="L480" class="LineNr">480 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!is_mu_number<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">)))</span> <span class="Delimiter">{</span>
-<span id="L481" class="LineNr">481 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;first ingredient of 'stop' should be a routine id generated by 'start-running', but got '&quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>original_string &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L481" class="LineNr">481 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;first ingredient of 'stop' should be a routine id generated by 'start-running', but got '&quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>original_string &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L482" class="LineNr">482 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L483" class="LineNr">483 </span>  <span class="Delimiter">}</span>
 <span id="L484" class="LineNr">484 </span>  <span class="Identifier">break</span><span class="Delimiter">;</span>
@@ -600,7 +600,7 @@ if ('onhashchange' in window) {
 <span id="L535" class="LineNr">535 </span><span class="Delimiter">:(before &quot;End Scheduler State Transitions&quot;)</span>
 <span id="L536" class="LineNr">536 </span><span class="Normal">if</span> <span class="Delimiter">(</span>Current_routine<span class="Delimiter">-&gt;</span>limit &gt;= <span class="Constant">0</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
 <span id="L537" class="LineNr">537 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>Current_routine<span class="Delimiter">-&gt;</span>limit &lt;= Scheduling_interval<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L538" class="LineNr">538 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">&quot;schedule&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;discontinuing routine &quot;</span> &lt;&lt; Current_routine<span class="Delimiter">-&gt;</span>id &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L538" class="LineNr">538 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L167'>trace</a><span class="Delimiter">(</span><span class="Constant">&quot;schedule&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;discontinuing routine &quot;</span> &lt;&lt; Current_routine<span class="Delimiter">-&gt;</span>id &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L539" class="LineNr">539 </span>  <span class="Conceal">¦</span> Current_routine<span class="Delimiter">-&gt;</span>state = DISCONTINUED<span class="Delimiter">;</span>
 <span id="L540" class="LineNr">540 </span>  <span class="Conceal">¦</span> Current_routine<span class="Delimiter">-&gt;</span>limit = <span class="Constant">0</span><span class="Delimiter">;</span>
 <span id="L541" class="LineNr">541 </span>  <span class="Delimiter">}</span>
@@ -611,10 +611,10 @@ if ('onhashchange' in window) {
 <span id="L546" class="LineNr">546 </span>
 <span id="L547" class="LineNr">547 </span><span class="Delimiter">:(before &quot;End Test Teardown&quot;)</span>
 <span id="L548" class="LineNr">548 </span><span class="Normal">if</span> <span class="Delimiter">(</span>Passed &amp;&amp; any_routines_with_error<span class="Delimiter">())</span>
-<span id="L549" class="LineNr">549 </span>  <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <span class="Constant">&quot;some routines died with errors</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L549" class="LineNr">549 </span>  <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <span class="Constant">&quot;some routines died with errors</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L550" class="LineNr">550 </span><span class="Delimiter">:(before &quot;End Mu Test Teardown&quot;)</span>
 <span id="L551" class="LineNr">551 </span><span class="Normal">if</span> <span class="Delimiter">(</span>Passed &amp;&amp; any_routines_with_error<span class="Delimiter">())</span>
-<span id="L552" class="LineNr">552 </span>  <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; Current_scenario<span class="Delimiter">-&gt;</span>name &lt;&lt; <span class="Constant">&quot;: some routines died with errors</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L552" class="LineNr">552 </span>  <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; Current_scenario<span class="Delimiter">-&gt;</span>name &lt;&lt; <span class="Constant">&quot;: some routines died with errors</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L553" class="LineNr">553 </span>
 <span id="L554" class="LineNr">554 </span><span class="Delimiter">:(code)</span>
 <span id="L555" class="LineNr">555 </span><span class="Normal">bool</span> any_routines_with_error<span class="Delimiter">()</span> <span class="Delimiter">{</span>
@@ -637,15 +637,15 @@ if ('onhashchange' in window) {
 <span id="L572" class="LineNr">572 </span><span class="Delimiter">:(before &quot;End Primitive Recipe Checks&quot;)</span>
 <span id="L573" class="LineNr">573 </span><span class="Normal">case</span> LIMIT_TIME: <span class="Delimiter">{</span>
 <span id="L574" class="LineNr">574 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">)</span> != <span class="Constant">2</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L575" class="LineNr">575 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'limit-time' requires exactly two ingredient, but got '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L575" class="LineNr">575 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'limit-time' requires exactly two ingredient, but got '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L576" class="LineNr">576 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L577" class="LineNr">577 </span>  <span class="Delimiter">}</span>
 <span id="L578" class="LineNr">578 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!is_mu_number<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">)))</span> <span class="Delimiter">{</span>
-<span id="L579" class="LineNr">579 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;first ingredient of 'limit-time' should be a routine id generated by 'start-running', but got '&quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>original_string &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L579" class="LineNr">579 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;first ingredient of 'limit-time' should be a routine id generated by 'start-running', but got '&quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>original_string &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L580" class="LineNr">580 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L581" class="LineNr">581 </span>  <span class="Delimiter">}</span>
 <span id="L582" class="LineNr">582 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!is_mu_number<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">1</span><span class="Delimiter">)))</span> <span class="Delimiter">{</span>
-<span id="L583" class="LineNr">583 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;second ingredient of 'limit-time' should be a number (of instructions to run for), but got '&quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">1</span><span class="Delimiter">).</span>original_string &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L583" class="LineNr">583 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;second ingredient of 'limit-time' should be a number (of instructions to run for), but got '&quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">1</span><span class="Delimiter">).</span>original_string &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L584" class="LineNr">584 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L585" class="LineNr">585 </span>  <span class="Delimiter">}</span>
 <span id="L586" class="LineNr">586 </span>  <span class="Identifier">break</span><span class="Delimiter">;</span>
@@ -675,11 +675,11 @@ if ('onhashchange' in window) {
 <span id="L610" class="LineNr">610 </span><span class="Delimiter">:(before &quot;End Primitive Recipe Checks&quot;)</span>
 <span id="L611" class="LineNr">611 </span><span class="Normal">case</span> NUMBER_OF_INSTRUCTIONS: <span class="Delimiter">{</span>
 <span id="L612" class="LineNr">612 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">)</span> != <span class="Constant">1</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L613" class="LineNr">613 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'number-of-instructions' requires exactly one ingredient, but got '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L613" class="LineNr">613 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'number-of-instructions' requires exactly one ingredient, but got '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L614" class="LineNr">614 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L615" class="LineNr">615 </span>  <span class="Delimiter">}</span>
 <span id="L616" class="LineNr">616 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!is_mu_number<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">)))</span> <span class="Delimiter">{</span>
-<span id="L617" class="LineNr">617 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;first ingredient of 'number-of-instructions' should be a routine id generated by 'start-running', but got '&quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>original_string &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L617" class="LineNr">617 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;first ingredient of 'number-of-instructions' should be a routine id generated by 'start-running', but got '&quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>original_string &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L618" class="LineNr">618 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L619" class="LineNr">619 </span>  <span class="Delimiter">}</span>
 <span id="L620" class="LineNr">620 </span>  <span class="Identifier">break</span><span class="Delimiter">;</span>
diff --git a/html/074wait.cc.html b/html/074wait.cc.html
index 945940f8..6991a951 100644
--- a/html/074wait.cc.html
+++ b/html/074wait.cc.html
@@ -99,15 +99,15 @@ if ('onhashchange' in window) {
 <span id="L34" class="LineNr"> 34 </span>
 <span id="L35" class="LineNr"> 35 </span><span class="Delimiter">:(before &quot;End Mu Test Teardown&quot;)</span>
 <span id="L36" class="LineNr"> 36 </span><span class="Normal">if</span> <span class="Delimiter">(</span>Passed &amp;&amp; <a href='074wait.cc.html#L47'>any_routines_waiting</a><span class="Delimiter">())</span>
-<span id="L37" class="LineNr"> 37 </span>  <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; Current_scenario<span class="Delimiter">-&gt;</span>name &lt;&lt; <span class="Constant">&quot;: deadlock!</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L37" class="LineNr"> 37 </span>  <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; Current_scenario<span class="Delimiter">-&gt;</span>name &lt;&lt; <span class="Constant">&quot;: deadlock!</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L38" class="LineNr"> 38 </span><span class="Delimiter">:(before &quot;End Run Routine&quot;)</span>
 <span id="L39" class="LineNr"> 39 </span><span class="Normal">if</span> <span class="Delimiter">(</span><a href='074wait.cc.html#L47'>any_routines_waiting</a><span class="Delimiter">())</span> <span class="Delimiter">{</span>
-<span id="L40" class="LineNr"> 40 </span>  <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <span class="Constant">&quot;deadlock!</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L40" class="LineNr"> 40 </span>  <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <span class="Constant">&quot;deadlock!</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L41" class="LineNr"> 41 </span>  <a href='074wait.cc.html#L54'>dump_waiting_routines</a><span class="Delimiter">();</span>
 <span id="L42" class="LineNr"> 42 </span><span class="Delimiter">}</span>
 <span id="L43" class="LineNr"> 43 </span><span class="Delimiter">:(before &quot;End Test Teardown&quot;)</span>
 <span id="L44" class="LineNr"> 44 </span><span class="Normal">if</span> <span class="Delimiter">(</span>Passed &amp;&amp; any_routines_with_error<span class="Delimiter">())</span>
-<span id="L45" class="LineNr"> 45 </span>  <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <span class="Constant">&quot;some routines died with errors</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L45" class="LineNr"> 45 </span>  <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <span class="Constant">&quot;some routines died with errors</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L46" class="LineNr"> 46 </span><span class="Delimiter">:(code)</span>
 <span id="L47" class="LineNr"> 47 </span><span class="Normal">bool</span> <a href='074wait.cc.html#L47'>any_routines_waiting</a><span class="Delimiter">()</span> <span class="Delimiter">{</span>
 <span id="L48" class="LineNr"> 48 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> i = <span class="Constant">0</span><span class="Delimiter">;</span>  i &lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>Routines<span class="Delimiter">);</span>  ++i<span class="Delimiter">)</span> <span class="Delimiter">{</span>
@@ -143,24 +143,24 @@ if ('onhashchange' in window) {
 <span id="L78" class="LineNr"> 78 </span><span class="Delimiter">:(before &quot;End Primitive Recipe Checks&quot;)</span>
 <span id="L79" class="LineNr"> 79 </span><span class="Normal">case</span> WAIT_FOR_RESET_THEN_SET: <span class="Delimiter">{</span>
 <span id="L80" class="LineNr"> 80 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">)</span> != <span class="Constant">1</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L81" class="LineNr"> 81 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'wait-for-reset-then-set' requires exactly one ingredient, but got '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L81" class="LineNr"> 81 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'wait-for-reset-then-set' requires exactly one ingredient, but got '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L82" class="LineNr"> 82 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L83" class="LineNr"> 83 </span>  <span class="Delimiter">}</span>
 <span id="L84" class="LineNr"> 84 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!is_mu_location<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">)))</span> <span class="Delimiter">{</span>
-<span id="L85" class="LineNr"> 85 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'wait-for-reset-then-set' requires a location ingredient, but got '&quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>original_string &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L85" class="LineNr"> 85 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'wait-for-reset-then-set' requires a location ingredient, but got '&quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>original_string &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L86" class="LineNr"> 86 </span>  <span class="Delimiter">}</span>
 <span id="L87" class="LineNr"> 87 </span>  <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L88" class="LineNr"> 88 </span><span class="Delimiter">}</span>
 <span id="L89" class="LineNr"> 89 </span><span class="Delimiter">:(before &quot;End Primitive Recipe Implementations&quot;)</span>
 <span id="L90" class="LineNr"> 90 </span><span class="Normal">case</span> WAIT_FOR_RESET_THEN_SET: <span class="Delimiter">{</span>
 <span id="L91" class="LineNr"> 91 </span>  <span class="Normal">int</span> loc = <span class="Normal">static_cast</span>&lt;<span class="Normal">int</span>&gt;<span class="Delimiter">(</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">));</span>
-<span id="L92" class="LineNr"> 92 </span>  <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">9998</span><span class="Delimiter">,</span> <span class="Constant">&quot;run&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;wait: *&quot;</span> &lt;&lt; loc &lt;&lt; <span class="Constant">&quot; = &quot;</span> &lt;&lt; <a href='001help.cc.html#L229'>get_or_insert</a><span class="Delimiter">(</span>Memory<span class="Delimiter">,</span> loc<span class="Delimiter">)</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L92" class="LineNr"> 92 </span>  <a href='003trace.cc.html#L167'>trace</a><span class="Delimiter">(</span><span class="Constant">9998</span><span class="Delimiter">,</span> <span class="Constant">&quot;run&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;wait: *&quot;</span> &lt;&lt; loc &lt;&lt; <span class="Constant">&quot; = &quot;</span> &lt;&lt; <a href='001help.cc.html#L229'>get_or_insert</a><span class="Delimiter">(</span>Memory<span class="Delimiter">,</span> loc<span class="Delimiter">)</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L93" class="LineNr"> 93 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span><a href='001help.cc.html#L229'>get_or_insert</a><span class="Delimiter">(</span>Memory<span class="Delimiter">,</span> loc<span class="Delimiter">)</span> == <span class="Constant">0</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L94" class="LineNr"> 94 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">9998</span><span class="Delimiter">,</span> <span class="Constant">&quot;run&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;location &quot;</span> &lt;&lt; loc &lt;&lt; <span class="Constant">&quot; is already 0; setting&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L94" class="LineNr"> 94 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L167'>trace</a><span class="Delimiter">(</span><span class="Constant">9998</span><span class="Delimiter">,</span> <span class="Constant">&quot;run&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;location &quot;</span> &lt;&lt; loc &lt;&lt; <span class="Constant">&quot; is already 0; setting&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L95" class="LineNr"> 95 </span>  <span class="Conceal">¦</span> <a href='001help.cc.html#L221'>put</a><span class="Delimiter">(</span>Memory<span class="Delimiter">,</span> loc<span class="Delimiter">,</span> <span class="Constant">1</span><span class="Delimiter">);</span>
 <span id="L96" class="LineNr"> 96 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L97" class="LineNr"> 97 </span>  <span class="Delimiter">}</span>
-<span id="L98" class="LineNr"> 98 </span>  <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">9998</span><span class="Delimiter">,</span> <span class="Constant">&quot;run&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;waiting for location &quot;</span> &lt;&lt; loc &lt;&lt; <span class="Constant">&quot; to reset&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L98" class="LineNr"> 98 </span>  <a href='003trace.cc.html#L167'>trace</a><span class="Delimiter">(</span><span class="Constant">9998</span><span class="Delimiter">,</span> <span class="Constant">&quot;run&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;waiting for location &quot;</span> &lt;&lt; loc &lt;&lt; <span class="Constant">&quot; to reset&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L99" class="LineNr"> 99 </span>  Current_routine<span class="Delimiter">-&gt;</span>state = WAITING<span class="Delimiter">;</span>
 <span id="L100" class="LineNr">100 </span>  Current_routine<span class="Delimiter">-&gt;</span>waiting_on_location = loc<span class="Delimiter">;</span>
 <span id="L101" class="LineNr">101 </span>  <span class="Identifier">break</span><span class="Delimiter">;</span>
@@ -174,11 +174,11 @@ if ('onhashchange' in window) {
 <span id="L109" class="LineNr">109 </span><span class="Delimiter">:(before &quot;End Primitive Recipe Checks&quot;)</span>
 <span id="L110" class="LineNr">110 </span><span class="Normal">case</span> RESET: <span class="Delimiter">{</span>
 <span id="L111" class="LineNr">111 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">)</span> != <span class="Constant">1</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L112" class="LineNr">112 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'reset' requires exactly one ingredient, but got '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L112" class="LineNr">112 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'reset' requires exactly one ingredient, but got '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L113" class="LineNr">113 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L114" class="LineNr">114 </span>  <span class="Delimiter">}</span>
 <span id="L115" class="LineNr">115 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!is_mu_location<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">)))</span> <span class="Delimiter">{</span>
-<span id="L116" class="LineNr">116 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'reset' requires a location ingredient, but got '&quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>original_string &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L116" class="LineNr">116 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'reset' requires a location ingredient, but got '&quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>original_string &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L117" class="LineNr">117 </span>  <span class="Delimiter">}</span>
 <span id="L118" class="LineNr">118 </span>  <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L119" class="LineNr">119 </span><span class="Delimiter">}</span>
@@ -186,7 +186,7 @@ if ('onhashchange' in window) {
 <span id="L121" class="LineNr">121 </span><span class="Normal">case</span> RESET: <span class="Delimiter">{</span>
 <span id="L122" class="LineNr">122 </span>  <span class="Normal">int</span> loc = <span class="Normal">static_cast</span>&lt;<span class="Normal">int</span>&gt;<span class="Delimiter">(</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">));</span>
 <span id="L123" class="LineNr">123 </span>  <a href='001help.cc.html#L221'>put</a><span class="Delimiter">(</span>Memory<span class="Delimiter">,</span> loc<span class="Delimiter">,</span> <span class="Constant">0</span><span class="Delimiter">);</span>
-<span id="L124" class="LineNr">124 </span>  <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">9998</span><span class="Delimiter">,</span> <span class="Constant">&quot;run&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;reset: *&quot;</span> &lt;&lt; loc &lt;&lt; <span class="Constant">&quot; = &quot;</span> &lt;&lt; <a href='001help.cc.html#L229'>get_or_insert</a><span class="Delimiter">(</span>Memory<span class="Delimiter">,</span> loc<span class="Delimiter">)</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L124" class="LineNr">124 </span>  <a href='003trace.cc.html#L167'>trace</a><span class="Delimiter">(</span><span class="Constant">9998</span><span class="Delimiter">,</span> <span class="Constant">&quot;run&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;reset: *&quot;</span> &lt;&lt; loc &lt;&lt; <span class="Constant">&quot; = &quot;</span> &lt;&lt; <a href='001help.cc.html#L229'>get_or_insert</a><span class="Delimiter">(</span>Memory<span class="Delimiter">,</span> loc<span class="Delimiter">)</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L125" class="LineNr">125 </span>  <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L126" class="LineNr">126 </span><span class="Delimiter">}</span>
 <span id="L127" class="LineNr">127 </span>
@@ -197,7 +197,7 @@ if ('onhashchange' in window) {
 <span id="L132" class="LineNr">132 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>Routines<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">)-&gt;</span>state != WAITING<span class="Delimiter">)</span> <span class="Identifier">continue</span><span class="Delimiter">;</span>
 <span id="L133" class="LineNr">133 </span>  <span class="Normal">int</span> loc = Routines<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">)-&gt;</span>waiting_on_location<span class="Delimiter">;</span>
 <span id="L134" class="LineNr">134 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>loc &amp;&amp; <a href='001help.cc.html#L229'>get_or_insert</a><span class="Delimiter">(</span>Memory<span class="Delimiter">,</span> loc<span class="Delimiter">)</span> == <span class="Constant">0</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L135" class="LineNr">135 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">&quot;schedule&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;waking up routine &quot;</span> &lt;&lt; Routines<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">)-&gt;</span>id &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L135" class="LineNr">135 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L167'>trace</a><span class="Delimiter">(</span><span class="Constant">&quot;schedule&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;waking up routine &quot;</span> &lt;&lt; Routines<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">)-&gt;</span>id &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L136" class="LineNr">136 </span>  <span class="Conceal">¦</span> <a href='001help.cc.html#L221'>put</a><span class="Delimiter">(</span>Memory<span class="Delimiter">,</span> loc<span class="Delimiter">,</span> <span class="Constant">1</span><span class="Delimiter">);</span>
 <span id="L137" class="LineNr">137 </span>  <span class="Conceal">¦</span> Routines<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">)-&gt;</span>state = <a href='073scheduler.cc.html#L41'>RUNNING</a><span class="Delimiter">;</span>
 <span id="L138" class="LineNr">138 </span>  <span class="Conceal">¦</span> Routines<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">)-&gt;</span>waiting_on_location = <span class="Constant">0</span><span class="Delimiter">;</span>
@@ -223,24 +223,24 @@ if ('onhashchange' in window) {
 <span id="L158" class="LineNr">158 </span><span class="Delimiter">:(before &quot;End Primitive Recipe Checks&quot;)</span>
 <span id="L159" class="LineNr">159 </span><span class="Normal">case</span> GET_LOCATION: <span class="Delimiter">{</span>
 <span id="L160" class="LineNr">160 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">)</span> != <span class="Constant">2</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L161" class="LineNr">161 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'get-location' expects exactly 2 ingredients in '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L161" class="LineNr">161 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'get-location' expects exactly 2 ingredients in '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L162" class="LineNr">162 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L163" class="LineNr">163 </span>  <span class="Delimiter">}</span>
 <span id="L164" class="LineNr">164 </span>  reagent<span class="Comment">/*</span><span class="Comment">copy</span><span class="Comment">*/</span> base = inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">);</span>
 <span id="L165" class="LineNr">165 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!canonize_type<span class="Delimiter">(</span>base<span class="Delimiter">))</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L166" class="LineNr">166 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!base<span class="Delimiter">.</span>type<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L167" class="LineNr">167 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;first ingredient of 'get-location' should be a container, but got '&quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>original_string &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L167" class="LineNr">167 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;first ingredient of 'get-location' should be a container, but got '&quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>original_string &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L168" class="LineNr">168 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L169" class="LineNr">169 </span>  <span class="Delimiter">}</span>
 <span id="L170" class="LineNr">170 </span>  <span class="Normal">const</span> type_tree* base_root_type = base<span class="Delimiter">.</span>type<span class="Delimiter">-&gt;</span>atom ? base<span class="Delimiter">.</span>type : base<span class="Delimiter">.</span>type<span class="Delimiter">-&gt;</span>left<span class="Delimiter">;</span>
 <span id="L171" class="LineNr">171 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!base_root_type<span class="Delimiter">-&gt;</span>atom || base_root_type<span class="Delimiter">-&gt;</span>value == <span class="Constant">0</span> || !contains_key<span class="Delimiter">(</span>Type<span class="Delimiter">,</span> base_root_type<span class="Delimiter">-&gt;</span>value<span class="Delimiter">)</span> || get<span class="Delimiter">(</span>Type<span class="Delimiter">,</span> base_root_type<span class="Delimiter">-&gt;</span>value<span class="Delimiter">).</span>kind != <a href='010vm.cc.html#L173'>CONTAINER</a><span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L172" class="LineNr">172 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;first ingredient of 'get-location' should be a container, but got '&quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>original_string &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L172" class="LineNr">172 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;first ingredient of 'get-location' should be a container, but got '&quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>original_string &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L173" class="LineNr">173 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L174" class="LineNr">174 </span>  <span class="Delimiter">}</span>
 <span id="L175" class="LineNr">175 </span>  <a href='010vm.cc.html#L123'>type_ordinal</a> base_type = base<span class="Delimiter">.</span>type<span class="Delimiter">-&gt;</span>value<span class="Delimiter">;</span>
 <span id="L176" class="LineNr">176 </span>  <span class="Normal">const</span> reagent&amp; offset = inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">1</span><span class="Delimiter">);</span>
 <span id="L177" class="LineNr">177 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!is_literal<span class="Delimiter">(</span>offset<span class="Delimiter">)</span> || !is_mu_scalar<span class="Delimiter">(</span>offset<span class="Delimiter">))</span> <span class="Delimiter">{</span>
-<span id="L178" class="LineNr">178 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;second ingredient of 'get-location' should have type 'offset', but got '&quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">1</span><span class="Delimiter">).</span>original_string &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L178" class="LineNr">178 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;second ingredient of 'get-location' should have type 'offset', but got '&quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">1</span><span class="Delimiter">).</span>original_string &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L179" class="LineNr">179 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L180" class="LineNr">180 </span>  <span class="Delimiter">}</span>
 <span id="L181" class="LineNr">181 </span>  <span class="Normal">int</span> offset_value = <span class="Constant">0</span><span class="Delimiter">;</span>
@@ -248,7 +248,7 @@ if ('onhashchange' in window) {
 <span id="L183" class="LineNr">183 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span><a href='002test.cc.html#L85'>is_integer</a><span class="Delimiter">(</span>offset<span class="Delimiter">.</span>name<span class="Delimiter">))</span> <span class="Delimiter">{</span>
 <span id="L184" class="LineNr">184 </span>  <span class="Conceal">¦</span> offset_value = <a href='002test.cc.html#L91'>to_integer</a><span class="Delimiter">(</span>offset<span class="Delimiter">.</span>name<span class="Delimiter">);</span>
 <span id="L185" class="LineNr">185 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>offset_value &lt; <span class="Constant">0</span> || offset_value &gt;= <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Type<span class="Delimiter">,</span> base_type<span class="Delimiter">).</span>elements<span class="Delimiter">))</span> <span class="Delimiter">{</span>
-<span id="L186" class="LineNr">186 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;invalid offset &quot;</span> &lt;&lt; offset_value &lt;&lt; <span class="Constant">&quot; for '&quot;</span> &lt;&lt; get<span class="Delimiter">(</span>Type<span class="Delimiter">,</span> base_type<span class="Delimiter">).</span>name &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L186" class="LineNr">186 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;invalid offset &quot;</span> &lt;&lt; offset_value &lt;&lt; <span class="Constant">&quot; for '&quot;</span> &lt;&lt; get<span class="Delimiter">(</span>Type<span class="Delimiter">,</span> base_type<span class="Delimiter">).</span>name &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L187" class="LineNr">187 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L188" class="LineNr">188 </span>  <span class="Conceal">¦</span> <span class="Delimiter">}</span>
 <span id="L189" class="LineNr">189 </span>  <span class="Delimiter">}</span>
@@ -257,18 +257,18 @@ if ('onhashchange' in window) {
 <span id="L192" class="LineNr">192 </span>  <span class="Delimiter">}</span>
 <span id="L193" class="LineNr">193 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>empty<span class="Delimiter">())</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L194" class="LineNr">194 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!is_mu_location<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">)))</span> <span class="Delimiter">{</span>
-<span id="L195" class="LineNr">195 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'get-location &quot;</span> &lt;&lt; base<span class="Delimiter">.</span>original_string &lt;&lt; <span class="Constant">&quot;, &quot;</span> &lt;&lt; offset<span class="Delimiter">.</span>original_string &lt;&lt; <span class="Constant">&quot;' should write to type location but '&quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>name &lt;&lt; <span class="Constant">&quot;' has type '&quot;</span> &lt;&lt; names_to_string_without_quotes<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>type<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L195" class="LineNr">195 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'get-location &quot;</span> &lt;&lt; base<span class="Delimiter">.</span>original_string &lt;&lt; <span class="Constant">&quot;, &quot;</span> &lt;&lt; offset<span class="Delimiter">.</span>original_string &lt;&lt; <span class="Constant">&quot;' should write to type location but '&quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>name &lt;&lt; <span class="Constant">&quot;' has type '&quot;</span> &lt;&lt; names_to_string_without_quotes<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>type<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L196" class="LineNr">196 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L197" class="LineNr">197 </span>  <span class="Delimiter">}</span>
 <span id="L198" class="LineNr">198 </span>  <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L199" class="LineNr">199 </span><span class="Delimiter">}</span>
 <span id="L200" class="LineNr">200 </span><span class="Delimiter">:(before &quot;End Primitive Recipe Implementations&quot;)</span>
 <span id="L201" class="LineNr">201 </span><span class="Normal">case</span> GET_LOCATION: <span class="Delimiter">{</span>
-<span id="L202" class="LineNr">202 </span>  reagent<span class="Comment">/*</span><span class="Comment">copy</span><span class="Comment">*/</span> base = <a href='026call.cc.html#L87'>current_instruction</a><span class="Delimiter">().</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">);</span>
+<span id="L202" class="LineNr">202 </span>  reagent<span class="Comment">/*</span><span class="Comment">copy</span><span class="Comment">*/</span> base = <a href='026call.cc.html#L89'>current_instruction</a><span class="Delimiter">().</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">);</span>
 <span id="L203" class="LineNr">203 </span>  canonize<span class="Delimiter">(</span>base<span class="Delimiter">);</span>
 <span id="L204" class="LineNr">204 </span>  <span class="Normal">int</span> base_address = base<span class="Delimiter">.</span>value<span class="Delimiter">;</span>
 <span id="L205" class="LineNr">205 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>base_address == <span class="Constant">0</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L206" class="LineNr">206 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span><a href='026call.cc.html#L85'>current_recipe_name</a><span class="Delimiter">())</span> &lt;&lt; <span class="Constant">&quot;tried to access location 0 in '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>current_instruction<span class="Delimiter">())</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L206" class="LineNr">206 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span><a href='026call.cc.html#L87'>current_recipe_name</a><span class="Delimiter">())</span> &lt;&lt; <span class="Constant">&quot;tried to access location 0 in '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>current_instruction<span class="Delimiter">())</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L207" class="LineNr">207 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L208" class="LineNr">208 </span>  <span class="Delimiter">}</span>
 <span id="L209" class="LineNr">209 </span>  <span class="Normal">const</span> type_tree* base_type = get_base_type<span class="Delimiter">(</span>base<span class="Delimiter">.</span>type<span class="Delimiter">);</span>
@@ -277,7 +277,7 @@ if ('onhashchange' in window) {
 <span id="L212" class="LineNr">212 </span>  <span class="Normal">int</span> result = base_address<span class="Delimiter">;</span>
 <span id="L213" class="LineNr">213 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> i = <span class="Constant">0</span><span class="Delimiter">;</span>  i &lt; offset<span class="Delimiter">;</span>  ++i<span class="Delimiter">)</span>
 <span id="L214" class="LineNr">214 </span>  <span class="Conceal">¦</span> result += size_of<span class="Delimiter">(</span><a href='030container.cc.html#L429'>element_type</a><span class="Delimiter">(</span>base<span class="Delimiter">.</span>type<span class="Delimiter">,</span> i<span class="Delimiter">));</span>
-<span id="L215" class="LineNr">215 </span>  <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">9998</span><span class="Delimiter">,</span> <span class="Constant">&quot;run&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;address to copy is &quot;</span> &lt;&lt; result &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L215" class="LineNr">215 </span>  <a href='003trace.cc.html#L167'>trace</a><span class="Delimiter">(</span><span class="Constant">9998</span><span class="Delimiter">,</span> <span class="Constant">&quot;run&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;address to copy is &quot;</span> &lt;&lt; result &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L216" class="LineNr">216 </span>  products<span class="Delimiter">.</span>resize<span class="Delimiter">(</span><span class="Constant">1</span><span class="Delimiter">);</span>
 <span id="L217" class="LineNr">217 </span>  products<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>push_back<span class="Delimiter">(</span>result<span class="Delimiter">);</span>
 <span id="L218" class="LineNr">218 </span>  <span class="Identifier">break</span><span class="Delimiter">;</span>
@@ -390,11 +390,11 @@ if ('onhashchange' in window) {
 <span id="L325" class="LineNr">325 </span><span class="Delimiter">:(before &quot;End Primitive Recipe Checks&quot;)</span>
 <span id="L326" class="LineNr">326 </span><span class="Normal">case</span> WAIT_FOR_ROUTINE: <span class="Delimiter">{</span>
 <span id="L327" class="LineNr">327 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">)</span> != <span class="Constant">1</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L328" class="LineNr">328 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'wait-for-routine' requires exactly one ingredient, but got '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L328" class="LineNr">328 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'wait-for-routine' requires exactly one ingredient, but got '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L329" class="LineNr">329 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L330" class="LineNr">330 </span>  <span class="Delimiter">}</span>
 <span id="L331" class="LineNr">331 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!is_mu_number<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">)))</span> <span class="Delimiter">{</span>
-<span id="L332" class="LineNr">332 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;first ingredient of 'wait-for-routine' should be a routine id generated by 'start-running', but got '&quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>original_string &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L332" class="LineNr">332 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;first ingredient of 'wait-for-routine' should be a routine id generated by 'start-running', but got '&quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>original_string &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L333" class="LineNr">333 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L334" class="LineNr">334 </span>  <span class="Delimiter">}</span>
 <span id="L335" class="LineNr">335 </span>  <span class="Identifier">break</span><span class="Delimiter">;</span>
@@ -402,12 +402,12 @@ if ('onhashchange' in window) {
 <span id="L337" class="LineNr">337 </span><span class="Delimiter">:(before &quot;End Primitive Recipe Implementations&quot;)</span>
 <span id="L338" class="LineNr">338 </span><span class="Normal">case</span> WAIT_FOR_ROUTINE: <span class="Delimiter">{</span>
 <span id="L339" class="LineNr">339 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">)</span> == Current_routine<span class="Delimiter">-&gt;</span>id<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L340" class="LineNr">340 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span><a href='026call.cc.html#L85'>current_recipe_name</a><span class="Delimiter">())</span> &lt;&lt; <span class="Constant">&quot;routine can't wait for itself! '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span><a href='026call.cc.html#L87'>current_instruction</a><span class="Delimiter">())</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; end<span class="Delimiter">();</span>
+<span id="L340" class="LineNr">340 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span><a href='026call.cc.html#L87'>current_recipe_name</a><span class="Delimiter">())</span> &lt;&lt; <span class="Constant">&quot;routine can't wait for itself! '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span><a href='026call.cc.html#L89'>current_instruction</a><span class="Delimiter">())</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; end<span class="Delimiter">();</span>
 <span id="L341" class="LineNr">341 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L342" class="LineNr">342 </span>  <span class="Delimiter">}</span>
 <span id="L343" class="LineNr">343 </span>  Current_routine<span class="Delimiter">-&gt;</span>state = WAITING<span class="Delimiter">;</span>
 <span id="L344" class="LineNr">344 </span>  Current_routine<span class="Delimiter">-&gt;</span>waiting_on_routine = ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">);</span>
-<span id="L345" class="LineNr">345 </span>  <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">9998</span><span class="Delimiter">,</span> <span class="Constant">&quot;run&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;waiting for routine &quot;</span> &lt;&lt; ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">)</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L345" class="LineNr">345 </span>  <a href='003trace.cc.html#L167'>trace</a><span class="Delimiter">(</span><span class="Constant">9998</span><span class="Delimiter">,</span> <span class="Constant">&quot;run&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;waiting for routine &quot;</span> &lt;&lt; ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">)</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L346" class="LineNr">346 </span>  <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L347" class="LineNr">347 </span><span class="Delimiter">}</span>
 <span id="L348" class="LineNr">348 </span>
@@ -425,7 +425,7 @@ if ('onhashchange' in window) {
 <span id="L360" class="LineNr">360 </span>  <span class="Conceal">¦</span> <span class="Normal">const</span> routine* waitee = Routines<span class="Delimiter">.</span>at<span class="Delimiter">(</span>j<span class="Delimiter">);</span>
 <span id="L361" class="LineNr">361 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>waitee<span class="Delimiter">-&gt;</span>id == id &amp;&amp; waitee<span class="Delimiter">-&gt;</span>state != <a href='073scheduler.cc.html#L41'>RUNNING</a> &amp;&amp; waitee<span class="Delimiter">-&gt;</span>state != WAITING<span class="Delimiter">)</span> <span class="Delimiter">{</span>
 <span id="L362" class="LineNr">362 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Comment">// routine is COMPLETED or DISCONTINUED</span>
-<span id="L363" class="LineNr">363 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">&quot;schedule&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;waking up routine &quot;</span> &lt;&lt; waiter<span class="Delimiter">-&gt;</span>id &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L363" class="LineNr">363 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L167'>trace</a><span class="Delimiter">(</span><span class="Constant">&quot;schedule&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;waking up routine &quot;</span> &lt;&lt; waiter<span class="Delimiter">-&gt;</span>id &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L364" class="LineNr">364 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> waiter<span class="Delimiter">-&gt;</span>state = <a href='073scheduler.cc.html#L41'>RUNNING</a><span class="Delimiter">;</span>
 <span id="L365" class="LineNr">365 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> waiter<span class="Delimiter">-&gt;</span>waiting_on_routine = <span class="Constant">0</span><span class="Delimiter">;</span>
 <span id="L366" class="LineNr">366 </span>  <span class="Conceal">¦</span> <span class="Delimiter">}</span>
@@ -489,7 +489,7 @@ if ('onhashchange' in window) {
 <span id="L424" class="LineNr">424 </span><span class="Delimiter">:(before &quot;End Primitive Recipe Checks&quot;)</span>
 <span id="L425" class="LineNr">425 </span><span class="Normal">case</span> CURRENT_ROUTINE_IS_BLOCKED: <span class="Delimiter">{</span>
 <span id="L426" class="LineNr">426 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>empty<span class="Delimiter">())</span> <span class="Delimiter">{</span>
-<span id="L427" class="LineNr">427 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'current-routine-is-blocked' should have no ingredients, but got '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L427" class="LineNr">427 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'current-routine-is-blocked' should have no ingredients, but got '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L428" class="LineNr">428 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L429" class="LineNr">429 </span>  <span class="Delimiter">}</span>
 <span id="L430" class="LineNr">430 </span>  <span class="Identifier">break</span><span class="Delimiter">;</span>
@@ -507,7 +507,7 @@ if ('onhashchange' in window) {
 <span id="L442" class="LineNr">442 </span><span class="Delimiter">:(before &quot;End Primitive Recipe Checks&quot;)</span>
 <span id="L443" class="LineNr">443 </span><span class="Normal">case</span> CURRENT_ROUTINE_IS_UNBLOCKED: <span class="Delimiter">{</span>
 <span id="L444" class="LineNr">444 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>empty<span class="Delimiter">())</span> <span class="Delimiter">{</span>
-<span id="L445" class="LineNr">445 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'current-routine-is-unblocked' should have no ingredients, but got '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L445" class="LineNr">445 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'current-routine-is-unblocked' should have no ingredients, but got '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L446" class="LineNr">446 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L447" class="LineNr">447 </span>  <span class="Delimiter">}</span>
 <span id="L448" class="LineNr">448 </span>  <span class="Identifier">break</span><span class="Delimiter">;</span>
@@ -552,11 +552,11 @@ if ('onhashchange' in window) {
 <span id="L487" class="LineNr">487 </span><span class="Delimiter">:(before &quot;End Primitive Recipe Checks&quot;)</span>
 <span id="L488" class="LineNr">488 </span><span class="Normal">case</span> WAIT_FOR_ROUTINE_TO_BLOCK: <span class="Delimiter">{</span>
 <span id="L489" class="LineNr">489 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">)</span> != <span class="Constant">1</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L490" class="LineNr">490 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'wait-for-routine-to-block' requires exactly one ingredient, but got '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L490" class="LineNr">490 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'wait-for-routine-to-block' requires exactly one ingredient, but got '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L491" class="LineNr">491 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L492" class="LineNr">492 </span>  <span class="Delimiter">}</span>
 <span id="L493" class="LineNr">493 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!is_mu_number<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">)))</span> <span class="Delimiter">{</span>
-<span id="L494" class="LineNr">494 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;first ingredient of 'wait-for-routine-to-block' should be a routine id generated by 'start-running', but got '&quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>original_string &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L494" class="LineNr">494 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;first ingredient of 'wait-for-routine-to-block' should be a routine id generated by 'start-running', but got '&quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>original_string &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L495" class="LineNr">495 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L496" class="LineNr">496 </span>  <span class="Delimiter">}</span>
 <span id="L497" class="LineNr">497 </span>  <span class="Identifier">break</span><span class="Delimiter">;</span>
@@ -564,12 +564,12 @@ if ('onhashchange' in window) {
 <span id="L499" class="LineNr">499 </span><span class="Delimiter">:(before &quot;End Primitive Recipe Implementations&quot;)</span>
 <span id="L500" class="LineNr">500 </span><span class="Normal">case</span> WAIT_FOR_ROUTINE_TO_BLOCK: <span class="Delimiter">{</span>
 <span id="L501" class="LineNr">501 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">)</span> == Current_routine<span class="Delimiter">-&gt;</span>id<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L502" class="LineNr">502 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span><a href='026call.cc.html#L85'>current_recipe_name</a><span class="Delimiter">())</span> &lt;&lt; <span class="Constant">&quot;routine can't wait for itself! '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span><a href='026call.cc.html#L87'>current_instruction</a><span class="Delimiter">())</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; end<span class="Delimiter">();</span>
+<span id="L502" class="LineNr">502 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span><a href='026call.cc.html#L87'>current_recipe_name</a><span class="Delimiter">())</span> &lt;&lt; <span class="Constant">&quot;routine can't wait for itself! '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span><a href='026call.cc.html#L89'>current_instruction</a><span class="Delimiter">())</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; end<span class="Delimiter">();</span>
 <span id="L503" class="LineNr">503 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L504" class="LineNr">504 </span>  <span class="Delimiter">}</span>
 <span id="L505" class="LineNr">505 </span>  Current_routine<span class="Delimiter">-&gt;</span>state = WAITING<span class="Delimiter">;</span>
 <span id="L506" class="LineNr">506 </span>  Current_routine<span class="Delimiter">-&gt;</span>waiting_on_routine_to_block = ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">);</span>
-<span id="L507" class="LineNr">507 </span>  <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">9998</span><span class="Delimiter">,</span> <span class="Constant">&quot;run&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;waiting for routine &quot;</span> &lt;&lt; ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot; to block&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L507" class="LineNr">507 </span>  <a href='003trace.cc.html#L167'>trace</a><span class="Delimiter">(</span><span class="Constant">9998</span><span class="Delimiter">,</span> <span class="Constant">&quot;run&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;waiting for routine &quot;</span> &lt;&lt; ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot; to block&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L508" class="LineNr">508 </span>  <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L509" class="LineNr">509 </span><span class="Delimiter">}</span>
 <span id="L510" class="LineNr">510 </span>
@@ -585,7 +585,7 @@ if ('onhashchange' in window) {
 <span id="L520" class="LineNr">520 </span>  <span class="Conceal">¦</span> <span class="Normal">const</span> routine* waitee = Routines<span class="Delimiter">.</span>at<span class="Delimiter">(</span>j<span class="Delimiter">);</span>
 <span id="L521" class="LineNr">521 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>waitee<span class="Delimiter">-&gt;</span>id != id<span class="Delimiter">)</span> <span class="Identifier">continue</span><span class="Delimiter">;</span>
 <span id="L522" class="LineNr">522 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>waitee<span class="Delimiter">-&gt;</span>state != <a href='073scheduler.cc.html#L41'>RUNNING</a> || waitee<span class="Delimiter">-&gt;</span>blocked<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L523" class="LineNr">523 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">&quot;schedule&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;waking up routine &quot;</span> &lt;&lt; waiter<span class="Delimiter">-&gt;</span>id &lt;&lt; <span class="Constant">&quot; because routine &quot;</span> &lt;&lt; waitee<span class="Delimiter">-&gt;</span>id &lt;&lt; <span class="Constant">&quot; is blocked&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L523" class="LineNr">523 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L167'>trace</a><span class="Delimiter">(</span><span class="Constant">&quot;schedule&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;waking up routine &quot;</span> &lt;&lt; waiter<span class="Delimiter">-&gt;</span>id &lt;&lt; <span class="Constant">&quot; because routine &quot;</span> &lt;&lt; waitee<span class="Delimiter">-&gt;</span>id &lt;&lt; <span class="Constant">&quot; is blocked&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L524" class="LineNr">524 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> waiter<span class="Delimiter">-&gt;</span>state = <a href='073scheduler.cc.html#L41'>RUNNING</a><span class="Delimiter">;</span>
 <span id="L525" class="LineNr">525 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> waiter<span class="Delimiter">-&gt;</span>waiting_on_routine_to_block = <span class="Constant">0</span><span class="Delimiter">;</span>
 <span id="L526" class="LineNr">526 </span>  <span class="Conceal">¦</span> <span class="Delimiter">}</span>
@@ -601,11 +601,11 @@ if ('onhashchange' in window) {
 <span id="L536" class="LineNr">536 </span><span class="Delimiter">:(before &quot;End Primitive Recipe Checks&quot;)</span>
 <span id="L537" class="LineNr">537 </span><span class="Normal">case</span> RESTART: <span class="Delimiter">{</span>
 <span id="L538" class="LineNr">538 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">)</span> != <span class="Constant">1</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L539" class="LineNr">539 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'restart' requires exactly one ingredient, but got '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L539" class="LineNr">539 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'restart' requires exactly one ingredient, but got '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L540" class="LineNr">540 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L541" class="LineNr">541 </span>  <span class="Delimiter">}</span>
 <span id="L542" class="LineNr">542 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!is_mu_number<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">)))</span> <span class="Delimiter">{</span>
-<span id="L543" class="LineNr">543 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;first ingredient of 'restart' should be a routine id generated by 'start-running', but got '&quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>original_string &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L543" class="LineNr">543 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;first ingredient of 'restart' should be a routine id generated by 'start-running', but got '&quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>original_string &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L544" class="LineNr">544 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L545" class="LineNr">545 </span>  <span class="Delimiter">}</span>
 <span id="L546" class="LineNr">546 </span>  <span class="Identifier">break</span><span class="Delimiter">;</span>
diff --git a/html/075channel.mu.html b/html/075channel.mu.html
index c543311e..034410bf 100644
--- a/html/075channel.mu.html
+++ b/html/075channel.mu.html
@@ -441,7 +441,7 @@ if ('onhashchange' in window) {
 <span id="L377" class="LineNr">377 </span>]
 <span id="L378" class="LineNr">378 </span>
 <span id="L379" class="LineNr">379 </span><span class="Comment"># A full channel has first-free just before first-full, wasting one slot.</span>
-<span id="L380" class="LineNr">380 </span><span class="Comment"># (Other alternatives: <a href="https://www.snellman.net/blog/archive/2016-12-13-ring-buffers">https://www.snellman.net/blog/archive/2016-12-13-ring-buffers</a>)</span>
+<span id="L380" class="LineNr">380 </span><span class="Comment"># (Other alternatives: <a href="https://www.snellman.net/blog/archive/2016-12-13-ring-buffers)">https://www.snellman.net/blog/archive/2016-12-13-ring-buffers)</a></span>
 <span id="L381" class="LineNr">381 </span><span class="muRecipe">def</span> <a href='075channel.mu.html#L381'>channel-full?</a> chan:&amp;:channel:_elem<span class="muRecipe"> -&gt; </span>result:bool [
 <span id="L382" class="LineNr">382 </span>  <span class="Constant">local-scope</span>
 <span id="L383" class="LineNr">383 </span>  <span class="Constant">load-inputs</span>
diff --git a/html/076continuation.cc.html b/html/076continuation.cc.html
index ee34e992..eca16757 100644
--- a/html/076continuation.cc.html
+++ b/html/076continuation.cc.html
@@ -115,7 +115,7 @@ if ('onhashchange' in window) {
 <span id="L51" class="LineNr"> 51 </span>Type[continuation]<span class="Delimiter">.</span>name = <span class="Constant">&quot;continuation&quot;</span><span class="Delimiter">;</span>
 <span id="L52" class="LineNr"> 52 </span>
 <span id="L53" class="LineNr"> 53 </span><span class="Comment">//: A continuation can be called like a recipe.</span>
-<span id="L54" class="LineNr"> 54 </span><span class="Delimiter">:(before &quot;End <a href='072recipe.cc.html#L277'>is_mu_recipe</a> Atom Cases(r)&quot;)</span>
+<span id="L54" class="LineNr"> 54 </span><span class="Delimiter">:(before &quot;End <a href='072recipe.cc.html#L345'>is_mu_recipe</a> Atom Cases(r)&quot;)</span>
 <span id="L55" class="LineNr"> 55 </span><span class="Normal">if</span> <span class="Delimiter">(</span>r<span class="Delimiter">.</span>type<span class="Delimiter">-&gt;</span>name == <span class="Constant">&quot;continuation&quot;</span><span class="Delimiter">)</span> <span class="Identifier">return</span> <span class="Constant">true</span><span class="Delimiter">;</span>
 <span id="L56" class="LineNr"> 56 </span>
 <span id="L57" class="LineNr"> 57 </span><span class="Comment">//: However, it can't be type-checked like most recipes. Pretend it's like a</span>
@@ -190,10 +190,10 @@ if ('onhashchange' in window) {
 <span id="L126" class="LineNr">126 </span>  <span class="Comment">// before pushing the next one on it</span>
 <span id="L127" class="LineNr">127 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>Trace_stream<span class="Delimiter">)</span> <span class="Delimiter">{</span>
 <span id="L128" class="LineNr">128 </span>  <span class="Conceal">¦</span> ++Trace_stream<span class="Delimiter">-&gt;</span>callstack_depth<span class="Delimiter">;</span>
-<span id="L129" class="LineNr">129 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">&quot;trace&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;delimited continuation; incrementing callstack depth to &quot;</span> &lt;&lt; Trace_stream<span class="Delimiter">-&gt;</span>callstack_depth &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L129" class="LineNr">129 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L167'>trace</a><span class="Delimiter">(</span><span class="Constant">&quot;trace&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;delimited continuation; incrementing callstack depth to &quot;</span> &lt;&lt; Trace_stream<span class="Delimiter">-&gt;</span>callstack_depth &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L130" class="LineNr">130 </span>  <span class="Conceal">¦</span> assert<span class="Delimiter">(</span>Trace_stream<span class="Delimiter">-&gt;</span>callstack_depth &lt; <span class="Constant">9000</span><span class="Delimiter">);</span>  <span class="Comment">// 9998-101 plus cushion</span>
 <span id="L131" class="LineNr">131 </span>  <span class="Delimiter">}</span>
-<span id="L132" class="LineNr">132 </span>  <span class="Normal">const</span> instruction&amp; caller_instruction = <a href='026call.cc.html#L87'>current_instruction</a><span class="Delimiter">();</span>
+<span id="L132" class="LineNr">132 </span>  <span class="Normal">const</span> instruction&amp; caller_instruction = <a href='026call.cc.html#L89'>current_instruction</a><span class="Delimiter">();</span>
 <span id="L133" class="LineNr">133 </span>  Current_routine<span class="Delimiter">-&gt;</span>calls<span class="Delimiter">.</span>front<span class="Delimiter">().</span>is_base_of_continuation = <span class="Constant">true</span><span class="Delimiter">;</span>
 <span id="L134" class="LineNr">134 </span>  Current_routine<span class="Delimiter">-&gt;</span>calls<span class="Delimiter">.</span>push_front<span class="Delimiter">(</span>call<span class="Delimiter">(</span>Recipe_ordinal[current_instruction<span class="Delimiter">().</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>name]<span class="Delimiter">));</span>
 <span id="L135" class="LineNr">135 </span>  ingredients<span class="Delimiter">.</span>erase<span class="Delimiter">(</span>ingredients<span class="Delimiter">.</span>begin<span class="Delimiter">());</span>  <span class="Comment">// drop the callee</span>
@@ -208,7 +208,7 @@ if ('onhashchange' in window) {
 <span id="L144" class="LineNr">144 </span><span class="Normal">struct</span> delimited_continuation <span class="Delimiter">{</span>
 <span id="L145" class="LineNr">145 </span>  call_stack frames<span class="Delimiter">;</span>
 <span id="L146" class="LineNr">146 </span>  <span class="Normal">int</span> nrefs<span class="Delimiter">;</span>
-<span id="L147" class="LineNr">147 </span>  delimited_continuation<span class="Delimiter">(</span>call_stack::iterator begin<span class="Delimiter">,</span> call_stack::iterator <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">)</span> :frames<span class="Delimiter">(</span>call_stack<span class="Delimiter">(</span>begin<span class="Delimiter">,</span> <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">)),</span> nrefs<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">)</span> <span class="Delimiter">{}</span>
+<span id="L147" class="LineNr">147 </span>  delimited_continuation<span class="Delimiter">(</span>call_stack::iterator begin<span class="Delimiter">,</span> call_stack::iterator <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">)</span> :frames<span class="Delimiter">(</span>call_stack<span class="Delimiter">(</span>begin<span class="Delimiter">,</span> <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">)),</span> nrefs<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">)</span> <span class="Delimiter">{}</span>
 <span id="L148" class="LineNr">148 </span><span class="Delimiter">};</span>
 <span id="L149" class="LineNr">149 </span><span class="Delimiter">:(before &quot;End Globals&quot;)</span>
 <span id="L150" class="LineNr">150 </span>map&lt;<span class="Normal">long</span> <span class="Normal">long</span> <span class="Normal">int</span><span class="Delimiter">,</span> delimited_continuation&gt; Delimited_continuation<span class="Delimiter">;</span>
@@ -227,198 +227,239 @@ if ('onhashchange' in window) {
 <span id="L163" class="LineNr">163 </span><span class="Delimiter">}</span>
 <span id="L164" class="LineNr">164 </span><span class="Delimiter">:(before &quot;End Primitive Recipe Implementations&quot;)</span>
 <span id="L165" class="LineNr">165 </span><span class="Normal">case</span> RETURN_CONTINUATION_UNTIL_MARK: <span class="Delimiter">{</span>
-<span id="L166" class="LineNr">166 </span>  <span class="Comment">// first clear any existing ingredients, to isolate the creation of the</span>
-<span id="L167" class="LineNr">167 </span>  <span class="Comment">// continuation from its calls</span>
-<span id="L168" class="LineNr">168 </span>  Current_routine<span class="Delimiter">-&gt;</span>calls<span class="Delimiter">.</span>front<span class="Delimiter">().</span>ingredient_atoms<span class="Delimiter">.</span><a href='050scenario.cc.html#L60'>clear</a><span class="Delimiter">();</span>
-<span id="L169" class="LineNr">169 </span>  Current_routine<span class="Delimiter">-&gt;</span>calls<span class="Delimiter">.</span>front<span class="Delimiter">().</span>next_ingredient_to_process = <span class="Constant">0</span><span class="Delimiter">;</span>
-<span id="L170" class="LineNr">170 </span>  <span class="Comment">// copy the current call stack until the most recent marked call</span>
-<span id="L171" class="LineNr">171 </span>  call_stack::iterator find_base_of_continuation<span class="Delimiter">(</span>call_stack&amp; c<span class="Delimiter">);</span>  <span class="Comment">// manual prototype containing '::'</span>
-<span id="L172" class="LineNr">172 </span>  call_stack::iterator base = find_base_of_continuation<span class="Delimiter">(</span>Current_routine<span class="Delimiter">-&gt;</span>calls<span class="Delimiter">);</span>
-<span id="L173" class="LineNr">173 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>base == Current_routine<span class="Delimiter">-&gt;</span>calls<span class="Delimiter">.</span><a href='003trace.cc.html#L197'>end</a><span class="Delimiter">())</span> <span class="Delimiter">{</span>
-<span id="L174" class="LineNr">174 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span><a href='026call.cc.html#L85'>current_recipe_name</a><span class="Delimiter">())</span> &lt;&lt; <span class="Constant">&quot;couldn't find a 'call-with-continuation-mark' to return to</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; end<span class="Delimiter">();</span>
-<span id="L175" class="LineNr">175 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span><a href='026call.cc.html#L85'>current_recipe_name</a><span class="Delimiter">())</span> &lt;&lt; <span class="Constant">&quot;call stack:</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
-<span id="L176" class="LineNr">176 </span>  <span class="Conceal">¦</span> <span class="Normal">for</span> <span class="Delimiter">(</span>call_stack::iterator p = Current_routine<span class="Delimiter">-&gt;</span>calls<span class="Delimiter">.</span>begin<span class="Delimiter">();</span>  p != Current_routine<span class="Delimiter">-&gt;</span>calls<span class="Delimiter">.</span><a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>  ++p<span class="Delimiter">)</span>
-<span id="L177" class="LineNr">177 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span><a href='026call.cc.html#L85'>current_recipe_name</a><span class="Delimiter">())</span> &lt;&lt; <span class="Constant">&quot;  &quot;</span> &lt;&lt; get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> p<span class="Delimiter">-&gt;</span>running_recipe<span class="Delimiter">).</span>name &lt;&lt; <span class="cSpecial">'\n'</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
-<span id="L178" class="LineNr">178 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
-<span id="L179" class="LineNr">179 </span>  <span class="Delimiter">}</span>
-<span id="L180" class="LineNr">180 </span>  <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">&quot;run&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;creating continuation &quot;</span> &lt;&lt; Next_delimited_continuation_id &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
-<span id="L181" class="LineNr">181 </span>  <a href='001help.cc.html#L221'>put</a><span class="Delimiter">(</span>Delimited_continuation<span class="Delimiter">,</span> Next_delimited_continuation_id<span class="Delimiter">,</span> delimited_continuation<span class="Delimiter">(</span>Current_routine<span class="Delimiter">-&gt;</span>calls<span class="Delimiter">.</span>begin<span class="Delimiter">(),</span> base<span class="Delimiter">));</span>
-<span id="L182" class="LineNr">182 </span>  <span class="Normal">while</span> <span class="Delimiter">(</span>Current_routine<span class="Delimiter">-&gt;</span>calls<span class="Delimiter">.</span>begin<span class="Delimiter">()</span> != base<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L183" class="LineNr">183 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>Trace_stream<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L184" class="LineNr">184 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> --Trace_stream<span class="Delimiter">-&gt;</span>callstack_depth<span class="Delimiter">;</span>
-<span id="L185" class="LineNr">185 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> assert<span class="Delimiter">(</span>Trace_stream<span class="Delimiter">-&gt;</span>callstack_depth &gt;= <span class="Constant">0</span><span class="Delimiter">);</span>
-<span id="L186" class="LineNr">186 </span>  <span class="Conceal">¦</span> <span class="Delimiter">}</span>
-<span id="L187" class="LineNr">187 </span>  <span class="Conceal">¦</span> Current_routine<span class="Delimiter">-&gt;</span>calls<span class="Delimiter">.</span>pop_front<span class="Delimiter">();</span>
-<span id="L188" class="LineNr">188 </span>  <span class="Delimiter">}</span>
-<span id="L189" class="LineNr">189 </span>  <span class="Comment">// return it as the result of the marked call</span>
-<span id="L190" class="LineNr">190 </span>  products<span class="Delimiter">.</span>resize<span class="Delimiter">(</span><span class="Constant">1</span><span class="Delimiter">);</span>
-<span id="L191" class="LineNr">191 </span>  products<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>push_back<span class="Delimiter">(</span>Next_delimited_continuation_id<span class="Delimiter">);</span>
-<span id="L192" class="LineNr">192 </span>  <span class="Comment">// return any other ingredients passed in</span>
-<span id="L193" class="LineNr">193 </span>  copy<span class="Delimiter">(</span>ingredients<span class="Delimiter">.</span>begin<span class="Delimiter">(),</span> ingredients<span class="Delimiter">.</span><a href='003trace.cc.html#L197'>end</a><span class="Delimiter">(),</span> inserter<span class="Delimiter">(</span>products<span class="Delimiter">,</span> products<span class="Delimiter">.</span><a href='003trace.cc.html#L197'>end</a><span class="Delimiter">()));</span>
-<span id="L194" class="LineNr">194 </span>  ++Next_delimited_continuation_id<span class="Delimiter">;</span>
-<span id="L195" class="LineNr">195 </span>  <span class="Identifier">break</span><span class="Delimiter">;</span>  <span class="Comment">// continue to process rest of marked call</span>
-<span id="L196" class="LineNr">196 </span><span class="Delimiter">}</span>
-<span id="L197" class="LineNr">197 </span>
-<span id="L198" class="LineNr">198 </span><span class="Delimiter">:(code)</span>
-<span id="L199" class="LineNr">199 </span>call_stack::iterator find_base_of_continuation<span class="Delimiter">(</span>call_stack&amp; c<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L200" class="LineNr">200 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span>call_stack::iterator p = c<span class="Delimiter">.</span>begin<span class="Delimiter">();</span> p != c<span class="Delimiter">.</span><a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span> ++p<span class="Delimiter">)</span>
-<span id="L201" class="LineNr">201 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>p<span class="Delimiter">-&gt;</span>is_base_of_continuation<span class="Delimiter">)</span> <span class="Identifier">return</span> p<span class="Delimiter">;</span>
-<span id="L202" class="LineNr">202 </span>  <span class="Identifier">return</span> c<span class="Delimiter">.</span><a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
-<span id="L203" class="LineNr">203 </span><span class="Delimiter">}</span>
-<span id="L204" class="LineNr">204 </span>
-<span id="L205" class="LineNr">205 </span><span class="Comment">//: overload 'call' for continuations</span>
-<span id="L206" class="LineNr">206 </span><span class="Delimiter">:(after &quot;Begin Call&quot;)</span>
-<span id="L207" class="LineNr">207 </span><span class="Normal">if</span> <span class="Delimiter">(</span>is_mu_continuation<span class="Delimiter">(</span><a href='026call.cc.html#L87'>current_instruction</a><span class="Delimiter">().</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">)))</span> <span class="Delimiter">{</span>
-<span id="L208" class="LineNr">208 </span>  <span class="Comment">// copy multiple calls on to current call stack</span>
-<span id="L209" class="LineNr">209 </span>  assert<span class="Delimiter">(</span>scalar<span class="Delimiter">(</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">)));</span>
-<span id="L210" class="LineNr">210 </span>  <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">&quot;run&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;calling continuation &quot;</span> &lt;&lt; ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">)</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
-<span id="L211" class="LineNr">211 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!contains_key<span class="Delimiter">(</span>Delimited_continuation<span class="Delimiter">,</span> ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">)))</span>
-<span id="L212" class="LineNr">212 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span><a href='026call.cc.html#L85'>current_recipe_name</a><span class="Delimiter">())</span> &lt;&lt; <span class="Constant">&quot;no such delimited continuation &quot;</span> &lt;&lt; <a href='026call.cc.html#L87'>current_instruction</a><span class="Delimiter">().</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>original_string &lt;&lt; <span class="cSpecial">'\n'</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
-<span id="L213" class="LineNr">213 </span>  <span class="Normal">const</span> call_stack&amp; new_frames = get<span class="Delimiter">(</span>Delimited_continuation<span class="Delimiter">,</span> ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">)).</span>frames<span class="Delimiter">;</span>
-<span id="L214" class="LineNr">214 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span>call_stack::const_reverse_iterator p = new_frames<span class="Delimiter">.</span>rbegin<span class="Delimiter">();</span> p != new_frames<span class="Delimiter">.</span>rend<span class="Delimiter">();</span> ++p<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L215" class="LineNr">215 </span>  <span class="Conceal">¦</span> Current_routine<span class="Delimiter">-&gt;</span>calls<span class="Delimiter">.</span>push_front<span class="Delimiter">(</span>*p<span class="Delimiter">);</span>
-<span id="L216" class="LineNr">216 </span>  <span class="Conceal">¦</span> <span class="Comment">// ensure that the presence of a continuation keeps its stack frames from being reclaimed</span>
-<span id="L217" class="LineNr">217 </span>  <span class="Conceal">¦</span> <a href='036refcount.cc.html#L50'>increment_refcount</a><span class="Delimiter">(</span>Current_routine<span class="Delimiter">-&gt;</span>calls<span class="Delimiter">.</span>front<span class="Delimiter">().</span>default_space<span class="Delimiter">);</span>
-<span id="L218" class="LineNr">218 </span>  <span class="Delimiter">}</span>
-<span id="L219" class="LineNr">219 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>Trace_stream<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L220" class="LineNr">220 </span>  <span class="Conceal">¦</span> Trace_stream<span class="Delimiter">-&gt;</span>callstack_depth += <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>new_frames<span class="Delimiter">);</span>
-<span id="L221" class="LineNr">221 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">&quot;trace&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;calling delimited continuation; growing callstack depth to &quot;</span> &lt;&lt; Trace_stream<span class="Delimiter">-&gt;</span>callstack_depth &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
-<span id="L222" class="LineNr">222 </span>  <span class="Conceal">¦</span> assert<span class="Delimiter">(</span>Trace_stream<span class="Delimiter">-&gt;</span>callstack_depth &lt; <span class="Constant">9000</span><span class="Delimiter">);</span>  <span class="Comment">// 9998-101 plus cushion</span>
-<span id="L223" class="LineNr">223 </span>  <span class="Delimiter">}</span>
-<span id="L224" class="LineNr">224 </span>  <span class="Comment">// no call housekeeping; continuations don't support next-ingredient</span>
-<span id="L225" class="LineNr">225 </span>  copy<span class="Delimiter">(</span><span class="Comment">/*</span><span class="Comment">drop continuation</span><span class="Comment">*/</span>++ingredients<span class="Delimiter">.</span>begin<span class="Delimiter">(),</span> ingredients<span class="Delimiter">.</span><a href='003trace.cc.html#L197'>end</a><span class="Delimiter">(),</span> inserter<span class="Delimiter">(</span>products<span class="Delimiter">,</span> products<span class="Delimiter">.</span>begin<span class="Delimiter">()));</span>
-<span id="L226" class="LineNr">226 </span>  <span class="Identifier">break</span><span class="Delimiter">;</span>  <span class="Comment">// record results of resuming 'return-continuation-until-mark' instruction</span>
-<span id="L227" class="LineNr">227 </span><span class="Delimiter">}</span>
-<span id="L228" class="LineNr">228 </span>
-<span id="L229" class="LineNr">229 </span><span class="Delimiter">:(scenario continuations_can_return_values)</span>
-<span id="L230" class="LineNr">230 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
-<span id="L231" class="LineNr">231 </span>  local-scope
-<span id="L232" class="LineNr">232 </span>  <span class="Normal">k</span>:continuation<span class="Delimiter">,</span> <span class="Constant">1</span>:num/<span class="Special">raw &lt;- </span>call-with-continuation-mark f
-<span id="L233" class="LineNr">233 </span>]
-<span id="L234" class="LineNr">234 </span><span class="muRecipe">def</span> f [
-<span id="L235" class="LineNr">235 </span>  local-scope
-<span id="L236" class="LineNr">236 </span>  g
-<span id="L237" class="LineNr">237 </span>]
-<span id="L238" class="LineNr">238 </span><span class="muRecipe">def</span> g [
-<span id="L239" class="LineNr">239 </span>  local-scope
-<span id="L240" class="LineNr">240 </span>  <span class="Identifier">return</span>-continuation-until-mark <span class="Constant">34</span>
-<span id="L241" class="LineNr">241 </span>  stash [continuation called]
-<span id="L242" class="LineNr">242 </span>]
-<span id="L243" class="LineNr">243 </span><span class="Comment"># entering main</span>
-<span id="L244" class="LineNr">244 </span><span class="traceContains">+mem: new alloc: 1000</span>
-<span id="L245" class="LineNr">245 </span><span class="traceContains">+run: {k: &quot;continuation&quot;}, {1: &quot;number&quot;, &quot;raw&quot;: ()} &lt;- call-with-continuation-mark {f: &quot;recipe-literal&quot;}</span>
-<span id="L246" class="LineNr">246 </span><span class="Comment"># entering f</span>
-<span id="L247" class="LineNr">247 </span><span class="traceContains">+mem: new alloc: 1004</span>
-<span id="L248" class="LineNr">248 </span><span class="Comment"># entering g</span>
-<span id="L249" class="LineNr">249 </span><span class="traceContains">+mem: new alloc: 1007</span>
-<span id="L250" class="LineNr">250 </span><span class="Comment"># return control to main</span>
-<span id="L251" class="LineNr">251 </span><span class="traceContains">+run: return-continuation-until-mark {34: &quot;literal&quot;}</span>
-<span id="L252" class="LineNr">252 </span><span class="Comment"># no allocs abandoned yet</span>
-<span id="L253" class="LineNr">253 </span><span class="traceContains">+mem: storing 34 in location 1</span>
-<span id="L254" class="LineNr">254 </span><span class="Comment"># end of main</span>
-<span id="L255" class="LineNr">255 </span><span class="Comment"># make sure no memory leaks..</span>
-<span id="L256" class="LineNr">256 </span><span class="traceContains">+mem: trying to reclaim local k:continuation</span>
-<span id="L257" class="LineNr">257 </span><span class="traceContains">+mem: automatically abandoning 1007</span>
-<span id="L258" class="LineNr">258 </span><span class="traceContains">+mem: automatically abandoning 1004</span>
-<span id="L259" class="LineNr">259 </span><span class="traceContains">+mem: automatically abandoning 1000</span>
-<span id="L260" class="LineNr">260 </span><span class="Comment"># ..even though we never called the continuation</span>
-<span id="L261" class="LineNr">261 </span><span class="traceAbsent">-app: continuation called</span>
-<span id="L262" class="LineNr">262 </span>
-<span id="L263" class="LineNr">263 </span><span class="Comment">//: Ensure that the presence of a continuation keeps its stack frames from being reclaimed.</span>
-<span id="L264" class="LineNr">264 </span>
-<span id="L265" class="LineNr">265 </span><span class="Delimiter">:(scenario continuations_preserve_local_scopes)</span>
-<span id="L266" class="LineNr">266 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
-<span id="L267" class="LineNr">267 </span>  local-scope
-<span id="L268" class="LineNr">268 </span>  <span class="Normal">k</span>:continuation<span class="Special"> &lt;- </span>call-with-continuation-mark f
-<span id="L269" class="LineNr">269 </span>  call k
-<span id="L270" class="LineNr">270 </span>  <span class="Identifier">return</span> <span class="Constant">34</span>
-<span id="L271" class="LineNr">271 </span>]
-<span id="L272" class="LineNr">272 </span><span class="muRecipe">def</span> f [
-<span id="L273" class="LineNr">273 </span>  local-scope
-<span id="L274" class="LineNr">274 </span>  g
-<span id="L275" class="LineNr">275 </span>]
-<span id="L276" class="LineNr">276 </span><span class="muRecipe">def</span> g [
-<span id="L277" class="LineNr">277 </span>  local-scope
-<span id="L278" class="LineNr">278 </span>  <span class="Identifier">return</span>-continuation-until-mark
-<span id="L279" class="LineNr">279 </span>  add <span class="Constant">1</span><span class="Delimiter">,</span> <span class="Constant">1</span>
-<span id="L280" class="LineNr">280 </span>]
-<span id="L281" class="LineNr">281 </span><span class="Comment"># entering main</span>
-<span id="L282" class="LineNr">282 </span><span class="traceContains">+mem: new alloc: 1000</span>
-<span id="L283" class="LineNr">283 </span><span class="traceContains">+run: {k: &quot;continuation&quot;} &lt;- call-with-continuation-mark {f: &quot;recipe-literal&quot;}</span>
-<span id="L284" class="LineNr">284 </span><span class="Comment"># entering f</span>
-<span id="L285" class="LineNr">285 </span><span class="traceContains">+mem: new alloc: 1004</span>
-<span id="L286" class="LineNr">286 </span><span class="Comment"># entering g</span>
-<span id="L287" class="LineNr">287 </span><span class="traceContains">+mem: new alloc: 1007</span>
-<span id="L288" class="LineNr">288 </span><span class="Comment"># return control to main</span>
-<span id="L289" class="LineNr">289 </span><span class="traceContains">+run: return-continuation-until-mark</span>
-<span id="L290" class="LineNr">290 </span><span class="Comment"># no allocs abandoned yet</span>
-<span id="L291" class="LineNr">291 </span><span class="Comment"># finish running main</span>
-<span id="L292" class="LineNr">292 </span><span class="traceContains">+run: call {k: &quot;continuation&quot;}</span>
-<span id="L293" class="LineNr">293 </span><span class="traceContains">+run: add {1: &quot;literal&quot;}, {1: &quot;literal&quot;}</span>
-<span id="L294" class="LineNr">294 </span><span class="traceContains">+run: return {34: &quot;literal&quot;}</span>
-<span id="L295" class="LineNr">295 </span><span class="Comment"># now k is reclaimed</span>
-<span id="L296" class="LineNr">296 </span><span class="traceContains">+mem: trying to reclaim local k:continuation</span>
-<span id="L297" class="LineNr">297 </span><span class="Comment"># at this point all allocs in the continuation are abandoned</span>
-<span id="L298" class="LineNr">298 </span><span class="traceContains">+mem: automatically abandoning 1007</span>
-<span id="L299" class="LineNr">299 </span><span class="traceContains">+mem: automatically abandoning 1004</span>
-<span id="L300" class="LineNr">300 </span><span class="Comment"># finally the alloc for main is abandoned</span>
-<span id="L301" class="LineNr">301 </span><span class="traceContains">+mem: automatically abandoning 1000</span>
-<span id="L302" class="LineNr">302 </span>
-<span id="L303" class="LineNr">303 </span><span class="Delimiter">:(before &quot;End Increment Refcounts(canonized_x)&quot;)</span>
-<span id="L304" class="LineNr">304 </span><span class="Normal">if</span> <span class="Delimiter">(</span>is_mu_continuation<span class="Delimiter">(</span>canonized_x<span class="Delimiter">))</span> <span class="Delimiter">{</span>
-<span id="L305" class="LineNr">305 </span>  <span class="Normal">int</span> continuation_id = data<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">);</span>
-<span id="L306" class="LineNr">306 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>continuation_id == <span class="Constant">0</span><span class="Delimiter">)</span> <span class="Identifier">return</span><span class="Delimiter">;</span>
-<span id="L307" class="LineNr">307 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!contains_key<span class="Delimiter">(</span>Delimited_continuation<span class="Delimiter">,</span> continuation_id<span class="Delimiter">))</span> <span class="Delimiter">{</span>
-<span id="L308" class="LineNr">308 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span><a href='026call.cc.html#L85'>current_recipe_name</a><span class="Delimiter">())</span> &lt;&lt; <span class="Constant">&quot;missing delimited continuation: &quot;</span> &lt;&lt; canonized_x<span class="Delimiter">.</span>name &lt;&lt; <span class="cSpecial">'\n'</span><span class="Delimiter">;</span>
-<span id="L309" class="LineNr">309 </span>  <span class="Conceal">¦</span> <span class="Identifier">return</span><span class="Delimiter">;</span>
-<span id="L310" class="LineNr">310 </span>  <span class="Delimiter">}</span>
-<span id="L311" class="LineNr">311 </span>  delimited_continuation&amp; curr = get<span class="Delimiter">(</span>Delimited_continuation<span class="Delimiter">,</span> continuation_id<span class="Delimiter">);</span>
-<span id="L312" class="LineNr">312 </span>  <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">&quot;run&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;incrementing refcount of continuation &quot;</span> &lt;&lt; continuation_id &lt;&lt; <span class="Constant">&quot;: &quot;</span> &lt;&lt; curr<span class="Delimiter">.</span>nrefs &lt;&lt; <span class="Constant">&quot; -&gt; &quot;</span> &lt;&lt; <span class="Constant">1</span>+curr<span class="Delimiter">.</span>nrefs &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
-<span id="L313" class="LineNr">313 </span>  ++curr<span class="Delimiter">.</span>nrefs<span class="Delimiter">;</span>
-<span id="L314" class="LineNr">314 </span>  <span class="Identifier">return</span><span class="Delimiter">;</span>
-<span id="L315" class="LineNr">315 </span><span class="Delimiter">}</span>
-<span id="L316" class="LineNr">316 </span>
-<span id="L317" class="LineNr">317 </span><span class="Delimiter">:(before &quot;End Decrement Refcounts(canonized_x)&quot;)</span>
-<span id="L318" class="LineNr">318 </span><span class="Normal">if</span> <span class="Delimiter">(</span>is_mu_continuation<span class="Delimiter">(</span>canonized_x<span class="Delimiter">))</span> <span class="Delimiter">{</span>
-<span id="L319" class="LineNr">319 </span>  <span class="Normal">int</span> continuation_id = <a href='001help.cc.html#L229'>get_or_insert</a><span class="Delimiter">(</span>Memory<span class="Delimiter">,</span> canonized_x<span class="Delimiter">.</span>value<span class="Delimiter">);</span>
-<span id="L320" class="LineNr">320 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>continuation_id == <span class="Constant">0</span><span class="Delimiter">)</span> <span class="Identifier">return</span><span class="Delimiter">;</span>
-<span id="L321" class="LineNr">321 </span>  delimited_continuation&amp; curr = get<span class="Delimiter">(</span>Delimited_continuation<span class="Delimiter">,</span> continuation_id<span class="Delimiter">);</span>
-<span id="L322" class="LineNr">322 </span>  assert<span class="Delimiter">(</span>curr<span class="Delimiter">.</span>nrefs &gt; <span class="Constant">0</span><span class="Delimiter">);</span>
-<span id="L323" class="LineNr">323 </span>  --curr<span class="Delimiter">.</span>nrefs<span class="Delimiter">;</span>
-<span id="L324" class="LineNr">324 </span>  <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">&quot;run&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;decrementing refcount of continuation &quot;</span> &lt;&lt; continuation_id &lt;&lt; <span class="Constant">&quot;: &quot;</span> &lt;&lt; <span class="Constant">1</span>+curr<span class="Delimiter">.</span>nrefs &lt;&lt; <span class="Constant">&quot; -&gt; &quot;</span> &lt;&lt; curr<span class="Delimiter">.</span>nrefs &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
-<span id="L325" class="LineNr">325 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>curr<span class="Delimiter">.</span>nrefs &gt; <span class="Constant">0</span><span class="Delimiter">)</span> <span class="Identifier">return</span><span class="Delimiter">;</span>
-<span id="L326" class="LineNr">326 </span>  <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">&quot;run&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;reclaiming continuation &quot;</span> &lt;&lt; continuation_id &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
-<span id="L327" class="LineNr">327 </span>  <span class="Comment">// temporarily push the stack frames for the continuation to the call stack before reclaiming their spaces</span>
-<span id="L328" class="LineNr">328 </span>  <span class="Comment">// (because reclaim_default_space() relies on the default-space being reclaimed being at the top of the stack)</span>
-<span id="L329" class="LineNr">329 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span>call_stack::const_iterator p = curr<span class="Delimiter">.</span>frames<span class="Delimiter">.</span>begin<span class="Delimiter">();</span> p != curr<span class="Delimiter">.</span>frames<span class="Delimiter">.</span><a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span> ++p<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L330" class="LineNr">330 </span>  <span class="Conceal">¦</span> Current_routine<span class="Delimiter">-&gt;</span>calls<span class="Delimiter">.</span>push_front<span class="Delimiter">(</span>*p<span class="Delimiter">);</span>
-<span id="L331" class="LineNr">331 </span>  <span class="Conceal">¦</span> <a href='043space.cc.html#L244'>reclaim_default_space</a><span class="Delimiter">();</span>
-<span id="L332" class="LineNr">332 </span>  <span class="Conceal">¦</span> Current_routine<span class="Delimiter">-&gt;</span>calls<span class="Delimiter">.</span>pop_front<span class="Delimiter">();</span>
-<span id="L333" class="LineNr">333 </span>  <span class="Delimiter">}</span>
-<span id="L334" class="LineNr">334 </span>  Delimited_continuation<span class="Delimiter">.</span>erase<span class="Delimiter">(</span>continuation_id<span class="Delimiter">);</span>
-<span id="L335" class="LineNr">335 </span>  <span class="Identifier">return</span><span class="Delimiter">;</span>
-<span id="L336" class="LineNr">336 </span><span class="Delimiter">}</span>
-<span id="L337" class="LineNr">337 </span>
-<span id="L338" class="LineNr">338 </span><span class="Delimiter">:(code)</span>
-<span id="L339" class="LineNr">339 </span><span class="Normal">bool</span> is_mu_continuation<span class="Delimiter">(</span>reagent<span class="Comment">/*</span><span class="Comment">copy</span><span class="Comment">*/</span> x<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L340" class="LineNr">340 </span>  canonize_type<span class="Delimiter">(</span>x<span class="Delimiter">);</span>
-<span id="L341" class="LineNr">341 </span>  <span class="Identifier">return</span> x<span class="Delimiter">.</span>type &amp;&amp; x<span class="Delimiter">.</span>type<span class="Delimiter">-&gt;</span>atom &amp;&amp; x<span class="Delimiter">.</span>type<span class="Delimiter">-&gt;</span>value == get<span class="Delimiter">(</span>Type_ordinal<span class="Delimiter">,</span> <span class="Constant">&quot;continuation&quot;</span><span class="Delimiter">);</span>
-<span id="L342" class="LineNr">342 </span><span class="Delimiter">}</span>
-<span id="L343" class="LineNr">343 </span>
-<span id="L344" class="LineNr">344 </span><span class="Delimiter">:(scenario continuations_can_be_copied)</span>
-<span id="L345" class="LineNr">345 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
-<span id="L346" class="LineNr">346 </span>  local-scope
-<span id="L347" class="LineNr">347 </span>  <span class="Normal">k</span>:continuation<span class="Special"> &lt;- </span>call-with-continuation-mark f
-<span id="L348" class="LineNr">348 </span>  <span class="Normal">k2</span>:continuation<span class="Special"> &lt;- </span>copy k
-<span id="L349" class="LineNr">349 </span>  <span class="Comment"># reclaiming k and k2 shouldn't delete f's local scope twice</span>
-<span id="L350" class="LineNr">350 </span>]
-<span id="L351" class="LineNr">351 </span><span class="muRecipe">def</span> f [
-<span id="L352" class="LineNr">352 </span>  local-scope
-<span id="L353" class="LineNr">353 </span>  load-ingredients
-<span id="L354" class="LineNr">354 </span>  <span class="Identifier">return</span>-continuation-until-mark
-<span id="L355" class="LineNr">355 </span>  <span class="Identifier">return</span> <span class="Constant">0</span>
-<span id="L356" class="LineNr">356 </span>]
-<span id="L357" class="LineNr">357 </span>$error: <span class="Constant">0</span>
+<span id="L166" class="LineNr">166 </span>  <span class="Comment">// I don't know how to think about next-ingredient in combination with</span>
+<span id="L167" class="LineNr">167 </span>  <span class="Comment">// continuations, so seems cleaner to just kill it. Functions have to read</span>
+<span id="L168" class="LineNr">168 </span>  <span class="Comment">// their inputs before ever returning a continuation.</span>
+<span id="L169" class="LineNr">169 </span>  Current_routine<span class="Delimiter">-&gt;</span>calls<span class="Delimiter">.</span>front<span class="Delimiter">().</span>ingredient_atoms<span class="Delimiter">.</span><a href='050scenario.cc.html#L60'>clear</a><span class="Delimiter">();</span>
+<span id="L170" class="LineNr">170 </span>  Current_routine<span class="Delimiter">-&gt;</span>calls<span class="Delimiter">.</span>front<span class="Delimiter">().</span>next_ingredient_to_process = <span class="Constant">0</span><span class="Delimiter">;</span>
+<span id="L171" class="LineNr">171 </span>  <span class="Comment">// copy the current call stack until the most recent marked call</span>
+<span id="L172" class="LineNr">172 </span>  call_stack::iterator find_base_of_continuation<span class="Delimiter">(</span>call_stack&amp; c<span class="Delimiter">);</span>  <span class="Comment">// manual prototype containing '::'</span>
+<span id="L173" class="LineNr">173 </span>  call_stack::iterator base = find_base_of_continuation<span class="Delimiter">(</span>Current_routine<span class="Delimiter">-&gt;</span>calls<span class="Delimiter">);</span>
+<span id="L174" class="LineNr">174 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>base == Current_routine<span class="Delimiter">-&gt;</span>calls<span class="Delimiter">.</span><a href='003trace.cc.html#L203'>end</a><span class="Delimiter">())</span> <span class="Delimiter">{</span>
+<span id="L175" class="LineNr">175 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span><a href='026call.cc.html#L87'>current_recipe_name</a><span class="Delimiter">())</span> &lt;&lt; <span class="Constant">&quot;couldn't find a 'call-with-continuation-mark' to return to</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; end<span class="Delimiter">();</span>
+<span id="L176" class="LineNr">176 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span><a href='026call.cc.html#L87'>current_recipe_name</a><span class="Delimiter">())</span> &lt;&lt; <span class="Constant">&quot;call stack:</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
+<span id="L177" class="LineNr">177 </span>  <span class="Conceal">¦</span> <span class="Normal">for</span> <span class="Delimiter">(</span>call_stack::iterator p = Current_routine<span class="Delimiter">-&gt;</span>calls<span class="Delimiter">.</span>begin<span class="Delimiter">();</span>  p != Current_routine<span class="Delimiter">-&gt;</span>calls<span class="Delimiter">.</span><a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>  ++p<span class="Delimiter">)</span>
+<span id="L178" class="LineNr">178 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span><a href='026call.cc.html#L87'>current_recipe_name</a><span class="Delimiter">())</span> &lt;&lt; <span class="Constant">&quot;  &quot;</span> &lt;&lt; get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> p<span class="Delimiter">-&gt;</span>running_recipe<span class="Delimiter">).</span>name &lt;&lt; <span class="cSpecial">'\n'</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
+<span id="L179" class="LineNr">179 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
+<span id="L180" class="LineNr">180 </span>  <span class="Delimiter">}</span>
+<span id="L181" class="LineNr">181 </span>  <a href='003trace.cc.html#L167'>trace</a><span class="Delimiter">(</span><span class="Constant">&quot;run&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;creating continuation &quot;</span> &lt;&lt; Next_delimited_continuation_id &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
+<span id="L182" class="LineNr">182 </span>  <a href='001help.cc.html#L221'>put</a><span class="Delimiter">(</span>Delimited_continuation<span class="Delimiter">,</span> Next_delimited_continuation_id<span class="Delimiter">,</span> delimited_continuation<span class="Delimiter">(</span>Current_routine<span class="Delimiter">-&gt;</span>calls<span class="Delimiter">.</span>begin<span class="Delimiter">(),</span> base<span class="Delimiter">));</span>
+<span id="L183" class="LineNr">183 </span>  <span class="Normal">while</span> <span class="Delimiter">(</span>Current_routine<span class="Delimiter">-&gt;</span>calls<span class="Delimiter">.</span>begin<span class="Delimiter">()</span> != base<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L184" class="LineNr">184 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>Trace_stream<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L185" class="LineNr">185 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> --Trace_stream<span class="Delimiter">-&gt;</span>callstack_depth<span class="Delimiter">;</span>
+<span id="L186" class="LineNr">186 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> assert<span class="Delimiter">(</span>Trace_stream<span class="Delimiter">-&gt;</span>callstack_depth &gt;= <span class="Constant">0</span><span class="Delimiter">);</span>
+<span id="L187" class="LineNr">187 </span>  <span class="Conceal">¦</span> <span class="Delimiter">}</span>
+<span id="L188" class="LineNr">188 </span>  <span class="Conceal">¦</span> Current_routine<span class="Delimiter">-&gt;</span>calls<span class="Delimiter">.</span>pop_front<span class="Delimiter">();</span>
+<span id="L189" class="LineNr">189 </span>  <span class="Delimiter">}</span>
+<span id="L190" class="LineNr">190 </span>  <span class="Comment">// return it as the result of the marked call</span>
+<span id="L191" class="LineNr">191 </span>  products<span class="Delimiter">.</span>resize<span class="Delimiter">(</span><span class="Constant">1</span><span class="Delimiter">);</span>
+<span id="L192" class="LineNr">192 </span>  products<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>push_back<span class="Delimiter">(</span>Next_delimited_continuation_id<span class="Delimiter">);</span>
+<span id="L193" class="LineNr">193 </span>  <span class="Comment">// return any other ingredients passed in</span>
+<span id="L194" class="LineNr">194 </span>  copy<span class="Delimiter">(</span>ingredients<span class="Delimiter">.</span>begin<span class="Delimiter">(),</span> ingredients<span class="Delimiter">.</span><a href='003trace.cc.html#L203'>end</a><span class="Delimiter">(),</span> inserter<span class="Delimiter">(</span>products<span class="Delimiter">,</span> products<span class="Delimiter">.</span><a href='003trace.cc.html#L203'>end</a><span class="Delimiter">()));</span>
+<span id="L195" class="LineNr">195 </span>  ++Next_delimited_continuation_id<span class="Delimiter">;</span>
+<span id="L196" class="LineNr">196 </span>  <span class="Identifier">break</span><span class="Delimiter">;</span>  <span class="Comment">// continue to process rest of marked call</span>
+<span id="L197" class="LineNr">197 </span><span class="Delimiter">}</span>
+<span id="L198" class="LineNr">198 </span>
+<span id="L199" class="LineNr">199 </span><span class="Delimiter">:(code)</span>
+<span id="L200" class="LineNr">200 </span>call_stack::iterator find_base_of_continuation<span class="Delimiter">(</span>call_stack&amp; c<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L201" class="LineNr">201 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span>call_stack::iterator p = c<span class="Delimiter">.</span>begin<span class="Delimiter">();</span> p != c<span class="Delimiter">.</span><a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span> ++p<span class="Delimiter">)</span>
+<span id="L202" class="LineNr">202 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>p<span class="Delimiter">-&gt;</span>is_base_of_continuation<span class="Delimiter">)</span> <span class="Identifier">return</span> p<span class="Delimiter">;</span>
+<span id="L203" class="LineNr">203 </span>  <span class="Identifier">return</span> c<span class="Delimiter">.</span><a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
+<span id="L204" class="LineNr">204 </span><span class="Delimiter">}</span>
+<span id="L205" class="LineNr">205 </span>
+<span id="L206" class="LineNr">206 </span><span class="Comment">//: overload 'call' for continuations</span>
+<span id="L207" class="LineNr">207 </span><span class="Delimiter">:(after &quot;Begin Call&quot;)</span>
+<span id="L208" class="LineNr">208 </span><span class="Normal">if</span> <span class="Delimiter">(</span>is_mu_continuation<span class="Delimiter">(</span><a href='026call.cc.html#L89'>current_instruction</a><span class="Delimiter">().</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">)))</span> <span class="Delimiter">{</span>
+<span id="L209" class="LineNr">209 </span>  <span class="Comment">// copy multiple calls on to current call stack</span>
+<span id="L210" class="LineNr">210 </span>  assert<span class="Delimiter">(</span>scalar<span class="Delimiter">(</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">)));</span>
+<span id="L211" class="LineNr">211 </span>  <a href='003trace.cc.html#L167'>trace</a><span class="Delimiter">(</span><span class="Constant">&quot;run&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;calling continuation &quot;</span> &lt;&lt; ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">)</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
+<span id="L212" class="LineNr">212 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!contains_key<span class="Delimiter">(</span>Delimited_continuation<span class="Delimiter">,</span> ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">)))</span>
+<span id="L213" class="LineNr">213 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span><a href='026call.cc.html#L87'>current_recipe_name</a><span class="Delimiter">())</span> &lt;&lt; <span class="Constant">&quot;no such delimited continuation &quot;</span> &lt;&lt; <a href='026call.cc.html#L89'>current_instruction</a><span class="Delimiter">().</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>original_string &lt;&lt; <span class="cSpecial">'\n'</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
+<span id="L214" class="LineNr">214 </span>  <span class="Normal">const</span> call_stack&amp; new_frames = get<span class="Delimiter">(</span>Delimited_continuation<span class="Delimiter">,</span> ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">)).</span>frames<span class="Delimiter">;</span>
+<span id="L215" class="LineNr">215 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span>call_stack::const_reverse_iterator p = new_frames<span class="Delimiter">.</span>rbegin<span class="Delimiter">();</span> p != new_frames<span class="Delimiter">.</span>rend<span class="Delimiter">();</span> ++p<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L216" class="LineNr">216 </span>  <span class="Conceal">¦</span> Current_routine<span class="Delimiter">-&gt;</span>calls<span class="Delimiter">.</span>push_front<span class="Delimiter">(</span>*p<span class="Delimiter">);</span>
+<span id="L217" class="LineNr">217 </span>  <span class="Conceal">¦</span> <span class="Comment">// ensure that the presence of a continuation keeps its stack frames from being reclaimed</span>
+<span id="L218" class="LineNr">218 </span>  <span class="Conceal">¦</span> <a href='036refcount.cc.html#L50'>increment_refcount</a><span class="Delimiter">(</span>Current_routine<span class="Delimiter">-&gt;</span>calls<span class="Delimiter">.</span>front<span class="Delimiter">().</span>default_space<span class="Delimiter">);</span>
+<span id="L219" class="LineNr">219 </span>  <span class="Delimiter">}</span>
+<span id="L220" class="LineNr">220 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>Trace_stream<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L221" class="LineNr">221 </span>  <span class="Conceal">¦</span> Trace_stream<span class="Delimiter">-&gt;</span>callstack_depth += <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>new_frames<span class="Delimiter">);</span>
+<span id="L222" class="LineNr">222 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L167'>trace</a><span class="Delimiter">(</span><span class="Constant">&quot;trace&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;calling delimited continuation; growing callstack depth to &quot;</span> &lt;&lt; Trace_stream<span class="Delimiter">-&gt;</span>callstack_depth &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
+<span id="L223" class="LineNr">223 </span>  <span class="Conceal">¦</span> assert<span class="Delimiter">(</span>Trace_stream<span class="Delimiter">-&gt;</span>callstack_depth &lt; <span class="Constant">9000</span><span class="Delimiter">);</span>  <span class="Comment">// 9998-101 plus cushion</span>
+<span id="L224" class="LineNr">224 </span>  <span class="Delimiter">}</span>
+<span id="L225" class="LineNr">225 </span>  <span class="Comment">// no call housekeeping; continuations don't support next-ingredient</span>
+<span id="L226" class="LineNr">226 </span>  copy<span class="Delimiter">(</span><span class="Comment">/*</span><span class="Comment">drop continuation</span><span class="Comment">*/</span>++ingredients<span class="Delimiter">.</span>begin<span class="Delimiter">(),</span> ingredients<span class="Delimiter">.</span><a href='003trace.cc.html#L203'>end</a><span class="Delimiter">(),</span> inserter<span class="Delimiter">(</span>products<span class="Delimiter">,</span> products<span class="Delimiter">.</span>begin<span class="Delimiter">()));</span>
+<span id="L227" class="LineNr">227 </span>  <span class="Identifier">break</span><span class="Delimiter">;</span>  <span class="Comment">// record results of resuming 'return-continuation-until-mark' instruction</span>
+<span id="L228" class="LineNr">228 </span><span class="Delimiter">}</span>
+<span id="L229" class="LineNr">229 </span>
+<span id="L230" class="LineNr">230 </span><span class="Delimiter">:(scenario continuations_can_return_values)</span>
+<span id="L231" class="LineNr">231 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
+<span id="L232" class="LineNr">232 </span>  local-scope
+<span id="L233" class="LineNr">233 </span>  <span class="Normal">k</span>:continuation<span class="Delimiter">,</span> <span class="Constant">1</span>:num/<span class="Special">raw &lt;- </span>call-with-continuation-mark f
+<span id="L234" class="LineNr">234 </span>]
+<span id="L235" class="LineNr">235 </span><span class="muRecipe">def</span> f [
+<span id="L236" class="LineNr">236 </span>  local-scope
+<span id="L237" class="LineNr">237 </span>  g
+<span id="L238" class="LineNr">238 </span>]
+<span id="L239" class="LineNr">239 </span><span class="muRecipe">def</span> g [
+<span id="L240" class="LineNr">240 </span>  local-scope
+<span id="L241" class="LineNr">241 </span>  <span class="Identifier">return</span>-continuation-until-mark <span class="Constant">34</span>
+<span id="L242" class="LineNr">242 </span>  stash [continuation called]
+<span id="L243" class="LineNr">243 </span>]
+<span id="L244" class="LineNr">244 </span><span class="Comment"># entering main</span>
+<span id="L245" class="LineNr">245 </span><span class="traceContains">+mem: new alloc: 1000</span>
+<span id="L246" class="LineNr">246 </span><span class="traceContains">+run: {k: &quot;continuation&quot;}, {1: &quot;number&quot;, &quot;raw&quot;: ()} &lt;- call-with-continuation-mark {f: &quot;recipe-literal&quot;}</span>
+<span id="L247" class="LineNr">247 </span><span class="Comment"># entering f</span>
+<span id="L248" class="LineNr">248 </span><span class="traceContains">+mem: new alloc: 1004</span>
+<span id="L249" class="LineNr">249 </span><span class="Comment"># entering g</span>
+<span id="L250" class="LineNr">250 </span><span class="traceContains">+mem: new alloc: 1007</span>
+<span id="L251" class="LineNr">251 </span><span class="Comment"># return control to main</span>
+<span id="L252" class="LineNr">252 </span><span class="traceContains">+run: return-continuation-until-mark {34: &quot;literal&quot;}</span>
+<span id="L253" class="LineNr">253 </span><span class="Comment"># no allocs abandoned yet</span>
+<span id="L254" class="LineNr">254 </span><span class="traceContains">+mem: storing 34 in location 1</span>
+<span id="L255" class="LineNr">255 </span><span class="Comment"># end of main</span>
+<span id="L256" class="LineNr">256 </span><span class="Comment"># make sure no memory leaks..</span>
+<span id="L257" class="LineNr">257 </span><span class="traceContains">+mem: trying to reclaim local k:continuation</span>
+<span id="L258" class="LineNr">258 </span><span class="traceContains">+mem: automatically abandoning 1007</span>
+<span id="L259" class="LineNr">259 </span><span class="traceContains">+mem: automatically abandoning 1004</span>
+<span id="L260" class="LineNr">260 </span><span class="traceContains">+mem: automatically abandoning 1000</span>
+<span id="L261" class="LineNr">261 </span><span class="Comment"># ..even though we never called the continuation</span>
+<span id="L262" class="LineNr">262 </span><span class="traceAbsent">-app: continuation called</span>
+<span id="L263" class="LineNr">263 </span>
+<span id="L264" class="LineNr">264 </span><span class="Comment">//: Allow shape-shifting recipes to return continuations.</span>
+<span id="L265" class="LineNr">265 </span>
+<span id="L266" class="LineNr">266 </span><span class="Delimiter">:(scenario call_shape_shifting_recipe_with_continuation_mark)</span>
+<span id="L267" class="LineNr">267 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
+<span id="L268" class="LineNr">268 </span>  <span class="Constant">1</span>:num<span class="Special"> &lt;- </span>call-with-continuation-mark f<span class="Delimiter">,</span> <span class="Constant">34</span>
+<span id="L269" class="LineNr">269 </span>]
+<span id="L270" class="LineNr">270 </span><span class="muRecipe">def</span> f x:_elem<span class="muRecipe"> -&gt; </span>y:_elem [
+<span id="L271" class="LineNr">271 </span>  local-scope
+<span id="L272" class="LineNr">272 </span>  load-ingredients
+<span id="L273" class="LineNr">273 </span>  y<span class="Special"> &lt;- </span>copy x
+<span id="L274" class="LineNr">274 </span>]
+<span id="L275" class="LineNr">275 </span><span class="traceContains">+mem: storing 34 in location 1</span>
+<span id="L276" class="LineNr">276 </span>
+<span id="L277" class="LineNr">277 </span><span class="Delimiter">:(before &quot;End resolve_ambiguous_call(r, index, inst, caller_recipe) Special-cases&quot;)</span>
+<span id="L278" class="LineNr">278 </span><span class="Normal">if</span> <span class="Delimiter">(</span>inst<span class="Delimiter">.</span>name == <span class="Constant">&quot;call-with-continuation-mark&quot;</span> &amp;&amp; <a href='072recipe.cc.html#L213'>first_ingredient_is_recipe_literal</a><span class="Delimiter">(</span>inst<span class="Delimiter">))</span> <span class="Delimiter">{</span>
+<span id="L279" class="LineNr">279 </span>  <a href='072recipe.cc.html#L218'>resolve_indirect_ambiguous_call</a><span class="Delimiter">(</span>r<span class="Delimiter">,</span> index<span class="Delimiter">,</span> inst<span class="Delimiter">,</span> caller_recipe<span class="Delimiter">);</span>
+<span id="L280" class="LineNr">280 </span>  <span class="Identifier">return</span><span class="Delimiter">;</span>
+<span id="L281" class="LineNr">281 </span><span class="Delimiter">}</span>
+<span id="L282" class="LineNr">282 </span>
+<span id="L283" class="LineNr">283 </span><span class="Delimiter">:(scenario call_shape_shifting_recipe_with_continuation_mark_and_no_outputs)</span>
+<span id="L284" class="LineNr">284 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
+<span id="L285" class="LineNr">285 </span>  <span class="Constant">1</span>:continuation<span class="Special"> &lt;- </span>call-with-continuation-mark f<span class="Delimiter">,</span> <span class="Constant">34</span>
+<span id="L286" class="LineNr">286 </span>]
+<span id="L287" class="LineNr">287 </span><span class="muRecipe">def</span> f x:_elem [
+<span id="L288" class="LineNr">288 </span>  local-scope
+<span id="L289" class="LineNr">289 </span>  load-ingredients
+<span id="L290" class="LineNr">290 </span>  <span class="Identifier">return</span>-continuation-until-mark
+<span id="L291" class="LineNr">291 </span>]
+<span id="L292" class="LineNr">292 </span>$error: <span class="Constant">0</span>
+<span id="L293" class="LineNr">293 </span>
+<span id="L294" class="LineNr">294 </span><span class="Comment">//: Ensure that the presence of a continuation keeps its stack frames from being reclaimed.</span>
+<span id="L295" class="LineNr">295 </span>
+<span id="L296" class="LineNr">296 </span><span class="Delimiter">:(scenario continuations_preserve_local_scopes)</span>
+<span id="L297" class="LineNr">297 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
+<span id="L298" class="LineNr">298 </span>  local-scope
+<span id="L299" class="LineNr">299 </span>  <span class="Normal">k</span>:continuation<span class="Special"> &lt;- </span>call-with-continuation-mark f
+<span id="L300" class="LineNr">300 </span>  call k
+<span id="L301" class="LineNr">301 </span>  <span class="Identifier">return</span> <span class="Constant">34</span>
+<span id="L302" class="LineNr">302 </span>]
+<span id="L303" class="LineNr">303 </span><span class="muRecipe">def</span> f [
+<span id="L304" class="LineNr">304 </span>  local-scope
+<span id="L305" class="LineNr">305 </span>  g
+<span id="L306" class="LineNr">306 </span>]
+<span id="L307" class="LineNr">307 </span><span class="muRecipe">def</span> g [
+<span id="L308" class="LineNr">308 </span>  local-scope
+<span id="L309" class="LineNr">309 </span>  <span class="Identifier">return</span>-continuation-until-mark
+<span id="L310" class="LineNr">310 </span>  add <span class="Constant">1</span><span class="Delimiter">,</span> <span class="Constant">1</span>
+<span id="L311" class="LineNr">311 </span>]
+<span id="L312" class="LineNr">312 </span><span class="Comment"># entering main</span>
+<span id="L313" class="LineNr">313 </span><span class="traceContains">+mem: new alloc: 1000</span>
+<span id="L314" class="LineNr">314 </span><span class="traceContains">+run: {k: &quot;continuation&quot;} &lt;- call-with-continuation-mark {f: &quot;recipe-literal&quot;}</span>
+<span id="L315" class="LineNr">315 </span><span class="Comment"># entering f</span>
+<span id="L316" class="LineNr">316 </span><span class="traceContains">+mem: new alloc: 1004</span>
+<span id="L317" class="LineNr">317 </span><span class="Comment"># entering g</span>
+<span id="L318" class="LineNr">318 </span><span class="traceContains">+mem: new alloc: 1007</span>
+<span id="L319" class="LineNr">319 </span><span class="Comment"># return control to main</span>
+<span id="L320" class="LineNr">320 </span><span class="traceContains">+run: return-continuation-until-mark</span>
+<span id="L321" class="LineNr">321 </span><span class="Comment"># no allocs abandoned yet</span>
+<span id="L322" class="LineNr">322 </span><span class="Comment"># finish running main</span>
+<span id="L323" class="LineNr">323 </span><span class="traceContains">+run: call {k: &quot;continuation&quot;}</span>
+<span id="L324" class="LineNr">324 </span><span class="traceContains">+run: add {1: &quot;literal&quot;}, {1: &quot;literal&quot;}</span>
+<span id="L325" class="LineNr">325 </span><span class="traceContains">+run: return {34: &quot;literal&quot;}</span>
+<span id="L326" class="LineNr">326 </span><span class="Comment"># now k is reclaimed</span>
+<span id="L327" class="LineNr">327 </span><span class="traceContains">+mem: trying to reclaim local k:continuation</span>
+<span id="L328" class="LineNr">328 </span><span class="Comment"># at this point all allocs in the continuation are abandoned</span>
+<span id="L329" class="LineNr">329 </span><span class="traceContains">+mem: automatically abandoning 1007</span>
+<span id="L330" class="LineNr">330 </span><span class="traceContains">+mem: automatically abandoning 1004</span>
+<span id="L331" class="LineNr">331 </span><span class="Comment"># finally the alloc for main is abandoned</span>
+<span id="L332" class="LineNr">332 </span><span class="traceContains">+mem: automatically abandoning 1000</span>
+<span id="L333" class="LineNr">333 </span>
+<span id="L334" class="LineNr">334 </span><span class="Delimiter">:(before &quot;End Increment Refcounts(canonized_x)&quot;)</span>
+<span id="L335" class="LineNr">335 </span><span class="Normal">if</span> <span class="Delimiter">(</span>is_mu_continuation<span class="Delimiter">(</span>canonized_x<span class="Delimiter">))</span> <span class="Delimiter">{</span>
+<span id="L336" class="LineNr">336 </span>  <span class="Normal">int</span> continuation_id = data<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">);</span>
+<span id="L337" class="LineNr">337 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>continuation_id == <span class="Constant">0</span><span class="Delimiter">)</span> <span class="Identifier">return</span><span class="Delimiter">;</span>
+<span id="L338" class="LineNr">338 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!contains_key<span class="Delimiter">(</span>Delimited_continuation<span class="Delimiter">,</span> continuation_id<span class="Delimiter">))</span> <span class="Delimiter">{</span>
+<span id="L339" class="LineNr">339 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span><a href='026call.cc.html#L87'>current_recipe_name</a><span class="Delimiter">())</span> &lt;&lt; <span class="Constant">&quot;missing delimited continuation: &quot;</span> &lt;&lt; canonized_x<span class="Delimiter">.</span>name &lt;&lt; <span class="cSpecial">'\n'</span><span class="Delimiter">;</span>
+<span id="L340" class="LineNr">340 </span>  <span class="Conceal">¦</span> <span class="Identifier">return</span><span class="Delimiter">;</span>
+<span id="L341" class="LineNr">341 </span>  <span class="Delimiter">}</span>
+<span id="L342" class="LineNr">342 </span>  delimited_continuation&amp; curr = get<span class="Delimiter">(</span>Delimited_continuation<span class="Delimiter">,</span> continuation_id<span class="Delimiter">);</span>
+<span id="L343" class="LineNr">343 </span>  <a href='003trace.cc.html#L167'>trace</a><span class="Delimiter">(</span><span class="Constant">&quot;run&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;incrementing refcount of continuation &quot;</span> &lt;&lt; continuation_id &lt;&lt; <span class="Constant">&quot;: &quot;</span> &lt;&lt; curr<span class="Delimiter">.</span>nrefs &lt;&lt; <span class="Constant">&quot; -&gt; &quot;</span> &lt;&lt; <span class="Constant">1</span>+curr<span class="Delimiter">.</span>nrefs &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
+<span id="L344" class="LineNr">344 </span>  ++curr<span class="Delimiter">.</span>nrefs<span class="Delimiter">;</span>
+<span id="L345" class="LineNr">345 </span>  <span class="Identifier">return</span><span class="Delimiter">;</span>
+<span id="L346" class="LineNr">346 </span><span class="Delimiter">}</span>
+<span id="L347" class="LineNr">347 </span>
+<span id="L348" class="LineNr">348 </span><span class="Delimiter">:(before &quot;End Decrement Refcounts(canonized_x)&quot;)</span>
+<span id="L349" class="LineNr">349 </span><span class="Normal">if</span> <span class="Delimiter">(</span>is_mu_continuation<span class="Delimiter">(</span>canonized_x<span class="Delimiter">))</span> <span class="Delimiter">{</span>
+<span id="L350" class="LineNr">350 </span>  <span class="Normal">int</span> continuation_id = <a href='001help.cc.html#L229'>get_or_insert</a><span class="Delimiter">(</span>Memory<span class="Delimiter">,</span> canonized_x<span class="Delimiter">.</span>value<span class="Delimiter">);</span>
+<span id="L351" class="LineNr">351 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>continuation_id == <span class="Constant">0</span><span class="Delimiter">)</span> <span class="Identifier">return</span><span class="Delimiter">;</span>
+<span id="L352" class="LineNr">352 </span>  delimited_continuation&amp; curr = get<span class="Delimiter">(</span>Delimited_continuation<span class="Delimiter">,</span> continuation_id<span class="Delimiter">);</span>
+<span id="L353" class="LineNr">353 </span>  assert<span class="Delimiter">(</span>curr<span class="Delimiter">.</span>nrefs &gt; <span class="Constant">0</span><span class="Delimiter">);</span>
+<span id="L354" class="LineNr">354 </span>  --curr<span class="Delimiter">.</span>nrefs<span class="Delimiter">;</span>
+<span id="L355" class="LineNr">355 </span>  <a href='003trace.cc.html#L167'>trace</a><span class="Delimiter">(</span><span class="Constant">&quot;run&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;decrementing refcount of continuation &quot;</span> &lt;&lt; continuation_id &lt;&lt; <span class="Constant">&quot;: &quot;</span> &lt;&lt; <span class="Constant">1</span>+curr<span class="Delimiter">.</span>nrefs &lt;&lt; <span class="Constant">&quot; -&gt; &quot;</span> &lt;&lt; curr<span class="Delimiter">.</span>nrefs &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
+<span id="L356" class="LineNr">356 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>curr<span class="Delimiter">.</span>nrefs &gt; <span class="Constant">0</span><span class="Delimiter">)</span> <span class="Identifier">return</span><span class="Delimiter">;</span>
+<span id="L357" class="LineNr">357 </span>  <a href='003trace.cc.html#L167'>trace</a><span class="Delimiter">(</span><span class="Constant">&quot;run&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;reclaiming continuation &quot;</span> &lt;&lt; continuation_id &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
+<span id="L358" class="LineNr">358 </span>  <span class="Comment">// temporarily push the stack frames for the continuation to the call stack before reclaiming their spaces</span>
+<span id="L359" class="LineNr">359 </span>  <span class="Comment">// (because reclaim_default_space() relies on the default-space being reclaimed being at the top of the stack)</span>
+<span id="L360" class="LineNr">360 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span>call_stack::const_iterator p = curr<span class="Delimiter">.</span>frames<span class="Delimiter">.</span>begin<span class="Delimiter">();</span> p != curr<span class="Delimiter">.</span>frames<span class="Delimiter">.</span><a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span> ++p<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L361" class="LineNr">361 </span>  <span class="Conceal">¦</span> Current_routine<span class="Delimiter">-&gt;</span>calls<span class="Delimiter">.</span>push_front<span class="Delimiter">(</span>*p<span class="Delimiter">);</span>
+<span id="L362" class="LineNr">362 </span>  <span class="Conceal">¦</span> <a href='043space.cc.html#L244'>reclaim_default_space</a><span class="Delimiter">();</span>
+<span id="L363" class="LineNr">363 </span>  <span class="Conceal">¦</span> Current_routine<span class="Delimiter">-&gt;</span>calls<span class="Delimiter">.</span>pop_front<span class="Delimiter">();</span>
+<span id="L364" class="LineNr">364 </span>  <span class="Delimiter">}</span>
+<span id="L365" class="LineNr">365 </span>  Delimited_continuation<span class="Delimiter">.</span>erase<span class="Delimiter">(</span>continuation_id<span class="Delimiter">);</span>
+<span id="L366" class="LineNr">366 </span>  <span class="Identifier">return</span><span class="Delimiter">;</span>
+<span id="L367" class="LineNr">367 </span><span class="Delimiter">}</span>
+<span id="L368" class="LineNr">368 </span>
+<span id="L369" class="LineNr">369 </span><span class="Delimiter">:(scenario continuations_can_be_copied)</span>
+<span id="L370" class="LineNr">370 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
+<span id="L371" class="LineNr">371 </span>  local-scope
+<span id="L372" class="LineNr">372 </span>  <span class="Normal">k</span>:continuation<span class="Special"> &lt;- </span>call-with-continuation-mark f
+<span id="L373" class="LineNr">373 </span>  <span class="Normal">k2</span>:continuation<span class="Special"> &lt;- </span>copy k
+<span id="L374" class="LineNr">374 </span>  <span class="Comment"># reclaiming k and k2 shouldn't delete f's local scope twice</span>
+<span id="L375" class="LineNr">375 </span>]
+<span id="L376" class="LineNr">376 </span><span class="muRecipe">def</span> f [
+<span id="L377" class="LineNr">377 </span>  local-scope
+<span id="L378" class="LineNr">378 </span>  load-ingredients
+<span id="L379" class="LineNr">379 </span>  <span class="Identifier">return</span>-continuation-until-mark
+<span id="L380" class="LineNr">380 </span>  <span class="Identifier">return</span> <span class="Constant">0</span>
+<span id="L381" class="LineNr">381 </span>]
+<span id="L382" class="LineNr">382 </span>$error: <span class="Constant">0</span>
+<span id="L383" class="LineNr">383 </span>
+<span id="L384" class="LineNr">384 </span><span class="Delimiter">:(code)</span>
+<span id="L385" class="LineNr">385 </span><span class="Normal">bool</span> is_mu_continuation<span class="Delimiter">(</span>reagent<span class="Comment">/*</span><span class="Comment">copy</span><span class="Comment">*/</span> x<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L386" class="LineNr">386 </span>  canonize_type<span class="Delimiter">(</span>x<span class="Delimiter">);</span>
+<span id="L387" class="LineNr">387 </span>  <span class="Identifier">return</span> x<span class="Delimiter">.</span>type &amp;&amp; x<span class="Delimiter">.</span>type<span class="Delimiter">-&gt;</span>atom &amp;&amp; x<span class="Delimiter">.</span>type<span class="Delimiter">-&gt;</span>value == get<span class="Delimiter">(</span>Type_ordinal<span class="Delimiter">,</span> <span class="Constant">&quot;continuation&quot;</span><span class="Delimiter">);</span>
+<span id="L388" class="LineNr">388 </span><span class="Delimiter">}</span>
+<span id="L389" class="LineNr">389 </span>
+<span id="L390" class="LineNr">390 </span><span class="Comment">// helper for debugging</span>
+<span id="L391" class="LineNr">391 </span><span class="Normal">void</span> <a href='003trace.cc.html#L120'>dump</a><span class="Delimiter">(</span><span class="Normal">const</span> <span class="Normal">int</span> continuation_id<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L392" class="LineNr">392 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!contains_key<span class="Delimiter">(</span>Delimited_continuation<span class="Delimiter">,</span> continuation_id<span class="Delimiter">))</span> <span class="Delimiter">{</span>
+<span id="L393" class="LineNr">393 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <span class="Constant">&quot;missing delimited continuation: &quot;</span> &lt;&lt; continuation_id &lt;&lt; <span class="cSpecial">'\n'</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
+<span id="L394" class="LineNr">394 </span>  <span class="Conceal">¦</span> <span class="Identifier">return</span><span class="Delimiter">;</span>
+<span id="L395" class="LineNr">395 </span>  <span class="Delimiter">}</span>
+<span id="L396" class="LineNr">396 </span>  delimited_continuation&amp; curr = get<span class="Delimiter">(</span>Delimited_continuation<span class="Delimiter">,</span> continuation_id<span class="Delimiter">);</span>
+<span id="L397" class="LineNr">397 </span>  <a href='003trace.cc.html#L120'>dump</a><span class="Delimiter">(</span>curr<span class="Delimiter">.</span>frames<span class="Delimiter">);</span>
+<span id="L398" class="LineNr">398 </span><span class="Delimiter">}</span>
 </pre>
 </body>
 </html>
diff --git a/html/080display.cc.html b/html/080display.cc.html
index d00b4ea4..c33970d4 100644
--- a/html/080display.cc.html
+++ b/html/080display.cc.html
@@ -74,17 +74,17 @@ if ('onhashchange' in window) {
 <span id="L12" class="LineNr"> 12 </span><span class="PreProc">#define CHECK_SCREEN \</span>
 <span id="L13" class="LineNr"> 13 </span><span class="PreProc">  </span><span class="Conceal">¦</span><span class="PreProc"> </span><span class="Normal">if</span><span class="PreProc"> (!tb_is_active()) </span><span class="Delimiter">{</span><span class="PreProc"> \</span>
 <span id="L14" class="LineNr"> 14 </span><span class="PreProc">  </span><span class="Conceal">¦</span><span class="PreProc"> </span><span class="Conceal">¦</span><span class="PreProc"> </span><span class="Normal">if</span><span class="PreProc"> (Run_tests) \</span>
-<span id="L15" class="LineNr"> 15 </span><span class="PreProc">  </span><span class="Conceal">¦</span><span class="PreProc"> </span><span class="Conceal">¦</span><span class="PreProc"> </span><span class="Conceal">¦</span><span class="PreProc"> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; maybe(current_recipe_name()) &lt;&lt; </span><span class="Constant">&quot;tried to print to real screen in a test!</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span><span class="PreProc"> &lt;&lt; end()</span><span class="Delimiter">;</span><span class="PreProc"> \</span>
+<span id="L15" class="LineNr"> 15 </span><span class="PreProc">  </span><span class="Conceal">¦</span><span class="PreProc"> </span><span class="Conceal">¦</span><span class="PreProc"> </span><span class="Conceal">¦</span><span class="PreProc"> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; maybe(current_recipe_name()) &lt;&lt; </span><span class="Constant">&quot;tried to print to real screen in a test!</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span><span class="PreProc"> &lt;&lt; end()</span><span class="Delimiter">;</span><span class="PreProc"> \</span>
 <span id="L16" class="LineNr"> 16 </span><span class="PreProc">  </span><span class="Conceal">¦</span><span class="PreProc"> </span><span class="Conceal">¦</span><span class="PreProc"> </span><span class="Normal">else</span><span class="PreProc"> \</span>
-<span id="L17" class="LineNr"> 17 </span><span class="PreProc">  </span><span class="Conceal">¦</span><span class="PreProc"> </span><span class="Conceal">¦</span><span class="PreProc"> </span><span class="Conceal">¦</span><span class="PreProc"> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; maybe(current_recipe_name()) &lt;&lt; </span><span class="Constant">&quot;tried to print to real screen before 'open-console' or after 'close-console'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span><span class="PreProc"> &lt;&lt; end()</span><span class="Delimiter">;</span><span class="PreProc"> \</span>
+<span id="L17" class="LineNr"> 17 </span><span class="PreProc">  </span><span class="Conceal">¦</span><span class="PreProc"> </span><span class="Conceal">¦</span><span class="PreProc"> </span><span class="Conceal">¦</span><span class="PreProc"> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; maybe(current_recipe_name()) &lt;&lt; </span><span class="Constant">&quot;tried to print to real screen before 'open-console' or after 'close-console'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span><span class="PreProc"> &lt;&lt; end()</span><span class="Delimiter">;</span><span class="PreProc"> \</span>
 <span id="L18" class="LineNr"> 18 </span><span class="PreProc">  </span><span class="Conceal">¦</span><span class="PreProc"> </span><span class="Conceal">¦</span><span class="PreProc"> </span><span class="Identifier">break</span><span class="Delimiter">;</span><span class="PreProc"> \</span>
 <span id="L19" class="LineNr"> 19 </span><span class="PreProc">  </span><span class="Conceal">¦</span><span class="PreProc"> </span><span class="Delimiter">}</span>
 <span id="L20" class="LineNr"> 20 </span><span class="PreProc">#define CHECK_CONSOLE \</span>
 <span id="L21" class="LineNr"> 21 </span><span class="PreProc">  </span><span class="Conceal">¦</span><span class="PreProc"> </span><span class="Normal">if</span><span class="PreProc"> (!tb_is_active()) </span><span class="Delimiter">{</span><span class="PreProc"> \</span>
 <span id="L22" class="LineNr"> 22 </span><span class="PreProc">  </span><span class="Conceal">¦</span><span class="PreProc"> </span><span class="Conceal">¦</span><span class="PreProc"> </span><span class="Normal">if</span><span class="PreProc"> (Run_tests) \</span>
-<span id="L23" class="LineNr"> 23 </span><span class="PreProc">  </span><span class="Conceal">¦</span><span class="PreProc"> </span><span class="Conceal">¦</span><span class="PreProc"> </span><span class="Conceal">¦</span><span class="PreProc"> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; maybe(current_recipe_name()) &lt;&lt; </span><span class="Constant">&quot;tried to read event from real keyboard/mouse in a test!</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span><span class="PreProc"> &lt;&lt; end()</span><span class="Delimiter">;</span><span class="PreProc"> \</span>
+<span id="L23" class="LineNr"> 23 </span><span class="PreProc">  </span><span class="Conceal">¦</span><span class="PreProc"> </span><span class="Conceal">¦</span><span class="PreProc"> </span><span class="Conceal">¦</span><span class="PreProc"> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; maybe(current_recipe_name()) &lt;&lt; </span><span class="Constant">&quot;tried to read event from real keyboard/mouse in a test!</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span><span class="PreProc"> &lt;&lt; end()</span><span class="Delimiter">;</span><span class="PreProc"> \</span>
 <span id="L24" class="LineNr"> 24 </span><span class="PreProc">  </span><span class="Conceal">¦</span><span class="PreProc"> </span><span class="Conceal">¦</span><span class="PreProc"> </span><span class="Normal">else</span><span class="PreProc"> \</span>
-<span id="L25" class="LineNr"> 25 </span><span class="PreProc">  </span><span class="Conceal">¦</span><span class="PreProc"> </span><span class="Conceal">¦</span><span class="PreProc"> </span><span class="Conceal">¦</span><span class="PreProc"> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; maybe(current_recipe_name()) &lt;&lt; </span><span class="Constant">&quot;tried to read event from real keyboard/mouse before 'open-console' or after 'close-console'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span><span class="PreProc"> &lt;&lt; end()</span><span class="Delimiter">;</span><span class="PreProc"> \</span>
+<span id="L25" class="LineNr"> 25 </span><span class="PreProc">  </span><span class="Conceal">¦</span><span class="PreProc"> </span><span class="Conceal">¦</span><span class="PreProc"> </span><span class="Conceal">¦</span><span class="PreProc"> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; maybe(current_recipe_name()) &lt;&lt; </span><span class="Constant">&quot;tried to read event from real keyboard/mouse before 'open-console' or after 'close-console'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span><span class="PreProc"> &lt;&lt; end()</span><span class="Delimiter">;</span><span class="PreProc"> \</span>
 <span id="L26" class="LineNr"> 26 </span><span class="PreProc">  </span><span class="Conceal">¦</span><span class="PreProc"> </span><span class="Conceal">¦</span><span class="PreProc"> </span><span class="Identifier">break</span><span class="Delimiter">;</span><span class="PreProc"> \</span>
 <span id="L27" class="LineNr"> 27 </span><span class="PreProc">  </span><span class="Conceal">¦</span><span class="PreProc"> </span><span class="Delimiter">}</span>
 <span id="L28" class="LineNr"> 28 </span>
@@ -105,9 +105,9 @@ if ('onhashchange' in window) {
 <span id="L43" class="LineNr"> 43 </span>  <span class="Normal">int</span> height = tb_height<span class="Delimiter">();</span>
 <span id="L44" class="LineNr"> 44 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>width &gt; <span class="Constant">222</span> || height &gt; <span class="Constant">222</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
 <span id="L45" class="LineNr"> 45 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>width &gt; <span class="Constant">222</span><span class="Delimiter">)</span>
-<span id="L46" class="LineNr"> 46 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <span class="Constant">&quot;sorry, Mu doesn't support windows wider than 222 characters in console mode. Please resize your window.</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; end<span class="Delimiter">();</span>
+<span id="L46" class="LineNr"> 46 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <span class="Constant">&quot;sorry, Mu doesn't support windows wider than 222 characters in console mode. Please resize your window.</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; end<span class="Delimiter">();</span>
 <span id="L47" class="LineNr"> 47 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>height &gt; <span class="Constant">222</span><span class="Delimiter">)</span>
-<span id="L48" class="LineNr"> 48 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <span class="Constant">&quot;sorry, Mu doesn't support windows taller than 222 characters in console mode. Please resize your window.</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; end<span class="Delimiter">();</span>
+<span id="L48" class="LineNr"> 48 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <span class="Constant">&quot;sorry, Mu doesn't support windows taller than 222 characters in console mode. Please resize your window.</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; end<span class="Delimiter">();</span>
 <span id="L49" class="LineNr"> 49 </span>  <span class="Conceal">¦</span> exit<span class="Delimiter">(</span><span class="Constant">1</span><span class="Delimiter">);</span>
 <span id="L50" class="LineNr"> 50 </span>  <span class="Delimiter">}</span>
 <span id="L51" class="LineNr"> 51 </span>  <span class="Identifier">break</span><span class="Delimiter">;</span>
@@ -150,22 +150,22 @@ if ('onhashchange' in window) {
 <span id="L88" class="LineNr"> 88 </span><span class="Delimiter">:(before &quot;End Primitive Recipe Checks&quot;)</span>
 <span id="L89" class="LineNr"> 89 </span><span class="Normal">case</span> PRINT_CHARACTER_TO_DISPLAY: <span class="Delimiter">{</span>
 <span id="L90" class="LineNr"> 90 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>empty<span class="Delimiter">())</span> <span class="Delimiter">{</span>
-<span id="L91" class="LineNr"> 91 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'print-character-to-display' requires at least one ingredient, but got '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L91" class="LineNr"> 91 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'print-character-to-display' requires at least one ingredient, but got '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L92" class="LineNr"> 92 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L93" class="LineNr"> 93 </span>  <span class="Delimiter">}</span>
 <span id="L94" class="LineNr"> 94 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!is_mu_number<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">)))</span> <span class="Delimiter">{</span>
-<span id="L95" class="LineNr"> 95 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;first ingredient of 'print-character-to-display' should be a character, but got '&quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>original_string &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L95" class="LineNr"> 95 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;first ingredient of 'print-character-to-display' should be a character, but got '&quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>original_string &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L96" class="LineNr"> 96 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L97" class="LineNr"> 97 </span>  <span class="Delimiter">}</span>
 <span id="L98" class="LineNr"> 98 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">)</span> &gt; <span class="Constant">1</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
 <span id="L99" class="LineNr"> 99 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>!is_mu_number<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">1</span><span class="Delimiter">)))</span> <span class="Delimiter">{</span>
-<span id="L100" class="LineNr">100 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;second ingredient of 'print-character-to-display' should be a foreground color number, but got '&quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">1</span><span class="Delimiter">).</span>original_string &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L100" class="LineNr">100 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;second ingredient of 'print-character-to-display' should be a foreground color number, but got '&quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">1</span><span class="Delimiter">).</span>original_string &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L101" class="LineNr">101 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L102" class="LineNr">102 </span>  <span class="Conceal">¦</span> <span class="Delimiter">}</span>
 <span id="L103" class="LineNr">103 </span>  <span class="Delimiter">}</span>
 <span id="L104" class="LineNr">104 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">)</span> &gt; <span class="Constant">2</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
 <span id="L105" class="LineNr">105 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>!is_mu_number<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">2</span><span class="Delimiter">)))</span> <span class="Delimiter">{</span>
-<span id="L106" class="LineNr">106 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;third ingredient of 'print-character-to-display' should be a background color number, but got '&quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">2</span><span class="Delimiter">).</span>original_string &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L106" class="LineNr">106 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;third ingredient of 'print-character-to-display' should be a background color number, but got '&quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">2</span><span class="Delimiter">).</span>original_string &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L107" class="LineNr">107 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L108" class="LineNr">108 </span>  <span class="Conceal">¦</span> <span class="Delimiter">}</span>
 <span id="L109" class="LineNr">109 </span>  <span class="Delimiter">}</span>
@@ -232,15 +232,15 @@ if ('onhashchange' in window) {
 <span id="L170" class="LineNr">170 </span><span class="Delimiter">:(before &quot;End Primitive Recipe Checks&quot;)</span>
 <span id="L171" class="LineNr">171 </span><span class="Normal">case</span> MOVE_CURSOR_ON_DISPLAY: <span class="Delimiter">{</span>
 <span id="L172" class="LineNr">172 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">)</span> != <span class="Constant">2</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L173" class="LineNr">173 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'move-cursor-on-display' requires two ingredients, but got '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L173" class="LineNr">173 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'move-cursor-on-display' requires two ingredients, but got '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L174" class="LineNr">174 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L175" class="LineNr">175 </span>  <span class="Delimiter">}</span>
 <span id="L176" class="LineNr">176 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!is_mu_number<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">)))</span> <span class="Delimiter">{</span>
-<span id="L177" class="LineNr">177 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;first ingredient of 'move-cursor-on-display' should be a row number, but got '&quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>original_string &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L177" class="LineNr">177 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;first ingredient of 'move-cursor-on-display' should be a row number, but got '&quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>original_string &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L178" class="LineNr">178 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L179" class="LineNr">179 </span>  <span class="Delimiter">}</span>
 <span id="L180" class="LineNr">180 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!is_mu_number<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">1</span><span class="Delimiter">)))</span> <span class="Delimiter">{</span>
-<span id="L181" class="LineNr">181 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;second ingredient of 'move-cursor-on-display' should be a column number, but got '&quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">1</span><span class="Delimiter">).</span>original_string &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L181" class="LineNr">181 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;second ingredient of 'move-cursor-on-display' should be a column number, but got '&quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">1</span><span class="Delimiter">).</span>original_string &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L182" class="LineNr">182 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L183" class="LineNr">183 </span>  <span class="Delimiter">}</span>
 <span id="L184" class="LineNr">184 </span>  <span class="Identifier">break</span><span class="Delimiter">;</span>
diff --git a/html/082scenario_screen.cc.html b/html/082scenario_screen.cc.html
index 37b9d73c..7f2cf6bf 100644
--- a/html/082scenario_screen.cc.html
+++ b/html/082scenario_screen.cc.html
@@ -217,7 +217,7 @@ if ('onhashchange' in window) {
 <span id="L152" class="LineNr">152 </span><span class="Delimiter">:(before &quot;End Special Scenario Variable Names(r)&quot;)</span>
 <span id="L153" class="LineNr">153 </span>Name[r][<span class="Constant">&quot;screen&quot;</span>] = SCREEN<span class="Delimiter">;</span>
 <span id="L154" class="LineNr">154 </span><span class="Comment">//: make 'screen' always a raw location in scenarios</span>
-<span id="L155" class="LineNr">155 </span><span class="Delimiter">:(before &quot;End <a href='042name.cc.html#L163'>is_special_name</a> Special-cases&quot;)</span>
+<span id="L155" class="LineNr">155 </span><span class="Delimiter">:(before &quot;End <a href='042name.cc.html#L161'>is_special_name</a> Special-cases&quot;)</span>
 <span id="L156" class="LineNr">156 </span><span class="Normal">if</span> <span class="Delimiter">(</span>s == <span class="Constant">&quot;screen&quot;</span><span class="Delimiter">)</span> <span class="Identifier">return</span> <span class="Constant">true</span><span class="Delimiter">;</span>
 <span id="L157" class="LineNr">157 </span>
 <span id="L158" class="LineNr">158 </span><span class="Delimiter">:(before &quot;End Rewrite Instruction(curr, <a href='010vm.cc.html#L19'>recipe</a> result)&quot;)</span>
@@ -226,10 +226,10 @@ if ('onhashchange' in window) {
 <span id="L161" class="LineNr">161 </span><span class="Normal">if</span> <span class="Delimiter">(</span>curr<span class="Delimiter">.</span>name == <span class="Constant">&quot;assume-screen&quot;</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
 <span id="L162" class="LineNr">162 </span>  curr<span class="Delimiter">.</span>name = <span class="Constant">&quot;new-fake-screen&quot;</span><span class="Delimiter">;</span>
 <span id="L163" class="LineNr">163 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!curr<span class="Delimiter">.</span>products<span class="Delimiter">.</span>empty<span class="Delimiter">())</span> <span class="Delimiter">{</span>
-<span id="L164" class="LineNr">164 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; result<span class="Delimiter">.</span>name &lt;&lt; <span class="Constant">&quot;: 'assume-screen' has no products</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L164" class="LineNr">164 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; result<span class="Delimiter">.</span>name &lt;&lt; <span class="Constant">&quot;: 'assume-screen' has no products</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L165" class="LineNr">165 </span>  <span class="Delimiter">}</span>
 <span id="L166" class="LineNr">166 </span>  <span class="Normal">else</span> <span class="Normal">if</span> <span class="Delimiter">(</span>!starts_with<span class="Delimiter">(</span>result<span class="Delimiter">.</span>name<span class="Delimiter">,</span> <span class="Constant">&quot;scenario_&quot;</span><span class="Delimiter">))</span> <span class="Delimiter">{</span>
-<span id="L167" class="LineNr">167 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; result<span class="Delimiter">.</span>name &lt;&lt; <span class="Constant">&quot;: 'assume-screen' can't be called here, only in scenarios</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; end<span class="Delimiter">();</span>
+<span id="L167" class="LineNr">167 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; result<span class="Delimiter">.</span>name &lt;&lt; <span class="Constant">&quot;: 'assume-screen' can't be called here, only in scenarios</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; end<span class="Delimiter">();</span>
 <span id="L168" class="LineNr">168 </span>  <span class="Delimiter">}</span>
 <span id="L169" class="LineNr">169 </span>  <span class="Normal">else</span> <span class="Delimiter">{</span>
 <span id="L170" class="LineNr">170 </span>  <span class="Conceal">¦</span> assert<span class="Delimiter">(</span>curr<span class="Delimiter">.</span>products<span class="Delimiter">.</span>empty<span class="Delimiter">());</span>
@@ -253,11 +253,11 @@ if ('onhashchange' in window) {
 <span id="L188" class="LineNr">188 </span><span class="Delimiter">:(before &quot;End Primitive Recipe Checks&quot;)</span>
 <span id="L189" class="LineNr">189 </span><span class="Normal">case</span> SCREEN_SHOULD_CONTAIN: <span class="Delimiter">{</span>
 <span id="L190" class="LineNr">190 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">)</span> != <span class="Constant">1</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L191" class="LineNr">191 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'screen-should-contain' requires exactly one ingredient, but got '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L191" class="LineNr">191 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'screen-should-contain' requires exactly one ingredient, but got '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L192" class="LineNr">192 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L193" class="LineNr">193 </span>  <span class="Delimiter">}</span>
 <span id="L194" class="LineNr">194 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!is_literal_text<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">)))</span> <span class="Delimiter">{</span>
-<span id="L195" class="LineNr">195 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;first ingredient of 'screen-should-contain' should be a literal string, but got '&quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>original_string &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L195" class="LineNr">195 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;first ingredient of 'screen-should-contain' should be a literal string, but got '&quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>original_string &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L196" class="LineNr">196 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L197" class="LineNr">197 </span>  <span class="Delimiter">}</span>
 <span id="L198" class="LineNr">198 </span>  <span class="Identifier">break</span><span class="Delimiter">;</span>
@@ -266,7 +266,7 @@ if ('onhashchange' in window) {
 <span id="L201" class="LineNr">201 </span><span class="Normal">case</span> SCREEN_SHOULD_CONTAIN: <span class="Delimiter">{</span>
 <span id="L202" class="LineNr">202 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!Passed<span class="Delimiter">)</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L203" class="LineNr">203 </span>  assert<span class="Delimiter">(</span>scalar<span class="Delimiter">(</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">)));</span>
-<span id="L204" class="LineNr">204 </span>  check_screen<span class="Delimiter">(</span><a href='026call.cc.html#L87'>current_instruction</a><span class="Delimiter">().</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>name<span class="Delimiter">,</span> -<span class="Constant">1</span><span class="Delimiter">);</span>
+<span id="L204" class="LineNr">204 </span>  check_screen<span class="Delimiter">(</span><a href='026call.cc.html#L89'>current_instruction</a><span class="Delimiter">().</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>name<span class="Delimiter">,</span> -<span class="Constant">1</span><span class="Delimiter">);</span>
 <span id="L205" class="LineNr">205 </span>  <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L206" class="LineNr">206 </span><span class="Delimiter">}</span>
 <span id="L207" class="LineNr">207 </span>
@@ -277,15 +277,15 @@ if ('onhashchange' in window) {
 <span id="L212" class="LineNr">212 </span><span class="Delimiter">:(before &quot;End Primitive Recipe Checks&quot;)</span>
 <span id="L213" class="LineNr">213 </span><span class="Normal">case</span> SCREEN_SHOULD_CONTAIN_IN_COLOR: <span class="Delimiter">{</span>
 <span id="L214" class="LineNr">214 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">)</span> != <span class="Constant">2</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L215" class="LineNr">215 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'screen-should-contain-in-color' requires exactly two ingredients, but got '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L215" class="LineNr">215 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'screen-should-contain-in-color' requires exactly two ingredients, but got '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L216" class="LineNr">216 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L217" class="LineNr">217 </span>  <span class="Delimiter">}</span>
 <span id="L218" class="LineNr">218 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!is_mu_number<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">)))</span> <span class="Delimiter">{</span>
-<span id="L219" class="LineNr">219 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;first ingredient of 'screen-should-contain-in-color' should be a number (color code), but got '&quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>original_string &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L219" class="LineNr">219 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;first ingredient of 'screen-should-contain-in-color' should be a number (color code), but got '&quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>original_string &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L220" class="LineNr">220 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L221" class="LineNr">221 </span>  <span class="Delimiter">}</span>
 <span id="L222" class="LineNr">222 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!is_literal_text<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">1</span><span class="Delimiter">)))</span> <span class="Delimiter">{</span>
-<span id="L223" class="LineNr">223 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;second ingredient of 'screen-should-contain-in-color' should be a literal string, but got '&quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">1</span><span class="Delimiter">).</span>original_string &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L223" class="LineNr">223 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;second ingredient of 'screen-should-contain-in-color' should be a literal string, but got '&quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">1</span><span class="Delimiter">).</span>original_string &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L224" class="LineNr">224 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L225" class="LineNr">225 </span>  <span class="Delimiter">}</span>
 <span id="L226" class="LineNr">226 </span>  <span class="Identifier">break</span><span class="Delimiter">;</span>
@@ -295,7 +295,7 @@ if ('onhashchange' in window) {
 <span id="L230" class="LineNr">230 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!Passed<span class="Delimiter">)</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L231" class="LineNr">231 </span>  assert<span class="Delimiter">(</span>scalar<span class="Delimiter">(</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">)));</span>
 <span id="L232" class="LineNr">232 </span>  assert<span class="Delimiter">(</span>scalar<span class="Delimiter">(</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">1</span><span class="Delimiter">)));</span>
-<span id="L233" class="LineNr">233 </span>  check_screen<span class="Delimiter">(</span><a href='026call.cc.html#L87'>current_instruction</a><span class="Delimiter">().</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">1</span><span class="Delimiter">).</span>name<span class="Delimiter">,</span> ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">));</span>
+<span id="L233" class="LineNr">233 </span>  check_screen<span class="Delimiter">(</span><a href='026call.cc.html#L89'>current_instruction</a><span class="Delimiter">().</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">1</span><span class="Delimiter">).</span>name<span class="Delimiter">,</span> ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">));</span>
 <span id="L234" class="LineNr">234 </span>  <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L235" class="LineNr">235 </span><span class="Delimiter">}</span>
 <span id="L236" class="LineNr">236 </span>
@@ -316,23 +316,23 @@ if ('onhashchange' in window) {
 <span id="L251" class="LineNr">251 </span><span class="Delimiter">:(code)</span>
 <span id="L252" class="LineNr">252 </span><span class="Normal">void</span> check_screen<span class="Delimiter">(</span><span class="Normal">const</span> string&amp; expected_contents<span class="Delimiter">,</span> <span class="Normal">const</span> <span class="Normal">int</span> color<span class="Delimiter">)</span> <span class="Delimiter">{</span>
 <span id="L253" class="LineNr">253 </span>  <span class="Normal">int</span> screen_location = <a href='001help.cc.html#L229'>get_or_insert</a><span class="Delimiter">(</span>Memory<span class="Delimiter">,</span> SCREEN<span class="Delimiter">)</span>+<span class="Comment">/*</span><span class="Comment">skip refcount</span><span class="Comment">*/</span><span class="Constant">1</span><span class="Delimiter">;</span>
-<span id="L254" class="LineNr">254 </span>  <span class="Normal">int</span> data_offset = <a href='042name.cc.html#L140'>find_element_name</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Type_ordinal<span class="Delimiter">,</span> <span class="Constant">&quot;screen&quot;</span><span class="Delimiter">),</span> <span class="Constant">&quot;data&quot;</span><span class="Delimiter">,</span> <span class="Constant">&quot;&quot;</span><span class="Delimiter">);</span>
+<span id="L254" class="LineNr">254 </span>  <span class="Normal">int</span> data_offset = <a href='042name.cc.html#L138'>find_element_name</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Type_ordinal<span class="Delimiter">,</span> <span class="Constant">&quot;screen&quot;</span><span class="Delimiter">),</span> <span class="Constant">&quot;data&quot;</span><span class="Delimiter">,</span> <span class="Constant">&quot;&quot;</span><span class="Delimiter">);</span>
 <span id="L255" class="LineNr">255 </span>  assert<span class="Delimiter">(</span>data_offset &gt;= <span class="Constant">0</span><span class="Delimiter">);</span>
 <span id="L256" class="LineNr">256 </span>  <span class="Normal">int</span> screen_data_location = screen_location+data_offset<span class="Delimiter">;</span>  <span class="Comment">// type: address:array:character</span>
 <span id="L257" class="LineNr">257 </span>  <span class="Normal">int</span> screen_data_start = <a href='001help.cc.html#L229'>get_or_insert</a><span class="Delimiter">(</span>Memory<span class="Delimiter">,</span> screen_data_location<span class="Delimiter">)</span> + <span class="Comment">/*</span><span class="Comment">skip refcount</span><span class="Comment">*/</span><span class="Constant">1</span><span class="Delimiter">;</span>  <span class="Comment">// type: array:character</span>
-<span id="L258" class="LineNr">258 </span>  <span class="Normal">int</span> width_offset = <a href='042name.cc.html#L140'>find_element_name</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Type_ordinal<span class="Delimiter">,</span> <span class="Constant">&quot;screen&quot;</span><span class="Delimiter">),</span> <span class="Constant">&quot;num-columns&quot;</span><span class="Delimiter">,</span> <span class="Constant">&quot;&quot;</span><span class="Delimiter">);</span>
+<span id="L258" class="LineNr">258 </span>  <span class="Normal">int</span> width_offset = <a href='042name.cc.html#L138'>find_element_name</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Type_ordinal<span class="Delimiter">,</span> <span class="Constant">&quot;screen&quot;</span><span class="Delimiter">),</span> <span class="Constant">&quot;num-columns&quot;</span><span class="Delimiter">,</span> <span class="Constant">&quot;&quot;</span><span class="Delimiter">);</span>
 <span id="L259" class="LineNr">259 </span>  <span class="Normal">int</span> screen_width = <a href='001help.cc.html#L229'>get_or_insert</a><span class="Delimiter">(</span>Memory<span class="Delimiter">,</span> screen_location+width_offset<span class="Delimiter">);</span>
-<span id="L260" class="LineNr">260 </span>  <span class="Normal">int</span> height_offset = <a href='042name.cc.html#L140'>find_element_name</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Type_ordinal<span class="Delimiter">,</span> <span class="Constant">&quot;screen&quot;</span><span class="Delimiter">),</span> <span class="Constant">&quot;num-rows&quot;</span><span class="Delimiter">,</span> <span class="Constant">&quot;&quot;</span><span class="Delimiter">);</span>
+<span id="L260" class="LineNr">260 </span>  <span class="Normal">int</span> height_offset = <a href='042name.cc.html#L138'>find_element_name</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Type_ordinal<span class="Delimiter">,</span> <span class="Constant">&quot;screen&quot;</span><span class="Delimiter">),</span> <span class="Constant">&quot;num-rows&quot;</span><span class="Delimiter">,</span> <span class="Constant">&quot;&quot;</span><span class="Delimiter">);</span>
 <span id="L261" class="LineNr">261 </span>  <span class="Normal">int</span> screen_height = <a href='001help.cc.html#L229'>get_or_insert</a><span class="Delimiter">(</span>Memory<span class="Delimiter">,</span> screen_location+height_offset<span class="Delimiter">);</span>
 <span id="L262" class="LineNr">262 </span>  raw_string_stream cursor<span class="Delimiter">(</span>expected_contents<span class="Delimiter">);</span>
 <span id="L263" class="LineNr">263 </span>  <span class="Comment">// todo: too-long expected_contents should fail</span>
-<span id="L264" class="LineNr">264 </span>  <span class="Normal">int</span> top_index_offset = <a href='042name.cc.html#L140'>find_element_name</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Type_ordinal<span class="Delimiter">,</span> <span class="Constant">&quot;screen&quot;</span><span class="Delimiter">),</span> <span class="Constant">&quot;top-idx&quot;</span><span class="Delimiter">,</span> <span class="Constant">&quot;&quot;</span><span class="Delimiter">);</span>
+<span id="L264" class="LineNr">264 </span>  <span class="Normal">int</span> top_index_offset = <a href='042name.cc.html#L138'>find_element_name</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Type_ordinal<span class="Delimiter">,</span> <span class="Constant">&quot;screen&quot;</span><span class="Delimiter">),</span> <span class="Constant">&quot;top-idx&quot;</span><span class="Delimiter">,</span> <span class="Constant">&quot;&quot;</span><span class="Delimiter">);</span>
 <span id="L265" class="LineNr">265 </span>  <span class="Normal">int</span> top_index = <a href='001help.cc.html#L229'>get_or_insert</a><span class="Delimiter">(</span>Memory<span class="Delimiter">,</span> screen_location+top_index_offset<span class="Delimiter">);</span>
 <span id="L266" class="LineNr">266 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> i=<span class="Constant">0</span><span class="Delimiter">,</span> row=top_index/screen_width<span class="Delimiter">;</span>  i &lt; screen_height<span class="Delimiter">;</span>  ++i<span class="Delimiter">,</span> row=<span class="Delimiter">(</span>row+<span class="Constant">1</span><span class="Delimiter">)</span>%screen_height<span class="Delimiter">)</span> <span class="Delimiter">{</span>
 <span id="L267" class="LineNr">267 </span>  <span class="Conceal">¦</span> cursor<span class="Delimiter">.</span><a href='011load.cc.html#L209'>skip_whitespace_and_comments</a><span class="Delimiter">();</span>
 <span id="L268" class="LineNr">268 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>cursor<span class="Delimiter">.</span>at_end<span class="Delimiter">())</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L269" class="LineNr">269 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>cursor<span class="Delimiter">.</span>get<span class="Delimiter">()</span> != <span class="Constant">'.'</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L270" class="LineNr">270 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span><a href='026call.cc.html#L85'>current_recipe_name</a><span class="Delimiter">())</span> &lt;&lt; <span class="Constant">&quot;each row of the expected screen should start with a '.'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L270" class="LineNr">270 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span><a href='026call.cc.html#L87'>current_recipe_name</a><span class="Delimiter">())</span> &lt;&lt; <span class="Constant">&quot;each row of the expected screen should start with a '.'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L271" class="LineNr">271 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>!Scenario_testing_scenario<span class="Delimiter">)</span> Passed = <span class="Constant">false</span><span class="Delimiter">;</span>
 <span id="L272" class="LineNr">272 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Identifier">return</span><span class="Delimiter">;</span>
 <span id="L273" class="LineNr">273 </span>  <span class="Conceal">¦</span> <span class="Delimiter">}</span>
@@ -349,7 +349,7 @@ if ('onhashchange' in window) {
 <span id="L284" class="LineNr">284 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>color == -<span class="Constant">1</span> || color == <a href='001help.cc.html#L229'>get_or_insert</a><span class="Delimiter">(</span>Memory<span class="Delimiter">,</span> addr+cell_color_offset<span class="Delimiter">))</span> <span class="Identifier">continue</span><span class="Delimiter">;</span>
 <span id="L285" class="LineNr">285 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Comment">// contents match but color is off</span>
 <span id="L286" class="LineNr">286 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>!Hide_errors<span class="Delimiter">)</span> cerr &lt;&lt; <span class="cSpecial">'\n'</span><span class="Delimiter">;</span>
-<span id="L287" class="LineNr">287 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <span class="Constant">&quot;F - &quot;</span> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span><a href='026call.cc.html#L85'>current_recipe_name</a><span class="Delimiter">())</span> &lt;&lt; <span class="Constant">&quot;expected screen location (&quot;</span> &lt;&lt; row &lt;&lt; <span class="Constant">&quot;, &quot;</span> &lt;&lt; column &lt;&lt; <span class="Constant">&quot;) to contain '&quot;</span> &lt;&lt; unicode_character_at<span class="Delimiter">(</span>addr<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;' in color &quot;</span> &lt;&lt; color &lt;&lt; <span class="Constant">&quot; instead of &quot;</span> &lt;&lt; no_scientific<span class="Delimiter">(</span><a href='001help.cc.html#L229'>get_or_insert</a><span class="Delimiter">(</span>Memory<span class="Delimiter">,</span> addr+cell_color_offset<span class="Delimiter">))</span> &lt;&lt; <span class="Constant">&quot;</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L287" class="LineNr">287 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <span class="Constant">&quot;F - &quot;</span> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span><a href='026call.cc.html#L87'>current_recipe_name</a><span class="Delimiter">())</span> &lt;&lt; <span class="Constant">&quot;expected screen location (&quot;</span> &lt;&lt; row &lt;&lt; <span class="Constant">&quot;, &quot;</span> &lt;&lt; column &lt;&lt; <span class="Constant">&quot;) to contain '&quot;</span> &lt;&lt; unicode_character_at<span class="Delimiter">(</span>addr<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;' in color &quot;</span> &lt;&lt; color &lt;&lt; <span class="Constant">&quot; instead of &quot;</span> &lt;&lt; no_scientific<span class="Delimiter">(</span><a href='001help.cc.html#L229'>get_or_insert</a><span class="Delimiter">(</span>Memory<span class="Delimiter">,</span> addr+cell_color_offset<span class="Delimiter">))</span> &lt;&lt; <span class="Constant">&quot;</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L288" class="LineNr">288 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>!Hide_errors<span class="Delimiter">)</span> dump_screen<span class="Delimiter">();</span>
 <span id="L289" class="LineNr">289 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>!Scenario_testing_scenario<span class="Delimiter">)</span> Passed = <span class="Constant">false</span><span class="Delimiter">;</span>
 <span id="L290" class="LineNr">290 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Identifier">return</span><span class="Delimiter">;</span>
@@ -371,20 +371,20 @@ if ('onhashchange' in window) {
 <span id="L306" class="LineNr">306 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> ostringstream color_phrase<span class="Delimiter">;</span>
 <span id="L307" class="LineNr">307 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>color != -<span class="Constant">1</span><span class="Delimiter">)</span> color_phrase &lt;&lt; <span class="Constant">&quot; in color &quot;</span> &lt;&lt; color<span class="Delimiter">;</span>
 <span id="L308" class="LineNr">308 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>!Hide_errors<span class="Delimiter">)</span> cerr &lt;&lt; <span class="cSpecial">'\n'</span><span class="Delimiter">;</span>
-<span id="L309" class="LineNr">309 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <span class="Constant">&quot;F - &quot;</span> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span><a href='026call.cc.html#L85'>current_recipe_name</a><span class="Delimiter">())</span> &lt;&lt; <span class="Constant">&quot;expected screen location (&quot;</span> &lt;&lt; row &lt;&lt; <span class="Constant">&quot;, &quot;</span> &lt;&lt; column &lt;&lt; <span class="Constant">&quot;) to contain &quot;</span> &lt;&lt; curr &lt;&lt; expected_pretty &lt;&lt; color_phrase<span class="Delimiter">.</span>str<span class="Delimiter">()</span> &lt;&lt; <span class="Constant">&quot; instead of &quot;</span> &lt;&lt; no_scientific<span class="Delimiter">(</span><a href='001help.cc.html#L229'>get_or_insert</a><span class="Delimiter">(</span>Memory<span class="Delimiter">,</span> addr<span class="Delimiter">))</span> &lt;&lt; actual_pretty &lt;&lt; <span class="cSpecial">'\n'</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L309" class="LineNr">309 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <span class="Constant">&quot;F - &quot;</span> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span><a href='026call.cc.html#L87'>current_recipe_name</a><span class="Delimiter">())</span> &lt;&lt; <span class="Constant">&quot;expected screen location (&quot;</span> &lt;&lt; row &lt;&lt; <span class="Constant">&quot;, &quot;</span> &lt;&lt; column &lt;&lt; <span class="Constant">&quot;) to contain &quot;</span> &lt;&lt; curr &lt;&lt; expected_pretty &lt;&lt; color_phrase<span class="Delimiter">.</span>str<span class="Delimiter">()</span> &lt;&lt; <span class="Constant">&quot; instead of &quot;</span> &lt;&lt; no_scientific<span class="Delimiter">(</span><a href='001help.cc.html#L229'>get_or_insert</a><span class="Delimiter">(</span>Memory<span class="Delimiter">,</span> addr<span class="Delimiter">))</span> &lt;&lt; actual_pretty &lt;&lt; <span class="cSpecial">'\n'</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L310" class="LineNr">310 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>!Hide_errors<span class="Delimiter">)</span> dump_screen<span class="Delimiter">();</span>
 <span id="L311" class="LineNr">311 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>!Scenario_testing_scenario<span class="Delimiter">)</span> Passed = <span class="Constant">false</span><span class="Delimiter">;</span>
 <span id="L312" class="LineNr">312 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Identifier">return</span><span class="Delimiter">;</span>
 <span id="L313" class="LineNr">313 </span>  <span class="Conceal">¦</span> <span class="Delimiter">}</span>
 <span id="L314" class="LineNr">314 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>cursor<span class="Delimiter">.</span>get<span class="Delimiter">()</span> != <span class="Constant">'.'</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L315" class="LineNr">315 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span><a href='026call.cc.html#L85'>current_recipe_name</a><span class="Delimiter">())</span> &lt;&lt; <span class="Constant">&quot;row &quot;</span> &lt;&lt; row &lt;&lt; <span class="Constant">&quot; of the expected screen is too long</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L315" class="LineNr">315 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span><a href='026call.cc.html#L87'>current_recipe_name</a><span class="Delimiter">())</span> &lt;&lt; <span class="Constant">&quot;row &quot;</span> &lt;&lt; row &lt;&lt; <span class="Constant">&quot; of the expected screen is too long</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L316" class="LineNr">316 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>!Scenario_testing_scenario<span class="Delimiter">)</span> Passed = <span class="Constant">false</span><span class="Delimiter">;</span>
 <span id="L317" class="LineNr">317 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Identifier">return</span><span class="Delimiter">;</span>
 <span id="L318" class="LineNr">318 </span>  <span class="Conceal">¦</span> <span class="Delimiter">}</span>
 <span id="L319" class="LineNr">319 </span>  <span class="Delimiter">}</span>
 <span id="L320" class="LineNr">320 </span>  cursor<span class="Delimiter">.</span><a href='011load.cc.html#L209'>skip_whitespace_and_comments</a><span class="Delimiter">();</span>
 <span id="L321" class="LineNr">321 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!cursor<span class="Delimiter">.</span>at_end<span class="Delimiter">())</span> <span class="Delimiter">{</span>
-<span id="L322" class="LineNr">322 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span><a href='026call.cc.html#L85'>current_recipe_name</a><span class="Delimiter">())</span> &lt;&lt; <span class="Constant">&quot;expected screen has too many rows</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L322" class="LineNr">322 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span><a href='026call.cc.html#L87'>current_recipe_name</a><span class="Delimiter">())</span> &lt;&lt; <span class="Constant">&quot;expected screen has too many rows</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L323" class="LineNr">323 </span>  <span class="Conceal">¦</span> Passed = <span class="Constant">false</span><span class="Delimiter">;</span>
 <span id="L324" class="LineNr">324 </span>  <span class="Delimiter">}</span>
 <span id="L325" class="LineNr">325 </span><span class="Delimiter">}</span>
@@ -399,7 +399,7 @@ if ('onhashchange' in window) {
 <span id="L334" class="LineNr">334 </span><span class="Normal">bool</span> raw_string_stream::at_end<span class="Delimiter">()</span> <span class="Normal">const</span> <span class="Delimiter">{</span>
 <span id="L335" class="LineNr">335 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>index &gt;= max<span class="Delimiter">)</span> <span class="Identifier">return</span> <span class="Constant">true</span><span class="Delimiter">;</span>
 <span id="L336" class="LineNr">336 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>tb_utf8_char_length<span class="Delimiter">(</span>buf[index]<span class="Delimiter">)</span> &gt; max-index<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L337" class="LineNr">337 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <span class="Constant">&quot;unicode string seems corrupted at index &quot;</span>&lt;&lt; index &lt;&lt; <span class="Constant">&quot; character &quot;</span> &lt;&lt; <span class="Normal">static_cast</span>&lt;<span class="Normal">int</span>&gt;<span class="Delimiter">(</span>buf[index]<span class="Delimiter">)</span> &lt;&lt; <span class="cSpecial">'\n'</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L337" class="LineNr">337 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <span class="Constant">&quot;unicode string seems corrupted at index &quot;</span>&lt;&lt; index &lt;&lt; <span class="Constant">&quot; character &quot;</span> &lt;&lt; <span class="Normal">static_cast</span>&lt;<span class="Normal">int</span>&gt;<span class="Delimiter">(</span>buf[index]<span class="Delimiter">)</span> &lt;&lt; <span class="cSpecial">'\n'</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L338" class="LineNr">338 </span>  <span class="Conceal">¦</span> <span class="Identifier">return</span> <span class="Constant">true</span><span class="Delimiter">;</span>
 <span id="L339" class="LineNr">339 </span>  <span class="Delimiter">}</span>
 <span id="L340" class="LineNr">340 </span>  <span class="Identifier">return</span> <span class="Constant">false</span><span class="Delimiter">;</span>
@@ -451,16 +451,16 @@ if ('onhashchange' in window) {
 <span id="L386" class="LineNr">386 </span><span class="Delimiter">:(code)</span>
 <span id="L387" class="LineNr">387 </span><span class="Normal">void</span> dump_screen<span class="Delimiter">()</span> <span class="Delimiter">{</span>
 <span id="L388" class="LineNr">388 </span>  <span class="Normal">int</span> screen_location = <a href='001help.cc.html#L229'>get_or_insert</a><span class="Delimiter">(</span>Memory<span class="Delimiter">,</span> SCREEN<span class="Delimiter">)</span> + <span class="Comment">/*</span><span class="Comment">skip refcount</span><span class="Comment">*/</span><span class="Constant">1</span><span class="Delimiter">;</span>
-<span id="L389" class="LineNr">389 </span>  <span class="Normal">int</span> width_offset = <a href='042name.cc.html#L140'>find_element_name</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Type_ordinal<span class="Delimiter">,</span> <span class="Constant">&quot;screen&quot;</span><span class="Delimiter">),</span> <span class="Constant">&quot;num-columns&quot;</span><span class="Delimiter">,</span> <span class="Constant">&quot;&quot;</span><span class="Delimiter">);</span>
+<span id="L389" class="LineNr">389 </span>  <span class="Normal">int</span> width_offset = <a href='042name.cc.html#L138'>find_element_name</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Type_ordinal<span class="Delimiter">,</span> <span class="Constant">&quot;screen&quot;</span><span class="Delimiter">),</span> <span class="Constant">&quot;num-columns&quot;</span><span class="Delimiter">,</span> <span class="Constant">&quot;&quot;</span><span class="Delimiter">);</span>
 <span id="L390" class="LineNr">390 </span>  <span class="Normal">int</span> screen_width = <a href='001help.cc.html#L229'>get_or_insert</a><span class="Delimiter">(</span>Memory<span class="Delimiter">,</span> screen_location+width_offset<span class="Delimiter">);</span>
-<span id="L391" class="LineNr">391 </span>  <span class="Normal">int</span> height_offset = <a href='042name.cc.html#L140'>find_element_name</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Type_ordinal<span class="Delimiter">,</span> <span class="Constant">&quot;screen&quot;</span><span class="Delimiter">),</span> <span class="Constant">&quot;num-rows&quot;</span><span class="Delimiter">,</span> <span class="Constant">&quot;&quot;</span><span class="Delimiter">);</span>
+<span id="L391" class="LineNr">391 </span>  <span class="Normal">int</span> height_offset = <a href='042name.cc.html#L138'>find_element_name</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Type_ordinal<span class="Delimiter">,</span> <span class="Constant">&quot;screen&quot;</span><span class="Delimiter">),</span> <span class="Constant">&quot;num-rows&quot;</span><span class="Delimiter">,</span> <span class="Constant">&quot;&quot;</span><span class="Delimiter">);</span>
 <span id="L392" class="LineNr">392 </span>  <span class="Normal">int</span> screen_height = <a href='001help.cc.html#L229'>get_or_insert</a><span class="Delimiter">(</span>Memory<span class="Delimiter">,</span> screen_location+height_offset<span class="Delimiter">);</span>
-<span id="L393" class="LineNr">393 </span>  <span class="Normal">int</span> data_offset = <a href='042name.cc.html#L140'>find_element_name</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Type_ordinal<span class="Delimiter">,</span> <span class="Constant">&quot;screen&quot;</span><span class="Delimiter">),</span> <span class="Constant">&quot;data&quot;</span><span class="Delimiter">,</span> <span class="Constant">&quot;&quot;</span><span class="Delimiter">);</span>
+<span id="L393" class="LineNr">393 </span>  <span class="Normal">int</span> data_offset = <a href='042name.cc.html#L138'>find_element_name</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Type_ordinal<span class="Delimiter">,</span> <span class="Constant">&quot;screen&quot;</span><span class="Delimiter">),</span> <span class="Constant">&quot;data&quot;</span><span class="Delimiter">,</span> <span class="Constant">&quot;&quot;</span><span class="Delimiter">);</span>
 <span id="L394" class="LineNr">394 </span>  assert<span class="Delimiter">(</span>data_offset &gt;= <span class="Constant">0</span><span class="Delimiter">);</span>
 <span id="L395" class="LineNr">395 </span>  <span class="Normal">int</span> screen_data_location = screen_location+data_offset<span class="Delimiter">;</span>  <span class="Comment">// type: address:array:character</span>
 <span id="L396" class="LineNr">396 </span>  <span class="Normal">int</span> screen_data_start = <a href='001help.cc.html#L229'>get_or_insert</a><span class="Delimiter">(</span>Memory<span class="Delimiter">,</span> screen_data_location<span class="Delimiter">)</span> + <span class="Comment">/*</span><span class="Comment">skip refcount</span><span class="Comment">*/</span><span class="Constant">1</span><span class="Delimiter">;</span>  <span class="Comment">// type: array:character</span>
 <span id="L397" class="LineNr">397 </span>  assert<span class="Delimiter">(</span><a href='001help.cc.html#L229'>get_or_insert</a><span class="Delimiter">(</span>Memory<span class="Delimiter">,</span> screen_data_start<span class="Delimiter">)</span> == screen_width*screen_height<span class="Delimiter">);</span>
-<span id="L398" class="LineNr">398 </span>  <span class="Normal">int</span> top_index_offset = <a href='042name.cc.html#L140'>find_element_name</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Type_ordinal<span class="Delimiter">,</span> <span class="Constant">&quot;screen&quot;</span><span class="Delimiter">),</span> <span class="Constant">&quot;top-idx&quot;</span><span class="Delimiter">,</span> <span class="Constant">&quot;&quot;</span><span class="Delimiter">);</span>
+<span id="L398" class="LineNr">398 </span>  <span class="Normal">int</span> top_index_offset = <a href='042name.cc.html#L138'>find_element_name</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Type_ordinal<span class="Delimiter">,</span> <span class="Constant">&quot;screen&quot;</span><span class="Delimiter">),</span> <span class="Constant">&quot;top-idx&quot;</span><span class="Delimiter">,</span> <span class="Constant">&quot;&quot;</span><span class="Delimiter">);</span>
 <span id="L399" class="LineNr">399 </span>  <span class="Normal">int</span> top_index = <a href='001help.cc.html#L229'>get_or_insert</a><span class="Delimiter">(</span>Memory<span class="Delimiter">,</span> screen_location+top_index_offset<span class="Delimiter">);</span>
 <span id="L400" class="LineNr">400 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> i=<span class="Constant">0</span><span class="Delimiter">,</span> row=top_index/screen_width<span class="Delimiter">;</span>  i &lt; screen_height<span class="Delimiter">;</span>  ++i<span class="Delimiter">,</span> row=<span class="Delimiter">(</span>row+<span class="Constant">1</span><span class="Delimiter">)</span>%screen_height<span class="Delimiter">)</span> <span class="Delimiter">{</span>
 <span id="L401" class="LineNr">401 </span>  <span class="Conceal">¦</span> cerr &lt;&lt; <span class="Constant">'.'</span><span class="Delimiter">;</span>
diff --git a/html/085scenario_console.cc.html b/html/085scenario_console.cc.html
index c36eb9b8..2ee54ca4 100644
--- a/html/085scenario_console.cc.html
+++ b/html/085scenario_console.cc.html
@@ -101,7 +101,7 @@ if ('onhashchange' in window) {
 <span id="L39" class="LineNr"> 39 </span><span class="Delimiter">:(before &quot;End Special Scenario Variable Names(r)&quot;)</span>
 <span id="L40" class="LineNr"> 40 </span>Name[r][<span class="Constant">&quot;console&quot;</span>] = CONSOLE<span class="Delimiter">;</span>
 <span id="L41" class="LineNr"> 41 </span><span class="Comment">//: make 'console' always a raw location in scenarios</span>
-<span id="L42" class="LineNr"> 42 </span><span class="Delimiter">:(before &quot;End <a href='042name.cc.html#L163'>is_special_name</a> Special-cases&quot;)</span>
+<span id="L42" class="LineNr"> 42 </span><span class="Delimiter">:(before &quot;End <a href='042name.cc.html#L161'>is_special_name</a> Special-cases&quot;)</span>
 <span id="L43" class="LineNr"> 43 </span><span class="Normal">if</span> <span class="Delimiter">(</span>s == <span class="Constant">&quot;console&quot;</span><span class="Delimiter">)</span> <span class="Identifier">return</span> <span class="Constant">true</span><span class="Delimiter">;</span>
 <span id="L44" class="LineNr"> 44 </span>
 <span id="L45" class="LineNr"> 45 </span><span class="Delimiter">:(before &quot;End Primitive Recipe Declarations&quot;)</span>
@@ -115,7 +115,7 @@ if ('onhashchange' in window) {
 <span id="L53" class="LineNr"> 53 </span><span class="Delimiter">:(before &quot;End Primitive Recipe Implementations&quot;)</span>
 <span id="L54" class="LineNr"> 54 </span><span class="Normal">case</span> ASSUME_CONSOLE: <span class="Delimiter">{</span>
 <span id="L55" class="LineNr"> 55 </span>  <span class="Comment">// create a temporary recipe just for parsing; it won't contain valid instructions</span>
-<span id="L56" class="LineNr"> 56 </span>  istringstream in<span class="Delimiter">(</span><span class="Constant">&quot;[&quot;</span> + <a href='026call.cc.html#L87'>current_instruction</a><span class="Delimiter">().</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>name + <span class="Constant">&quot;]&quot;</span><span class="Delimiter">);</span>
+<span id="L56" class="LineNr"> 56 </span>  istringstream in<span class="Delimiter">(</span><span class="Constant">&quot;[&quot;</span> + <a href='026call.cc.html#L89'>current_instruction</a><span class="Delimiter">().</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>name + <span class="Constant">&quot;]&quot;</span><span class="Delimiter">);</span>
 <span id="L57" class="LineNr"> 57 </span>  <a href='010vm.cc.html#L19'>recipe</a> r<span class="Delimiter">;</span>
 <span id="L58" class="LineNr"> 58 </span>  <a href='011load.cc.html#L81'>slurp_body</a><span class="Delimiter">(</span>in<span class="Delimiter">,</span> r<span class="Delimiter">);</span>
 <span id="L59" class="LineNr"> 59 </span>  <span class="Normal">int</span> num_events = <a href='085scenario_console.cc.html#L284'>count_events</a><span class="Delimiter">(</span>r<span class="Delimiter">);</span>
@@ -128,7 +128,7 @@ if ('onhashchange' in window) {
 <span id="L66" class="LineNr"> 66 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> i = <span class="Constant">0</span><span class="Delimiter">;</span>  i &lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>r<span class="Delimiter">.</span>steps<span class="Delimiter">);</span>  ++i<span class="Delimiter">)</span> <span class="Delimiter">{</span>
 <span id="L67" class="LineNr"> 67 </span>  <span class="Conceal">¦</span> <span class="Normal">const</span> instruction&amp; inst = r<span class="Delimiter">.</span>steps<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">);</span>
 <span id="L68" class="LineNr"> 68 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>inst<span class="Delimiter">.</span>name == <span class="Constant">&quot;left-click&quot;</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L69" class="LineNr"> 69 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">&quot;mem&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;storing 'left-click' event starting at &quot;</span> &lt;&lt; Current_routine<span class="Delimiter">-&gt;</span>alloc &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L69" class="LineNr"> 69 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L167'>trace</a><span class="Delimiter">(</span><span class="Constant">&quot;mem&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;storing 'left-click' event starting at &quot;</span> &lt;&lt; Current_routine<span class="Delimiter">-&gt;</span>alloc &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L70" class="LineNr"> 70 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='001help.cc.html#L221'>put</a><span class="Delimiter">(</span>Memory<span class="Delimiter">,</span> curr_address<span class="Delimiter">,</span> <span class="Comment">/*</span><span class="Comment">tag for 'touch-event' variant of 'event' exclusive-container</span><span class="Comment">*/</span><span class="Constant">2</span><span class="Delimiter">);</span>
 <span id="L71" class="LineNr"> 71 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='001help.cc.html#L221'>put</a><span class="Delimiter">(</span>Memory<span class="Delimiter">,</span> curr_address+<span class="Comment">/*</span><span class="Comment">skip tag</span><span class="Comment">*/</span><span class="Constant">1</span>+<span class="Comment">/*</span><span class="Comment">offset of 'type' in 'mouse-event'</span><span class="Comment">*/</span><span class="Constant">0</span><span class="Delimiter">,</span> TB_KEY_MOUSE_LEFT<span class="Delimiter">);</span>
 <span id="L72" class="LineNr"> 72 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='001help.cc.html#L221'>put</a><span class="Delimiter">(</span>Memory<span class="Delimiter">,</span> curr_address+<span class="Comment">/*</span><span class="Comment">skip tag</span><span class="Comment">*/</span><span class="Constant">1</span>+<span class="Comment">/*</span><span class="Comment">offset of 'row' in 'mouse-event'</span><span class="Comment">*/</span><span class="Constant">1</span><span class="Delimiter">,</span> <a href='002test.cc.html#L91'>to_integer</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>name<span class="Delimiter">));</span>
@@ -136,14 +136,14 @@ if ('onhashchange' in window) {
 <span id="L74" class="LineNr"> 74 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> curr_address += <a href='085scenario_console.cc.html#L296'>size_of_event</a><span class="Delimiter">();</span>
 <span id="L75" class="LineNr"> 75 </span>  <span class="Conceal">¦</span> <span class="Delimiter">}</span>
 <span id="L76" class="LineNr"> 76 </span>  <span class="Conceal">¦</span> <span class="Normal">else</span> <span class="Normal">if</span> <span class="Delimiter">(</span>inst<span class="Delimiter">.</span>name == <span class="Constant">&quot;press&quot;</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L77" class="LineNr"> 77 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">&quot;mem&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;storing 'press' event starting at &quot;</span> &lt;&lt; curr_address &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L77" class="LineNr"> 77 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L167'>trace</a><span class="Delimiter">(</span><span class="Constant">&quot;mem&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;storing 'press' event starting at &quot;</span> &lt;&lt; curr_address &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L78" class="LineNr"> 78 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> string key = inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>name<span class="Delimiter">;</span>
 <span id="L79" class="LineNr"> 79 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span><a href='002test.cc.html#L85'>is_integer</a><span class="Delimiter">(</span>key<span class="Delimiter">))</span>
 <span id="L80" class="LineNr"> 80 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='001help.cc.html#L221'>put</a><span class="Delimiter">(</span>Memory<span class="Delimiter">,</span> curr_address+<span class="Constant">1</span><span class="Delimiter">,</span> <a href='002test.cc.html#L91'>to_integer</a><span class="Delimiter">(</span>key<span class="Delimiter">));</span>
 <span id="L81" class="LineNr"> 81 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">else</span> <span class="Normal">if</span> <span class="Delimiter">(</span>contains_key<span class="Delimiter">(</span>Key<span class="Delimiter">,</span> key<span class="Delimiter">))</span>
 <span id="L82" class="LineNr"> 82 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='001help.cc.html#L221'>put</a><span class="Delimiter">(</span>Memory<span class="Delimiter">,</span> curr_address+<span class="Constant">1</span><span class="Delimiter">,</span> Key[key]<span class="Delimiter">);</span>
 <span id="L83" class="LineNr"> 83 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">else</span>
-<span id="L84" class="LineNr"> 84 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <span class="Constant">&quot;assume-console: can't press '&quot;</span> &lt;&lt; key &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; end<span class="Delimiter">();</span>
+<span id="L84" class="LineNr"> 84 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <span class="Constant">&quot;assume-console: can't press '&quot;</span> &lt;&lt; key &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; end<span class="Delimiter">();</span>
 <span id="L85" class="LineNr"> 85 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span><a href='001help.cc.html#L229'>get_or_insert</a><span class="Delimiter">(</span>Memory<span class="Delimiter">,</span> curr_address+<span class="Constant">1</span><span class="Delimiter">)</span> &lt; <span class="Constant">256</span><span class="Delimiter">)</span>
 <span id="L86" class="LineNr"> 86 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Comment">// these keys are in ascii</span>
 <span id="L87" class="LineNr"> 87 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='001help.cc.html#L221'>put</a><span class="Delimiter">(</span>Memory<span class="Delimiter">,</span> curr_address<span class="Delimiter">,</span> <span class="Comment">/*</span><span class="Comment">tag for 'text' variant of 'event' exclusive-container</span><span class="Comment">*/</span><span class="Constant">0</span><span class="Delimiter">);</span>
@@ -157,18 +157,18 @@ if ('onhashchange' in window) {
 <span id="L95" class="LineNr"> 95 </span>  <span class="Conceal">¦</span> <span class="Normal">else</span> <span class="Delimiter">{</span>
 <span id="L96" class="LineNr"> 96 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Comment">// keyboard input</span>
 <span id="L97" class="LineNr"> 97 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> assert<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>name == <span class="Constant">&quot;type&quot;</span><span class="Delimiter">);</span>
-<span id="L98" class="LineNr"> 98 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">&quot;mem&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;storing 'type' event starting at &quot;</span> &lt;&lt; curr_address &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L98" class="LineNr"> 98 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L167'>trace</a><span class="Delimiter">(</span><span class="Constant">&quot;mem&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;storing 'type' event starting at &quot;</span> &lt;&lt; curr_address &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L99" class="LineNr"> 99 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">const</span> string&amp; contents = inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>name<span class="Delimiter">;</span>
 <span id="L100" class="LineNr">100 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">const</span> <span class="Normal">char</span>* raw_contents = contents<span class="Delimiter">.</span>c_str<span class="Delimiter">();</span>
 <span id="L101" class="LineNr">101 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">int</span> num_keyboard_events = <a href='038new_text.cc.html#L131'>unicode_length</a><span class="Delimiter">(</span>contents<span class="Delimiter">);</span>
 <span id="L102" class="LineNr">102 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">int</span> curr = <span class="Constant">0</span><span class="Delimiter">;</span>
 <span id="L103" class="LineNr">103 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> i = <span class="Constant">0</span><span class="Delimiter">;</span>  i &lt; num_keyboard_events<span class="Delimiter">;</span>  ++i<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L104" class="LineNr">104 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">&quot;mem&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;storing 'text' tag at &quot;</span> &lt;&lt; curr_address &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L104" class="LineNr">104 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L167'>trace</a><span class="Delimiter">(</span><span class="Constant">&quot;mem&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;storing 'text' tag at &quot;</span> &lt;&lt; curr_address &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L105" class="LineNr">105 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='001help.cc.html#L221'>put</a><span class="Delimiter">(</span>Memory<span class="Delimiter">,</span> curr_address<span class="Delimiter">,</span> <span class="Comment">/*</span><span class="Comment">tag for 'text' variant of 'event' exclusive-container</span><span class="Comment">*/</span><span class="Constant">0</span><span class="Delimiter">);</span>
 <span id="L106" class="LineNr">106 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">uint32_t</span> curr_character<span class="Delimiter">;</span>
 <span id="L107" class="LineNr">107 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> assert<span class="Delimiter">(</span>curr &lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>contents<span class="Delimiter">));</span>
 <span id="L108" class="LineNr">108 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> tb_utf8_char_to_unicode<span class="Delimiter">(</span>&amp;curr_character<span class="Delimiter">,</span> &amp;raw_contents[curr]<span class="Delimiter">);</span>
-<span id="L109" class="LineNr">109 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">&quot;mem&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;storing character &quot;</span> &lt;&lt; curr_character &lt;&lt; <span class="Constant">&quot; at &quot;</span> &lt;&lt; curr_address+<span class="Comment">/*</span><span class="Comment">skip exclusive container tag</span><span class="Comment">*/</span><span class="Constant">1</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L109" class="LineNr">109 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L167'>trace</a><span class="Delimiter">(</span><span class="Constant">&quot;mem&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;storing character &quot;</span> &lt;&lt; curr_character &lt;&lt; <span class="Constant">&quot; at &quot;</span> &lt;&lt; curr_address+<span class="Comment">/*</span><span class="Comment">skip exclusive container tag</span><span class="Comment">*/</span><span class="Constant">1</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L110" class="LineNr">110 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='001help.cc.html#L221'>put</a><span class="Delimiter">(</span>Memory<span class="Delimiter">,</span> curr_address+<span class="Comment">/*</span><span class="Comment">skip exclusive container tag</span><span class="Comment">*/</span><span class="Constant">1</span><span class="Delimiter">,</span> curr_character<span class="Delimiter">);</span>
 <span id="L111" class="LineNr">111 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> curr += tb_utf8_char_length<span class="Delimiter">(</span>raw_contents[curr]<span class="Delimiter">);</span>
 <span id="L112" class="LineNr">112 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> curr_address += <a href='085scenario_console.cc.html#L296'>size_of_event</a><span class="Delimiter">();</span>
@@ -178,9 +178,9 @@ if ('onhashchange' in window) {
 <span id="L116" class="LineNr">116 </span>  assert<span class="Delimiter">(</span>curr_address == event_data_address+size<span class="Delimiter">);</span>
 <span id="L117" class="LineNr">117 </span>  <span class="Comment">// wrap the array of events in a console object</span>
 <span id="L118" class="LineNr">118 </span>  <span class="Normal">int</span> console_address = allocate<span class="Delimiter">(</span><a href='085scenario_console.cc.html#L306'>size_of_console</a><span class="Delimiter">());</span>
-<span id="L119" class="LineNr">119 </span>  <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">&quot;mem&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;storing console in &quot;</span> &lt;&lt; console_address &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L119" class="LineNr">119 </span>  <a href='003trace.cc.html#L167'>trace</a><span class="Delimiter">(</span><span class="Constant">&quot;mem&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;storing console in &quot;</span> &lt;&lt; console_address &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L120" class="LineNr">120 </span>  <a href='001help.cc.html#L221'>put</a><span class="Delimiter">(</span>Memory<span class="Delimiter">,</span> CONSOLE<span class="Delimiter">,</span> console_address<span class="Delimiter">);</span>
-<span id="L121" class="LineNr">121 </span>  <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">&quot;mem&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;storing console data in &quot;</span> &lt;&lt; console_address+<span class="Comment">/*</span><span class="Comment">skip refcount</span><span class="Comment">*/</span><span class="Constant">1</span>+<span class="Comment">/*</span><span class="Comment">offset of 'data' in container 'events'</span><span class="Comment">*/</span><span class="Constant">1</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L121" class="LineNr">121 </span>  <a href='003trace.cc.html#L167'>trace</a><span class="Delimiter">(</span><span class="Constant">&quot;mem&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;storing console data in &quot;</span> &lt;&lt; console_address+<span class="Comment">/*</span><span class="Comment">skip refcount</span><span class="Comment">*/</span><span class="Constant">1</span>+<span class="Comment">/*</span><span class="Comment">offset of 'data' in container 'events'</span><span class="Comment">*/</span><span class="Constant">1</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L122" class="LineNr">122 </span>  <a href='001help.cc.html#L221'>put</a><span class="Delimiter">(</span>Memory<span class="Delimiter">,</span> console_address+<span class="Comment">/*</span><span class="Comment">skip refcount</span><span class="Comment">*/</span><span class="Constant">1</span>+<span class="Comment">/*</span><span class="Comment">offset of 'data' in container 'events'</span><span class="Comment">*/</span><span class="Constant">1</span><span class="Delimiter">,</span> event_data_address<span class="Delimiter">);</span>
 <span id="L123" class="LineNr">123 </span>  <span class="Comment">// increment refcount for event data</span>
 <span id="L124" class="LineNr">124 </span>  <a href='001help.cc.html#L221'>put</a><span class="Delimiter">(</span>Memory<span class="Delimiter">,</span> event_data_address<span class="Delimiter">,</span> <span class="Constant">1</span><span class="Delimiter">);</span>
@@ -327,7 +327,7 @@ if ('onhashchange' in window) {
 <span id="L265" class="LineNr">265 </span><span class="Normal">case</span> REPLACE_IN_CONSOLE: <span class="Delimiter">{</span>
 <span id="L266" class="LineNr">266 </span>  assert<span class="Delimiter">(</span>scalar<span class="Delimiter">(</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">)));</span>
 <span id="L267" class="LineNr">267 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!get_or_insert<span class="Delimiter">(</span>Memory<span class="Delimiter">,</span> CONSOLE<span class="Delimiter">))</span> <span class="Delimiter">{</span>
-<span id="L268" class="LineNr">268 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <span class="Constant">&quot;console not initialized</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L268" class="LineNr">268 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <span class="Constant">&quot;console not initialized</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L269" class="LineNr">269 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L270" class="LineNr">270 </span>  <span class="Delimiter">}</span>
 <span id="L271" class="LineNr">271 </span>  <span class="Normal">int</span> console_address = <a href='001help.cc.html#L229'>get_or_insert</a><span class="Delimiter">(</span>Memory<span class="Delimiter">,</span> CONSOLE<span class="Delimiter">);</span>
diff --git a/html/087file.cc.html b/html/087file.cc.html
index a42e29b4..11aaa14c 100644
--- a/html/087file.cc.html
+++ b/html/087file.cc.html
@@ -77,19 +77,19 @@ if ('onhashchange' in window) {
 <span id="L16" class="LineNr"> 16 </span><span class="Delimiter">:(before &quot;End Primitive Recipe Checks&quot;)</span>
 <span id="L17" class="LineNr"> 17 </span><span class="Normal">case</span> _OPEN_FILE_FOR_READING: <span class="Delimiter">{</span>
 <span id="L18" class="LineNr"> 18 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">)</span> != <span class="Constant">1</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L19" class="LineNr"> 19 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'$open-file-for-reading' requires exactly one ingredient, but got '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L19" class="LineNr"> 19 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'$open-file-for-reading' requires exactly one ingredient, but got '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L20" class="LineNr"> 20 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L21" class="LineNr"> 21 </span>  <span class="Delimiter">}</span>
 <span id="L22" class="LineNr"> 22 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!is_mu_text<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">)))</span> <span class="Delimiter">{</span>
-<span id="L23" class="LineNr"> 23 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;first ingredient of '$open-file-for-reading' should be a string, but got '&quot;</span> &lt;&lt; to_string<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">))</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L23" class="LineNr"> 23 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;first ingredient of '$open-file-for-reading' should be a string, but got '&quot;</span> &lt;&lt; to_string<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">))</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L24" class="LineNr"> 24 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L25" class="LineNr"> 25 </span>  <span class="Delimiter">}</span>
 <span id="L26" class="LineNr"> 26 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>products<span class="Delimiter">)</span> != <span class="Constant">1</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L27" class="LineNr"> 27 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'$open-file-for-reading' requires exactly one product, but got '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L27" class="LineNr"> 27 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'$open-file-for-reading' requires exactly one product, but got '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L28" class="LineNr"> 28 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L29" class="LineNr"> 29 </span>  <span class="Delimiter">}</span>
 <span id="L30" class="LineNr"> 30 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!is_mu_number<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">)))</span> <span class="Delimiter">{</span>
-<span id="L31" class="LineNr"> 31 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;first product of '$open-file-for-reading' should be a number (file handle), but got '&quot;</span> &lt;&lt; to_string<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">))</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L31" class="LineNr"> 31 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;first product of '$open-file-for-reading' should be a number (file handle), but got '&quot;</span> &lt;&lt; to_string<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">))</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L32" class="LineNr"> 32 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L33" class="LineNr"> 33 </span>  <span class="Delimiter">}</span>
 <span id="L34" class="LineNr"> 34 </span>  <span class="Identifier">break</span><span class="Delimiter">;</span>
@@ -112,19 +112,19 @@ if ('onhashchange' in window) {
 <span id="L51" class="LineNr"> 51 </span><span class="Delimiter">:(before &quot;End Primitive Recipe Checks&quot;)</span>
 <span id="L52" class="LineNr"> 52 </span><span class="Normal">case</span> _OPEN_FILE_FOR_WRITING: <span class="Delimiter">{</span>
 <span id="L53" class="LineNr"> 53 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">)</span> != <span class="Constant">1</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L54" class="LineNr"> 54 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'$open-file-for-writing' requires exactly one ingredient, but got '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L54" class="LineNr"> 54 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'$open-file-for-writing' requires exactly one ingredient, but got '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L55" class="LineNr"> 55 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L56" class="LineNr"> 56 </span>  <span class="Delimiter">}</span>
 <span id="L57" class="LineNr"> 57 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!is_mu_text<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">)))</span> <span class="Delimiter">{</span>
-<span id="L58" class="LineNr"> 58 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;first ingredient of '$open-file-for-writing' should be a string, but got '&quot;</span> &lt;&lt; to_string<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">))</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L58" class="LineNr"> 58 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;first ingredient of '$open-file-for-writing' should be a string, but got '&quot;</span> &lt;&lt; to_string<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">))</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L59" class="LineNr"> 59 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L60" class="LineNr"> 60 </span>  <span class="Delimiter">}</span>
 <span id="L61" class="LineNr"> 61 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>products<span class="Delimiter">)</span> != <span class="Constant">1</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L62" class="LineNr"> 62 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'$open-file-for-writing' requires exactly one product, but got '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L62" class="LineNr"> 62 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'$open-file-for-writing' requires exactly one product, but got '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L63" class="LineNr"> 63 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L64" class="LineNr"> 64 </span>  <span class="Delimiter">}</span>
 <span id="L65" class="LineNr"> 65 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!is_mu_number<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">)))</span> <span class="Delimiter">{</span>
-<span id="L66" class="LineNr"> 66 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;first product of '$open-file-for-writing' should be a number (file handle), but got '&quot;</span> &lt;&lt; to_string<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">))</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L66" class="LineNr"> 66 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;first product of '$open-file-for-writing' should be a number (file handle), but got '&quot;</span> &lt;&lt; to_string<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">))</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L67" class="LineNr"> 67 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L68" class="LineNr"> 68 </span>  <span class="Delimiter">}</span>
 <span id="L69" class="LineNr"> 69 </span>  <span class="Identifier">break</span><span class="Delimiter">;</span>
@@ -146,23 +146,23 @@ if ('onhashchange' in window) {
 <span id="L85" class="LineNr"> 85 </span><span class="Delimiter">:(before &quot;End Primitive Recipe Checks&quot;)</span>
 <span id="L86" class="LineNr"> 86 </span><span class="Normal">case</span> _READ_FROM_FILE: <span class="Delimiter">{</span>
 <span id="L87" class="LineNr"> 87 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">)</span> != <span class="Constant">1</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L88" class="LineNr"> 88 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'$read-from-file' requires exactly one ingredient, but got '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L88" class="LineNr"> 88 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'$read-from-file' requires exactly one ingredient, but got '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L89" class="LineNr"> 89 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L90" class="LineNr"> 90 </span>  <span class="Delimiter">}</span>
 <span id="L91" class="LineNr"> 91 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!is_mu_number<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">)))</span> <span class="Delimiter">{</span>
-<span id="L92" class="LineNr"> 92 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;first ingredient of '$read-from-file' should be a number, but got '&quot;</span> &lt;&lt; to_string<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">))</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L92" class="LineNr"> 92 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;first ingredient of '$read-from-file' should be a number, but got '&quot;</span> &lt;&lt; to_string<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">))</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L93" class="LineNr"> 93 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L94" class="LineNr"> 94 </span>  <span class="Delimiter">}</span>
 <span id="L95" class="LineNr"> 95 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>products<span class="Delimiter">)</span> != <span class="Constant">2</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L96" class="LineNr"> 96 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'$read-from-file' requires exactly two products, but got '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L96" class="LineNr"> 96 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'$read-from-file' requires exactly two products, but got '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L97" class="LineNr"> 97 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L98" class="LineNr"> 98 </span>  <span class="Delimiter">}</span>
 <span id="L99" class="LineNr"> 99 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!is_mu_character<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">)))</span> <span class="Delimiter">{</span>
-<span id="L100" class="LineNr">100 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;first product of '$read-from-file' should be a character, but got '&quot;</span> &lt;&lt; to_string<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">))</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L100" class="LineNr">100 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;first product of '$read-from-file' should be a character, but got '&quot;</span> &lt;&lt; to_string<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">))</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L101" class="LineNr">101 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L102" class="LineNr">102 </span>  <span class="Delimiter">}</span>
 <span id="L103" class="LineNr">103 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!is_mu_boolean<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">1</span><span class="Delimiter">)))</span> <span class="Delimiter">{</span>
-<span id="L104" class="LineNr">104 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;second product of '$read-from-file' should be a boolean, but got '&quot;</span> &lt;&lt; to_string<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">1</span><span class="Delimiter">))</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L104" class="LineNr">104 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;second product of '$read-from-file' should be a boolean, but got '&quot;</span> &lt;&lt; to_string<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">1</span><span class="Delimiter">))</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L105" class="LineNr">105 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L106" class="LineNr">106 </span>  <span class="Delimiter">}</span>
 <span id="L107" class="LineNr">107 </span>  <span class="Identifier">break</span><span class="Delimiter">;</span>
@@ -172,7 +172,7 @@ if ('onhashchange' in window) {
 <span id="L111" class="LineNr">111 </span>  <span class="Normal">long</span> <span class="Normal">long</span> <span class="Normal">int</span> x = <span class="Normal">static_cast</span>&lt;<span class="Normal">long</span> <span class="Normal">long</span> <span class="Normal">int</span>&gt;<span class="Delimiter">(</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">));</span>
 <span id="L112" class="LineNr">112 </span>  <span class="Normal">FILE</span>* f = <span class="Normal">reinterpret_cast</span>&lt;<span class="Normal">FILE</span>*&gt;<span class="Delimiter">(</span>x<span class="Delimiter">);</span>
 <span id="L113" class="LineNr">113 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>f == <span class="Constant">NULL</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L114" class="LineNr">114 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span><a href='026call.cc.html#L85'>current_recipe_name</a><span class="Delimiter">())</span> &lt;&lt; <span class="Constant">&quot;can't read from null file in '&quot;</span> &lt;&lt; <a href='028call_return.cc.html#L163'>to_string</a><span class="Delimiter">(</span><a href='026call.cc.html#L87'>current_instruction</a><span class="Delimiter">())</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; end<span class="Delimiter">();</span>
+<span id="L114" class="LineNr">114 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span><a href='026call.cc.html#L87'>current_recipe_name</a><span class="Delimiter">())</span> &lt;&lt; <span class="Constant">&quot;can't read from null file in '&quot;</span> &lt;&lt; <a href='028call_return.cc.html#L163'>to_string</a><span class="Delimiter">(</span><a href='026call.cc.html#L89'>current_instruction</a><span class="Delimiter">())</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; end<span class="Delimiter">();</span>
 <span id="L115" class="LineNr">115 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L116" class="LineNr">116 </span>  <span class="Delimiter">}</span>
 <span id="L117" class="LineNr">117 </span>  products<span class="Delimiter">.</span>resize<span class="Delimiter">(</span><span class="Constant">2</span><span class="Delimiter">);</span>
@@ -182,7 +182,7 @@ if ('onhashchange' in window) {
 <span id="L121" class="LineNr">121 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L122" class="LineNr">122 </span>  <span class="Delimiter">}</span>
 <span id="L123" class="LineNr">123 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>ferror<span class="Delimiter">(</span>f<span class="Delimiter">))</span> <span class="Delimiter">{</span>
-<span id="L124" class="LineNr">124 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span><a href='026call.cc.html#L85'>current_recipe_name</a><span class="Delimiter">())</span> &lt;&lt; <span class="Constant">&quot;file in invalid state in '&quot;</span> &lt;&lt; to_string<span class="Delimiter">(</span>current_instruction<span class="Delimiter">())</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L124" class="LineNr">124 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span><a href='026call.cc.html#L87'>current_recipe_name</a><span class="Delimiter">())</span> &lt;&lt; <span class="Constant">&quot;file in invalid state in '&quot;</span> &lt;&lt; to_string<span class="Delimiter">(</span>current_instruction<span class="Delimiter">())</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L125" class="LineNr">125 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L126" class="LineNr">126 </span>  <span class="Delimiter">}</span>
 <span id="L127" class="LineNr">127 </span>  <span class="Normal">char</span> c = getc<span class="Delimiter">(</span>f<span class="Delimiter">);</span>  <span class="Comment">// todo: unicode</span>
@@ -192,8 +192,8 @@ if ('onhashchange' in window) {
 <span id="L131" class="LineNr">131 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L132" class="LineNr">132 </span>  <span class="Delimiter">}</span>
 <span id="L133" class="LineNr">133 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>ferror<span class="Delimiter">(</span>f<span class="Delimiter">))</span> <span class="Delimiter">{</span>
-<span id="L134" class="LineNr">134 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span><a href='026call.cc.html#L85'>current_recipe_name</a><span class="Delimiter">())</span> &lt;&lt; <span class="Constant">&quot;couldn't read from file in '&quot;</span> &lt;&lt; <a href='028call_return.cc.html#L163'>to_string</a><span class="Delimiter">(</span><a href='026call.cc.html#L87'>current_instruction</a><span class="Delimiter">())</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; end<span class="Delimiter">();</span>
-<span id="L135" class="LineNr">135 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <span class="Constant">&quot;  errno: &quot;</span> &lt;&lt; errno &lt;&lt; <span class="cSpecial">'\n'</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L134" class="LineNr">134 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span><a href='026call.cc.html#L87'>current_recipe_name</a><span class="Delimiter">())</span> &lt;&lt; <span class="Constant">&quot;couldn't read from file in '&quot;</span> &lt;&lt; <a href='028call_return.cc.html#L163'>to_string</a><span class="Delimiter">(</span><a href='026call.cc.html#L89'>current_instruction</a><span class="Delimiter">())</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; end<span class="Delimiter">();</span>
+<span id="L135" class="LineNr">135 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <span class="Constant">&quot;  errno: &quot;</span> &lt;&lt; errno &lt;&lt; <span class="cSpecial">'\n'</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L136" class="LineNr">136 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L137" class="LineNr">137 </span>  <span class="Delimiter">}</span>
 <span id="L138" class="LineNr">138 </span>  products<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>push_back<span class="Delimiter">(</span>c<span class="Delimiter">);</span>
@@ -210,19 +210,19 @@ if ('onhashchange' in window) {
 <span id="L149" class="LineNr">149 </span><span class="Delimiter">:(before &quot;End Primitive Recipe Checks&quot;)</span>
 <span id="L150" class="LineNr">150 </span><span class="Normal">case</span> _WRITE_TO_FILE: <span class="Delimiter">{</span>
 <span id="L151" class="LineNr">151 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">)</span> != <span class="Constant">2</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L152" class="LineNr">152 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'$write-to-file' requires exactly two ingredients, but got '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L152" class="LineNr">152 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'$write-to-file' requires exactly two ingredients, but got '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L153" class="LineNr">153 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L154" class="LineNr">154 </span>  <span class="Delimiter">}</span>
 <span id="L155" class="LineNr">155 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!is_mu_number<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">)))</span> <span class="Delimiter">{</span>
-<span id="L156" class="LineNr">156 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;first ingredient of '$write-to-file' should be a number, but got '&quot;</span> &lt;&lt; to_string<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">))</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L156" class="LineNr">156 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;first ingredient of '$write-to-file' should be a number, but got '&quot;</span> &lt;&lt; to_string<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">))</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L157" class="LineNr">157 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L158" class="LineNr">158 </span>  <span class="Delimiter">}</span>
 <span id="L159" class="LineNr">159 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!is_mu_character<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">1</span><span class="Delimiter">)))</span> <span class="Delimiter">{</span>
-<span id="L160" class="LineNr">160 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;second ingredient of '$write-to-file' should be a character, but got '&quot;</span> &lt;&lt; to_string<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">))</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L160" class="LineNr">160 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;second ingredient of '$write-to-file' should be a character, but got '&quot;</span> &lt;&lt; to_string<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">))</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L161" class="LineNr">161 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L162" class="LineNr">162 </span>  <span class="Delimiter">}</span>
 <span id="L163" class="LineNr">163 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>empty<span class="Delimiter">())</span> <span class="Delimiter">{</span>
-<span id="L164" class="LineNr">164 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'$write-to-file' writes to no products, but got '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L164" class="LineNr">164 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'$write-to-file' writes to no products, but got '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L165" class="LineNr">165 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L166" class="LineNr">166 </span>  <span class="Delimiter">}</span>
 <span id="L167" class="LineNr">167 </span>  <span class="Identifier">break</span><span class="Delimiter">;</span>
@@ -232,20 +232,20 @@ if ('onhashchange' in window) {
 <span id="L171" class="LineNr">171 </span>  <span class="Normal">long</span> <span class="Normal">long</span> <span class="Normal">int</span> x = <span class="Normal">static_cast</span>&lt;<span class="Normal">long</span> <span class="Normal">long</span> <span class="Normal">int</span>&gt;<span class="Delimiter">(</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">));</span>
 <span id="L172" class="LineNr">172 </span>  <span class="Normal">FILE</span>* f = <span class="Normal">reinterpret_cast</span>&lt;<span class="Normal">FILE</span>*&gt;<span class="Delimiter">(</span>x<span class="Delimiter">);</span>
 <span id="L173" class="LineNr">173 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>f == <span class="Constant">NULL</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L174" class="LineNr">174 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span><a href='026call.cc.html#L85'>current_recipe_name</a><span class="Delimiter">())</span> &lt;&lt; <span class="Constant">&quot;can't write to null file in '&quot;</span> &lt;&lt; <a href='028call_return.cc.html#L163'>to_string</a><span class="Delimiter">(</span><a href='026call.cc.html#L87'>current_instruction</a><span class="Delimiter">())</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; end<span class="Delimiter">();</span>
+<span id="L174" class="LineNr">174 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span><a href='026call.cc.html#L87'>current_recipe_name</a><span class="Delimiter">())</span> &lt;&lt; <span class="Constant">&quot;can't write to null file in '&quot;</span> &lt;&lt; <a href='028call_return.cc.html#L163'>to_string</a><span class="Delimiter">(</span><a href='026call.cc.html#L89'>current_instruction</a><span class="Delimiter">())</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; end<span class="Delimiter">();</span>
 <span id="L175" class="LineNr">175 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L176" class="LineNr">176 </span>  <span class="Delimiter">}</span>
 <span id="L177" class="LineNr">177 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>feof<span class="Delimiter">(</span>f<span class="Delimiter">))</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L178" class="LineNr">178 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>ferror<span class="Delimiter">(</span>f<span class="Delimiter">))</span> <span class="Delimiter">{</span>
-<span id="L179" class="LineNr">179 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span><a href='026call.cc.html#L85'>current_recipe_name</a><span class="Delimiter">())</span> &lt;&lt; <span class="Constant">&quot;file in invalid state in '&quot;</span> &lt;&lt; to_string<span class="Delimiter">(</span>current_instruction<span class="Delimiter">())</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L179" class="LineNr">179 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span><a href='026call.cc.html#L87'>current_recipe_name</a><span class="Delimiter">())</span> &lt;&lt; <span class="Constant">&quot;file in invalid state in '&quot;</span> &lt;&lt; to_string<span class="Delimiter">(</span>current_instruction<span class="Delimiter">())</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L180" class="LineNr">180 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L181" class="LineNr">181 </span>  <span class="Delimiter">}</span>
 <span id="L182" class="LineNr">182 </span>  <span class="Normal">long</span> <span class="Normal">long</span> <span class="Normal">int</span> y = <span class="Normal">static_cast</span>&lt;<span class="Normal">long</span> <span class="Normal">long</span> <span class="Normal">int</span>&gt;<span class="Delimiter">(</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">1</span><span class="Delimiter">).</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">));</span>
 <span id="L183" class="LineNr">183 </span>  <span class="Normal">char</span> c = <span class="Normal">static_cast</span>&lt;<span class="Normal">char</span>&gt;<span class="Delimiter">(</span>y<span class="Delimiter">);</span>
 <span id="L184" class="LineNr">184 </span>  putc<span class="Delimiter">(</span>c<span class="Delimiter">,</span> f<span class="Delimiter">);</span>  <span class="Comment">// todo: unicode</span>
 <span id="L185" class="LineNr">185 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>ferror<span class="Delimiter">(</span>f<span class="Delimiter">))</span> <span class="Delimiter">{</span>
-<span id="L186" class="LineNr">186 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span><a href='026call.cc.html#L85'>current_recipe_name</a><span class="Delimiter">())</span> &lt;&lt; <span class="Constant">&quot;couldn't write to file in '&quot;</span> &lt;&lt; <a href='028call_return.cc.html#L163'>to_string</a><span class="Delimiter">(</span><a href='026call.cc.html#L87'>current_instruction</a><span class="Delimiter">())</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; end<span class="Delimiter">();</span>
-<span id="L187" class="LineNr">187 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <span class="Constant">&quot;  errno: &quot;</span> &lt;&lt; errno &lt;&lt; <span class="cSpecial">'\n'</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L186" class="LineNr">186 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span><a href='026call.cc.html#L87'>current_recipe_name</a><span class="Delimiter">())</span> &lt;&lt; <span class="Constant">&quot;couldn't write to file in '&quot;</span> &lt;&lt; <a href='028call_return.cc.html#L163'>to_string</a><span class="Delimiter">(</span><a href='026call.cc.html#L89'>current_instruction</a><span class="Delimiter">())</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; end<span class="Delimiter">();</span>
+<span id="L187" class="LineNr">187 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <span class="Constant">&quot;  errno: &quot;</span> &lt;&lt; errno &lt;&lt; <span class="cSpecial">'\n'</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L188" class="LineNr">188 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L189" class="LineNr">189 </span>  <span class="Delimiter">}</span>
 <span id="L190" class="LineNr">190 </span>  <span class="Identifier">break</span><span class="Delimiter">;</span>
@@ -258,19 +258,19 @@ if ('onhashchange' in window) {
 <span id="L197" class="LineNr">197 </span><span class="Delimiter">:(before &quot;End Primitive Recipe Checks&quot;)</span>
 <span id="L198" class="LineNr">198 </span><span class="Normal">case</span> _CLOSE_FILE: <span class="Delimiter">{</span>
 <span id="L199" class="LineNr">199 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">)</span> != <span class="Constant">1</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L200" class="LineNr">200 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'$close-file' requires exactly one ingredient, but got '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L200" class="LineNr">200 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'$close-file' requires exactly one ingredient, but got '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L201" class="LineNr">201 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L202" class="LineNr">202 </span>  <span class="Delimiter">}</span>
 <span id="L203" class="LineNr">203 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!is_mu_number<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">)))</span> <span class="Delimiter">{</span>
-<span id="L204" class="LineNr">204 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;first ingredient of '$close-file' should be a number, but got '&quot;</span> &lt;&lt; to_string<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">))</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L204" class="LineNr">204 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;first ingredient of '$close-file' should be a number, but got '&quot;</span> &lt;&lt; to_string<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">))</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L205" class="LineNr">205 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L206" class="LineNr">206 </span>  <span class="Delimiter">}</span>
 <span id="L207" class="LineNr">207 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>products<span class="Delimiter">)</span> != <span class="Constant">1</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L208" class="LineNr">208 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'$close-file' requires exactly one product, but got '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L208" class="LineNr">208 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'$close-file' requires exactly one product, but got '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L209" class="LineNr">209 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L210" class="LineNr">210 </span>  <span class="Delimiter">}</span>
 <span id="L211" class="LineNr">211 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>name != inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>name<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L212" class="LineNr">212 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'$close-file' requires its product to be the same as its ingredient, but got '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L212" class="LineNr">212 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'$close-file' requires its product to be the same as its ingredient, but got '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L213" class="LineNr">213 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L214" class="LineNr">214 </span>  <span class="Delimiter">}</span>
 <span id="L215" class="LineNr">215 </span>  <span class="Identifier">break</span><span class="Delimiter">;</span>
diff --git a/html/088file.mu.html b/html/088file.mu.html
index f4b0be86..bc975087 100644
--- a/html/088file.mu.html
+++ b/html/088file.mu.html
@@ -204,7 +204,7 @@ if ('onhashchange' in window) {
 <span id="L143" class="LineNr">143 </span>  <span class="Delimiter">}</span>
 <span id="L144" class="LineNr">144 </span>  close sink-file
 <span id="L145" class="LineNr">145 </span>  <span class="Comment"># make sure to wait for the file to be actually written to disk</span>
-<span id="L146" class="LineNr">146 </span>  <span class="Comment"># (Mu practices structured concurrency: <a href="http://250bpm.com/blog:71">http://250bpm.com/blog:71</a>)</span>
+<span id="L146" class="LineNr">146 </span>  <span class="Comment"># (Mu practices structured concurrency: <a href="http://250bpm.com/blog:71)">http://250bpm.com/blog:71)</a></span>
 <span id="L147" class="LineNr">147 </span>  wait-for-routine write-routine
 <span id="L148" class="LineNr">148 </span>]
 <span id="L149" class="LineNr">149 </span>
diff --git a/html/089scenario_filesystem.cc.html b/html/089scenario_filesystem.cc.html
index 434dcc16..9f98685a 100644
--- a/html/089scenario_filesystem.cc.html
+++ b/html/089scenario_filesystem.cc.html
@@ -138,7 +138,7 @@ if ('onhashchange' in window) {
 <span id="L76" class="LineNr"> 76 </span><span class="Delimiter">:(before &quot;End Special Scenario Variable Names(r)&quot;)</span>
 <span id="L77" class="LineNr"> 77 </span>Name[r][<span class="Constant">&quot;resources&quot;</span>] = RESOURCES<span class="Delimiter">;</span>
 <span id="L78" class="LineNr"> 78 </span><span class="Comment">//: make 'resources' always a raw location in scenarios</span>
-<span id="L79" class="LineNr"> 79 </span><span class="Delimiter">:(before &quot;End <a href='042name.cc.html#L163'>is_special_name</a> Special-cases&quot;)</span>
+<span id="L79" class="LineNr"> 79 </span><span class="Delimiter">:(before &quot;End <a href='042name.cc.html#L161'>is_special_name</a> Special-cases&quot;)</span>
 <span id="L80" class="LineNr"> 80 </span><span class="Normal">if</span> <span class="Delimiter">(</span>s == <span class="Constant">&quot;resources&quot;</span><span class="Delimiter">)</span> <span class="Identifier">return</span> <span class="Constant">true</span><span class="Delimiter">;</span>
 <span id="L81" class="LineNr"> 81 </span><span class="Delimiter">:(before &quot;End Initialize Type Of Special Name In Scenario(r)&quot;)</span>
 <span id="L82" class="LineNr"> 82 </span><span class="Normal">if</span> <span class="Delimiter">(</span>r<span class="Delimiter">.</span>name == <span class="Constant">&quot;resources&quot;</span><span class="Delimiter">)</span> r<span class="Delimiter">.</span>type = <a href='018type_abbreviations.cc.html#L58'>new_type_tree</a><span class="Delimiter">(</span><span class="Constant">&quot;address:resources&quot;</span><span class="Delimiter">);</span>
@@ -158,7 +158,7 @@ if ('onhashchange' in window) {
 <span id="L96" class="LineNr"> 96 </span><span class="Delimiter">:(before &quot;End Primitive Recipe Implementations&quot;)</span>
 <span id="L97" class="LineNr"> 97 </span><span class="Normal">case</span> ASSUME_RESOURCES: <span class="Delimiter">{</span>
 <span id="L98" class="LineNr"> 98 </span>  assert<span class="Delimiter">(</span>scalar<span class="Delimiter">(</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">)));</span>
-<span id="L99" class="LineNr"> 99 </span>  <a href='089scenario_filesystem.cc.html#L104'>assume_resources</a><span class="Delimiter">(</span><a href='026call.cc.html#L87'>current_instruction</a><span class="Delimiter">().</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>name<span class="Delimiter">,</span> <a href='026call.cc.html#L85'>current_recipe_name</a><span class="Delimiter">());</span>
+<span id="L99" class="LineNr"> 99 </span>  <a href='089scenario_filesystem.cc.html#L104'>assume_resources</a><span class="Delimiter">(</span><a href='026call.cc.html#L89'>current_instruction</a><span class="Delimiter">().</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>name<span class="Delimiter">,</span> <a href='026call.cc.html#L87'>current_recipe_name</a><span class="Delimiter">());</span>
 <span id="L100" class="LineNr">100 </span>  <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L101" class="LineNr">101 </span><span class="Delimiter">}</span>
 <span id="L102" class="LineNr">102 </span>
@@ -179,49 +179,49 @@ if ('onhashchange' in window) {
 <span id="L117" class="LineNr">117 </span>  <span class="Conceal">¦</span> string filename = <a href='011load.cc.html#L167'>next_word</a><span class="Delimiter">(</span>in<span class="Delimiter">);</span>
 <span id="L118" class="LineNr">118 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>filename<span class="Delimiter">.</span>empty<span class="Delimiter">())</span> <span class="Delimiter">{</span>
 <span id="L119" class="LineNr">119 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> assert<span class="Delimiter">(</span>!has_data<span class="Delimiter">(</span>in<span class="Delimiter">));</span>
-<span id="L120" class="LineNr">120 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <span class="Constant">&quot;incomplete 'resources' block at <a href='003trace.cc.html#L197'>end</a> of file (0)</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L120" class="LineNr">120 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <span class="Constant">&quot;incomplete 'resources' block at <a href='003trace.cc.html#L203'>end</a> of file (0)</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L121" class="LineNr">121 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Identifier">return</span><span class="Delimiter">;</span>
 <span id="L122" class="LineNr">122 </span>  <span class="Conceal">¦</span> <span class="Delimiter">}</span>
 <span id="L123" class="LineNr">123 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>*filename<span class="Delimiter">.</span>begin<span class="Delimiter">()</span> != <span class="Constant">'['</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L124" class="LineNr">124 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; caller &lt;&lt; <span class="Constant">&quot;: assume-resources: filename '&quot;</span> &lt;&lt; filename &lt;&lt; <span class="Constant">&quot;' must begin with a '['</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L124" class="LineNr">124 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; caller &lt;&lt; <span class="Constant">&quot;: assume-resources: filename '&quot;</span> &lt;&lt; filename &lt;&lt; <span class="Constant">&quot;' must begin with a '['</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L125" class="LineNr">125 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L126" class="LineNr">126 </span>  <span class="Conceal">¦</span> <span class="Delimiter">}</span>
 <span id="L127" class="LineNr">127 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>*filename<span class="Delimiter">.</span>rbegin<span class="Delimiter">()</span> != <span class="Constant">']'</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L128" class="LineNr">128 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; caller &lt;&lt; <span class="Constant">&quot;: assume-resources: filename '&quot;</span> &lt;&lt; filename &lt;&lt; <span class="Constant">&quot;' must <a href='003trace.cc.html#L197'>end</a> with a ']'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L128" class="LineNr">128 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; caller &lt;&lt; <span class="Constant">&quot;: assume-resources: filename '&quot;</span> &lt;&lt; filename &lt;&lt; <span class="Constant">&quot;' must <a href='003trace.cc.html#L203'>end</a> with a ']'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L129" class="LineNr">129 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L130" class="LineNr">130 </span>  <span class="Conceal">¦</span> <span class="Delimiter">}</span>
 <span id="L131" class="LineNr">131 </span>  <span class="Conceal">¦</span> filename<span class="Delimiter">.</span>erase<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">,</span> <span class="Constant">1</span><span class="Delimiter">);</span>
 <span id="L132" class="LineNr">132 </span>  <span class="Conceal">¦</span> filename<span class="Delimiter">.</span>erase<span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>filename<span class="Delimiter">)</span>-<span class="Constant">1</span><span class="Delimiter">);</span>
 <span id="L133" class="LineNr">133 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>!has_data<span class="Delimiter">(</span>in<span class="Delimiter">))</span> <span class="Delimiter">{</span>
-<span id="L134" class="LineNr">134 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; caller &lt;&lt; <span class="Constant">&quot;: assume-resources: no data for filename '&quot;</span> &lt;&lt; filename &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L134" class="LineNr">134 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; caller &lt;&lt; <span class="Constant">&quot;: assume-resources: no data for filename '&quot;</span> &lt;&lt; filename &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L135" class="LineNr">135 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L136" class="LineNr">136 </span>  <span class="Conceal">¦</span> <span class="Delimiter">}</span>
 <span id="L137" class="LineNr">137 </span>  <span class="Conceal">¦</span> string arrow = <a href='011load.cc.html#L167'>next_word</a><span class="Delimiter">(</span>in<span class="Delimiter">);</span>
 <span id="L138" class="LineNr">138 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>arrow<span class="Delimiter">.</span>empty<span class="Delimiter">())</span> <span class="Delimiter">{</span>
 <span id="L139" class="LineNr">139 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> assert<span class="Delimiter">(</span>!has_data<span class="Delimiter">(</span>in<span class="Delimiter">));</span>
-<span id="L140" class="LineNr">140 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <span class="Constant">&quot;incomplete 'resources' block at <a href='003trace.cc.html#L197'>end</a> of file (1)</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L140" class="LineNr">140 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <span class="Constant">&quot;incomplete 'resources' block at <a href='003trace.cc.html#L203'>end</a> of file (1)</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L141" class="LineNr">141 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Identifier">return</span><span class="Delimiter">;</span>
 <span id="L142" class="LineNr">142 </span>  <span class="Conceal">¦</span> <span class="Delimiter">}</span>
 <span id="L143" class="LineNr">143 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>arrow != <span class="Constant">&quot;&lt;-&quot;</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L144" class="LineNr">144 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; caller &lt;&lt; <span class="Constant">&quot;: assume-resources: expected '&lt;-' after filename '&quot;</span> &lt;&lt; filename &lt;&lt; <span class="Constant">&quot;' but got '&quot;</span> &lt;&lt; arrow &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L144" class="LineNr">144 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; caller &lt;&lt; <span class="Constant">&quot;: assume-resources: expected '&lt;-' after filename '&quot;</span> &lt;&lt; filename &lt;&lt; <span class="Constant">&quot;' but got '&quot;</span> &lt;&lt; arrow &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L145" class="LineNr">145 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L146" class="LineNr">146 </span>  <span class="Conceal">¦</span> <span class="Delimiter">}</span>
 <span id="L147" class="LineNr">147 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>!has_data<span class="Delimiter">(</span>in<span class="Delimiter">))</span> <span class="Delimiter">{</span>
-<span id="L148" class="LineNr">148 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; caller &lt;&lt; <span class="Constant">&quot;: assume-resources: no data for filename '&quot;</span> &lt;&lt; filename &lt;&lt; <span class="Constant">&quot;' after '&lt;-'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L148" class="LineNr">148 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; caller &lt;&lt; <span class="Constant">&quot;: assume-resources: no data for filename '&quot;</span> &lt;&lt; filename &lt;&lt; <span class="Constant">&quot;' after '&lt;-'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L149" class="LineNr">149 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L150" class="LineNr">150 </span>  <span class="Conceal">¦</span> <span class="Delimiter">}</span>
 <span id="L151" class="LineNr">151 </span>  <span class="Conceal">¦</span> string contents = <a href='011load.cc.html#L167'>next_word</a><span class="Delimiter">(</span>in<span class="Delimiter">);</span>
 <span id="L152" class="LineNr">152 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>contents<span class="Delimiter">.</span>empty<span class="Delimiter">())</span> <span class="Delimiter">{</span>
 <span id="L153" class="LineNr">153 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> assert<span class="Delimiter">(</span>!has_data<span class="Delimiter">(</span>in<span class="Delimiter">));</span>
-<span id="L154" class="LineNr">154 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <span class="Constant">&quot;incomplete 'resources' block at <a href='003trace.cc.html#L197'>end</a> of file (2)</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L154" class="LineNr">154 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <span class="Constant">&quot;incomplete 'resources' block at <a href='003trace.cc.html#L203'>end</a> of file (2)</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L155" class="LineNr">155 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Identifier">return</span><span class="Delimiter">;</span>
 <span id="L156" class="LineNr">156 </span>  <span class="Conceal">¦</span> <span class="Delimiter">}</span>
 <span id="L157" class="LineNr">157 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>*contents<span class="Delimiter">.</span>begin<span class="Delimiter">()</span> != <span class="Constant">'['</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L158" class="LineNr">158 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; caller &lt;&lt; <span class="Constant">&quot;: assume-resources: file contents '&quot;</span> &lt;&lt; contents &lt;&lt; <span class="Constant">&quot;' for filename '&quot;</span> &lt;&lt; filename &lt;&lt; <span class="Constant">&quot;' must begin with a '['</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L158" class="LineNr">158 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; caller &lt;&lt; <span class="Constant">&quot;: assume-resources: file contents '&quot;</span> &lt;&lt; contents &lt;&lt; <span class="Constant">&quot;' for filename '&quot;</span> &lt;&lt; filename &lt;&lt; <span class="Constant">&quot;' must begin with a '['</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L159" class="LineNr">159 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L160" class="LineNr">160 </span>  <span class="Conceal">¦</span> <span class="Delimiter">}</span>
 <span id="L161" class="LineNr">161 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>*contents<span class="Delimiter">.</span>rbegin<span class="Delimiter">()</span> != <span class="Constant">']'</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L162" class="LineNr">162 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; caller &lt;&lt; <span class="Constant">&quot;: assume-resources: file contents '&quot;</span> &lt;&lt; contents &lt;&lt; <span class="Constant">&quot;' for filename '&quot;</span> &lt;&lt; filename &lt;&lt; <span class="Constant">&quot;' must <a href='003trace.cc.html#L197'>end</a> with a ']'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L162" class="LineNr">162 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; caller &lt;&lt; <span class="Constant">&quot;: assume-resources: file contents '&quot;</span> &lt;&lt; contents &lt;&lt; <span class="Constant">&quot;' for filename '&quot;</span> &lt;&lt; filename &lt;&lt; <span class="Constant">&quot;' must <a href='003trace.cc.html#L203'>end</a> with a ']'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L163" class="LineNr">163 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L164" class="LineNr">164 </span>  <span class="Conceal">¦</span> <span class="Delimiter">}</span>
 <span id="L165" class="LineNr">165 </span>  <span class="Conceal">¦</span> contents<span class="Delimiter">.</span>erase<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">,</span> <span class="Constant">1</span><span class="Delimiter">);</span>
@@ -241,7 +241,7 @@ if ('onhashchange' in window) {
 <span id="L179" class="LineNr">179 </span>  <span class="Conceal">¦</span> <a href='038new_text.cc.html#L223'>skip_whitespace</a><span class="Delimiter">(</span>in<span class="Delimiter">);</span>
 <span id="L180" class="LineNr">180 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>!has_data<span class="Delimiter">(</span>in<span class="Delimiter">))</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L181" class="LineNr">181 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>in<span class="Delimiter">.</span>peek<span class="Delimiter">()</span> != <span class="Constant">'|'</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L182" class="LineNr">182 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; caller &lt;&lt; <span class="Constant">&quot;: assume-resources: file contents for filename '&quot;</span> &lt;&lt; filename &lt;&lt; <span class="Constant">&quot;' must be delimited in '|'s</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L182" class="LineNr">182 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; caller &lt;&lt; <span class="Constant">&quot;: assume-resources: file contents for filename '&quot;</span> &lt;&lt; filename &lt;&lt; <span class="Constant">&quot;' must be delimited in '|'s</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L183" class="LineNr">183 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L184" class="LineNr">184 </span>  <span class="Conceal">¦</span> <span class="Delimiter">}</span>
 <span id="L185" class="LineNr">185 </span>  <span class="Conceal">¦</span> in<span class="Delimiter">.</span>get<span class="Delimiter">();</span>  <span class="Comment">// skip leading '|'</span>
@@ -252,7 +252,7 @@ if ('onhashchange' in window) {
 <span id="L190" class="LineNr">190 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>line<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">)</span> == <span class="cSpecial">'\\'</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
 <span id="L191" class="LineNr">191 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> ++i<span class="Delimiter">;</span>  <span class="Comment">// skip</span>
 <span id="L192" class="LineNr">192 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>i == <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>line<span class="Delimiter">))</span> <span class="Delimiter">{</span>
-<span id="L193" class="LineNr">193 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; caller &lt;&lt; <span class="Constant">&quot;: assume-resources: file contents can't end a line with '</span><span class="cSpecial">\\</span><span class="Constant">'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; end<span class="Delimiter">();</span>
+<span id="L193" class="LineNr">193 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; caller &lt;&lt; <span class="Constant">&quot;: assume-resources: file contents can't end a line with '</span><span class="cSpecial">\\</span><span class="Constant">'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; end<span class="Delimiter">();</span>
 <span id="L194" class="LineNr">194 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L195" class="LineNr">195 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Delimiter">}</span>
 <span id="L196" class="LineNr">196 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Delimiter">}</span>
@@ -267,33 +267,33 @@ if ('onhashchange' in window) {
 <span id="L205" class="LineNr">205 </span><span class="Normal">void</span> <a href='089scenario_filesystem.cc.html#L205'>construct_resources_object</a><span class="Delimiter">(</span><span class="Normal">const</span> map&lt;string<span class="Delimiter">,</span> string&gt;&amp; contents<span class="Delimiter">)</span> <span class="Delimiter">{</span>
 <span id="L206" class="LineNr">206 </span>  <span class="Normal">int</span> resources_data_address = allocate<span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>contents<span class="Delimiter">)</span>*<span class="Constant">2</span> + <span class="Comment">/*</span><span class="Comment">array length</span><span class="Comment">*/</span><span class="Constant">1</span><span class="Delimiter">);</span>
 <span id="L207" class="LineNr">207 </span>  <span class="Normal">int</span> curr = resources_data_address + <span class="Comment">/*</span><span class="Comment">skip refcount and length</span><span class="Comment">*/</span><span class="Constant">2</span><span class="Delimiter">;</span>
-<span id="L208" class="LineNr">208 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span>map&lt;string<span class="Delimiter">,</span> string&gt;::const_iterator p = contents<span class="Delimiter">.</span>begin<span class="Delimiter">();</span>  p != contents<span class="Delimiter">.</span><a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>  ++p<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L208" class="LineNr">208 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span>map&lt;string<span class="Delimiter">,</span> string&gt;::const_iterator p = contents<span class="Delimiter">.</span>begin<span class="Delimiter">();</span>  p != contents<span class="Delimiter">.</span><a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>  ++p<span class="Delimiter">)</span> <span class="Delimiter">{</span>
 <span id="L209" class="LineNr">209 </span>  <span class="Conceal">¦</span> <a href='001help.cc.html#L221'>put</a><span class="Delimiter">(</span>Memory<span class="Delimiter">,</span> curr<span class="Delimiter">,</span> <a href='038new_text.cc.html#L38'>new_mu_text</a><span class="Delimiter">(</span>p<span class="Delimiter">-&gt;</span>first<span class="Delimiter">));</span>
-<span id="L210" class="LineNr">210 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">&quot;mem&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;storing file name &quot;</span> &lt;&lt; get<span class="Delimiter">(</span>Memory<span class="Delimiter">,</span> curr<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot; in location &quot;</span> &lt;&lt; curr &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L210" class="LineNr">210 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L167'>trace</a><span class="Delimiter">(</span><span class="Constant">&quot;mem&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;storing file name &quot;</span> &lt;&lt; get<span class="Delimiter">(</span>Memory<span class="Delimiter">,</span> curr<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot; in location &quot;</span> &lt;&lt; curr &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L211" class="LineNr">211 </span>  <span class="Conceal">¦</span> <a href='001help.cc.html#L221'>put</a><span class="Delimiter">(</span>Memory<span class="Delimiter">,</span> get<span class="Delimiter">(</span>Memory<span class="Delimiter">,</span> curr<span class="Delimiter">),</span> <span class="Constant">1</span><span class="Delimiter">);</span>
-<span id="L212" class="LineNr">212 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">&quot;mem&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;storing refcount 1 in location &quot;</span> &lt;&lt; get<span class="Delimiter">(</span>Memory<span class="Delimiter">,</span> curr<span class="Delimiter">)</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L212" class="LineNr">212 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L167'>trace</a><span class="Delimiter">(</span><span class="Constant">&quot;mem&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;storing refcount 1 in location &quot;</span> &lt;&lt; get<span class="Delimiter">(</span>Memory<span class="Delimiter">,</span> curr<span class="Delimiter">)</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L213" class="LineNr">213 </span>  <span class="Conceal">¦</span> ++curr<span class="Delimiter">;</span>
 <span id="L214" class="LineNr">214 </span>  <span class="Conceal">¦</span> <a href='001help.cc.html#L221'>put</a><span class="Delimiter">(</span>Memory<span class="Delimiter">,</span> curr<span class="Delimiter">,</span> <a href='038new_text.cc.html#L38'>new_mu_text</a><span class="Delimiter">(</span>p<span class="Delimiter">-&gt;</span>second<span class="Delimiter">));</span>
-<span id="L215" class="LineNr">215 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">&quot;mem&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;storing file contents &quot;</span> &lt;&lt; get<span class="Delimiter">(</span>Memory<span class="Delimiter">,</span> curr<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot; in location &quot;</span> &lt;&lt; curr &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L215" class="LineNr">215 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L167'>trace</a><span class="Delimiter">(</span><span class="Constant">&quot;mem&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;storing file contents &quot;</span> &lt;&lt; get<span class="Delimiter">(</span>Memory<span class="Delimiter">,</span> curr<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot; in location &quot;</span> &lt;&lt; curr &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L216" class="LineNr">216 </span>  <span class="Conceal">¦</span> <a href='001help.cc.html#L221'>put</a><span class="Delimiter">(</span>Memory<span class="Delimiter">,</span> get<span class="Delimiter">(</span>Memory<span class="Delimiter">,</span> curr<span class="Delimiter">),</span> <span class="Constant">1</span><span class="Delimiter">);</span>
-<span id="L217" class="LineNr">217 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">&quot;mem&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;storing refcount 1 in location &quot;</span> &lt;&lt; get<span class="Delimiter">(</span>Memory<span class="Delimiter">,</span> curr<span class="Delimiter">)</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L217" class="LineNr">217 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L167'>trace</a><span class="Delimiter">(</span><span class="Constant">&quot;mem&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;storing refcount 1 in location &quot;</span> &lt;&lt; get<span class="Delimiter">(</span>Memory<span class="Delimiter">,</span> curr<span class="Delimiter">)</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L218" class="LineNr">218 </span>  <span class="Conceal">¦</span> ++curr<span class="Delimiter">;</span>
 <span id="L219" class="LineNr">219 </span>  <span class="Delimiter">}</span>
 <span id="L220" class="LineNr">220 </span>  curr = resources_data_address+<span class="Comment">/*</span><span class="Comment">skip refcount</span><span class="Comment">*/</span><span class="Constant">1</span><span class="Delimiter">;</span>
 <span id="L221" class="LineNr">221 </span>  <a href='001help.cc.html#L221'>put</a><span class="Delimiter">(</span>Memory<span class="Delimiter">,</span> curr<span class="Delimiter">,</span> <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>contents<span class="Delimiter">));</span>  <span class="Comment">// size of array</span>
-<span id="L222" class="LineNr">222 </span>  <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">&quot;mem&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;storing resources size &quot;</span> &lt;&lt; get<span class="Delimiter">(</span>Memory<span class="Delimiter">,</span> curr<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot; in location &quot;</span> &lt;&lt; curr &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L222" class="LineNr">222 </span>  <a href='003trace.cc.html#L167'>trace</a><span class="Delimiter">(</span><span class="Constant">&quot;mem&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;storing resources size &quot;</span> &lt;&lt; get<span class="Delimiter">(</span>Memory<span class="Delimiter">,</span> curr<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot; in location &quot;</span> &lt;&lt; curr &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L223" class="LineNr">223 </span>  <a href='001help.cc.html#L221'>put</a><span class="Delimiter">(</span>Memory<span class="Delimiter">,</span> resources_data_address<span class="Delimiter">,</span> <span class="Constant">1</span><span class="Delimiter">);</span>  <span class="Comment">// initialize refcount</span>
-<span id="L224" class="LineNr">224 </span>  <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">&quot;mem&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;storing refcount 1 in location &quot;</span> &lt;&lt; resources_data_address &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L224" class="LineNr">224 </span>  <a href='003trace.cc.html#L167'>trace</a><span class="Delimiter">(</span><span class="Constant">&quot;mem&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;storing refcount 1 in location &quot;</span> &lt;&lt; resources_data_address &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L225" class="LineNr">225 </span>  <span class="Comment">// wrap the resources data in a 'resources' object</span>
 <span id="L226" class="LineNr">226 </span>  <span class="Normal">int</span> resources_address = allocate<span class="Delimiter">(</span><a href='089scenario_filesystem.cc.html#L237'>size_of_resources</a><span class="Delimiter">());</span>
 <span id="L227" class="LineNr">227 </span>  curr = resources_address+<span class="Comment">/*</span><span class="Comment">skip refcount</span><span class="Comment">*/</span><span class="Constant">1</span>+<span class="Comment">/*</span><span class="Comment">offset of 'data' element</span><span class="Comment">*/</span><span class="Constant">1</span><span class="Delimiter">;</span>
 <span id="L228" class="LineNr">228 </span>  <a href='001help.cc.html#L221'>put</a><span class="Delimiter">(</span>Memory<span class="Delimiter">,</span> curr<span class="Delimiter">,</span> resources_data_address<span class="Delimiter">);</span>
-<span id="L229" class="LineNr">229 </span>  <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">&quot;mem&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;storing resources data <a href='043space.cc.html#L82'>address</a> &quot;</span> &lt;&lt; resources_data_address &lt;&lt; <span class="Constant">&quot; in location &quot;</span> &lt;&lt; curr &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L229" class="LineNr">229 </span>  <a href='003trace.cc.html#L167'>trace</a><span class="Delimiter">(</span><span class="Constant">&quot;mem&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;storing resources data <a href='043space.cc.html#L82'>address</a> &quot;</span> &lt;&lt; resources_data_address &lt;&lt; <span class="Constant">&quot; in location &quot;</span> &lt;&lt; curr &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L230" class="LineNr">230 </span>  <a href='001help.cc.html#L221'>put</a><span class="Delimiter">(</span>Memory<span class="Delimiter">,</span> resources_address<span class="Delimiter">,</span> <span class="Constant">1</span><span class="Delimiter">);</span>  <span class="Comment">// initialize refcount</span>
-<span id="L231" class="LineNr">231 </span>  <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">&quot;mem&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;storing refcount 1 in location &quot;</span> &lt;&lt; resources_address &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L231" class="LineNr">231 </span>  <a href='003trace.cc.html#L167'>trace</a><span class="Delimiter">(</span><span class="Constant">&quot;mem&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;storing refcount 1 in location &quot;</span> &lt;&lt; resources_address &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L232" class="LineNr">232 </span>  <span class="Comment">// save in product</span>
 <span id="L233" class="LineNr">233 </span>  <a href='001help.cc.html#L221'>put</a><span class="Delimiter">(</span>Memory<span class="Delimiter">,</span> RESOURCES<span class="Delimiter">,</span> resources_address<span class="Delimiter">);</span>
-<span id="L234" class="LineNr">234 </span>  <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">&quot;mem&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;storing resources <a href='043space.cc.html#L82'>address</a> &quot;</span> &lt;&lt; resources_address &lt;&lt; <span class="Constant">&quot; in location &quot;</span> &lt;&lt; RESOURCES &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L234" class="LineNr">234 </span>  <a href='003trace.cc.html#L167'>trace</a><span class="Delimiter">(</span><span class="Constant">&quot;mem&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;storing resources <a href='043space.cc.html#L82'>address</a> &quot;</span> &lt;&lt; resources_address &lt;&lt; <span class="Constant">&quot; in location &quot;</span> &lt;&lt; RESOURCES &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L235" class="LineNr">235 </span><span class="Delimiter">}</span>
 <span id="L236" class="LineNr">236 </span>
 <span id="L237" class="LineNr">237 </span><span class="Normal">int</span> <a href='089scenario_filesystem.cc.html#L237'>size_of_resources</a><span class="Delimiter">()</span> <span class="Delimiter">{</span>
diff --git a/html/091socket.cc.html b/html/091socket.cc.html
index 23cb2069..9ab16aeb 100644
--- a/html/091socket.cc.html
+++ b/html/091socket.cc.html
@@ -79,23 +79,23 @@ if ('onhashchange' in window) {
 <span id="L17" class="LineNr"> 17 </span><span class="Delimiter">:(before &quot;End Primitive Recipe Checks&quot;)</span>
 <span id="L18" class="LineNr"> 18 </span><span class="Normal">case</span> _OPEN_CLIENT_SOCKET: <span class="Delimiter">{</span>
 <span id="L19" class="LineNr"> 19 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">)</span> != <span class="Constant">2</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L20" class="LineNr"> 20 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'$open-client-socket' requires exactly two ingredients, but got '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L20" class="LineNr"> 20 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'$open-client-socket' requires exactly two ingredients, but got '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L21" class="LineNr"> 21 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L22" class="LineNr"> 22 </span>  <span class="Delimiter">}</span>
 <span id="L23" class="LineNr"> 23 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!is_mu_text<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">)))</span> <span class="Delimiter">{</span>
-<span id="L24" class="LineNr"> 24 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;first ingredient of '$open-client-socket' should be text (the hostname), but got '&quot;</span> &lt;&lt; to_string<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">))</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L24" class="LineNr"> 24 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;first ingredient of '$open-client-socket' should be text (the hostname), but got '&quot;</span> &lt;&lt; to_string<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">))</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L25" class="LineNr"> 25 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L26" class="LineNr"> 26 </span>  <span class="Delimiter">}</span>
 <span id="L27" class="LineNr"> 27 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!is_mu_number<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">1</span><span class="Delimiter">)))</span> <span class="Delimiter">{</span>
-<span id="L28" class="LineNr"> 28 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;second ingredient of '$open-client-socket' should be a number (the port of the hostname to connect to), but got '&quot;</span> &lt;&lt; to_string<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">1</span><span class="Delimiter">))</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L28" class="LineNr"> 28 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;second ingredient of '$open-client-socket' should be a number (the port of the hostname to connect to), but got '&quot;</span> &lt;&lt; to_string<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">1</span><span class="Delimiter">))</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L29" class="LineNr"> 29 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L30" class="LineNr"> 30 </span>  <span class="Delimiter">}</span>
 <span id="L31" class="LineNr"> 31 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>products<span class="Delimiter">)</span> != <span class="Constant">1</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L32" class="LineNr"> 32 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'$open-client-socket' requires exactly one product, but got '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L32" class="LineNr"> 32 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'$open-client-socket' requires exactly one product, but got '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L33" class="LineNr"> 33 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L34" class="LineNr"> 34 </span>  <span class="Delimiter">}</span>
 <span id="L35" class="LineNr"> 35 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!is_mu_number<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">)))</span> <span class="Delimiter">{</span>
-<span id="L36" class="LineNr"> 36 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;first product of '$open-client-socket' should be a number (socket handle), but got '&quot;</span> &lt;&lt; to_string<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">))</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L36" class="LineNr"> 36 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;first product of '$open-client-socket' should be a number (socket handle), but got '&quot;</span> &lt;&lt; to_string<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">))</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L37" class="LineNr"> 37 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L38" class="LineNr"> 38 </span>  <span class="Delimiter">}</span>
 <span id="L39" class="LineNr"> 39 </span>  <span class="Identifier">break</span><span class="Delimiter">;</span>
@@ -120,7 +120,7 @@ if ('onhashchange' in window) {
 <span id="L58" class="LineNr"> 58 </span>  socket_t* result = <span class="Normal">new</span> socket_t<span class="Delimiter">;</span>
 <span id="L59" class="LineNr"> 59 </span>  result<span class="Delimiter">-&gt;</span>fd = socket<span class="Delimiter">(</span>AF_INET<span class="Delimiter">,</span> SOCK_STREAM<span class="Delimiter">,</span> <span class="Constant">0</span><span class="Delimiter">);</span>
 <span id="L60" class="LineNr"> 60 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>result<span class="Delimiter">-&gt;</span>fd &lt; <span class="Constant">0</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L61" class="LineNr"> 61 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <span class="Constant">&quot;Failed to create socket.</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L61" class="LineNr"> 61 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <span class="Constant">&quot;Failed to create socket.</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L62" class="LineNr"> 62 </span>  <span class="Conceal">¦</span> <span class="Identifier">return</span> result<span class="Delimiter">;</span>
 <span id="L63" class="LineNr"> 63 </span>  <span class="Delimiter">}</span>
 <span id="L64" class="LineNr"> 64 </span>  result<span class="Delimiter">-&gt;</span>addr<span class="Delimiter">.</span>sin_family = AF_INET<span class="Delimiter">;</span>
@@ -130,7 +130,7 @@ if ('onhashchange' in window) {
 <span id="L68" class="LineNr"> 68 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>connect<span class="Delimiter">(</span>result<span class="Delimiter">-&gt;</span>fd<span class="Delimiter">,</span> <span class="Normal">reinterpret_cast</span>&lt;sockaddr*&gt;<span class="Delimiter">(</span>&amp;result<span class="Delimiter">-&gt;</span>addr<span class="Delimiter">),</span> <span class="Normal">sizeof</span><span class="Delimiter">(</span>result<span class="Delimiter">-&gt;</span>addr<span class="Delimiter">))</span> &lt; <span class="Constant">0</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
 <span id="L69" class="LineNr"> 69 </span>  <span class="Conceal">¦</span> close<span class="Delimiter">(</span>result<span class="Delimiter">-&gt;</span>fd<span class="Delimiter">);</span>
 <span id="L70" class="LineNr"> 70 </span>  <span class="Conceal">¦</span> result<span class="Delimiter">-&gt;</span>fd = -<span class="Constant">1</span><span class="Delimiter">;</span>
-<span id="L71" class="LineNr"> 71 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <span class="Constant">&quot;Failed to connect to &quot;</span> &lt;&lt; host &lt;&lt; <span class="Constant">':'</span> &lt;&lt; port &lt;&lt; <span class="cSpecial">'\n'</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L71" class="LineNr"> 71 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <span class="Constant">&quot;Failed to connect to &quot;</span> &lt;&lt; host &lt;&lt; <span class="Constant">':'</span> &lt;&lt; port &lt;&lt; <span class="cSpecial">'\n'</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L72" class="LineNr"> 72 </span>  <span class="Delimiter">}</span>
 <span id="L73" class="LineNr"> 73 </span>  <span class="Identifier">return</span> result<span class="Delimiter">;</span>
 <span id="L74" class="LineNr"> 74 </span><span class="Delimiter">}</span>
@@ -142,19 +142,19 @@ if ('onhashchange' in window) {
 <span id="L80" class="LineNr"> 80 </span><span class="Delimiter">:(before &quot;End Primitive Recipe Checks&quot;)</span>
 <span id="L81" class="LineNr"> 81 </span><span class="Normal">case</span> _OPEN_SERVER_SOCKET: <span class="Delimiter">{</span>
 <span id="L82" class="LineNr"> 82 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">)</span> != <span class="Constant">1</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L83" class="LineNr"> 83 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'$open-server-socket' requires exactly one ingredient (the port to listen for requests on), but got '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L83" class="LineNr"> 83 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'$open-server-socket' requires exactly one ingredient (the port to listen for requests on), but got '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L84" class="LineNr"> 84 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L85" class="LineNr"> 85 </span>  <span class="Delimiter">}</span>
 <span id="L86" class="LineNr"> 86 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!is_mu_number<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">)))</span> <span class="Delimiter">{</span>
-<span id="L87" class="LineNr"> 87 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;first ingredient of '$open-server-socket' should be a number, but got '&quot;</span> &lt;&lt; to_string<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">))</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L87" class="LineNr"> 87 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;first ingredient of '$open-server-socket' should be a number, but got '&quot;</span> &lt;&lt; to_string<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">))</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L88" class="LineNr"> 88 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L89" class="LineNr"> 89 </span>  <span class="Delimiter">}</span>
 <span id="L90" class="LineNr"> 90 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>products<span class="Delimiter">)</span> != <span class="Constant">1</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L91" class="LineNr"> 91 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'$open-server-socket' requires exactly one product, but got '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L91" class="LineNr"> 91 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'$open-server-socket' requires exactly one product, but got '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L92" class="LineNr"> 92 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L93" class="LineNr"> 93 </span>  <span class="Delimiter">}</span>
 <span id="L94" class="LineNr"> 94 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!is_mu_number<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">)))</span> <span class="Delimiter">{</span>
-<span id="L95" class="LineNr"> 95 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;first product of '$open-server-socket' should be a number (file handle), but got '&quot;</span> &lt;&lt; to_string<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">))</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L95" class="LineNr"> 95 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;first product of '$open-server-socket' should be a number (file handle), but got '&quot;</span> &lt;&lt; to_string<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">))</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L96" class="LineNr"> 96 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L97" class="LineNr"> 97 </span>  <span class="Delimiter">}</span>
 <span id="L98" class="LineNr"> 98 </span>  <span class="Identifier">break</span><span class="Delimiter">;</span>
@@ -178,7 +178,7 @@ if ('onhashchange' in window) {
 <span id="L116" class="LineNr">116 </span>  socket_t* result = <span class="Normal">new</span> socket_t<span class="Delimiter">;</span>
 <span id="L117" class="LineNr">117 </span>  result<span class="Delimiter">-&gt;</span>fd = socket<span class="Delimiter">(</span>AF_INET<span class="Delimiter">,</span> SOCK_STREAM<span class="Delimiter">,</span> <span class="Constant">0</span><span class="Delimiter">);</span>
 <span id="L118" class="LineNr">118 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>result<span class="Delimiter">-&gt;</span>fd &lt; <span class="Constant">0</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L119" class="LineNr">119 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <span class="Constant">&quot;Failed to create server socket.</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L119" class="LineNr">119 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <span class="Constant">&quot;Failed to create server socket.</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L120" class="LineNr">120 </span>  <span class="Conceal">¦</span> <span class="Identifier">return</span> result<span class="Delimiter">;</span>
 <span id="L121" class="LineNr">121 </span>  <span class="Delimiter">}</span>
 <span id="L122" class="LineNr">122 </span>  <span class="Normal">int</span> dummy = <span class="Constant">0</span><span class="Delimiter">;</span>
@@ -192,7 +192,7 @@ if ('onhashchange' in window) {
 <span id="L130" class="LineNr">130 </span>  <span class="Normal">else</span> <span class="Delimiter">{</span>
 <span id="L131" class="LineNr">131 </span>  <span class="Conceal">¦</span> close<span class="Delimiter">(</span>result<span class="Delimiter">-&gt;</span>fd<span class="Delimiter">);</span>
 <span id="L132" class="LineNr">132 </span>  <span class="Conceal">¦</span> result<span class="Delimiter">-&gt;</span>fd = -<span class="Constant">1</span><span class="Delimiter">;</span>
-<span id="L133" class="LineNr">133 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <span class="Constant">&quot;Failed to bind result socket to port &quot;</span> &lt;&lt; port &lt;&lt; <span class="Constant">&quot;. Something's already using that port.</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; end<span class="Delimiter">();</span>
+<span id="L133" class="LineNr">133 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <span class="Constant">&quot;Failed to bind result socket to port &quot;</span> &lt;&lt; port &lt;&lt; <span class="Constant">&quot;. Something's already using that port.</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; end<span class="Delimiter">();</span>
 <span id="L134" class="LineNr">134 </span>  <span class="Delimiter">}</span>
 <span id="L135" class="LineNr">135 </span>  <span class="Identifier">return</span> result<span class="Delimiter">;</span>
 <span id="L136" class="LineNr">136 </span><span class="Delimiter">}</span>
@@ -204,19 +204,19 @@ if ('onhashchange' in window) {
 <span id="L142" class="LineNr">142 </span><span class="Delimiter">:(before &quot;End Primitive Recipe Checks&quot;)</span>
 <span id="L143" class="LineNr">143 </span><span class="Normal">case</span> _ACCEPT: <span class="Delimiter">{</span>
 <span id="L144" class="LineNr">144 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">)</span> != <span class="Constant">1</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L145" class="LineNr">145 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'$accept' requires exactly one ingredient, but got '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L145" class="LineNr">145 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'$accept' requires exactly one ingredient, but got '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L146" class="LineNr">146 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L147" class="LineNr">147 </span>  <span class="Delimiter">}</span>
 <span id="L148" class="LineNr">148 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!is_mu_number<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">)))</span> <span class="Delimiter">{</span>
-<span id="L149" class="LineNr">149 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;first ingredient of '$accept' should be a number, but got '&quot;</span> &lt;&lt; to_string<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">))</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L149" class="LineNr">149 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;first ingredient of '$accept' should be a number, but got '&quot;</span> &lt;&lt; to_string<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">))</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L150" class="LineNr">150 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L151" class="LineNr">151 </span>  <span class="Delimiter">}</span>
 <span id="L152" class="LineNr">152 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>products<span class="Delimiter">)</span> != <span class="Constant">1</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L153" class="LineNr">153 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'$accept' requires exactly one product, but got '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L153" class="LineNr">153 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'$accept' requires exactly one product, but got '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L154" class="LineNr">154 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L155" class="LineNr">155 </span>  <span class="Delimiter">}</span>
 <span id="L156" class="LineNr">156 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!is_mu_number<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">)))</span> <span class="Delimiter">{</span>
-<span id="L157" class="LineNr">157 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;first product of '$accept' should be a number (file handle), but got '&quot;</span> &lt;&lt; to_string<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">))</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L157" class="LineNr">157 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;first product of '$accept' should be a number (file handle), but got '&quot;</span> &lt;&lt; to_string<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">))</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L158" class="LineNr">158 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L159" class="LineNr">159 </span>  <span class="Delimiter">}</span>
 <span id="L160" class="LineNr">160 </span>  <span class="Identifier">break</span><span class="Delimiter">;</span>
@@ -253,32 +253,32 @@ if ('onhashchange' in window) {
 <span id="L191" class="LineNr">191 </span><span class="Delimiter">:(before &quot;End Primitive Recipe Checks&quot;)</span>
 <span id="L192" class="LineNr">192 </span><span class="Normal">case</span> _READ_FROM_SOCKET: <span class="Delimiter">{</span>
 <span id="L193" class="LineNr">193 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">)</span> != <span class="Constant">1</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L194" class="LineNr">194 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'$read-from-socket' requires exactly one ingredient, but got '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L194" class="LineNr">194 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'$read-from-socket' requires exactly one ingredient, but got '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L195" class="LineNr">195 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L196" class="LineNr">196 </span>  <span class="Delimiter">}</span>
 <span id="L197" class="LineNr">197 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!is_mu_number<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">)))</span> <span class="Delimiter">{</span>
-<span id="L198" class="LineNr">198 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;first ingredient of '$read-from-socket' should be a number (socket), but got '&quot;</span> &lt;&lt; to_string<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">))</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L198" class="LineNr">198 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;first ingredient of '$read-from-socket' should be a number (socket), but got '&quot;</span> &lt;&lt; to_string<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">))</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L199" class="LineNr">199 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L200" class="LineNr">200 </span>  <span class="Delimiter">}</span>
 <span id="L201" class="LineNr">201 </span>  <span class="Normal">int</span> nprod = <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>products<span class="Delimiter">);</span>
 <span id="L202" class="LineNr">202 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>nprod == <span class="Constant">0</span> || nprod &gt; <span class="Constant">4</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L203" class="LineNr">203 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'$read-from-socket' requires 1-4 products, but got '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L203" class="LineNr">203 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'$read-from-socket' requires 1-4 products, but got '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L204" class="LineNr">204 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L205" class="LineNr">205 </span>  <span class="Delimiter">}</span>
 <span id="L206" class="LineNr">206 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!is_mu_character<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">)))</span> <span class="Delimiter">{</span>
-<span id="L207" class="LineNr">207 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;first product of '$read-from-socket' should be a character, but got '&quot;</span> &lt;&lt; to_string<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">))</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L207" class="LineNr">207 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;first product of '$read-from-socket' should be a character, but got '&quot;</span> &lt;&lt; to_string<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">))</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L208" class="LineNr">208 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L209" class="LineNr">209 </span>  <span class="Delimiter">}</span>
 <span id="L210" class="LineNr">210 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>nprod &gt; <span class="Constant">1</span> &amp;&amp; !is_mu_boolean<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">1</span><span class="Delimiter">)))</span> <span class="Delimiter">{</span>
-<span id="L211" class="LineNr">211 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;second product of '$read-from-socket' should be a boolean (data received?), but got '&quot;</span> &lt;&lt; to_string<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">1</span><span class="Delimiter">))</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L211" class="LineNr">211 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;second product of '$read-from-socket' should be a boolean (data received?), but got '&quot;</span> &lt;&lt; to_string<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">1</span><span class="Delimiter">))</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L212" class="LineNr">212 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L213" class="LineNr">213 </span>  <span class="Delimiter">}</span>
 <span id="L214" class="LineNr">214 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>nprod &gt; <span class="Constant">2</span> &amp;&amp; !is_mu_boolean<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">2</span><span class="Delimiter">)))</span> <span class="Delimiter">{</span>
-<span id="L215" class="LineNr">215 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;third product of '$read-from-socket' should be a boolean (eof?), but got '&quot;</span> &lt;&lt; to_string<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">2</span><span class="Delimiter">))</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L215" class="LineNr">215 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;third product of '$read-from-socket' should be a boolean (eof?), but got '&quot;</span> &lt;&lt; to_string<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">2</span><span class="Delimiter">))</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L216" class="LineNr">216 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L217" class="LineNr">217 </span>  <span class="Delimiter">}</span>
 <span id="L218" class="LineNr">218 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>nprod &gt; <span class="Constant">3</span> &amp;&amp; !is_mu_number<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">3</span><span class="Delimiter">)))</span> <span class="Delimiter">{</span>
-<span id="L219" class="LineNr">219 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;fourth product of '$read-from-socket' should be a number (error code), but got '&quot;</span> &lt;&lt; to_string<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">3</span><span class="Delimiter">))</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L219" class="LineNr">219 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;fourth product of '$read-from-socket' should be a number (error code), but got '&quot;</span> &lt;&lt; to_string<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">3</span><span class="Delimiter">))</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L220" class="LineNr">220 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L221" class="LineNr">221 </span>  <span class="Delimiter">}</span>
 <span id="L222" class="LineNr">222 </span>  <span class="Identifier">break</span><span class="Delimiter">;</span>
@@ -314,7 +314,7 @@ if ('onhashchange' in window) {
 <span id="L252" class="LineNr">252 </span>  <span class="Conceal">¦</span> <span class="Delimiter">}</span>
 <span id="L253" class="LineNr">253 </span>  <span class="Conceal">¦</span> <span class="Normal">else</span> <span class="Normal">if</span> <span class="Delimiter">(</span>poll_result &lt; <span class="Constant">0</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
 <span id="L254" class="LineNr">254 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">int</span> error_code = errno<span class="Delimiter">;</span>
-<span id="L255" class="LineNr">255 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span><a href='026call.cc.html#L85'>current_recipe_name</a><span class="Delimiter">())</span> &lt;&lt; <span class="Constant">&quot;error in $read-from-socket</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L255" class="LineNr">255 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span><a href='026call.cc.html#L87'>current_recipe_name</a><span class="Delimiter">())</span> &lt;&lt; <span class="Constant">&quot;error in $read-from-socket</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L256" class="LineNr">256 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> products<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>push_back<span class="Delimiter">(</span><span class="Comment">/*</span><span class="Comment">no data</span><span class="Comment">*/</span><span class="Constant">0</span><span class="Delimiter">);</span>
 <span id="L257" class="LineNr">257 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> products<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">1</span><span class="Delimiter">).</span>push_back<span class="Delimiter">(</span><span class="Comment">/*</span><span class="Comment">found</span><span class="Comment">*/</span><span class="Constant">false</span><span class="Delimiter">);</span>
 <span id="L258" class="LineNr">258 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> products<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">2</span><span class="Delimiter">).</span>push_back<span class="Delimiter">(</span><span class="Comment">/*</span><span class="Comment">eof</span><span class="Comment">*/</span><span class="Constant">false</span><span class="Delimiter">);</span>
@@ -346,7 +346,7 @@ if ('onhashchange' in window) {
 <span id="L284" class="LineNr">284 </span><span class="Delimiter">:(before &quot;End Primitive Recipe Checks&quot;)</span>
 <span id="L285" class="LineNr">285 </span><span class="Normal">case</span> _WRITE_TO_SOCKET: <span class="Delimiter">{</span>
 <span id="L286" class="LineNr">286 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">)</span> != <span class="Constant">2</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L287" class="LineNr">287 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'$write-to-socket' requires exactly two ingredient, but got '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L287" class="LineNr">287 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'$write-to-socket' requires exactly two ingredient, but got '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L288" class="LineNr">288 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L289" class="LineNr">289 </span>  <span class="Delimiter">}</span>
 <span id="L290" class="LineNr">290 </span>  <span class="Identifier">break</span><span class="Delimiter">;</span>
@@ -359,7 +359,7 @@ if ('onhashchange' in window) {
 <span id="L297" class="LineNr">297 </span>  <span class="Normal">long</span> <span class="Normal">long</span> <span class="Normal">int</span> y = <span class="Normal">static_cast</span>&lt;<span class="Normal">long</span> <span class="Normal">long</span> <span class="Normal">int</span>&gt;<span class="Delimiter">(</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">1</span><span class="Delimiter">).</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">));</span>
 <span id="L298" class="LineNr">298 </span>  <span class="Normal">char</span> c = <span class="Normal">static_cast</span>&lt;<span class="Normal">char</span>&gt;<span class="Delimiter">(</span>y<span class="Delimiter">);</span>
 <span id="L299" class="LineNr">299 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>write<span class="Delimiter">(</span>socket<span class="Delimiter">-&gt;</span>fd<span class="Delimiter">,</span> &amp;c<span class="Delimiter">,</span> <span class="Constant">1</span><span class="Delimiter">)</span> != <span class="Constant">1</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L300" class="LineNr">300 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span><a href='026call.cc.html#L85'>current_recipe_name</a><span class="Delimiter">())</span> &lt;&lt; <span class="Constant">&quot;failed to write to socket</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L300" class="LineNr">300 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span><a href='026call.cc.html#L87'>current_recipe_name</a><span class="Delimiter">())</span> &lt;&lt; <span class="Constant">&quot;failed to write to socket</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L301" class="LineNr">301 </span>  <span class="Conceal">¦</span> exit<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">);</span>
 <span id="L302" class="LineNr">302 </span>  <span class="Delimiter">}</span>
 <span id="L303" class="LineNr">303 </span>  products<span class="Delimiter">.</span>resize<span class="Delimiter">(</span><span class="Constant">1</span><span class="Delimiter">);</span>
@@ -374,19 +374,19 @@ if ('onhashchange' in window) {
 <span id="L312" class="LineNr">312 </span><span class="Delimiter">:(before &quot;End Primitive Recipe Checks&quot;)</span>
 <span id="L313" class="LineNr">313 </span><span class="Normal">case</span> _CLOSE_SOCKET: <span class="Delimiter">{</span>
 <span id="L314" class="LineNr">314 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">)</span> != <span class="Constant">1</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L315" class="LineNr">315 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'$close-socket' requires exactly two ingredient, but got '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L315" class="LineNr">315 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'$close-socket' requires exactly two ingredient, but got '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L316" class="LineNr">316 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L317" class="LineNr">317 </span>  <span class="Delimiter">}</span>
 <span id="L318" class="LineNr">318 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!is_mu_number<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">)))</span> <span class="Delimiter">{</span>
-<span id="L319" class="LineNr">319 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;first ingredient of '$close-socket' should be a number, but got '&quot;</span> &lt;&lt; to_string<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">))</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L319" class="LineNr">319 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;first ingredient of '$close-socket' should be a number, but got '&quot;</span> &lt;&lt; to_string<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">))</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L320" class="LineNr">320 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L321" class="LineNr">321 </span>  <span class="Delimiter">}</span>
 <span id="L322" class="LineNr">322 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>products<span class="Delimiter">)</span> != <span class="Constant">1</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L323" class="LineNr">323 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'$close-socket' requires exactly one product, but got '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L323" class="LineNr">323 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'$close-socket' requires exactly one product, but got '&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L324" class="LineNr">324 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L325" class="LineNr">325 </span>  <span class="Delimiter">}</span>
 <span id="L326" class="LineNr">326 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>name != inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>name<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L327" class="LineNr">327 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;product of '$close-socket' must be first ingredient '&quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>original_string &lt;&lt; <span class="Constant">&quot;', but got '&quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>original_string &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L327" class="LineNr">327 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;product of '$close-socket' must be first ingredient '&quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>original_string &lt;&lt; <span class="Constant">&quot;', but got '&quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>original_string &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L328" class="LineNr">328 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L329" class="LineNr">329 </span>  <span class="Delimiter">}</span>
 <span id="L330" class="LineNr">330 </span>  <span class="Identifier">break</span><span class="Delimiter">;</span>
diff --git a/html/099hardware_checks.cc.html b/html/099hardware_checks.cc.html
index d844615a..2b9c9a61 100644
--- a/html/099hardware_checks.cc.html
+++ b/html/099hardware_checks.cc.html
@@ -98,7 +98,7 @@ if ('onhashchange' in window) {
 <span id="L35" class="LineNr">35 </span>  <span class="Normal">const</span> recipe&amp; caller = get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">);</span>
 <span id="L36" class="LineNr">36 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>caller<span class="Delimiter">.</span>name == <span class="Constant">&quot;main&quot;</span><span class="Delimiter">)</span> <span class="Identifier">return</span><span class="Delimiter">;</span>
 <span id="L37" class="LineNr">37 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span><a href='001help.cc.html#L77'>starts_with</a><span class="Delimiter">(</span>caller<span class="Delimiter">.</span>name<span class="Delimiter">,</span> <span class="Constant">&quot;scenario_&quot;</span><span class="Delimiter">))</span> <span class="Identifier">return</span><span class="Delimiter">;</span>
-<span id="L38" class="LineNr">38 </span>  <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">9991</span><span class="Delimiter">,</span> <span class="Constant">&quot;transform&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;--- check if <a href='010vm.cc.html#L19'>recipe</a> &quot;</span> &lt;&lt; caller<span class="Delimiter">.</span>name &lt;&lt; <span class="Constant">&quot; has any dependency-injection mistakes&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L38" class="LineNr">38 </span>  <a href='003trace.cc.html#L167'>trace</a><span class="Delimiter">(</span><span class="Constant">9991</span><span class="Delimiter">,</span> <span class="Constant">&quot;transform&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;--- check if <a href='010vm.cc.html#L19'>recipe</a> &quot;</span> &lt;&lt; caller<span class="Delimiter">.</span>name &lt;&lt; <span class="Constant">&quot; has any dependency-injection mistakes&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L39" class="LineNr">39 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> index = <span class="Constant">0</span><span class="Delimiter">;</span>  index &lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>caller<span class="Delimiter">.</span>steps<span class="Delimiter">);</span>  ++index<span class="Delimiter">)</span> <span class="Delimiter">{</span>
 <span id="L40" class="LineNr">40 </span>  <span class="Conceal">¦</span> <span class="Normal">const</span> instruction&amp; inst = caller<span class="Delimiter">.</span>steps<span class="Delimiter">.</span>at<span class="Delimiter">(</span>index<span class="Delimiter">);</span>
 <span id="L41" class="LineNr">41 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span><a href='028call_return.cc.html#L115'>is_primitive</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>operation<span class="Delimiter">))</span> <span class="Identifier">continue</span><span class="Delimiter">;</span>
@@ -111,7 +111,7 @@ if ('onhashchange' in window) {
 <span id="L48" class="LineNr">48 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">const</span> reagent&amp; expected_ing = callee<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">);</span>
 <span id="L49" class="LineNr">49 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> j = <span class="Constant">0</span><span class="Delimiter">;</span>  j &lt; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>Real_hardware_types<span class="Delimiter">);</span>  ++j<span class="Delimiter">)</span> <span class="Delimiter">{</span>
 <span id="L50" class="LineNr">50 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>*Real_hardware_types<span class="Delimiter">.</span>at<span class="Delimiter">(</span>j<span class="Delimiter">)</span> == *expected_ing<span class="Delimiter">.</span>type<span class="Delimiter">)</span>
-<span id="L51" class="LineNr">51 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>caller<span class="Delimiter">.</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;': only 'main' can pass 0 into a &quot;</span> &lt;&lt; <a href='028call_return.cc.html#L163'>to_string</a><span class="Delimiter">(</span>expected_ing<span class="Delimiter">.</span>type<span class="Delimiter">)</span> &lt;&lt; <span class="cSpecial">'\n'</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L51" class="LineNr">51 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>caller<span class="Delimiter">.</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'&quot;</span> &lt;&lt; to_original_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;': only 'main' can pass 0 into a &quot;</span> &lt;&lt; <a href='028call_return.cc.html#L163'>to_string</a><span class="Delimiter">(</span>expected_ing<span class="Delimiter">.</span>type<span class="Delimiter">)</span> &lt;&lt; <span class="cSpecial">'\n'</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L52" class="LineNr">52 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Delimiter">}</span>
 <span id="L53" class="LineNr">53 </span>  <span class="Conceal">¦</span> <span class="Delimiter">}</span>
 <span id="L54" class="LineNr">54 </span>  <span class="Delimiter">}</span>
diff --git a/html/100trace_browser.cc.html b/html/100trace_browser.cc.html
index 20d31092..0904f4b0 100644
--- a/html/100trace_browser.cc.html
+++ b/html/100trace_browser.cc.html
@@ -230,7 +230,7 @@ if ('onhashchange' in window) {
 <span id="L170" class="LineNr">170 </span>  <span class="Conceal">¦</span> <span class="Delimiter">}</span>
 <span id="L171" class="LineNr">171 </span>  <span class="Conceal">¦</span> <span class="Normal">else</span> <span class="Normal">if</span> <span class="Delimiter">(</span>key == <span class="Constant">'J'</span> || key == TB_KEY_PGDN || key == TB_KEY_CTRL_F<span class="Delimiter">)</span> <span class="Delimiter">{</span>
 <span id="L172" class="LineNr">172 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Comment">// page-down</span>
-<span id="L173" class="LineNr">173 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>Trace_index<span class="Delimiter">.</span>find<span class="Delimiter">(</span>tb_height<span class="Delimiter">()</span>-<span class="Constant">1</span><span class="Delimiter">)</span> != Trace_index<span class="Delimiter">.</span><a href='003trace.cc.html#L197'>end</a><span class="Delimiter">())</span> <span class="Delimiter">{</span>
+<span id="L173" class="LineNr">173 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>Trace_index<span class="Delimiter">.</span>find<span class="Delimiter">(</span>tb_height<span class="Delimiter">()</span>-<span class="Constant">1</span><span class="Delimiter">)</span> != Trace_index<span class="Delimiter">.</span><a href='003trace.cc.html#L203'>end</a><span class="Delimiter">())</span> <span class="Delimiter">{</span>
 <span id="L174" class="LineNr">174 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> Top_of_screen = get<span class="Delimiter">(</span>Trace_index<span class="Delimiter">,</span> tb_height<span class="Delimiter">()</span>-<span class="Constant">1</span><span class="Delimiter">)</span> + <span class="Constant">1</span><span class="Delimiter">;</span>
 <span id="L175" class="LineNr">175 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='100trace_browser.cc.html#L402'>refresh_screen_rows</a><span class="Delimiter">();</span>
 <span id="L176" class="LineNr">176 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Delimiter">}</span>
@@ -571,7 +571,7 @@ if ('onhashchange' in window) {
 <span id="L511" class="LineNr">511 </span>  <span class="Conceal">¦</span> tin &gt;&gt; depth<span class="Delimiter">;</span>
 <span id="L512" class="LineNr">512 </span>  <span class="Conceal">¦</span> string label<span class="Delimiter">;</span>
 <span id="L513" class="LineNr">513 </span>  <span class="Conceal">¦</span> tin &gt;&gt; label<span class="Delimiter">;</span>
-<span id="L514" class="LineNr">514 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>*--label<span class="Delimiter">.</span><a href='003trace.cc.html#L197'>end</a><span class="Delimiter">()</span> == <span class="Constant">':'</span><span class="Delimiter">)</span> label<span class="Delimiter">.</span>erase<span class="Delimiter">(</span>--label<span class="Delimiter">.</span><a href='003trace.cc.html#L197'>end</a><span class="Delimiter">());</span>
+<span id="L514" class="LineNr">514 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>*--label<span class="Delimiter">.</span><a href='003trace.cc.html#L203'>end</a><span class="Delimiter">()</span> == <span class="Constant">':'</span><span class="Delimiter">)</span> label<span class="Delimiter">.</span>erase<span class="Delimiter">(</span>--label<span class="Delimiter">.</span><a href='003trace.cc.html#L203'>end</a><span class="Delimiter">());</span>
 <span id="L515" class="LineNr">515 </span>  <span class="Conceal">¦</span> string line<span class="Delimiter">;</span>
 <span id="L516" class="LineNr">516 </span>  <span class="Conceal">¦</span> getline<span class="Delimiter">(</span>tin<span class="Delimiter">,</span> line<span class="Delimiter">);</span>
 <span id="L517" class="LineNr">517 </span>  <span class="Conceal">¦</span> Trace_stream<span class="Delimiter">-&gt;</span>past_lines<span class="Delimiter">.</span>push_back<span class="Delimiter">(</span>trace_line<span class="Delimiter">(</span>depth<span class="Delimiter">,</span> label<span class="Delimiter">,</span> line<span class="Delimiter">));</span>
diff --git a/html/101run_sandboxed.cc.html b/html/101run_sandboxed.cc.html
index 2a5da79f..f18b38c7 100644
--- a/html/101run_sandboxed.cc.html
+++ b/html/101run_sandboxed.cc.html
@@ -105,11 +105,11 @@ if ('onhashchange' in window) {
 <span id="L41" class="LineNr"> 41 </span><span class="Delimiter">:(before &quot;End Primitive Recipe Checks&quot;)</span>
 <span id="L42" class="LineNr"> 42 </span><span class="Normal">case</span> RUN_SANDBOXED: <span class="Delimiter">{</span>
 <span id="L43" class="LineNr"> 43 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">)</span> != <span class="Constant">1</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L44" class="LineNr"> 44 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'run-sandboxed' requires exactly one ingredient, but got '&quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>original_string &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L44" class="LineNr"> 44 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'run-sandboxed' requires exactly one ingredient, but got '&quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>original_string &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L45" class="LineNr"> 45 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L46" class="LineNr"> 46 </span>  <span class="Delimiter">}</span>
 <span id="L47" class="LineNr"> 47 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!is_mu_text<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">)))</span> <span class="Delimiter">{</span>
-<span id="L48" class="LineNr"> 48 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;first ingredient of 'run-sandboxed' should be a string, but got '&quot;</span> &lt;&lt; to_string<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">))</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L48" class="LineNr"> 48 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;first ingredient of 'run-sandboxed' should be a string, but got '&quot;</span> &lt;&lt; to_string<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">))</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L49" class="LineNr"> 49 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L50" class="LineNr"> 50 </span>  <span class="Delimiter">}</span>
 <span id="L51" class="LineNr"> 51 </span>  <span class="Identifier">break</span><span class="Delimiter">;</span>
@@ -161,7 +161,7 @@ if ('onhashchange' in window) {
 <span id="L97" class="LineNr"> 97 </span>  <span class="Conceal">¦</span> <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> i = <span class="Constant">1</span><span class="Delimiter">;</span> i &lt; Reserved_for_tests<span class="Delimiter">;</span> ++i<span class="Delimiter">)</span>
 <span id="L98" class="LineNr"> 98 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> Memory<span class="Delimiter">.</span>erase<span class="Delimiter">(</span>i<span class="Delimiter">);</span>
 <span id="L99" class="LineNr"> 99 </span>  <span class="Delimiter">}</span>
-<span id="L100" class="LineNr">100 </span>  string command = <a href='003trace.cc.html#L367'>trim</a><span class="Delimiter">(</span><a href='101run_sandboxed.cc.html#L474'>strip_comments</a><span class="Delimiter">(</span><a href='038new_text.cc.html#L143'>read_mu_text</a><span class="Delimiter">(</span><a href='043space.cc.html#L82'>address</a><span class="Delimiter">)));</span>
+<span id="L100" class="LineNr">100 </span>  string command = <a href='003trace.cc.html#L369'>trim</a><span class="Delimiter">(</span><a href='101run_sandboxed.cc.html#L474'>strip_comments</a><span class="Delimiter">(</span><a href='038new_text.cc.html#L143'>read_mu_text</a><span class="Delimiter">(</span><a href='043space.cc.html#L82'>address</a><span class="Delimiter">)));</span>
 <span id="L101" class="LineNr">101 </span>  Name[get<span class="Delimiter">(</span>Recipe_ordinal<span class="Delimiter">,</span> <span class="Constant">&quot;interactive&quot;</span><span class="Delimiter">)</span>]<span class="Delimiter">.</span><a href='050scenario.cc.html#L60'>clear</a><span class="Delimiter">();</span>
 <span id="L102" class="LineNr">102 </span>  <a href='101run_sandboxed.cc.html#L145'>run_code_begin</a><span class="Delimiter">(</span><span class="Comment">/*</span><span class="Comment">should_stash_snapshots</span><span class="Comment">*/</span><span class="Constant">true</span><span class="Delimiter">);</span>
 <span id="L103" class="LineNr">103 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>command<span class="Delimiter">.</span>empty<span class="Delimiter">())</span> <span class="Identifier">return</span> <span class="Constant">false</span><span class="Delimiter">;</span>
@@ -184,7 +184,7 @@ if ('onhashchange' in window) {
 <span id="L120" class="LineNr">120 </span>  <span class="Comment">// and wait for it</span>
 <span id="L121" class="LineNr">121 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>Save_trace_stream<span class="Delimiter">)</span> <span class="Delimiter">{</span>
 <span id="L122" class="LineNr">122 </span>  <span class="Conceal">¦</span> ++Save_trace_stream<span class="Delimiter">-&gt;</span>callstack_depth<span class="Delimiter">;</span>
-<span id="L123" class="LineNr">123 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">9999</span><span class="Delimiter">,</span> <span class="Constant">&quot;trace&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;run-sandboxed: incrementing callstack depth to &quot;</span> &lt;&lt; Save_trace_stream<span class="Delimiter">-&gt;</span>callstack_depth &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L123" class="LineNr">123 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L167'>trace</a><span class="Delimiter">(</span><span class="Constant">9999</span><span class="Delimiter">,</span> <span class="Constant">&quot;trace&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;run-sandboxed: incrementing callstack depth to &quot;</span> &lt;&lt; Save_trace_stream<span class="Delimiter">-&gt;</span>callstack_depth &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L124" class="LineNr">124 </span>  <span class="Conceal">¦</span> assert<span class="Delimiter">(</span>Save_trace_stream<span class="Delimiter">-&gt;</span>callstack_depth &lt; <span class="Constant">9000</span><span class="Delimiter">);</span>  <span class="Comment">// 9998-101 plus cushion</span>
 <span id="L125" class="LineNr">125 </span>  <span class="Delimiter">}</span>
 <span id="L126" class="LineNr">126 </span>  Current_routine<span class="Delimiter">-&gt;</span>calls<span class="Delimiter">.</span>push_front<span class="Delimiter">(</span>call<span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe_ordinal<span class="Delimiter">,</span> <span class="Constant">&quot;sandbox&quot;</span><span class="Delimiter">)));</span>
@@ -499,12 +499,12 @@ if ('onhashchange' in window) {
 <span id="L435" class="LineNr">435 </span><span class="Delimiter">:(after &quot;Running One Instruction&quot;)</span>
 <span id="L436" class="LineNr">436 </span><span class="Normal">if</span> <span class="Delimiter">(</span>Track_most_recent_products &amp;&amp; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>Current_routine<span class="Delimiter">-&gt;</span>calls<span class="Delimiter">)</span> == Call_depth_to_track_most_recent_products_at
 <span id="L437" class="LineNr">437 </span>  <span class="Conceal">¦</span> &amp;&amp; !current_instruction<span class="Delimiter">().</span>is_label
-<span id="L438" class="LineNr">438 </span>  <span class="Conceal">¦</span> &amp;&amp; <a href='026call.cc.html#L87'>current_instruction</a><span class="Delimiter">().</span>name != <span class="Constant">&quot;$stop-tracking-products&quot;</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L438" class="LineNr">438 </span>  <span class="Conceal">¦</span> &amp;&amp; <a href='026call.cc.html#L89'>current_instruction</a><span class="Delimiter">().</span>name != <span class="Constant">&quot;$stop-tracking-products&quot;</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
 <span id="L439" class="LineNr">439 </span>  Most_recent_products = <span class="Constant">&quot;&quot;</span><span class="Delimiter">;</span>
 <span id="L440" class="LineNr">440 </span><span class="Delimiter">}</span>
 <span id="L441" class="LineNr">441 </span><span class="Delimiter">:(before &quot;End Running One Instruction&quot;)</span>
 <span id="L442" class="LineNr">442 </span><span class="Normal">if</span> <span class="Delimiter">(</span>Track_most_recent_products &amp;&amp; <a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>Current_routine<span class="Delimiter">-&gt;</span>calls<span class="Delimiter">)</span> == Call_depth_to_track_most_recent_products_at<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L443" class="LineNr">443 </span>  Most_recent_products = <a href='101run_sandboxed.cc.html#L446'>track_most_recent_products</a><span class="Delimiter">(</span><a href='026call.cc.html#L87'>current_instruction</a><span class="Delimiter">(),</span> products<span class="Delimiter">);</span>
+<span id="L443" class="LineNr">443 </span>  Most_recent_products = <a href='101run_sandboxed.cc.html#L446'>track_most_recent_products</a><span class="Delimiter">(</span><a href='026call.cc.html#L89'>current_instruction</a><span class="Delimiter">(),</span> products<span class="Delimiter">);</span>
 <span id="L444" class="LineNr">444 </span><span class="Delimiter">}</span>
 <span id="L445" class="LineNr">445 </span><span class="Delimiter">:(code)</span>
 <span id="L446" class="LineNr">446 </span>string <a href='101run_sandboxed.cc.html#L446'>track_most_recent_products</a><span class="Delimiter">(</span><span class="Normal">const</span> instruction&amp; <a href='010vm.cc.html#L32'>instruction</a><span class="Delimiter">,</span> <span class="Normal">const</span> vector&lt;vector&lt;<span class="Normal">double</span>&gt; &gt;&amp; products<span class="Delimiter">)</span> <span class="Delimiter">{</span>
@@ -559,10 +559,10 @@ if ('onhashchange' in window) {
 <span id="L495" class="LineNr">495 </span><span class="Normal">int</span> <a href='101run_sandboxed.cc.html#L495'>trace_error_contents</a><span class="Delimiter">()</span> <span class="Delimiter">{</span>
 <span id="L496" class="LineNr">496 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!Trace_stream<span class="Delimiter">)</span> <span class="Identifier">return</span> <span class="Constant">0</span><span class="Delimiter">;</span>
 <span id="L497" class="LineNr">497 </span>  ostringstream out<span class="Delimiter">;</span>
-<span id="L498" class="LineNr">498 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span>vector&lt;trace_line&gt;::iterator p = Trace_stream<span class="Delimiter">-&gt;</span>past_lines<span class="Delimiter">.</span>begin<span class="Delimiter">();</span> p != Trace_stream<span class="Delimiter">-&gt;</span>past_lines<span class="Delimiter">.</span><a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span> ++p<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L498" class="LineNr">498 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span>vector&lt;trace_line&gt;::iterator p = Trace_stream<span class="Delimiter">-&gt;</span>past_lines<span class="Delimiter">.</span>begin<span class="Delimiter">();</span> p != Trace_stream<span class="Delimiter">-&gt;</span>past_lines<span class="Delimiter">.</span><a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span> ++p<span class="Delimiter">)</span> <span class="Delimiter">{</span>
 <span id="L499" class="LineNr">499 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>p<span class="Delimiter">-&gt;</span>label != <span class="Constant">&quot;error&quot;</span><span class="Delimiter">)</span> <span class="Identifier">continue</span><span class="Delimiter">;</span>
 <span id="L500" class="LineNr">500 </span>  <span class="Conceal">¦</span> out &lt;&lt; p<span class="Delimiter">-&gt;</span>contents<span class="Delimiter">;</span>
-<span id="L501" class="LineNr">501 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>*--p<span class="Delimiter">-&gt;</span>contents<span class="Delimiter">.</span><a href='003trace.cc.html#L197'>end</a><span class="Delimiter">()</span> != <span class="cSpecial">'\n'</span><span class="Delimiter">)</span> out &lt;&lt; <span class="cSpecial">'\n'</span><span class="Delimiter">;</span>
+<span id="L501" class="LineNr">501 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>*--p<span class="Delimiter">-&gt;</span>contents<span class="Delimiter">.</span><a href='003trace.cc.html#L203'>end</a><span class="Delimiter">()</span> != <span class="cSpecial">'\n'</span><span class="Delimiter">)</span> out &lt;&lt; <span class="cSpecial">'\n'</span><span class="Delimiter">;</span>
 <span id="L502" class="LineNr">502 </span>  <span class="Delimiter">}</span>
 <span id="L503" class="LineNr">503 </span>  string result = out<span class="Delimiter">.</span>str<span class="Delimiter">();</span>
 <span id="L504" class="LineNr">504 </span>  <a href='101run_sandboxed.cc.html#L523'>truncate</a><span class="Delimiter">(</span>result<span class="Delimiter">);</span>
@@ -573,10 +573,10 @@ if ('onhashchange' in window) {
 <span id="L509" class="LineNr">509 </span><span class="Normal">int</span> <a href='101run_sandboxed.cc.html#L509'>trace_app_contents</a><span class="Delimiter">()</span> <span class="Delimiter">{</span>
 <span id="L510" class="LineNr">510 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!Trace_stream<span class="Delimiter">)</span> <span class="Identifier">return</span> <span class="Constant">0</span><span class="Delimiter">;</span>
 <span id="L511" class="LineNr">511 </span>  ostringstream out<span class="Delimiter">;</span>
-<span id="L512" class="LineNr">512 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span>vector&lt;trace_line&gt;::iterator p = Trace_stream<span class="Delimiter">-&gt;</span>past_lines<span class="Delimiter">.</span>begin<span class="Delimiter">();</span> p != Trace_stream<span class="Delimiter">-&gt;</span>past_lines<span class="Delimiter">.</span><a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span> ++p<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L512" class="LineNr">512 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span>vector&lt;trace_line&gt;::iterator p = Trace_stream<span class="Delimiter">-&gt;</span>past_lines<span class="Delimiter">.</span>begin<span class="Delimiter">();</span> p != Trace_stream<span class="Delimiter">-&gt;</span>past_lines<span class="Delimiter">.</span><a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span> ++p<span class="Delimiter">)</span> <span class="Delimiter">{</span>
 <span id="L513" class="LineNr">513 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>p<span class="Delimiter">-&gt;</span>depth != App_depth<span class="Delimiter">)</span> <span class="Identifier">continue</span><span class="Delimiter">;</span>
 <span id="L514" class="LineNr">514 </span>  <span class="Conceal">¦</span> out &lt;&lt; p<span class="Delimiter">-&gt;</span>contents<span class="Delimiter">;</span>
-<span id="L515" class="LineNr">515 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>*--p<span class="Delimiter">-&gt;</span>contents<span class="Delimiter">.</span><a href='003trace.cc.html#L197'>end</a><span class="Delimiter">()</span> != <span class="cSpecial">'\n'</span><span class="Delimiter">)</span> out &lt;&lt; <span class="cSpecial">'\n'</span><span class="Delimiter">;</span>
+<span id="L515" class="LineNr">515 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>*--p<span class="Delimiter">-&gt;</span>contents<span class="Delimiter">.</span><a href='003trace.cc.html#L203'>end</a><span class="Delimiter">()</span> != <span class="cSpecial">'\n'</span><span class="Delimiter">)</span> out &lt;&lt; <span class="cSpecial">'\n'</span><span class="Delimiter">;</span>
 <span id="L516" class="LineNr">516 </span>  <span class="Delimiter">}</span>
 <span id="L517" class="LineNr">517 </span>  string result = out<span class="Delimiter">.</span>str<span class="Delimiter">();</span>
 <span id="L518" class="LineNr">518 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>result<span class="Delimiter">.</span>empty<span class="Delimiter">())</span> <span class="Identifier">return</span> <span class="Constant">0</span><span class="Delimiter">;</span>
@@ -603,11 +603,11 @@ if ('onhashchange' in window) {
 <span id="L539" class="LineNr">539 </span><span class="Delimiter">:(before &quot;End Primitive Recipe Checks&quot;)</span>
 <span id="L540" class="LineNr">540 </span><span class="Normal">case</span> RELOAD: <span class="Delimiter">{</span>
 <span id="L541" class="LineNr">541 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">)</span> != <span class="Constant">1</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L542" class="LineNr">542 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'reload' requires exactly one ingredient, but got '&quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>original_string &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L542" class="LineNr">542 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'reload' requires exactly one ingredient, but got '&quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>original_string &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L543" class="LineNr">543 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L544" class="LineNr">544 </span>  <span class="Delimiter">}</span>
 <span id="L545" class="LineNr">545 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!is_mu_text<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">)))</span> <span class="Delimiter">{</span>
-<span id="L546" class="LineNr">546 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;first ingredient of 'reload' should be a string, but got '&quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>original_string &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L197'>end</a><span class="Delimiter">();</span>
+<span id="L546" class="LineNr">546 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L174'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;first ingredient of 'reload' should be a string, but got '&quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>original_string &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L203'>end</a><span class="Delimiter">();</span>
 <span id="L547" class="LineNr">547 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L548" class="LineNr">548 </span>  <span class="Delimiter">}</span>
 <span id="L549" class="LineNr">549 </span>  <span class="Identifier">break</span><span class="Delimiter">;</span>
@@ -622,7 +622,7 @@ if ('onhashchange' in window) {
 <span id="L558" class="LineNr">558 </span>  Sandbox_mode = <span class="Constant">true</span><span class="Delimiter">;</span>
 <span id="L559" class="LineNr">559 </span>  vector&lt;recipe_ordinal&gt; recipes_reloaded = load<span class="Delimiter">(</span>code<span class="Delimiter">);</span>
 <span id="L560" class="LineNr">560 </span>  <a href='012transform.cc.html#L46'>transform_all</a><span class="Delimiter">();</span>
-<span id="L561" class="LineNr">561 </span>  Trace_stream<span class="Delimiter">-&gt;</span><a href='003trace.cc.html#L127'>newline</a><span class="Delimiter">();</span>  <span class="Comment">// flush trace</span>
+<span id="L561" class="LineNr">561 </span>  Trace_stream<span class="Delimiter">-&gt;</span><a href='003trace.cc.html#L133'>newline</a><span class="Delimiter">();</span>  <span class="Comment">// flush trace</span>
 <span id="L562" class="LineNr">562 </span>  Sandbox_mode = <span class="Constant">false</span><span class="Delimiter">;</span>
 <span id="L563" class="LineNr">563 </span>  Current_routine = save_current_routine<span class="Delimiter">;</span>
 <span id="L564" class="LineNr">564 </span>  products<span class="Delimiter">.</span>resize<span class="Delimiter">(</span><span class="Constant">1</span><span class="Delimiter">);</span>
diff --git a/html/same-fringe.mu.html b/html/same-fringe.mu.html
new file mode 100644
index 00000000..94ebf67a
--- /dev/null
+++ b/html/same-fringe.mu.html
@@ -0,0 +1,154 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=UTF-8">
+<title>Mu - same-fringe.mu</title>
+<meta name="Generator" content="Vim/7.4">
+<meta name="plugin-version" content="vim7.4_v2">
+<meta name="syntax" content="none">
+<meta name="settings" content="number_lines,use_css,pre_wrap,no_foldcolumn,expand_tabs,line_ids,prevent_copy=">
+<meta name="colorscheme" content="minimal">
+<style type="text/css">
+<!--
+pre { white-space: pre-wrap; font-family: monospace; color: #aaaaaa; background-color: #080808; }
+body { font-size: 12pt; font-family: monospace; color: #aaaaaa; background-color: #080808; }
+a { color:#eeeeee; text-decoration: none; }
+a:hover { text-decoration: underline; }
+* { font-size: 12pt; font-size: 1em; }
+.muRecipe { color: #ff8700; }
+.Special { color: #c00000; }
+.Conceal { color: #4e4e4e; }
+.Delimiter { color: #800080; }
+.Comment { color: #9090ff; }
+.Comment a { color:#0000ee; text-decoration:underline; }
+.Constant { color: #00a0a0; }
+.LineNr { color: #444444; }
+.muControl { color: #c0a020; }
+.muData { color: #ffff00; }
+-->
+</style>
+
+<script type='text/javascript'>
+<!--
+
+/* function to open any folds containing a jumped-to line before jumping to it */
+function JumpToLine()
+{
+  var lineNum;
+  lineNum = window.location.hash;
+  lineNum = lineNum.substr(1); /* strip off '#' */
+
+  if (lineNum.indexOf('L') == -1) {
+    lineNum = 'L'+lineNum;
+  }
+  lineElem = document.getElementById(lineNum);
+  /* Always jump to new location even if the line was hidden inside a fold, or
+   * we corrected the raw number to a line ID.
+   */
+  if (lineElem) {
+    lineElem.scrollIntoView(true);
+  }
+  return true;
+}
+if ('onhashchange' in window) {
+  window.onhashchange = JumpToLine;
+}
+
+-->
+</script>
+</head>
+<body onload='JumpToLine();'>
+<pre id='vimCodeElement'>
+<span id="L1" class="LineNr"> 1 </span><span class="Comment"># Another example of continuations: the 'same fringe' problem:</span>
+<span id="L2" class="LineNr"> 2 </span><span class="Comment">#   <a href="http://wiki.c2.com/?SameFringeProblem">http://wiki.c2.com/?SameFringeProblem</a></span>
+<span id="L3" class="LineNr"> 3 </span><span class="Comment">#</span>
+<span id="L4" class="LineNr"> 4 </span><span class="Comment"># Expected output:</span>
+<span id="L5" class="LineNr"> 5 </span><span class="Comment">#   1</span>
+<span id="L6" class="LineNr"> 6 </span><span class="Comment"># (i.e. that the two given trees x and y have the same leaves, in the same</span>
+<span id="L7" class="LineNr"> 7 </span><span class="Comment"># order from left to right)</span>
+<span id="L8" class="LineNr"> 8 </span>
+<span id="L9" class="LineNr"> 9 </span><span class="muData">container</span> <a href='same-fringe.mu.html#L9'>tree</a>:_elem [
+<span id="L10" class="LineNr">10 </span>  val:_elem
+<span id="L11" class="LineNr">11 </span>  left:&amp;:<a href='same-fringe.mu.html#L9'>tree</a>:_elem
+<span id="L12" class="LineNr">12 </span>  right:&amp;:<a href='same-fringe.mu.html#L9'>tree</a>:_elem
+<span id="L13" class="LineNr">13 </span>]
+<span id="L14" class="LineNr">14 </span>
+<span id="L15" class="LineNr">15 </span><span class="muRecipe">def</span> <a href='same-fringe.mu.html#L15'>main</a> [
+<span id="L16" class="LineNr">16 </span>  <span class="Constant">local-scope</span>
+<span id="L17" class="LineNr">17 </span>  <span class="Comment"># x: ((a b) c)</span>
+<span id="L18" class="LineNr">18 </span>  <span class="Comment"># y: (a (b c))</span>
+<span id="L19" class="LineNr">19 </span>  a:&amp;:<a href='same-fringe.mu.html#L9'>tree</a>:num <span class="Special">&lt;-</span> new-tree<span class="Constant"> 3</span>
+<span id="L20" class="LineNr">20 </span>  b:&amp;:<a href='same-fringe.mu.html#L9'>tree</a>:num <span class="Special">&lt;-</span> new-tree<span class="Constant"> 4</span>
+<span id="L21" class="LineNr">21 </span>  c:&amp;:<a href='same-fringe.mu.html#L9'>tree</a>:num <span class="Special">&lt;-</span> new-tree<span class="Constant"> 5</span>
+<span id="L22" class="LineNr">22 </span>  x1:&amp;:<a href='same-fringe.mu.html#L9'>tree</a>:num <span class="Special">&lt;-</span> new-tree a, b
+<span id="L23" class="LineNr">23 </span>  x:&amp;:<a href='same-fringe.mu.html#L9'>tree</a>:num <span class="Special">&lt;-</span> new-tree x1, c
+<span id="L24" class="LineNr">24 </span>  y1:&amp;:<a href='same-fringe.mu.html#L9'>tree</a>:num <span class="Special">&lt;-</span> new-tree b, c
+<span id="L25" class="LineNr">25 </span>  y:&amp;:<a href='same-fringe.mu.html#L9'>tree</a>:num <span class="Special">&lt;-</span> new-tree a, y1
+<span id="L26" class="LineNr">26 </span>  result:bool <span class="Special">&lt;-</span> <a href='same-fringe.mu.html#L30'>same-fringe</a> x, y
+<span id="L27" class="LineNr">27 </span>  $print result <span class="Constant">10/newline</span>
+<span id="L28" class="LineNr">28 </span>]
+<span id="L29" class="LineNr">29 </span>
+<span id="L30" class="LineNr">30 </span><span class="muRecipe">def</span> <a href='same-fringe.mu.html#L30'>same-fringe</a> a:&amp;:<a href='same-fringe.mu.html#L9'>tree</a>:_elem, b:&amp;:<a href='same-fringe.mu.html#L9'>tree</a>:_elem<span class="muRecipe"> -&gt; </span>result:bool [
+<span id="L31" class="LineNr">31 </span>  <span class="Constant">local-scope</span>
+<span id="L32" class="LineNr">32 </span>  <span class="Constant">load-inputs</span>
+<span id="L33" class="LineNr">33 </span>  k1:continuation <span class="Special">&lt;-</span> call-with-continuation-mark <a href='same-fringe.mu.html#L48'>process</a>, a
+<span id="L34" class="LineNr">34 </span>  k2:continuation <span class="Special">&lt;-</span> call-with-continuation-mark <a href='same-fringe.mu.html#L48'>process</a>, b
+<span id="L35" class="LineNr">35 </span>  <span class="Delimiter">{</span>
+<span id="L36" class="LineNr">36 </span>  <span class="Conceal">¦</span> k1, x:_elem, a-done?:bool <span class="Special">&lt;-</span> call k1
+<span id="L37" class="LineNr">37 </span>  <span class="Conceal">¦</span> k2, y:_elem, b-done?:bool <span class="Special">&lt;-</span> call k2
+<span id="L38" class="LineNr">38 </span>  <span class="Conceal">¦</span> <span class="muControl">break-if</span> a-done?
+<span id="L39" class="LineNr">39 </span>  <span class="Conceal">¦</span> <span class="muControl">break-if</span> b-done?
+<span id="L40" class="LineNr">40 </span>  <span class="Conceal">¦</span> match?:bool <span class="Special">&lt;-</span> equal x, y
+<span id="L41" class="LineNr">41 </span>  <span class="Conceal">¦</span> <span class="muControl">return-unless</span> match?, <span class="Constant">0/false</span>
+<span id="L42" class="LineNr">42 </span>  <span class="Conceal">¦</span> <span class="muControl">loop</span>
+<span id="L43" class="LineNr">43 </span>  <span class="Delimiter">}</span>
+<span id="L44" class="LineNr">44 </span>  result <span class="Special">&lt;-</span> and a-done?, b-done?
+<span id="L45" class="LineNr">45 </span>]
+<span id="L46" class="LineNr">46 </span>
+<span id="L47" class="LineNr">47 </span><span class="Comment"># harness around traversal</span>
+<span id="L48" class="LineNr">48 </span><span class="muRecipe">def</span> <a href='same-fringe.mu.html#L48'>process</a> t:&amp;:<a href='same-fringe.mu.html#L9'>tree</a>:_elem [
+<span id="L49" class="LineNr">49 </span>  <span class="Constant">local-scope</span>
+<span id="L50" class="LineNr">50 </span>  <span class="Constant">load-inputs</span>
+<span id="L51" class="LineNr">51 </span>  return-continuation-until-mark  <span class="Comment"># initial</span>
+<span id="L52" class="LineNr">52 </span>  <a href='same-fringe.mu.html#L59'>traverse</a> t
+<span id="L53" class="LineNr">53 </span>  zero-val:&amp;:_elem <span class="Special">&lt;-</span> new <span class="Constant">_elem:type</span>
+<span id="L54" class="LineNr">54 </span>  return-continuation-until-mark *zero-val, <span class="Constant">1/done</span>  <span class="Comment"># final</span>
+<span id="L55" class="LineNr">55 </span>  assert <span class="Constant">0/false</span>, <span class="Constant">[continuation called past done]</span>
+<span id="L56" class="LineNr">56 </span>]
+<span id="L57" class="LineNr">57 </span>
+<span id="L58" class="LineNr">58 </span><span class="Comment"># core traversal</span>
+<span id="L59" class="LineNr">59 </span><span class="muRecipe">def</span> <a href='same-fringe.mu.html#L59'>traverse</a> t:&amp;:<a href='same-fringe.mu.html#L9'>tree</a>:_elem [
+<span id="L60" class="LineNr">60 </span>  <span class="Constant">local-scope</span>
+<span id="L61" class="LineNr">61 </span>  <span class="Constant">load-inputs</span>
+<span id="L62" class="LineNr">62 </span>  <span class="muControl">return-unless</span> t
+<span id="L63" class="LineNr">63 </span>  l:&amp;:<a href='same-fringe.mu.html#L9'>tree</a>:_elem <span class="Special">&lt;-</span> get *t, <span class="Constant">left:offset</span>
+<span id="L64" class="LineNr">64 </span>  <a href='same-fringe.mu.html#L59'>traverse</a> l
+<span id="L65" class="LineNr">65 </span>  r:&amp;:<a href='same-fringe.mu.html#L9'>tree</a>:_elem <span class="Special">&lt;-</span> get *t, <span class="Constant">right:offset</span>
+<span id="L66" class="LineNr">66 </span>  <a href='same-fringe.mu.html#L59'>traverse</a> r
+<span id="L67" class="LineNr">67 </span>  <span class="muControl">return-if</span> l
+<span id="L68" class="LineNr">68 </span>  <span class="muControl">return-if</span> r
+<span id="L69" class="LineNr">69 </span>  <span class="Comment"># leaf</span>
+<span id="L70" class="LineNr">70 </span>  v:_elem <span class="Special">&lt;-</span> get *t, <span class="Constant">val:offset</span>
+<span id="L71" class="LineNr">71 </span>  return-continuation-until-mark v, <span class="Constant">0/not-done</span>
+<span id="L72" class="LineNr">72 </span>]
+<span id="L73" class="LineNr">73 </span>
+<span id="L74" class="LineNr">74 </span><span class="Comment"># details</span>
+<span id="L75" class="LineNr">75 </span>
+<span id="L76" class="LineNr">76 </span><span class="muRecipe">def</span> new-tree x:_elem<span class="muRecipe"> -&gt; </span>result:&amp;:<a href='same-fringe.mu.html#L9'>tree</a>:_elem [
+<span id="L77" class="LineNr">77 </span>  <span class="Constant">local-scope</span>
+<span id="L78" class="LineNr">78 </span>  <span class="Constant">load-inputs</span>
+<span id="L79" class="LineNr">79 </span>  result <span class="Special">&lt;-</span> new <span class="Delimiter">{</span>(tree _elem): type<span class="Delimiter">}</span>
+<span id="L80" class="LineNr">80 </span>  put *result, <span class="Constant">val:offset</span>, x
+<span id="L81" class="LineNr">81 </span>]
+<span id="L82" class="LineNr">82 </span>
+<span id="L83" class="LineNr">83 </span><span class="muRecipe">def</span> new-tree l:&amp;:<a href='same-fringe.mu.html#L9'>tree</a>:_elem, r:&amp;:<a href='same-fringe.mu.html#L9'>tree</a>:_elem<span class="muRecipe"> -&gt; </span>result:&amp;:<a href='same-fringe.mu.html#L9'>tree</a>:_elem [
+<span id="L84" class="LineNr">84 </span>  <span class="Constant">local-scope</span>
+<span id="L85" class="LineNr">85 </span>  <span class="Constant">load-inputs</span>
+<span id="L86" class="LineNr">86 </span>  result <span class="Special">&lt;-</span> new <span class="Delimiter">{</span>(tree _elem): type<span class="Delimiter">}</span>
+<span id="L87" class="LineNr">87 </span>  put *result, <span class="Constant">left:offset</span>, l
+<span id="L88" class="LineNr">88 </span>  put *result, <span class="Constant">right:offset</span>, r
+<span id="L89" class="LineNr">89 </span>]
+</pre>
+</body>
+</html>
+<!-- vim: set foldmethod=manual : -->