code: 9ferno

Download patch

ref: 9661fb64092acfcf370688c5e56934e400965822
parent: 4ee2765c5a3ab2087cbdba63f117b7e1f591bf12
author: joe9 <joe9mail@gmail.com>
date: Sat Apr 3 03:28:49 EDT 2021

added tests

diff: cannot open b/tests//null: file does not exist: 'b/tests//null'
--- /dev/null
+++ b/tests/.gitignore
@@ -1,0 +1,4 @@
+*.dis
+*.out
+6.*
+*.s
--- /dev/null
+++ b/tests/1.b
@@ -1,0 +1,22 @@
+implement Sample;
+include "sys.m";
+	sys: Sys;
+
+Sample: module
+{
+	init: fn();
+};
+
+init()
+{
+	sys = load Sys Sys->PATH;
+	sys->print("init 1\n");
+	a := 1;
+	b := 3;
+	c : int;
+	d : string;
+
+	d = "string init";
+	c = a*b + b*b*b*b + a;
+	sys->print("Completed running 1.b: c=%d\n", c);
+}
--- /dev/null
+++ b/tests/2.b
@@ -1,0 +1,15 @@
+implement Sample;
+
+Sample: module
+{
+	init: fn();
+};
+
+init()
+{
+	a := 1;
+	b := 3;
+	c : int;
+
+	c = a*b + b*b*b*b + a;
+}
--- /dev/null
+++ b/tests/3.b
@@ -1,0 +1,24 @@
+implement Sample;
+
+Person : adt
+{
+	age : int;
+	name : string;
+};
+
+Sample: module
+{
+	init: fn();
+};
+
+init()
+{
+	a := 1;
+	b := 3;
+	c : int;
+	d : Person;
+
+	d.age = 10;
+	d.name = "person name";
+	c = a*b + b*b*b*b + a;
+}
--- /dev/null
+++ b/tests/4.b
@@ -1,0 +1,25 @@
+implement Sample;
+include "sys.m";
+	sys: Sys;
+
+Sample: module
+{
+	init: fn();
+};
+
+init()
+{
+	sys = load Sys Sys->PATH;
+	a := 1;
+	b := 3;
+	c : int;
+
+	case a {
+	0 => sys->print("begins with a vowel\n");
+	1 => sys->print("begins with a consonant\n");
+	2 => sys->print("begins with a consonant\n");
+	3 => sys->print("begins with a consonant\n");
+	4 => sys->print("begins with a consonant\n");
+	* => sys->print("sorry don't understand\n");
+	}
+}
--- /dev/null
+++ b/tests/5.b
@@ -1,0 +1,60 @@
+implement Sample;
+
+Person : adt
+{
+	age : int;
+	next : cyclic ref Person;
+	age1 : int;
+	age2 : int;
+};
+
+Sample: module
+{
+	init: fn();
+	fn1: fn();
+	fn2: fn();
+	fn3: fn();
+};
+
+init()
+{
+	a := 1;
+	b := 3;
+	c : int;
+	d : Person;
+
+	d.age = 10;
+	d.next = nil;
+	d.age1 = 20;
+	d.age2 = 30;
+	c = a*b + b*b*b*b + a;
+	fn3();
+	fn1();
+	fn2();
+}
+
+fn1()
+{
+	d: Person;
+
+	d.age=40;
+	d.next = nil;
+	d.age1 = 50;
+	d.age2 = 60;
+}
+
+fn2()
+{
+	s: string;
+
+	s = "testing the string";
+}
+
+fn3()
+{
+	s: string;
+	s1: string;
+
+	s = "testing the string";
+	s1 = "testing again";
+}
--- /dev/null
+++ b/tests/adt.b
@@ -1,0 +1,34 @@
+implement Sample;
+include "sys.m";
+	sys: Sys;
+
+Person: adt
+{
+	name: string;
+	age: int;
+};
+
+Sample: module
+{
+	init: fn();
+};
+
+init()
+{
+	sys = load Sys Sys->PATH;
+	d : Person;
+
+	d.name = "Jane";
+	d.age = 20;
+	sys->print("should print Jane result %s\n", d.name);
+	sys->print("should print 20 result %d\n", d.age);
+
+	a := ("Doe", 21);
+	a = d;
+	sys->print("should print Jane result %s\n", d.name);
+
+	p, np : ref Person;
+	p = np = ref Person("Jane", 20);
+	d.name = "Doe";
+	sys->print("should print Jane result %s\n", p.name);
+}
--- /dev/null
+++ b/tests/alt.b
@@ -1,0 +1,42 @@
+implement Fibonacci;
+
+include "sys.m";
+
+sys : Sys;
+MAX : con 50;
+x : chan of int;
+
+Fibonacci : module
+{
+	init : fn();
+};
+
+init()
+{
+	sys = load Sys Sys->PATH;
+
+	x = chan of int;
+	sys->print("0	.\n	..\n");
+	spawn f(0,1);
+
+	<-x;
+	sys->print("main thread completed.\n");
+}
+
+f(a, b : int)
+{
+	sys->print("%-3d", a + b);
+	for (i := 0; i <= a+b; i++)
+	{
+		sys->print(".");
+	}
+	sys->print("\n");
+
+	if (a+b < MAX)
+	{
+		f(b, a+b);
+	}
+
+	x <-= 0;
+	sys->print("Spawned thread completed.\n");
+}
--- /dev/null
+++ b/tests/alt1.b
@@ -1,0 +1,125 @@
+implement Fibonacci;
+
+include "sys.m";
+
+sys : Sys;
+MAX : con 50;
+chan1, chan2, chan4 : chan of int;
+chan3 : chan of string;
+
+Fibonacci : module
+{
+	init : fn();
+};
+
+init()
+{
+	sys = load Sys Sys->PATH;
+
+	chan1 = chan of int;
+	chan2 = chan of int;
+	chan4 = chan of int;
+	chan3 = chan of string;
+
+	str := "string test";
+	sys->print("string test: %s %d\n", str, len str);
+	sys->print("0	.\n	..\n");
+	spawn f(0,1);
+	spawn f1(0,1);
+	spawn f3(0,1);
+	spawn f2();
+	for (i := 0; i<10; i++){
+		sys->print("loop counter %d\n", i);
+		alt
+		{
+			a := <- chan1 =>
+			{
+				sys->print("%d: Read from chan1 %d\n", i, a);
+			}
+	
+			b := <- chan2 =>
+			{
+				sys->print("%d: Read from chan2 %d\n", i, b);
+			}
+			c := <- chan4 =>
+			{
+				sys->print("%d: Read from chan4 %d\n", i, c);
+			}
+	
+			chan3 <- = "Orange" =>
+			{
+				sys->print("Send on chan3\n");
+			}
+	
+			* =>
+			{
+				sys->print("Default action\n");
+			}
+		}
+	}
+	sys->print("Spawned threads completed.\n");
+}
+
+f(a, b : int)
+{
+	sys->print("%-3d", a + b);
+	chan1 <-= a+b;
+	for (i := 0; i <= a+b; i++)
+	{
+		sys->print(".");
+	}
+	sys->print("\n");
+
+	if (a+b < MAX)
+	{
+		f(b, a+b);
+	}
+
+	chan1 <-= 0;
+	sys->print("exiting f\n"); 
+}
+
+f1(a, b : int)
+{
+	sys->print("%-3d", a + b);
+	chan2 <-= a+b;
+	for (i := 0; i <= a+b; i++)
+	{
+		sys->print(".");
+	}
+	sys->print("\n");
+
+	if (a+b < MAX)
+	{
+		f(b, a+b);
+	}
+
+	chan2 <-= 1;
+	sys->print("exiting f1\n"); 
+}
+
+f3(a, b : int)
+{
+	sys->print("%-3d", a + b);
+	chan4 <-= a+b;
+	for (i := 0; i <= a+b; i++)
+	{
+		sys->print(".");
+	}
+	sys->print("\n");
+
+	if (a+b < MAX)
+	{
+		f(b, a+b);
+	}
+
+	chan4 <-= 1;
+	sys->print("exiting f3\n"); 
+}
+
+f2()
+{
+	x : string;
+	x = <- chan3;
+	sys->print("exiting f2, received\n"); 
+}
--- /dev/null
+++ b/tests/array.b
@@ -1,0 +1,17 @@
+implement Sample;
+include "sys.m";
+	sys: Sys;
+
+Sample: module
+{
+	init: fn();
+};
+
+init()
+{
+	sys = load Sys Sys->PATH;
+	c := array [] of {"jimbox", "pip", "squek"};
+
+	sys->print("should print jimbox result %s\n", c[0]);
+	sys->print("should print squek result %s\n", c[2]);
+}
--- /dev/null
+++ b/tests/array1.b
@@ -1,0 +1,21 @@
+implement Sample;
+include "sys.m";
+	sys: Sys;
+
+Sample: module
+{
+	init: fn();
+};
+
+init()
+{
+	sys = load Sys Sys->PATH;
+	d := array [4] of {* => 3.14};
+	z := array[20] of {0 or 2 or 4 or 6 or 8 => 1,
+			1 or 3 or 5 or 7 or 9 => 0,
+			* => -1
+			};
+
+	sys->print("should print 3.14 result %g %f\n", d[0], d[0]);
+	sys->print("should print -1 result %d\n", z[11]);
+}
--- /dev/null
+++ b/tests/array2.b
@@ -1,0 +1,19 @@
+implement Sample;
+include "sys.m";
+	sys: Sys;
+
+Sample: module
+{
+	init: fn();
+};
+
+init()
+{
+	sys = load Sys Sys->PATH;
+	z := array[20] of {0 or 2 or 4 or 6 or 8 => 1,
+			1 or 3 or 5 or 7 or 9 => 0,
+			* => -1
+			};
+
+	sys->print("should print -1 result %d\n", z[11]);
+}
--- /dev/null
+++ b/tests/array3.b
@@ -1,0 +1,18 @@
+implement Sample;
+include "sys.m";
+	sys: Sys;
+
+Sample: module
+{
+	init: fn();
+};
+
+init()
+{
+	sys = load Sys Sys->PATH;
+	z := array[2] of {* => -1};
+	d := array [3] of {* => 3.14};
+
+	sys->print("should print -1 result %d\n", z[1]);
+	sys->print("should print 3.14 result %g %f\n", d[0], d[0]);
+}
--- /dev/null
+++ b/tests/arraybig.b
@@ -1,0 +1,35 @@
+implement Sample;
+include "sys.m";
+	sys: Sys;
+
+Sample: module
+{
+	init: fn();
+};
+
+init()
+{
+	sys = load Sys Sys->PATH;
+	a : array of int;
+	b := array[64] of int;
+	c := array [] of {"jimbox", "pip", "squek"};
+	e := array [4] of {* => 3};
+	d := array [4] of {* => 3.14};
+	w := array [] of {0 or 2 or 4 or 6 or 8 => 1,
+			1 or 3 or 5 or 7 or 9 => 0};
+	z := array[20] of {0 or 2 or 4 or 6 or 8 => 1,
+			1 or 3 or 5 or 7 or 9 => 0,
+			* => -1
+			};
+	y : array of array of big;
+	story := array [] of {"I", "should", "get", "a", "life"};
+	task := story[2:];
+	dream := task[0][:1] + "0" + task[0][2:] + " " +task[1] + " " + task[2];
+
+	sys->print("should print jimbox result %s\n", c[0]);
+	sys->print("should print 3 result %d\n", e[0]);
+	sys->print("should print 3.14 result %g %f\n", d[0], d[0]);
+	sys->print("should print 1 result %d\n", w[0]);
+	sys->print("should print -1 result %-d\n", z[11]);
+	sys->print("should print gOt a life result %s\n", dream);
+}
--- /dev/null
+++ b/tests/arraysimple.b
@@ -1,0 +1,15 @@
+implement Sample;
+include "sys.m";
+	sys: Sys;
+
+Sample: module
+{
+	init: fn();
+};
+
+init()
+{
+	sys = load Sys Sys->PATH;
+	c := array [1] of {1};
+	sys->print("print the 1st element %d\n", c[0]);
+}
--- /dev/null
+++ b/tests/arraysimpleint.b
@@ -1,0 +1,11 @@
+implement Sample;
+
+Sample: module
+{
+	init: fn();
+};
+
+init()
+{
+	c := array [1] of {1};
+}
--- /dev/null
+++ b/tests/byte.b
@@ -1,0 +1,19 @@
+implement Sample;
+include "sys.m";
+	sys: Sys;
+
+Sample: module
+{
+	init: fn();
+};
+
+init()
+{
+	sys = load Sys Sys->PATH;
+	a := byte 1;
+	b := byte 255;
+
+	a = a + (byte 10);
+	b = b + (byte 10);
+	sys->print("a expected 11 calculated %d, b expected 9 calculated %d\n", (int a), (int b));
+}
--- /dev/null
+++ b/tests/case.b
@@ -1,0 +1,23 @@
+implement Sample;
+include "sys.m";
+	sys: Sys;
+
+Sample: module
+{
+	init: fn();
+};
+
+init()
+{
+	sys = load Sys Sys->PATH;
+	a := 1;
+	b := 3;
+	c : int;
+
+	case a {
+	0 => sys->print("is zero\n");
+	1 => sys->print("is 1\n");
+	2 => sys->print("is 2\n");
+	* => sys->print("is default\n");
+	}
+}
--- /dev/null
+++ b/tests/case1.b
@@ -1,0 +1,23 @@
+implement Sample;
+include "sys.m";
+	sys: Sys;
+
+Sample: module
+{
+	init: fn();
+};
+
+init()
+{
+	sys = load Sys Sys->PATH;
+	a := 15;
+	b := 3;
+	c : int;
+
+	case a {
+	0 => sys->print("is zero\n");
+	1 to 10 => sys->print("is between 1 and 10\n");
+	11 to 20 => sys->print("is between 11 and 20\n");
+	* => sys->print("is default\n");
+	}
+}
--- /dev/null
+++ b/tests/casec.b
@@ -1,0 +1,20 @@
+implement Sample;
+include "sys.m";
+	sys: Sys;
+
+Sample: module
+{
+	init: fn();
+};
+
+init()
+{
+	sys = load Sys Sys->PATH;
+	a : string = "Jane";
+
+	case a {
+	"jane" or "JANE" => sys->print("is jane or JANE\n");
+	"Jane" => sys->print("is Jane\n");
+	* => sys->print("is default\n");
+	}
+}
--- /dev/null
+++ b/tests/drawcontext.b
@@ -1,0 +1,33 @@
+# File: drawcontext.b
+
+implement DrawContext;
+
+include "sys.m";
+include "draw.m";
+
+sys : Sys;
+draw : Draw;
+Screen, Display : import draw;
+
+DrawContext : module
+{
+	init : fn(ctxt : ref Draw->Context, args : list of string);
+};
+
+init (ctxt : ref Draw->Context, nil : list of string)
+{
+	sys = load Sys Sys->PATH;
+	draw = load Draw Draw->PATH;
+	if(draw == nil){
+		sys->fprint(sys->filedes(2), "cannot load Draw module\n");
+		raise "fail: bad module";
+	}
+
+	if (ctxt == nil)
+	{
+		sys->print("No valid graphics contetx, allocating a new one...\n");
+		display := Display.allocate(nil);
+		screen := Screen.allocate(display.image, display.rgb(99,99,99), 1);
+		ctxt = ref (screen, display, nil, nil, nil, nil, nil);
+	}
+}
--- /dev/null
+++ b/tests/drawexample.b
@@ -1,0 +1,50 @@
+# File: draw-example(2)
+
+implement Test;
+
+include "sys.m";
+include "draw.m";
+
+Test: module
+{
+	init:	fn(ctxt: ref Draw->Context, argv: list of string);
+};
+
+init(nil: ref Draw->Context, nil: list of string)
+{
+	sys := load Sys Sys->PATH;
+	draw := load Draw Draw->PATH;
+	Display, Font, Rect, Point, Image, Screen: import draw;
+
+	display := draw->Display.allocate(nil);
+	disp := display.image;
+	red := display.color(Draw->Red);
+	blue := display.color(Draw->Blue);
+	white := display.color(Draw->White);
+	yellow := display.color(Draw->Yellow);
+
+	red.r.max.x = 640;
+	red.r.max.y = 480;
+	red.clipr.min.x = 0;
+	red.clipr.min.y = 0;
+	red.clipr.max.x = 600;
+	red.clipr.max.y = 400;
+	white.r.max.x = 640;
+	white.r.max.y = 480;
+	white.clipr.min.x = 200;
+	white.clipr.min.y = 400;
+	white.clipr.max.x = 640;
+	white.clipr.max.y = 480;
+	sys->print("red r .min.x %d .min.y %d .max.x %d .max.y %d\n",
+		red.r.min.x, red.r.min.y, red.r.max.x, red.r.max.y);
+	#sys->print("red clipr .min.x %d .min.y %d .max.x %d .max.y %d\n",
+	#	red.clipr.min.x, red.clipr.min.y,
+	#	red.clipr.max.x, red.clipr.max.y);
+	sys->print("disp r .min.x %d .min.y %d .max.x %d .max.y %d\n",
+		disp.r.min.x, disp.r.min.y, disp.r.max.x, disp.r.max.y);
+	sys->sleep(5000);
+	disp.draw(disp.r, red, red, disp.r.min);
+	sys->sleep(5000);
+	disp.draw(disp.r, white, white, disp.r.min);
+	sys->sleep(50000);
+}
--- /dev/null
+++ b/tests/drawexample1.b
@@ -1,0 +1,73 @@
+# File: draw-example(2)
+
+implement Test;
+
+include "sys.m";
+include "draw.m";
+
+Test: module
+{
+	init:	fn(ctxt: ref Draw->Context, argv: list of string);
+};
+
+init(nil: ref Draw->Context, nil: list of string)
+{
+	sys := load Sys Sys->PATH;
+	draw := load Draw Draw->PATH;
+	Display, Font, Rect, Point, Image, Screen: import draw;
+
+	display := draw->Display.allocate(nil);
+	disp := display.image;
+	red := display.color(Draw->Red);
+	blue := display.color(Draw->Blue);
+	white := display.color(Draw->White);
+	yellow := display.color(Draw->Yellow);
+
+#	red.r.max.x = 640;
+#	red.r.max.y = 480;
+#	red.clipr.min.x = 0;
+#	red.clipr.min.y = 0;
+#	red.clipr.max.x = 600;
+#	red.clipr.max.y = 400;
+	sys->print("red.clipr.min.x %d\n", red.clipr.min.x);
+	disp.draw(disp.r, red, red, disp.r.min);
+	sys->sleep(5000);
+
+#	texture := display.newimage(((0,0),(2,3)),
+#			disp.chans, 1, Draw->Black);
+#	texture.clipr = ((-10000,-10000),(10000,10000));
+#	texture.draw(((0,0),(1,3)), white, nil, (0,0));
+#	texture.draw(((0,0),(2,1)), white, nil, (0,0));
+#	disp.draw(((100,100),(200,300)), texture, texture, (0,0));
+#	sys->sleep(5000);
+#
+#	stipple := display.newimage(((0,0),(2,2)),
+#			disp.chans, 1, Draw->Transparent);
+#	stipple.draw(((0,0),(1,1)), display.opaque, nil, (0,0));
+#	disp.draw(((100,100),(300,250)), white, stipple, (0,0));
+#	sys->sleep(5000);
+#
+#	font := Font.open(display, "*default*");
+#	disp.text((100,310), texture, (0,0), font, "Hello World");
+#	sys->sleep(5000);
+#
+#	delight := display.open("/icons/delight.bit");
+#	piccenter := delight.r.min.add(delight.r.max).div(2);
+#	disp.fillellipse((250,250), 150, 50, delight, piccenter);
+#	disp.ellipse((250,250), 150, 50, 3, yellow, (0,0));
+#	sys->sleep(5000);
+#
+#	dx : con 15;
+#	dy : con 3;
+#	brush := display.newimage(((0,0),(2*dx+1,2*dy+1)), disp.chans,
+#					0, Draw->Black);
+#	brush.fillellipse((dx,dy), dx, dy, display.white, (0,0));
+#	for(x:=delight.r.min.x; x<delight.r.max.x; x++){
+#		y := (x-piccenter.x)*(x-piccenter.x)/80;
+#		y += 2*dy+1;
+#		xx := x+(250-piccenter.x)-dx;
+#		yy := y+(250-piccenter.y)-dy;
+#		disp.gendraw(((xx,yy),(xx+2*dx+1,yy+2*dy+1)),
+#				delight, (x-dx, y-dy), brush, (0,0));
+#	}
+}
--- /dev/null
+++ b/tests/filepat.debug
@@ -1,0 +1,2679 @@
+declare module Sys
+declare module Readdir
+declare module Filepat
+variable 'SELF' val '"$self"'
+variable 'Sys->PATH' val '"$Sys"'
+variable 'Sys->Maxint' val '2147483647'
+variable 'Sys->QTDIR' val '128'
+variable 'Sys->QTAPPEND' val '64'
+variable 'Sys->QTEXCL' val '32'
+variable 'Sys->QTAUTH' val '8'
+variable 'Sys->QTTMP' val '4'
+variable 'Sys->QTFILE' val '0'
+variable 'Sys->nulldir' val 'Dir(nil, nil, nil, nil, (-1, -1, -1), -1, -1, -1, -1, -1, -1)'
+variable 'Sys->zerodir' val 'Dir(nil, nil, nil, nil, (0, 0, 0), 0, 0, 0, 0, 0, 0)'
+variable 'Sys->ATOMICIO' val '8192'
+variable 'Sys->SEEKSTART' val '0'
+variable 'Sys->SEEKRELA' val '1'
+variable 'Sys->SEEKEND' val '2'
+variable 'Sys->NAMEMAX' val '256'
+variable 'Sys->ERRMAX' val '128'
+variable 'Sys->WAITLEN' val '192'
+variable 'Sys->OREAD' val '0'
+variable 'Sys->OWRITE' val '1'
+variable 'Sys->ORDWR' val '2'
+variable 'Sys->OTRUNC' val '16'
+variable 'Sys->ORCLOSE' val '64'
+variable 'Sys->OEXCL' val '4096'
+variable 'Sys->DMDIR' val '-2147483648'
+variable 'Sys->DMAPPEND' val '1073741824'
+variable 'Sys->DMEXCL' val '536870912'
+variable 'Sys->DMAUTH' val '134217728'
+variable 'Sys->DMTMP' val '67108864'
+variable 'Sys->MREPL' val '0'
+variable 'Sys->MBEFORE' val '1'
+variable 'Sys->MAFTER' val '2'
+variable 'Sys->MCREATE' val '4'
+variable 'Sys->MCACHE' val '16'
+variable 'Sys->NEWFD' val '(1)'
+variable 'Sys->FORKFD' val '(2)'
+variable 'Sys->NEWNS' val '(4)'
+variable 'Sys->FORKNS' val '(8)'
+variable 'Sys->NEWPGRP' val '(16)'
+variable 'Sys->NODEVS' val '(32)'
+variable 'Sys->NEWENV' val '(64)'
+variable 'Sys->FORKENV' val '(128)'
+variable 'Sys->EXPWAIT' val '0'
+variable 'Sys->EXPASYNC' val '1'
+variable 'Sys->UTFmax' val '4'
+variable 'Sys->UTFerror' val '65533'
+variable 'Sys->Runemax' val '1114111'
+variable 'Sys->Runemask' val '2097151'
+variable 'Readdir->PATH' val '"/dis/lib/r..."'
+variable 'Readdir->NAME' val 'iota'
+variable 'Readdir->ATIME' val 'iota'
+variable 'Readdir->MTIME' val 'iota'
+variable 'Readdir->SIZE' val 'iota'
+variable 'Readdir->NONE' val 'iota'
+variable 'Readdir->DESCENDING' val '(32)'
+variable 'Readdir->COMPACT' val '(16)'
+variable 'PATH' val '"/dis/lib/f..."'
+typecheck tree: 
+fn(){} fn(pat: string): list of string 0 0
+  name expand fn(pat: string): list of string 0 0
+  seq nothing 0 0
+    if nothing 0 0
+      == nothing 0 0
+        name sys nothing 0 0
+        name nil polymorphic type 0 0
+      seq nothing 0 0
+        scope nothing 0 0
+          seq nothing 0 0
+            = nothing 0 0
+              name sys nothing 0 0
+              load Sys 0 0
+                -> nothing 0 0
+                  name Sys nothing 0 0
+                  name PATH nothing 0 0
+    seq nothing 0 0
+      if nothing 0 0
+        == nothing 0 0
+          name rdir nothing 0 0
+          name nil polymorphic type 0 0
+        seq nothing 0 0
+          scope nothing 0 0
+            seq nothing 0 0
+              = nothing 0 0
+                name rdir nothing 0 0
+                load Readdir 0 0
+                  -> nothing 0 0
+                    name Readdir nothing 0 0
+                    name PATH nothing 0 0
+      seq nothing 0 0
+        := nothing 0 0
+          tuple nothing 0 0
+            seq nothing 0 0
+              name nil polymorphic type 0 0
+              seq nothing 0 0
+                name elem nothing 0 0
+          call nothing 0 0
+            -> nothing 0 0
+              name sys nothing 0 0
+              name tokenize nothing 0 0
+            seq nothing 0 0
+              name pat nothing 0 0
+              seq nothing 0 0
+                const / string 0 0
+        seq nothing 0 0
+          if nothing 0 0
+            == nothing 0 0
+              name elem nothing 0 0
+              name nil polymorphic type 0 0
+            seq nothing 0 0
+              return nothing 0 0
+                call nothing 0 0
+                  name filepat1 nothing 0 0
+                  seq nothing 0 0
+                    name pat nothing 0 0
+                    seq nothing 0 0
+                      name nil polymorphic type 0 0
+                      seq nothing 0 0
+                        const (0) int 0 0
+          seq nothing 0 0
+            vardecl list of string 0 0
+              seq nothing 0 0
+            seq nothing 0 0
+              if nothing 0 0
+                == nothing 0 0
+                  index nothing 0 0
+                    name pat nothing 0 0
+                    const (0) int 0 0
+                  const (47) int 0 0
+                seq nothing 0 0
+                  = nothing 0 0
+                    name files nothing 0 0
+                    :: nothing 0 0
+                      const / string 0 0
+                      name nil polymorphic type 0 0
+              seq nothing 0 0
+                for nothing 0 0
+                  != nothing 0 0
+                    name elem nothing 0 0
+                    name nil polymorphic type 0 0
+                  seq nothing 0 0
+                    scope nothing 0 0
+                      seq nothing 0 0
+                        = nothing 0 0
+                          name files nothing 0 0
+                          call nothing 0 0
+                            name filepat1 nothing 0 0
+                            seq nothing 0 0
+                              hd nothing 0 0
+                                name elem nothing 0 0
+                              seq nothing 0 0
+                                name files nothing 0 0
+                                seq nothing 0 0
+                                  != nothing 0 0
+                                    tl nothing 0 0
+                                      name elem nothing 0 0
+                                    name nil polymorphic type 0 0
+                        seq nothing 0 0
+                          if nothing 0 0
+                            == nothing 0 0
+                              name files nothing 0 0
+                              name nil polymorphic type 0 0
+                            seq nothing 0 0
+                              break nothing 0 0
+                          seq nothing 0 0
+                            = nothing 0 0
+                              name elem nothing 0 0
+                              tl nothing 0 0
+                                name elem nothing 0 0
+                seq nothing 0
+typecheck tree: 
+fn(){} fn(pat: string, files: list of string, mustbedir: int): list of string 0 0
+  name filepat1 fn(pat: string, files: list of string, mustbedir: int): list of string 0 0
+  seq nothing 0 0
+    if nothing 0 0
+      == nothing 0 0
+        name files nothing 0 0
+        name nil polymorphic type 0 0
+      seq nothing 0 0
+        return nothing 0 0
+          call nothing 0 0
+            name filepatdir nothing 0 0
+            seq nothing 0 0
+              name pat nothing 0 0
+              seq nothing 0 0
+                const  string 0 0
+                seq nothing 0 0
+                  name nil polymorphic type 0 0
+                  seq nothing 0 0
+                    name mustbedir nothing 0 0
+    seq nothing 0 0
+      vardecl list of string 0 0
+        seq nothing 0 0
+      seq nothing 0 0
+        for nothing 0 0
+          != nothing 0 0
+            name files nothing 0 0
+            name nil polymorphic type 0 0
+          seq nothing 0 0
+            scope nothing 0 0
+              seq nothing 0 0
+                = nothing 0 0
+                  name r nothing 0 0
+                  :: nothing 0 0
+                    hd nothing 0 0
+                      name files nothing 0 0
+                    name r nothing 0 0
+                seq nothing 0 0
+                  = nothing 0 0
+                    name files nothing 0 0
+                    tl nothing 0 0
+                      name files nothing 0 0
+        seq nothing 0 0
+          = nothing 0 0
+            name files nothing 0 0
+            name r nothing 0 0
+          seq nothing 0 0
+            vardecli nothing 0 0
+              vardecl list of string 0 0
+                seq nothing 0 0
+              = nothing 0 0
+                name nfiles nothing 0 0
+                name nil polymorphic type 0 0
+            seq nothing 0 0
+              for nothing 0 0
+                != nothing 0 0
+                  name files nothing 0 0
+                  name nil polymorphic type 0 0
+                seq nothing 0 0
+                  scope nothing 0 0
+                    seq nothing 0 0
+                      = nothing 0 0
+                        name nfiles nothing 0 0
+                        call nothing 0 0
+                          name filepatdir nothing 0 0
+                          seq nothing 0 0
+                            name pat nothing 0 0
+                            seq nothing 0 0
+                              hd nothing 0 0
+                                name files nothing 0 0
+                              seq nothing 0 0
+                                name nfiles nothing 0 0
+                                seq nothing 0 0
+                                  name mustbedir nothing 0 0
+                      seq nothing 0 0
+                        = nothing 0 0
+                          name files nothing 0 0
+                          tl nothing 0 0
+                            name files nothing 0 0
+              seq nothing 0 0
+                return nothing 0 0
+                  name nfiles nothing 0 0
+typecheck tree: 
+fn(){} fn(pat: string, dir: string, files: list of string, mustbedir: int): list of string 0 0
+  name filepatdir fn(pat: string, dir: string, files: list of string, mustbedir: int): list of string 0 0
+  seq nothing 0 0
+    if nothing 0 0
+      || nothing 0 0
+        == nothing 0 0
+          name pat nothing 0 0
+          const . string 0 0
+        == nothing 0 0
+          name pat nothing 0 0
+          const .. string 0 0
+      seq nothing 0 0
+        scope nothing 0 0
+          seq nothing 0 0
+            if nothing 0 0
+              || nothing 0 0
+                == nothing 0 0
+                  name dir nothing 0 0
+                  const / string 0 0
+                == nothing 0 0
+                  name dir nothing 0 0
+                  const  string 0 0
+              seq nothing 0 0
+                = nothing 0 0
+                  name files nothing 0 0
+                  :: nothing 0 0
+                    + nothing 0 0
+                      name dir nothing 0 0
+                      name pat nothing 0 0
+                    name files nothing 0 0
+                = nothing 0 0
+                  name files nothing 0 0
+                  :: nothing 0 0
+                    + nothing 0 0
+                      + nothing 0 0
+                        name dir nothing 0 0
+                        const / string 0 0
+                      name pat nothing 0 0
+                    name files nothing 0 0
+            seq nothing 0 0
+              return nothing 0 0
+                name files nothing 0 0
+    seq nothing 0 0
+      := nothing 0 0
+        name dirname nothing 0 0
+        name dir nothing 0 0
+      seq nothing 0 0
+        if nothing 0 0
+          == nothing 0 0
+            name dir nothing 0 0
+            const  string 0 0
+          seq nothing 0 0
+            = nothing 0 0
+              name dirname nothing 0 0
+              const . string 0 0
+        seq nothing 0 0
+          := nothing 0 0
+            tuple nothing 0 0
+              seq nothing 0 0
+                name d nothing 0 0
+                seq nothing 0 0
+                  name n nothing 0 0
+            call nothing 0 0
+              -> nothing 0 0
+                name rdir nothing 0 0
+                name init nothing 0 0
+              seq nothing 0 0
+                name dirname nothing 0 0
+                seq nothing 0 0
+                  | nothing 0 0
+                    | nothing 0 0
+                      -> nothing 0 0
+                        name rdir nothing 0 0
+                        name NAME nothing 0 0
+                      -> nothing 0 0
+                        name rdir nothing 0 0
+                        name DESCENDING nothing 0 0
+                    -> nothing 0 0
+                      name rdir nothing 0 0
+                      name COMPACT nothing 0 0
+          seq nothing 0 0
+            if nothing 0 0
+              == nothing 0 0
+                name d nothing 0 0
+                name nil polymorphic type 0 0
+              seq nothing 0 0
+                return nothing 0 0
+                  name files nothing 0 0
+            seq nothing 0 0
+              seq nothing 0 0
+                := nothing 0 0
+                  name i nothing 0 0
+                  const (1) int 0 0
+                for nothing 0 0
+                  < nothing 0 0
+                    name i nothing 0 0
+                    name n nothing 0 0
+                  seq nothing 0 0
+                    if nothing 0 0
+                      == nothing 0 0
+                        . nothing 0 0
+                          index nothing 0 0
+                            name d nothing 0 0
+                            - nothing 0 0
+                              name i nothing 0 0
+                              const (1) int 0 0
+                          name name nothing 0 0
+                        . nothing 0 0
+                          index nothing 0 0
+                            name d nothing 0 0
+                            name i nothing 0 0
+                          name name nothing 0 0
+                      seq nothing 0 0
+                        scope nothing 0 0
+               
+typecheck tree: 
+fn(){} fn(pat: string, name: string): int 0 0
+  name match fn(pat: string, name: string): int 0 0
+  seq nothing 0 0
+    := nothing 0 0
+      name n nothing 0 0
+      const (0) int 0 0
+    seq nothing 0 0
+      := nothing 0 0
+        name p nothing 0 0
+        const (0) int 0 0
+      seq nothing 0 0
+        for nothing 0 0
+          < nothing 0 0
+            name p nothing 0 0
+            len nothing 0 0
+              name pat nothing 0 0
+          seq nothing 0 0
+            scope nothing 0 0
+              seq nothing 0 0
+                := nothing 0 0
+                  name r nothing 0 0
+                  index nothing 0 0
+                    name pat nothing 0 0
+                    ++ nothing 0 0
+                      name p nothing 0 0
+                seq nothing 0 0
+                  case nothing 0 0
+                    name r nothing 0 0
+                    seq nothing 0 0
+                      label nothing 0 0
+                        seq nothing 0 0
+                          const (42) int 0 0
+                        scope nothing 0 0
+                          seq nothing 0 0
+                            seq nothing 0 0
+                              seq nothing 0 0
+                                = nothing 0 0
+                                  name pat nothing 0 0
+                                  slice nothing 0 0
+                                    name pat nothing 0 0
+                                    seq nothing 0 0
+                                      name p nothing 0 0
+                                      nothing nothing 0 0
+                                if nothing 0 0
+                                  == nothing 0 0
+                                    len nothing 0 0
+                                      name pat nothing 0 0
+                                    const (0) int 0 0
+                                  seq nothing 0 0
+                                    return nothing 0 0
+                                      const (1) int 0 0
+                              for nothing 0 0
+                                <= nothing 0 0
+                                  name n nothing 0 0
+                                  len nothing 0 0
+                                    name name nothing 0 0
+                                seq nothing 0 0
+                                  if nothing 0 0
+                                    call nothing 0 0
+                                      name match nothing 0 0
+                                      seq nothing 0 0
+                                        name pat nothing 0 0
+                                        seq nothing 0 0
+                                          slice nothing 0 0
+                                            name name nothing 0 0
+                                            seq nothing 0 0
+                                              name n nothing 0 0
+                                              nothing nothing 0 0
+                                    seq nothing 0 0
+                                      return nothing 0 0
+                                        const (1) int 0 0
+                                  ++ nothing 0 0
+                                    name n nothing 0 0
+                            return nothing 0 0
+                              const (0) int 0 0
+                      seq nothing 0 0
+                        label nothing 0 0
+                          seq nothing 0 0
+                            const (91) int 0 0
+                          scope nothing 0 0
+                            seq nothing 0 0
+                              seq nothing 0 0
+                                seq nothing 0 0
+                                  seq nothing 0 0
+                                    seq nothing 0 0
+                                      seq nothing 0 0
+                                        seq nothing 0 0
+                                          if nothing 0 0
+                                            == nothing 0 0
+                                              name n nothing 0 0
+                                          
+typecheck tree: 
+fn(){} fn(pat: string, p: int): (int, int, int) 0 0
+  name range fn(pat: string, p: int): (int, int, int) 0 0
+  seq nothing 0 0
+    := nothing 0 0
+      tuple nothing 0 0
+        seq nothing 0 0
+          name q nothing 0 0
+          seq nothing 0 0
+            name lo nothing 0 0
+            seq nothing 0 0
+              name nil polymorphic type 0 0
+      call nothing 0 0
+        name char nothing 0 0
+        seq nothing 0 0
+          name pat nothing 0 0
+          seq nothing 0 0
+            name p nothing 0 0
+    seq nothing 0 0
+      := nothing 0 0
+        tuple nothing 0 0
+          seq nothing 0 0
+            name q1 nothing 0 0
+            seq nothing 0 0
+              name hi nothing 0 0
+              seq nothing 0 0
+                name esc nothing 0 0
+        call nothing 0 0
+          name char nothing 0 0
+          seq nothing 0 0
+            name pat nothing 0 0
+            seq nothing 0 0
+              name q nothing 0 0
+      seq nothing 0 0
+        if nothing 0 0
+          && nothing 0 0
+            ! nothing 0 0
+              name esc nothing 0 0
+            == nothing 0 0
+              name hi nothing 0 0
+              const (45) int 0 0
+          seq nothing 0 0
+            scope nothing 0 0
+              seq nothing 0 0
+                = nothing 0 0
+                  tuple nothing 0 0
+                    seq nothing 0 0
+                      name q1 nothing 0 0
+                      seq nothing 0 0
+                        name hi nothing 0 0
+                        seq nothing 0 0
+                          name nil polymorphic type 0 0
+                  call nothing 0 0
+                    name char nothing 0 0
+                    seq nothing 0 0
+                      name pat nothing 0 0
+                      seq nothing 0 0
+                        name q1 nothing 0 0
+                seq nothing 0 0
+                  return nothing 0 0
+                    tuple nothing 0 0
+                      seq nothing 0 0
+                        name q1 nothing 0 0
+                        seq nothing 0 0
+                          name lo nothing 0 0
+                          seq nothing 0 0
+                            name hi nothing 0 0
+        seq nothing 0 0
+          return nothing 0 0
+            tuple nothing 0 0
+              seq nothing 0 0
+                name q nothing 0 0
+                seq nothing 0 0
+                  name lo nothing 0 0
+                  seq nothing 0 0
+                    name lo nothing 0 0
+typecheck tree: 
+fn(){} fn(pat: string, p: int): (int, int, int) 0 0
+  name char fn(pat: string, p: int): (int, int, int) 0 0
+  seq nothing 0 0
+    if nothing 0 0
+      == nothing 0 0
+        name p nothing 0 0
+        len nothing 0 0
+          name pat nothing 0 0
+      seq nothing 0 0
+        return nothing 0 0
+          tuple nothing 0 0
+            seq nothing 0 0
+              name p nothing 0 0
+              seq nothing 0 0
+                const (0) int 0 0
+                seq nothing 0 0
+                  - nothing 0 0
+                    const (1) int 0 0
+    seq nothing 0 0
+      := nothing 0 0
+        name r nothing 0 0
+        index nothing 0 0
+          name pat nothing 0 0
+          ++ nothing 0 0
+            name p nothing 0 0
+      seq nothing 0 0
+        if nothing 0 0
+          || nothing 0 0
+            == nothing 0 0
+              name p nothing 0 0
+              len nothing 0 0
+                name pat nothing 0 0
+            != nothing 0 0
+              name r nothing 0 0
+              const (92) int 0 0
+          seq nothing 0 0
+            return nothing 0 0
+              tuple nothing 0 0
+                seq nothing 0 0
+                  name p nothing 0 0
+                  seq nothing 0 0
+                    name r nothing 0 0
+                    seq nothing 0 0
+                      const (0) int 0 0
+        seq nothing 0 0
+          return nothing 0 0
+            tuple nothing 0 0
+              seq nothing 0 0
+                + nothing 0 0
+                  name p nothing 0 0
+                  const (1) int 0 0
+                seq nothing 0 0
+                  index nothing 0 0
+                    name pat nothing 0 0
+                    name p nothing 0 0
+                  seq nothing 0 0
+                    const (1) int 0 0
+fncom: expand 2 44aeb8
+ecom: 
+= Sys 10 1
+  name sys Sys 1 0
+  load Sys 10 1
+    const $Sys string 1 0
+    name .m.Sys Sys 17 1
+ecom: 
+load Sys 10 1
+  const $Sys string 1 0
+  name .m.Sys Sys 17 1
+ecom to: 
+name sys Sys 1 0
+ecom: 
+= Readdir 10 1
+  name rdir Readdir 1 0
+  load Readdir 10 1
+    const /dis/lib/readdir.dis string 1 0
+    name .m.Readdir Readdir 17 1
+ecom: 
+load Readdir 10 1
+  const /dis/lib/readdir.dis string 1 0
+  name .m.Readdir Readdir 17 1
+ecom to: 
+name rdir Readdir 1 0
+ecom: 
+= (int, list of string) 10 2
+  tuple (int, list of string) 10 1
+    seq nothing 10 1
+      name nil polymorphic type 1 0
+      seq nothing 10 1
+        name elem list of string 0 0
+  call (int, list of string) 10 2
+    -> fn(s: string, delim: string): (int, list of string) 12 1
+      name sys Sys 1 0
+      name tokenize nothing 11 1
+    seq no type 10 1
+      name pat string 0 0
+      seq no type 10 1
+        const / string 1 0
+generate desc for (int, list of string)
+descmap adt offset 0
+descmap offset 0
+descmap t0 type int offset 0 (d->offset=0 start=0) returns -1
+descmap t1 type list of string offset 8 (d->offset=8 start=0) returns 8
+generate desc for (int, list of string)
+	desc	$-1,16,"40"
+ecom: 
+call (int, list of string) 10 2
+  -> fn(s: string, delim: string): (int, list of string) 12 1
+    name sys Sys 1 0
+    name tokenize nothing 11 1
+  seq no type 10 1
+    name pat string 0 0
+    seq no type 10 1
+      const / string 1 0
+ecom to: 
+name .b1 (int, list of string) 0 0
+generate desc for big
+generate desc for big
+	desc	$-1,8,""
+ecom: 
+name pat string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b2 big 0 0
+    const (64) int 6 0
+ecom: 
+const / string 1 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b2 big 0 0
+    const (72) int 6 0
+ecom: 
+= list of string 10 1
+  * list of string 0 0
+    + int 13 1
+      adr int 13 1
+        name .b1 (int, list of string) 0 0
+      const t1 (8) int 6 0
+  name nil list of string 1 0
+ecom: 
+name nil list of string 1 0
+ecom to: 
+* list of string 0 0
+  + int 13 1
+    adr int 13 1
+      name .b1 (int, list of string) 0 0
+    const t1 (8) int 6 0
+ecom: 
+call list of string 10 2
+  name filepat1 fn(pat: string, files: list of string, mustbedir: int): list of string 11 1
+  seq no type 10 1
+    name pat string 0 0
+    seq no type 10 1
+      name nil list of string 1 0
+      seq no type 10 1
+        const (0) int 6 0
+ecom to: 
+* list of string 8 0
+  name .ret int 0 0
+generate desc for big
+ecom: 
+name pat string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b2 big 0 0
+    const (64) int 6 0
+ecom: 
+name nil list of string 1 0
+ecom to: 
+* list of string 8 0
+  + int 15 0
+    name .b2 big 0 0
+    const (72) int 6 0
+ecom: 
+const (0) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b2 big 0 0
+    const (80) int 6 0
+eacom: 
+inds int 10 1
+  name pat string 0 0
+  const (0) int 6 0
+ecom: 
+inds int 10 1
+  name pat string 0 0
+  const (0) int 6 0
+ecom to: 
+name .t0 int 0 0
+ecom: 
+= list of string 10 1
+  name files list of string 0 0
+  :: list of string 10 1
+    const / string 1 0
+    name nil polymorphic type 1 0
+ecom: 
+:: list of string 10 1
+  const / string 1 0
+  name nil polymorphic type 1 0
+ecom to: 
+name files list of string 0 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+name .t3 list of string 0 0
+ecom: 
+= list of string 10 1
+  name .t3 list of string 0 0
+  name nil list of string 1 0
+ecom: 
+name nil list of string 1 0
+ecom to: 
+name .t3 list of string 0 0
+ecom: 
+= list of string 10 2
+  name files list of string 0 0
+  call list of string 10 2
+    name filepat1 fn(pat: string, files: list of string, mustbedir: int): list of string 11 1
+    seq no type 10 2
+      hd string 10 1
+        name elem list of string 0 0
+      seq no type 10 1
+        name files list of string 0 0
+        seq no type 10 1
+          != int 10 1
+            tl list of string 10 1
+              name elem list of string 0 0
+            name nil list of string 1 0
+ecom: 
+call list of string 10 2
+  name filepat1 fn(pat: string, files: list of string, mustbedir: int): list of string 11 1
+  seq no type 10 2
+    hd string 10 1
+      name elem list of string 0 0
+    seq no type 10 1
+      name files list of string 0 0
+      seq no type 10 1
+        != int 10 1
+          tl list of string 10 1
+            name elem list of string 0 0
+          name nil list of string 1 0
+ecom to: 
+name files list of string 0 0
+generate desc for big
+ecom: 
+hd string 10 1
+  name elem list of string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b2 big 0 0
+    const (64) int 6 0
+ecom: 
+name files list of string 0 0
+ecom to: 
+* list of string 8 0
+  + int 15 0
+    name .b2 big 0 0
+    const (72) int 6 0
+ecom: 
+!= int 10 1
+  tl list of string 10 1
+    name elem list of string 0 0
+  name nil list of string 1 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b2 big 0 0
+    const (80) int 6 0
+eacom: 
+tl list of string 10 1
+  name elem list of string 0 0
+ecom: 
+tl list of string 10 1
+  name elem list of string 0 0
+ecom to: 
+name .t3 list of string 0 0
+ecom: 
+= list of string 10 1
+  name .t3 list of string 0 0
+  name nil list of string 1 0
+ecom: 
+name nil list of string 1 0
+ecom to: 
+name .t3 list of string 0 0
+ecom: 
+= list of string 10 1
+  name elem list of string 0 0
+  tl list of string 10 1
+    name elem list of string 0 0
+ecom: 
+tl list of string 10 1
+  name elem list of string 0 0
+ecom to: 
+name elem list of string 0 0
+ecom: 
+name files list of string 0 0
+ecom to: 
+* list of string 8 0
+  name .ret int 0 0
+fn: expand
+64: argument pat string ref 3
+72: local .t0 int ref 1
+80: local elem list of string ref 7
+88: local files list of string ref 5
+96: local .b2 big ref 3
+104: local .t3 list of string ref 1
+112: local .b1 (int, list of string) ref 1
+generate desc for expand
+descmap offset 0
+descmap pat type string offset 64 (d->offset=64 start=0) returns 64
+descmap .t0 type int offset 72 (d->offset=72 start=0) returns -1
+descmap elem type list of string offset 80 (d->offset=80 start=0) returns 80
+descmap files type list of string offset 88 (d->offset=88 start=0) returns 88
+descmap .b2 type big offset 96 (d->offset=96 start=0) returns -1
+descmap .t3 type list of string offset 104 (d->offset=104 start=0) returns 104
+descmap adt offset 112
+descmap offset 112
+descmap t0 type int offset 112 (d->offset=0 start=112) returns -1
+descmap t1 type list of string offset 120 (d->offset=8 start=112) returns 120
+descmap .b1 type (int, list of string) offset 112 (d->offset=112 start=0) returns 120
+fncom: filepat1 3 464258
+ecom: 
+call list of string 10 2
+  name filepatdir fn(pat: string, dir: string, files: list of string, mustbedir: int): list of string 11 1
+  seq no type 10 1
+    name pat string 0 0
+    seq no type 10 1
+      const  string 1 0
+      seq no type 10 1
+        name nil list of string 1 0
+        seq no type 10 1
+          name mustbedir int 0 0
+ecom to: 
+* list of string 8 0
+  name .ret int 0 0
+generate desc for big
+ecom: 
+name pat string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b4 big 0 0
+    const (64) int 6 0
+ecom: 
+const  string 1 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b4 big 0 0
+    const (72) int 6 0
+ecom: 
+name nil list of string 1 0
+ecom to: 
+* list of string 8 0
+  + int 15 0
+    name .b4 big 0 0
+    const (80) int 6 0
+ecom: 
+name mustbedir int 0 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b4 big 0 0
+    const (88) int 6 0
+ecom: 
+= list of string 10 1
+  name r list of string 0 0
+  :: list of string 10 1
+    hd string 10 1
+      name files list of string 0 0
+    name r list of string 0 0
+ecom: 
+:: list of string 10 1
+  hd string 10 1
+    name files list of string 0 0
+  name r list of string 0 0
+ecom to: 
+name r list of string 0 0
+eacom: 
+hd string 10 1
+  name files list of string 0 0
+ecom: 
+hd string 10 1
+  name files list of string 0 0
+ecom to: 
+name .t5 string 0 0
+ecom: 
+= string 10 1
+  name .t5 string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name .t5 string 0 0
+ecom: 
+= list of string 10 1
+  name files list of string 0 0
+  tl list of string 10 1
+    name files list of string 0 0
+ecom: 
+tl list of string 10 1
+  name files list of string 0 0
+ecom to: 
+name files list of string 0 0
+ecom: 
+= list of string 10 1
+  name files list of string 0 0
+  name r list of string 0 0
+ecom: 
+name r list of string 0 0
+ecom to: 
+name files list of string 0 0
+ecom: 
+= list of string 10 1
+  name nfiles list of string 0 0
+  name nil polymorphic type 1 0
+ecom: 
+name nil list of string 1 0
+ecom to: 
+name nfiles list of string 0 0
+ecom: 
+= list of string 10 2
+  name nfiles list of string 0 0
+  call list of string 10 2
+    name filepatdir fn(pat: string, dir: string, files: list of string, mustbedir: int): list of string 11 1
+    seq no type 10 2
+      name pat string 0 0
+      seq no type 10 2
+        hd string 10 1
+          name files list of string 0 0
+        seq no type 10 1
+          name nfiles list of string 0 0
+          seq no type 10 1
+            name mustbedir int 0 0
+ecom: 
+call list of string 10 2
+  name filepatdir fn(pat: string, dir: string, files: list of string, mustbedir: int): list of string 11 1
+  seq no type 10 2
+    name pat string 0 0
+    seq no type 10 2
+      hd string 10 1
+        name files list of string 0 0
+      seq no type 10 1
+        name nfiles list of string 0 0
+        seq no type 10 1
+          name mustbedir int 0 0
+ecom to: 
+name nfiles list of string 0 0
+generate desc for big
+ecom: 
+name pat string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b4 big 0 0
+    const (64) int 6 0
+ecom: 
+hd string 10 1
+  name files list of string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b4 big 0 0
+    const (72) int 6 0
+ecom: 
+name nfiles list of string 0 0
+ecom to: 
+* list of string 8 0
+  + int 15 0
+    name .b4 big 0 0
+    const (80) int 6 0
+ecom: 
+name mustbedir int 0 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b4 big 0 0
+    const (88) int 6 0
+ecom: 
+= list of string 10 1
+  name files list of string 0 0
+  tl list of string 10 1
+    name files list of string 0 0
+ecom: 
+tl list of string 10 1
+  name files list of string 0 0
+ecom to: 
+name files list of string 0 0
+ecom: 
+name nfiles list of string 0 0
+ecom to: 
+* list of string 8 0
+  name .ret int 0 0
+fn: filepat1
+64: argument pat string ref 2
+72: argument files list of string ref 10
+80: argument mustbedir int ref 2
+88: local nfiles list of string ref 4
+96: local r list of string ref 3
+104: local .b4 big ref 2
+112: local .t5 string ref 1
+generate desc for filepat1
+descmap offset 0
+descmap pat type string offset 64 (d->offset=64 start=0) returns 64
+descmap files type list of string offset 72 (d->offset=72 start=0) returns 72
+descmap mustbedir type int offset 80 (d->offset=80 start=0) returns -1
+descmap nfiles type list of string offset 88 (d->offset=88 start=0) returns 88
+descmap r type list of string offset 96 (d->offset=96 start=0) returns 96
+descmap .b4 type big offset 104 (d->offset=104 start=0) returns -1
+descmap .t5 type string offset 112 (d->offset=112 start=0) returns 112
+fncom: filepatdir 3 464318
+ecom: 
+= list of string 10 1
+  name files list of string 0 0
+  :: list of string 10 1
+    + string 10 1
+      name dir string 0 0
+      name pat string 0 0
+    name files list of string 0 0
+ecom: 
+:: list of string 10 1
+  + string 10 1
+    name dir string 0 0
+    name pat string 0 0
+  name files list of string 0 0
+ecom to: 
+name files list of string 0 0
+eacom: 
++ string 10 1
+  name dir string 0 0
+  name pat string 0 0
+ecom: 
++ string 10 1
+  name dir string 0 0
+  name pat string 0 0
+ecom to: 
+name .t6 string 0 0
+ecom: 
+= string 10 1
+  name .t6 string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name .t6 string 0 0
+ecom: 
+= list of string 10 1
+  name files list of string 0 0
+  :: list of string 10 1
+    + string 10 1
+      + string 10 1
+        name dir string 0 0
+        const / string 1 0
+      name pat string 0 0
+    name files list of string 0 0
+ecom: 
+:: list of string 10 1
+  + string 10 1
+    + string 10 1
+      name dir string 0 0
+      const / string 1 0
+    name pat string 0 0
+  name files list of string 0 0
+ecom to: 
+name files list of string 0 0
+eacom: 
++ string 10 1
+  + string 10 1
+    name dir string 0 0
+    const / string 1 0
+  name pat string 0 0
+ecom: 
++ string 10 1
+  + string 10 1
+    name dir string 0 0
+    const / string 1 0
+  name pat string 0 0
+ecom to: 
+name .t6 string 0 0
+ecom: 
++ string 10 1
+  name dir string 0 0
+  const / string 1 0
+ecom to: 
+name .t6 string 0 0
+ecom: 
+= string 10 1
+  name .t6 string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name .t6 string 0 0
+ecom: 
+name files list of string 0 0
+ecom to: 
+* list of string 8 0
+  name .ret int 0 0
+ecom: 
+= string 10 1
+  name dirname string 0 0
+  name dir string 0 0
+ecom: 
+name dir string 0 0
+ecom to: 
+name dirname string 0 0
+ecom: 
+= string 10 1
+  name dirname string 0 0
+  const . string 1 0
+ecom: 
+const . string 1 0
+ecom to: 
+name dirname string 0 0
+ecom: 
+= (array of ref Sys->Dir, int) 10 2
+  tuple (array of ref Sys->Dir, int) 10 1
+    seq nothing 10 1
+      name d array of ref Sys->Dir 0 0
+      seq nothing 10 1
+        name n int 0 0
+  call (array of ref Sys->Dir, int) 10 2
+    -> fn(path: string, sortkey: int): (array of ref Sys->Dir, int) 12 1
+      name rdir Readdir 1 0
+      name init nothing 11 1
+    seq no type 10 1
+      name dirname string 0 0
+      seq no type 10 1
+        const (48) int 6 0
+ecom: 
+call (array of ref Sys->Dir, int) 10 2
+  -> fn(path: string, sortkey: int): (array of ref Sys->Dir, int) 12 1
+    name rdir Readdir 1 0
+    name init nothing 11 1
+  seq no type 10 1
+    name dirname string 0 0
+    seq no type 10 1
+      const (48) int 6 0
+ecom to: 
+name d (array of ref Sys->Dir, int) 0 0
+generate desc for big
+ecom: 
+name dirname string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b7 big 0 0
+    const (64) int 6 0
+ecom: 
+const (48) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b7 big 0 0
+    const (72) int 6 0
+ecom: 
+name files list of string 0 0
+ecom to: 
+* list of string 8 0
+  name .ret int 0 0
+ecom: 
+= int 10 1
+  name i int 0 0
+  const (1) int 6 0
+ecom: 
+const (1) int 6 0
+ecom to: 
+name i int 0 0
+ecom: 
+* string 10 1
+  * ref Sys->Dir 10 1
+    indx big 10 1
+      name d array of ref Sys->Dir 0 0
+      name i int 0 0
+ecom to: 
+name .t6 string 0 0
+eacom: 
+* string 10 1
+  * ref Sys->Dir 10 1
+    indx big 10 1
+      name d array of ref Sys->Dir 0 0
+      name i int 0 0
+ecom: 
+* ref Sys->Dir 10 1
+  indx big 10 1
+    name d array of ref Sys->Dir 0 0
+    name i int 0 0
+ecom to: 
+name .t6 ref Sys->Dir 0 0
+eacom: 
+* ref Sys->Dir 10 1
+  indx big 10 1
+    name d array of ref Sys->Dir 0 0
+    name i int 0 0
+generate desc for big
+ecom: 
+indx big 10 1
+  name d array of ref Sys->Dir 0 0
+  name i int 0 0
+ecom to: 
+name .b7 big 0 0
+eacom: 
+* string 10 1
+  * ref Sys->Dir 10 1
+    indx big 10 1
+      name d array of ref Sys->Dir 0 0
+      - int 10 1
+        name i int 0 0
+        const (1) int 6 0
+ecom: 
+* ref Sys->Dir 10 1
+  indx big 10 1
+    name d array of ref Sys->Dir 0 0
+    - int 10 1
+      name i int 0 0
+      const (1) int 6 0
+ecom to: 
+name .t8 ref Sys->Dir 0 0
+eacom: 
+* ref Sys->Dir 10 1
+  indx big 10 1
+    name d array of ref Sys->Dir 0 0
+    - int 10 1
+      name i int 0 0
+      const (1) int 6 0
+generate desc for big
+ecom: 
+indx big 10 1
+  name d array of ref Sys->Dir 0 0
+  - int 10 1
+    name i int 0 0
+    const (1) int 6 0
+ecom to: 
+name .b7 big 0 0
+eacom: 
+- int 10 1
+  name i int 0 0
+  const (1) int 6 0
+ecom: 
+- int 10 1
+  name i int 0 0
+  const (1) int 6 0
+ecom to: 
+name .t9 int 0 0
+ecom: 
+= ref Sys->Dir 10 1
+  name .t8 ref Sys->Dir 0 0
+  name nil ref Sys->Dir 1 0
+ecom: 
+name nil ref Sys->Dir 1 0
+ecom to: 
+name .t8 ref Sys->Dir 0 0
+ecom: 
+= string 10 1
+  name .t6 string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name .t6 string 0 0
+ecom: 
+= array of ref Sys->Dir 10 2
+  slice array of ref Sys->Dir 10 2
+    name d array of ref Sys->Dir 0 0
+    seq no type 10 2
+      - int 10 1
+        name i int 0 0
+        const (1) int 6 0
+      nothing no type 10 1
+  slice array of ref Sys->Dir 10 1
+    name d array of ref Sys->Dir 0 0
+    seq no type 10 1
+      name i int 0 0
+      nothing no type 10 1
+ecom: 
+- int 10 1
+  name i int 0 0
+  const (1) int 6 0
+ecom to: 
+name .t9 int 0 0
+eacom: 
+slice array of ref Sys->Dir 10 1
+  name d array of ref Sys->Dir 0 0
+  seq no type 10 1
+    name i int 0 0
+    nothing no type 10 1
+ecom: 
+slice array of ref Sys->Dir 10 1
+  name d array of ref Sys->Dir 0 0
+  seq no type 10 1
+    name i int 0 0
+    nothing no type 10 1
+ecom to: 
+name .t8 array of ref Sys->Dir 0 0
+ecom: 
+len int 10 1
+  name d array of ref Sys->Dir 0 0
+ecom to: 
+name .t10 int 0 0
+ecom: 
+name d array of ref Sys->Dir 0 0
+ecom to: 
+name .t8 array of ref Sys->Dir 0 0
+ecom: 
+= array of ref Sys->Dir 10 1
+  name .t8 array of ref Sys->Dir 0 0
+  name nil array of ref Sys->Dir 1 0
+ecom: 
+name nil array of ref Sys->Dir 1 0
+ecom to: 
+name .t8 array of ref Sys->Dir 0 0
+ecom: 
+-- int 10 1
+  name n int 0 0
+  const (1) int 6 0
+ecom: 
+-- int 10 1
+  name i int 0 0
+  const (1) int 6 0
+ecom: 
+++ int 10 1
+  name i int 0 0
+  const (1) int 6 0
+ecom: 
+= int 10 1
+  name i int 0 0
+  const (0) int 6 0
+ecom: 
+const (0) int 6 0
+ecom to: 
+name i int 0 0
+eacom: 
+call int 10 2
+  name match fn(pat: string, name: string): int 11 1
+  seq no type 10 1
+    name pat string 0 0
+    seq no type 10 1
+      * string 10 1
+        * ref Sys->Dir 10 1
+          indx big 10 1
+            name d array of ref Sys->Dir 0 0
+            name i int 0 0
+ecom: 
+call int 10 2
+  name match fn(pat: string, name: string): int 11 1
+  seq no type 10 1
+    name pat string 0 0
+    seq no type 10 1
+      * string 10 1
+        * ref Sys->Dir 10 1
+          indx big 10 1
+            name d array of ref Sys->Dir 0 0
+            name i int 0 0
+ecom to: 
+name .t10 int 0 0
+generate desc for big
+ecom: 
+name pat string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b7 big 0 0
+    const (64) int 6 0
+ecom: 
+* string 10 1
+  * ref Sys->Dir 10 1
+    indx big 10 1
+      name d array of ref Sys->Dir 0 0
+      name i int 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b7 big 0 0
+    const (72) int 6 0
+eacom: 
+* string 10 1
+  * ref Sys->Dir 10 1
+    indx big 10 1
+      name d array of ref Sys->Dir 0 0
+      name i int 0 0
+ecom: 
+* ref Sys->Dir 10 1
+  indx big 10 1
+    name d array of ref Sys->Dir 0 0
+    name i int 0 0
+ecom to: 
+name .t8 ref Sys->Dir 0 0
+eacom: 
+* ref Sys->Dir 10 1
+  indx big 10 1
+    name d array of ref Sys->Dir 0 0
+    name i int 0 0
+generate desc for big
+ecom: 
+indx big 10 1
+  name d array of ref Sys->Dir 0 0
+  name i int 0 0
+ecom to: 
+name .b11 big 0 0
+ecom: 
+= ref Sys->Dir 10 1
+  name .t8 ref Sys->Dir 0 0
+  name nil ref Sys->Dir 1 0
+ecom: 
+name nil ref Sys->Dir 1 0
+ecom to: 
+name .t8 ref Sys->Dir 0 0
+eacom: 
+& int 10 1
+  * int 10 1
+    + int 10 1
+      * ref Sys->Dir 10 1
+        indx big 10 1
+          name d array of ref Sys->Dir 0 0
+          name i int 0 0
+      const mode (48) int 6 0
+  const .i.80000000 (-2147483648) int 1 0
+ecom: 
+& int 10 1
+  * int 10 1
+    + int 10 1
+      * ref Sys->Dir 10 1
+        indx big 10 1
+          name d array of ref Sys->Dir 0 0
+          name i int 0 0
+      const mode (48) int 6 0
+  const .i.80000000 (-2147483648) int 1 0
+ecom to: 
+name .t10 int 0 0
+eacom: 
+* int 10 1
+  + int 10 1
+    * ref Sys->Dir 10 1
+      indx big 10 1
+        name d array of ref Sys->Dir 0 0
+        name i int 0 0
+    const mode (48) int 6 0
+ecom: 
+* ref Sys->Dir 10 1
+  indx big 10 1
+    name d array of ref Sys->Dir 0 0
+    name i int 0 0
+ecom to: 
+name .t8 ref Sys->Dir 0 0
+eacom: 
+* ref Sys->Dir 10 1
+  indx big 10 1
+    name d array of ref Sys->Dir 0 0
+    name i int 0 0
+generate desc for big
+ecom: 
+indx big 10 1
+  name d array of ref Sys->Dir 0 0
+  name i int 0 0
+ecom to: 
+name .b11 big 0 0
+ecom: 
+= ref Sys->Dir 10 1
+  name .t8 ref Sys->Dir 0 0
+  name nil ref Sys->Dir 1 0
+ecom: 
+name nil ref Sys->Dir 1 0
+ecom to: 
+name .t8 ref Sys->Dir 0 0
+ecom: 
+= list of string 10 1
+  name files list of string 0 0
+  :: list of string 10 1
+    + string 10 1
+      name dir string 0 0
+      * string 10 1
+        * ref Sys->Dir 10 1
+          indx big 10 1
+            name d array of ref Sys->Dir 0 0
+            name i int 0 0
+    name files list of string 0 0
+ecom: 
+:: list of string 10 1
+  + string 10 1
+    name dir string 0 0
+    * string 10 1
+      * ref Sys->Dir 10 1
+        indx big 10 1
+          name d array of ref Sys->Dir 0 0
+          name i int 0 0
+  name files list of string 0 0
+ecom to: 
+name files list of string 0 0
+eacom: 
++ string 10 1
+  name dir string 0 0
+  * string 10 1
+    * ref Sys->Dir 10 1
+      indx big 10 1
+        name d array of ref Sys->Dir 0 0
+        name i int 0 0
+ecom: 
++ string 10 1
+  name dir string 0 0
+  * string 10 1
+    * ref Sys->Dir 10 1
+      indx big 10 1
+        name d array of ref Sys->Dir 0 0
+        name i int 0 0
+ecom to: 
+name .t8 string 0 0
+eacom: 
+* string 10 1
+  * ref Sys->Dir 10 1
+    indx big 10 1
+      name d array of ref Sys->Dir 0 0
+      name i int 0 0
+ecom: 
+* ref Sys->Dir 10 1
+  indx big 10 1
+    name d array of ref Sys->Dir 0 0
+    name i int 0 0
+ecom to: 
+name .t8 ref Sys->Dir 0 0
+eacom: 
+* ref Sys->Dir 10 1
+  indx big 10 1
+    name d array of ref Sys->Dir 0 0
+    name i int 0 0
+generate desc for big
+ecom: 
+indx big 10 1
+  name d array of ref Sys->Dir 0 0
+  name i int 0 0
+ecom to: 
+name .b11 big 0 0
+ecom: 
+= string 10 1
+  name .t8 string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name .t8 string 0 0
+ecom: 
+= list of string 10 2
+  name files list of string 0 0
+  :: list of string 10 2
+    + string 10 2
+      + string 10 1
+        name dir string 0 0
+        const / string 1 0
+      * string 10 1
+        * ref Sys->Dir 10 1
+          indx big 10 1
+            name d array of ref Sys->Dir 0 0
+            name i int 0 0
+    name files list of string 0 0
+ecom: 
+:: list of string 10 2
+  + string 10 2
+    + string 10 1
+      name dir string 0 0
+      const / string 1 0
+    * string 10 1
+      * ref Sys->Dir 10 1
+        indx big 10 1
+          name d array of ref Sys->Dir 0 0
+          name i int 0 0
+  name files list of string 0 0
+ecom to: 
+name files list of string 0 0
+eacom: 
++ string 10 2
+  + string 10 1
+    name dir string 0 0
+    const / string 1 0
+  * string 10 1
+    * ref Sys->Dir 10 1
+      indx big 10 1
+        name d array of ref Sys->Dir 0 0
+        name i int 0 0
+ecom: 
++ string 10 2
+  + string 10 1
+    name dir string 0 0
+    const / string 1 0
+  * string 10 1
+    * ref Sys->Dir 10 1
+      indx big 10 1
+        name d array of ref Sys->Dir 0 0
+        name i int 0 0
+ecom to: 
+name .t8 string 0 0
+ecom: 
++ string 10 1
+  name dir string 0 0
+  const / string 1 0
+ecom to: 
+name .t8 string 0 0
+eacom: 
+* string 10 1
+  * ref Sys->Dir 10 1
+    indx big 10 1
+      name d array of ref Sys->Dir 0 0
+      name i int 0 0
+ecom: 
+* ref Sys->Dir 10 1
+  indx big 10 1
+    name d array of ref Sys->Dir 0 0
+    name i int 0 0
+ecom to: 
+name .t6 ref Sys->Dir 0 0
+eacom: 
+* ref Sys->Dir 10 1
+  indx big 10 1
+    name d array of ref Sys->Dir 0 0
+    name i int 0 0
+generate desc for big
+ecom: 
+indx big 10 1
+  name d array of ref Sys->Dir 0 0
+  name i int 0 0
+ecom to: 
+name .b11 big 0 0
+ecom: 
+= ref Sys->Dir 10 1
+  name .t6 ref Sys->Dir 0 0
+  name nil ref Sys->Dir 1 0
+ecom: 
+name nil ref Sys->Dir 1 0
+ecom to: 
+name .t6 ref Sys->Dir 0 0
+ecom: 
+= string 10 1
+  name .t8 string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name .t8 string 0 0
+ecom: 
+++ int 10 1
+  name i int 0 0
+  const (1) int 6 0
+ecom: 
+name files list of string 0 0
+ecom to: 
+* list of string 8 0
+  name .ret int 0 0
+fn: filepatdir
+64: argument pat string ref 5
+72: argument dir string ref 10
+80: argument files list of string ref 11
+88: argument mustbedir int ref 1
+92: local i int ref 15
+96: local .t10 int ref 1
+100: local .t9 int ref 1
+104: local d array of ref Sys->Dir ref 10
+112: local n int ref 4
+120: local .b11 big ref 4
+128: local .b7 big ref 4
+136: local dirname string ref 3
+144: local .t6 string ref 1
+152: local .t8 ref Sys->Dir ref 1
+generate desc for filepatdir
+descmap offset 0
+descmap pat type string offset 64 (d->offset=64 start=0) returns 64
+descmap dir type string offset 72 (d->offset=72 start=0) returns 72
+descmap files type list of string offset 80 (d->offset=80 start=0) returns 80
+descmap mustbedir type int offset 88 (d->offset=88 start=0) returns -1
+descmap i type int offset 92 (d->offset=92 start=0) returns -1
+descmap .t10 type int offset 96 (d->offset=96 start=0) returns -1
+descmap .t9 type int offset 100 (d->offset=100 start=0) returns -1
+descmap d type array of ref Sys->Dir offset 104 (d->offset=104 start=0) returns 104
+descmap n type int offset 112 (d->offset=112 start=0) returns -1
+descmap .b11 type big offset 120 (d->offset=120 start=0) returns -1
+descmap .b7 type big offset 128 (d->offset=128 start=0) returns -1
+descmap dirname type string offset 136 (d->offset=136 start=0) returns 136
+descmap .t6 type string offset 144 (d->offset=144 start=0) returns 144
+descmap .t8 type ref Sys->Dir offset 152 (d->offset=152 start=0) returns 152
+fncom: match 4 44b4b8
+ecom: 
+= int 10 1
+  name n int 0 0
+  const (0) int 6 0
+ecom: 
+const (0) int 6 0
+ecom to: 
+name n int 0 0
+ecom: 
+= int 10 1
+  name p int 0 0
+  const (0) int 6 0
+ecom: 
+const (0) int 6 0
+ecom to: 
+name p int 0 0
+eacom: 
+len int 10 1
+  name pat string 0 0
+ecom: 
+len int 10 1
+  name pat string 0 0
+ecom to: 
+name .t12 int 0 0
+ecom: 
+= int 10 1
+  name r int 0 0
+  inds int 10 1
+    name pat string 0 0
+    ++ int 10 1
+      name p int 0 0
+      const (1) int 6 0
+ecom: 
+inds int 10 1
+  name pat string 0 0
+  ++ int 10 1
+    name p int 0 0
+    const (1) int 6 0
+ecom to: 
+name r int 0 0
+ecom: 
+++ int 10 1
+  name p int 0 0
+  const (1) int 6 0
+ecom to: 
+name .t12 int 0 0
+ecom: 
+= string 10 1
+  name pat string 0 0
+  slice string 10 1
+    name pat string 0 0
+    seq no type 10 1
+      name p int 0 0
+      nothing no type 10 1
+ecom: 
+slice string 10 1
+  name pat string 0 0
+  seq no type 10 1
+    name p int 0 0
+    nothing no type 10 1
+ecom to: 
+name pat string 0 0
+ecom: 
+len int 10 1
+  name pat string 0 0
+ecom to: 
+name .t12 int 0 0
+eacom: 
+len int 10 1
+  name pat string 0 0
+ecom: 
+len int 10 1
+  name pat string 0 0
+ecom to: 
+name .t12 int 0 0
+ecom: 
+const (1) int 6 0
+ecom to: 
+* int 8 0
+  name .ret int 0 0
+eacom: 
+len int 10 1
+  name name string 0 0
+ecom: 
+len int 10 1
+  name name string 0 0
+ecom to: 
+name .t12 int 0 0
+eacom: 
+call int 10 2
+  name match fn(pat: string, name: string): int 11 1
+  seq no type 10 1
+    name pat string 0 0
+    seq no type 10 1
+      slice string 10 1
+        name name string 0 0
+        seq no type 10 1
+          name n int 0 0
+          nothing no type 10 1
+ecom: 
+call int 10 2
+  name match fn(pat: string, name: string): int 11 1
+  seq no type 10 1
+    name pat string 0 0
+    seq no type 10 1
+      slice string 10 1
+        name name string 0 0
+        seq no type 10 1
+          name n int 0 0
+          nothing no type 10 1
+ecom to: 
+name .t12 int 0 0
+generate desc for big
+ecom: 
+name pat string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b13 big 0 0
+    const (64) int 6 0
+ecom: 
+slice string 10 1
+  name name string 0 0
+  seq no type 10 1
+    name n int 0 0
+    nothing no type 10 1
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b13 big 0 0
+    const (72) int 6 0
+ecom: 
+len int 10 1
+  name name string 0 0
+ecom to: 
+name .t14 int 0 0
+ecom: 
+name name string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b13 big 0 0
+    const (72) int 6 0
+ecom: 
+const (1) int 6 0
+ecom to: 
+* int 8 0
+  name .ret int 0 0
+ecom: 
+++ int 10 1
+  name n int 0 0
+  const (1) int 6 0
+ecom: 
+const (0) int 6 0
+ecom to: 
+* int 8 0
+  name .ret int 0 0
+eacom: 
+len int 10 1
+  name name string 0 0
+ecom: 
+len int 10 1
+  name name string 0 0
+ecom to: 
+name .t14 int 0 0
+ecom: 
+const (0) int 6 0
+ecom to: 
+* int 8 0
+  name .ret int 0 0
+ecom: 
+= int 10 1
+  name s int 0 0
+  inds int 10 1
+    name name string 0 0
+    ++ int 10 1
+      name n int 0 0
+      const (1) int 6 0
+ecom: 
+inds int 10 1
+  name name string 0 0
+  ++ int 10 1
+    name n int 0 0
+    const (1) int 6 0
+ecom to: 
+name s int 0 0
+ecom: 
+++ int 10 1
+  name n int 0 0
+  const (1) int 6 0
+ecom to: 
+name .t14 int 0 0
+ecom: 
+= int 10 1
+  name matched int 0 0
+  const (0) int 6 0
+ecom: 
+const (0) int 6 0
+ecom to: 
+name matched int 0 0
+ecom: 
+= int 10 1
+  name invert int 0 0
+  const (0) int 6 0
+ecom: 
+const (0) int 6 0
+ecom to: 
+name invert int 0 0
+ecom: 
+= int 10 1
+  name first int 0 0
+  const (1) int 6 0
+ecom: 
+const (1) int 6 0
+ecom to: 
+name first int 0 0
+eacom: 
+len int 10 1
+  name pat string 0 0
+ecom: 
+len int 10 1
+  name pat string 0 0
+ecom to: 
+name .t14 int 0 0
+ecom: 
+= (int, int, int) 10 2
+  tuple (int, int, int) 10 1
+    seq no type 10 1
+      name p int 0 0
+      seq no type 10 1
+        name r int 0 0
+        seq no type 10 1
+          name esc int 0 0
+  call (int, int, int) 10 2
+    name char fn(pat: string, p: int): (int, int, int) 11 1
+    seq no type 10 1
+      name pat string 0 0
+      seq no type 10 1
+        name p int 0 0
+generate desc for (int, int, int)
+descmap adt offset 0
+descmap offset 0
+descmap t0 type int offset 0 (d->offset=0 start=0) returns -1
+descmap t1 type int offset 4 (d->offset=4 start=0) returns -1
+descmap t2 type int offset 8 (d->offset=8 start=0) returns -1
+generate desc for (int, int, int)
+	desc	$-1,12,""
+ecom: 
+call (int, int, int) 10 2
+  name char fn(pat: string, p: int): (int, int, int) 11 1
+  seq no type 10 1
+    name pat string 0 0
+    seq no type 10 1
+      name p int 0 0
+ecom to: 
+name .b15 (int, int, int) 0 0
+generate desc for big
+ecom: 
+name pat string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b13 big 0 0
+    const (64) int 6 0
+ecom: 
+name p int 0 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b13 big 0 0
+    const (72) int 6 0
+ecom: 
+= int 10 1
+  name invert int 0 0
+  const (1) int 6 0
+ecom: 
+const (1) int 6 0
+ecom to: 
+name invert int 0 0
+ecom: 
+= int 10 1
+  name first int 0 0
+  const (0) int 6 0
+ecom: 
+const (0) int 6 0
+ecom to: 
+name first int 0 0
+ecom: 
+= int 10 1
+  name first int 0 0
+  const (0) int 6 0
+ecom: 
+const (0) int 6 0
+ecom to: 
+name first int 0 0
+ecom: 
+= (int, int, int) 10 2
+  tuple (int, int, int) 10 1
+    seq no type 10 1
+      name p int 0 0
+      seq no type 10 1
+        name lo int 0 0
+        seq no type 10 1
+          name hi int 0 0
+  call (int, int, int) 10 2
+    name range fn(pat: string, p: int): (int, int, int) 11 1
+    seq no type 10 1
+      name pat string 0 0
+      seq no type 10 1
+        - int 10 1
+          name p int 0 0
+          const (1) int 6 0
+generate desc for (int, int, int)
+descmap adt offset 0
+descmap offset 0
+descmap t0 type int offset 0 (d->offset=0 start=0) returns -1
+descmap t1 type int offset 4 (d->offset=4 start=0) returns -1
+descmap t2 type int offset 8 (d->offset=8 start=0) returns -1
+generate desc for (int, int, int)
+	desc	$-1,12,""
+ecom: 
+call (int, int, int) 10 2
+  name range fn(pat: string, p: int): (int, int, int) 11 1
+  seq no type 10 1
+    name pat string 0 0
+    seq no type 10 1
+      - int 10 1
+        name p int 0 0
+        const (1) int 6 0
+ecom to: 
+name .b15 (int, int, int) 0 0
+generate desc for big
+ecom: 
+name pat string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b13 big 0 0
+    const (64) int 6 0
+ecom: 
+- int 10 1
+  name p int 0 0
+  const (1) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b13 big 0 0
+    const (72) int 6 0
+ecom: 
+= int 10 1
+  name matched int 0 0
+  const (1) int 6 0
+ecom: 
+const (1) int 6 0
+ecom to: 
+name matched int 0 0
+ecom: 
+const (0) int 6 0
+ecom to: 
+* int 8 0
+  name .ret int 0 0
+eacom: 
+len int 10 1
+  name name string 0 0
+ecom: 
+len int 10 1
+  name name string 0 0
+ecom to: 
+name .t14 int 0 0
+ecom: 
+const (0) int 6 0
+ecom to: 
+* int 8 0
+  name .ret int 0 0
+ecom: 
+++ int 10 1
+  name n int 0 0
+  const (1) int 6 0
+eacom: 
+len int 10 1
+  name name string 0 0
+ecom: 
+len int 10 1
+  name name string 0 0
+ecom to: 
+name .t14 int 0 0
+eacom: 
+len int 10 1
+  name pat string 0 0
+ecom: 
+len int 10 1
+  name pat string 0 0
+ecom to: 
+name .t14 int 0 0
+ecom: 
+inds int 10 1
+  name name string 0 0
+  ++ int 10 1
+    name n int 0 0
+    const (1) int 6 0
+ecom to: 
+name .t14 int 0 0
+ecom: 
+++ int 10 1
+  name n int 0 0
+  const (1) int 6 0
+ecom to: 
+name .t12 int 0 0
+eacom: 
+inds int 10 1
+  name pat string 0 0
+  ++ int 10 1
+    name p int 0 0
+    const (1) int 6 0
+ecom: 
+inds int 10 1
+  name pat string 0 0
+  ++ int 10 1
+    name p int 0 0
+    const (1) int 6 0
+ecom to: 
+name .t12 int 0 0
+ecom: 
+++ int 10 1
+  name p int 0 0
+  const (1) int 6 0
+ecom to: 
+name .t16 int 0 0
+ecom: 
+const (0) int 6 0
+ecom to: 
+* int 8 0
+  name .ret int 0 0
+eacom: 
+len int 10 1
+  name name string 0 0
+ecom: 
+len int 10 1
+  name name string 0 0
+ecom to: 
+name .t16 int 0 0
+eacom: 
+inds int 10 1
+  name name string 0 0
+  ++ int 10 1
+    name n int 0 0
+    const (1) int 6 0
+ecom: 
+inds int 10 1
+  name name string 0 0
+  ++ int 10 1
+    name n int 0 0
+    const (1) int 6 0
+ecom to: 
+name .t16 int 0 0
+ecom: 
+++ int 10 1
+  name n int 0 0
+  const (1) int 6 0
+ecom to: 
+name .t14 int 0 0
+ecom: 
+const (0) int 6 0
+ecom to: 
+* int 8 0
+  name .ret int 0 0
+ecom: 
+== int 10 1
+  name n int 0 0
+  len int 10 1
+    name name string 0 0
+ecom to: 
+* int 8 0
+  name .ret int 0 0
+eacom: 
+len int 10 1
+  name name string 0 0
+ecom: 
+len int 10 1
+  name name string 0 0
+ecom to: 
+name .t16 int 0 0
+fn: match
+64: argument pat string ref 11
+72: argument name string ref 10
+80: local n int ref 13
+84: local p int ref 11
+88: local r int ref 7
+92: local esc int ref 4
+96: local first int ref 4
+100: local invert int ref 3
+104: local matched int ref 3
+108: local s int ref 3
+112: local hi int ref 2
+116: local lo int ref 2
+120: local .t12 int ref 1
+124: local .t14 int ref 1
+128: local .t16 int ref 1
+136: local .b13 big ref 3
+144: local .b15 (int, int, int) ref 2
+generate desc for match
+descmap offset 0
+descmap pat type string offset 64 (d->offset=64 start=0) returns 64
+descmap name type string offset 72 (d->offset=72 start=0) returns 72
+descmap n type int offset 80 (d->offset=80 start=0) returns -1
+descmap p type int offset 84 (d->offset=84 start=0) returns -1
+descmap r type int offset 88 (d->offset=88 start=0) returns -1
+descmap esc type int offset 92 (d->offset=92 start=0) returns -1
+descmap first type int offset 96 (d->offset=96 start=0) returns -1
+descmap invert type int offset 100 (d->offset=100 start=0) returns -1
+descmap matched type int offset 104 (d->offset=104 start=0) returns -1
+descmap s type int offset 108 (d->offset=108 start=0) returns -1
+descmap hi type int offset 112 (d->offset=112 start=0) returns -1
+descmap lo type int offset 116 (d->offset=116 start=0) returns -1
+descmap .t12 type int offset 120 (d->offset=120 start=0) returns -1
+descmap .t14 type int offset 124 (d->offset=124 start=0) returns -1
+descmap .t16 type int offset 128 (d->offset=128 start=0) returns -1
+descmap .b13 type big offset 136 (d->offset=136 start=0) returns -1
+descmap adt offset 144
+descmap offset 144
+descmap t0 type int offset 144 (d->offset=0 start=144) returns -1
+descmap t1 type int offset 148 (d->offset=4 start=144) returns -1
+descmap t2 type int offset 152 (d->offset=8 start=144) returns -1
+descmap .b15 type (int, int, int) offset 144 (d->offset=144 start=0) returns -1
+fncom: range 2 4643d8
+ecom: 
+= (int, int, int) 10 2
+  tuple (int, int, int) 10 1
+    seq nothing 10 1
+      name q int 0 0
+      seq nothing 10 1
+        name lo int 0 0
+        seq nothing 10 1
+          name nil polymorphic type 1 0
+  call (int, int, int) 10 2
+    name char fn(pat: string, p: int): (int, int, int) 11 1
+    seq no type 10 1
+      name pat string 0 0
+      seq no type 10 1
+        name p int 0 0
+generate desc for (int, int, int)
+ecom: 
+call (int, int, int) 10 2
+  name char fn(pat: string, p: int): (int, int, int) 11 1
+  seq no type 10 1
+    name pat string 0 0
+    seq no type 10 1
+      name p int 0 0
+ecom to: 
+name .b17 (int, int, int) 0 0
+generate desc for big
+ecom: 
+name pat string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b18 big 0 0
+    const (64) int 6 0
+ecom: 
+name p int 0 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b18 big 0 0
+    const (72) int 6 0
+ecom: 
+= (int, int, int) 10 2
+  tuple (int, int, int) 10 1
+    seq nothing 10 1
+      name q1 int 0 0
+      seq nothing 10 1
+        name hi int 0 0
+        seq nothing 10 1
+          name esc int 0 0
+  call (int, int, int) 10 2
+    name char fn(pat: string, p: int): (int, int, int) 11 1
+    seq no type 10 1
+      name pat string 0 0
+      seq no type 10 1
+        name q int 0 0
+ecom: 
+call (int, int, int) 10 2
+  name char fn(pat: string, p: int): (int, int, int) 11 1
+  seq no type 10 1
+    name pat string 0 0
+    seq no type 10 1
+      name q int 0 0
+ecom to: 
+name q1 (int, int, int) 0 0
+generate desc for big
+ecom: 
+name pat string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b18 big 0 0
+    const (64) int 6 0
+ecom: 
+name q int 0 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b18 big 0 0
+    const (72) int 6 0
+ecom: 
+= (int, int, int) 10 2
+  tuple (int, int, int) 10 1
+    seq no type 10 1
+      name q1 int 0 0
+      seq no type 10 1
+        name hi int 0 0
+        seq no type 10 1
+          name nil polymorphic type 1 0
+  call (int, int, int) 10 2
+    name char fn(pat: string, p: int): (int, int, int) 11 1
+    seq no type 10 1
+      name pat string 0 0
+      seq no type 10 1
+        name q1 int 0 0
+generate desc for (int, int, int)
+ecom: 
+call (int, int, int) 10 2
+  name char fn(pat: string, p: int): (int, int, int) 11 1
+  seq no type 10 1
+    name pat string 0 0
+    seq no type 10 1
+      name q1 int 0 0
+ecom to: 
+name .b17 (int, int, int) 0 0
+generate desc for big
+ecom: 
+name pat string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b18 big 0 0
+    const (64) int 6 0
+ecom: 
+name q1 int 0 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b18 big 0 0
+    const (72) int 6 0
+ecom: 
+tuple (int, int, int) 10 1
+  seq no type 10 1
+    name q1 int 0 0
+    seq no type 10 1
+      name lo int 0 0
+      seq no type 10 1
+        name hi int 0 0
+ecom to: 
+* (int, int, int) 8 0
+  name .ret int 0 0
+ecom: 
+name q1 int 0 0
+ecom to: 
+* int 8 0
+  + int 15 1
+    adr int 15 1
+      * (int, int, int) 8 0
+        name .ret int 0 0
+    const (0) int 6 0
+ecom: 
+name lo int 0 0
+ecom to: 
+* int 8 0
+  + int 15 1
+    adr int 15 1
+      * (int, int, int) 8 0
+        name .ret int 0 0
+    const (4) int 6 0
+ecom: 
+name hi int 0 0
+ecom to: 
+* int 8 0
+  + int 15 1
+    adr int 15 1
+      * (int, int, int) 8 0
+        name .ret int 0 0
+    const (8) int 6 0
+ecom: 
+tuple (int, int, int) 10 1
+  seq no type 10 1
+    name q int 0 0
+    seq no type 10 1
+      name lo int 0 0
+      seq no type 10 1
+        name lo int 0 0
+ecom to: 
+* (int, int, int) 8 0
+  name .ret int 0 0
+ecom: 
+name q int 0 0
+ecom to: 
+* int 8 0
+  + int 15 1
+    adr int 15 1
+      * (int, int, int) 8 0
+        name .ret int 0 0
+    const (0) int 6 0
+ecom: 
+name lo int 0 0
+ecom to: 
+* int 8 0
+  + int 15 1
+    adr int 15 1
+      * (int, int, int) 8 0
+        name .ret int 0 0
+    const (4) int 6 0
+ecom: 
+name lo int 0 0
+ecom to: 
+* int 8 0
+  + int 15 1
+    adr int 15 1
+      * (int, int, int) 8 0
+        name .ret int 0 0
+    const (8) int 6 0
+fn: range
+64: argument pat string ref 3
+72: argument p int ref 1
+76: local lo int ref 4
+80: local q1 int ref 4
+84: local hi int ref 4
+88: local esc int ref 2
+92: local q int ref 3
+96: local .b18 big ref 3
+104: local .b17 (int, int, int) ref 2
+generate desc for range
+descmap offset 0
+descmap pat type string offset 64 (d->offset=64 start=0) returns 64
+descmap p type int offset 72 (d->offset=72 start=0) returns -1
+descmap lo type int offset 76 (d->offset=76 start=0) returns -1
+descmap q1 type int offset 80 (d->offset=80 start=0) returns -1
+descmap hi type int offset 84 (d->offset=84 start=0) returns -1
+descmap esc type int offset 88 (d->offset=88 start=0) returns -1
+descmap q type int offset 92 (d->offset=92 start=0) returns -1
+descmap .b18 type big offset 96 (d->offset=96 start=0) returns -1
+descmap adt offset 104
+descmap offset 104
+descmap t0 type int offset 104 (d->offset=0 start=104) returns -1
+descmap t1 type int offset 108 (d->offset=4 start=104) returns -1
+descmap t2 type int offset 112 (d->offset=8 start=104) returns -1
+descmap .b17 type (int, int, int) offset 104 (d->offset=104 start=0) returns -1
+fncom: char 5 464498
+eacom: 
+len int 10 1
+  name pat string 0 0
+ecom: 
+len int 10 1
+  name pat string 0 0
+ecom to: 
+name .t19 int 0 0
+ecom: 
+tuple (int, int, int) 10 1
+  seq no type 10 1
+    name p int 0 0
+    seq no type 10 1
+      const (0) int 6 0
+      seq no type 10 1
+        const (-1) int 6 0
+ecom to: 
+* (int, int, int) 8 0
+  name .ret int 0 0
+ecom: 
+name p int 0 0
+ecom to: 
+* int 8 0
+  + int 15 1
+    adr int 15 1
+      * (int, int, int) 8 0
+        name .ret int 0 0
+    const (0) int 6 0
+ecom: 
+const (0) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 1
+    adr int 15 1
+      * (int, int, int) 8 0
+        name .ret int 0 0
+    const (4) int 6 0
+ecom: 
+const (-1) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 1
+    adr int 15 1
+      * (int, int, int) 8 0
+        name .ret int 0 0
+    const (8) int 6 0
+ecom: 
+= int 10 1
+  name r int 0 0
+  inds int 10 1
+    name pat string 0 0
+    ++ int 10 1
+      name p int 0 0
+      const (1) int 6 0
+ecom: 
+inds int 10 1
+  name pat string 0 0
+  ++ int 10 1
+    name p int 0 0
+    const (1) int 6 0
+ecom to: 
+name r int 0 0
+ecom: 
+++ int 10 1
+  name p int 0 0
+  const (1) int 6 0
+ecom to: 
+name .t19 int 0 0
+eacom: 
+len int 10 1
+  name pat string 0 0
+ecom: 
+len int 10 1
+  name pat string 0 0
+ecom to: 
+name .t19 int 0 0
+ecom: 
+tuple (int, int, int) 10 1
+  seq no type 10 1
+    name p int 0 0
+    seq no type 10 1
+      name r int 0 0
+      seq no type 10 1
+        const (0) int 6 0
+ecom to: 
+* (int, int, int) 8 0
+  name .ret int 0 0
+ecom: 
+name p int 0 0
+ecom to: 
+* int 8 0
+  + int 15 1
+    adr int 15 1
+      * (int, int, int) 8 0
+        name .ret int 0 0
+    const (0) int 6 0
+ecom: 
+name r int 0 0
+ecom to: 
+* int 8 0
+  + int 15 1
+    adr int 15 1
+      * (int, int, int) 8 0
+        name .ret int 0 0
+    const (4) int 6 0
+ecom: 
+const (0) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 1
+    adr int 15 1
+      * (int, int, int) 8 0
+        name .ret int 0 0
+    const (8) int 6 0
+ecom: 
+tuple (int, int, int) 10 2
+  seq no type 10 2
+    + int 15 1
+      name p int 0 0
+      const (1) int 6 0
+    seq no type 10 2
+      inds int 10 1
+        name pat string 0 0
+        name p int 0 0
+      seq no type 10 1
+        const (1) int 6 0
+ecom to: 
+* (int, int, int) 8 0
+  name .ret int 0 0
+ecom: 
++ int 15 1
+  name p int 0 0
+  const (1) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 1
+    adr int 15 1
+      * (int, int, int) 8 0
+        name .ret int 0 0
+    const (0) int 6 0
+ecom: 
+inds int 10 1
+  name pat string 0 0
+  name p int 0 0
+ecom to: 
+* int 8 0
+  + int 15 1
+    adr int 15 1
+      * (int, int, int) 8 0
+        name .ret int 0 0
+    const (4) int 6 0
+ecom: 
+const (1) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 1
+    adr int 15 1
+      * (int, int, int) 8 0
+        name .ret int 0 0
+    const (8) int 6 0
+fn: char
+64: argument pat string ref 4
+72: argument p int ref 7
+76: local r int ref 3
+80: local .t19 int ref 1
+generate desc for char
+descmap offset 0
+descmap pat type string offset 64 (d->offset=64 start=0) returns 64
+descmap p type int offset 72 (d->offset=72 start=0) returns -1
+descmap r type int offset 76 (d->offset=76 start=0) returns -1
+descmap .t19 type int offset 80 (d->offset=80 start=0) returns -1
+nil 'nil' ref 39
+nil '' ref 4
+variable '$Sys' val '"$Sys"'
+variable '.' val '"."'
+variable '..' val '".."'
+variable '.c0' val '.c0'
+variable '.i.80000000' val '.i.80000000'
+variable '.m.Readdir' val ''
+variable '.m.Sys' val ''
+variable '/' val '"/"'
+variable '/dis/lib/readdir.dis' val '"/dis/lib/r..."'
+variable 'nil' val ''
+variable 'rdir' val ''
+variable 'sys' val ''
+nil 'nil' ref 39
+nil '' ref 4
+generate desc for Filepat
+descmap offset 0
+descmap $Sys type string offset 0 (d->offset=0 start=0) returns 0
+descmap . type string offset 8 (d->offset=8 start=0) returns 8
+descmap .. type string offset 16 (d->offset=16 start=0) returns 16
+descmap .c0 type case int labels offset 24 (d->offset=24 start=0) returns -1
+descmap .i.80000000 type int offset 80 (d->offset=80 start=0) returns -1
+descmap / type string offset 88 (d->offset=88 start=0) returns 88
+descmap /dis/lib/readdir.dis type string offset 96 (d->offset=96 start=0) returns 96
+descmap nil type polymorphic type offset 104 (d->offset=104 start=0) returns 104
+descmap rdir type Readdir offset 112 (d->offset=112 start=0) returns 112
+descmap sys type Sys offset 120 (d->offset=120 start=0) returns 120
+R1: expand 44aeb8 46e488 46e928
+R1: match 44b4b8 46e548 471948
+R3: expand 46e488 44aeb8 46e928
+R3: match 46e548 44b4b8 471948
+313 instructions
+10 data elements
+7 type descriptors
+2 functions exported
+1600 stack size
+signed expand type fn(pat: string): list of string len 6 sig 0xaf4c19dd
+signed match type fn(pat: string, name: string): int len 7 sig 0x21e337e3
+signed Readdir->init type fn(path: string, sortkey: int): (array of ref Sys->Dir, int) len 116 sig 0x156cb1b
+signed Sys->tokenize type fn(s: string, delim: string): (int, list of string) len 13 sig 0x57338f20
--- /dev/null
+++ b/tests/fmttest.c
@@ -1,0 +1,31 @@
+#include "lib9.h"
+
+/*
+	lib9 does not install e, f, and g - so no float or double format
+		inferno-os/lib9/fmt.c
+			knownfmt
+ */
+
+void
+main(int argc, char *argv[])
+{
+	print("fmttest --\n");
+	print("hello world inferno-os\n");
+	print("x: %x\n", 0x87654321);
+	print("d: %d\n", 0x87654321);
+	print("s: %s\n", "hi there");
+	print("c: %c\n", '!');
+	print("smiley: %C\n", (Rune)0x263a);
+
+	print("%020.10d\n", 100);
+	print("%d %d %d\n", 1, 2222, 33333333);
+	print("%019d\n", 0);
+	print("%08d %08d %08d\n", 1, 2222, 33333333);
+	print("%08d %08d %08d\n", 1, 2222, 33333333);
+	print("%x %X %b\n", 0x11111111, 0xabcd1234, 12345);
+	print("%lld %lld %lld\n", 1LL, 222222222LL, 3333333333333LL);
+	print("%019lld %019lld %019lld\n", 1LL, 222222222LL, 3333333333333LL);
+	print("%020lld %020lld %020lld\n", 1LL, 222222222LL, 3333333333333LL);
+	print("%llx %llX %llb\n", 0x111111111111LL, 0xabcd12345678LL, 112342345LL);
+	exits(nil);
+}
--- /dev/null
+++ b/tests/fmttest3.c
@@ -1,0 +1,59 @@
+#include "lib9.h"
+#include "interp.h"
+
+void
+test(char *fmt, ...)
+{
+	va_list arg;
+	char fmtbuf[100], stdbuf[100];
+
+	va_start(arg, fmt);
+	vsnprint(fmtbuf, sizeof fmtbuf, fmt, arg);
+	va_end(arg);
+
+	va_start(arg, fmt);
+	vsnprint(stdbuf, sizeof stdbuf, fmt, arg);
+	va_end(arg);
+
+	if(strcmp(fmtbuf, stdbuf) != 0)
+		print("fmt %s: fmt=\"%s\" std=\"%s\"\n", fmt, fmtbuf, stdbuf);
+
+	print("fmt %s: %s\n", fmt, fmtbuf);
+}
+
+
+int
+main(int argc, char *argv[])
+{
+	fmtinstall('g', gfltconv);
+	fmtinstall('G', gfltconv);
+	fmtinstall('e', gfltconv);
+	/* fmtinstall('E', gfltconv); */	/* avoid clash with ether address */
+	fmtinstall(0x00c9, gfltconv);	/* L'É' */
+	fmtinstall('f', gfltconv);
+
+	print("fmttest3 --\n");
+	test("%f", 3.14159);
+	test("%f", 3.14159e10);
+	test("%f", 3.14159e-10);
+
+	test("%e", 3.14159);
+	test("%e", 3.14159e10);
+	test("%e", 3.14159e-10);
+
+	test("%g", 3.14159);
+	test("%g", 3.14159e10);
+	test("%g", 3.14159e-10);
+
+	test("%g", 2e25);
+	test("%.18g", 2e25);
+
+	test("%2.18g", 1.0);
+	test("%2.18f", 1.0);
+	test("%f", 3.1415927/4);
+
+	test("%20.10d", 12345);
+	test("%0.10d", 12345);
+
+	return 0;
+}
--- /dev/null
+++ b/tests/gfmttest.c
@@ -1,0 +1,33 @@
+#include "lib9.h"
+#include "interp.h"
+
+void
+main(int argc, char *argv[])
+{
+	char *str = "1e400";
+
+	fmtinstall('g', gfltconv);
+	fmtinstall('G', gfltconv);
+	fmtinstall('e', gfltconv);
+	/* fmtinstall('E', gfltconv); */	/* avoid clash with ether address */
+	fmtinstall(0x00c9, gfltconv);	/* L'É' */
+	fmtinstall('f', gfltconv);
+
+	print("gfmttest --\n");
+	print("g: %g %g %g\n", 3.14159, 3.14159e10, 3.14159e-10);
+	print("e: %e %e %e\n", 3.14159, 3.14159e10, 3.14159e-10);
+	print("f: %f %f %f\n", 3.14159, 3.14159e10, 3.14159e-10);
+	print("3.14: %f %g %e\n", 3.14000, 3.14000, 3.14000);
+	print("%g %.18g\n", 2e25, 2e25);
+	print("%2.18g\n", 1.0);
+	print("%2.18f\n", 1.0);
+	print("%f\n", 3.1415927/4);
+	print("%d\n", 23);
+	print("%0.10d\n", 12345);
+
+	print("infinity %g\n", strtod(str,nil)); // infinity
+	print("NaN %g\n", 0./0.); // NaN
+	print("Eps %g\n", 2.2204460492503131e-16); // Eps
+	print("pi %g\n", 3.14159265358979323846); // pi
+	exits(nil);
+}
--- /dev/null
+++ b/tests/list.b
@@ -1,0 +1,21 @@
+implement Sample;
+include "sys.m";
+	sys: Sys;
+
+Sample: module
+{
+	init: fn();
+};
+
+init()
+{
+	sys = load Sys Sys->PATH;
+	a : list of string;
+	b := list of {"yes", "no"};
+
+	a = "soy" :: a;
+	a = "test" :: a;
+	sys->print("should print yes result %s\n", hd b);
+	c := tl a;
+	sys->print("should print 2 no result %d\n", len a);
+}
--- /dev/null
+++ b/tests/mkfile
@@ -1,0 +1,19 @@
+<../mkconfig
+
+TARG=fmttest gfmttest strtodtest fmttest3 sizes # testintptr 
+
+# limbo test programs
+DISTARG=1 2 3 4 5 adt array array1 array2 array3 arraybig arraysimple arraysimpleint byte case case1 casec excpt if list parent print print1 printsimple printvarargs real return retval sample string tuple unquote  drawexample drawexample1 # alt alt1 drawcontext exceptions
+
+
+LIBS=	bio\
+	math\
+	sec\
+	mp\
+	9\
+	interp\
+
+
+BIN=$ROOT/$OBJDIR/bin
+
+<$ROOT/mkfiles/mkmany-$SHELLTYPE
--- /dev/null
+++ b/tests/print.b
@@ -1,0 +1,65 @@
+implement Sample;
+
+include "sys.m";
+	sys: Sys;
+
+Person : adt
+{
+	age : int;
+	next : cyclic ref Person;
+	age1 : int;
+	age2 : int;
+};
+
+Sample: module
+{
+	init: fn();
+	fn1: fn();
+	fn2: fn();
+	fn3: fn();
+};
+
+init()
+{
+	sys = load Sys Sys->PATH;
+	a := 1;
+	b := 3;
+	c : int;
+	d : Person;
+
+	d.age = 10;
+	d.next = nil;
+	d.age1 = 20;
+	d.age2 = 30;
+	c = a*b + b*b*b*b + a;
+	fn3();
+	#fn1();
+	fn2();
+}
+
+fn1()
+{
+	d: Person;
+
+	d.age=40;
+	# d.next = nil;
+	d.age1 = 50;
+	d.age2 = 60;
+}
+
+fn2()
+{
+	s: string;
+
+	s = "testing the string";
+	sys->print("%s\n", s);
+}
+
+fn3()
+{
+	s: string;
+	s1: string;
+
+	s = "testing the string";
+	s1 = "testing again";
+}
--- /dev/null
+++ b/tests/print1.b
@@ -1,0 +1,15 @@
+implement Sample;
+include "sys.m";
+	sys: Sys;
+
+Sample: module
+{
+	init: fn();
+};
+
+init()
+{
+	sys = load Sys Sys->PATH;
+	sys->print("init %g %f\n", 3.14, 1.48);
+	sys->print("init %d\n", -1);
+}
--- /dev/null
+++ b/tests/printsimple.b
@@ -1,0 +1,14 @@
+implement Sample;
+include "sys.m";
+	sys: Sys;
+
+Sample: module
+{
+	init: fn();
+};
+
+init()
+{
+	sys = load Sys Sys->PATH;
+	sys->print("init 1\n");
+}
--- /dev/null
+++ b/tests/printvarargs.b
@@ -1,0 +1,14 @@
+implement Sample;
+include "sys.m";
+	sys: Sys;
+
+Sample: module
+{
+	init: fn();
+};
+
+init()
+{
+	sys = load Sys Sys->PATH;
+	sys->print("init 1 %s\n", "string");
+}
--- /dev/null
+++ b/tests/real.b
@@ -1,0 +1,18 @@
+implement Sample;
+include "sys.m";
+	sys: Sys;
+
+Sample: module
+{
+	init: fn();
+};
+
+init()
+{
+	sys = load Sys Sys->PATH;
+	r : real;
+
+	r = 3.14;
+	sys->print("should print 3.14 result %g\n", r);
+	sys->print("should print 3.14 result %f\n", r);
+}
--- /dev/null
+++ b/tests/return.b
@@ -1,0 +1,25 @@
+implement Emuinit;
+include "sys.m";
+	sys: Sys;
+
+Emuinit: module
+{
+	init: fn();
+};
+
+init()
+{
+	sys = load Sys Sys->PATH;
+	a : int;
+
+	a = calc(100);
+	sys->print("returned %d\n", a);
+}
+
+calc(n: int): int
+{
+	a : int;
+
+	a = n * n + 100;
+	return a;
+}
--- /dev/null
+++ b/tests/retval.b
@@ -1,0 +1,20 @@
+implement Sample;
+
+include "sys.m";
+	sys: Sys;
+
+Sample: module
+{
+	init: fn();
+};
+
+init()
+{
+	sys = load Sys Sys->PATH;
+	a: int;
+
+	a = sys->print("testinng the return value\n");
+	sys->print("print returned %d\n", a);
+	a = sys->print("\n");
+	sys->print("print returned %d, should have been 1\n", a);
+}
--- /dev/null
+++ b/tests/sample.b
@@ -1,0 +1,30 @@
+implement Sample;
+include "sys.m";
+	sys: Sys;
+
+Sample: module
+{
+	init: fn();
+};
+
+init()
+{
+	sys = load Sys Sys->PATH;
+	sys->print("init 1\n");
+#	sys->bind("#e", "/env", sys->MREPL|sys->MCREATE);	# if #e not configured, that's fine
+#	fd := sys->open("#e/", Sys->OREAD);
+#	if(fd != nil)
+#		sys->print("init 2 %q\n", sys->fd2path(fd));
+	i : int = 4;
+	i = i+100;
+	i = i-101;
+	case i {
+	0 => sys->print("begins with a vowel\n");
+	1 => sys->print("begins with a consonant\n");
+	2 => sys->print("begins with a consonant\n");
+	3 => sys->print("begins with a consonant\n");
+	4 => sys->print("begins with a consonant\n");
+	* => sys->print("sorry don't understand\n");
+	}
+	sys->print("ending the program\n");
+}
--- /dev/null
+++ b/tests/sh.1.debug
@@ -1,0 +1,59067 @@
+declare module Sys
+declare module Draw
+declare module Bufio
+declare module BufioFill
+declare module ChanFill
+declare module String
+declare module Filepat
+declare module Env
+declare module Command
+declare module Sh
+declare module Shellbuiltin
+declare module YYSys
+variable 'SELF' val '"$self"'
+variable 'Sys->PATH' val '"$Sys"'
+variable 'Sys->Maxint' val '2147483647'
+variable 'Sys->QTDIR' val '128'
+variable 'Sys->QTAPPEND' val '64'
+variable 'Sys->QTEXCL' val '32'
+variable 'Sys->QTAUTH' val '8'
+variable 'Sys->QTTMP' val '4'
+variable 'Sys->QTFILE' val '0'
+variable 'Sys->nulldir' val 'Dir(nil, nil, nil, nil, (-1, -1, -1), -1, -1, -1, -1, -1, -1)'
+variable 'Sys->zerodir' val 'Dir(nil, nil, nil, nil, (0, 0, 0), 0, 0, 0, 0, 0, 0)'
+variable 'Sys->ATOMICIO' val '8192'
+variable 'Sys->SEEKSTART' val '0'
+variable 'Sys->SEEKRELA' val '1'
+variable 'Sys->SEEKEND' val '2'
+variable 'Sys->NAMEMAX' val '256'
+variable 'Sys->ERRMAX' val '128'
+variable 'Sys->WAITLEN' val '192'
+variable 'Sys->OREAD' val '0'
+variable 'Sys->OWRITE' val '1'
+variable 'Sys->ORDWR' val '2'
+variable 'Sys->OTRUNC' val '16'
+variable 'Sys->ORCLOSE' val '64'
+variable 'Sys->OEXCL' val '4096'
+variable 'Sys->DMDIR' val '-2147483648'
+variable 'Sys->DMAPPEND' val '1073741824'
+variable 'Sys->DMEXCL' val '536870912'
+variable 'Sys->DMAUTH' val '134217728'
+variable 'Sys->DMTMP' val '67108864'
+variable 'Sys->MREPL' val '0'
+variable 'Sys->MBEFORE' val '1'
+variable 'Sys->MAFTER' val '2'
+variable 'Sys->MCREATE' val '4'
+variable 'Sys->MCACHE' val '16'
+variable 'Sys->NEWFD' val '(1)'
+variable 'Sys->FORKFD' val '(2)'
+variable 'Sys->NEWNS' val '(4)'
+variable 'Sys->FORKNS' val '(8)'
+variable 'Sys->NEWPGRP' val '(16)'
+variable 'Sys->NODEVS' val '(32)'
+variable 'Sys->NEWENV' val '(64)'
+variable 'Sys->FORKENV' val '(128)'
+variable 'Sys->EXPWAIT' val '0'
+variable 'Sys->EXPASYNC' val '1'
+variable 'Sys->UTFmax' val '4'
+variable 'Sys->UTFerror' val '65533'
+variable 'Sys->Runemax' val '1114111'
+variable 'Sys->Runemask' val '2097151'
+variable 'Draw->PATH' val '"$Draw"'
+variable 'Draw->Opaque' val '-1'
+variable 'Draw->Transparent' val '0'
+variable 'Draw->Black' val '255'
+variable 'Draw->White' val '-1'
+variable 'Draw->Red' val '-16776961'
+variable 'Draw->Green' val '16711935'
+variable 'Draw->Blue' val '65535'
+variable 'Draw->Cyan' val '16777215'
+variable 'Draw->Magenta' val '-16711681'
+variable 'Draw->Yellow' val '-65281'
+variable 'Draw->Grey' val '-286331137'
+variable 'Draw->Paleyellow' val '-21761'
+variable 'Draw->Darkyellow' val '-286351617'
+variable 'Draw->Darkgreen' val '1149781247'
+variable 'Draw->Palegreen' val '-1426085121'
+variable 'Draw->Medgreen' val '-1999861505'
+variable 'Draw->Darkblue' val '22015'
+variable 'Draw->Palebluegreen' val '-1426063361'
+variable 'Draw->Paleblue' val '48127'
+variable 'Draw->Bluegreen' val '8947967'
+variable 'Draw->Greygreen' val '1437248255'
+variable 'Draw->Palegreygreen' val '-1628508417'
+variable 'Draw->Yellowgreen' val '-1718006529'
+variable 'Draw->Medblue' val '39423'
+variable 'Draw->Greyblue' val '6142975'
+variable 'Draw->Palegreyblue' val '1234427391'
+variable 'Draw->Purpleblue' val '-2004300545'
+variable 'Draw->Notacolor' val '-256'
+variable 'Draw->Nofill' val 'Notacolor'
+variable 'Draw->Endsquare' val '0'
+variable 'Draw->Enddisc' val '1'
+variable 'Draw->Endarrow' val '2'
+variable 'Draw->Flushoff' val '0'
+variable 'Draw->Flushon' val '1'
+variable 'Draw->Flushnow' val '2'
+variable 'Draw->Refbackup' val '0'
+variable 'Draw->Refnone' val '1'
+variable 'Draw->SinD' val '8'
+variable 'Draw->DinS' val '4'
+variable 'Draw->SoutD' val '2'
+variable 'Draw->DoutS' val '1'
+variable 'Draw->S' val '10'
+variable 'Draw->SoverD' val '11'
+variable 'Draw->SatopD' val '9'
+variable 'Draw->SxorD' val '3'
+variable 'Draw->D' val '5'
+variable 'Draw->DoverS' val '7'
+variable 'Draw->DatopS' val '6'
+variable 'Draw->DxorS' val '3'
+variable 'Draw->Clear' val '0'
+variable 'Draw->CRed' val 'iota'
+variable 'Draw->CGreen' val 'iota'
+variable 'Draw->CBlue' val 'iota'
+variable 'Draw->CGrey' val 'iota'
+variable 'Draw->CAlpha' val 'iota'
+variable 'Draw->CMap' val 'iota'
+variable 'Draw->CIgnore' val 'iota'
+variable 'Draw->GREY1' val 'Chans(49)'
+variable 'Draw->GREY2' val 'Chans(50)'
+variable 'Draw->GREY4' val 'Chans(52)'
+variable 'Draw->GREY8' val 'Chans(56)'
+variable 'Draw->CMAP8' val 'Chans(88)'
+variable 'Draw->RGB15' val 'Chans(1627723045)'
+variable 'Draw->RGB16' val 'Chans(333349)'
+variable 'Draw->RGB24' val 'Chans(530472)'
+variable 'Draw->RGBA32' val 'Chans(402663496)'
+variable 'Draw->ARGB32' val 'Chans(1208490024)'
+variable 'Draw->XRGB32' val 'Chans(1745360936)'
+variable 'Bufio->PATH' val '"/dis/lib/b..."'
+variable 'Bufio->SEEKSTART' val 'SEEKSTART'
+variable 'Bufio->SEEKRELA' val 'SEEKRELA'
+variable 'Bufio->SEEKEND' val 'SEEKEND'
+variable 'Bufio->OREAD' val 'OREAD'
+variable 'Bufio->OWRITE' val 'OWRITE'
+variable 'Bufio->ORDWR' val 'ORDWR'
+variable 'Bufio->EOF' val '-1'
+variable 'Bufio->ERROR' val '-2'
+variable 'ChanFill->PATH' val '"/dis/lib/c..."'
+variable 'String->PATH' val '"/dis/lib/s..."'
+variable 'Filepat->PATH' val '"/dis/lib/f..."'
+variable 'Env->PATH' val '"/dis/lib/e..."'
+variable 'Command->PATH' val '"/dis/sh.di..."'
+variable 'PATH' val '"/dis/sh.di..."'
+variable 'Context.INTERACTIVE' val '1'
+variable 'Context.VERBOSE' val '2'
+variable 'Context.EXECPRINT' val '4'
+variable 'Context.ERROREXIT' val '8'
+variable 'Var.CHANGED' val '(1)'
+variable 'Var.NOEXPORT' val '(2)'
+variable 'n_BLOCK' val 'iota'
+variable 'n_VAR' val 'iota'
+variable 'n_BQ' val 'iota'
+variable 'n_BQ2' val 'iota'
+variable 'n_REDIR' val 'iota'
+variable 'n_DUP' val 'iota'
+variable 'n_LIST' val 'iota'
+variable 'n_SEQ' val 'iota'
+variable 'n_CONCAT' val 'iota'
+variable 'n_PIPE' val 'iota'
+variable 'n_ADJ' val 'iota'
+variable 'n_WORD' val 'iota'
+variable 'n_NOWAIT' val 'iota'
+variable 'n_SQUASH' val 'iota'
+variable 'n_COUNT' val 'iota'
+variable 'n_ASSIGN' val 'iota'
+variable 'n_LOCAL' val 'iota'
+variable 'GLOB' val '1'
+variable 'Shellbuiltin->BUILTIN' val 'iota'
+variable 'Shellbuiltin->SBUILTIN' val 'iota'
+variable 'Shellbuiltin->OTHER' val 'iota'
+variable 'YYLEX.EOF' val '-1'
+variable 'DUP' val '57346'
+variable 'REDIR' val '57347'
+variable 'WORD' val '57348'
+variable 'OP' val '57349'
+variable 'END' val '57350'
+variable 'ERROR' val '57351'
+variable 'ANDAND' val '57352'
+variable 'OROR' val '57353'
+variable 'YYEOFCODE' val '1'
+variable 'YYERRCODE' val '2'
+variable 'YYMAXDEPTH' val '200'
+variable 'EPERM' val '"permission..."'
+variable 'EPIPE' val '"write on c..."'
+variable 'LIBSHELLRC' val '"/lib/sh/pr..."'
+variable 'BUILTINPATH' val '"/dis/sh"'
+variable 'DEBUG' val '0'
+variable 'ENVSEP' val '0'
+variable 'ENVHASHSIZE' val '7'
+variable 'OAPPEND' val '524288'
+variable 'OMASK' val '7'
+variable 'NOTOKEN' val '-1'
+generate desc for int
+generate desc for int
+	desc	$-1,4,""
+variable 'YYNPROD' val '45'
+variable 'YYPRIVATE' val '57344'
+variable 'yydebug' val '0'
+variable 'YYLAST' val '93'
+generate desc for int
+generate desc for int
+generate desc for int
+generate desc for int
+generate desc for int
+generate desc for int
+generate desc for int
+generate desc for int
+generate desc for int
+generate desc for int
+variable 'YYFLAG' val '-1000'
+typecheck tree: 
+fn(){} fn() 0 0
+  name usage fn() 0 0
+  seq nothing 0 0
+    call nothing 0 0
+      -> nothing 0 0
+        name sys nothing 0 0
+        name fprint nothing 0 0
+      seq nothing 0 0
+        call nothing 0 0
+          name stderr nothing 0 0
+        seq nothing 0 0
+          const usage: sh [-ilexn] [-c command] [file [arg...]]
+ string 0 0
+    seq nothing 0 0
+      raise nothing 0 0
+        const fail:usage string 0 0
+typecheck tree: 
+fn(){} fn(path: string) 0 0
+  name badmodule fn(path: string) 0 0
+  seq nothing 0 0
+    call nothing 0 0
+      -> nothing 0 0
+        name sys nothing 0 0
+        name fprint nothing 0 0
+      seq nothing 0 0
+        call nothing 0 0
+          -> nothing 0 0
+            name sys nothing 0 0
+            name fildes nothing 0 0
+          seq nothing 0 0
+            const (2) int 0 0
+        seq nothing 0 0
+          const sh: cannot load %s: %r
+ string 0 0
+          seq nothing 0 0
+            name path nothing 0 0
+    seq nothing 0 0
+      raise nothing 0 0
+        const fail:bad module string 0 0
+typecheck tree: 
+fn(){} fn() 0 0
+  name initialise fn() 0 0
+  seq nothing 0 0
+    if nothing 0 0
+      == nothing 0 0
+        name sys nothing 0 0
+        name nil polymorphic type 0 0
+      seq nothing 0 0
+        scope nothing 0 0
+          seq nothing 0 0
+            = nothing 0 0
+              name sys nothing 0 0
+              load Sys 0 0
+                -> nothing 0 0
+                  name Sys nothing 0 0
+                  name PATH nothing 0 0
+            seq nothing 0 0
+              = nothing 0 0
+                name filepat nothing 0 0
+                load Filepat 0 0
+                  -> nothing 0 0
+                    name Filepat nothing 0 0
+                    name PATH nothing 0 0
+              seq nothing 0 0
+                if nothing 0 0
+                  == nothing 0 0
+                    name filepat nothing 0 0
+                    name nil polymorphic type 0 0
+                  seq nothing 0 0
+                    call nothing 0 0
+                      name badmodule nothing 0 0
+                      seq nothing 0 0
+                        -> nothing 0 0
+                          name Filepat nothing 0 0
+                          name PATH nothing 0 0
+                seq nothing 0 0
+                  = nothing 0 0
+                    name str nothing 0 0
+                    load String 0 0
+                      -> nothing 0 0
+                        name String nothing 0 0
+                        name PATH nothing 0 0
+                  seq nothing 0 0
+                    if nothing 0 0
+                      == nothing 0 0
+                        name str nothing 0 0
+                        name nil polymorphic type 0 0
+                      seq nothing 0 0
+                        call nothing 0 0
+                          name badmodule nothing 0 0
+                          seq nothing 0 0
+                            -> nothing 0 0
+                              name String nothing 0 0
+                              name PATH nothing 0 0
+                    seq nothing 0 0
+                      = nothing 0 0
+                        name bufio nothing 0 0
+                        load Bufio 0 0
+                          -> nothing 0 0
+                            name Bufio nothing 0 0
+                            name PATH nothing 0 0
+                      seq nothing 0 0
+                        if nothing 0 0
+                          == nothing 0 0
+                            name bufio nothing 0 0
+                            name nil polymorphic type 0 0
+                          seq nothing 0 0
+                            call nothing 0 0
+                              name badmodule nothing 0 0
+                              seq nothing 0 0
+                                -> nothing 0 0
+                                  name Bufio nothing 0 0
+                                  name PATH nothing 0 0
+                        seq nothing 0 0
+                          = nothing 0 0
+                            name myself nothing 0 0
+                            load Sh 0 0
+                              const $self string 0 0
+                          seq nothing 0 0
+                            if nothing 0 0
+                              == nothing 0 0
+                                name myself nothing 0 0
+                                name nil polymorphic type 0 0
+                              seq nothing 0 0
+                                call nothing 0 0
+                                  name badmodule nothing 0 0
+                                  seq nothing 0 0
+                                    const $self(Sh) string 0 0
+                            seq nothing 0 0
+                              = nothing 0 0
+                                name myselfbuiltin nothing 0 0
+                                load Shellbuiltin 0 0
+                                  const $self string 0 0
+                              seq nothing 0 0
+                                if nothing 0 0
+                                  == nothing 0 0
+                                    name myselfbuiltin nothing 0 0
+                             
+typecheck tree: 
+fn(){} fn(drawcontext: ref Draw->Context, argv: list of string) 0 0
+  name init fn(ctxt: ref Draw->Context, argv: list of string) 0 0
+  seq nothing 0 0
+    call nothing 0 0
+      name initialise nothing 0 0
+    seq nothing 0 0
+      := nothing 0 0
+        name opts nothing 0 0
+        name blankopts nothing 0 0
+      seq nothing 0 0
+        if nothing 0 0
+          != nothing 0 0
+            name argv nothing 0 0
+            name nil polymorphic type 0 0
+          seq nothing 0 0
+            scope nothing 0 0
+              seq nothing 0 0
+                if nothing 0 0
+                  == nothing 0 0
+                    index nothing 0 0
+                      hd nothing 0 0
+                        name argv nothing 0 0
+                      const (0) int 0 0
+                    const (45) int 0 0
+                  seq nothing 0 0
+                    ++ nothing 0 0
+                      . nothing 0 0
+                        name opts nothing 0 0
+                        name lflag nothing 0 0
+                seq nothing 0 0
+                  = nothing 0 0
+                    name argv nothing 0 0
+                    tl nothing 0 0
+                      name argv nothing 0 0
+        seq nothing 0 0
+          := nothing 0 0
+            name interactive nothing 0 0
+            const (0) int 0 0
+          seq nothing 0 0
+            for nothing 0 0
+              && nothing 0 0
+                && nothing 0 0
+                  != nothing 0 0
+                    name argv nothing 0 0
+                    name nil polymorphic type 0 0
+                  != nothing 0 0
+                    hd nothing 0 0
+                      name argv nothing 0 0
+                    name nil polymorphic type 0 0
+                == nothing 0 0
+                  index nothing 0 0
+                    hd nothing 0 0
+                      name argv nothing 0 0
+                    const (0) int 0 0
+                  const (45) int 0 0
+              seq nothing 0 0
+                scope nothing 0 0
+                  seq nothing 0 0
+                    := nothing 0 0
+                      name i nothing 0 0
+                      const (1) int 0 0
+                    seq nothing 0 0
+                      for nothing 0 0
+                        < nothing 0 0
+                          name i nothing 0 0
+                          len nothing 0 0
+                            hd nothing 0 0
+                              name argv nothing 0 0
+                        seq nothing 0 0
+                          scope nothing 0 0
+                            seq nothing 0 0
+                              := nothing 0 0
+                                name c nothing 0 0
+                                index nothing 0 0
+                                  hd nothing 0 0
+                                    name argv nothing 0 0
+                                  name i nothing 0 0
+                              seq nothing 0 0
+                                case nothing 0 0
+                                  name c nothing 0 0
+                                  seq nothing 0 0
+                                    label nothing 0 0
+                                      seq nothing 0 0
+                                        const (105) int 0 0
+                                      scope nothing 0 0
+                                        = nothing 0 0
+                                          name interactive nothing 0 0
+                                          . nothing 0 0
+                                            name Context nothing 0 0
+                                            name INTERACTIVE nothing 0 0
+                                    seq nothing 0 0
+                                      label nothing 0 0
+                                        seq nothing 0 0
+                                          const (108) int 0 0
+                                        scope nothing 0 0
+                                          ++ nothing 0 0
+                                            . nothing 0 0
+                                              name opts nothing 0 0
+      
+typecheck tree: 
+fn(){} fn(s: string): (ref Node, string) 0 0
+  name parse fn(s: string): (ref Node, string) 0 0
+  seq nothing 0 0
+    call nothing 0 0
+      name initialise nothing 0 0
+    seq nothing 0 0
+      := nothing 0 0
+        name lex nothing 0 0
+        call nothing 0 0
+          . nothing 0 0
+            name YYLEX nothing 0 0
+            name initstring nothing 0 0
+          seq nothing 0 0
+            name s nothing 0 0
+      seq nothing 0 0
+        return nothing 0 0
+          call nothing 0 0
+            name doparse nothing 0 0
+            seq nothing 0 0
+              name lex nothing 0 0
+              seq nothing 0 0
+                const  string 0 0
+                seq nothing 0 0
+                  const (0) int 0 0
+typecheck tree: 
+fn(){} fn(drawctxt: ref Draw->Context, cmd: string): string 0 0
+  name system fn(drawctxt: ref Draw->Context, cmd: string): string 0 0
+  seq nothing 0 0
+    call nothing 0 0
+      name initialise nothing 0 0
+    seq nothing 0 0
+      exstat nothing 0 0
+        scope nothing 0 0
+          seq nothing 0 0
+            := nothing 0 0
+              tuple nothing 0 0
+                seq nothing 0 0
+                  name n nothing 0 0
+                  seq nothing 0 0
+                    name err nothing 0 0
+              call nothing 0 0
+                name parse nothing 0 0
+                seq nothing 0 0
+                  name cmd nothing 0 0
+            seq nothing 0 0
+              if nothing 0 0
+                != nothing 0 0
+                  name err nothing 0 0
+                  name nil polymorphic type 0 0
+                seq nothing 0 0
+                  return nothing 0 0
+                    name err nothing 0 0
+              seq nothing 0 0
+                if nothing 0 0
+                  == nothing 0 0
+                    name n nothing 0 0
+                    name nil polymorphic type 0 0
+                  seq nothing 0 0
+                    return nothing 0 0
+                      name nil polymorphic type 0 0
+                seq nothing 0 0
+                  return nothing 0 0
+                    call nothing 0 0
+                      . nothing 0 0
+                        call nothing 0 0
+                          . nothing 0 0
+                            name Context nothing 0 0
+                            name new nothing 0 0
+                          seq nothing 0 0
+                            name drawctxt nothing 0 0
+                        name run nothing 0 0
+                      seq nothing 0 0
+                        :: nothing 0 0
+                          ref nothing 0 0
+                            call nothing 0 0
+                              name Listnode nothing 0 0
+                              seq nothing 0 0
+                                name n nothing 0 0
+                                seq nothing 0 0
+                                  name nil polymorphic type 0 0
+                          name nil polymorphic type 0 0
+                        seq nothing 0 0
+                          const (0) int 0 0
+        except nothing 0 0
+          name e nothing 0 0
+          seq nothing 0 0
+            label nothing 0 0
+              seq nothing 0 0
+                const fail:* string 0 0
+              scope nothing 0 0
+                return nothing 0 0
+                  call nothing 0 0
+                    name failurestatus nothing 0 0
+                    seq nothing 0 0
+                      name e nothing 0 0
+typecheck tree: 
+fn(){} fn(drawctxt: ref Draw->Context, argv: list of string): string 0 0
+  name run fn(drawctxt: ref Draw->Context, argv: list of string): string 0 0
+  seq nothing 0 0
+    call nothing 0 0
+      name initialise nothing 0 0
+    seq nothing 0 0
+      exstat nothing 0 0
+        scope nothing 0 0
+          seq nothing 0 0
+            return nothing 0 0
+              call nothing 0 0
+                . nothing 0 0
+                  call nothing 0 0
+                    . nothing 0 0
+                      name Context nothing 0 0
+                      name new nothing 0 0
+                    seq nothing 0 0
+                      name drawctxt nothing 0 0
+                  name run nothing 0 0
+                seq nothing 0 0
+                  call nothing 0 0
+                    name stringlist2list nothing 0 0
+                    seq nothing 0 0
+                      name argv nothing 0 0
+                  seq nothing 0 0
+                    const (0) int 0 0
+        except nothing 0 0
+          name e nothing 0 0
+          seq nothing 0 0
+            label nothing 0 0
+              seq nothing 0 0
+                const fail:* string 0 0
+              scope nothing 0 0
+                return nothing 0 0
+                  call nothing 0 0
+                    name failurestatus nothing 0 0
+                    seq nothing 0 0
+                      name e nothing 0 0
+typecheck tree: 
+fn(){} fn(fd: ref Sys->FD): int 0 0
+  name isconsole fn(fd: ref Sys->FD): int 0 0
+  seq nothing 0 0
+    := nothing 0 0
+      tuple nothing 0 0
+        seq nothing 0 0
+          name ok1 nothing 0 0
+          seq nothing 0 0
+            name d1 nothing 0 0
+      call nothing 0 0
+        -> nothing 0 0
+          name sys nothing 0 0
+          name fstat nothing 0 0
+        seq nothing 0 0
+          name fd nothing 0 0
+    seq nothing 0 0
+      := nothing 0 0
+        tuple nothing 0 0
+          seq nothing 0 0
+            name ok2 nothing 0 0
+            seq nothing 0 0
+              name d2 nothing 0 0
+        call nothing 0 0
+          -> nothing 0 0
+            name sys nothing 0 0
+            name stat nothing 0 0
+          seq nothing 0 0
+            const /dev/cons string 0 0
+      seq nothing 0 0
+        if nothing 0 0
+          || nothing 0 0
+            < nothing 0 0
+              name ok1 nothing 0 0
+              const (0) int 0 0
+            < nothing 0 0
+              name ok2 nothing 0 0
+              const (0) int 0 0
+          seq nothing 0 0
+            return nothing 0 0
+              const (0) int 0 0
+        seq nothing 0 0
+          return nothing 0 0
+            && nothing 0 0
+              == nothing 0 0
+                . nothing 0 0
+                  name d1 nothing 0 0
+                  name dtype nothing 0 0
+                . nothing 0 0
+                  name d2 nothing 0 0
+                  name dtype nothing 0 0
+              == nothing 0 0
+                . nothing 0 0
+                  . nothing 0 0
+                    name d1 nothing 0 0
+                    name qid nothing 0 0
+                  name path nothing 0 0
+                . nothing 0 0
+                  . nothing 0 0
+                    name d2 nothing 0 0
+                    name qid nothing 0 0
+                  name path nothing 0 0
+typecheck tree: 
+fn(){} fn(ctxt: ref Context, path: string, args: list of ref Listnode, reporterr: int) 0 0
+  name runscript fn(ctxt: ref Context, path: string, args: list of ref Listnode, reporterr: int) 0 0
+  seq nothing 0 0
+    exstat nothing 0 0
+      scope nothing 0 0
+        seq nothing 0 0
+          := nothing 0 0
+            name fd nothing 0 0
+            call nothing 0 0
+              -> nothing 0 0
+                name sys nothing 0 0
+                name open nothing 0 0
+              seq nothing 0 0
+                name path nothing 0 0
+                seq nothing 0 0
+                  -> nothing 0 0
+                    name Sys nothing 0 0
+                    name OREAD nothing 0 0
+          seq nothing 0 0
+            if nothing 0 0
+              != nothing 0 0
+                name fd nothing 0 0
+                name nil polymorphic type 0 0
+              seq nothing 0 0
+                call nothing 0 0
+                  name runfile nothing 0 0
+                  seq nothing 0 0
+                    name ctxt nothing 0 0
+                    seq nothing 0 0
+                      name fd nothing 0 0
+                      seq nothing 0 0
+                        name path nothing 0 0
+                        seq nothing 0 0
+                          name args nothing 0 0
+                if nothing 0 0
+                  name reporterr nothing 0 0
+                  seq nothing 0 0
+                    call nothing 0 0
+                      . nothing 0 0
+                        name ctxt nothing 0 0
+                        name fail nothing 0 0
+                      seq nothing 0 0
+                        const bad script path string 0 0
+                        seq nothing 0 0
+                          call nothing 0 0
+                            -> nothing 0 0
+                              name sys nothing 0 0
+                              name sprint nothing 0 0
+                            seq nothing 0 0
+                              const sh: cannot open %s: %r string 0 0
+                              seq nothing 0 0
+                                name path nothing 0 0
+      except nothing 0 0
+        seq nothing 0 0
+          label nothing 0 0
+            seq nothing 0 0
+              const fail:* string 0 0
+            scope nothing 0 0
+              seq nothing 0 0
+                if nothing 0 0
+                  ! nothing 0 0
+                    name reporterr nothing 0 0
+                  seq nothing 0 0
+                    return nothing 0 0
+                raise nothing 0 0
+                  nothing nothing 0 0
+typecheck tree: 
+fn(){} fn(ctxt: ref Context, fd: ref Sys->FD, path: string, args: list of ref Listnode) 0 0
+  name runfile fn(ctxt: ref Context, fd: ref Sys->FD, path: string, args: list of ref Listnode) 0 0
+  seq nothing 0 0
+    call nothing 0 0
+      . nothing 0 0
+        name ctxt nothing 0 0
+        name push nothing 0 0
+    seq nothing 0 0
+      exstat nothing 0 0
+        scope nothing 0 0
+          seq nothing 0 0
+            call nothing 0 0
+              . nothing 0 0
+                name ctxt nothing 0 0
+                name setlocal nothing 0 0
+              seq nothing 0 0
+                const 0 string 0 0
+                seq nothing 0 0
+                  call nothing 0 0
+                    name stringlist2list nothing 0 0
+                    seq nothing 0 0
+                      :: nothing 0 0
+                        name path nothing 0 0
+                        name nil polymorphic type 0 0
+            seq nothing 0 0
+              call nothing 0 0
+                . nothing 0 0
+                  name ctxt nothing 0 0
+                  name setlocal nothing 0 0
+                seq nothing 0 0
+                  const * string 0 0
+                  seq nothing 0 0
+                    name args nothing 0 0
+              seq nothing 0 0
+                := nothing 0 0
+                  name lex nothing 0 0
+                  call nothing 0 0
+                    . nothing 0 0
+                      name YYLEX nothing 0 0
+                      name initfile nothing 0 0
+                    seq nothing 0 0
+                      name fd nothing 0 0
+                      seq nothing 0 0
+                        name path nothing 0 0
+                seq nothing 0 0
+                  if nothing 0 0
+                    name DEBUG nothing 0 0
+                    seq nothing 0 0
+                      call nothing 0 0
+                        name debug nothing 0 0
+                        seq nothing 0 0
+                          call nothing 0 0
+                            name sprint nothing 0 0
+                            seq nothing 0 0
+                              const parse(interactive == %d) string 0 0
+                              seq nothing 0 0
+                                != nothing 0 0
+                                  & nothing 0 0
+                                    call nothing 0 0
+                                      . nothing 0 0
+                                        name ctxt nothing 0 0
+                                        name options nothing 0 0
+                                    . nothing 0 0
+                                      name ctxt nothing 0 0
+                                      name INTERACTIVE nothing 0 0
+                                  const (0) int 0 0
+                  seq nothing 0 0
+                    := nothing 0 0
+                      name prompt nothing 0 0
+                      :: nothing 0 0
+                        const  string 0 0
+                        :: nothing 0 0
+                          const  string 0 0
+                          name nil polymorphic type 0 0
+                    seq nothing 0 0
+                      vardecl string 0 0
+                        seq nothing 0 0
+                      seq nothing 0 0
+                        for nothing 0 0
+                          ! nothing 0 0
+                            . nothing 0 0
+                              name lex nothing 0 0
+                              name eof nothing 0 0
+                          seq nothing 0 0
+                            scope nothing 0 0
+                              seq nothing 0 0
+                                := nothing 0 0
+                                  name interactive nothing 0 0
+                                  & nothing 0 0
+                                    call nothing 0 0
+                                      . nothing 0 0
+                                        name ctxt nothing 0 0
+                                        name options nothing 0 0
+                                    . nothing 0 0
+                                      name ctxt nothing 0 0
+                    
+typecheck tree: 
+fn(){} fn(e: string): int 0 0
+  name nonexistent fn(e: string): int 0 0
+  seq nothing 0 0
+    := nothing 0 0
+      name errs nothing 0 0
+      array nothing 0 0
+        nothing nothing 0 0
+        seq nothing 0 0
+          elem nothing 0 0
+            const does not exist string 0 0
+          seq nothing 0 0
+            elem nothing 0 0
+              const directory entry not found string 0 0
+    seq nothing 0 0
+      seq nothing 0 0
+        := nothing 0 0
+          name i nothing 0 0
+          const (0) int 0 0
+        for nothing 0 0
+          < nothing 0 0
+            name i nothing 0 0
+            len nothing 0 0
+              name errs nothing 0 0
+          seq nothing 0 0
+            scope nothing 0 0
+              seq nothing 0 0
+                := nothing 0 0
+                  name j nothing 0 0
+                  len nothing 0 0
+                    index nothing 0 0
+                      name errs nothing 0 0
+                      name i nothing 0 0
+                seq nothing 0 0
+                  if nothing 0 0
+                    && nothing 0 0
+                      <= nothing 0 0
+                        name j nothing 0 0
+                        len nothing 0 0
+                          name e nothing 0 0
+                      == nothing 0 0
+                        slice nothing 0 0
+                          name e nothing 0 0
+                          seq nothing 0 0
+                            - nothing 0 0
+                              len nothing 0 0
+                                name e nothing 0 0
+                              name j nothing 0 0
+                            nothing nothing 0 0
+                        index nothing 0 0
+                          name errs nothing 0 0
+                          name i nothing 0 0
+                    seq nothing 0 0
+                      return nothing 0 0
+                        const (1) int 0 0
+            ++ nothing 0 0
+              name i nothing 0 0
+      seq nothing 0 0
+        return nothing 0 0
+          const (0) int 0 0
+typecheck tree: 
+fn(){} fn(n: ref Node): ref Node 0 0
+  name pipe2cmd fn(n: ref Node): ref Node 0 0
+  seq nothing 0 0
+    if nothing 0 0
+      || nothing 0 0
+        == nothing 0 0
+          name n nothing 0 0
+          name nil polymorphic type 0 0
+        != nothing 0 0
+          . nothing 0 0
+            name n nothing 0 0
+            name ntype nothing 0 0
+          name n_PIPE nothing 0 0
+      seq nothing 0 0
+        return nothing 0 0
+          name n nothing 0 0
+    seq nothing 0 0
+      return nothing 0 0
+        call nothing 0 0
+          name mk nothing 0 0
+          seq nothing 0 0
+            name n_ADJ nothing 0 0
+            seq nothing 0 0
+              call nothing 0 0
+                name mk nothing 0 0
+                seq nothing 0 0
+                  name n_BLOCK nothing 0 0
+                  seq nothing 0 0
+                    name n nothing 0 0
+                    seq nothing 0 0
+                      name nil polymorphic type 0 0
+              seq nothing 0 0
+                call nothing 0 0
+                  name mk nothing 0 0
+                  seq nothing 0 0
+                    name n_VAR nothing 0 0
+                    seq nothing 0 0
+                      ref nothing 0 0
+                        call nothing 0 0
+                          name Node nothing 0 0
+                          seq nothing 0 0
+                            name n_WORD nothing 0 0
+                            seq nothing 0 0
+                              name nil polymorphic type 0 0
+                              seq nothing 0 0
+                                name nil polymorphic type 0 0
+                                seq nothing 0 0
+                                  const * string 0 0
+                                  seq nothing 0 0
+                                    name nil polymorphic type 0 0
+                      seq nothing 0 0
+                        name nil polymorphic type 0 0
+typecheck tree: 
+fn(){} fn(ctxt: ref Context, n: ref Node, last: int): string 0 0
+  name walk fn(ctxt: ref Context, n: ref Node, last: int): string 0 0
+  seq nothing 0 0
+    if nothing 0 0
+      name DEBUG nothing 0 0
+      seq nothing 0 0
+        call nothing 0 0
+          name debug nothing 0 0
+          seq nothing 0 0
+            call nothing 0 0
+              name sprint nothing 0 0
+              seq nothing 0 0
+                const walking: %s string 0 0
+                seq nothing 0 0
+                  call nothing 0 0
+                    name cmd2string nothing 0 0
+                    seq nothing 0 0
+                      name n nothing 0 0
+    seq nothing 0 0
+      for nothing 0 0
+        && nothing 0 0
+          != nothing 0 0
+            name n nothing 0 0
+            name nil polymorphic type 0 0
+          == nothing 0 0
+            . nothing 0 0
+              name n nothing 0 0
+              name ntype nothing 0 0
+            name n_SEQ nothing 0 0
+        seq nothing 0 0
+          scope nothing 0 0
+            seq nothing 0 0
+              := nothing 0 0
+                name status nothing 0 0
+                call nothing 0 0
+                  name walk nothing 0 0
+                  seq nothing 0 0
+                    name ctxt nothing 0 0
+                    seq nothing 0 0
+                      . nothing 0 0
+                        name n nothing 0 0
+                        name left nothing 0 0
+                      seq nothing 0 0
+                        const (0) int 0 0
+              seq nothing 0 0
+                if nothing 0 0
+                  && nothing 0 0
+                    & nothing 0 0
+                      call nothing 0 0
+                        . nothing 0 0
+                          name ctxt nothing 0 0
+                          name options nothing 0 0
+                      . nothing 0 0
+                        name ctxt nothing 0 0
+                        name ERROREXIT nothing 0 0
+                    != nothing 0 0
+                      name status nothing 0 0
+                      name nil polymorphic type 0 0
+                  seq nothing 0 0
+                    raise nothing 0 0
+                      + nothing 0 0
+                        const fail: string 0 0
+                        name status nothing 0 0
+                seq nothing 0 0
+                  call nothing 0 0
+                    name setstatus nothing 0 0
+                    seq nothing 0 0
+                      name ctxt nothing 0 0
+                      seq nothing 0 0
+                        name status nothing 0 0
+                  seq nothing 0 0
+                    = nothing 0 0
+                      name n nothing 0 0
+                      . nothing 0 0
+                        name n nothing 0 0
+                        name right nothing 0 0
+      seq nothing 0 0
+        if nothing 0 0
+          == nothing 0 0
+            name n nothing 0 0
+            name nil polymorphic type 0 0
+          seq nothing 0 0
+            return nothing 0 0
+              name nil polymorphic type 0 0
+        seq nothing 0 0
+          case nothing 0 0
+            . nothing 0 0
+              name n nothing 0 0
+              name ntype nothing 0 0
+            seq nothing 0 0
+              label nothing 0 0
+                seq nothing 0 0
+                  name n_PIPE nothing 0 0
+                scope nothing 0 0
+                  return nothing 0 0
+                    call nothing 0 0
+                      name waitfor nothing 0 0
+                      seq nothing 0 0
+                        name ctxt nothing 0 0
+                        seq nothing 0 0
+                          call nothing 0 0
+                            name walkpipeline nothing 0 0
+                            seq nothing 0 0
+                              name ctxt nothing 0 0
+                              seq nothing 0 0
+                                name n nothing 0 0
+                                seq nothing 0 0
+                                  name nil polymorphic type 0 0
+                                  seq nothing 0 0
+                                    - nothing 0
+typecheck tree: 
+fn(){} fn(ctxt: ref Context, n: ref Node): list of ref Listnode 0 0
+  name assign fn(ctxt: ref Context, n: ref Node): list of ref Listnode 0 0
+  seq nothing 0 0
+    := nothing 0 0
+      name redirs nothing 0 0
+      ref nothing 0 0
+        name Redirlist nothing 0 0
+    seq nothing 0 0
+      vardecl list of ref Listnode 0 0
+        seq nothing 0 0
+      seq nothing 0 0
+        if nothing 0 0
+          && nothing 0 0
+            != nothing 0 0
+              . nothing 0 0
+                name n nothing 0 0
+                name right nothing 0 0
+              name nil polymorphic type 0 0
+            || nothing 0 0
+              == nothing 0 0
+                . nothing 0 0
+                  . nothing 0 0
+                    name n nothing 0 0
+                    name right nothing 0 0
+                  name ntype nothing 0 0
+                name n_ASSIGN nothing 0 0
+              == nothing 0 0
+                . nothing 0 0
+                  . nothing 0 0
+                    name n nothing 0 0
+                    name right nothing 0 0
+                  name ntype nothing 0 0
+                name n_LOCAL nothing 0 0
+          seq nothing 0 0
+            = nothing 0 0
+              name val nothing 0 0
+              call nothing 0 0
+                name assign nothing 0 0
+                seq nothing 0 0
+                  name ctxt nothing 0 0
+                  seq nothing 0 0
+                    . nothing 0 0
+                      name n nothing 0 0
+                      name right nothing 0 0
+            = nothing 0 0
+              name val nothing 0 0
+              call nothing 0 0
+                name glob nothing 0 0
+                seq nothing 0 0
+                  call nothing 0 0
+                    name glom nothing 0 0
+                    seq nothing 0 0
+                      name ctxt nothing 0 0
+                      seq nothing 0 0
+                        . nothing 0 0
+                          name n nothing 0 0
+                          name right nothing 0 0
+                        seq nothing 0 0
+                          name redirs nothing 0 0
+                          seq nothing 0 0
+                            name nil polymorphic type 0 0
+        seq nothing 0 0
+          := nothing 0 0
+            name vars nothing 0 0
+            call nothing 0 0
+              name glom nothing 0 0
+              seq nothing 0 0
+                name ctxt nothing 0 0
+                seq nothing 0 0
+                  . nothing 0 0
+                    name n nothing 0 0
+                    name left nothing 0 0
+                  seq nothing 0 0
+                    name redirs nothing 0 0
+                    seq nothing 0 0
+                      name nil polymorphic type 0 0
+          seq nothing 0 0
+            if nothing 0 0
+              == nothing 0 0
+                name vars nothing 0 0
+                name nil polymorphic type 0 0
+              seq nothing 0 0
+                call nothing 0 0
+                  . nothing 0 0
+                    name ctxt nothing 0 0
+                    name fail nothing 0 0
+                  seq nothing 0 0
+                    const bad assign string 0 0
+                    seq nothing 0 0
+                      const sh: nil variable name string 0 0
+            seq nothing 0 0
+              if nothing 0 0
+                != nothing 0 0
+                  . nothing 0 0
+                    name redirs nothing 0 0
+                    name r nothing 0 0
+                  name nil polymorphic type 0 0
+                seq nothing 0 0
+                  call nothing 0 0
+                    . nothing 0 0
+                      name ctxt nothing 0 0
+                      name fail nothing 0 0
+                    seq nothing 0 0
+                      const bad assign string 0 0
+                      seq nothing 0 0
+                        const sh: redirections not allowed in assignment string 0 0
+              seq nothing 0 0
+                := nothing 0 0
+                  name tval nothing 0 0
+                  name val nothing 0 0
+                seq nothing 0 0
+                  for nothing
+typecheck tree: 
+fn(){} fn(ctxt: ref Context, n: ref Node, wrpipe: ref Sys->FD, wfdno: int): list of int 0 0
+  name walkpipeline fn(ctxt: ref Context, n: ref Node, wrpipe: ref Sys->FD, wfdno: int): list of int 0 0
+  seq nothing 0 0
+    if nothing 0 0
+      == nothing 0 0
+        name n nothing 0 0
+        name nil polymorphic type 0 0
+      seq nothing 0 0
+        return nothing 0 0
+          name nil polymorphic type 0 0
+    seq nothing 0 0
+      := nothing 0 0
+        name fds nothing 0 0
+        array array of ref Sys->FD 0 0
+          const (2) int 0 0
+      seq nothing 0 0
+        vardecl list of int 0 0
+          seq nothing 0 0
+        seq nothing 0 0
+          := nothing 0 0
+            name rfdno nothing 0 0
+            - nothing 0 0
+              const (1) int 0 0
+          seq nothing 0 0
+            if nothing 0 0
+              == nothing 0 0
+                . nothing 0 0
+                  name n nothing 0 0
+                  name ntype nothing 0 0
+                name n_PIPE nothing 0 0
+              seq nothing 0 0
+                scope nothing 0 0
+                  seq nothing 0 0
+                    if nothing 0 0
+                      == nothing 0 0
+                        call nothing 0 0
+                          -> nothing 0 0
+                            name sys nothing 0 0
+                            name pipe nothing 0 0
+                          seq nothing 0 0
+                            name fds nothing 0 0
+                        - nothing 0 0
+                          const (1) int 0 0
+                      seq nothing 0 0
+                        call nothing 0 0
+                          . nothing 0 0
+                            name ctxt nothing 0 0
+                            name fail nothing 0 0
+                          seq nothing 0 0
+                            const no pipe string 0 0
+                            seq nothing 0 0
+                              call nothing 0 0
+                                -> nothing 0 0
+                                  name sys nothing 0 0
+                                  name sprint nothing 0 0
+                                seq nothing 0 0
+                                  const sh: cannot make pipe: %r string 0 0
+                    seq nothing 0 0
+                      := nothing 0 0
+                        name nwfdno nothing 0 0
+                        - nothing 0 0
+                          const (1) int 0 0
+                      seq nothing 0 0
+                        if nothing 0 0
+                          != nothing 0 0
+                            . nothing 0 0
+                              name n nothing 0 0
+                              name redir nothing 0 0
+                            name nil polymorphic type 0 0
+                          seq nothing 0 0
+                            scope nothing 0 0
+                              seq nothing 0 0
+                                := nothing 0 0
+                                  tuple nothing 0 0
+                                    seq nothing 0 0
+                                      name fd1 nothing 0 0
+                                      seq nothing 0 0
+                                        name fd2 nothing 0 0
+                                  tuple nothing 0 0
+                                    seq nothing 0 0
+                                      . nothing 0 0
+                                        . nothing 0 0
+                                          name n nothing 0 0
+                                          name redir nothing 0 0
+                                        name fd2 nothing 0 0
+                                      seq nothing 0 0
+                                        . nothing 0 0
+                                          . nothing 0 0
+                                            name n nothing 0 0
+                                            name redir nothing 0 0
+                                          name fd1 nothing 0 0
+                                seq nothing 0 0
+                                  if nothing 0 0
+                                    == nothing 0 0
+typecheck tree: 
+fn(){} fn(f: string, mode: int, fd: int): Redirword 0 0
+  name makeredir fn(f: string, mode: int, fd: int): Redirword 0 0
+  seq nothing 0 0
+    return nothing 0 0
+      call nothing 0 0
+        name Redirword nothing 0 0
+        seq nothing 0 0
+          name nil polymorphic type 0 0
+          seq nothing 0 0
+            name f nothing 0 0
+            seq nothing 0 0
+              call nothing 0 0
+                name Redir nothing 0 0
+                seq nothing 0 0
+                  name mode nothing 0 0
+                  seq nothing 0 0
+                    name fd nothing 0 0
+                    seq nothing 0 0
+                      - nothing 0 0
+                        const (1) int 0 0
+typecheck tree: 
+fn(){} fn(ctxt: ref Context, n: ref Node, redirs: ref Redirlist, onto: list of ref Listnode): list of ref Listnode 0 0
+  name glom fn(ctxt: ref Context, n: ref Node, redirs: ref Redirlist, onto: list of ref Listnode): list of ref Listnode 0 0
+  seq nothing 0 0
+    if nothing 0 0
+      == nothing 0 0
+        name n nothing 0 0
+        name nil polymorphic type 0 0
+      seq nothing 0 0
+        return nothing 0 0
+          name nil polymorphic type 0 0
+    seq nothing 0 0
+      if nothing 0 0
+        != nothing 0 0
+          . nothing 0 0
+            name n nothing 0 0
+            name ntype nothing 0 0
+          name n_ADJ nothing 0 0
+        seq nothing 0 0
+          return nothing 0 0
+            call nothing 0 0
+              name listjoin nothing 0 0
+              seq nothing 0 0
+                call nothing 0 0
+                  name glomoperation nothing 0 0
+                  seq nothing 0 0
+                    name ctxt nothing 0 0
+                    seq nothing 0 0
+                      name n nothing 0 0
+                      seq nothing 0 0
+                        name redirs nothing 0 0
+                seq nothing 0 0
+                  name onto nothing 0 0
+      seq nothing 0 0
+        := nothing 0 0
+          name nlist nothing 0 0
+          call nothing 0 0
+            name glom nothing 0 0
+            seq nothing 0 0
+              name ctxt nothing 0 0
+              seq nothing 0 0
+                . nothing 0 0
+                  name n nothing 0 0
+                  name right nothing 0 0
+                seq nothing 0 0
+                  name redirs nothing 0 0
+                  seq nothing 0 0
+                    name onto nothing 0 0
+        seq nothing 0 0
+          if nothing 0 0
+            != nothing 0 0
+              . nothing 0 0
+                . nothing 0 0
+                  name n nothing 0 0
+                  name left nothing 0 0
+                name ntype nothing 0 0
+              name n_ADJ nothing 0 0
+            seq nothing 0 0
+              scope nothing 0 0
+                seq nothing 0 0
+                  = nothing 0 0
+                    name nlist nothing 0 0
+                    call nothing 0 0
+                      name listjoin nothing 0 0
+                      seq nothing 0 0
+                        call nothing 0 0
+                          name glomoperation nothing 0 0
+                          seq nothing 0 0
+                            name ctxt nothing 0 0
+                            seq nothing 0 0
+                              . nothing 0 0
+                                name n nothing 0 0
+                                name left nothing 0 0
+                              seq nothing 0 0
+                                name redirs nothing 0 0
+                        seq nothing 0 0
+                          name nlist nothing 0 0
+              = nothing 0 0
+                name nlist nothing 0 0
+                call nothing 0 0
+                  name glom nothing 0 0
+                  seq nothing 0 0
+                    name ctxt nothing 0 0
+                    seq nothing 0 0
+                      . nothing 0 0
+                        name n nothing 0 0
+                        name left nothing 0 0
+                      seq nothing 0 0
+                        name redirs nothing 0 0
+                        seq nothing 0 0
+                          name nlist nothing 0 0
+          seq nothing 0 0
+            return nothing 0 0
+              name nlist nothing 0 0
+typecheck tree: 
+fn(){} fn(left: list of ref Listnode, right: list of ref Listnode): list of ref Listnode 0 0
+  name listjoin fn(left: list of ref Listnode, right: list of ref Listnode): list of ref Listnode 0 0
+  seq nothing 0 0
+    vardecl list of ref Listnode 0 0
+      seq nothing 0 0
+    seq nothing 0 0
+      for nothing 0 0
+        != nothing 0 0
+          name left nothing 0 0
+          name nil polymorphic type 0 0
+        seq nothing 0 0
+          = nothing 0 0
+            name l nothing 0 0
+            :: nothing 0 0
+              hd nothing 0 0
+                name left nothing 0 0
+              name l nothing 0 0
+          = nothing 0 0
+            name left nothing 0 0
+            tl nothing 0 0
+              name left nothing 0 0
+      seq nothing 0 0
+        for nothing 0 0
+          != nothing 0 0
+            name l nothing 0 0
+            name nil polymorphic type 0 0
+          seq nothing 0 0
+            = nothing 0 0
+              name right nothing 0 0
+              :: nothing 0 0
+                hd nothing 0 0
+                  name l nothing 0 0
+                name right nothing 0 0
+            = nothing 0 0
+              name l nothing 0 0
+              tl nothing 0 0
+                name l nothing 0 0
+        seq nothing 0 0
+          return nothing 0 0
+            name right nothing 0 0
+typecheck tree: 
+fn(){} fn(ctxt: ref Context, cmd: list of ref Listnode, redir: ref Redir): ref Sys->FD 0 0
+  name pipecmd fn(ctxt: ref Context, cmd: list of ref Listnode, redir: ref Redir): ref Sys->FD 0 0
+  seq nothing 0 0
+    if nothing 0 0
+      || nothing 0 0
+        != nothing 0 0
+          . nothing 0 0
+            name redir nothing 0 0
+            name fd2 nothing 0 0
+          - nothing 0 0
+            const (1) int 0 0
+        & nothing 0 0
+          . nothing 0 0
+            name redir nothing 0 0
+            name rtype nothing 0 0
+          name OAPPEND nothing 0 0
+      seq nothing 0 0
+        call nothing 0 0
+          . nothing 0 0
+            name ctxt nothing 0 0
+            name fail nothing 0 0
+          seq nothing 0 0
+            const bad redir string 0 0
+            seq nothing 0 0
+              const sh: bad redirection string 0 0
+    seq nothing 0 0
+      := nothing 0 0
+        name r nothing 0 0
+        * nothing 0 0
+          name redir nothing 0 0
+      seq nothing 0 0
+        case nothing 0 0
+          . nothing 0 0
+            name redir nothing 0 0
+            name rtype nothing 0 0
+          seq nothing 0 0
+            label nothing 0 0
+              seq nothing 0 0
+                -> nothing 0 0
+                  name Sys nothing 0 0
+                  name OREAD nothing 0 0
+              scope nothing 0 0
+                = nothing 0 0
+                  . nothing 0 0
+                    name r nothing 0 0
+                    name rtype nothing 0 0
+                  -> nothing 0 0
+                    name Sys nothing 0 0
+                    name OWRITE nothing 0 0
+            seq nothing 0 0
+              label nothing 0 0
+                seq nothing 0 0
+                  -> nothing 0 0
+                    name Sys nothing 0 0
+                    name OWRITE nothing 0 0
+                scope nothing 0 0
+                  = nothing 0 0
+                    . nothing 0 0
+                      name r nothing 0 0
+                      name rtype nothing 0 0
+                    -> nothing 0 0
+                      name Sys nothing 0 0
+                      name OREAD nothing 0 0
+        seq nothing 0 0
+          := nothing 0 0
+            name p nothing 0 0
+            array array of ref Sys->FD 0 0
+              const (2) int 0 0
+          seq nothing 0 0
+            if nothing 0 0
+              == nothing 0 0
+                call nothing 0 0
+                  -> nothing 0 0
+                    name sys nothing 0 0
+                    name pipe nothing 0 0
+                  seq nothing 0 0
+                    name p nothing 0 0
+                - nothing 0 0
+                  const (1) int 0 0
+              seq nothing 0 0
+                call nothing 0 0
+                  . nothing 0 0
+                    name ctxt nothing 0 0
+                    name fail nothing 0 0
+                  seq nothing 0 0
+                    const no pipe string 0 0
+                    seq nothing 0 0
+                      call nothing 0 0
+                        -> nothing 0 0
+                          name sys nothing 0 0
+                          name sprint nothing 0 0
+                        seq nothing 0 0
+                          const sh: cannot make pipe: %r string 0 0
+            seq nothing 0 0
+              := nothing 0 0
+                name startchan nothing 0 0
+                chan chan of (int, ref Expropagate) 0 0
+              seq nothing 0 0
+                spawn nothing 0 0
+                  call nothing 0 0
+                    name runasync nothing 0 0
+                    seq nothing 0 0
+                      name ctxt nothing 0 0
+                      seq nothing 0 0
+                        const (1) int 0 0
+                        seq nothing 0 0
+                          name cmd nothing 0 0
+                          seq nothing 0 0
+                            ref nothing 0 0
+                              call nothing 0 0
+                                name Redirlist nothing 0 0
+                                seq nothing 0 0
+                                  :: nothing 0 0
+                              
+typecheck tree: 
+fn(){} fn(ctxt: ref Context, n: ref Node, redirs: ref Redirlist): list of ref Listnode 0 0
+  name glomoperation fn(ctxt: ref Context, n: ref Node, redirs: ref Redirlist): list of ref Listnode 0 0
+  seq nothing 0 0
+    if nothing 0 0
+      == nothing 0 0
+        name n nothing 0 0
+        name nil polymorphic type 0 0
+      seq nothing 0 0
+        return nothing 0 0
+          name nil polymorphic type 0 0
+    seq nothing 0 0
+      vardecl list of ref Listnode 0 0
+        seq nothing 0 0
+      seq nothing 0 0
+        case nothing 0 0
+          . nothing 0 0
+            name n nothing 0 0
+            name ntype nothing 0 0
+          seq nothing 0 0
+            label nothing 0 0
+              seq nothing 0 0
+                name n_WORD nothing 0 0
+              scope nothing 0 0
+                = nothing 0 0
+                  name nlist nothing 0 0
+                  :: nothing 0 0
+                    ref nothing 0 0
+                      call nothing 0 0
+                        name Listnode nothing 0 0
+                        seq nothing 0 0
+                          name nil polymorphic type 0 0
+                          seq nothing 0 0
+                            . nothing 0 0
+                              name n nothing 0 0
+                              name word nothing 0 0
+                    name nil polymorphic type 0 0
+            seq nothing 0 0
+              label nothing 0 0
+                seq nothing 0 0
+                  name n_REDIR nothing 0 0
+                scope nothing 0 0
+                  seq nothing 0 0
+                    seq nothing 0 0
+                      := nothing 0 0
+                        name wlist nothing 0 0
+                        call nothing 0 0
+                          name glob nothing 0 0
+                          seq nothing 0 0
+                            call nothing 0 0
+                              name glom nothing 0 0
+                              seq nothing 0 0
+                                name ctxt nothing 0 0
+                                seq nothing 0 0
+                                  . nothing 0 0
+                                    name n nothing 0 0
+                                    name left nothing 0 0
+                                  seq nothing 0 0
+                                    ref nothing 0 0
+                                      call nothing 0 0
+                                        name Redirlist nothing 0 0
+                                        seq nothing 0 0
+                                          name nil polymorphic type 0 0
+                                    seq nothing 0 0
+                                      name nil polymorphic type 0 0
+                      if nothing 0 0
+                        != nothing 0 0
+                          len nothing 0 0
+                            name wlist nothing 0 0
+                          const (1) int 0 0
+                        seq nothing 0 0
+                          call nothing 0 0
+                            . nothing 0 0
+                              name ctxt nothing 0 0
+                              name fail nothing 0 0
+                            seq nothing 0 0
+                              const bad redir string 0 0
+                              seq nothing 0 0
+                                const sh: single redirection operand required string 0 0
+                    if nothing 0 0
+                      != nothing 0 0
+                        . nothing 0 0
+                          hd nothing 0 0
+                            name wlist nothing 0 0
+                          name cmd nothing 0 0
+                        name nil polymorphic type 0 0
+                      seq nothing 0 0
+                        scope nothing 0 0
+                          seq nothing 0 0
+                            := nothing 0 0
+                              name fd nothing 0 0
+                              call nothing 0 0
+                                name pipecmd nothing 0 0
+                                seq nothing 0 0
+                                  name ctxt nothing 0 0
+            
+typecheck tree: 
+fn(){} fn(ctxt: ref Context, n: ref Node): list of ref Listnode 0 0
+  name subsbuiltin fn(ctxt: ref Context, n: ref Node): list of ref Listnode 0 0
+  seq nothing 0 0
+    if nothing 0 0
+      || nothing 0 0
+        || nothing 0 0
+          || nothing 0 0
+            == nothing 0 0
+              name n nothing 0 0
+              name nil polymorphic type 0 0
+            == nothing 0 0
+              . nothing 0 0
+                name n nothing 0 0
+                name ntype nothing 0 0
+              name n_SEQ nothing 0 0
+          == nothing 0 0
+            . nothing 0 0
+              name n nothing 0 0
+              name ntype nothing 0 0
+            name n_PIPE nothing 0 0
+        == nothing 0 0
+          . nothing 0 0
+            name n nothing 0 0
+            name ntype nothing 0 0
+          name n_NOWAIT nothing 0 0
+      seq nothing 0 0
+        call nothing 0 0
+          . nothing 0 0
+            name ctxt nothing 0 0
+            name fail nothing 0 0
+          seq nothing 0 0
+            const bad $ arg string 0 0
+            seq nothing 0 0
+              const sh: invalid argument to ${} operator string 0 0
+    seq nothing 0 0
+      := nothing 0 0
+        name r nothing 0 0
+        ref nothing 0 0
+          name Redirlist nothing 0 0
+      seq nothing 0 0
+        := nothing 0 0
+          name cmd nothing 0 0
+          call nothing 0 0
+            name glob nothing 0 0
+            seq nothing 0 0
+              call nothing 0 0
+                name glom nothing 0 0
+                seq nothing 0 0
+                  name ctxt nothing 0 0
+                  seq nothing 0 0
+                    name n nothing 0 0
+                    seq nothing 0 0
+                      name r nothing 0 0
+                      seq nothing 0 0
+                        name nil polymorphic type 0 0
+        seq nothing 0 0
+          if nothing 0 0
+            != nothing 0 0
+              . nothing 0 0
+                name r nothing 0 0
+                name r nothing 0 0
+              name nil polymorphic type 0 0
+            seq nothing 0 0
+              call nothing 0 0
+                . nothing 0 0
+                  name ctxt nothing 0 0
+                  name fail nothing 0 0
+                seq nothing 0 0
+                  const bad $ arg string 0 0
+                  seq nothing 0 0
+                    const sh: redirection not allowed in substitution string 0 0
+          seq nothing 0 0
+            = nothing 0 0
+              name r nothing 0 0
+              name nil polymorphic type 0 0
+            seq nothing 0 0
+              if nothing 0 0
+                || nothing 0 0
+                  || nothing 0 0
+                    == nothing 0 0
+                      name cmd nothing 0 0
+                      name nil polymorphic type 0 0
+                    == nothing 0 0
+                      . nothing 0 0
+                        hd nothing 0 0
+                          name cmd nothing 0 0
+                        name word nothing 0 0
+                      name nil polymorphic type 0 0
+                  != nothing 0 0
+                    . nothing 0 0
+                      hd nothing 0 0
+                        name cmd nothing 0 0
+                      name cmd nothing 0 0
+                    name nil polymorphic type 0 0
+                seq nothing 0 0
+                  call nothing 0 0
+                    . nothing 0 0
+                      name ctxt nothing 0 0
+                      name fail nothing 0 0
+                    seq nothing 0 0
+                      const bad $ arg string 0 0
+                      seq nothing 0 0
+                        const sh: bad builtin name string 0 0
+              seq nothing 0 0
+                := nothing 0 0
+                  tuple nothing 0 0
+                    seq nothing 0 0
+                      name nil polymorphic type 0 0
+                      seq nothing 0 0
+                        name bmods nothing 0 0
+                  call nothing 0 0
+                    name findbuiltin nothing 0 0
+                    seq nothing 0 0
+                      . nothing 0 0
+                        . nothi
+typecheck tree: 
+fn(){} fn(nil: ref Context, fd: ref Sys->FD, seps: string): list of ref Listnode 0 0
+  name getbq fn(nil: ref Context, fd: ref Sys->FD, seps: string): list of ref Listnode 0 0
+  seq nothing 0 0
+    := nothing 0 0
+      name buf nothing 0 0
+      array array of byte 0 0
+        -> nothing 0 0
+          name Sys nothing 0 0
+          name ATOMICIO nothing 0 0
+    seq nothing 0 0
+      := nothing 0 0
+        name buflen nothing 0 0
+        const (0) int 0 0
+      seq nothing 0 0
+        for nothing 0 0
+          > nothing 0 0
+            := nothing 0 0
+              name n nothing 0 0
+              call nothing 0 0
+                -> nothing 0 0
+                  name sys nothing 0 0
+                  name read nothing 0 0
+                seq nothing 0 0
+                  name fd nothing 0 0
+                  seq nothing 0 0
+                    slice nothing 0 0
+                      name buf nothing 0 0
+                      seq nothing 0 0
+                        name buflen nothing 0 0
+                        nothing nothing 0 0
+                    seq nothing 0 0
+                      - nothing 0 0
+                        len nothing 0 0
+                          name buf nothing 0 0
+                        name buflen nothing 0 0
+            const (0) int 0 0
+          seq nothing 0 0
+            scope nothing 0 0
+              seq nothing 0 0
+                += nothing 0 0
+                  name buflen nothing 0 0
+                  name n nothing 0 0
+                seq nothing 0 0
+                  if nothing 0 0
+                    == nothing 0 0
+                      name buflen nothing 0 0
+                      len nothing 0 0
+                        name buf nothing 0 0
+                    seq nothing 0 0
+                      scope nothing 0 0
+                        seq nothing 0 0
+                          := nothing 0 0
+                            name nbuf nothing 0 0
+                            array array of byte 0 0
+                              * nothing 0 0
+                                name buflen nothing 0 0
+                                const (2) int 0 0
+                          seq nothing 0 0
+                            = nothing 0 0
+                              slice nothing 0 0
+                                name nbuf nothing 0 0
+                                seq nothing 0 0
+                                  const (0) int 0 0
+                                  nothing nothing 0 0
+                              slice nothing 0 0
+                                name buf nothing 0 0
+                                seq nothing 0 0
+                                  const (0) int 0 0
+                                  nothing nothing 0 0
+                            seq nothing 0 0
+                              = nothing 0 0
+                                name buf nothing 0 0
+                                name nbuf nothing 0 0
+        seq nothing 0 0
+          vardecl list of string 0 0
+            seq nothing 0 0
+          seq nothing 0 0
+            if nothing 0 0
+              != nothing 0 0
+                name seps nothing 0 0
+                name nil polymorphic type 0 0
+              seq nothing 0 0
+                = nothing 0 0
+                  tuple nothing 0 0
+                    seq nothing 0 0
+                      name nil polymorphic type 0 0
+                      seq nothing 0 0
+                        name l nothing 0 0
+                  call nothing 0 0
+                    -> nothing 0 0
+                      name sys nothing 0 0
+                      name tokenize nothing 0 0
+                    seq nothing 0 0
+                      cast string 0 0
+                        slice nothing 0 0
+                          name buf nothing 0 0
+                          seq nothing 0 0
+                            const (0) int 0 0
+                            name buflen nothing 0 0
+                      seq nothing 0 0
+                        name seps nothing 0 0
+                = nothing 0 0
+                  name l nothing 0 0
+                  :: nothing 0 0
+                    
+typecheck tree: 
+fn(){} fn(ctxt: ref Context, cmd: list of ref Listnode, seps: string): (list of ref Listnode, string) 0 0
+  name bq fn(ctxt: ref Context, cmd: list of ref Listnode, seps: string): (list of ref Listnode, string) 0 0
+  seq nothing 0 0
+    := nothing 0 0
+      name fds nothing 0 0
+      array array of ref Sys->FD 0 0
+        const (2) int 0 0
+    seq nothing 0 0
+      if nothing 0 0
+        == nothing 0 0
+          call nothing 0 0
+            -> nothing 0 0
+              name sys nothing 0 0
+              name pipe nothing 0 0
+            seq nothing 0 0
+              name fds nothing 0 0
+          - nothing 0 0
+            const (1) int 0 0
+        seq nothing 0 0
+          call nothing 0 0
+            . nothing 0 0
+              name ctxt nothing 0 0
+              name fail nothing 0 0
+            seq nothing 0 0
+              const no pipe string 0 0
+              seq nothing 0 0
+                call nothing 0 0
+                  -> nothing 0 0
+                    name sys nothing 0 0
+                    name sprint nothing 0 0
+                  seq nothing 0 0
+                    const sh: cannot make pipe: %r string 0 0
+      seq nothing 0 0
+        := nothing 0 0
+          name r nothing 0 0
+          call nothing 0 0
+            name rdir nothing 0 0
+            seq nothing 0 0
+              index nothing 0 0
+                name fds nothing 0 0
+                const (1) int 0 0
+        seq nothing 0 0
+          = nothing 0 0
+            index nothing 0 0
+              name fds nothing 0 0
+              const (1) int 0 0
+            name nil polymorphic type 0 0
+          seq nothing 0 0
+            := nothing 0 0
+              name startchan nothing 0 0
+              chan chan of (int, ref Expropagate) 0 0
+            seq nothing 0 0
+              spawn nothing 0 0
+                call nothing 0 0
+                  name runasync nothing 0 0
+                  seq nothing 0 0
+                    name ctxt nothing 0 0
+                    seq nothing 0 0
+                      const (0) int 0 0
+                      seq nothing 0 0
+                        name cmd nothing 0 0
+                        seq nothing 0 0
+                          name r nothing 0 0
+                          seq nothing 0 0
+                            name startchan nothing 0 0
+              seq nothing 0 0
+                := nothing 0 0
+                  tuple nothing 0 0
+                    seq nothing 0 0
+                      name exepid nothing 0 0
+                      seq nothing 0 0
+                        name exprop nothing 0 0
+                  <- nothing 0 0
+                    name startchan nothing 0 0
+                seq nothing 0 0
+                  = nothing 0 0
+                    name r nothing 0 0
+                    name nil polymorphic type 0 0
+                  seq nothing 0 0
+                    := nothing 0 0
+                      name bqlist nothing 0 0
+                      call nothing 0 0
+                        name getbq nothing 0 0
+                        seq nothing 0 0
+                          name ctxt nothing 0 0
+                          seq nothing 0 0
+                            index nothing 0 0
+                              name fds nothing 0 0
+                              const (0) int 0 0
+                            seq nothing 0 0
+                              name seps nothing 0 0
+                    seq nothing 0 0
+                      call nothing 0 0
+                        name waitfor nothing 0 0
+                        seq nothing 0 0
+                          name ctxt nothing 0 0
+                          seq nothing 0 0
+                            :: nothing 0 0
+                              name exepid nothing 0 0
+                              name nil polymorphic type 0 0
+                      seq nothing 0 0
+                        if nothing 0 0
+                          != nothing 0 0
+                            . nothing 0 0
+                              name exprop nothing 0 0
+                              name name nothing 0 0
+                            name nil polymorphic ty
+typecheck tree: 
+fn(){} fn(fd: ref Sys->FD): ref Redirlist 0 0
+  name rdir fn(fd: ref Sys->FD): ref Redirlist 0 0
+  seq nothing 0 0
+    return nothing 0 0
+      ref nothing 0 0
+        call nothing 0 0
+          name Redirlist nothing 0 0
+          seq nothing 0 0
+            :: nothing 0 0
+              call nothing 0 0
+                name Redirword nothing 0 0
+                seq nothing 0 0
+                  name fd nothing 0 0
+                  seq nothing 0 0
+                    name nil polymorphic type 0 0
+                    seq nothing 0 0
+                      call nothing 0 0
+                        name Redir nothing 0 0
+                        seq nothing 0 0
+                          -> nothing 0 0
+                            name Sys nothing 0 0
+                            name OWRITE nothing 0 0
+                          seq nothing 0 0
+                            const (1) int 0 0
+                            seq nothing 0 0
+                              - nothing 0 0
+                                const (1) int 0 0
+              name nil polymorphic type 0 0
+typecheck tree: 
+fn(){} fn(p1: ref Listnode, p2: ref Listnode): ref Listnode 0 0
+  name concatwords fn(p1: ref Listnode, p2: ref Listnode): ref Listnode 0 0
+  seq nothing 0 0
+    if nothing 0 0
+      && nothing 0 0
+        == nothing 0 0
+          . nothing 0 0
+            name p1 nothing 0 0
+            name word nothing 0 0
+          name nil polymorphic type 0 0
+        != nothing 0 0
+          . nothing 0 0
+            name p1 nothing 0 0
+            name cmd nothing 0 0
+          name nil polymorphic type 0 0
+      seq nothing 0 0
+        = nothing 0 0
+          . nothing 0 0
+            name p1 nothing 0 0
+            name word nothing 0 0
+          call nothing 0 0
+            name cmd2string nothing 0 0
+            seq nothing 0 0
+              . nothing 0 0
+                name p1 nothing 0 0
+                name cmd nothing 0 0
+    seq nothing 0 0
+      if nothing 0 0
+        && nothing 0 0
+          == nothing 0 0
+            . nothing 0 0
+              name p2 nothing 0 0
+              name word nothing 0 0
+            name nil polymorphic type 0 0
+          != nothing 0 0
+            . nothing 0 0
+              name p2 nothing 0 0
+              name cmd nothing 0 0
+            name nil polymorphic type 0 0
+        seq nothing 0 0
+          = nothing 0 0
+            . nothing 0 0
+              name p2 nothing 0 0
+              name word nothing 0 0
+            call nothing 0 0
+              name cmd2string nothing 0 0
+              seq nothing 0 0
+                . nothing 0 0
+                  name p2 nothing 0 0
+                  name cmd nothing 0 0
+      seq nothing 0 0
+        return nothing 0 0
+          ref nothing 0 0
+            call nothing 0 0
+              name Listnode nothing 0 0
+              seq nothing 0 0
+                name nil polymorphic type 0 0
+                seq nothing 0 0
+                  + nothing 0 0
+                    . nothing 0 0
+                      name p1 nothing 0 0
+                      name word nothing 0 0
+                    . nothing 0 0
+                      name p2 nothing 0 0
+                      name word nothing 0 0
+typecheck tree: 
+fn(){} fn(ctxt: ref Context, nl1: list of ref Listnode, nl2: list of ref Listnode): list of ref Listnode 0 0
+  name concat fn(ctxt: ref Context, nl1: list of ref Listnode, nl2: list of ref Listnode): list of ref Listnode 0 0
+  seq nothing 0 0
+    if nothing 0 0
+      || nothing 0 0
+        == nothing 0 0
+          name nl1 nothing 0 0
+          name nil polymorphic type 0 0
+        == nothing 0 0
+          name nl2 nothing 0 0
+          name nil polymorphic type 0 0
+      seq nothing 0 0
+        scope nothing 0 0
+          seq nothing 0 0
+            if nothing 0 0
+              && nothing 0 0
+                == nothing 0 0
+                  name nl1 nothing 0 0
+                  name nil polymorphic type 0 0
+                == nothing 0 0
+                  name nl2 nothing 0 0
+                  name nil polymorphic type 0 0
+              seq nothing 0 0
+                return nothing 0 0
+                  name nil polymorphic type 0 0
+            seq nothing 0 0
+              call nothing 0 0
+                . nothing 0 0
+                  name ctxt nothing 0 0
+                  name fail nothing 0 0
+                seq nothing 0 0
+                  const bad concatenation string 0 0
+                  seq nothing 0 0
+                    const sh: null list in concatenation string 0 0
+    seq nothing 0 0
+      vardecl list of ref Listnode 0 0
+        seq nothing 0 0
+      seq nothing 0 0
+        if nothing 0 0
+          || nothing 0 0
+            == nothing 0 0
+              tl nothing 0 0
+                name nl1 nothing 0 0
+              name nil polymorphic type 0 0
+            == nothing 0 0
+              tl nothing 0 0
+                name nl2 nothing 0 0
+              name nil polymorphic type 0 0
+          seq nothing 0 0
+            scope nothing 0 0
+              seq nothing 0 0
+                := nothing 0 0
+                  name p1 nothing 0 0
+                  name nl1 nothing 0 0
+                seq nothing 0 0
+                  for nothing 0 0
+                    != nothing 0 0
+                      name p1 nothing 0 0
+                      name nil polymorphic type 0 0
+                    seq nothing 0 0
+                      seq nothing 0 0
+                        := nothing 0 0
+                          name p2 nothing 0 0
+                          name nl2 nothing 0 0
+                        for nothing 0 0
+                          != nothing 0 0
+                            name p2 nothing 0 0
+                            name nil polymorphic type 0 0
+                          seq nothing 0 0
+                            = nothing 0 0
+                              name ret nothing 0 0
+                              :: nothing 0 0
+                                call nothing 0 0
+                                  name concatwords nothing 0 0
+                                  seq nothing 0 0
+                                    hd nothing 0 0
+                                      name p1 nothing 0 0
+                                    seq nothing 0 0
+                                      hd nothing 0 0
+                                        name p2 nothing 0 0
+                                name ret nothing 0 0
+                            = nothing 0 0
+                              name p2 nothing 0 0
+                              tl nothing 0 0
+                                name p2 nothing 0 0
+                      = nothing 0 0
+                        name p1 nothing 0 0
+                        tl nothing 0 0
+                          name p1 nothing 0 0
+            scope nothing 0 0
+              seq nothing 0 0
+                if nothing 0 0
+                  != nothing 0 0
+                    len nothing 0 0
+                      name nl1 nothing 0 0
+                    len nothing 0 0
+                      name nl2 nothing 0 0
+                  seq nothing 0 0
+                    call nothing 0 0
+                      . nothing 0 0
+                        name ctxt nothing 0 0
+                        name fail nothing 0 0
+                      seq nothing 0 0
+                        const bad con
+typecheck tree: 
+fn(){} fn(ctxt: ref Context, copyenv: int, argv: list of ref Listnode, redirs: ref Redirlist, startchan: chan of (int, ref Expropagate)) 0 0
+  name runasync fn(ctxt: ref Context, copyenv: int, argv: list of ref Listnode, redirs: ref Redirlist, startchan: chan of (int, ref Expropagate)) 0 0
+  seq nothing 0 0
+    vardecl string 0 0
+      seq nothing 0 0
+    seq nothing 0 0
+      := nothing 0 0
+        name pid nothing 0 0
+        call nothing 0 0
+          -> nothing 0 0
+            name sys nothing 0 0
+            name pctl nothing 0 0
+          seq nothing 0 0
+            -> nothing 0 0
+              name sys nothing 0 0
+              name FORKFD nothing 0 0
+            seq nothing 0 0
+              name nil polymorphic type 0 0
+      seq nothing 0 0
+        if nothing 0 0
+          name DEBUG nothing 0 0
+          seq nothing 0 0
+            call nothing 0 0
+              name debug nothing 0 0
+              seq nothing 0 0
+                call nothing 0 0
+                  name sprint nothing 0 0
+                  seq nothing 0 0
+                    const in async (len redirs: %d) string 0 0
+                    seq nothing 0 0
+                      len nothing 0 0
+                        . nothing 0 0
+                          name redirs nothing 0 0
+                          name r nothing 0 0
+        seq nothing 0 0
+          = nothing 0 0
+            name ctxt nothing 0 0
+            call nothing 0 0
+              . nothing 0 0
+                name ctxt nothing 0 0
+                name copy nothing 0 0
+              seq nothing 0 0
+                name copyenv nothing 0 0
+          seq nothing 0 0
+            := nothing 0 0
+              name exprop nothing 0 0
+              ref nothing 0 0
+                name Expropagate nothing 0 0
+            seq nothing 0 0
+              exstat nothing 0 0
+                scope nothing 0 0
+                  seq nothing 0 0
+                    := nothing 0 0
+                      name newfdl nothing 0 0
+                      call nothing 0 0
+                        name doredirs nothing 0 0
+                        seq nothing 0 0
+                          name ctxt nothing 0 0
+                          seq nothing 0 0
+                            name redirs nothing 0 0
+                    seq nothing 0 0
+                      = nothing 0 0
+                        name redirs nothing 0 0
+                        name nil polymorphic type 0 0
+                      seq nothing 0 0
+                        if nothing 0 0
+                          != nothing 0 0
+                            name newfdl nothing 0 0
+                            name nil polymorphic type 0 0
+                          seq nothing 0 0
+                            call nothing 0 0
+                              -> nothing 0 0
+                                name sys nothing 0 0
+                                name pctl nothing 0 0
+                              seq nothing 0 0
+                                -> nothing 0 0
+                                  name Sys nothing 0 0
+                                  name NEWFD nothing 0 0
+                                seq nothing 0 0
+                                  name newfdl nothing 0 0
+                        seq nothing 0 0
+                          = nothing 0 0
+                            . nothing 0 0
+                              name ctxt nothing 0 0
+                              name waitfd nothing 0 0
+                            call nothing 0 0
+                              name waitfd nothing 0 0
+                          seq nothing 0 0
+                            <-= nothing 0 0
+                              name startchan nothing 0 0
+                              tuple nothing 0 0
+                                seq nothing 0 0
+                                  name pid nothing 0 0
+                                  seq nothing 0 0
+                                    name exprop nothing 0 0
+                            seq nothing 0 0
+                              = nothing 0 0
+                                name startchan nothing 0 0
+             
+typecheck tree: 
+fn(){} fn(ctxt: ref Context, argv: list of ref Listnode, redirs: ref Redirlist, last: int): string 0 0
+  name runsync fn(ctxt: ref Context, argv: list of ref Listnode, redirs: ref Redirlist, last: int): string 0 0
+  seq nothing 0 0
+    if nothing 0 0
+      name DEBUG nothing 0 0
+      seq nothing 0 0
+        call nothing 0 0
+          name debug nothing 0 0
+          seq nothing 0 0
+            call nothing 0 0
+              -> nothing 0 0
+                name sys nothing 0 0
+                name sprint nothing 0 0
+              seq nothing 0 0
+                const in sync (len redirs: %d; last: %d) string 0 0
+                seq nothing 0 0
+                  len nothing 0 0
+                    . nothing 0 0
+                      name redirs nothing 0 0
+                      name r nothing 0 0
+                  seq nothing 0 0
+                    name last nothing 0 0
+    seq nothing 0 0
+      if nothing 0 0
+        && nothing 0 0
+          != nothing 0 0
+            . nothing 0 0
+              name redirs nothing 0 0
+              name r nothing 0 0
+            name nil polymorphic type 0 0
+          ! nothing 0 0
+            name last nothing 0 0
+        seq nothing 0 0
+          scope nothing 0 0
+            seq nothing 0 0
+              := nothing 0 0
+                name startchan nothing 0 0
+                chan chan of (int, ref Expropagate) 0 0
+              seq nothing 0 0
+                spawn nothing 0 0
+                  call nothing 0 0
+                    name runasync nothing 0 0
+                    seq nothing 0 0
+                      name ctxt nothing 0 0
+                      seq nothing 0 0
+                        const (0) int 0 0
+                        seq nothing 0 0
+                          name argv nothing 0 0
+                          seq nothing 0 0
+                            name redirs nothing 0 0
+                            seq nothing 0 0
+                              name startchan nothing 0 0
+                seq nothing 0 0
+                  := nothing 0 0
+                    tuple nothing 0 0
+                      seq nothing 0 0
+                        name pid nothing 0 0
+                        seq nothing 0 0
+                          name exprop nothing 0 0
+                    <- nothing 0 0
+                      name startchan nothing 0 0
+                  seq nothing 0 0
+                    = nothing 0 0
+                      name redirs nothing 0 0
+                      name nil polymorphic type 0 0
+                    seq nothing 0 0
+                      := nothing 0 0
+                        name r nothing 0 0
+                        call nothing 0 0
+                          name waitfor nothing 0 0
+                          seq nothing 0 0
+                            name ctxt nothing 0 0
+                            seq nothing 0 0
+                              :: nothing 0 0
+                                name pid nothing 0 0
+                                name nil polymorphic type 0 0
+                      seq nothing 0 0
+                        if nothing 0 0
+                          != nothing 0 0
+                            . nothing 0 0
+                              name exprop nothing 0 0
+                              name name nothing 0 0
+                            name nil polymorphic type 0 0
+                          seq nothing 0 0
+                            raise nothing 0 0
+                              . nothing 0 0
+                                name exprop nothing 0 0
+                                name name nothing 0 0
+                        seq nothing 0 0
+                          return nothing 0 0
+                            name r nothing 0 0
+          scope nothing 0 0
+            seq nothing 0 0
+              := nothing 0 0
+                name newfdl nothing 0 0
+                call nothing 0 0
+                  name doredirs nothing 0 0
+                  seq nothing 0 0
+                    name ctxt nothing 0 0
+                    seq nothing 0 0
+                      name redirs nothing 0 0
+              seq nothing 0 0
+            
+typecheck tree: 
+fn(){} fn(p: string): int 0 0
+  name absolute fn(p: string): int 0 0
+  seq nothing 0 0
+    if nothing 0 0
+      < nothing 0 0
+        len nothing 0 0
+          name p nothing 0 0
+        const (2) int 0 0
+      seq nothing 0 0
+        return nothing 0 0
+          const (0) int 0 0
+    seq nothing 0 0
+      if nothing 0 0
+        || nothing 0 0
+          == nothing 0 0
+            index nothing 0 0
+              name p nothing 0 0
+              const (0) int 0 0
+            const (47) int 0 0
+          == nothing 0 0
+            index nothing 0 0
+              name p nothing 0 0
+              const (0) int 0 0
+            const (35) int 0 0
+        seq nothing 0 0
+          return nothing 0 0
+            const (1) int 0 0
+      seq nothing 0 0
+        if nothing 0 0
+          || nothing 0 0
+            < nothing 0 0
+              len nothing 0 0
+                name p nothing 0 0
+              const (3) int 0 0
+            != nothing 0 0
+              index nothing 0 0
+                name p nothing 0 0
+                const (0) int 0 0
+              const (46) int 0 0
+          seq nothing 0 0
+            return nothing 0 0
+              const (0) int 0 0
+        seq nothing 0 0
+          if nothing 0 0
+            == nothing 0 0
+              index nothing 0 0
+                name p nothing 0 0
+                const (1) int 0 0
+              const (47) int 0 0
+            seq nothing 0 0
+              return nothing 0 0
+                const (1) int 0 0
+          seq nothing 0 0
+            if nothing 0 0
+              && nothing 0 0
+                == nothing 0 0
+                  index nothing 0 0
+                    name p nothing 0 0
+                    const (1) int 0 0
+                  const (46) int 0 0
+                == nothing 0 0
+                  index nothing 0 0
+                    name p nothing 0 0
+                    const (2) int 0 0
+                  const (47) int 0 0
+              seq nothing 0 0
+                return nothing 0 0
+                  const (1) int 0 0
+            seq nothing 0 0
+              return nothing 0 0
+                const (0) int 0 0
+typecheck tree: 
+fn(){} fn(ctxt: ref Context, args: list of ref Listnode, last: int): string 0 0
+  name runexternal fn(ctxt: ref Context, args: list of ref Listnode, last: int): string 0 0
+  seq nothing 0 0
+    := nothing 0 0
+      name progname nothing 0 0
+      . nothing 0 0
+        hd nothing 0 0
+          name args nothing 0 0
+        name word nothing 0 0
+    seq nothing 0 0
+      := nothing 0 0
+        name disfile nothing 0 0
+        const (0) int 0 0
+      seq nothing 0 0
+        if nothing 0 0
+          && nothing 0 0
+            >= nothing 0 0
+              len nothing 0 0
+                name progname nothing 0 0
+              const (4) int 0 0
+            == nothing 0 0
+              slice nothing 0 0
+                name progname nothing 0 0
+                seq nothing 0 0
+                  - nothing 0 0
+                    len nothing 0 0
+                      name progname nothing 0 0
+                    const (4) int 0 0
+                  nothing nothing 0 0
+              const .dis string 0 0
+          seq nothing 0 0
+            = nothing 0 0
+              name disfile nothing 0 0
+              const (1) int 0 0
+        seq nothing 0 0
+          vardecl list of string 0 0
+            seq nothing 0 0
+          seq nothing 0 0
+            if nothing 0 0
+              call nothing 0 0
+                name absolute nothing 0 0
+                seq nothing 0 0
+                  name progname nothing 0 0
+              seq nothing 0 0
+                = nothing 0 0
+                  name pathlist nothing 0 0
+                  :: nothing 0 0
+                    const  string 0 0
+                    name nil polymorphic type 0 0
+                if nothing 0 0
+                  != nothing 0 0
+                    := nothing 0 0
+                      name pl nothing 0 0
+                      call nothing 0 0
+                        . nothing 0 0
+                          name ctxt nothing 0 0
+                          name get nothing 0 0
+                        seq nothing 0 0
+                          const path string 0 0
+                    name nil polymorphic type 0 0
+                  seq nothing 0 0
+                    = nothing 0 0
+                      name pathlist nothing 0 0
+                      call nothing 0 0
+                        name list2stringlist nothing 0 0
+                        seq nothing 0 0
+                          name pl nothing 0 0
+                    = nothing 0 0
+                      name pathlist nothing 0 0
+                      :: nothing 0 0
+                        const /dis string 0 0
+                        :: nothing 0 0
+                          const . string 0 0
+                          name nil polymorphic type 0 0
+            seq nothing 0 0
+              := nothing 0 0
+                name err nothing 0 0
+                const  string 0 0
+              seq nothing 0 0
+                do nothing 0 0
+                  && nothing 0 0
+                    != nothing 0 0
+                      name pathlist nothing 0 0
+                      name nil polymorphic type 0 0
+                    call nothing 0 0
+                      name nonexistent nothing 0 0
+                      seq nothing 0 0
+                        name err nothing 0 0
+                  scope nothing 0 0
+                    seq nothing 0 0
+                      vardecl string 0 0
+                        seq nothing 0 0
+                      seq nothing 0 0
+                        if nothing 0 0
+                          != nothing 0 0
+                            hd nothing 0 0
+                              name pathlist nothing 0 0
+                            const  string 0 0
+                          seq nothing 0 0
+                            = nothing 0 0
+                              name path nothing 0 0
+                              + nothing 0 0
+                                + nothing 0 0
+                                  hd nothing 0 0
+                                    name pathlist nothing 0 0
+                                  const / string 0 0
+                                name progname nothing 0 0
+ 
+typecheck tree: 
+fn(){} fn(e: string): string 0 0
+  name failurestatus fn(e: string): string 0 0
+  seq nothing 0 0
+    := nothing 0 0
+      name s nothing 0 0
+      slice nothing 0 0
+        name e nothing 0 0
+        seq nothing 0 0
+          const (5) int 0 0
+          nothing nothing 0 0
+    seq nothing 0 0
+      for nothing 0 0
+        && nothing 0 0
+          != nothing 0 0
+            name s nothing 0 0
+            name nil polymorphic type 0 0
+          || nothing 0 0
+            == nothing 0 0
+              index nothing 0 0
+                name s nothing 0 0
+                const (0) int 0 0
+              const (32) int 0 0
+            == nothing 0 0
+              index nothing 0 0
+                name s nothing 0 0
+                const (0) int 0 0
+              const (9) int 0 0
+        seq nothing 0 0
+          = nothing 0 0
+            name s nothing 0 0
+            slice nothing 0 0
+              name s nothing 0 0
+              seq nothing 0 0
+                const (1) int 0 0
+                nothing nothing 0 0
+      seq nothing 0 0
+        if nothing 0 0
+          != nothing 0 0
+            name s nothing 0 0
+            name nil polymorphic type 0 0
+          seq nothing 0 0
+            return nothing 0 0
+              name s nothing 0 0
+        seq nothing 0 0
+          return nothing 0 0
+            const failed string 0 0
+typecheck tree: 
+fn(){} fn(ctxt: ref Context, fd: ref Sys->FD, path: string, argv: list of ref Listnode, last: int): string 0 0
+  name runhashpling fn(ctxt: ref Context, fd: ref Sys->FD, path: string, argv: list of ref Listnode, last: int): string 0 0
+  seq nothing 0 0
+    := nothing 0 0
+      name header nothing 0 0
+      array array of byte 0 0
+        const (1024) int 0 0
+    seq nothing 0 0
+      := nothing 0 0
+        name n nothing 0 0
+        call nothing 0 0
+          -> nothing 0 0
+            name sys nothing 0 0
+            name read nothing 0 0
+          seq nothing 0 0
+            name fd nothing 0 0
+            seq nothing 0 0
+              name header nothing 0 0
+              seq nothing 0 0
+                len nothing 0 0
+                  name header nothing 0 0
+      seq nothing 0 0
+        seq nothing 0 0
+          := nothing 0 0
+            name i nothing 0 0
+            const (0) int 0 0
+          for nothing 0 0
+            < nothing 0 0
+              name i nothing 0 0
+              name n nothing 0 0
+            seq nothing 0 0
+              if nothing 0 0
+                == nothing 0 0
+                  index nothing 0 0
+                    name header nothing 0 0
+                    name i nothing 0 0
+                  cast byte 0 0
+                    const (10) int 0 0
+                seq nothing 0 0
+                  break nothing 0 0
+              ++ nothing 0 0
+                name i nothing 0 0
+        seq nothing 0 0
+          if nothing 0 0
+            || nothing 0 0
+              || nothing 0 0
+                || nothing 0 0
+                  == nothing 0 0
+                    name i nothing 0 0
+                    name n nothing 0 0
+                  < nothing 0 0
+                    name i nothing 0 0
+                    const (3) int 0 0
+                != nothing 0 0
+                  index nothing 0 0
+                    name header nothing 0 0
+                    const (0) int 0 0
+                  cast byte 0 0
+                    const (35) int 0 0
+              != nothing 0 0
+                index nothing 0 0
+                  name header nothing 0 0
+                  const (1) int 0 0
+                cast byte 0 0
+                  const (33) int 0 0
+            seq nothing 0 0
+              scope nothing 0 0
+                seq nothing 0 0
+                  call nothing 0 0
+                    name diagnostic nothing 0 0
+                    seq nothing 0 0
+                      name ctxt nothing 0 0
+                      seq nothing 0 0
+                        + nothing 0 0
+                          const bad script header on  string 0 0
+                          name path nothing 0 0
+                  seq nothing 0 0
+                    return nothing 0 0
+                      const bad header string 0 0
+          seq nothing 0 0
+            := nothing 0 0
+              tuple nothing 0 0
+                seq nothing 0 0
+                  name nil polymorphic type 0 0
+                  seq nothing 0 0
+                    name args nothing 0 0
+              call nothing 0 0
+                -> nothing 0 0
+                  name sys nothing 0 0
+                  name tokenize nothing 0 0
+                seq nothing 0 0
+                  cast string 0 0
+                    slice nothing 0 0
+                      name header nothing 0 0
+                      seq nothing 0 0
+                        const (2) int 0 0
+                        name i nothing 0 0
+                  seq nothing 0 0
+                    const  	 string 0 0
+            seq nothing 0 0
+              if nothing 0 0
+                == nothing 0 0
+                  name args nothing 0 0
+                  name nil polymorphic type 0 0
+                seq nothing 0 0
+                  scope nothing 0 0
+                    seq nothing 0 0
+                      call nothing 0 0
+                        name diagnostic nothing 0 0
+                        seq nothing 0 0
+                          name ctxt nothing 0 0
+                          seq nothing 0 0
+                            + nothing 0 0
+                              con
+typecheck tree: 
+fn(){} fn(ctxt: ref Context, args: list of ref Listnode, last: int): string 0 0
+  name runblock fn(ctxt: ref Context, args: list of ref Listnode, last: int): string 0 0
+  seq nothing 0 0
+    := nothing 0 0
+      name cmd nothing 0 0
+      . nothing 0 0
+        hd nothing 0 0
+          name args nothing 0 0
+        name cmd nothing 0 0
+    seq nothing 0 0
+      if nothing 0 0
+        == nothing 0 0
+          name cmd nothing 0 0
+          name nil polymorphic type 0 0
+        seq nothing 0 0
+          scope nothing 0 0
+            seq nothing 0 0
+              := nothing 0 0
+                name lex nothing 0 0
+                call nothing 0 0
+                  . nothing 0 0
+                    name YYLEX nothing 0 0
+                    name initstring nothing 0 0
+                  seq nothing 0 0
+                    . nothing 0 0
+                      hd nothing 0 0
+                        name args nothing 0 0
+                      name word nothing 0 0
+              seq nothing 0 0
+                vardecl string 0 0
+                  seq nothing 0 0
+                seq nothing 0 0
+                  = nothing 0 0
+                    tuple nothing 0 0
+                      seq nothing 0 0
+                        name cmd nothing 0 0
+                        seq nothing 0 0
+                          name err nothing 0 0
+                    call nothing 0 0
+                      name doparse nothing 0 0
+                      seq nothing 0 0
+                        name lex nothing 0 0
+                        seq nothing 0 0
+                          const  string 0 0
+                          seq nothing 0 0
+                            const (0) int 0 0
+                  seq nothing 0 0
+                    if nothing 0 0
+                      == nothing 0 0
+                        name cmd nothing 0 0
+                        name nil polymorphic type 0 0
+                      seq nothing 0 0
+                        call nothing 0 0
+                          . nothing 0 0
+                            name ctxt nothing 0 0
+                            name fail nothing 0 0
+                          seq nothing 0 0
+                            const parse error string 0 0
+                            seq nothing 0 0
+                              + nothing 0 0
+                                const sh:  string 0 0
+                                name err nothing 0 0
+                    seq nothing 0 0
+                      = nothing 0 0
+                        . nothing 0 0
+                          hd nothing 0 0
+                            name args nothing 0 0
+                          name cmd nothing 0 0
+                        name cmd nothing 0 0
+      seq nothing 0 0
+        call nothing 0 0
+          . nothing 0 0
+            name ctxt nothing 0 0
+            name push nothing 0 0
+        seq nothing 0 0
+          exstat nothing 0 0
+            scope nothing 0 0
+              seq nothing 0 0
+                call nothing 0 0
+                  . nothing 0 0
+                    name ctxt nothing 0 0
+                    name setlocal nothing 0 0
+                  seq nothing 0 0
+                    const 0 string 0 0
+                    seq nothing 0 0
+                      :: nothing 0 0
+                        hd nothing 0 0
+                          name args nothing 0 0
+                        name nil polymorphic type 0 0
+                seq nothing 0 0
+                  call nothing 0 0
+                    . nothing 0 0
+                      name ctxt nothing 0 0
+                      name setlocal nothing 0 0
+                    seq nothing 0 0
+                      const * string 0 0
+                      seq nothing 0 0
+                        tl nothing 0 0
+                          name args nothing 0 0
+                  seq nothing 0 0
+                    if nothing 0 0
+                      && nothing 0 0
+                        != nothing 0 0
+                          name cmd nothing 0 0
+                          name nil polymorphic type 0 0
+                        == nothing 0 0
+                          . no
+typecheck tree: 
+fn(){} fn(ctxt: ref Context, args: list of ref Listnode, lseq: int): (int, string) 0 0
+  name trybuiltin fn(ctxt: ref Context, args: list of ref Listnode, lseq: int): (int, string) 0 0
+  seq nothing 0 0
+    := nothing 0 0
+      tuple nothing 0 0
+        seq nothing 0 0
+          name nil polymorphic type 0 0
+          seq nothing 0 0
+            name bmods nothing 0 0
+      call nothing 0 0
+        name findbuiltin nothing 0 0
+        seq nothing 0 0
+          . nothing 0 0
+            . nothing 0 0
+              name ctxt nothing 0 0
+              name env nothing 0 0
+            name builtins nothing 0 0
+          seq nothing 0 0
+            . nothing 0 0
+              hd nothing 0 0
+                name args nothing 0 0
+              name word nothing 0 0
+    seq nothing 0 0
+      if nothing 0 0
+        == nothing 0 0
+          name bmods nothing 0 0
+          name nil polymorphic type 0 0
+        seq nothing 0 0
+          return nothing 0 0
+            tuple nothing 0 0
+              seq nothing 0 0
+                const (0) int 0 0
+                seq nothing 0 0
+                  name nil polymorphic type 0 0
+      seq nothing 0 0
+        return nothing 0 0
+          tuple nothing 0 0
+            seq nothing 0 0
+              const (1) int 0 0
+              seq nothing 0 0
+                call nothing 0 0
+                  -> nothing 0 0
+                    hd nothing 0 0
+                      name bmods nothing 0 0
+                    name runbuiltin nothing 0 0
+                  seq nothing 0 0
+                    name ctxt nothing 0 0
+                    seq nothing 0 0
+                      name myself nothing 0 0
+                      seq nothing 0 0
+                        name args nothing 0 0
+                        seq nothing 0 0
+                          name lseq nothing 0 0
+typecheck tree: 
+fn(){} fn(ctxt: ref Context): string 0 0
+  name keepfdstr fn(ctxt: ref Context): string 0 0
+  seq nothing 0 0
+    := nothing 0 0
+      name s nothing 0 0
+      const  string 0 0
+    seq nothing 0 0
+      seq nothing 0 0
+        := nothing 0 0
+          name f nothing 0 0
+          . nothing 0 0
+            name ctxt nothing 0 0
+            name keepfds nothing 0 0
+        for nothing 0 0
+          != nothing 0 0
+            name f nothing 0 0
+            name nil polymorphic type 0 0
+          seq nothing 0 0
+            scope nothing 0 0
+              seq nothing 0 0
+                += nothing 0 0
+                  name s nothing 0 0
+                  cast string 0 0
+                    hd nothing 0 0
+                      name f nothing 0 0
+                seq nothing 0 0
+                  if nothing 0 0
+                    != nothing 0 0
+                      tl nothing 0 0
+                        name f nothing 0 0
+                      name nil polymorphic type 0 0
+                    seq nothing 0 0
+                      += nothing 0 0
+                        name s nothing 0 0
+                        const , string 0 0
+            = nothing 0 0
+              name f nothing 0 0
+              tl nothing 0 0
+                name f nothing 0 0
+      seq nothing 0 0
+        return nothing 0 0
+          name s nothing 0 0
+typecheck tree: 
+fn(){} fn(mod: Command, drawcontext: ref Draw->Context, argv: list of string, startchan: chan of int, keepfds: list of int) 0 0
+  name externalexec fn(mod: Command, drawcontext: ref Draw->Context, argv: list of string, startchan: chan of int, keepfds: list of int) 0 0
+  seq nothing 0 0
+    if nothing 0 0
+      name DEBUG nothing 0 0
+      seq nothing 0 0
+        call nothing 0 0
+          name debug nothing 0 0
+          seq nothing 0 0
+            call nothing 0 0
+              name sprint nothing 0 0
+              seq nothing 0 0
+                const externalexec(%s,... [%d args]) string 0 0
+                seq nothing 0 0
+                  hd nothing 0 0
+                    name argv nothing 0 0
+                  seq nothing 0 0
+                    len nothing 0 0
+                      name argv nothing 0 0
+    seq nothing 0 0
+      call nothing 0 0
+        -> nothing 0 0
+          name sys nothing 0 0
+          name pctl nothing 0 0
+        seq nothing 0 0
+          -> nothing 0 0
+            name Sys nothing 0 0
+            name NEWFD nothing 0 0
+          seq nothing 0 0
+            name keepfds nothing 0 0
+      seq nothing 0 0
+        <-= nothing 0 0
+          name startchan nothing 0 0
+          call nothing 0 0
+            -> nothing 0 0
+              name sys nothing 0 0
+              name pctl nothing 0 0
+            seq nothing 0 0
+              const (0) int 0 0
+              seq nothing 0 0
+                name nil polymorphic type 0 0
+        seq nothing 0 0
+          exstat nothing 0 0
+            scope nothing 0 0
+              seq nothing 0 0
+                call nothing 0 0
+                  -> nothing 0 0
+                    name mod nothing 0 0
+                    name init nothing 0 0
+                  seq nothing 0 0
+                    name drawcontext nothing 0 0
+                    seq nothing 0 0
+                      name argv nothing 0 0
+            except nothing 0 0
+              seq nothing 0 0
+                label nothing 0 0
+                  seq nothing 0 0
+                    name EPIPE nothing 0 0
+                  scope nothing 0 0
+                    raise nothing 0 0
+                      + nothing 0 0
+                        const fail: string 0 0
+                        name EPIPE nothing 0 0
+typecheck tree: 
+fn(){} fn(ctxt: ref Context, fd1: int, fd2: int): int 0 0
+  name dup fn(ctxt: ref Context, fd1: int, fd2: int): int 0 0
+  seq nothing 0 0
+    if nothing 0 0
+      == nothing 0 0
+        . nothing 0 0
+          . nothing 0 0
+            name ctxt nothing 0 0
+            name waitfd nothing 0 0
+          name fd nothing 0 0
+        name fd2 nothing 0 0
+      seq nothing 0 0
+        scope nothing 0 0
+          seq nothing 0 0
+            = nothing 0 0
+              . nothing 0 0
+                name ctxt nothing 0 0
+                name waitfd nothing 0 0
+              call nothing 0 0
+                name waitfd nothing 0 0
+            seq nothing 0 0
+              if nothing 0 0
+                == nothing 0 0
+                  . nothing 0 0
+                    . nothing 0 0
+                      name ctxt nothing 0 0
+                      name waitfd nothing 0 0
+                    name fd nothing 0 0
+                  name fd2 nothing 0 0
+                seq nothing 0 0
+                  call nothing 0 0
+                    name panic nothing 0 0
+                    seq nothing 0 0
+                      call nothing 0 0
+                        -> nothing 0 0
+                          name sys nothing 0 0
+                          name sprint nothing 0 0
+                        seq nothing 0 0
+                          const reopen of waitfd gave same fd (%d) string 0 0
+                          seq nothing 0 0
+                            . nothing 0 0
+                              . nothing 0 0
+                                name ctxt nothing 0 0
+                                name waitfd nothing 0 0
+                              name fd nothing 0 0
+    seq nothing 0 0
+      return nothing 0 0
+        call nothing 0 0
+          -> nothing 0 0
+            name sys nothing 0 0
+            name dup nothing 0 0
+          seq nothing 0 0
+            name fd1 nothing 0 0
+            seq nothing 0 0
+              name fd2 nothing 0 0
+typecheck tree: 
+fn(){} fn(ctxt: ref Context, redirs: ref Redirlist): list of int 0 0
+  name doredirs fn(ctxt: ref Context, redirs: ref Redirlist): list of int 0 0
+  seq nothing 0 0
+    if nothing 0 0
+      == nothing 0 0
+        . nothing 0 0
+          name redirs nothing 0 0
+          name r nothing 0 0
+        name nil polymorphic type 0 0
+      seq nothing 0 0
+        return nothing 0 0
+          name nil polymorphic type 0 0
+    seq nothing 0 0
+      := nothing 0 0
+        name keepfds nothing 0 0
+        . nothing 0 0
+          name ctxt nothing 0 0
+          name keepfds nothing 0 0
+      seq nothing 0 0
+        := nothing 0 0
+          name rl nothing 0 0
+          . nothing 0 0
+            name redirs nothing 0 0
+            name r nothing 0 0
+        seq nothing 0 0
+          = nothing 0 0
+            name redirs nothing 0 0
+            name nil polymorphic type 0 0
+          seq nothing 0 0
+            for nothing 0 0
+              != nothing 0 0
+                name rl nothing 0 0
+                name nil polymorphic type 0 0
+              seq nothing 0 0
+                scope nothing 0 0
+                  seq nothing 0 0
+                    := nothing 0 0
+                      tuple nothing 0 0
+                        seq nothing 0 0
+                          name rfd nothing 0 0
+                          seq nothing 0 0
+                            name path nothing 0 0
+                            seq nothing 0 0
+                              tuple nothing 0 0
+                                seq nothing 0 0
+                                  name mode nothing 0 0
+                                  seq nothing 0 0
+                                    name fd1 nothing 0 0
+                                    seq nothing 0 0
+                                      name fd2 nothing 0 0
+                      hd nothing 0 0
+                        name rl nothing 0 0
+                    seq nothing 0 0
+                      if nothing 0 0
+                        && nothing 0 0
+                          == nothing 0 0
+                            name path nothing 0 0
+                            name nil polymorphic type 0 0
+                          == nothing 0 0
+                            name rfd nothing 0 0
+                            name nil polymorphic type 0 0
+                        seq nothing 0 0
+                          scope nothing 0 0
+                            seq nothing 0 0
+                              if nothing 0 0
+                                || nothing 0 0
+                                  == nothing 0 0
+                                    name fd1 nothing 0 0
+                                    - nothing 0 0
+                                      const (1) int 0 0
+                                  == nothing 0 0
+                                    name fd2 nothing 0 0
+                                    - nothing 0 0
+                                      const (1) int 0 0
+                                seq nothing 0 0
+                                  call nothing 0 0
+                                    . nothing 0 0
+                                      name ctxt nothing 0 0
+                                      name fail nothing 0 0
+                                    seq nothing 0 0
+                                      const bad redir string 0 0
+                                      seq nothing 0 0
+                                        const sh: invalid dup string 0 0
+                              seq nothing 0 0
+                                if nothing 0 0
+                                  == nothing 0 0
+                                    call nothing 0 0
+                                      name dup nothing 0 0
+                                      seq nothing 0 0
+                                        name ctxt nothing 0 0
+                                        seq nothing 0 0
+                                          name fd2 nothing 0 0
+                                          seq nothing 0 0
+                                            name fd1 nothing 0 0
+                                
+typecheck tree: 
+fn(){} fn(): ref Sys->FD 0 0
+  name waitfd fn(): ref Sys->FD 0 0
+  seq nothing 0 0
+    := nothing 0 0
+      name wf nothing 0 0
+      + nothing 0 0
+        cast string 0 0
+          call nothing 0 0
+            -> nothing 0 0
+              name sys nothing 0 0
+              name pctl nothing 0 0
+            seq nothing 0 0
+              const (0) int 0 0
+              seq nothing 0 0
+                name nil polymorphic type 0 0
+        const /wait string 0 0
+    seq nothing 0 0
+      := nothing 0 0
+        name waitfd nothing 0 0
+        call nothing 0 0
+          -> nothing 0 0
+            name sys nothing 0 0
+            name open nothing 0 0
+          seq nothing 0 0
+            + nothing 0 0
+              const #p/ string 0 0
+              name wf nothing 0 0
+            seq nothing 0 0
+              -> nothing 0 0
+                name Sys nothing 0 0
+                name OREAD nothing 0 0
+      seq nothing 0 0
+        if nothing 0 0
+          == nothing 0 0
+            name waitfd nothing 0 0
+            name nil polymorphic type 0 0
+          seq nothing 0 0
+            = nothing 0 0
+              name waitfd nothing 0 0
+              call nothing 0 0
+                -> nothing 0 0
+                  name sys nothing 0 0
+                  name open nothing 0 0
+                seq nothing 0 0
+                  + nothing 0 0
+                    const /prog/ string 0 0
+                    name wf nothing 0 0
+                  seq nothing 0 0
+                    -> nothing 0 0
+                      name Sys nothing 0 0
+                      name OREAD nothing 0 0
+        seq nothing 0 0
+          if nothing 0 0
+            == nothing 0 0
+              name waitfd nothing 0 0
+              name nil polymorphic type 0 0
+            seq nothing 0 0
+              call nothing 0 0
+                name panic nothing 0 0
+                seq nothing 0 0
+                  call nothing 0 0
+                    -> nothing 0 0
+                      name sys nothing 0 0
+                      name sprint nothing 0 0
+                    seq nothing 0 0
+                      const cannot open wait file: %r string 0 0
+          seq nothing 0 0
+            return nothing 0 0
+              name waitfd nothing 0 0
+typecheck tree: 
+fn(){} fn(ctxt: ref Context, pids: list of int): string 0 0
+  name waitfor fn(ctxt: ref Context, pids: list of int): string 0 0
+  seq nothing 0 0
+    if nothing 0 0
+      == nothing 0 0
+        name pids nothing 0 0
+        name nil polymorphic type 0 0
+      seq nothing 0 0
+        return nothing 0 0
+          name nil polymorphic type 0 0
+    seq nothing 0 0
+      := nothing 0 0
+        name status nothing 0 0
+        array array of string 0 0
+          len nothing 0 0
+            name pids nothing 0 0
+      seq nothing 0 0
+        := nothing 0 0
+          name wcount nothing 0 0
+          len nothing 0 0
+            name status nothing 0 0
+        seq nothing 0 0
+          := nothing 0 0
+            name buf nothing 0 0
+            array array of byte 0 0
+              -> nothing 0 0
+                name Sys nothing 0 0
+                name WAITLEN nothing 0 0
+          seq nothing 0 0
+            := nothing 0 0
+              name onebad nothing 0 0
+              const (0) int 0 0
+            seq nothing 0 0
+              for nothing 0 0
+                nothing nothing 0 0
+                seq nothing 0 0
+                  scope nothing 0 0
+                    seq nothing 0 0
+                      := nothing 0 0
+                        name n nothing 0 0
+                        call nothing 0 0
+                          -> nothing 0 0
+                            name sys nothing 0 0
+                            name read nothing 0 0
+                          seq nothing 0 0
+                            . nothing 0 0
+                              name ctxt nothing 0 0
+                              name waitfd nothing 0 0
+                            seq nothing 0 0
+                              name buf nothing 0 0
+                              seq nothing 0 0
+                                len nothing 0 0
+                                  name buf nothing 0 0
+                      seq nothing 0 0
+                        if nothing 0 0
+                          < nothing 0 0
+                            name n nothing 0 0
+                            const (0) int 0 0
+                          seq nothing 0 0
+                            call nothing 0 0
+                              name panic nothing 0 0
+                              seq nothing 0 0
+                                call nothing 0 0
+                                  -> nothing 0 0
+                                    name sys nothing 0 0
+                                    name sprint nothing 0 0
+                                  seq nothing 0 0
+                                    const error on wait read: %r string 0 0
+                        seq nothing 0 0
+                          := nothing 0 0
+                            tuple nothing 0 0
+                              seq nothing 0 0
+                                name who nothing 0 0
+                                seq nothing 0 0
+                                  name line nothing 0 0
+                                  seq nothing 0 0
+                                    name s nothing 0 0
+                            call nothing 0 0
+                              name parsewaitstatus nothing 0 0
+                              seq nothing 0 0
+                                name ctxt nothing 0 0
+                                seq nothing 0 0
+                                  cast string 0 0
+                                    slice nothing 0 0
+                                      name buf nothing 0 0
+                                      seq nothing 0 0
+                                        const (0) int 0 0
+                                        name n nothing 0 0
+                          seq nothing 0 0
+                            if nothing 0 0
+                              != nothing 0 0
+                                name s nothing 0 0
+                                name nil polymorphic type 0 0
+                              seq nothing 0 0
+                                scope nothing 0 0
+                                  seq nothing 0 0
+                                    if nothing 0 0
+
+typecheck tree: 
+fn(){} fn(ctxt: ref Context, status: string): (int, string, string) 0 0
+  name parsewaitstatus fn(ctxt: ref Context, status: string): (int, string, string) 0 0
+  seq nothing 0 0
+    := nothing 0 0
+      name i nothing 0 0
+      const (0) int 0 0
+    seq nothing 0 0
+      for nothing 0 0
+        < nothing 0 0
+          name i nothing 0 0
+          len nothing 0 0
+            name status nothing 0 0
+        seq nothing 0 0
+          if nothing 0 0
+            == nothing 0 0
+              index nothing 0 0
+                name status nothing 0 0
+                name i nothing 0 0
+              const (32) int 0 0
+            seq nothing 0 0
+              break nothing 0 0
+          ++ nothing 0 0
+            name i nothing 0 0
+      seq nothing 0 0
+        if nothing 0 0
+          || nothing 0 0
+            == nothing 0 0
+              name i nothing 0 0
+              - nothing 0 0
+                len nothing 0 0
+                  name status nothing 0 0
+                const (1) int 0 0
+            != nothing 0 0
+              index nothing 0 0
+                name status nothing 0 0
+                + nothing 0 0
+                  name i nothing 0 0
+                  const (1) int 0 0
+              const (34) int 0 0
+          seq nothing 0 0
+            call nothing 0 0
+              . nothing 0 0
+                name ctxt nothing 0 0
+                name fail nothing 0 0
+              seq nothing 0 0
+                const bad wait read string 0 0
+                seq nothing 0 0
+                  call nothing 0 0
+                    -> nothing 0 0
+                      name sys nothing 0 0
+                      name sprint nothing 0 0
+                    seq nothing 0 0
+                      const sh: bad exit status '%s' string 0 0
+                      seq nothing 0 0
+                        name status nothing 0 0
+        seq nothing 0 0
+          seq nothing 0 0
+            += nothing 0 0
+              name i nothing 0 0
+              const (2) int 0 0
+            for nothing 0 0
+              < nothing 0 0
+                name i nothing 0 0
+                len nothing 0 0
+                  name status nothing 0 0
+              seq nothing 0 0
+                if nothing 0 0
+                  == nothing 0 0
+                    index nothing 0 0
+                      name status nothing 0 0
+                      name i nothing 0 0
+                    const (34) int 0 0
+                  seq nothing 0 0
+                    break nothing 0 0
+                ++ nothing 0 0
+                  name i nothing 0 0
+          seq nothing 0 0
+            if nothing 0 0
+              || nothing 0 0
+                > nothing 0 0
+                  name i nothing 0 0
+                  - nothing 0 0
+                    len nothing 0 0
+                      name status nothing 0 0
+                    const (2) int 0 0
+                != nothing 0 0
+                  index nothing 0 0
+                    name status nothing 0 0
+                    + nothing 0 0
+                      name i nothing 0 0
+                      const (1) int 0 0
+                  const (58) int 0 0
+              seq nothing 0 0
+                call nothing 0 0
+                  . nothing 0 0
+                    name ctxt nothing 0 0
+                    name fail nothing 0 0
+                  seq nothing 0 0
+                    const bad wait read string 0 0
+                    seq nothing 0 0
+                      call nothing 0 0
+                        -> nothing 0 0
+                          name sys nothing 0 0
+                          name sprint nothing 0 0
+                        seq nothing 0 0
+                          const sh: bad exit status '%s' string 0 0
+                          seq nothing 0 0
+                            name status nothing 0 0
+            seq nothing 0 0
+              return nothing 0 0
+                tuple nothing 0 0
+                  seq nothing 0 0
+                    cast int 0 0
+                      name status nothing 0 0
+                    seq nothing 0 0
+                      name status nothing 0 0
+           
+typecheck tree: 
+fn(){} fn(s: string) 0 0
+  name panic fn(s: string) 0 0
+  seq nothing 0 0
+    call nothing 0 0
+      -> nothing 0 0
+        name sys nothing 0 0
+        name fprint nothing 0 0
+      seq nothing 0 0
+        call nothing 0 0
+          name stderr nothing 0 0
+        seq nothing 0 0
+          const sh panic: %s
+ string 0 0
+          seq nothing 0 0
+            name s nothing 0 0
+    seq nothing 0 0
+      raise nothing 0 0
+        const panic string 0 0
+typecheck tree: 
+fn(){} fn(ctxt: ref Context, s: string) 0 0
+  name diagnostic fn(ctxt: ref Context, s: string) 0 0
+  seq nothing 0 0
+    if nothing 0 0
+      & nothing 0 0
+        call nothing 0 0
+          . nothing 0 0
+            name ctxt nothing 0 0
+            name options nothing 0 0
+        . nothing 0 0
+          name Context nothing 0 0
+          name VERBOSE nothing 0 0
+      seq nothing 0 0
+        call nothing 0 0
+          -> nothing 0 0
+            name sys nothing 0 0
+            name fprint nothing 0 0
+          seq nothing 0 0
+            call nothing 0 0
+              name stderr nothing 0 0
+            seq nothing 0 0
+              const sh: %s
+ string 0 0
+              seq nothing 0 0
+                name s nothing 0 0
+typecheck tree: 
+fn(){} fn(drawcontext: ref Draw->Context): ref Context 0 0
+  . fn(drawcontext: ref Draw->Context): ref Context 0 0
+    name Context Context 0 0
+    name new nothing 0 0
+  seq nothing 0 0
+    call nothing 0 0
+      name initialise nothing 0 0
+    seq nothing 0 0
+      if nothing 0 0
+        != nothing 0 0
+          name env nothing 0 0
+          name nil polymorphic type 0 0
+        seq nothing 0 0
+          call nothing 0 0
+            -> nothing 0 0
+              name env nothing 0 0
+              name clone nothing 0 0
+      seq nothing 0 0
+        := nothing 0 0
+          name ctxt nothing 0 0
+          ref nothing 0 0
+            call nothing 0 0
+              name Context nothing 0 0
+              seq nothing 0 0
+                ref nothing 0 0
+                  call nothing 0 0
+                    name Environment nothing 0 0
+                    seq nothing 0 0
+                      ref nothing 0 0
+                        call nothing 0 0
+                          name Builtins nothing 0 0
+                          seq nothing 0 0
+                            name nil polymorphic type 0 0
+                            seq nothing 0 0
+                              const (0) int 0 0
+                      seq nothing 0 0
+                        ref nothing 0 0
+                          call nothing 0 0
+                            name Builtins nothing 0 0
+                            seq nothing 0 0
+                              name nil polymorphic type 0 0
+                              seq nothing 0 0
+                                const (0) int 0 0
+                        seq nothing 0 0
+                          name nil polymorphic type 0 0
+                          seq nothing 0 0
+                            call nothing 0 0
+                              name newlocalenv nothing 0 0
+                              seq nothing 0 0
+                                name nil polymorphic type 0 0
+                seq nothing 0 0
+                  call nothing 0 0
+                    name waitfd nothing 0 0
+                  seq nothing 0 0
+                    name drawcontext nothing 0 0
+                    seq nothing 0 0
+                      :: nothing 0 0
+                        const (0) int 0 0
+                        :: nothing 0 0
+                          const (1) int 0 0
+                          :: nothing 0 0
+                            const (2) int 0 0
+                            name nil polymorphic type 0 0
+        seq nothing 0 0
+          call nothing 0 0
+            -> nothing 0 0
+              name myselfbuiltin nothing 0 0
+              name initbuiltin nothing 0 0
+            seq nothing 0 0
+              name ctxt nothing 0 0
+              seq nothing 0 0
+                name myself nothing 0 0
+          seq nothing 0 0
+            = nothing 0 0
+              . nothing 0 0
+                . nothing 0 0
+                  . nothing 0 0
+                    name ctxt nothing 0 0
+                    name env nothing 0 0
+                  name localenv nothing 0 0
+                name flags nothing 0 0
+              . nothing 0 0
+                name ctxt nothing 0 0
+                name VERBOSE nothing 0 0
+            seq nothing 0 0
+              seq nothing 0 0
+                := nothing 0 0
+                  name vl nothing 0 0
+                  call nothing 0 0
+                    . nothing 0 0
+                      name ctxt nothing 0 0
+                      name get nothing 0 0
+                    seq nothing 0 0
+                      const autoload string 0 0
+                for nothing 0 0
+                  != nothing 0 0
+                    name vl nothing 0 0
+                    name nil polymorphic type 0 0
+                  seq nothing 0 0
+                    if nothing 0 0
+                      && nothing 0 0
+                        == nothing 0 0
+                          . nothing 0 0
+                            hd nothing 0 0
+                              name vl nothing 0 0
+                            name cmd nothing 0 0
+                          name nil polymorphic type 0 0
+         
+typecheck tree: 
+fn(){} fn(ctxt: self ref Context, copyenv: int): ref Context 0 0
+  . fn(c: self ref Context, copyenv: int): ref Context 0 0
+    name Context Context 0 0
+    name copy nothing 0 0
+  seq nothing 0 0
+    := nothing 0 0
+      name nctxt nothing 0 0
+      ref nothing 0 0
+        call nothing 0 0
+          name Context nothing 0 0
+          seq nothing 0 0
+            . nothing 0 0
+              name ctxt nothing 0 0
+              name env nothing 0 0
+            seq nothing 0 0
+              call nothing 0 0
+                name waitfd nothing 0 0
+              seq nothing 0 0
+                . nothing 0 0
+                  name ctxt nothing 0 0
+                  name drawcontext nothing 0 0
+                seq nothing 0 0
+                  . nothing 0 0
+                    name ctxt nothing 0 0
+                    name keepfds nothing 0 0
+    seq nothing 0 0
+      if nothing 0 0
+        name copyenv nothing 0 0
+        seq nothing 0 0
+          scope nothing 0 0
+            seq nothing 0 0
+              if nothing 0 0
+                != nothing 0 0
+                  name env nothing 0 0
+                  name nil polymorphic type 0 0
+                seq nothing 0 0
+                  call nothing 0 0
+                    -> nothing 0 0
+                      name env nothing 0 0
+                      name clone nothing 0 0
+              seq nothing 0 0
+                = nothing 0 0
+                  . nothing 0 0
+                    name nctxt nothing 0 0
+                    name env nothing 0 0
+                  ref nothing 0 0
+                    call nothing 0 0
+                      name Environment nothing 0 0
+                      seq nothing 0 0
+                        call nothing 0 0
+                          name copybuiltins nothing 0 0
+                          seq nothing 0 0
+                            . nothing 0 0
+                              . nothing 0 0
+                                name ctxt nothing 0 0
+                                name env nothing 0 0
+                              name sbuiltins nothing 0 0
+                        seq nothing 0 0
+                          call nothing 0 0
+                            name copybuiltins nothing 0 0
+                            seq nothing 0 0
+                              . nothing 0 0
+                                . nothing 0 0
+                                  name ctxt nothing 0 0
+                                  name env nothing 0 0
+                                name builtins nothing 0 0
+                          seq nothing 0 0
+                            . nothing 0 0
+                              . nothing 0 0
+                                name ctxt nothing 0 0
+                                name env nothing 0 0
+                              name bmods nothing 0 0
+                            seq nothing 0 0
+                              call nothing 0 0
+                                name copylocalenv nothing 0 0
+                                seq nothing 0 0
+                                  . nothing 0 0
+                                    . nothing 0 0
+                                      name ctxt nothing 0 0
+                                      name env nothing 0 0
+                                    name localenv nothing 0 0
+      seq nothing 0 0
+        return nothing 0 0
+          name nctxt nothing 0 0
+typecheck tree: 
+fn(){} fn(ctxt: self ref Context, name: string, val: list of ref Listnode) 0 0
+  . fn(c: self ref Context, name: string, val: list of ref Listnode) 0 0
+    name Context Context 0 0
+    name set nothing 0 0
+  seq nothing 0 0
+    := nothing 0 0
+      name e nothing 0 0
+      . nothing 0 0
+        . nothing 0 0
+          name ctxt nothing 0 0
+          name env nothing 0 0
+        name localenv nothing 0 0
+    seq nothing 0 0
+      := nothing 0 0
+        name idx nothing 0 0
+        call nothing 0 0
+          name hashfn nothing 0 0
+          seq nothing 0 0
+            name name nothing 0 0
+            seq nothing 0 0
+              len nothing 0 0
+                . nothing 0 0
+                  name e nothing 0 0
+                  name vars nothing 0 0
+      seq nothing 0 0
+        for nothing 0 0
+          nothing nothing 0 0
+          seq nothing 0 0
+            scope nothing 0 0
+              seq nothing 0 0
+                := nothing 0 0
+                  name v nothing 0 0
+                  call nothing 0 0
+                    name hashfind nothing 0 0
+                    seq nothing 0 0
+                      . nothing 0 0
+                        name e nothing 0 0
+                        name vars nothing 0 0
+                      seq nothing 0 0
+                        name idx nothing 0 0
+                        seq nothing 0 0
+                          name name nothing 0 0
+                seq nothing 0 0
+                  if nothing 0 0
+                    == nothing 0 0
+                      name v nothing 0 0
+                      name nil polymorphic type 0 0
+                    seq nothing 0 0
+                      scope nothing 0 0
+                        seq nothing 0 0
+                          if nothing 0 0
+                            == nothing 0 0
+                              . nothing 0 0
+                                name e nothing 0 0
+                                name pushed nothing 0 0
+                              name nil polymorphic type 0 0
+                            seq nothing 0 0
+                              scope nothing 0 0
+                                seq nothing 0 0
+                                  := nothing 0 0
+                                    name flags nothing 0 0
+                                    . nothing 0 0
+                                      name Var nothing 0 0
+                                      name CHANGED nothing 0 0
+                                  seq nothing 0 0
+                                    if nothing 0 0
+                                      call nothing 0 0
+                                        name noexport nothing 0 0
+                                        seq nothing 0 0
+                                          name name nothing 0 0
+                                      seq nothing 0 0
+                                        |= nothing 0 0
+                                          name flags nothing 0 0
+                                          . nothing 0 0
+                                            name Var nothing 0 0
+                                            name NOEXPORT nothing 0 0
+                                    seq nothing 0 0
+                                      call nothing 0 0
+                                        name hashadd nothing 0 0
+                                        seq nothing 0 0
+                                          . nothing 0 0
+                                            name e nothing 0 0
+                                            name vars nothing 0 0
+                                          seq nothing 0 0
+                                            name idx nothing 0 0
+                                            seq nothing 0 0
+                                              ref nothing 0 0
+                                                call nothing 0 0
+                                                  name Var nothing 0 0
+                                                  seq nothing 0 0
+                                                    name name nothing 0 0
+                         
+typecheck tree: 
+fn(){} fn(ctxt: self ref Context, name: string): list of ref Listnode 0 0
+  . fn(c: self ref Context, name: string): list of ref Listnode 0 0
+    name Context Context 0 0
+    name get nothing 0 0
+  seq nothing 0 0
+    if nothing 0 0
+      == nothing 0 0
+        name name nothing 0 0
+        name nil polymorphic type 0 0
+      seq nothing 0 0
+        return nothing 0 0
+          name nil polymorphic type 0 0
+    seq nothing 0 0
+      := nothing 0 0
+        name idx nothing 0 0
+        - nothing 0 0
+          const (1) int 0 0
+      seq nothing 0 0
+        if nothing 0 0
+          && nothing 0 0
+            > nothing 0 0
+              index nothing 0 0
+                name name nothing 0 0
+                const (0) int 0 0
+              const (48) int 0 0
+            <= nothing 0 0
+              index nothing 0 0
+                name name nothing 0 0
+                const (0) int 0 0
+              const (57) int 0 0
+          seq nothing 0 0
+            scope nothing 0 0
+              seq nothing 0 0
+                vardecl int 0 0
+                  seq nothing 0 0
+                seq nothing 0 0
+                  seq nothing 0 0
+                    = nothing 0 0
+                      name i nothing 0 0
+                      const (0) int 0 0
+                    for nothing 0 0
+                      < nothing 0 0
+                        name i nothing 0 0
+                        len nothing 0 0
+                          name name nothing 0 0
+                      seq nothing 0 0
+                        if nothing 0 0
+                          || nothing 0 0
+                            < nothing 0 0
+                              index nothing 0 0
+                                name name nothing 0 0
+                                name i nothing 0 0
+                              const (48) int 0 0
+                            > nothing 0 0
+                              index nothing 0 0
+                                name name nothing 0 0
+                                name i nothing 0 0
+                              const (57) int 0 0
+                          seq nothing 0 0
+                            break nothing 0 0
+                        ++ nothing 0 0
+                          name i nothing 0 0
+                  seq nothing 0 0
+                    if nothing 0 0
+                      >= nothing 0 0
+                        name i nothing 0 0
+                        len nothing 0 0
+                          name name nothing 0 0
+                      seq nothing 0 0
+                        scope nothing 0 0
+                          seq nothing 0 0
+                            = nothing 0 0
+                              name idx nothing 0 0
+                              - nothing 0 0
+                                cast int 0 0
+                                  name name nothing 0 0
+                                const (1) int 0 0
+                            seq nothing 0 0
+                              = nothing 0 0
+                                name name nothing 0 0
+                                const * string 0 0
+        seq nothing 0 0
+          := nothing 0 0
+            name v nothing 0 0
+            call nothing 0 0
+              name varfind nothing 0 0
+              seq nothing 0 0
+                . nothing 0 0
+                  . nothing 0 0
+                    name ctxt nothing 0 0
+                    name env nothing 0 0
+                  name localenv nothing 0 0
+                seq nothing 0 0
+                  name name nothing 0 0
+          seq nothing 0 0
+            if nothing 0 0
+              != nothing 0 0
+                name v nothing 0 0
+                name nil polymorphic type 0 0
+              seq nothing 0 0
+                scope nothing 0 0
+                  seq nothing 0 0
+                    if nothing 0 0
+                      != nothing 0 0
+                        name idx nothing 0 0
+                        - nothing 0 0
+                          const (1) int 0 0
+                      seq nothing 0 0
+                        return nothing 0 0
+                          call n
+typecheck tree: 
+fn(){} fn(ctxt: self ref Context): list of (string, list of ref Listnode) 0 0
+  . fn(c: self ref Context): list of (string, list of ref Listnode) 0 0
+    name Context Context 0 0
+    name envlist nothing 0 0
+  seq nothing 0 0
+    := nothing 0 0
+      name t nothing 0 0
+      array array of list of ref Var 0 0
+        name ENVHASHSIZE nothing 0 0
+    seq nothing 0 0
+      seq nothing 0 0
+        := nothing 0 0
+          name e nothing 0 0
+          . nothing 0 0
+            . nothing 0 0
+              name ctxt nothing 0 0
+              name env nothing 0 0
+            name localenv nothing 0 0
+        for nothing 0 0
+          != nothing 0 0
+            name e nothing 0 0
+            name nil polymorphic type 0 0
+          seq nothing 0 0
+            scope nothing 0 0
+              seq nothing 0 0
+                := nothing 0 0
+                  name i nothing 0 0
+                  const (0) int 0 0
+                seq nothing 0 0
+                  for nothing 0 0
+                    < nothing 0 0
+                      name i nothing 0 0
+                      len nothing 0 0
+                        . nothing 0 0
+                          name e nothing 0 0
+                          name vars nothing 0 0
+                    seq nothing 0 0
+                      scope nothing 0 0
+                        seq nothing 0 0
+                          := nothing 0 0
+                            name vl nothing 0 0
+                            index nothing 0 0
+                              . nothing 0 0
+                                name e nothing 0 0
+                                name vars nothing 0 0
+                              name i nothing 0 0
+                          seq nothing 0 0
+                            for nothing 0 0
+                              != nothing 0 0
+                                name vl nothing 0 0
+                                name nil polymorphic type 0 0
+                              seq nothing 0 0
+                                scope nothing 0 0
+                                  seq nothing 0 0
+                                    := nothing 0 0
+                                      name v nothing 0 0
+                                      hd nothing 0 0
+                                        name vl nothing 0 0
+                                    seq nothing 0 0
+                                      := nothing 0 0
+                                        name idx nothing 0 0
+                                        call nothing 0 0
+                                          name hashfn nothing 0 0
+                                          seq nothing 0 0
+                                            . nothing 0 0
+                                              name v nothing 0 0
+                                              name name nothing 0 0
+                                            seq nothing 0 0
+                                              len nothing 0 0
+                                                . nothing 0 0
+                                                  name e nothing 0 0
+                                                  name vars nothing 0 0
+                                      seq nothing 0 0
+                                        if nothing 0 0
+                                          == nothing 0 0
+                                            call nothing 0 0
+                                              name hashfind nothing 0 0
+                                              seq nothing 0 0
+                                                name t nothing 0 0
+                                                seq nothing 0 0
+                                                  name idx nothing 0 0
+                                                  seq nothing 0 0
+                                                    . nothing 0 0
+                                                      name v nothing 0 0
+                                                      name name nothing 0 0
+                                            name nil polymorphic type 0 0
+                             
+typecheck tree: 
+fn(){} fn(ctxt: self ref Context, name: string, val: list of ref Listnode) 0 0
+  . fn(c: self ref Context, name: string, val: list of ref Listnode) 0 0
+    name Context Context 0 0
+    name setlocal nothing 0 0
+  seq nothing 0 0
+    := nothing 0 0
+      name e nothing 0 0
+      . nothing 0 0
+        . nothing 0 0
+          name ctxt nothing 0 0
+          name env nothing 0 0
+        name localenv nothing 0 0
+    seq nothing 0 0
+      := nothing 0 0
+        name idx nothing 0 0
+        call nothing 0 0
+          name hashfn nothing 0 0
+          seq nothing 0 0
+            name name nothing 0 0
+            seq nothing 0 0
+              len nothing 0 0
+                . nothing 0 0
+                  name e nothing 0 0
+                  name vars nothing 0 0
+      seq nothing 0 0
+        := nothing 0 0
+          name v nothing 0 0
+          call nothing 0 0
+            name hashfind nothing 0 0
+            seq nothing 0 0
+              . nothing 0 0
+                name e nothing 0 0
+                name vars nothing 0 0
+              seq nothing 0 0
+                name idx nothing 0 0
+                seq nothing 0 0
+                  name name nothing 0 0
+        seq nothing 0 0
+          if nothing 0 0
+            == nothing 0 0
+              name v nothing 0 0
+              name nil polymorphic type 0 0
+            seq nothing 0 0
+              scope nothing 0 0
+                seq nothing 0 0
+                  := nothing 0 0
+                    name flags nothing 0 0
+                    . nothing 0 0
+                      name Var nothing 0 0
+                      name CHANGED nothing 0 0
+                  seq nothing 0 0
+                    if nothing 0 0
+                      call nothing 0 0
+                        name noexport nothing 0 0
+                        seq nothing 0 0
+                          name name nothing 0 0
+                      seq nothing 0 0
+                        |= nothing 0 0
+                          name flags nothing 0 0
+                          . nothing 0 0
+                            name Var nothing 0 0
+                            name NOEXPORT nothing 0 0
+                    seq nothing 0 0
+                      call nothing 0 0
+                        name hashadd nothing 0 0
+                        seq nothing 0 0
+                          . nothing 0 0
+                            name e nothing 0 0
+                            name vars nothing 0 0
+                          seq nothing 0 0
+                            name idx nothing 0 0
+                            seq nothing 0 0
+                              ref nothing 0 0
+                                call nothing 0 0
+                                  name Var nothing 0 0
+                                  seq nothing 0 0
+                                    name name nothing 0 0
+                                    seq nothing 0 0
+                                      name val nothing 0 0
+                                      seq nothing 0 0
+                                        name flags nothing 0 0
+              scope nothing 0 0
+                seq nothing 0 0
+                  = nothing 0 0
+                    . nothing 0 0
+                      name v nothing 0 0
+                      name val nothing 0 0
+                    name val nothing 0 0
+                  seq nothing 0 0
+                    |= nothing 0 0
+                      . nothing 0 0
+                        name v nothing 0 0
+                        name flags nothing 0 0
+                      . nothing 0 0
+                        name Var nothing 0 0
+                        name CHANGED nothing 0 0
+typecheck tree: 
+fn(){} fn(ctxt: self ref Context) 0 0
+  . fn(c: self ref Context) 0 0
+    name Context Context 0 0
+    name push nothing 0 0
+  seq nothing 0 0
+    = nothing 0 0
+      . nothing 0 0
+        . nothing 0 0
+          name ctxt nothing 0 0
+          name env nothing 0 0
+        name localenv nothing 0 0
+      call nothing 0 0
+        name newlocalenv nothing 0 0
+        seq nothing 0 0
+          . nothing 0 0
+            . nothing 0 0
+              name ctxt nothing 0 0
+              name env nothing 0 0
+            name localenv nothing 0 0
+typecheck tree: 
+fn(){} fn(ctxt: self ref Context) 0 0
+  . fn(c: self ref Context) 0 0
+    name Context Context 0 0
+    name pop nothing 0 0
+  seq nothing 0 0
+    if nothing 0 0
+      == nothing 0 0
+        . nothing 0 0
+          . nothing 0 0
+            . nothing 0 0
+              name ctxt nothing 0 0
+              name env nothing 0 0
+            name localenv nothing 0 0
+          name pushed nothing 0 0
+        name nil polymorphic type 0 0
+      seq nothing 0 0
+        call nothing 0 0
+          name panic nothing 0 0
+          seq nothing 0 0
+            const unbalanced contexts in shell environment string 0 0
+        scope nothing 0 0
+          seq nothing 0 0
+            := nothing 0 0
+              name oldv nothing 0 0
+              . nothing 0 0
+                . nothing 0 0
+                  . nothing 0 0
+                    name ctxt nothing 0 0
+                    name env nothing 0 0
+                  name localenv nothing 0 0
+                name vars nothing 0 0
+            seq nothing 0 0
+              = nothing 0 0
+                . nothing 0 0
+                  . nothing 0 0
+                    name ctxt nothing 0 0
+                    name env nothing 0 0
+                  name localenv nothing 0 0
+                . nothing 0 0
+                  . nothing 0 0
+                    . nothing 0 0
+                      name ctxt nothing 0 0
+                      name env nothing 0 0
+                    name localenv nothing 0 0
+                  name pushed nothing 0 0
+              seq nothing 0 0
+                seq nothing 0 0
+                  := nothing 0 0
+                    name i nothing 0 0
+                    const (0) int 0 0
+                  for nothing 0 0
+                    < nothing 0 0
+                      name i nothing 0 0
+                      len nothing 0 0
+                        name oldv nothing 0 0
+                    seq nothing 0 0
+                      scope nothing 0 0
+                        seq nothing 0 0
+                          := nothing 0 0
+                            name vl nothing 0 0
+                            index nothing 0 0
+                              name oldv nothing 0 0
+                              name i nothing 0 0
+                          seq nothing 0 0
+                            for nothing 0 0
+                              != nothing 0 0
+                                name vl nothing 0 0
+                                name nil polymorphic type 0 0
+                              seq nothing 0 0
+                                scope nothing 0 0
+                                  seq nothing 0 0
+                                    if nothing 0 0
+                                      != nothing 0 0
+                                        := nothing 0 0
+                                          name v nothing 0 0
+                                          call nothing 0 0
+                                            name varfind nothing 0 0
+                                            seq nothing 0 0
+                                              . nothing 0 0
+                                                . nothing 0 0
+                                                  name ctxt nothing 0 0
+                                                  name env nothing 0 0
+                                                name localenv nothing 0 0
+                                              seq nothing 0 0
+                                                . nothing 0 0
+                                                  hd nothing 0 0
+                                                    name vl nothing 0 0
+                                                  name name nothing 0 0
+                                        name nil polymorphic type 0 0
+                                      seq nothing 0 0
+                                        |= nothing 0 0
+                                          . nothing 0 0
+                                            name v nothing 0 0
+                                            name flags nothing 0 0
+                                          . 
+typecheck tree: 
+fn(){} fn(ctxt: self ref Context, args: list of ref Listnode, last: int): string 0 0
+  . fn(c: self ref Context, args: list of ref Listnode, last: int): string 0 0
+    name Context Context 0 0
+    name run nothing 0 0
+  seq nothing 0 0
+    if nothing 0 0
+      || nothing 0 0
+        == nothing 0 0
+          name args nothing 0 0
+          name nil polymorphic type 0 0
+        && nothing 0 0
+          == nothing 0 0
+            . nothing 0 0
+              hd nothing 0 0
+                name args nothing 0 0
+              name cmd nothing 0 0
+            name nil polymorphic type 0 0
+          == nothing 0 0
+            . nothing 0 0
+              hd nothing 0 0
+                name args nothing 0 0
+              name word nothing 0 0
+            name nil polymorphic type 0 0
+      seq nothing 0 0
+        return nothing 0 0
+          name nil polymorphic type 0 0
+    seq nothing 0 0
+      := nothing 0 0
+        name cmd nothing 0 0
+        hd nothing 0 0
+          name args nothing 0 0
+      seq nothing 0 0
+        if nothing 0 0
+          || nothing 0 0
+            != nothing 0 0
+              . nothing 0 0
+                name cmd nothing 0 0
+                name cmd nothing 0 0
+              name nil polymorphic type 0 0
+            == nothing 0 0
+              index nothing 0 0
+                . nothing 0 0
+                  name cmd nothing 0 0
+                  name word nothing 0 0
+                const (0) int 0 0
+              const (123) int 0 0
+          seq nothing 0 0
+            return nothing 0 0
+              call nothing 0 0
+                name runblock nothing 0 0
+                seq nothing 0 0
+                  name ctxt nothing 0 0
+                  seq nothing 0 0
+                    name args nothing 0 0
+                    seq nothing 0 0
+                      name last nothing 0 0
+        seq nothing 0 0
+          if nothing 0 0
+            & nothing 0 0
+              call nothing 0 0
+                . nothing 0 0
+                  name ctxt nothing 0 0
+                  name options nothing 0 0
+              . nothing 0 0
+                name ctxt nothing 0 0
+                name EXECPRINT nothing 0 0
+            seq nothing 0 0
+              call nothing 0 0
+                -> nothing 0 0
+                  name sys nothing 0 0
+                  name fprint nothing 0 0
+                seq nothing 0 0
+                  call nothing 0 0
+                    name stderr nothing 0 0
+                  seq nothing 0 0
+                    const %s
+ string 0 0
+                    seq nothing 0 0
+                      call nothing 0 0
+                        name quoted nothing 0 0
+                        seq nothing 0 0
+                          name args nothing 0 0
+                          seq nothing 0 0
+                            const (0) int 0 0
+          seq nothing 0 0
+            := nothing 0 0
+              tuple nothing 0 0
+                seq nothing 0 0
+                  name doneit nothing 0 0
+                  seq nothing 0 0
+                    name status nothing 0 0
+              call nothing 0 0
+                name trybuiltin nothing 0 0
+                seq nothing 0 0
+                  name ctxt nothing 0 0
+                  seq nothing 0 0
+                    name args nothing 0 0
+                    seq nothing 0 0
+                      name last nothing 0 0
+            seq nothing 0 0
+              if nothing 0 0
+                ! nothing 0 0
+                  name doneit nothing 0 0
+                seq nothing 0 0
+                  = nothing 0 0
+                    name status nothing 0 0
+                    call nothing 0 0
+                      name runexternal nothing 0 0
+                      seq nothing 0 0
+                        name ctxt nothing 0 0
+                        seq nothing 0 0
+                          name args nothing 0 0
+                          seq nothing 0 0
+                            name last nothing 0 0
+              seq nothing 0 0
+                return nothing 0 0
+                  name status nothing 0 0
+typecheck tree: 
+fn(){} fn(ctxt: self ref Context, name: string, mod: Shellbuiltin) 0 0
+  . fn(c: self ref Context, name: string, mod: Shellbuiltin) 0 0
+    name Context Context 0 0
+    name addmodule nothing 0 0
+  seq nothing 0 0
+    call nothing 0 0
+      -> nothing 0 0
+        name mod nothing 0 0
+        name initbuiltin nothing 0 0
+      seq nothing 0 0
+        name ctxt nothing 0 0
+        seq nothing 0 0
+          name myself nothing 0 0
+    seq nothing 0 0
+      = nothing 0 0
+        . nothing 0 0
+          . nothing 0 0
+            name ctxt nothing 0 0
+            name env nothing 0 0
+          name bmods nothing 0 0
+        :: nothing 0 0
+          tuple nothing 0 0
+            seq nothing 0 0
+              name name nothing 0 0
+              seq nothing 0 0
+                call nothing 0 0
+                  -> nothing 0 0
+                    name mod nothing 0 0
+                    name getself nothing 0 0
+          . nothing 0 0
+            . nothing 0 0
+              name ctxt nothing 0 0
+              name env nothing 0 0
+            name bmods nothing 0 0
+typecheck tree: 
+fn(){} fn(c: self ref Context, name: string, mod: Shellbuiltin) 0 0
+  . fn(c: self ref Context, name: string, mod: Shellbuiltin) 0 0
+    name Context Context 0 0
+    name addbuiltin nothing 0 0
+  seq nothing 0 0
+    call nothing 0 0
+      name addbuiltin nothing 0 0
+      seq nothing 0 0
+        . nothing 0 0
+          . nothing 0 0
+            name c nothing 0 0
+            name env nothing 0 0
+          name builtins nothing 0 0
+        seq nothing 0 0
+          name name nothing 0 0
+          seq nothing 0 0
+            name mod nothing 0 0
+typecheck tree: 
+fn(){} fn(c: self ref Context, name: string, mod: Shellbuiltin) 0 0
+  . fn(c: self ref Context, name: string, mod: Shellbuiltin) 0 0
+    name Context Context 0 0
+    name removebuiltin nothing 0 0
+  seq nothing 0 0
+    call nothing 0 0
+      name removebuiltin nothing 0 0
+      seq nothing 0 0
+        . nothing 0 0
+          . nothing 0 0
+            name c nothing 0 0
+            name env nothing 0 0
+          name builtins nothing 0 0
+        seq nothing 0 0
+          name name nothing 0 0
+          seq nothing 0 0
+            name mod nothing 0 0
+typecheck tree: 
+fn(){} fn(c: self ref Context, name: string, mod: Shellbuiltin) 0 0
+  . fn(c: self ref Context, name: string, mod: Shellbuiltin) 0 0
+    name Context Context 0 0
+    name addsbuiltin nothing 0 0
+  seq nothing 0 0
+    call nothing 0 0
+      name addbuiltin nothing 0 0
+      seq nothing 0 0
+        . nothing 0 0
+          . nothing 0 0
+            name c nothing 0 0
+            name env nothing 0 0
+          name sbuiltins nothing 0 0
+        seq nothing 0 0
+          name name nothing 0 0
+          seq nothing 0 0
+            name mod nothing 0 0
+typecheck tree: 
+fn(){} fn(c: self ref Context, name: string, mod: Shellbuiltin) 0 0
+  . fn(c: self ref Context, name: string, mod: Shellbuiltin) 0 0
+    name Context Context 0 0
+    name removesbuiltin nothing 0 0
+  seq nothing 0 0
+    call nothing 0 0
+      name removebuiltin nothing 0 0
+      seq nothing 0 0
+        . nothing 0 0
+          . nothing 0 0
+            name c nothing 0 0
+            name env nothing 0 0
+          name sbuiltins nothing 0 0
+        seq nothing 0 0
+          name name nothing 0 0
+          seq nothing 0 0
+            name mod nothing 0 0
+typecheck tree: 
+fn(){} fn(e: ref Localenv, name: string): ref Var 0 0
+  name varfind fn(e: ref Localenv, name: string): ref Var 0 0
+  seq nothing 0 0
+    := nothing 0 0
+      name idx nothing 0 0
+      call nothing 0 0
+        name hashfn nothing 0 0
+        seq nothing 0 0
+          name name nothing 0 0
+          seq nothing 0 0
+            len nothing 0 0
+              . nothing 0 0
+                name e nothing 0 0
+                name vars nothing 0 0
+    seq nothing 0 0
+      for nothing 0 0
+        != nothing 0 0
+          name e nothing 0 0
+          name nil polymorphic type 0 0
+        seq nothing 0 0
+          seq nothing 0 0
+            := nothing 0 0
+              name vl nothing 0 0
+              index nothing 0 0
+                . nothing 0 0
+                  name e nothing 0 0
+                  name vars nothing 0 0
+                name idx nothing 0 0
+            for nothing 0 0
+              != nothing 0 0
+                name vl nothing 0 0
+                name nil polymorphic type 0 0
+              seq nothing 0 0
+                if nothing 0 0
+                  == nothing 0 0
+                    . nothing 0 0
+                      hd nothing 0 0
+                        name vl nothing 0 0
+                      name name nothing 0 0
+                    name name nothing 0 0
+                  seq nothing 0 0
+                    return nothing 0 0
+                      hd nothing 0 0
+                        name vl nothing 0 0
+                = nothing 0 0
+                  name vl nothing 0 0
+                  tl nothing 0 0
+                    name vl nothing 0 0
+          = nothing 0 0
+            name e nothing 0 0
+            . nothing 0 0
+              name e nothing 0 0
+              name pushed nothing 0 0
+      seq nothing 0 0
+        return nothing 0 0
+          name nil polymorphic type 0 0
+typecheck tree: 
+fn(){} fn(ctxt: self ref Context, ename: string, err: string) 0 0
+  . fn(c: self ref Context, ename: string, msg: string) 0 0
+    name Context Context 0 0
+    name fail nothing 0 0
+  seq nothing 0 0
+    if nothing 0 0
+      & nothing 0 0
+        call nothing 0 0
+          . nothing 0 0
+            name ctxt nothing 0 0
+            name options nothing 0 0
+        . nothing 0 0
+          name Context nothing 0 0
+          name VERBOSE nothing 0 0
+      seq nothing 0 0
+        call nothing 0 0
+          -> nothing 0 0
+            name sys nothing 0 0
+            name fprint nothing 0 0
+          seq nothing 0 0
+            call nothing 0 0
+              name stderr nothing 0 0
+            seq nothing 0 0
+              const %s
+ string 0 0
+              seq nothing 0 0
+                name err nothing 0 0
+    seq nothing 0 0
+      raise nothing 0 0
+        + nothing 0 0
+          const fail: string 0 0
+          name ename nothing 0 0
+typecheck tree: 
+fn(){} fn(ctxt: self ref Context, flags: int, on: int): int 0 0
+  . fn(c: self ref Context, flags: int, on: int): int 0 0
+    name Context Context 0 0
+    name setoptions nothing 0 0
+  seq nothing 0 0
+    := nothing 0 0
+      name old nothing 0 0
+      . nothing 0 0
+        . nothing 0 0
+          . nothing 0 0
+            name ctxt nothing 0 0
+            name env nothing 0 0
+          name localenv nothing 0 0
+        name flags nothing 0 0
+    seq nothing 0 0
+      if nothing 0 0
+        name on nothing 0 0
+        seq nothing 0 0
+          |= nothing 0 0
+            . nothing 0 0
+              . nothing 0 0
+                . nothing 0 0
+                  name ctxt nothing 0 0
+                  name env nothing 0 0
+                name localenv nothing 0 0
+              name flags nothing 0 0
+            name flags nothing 0 0
+          &= nothing 0 0
+            . nothing 0 0
+              . nothing 0 0
+                . nothing 0 0
+                  name ctxt nothing 0 0
+                  name env nothing 0 0
+                name localenv nothing 0 0
+              name flags nothing 0 0
+            ~ nothing 0 0
+              name flags nothing 0 0
+      seq nothing 0 0
+        return nothing 0 0
+          name old nothing 0 0
+typecheck tree: 
+fn(){} fn(ctxt: self ref Context): int 0 0
+  . fn(c: self ref Context): int 0 0
+    name Context Context 0 0
+    name options nothing 0 0
+  seq nothing 0 0
+    return nothing 0 0
+      . nothing 0 0
+        . nothing 0 0
+          . nothing 0 0
+            name ctxt nothing 0 0
+            name env nothing 0 0
+          name localenv nothing 0 0
+        name flags nothing 0 0
+typecheck tree: 
+fn(){} fn(s: string, n: int): int 0 0
+  name hashfn fn(s: string, n: int): int 0 0
+  seq nothing 0 0
+    := nothing 0 0
+      name h nothing 0 0
+      const (0) int 0 0
+    seq nothing 0 0
+      := nothing 0 0
+        name m nothing 0 0
+        len nothing 0 0
+          name s nothing 0 0
+      seq nothing 0 0
+        seq nothing 0 0
+          := nothing 0 0
+            name i nothing 0 0
+            const (0) int 0 0
+          for nothing 0 0
+            < nothing 0 0
+              name i nothing 0 0
+              name m nothing 0 0
+            seq nothing 0 0
+              scope nothing 0 0
+                seq nothing 0 0
+                  = nothing 0 0
+                    name h nothing 0 0
+                    + nothing 0 0
+                      * nothing 0 0
+                        const (65599) int 0 0
+                        name h nothing 0 0
+                      index nothing 0 0
+                        name s nothing 0 0
+                        name i nothing 0 0
+              ++ nothing 0 0
+                name i nothing 0 0
+        seq nothing 0 0
+          return nothing 0 0
+            % nothing 0 0
+              & nothing 0 0
+                name h nothing 0 0
+                const (2147483647) int 0 0
+              name n nothing 0 0
+typecheck tree: 
+fn(){} fn(ht: array of list of ref Var, idx: int, n: string): ref Var 0 0
+  name hashfind fn(ht: array of list of ref Var, idx: int, n: string): ref Var 0 0
+  seq nothing 0 0
+    := nothing 0 0
+      name ent nothing 0 0
+      index nothing 0 0
+        name ht nothing 0 0
+        name idx nothing 0 0
+    seq nothing 0 0
+      for nothing 0 0
+        != nothing 0 0
+          name ent nothing 0 0
+          name nil polymorphic type 0 0
+        seq nothing 0 0
+          if nothing 0 0
+            == nothing 0 0
+              . nothing 0 0
+                hd nothing 0 0
+                  name ent nothing 0 0
+                name name nothing 0 0
+              name n nothing 0 0
+            seq nothing 0 0
+              return nothing 0 0
+                hd nothing 0 0
+                  name ent nothing 0 0
+          = nothing 0 0
+            name ent nothing 0 0
+            tl nothing 0 0
+              name ent nothing 0 0
+      seq nothing 0 0
+        return nothing 0 0
+          name nil polymorphic type 0 0
+typecheck tree: 
+fn(){} fn(ht: array of list of ref Var, idx: int, v: ref Var) 0 0
+  name hashadd fn(ht: array of list of ref Var, idx: int, v: ref Var) 0 0
+  seq nothing 0 0
+    = nothing 0 0
+      index nothing 0 0
+        name ht nothing 0 0
+        name idx nothing 0 0
+      :: nothing 0 0
+        name v nothing 0 0
+        index nothing 0 0
+          name ht nothing 0 0
+          name idx nothing 0 0
+typecheck tree: 
+fn(){} fn(e: ref Localenv): ref Localenv 0 0
+  name copylocalenv fn(e: ref Localenv): ref Localenv 0 0
+  seq nothing 0 0
+    := nothing 0 0
+      name nvars nothing 0 0
+      array array of list of ref Var 0 0
+        len nothing 0 0
+          . nothing 0 0
+            name e nothing 0 0
+            name vars nothing 0 0
+    seq nothing 0 0
+      := nothing 0 0
+        name flags nothing 0 0
+        . nothing 0 0
+          name e nothing 0 0
+          name flags nothing 0 0
+      seq nothing 0 0
+        for nothing 0 0
+          != nothing 0 0
+            name e nothing 0 0
+            name nil polymorphic type 0 0
+          seq nothing 0 0
+            seq nothing 0 0
+              := nothing 0 0
+                name i nothing 0 0
+                const (0) int 0 0
+              for nothing 0 0
+                < nothing 0 0
+                  name i nothing 0 0
+                  len nothing 0 0
+                    name nvars nothing 0 0
+                seq nothing 0 0
+                  seq nothing 0 0
+                    := nothing 0 0
+                      name vl nothing 0 0
+                      index nothing 0 0
+                        . nothing 0 0
+                          name e nothing 0 0
+                          name vars nothing 0 0
+                        name i nothing 0 0
+                    for nothing 0 0
+                      != nothing 0 0
+                        name vl nothing 0 0
+                        name nil polymorphic type 0 0
+                      seq nothing 0 0
+                        scope nothing 0 0
+                          seq nothing 0 0
+                            := nothing 0 0
+                              name idx nothing 0 0
+                              call nothing 0 0
+                                name hashfn nothing 0 0
+                                seq nothing 0 0
+                                  . nothing 0 0
+                                    hd nothing 0 0
+                                      name vl nothing 0 0
+                                    name name nothing 0 0
+                                  seq nothing 0 0
+                                    len nothing 0 0
+                                      name nvars nothing 0 0
+                            seq nothing 0 0
+                              if nothing 0 0
+                                == nothing 0 0
+                                  call nothing 0 0
+                                    name hashfind nothing 0 0
+                                    seq nothing 0 0
+                                      name nvars nothing 0 0
+                                      seq nothing 0 0
+                                        name idx nothing 0 0
+                                        seq nothing 0 0
+                                          . nothing 0 0
+                                            hd nothing 0 0
+                                              name vl nothing 0 0
+                                            name name nothing 0 0
+                                  name nil polymorphic type 0 0
+                                seq nothing 0 0
+                                  call nothing 0 0
+                                    name hashadd nothing 0 0
+                                    seq nothing 0 0
+                                      name nvars nothing 0 0
+                                      seq nothing 0 0
+                                        name idx nothing 0 0
+                                        seq nothing 0 0
+                                          ref nothing 0 0
+                                            * nothing 0 0
+                                              hd nothing 0 0
+                                                name vl nothing 0 0
+                        = nothing 0 0
+                          name vl nothing 0 0
+                          tl nothing 0 0
+                            name vl nothing 0 0
+                  ++ nothing 0 0
+                    name i nothing 0 0
+            = nothing 0 0
+              name e nothing 0 0
+              . nothing 0 0
+       
+typecheck tree: 
+fn(){} fn(pushed: ref Localenv): ref Localenv 0 0
+  name newlocalenv fn(pushed: ref Localenv): ref Localenv 0 0
+  seq nothing 0 0
+    := nothing 0 0
+      name e nothing 0 0
+      ref nothing 0 0
+        call nothing 0 0
+          name Localenv nothing 0 0
+          seq nothing 0 0
+            array array of list of ref Var 0 0
+              name ENVHASHSIZE nothing 0 0
+            seq nothing 0 0
+              name pushed nothing 0 0
+              seq nothing 0 0
+                const (0) int 0 0
+    seq nothing 0 0
+      if nothing 0 0
+        && nothing 0 0
+          == nothing 0 0
+            name pushed nothing 0 0
+            name nil polymorphic type 0 0
+          != nothing 0 0
+            name env nothing 0 0
+            name nil polymorphic type 0 0
+        seq nothing 0 0
+          scope nothing 0 0
+            seq nothing 0 0
+              := nothing 0 0
+                name vl nothing 0 0
+                call nothing 0 0
+                  -> nothing 0 0
+                    name env nothing 0 0
+                    name getall nothing 0 0
+              seq nothing 0 0
+                for nothing 0 0
+                  != nothing 0 0
+                    name vl nothing 0 0
+                    name nil polymorphic type 0 0
+                  seq nothing 0 0
+                    scope nothing 0 0
+                      seq nothing 0 0
+                        := nothing 0 0
+                          tuple nothing 0 0
+                            seq nothing 0 0
+                              name name nothing 0 0
+                              seq nothing 0 0
+                                name val nothing 0 0
+                          hd nothing 0 0
+                            name vl nothing 0 0
+                        seq nothing 0 0
+                          call nothing 0 0
+                            name hashadd nothing 0 0
+                            seq nothing 0 0
+                              . nothing 0 0
+                                name e nothing 0 0
+                                name vars nothing 0 0
+                              seq nothing 0 0
+                                call nothing 0 0
+                                  name hashfn nothing 0 0
+                                  seq nothing 0 0
+                                    name name nothing 0 0
+                                    seq nothing 0 0
+                                      len nothing 0 0
+                                        . nothing 0 0
+                                          name e nothing 0 0
+                                          name vars nothing 0 0
+                                seq nothing 0 0
+                                  ref nothing 0 0
+                                    call nothing 0 0
+                                      name Var nothing 0 0
+                                      seq nothing 0 0
+                                        name name nothing 0 0
+                                        seq nothing 0 0
+                                          call nothing 0 0
+                                            name envstringtoval nothing 0 0
+                                            seq nothing 0 0
+                                              name val nothing 0 0
+                                          seq nothing 0 0
+                                            const (0) int 0 0
+                    = nothing 0 0
+                      name vl nothing 0 0
+                      tl nothing 0 0
+                        name vl nothing 0 0
+      seq nothing 0 0
+        if nothing 0 0
+          != nothing 0 0
+            name pushed nothing 0 0
+            name nil polymorphic type 0 0
+          seq nothing 0 0
+            = nothing 0 0
+              . nothing 0 0
+                name e nothing 0 0
+                name flags nothing 0 0
+              . nothing 0 0
+                name pushed nothing 0 0
+                name flags nothing 0 0
+        seq nothing 0 0
+          return nothing 0 0
+            name e nothing 0 0
+typecheck tree: 
+fn(){} fn(b: ref Builtins): ref Builtins 0 0
+  name copybuiltins fn(b: ref Builtins): ref Builtins 0 0
+  seq nothing 0 0
+    := nothing 0 0
+      name nb nothing 0 0
+      ref nothing 0 0
+        call nothing 0 0
+          name Builtins nothing 0 0
+          seq nothing 0 0
+            array array of (string, list of Shellbuiltin) 0 0
+              . nothing 0 0
+                name b nothing 0 0
+                name n nothing 0 0
+            seq nothing 0 0
+              . nothing 0 0
+                name b nothing 0 0
+                name n nothing 0 0
+    seq nothing 0 0
+      = nothing 0 0
+        slice nothing 0 0
+          . nothing 0 0
+            name nb nothing 0 0
+            name ba nothing 0 0
+          seq nothing 0 0
+            const (0) int 0 0
+            nothing nothing 0 0
+        slice nothing 0 0
+          . nothing 0 0
+            name b nothing 0 0
+            name ba nothing 0 0
+          seq nothing 0 0
+            const (0) int 0 0
+            . nothing 0 0
+              name b nothing 0 0
+              name n nothing 0 0
+      seq nothing 0 0
+        return nothing 0 0
+          name nb nothing 0 0
+typecheck tree: 
+fn(){} fn(b: ref Builtins, name: string): (int, list of Shellbuiltin) 0 0
+  name findbuiltin fn(b: ref Builtins, name: string): (int, list of Shellbuiltin) 0 0
+  seq nothing 0 0
+    := nothing 0 0
+      name lo nothing 0 0
+      const (0) int 0 0
+    seq nothing 0 0
+      := nothing 0 0
+        name hi nothing 0 0
+        - nothing 0 0
+          . nothing 0 0
+            name b nothing 0 0
+            name n nothing 0 0
+          const (1) int 0 0
+      seq nothing 0 0
+        for nothing 0 0
+          <= nothing 0 0
+            name lo nothing 0 0
+            name hi nothing 0 0
+          seq nothing 0 0
+            scope nothing 0 0
+              seq nothing 0 0
+                := nothing 0 0
+                  name mid nothing 0 0
+                  / nothing 0 0
+                    + nothing 0 0
+                      name lo nothing 0 0
+                      name hi nothing 0 0
+                    const (2) int 0 0
+                seq nothing 0 0
+                  := nothing 0 0
+                    tuple nothing 0 0
+                      seq nothing 0 0
+                        name bname nothing 0 0
+                        seq nothing 0 0
+                          name bmod nothing 0 0
+                    index nothing 0 0
+                      . nothing 0 0
+                        name b nothing 0 0
+                        name ba nothing 0 0
+                      name mid nothing 0 0
+                  seq nothing 0 0
+                    if nothing 0 0
+                      < nothing 0 0
+                        name name nothing 0 0
+                        name bname nothing 0 0
+                      seq nothing 0 0
+                        = nothing 0 0
+                          name hi nothing 0 0
+                          - nothing 0 0
+                            name mid nothing 0 0
+                            const (1) int 0 0
+                        if nothing 0 0
+                          > nothing 0 0
+                            name name nothing 0 0
+                            name bname nothing 0 0
+                          seq nothing 0 0
+                            = nothing 0 0
+                              name lo nothing 0 0
+                              + nothing 0 0
+                                name mid nothing 0 0
+                                const (1) int 0 0
+                            return nothing 0 0
+                              tuple nothing 0 0
+                                seq nothing 0 0
+                                  name mid nothing 0 0
+                                  seq nothing 0 0
+                                    name bmod nothing 0 0
+        seq nothing 0 0
+          return nothing 0 0
+            tuple nothing 0 0
+              seq nothing 0 0
+                name lo nothing 0 0
+                seq nothing 0 0
+                  name nil polymorphic type 0 0
+typecheck tree: 
+fn(){} fn(b: ref Builtins, name: string, mod: Shellbuiltin) 0 0
+  name removebuiltin fn(b: ref Builtins, name: string, mod: Shellbuiltin) 0 0
+  seq nothing 0 0
+    := nothing 0 0
+      tuple nothing 0 0
+        seq nothing 0 0
+          name n nothing 0 0
+          seq nothing 0 0
+            name bmods nothing 0 0
+      call nothing 0 0
+        name findbuiltin nothing 0 0
+        seq nothing 0 0
+          name b nothing 0 0
+          seq nothing 0 0
+            name name nothing 0 0
+    seq nothing 0 0
+      if nothing 0 0
+        == nothing 0 0
+          name bmods nothing 0 0
+          name nil polymorphic type 0 0
+        seq nothing 0 0
+          return nothing 0 0
+      seq nothing 0 0
+        if nothing 0 0
+          == nothing 0 0
+            hd nothing 0 0
+              name bmods nothing 0 0
+            name mod nothing 0 0
+          seq nothing 0 0
+            scope nothing 0 0
+              seq nothing 0 0
+                if nothing 0 0
+                  != nothing 0 0
+                    tl nothing 0 0
+                      name bmods nothing 0 0
+                    name nil polymorphic type 0 0
+                  seq nothing 0 0
+                    = nothing 0 0
+                      index nothing 0 0
+                        . nothing 0 0
+                          name b nothing 0 0
+                          name ba nothing 0 0
+                        name n nothing 0 0
+                      tuple nothing 0 0
+                        seq nothing 0 0
+                          name name nothing 0 0
+                          seq nothing 0 0
+                            tl nothing 0 0
+                              name bmods nothing 0 0
+                    scope nothing 0 0
+                      seq nothing 0 0
+                        = nothing 0 0
+                          slice nothing 0 0
+                            . nothing 0 0
+                              name b nothing 0 0
+                              name ba nothing 0 0
+                            seq nothing 0 0
+                              name n nothing 0 0
+                              nothing nothing 0 0
+                          slice nothing 0 0
+                            . nothing 0 0
+                              name b nothing 0 0
+                              name ba nothing 0 0
+                            seq nothing 0 0
+                              + nothing 0 0
+                                name n nothing 0 0
+                                const (1) int 0 0
+                              . nothing 0 0
+                                name b nothing 0 0
+                                name n nothing 0 0
+                        seq nothing 0 0
+                          = nothing 0 0
+                            index nothing 0 0
+                              . nothing 0 0
+                                name b nothing 0 0
+                                name ba nothing 0 0
+                              -- nothing 0 0
+                                . nothing 0 0
+                                  name b nothing 0 0
+                                  name n nothing 0 0
+                            tuple nothing 0 0
+                              seq nothing 0 0
+                                name nil polymorphic type 0 0
+                                seq nothing 0 0
+                                  name nil polymorphic type 0 0
+typecheck tree: 
+fn(){} fn(b: ref Builtins, name: string, mod: Shellbuiltin) 0 0
+  name addbuiltin fn(b: ref Builtins, name: string, mod: Shellbuiltin) 0 0
+  seq nothing 0 0
+    if nothing 0 0
+      || nothing 0 0
+        == nothing 0 0
+          name mod nothing 0 0
+          name nil polymorphic type 0 0
+        && nothing 0 0
+          == nothing 0 0
+            name name nothing 0 0
+            const builtin string 0 0
+          != nothing 0 0
+            name mod nothing 0 0
+            name myselfbuiltin nothing 0 0
+      seq nothing 0 0
+        return nothing 0 0
+    seq nothing 0 0
+      := nothing 0 0
+        tuple nothing 0 0
+          seq nothing 0 0
+            name n nothing 0 0
+            seq nothing 0 0
+              name bmods nothing 0 0
+        call nothing 0 0
+          name findbuiltin nothing 0 0
+          seq nothing 0 0
+            name b nothing 0 0
+            seq nothing 0 0
+              name name nothing 0 0
+      seq nothing 0 0
+        if nothing 0 0
+          != nothing 0 0
+            name bmods nothing 0 0
+            name nil polymorphic type 0 0
+          seq nothing 0 0
+            scope nothing 0 0
+              seq nothing 0 0
+                if nothing 0 0
+                  == nothing 0 0
+                    hd nothing 0 0
+                      name bmods nothing 0 0
+                    name myselfbuiltin nothing 0 0
+                  seq nothing 0 0
+                    = nothing 0 0
+                      index nothing 0 0
+                        . nothing 0 0
+                          name b nothing 0 0
+                          name ba nothing 0 0
+                        name n nothing 0 0
+                      tuple nothing 0 0
+                        seq nothing 0 0
+                          name name nothing 0 0
+                          seq nothing 0 0
+                            :: nothing 0 0
+                              name mod nothing 0 0
+                              name bmods nothing 0 0
+                    = nothing 0 0
+                      index nothing 0 0
+                        . nothing 0 0
+                          name b nothing 0 0
+                          name ba nothing 0 0
+                        name n nothing 0 0
+                      tuple nothing 0 0
+                        seq nothing 0 0
+                          name name nothing 0 0
+                          seq nothing 0 0
+                            :: nothing 0 0
+                              name mod nothing 0 0
+                              name nil polymorphic type 0 0
+            scope nothing 0 0
+              seq nothing 0 0
+                if nothing 0 0
+                  == nothing 0 0
+                    . nothing 0 0
+                      name b nothing 0 0
+                      name n nothing 0 0
+                    len nothing 0 0
+                      . nothing 0 0
+                        name b nothing 0 0
+                        name ba nothing 0 0
+                  seq nothing 0 0
+                    scope nothing 0 0
+                      seq nothing 0 0
+                        := nothing 0 0
+                          name nb nothing 0 0
+                          array array of (string, list of Shellbuiltin) 0 0
+                            + nothing 0 0
+                              . nothing 0 0
+                                name b nothing 0 0
+                                name n nothing 0 0
+                              const (10) int 0 0
+                        seq nothing 0 0
+                          = nothing 0 0
+                            slice nothing 0 0
+                              name nb nothing 0 0
+                              seq nothing 0 0
+                                const (0) int 0 0
+                                nothing nothing 0 0
+                            slice nothing 0 0
+                              . nothing 0 0
+                                name b nothing 0 0
+                                name ba nothing 0 0
+                              seq nothing 0 0
+                                const (0) int 0 0
+                                . nothing 0 0
+typecheck tree: 
+fn(){} fn(b: ref Builtins, mod: Shellbuiltin) 0 0
+  name removebuiltinmod fn(b: ref Builtins, mod: Shellbuiltin) 0 0
+  seq nothing 0 0
+    := nothing 0 0
+      name j nothing 0 0
+      const (0) int 0 0
+    seq nothing 0 0
+      seq nothing 0 0
+        := nothing 0 0
+          name i nothing 0 0
+          const (0) int 0 0
+        for nothing 0 0
+          < nothing 0 0
+            name i nothing 0 0
+            . nothing 0 0
+              name b nothing 0 0
+              name n nothing 0 0
+          seq nothing 0 0
+            scope nothing 0 0
+              seq nothing 0 0
+                := nothing 0 0
+                  tuple nothing 0 0
+                    seq nothing 0 0
+                      name name nothing 0 0
+                      seq nothing 0 0
+                        name bmods nothing 0 0
+                  index nothing 0 0
+                    . nothing 0 0
+                      name b nothing 0 0
+                      name ba nothing 0 0
+                    name i nothing 0 0
+                seq nothing 0 0
+                  if nothing 0 0
+                    == nothing 0 0
+                      hd nothing 0 0
+                        name bmods nothing 0 0
+                      name mod nothing 0 0
+                    seq nothing 0 0
+                      = nothing 0 0
+                        name bmods nothing 0 0
+                        tl nothing 0 0
+                          name bmods nothing 0 0
+                  seq nothing 0 0
+                    if nothing 0 0
+                      != nothing 0 0
+                        name bmods nothing 0 0
+                        name nil polymorphic type 0 0
+                      seq nothing 0 0
+                        = nothing 0 0
+                          index nothing 0 0
+                            . nothing 0 0
+                              name b nothing 0 0
+                              name ba nothing 0 0
+                            ++ nothing 0 0
+                              name j nothing 0 0
+                          tuple nothing 0 0
+                            seq nothing 0 0
+                              name name nothing 0 0
+                              seq nothing 0 0
+                                name bmods nothing 0 0
+            ++ nothing 0 0
+              name i nothing 0 0
+      seq nothing 0 0
+        = nothing 0 0
+          . nothing 0 0
+            name b nothing 0 0
+            name n nothing 0 0
+          name j nothing 0 0
+        seq nothing 0 0
+          for nothing 0 0
+            < nothing 0 0
+              name j nothing 0 0
+              name i nothing 0 0
+            seq nothing 0 0
+              = nothing 0 0
+                index nothing 0 0
+                  . nothing 0 0
+                    name b nothing 0 0
+                    name ba nothing 0 0
+                  name j nothing 0 0
+                tuple nothing 0 0
+                  seq nothing 0 0
+                    name nil polymorphic type 0 0
+                    seq nothing 0 0
+                      name nil polymorphic type 0 0
+              ++ nothing 0 0
+                name j nothing 0 0
+typecheck tree: 
+fn(){} fn(e: ref Localenv) 0 0
+  name export fn(e: ref Localenv) 0 0
+  seq nothing 0 0
+    if nothing 0 0
+      == nothing 0 0
+        name env nothing 0 0
+        name nil polymorphic type 0 0
+      seq nothing 0 0
+        return nothing 0 0
+    seq nothing 0 0
+      if nothing 0 0
+        != nothing 0 0
+          . nothing 0 0
+            name e nothing 0 0
+            name pushed nothing 0 0
+          name nil polymorphic type 0 0
+        seq nothing 0 0
+          call nothing 0 0
+            name export nothing 0 0
+            seq nothing 0 0
+              . nothing 0 0
+                name e nothing 0 0
+                name pushed nothing 0 0
+      seq nothing 0 0
+        seq nothing 0 0
+          := nothing 0 0
+            name i nothing 0 0
+            const (0) int 0 0
+          for nothing 0 0
+            < nothing 0 0
+              name i nothing 0 0
+              len nothing 0 0
+                . nothing 0 0
+                  name e nothing 0 0
+                  name vars nothing 0 0
+            seq nothing 0 0
+              scope nothing 0 0
+                seq nothing 0 0
+                  := nothing 0 0
+                    name vl nothing 0 0
+                    index nothing 0 0
+                      . nothing 0 0
+                        name e nothing 0 0
+                        name vars nothing 0 0
+                      name i nothing 0 0
+                  seq nothing 0 0
+                    for nothing 0 0
+                      != nothing 0 0
+                        name vl nothing 0 0
+                        name nil polymorphic type 0 0
+                      seq nothing 0 0
+                        scope nothing 0 0
+                          seq nothing 0 0
+                            := nothing 0 0
+                              name v nothing 0 0
+                              hd nothing 0 0
+                                name vl nothing 0 0
+                            seq nothing 0 0
+                              if nothing 0 0
+                                && nothing 0 0
+                                  & nothing 0 0
+                                    . nothing 0 0
+                                      name v nothing 0 0
+                                      name flags nothing 0 0
+                                    . nothing 0 0
+                                      name Var nothing 0 0
+                                      name CHANGED nothing 0 0
+                                  ! nothing 0 0
+                                    & nothing 0 0
+                                      . nothing 0 0
+                                        name v nothing 0 0
+                                        name flags nothing 0 0
+                                      . nothing 0 0
+                                        name Var nothing 0 0
+                                        name NOEXPORT nothing 0 0
+                                seq nothing 0 0
+                                  scope nothing 0 0
+                                    seq nothing 0 0
+                                      call nothing 0 0
+                                        name setenv nothing 0 0
+                                        seq nothing 0 0
+                                          . nothing 0 0
+                                            name v nothing 0 0
+                                            name name nothing 0 0
+                                          seq nothing 0 0
+                                            . nothing 0 0
+                                              name v nothing 0 0
+                                              name val nothing 0 0
+                                      seq nothing 0 0
+                                        &= nothing 0 0
+                                          . nothing 0 0
+                                            name v nothing 0 0
+                                            name flags nothing 0 0
+                                          ~ nothing 0 0
+                                            . nothing 0 0
+                                              name Var 
+typecheck tree: 
+fn(){} fn(name: string): int 0 0
+  name noexport fn(name: string): int 0 0
+  seq nothing 0 0
+    case nothing 0 0
+      name name nothing 0 0
+      seq nothing 0 0
+        label nothing 0 0
+          seq nothing 0 0
+            const 0 string 0 0
+            seq nothing 0 0
+              const * string 0 0
+              seq nothing 0 0
+                const status string 0 0
+          scope nothing 0 0
+            return nothing 0 0
+              const (1) int 0 0
+    seq nothing 0 0
+      return nothing 0 0
+        const (0) int 0 0
+typecheck tree: 
+fn(){} fn(val: list of ref Listnode, k: int): list of ref Listnode 0 0
+  name index fn(val: list of ref Listnode, k: int): list of ref Listnode 0 0
+  seq nothing 0 0
+    for nothing 0 0
+      && nothing 0 0
+        > nothing 0 0
+          name k nothing 0 0
+          const (0) int 0 0
+        != nothing 0 0
+          name val nothing 0 0
+          name nil polymorphic type 0 0
+      seq nothing 0 0
+        = nothing 0 0
+          name val nothing 0 0
+          tl nothing 0 0
+            name val nothing 0 0
+        -- nothing 0 0
+          name k nothing 0 0
+    seq nothing 0 0
+      if nothing 0 0
+        != nothing 0 0
+          name val nothing 0 0
+          name nil polymorphic type 0 0
+        seq nothing 0 0
+          = nothing 0 0
+            name val nothing 0 0
+            :: nothing 0 0
+              hd nothing 0 0
+                name val nothing 0 0
+              name nil polymorphic type 0 0
+      seq nothing 0 0
+        return nothing 0 0
+          name val nothing 0 0
+typecheck tree: 
+fn(){} fn(name: string): list of ref Listnode 0 0
+  name getenv fn(name: string): list of ref Listnode 0 0
+  seq nothing 0 0
+    if nothing 0 0
+      == nothing 0 0
+        name env nothing 0 0
+        name nil polymorphic type 0 0
+      seq nothing 0 0
+        return nothing 0 0
+          name nil polymorphic type 0 0
+    seq nothing 0 0
+      return nothing 0 0
+        call nothing 0 0
+          name envstringtoval nothing 0 0
+          seq nothing 0 0
+            call nothing 0 0
+              -> nothing 0 0
+                name env nothing 0 0
+                name getenv nothing 0 0
+              seq nothing 0 0
+                name name nothing 0 0
+typecheck tree: 
+fn(){} fn(v: string): list of ref Listnode 0 0
+  name envstringtoval fn(v: string): list of ref Listnode 0 0
+  seq nothing 0 0
+    return nothing 0 0
+      call nothing 0 0
+        name stringlist2list nothing 0 0
+        seq nothing 0 0
+          call nothing 0 0
+            -> nothing 0 0
+              name str nothing 0 0
+              name unquoted nothing 0 0
+            seq nothing 0 0
+              name v nothing 0 0
+typecheck tree: 
+fn(){} fn(v: string): list of ref Listnode 0 0
+  name XXXenvstringtoval fn(v: string): list of ref Listnode 0 0
+  seq nothing 0 0
+    if nothing 0 0
+      == nothing 0 0
+        len nothing 0 0
+          name v nothing 0 0
+        const (0) int 0 0
+      seq nothing 0 0
+        return nothing 0 0
+          name nil polymorphic type 0 0
+    seq nothing 0 0
+      := nothing 0 0
+        name start nothing 0 0
+        len nothing 0 0
+          name v nothing 0 0
+      seq nothing 0 0
+        vardecl list of ref Listnode 0 0
+          seq nothing 0 0
+        seq nothing 0 0
+          seq nothing 0 0
+            := nothing 0 0
+              name i nothing 0 0
+              - nothing 0 0
+                name start nothing 0 0
+                const (1) int 0 0
+            for nothing 0 0
+              >= nothing 0 0
+                name i nothing 0 0
+                const (0) int 0 0
+              seq nothing 0 0
+                scope nothing 0 0
+                  seq nothing 0 0
+                    if nothing 0 0
+                      == nothing 0 0
+                        index nothing 0 0
+                          name v nothing 0 0
+                          name i nothing 0 0
+                        name ENVSEP nothing 0 0
+                      seq nothing 0 0
+                        scope nothing 0 0
+                          seq nothing 0 0
+                            = nothing 0 0
+                              name val nothing 0 0
+                              :: nothing 0 0
+                                ref nothing 0 0
+                                  call nothing 0 0
+                                    name Listnode nothing 0 0
+                                    seq nothing 0 0
+                                      name nil polymorphic type 0 0
+                                      seq nothing 0 0
+                                        slice nothing 0 0
+                                          name v nothing 0 0
+                                          seq nothing 0 0
+                                            + nothing 0 0
+                                              name i nothing 0 0
+                                              const (1) int 0 0
+                                            name start nothing 0 0
+                                name val nothing 0 0
+                            seq nothing 0 0
+                              = nothing 0 0
+                                name start nothing 0 0
+                                name i nothing 0 0
+                -- nothing 0 0
+                  name i nothing 0 0
+          seq nothing 0 0
+            return nothing 0 0
+              :: nothing 0 0
+                ref nothing 0 0
+                  call nothing 0 0
+                    name Listnode nothing 0 0
+                    seq nothing 0 0
+                      name nil polymorphic type 0 0
+                      seq nothing 0 0
+                        slice nothing 0 0
+                          name v nothing 0 0
+                          seq nothing 0 0
+                            const (0) int 0 0
+                            name start nothing 0 0
+                name val nothing 0 0
+typecheck tree: 
+fn(){} fn(name: string, val: list of ref Listnode) 0 0
+  name setenv fn(name: string, val: list of ref Listnode) 0 0
+  seq nothing 0 0
+    if nothing 0 0
+      == nothing 0 0
+        name env nothing 0 0
+        name nil polymorphic type 0 0
+      seq nothing 0 0
+        return nothing 0 0
+    seq nothing 0 0
+      call nothing 0 0
+        -> nothing 0 0
+          name env nothing 0 0
+          name setenv nothing 0 0
+        seq nothing 0 0
+          name name nothing 0 0
+          seq nothing 0 0
+            call nothing 0 0
+              name quoted nothing 0 0
+              seq nothing 0 0
+                name val nothing 0 0
+                seq nothing 0 0
+                  const (1) int 0 0
+typecheck tree: 
+fn(){} fn(s: string): int 0 0
+  name containswildchar fn(s: string): int 0 0
+  seq nothing 0 0
+    := nothing 0 0
+      name i nothing 0 0
+      const (0) int 0 0
+    seq nothing 0 0
+      for nothing 0 0
+        < nothing 0 0
+          name i nothing 0 0
+          len nothing 0 0
+            name s nothing 0 0
+        seq nothing 0 0
+          scope nothing 0 0
+            seq nothing 0 0
+              if nothing 0 0
+                && nothing 0 0
+                  == nothing 0 0
+                    index nothing 0 0
+                      name s nothing 0 0
+                      name i nothing 0 0
+                    name GLOB nothing 0 0
+                  < nothing 0 0
+                    name i nothing 0 0
+                    - nothing 0 0
+                      len nothing 0 0
+                        name s nothing 0 0
+                      const (1) int 0 0
+                seq nothing 0 0
+                  scope nothing 0 0
+                    seq nothing 0 0
+                      case nothing 0 0
+                        index nothing 0 0
+                          name s nothing 0 0
+                          + nothing 0 0
+                            name i nothing 0 0
+                            const (1) int 0 0
+                        seq nothing 0 0
+                          label nothing 0 0
+                            seq nothing 0 0
+                              const (42) int 0 0
+                              seq nothing 0 0
+                                const (91) int 0 0
+                                seq nothing 0 0
+                                  const (63) int 0 0
+                                  seq nothing 0 0
+                                    name GLOB nothing 0 0
+                            scope nothing 0 0
+                              return nothing 0 0
+                                const (1) int 0 0
+          ++ nothing 0 0
+            name i nothing 0 0
+      seq nothing 0 0
+        return nothing 0 0
+          const (0) int 0 0
+typecheck tree: 
+fn(){} fn(word: string): string 0 0
+  name patquote fn(word: string): string 0 0
+  seq nothing 0 0
+    := nothing 0 0
+      name outword nothing 0 0
+      const  string 0 0
+    seq nothing 0 0
+      seq nothing 0 0
+        := nothing 0 0
+          name i nothing 0 0
+          const (0) int 0 0
+        for nothing 0 0
+          < nothing 0 0
+            name i nothing 0 0
+            len nothing 0 0
+              name word nothing 0 0
+          seq nothing 0 0
+            scope nothing 0 0
+              seq nothing 0 0
+                case nothing 0 0
+                  index nothing 0 0
+                    name word nothing 0 0
+                    name i nothing 0 0
+                  seq nothing 0 0
+                    label nothing 0 0
+                      seq nothing 0 0
+                        const (91) int 0 0
+                        seq nothing 0 0
+                          const (42) int 0 0
+                          seq nothing 0 0
+                            const (63) int 0 0
+                            seq nothing 0 0
+                              const (92) int 0 0
+                      scope nothing 0 0
+                        = nothing 0 0
+                          index nothing 0 0
+                            name outword nothing 0 0
+                            len nothing 0 0
+                              name outword nothing 0 0
+                          const (92) int 0 0
+                    seq nothing 0 0
+                      label nothing 0 0
+                        seq nothing 0 0
+                          name GLOB nothing 0 0
+                        scope nothing 0 0
+                          seq nothing 0 0
+                            seq nothing 0 0
+                              ++ nothing 0 0
+                                name i nothing 0 0
+                              if nothing 0 0
+                                >= nothing 0 0
+                                  name i nothing 0 0
+                                  len nothing 0 0
+                                    name word nothing 0 0
+                                seq nothing 0 0
+                                  return nothing 0 0
+                                    name outword nothing 0 0
+                            if nothing 0 0
+                              && nothing 0 0
+                                && nothing 0 0
+                                  == nothing 0 0
+                                    index nothing 0 0
+                                      name word nothing 0 0
+                                      name i nothing 0 0
+                                    const (91) int 0 0
+                                  < nothing 0 0
+                                    name i nothing 0 0
+                                    - nothing 0 0
+                                      len nothing 0 0
+                                        name word nothing 0 0
+                                      const (1) int 0 0
+                                == nothing 0 0
+                                  index nothing 0 0
+                                    name word nothing 0 0
+                                    + nothing 0 0
+                                      name i nothing 0 0
+                                      const (1) int 0 0
+                                  const (126) int 0 0
+                              seq nothing 0 0
+                                = nothing 0 0
+                                  index nothing 0 0
+                                    name word nothing 0 0
+                                    + nothing 0 0
+                                      name i nothing 0 0
+                                      const (1) int 0 0
+                                  const (94) int 0 0
+                seq nothing 0 0
+                  = nothing 0 0
+                    index nothing 0 0
+                      name outword nothing 0 0
+                      len nothing 0 0
+                        name outword nothing 0 0
+                    index nothing 0 0
+                      name word nothing 0 0
+                      name i noth
+typecheck tree: 
+fn(){} fn(s: string): string 0 0
+  name deglob fn(s: string): string 0 0
+  seq nothing 0 0
+    := nothing 0 0
+      name j nothing 0 0
+      const (0) int 0 0
+    seq nothing 0 0
+      seq nothing 0 0
+        := nothing 0 0
+          name i nothing 0 0
+          const (0) int 0 0
+        for nothing 0 0
+          < nothing 0 0
+            name i nothing 0 0
+            len nothing 0 0
+              name s nothing 0 0
+          seq nothing 0 0
+            scope nothing 0 0
+              seq nothing 0 0
+                if nothing 0 0
+                  != nothing 0 0
+                    index nothing 0 0
+                      name s nothing 0 0
+                      name i nothing 0 0
+                    name GLOB nothing 0 0
+                  seq nothing 0 0
+                    scope nothing 0 0
+                      seq nothing 0 0
+                        if nothing 0 0
+                          != nothing 0 0
+                            name i nothing 0 0
+                            name j nothing 0 0
+                          seq nothing 0 0
+                            = nothing 0 0
+                              index nothing 0 0
+                                name s nothing 0 0
+                                name j nothing 0 0
+                              index nothing 0 0
+                                name s nothing 0 0
+                                name i nothing 0 0
+                        seq nothing 0 0
+                          ++ nothing 0 0
+                            name j nothing 0 0
+            ++ nothing 0 0
+              name i nothing 0 0
+      seq nothing 0 0
+        if nothing 0 0
+          == nothing 0 0
+            name i nothing 0 0
+            name j nothing 0 0
+          seq nothing 0 0
+            return nothing 0 0
+              name s nothing 0 0
+        seq nothing 0 0
+          return nothing 0 0
+            slice nothing 0 0
+              name s nothing 0 0
+              seq nothing 0 0
+                const (0) int 0 0
+                name j nothing 0 0
+typecheck tree: 
+fn(){} fn(nl: list of ref Listnode): list of ref Listnode 0 0
+  name glob fn(nl: list of ref Listnode): list of ref Listnode 0 0
+  seq nothing 0 0
+    vardecl list of ref Listnode 0 0
+      seq nothing 0 0
+    seq nothing 0 0
+      for nothing 0 0
+        != nothing 0 0
+          name nl nothing 0 0
+          name nil polymorphic type 0 0
+        seq nothing 0 0
+          scope nothing 0 0
+            seq nothing 0 0
+              := nothing 0 0
+                name n nothing 0 0
+                hd nothing 0 0
+                  name nl nothing 0 0
+              seq nothing 0 0
+                if nothing 0 0
+                  call nothing 0 0
+                    name containswildchar nothing 0 0
+                    seq nothing 0 0
+                      . nothing 0 0
+                        name n nothing 0 0
+                        name word nothing 0 0
+                  seq nothing 0 0
+                    scope nothing 0 0
+                      seq nothing 0 0
+                        := nothing 0 0
+                          name qword nothing 0 0
+                          call nothing 0 0
+                            name patquote nothing 0 0
+                            seq nothing 0 0
+                              . nothing 0 0
+                                name n nothing 0 0
+                                name word nothing 0 0
+                        seq nothing 0 0
+                          := nothing 0 0
+                            name files nothing 0 0
+                            call nothing 0 0
+                              -> nothing 0 0
+                                name filepat nothing 0 0
+                                name expand nothing 0 0
+                              seq nothing 0 0
+                                name qword nothing 0 0
+                          seq nothing 0 0
+                            if nothing 0 0
+                              == nothing 0 0
+                                name files nothing 0 0
+                                name nil polymorphic type 0 0
+                              seq nothing 0 0
+                                = nothing 0 0
+                                  name files nothing 0 0
+                                  :: nothing 0 0
+                                    call nothing 0 0
+                                      name deglob nothing 0 0
+                                      seq nothing 0 0
+                                        . nothing 0 0
+                                          name n nothing 0 0
+                                          name word nothing 0 0
+                                    name nil polymorphic type 0 0
+                            seq nothing 0 0
+                              for nothing 0 0
+                                != nothing 0 0
+                                  name files nothing 0 0
+                                  name nil polymorphic type 0 0
+                                seq nothing 0 0
+                                  scope nothing 0 0
+                                    seq nothing 0 0
+                                      = nothing 0 0
+                                        name new nothing 0 0
+                                        :: nothing 0 0
+                                          ref nothing 0 0
+                                            call nothing 0 0
+                                              name Listnode nothing 0 0
+                                              seq nothing 0 0
+                                                name nil polymorphic type 0 0
+                                                seq nothing 0 0
+                                                  hd nothing 0 0
+                                                    name files nothing 0 0
+                                          name new nothing 0 0
+                                      seq nothing 0 0
+                                        = nothing 0 0
+                                          name files nothing 0 0
+                                          tl nothing 0 0
+                                        
+typecheck tree: 
+fn(){} fn(nl: list of ref Listnode): list of string 0 0
+  name list2stringlist fn(nl: list of ref Listnode): list of string 0 0
+  seq nothing 0 0
+    vardecli nothing 0 0
+      vardecl list of string 0 0
+        seq nothing 0 0
+      = nothing 0 0
+        name ret nothing 0 0
+        name nil polymorphic type 0 0
+    seq nothing 0 0
+      for nothing 0 0
+        != nothing 0 0
+          name nl nothing 0 0
+          name nil polymorphic type 0 0
+        seq nothing 0 0
+          scope nothing 0 0
+            seq nothing 0 0
+              vardecl string 0 0
+                seq nothing 0 0
+              seq nothing 0 0
+                := nothing 0 0
+                  name el nothing 0 0
+                  hd nothing 0 0
+                    name nl nothing 0 0
+                seq nothing 0 0
+                  if nothing 0 0
+                    || nothing 0 0
+                      != nothing 0 0
+                        . nothing 0 0
+                          name el nothing 0 0
+                          name word nothing 0 0
+                        name nil polymorphic type 0 0
+                      == nothing 0 0
+                        . nothing 0 0
+                          name el nothing 0 0
+                          name cmd nothing 0 0
+                        name nil polymorphic type 0 0
+                    seq nothing 0 0
+                      = nothing 0 0
+                        name newel nothing 0 0
+                        . nothing 0 0
+                          name el nothing 0 0
+                          name word nothing 0 0
+                      = nothing 0 0
+                        . nothing 0 0
+                          name el nothing 0 0
+                          name word nothing 0 0
+                        = nothing 0 0
+                          name newel nothing 0 0
+                          call nothing 0 0
+                            name cmd2string nothing 0 0
+                            seq nothing 0 0
+                              . nothing 0 0
+                                name el nothing 0 0
+                                name cmd nothing 0 0
+                  seq nothing 0 0
+                    = nothing 0 0
+                      name ret nothing 0 0
+                      :: nothing 0 0
+                        name newel nothing 0 0
+                        name ret nothing 0 0
+                    seq nothing 0 0
+                      = nothing 0 0
+                        name nl nothing 0 0
+                        tl nothing 0 0
+                          name nl nothing 0 0
+      seq nothing 0 0
+        := nothing 0 0
+          name sl nothing 0 0
+          call nothing 0 0
+            name revstringlist nothing 0 0
+            seq nothing 0 0
+              name ret nothing 0 0
+        seq nothing 0 0
+          return nothing 0 0
+            name sl nothing 0 0
+typecheck tree: 
+fn(){} fn(sl: list of string): list of ref Listnode 0 0
+  name stringlist2list fn(sl: list of string): list of ref Listnode 0 0
+  seq nothing 0 0
+    vardecl list of ref Listnode 0 0
+      seq nothing 0 0
+    seq nothing 0 0
+      for nothing 0 0
+        != nothing 0 0
+          name sl nothing 0 0
+          name nil polymorphic type 0 0
+        seq nothing 0 0
+          scope nothing 0 0
+            seq nothing 0 0
+              = nothing 0 0
+                name ret nothing 0 0
+                :: nothing 0 0
+                  ref nothing 0 0
+                    call nothing 0 0
+                      name Listnode nothing 0 0
+                      seq nothing 0 0
+                        name nil polymorphic type 0 0
+                        seq nothing 0 0
+                          hd nothing 0 0
+                            name sl nothing 0 0
+                  name ret nothing 0 0
+              seq nothing 0 0
+                = nothing 0 0
+                  name sl nothing 0 0
+                  tl nothing 0 0
+                    name sl nothing 0 0
+      seq nothing 0 0
+        return nothing 0 0
+          call nothing 0 0
+            name revlist nothing 0 0
+            seq nothing 0 0
+              name ret nothing 0 0
+typecheck tree: 
+fn(){} fn(l: list of string): list of string 0 0
+  name revstringlist fn(l: list of string): list of string 0 0
+  seq nothing 0 0
+    vardecl list of string 0 0
+      seq nothing 0 0
+    seq nothing 0 0
+      for nothing 0 0
+        != nothing 0 0
+          name l nothing 0 0
+          name nil polymorphic type 0 0
+        seq nothing 0 0
+          scope nothing 0 0
+            seq nothing 0 0
+              = nothing 0 0
+                name t nothing 0 0
+                :: nothing 0 0
+                  hd nothing 0 0
+                    name l nothing 0 0
+                  name t nothing 0 0
+              seq nothing 0 0
+                = nothing 0 0
+                  name l nothing 0 0
+                  tl nothing 0 0
+                    name l nothing 0 0
+      seq nothing 0 0
+        return nothing 0 0
+          name t nothing 0 0
+typecheck tree: 
+fn(){} fn(l: list of ref Listnode): list of ref Listnode 0 0
+  name revlist fn(l: list of ref Listnode): list of ref Listnode 0 0
+  seq nothing 0 0
+    vardecl list of ref Listnode 0 0
+      seq nothing 0 0
+    seq nothing 0 0
+      for nothing 0 0
+        != nothing 0 0
+          name l nothing 0 0
+          name nil polymorphic type 0 0
+        seq nothing 0 0
+          scope nothing 0 0
+            seq nothing 0 0
+              = nothing 0 0
+                name t nothing 0 0
+                :: nothing 0 0
+                  hd nothing 0 0
+                    name l nothing 0 0
+                  name t nothing 0 0
+              seq nothing 0 0
+                = nothing 0 0
+                  name l nothing 0 0
+                  tl nothing 0 0
+                    name l nothing 0 0
+      seq nothing 0 0
+        return nothing 0 0
+          name t nothing 0 0
+typecheck tree: 
+fn(){} fn(isassign: int, redir: ref Redir): string 0 0
+  name fdassignstr fn(isassign: int, redir: ref Redir): string 0 0
+  seq nothing 0 0
+    vardecli nothing 0 0
+      vardecl string 0 0
+        seq nothing 0 0
+      = nothing 0 0
+        name l nothing 0 0
+        name nil polymorphic type 0 0
+    seq nothing 0 0
+      if nothing 0 0
+        >= nothing 0 0
+          . nothing 0 0
+            name redir nothing 0 0
+            name fd1 nothing 0 0
+          const (0) int 0 0
+        seq nothing 0 0
+          = nothing 0 0
+            name l nothing 0 0
+            cast string 0 0
+              . nothing 0 0
+                name redir nothing 0 0
+                name fd1 nothing 0 0
+      seq nothing 0 0
+        if nothing 0 0
+          name isassign nothing 0 0
+          seq nothing 0 0
+            scope nothing 0 0
+              seq nothing 0 0
+                vardecli nothing 0 0
+                  vardecl string 0 0
+                    seq nothing 0 0
+                  = nothing 0 0
+                    name r nothing 0 0
+                    name nil polymorphic type 0 0
+                seq nothing 0 0
+                  if nothing 0 0
+                    >= nothing 0 0
+                      . nothing 0 0
+                        name redir nothing 0 0
+                        name fd2 nothing 0 0
+                      const (0) int 0 0
+                    seq nothing 0 0
+                      = nothing 0 0
+                        name r nothing 0 0
+                        cast string 0 0
+                          . nothing 0 0
+                            name redir nothing 0 0
+                            name fd2 nothing 0 0
+                  seq nothing 0 0
+                    return nothing 0 0
+                      + nothing 0 0
+                        + nothing 0 0
+                          + nothing 0 0
+                            + nothing 0 0
+                              const [ string 0 0
+                              name l nothing 0 0
+                            const = string 0 0
+                          name r nothing 0 0
+                        const ] string 0 0
+        seq nothing 0 0
+          return nothing 0 0
+            + nothing 0 0
+              + nothing 0 0
+                const [ string 0 0
+                name l nothing 0 0
+              const ] string 0 0
+typecheck tree: 
+fn(){} fn(rtype: int): string 0 0
+  name redirstr fn(rtype: int): string 0 0
+  seq nothing 0 0
+    case nothing 0 0
+      name rtype nothing 0 0
+      seq nothing 0 0
+        label nothing 0 0
+          seq nothing 0 0
+            * nothing 0 0
+            seq nothing 0 0
+              -> nothing 0 0
+                name Sys nothing 0 0
+                name OREAD nothing 0 0
+          scope nothing 0 0
+            return nothing 0 0
+              const < string 0 0
+        seq nothing 0 0
+          label nothing 0 0
+            seq nothing 0 0
+              -> nothing 0 0
+                name Sys nothing 0 0
+                name OWRITE nothing 0 0
+            scope nothing 0 0
+              return nothing 0 0
+                const > string 0 0
+          seq nothing 0 0
+            label nothing 0 0
+              seq nothing 0 0
+                | nothing 0 0
+                  -> nothing 0 0
+                    name Sys nothing 0 0
+                    name OWRITE nothing 0 0
+                  name OAPPEND nothing 0 0
+              scope nothing 0 0
+                return nothing 0 0
+                  const >> string 0 0
+            seq nothing 0 0
+              label nothing 0 0
+                seq nothing 0 0
+                  -> nothing 0 0
+                    name Sys nothing 0 0
+                    name ORDWR nothing 0 0
+                scope nothing 0 0
+                  return nothing 0 0
+                    const <> string 0 0
+typecheck tree: 
+fn(){} fn(n: ref Node): string 0 0
+  name cmd2string fn(c: ref Node): string 0 0
+  seq nothing 0 0
+    if nothing 0 0
+      == nothing 0 0
+        name n nothing 0 0
+        name nil polymorphic type 0 0
+      seq nothing 0 0
+        return nothing 0 0
+          const  string 0 0
+    seq nothing 0 0
+      vardecl string 0 0
+        seq nothing 0 0
+      seq nothing 0 0
+        case nothing 0 0
+          . nothing 0 0
+            name n nothing 0 0
+            name ntype nothing 0 0
+          seq nothing 0 0
+            label nothing 0 0
+              seq nothing 0 0
+                name n_BLOCK nothing 0 0
+              scope nothing 0 0
+                = nothing 0 0
+                  name s nothing 0 0
+                  + nothing 0 0
+                    + nothing 0 0
+                      const { string 0 0
+                      call nothing 0 0
+                        name cmd2string nothing 0 0
+                        seq nothing 0 0
+                          . nothing 0 0
+                            name n nothing 0 0
+                            name left nothing 0 0
+                    const } string 0 0
+            seq nothing 0 0
+              label nothing 0 0
+                seq nothing 0 0
+                  name n_VAR nothing 0 0
+                scope nothing 0 0
+                  seq nothing 0 0
+                    = nothing 0 0
+                      name s nothing 0 0
+                      + nothing 0 0
+                        const $ string 0 0
+                        call nothing 0 0
+                          name cmd2string nothing 0 0
+                          seq nothing 0 0
+                            . nothing 0 0
+                              name n nothing 0 0
+                              name left nothing 0 0
+                    if nothing 0 0
+                      != nothing 0 0
+                        . nothing 0 0
+                          name n nothing 0 0
+                          name right nothing 0 0
+                        name nil polymorphic type 0 0
+                      seq nothing 0 0
+                        += nothing 0 0
+                          name s nothing 0 0
+                          + nothing 0 0
+                            + nothing 0 0
+                              const ( string 0 0
+                              call nothing 0 0
+                                name cmd2string nothing 0 0
+                                seq nothing 0 0
+                                  . nothing 0 0
+                                    name n nothing 0 0
+                                    name right nothing 0 0
+                            const ) string 0 0
+              seq nothing 0 0
+                label nothing 0 0
+                  seq nothing 0 0
+                    name n_SQUASH nothing 0 0
+                  scope nothing 0 0
+                    = nothing 0 0
+                      name s nothing 0 0
+                      + nothing 0 0
+                        const $" string 0 0
+                        call nothing 0 0
+                          name cmd2string nothing 0 0
+                          seq nothing 0 0
+                            . nothing 0 0
+                              name n nothing 0 0
+                              name left nothing 0 0
+                seq nothing 0 0
+                  label nothing 0 0
+                    seq nothing 0 0
+                      name n_COUNT nothing 0 0
+                    scope nothing 0 0
+                      = nothing 0 0
+                        name s nothing 0 0
+                        + nothing 0 0
+                          const $# string 0 0
+                          call nothing 0 0
+                            name cmd2string nothing 0 0
+                            seq nothing 0 0
+                              . nothing 0 0
+                                name n nothing 0 0
+                                name left nothing 0 0
+                  seq nothing 0 0
+                    label nothing 0 0
+                      seq nothing 0 0
+                        name n_BQ nothing 0 0
+                      scope nothing 0 0
+  
+typecheck tree: 
+fn(){} fn(s: string, glob: int): string 0 0
+  name quote fn(s: string, glob: int): string 0 0
+  seq nothing 0 0
+    := nothing 0 0
+      name needquote nothing 0 0
+      const (0) int 0 0
+    seq nothing 0 0
+      := nothing 0 0
+        name t nothing 0 0
+        const  string 0 0
+      seq nothing 0 0
+        seq nothing 0 0
+          := nothing 0 0
+            name i nothing 0 0
+            const (0) int 0 0
+          for nothing 0 0
+            < nothing 0 0
+              name i nothing 0 0
+              len nothing 0 0
+                name s nothing 0 0
+            seq nothing 0 0
+              scope nothing 0 0
+                seq nothing 0 0
+                  case nothing 0 0
+                    index nothing 0 0
+                      name s nothing 0 0
+                      name i nothing 0 0
+                    seq nothing 0 0
+                      label nothing 0 0
+                        seq nothing 0 0
+                          const (123) int 0 0
+                          seq nothing 0 0
+                            const (125) int 0 0
+                            seq nothing 0 0
+                              const (40) int 0 0
+                              seq nothing 0 0
+                                const (41) int 0 0
+                                seq nothing 0 0
+                                  const (96) int 0 0
+                                  seq nothing 0 0
+                                    const (38) int 0 0
+                                    seq nothing 0 0
+                                      const (59) int 0 0
+                                      seq nothing 0 0
+                                        const (61) int 0 0
+                                        seq nothing 0 0
+                                          const (62) int 0 0
+                                          seq nothing 0 0
+                                            const (60) int 0 0
+                                            seq nothing 0 0
+                                              const (35) int 0 0
+                                              seq nothing 0 0
+                                                const (124) int 0 0
+                                                seq nothing 0 0
+                                                  const (42) int 0 0
+                                                  seq nothing 0 0
+                                                    const (91) int 0 0
+                                                    seq nothing 0 0
+                                                      const (63) int 0 0
+                                                      seq nothing 0 0
+                                                        const (36) int 0 0
+                                                        seq nothing 0 0
+                                                          const (94) int 0 0
+                                                          seq nothing 0 0
+                                                            const (32) int 0 0
+                                                            seq nothing 0 0
+                                                              const (9) int 0 0
+                                                              seq nothing 0 0
+                                                                const (10) int 0 0
+                                                                seq nothing 0 0
+                                                                  const (13) int 0 0
+                        scope nothing 0 0
+                          = nothing 0 0
+                            name needquote nothing 0 0
+                            const (1) int 0 0
+                      seq nothing 0 0
+                        label nothing 0 0
+                          seq nothing 0 0
+                            const (39) int 0 0
+                          scope nothing 0 0
+                            seq nothing 0 0
+                              = nothing 0 0
+                                index nothing 0 0
+                                  name t nothi
+typecheck tree: 
+fn(){} fn(l: list of string, sep: string): string 0 0
+  name squash fn(l: list of string, sep: string): string 0 0
+  seq nothing 0 0
+    if nothing 0 0
+      == nothing 0 0
+        name l nothing 0 0
+        name nil polymorphic type 0 0
+      seq nothing 0 0
+        return nothing 0 0
+          name nil polymorphic type 0 0
+    seq nothing 0 0
+      := nothing 0 0
+        name s nothing 0 0
+        hd nothing 0 0
+          name l nothing 0 0
+      seq nothing 0 0
+        seq nothing 0 0
+          = nothing 0 0
+            name l nothing 0 0
+            tl nothing 0 0
+              name l nothing 0 0
+          for nothing 0 0
+            != nothing 0 0
+              name l nothing 0 0
+              name nil polymorphic type 0 0
+            seq nothing 0 0
+              += nothing 0 0
+                name s nothing 0 0
+                + nothing 0 0
+                  name sep nothing 0 0
+                  hd nothing 0 0
+                    name l nothing 0 0
+              = nothing 0 0
+                name l nothing 0 0
+                tl nothing 0 0
+                  name l nothing 0 0
+        seq nothing 0 0
+          return nothing 0 0
+            name s nothing 0 0
+typecheck tree: 
+fn(){} fn(s: string) 0 0
+  name debug fn(s: string) 0 0
+  seq nothing 0 0
+    if nothing 0 0
+      name DEBUG nothing 0 0
+      seq nothing 0 0
+        call nothing 0 0
+          -> nothing 0 0
+            name sys nothing 0 0
+            name fprint nothing 0 0
+          seq nothing 0 0
+            call nothing 0 0
+              name stderr nothing 0 0
+            seq nothing 0 0
+              const %s
+ string 0 0
+              seq nothing 0 0
+                + nothing 0 0
+                  + nothing 0 0
+                    cast string 0 0
+                      call nothing 0 0
+                        -> nothing 0 0
+                          name sys nothing 0 0
+                          name pctl nothing 0 0
+                        seq nothing 0 0
+                          const (0) int 0 0
+                          seq nothing 0 0
+                            name nil polymorphic type 0 0
+                    const :  string 0 0
+                  name s nothing 0 0
+typecheck tree: 
+fn(){} fn(c: ref Context, nil: Sh): string 0 0
+  name initbuiltin fn(c: ref Context, sh: Sh): string 0 0
+  seq nothing 0 0
+    := nothing 0 0
+      name names nothing 0 0
+      array nothing 0 0
+        nothing nothing 0 0
+        seq nothing 0 0
+          elem nothing 0 0
+            const load string 0 0
+          seq nothing 0 0
+            elem nothing 0 0
+              const unload string 0 0
+            seq nothing 0 0
+              elem nothing 0 0
+                const loaded string 0 0
+              seq nothing 0 0
+                elem nothing 0 0
+                  const builtin string 0 0
+                seq nothing 0 0
+                  elem nothing 0 0
+                    const syncenv string 0 0
+                  seq nothing 0 0
+                    elem nothing 0 0
+                      const whatis string 0 0
+                    seq nothing 0 0
+                      elem nothing 0 0
+                        const run string 0 0
+                      seq nothing 0 0
+                        elem nothing 0 0
+                          const exit string 0 0
+                        seq nothing 0 0
+                          elem nothing 0 0
+                            const @ string 0 0
+    seq nothing 0 0
+      seq nothing 0 0
+        := nothing 0 0
+          name i nothing 0 0
+          const (0) int 0 0
+        for nothing 0 0
+          < nothing 0 0
+            name i nothing 0 0
+            len nothing 0 0
+              name names nothing 0 0
+          seq nothing 0 0
+            call nothing 0 0
+              . nothing 0 0
+                name c nothing 0 0
+                name addbuiltin nothing 0 0
+              seq nothing 0 0
+                index nothing 0 0
+                  name names nothing 0 0
+                  name i nothing 0 0
+                seq nothing 0 0
+                  name myselfbuiltin nothing 0 0
+            ++ nothing 0 0
+              name i nothing 0 0
+      seq nothing 0 0
+        call nothing 0 0
+          . nothing 0 0
+            name c nothing 0 0
+            name addsbuiltin nothing 0 0
+          seq nothing 0 0
+            const loaded string 0 0
+            seq nothing 0 0
+              name myselfbuiltin nothing 0 0
+        seq nothing 0 0
+          call nothing 0 0
+            . nothing 0 0
+              name c nothing 0 0
+              name addsbuiltin nothing 0 0
+            seq nothing 0 0
+              const quote string 0 0
+              seq nothing 0 0
+                name myselfbuiltin nothing 0 0
+          seq nothing 0 0
+            call nothing 0 0
+              . nothing 0 0
+                name c nothing 0 0
+                name addsbuiltin nothing 0 0
+              seq nothing 0 0
+                const bquote string 0 0
+                seq nothing 0 0
+                  name myselfbuiltin nothing 0 0
+            seq nothing 0 0
+              call nothing 0 0
+                . nothing 0 0
+                  name c nothing 0 0
+                  name addsbuiltin nothing 0 0
+                seq nothing 0 0
+                  const unquote string 0 0
+                  seq nothing 0 0
+                    name myselfbuiltin nothing 0 0
+              seq nothing 0 0
+                call nothing 0 0
+                  . nothing 0 0
+                    name c nothing 0 0
+                    name addsbuiltin nothing 0 0
+                  seq nothing 0 0
+                    const builtin string 0 0
+                    seq nothing 0 0
+                      name myselfbuiltin nothing 0 0
+                seq nothing 0 0
+                  return nothing 0 0
+                    name nil polymorphic type 0 0
+typecheck tree: 
+fn(){} fn(nil: ref Context, nil: Sh, nil: string, nil: int): string 0 0
+  name whatis fn(nil: ref Context, nil: Sh, nil: string, nil: int): string 0 0
+  seq nothing 0 0
+    return nothing 0 0
+      name nil polymorphic type 0 0
+typecheck tree: 
+fn(){} fn(ctxt: ref Context, nil: Sh, argv: list of ref Listnode): list of ref Listnode 0 0
+  name runsbuiltin fn(c: ref Context, sh: Sh, cmd: list of ref Listnode): list of ref Listnode 0 0
+  seq nothing 0 0
+    case nothing 0 0
+      . nothing 0 0
+        hd nothing 0 0
+          name argv nothing 0 0
+        name word nothing 0 0
+      seq nothing 0 0
+        label nothing 0 0
+          seq nothing 0 0
+            const loaded string 0 0
+          scope nothing 0 0
+            return nothing 0 0
+              call nothing 0 0
+                name sbuiltin_loaded nothing 0 0
+                seq nothing 0 0
+                  name ctxt nothing 0 0
+                  seq nothing 0 0
+                    name argv nothing 0 0
+        seq nothing 0 0
+          label nothing 0 0
+            seq nothing 0 0
+              const bquote string 0 0
+            scope nothing 0 0
+              return nothing 0 0
+                call nothing 0 0
+                  name sbuiltin_quote nothing 0 0
+                  seq nothing 0 0
+                    name ctxt nothing 0 0
+                    seq nothing 0 0
+                      name argv nothing 0 0
+                      seq nothing 0 0
+                        const (0) int 0 0
+          seq nothing 0 0
+            label nothing 0 0
+              seq nothing 0 0
+                const quote string 0 0
+              scope nothing 0 0
+                return nothing 0 0
+                  call nothing 0 0
+                    name sbuiltin_quote nothing 0 0
+                    seq nothing 0 0
+                      name ctxt nothing 0 0
+                      seq nothing 0 0
+                        name argv nothing 0 0
+                        seq nothing 0 0
+                          const (1) int 0 0
+            seq nothing 0 0
+              label nothing 0 0
+                seq nothing 0 0
+                  const unquote string 0 0
+                scope nothing 0 0
+                  return nothing 0 0
+                    call nothing 0 0
+                      name sbuiltin_unquote nothing 0 0
+                      seq nothing 0 0
+                        name ctxt nothing 0 0
+                        seq nothing 0 0
+                          name argv nothing 0 0
+              seq nothing 0 0
+                label nothing 0 0
+                  seq nothing 0 0
+                    const builtin string 0 0
+                  scope nothing 0 0
+                    return nothing 0 0
+                      call nothing 0 0
+                        name sbuiltin_builtin nothing 0 0
+                        seq nothing 0 0
+                          name ctxt nothing 0 0
+                          seq nothing 0 0
+                            name argv nothing 0 0
+    seq nothing 0 0
+      return nothing 0 0
+        name nil polymorphic type 0 0
+typecheck tree: 
+fn(){} fn(ctxt: ref Context, nil: Sh, args: list of ref Listnode, lseq: int): string 0 0
+  name runbuiltin fn(c: ref Context, sh: Sh, cmd: list of ref Listnode, last: int): string 0 0
+  seq nothing 0 0
+    := nothing 0 0
+      name status nothing 0 0
+      const  string 0 0
+    seq nothing 0 0
+      := nothing 0 0
+        name name nothing 0 0
+        . nothing 0 0
+          hd nothing 0 0
+            name args nothing 0 0
+          name word nothing 0 0
+      seq nothing 0 0
+        case nothing 0 0
+          name name nothing 0 0
+          seq nothing 0 0
+            label nothing 0 0
+              seq nothing 0 0
+                const load string 0 0
+              scope nothing 0 0
+                = nothing 0 0
+                  name status nothing 0 0
+                  call nothing 0 0
+                    name builtin_load nothing 0 0
+                    seq nothing 0 0
+                      name ctxt nothing 0 0
+                      seq nothing 0 0
+                        name args nothing 0 0
+                        seq nothing 0 0
+                          name lseq nothing 0 0
+            seq nothing 0 0
+              label nothing 0 0
+                seq nothing 0 0
+                  const loaded string 0 0
+                scope nothing 0 0
+                  = nothing 0 0
+                    name status nothing 0 0
+                    call nothing 0 0
+                      name builtin_loaded nothing 0 0
+                      seq nothing 0 0
+                        name ctxt nothing 0 0
+                        seq nothing 0 0
+                          name args nothing 0 0
+                          seq nothing 0 0
+                            name lseq nothing 0 0
+              seq nothing 0 0
+                label nothing 0 0
+                  seq nothing 0 0
+                    const unload string 0 0
+                  scope nothing 0 0
+                    = nothing 0 0
+                      name status nothing 0 0
+                      call nothing 0 0
+                        name builtin_unload nothing 0 0
+                        seq nothing 0 0
+                          name ctxt nothing 0 0
+                          seq nothing 0 0
+                            name args nothing 0 0
+                            seq nothing 0 0
+                              name lseq nothing 0 0
+                seq nothing 0 0
+                  label nothing 0 0
+                    seq nothing 0 0
+                      const builtin string 0 0
+                    scope nothing 0 0
+                      = nothing 0 0
+                        name status nothing 0 0
+                        call nothing 0 0
+                          name builtin_builtin nothing 0 0
+                          seq nothing 0 0
+                            name ctxt nothing 0 0
+                            seq nothing 0 0
+                              name args nothing 0 0
+                              seq nothing 0 0
+                                name lseq nothing 0 0
+                  seq nothing 0 0
+                    label nothing 0 0
+                      seq nothing 0 0
+                        const whatis string 0 0
+                      scope nothing 0 0
+                        = nothing 0 0
+                          name status nothing 0 0
+                          call nothing 0 0
+                            name builtin_whatis nothing 0 0
+                            seq nothing 0 0
+                              name ctxt nothing 0 0
+                              seq nothing 0 0
+                                name args nothing 0 0
+                                seq nothing 0 0
+                                  name lseq nothing 0 0
+                    seq nothing 0 0
+                      label nothing 0 0
+                        seq nothing 0 0
+                          const run string 0 0
+                        scope nothing 0 0
+                          = nothing 0 0
+                            name status nothing 0 0
+                            call nothing 0 0
+                              name builtin_run nothing 0 0
+            
+typecheck tree: 
+fn(){} fn(ctxt: ref Context, nil: list of ref Listnode): list of ref Listnode 0 0
+  name sbuiltin_loaded fn(ctxt: ref Context, nil: list of ref Listnode): list of ref Listnode 0 0
+  seq nothing 0 0
+    vardecl list of ref Listnode 0 0
+      seq nothing 0 0
+    seq nothing 0 0
+      seq nothing 0 0
+        := nothing 0 0
+          name bl nothing 0 0
+          . nothing 0 0
+            . nothing 0 0
+              name ctxt nothing 0 0
+              name env nothing 0 0
+            name bmods nothing 0 0
+        for nothing 0 0
+          != nothing 0 0
+            name bl nothing 0 0
+            name nil polymorphic type 0 0
+          seq nothing 0 0
+            scope nothing 0 0
+              seq nothing 0 0
+                := nothing 0 0
+                  tuple nothing 0 0
+                    seq nothing 0 0
+                      name name nothing 0 0
+                      seq nothing 0 0
+                        name nil polymorphic type 0 0
+                  hd nothing 0 0
+                    name bl nothing 0 0
+                seq nothing 0 0
+                  = nothing 0 0
+                    name v nothing 0 0
+                    :: nothing 0 0
+                      ref nothing 0 0
+                        call nothing 0 0
+                          name Listnode nothing 0 0
+                          seq nothing 0 0
+                            name nil polymorphic type 0 0
+                            seq nothing 0 0
+                              name name nothing 0 0
+                      name v nothing 0 0
+            = nothing 0 0
+              name bl nothing 0 0
+              tl nothing 0 0
+                name bl nothing 0 0
+      seq nothing 0 0
+        return nothing 0 0
+          name v nothing 0 0
+typecheck tree: 
+fn(){} fn(nil: ref Context, argv: list of ref Listnode, quoteblocks: int): list of ref Listnode 0 0
+  name sbuiltin_quote fn(nil: ref Context, argv: list of ref Listnode, quoteblocks: int): list of ref Listnode 0 0
+  seq nothing 0 0
+    return nothing 0 0
+      :: nothing 0 0
+        ref nothing 0 0
+          call nothing 0 0
+            name Listnode nothing 0 0
+            seq nothing 0 0
+              name nil polymorphic type 0 0
+              seq nothing 0 0
+                call nothing 0 0
+                  name quoted nothing 0 0
+                  seq nothing 0 0
+                    tl nothing 0 0
+                      name argv nothing 0 0
+                    seq nothing 0 0
+                      name quoteblocks nothing 0 0
+        name nil polymorphic type 0 0
+typecheck tree: 
+fn(){} fn(ctxt: ref Context, args: list of ref Listnode): list of ref Listnode 0 0
+  name sbuiltin_builtin fn(ctxt: ref Context, args: list of ref Listnode): list of ref Listnode 0 0
+  seq nothing 0 0
+    if nothing 0 0
+      || nothing 0 0
+        == nothing 0 0
+          name args nothing 0 0
+          name nil polymorphic type 0 0
+        == nothing 0 0
+          tl nothing 0 0
+            name args nothing 0 0
+          name nil polymorphic type 0 0
+      seq nothing 0 0
+        call nothing 0 0
+          name builtinusage nothing 0 0
+          seq nothing 0 0
+            name ctxt nothing 0 0
+            seq nothing 0 0
+              const builtin command [args ...] string 0 0
+    seq nothing 0 0
+      := nothing 0 0
+        name name nothing 0 0
+        . nothing 0 0
+          hd nothing 0 0
+            tl nothing 0 0
+              name args nothing 0 0
+          name word nothing 0 0
+      seq nothing 0 0
+        := nothing 0 0
+          tuple nothing 0 0
+            seq nothing 0 0
+              name nil polymorphic type 0 0
+              seq nothing 0 0
+                name mods nothing 0 0
+          call nothing 0 0
+            name findbuiltin nothing 0 0
+            seq nothing 0 0
+              . nothing 0 0
+                . nothing 0 0
+                  name ctxt nothing 0 0
+                  name env nothing 0 0
+                name sbuiltins nothing 0 0
+              seq nothing 0 0
+                name name nothing 0 0
+        seq nothing 0 0
+          for nothing 0 0
+            != nothing 0 0
+              name mods nothing 0 0
+              name nil polymorphic type 0 0
+            seq nothing 0 0
+              if nothing 0 0
+                == nothing 0 0
+                  hd nothing 0 0
+                    name mods nothing 0 0
+                  name myselfbuiltin nothing 0 0
+                seq nothing 0 0
+                  return nothing 0 0
+                    call nothing 0 0
+                      -> nothing 0 0
+                        hd nothing 0 0
+                          name mods nothing 0 0
+                        name runsbuiltin nothing 0 0
+                      seq nothing 0 0
+                        name ctxt nothing 0 0
+                        seq nothing 0 0
+                          name myself nothing 0 0
+                          seq nothing 0 0
+                            tl nothing 0 0
+                              name args nothing 0 0
+              = nothing 0 0
+                name mods nothing 0 0
+                tl nothing 0 0
+                  name mods nothing 0 0
+          seq nothing 0 0
+            call nothing 0 0
+              . nothing 0 0
+                name ctxt nothing 0 0
+                name fail nothing 0 0
+              seq nothing 0 0
+                const builtin not found string 0 0
+                seq nothing 0 0
+                  call nothing 0 0
+                    -> nothing 0 0
+                      name sys nothing 0 0
+                      name sprint nothing 0 0
+                    seq nothing 0 0
+                      const sh: builtin %s not found string 0 0
+                      seq nothing 0 0
+                        name name nothing 0 0
+            seq nothing 0 0
+              return nothing 0 0
+                name nil polymorphic type 0 0
+typecheck tree: 
+fn(){} fn(ctxt: ref Context, argv: list of ref Listnode): list of ref Listnode 0 0
+  name sbuiltin_unquote fn(ctxt: ref Context, argv: list of ref Listnode): list of ref Listnode 0 0
+  seq nothing 0 0
+    = nothing 0 0
+      name argv nothing 0 0
+      tl nothing 0 0
+        name argv nothing 0 0
+    seq nothing 0 0
+      if nothing 0 0
+        || nothing 0 0
+          == nothing 0 0
+            name argv nothing 0 0
+            name nil polymorphic type 0 0
+          != nothing 0 0
+            tl nothing 0 0
+              name argv nothing 0 0
+            name nil polymorphic type 0 0
+        seq nothing 0 0
+          call nothing 0 0
+            name builtinusage nothing 0 0
+            seq nothing 0 0
+              name ctxt nothing 0 0
+              seq nothing 0 0
+                const unquote arg string 0 0
+      seq nothing 0 0
+        := nothing 0 0
+          name arg nothing 0 0
+          . nothing 0 0
+            hd nothing 0 0
+              name argv nothing 0 0
+            name word nothing 0 0
+        seq nothing 0 0
+          if nothing 0 0
+            && nothing 0 0
+              == nothing 0 0
+                name arg nothing 0 0
+                name nil polymorphic type 0 0
+              != nothing 0 0
+                . nothing 0 0
+                  hd nothing 0 0
+                    name argv nothing 0 0
+                  name cmd nothing 0 0
+                name nil polymorphic type 0 0
+            seq nothing 0 0
+              = nothing 0 0
+                name arg nothing 0 0
+                call nothing 0 0
+                  name cmd2string nothing 0 0
+                  seq nothing 0 0
+                    . nothing 0 0
+                      hd nothing 0 0
+                        name argv nothing 0 0
+                      name cmd nothing 0 0
+          seq nothing 0 0
+            return nothing 0 0
+              call nothing 0 0
+                name stringlist2list nothing 0 0
+                seq nothing 0 0
+                  call nothing 0 0
+                    -> nothing 0 0
+                      name str nothing 0 0
+                      name unquoted nothing 0 0
+                    seq nothing 0 0
+                      name arg nothing 0 0
+typecheck tree: 
+fn(){} fn(): Shellbuiltin 0 0
+  name getself fn(): Shellbuiltin 0 0
+  seq nothing 0 0
+    return nothing 0 0
+      name myselfbuiltin nothing 0 0
+typecheck tree: 
+fn(){} fn(ctxt: ref Context, s: string) 0 0
+  name builtinusage fn(ctxt: ref Context, s: string) 0 0
+  seq nothing 0 0
+    call nothing 0 0
+      . nothing 0 0
+        name ctxt nothing 0 0
+        name fail nothing 0 0
+      seq nothing 0 0
+        const usage string 0 0
+        seq nothing 0 0
+          + nothing 0 0
+            const sh: usage:  string 0 0
+            name s nothing 0 0
+typecheck tree: 
+fn(){} fn(nil: ref Context, nil: list of ref Listnode, nil: int): string 0 0
+  name builtin_exit fn(nil: ref Context, nil: list of ref Listnode, nil: int): string 0 0
+  seq nothing 0 0
+    exit nothing 0 0
+typecheck tree: 
+fn(){} fn(ctxt: ref Context, args: list of ref Listnode, nil: int): string 0 0
+  name builtin_subsh fn(ctxt: ref Context, args: list of ref Listnode, nil: int): string 0 0
+  seq nothing 0 0
+    if nothing 0 0
+      == nothing 0 0
+        tl nothing 0 0
+          name args nothing 0 0
+        name nil polymorphic type 0 0
+      seq nothing 0 0
+        return nothing 0 0
+          name nil polymorphic type 0 0
+    seq nothing 0 0
+      := nothing 0 0
+        name startchan nothing 0 0
+        chan chan of (int, ref Expropagate) 0 0
+      seq nothing 0 0
+        spawn nothing 0 0
+          call nothing 0 0
+            name runasync nothing 0 0
+            seq nothing 0 0
+              name ctxt nothing 0 0
+              seq nothing 0 0
+                const (0) int 0 0
+                seq nothing 0 0
+                  tl nothing 0 0
+                    name args nothing 0 0
+                  seq nothing 0 0
+                    ref nothing 0 0
+                      name Redirlist nothing 0 0
+                    seq nothing 0 0
+                      name startchan nothing 0 0
+        seq nothing 0 0
+          := nothing 0 0
+            tuple nothing 0 0
+              seq nothing 0 0
+                name exepid nothing 0 0
+                seq nothing 0 0
+                  name exprop nothing 0 0
+            <- nothing 0 0
+              name startchan nothing 0 0
+          seq nothing 0 0
+            := nothing 0 0
+              name status nothing 0 0
+              call nothing 0 0
+                name waitfor nothing 0 0
+                seq nothing 0 0
+                  name ctxt nothing 0 0
+                  seq nothing 0 0
+                    :: nothing 0 0
+                      name exepid nothing 0 0
+                      name nil polymorphic type 0 0
+            seq nothing 0 0
+              if nothing 0 0
+                != nothing 0 0
+                  . nothing 0 0
+                    name exprop nothing 0 0
+                    name name nothing 0 0
+                  name nil polymorphic type 0 0
+                seq nothing 0 0
+                  raise nothing 0 0
+                    . nothing 0 0
+                      name exprop nothing 0 0
+                      name name nothing 0 0
+              seq nothing 0 0
+                return nothing 0 0
+                  name status nothing 0 0
+typecheck tree: 
+fn(){} fn(ctxt: ref Context, nil: list of ref Listnode, nil: int): string 0 0
+  name builtin_loaded fn(ctxt: ref Context, nil: list of ref Listnode, nil: int): string 0 0
+  seq nothing 0 0
+    := nothing 0 0
+      name b nothing 0 0
+      . nothing 0 0
+        . nothing 0 0
+          name ctxt nothing 0 0
+          name env nothing 0 0
+        name builtins nothing 0 0
+    seq nothing 0 0
+      seq nothing 0 0
+        := nothing 0 0
+          name i nothing 0 0
+          const (0) int 0 0
+        for nothing 0 0
+          < nothing 0 0
+            name i nothing 0 0
+            . nothing 0 0
+              name b nothing 0 0
+              name n nothing 0 0
+          seq nothing 0 0
+            scope nothing 0 0
+              seq nothing 0 0
+                := nothing 0 0
+                  tuple nothing 0 0
+                    seq nothing 0 0
+                      name name nothing 0 0
+                      seq nothing 0 0
+                        name bmods nothing 0 0
+                  index nothing 0 0
+                    . nothing 0 0
+                      name b nothing 0 0
+                      name ba nothing 0 0
+                    name i nothing 0 0
+                seq nothing 0 0
+                  call nothing 0 0
+                    -> nothing 0 0
+                      name sys nothing 0 0
+                      name print nothing 0 0
+                    seq nothing 0 0
+                      const %s	%s
+ string 0 0
+                      seq nothing 0 0
+                        name name nothing 0 0
+                        seq nothing 0 0
+                          call nothing 0 0
+                            name modname nothing 0 0
+                            seq nothing 0 0
+                              name ctxt nothing 0 0
+                              seq nothing 0 0
+                                hd nothing 0 0
+                                  name bmods nothing 0 0
+            ++ nothing 0 0
+              name i nothing 0 0
+      seq nothing 0 0
+        = nothing 0 0
+          name b nothing 0 0
+          . nothing 0 0
+            . nothing 0 0
+              name ctxt nothing 0 0
+              name env nothing 0 0
+            name sbuiltins nothing 0 0
+        seq nothing 0 0
+          seq nothing 0 0
+            = nothing 0 0
+              name i nothing 0 0
+              const (0) int 0 0
+            for nothing 0 0
+              < nothing 0 0
+                name i nothing 0 0
+                . nothing 0 0
+                  name b nothing 0 0
+                  name n nothing 0 0
+              seq nothing 0 0
+                scope nothing 0 0
+                  seq nothing 0 0
+                    := nothing 0 0
+                      tuple nothing 0 0
+                        seq nothing 0 0
+                          name name nothing 0 0
+                          seq nothing 0 0
+                            name bmods nothing 0 0
+                      index nothing 0 0
+                        . nothing 0 0
+                          name b nothing 0 0
+                          name ba nothing 0 0
+                        name i nothing 0 0
+                    seq nothing 0 0
+                      call nothing 0 0
+                        -> nothing 0 0
+                          name sys nothing 0 0
+                          name print nothing 0 0
+                        seq nothing 0 0
+                          const ${%s}	%s
+ string 0 0
+                          seq nothing 0 0
+                            name name nothing 0 0
+                            seq nothing 0 0
+                              call nothing 0 0
+                                name modname nothing 0 0
+                                seq nothing 0 0
+                                  name ctxt nothing 0 0
+                                  seq nothing 0 0
+                                    hd nothing 0 0
+                                      name bmods nothing 0 0
+                ++ nothing 0 0
+                  name i nothing 0 0
+          seq nothing 0 0
+            return nothing 0 0
+              name nil polymorphic type 0 0
+typecheck tree: 
+fn(){} fn(ctxt: ref Context, args: list of ref Listnode, nil: int): string 0 0
+  name builtin_load fn(ctxt: ref Context, args: list of ref Listnode, nil: int): string 0 0
+  seq nothing 0 0
+    if nothing 0 0
+      || nothing 0 0
+        == nothing 0 0
+          tl nothing 0 0
+            name args nothing 0 0
+          name nil polymorphic type 0 0
+        == nothing 0 0
+          . nothing 0 0
+            hd nothing 0 0
+              tl nothing 0 0
+                name args nothing 0 0
+            name word nothing 0 0
+          name nil polymorphic type 0 0
+      seq nothing 0 0
+        call nothing 0 0
+          name builtinusage nothing 0 0
+          seq nothing 0 0
+            name ctxt nothing 0 0
+            seq nothing 0 0
+              const load path... string 0 0
+    seq nothing 0 0
+      = nothing 0 0
+        name args nothing 0 0
+        tl nothing 0 0
+          name args nothing 0 0
+      seq nothing 0 0
+        if nothing 0 0
+          == nothing 0 0
+            name args nothing 0 0
+            name nil polymorphic type 0 0
+          seq nothing 0 0
+            call nothing 0 0
+              name builtinusage nothing 0 0
+              seq nothing 0 0
+                name ctxt nothing 0 0
+                seq nothing 0 0
+                  const load path... string 0 0
+        seq nothing 0 0
+          for nothing 0 0
+            != nothing 0 0
+              name args nothing 0 0
+              name nil polymorphic type 0 0
+            seq nothing 0 0
+              scope nothing 0 0
+                seq nothing 0 0
+                  := nothing 0 0
+                    name s nothing 0 0
+                    call nothing 0 0
+                      name loadmodule nothing 0 0
+                      seq nothing 0 0
+                        name ctxt nothing 0 0
+                        seq nothing 0 0
+                          . nothing 0 0
+                            hd nothing 0 0
+                              name args nothing 0 0
+                            name word nothing 0 0
+                  seq nothing 0 0
+                    if nothing 0 0
+                      != nothing 0 0
+                        name s nothing 0 0
+                        name nil polymorphic type 0 0
+                      seq nothing 0 0
+                        raise nothing 0 0
+                          + nothing 0 0
+                            const fail: string 0 0
+                            name s nothing 0 0
+              = nothing 0 0
+                name args nothing 0 0
+                tl nothing 0 0
+                  name args nothing 0 0
+          seq nothing 0 0
+            return nothing 0 0
+              name nil polymorphic type 0 0
+typecheck tree: 
+fn(){} fn(ctxt: ref Context, args: list of ref Listnode, nil: int): string 0 0
+  name builtin_unload fn(ctxt: ref Context, args: list of ref Listnode, nil: int): string 0 0
+  seq nothing 0 0
+    if nothing 0 0
+      == nothing 0 0
+        tl nothing 0 0
+          name args nothing 0 0
+        name nil polymorphic type 0 0
+      seq nothing 0 0
+        call nothing 0 0
+          name builtinusage nothing 0 0
+          seq nothing 0 0
+            name ctxt nothing 0 0
+            seq nothing 0 0
+              const unload path... string 0 0
+    seq nothing 0 0
+      := nothing 0 0
+        name status nothing 0 0
+        const  string 0 0
+      seq nothing 0 0
+        seq nothing 0 0
+          = nothing 0 0
+            name args nothing 0 0
+            tl nothing 0 0
+              name args nothing 0 0
+          for nothing 0 0
+            != nothing 0 0
+              name args nothing 0 0
+              name nil polymorphic type 0 0
+            seq nothing 0 0
+              if nothing 0 0
+                != nothing 0 0
+                  := nothing 0 0
+                    name s nothing 0 0
+                    call nothing 0 0
+                      name unloadmodule nothing 0 0
+                      seq nothing 0 0
+                        name ctxt nothing 0 0
+                        seq nothing 0 0
+                          . nothing 0 0
+                            hd nothing 0 0
+                              name args nothing 0 0
+                            name word nothing 0 0
+                  name nil polymorphic type 0 0
+                seq nothing 0 0
+                  = nothing 0 0
+                    name status nothing 0 0
+                    name s nothing 0 0
+              = nothing 0 0
+                name args nothing 0 0
+                tl nothing 0 0
+                  name args nothing 0 0
+        seq nothing 0 0
+          return nothing 0 0
+            name status nothing 0 0
+typecheck tree: 
+fn(){} fn(ctxt: ref Context, args: list of ref Listnode, nil: int): string 0 0
+  name builtin_run fn(ctxt: ref Context, args: list of ref Listnode, nil: int): string 0 0
+  seq nothing 0 0
+    if nothing 0 0
+      || nothing 0 0
+        == nothing 0 0
+          tl nothing 0 0
+            name args nothing 0 0
+          name nil polymorphic type 0 0
+        == nothing 0 0
+          . nothing 0 0
+            hd nothing 0 0
+              tl nothing 0 0
+                name args nothing 0 0
+            name word nothing 0 0
+          name nil polymorphic type 0 0
+      seq nothing 0 0
+        call nothing 0 0
+          name builtinusage nothing 0 0
+          seq nothing 0 0
+            name ctxt nothing 0 0
+            seq nothing 0 0
+              const run path string 0 0
+    seq nothing 0 0
+      call nothing 0 0
+        . nothing 0 0
+          name ctxt nothing 0 0
+          name push nothing 0 0
+      seq nothing 0 0
+        exstat nothing 0 0
+          scope nothing 0 0
+            seq nothing 0 0
+              call nothing 0 0
+                . nothing 0 0
+                  name ctxt nothing 0 0
+                  name setoptions nothing 0 0
+                seq nothing 0 0
+                  . nothing 0 0
+                    name ctxt nothing 0 0
+                    name INTERACTIVE nothing 0 0
+                  seq nothing 0 0
+                    const (0) int 0 0
+              seq nothing 0 0
+                call nothing 0 0
+                  name runscript nothing 0 0
+                  seq nothing 0 0
+                    name ctxt nothing 0 0
+                    seq nothing 0 0
+                      . nothing 0 0
+                        hd nothing 0 0
+                          tl nothing 0 0
+                            name args nothing 0 0
+                        name word nothing 0 0
+                      seq nothing 0 0
+                        tl nothing 0 0
+                          tl nothing 0 0
+                            name args nothing 0 0
+                        seq nothing 0 0
+                          const (1) int 0 0
+                seq nothing 0 0
+                  call nothing 0 0
+                    . nothing 0 0
+                      name ctxt nothing 0 0
+                      name pop nothing 0 0
+                  seq nothing 0 0
+                    return nothing 0 0
+                      name nil polymorphic type 0 0
+          except nothing 0 0
+            name e nothing 0 0
+            seq nothing 0 0
+              label nothing 0 0
+                seq nothing 0 0
+                  const fail:* string 0 0
+                scope nothing 0 0
+                  seq nothing 0 0
+                    call nothing 0 0
+                      . nothing 0 0
+                        name ctxt nothing 0 0
+                        name pop nothing 0 0
+                    return nothing 0 0
+                      call nothing 0 0
+                        name failurestatus nothing 0 0
+                        seq nothing 0 0
+                          name e nothing 0 0
+typecheck tree: 
+fn(){} fn(ctxt: ref Context, args: list of ref Listnode, nil: int): string 0 0
+  name builtin_whatis fn(ctxt: ref Context, args: list of ref Listnode, nil: int): string 0 0
+  seq nothing 0 0
+    if nothing 0 0
+      < nothing 0 0
+        len nothing 0 0
+          name args nothing 0 0
+        const (2) int 0 0
+      seq nothing 0 0
+        call nothing 0 0
+          name builtinusage nothing 0 0
+          seq nothing 0 0
+            name ctxt nothing 0 0
+            seq nothing 0 0
+              const whatis name ... string 0 0
+    seq nothing 0 0
+      := nothing 0 0
+        name err nothing 0 0
+        const  string 0 0
+      seq nothing 0 0
+        seq nothing 0 0
+          = nothing 0 0
+            name args nothing 0 0
+            tl nothing 0 0
+              name args nothing 0 0
+          for nothing 0 0
+            != nothing 0 0
+              name args nothing 0 0
+              name nil polymorphic type 0 0
+            seq nothing 0 0
+              if nothing 0 0
+                != nothing 0 0
+                  := nothing 0 0
+                    name e nothing 0 0
+                    call nothing 0 0
+                      name whatisit nothing 0 0
+                      seq nothing 0 0
+                        name ctxt nothing 0 0
+                        seq nothing 0 0
+                          hd nothing 0 0
+                            name args nothing 0 0
+                  name nil polymorphic type 0 0
+                seq nothing 0 0
+                  = nothing 0 0
+                    name err nothing 0 0
+                    name e nothing 0 0
+              = nothing 0 0
+                name args nothing 0 0
+                tl nothing 0 0
+                  name args nothing 0 0
+        seq nothing 0 0
+          return nothing 0 0
+            name err nothing 0 0
+typecheck tree: 
+fn(){} fn(ctxt: ref Context, el: ref Listnode): string 0 0
+  name whatisit fn(ctxt: ref Context, el: ref Listnode): string 0 0
+  seq nothing 0 0
+    if nothing 0 0
+      != nothing 0 0
+        . nothing 0 0
+          name el nothing 0 0
+          name cmd nothing 0 0
+        name nil polymorphic type 0 0
+      seq nothing 0 0
+        scope nothing 0 0
+          seq nothing 0 0
+            call nothing 0 0
+              -> nothing 0 0
+                name sys nothing 0 0
+                name print nothing 0 0
+              seq nothing 0 0
+                const %s
+ string 0 0
+                seq nothing 0 0
+                  call nothing 0 0
+                    name cmd2string nothing 0 0
+                    seq nothing 0 0
+                      . nothing 0 0
+                        name el nothing 0 0
+                        name cmd nothing 0 0
+            seq nothing 0 0
+              return nothing 0 0
+                name nil polymorphic type 0 0
+    seq nothing 0 0
+      := nothing 0 0
+        name found nothing 0 0
+        const (0) int 0 0
+      seq nothing 0 0
+        := nothing 0 0
+          name name nothing 0 0
+          . nothing 0 0
+            name el nothing 0 0
+            name word nothing 0 0
+        seq nothing 0 0
+          if nothing 0 0
+            && nothing 0 0
+              != nothing 0 0
+                name name nothing 0 0
+                name nil polymorphic type 0 0
+              == nothing 0 0
+                index nothing 0 0
+                  name name nothing 0 0
+                  const (0) int 0 0
+                const (123) int 0 0
+            seq nothing 0 0
+              scope nothing 0 0
+                seq nothing 0 0
+                  call nothing 0 0
+                    -> nothing 0 0
+                      name sys nothing 0 0
+                      name print nothing 0 0
+                    seq nothing 0 0
+                      const %s
+ string 0 0
+                      seq nothing 0 0
+                        name name nothing 0 0
+                  seq nothing 0 0
+                    return nothing 0 0
+                      name nil polymorphic type 0 0
+                    seq nothing 0 0
+                      nothing nothing 0 0
+          seq nothing 0 0
+            if nothing 0 0
+              == nothing 0 0
+                name name nothing 0 0
+                name nil polymorphic type 0 0
+              seq nothing 0 0
+                return nothing 0 0
+                  name nil polymorphic type 0 0
+            seq nothing 0 0
+              vardecl string 0 0
+                seq nothing 0 0
+              seq nothing 0 0
+                := nothing 0 0
+                  name val nothing 0 0
+                  call nothing 0 0
+                    . nothing 0 0
+                      name ctxt nothing 0 0
+                      name get nothing 0 0
+                    seq nothing 0 0
+                      name name nothing 0 0
+                seq nothing 0 0
+                  if nothing 0 0
+                    != nothing 0 0
+                      name val nothing 0 0
+                      name nil polymorphic type 0 0
+                    seq nothing 0 0
+                      scope nothing 0 0
+                        seq nothing 0 0
+                          ++ nothing 0 0
+                            name found nothing 0 0
+                          seq nothing 0 0
+                            += nothing 0 0
+                              name w nothing 0 0
+                              call nothing 0 0
+                                -> nothing 0 0
+                                  name sys nothing 0 0
+                                  name sprint nothing 0 0
+                                seq nothing 0 0
+                                  const %s=%s
+ string 0 0
+                                  seq nothing 0 0
+                                    call nothing 0 0
+                                      name quote nothing 0 0
+                                      seq nothing 0 0
+                                        name name nothing 0 0
+                                        seq not
+typecheck tree: 
+fn(){} fn(ctxt: ref Context, args: list of ref Listnode, last: int): string 0 0
+  name builtin_builtin fn(ctxt: ref Context, args: list of ref Listnode, last: int): string 0 0
+  seq nothing 0 0
+    if nothing 0 0
+      < nothing 0 0
+        len nothing 0 0
+          name args nothing 0 0
+        const (2) int 0 0
+      seq nothing 0 0
+        call nothing 0 0
+          name builtinusage nothing 0 0
+          seq nothing 0 0
+            name ctxt nothing 0 0
+            seq nothing 0 0
+              const builtin command [args ...] string 0 0
+    seq nothing 0 0
+      := nothing 0 0
+        name name nothing 0 0
+        . nothing 0 0
+          hd nothing 0 0
+            tl nothing 0 0
+              name args nothing 0 0
+          name word nothing 0 0
+      seq nothing 0 0
+        if nothing 0 0
+          || nothing 0 0
+            == nothing 0 0
+              name name nothing 0 0
+              name nil polymorphic type 0 0
+            == nothing 0 0
+              index nothing 0 0
+                name name nothing 0 0
+                const (0) int 0 0
+              const (123) int 0 0
+          seq nothing 0 0
+            scope nothing 0 0
+              seq nothing 0 0
+                call nothing 0 0
+                  name diagnostic nothing 0 0
+                  seq nothing 0 0
+                    name ctxt nothing 0 0
+                    seq nothing 0 0
+                      + nothing 0 0
+                        name name nothing 0 0
+                        const  not found string 0 0
+                seq nothing 0 0
+                  return nothing 0 0
+                    const not found string 0 0
+        seq nothing 0 0
+          := nothing 0 0
+            tuple nothing 0 0
+              seq nothing 0 0
+                name nil polymorphic type 0 0
+                seq nothing 0 0
+                  name mods nothing 0 0
+            call nothing 0 0
+              name findbuiltin nothing 0 0
+              seq nothing 0 0
+                . nothing 0 0
+                  . nothing 0 0
+                    name ctxt nothing 0 0
+                    name env nothing 0 0
+                  name builtins nothing 0 0
+                seq nothing 0 0
+                  name name nothing 0 0
+          seq nothing 0 0
+            for nothing 0 0
+              != nothing 0 0
+                name mods nothing 0 0
+                name nil polymorphic type 0 0
+              seq nothing 0 0
+                if nothing 0 0
+                  == nothing 0 0
+                    hd nothing 0 0
+                      name mods nothing 0 0
+                    name myselfbuiltin nothing 0 0
+                  seq nothing 0 0
+                    return nothing 0 0
+                      call nothing 0 0
+                        -> nothing 0 0
+                          hd nothing 0 0
+                            name mods nothing 0 0
+                          name runbuiltin nothing 0 0
+                        seq nothing 0 0
+                          name ctxt nothing 0 0
+                          seq nothing 0 0
+                            name myself nothing 0 0
+                            seq nothing 0 0
+                              tl nothing 0 0
+                                name args nothing 0 0
+                              seq nothing 0 0
+                                name last nothing 0 0
+                = nothing 0 0
+                  name mods nothing 0 0
+                  tl nothing 0 0
+                    name mods nothing 0 0
+            seq nothing 0 0
+              if nothing 0 0
+                & nothing 0 0
+                  call nothing 0 0
+                    . nothing 0 0
+                      name ctxt nothing 0 0
+                      name options nothing 0 0
+                  . nothing 0 0
+                    name ctxt nothing 0 0
+                    name EXECPRINT nothing 0 0
+                seq nothing 0 0
+                  call nothing 0 0
+                    -> nothing 0 0
+                      name sys nothing 0 0
+                      name fprint nothing 0 0
+                    seq nothing 0 0
+                      
+typecheck tree: 
+fn(){} fn(ctxt: ref Context, mod: Shellbuiltin): string 0 0
+  name modname fn(ctxt: ref Context, mod: Shellbuiltin): string 0 0
+  seq nothing 0 0
+    := nothing 0 0
+      name ml nothing 0 0
+      . nothing 0 0
+        . nothing 0 0
+          name ctxt nothing 0 0
+          name env nothing 0 0
+        name bmods nothing 0 0
+    seq nothing 0 0
+      for nothing 0 0
+        != nothing 0 0
+          name ml nothing 0 0
+          name nil polymorphic type 0 0
+        seq nothing 0 0
+          scope nothing 0 0
+            seq nothing 0 0
+              := nothing 0 0
+                tuple nothing 0 0
+                  seq nothing 0 0
+                    name bname nothing 0 0
+                    seq nothing 0 0
+                      name bmod nothing 0 0
+                hd nothing 0 0
+                  name ml nothing 0 0
+              seq nothing 0 0
+                if nothing 0 0
+                  == nothing 0 0
+                    name bmod nothing 0 0
+                    name mod nothing 0 0
+                  seq nothing 0 0
+                    return nothing 0 0
+                      name bname nothing 0 0
+          = nothing 0 0
+            name ml nothing 0 0
+            tl nothing 0 0
+              name ml nothing 0 0
+      seq nothing 0 0
+        return nothing 0 0
+          const builtin string 0 0
+typecheck tree: 
+fn(){} fn(ctxt: ref Context, name: string): string 0 0
+  name loadmodule fn(ctxt: ref Context, name: string): string 0 0
+  seq nothing 0 0
+    := nothing 0 0
+      name bl nothing 0 0
+      . nothing 0 0
+        . nothing 0 0
+          name ctxt nothing 0 0
+          name env nothing 0 0
+        name bmods nothing 0 0
+    seq nothing 0 0
+      for nothing 0 0
+        != nothing 0 0
+          name bl nothing 0 0
+          name nil polymorphic type 0 0
+        seq nothing 0 0
+          scope nothing 0 0
+            seq nothing 0 0
+              := nothing 0 0
+                tuple nothing 0 0
+                  seq nothing 0 0
+                    name bname nothing 0 0
+                    seq nothing 0 0
+                      name nil polymorphic type 0 0
+                hd nothing 0 0
+                  name bl nothing 0 0
+              seq nothing 0 0
+                if nothing 0 0
+                  == nothing 0 0
+                    name bname nothing 0 0
+                    name name nothing 0 0
+                  seq nothing 0 0
+                    return nothing 0 0
+                      name nil polymorphic type 0 0
+          = nothing 0 0
+            name bl nothing 0 0
+            tl nothing 0 0
+              name bl nothing 0 0
+      seq nothing 0 0
+        := nothing 0 0
+          name path nothing 0 0
+          name name nothing 0 0
+        seq nothing 0 0
+          if nothing 0 0
+            || nothing 0 0
+              < nothing 0 0
+                len nothing 0 0
+                  name path nothing 0 0
+                const (4) int 0 0
+              != nothing 0 0
+                slice nothing 0 0
+                  name path nothing 0 0
+                  seq nothing 0 0
+                    - nothing 0 0
+                      len nothing 0 0
+                        name path nothing 0 0
+                      const (4) int 0 0
+                    nothing nothing 0 0
+                const .dis string 0 0
+            seq nothing 0 0
+              += nothing 0 0
+                name path nothing 0 0
+                const .dis string 0 0
+          seq nothing 0 0
+            if nothing 0 0
+              && nothing 0 0
+                != nothing 0 0
+                  index nothing 0 0
+                    name path nothing 0 0
+                    const (0) int 0 0
+                  const (47) int 0 0
+                != nothing 0 0
+                  slice nothing 0 0
+                    name path nothing 0 0
+                    seq nothing 0 0
+                      const (0) int 0 0
+                      const (2) int 0 0
+                  const ./ string 0 0
+              seq nothing 0 0
+                = nothing 0 0
+                  name path nothing 0 0
+                  + nothing 0 0
+                    + nothing 0 0
+                      name BUILTINPATH nothing 0 0
+                      const / string 0 0
+                    name path nothing 0 0
+            seq nothing 0 0
+              := nothing 0 0
+                name mod nothing 0 0
+                load Shellbuiltin 0 0
+                  name path nothing 0 0
+              seq nothing 0 0
+                if nothing 0 0
+                  == nothing 0 0
+                    name mod nothing 0 0
+                    name nil polymorphic type 0 0
+                  seq nothing 0 0
+                    scope nothing 0 0
+                      seq nothing 0 0
+                        call nothing 0 0
+                          name diagnostic nothing 0 0
+                          seq nothing 0 0
+                            name ctxt nothing 0 0
+                            seq nothing 0 0
+                              call nothing 0 0
+                                -> nothing 0 0
+                                  name sys nothing 0 0
+                                  name sprint nothing 0 0
+                                seq nothing 0 0
+                                  const load: cannot load %s: %r string 0 0
+                                  seq nothing 0 0
+                                    name path nothing 0 0
+                        seq nothing 0 0
+          
+typecheck tree: 
+fn(){} fn(ctxt: ref Context, name: string): string 0 0
+  name unloadmodule fn(ctxt: ref Context, name: string): string 0 0
+  seq nothing 0 0
+    vardecl list of (string, Shellbuiltin) 0 0
+      seq nothing 0 0
+    seq nothing 0 0
+      vardecl Shellbuiltin 0 0
+        seq nothing 0 0
+      seq nothing 0 0
+        seq nothing 0 0
+          := nothing 0 0
+            name cl nothing 0 0
+            . nothing 0 0
+              . nothing 0 0
+                name ctxt nothing 0 0
+                name env nothing 0 0
+              name bmods nothing 0 0
+          for nothing 0 0
+            != nothing 0 0
+              name cl nothing 0 0
+              name nil polymorphic type 0 0
+            seq nothing 0 0
+              scope nothing 0 0
+                seq nothing 0 0
+                  := nothing 0 0
+                    tuple nothing 0 0
+                      seq nothing 0 0
+                        name bname nothing 0 0
+                        seq nothing 0 0
+                          name bmod nothing 0 0
+                    hd nothing 0 0
+                      name cl nothing 0 0
+                  seq nothing 0 0
+                    if nothing 0 0
+                      == nothing 0 0
+                        name bname nothing 0 0
+                        name name nothing 0 0
+                      seq nothing 0 0
+                        = nothing 0 0
+                          name mod nothing 0 0
+                          name bmod nothing 0 0
+                        = nothing 0 0
+                          name bl nothing 0 0
+                          :: nothing 0 0
+                            hd nothing 0 0
+                              name cl nothing 0 0
+                            name bl nothing 0 0
+              = nothing 0 0
+                name cl nothing 0 0
+                tl nothing 0 0
+                  name cl nothing 0 0
+        seq nothing 0 0
+          if nothing 0 0
+            == nothing 0 0
+              name mod nothing 0 0
+              name nil polymorphic type 0 0
+            seq nothing 0 0
+              scope nothing 0 0
+                seq nothing 0 0
+                  call nothing 0 0
+                    name diagnostic nothing 0 0
+                    seq nothing 0 0
+                      name ctxt nothing 0 0
+                      seq nothing 0 0
+                        call nothing 0 0
+                          -> nothing 0 0
+                            name sys nothing 0 0
+                            name sprint nothing 0 0
+                          seq nothing 0 0
+                            const module %s not found string 0 0
+                            seq nothing 0 0
+                              name name nothing 0 0
+                  seq nothing 0 0
+                    return nothing 0 0
+                      const not found string 0 0
+          seq nothing 0 0
+            seq nothing 0 0
+              = nothing 0 0
+                . nothing 0 0
+                  . nothing 0 0
+                    name ctxt nothing 0 0
+                    name env nothing 0 0
+                  name bmods nothing 0 0
+                name nil polymorphic type 0 0
+              for nothing 0 0
+                != nothing 0 0
+                  name bl nothing 0 0
+                  name nil polymorphic type 0 0
+                seq nothing 0 0
+                  = nothing 0 0
+                    . nothing 0 0
+                      . nothing 0 0
+                        name ctxt nothing 0 0
+                        name env nothing 0 0
+                      name bmods nothing 0 0
+                    :: nothing 0 0
+                      hd nothing 0 0
+                        name bl nothing 0 0
+                      . nothing 0 0
+                        . nothing 0 0
+                          name ctxt nothing 0 0
+                          name env nothing 0 0
+                        name bmods nothing 0 0
+                  = nothing 0 0
+                    name bl nothing 0 0
+                    tl nothing 0 0
+                      name bl nothing 0 0
+            seq nothing 0 0
+              call nothing 0 0
+
+typecheck tree: 
+fn(){} fn(s: (int, Sys->Dir), mode: int): int 0 0
+  name executable fn(s: (int, Sys->Dir), mode: int): int 0 0
+  seq nothing 0 0
+    := nothing 0 0
+      tuple nothing 0 0
+        seq nothing 0 0
+          name ok nothing 0 0
+          seq nothing 0 0
+            name info nothing 0 0
+      name s nothing 0 0
+    seq nothing 0 0
+      return nothing 0 0
+        && nothing 0 0
+          && nothing 0 0
+            != nothing 0 0
+              name ok nothing 0 0
+              - nothing 0 0
+                const (1) int 0 0
+            == nothing 0 0
+              & nothing 0 0
+                . nothing 0 0
+                  name info nothing 0 0
+                  name mode nothing 0 0
+                -> nothing 0 0
+                  name Sys nothing 0 0
+                  name DMDIR nothing 0 0
+              const (0) int 0 0
+          != nothing 0 0
+            & nothing 0 0
+              . nothing 0 0
+                name info nothing 0 0
+                name mode nothing 0 0
+              name mode nothing 0 0
+            const (0) int 0 0
+typecheck tree: 
+fn(){} fn(val: list of ref Listnode, quoteblocks: int): string 0 0
+  name quoted fn(val: list of ref Listnode, quoteblocks: int): string 0 0
+  seq nothing 0 0
+    := nothing 0 0
+      name s nothing 0 0
+      const  string 0 0
+    seq nothing 0 0
+      for nothing 0 0
+        != nothing 0 0
+          name val nothing 0 0
+          name nil polymorphic type 0 0
+        seq nothing 0 0
+          scope nothing 0 0
+            seq nothing 0 0
+              := nothing 0 0
+                name el nothing 0 0
+                hd nothing 0 0
+                  name val nothing 0 0
+              seq nothing 0 0
+                if nothing 0 0
+                  || nothing 0 0
+                    == nothing 0 0
+                      . nothing 0 0
+                        name el nothing 0 0
+                        name cmd nothing 0 0
+                      name nil polymorphic type 0 0
+                    && nothing 0 0
+                      name quoteblocks nothing 0 0
+                      != nothing 0 0
+                        . nothing 0 0
+                          name el nothing 0 0
+                          name word nothing 0 0
+                        name nil polymorphic type 0 0
+                  seq nothing 0 0
+                    += nothing 0 0
+                      name s nothing 0 0
+                      call nothing 0 0
+                        name quote nothing 0 0
+                        seq nothing 0 0
+                          . nothing 0 0
+                            name el nothing 0 0
+                            name word nothing 0 0
+                          seq nothing 0 0
+                            const (0) int 0 0
+                    scope nothing 0 0
+                      seq nothing 0 0
+                        := nothing 0 0
+                          name cmd nothing 0 0
+                          call nothing 0 0
+                            name cmd2string nothing 0 0
+                            seq nothing 0 0
+                              . nothing 0 0
+                                name el nothing 0 0
+                                name cmd nothing 0 0
+                        seq nothing 0 0
+                          if nothing 0 0
+                            name quoteblocks nothing 0 0
+                            seq nothing 0 0
+                              = nothing 0 0
+                                name cmd nothing 0 0
+                                call nothing 0 0
+                                  name quote nothing 0 0
+                                  seq nothing 0 0
+                                    name cmd nothing 0 0
+                                    seq nothing 0 0
+                                      const (0) int 0 0
+                          seq nothing 0 0
+                            += nothing 0 0
+                              name s nothing 0 0
+                              name cmd nothing 0 0
+                seq nothing 0 0
+                  if nothing 0 0
+                    != nothing 0 0
+                      tl nothing 0 0
+                        name val nothing 0 0
+                      name nil polymorphic type 0 0
+                    seq nothing 0 0
+                      = nothing 0 0
+                        index nothing 0 0
+                          name s nothing 0 0
+                          len nothing 0 0
+                            name s nothing 0 0
+                        const (32) int 0 0
+          = nothing 0 0
+            name val nothing 0 0
+            tl nothing 0 0
+              name val nothing 0 0
+      seq nothing 0 0
+        return nothing 0 0
+          name s nothing 0 0
+typecheck tree: 
+fn(){} fn(ctxt: ref Context, val: string): string 0 0
+  name setstatus fn(ctxt: ref Context, val: string): string 0 0
+  seq nothing 0 0
+    call nothing 0 0
+      . nothing 0 0
+        name ctxt nothing 0 0
+        name setlocal nothing 0 0
+      seq nothing 0 0
+        const status string 0 0
+        seq nothing 0 0
+          :: nothing 0 0
+            ref nothing 0 0
+              call nothing 0 0
+                name Listnode nothing 0 0
+                seq nothing 0 0
+                  name nil polymorphic type 0 0
+                  seq nothing 0 0
+                    name val nothing 0 0
+            name nil polymorphic type 0 0
+    seq nothing 0 0
+      return nothing 0 0
+        name val nothing 0 0
+typecheck tree: 
+fn(){} fn(l: ref YYLEX, prompt: string, showline: int): (ref Node, string) 0 0
+  name doparse fn(l: ref YYLEX, prompt: string, showline: int): (ref Node, string) 0 0
+  seq nothing 0 0
+    = nothing 0 0
+      . nothing 0 0
+        name l nothing 0 0
+        name prompt nothing 0 0
+      name prompt nothing 0 0
+    seq nothing 0 0
+      = nothing 0 0
+        . nothing 0 0
+          name l nothing 0 0
+          name err nothing 0 0
+        name nil polymorphic type 0 0
+      seq nothing 0 0
+        = nothing 0 0
+          . nothing 0 0
+            . nothing 0 0
+              name l nothing 0 0
+              name lval nothing 0 0
+            name node nothing 0 0
+          name nil polymorphic type 0 0
+        seq nothing 0 0
+          call nothing 0 0
+            name yyparse nothing 0 0
+            seq nothing 0 0
+              name l nothing 0 0
+          seq nothing 0 0
+            = nothing 0 0
+              . nothing 0 0
+                name l nothing 0 0
+                name lastnl nothing 0 0
+              const (0) int 0 0
+            seq nothing 0 0
+              if nothing 0 0
+                != nothing 0 0
+                  . nothing 0 0
+                    name l nothing 0 0
+                    name err nothing 0 0
+                  name nil polymorphic type 0 0
+                seq nothing 0 0
+                  scope nothing 0 0
+                    seq nothing 0 0
+                      vardecl string 0 0
+                        seq nothing 0 0
+                      seq nothing 0 0
+                        if nothing 0 0
+                          == nothing 0 0
+                            . nothing 0 0
+                              name l nothing 0 0
+                              name err nothing 0 0
+                            name nil polymorphic type 0 0
+                          seq nothing 0 0
+                            = nothing 0 0
+                              . nothing 0 0
+                                name l nothing 0 0
+                                name err nothing 0 0
+                              const unknown error string 0 0
+                        seq nothing 0 0
+                          if nothing 0 0
+                            && nothing 0 0
+                              > nothing 0 0
+                                . nothing 0 0
+                                  name l nothing 0 0
+                                  name errline nothing 0 0
+                                const (0) int 0 0
+                              name showline nothing 0 0
+                            seq nothing 0 0
+                              = nothing 0 0
+                                name s nothing 0 0
+                                call nothing 0 0
+                                  -> nothing 0 0
+                                    name sys nothing 0 0
+                                    name sprint nothing 0 0
+                                  seq nothing 0 0
+                                    const %s:%d: %s string 0 0
+                                    seq nothing 0 0
+                                      . nothing 0 0
+                                        name l nothing 0 0
+                                        name path nothing 0 0
+                                      seq nothing 0 0
+                                        . nothing 0 0
+                                          name l nothing 0 0
+                                          name errline nothing 0 0
+                                        seq nothing 0 0
+                                          . nothing 0 0
+                                            name l nothing 0 0
+                                            name err nothing 0 0
+                              = nothing 0 0
+                                name s nothing 0 0
+                                + nothing 0 0
+                                  + nothing 0 0
+                                    . nothing 0 0
+                                      name l nothing 0 0
+                                      name path nothing 0 0
+                                    const : parse 
+typecheck tree: 
+fn(){} fn(s: string): ref YYLEX 0 0
+  . fn(s: string): ref YYLEX 0 0
+    name YYLEX YYLEX 0 0
+    name initstring nothing 0 0
+  seq nothing 0 0
+    := nothing 0 0
+      name ret nothing 0 0
+      ref nothing 0 0
+        name blanklex nothing 0 0
+    seq nothing 0 0
+      = nothing 0 0
+        . nothing 0 0
+          name ret nothing 0 0
+          name s nothing 0 0
+        name s nothing 0 0
+      seq nothing 0 0
+        = nothing 0 0
+          . nothing 0 0
+            name ret nothing 0 0
+            name path nothing 0 0
+          const internal string 0 0
+        seq nothing 0 0
+          = nothing 0 0
+            . nothing 0 0
+              name ret nothing 0 0
+              name strpos nothing 0 0
+            const (0) int 0 0
+          seq nothing 0 0
+            return nothing 0 0
+              name ret nothing 0 0
+typecheck tree: 
+fn(){} fn(fd: ref Sys->FD, path: string): ref YYLEX 0 0
+  . fn(fd: ref Sys->FD, path: string): ref YYLEX 0 0
+    name YYLEX YYLEX 0 0
+    name initfile nothing 0 0
+  seq nothing 0 0
+    := nothing 0 0
+      name lex nothing 0 0
+      ref nothing 0 0
+        name blanklex nothing 0 0
+    seq nothing 0 0
+      = nothing 0 0
+        . nothing 0 0
+          name lex nothing 0 0
+          name f nothing 0 0
+        call nothing 0 0
+          -> nothing 0 0
+            name bufio nothing 0 0
+            name fopen nothing 0 0
+          seq nothing 0 0
+            name fd nothing 0 0
+            seq nothing 0 0
+              -> nothing 0 0
+                name bufio nothing 0 0
+                name OREAD nothing 0 0
+      seq nothing 0 0
+        = nothing 0 0
+          . nothing 0 0
+            name lex nothing 0 0
+            name path nothing 0 0
+          name path nothing 0 0
+        seq nothing 0 0
+          = nothing 0 0
+            . nothing 0 0
+              name lex nothing 0 0
+              name cbuf nothing 0 0
+            array array of int 0 0
+              const (2) int 0 0
+          seq nothing 0 0
+            = nothing 0 0
+              . nothing 0 0
+                name lex nothing 0 0
+                name linenum nothing 0 0
+              const (1) int 0 0
+            seq nothing 0 0
+              = nothing 0 0
+                . nothing 0 0
+                  name lex nothing 0 0
+                  name prompt nothing 0 0
+                const  string 0 0
+              seq nothing 0 0
+                return nothing 0 0
+                  name lex nothing 0 0
+typecheck tree: 
+fn(){} fn(l: self ref YYLEX, s: string) 0 0
+  . fn(l: self ref YYLEX, err: string) 0 0
+    name YYLEX YYLEX 0 0
+    name error nothing 0 0
+  seq nothing 0 0
+    if nothing 0 0
+      == nothing 0 0
+        . nothing 0 0
+          name l nothing 0 0
+          name err nothing 0 0
+        name nil polymorphic type 0 0
+      seq nothing 0 0
+        scope nothing 0 0
+          seq nothing 0 0
+            = nothing 0 0
+              . nothing 0 0
+                name l nothing 0 0
+                name err nothing 0 0
+              name s nothing 0 0
+            seq nothing 0 0
+              = nothing 0 0
+                . nothing 0 0
+                  name l nothing 0 0
+                  name errline nothing 0 0
+                . nothing 0 0
+                  name l nothing 0 0
+                  name linenum nothing 0 0
+typecheck tree: 
+fn(){} fn(l: self ref YYLEX): int 0 0
+  . fn(l: self ref YYLEX): int 0 0
+    name YYLEX YYLEX 0 0
+    name lex nothing 0 0
+  seq nothing 0 0
+    := nothing 0 0
+      name endword nothing 0 0
+      const (0) int 0 0
+    seq nothing 0 0
+      := nothing 0 0
+        name wasdollar nothing 0 0
+        const (0) int 0 0
+      seq nothing 0 0
+        := nothing 0 0
+          name tok nothing 0 0
+          name NOTOKEN nothing 0 0
+        seq nothing 0 0
+          for nothing 0 0
+            == nothing 0 0
+              name tok nothing 0 0
+              name NOTOKEN nothing 0 0
+            seq nothing 0 0
+              scope nothing 0 0
+                seq nothing 0 0
+                  case nothing 0 0
+                    := nothing 0 0
+                      name c nothing 0 0
+                      call nothing 0 0
+                        . nothing 0 0
+                          name l nothing 0 0
+                          name getc nothing 0 0
+                    seq nothing 0 0
+                      label nothing 0 0
+                        seq nothing 0 0
+                          . nothing 0 0
+                            name l nothing 0 0
+                            name EOF nothing 0 0
+                        scope nothing 0 0
+                          = nothing 0 0
+                            name tok nothing 0 0
+                            name END nothing 0 0
+                      seq nothing 0 0
+                        label nothing 0 0
+                          seq nothing 0 0
+                            const (10) int 0 0
+                          scope nothing 0 0
+                            = nothing 0 0
+                              name tok nothing 0 0
+                              const (10) int 0 0
+                        seq nothing 0 0
+                          label nothing 0 0
+                            seq nothing 0 0
+                              const (13) int 0 0
+                              seq nothing 0 0
+                                const (9) int 0 0
+                                seq nothing 0 0
+                                  const (32) int 0 0
+                            scope nothing 0 0
+                              nothing nothing 0 0
+                          seq nothing 0 0
+                            label nothing 0 0
+                              seq nothing 0 0
+                                const (35) int 0 0
+                              scope nothing 0 0
+                                seq nothing 0 0
+                                  for nothing 0 0
+                                    && nothing 0 0
+                                      != nothing 0 0
+                                        = nothing 0 0
+                                          name c nothing 0 0
+                                          call nothing 0 0
+                                            . nothing 0 0
+                                              name l nothing 0 0
+                                              name getc nothing 0 0
+                                        const (10) int 0 0
+                                      != nothing 0 0
+                                        name c nothing 0 0
+                                        . nothing 0 0
+                                          name l nothing 0 0
+                                          name EOF nothing 0 0
+                                    seq nothing 0 0
+                                      nothing nothing 0 0
+                                  call nothing 0 0
+                                    . nothing 0 0
+                                      name l nothing 0 0
+                                      name ungetc nothing 0 0
+                            seq nothing 0 0
+                              label nothing 0 0
+                                seq nothing 0 0
+                                  const (59) int 0 0
+                                scope nothing 0 0
+                                  = nothing 0 0
+                                    name tok nothing 0 0
+                                    const (59) int 0 0
+   
+typecheck tree: 
+fn(){} fn(t: int): string 0 0
+  name tokstr fn(t: int): string 0 0
+  seq nothing 0 0
+    vardecl string 0 0
+      seq nothing 0 0
+    seq nothing 0 0
+      case nothing 0 0
+        name t nothing 0 0
+        seq nothing 0 0
+          label nothing 0 0
+            seq nothing 0 0
+              const (10) int 0 0
+            scope nothing 0 0
+              = nothing 0 0
+                name s nothing 0 0
+                const '\n' string 0 0
+          seq nothing 0 0
+            label nothing 0 0
+              seq nothing 0 0
+                range nothing 0 0
+                  const (33) int 0 0
+                  const (127) int 0 0
+              scope nothing 0 0
+                = nothing 0 0
+                  name s nothing 0 0
+                  call nothing 0 0
+                    name sprint nothing 0 0
+                    seq nothing 0 0
+                      const '%c' string 0 0
+                      seq nothing 0 0
+                        name t nothing 0 0
+            seq nothing 0 0
+              label nothing 0 0
+                seq nothing 0 0
+                  name DUP nothing 0 0
+                scope nothing 0 0
+                  = nothing 0 0
+                    name s nothing 0 0
+                    const DUP string 0 0
+              seq nothing 0 0
+                label nothing 0 0
+                  seq nothing 0 0
+                    name REDIR nothing 0 0
+                  scope nothing 0 0
+                    = nothing 0 0
+                      name s nothing 0 0
+                      const REDIR string 0 0
+                seq nothing 0 0
+                  label nothing 0 0
+                    seq nothing 0 0
+                      name WORD nothing 0 0
+                    scope nothing 0 0
+                      = nothing 0 0
+                        name s nothing 0 0
+                        const WORD string 0 0
+                  seq nothing 0 0
+                    label nothing 0 0
+                      seq nothing 0 0
+                        name OP nothing 0 0
+                      scope nothing 0 0
+                        = nothing 0 0
+                          name s nothing 0 0
+                          const OP string 0 0
+                    seq nothing 0 0
+                      label nothing 0 0
+                        seq nothing 0 0
+                          name END nothing 0 0
+                        scope nothing 0 0
+                          = nothing 0 0
+                            name s nothing 0 0
+                            const END string 0 0
+                      seq nothing 0 0
+                        label nothing 0 0
+                          seq nothing 0 0
+                            name ERROR nothing 0 0
+                          scope nothing 0 0
+                            = nothing 0 0
+                              name s nothing 0 0
+                              const ERROR string 0 0
+                        seq nothing 0 0
+                          label nothing 0 0
+                            seq nothing 0 0
+                              * nothing 0 0
+                            scope nothing 0 0
+                              = nothing 0 0
+                                name s nothing 0 0
+                                + nothing 0 0
+                                  + nothing 0 0
+                                    const <unknowntok string 0 0
+                                    cast string 0 0
+                                      name t nothing 0 0
+                                  const > string 0 0
+      seq nothing 0 0
+        return nothing 0 0
+          name s nothing 0 0
+typecheck tree: 
+fn(){} fn(lex: self ref YYLEX) 0 0
+  . fn(l: self ref YYLEX) 0 0
+    name YYLEX YYLEX 0 0
+    name ungetc nothing 0 0
+  seq nothing 0 0
+    -- nothing 0 0
+      . nothing 0 0
+        name lex nothing 0 0
+        name strpos nothing 0 0
+    seq nothing 0 0
+      if nothing 0 0
+        != nothing 0 0
+          . nothing 0 0
+            name lex nothing 0 0
+            name f nothing 0 0
+          name nil polymorphic type 0 0
+        seq nothing 0 0
+          scope nothing 0 0
+            seq nothing 0 0
+              ++ nothing 0 0
+                . nothing 0 0
+                  name lex nothing 0 0
+                  name ncbuf nothing 0 0
+              seq nothing 0 0
+                if nothing 0 0
+                  < nothing 0 0
+                    . nothing 0 0
+                      name lex nothing 0 0
+                      name strpos nothing 0 0
+                    const (0) int 0 0
+                  seq nothing 0 0
+                    = nothing 0 0
+                      . nothing 0 0
+                        name lex nothing 0 0
+                        name strpos nothing 0 0
+                      - nothing 0 0
+                        len nothing 0 0
+                          . nothing 0 0
+                            name lex nothing 0 0
+                            name cbuf nothing 0 0
+                        const (1) int 0 0
+typecheck tree: 
+fn(){} fn(lex: self ref YYLEX): int 0 0
+  . fn(l: self ref YYLEX): int 0 0
+    name YYLEX YYLEX 0 0
+    name getc nothing 0 0
+  seq nothing 0 0
+    if nothing 0 0
+      . nothing 0 0
+        name lex nothing 0 0
+        name eof nothing 0 0
+      seq nothing 0 0
+        return nothing 0 0
+          . nothing 0 0
+            name lex nothing 0 0
+            name EOF nothing 0 0
+    seq nothing 0 0
+      vardecl int 0 0
+        seq nothing 0 0
+      seq nothing 0 0
+        if nothing 0 0
+          != nothing 0 0
+            . nothing 0 0
+              name lex nothing 0 0
+              name f nothing 0 0
+            name nil polymorphic type 0 0
+          seq nothing 0 0
+            scope nothing 0 0
+              seq nothing 0 0
+                if nothing 0 0
+                  > nothing 0 0
+                    . nothing 0 0
+                      name lex nothing 0 0
+                      name ncbuf nothing 0 0
+                    const (0) int 0 0
+                  seq nothing 0 0
+                    scope nothing 0 0
+                      seq nothing 0 0
+                        = nothing 0 0
+                          name c nothing 0 0
+                          index nothing 0 0
+                            . nothing 0 0
+                              name lex nothing 0 0
+                              name cbuf nothing 0 0
+                            ++ nothing 0 0
+                              . nothing 0 0
+                                name lex nothing 0 0
+                                name strpos nothing 0 0
+                        seq nothing 0 0
+                          if nothing 0 0
+                            >= nothing 0 0
+                              . nothing 0 0
+                                name lex nothing 0 0
+                                name strpos nothing 0 0
+                              len nothing 0 0
+                                . nothing 0 0
+                                  name lex nothing 0 0
+                                  name cbuf nothing 0 0
+                            seq nothing 0 0
+                              = nothing 0 0
+                                . nothing 0 0
+                                  name lex nothing 0 0
+                                  name strpos nothing 0 0
+                                const (0) int 0 0
+                          seq nothing 0 0
+                            -- nothing 0 0
+                              . nothing 0 0
+                                name lex nothing 0 0
+                                name ncbuf nothing 0 0
+                    scope nothing 0 0
+                      seq nothing 0 0
+                        if nothing 0 0
+                          && nothing 0 0
+                            . nothing 0 0
+                              name lex nothing 0 0
+                              name lastnl nothing 0 0
+                            != nothing 0 0
+                              . nothing 0 0
+                                name lex nothing 0 0
+                                name prompt nothing 0 0
+                              name nil polymorphic type 0 0
+                          seq nothing 0 0
+                            call nothing 0 0
+                              -> nothing 0 0
+                                name sys nothing 0 0
+                                name fprint nothing 0 0
+                              seq nothing 0 0
+                                call nothing 0 0
+                                  name stderr nothing 0 0
+                                seq nothing 0 0
+                                  const %s string 0 0
+                                  seq nothing 0 0
+                                    . nothing 0 0
+                                      name lex nothing 0 0
+                                      name prompt nothing 0 0
+                        seq nothing 0 0
+                          = nothing 0 0
+                            name c nothing 0 0
+                            call nothing 0 0
+                              -> nothing 0 0
+                                name bufio nothi
+typecheck tree: 
+fn(){} fn(lex: ref YYLEX): int 0 0
+  name readnum fn(lex: ref YYLEX): int 0 0
+  seq nothing 0 0
+    := nothing 0 0
+      name sum nothing 0 0
+      := nothing 0 0
+        name nc nothing 0 0
+        const (0) int 0 0
+    seq nothing 0 0
+      for nothing 0 0
+        && nothing 0 0
+          >= nothing 0 0
+            := nothing 0 0
+              name c nothing 0 0
+              call nothing 0 0
+                . nothing 0 0
+                  name lex nothing 0 0
+                  name getc nothing 0 0
+            const (48) int 0 0
+          <= nothing 0 0
+            name c nothing 0 0
+            const (57) int 0 0
+        seq nothing 0 0
+          scope nothing 0 0
+            seq nothing 0 0
+              = nothing 0 0
+                name sum nothing 0 0
+                + nothing 0 0
+                  * nothing 0 0
+                    name sum nothing 0 0
+                    const (10) int 0 0
+                  - nothing 0 0
+                    name c nothing 0 0
+                    const (48) int 0 0
+              seq nothing 0 0
+                ++ nothing 0 0
+                  name nc nothing 0 0
+      seq nothing 0 0
+        call nothing 0 0
+          . nothing 0 0
+            name lex nothing 0 0
+            name ungetc nothing 0 0
+        seq nothing 0 0
+          if nothing 0 0
+            == nothing 0 0
+              name nc nothing 0 0
+              const (0) int 0 0
+            seq nothing 0 0
+              return nothing 0 0
+                - nothing 0 0
+                  const (1) int 0 0
+          seq nothing 0 0
+            return nothing 0 0
+              name sum nothing 0 0
+typecheck tree: 
+fn(){} fn(lex: ref YYLEX): (int, ref Redir) 0 0
+  name readfdassign fn(lex: ref YYLEX): (int, ref Redir) 0 0
+  seq nothing 0 0
+    := nothing 0 0
+      name n1 nothing 0 0
+      call nothing 0 0
+        name readnum nothing 0 0
+        seq nothing 0 0
+          name lex nothing 0 0
+    seq nothing 0 0
+      if nothing 0 0
+        != nothing 0 0
+          := nothing 0 0
+            name c nothing 0 0
+            call nothing 0 0
+              . nothing 0 0
+                name lex nothing 0 0
+                name getc nothing 0 0
+          const (61) int 0 0
+        seq nothing 0 0
+          scope nothing 0 0
+            seq nothing 0 0
+              if nothing 0 0
+                == nothing 0 0
+                  name c nothing 0 0
+                  const (93) int 0 0
+                seq nothing 0 0
+                  return nothing 0 0
+                    tuple nothing 0 0
+                      seq nothing 0 0
+                        name REDIR nothing 0 0
+                        seq nothing 0 0
+                          ref nothing 0 0
+                            call nothing 0 0
+                              name Redir nothing 0 0
+                              seq nothing 0 0
+                                - nothing 0 0
+                                  const (1) int 0 0
+                                seq nothing 0 0
+                                  name n1 nothing 0 0
+                                  seq nothing 0 0
+                                    - nothing 0 0
+                                      const (1) int 0 0
+              seq nothing 0 0
+                return nothing 0 0
+                  tuple nothing 0 0
+                    seq nothing 0 0
+                      name ERROR nothing 0 0
+                      seq nothing 0 0
+                        name nil polymorphic type 0 0
+      seq nothing 0 0
+        := nothing 0 0
+          name n2 nothing 0 0
+          call nothing 0 0
+            name readnum nothing 0 0
+            seq nothing 0 0
+              name lex nothing 0 0
+        seq nothing 0 0
+          if nothing 0 0
+            != nothing 0 0
+              call nothing 0 0
+                . nothing 0 0
+                  name lex nothing 0 0
+                  name getc nothing 0 0
+              const (93) int 0 0
+            seq nothing 0 0
+              return nothing 0 0
+                tuple nothing 0 0
+                  seq nothing 0 0
+                    name ERROR nothing 0 0
+                    seq nothing 0 0
+                      name nil polymorphic type 0 0
+          seq nothing 0 0
+            return nothing 0 0
+              tuple nothing 0 0
+                seq nothing 0 0
+                  name DUP nothing 0 0
+                  seq nothing 0 0
+                    ref nothing 0 0
+                      call nothing 0 0
+                        name Redir nothing 0 0
+                        seq nothing 0 0
+                          - nothing 0 0
+                            const (1) int 0 0
+                          seq nothing 0 0
+                            name n1 nothing 0 0
+                            seq nothing 0 0
+                              name n2 nothing 0 0
+typecheck tree: 
+fn(){} fn(left: ref Node, right: ref Node): ref Node 0 0
+  name mkseq fn(left: ref Node, right: ref Node): ref Node 0 0
+  seq nothing 0 0
+    if nothing 0 0
+      && nothing 0 0
+        != nothing 0 0
+          name left nothing 0 0
+          name nil polymorphic type 0 0
+        != nothing 0 0
+          name right nothing 0 0
+          name nil polymorphic type 0 0
+      seq nothing 0 0
+        return nothing 0 0
+          call nothing 0 0
+            name mk nothing 0 0
+            seq nothing 0 0
+              name n_SEQ nothing 0 0
+              seq nothing 0 0
+                name left nothing 0 0
+                seq nothing 0 0
+                  name right nothing 0 0
+        if nothing 0 0
+          == nothing 0 0
+            name left nothing 0 0
+            name nil polymorphic type 0 0
+          seq nothing 0 0
+            return nothing 0 0
+              name right nothing 0 0
+    seq nothing 0 0
+      return nothing 0 0
+        name left nothing 0 0
+typecheck tree: 
+fn(){} fn(ntype: int, left: ref Node, right: ref Node): ref Node 0 0
+  name mk fn(ntype: int, left: ref Node, right: ref Node): ref Node 0 0
+  seq nothing 0 0
+    return nothing 0 0
+      ref nothing 0 0
+        call nothing 0 0
+          name Node nothing 0 0
+          seq nothing 0 0
+            name ntype nothing 0 0
+            seq nothing 0 0
+              name left nothing 0 0
+              seq nothing 0 0
+                name right nothing 0 0
+                seq nothing 0 0
+                  name nil polymorphic type 0 0
+                  seq nothing 0 0
+                    name nil polymorphic type 0 0
+typecheck tree: 
+fn(){} fn(): ref Sys->FD 0 0
+  name stderr fn(): ref Sys->FD 0 0
+  seq nothing 0 0
+    return nothing 0 0
+      call nothing 0 0
+        -> nothing 0 0
+          name sys nothing 0 0
+          name fildes nothing 0 0
+        seq nothing 0 0
+          const (2) int 0 0
+typecheck tree: 
+fn(){} fn(yyc: int): string 0 0
+  name yytokname fn(yyc: int): string 0 0
+  seq nothing 0 0
+    if nothing 0 0
+      && nothing 0 0
+        && nothing 0 0
+          > nothing 0 0
+            name yyc nothing 0 0
+            const (0) int 0 0
+          <= nothing 0 0
+            name yyc nothing 0 0
+            len nothing 0 0
+              name yytoknames nothing 0 0
+        != nothing 0 0
+          index nothing 0 0
+            name yytoknames nothing 0 0
+            - nothing 0 0
+              name yyc nothing 0 0
+              const (1) int 0 0
+          name nil polymorphic type 0 0
+      seq nothing 0 0
+        return nothing 0 0
+          index nothing 0 0
+            name yytoknames nothing 0 0
+            - nothing 0 0
+              name yyc nothing 0 0
+              const (1) int 0 0
+    seq nothing 0 0
+      return nothing 0 0
+        + nothing 0 0
+          + nothing 0 0
+            const < string 0 0
+            cast string 0 0
+              name yyc nothing 0 0
+          const > string 0 0
+typecheck tree: 
+fn(){} fn(yys: int): string 0 0
+  name yystatname fn(yys: int): string 0 0
+  seq nothing 0 0
+    if nothing 0 0
+      && nothing 0 0
+        && nothing 0 0
+          >= nothing 0 0
+            name yys nothing 0 0
+            const (0) int 0 0
+          < nothing 0 0
+            name yys nothing 0 0
+            len nothing 0 0
+              name yystates nothing 0 0
+        != nothing 0 0
+          index nothing 0 0
+            name yystates nothing 0 0
+            name yys nothing 0 0
+          name nil polymorphic type 0 0
+      seq nothing 0 0
+        return nothing 0 0
+          index nothing 0 0
+            name yystates nothing 0 0
+            name yys nothing 0 0
+    seq nothing 0 0
+      return nothing 0 0
+        + nothing 0 0
+          + nothing 0 0
+            const < string 0 0
+            cast string 0 0
+              name yys nothing 0 0
+          const >
+ string 0 0
+typecheck tree: 
+fn(){} fn(yylex: ref YYLEX): int 0 0
+  name yylex1 fn(yylex: ref YYLEX): int 0 0
+  seq nothing 0 0
+    vardecl int 0 0
+      seq nothing 0 0
+    seq nothing 0 0
+      := nothing 0 0
+        name yychar nothing 0 0
+        call nothing 0 0
+          . nothing 0 0
+            name yylex nothing 0 0
+            name lex nothing 0 0
+      seq nothing 0 0
+        if nothing 0 0
+          <= nothing 0 0
+            name yychar nothing 0 0
+            const (0) int 0 0
+          seq nothing 0 0
+            = nothing 0 0
+              name c nothing 0 0
+              index nothing 0 0
+                name yytok1 nothing 0 0
+                const (0) int 0 0
+            if nothing 0 0
+              < nothing 0 0
+                name yychar nothing 0 0
+                len nothing 0 0
+                  name yytok1 nothing 0 0
+              seq nothing 0 0
+                = nothing 0 0
+                  name c nothing 0 0
+                  index nothing 0 0
+                    name yytok1 nothing 0 0
+                    name yychar nothing 0 0
+                if nothing 0 0
+                  && nothing 0 0
+                    >= nothing 0 0
+                      name yychar nothing 0 0
+                      name YYPRIVATE nothing 0 0
+                    < nothing 0 0
+                      name yychar nothing 0 0
+                      + nothing 0 0
+                        name YYPRIVATE nothing 0 0
+                        len nothing 0 0
+                          name yytok2 nothing 0 0
+                  seq nothing 0 0
+                    = nothing 0 0
+                      name c nothing 0 0
+                      index nothing 0 0
+                        name yytok2 nothing 0 0
+                        - nothing 0 0
+                          name yychar nothing 0 0
+                          name YYPRIVATE nothing 0 0
+                    scope nothing 0 0
+                      seq nothing 0 0
+                        := nothing 0 0
+                          name n nothing 0 0
+                          len nothing 0 0
+                            name yytok3 nothing 0 0
+                        seq nothing 0 0
+                          = nothing 0 0
+                            name c nothing 0 0
+                            const (0) int 0 0
+                          seq nothing 0 0
+                            seq nothing 0 0
+                              := nothing 0 0
+                                name i nothing 0 0
+                                const (0) int 0 0
+                              for nothing 0 0
+                                < nothing 0 0
+                                  name i nothing 0 0
+                                  name n nothing 0 0
+                                seq nothing 0 0
+                                  scope nothing 0 0
+                                    seq nothing 0 0
+                                      if nothing 0 0
+                                        == nothing 0 0
+                                          index nothing 0 0
+                                            name yytok3 nothing 0 0
+                                            + nothing 0 0
+                                              name i nothing 0 0
+                                              const (0) int 0 0
+                                          name yychar nothing 0 0
+                                        seq nothing 0 0
+                                          scope nothing 0 0
+                                            seq nothing 0 0
+                                              = nothing 0 0
+                                                name c nothing 0 0
+                                                index nothing 0 0
+                                                  name yytok3 nothing 0 0
+                                                  + nothing 0 0
+                                                    name i nothing 0 0
+                                                    const (1) int 0 0
+                                              seq nothing 0 0
+                                                b
+typecheck tree: 
+fn(){} fn(yylex: ref YYLEX): int 0 0
+  name yyparse fn(yylex: ref YYLEX): int 0 0
+  seq nothing 0 0
+    if nothing 0 0
+      && nothing 0 0
+        >= nothing 0 0
+          name yydebug nothing 0 0
+          const (1) int 0 0
+        == nothing 0 0
+          name yysys nothing 0 0
+          name nil polymorphic type 0 0
+      seq nothing 0 0
+        scope nothing 0 0
+          seq nothing 0 0
+            = nothing 0 0
+              name yysys nothing 0 0
+              load YYSys 0 0
+                const $Sys string 0 0
+            seq nothing 0 0
+              = nothing 0 0
+                name yystderr nothing 0 0
+                call nothing 0 0
+                  -> nothing 0 0
+                    name yysys nothing 0 0
+                    name fildes nothing 0 0
+                  seq nothing 0 0
+                    const (2) int 0 0
+    seq nothing 0 0
+      := nothing 0 0
+        name yys nothing 0 0
+        array array of YYS 0 0
+          name YYMAXDEPTH nothing 0 0
+      seq nothing 0 0
+        vardecl YYSTYPE 0 0
+          seq nothing 0 0
+        seq nothing 0 0
+          := nothing 0 0
+            name yystate nothing 0 0
+            const (0) int 0 0
+          seq nothing 0 0
+            := nothing 0 0
+              name yychar nothing 0 0
+              - nothing 0 0
+                const (1) int 0 0
+            seq nothing 0 0
+              := nothing 0 0
+                name yynerrs nothing 0 0
+                const (0) int 0 0
+              seq nothing 0 0
+                := nothing 0 0
+                  name yyerrflag nothing 0 0
+                  const (0) int 0 0
+                seq nothing 0 0
+                  := nothing 0 0
+                    name yyp nothing 0 0
+                    - nothing 0 0
+                      const (1) int 0 0
+                  seq nothing 0 0
+                    := nothing 0 0
+                      name yyn nothing 0 0
+                      const (0) int 0 0
+                    seq nothing 0 0
+                      for nothing 0 0
+                        nothing nothing 0 0
+                        seq nothing 0 0
+                          scope nothing 0 0
+                            seq nothing 0 0
+                              if nothing 0 0
+                                >= nothing 0 0
+                                  name yydebug nothing 0 0
+                                  const (4) int 0 0
+                                seq nothing 0 0
+                                  call nothing 0 0
+                                    -> nothing 0 0
+                                      name yysys nothing 0 0
+                                      name fprint nothing 0 0
+                                    seq nothing 0 0
+                                      name yystderr nothing 0 0
+                                      seq nothing 0 0
+                                        const char %s in %s string 0 0
+                                        seq nothing 0 0
+                                          call nothing 0 0
+                                            name yytokname nothing 0 0
+                                            seq nothing 0 0
+                                              name yychar nothing 0 0
+                                          seq nothing 0 0
+                                            call nothing 0 0
+                                              name yystatname nothing 0 0
+                                              seq nothing 0 0
+                                                name yystate nothing 0 0
+                              seq nothing 0 0
+                                ++ nothing 0 0
+                                  name yyp nothing 0 0
+                                seq nothing 0 0
+                                  if nothing 0 0
+                                    >= nothing 0 0
+                                      name yyp nothing 0 0
+                                      len nothing 0 0
+                                        name yys nothing 0 0
+                                    seq nothing 0 0
+                          
+fncom: usage 2 417ba8
+ecom: 
+used int 10 2
+  call int 10 2
+    -> fn(fd: ref Sys->FD, s: string, *): int 12 1
+      name sys Sys 1 0
+      name fprint nothing 11 1
+    seq no type 10 2
+      call ref Sys->FD 10 2
+        -> fn(fd: int): ref Sys->FD 12 1
+          name sys Sys 1 0
+          name fildes nothing 11 1
+        seq no type 10 1
+          const (2) int 6 0
+      seq no type 10 1
+        const usage: sh [-ilexn] [-c command] [file [arg...]]
+ string 1 0
+ecom: 
+call int 10 2
+  -> fn(fd: ref Sys->FD, s: string, *): int 12 1
+    name sys Sys 1 0
+    name fprint nothing 11 1
+  seq no type 10 2
+    call ref Sys->FD 10 2
+      -> fn(fd: int): ref Sys->FD 12 1
+        name sys Sys 1 0
+        name fildes nothing 11 1
+      seq no type 10 1
+        const (2) int 6 0
+    seq no type 10 1
+      const usage: sh [-ilexn] [-c command] [file [arg...]]
+ string 1 0
+ecom to: 
+name .t0 int 0 0
+generate desc for Sys->fprint
+descmap offset 0
+descmap fd type ref Sys->FD offset 64 (d->offset=64 start=0) returns 64
+descmap s type string offset 72 (d->offset=72 start=0) returns 72
+generate desc for big
+generate desc for big
+	desc	$-1,8,""
+generate desc for ref Sys->FD
+generate desc for ref Sys->FD
+	desc	$-1,8,"80"
+ecom: 
+call ref Sys->FD 10 2
+  -> fn(fd: int): ref Sys->FD 12 1
+    name sys Sys 1 0
+    name fildes nothing 11 1
+  seq no type 10 1
+    const (2) int 6 0
+ecom to: 
+name .b2 ref Sys->FD 0 0
+generate desc for big
+ecom: 
+const (2) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b3 big 0 0
+    const (64) int 6 0
+ecom: 
+name .b2 ref Sys->FD 0 0
+ecom to: 
+* ref Sys->FD 8 0
+  + int 15 0
+    name .b1 big 0 0
+    const (64) int 6 0
+ecom: 
+= ref Sys->FD 10 1
+  name .b2 ref Sys->FD 0 0
+  name nil ref Sys->FD 1 0
+ecom: 
+name nil ref Sys->FD 1 0
+ecom to: 
+name .b2 ref Sys->FD 0 0
+ecom: 
+const usage: sh [-ilexn] [-c command] [file [arg...]]
+ string 1 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b1 big 0 0
+    const (72) int 6 0
+ecom: 
+raise nothing 10 1
+  const fail:usage string 1 0
+fn: usage
+64: local .t0 int ref 1
+72: local .b1 big ref 1
+80: local .b2 ref Sys->FD ref 1
+88: local .b3 big ref 1
+generate desc for usage
+descmap offset 0
+descmap .t0 type int offset 64 (d->offset=64 start=0) returns -1
+descmap .b1 type big offset 72 (d->offset=72 start=0) returns -1
+descmap .b2 type ref Sys->FD offset 80 (d->offset=80 start=0) returns 80
+descmap .b3 type big offset 88 (d->offset=88 start=0) returns -1
+fncom: badmodule 6 417c68
+ecom: 
+used int 10 2
+  call int 10 2
+    -> fn(fd: ref Sys->FD, s: string, nil: string, *): int 12 1
+      name sys Sys 1 0
+      name fprint nothing 11 1
+    seq no type 10 2
+      call ref Sys->FD 10 2
+        -> fn(fd: int): ref Sys->FD 12 1
+          name sys Sys 1 0
+          name fildes nothing 11 1
+        seq no type 10 1
+          const (2) int 6 0
+      seq no type 10 1
+        const sh: cannot load %s: %r
+ string 1 0
+        seq no type 10 1
+          name path string 0 0
+ecom: 
+call int 10 2
+  -> fn(fd: ref Sys->FD, s: string, nil: string, *): int 12 1
+    name sys Sys 1 0
+    name fprint nothing 11 1
+  seq no type 10 2
+    call ref Sys->FD 10 2
+      -> fn(fd: int): ref Sys->FD 12 1
+        name sys Sys 1 0
+        name fildes nothing 11 1
+      seq no type 10 1
+        const (2) int 6 0
+    seq no type 10 1
+      const sh: cannot load %s: %r
+ string 1 0
+      seq no type 10 1
+        name path string 0 0
+ecom to: 
+name .t4 int 0 0
+generate desc for Sys->fprint
+descmap offset 0
+descmap fd type ref Sys->FD offset 64 (d->offset=64 start=0) returns 64
+descmap s type string offset 72 (d->offset=72 start=0) returns 72
+descmap type string offset 80 returns 80
+generate desc for big
+generate desc for ref Sys->FD
+ecom: 
+call ref Sys->FD 10 2
+  -> fn(fd: int): ref Sys->FD 12 1
+    name sys Sys 1 0
+    name fildes nothing 11 1
+  seq no type 10 1
+    const (2) int 6 0
+ecom to: 
+name .b6 ref Sys->FD 0 0
+generate desc for big
+ecom: 
+const (2) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b7 big 0 0
+    const (64) int 6 0
+ecom: 
+name .b6 ref Sys->FD 0 0
+ecom to: 
+* ref Sys->FD 8 0
+  + int 15 0
+    name .b5 big 0 0
+    const (64) int 6 0
+ecom: 
+= ref Sys->FD 10 1
+  name .b6 ref Sys->FD 0 0
+  name nil ref Sys->FD 1 0
+ecom: 
+name nil ref Sys->FD 1 0
+ecom to: 
+name .b6 ref Sys->FD 0 0
+ecom: 
+const sh: cannot load %s: %r
+ string 1 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b5 big 0 0
+    const (72) int 6 0
+ecom: 
+name path string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b5 big 0 0
+    const (80) int 6 0
+ecom: 
+raise nothing 10 1
+  const fail:bad module string 1 0
+fn: badmodule
+64: argument path string ref 1
+72: local .t4 int ref 1
+80: local .b5 big ref 1
+88: local .b6 ref Sys->FD ref 1
+96: local .b7 big ref 1
+generate desc for badmodule
+descmap offset 0
+descmap path type string offset 64 (d->offset=64 start=0) returns 64
+descmap .t4 type int offset 72 (d->offset=72 start=0) returns -1
+descmap .b5 type big offset 80 (d->offset=80 start=0) returns -1
+descmap .b6 type ref Sys->FD offset 88 (d->offset=88 start=0) returns 88
+descmap .b7 type big offset 96 (d->offset=96 start=0) returns -1
+fncom: initialise 7 4b6b60
+ecom: 
+= Sys 10 1
+  name sys Sys 1 0
+  load Sys 10 1
+    const $Sys string 1 0
+    name .m.Sys Sys 17 1
+ecom: 
+load Sys 10 1
+  const $Sys string 1 0
+  name .m.Sys Sys 17 1
+ecom to: 
+name sys Sys 1 0
+ecom: 
+= Filepat 10 1
+  name filepat Filepat 1 0
+  load Filepat 10 1
+    const /dis/lib/filepat.dis string 1 0
+    name .m.Filepat Filepat 17 1
+ecom: 
+load Filepat 10 1
+  const /dis/lib/filepat.dis string 1 0
+  name .m.Filepat Filepat 17 1
+ecom to: 
+name filepat Filepat 1 0
+ecom: 
+call no type 10 2
+  name badmodule fn(path: string) 11 1
+  seq no type 10 1
+    const /dis/lib/filepat.dis string 1 0
+generate desc for big
+ecom: 
+const /dis/lib/filepat.dis string 1 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b9 big 0 0
+    const (64) int 6 0
+ecom: 
+= String 10 1
+  name str String 1 0
+  load String 10 1
+    const /dis/lib/string.dis string 1 0
+    name .m.String String 17 1
+ecom: 
+load String 10 1
+  const /dis/lib/string.dis string 1 0
+  name .m.String String 17 1
+ecom to: 
+name str String 1 0
+ecom: 
+call no type 10 2
+  name badmodule fn(path: string) 11 1
+  seq no type 10 1
+    const /dis/lib/string.dis string 1 0
+generate desc for big
+ecom: 
+const /dis/lib/string.dis string 1 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b9 big 0 0
+    const (64) int 6 0
+ecom: 
+= Bufio 10 1
+  name bufio Bufio 1 0
+  load Bufio 10 1
+    const /dis/lib/bufio.dis string 1 0
+    name .m.Bufio Bufio 17 1
+ecom: 
+load Bufio 10 1
+  const /dis/lib/bufio.dis string 1 0
+  name .m.Bufio Bufio 17 1
+ecom to: 
+name bufio Bufio 1 0
+ecom: 
+call no type 10 2
+  name badmodule fn(path: string) 11 1
+  seq no type 10 1
+    const /dis/lib/bufio.dis string 1 0
+generate desc for big
+ecom: 
+const /dis/lib/bufio.dis string 1 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b9 big 0 0
+    const (64) int 6 0
+ecom: 
+= Sh 10 1
+  name myself Sh 1 0
+  load Sh 10 1
+    const $self string 1 0
+    name .m.Sh Sh 17 1
+ecom: 
+load Sh 10 1
+  const $self string 1 0
+  name .m.Sh Sh 17 1
+ecom to: 
+name myself Sh 1 0
+ecom: 
+call no type 10 2
+  name badmodule fn(path: string) 11 1
+  seq no type 10 1
+    const $self(Sh) string 1 0
+generate desc for big
+ecom: 
+const $self(Sh) string 1 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b9 big 0 0
+    const (64) int 6 0
+ecom: 
+= Shellbuiltin 10 1
+  name myselfbuiltin Shellbuiltin 1 0
+  load Shellbuiltin 10 1
+    const $self string 1 0
+    name .m.Shellbuiltin Shellbuiltin 17 1
+ecom: 
+load Shellbuiltin 10 1
+  const $self string 1 0
+  name .m.Shellbuiltin Shellbuiltin 17 1
+ecom to: 
+name myselfbuiltin Shellbuiltin 1 0
+ecom: 
+call no type 10 2
+  name badmodule fn(path: string) 11 1
+  seq no type 10 1
+    const $self(Shellbuiltin) string 1 0
+generate desc for big
+ecom: 
+const $self(Shellbuiltin) string 1 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b9 big 0 0
+    const (64) int 6 0
+ecom: 
+= Env 10 1
+  name env Env 1 0
+  load Env 10 1
+    const /dis/lib/env.dis string 1 0
+    name .m.Env Env 17 1
+ecom: 
+load Env 10 1
+  const /dis/lib/env.dis string 1 0
+  name .m.Env Env 17 1
+ecom to: 
+name env Env 1 0
+fn: initialise
+64: local .t8 int ref 1
+72: local .b9 big ref 5
+generate desc for initialise
+descmap offset 0
+descmap .t8 type int offset 64 (d->offset=64 start=0) returns -1
+descmap .b9 type big offset 72 (d->offset=72 start=0) returns -1
+fncom: init 2 4b6d80
+ecom: 
+call no type 10 1
+  name initialise fn() 11 1
+generate desc for big
+ecom: 
+= Options 10 1
+  name opts Options 0 0
+  name blankopts Options 1 0
+ecom: 
+name blankopts Options 1 0
+ecom to: 
+name opts Options 0 0
+generate desc for Options
+descmap adt offset 0
+descmap offset 0
+descmap lflag type int offset 0 (d->offset=0 start=0) returns -1
+descmap nflag type int offset 4 (d->offset=4 start=0) returns -1
+descmap ctxtflags type int offset 8 (d->offset=8 start=0) returns -1
+descmap carg type string offset 16 (d->offset=16 start=0) returns 16
+generate desc for Options
+	desc	$-1,24,"20"
+eacom: 
+inds int 10 1
+  hd string 10 1
+    name argv list of string 0 0
+  const (0) int 6 0
+ecom: 
+inds int 10 1
+  hd string 10 1
+    name argv list of string 0 0
+  const (0) int 6 0
+ecom to: 
+name .t11 int 0 0
+eacom: 
+hd string 10 1
+  name argv list of string 0 0
+ecom: 
+hd string 10 1
+  name argv list of string 0 0
+ecom to: 
+name .t12 string 0 0
+ecom: 
+= string 10 1
+  name .t12 string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name .t12 string 0 0
+ecom: 
+++ int 10 1
+  * int 0 0
+    adr int 13 1
+      name opts Options 0 0
+  const (1) int 6 0
+ecom: 
+= list of string 10 1
+  name argv list of string 0 0
+  tl list of string 10 1
+    name argv list of string 0 0
+ecom: 
+tl list of string 10 1
+  name argv list of string 0 0
+ecom to: 
+name argv list of string 0 0
+ecom: 
+= int 10 1
+  name interactive int 0 0
+  const (0) int 6 0
+ecom: 
+const (0) int 6 0
+ecom to: 
+name interactive int 0 0
+eacom: 
+hd string 10 1
+  name argv list of string 0 0
+ecom: 
+hd string 10 1
+  name argv list of string 0 0
+ecom to: 
+name .t12 string 0 0
+ecom: 
+= string 10 1
+  name .t12 string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name .t12 string 0 0
+eacom: 
+inds int 10 1
+  hd string 10 1
+    name argv list of string 0 0
+  const (0) int 6 0
+ecom: 
+inds int 10 1
+  hd string 10 1
+    name argv list of string 0 0
+  const (0) int 6 0
+ecom to: 
+name .t11 int 0 0
+eacom: 
+hd string 10 1
+  name argv list of string 0 0
+ecom: 
+hd string 10 1
+  name argv list of string 0 0
+ecom to: 
+name .t12 string 0 0
+ecom: 
+= string 10 1
+  name .t12 string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name .t12 string 0 0
+ecom: 
+= int 10 1
+  name i int 0 0
+  const (1) int 6 0
+ecom: 
+const (1) int 6 0
+ecom to: 
+name i int 0 0
+eacom: 
+len int 10 1
+  hd string 10 1
+    name argv list of string 0 0
+ecom: 
+len int 10 1
+  hd string 10 1
+    name argv list of string 0 0
+ecom to: 
+name .t11 int 0 0
+eacom: 
+hd string 10 1
+  name argv list of string 0 0
+ecom: 
+hd string 10 1
+  name argv list of string 0 0
+ecom to: 
+name .t12 string 0 0
+ecom: 
+= string 10 1
+  name .t12 string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name .t12 string 0 0
+ecom: 
+= int 10 1
+  name c int 0 0
+  inds int 10 1
+    hd string 10 1
+      name argv list of string 0 0
+    name i int 0 0
+ecom: 
+inds int 10 1
+  hd string 10 1
+    name argv list of string 0 0
+  name i int 0 0
+ecom to: 
+name c int 0 0
+eacom: 
+hd string 10 1
+  name argv list of string 0 0
+ecom: 
+hd string 10 1
+  name argv list of string 0 0
+ecom to: 
+name .t12 string 0 0
+ecom: 
+= string 10 1
+  name .t12 string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name .t12 string 0 0
+ecom: 
+= int 10 1
+  name interactive int 0 0
+  const INTERACTIVE (1) int 6 0
+ecom: 
+const INTERACTIVE (1) int 6 0
+ecom to: 
+name interactive int 0 0
+ecom: 
+++ int 10 1
+  * int 0 0
+    adr int 13 1
+      name opts Options 0 0
+  const (1) int 6 0
+ecom: 
+++ int 10 1
+  * int 0 0
+    + int 13 1
+      adr int 13 1
+        name opts Options 0 0
+      const nflag (4) int 6 0
+  const (1) int 6 0
+ecom: 
+|= int 10 1
+  * int 0 0
+    + int 13 1
+      adr int 13 1
+        name opts Options 0 0
+      const ctxtflags (8) int 6 0
+  const ERROREXIT (8) int 6 0
+ecom: 
+|= int 10 1
+  * int 0 0
+    + int 13 1
+      adr int 13 1
+        name opts Options 0 0
+      const ctxtflags (8) int 6 0
+  const EXECPRINT (4) int 6 0
+eacom: 
+- int 10 1
+  len int 10 1
+    hd string 10 1
+      name argv list of string 0 0
+  const (1) int 6 0
+ecom: 
+- int 10 1
+  len int 10 1
+    hd string 10 1
+      name argv list of string 0 0
+  const (1) int 6 0
+ecom to: 
+name .t11 int 0 0
+ecom: 
+len int 10 1
+  hd string 10 1
+    name argv list of string 0 0
+ecom to: 
+name .t11 int 0 0
+eacom: 
+hd string 10 1
+  name argv list of string 0 0
+ecom: 
+hd string 10 1
+  name argv list of string 0 0
+ecom to: 
+name .t12 string 0 0
+ecom: 
+= string 10 1
+  name .t12 string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name .t12 string 0 0
+ecom: 
+= string 10 2
+  name arg string 0 0
+  slice string 10 2
+    hd string 10 1
+      name argv list of string 0 0
+    seq no type 10 2
+      + int 15 1
+        name i int 0 0
+        const (1) int 6 0
+      nothing no type 10 1
+ecom: 
+slice string 10 2
+  hd string 10 1
+    name argv list of string 0 0
+  seq no type 10 2
+    + int 15 1
+      name i int 0 0
+      const (1) int 6 0
+    nothing no type 10 1
+ecom to: 
+name arg string 0 0
+eacom: 
+hd string 10 1
+  name argv list of string 0 0
+ecom: 
+hd string 10 1
+  name argv list of string 0 0
+ecom to: 
+name .t12 string 0 0
+ecom: 
+len int 10 1
+  name .t12 string 0 0
+ecom to: 
+name .t11 int 0 0
+eacom: 
++ int 15 1
+  name i int 0 0
+  const (1) int 6 0
+ecom: 
++ int 15 1
+  name i int 0 0
+  const (1) int 6 0
+ecom to: 
+name .t13 int 0 0
+ecom: 
+name .t12 string 0 0
+ecom to: 
+name arg string 0 0
+ecom: 
+= string 10 1
+  name .t12 string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name .t12 string 0 0
+eacom: 
+tl list of string 10 1
+  name argv list of string 0 0
+ecom: 
+tl list of string 10 1
+  name argv list of string 0 0
+ecom to: 
+name .t12 list of string 0 0
+ecom: 
+= list of string 10 1
+  name .t12 list of string 0 0
+  name nil list of string 1 0
+ecom: 
+name nil list of string 1 0
+ecom to: 
+name .t12 list of string 0 0
+eacom: 
+hd string 10 1
+  tl list of string 10 1
+    name argv list of string 0 0
+ecom: 
+hd string 10 1
+  tl list of string 10 1
+    name argv list of string 0 0
+ecom to: 
+name .t12 string 0 0
+eacom: 
+tl list of string 10 1
+  name argv list of string 0 0
+ecom: 
+tl list of string 10 1
+  name argv list of string 0 0
+ecom to: 
+name .t12 list of string 0 0
+ecom: 
+= string 10 1
+  name .t12 string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name .t12 string 0 0
+ecom: 
+call no type 10 1
+  name usage fn() 11 1
+generate desc for big
+ecom: 
+= string 10 1
+  name arg string 0 0
+  hd string 10 1
+    tl list of string 10 1
+      name argv list of string 0 0
+ecom: 
+hd string 10 1
+  tl list of string 10 1
+    name argv list of string 0 0
+ecom to: 
+name arg string 0 0
+eacom: 
+tl list of string 10 1
+  name argv list of string 0 0
+ecom: 
+tl list of string 10 1
+  name argv list of string 0 0
+ecom to: 
+name .t12 list of string 0 0
+ecom: 
+= list of string 10 1
+  name .t12 list of string 0 0
+  name nil list of string 1 0
+ecom: 
+name nil list of string 1 0
+ecom to: 
+name .t12 list of string 0 0
+ecom: 
+= list of string 10 1
+  name argv list of string 0 0
+  tl list of string 10 1
+    name argv list of string 0 0
+ecom: 
+tl list of string 10 1
+  name argv list of string 0 0
+ecom to: 
+name argv list of string 0 0
+ecom: 
+= list of string 10 1
+  name argv list of string 0 0
+  tl list of string 10 1
+    name argv list of string 0 0
+ecom: 
+tl list of string 10 1
+  name argv list of string 0 0
+ecom to: 
+name argv list of string 0 0
+ecom: 
+= string 10 1
+  * string 0 0
+    + int 13 1
+      adr int 13 1
+        name opts Options 0 0
+      const carg (16) int 6 0
+  name arg string 0 0
+ecom: 
+name arg string 0 0
+ecom to: 
+* string 0 0
+  + int 13 1
+    adr int 13 1
+      name opts Options 0 0
+    const carg (16) int 6 0
+ecom: 
+= string 10 1
+  name arg string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name arg string 0 0
+ecom: 
+= string 10 1
+  name arg string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name arg string 0 0
+ecom: 
+++ int 10 1
+  name i int 0 0
+  const (1) int 6 0
+ecom: 
+= list of string 10 1
+  name argv list of string 0 0
+  tl list of string 10 1
+    name argv list of string 0 0
+ecom: 
+tl list of string 10 1
+  name argv list of string 0 0
+ecom to: 
+name argv list of string 0 0
+ecom: 
+used int 10 2
+  call int 10 2
+    -> fn(flags: int, movefd: list of int): int 12 1
+      name sys Sys 1 0
+      name pctl nothing 11 1
+    seq no type 10 1
+      const FORKFD (2) int 6 0
+      seq no type 10 1
+        name nil list of int 1 0
+ecom: 
+call int 10 2
+  -> fn(flags: int, movefd: list of int): int 12 1
+    name sys Sys 1 0
+    name pctl nothing 11 1
+  seq no type 10 1
+    const FORKFD (2) int 6 0
+    seq no type 10 1
+      name nil list of int 1 0
+ecom to: 
+name .t13 int 0 0
+generate desc for big
+ecom: 
+const FORKFD (2) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b10 big 0 0
+    const (64) int 6 0
+ecom: 
+name nil list of int 1 0
+ecom to: 
+* list of int 8 0
+  + int 15 0
+    name .b10 big 0 0
+    const (72) int 6 0
+ecom: 
+used int 10 2
+  call int 10 2
+    -> fn(flags: int, movefd: list of int): int 12 1
+      name sys Sys 1 0
+      name pctl nothing 11 1
+    seq no type 10 1
+      const FORKNS (8) int 6 0
+      seq no type 10 1
+        name nil list of int 1 0
+ecom: 
+call int 10 2
+  -> fn(flags: int, movefd: list of int): int 12 1
+    name sys Sys 1 0
+    name pctl nothing 11 1
+  seq no type 10 1
+    const FORKNS (8) int 6 0
+    seq no type 10 1
+      name nil list of int 1 0
+ecom to: 
+name .t13 int 0 0
+generate desc for big
+ecom: 
+const FORKNS (8) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b10 big 0 0
+    const (64) int 6 0
+ecom: 
+name nil list of int 1 0
+ecom to: 
+* list of int 8 0
+  + int 15 0
+    name .b10 big 0 0
+    const (72) int 6 0
+ecom: 
+= ref Context 10 2
+  name ctxt ref Context 0 0
+  call ref Context 10 2
+    name new fn(drawcontext: ref Draw->Context): ref Context 11 1
+    seq no type 10 1
+      name drawcontext ref Draw->Context 0 0
+ecom: 
+call ref Context 10 2
+  name new fn(drawcontext: ref Draw->Context): ref Context 11 1
+  seq no type 10 1
+    name drawcontext ref Draw->Context 0 0
+ecom to: 
+name ctxt ref Context 0 0
+generate desc for big
+ecom: 
+name drawcontext ref Draw->Context 0 0
+ecom to: 
+* ref Draw->Context 8 0
+  + int 15 0
+    name .b10 big 0 0
+    const (64) int 6 0
+ecom: 
+used int 10 2
+  call int 10 2
+    name setoptions fn(ctxt: self ref Context, flags: int, on: int): int 11 1
+    seq nothing 10 1
+      name ctxt ref Context 0 0
+      seq no type 10 1
+        * int 0 0
+          + int 13 1
+            adr int 13 1
+              name opts Options 0 0
+            const ctxtflags (8) int 6 0
+        seq no type 10 1
+          const (1) int 6 0
+ecom: 
+call int 10 2
+  name setoptions fn(ctxt: self ref Context, flags: int, on: int): int 11 1
+  seq nothing 10 1
+    name ctxt ref Context 0 0
+    seq no type 10 1
+      * int 0 0
+        + int 13 1
+          adr int 13 1
+            name opts Options 0 0
+          const ctxtflags (8) int 6 0
+      seq no type 10 1
+        const (1) int 6 0
+ecom to: 
+name .t13 int 0 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b10 big 0 0
+    const (64) int 6 0
+ecom: 
+* int 0 0
+  + int 13 1
+    adr int 13 1
+      name opts Options 0 0
+    const ctxtflags (8) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b10 big 0 0
+    const (72) int 6 0
+ecom: 
+const (1) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b10 big 0 0
+    const (76) int 6 0
+ecom: 
+call no type 10 2
+  name runscript fn(ctxt: ref Context, path: string, args: list of ref Listnode, reporterr: int) 11 1
+  seq no type 10 1
+    name ctxt ref Context 0 0
+    seq no type 10 1
+      const /lib/sh/profile string 1 0
+      seq no type 10 1
+        name nil list of ref Listnode 1 0
+        seq no type 10 1
+          const (0) int 6 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b10 big 0 0
+    const (64) int 6 0
+ecom: 
+const /lib/sh/profile string 1 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b10 big 0 0
+    const (72) int 6 0
+ecom: 
+name nil list of ref Listnode 1 0
+ecom to: 
+* list of ref Listnode 8 0
+  + int 15 0
+    name .b10 big 0 0
+    const (80) int 6 0
+ecom: 
+const (0) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b10 big 0 0
+    const (88) int 6 0
+ecom: 
+= string 10 2
+  name status string 0 0
+  call string 10 2
+    name run fn(ctxt: self ref Context, args: list of ref Listnode, last: int): string 11 1
+    seq nothing 10 2
+      name ctxt ref Context 0 0
+      seq no type 10 2
+        call list of ref Listnode 10 2
+          name stringlist2list fn(sl: list of string): list of ref Listnode 11 1
+          seq no type 10 1
+            :: list of string 10 1
+              + string 10 1
+                + string 10 1
+                  const { string 1 0
+                  * string 0 0
+                    + int 13 1
+                      adr int 13 1
+                        name opts Options 0 0
+                      const carg (16) int 6 0
+                const } string 1 0
+              name argv list of string 0 0
+        seq no type 10 1
+          ! int 10 1
+            name interactive int 0 0
+ecom: 
+call string 10 2
+  name run fn(ctxt: self ref Context, args: list of ref Listnode, last: int): string 11 1
+  seq nothing 10 2
+    name ctxt ref Context 0 0
+    seq no type 10 2
+      call list of ref Listnode 10 2
+        name stringlist2list fn(sl: list of string): list of ref Listnode 11 1
+        seq no type 10 1
+          :: list of string 10 1
+            + string 10 1
+              + string 10 1
+                const { string 1 0
+                * string 0 0
+                  + int 13 1
+                    adr int 13 1
+                      name opts Options 0 0
+                    const carg (16) int 6 0
+              const } string 1 0
+            name argv list of string 0 0
+      seq no type 10 1
+        ! int 10 1
+          name interactive int 0 0
+ecom to: 
+name status string 0 0
+generate desc for big
+ecom: 
+call list of ref Listnode 10 2
+  name stringlist2list fn(sl: list of string): list of ref Listnode 11 1
+  seq no type 10 1
+    :: list of string 10 1
+      + string 10 1
+        + string 10 1
+          const { string 1 0
+          * string 0 0
+            + int 13 1
+              adr int 13 1
+                name opts Options 0 0
+              const carg (16) int 6 0
+        const } string 1 0
+      name argv list of string 0 0
+ecom to: 
+name .t12 list of ref Listnode 0 0
+generate desc for big
+ecom: 
+:: list of string 10 1
+  + string 10 1
+    + string 10 1
+      const { string 1 0
+      * string 0 0
+        + int 13 1
+          adr int 13 1
+            name opts Options 0 0
+          const carg (16) int 6 0
+    const } string 1 0
+  name argv list of string 0 0
+ecom to: 
+* list of string 8 0
+  + int 15 0
+    name .b14 big 0 0
+    const (64) int 6 0
+eacom: 
++ string 10 1
+  + string 10 1
+    const { string 1 0
+    * string 0 0
+      + int 13 1
+        adr int 13 1
+          name opts Options 0 0
+        const carg (16) int 6 0
+  const } string 1 0
+ecom: 
++ string 10 1
+  + string 10 1
+    const { string 1 0
+    * string 0 0
+      + int 13 1
+        adr int 13 1
+          name opts Options 0 0
+        const carg (16) int 6 0
+  const } string 1 0
+ecom to: 
+name .t15 string 0 0
+ecom: 
++ string 10 1
+  const { string 1 0
+  * string 0 0
+    + int 13 1
+      adr int 13 1
+        name opts Options 0 0
+      const carg (16) int 6 0
+ecom to: 
+name .t15 string 0 0
+ecom: 
+name argv list of string 0 0
+ecom to: 
+name .t16 list of string 0 0
+ecom: 
+= string 10 1
+  name .t15 string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name .t15 string 0 0
+ecom: 
+= list of string 10 1
+  name .t16 list of string 0 0
+  name nil list of string 1 0
+ecom: 
+name nil list of string 1 0
+ecom to: 
+name .t16 list of string 0 0
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b10 big 0 0
+    const (64) int 6 0
+ecom: 
+name .t12 list of ref Listnode 0 0
+ecom to: 
+* list of ref Listnode 8 0
+  + int 15 0
+    name .b10 big 0 0
+    const (72) int 6 0
+ecom: 
+= list of ref Listnode 10 1
+  name .t12 list of ref Listnode 0 0
+  name nil list of ref Listnode 1 0
+ecom: 
+name nil list of ref Listnode 1 0
+ecom to: 
+name .t12 list of ref Listnode 0 0
+ecom: 
+! int 10 1
+  name interactive int 0 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b10 big 0 0
+    const (80) int 6 0
+ecom: 
+raise nothing 10 1
+  + string 10 1
+    const fail: string 1 0
+    name status string 0 0
+eacom: 
++ string 10 1
+  const fail: string 1 0
+  name status string 0 0
+ecom: 
++ string 10 1
+  const fail: string 1 0
+  name status string 0 0
+ecom to: 
+name .t16 string 0 0
+ecom: 
+= string 10 1
+  name .t16 string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name .t16 string 0 0
+ecom: 
+used string 10 2
+  call string 10 2
+    name setstatus fn(ctxt: ref Context, val: string): string 11 1
+    seq no type 10 1
+      name ctxt ref Context 0 0
+      seq no type 10 1
+        name status string 0 0
+ecom: 
+call string 10 2
+  name setstatus fn(ctxt: ref Context, val: string): string 11 1
+  seq no type 10 1
+    name ctxt ref Context 0 0
+    seq no type 10 1
+      name status string 0 0
+ecom to: 
+name .t16 string 0 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b14 big 0 0
+    const (64) int 6 0
+ecom: 
+name status string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b14 big 0 0
+    const (72) int 6 0
+ecom: 
+= string 10 1
+  name .t16 string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name .t16 string 0 0
+ecom: 
+= string 10 1
+  name status string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name status string 0 0
+eacom: 
+call int 10 2
+  name isconsole fn(fd: ref Sys->FD): int 11 1
+  seq no type 10 2
+    call ref Sys->FD 10 2
+      -> fn(fd: int): ref Sys->FD 12 1
+        name sys Sys 1 0
+        name fildes nothing 11 1
+      seq no type 10 1
+        const (0) int 6 0
+ecom: 
+call int 10 2
+  name isconsole fn(fd: ref Sys->FD): int 11 1
+  seq no type 10 2
+    call ref Sys->FD 10 2
+      -> fn(fd: int): ref Sys->FD 12 1
+        name sys Sys 1 0
+        name fildes nothing 11 1
+      seq no type 10 1
+        const (0) int 6 0
+ecom to: 
+name .t13 int 0 0
+generate desc for big
+generate desc for ref Sys->FD
+ecom: 
+call ref Sys->FD 10 2
+  -> fn(fd: int): ref Sys->FD 12 1
+    name sys Sys 1 0
+    name fildes nothing 11 1
+  seq no type 10 1
+    const (0) int 6 0
+ecom to: 
+name .b17 ref Sys->FD 0 0
+generate desc for big
+ecom: 
+const (0) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b10 big 0 0
+    const (64) int 6 0
+ecom: 
+name .b17 ref Sys->FD 0 0
+ecom to: 
+* ref Sys->FD 8 0
+  + int 15 0
+    name .b14 big 0 0
+    const (64) int 6 0
+ecom: 
+= ref Sys->FD 10 1
+  name .b17 ref Sys->FD 0 0
+  name nil ref Sys->FD 1 0
+ecom: 
+name nil ref Sys->FD 1 0
+ecom to: 
+name .b17 ref Sys->FD 0 0
+ecom: 
+|= int 10 1
+  name interactive int 0 0
+  const INTERACTIVE (1) int 6 0
+ecom: 
+used int 10 2
+  call int 10 2
+    name setoptions fn(ctxt: self ref Context, flags: int, on: int): int 11 1
+    seq nothing 10 1
+      name ctxt ref Context 0 0
+      seq no type 10 1
+        name interactive int 0 0
+        seq no type 10 1
+          const (1) int 6 0
+ecom: 
+call int 10 2
+  name setoptions fn(ctxt: self ref Context, flags: int, on: int): int 11 1
+  seq nothing 10 1
+    name ctxt ref Context 0 0
+    seq no type 10 1
+      name interactive int 0 0
+      seq no type 10 1
+        const (1) int 6 0
+ecom to: 
+name .t13 int 0 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b14 big 0 0
+    const (64) int 6 0
+ecom: 
+name interactive int 0 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b14 big 0 0
+    const (72) int 6 0
+ecom: 
+const (1) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b14 big 0 0
+    const (76) int 6 0
+ecom: 
+call no type 10 2
+  name runfile fn(ctxt: ref Context, fd: ref Sys->FD, path: string, args: list of ref Listnode) 11 1
+  seq no type 10 2
+    name ctxt ref Context 0 0
+    seq no type 10 2
+      call ref Sys->FD 10 2
+        -> fn(fd: int): ref Sys->FD 12 1
+          name sys Sys 1 0
+          name fildes nothing 11 1
+        seq no type 10 1
+          const (0) int 6 0
+      seq no type 10 1
+        const stdin string 1 0
+        seq no type 10 1
+          name nil list of ref Listnode 1 0
+generate desc for big
+generate desc for ref Sys->FD
+ecom: 
+call ref Sys->FD 10 2
+  -> fn(fd: int): ref Sys->FD 12 1
+    name sys Sys 1 0
+    name fildes nothing 11 1
+  seq no type 10 1
+    const (0) int 6 0
+ecom to: 
+name .b17 ref Sys->FD 0 0
+generate desc for big
+ecom: 
+const (0) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b10 big 0 0
+    const (64) int 6 0
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b14 big 0 0
+    const (64) int 6 0
+ecom: 
+name .b17 ref Sys->FD 0 0
+ecom to: 
+* ref Sys->FD 8 0
+  + int 15 0
+    name .b14 big 0 0
+    const (72) int 6 0
+ecom: 
+= ref Sys->FD 10 1
+  name .b17 ref Sys->FD 0 0
+  name nil ref Sys->FD 1 0
+ecom: 
+name nil ref Sys->FD 1 0
+ecom to: 
+name .b17 ref Sys->FD 0 0
+ecom: 
+const stdin string 1 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b14 big 0 0
+    const (80) int 6 0
+ecom: 
+name nil list of ref Listnode 1 0
+ecom to: 
+* list of ref Listnode 8 0
+  + int 15 0
+    name .b14 big 0 0
+    const (88) int 6 0
+ecom: 
+used int 10 2
+  call int 10 2
+    name setoptions fn(ctxt: self ref Context, flags: int, on: int): int 11 1
+    seq nothing 10 1
+      name ctxt ref Context 0 0
+      seq no type 10 1
+        name interactive int 0 0
+        seq no type 10 1
+          const (1) int 6 0
+ecom: 
+call int 10 2
+  name setoptions fn(ctxt: self ref Context, flags: int, on: int): int 11 1
+  seq nothing 10 1
+    name ctxt ref Context 0 0
+    seq no type 10 1
+      name interactive int 0 0
+      seq no type 10 1
+        const (1) int 6 0
+ecom to: 
+name .t13 int 0 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b14 big 0 0
+    const (64) int 6 0
+ecom: 
+name interactive int 0 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b14 big 0 0
+    const (72) int 6 0
+ecom: 
+const (1) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b14 big 0 0
+    const (76) int 6 0
+ecom: 
+call no type 10 2
+  name runscript fn(ctxt: ref Context, path: string, args: list of ref Listnode, reporterr: int) 11 1
+  seq no type 10 2
+    name ctxt ref Context 0 0
+    seq no type 10 2
+      hd string 10 1
+        name argv list of string 0 0
+      seq no type 10 2
+        call list of ref Listnode 10 2
+          name stringlist2list fn(sl: list of string): list of ref Listnode 11 1
+          seq no type 10 1
+            tl list of string 10 1
+              name argv list of string 0 0
+        seq no type 10 1
+          const (1) int 6 0
+generate desc for big
+ecom: 
+call list of ref Listnode 10 2
+  name stringlist2list fn(sl: list of string): list of ref Listnode 11 1
+  seq no type 10 1
+    tl list of string 10 1
+      name argv list of string 0 0
+ecom to: 
+name .t16 list of ref Listnode 0 0
+generate desc for big
+ecom: 
+tl list of string 10 1
+  name argv list of string 0 0
+ecom to: 
+* list of string 8 0
+  + int 15 0
+    name .b10 big 0 0
+    const (64) int 6 0
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b14 big 0 0
+    const (64) int 6 0
+ecom: 
+hd string 10 1
+  name argv list of string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b14 big 0 0
+    const (72) int 6 0
+ecom: 
+name .t16 list of ref Listnode 0 0
+ecom to: 
+* list of ref Listnode 8 0
+  + int 15 0
+    name .b14 big 0 0
+    const (80) int 6 0
+ecom: 
+= list of ref Listnode 10 1
+  name .t16 list of ref Listnode 0 0
+  name nil list of ref Listnode 1 0
+ecom: 
+name nil list of ref Listnode 1 0
+ecom to: 
+name .t16 list of ref Listnode 0 0
+ecom: 
+const (1) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b14 big 0 0
+    const (88) int 6 0
+fn: init
+64: argument drawcontext ref Draw->Context ref 1
+72: argument argv list of string ref 24
+80: local interactive int ref 7
+84: local i int ref 6
+88: local c int ref 2
+92: local .t11 int ref 1
+96: local .t13 int ref 1
+104: local opts Options ref 12
+128: local .b10 big ref 11
+136: local ctxt ref Context ref 10
+144: local .b14 big ref 7
+152: local status string ref 4
+160: local arg string ref 3
+168: local .b17 ref Sys->FD ref 2
+176: local .t12 string ref 1
+184: local .t15 string ref 1
+192: local .t16 list of string ref 1
+generate desc for init
+descmap offset 0
+descmap drawcontext type ref Draw->Context offset 64 (d->offset=64 start=0) returns 64
+descmap argv type list of string offset 72 (d->offset=72 start=0) returns 72
+descmap interactive type int offset 80 (d->offset=80 start=0) returns -1
+descmap i type int offset 84 (d->offset=84 start=0) returns -1
+descmap c type int offset 88 (d->offset=88 start=0) returns -1
+descmap .t11 type int offset 92 (d->offset=92 start=0) returns -1
+descmap .t13 type int offset 96 (d->offset=96 start=0) returns -1
+descmap adt offset 104
+descmap offset 104
+descmap lflag type int offset 104 (d->offset=0 start=104) returns -1
+descmap nflag type int offset 108 (d->offset=4 start=104) returns -1
+descmap ctxtflags type int offset 112 (d->offset=8 start=104) returns -1
+descmap carg type string offset 120 (d->offset=16 start=104) returns 120
+descmap opts type Options offset 104 (d->offset=104 start=0) returns 120
+descmap .b10 type big offset 128 (d->offset=128 start=0) returns -1
+descmap ctxt type ref Context offset 136 (d->offset=136 start=0) returns 136
+descmap .b14 type big offset 144 (d->offset=144 start=0) returns -1
+descmap status type string offset 152 (d->offset=152 start=0) returns 152
+descmap arg type string offset 160 (d->offset=160 start=0) returns 160
+descmap .b17 type ref Sys->FD offset 168 (d->offset=168 start=0) returns 168
+descmap .t12 type string offset 176 (d->offset=176 start=0) returns 176
+descmap .t15 type string offset 184 (d->offset=184 start=0) returns 184
+descmap .t16 type list of string offset 192 (d->offset=192 start=0) returns 192
+fncom: parse 3 4b8580
+ecom: 
+call no type 10 1
+  name initialise fn() 11 1
+generate desc for big
+ecom: 
+= ref YYLEX 10 2
+  name lex ref YYLEX 0 0
+  call ref YYLEX 10 2
+    name initstring fn(s: string): ref YYLEX 11 1
+    seq no type 10 1
+      name s string 0 0
+ecom: 
+call ref YYLEX 10 2
+  name initstring fn(s: string): ref YYLEX 11 1
+  seq no type 10 1
+    name s string 0 0
+ecom to: 
+name lex ref YYLEX 0 0
+generate desc for big
+ecom: 
+name s string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b18 big 0 0
+    const (64) int 6 0
+ecom: 
+call (ref Node, string) 10 2
+  name doparse fn(l: ref YYLEX, prompt: string, showline: int): (ref Node, string) 11 1
+  seq no type 10 1
+    name lex ref YYLEX 0 0
+    seq no type 10 1
+      const  string 1 0
+      seq no type 10 1
+        const (0) int 6 0
+ecom to: 
+* (ref Node, string) 8 0
+  name .ret int 0 0
+generate desc for big
+ecom: 
+name lex ref YYLEX 0 0
+ecom to: 
+* ref YYLEX 8 0
+  + int 15 0
+    name .b18 big 0 0
+    const (64) int 6 0
+ecom: 
+const  string 1 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b18 big 0 0
+    const (72) int 6 0
+ecom: 
+const (0) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b18 big 0 0
+    const (80) int 6 0
+fn: parse
+64: argument s string ref 1
+72: local .b18 big ref 3
+80: local lex ref YYLEX ref 2
+generate desc for parse
+descmap offset 0
+descmap s type string offset 64 (d->offset=64 start=0) returns 64
+descmap .b18 type big offset 72 (d->offset=72 start=0) returns -1
+descmap lex type ref YYLEX offset 80 (d->offset=80 start=0) returns 80
+fncom: system 2 4b74e0
+ecom: 
+call no type 10 1
+  name initialise fn() 11 1
+generate desc for big
+ecom: 
+= (ref Node, string) 10 2
+  tuple (ref Node, string) 10 1
+    seq nothing 10 1
+      name n ref Node 0 0
+      seq nothing 10 1
+        name err string 0 0
+  call (ref Node, string) 10 2
+    name parse fn(s: string): (ref Node, string) 11 1
+    seq no type 10 1
+      name cmd string 0 0
+ecom: 
+call (ref Node, string) 10 2
+  name parse fn(s: string): (ref Node, string) 11 1
+  seq no type 10 1
+    name cmd string 0 0
+ecom to: 
+name n (ref Node, string) 0 0
+generate desc for big
+ecom: 
+name cmd string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b19 big 0 0
+    const (64) int 6 0
+ecom: 
+name err string 0 0
+ecom to: 
+* string 8 0
+  name .ret int 0 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* polymorphic type 8 0
+  name .ret int 0 0
+ecom: 
+call string 10 3
+  name run fn(ctxt: self ref Context, args: list of ref Listnode, last: int): string 11 1
+  seq nothing 10 3
+    call ref Context 10 2
+      name new fn(drawcontext: ref Draw->Context): ref Context 11 1
+      seq no type 10 1
+        name drawctxt ref Draw->Context 0 0
+    seq no type 10 2
+      :: list of ref Listnode 10 1
+        ref ref Listnode 10 1
+          tuple Listnode 10 1
+            seq no type 10 1
+              name n ref Node 0 0
+              seq no type 10 1
+                name nil polymorphic type 1 0
+        name nil polymorphic type 1 0
+      seq no type 10 1
+        const (0) int 6 0
+ecom to: 
+* string 8 0
+  name .ret int 0 0
+generate desc for big
+generate desc for ref Context
+generate desc for ref Context
+	desc	$-1,8,"80"
+ecom: 
+call ref Context 10 2
+  name new fn(drawcontext: ref Draw->Context): ref Context 11 1
+  seq no type 10 1
+    name drawctxt ref Draw->Context 0 0
+ecom to: 
+name .b20 ref Context 0 0
+generate desc for big
+ecom: 
+name drawctxt ref Draw->Context 0 0
+ecom to: 
+* ref Draw->Context 8 0
+  + int 15 0
+    name .b21 big 0 0
+    const (64) int 6 0
+ecom: 
+name .b20 ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b19 big 0 0
+    const (64) int 6 0
+ecom: 
+= ref Context 10 1
+  name .b20 ref Context 0 0
+  name nil ref Context 1 0
+ecom: 
+name nil ref Context 1 0
+ecom to: 
+name .b20 ref Context 0 0
+ecom: 
+:: list of ref Listnode 10 1
+  ref ref Listnode 10 1
+    tuple Listnode 10 1
+      seq no type 10 1
+        name n ref Node 0 0
+        seq no type 10 1
+          name nil polymorphic type 1 0
+  name nil polymorphic type 1 0
+ecom to: 
+* list of ref Listnode 8 0
+  + int 15 0
+    name .b19 big 0 0
+    const (72) int 6 0
+eacom: 
+ref ref Listnode 10 1
+  tuple Listnode 10 1
+    seq no type 10 1
+      name n ref Node 0 0
+      seq no type 10 1
+        name nil polymorphic type 1 0
+generate desc for ref Listnode
+generate desc for ref Listnode
+	desc	$-1,8,"80"
+ecom: 
+ref ref Listnode 10 1
+  tuple Listnode 10 1
+    seq no type 10 1
+      name n ref Node 0 0
+      seq no type 10 1
+        name nil polymorphic type 1 0
+ecom to: 
+name .b20 ref Listnode 0 0
+generate desc for ref Listnode
+generate desc for Listnode
+descmap adt offset 0
+descmap offset 0
+descmap cmd type ref Node offset 0 (d->offset=0 start=0) returns 0
+descmap word type string offset 8 (d->offset=8 start=0) returns 8
+generate desc for Listnode
+	desc	$-1,16,"c0"
+ecom: 
+tuple Listnode 10 1
+  seq no type 10 1
+    name n ref Node 0 0
+    seq no type 10 1
+      name nil polymorphic type 1 0
+ecom to: 
+* Listnode 8 0
+  name .b20 ref Listnode 0 0
+ecom: 
+name n ref Node 0 0
+ecom to: 
+* ref Node 8 0
+  + int 15 1
+    adr int 15 1
+      * Listnode 8 0
+        name .b20 ref Listnode 0 0
+    const (0) int 6 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* string 8 0
+  + int 15 1
+    adr int 15 1
+      * Listnode 8 0
+        name .b20 ref Listnode 0 0
+    const (8) int 6 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+name .t22 list of ref Listnode 0 0
+ecom: 
+= ref Listnode 10 1
+  name .b20 ref Listnode 0 0
+  name nil ref Listnode 1 0
+ecom: 
+name nil ref Listnode 1 0
+ecom to: 
+name .b20 ref Listnode 0 0
+ecom: 
+= list of ref Listnode 10 1
+  name .t22 list of ref Listnode 0 0
+  name nil list of ref Listnode 1 0
+ecom: 
+name nil list of ref Listnode 1 0
+ecom to: 
+name .t22 list of ref Listnode 0 0
+ecom: 
+const (0) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b19 big 0 0
+    const (80) int 6 0
+ecom: 
+= ref Node 10 1
+  * ref Node 0 0
+    adr int 13 1
+      name n (ref Node, string) 0 0
+  name nil ref Node 1 0
+ecom: 
+name nil ref Node 1 0
+ecom to: 
+* ref Node 0 0
+  adr int 13 1
+    name n (ref Node, string) 0 0
+ecom: 
+= string 10 1
+  * string 0 0
+    + int 13 1
+      adr int 13 1
+        name n (ref Node, string) 0 0
+      const t1 (8) int 6 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+* string 0 0
+  + int 13 1
+    adr int 13 1
+      name n (ref Node, string) 0 0
+    const t1 (8) int 6 0
+ecom: 
+= string 10 1
+  name err string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name err string 0 0
+ecom: 
+call string 10 2
+  name failurestatus fn(e: string): string 11 1
+  seq no type 10 1
+    name e string 0 0
+ecom to: 
+* string 8 0
+  name .ret int 0 0
+generate desc for big
+ecom: 
+name e string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b21 big 0 0
+    const (64) int 6 0
+fn: system
+64: argument drawctxt ref Draw->Context ref 1
+72: argument cmd string ref 1
+80: local e ref exception ref 2
+88: local .b19 big ref 3
+96: local .b20 ref Context ref 3
+104: local n ref Node ref 3
+112: local err string ref 3
+120: local .b21 big ref 2
+128: local .t22 list of ref Listnode ref 1
+generate desc for system
+descmap offset 0
+descmap drawctxt type ref Draw->Context offset 64 (d->offset=64 start=0) returns 64
+descmap cmd type string offset 72 (d->offset=72 start=0) returns 72
+descmap e type ref exception offset 80 (d->offset=80 start=0) returns 80
+descmap .b19 type big offset 88 (d->offset=88 start=0) returns -1
+descmap .b20 type ref Context offset 96 (d->offset=96 start=0) returns 96
+descmap n type ref Node offset 104 (d->offset=104 start=0) returns 104
+descmap err type string offset 112 (d->offset=112 start=0) returns 112
+descmap .b21 type big offset 120 (d->offset=120 start=0) returns -1
+descmap .t22 type list of ref Listnode offset 128 (d->offset=128 start=0) returns 128
+generate desc for e
+descmap offset 0
+descmap n type ref Node offset 104 (d->offset=104 start=0) returns 104
+descmap err type string offset 112 (d->offset=112 start=0) returns 112
+fncom: run 2 4b7d80
+ecom: 
+call no type 10 1
+  name initialise fn() 11 1
+generate desc for big
+ecom: 
+call string 10 3
+  name run fn(ctxt: self ref Context, args: list of ref Listnode, last: int): string 11 1
+  seq nothing 10 3
+    call ref Context 10 2
+      name new fn(drawcontext: ref Draw->Context): ref Context 11 1
+      seq no type 10 1
+        name drawctxt ref Draw->Context 0 0
+    seq no type 10 2
+      call list of ref Listnode 10 2
+        name stringlist2list fn(sl: list of string): list of ref Listnode 11 1
+        seq no type 10 1
+          name argv list of string 0 0
+      seq no type 10 1
+        const (0) int 6 0
+ecom to: 
+* string 8 0
+  name .ret int 0 0
+generate desc for big
+generate desc for ref Context
+ecom: 
+call ref Context 10 2
+  name new fn(drawcontext: ref Draw->Context): ref Context 11 1
+  seq no type 10 1
+    name drawctxt ref Draw->Context 0 0
+ecom to: 
+name .b24 ref Context 0 0
+generate desc for big
+ecom: 
+name drawctxt ref Draw->Context 0 0
+ecom to: 
+* ref Draw->Context 8 0
+  + int 15 0
+    name .b25 big 0 0
+    const (64) int 6 0
+ecom: 
+call list of ref Listnode 10 2
+  name stringlist2list fn(sl: list of string): list of ref Listnode 11 1
+  seq no type 10 1
+    name argv list of string 0 0
+ecom to: 
+name .t26 list of ref Listnode 0 0
+generate desc for big
+ecom: 
+name argv list of string 0 0
+ecom to: 
+* list of string 8 0
+  + int 15 0
+    name .b25 big 0 0
+    const (64) int 6 0
+ecom: 
+name .b24 ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b23 big 0 0
+    const (64) int 6 0
+ecom: 
+= ref Context 10 1
+  name .b24 ref Context 0 0
+  name nil ref Context 1 0
+ecom: 
+name nil ref Context 1 0
+ecom to: 
+name .b24 ref Context 0 0
+ecom: 
+name .t26 list of ref Listnode 0 0
+ecom to: 
+* list of ref Listnode 8 0
+  + int 15 0
+    name .b23 big 0 0
+    const (72) int 6 0
+ecom: 
+= list of ref Listnode 10 1
+  name .t26 list of ref Listnode 0 0
+  name nil list of ref Listnode 1 0
+ecom: 
+name nil list of ref Listnode 1 0
+ecom to: 
+name .t26 list of ref Listnode 0 0
+ecom: 
+const (0) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b23 big 0 0
+    const (80) int 6 0
+ecom: 
+call string 10 2
+  name failurestatus fn(e: string): string 11 1
+  seq no type 10 1
+    name e string 0 0
+ecom to: 
+* string 8 0
+  name .ret int 0 0
+generate desc for big
+ecom: 
+name e string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b25 big 0 0
+    const (64) int 6 0
+fn: run
+64: argument drawctxt ref Draw->Context ref 1
+72: argument argv list of string ref 1
+80: local e ref exception ref 2
+88: local .b25 big ref 3
+96: local .b23 big ref 2
+104: local .b24 ref Context ref 1
+112: local .t26 list of ref Listnode ref 1
+generate desc for run
+descmap offset 0
+descmap drawctxt type ref Draw->Context offset 64 (d->offset=64 start=0) returns 64
+descmap argv type list of string offset 72 (d->offset=72 start=0) returns 72
+descmap e type ref exception offset 80 (d->offset=80 start=0) returns 80
+descmap .b25 type big offset 88 (d->offset=88 start=0) returns -1
+descmap .b23 type big offset 96 (d->offset=96 start=0) returns -1
+descmap .b24 type ref Context offset 104 (d->offset=104 start=0) returns 104
+descmap .t26 type list of ref Listnode offset 112 (d->offset=112 start=0) returns 112
+fncom: isconsole 2 417d28
+ecom: 
+= (int, Sys->Dir) 10 2
+  tuple (int, Sys->Dir) 10 1
+    seq nothing 10 1
+      name ok1 int 0 0
+      seq nothing 10 1
+        name d1 Sys->Dir 0 0
+  call (int, Sys->Dir) 10 2
+    -> fn(fd: ref Sys->FD): (int, Sys->Dir) 12 1
+      name sys Sys 1 0
+      name fstat nothing 11 1
+    seq no type 10 1
+      name fd ref Sys->FD 0 0
+ecom: 
+call (int, Sys->Dir) 10 2
+  -> fn(fd: ref Sys->FD): (int, Sys->Dir) 12 1
+    name sys Sys 1 0
+    name fstat nothing 11 1
+  seq no type 10 1
+    name fd ref Sys->FD 0 0
+ecom to: 
+name ok1 (int, Sys->Dir) 0 0
+generate desc for big
+ecom: 
+name fd ref Sys->FD 0 0
+ecom to: 
+* ref Sys->FD 8 0
+  + int 15 0
+    name .b27 big 0 0
+    const (64) int 6 0
+ecom: 
+= (int, Sys->Dir) 10 2
+  tuple (int, Sys->Dir) 10 1
+    seq nothing 10 1
+      name ok2 int 0 0
+      seq nothing 10 1
+        name d2 Sys->Dir 0 0
+  call (int, Sys->Dir) 10 2
+    -> fn(s: string): (int, Sys->Dir) 12 1
+      name sys Sys 1 0
+      name stat nothing 11 1
+    seq no type 10 1
+      const /dev/cons string 1 0
+ecom: 
+call (int, Sys->Dir) 10 2
+  -> fn(s: string): (int, Sys->Dir) 12 1
+    name sys Sys 1 0
+    name stat nothing 11 1
+  seq no type 10 1
+    const /dev/cons string 1 0
+ecom to: 
+name ok2 (int, Sys->Dir) 0 0
+generate desc for big
+ecom: 
+const /dev/cons string 1 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b27 big 0 0
+    const (64) int 6 0
+ecom: 
+const (0) int 6 0
+ecom to: 
+* int 8 0
+  name .ret int 0 0
+ecom: 
+&& int 10 2
+  == int 10 1
+    * int 0 0
+      + int 13 1
+        adr int 13 1
+          name d1 Sys->Dir 0 0
+        const dtype (72) int 6 0
+    * int 0 0
+      + int 13 1
+        adr int 13 1
+          name d2 Sys->Dir 0 0
+        const dtype (72) int 6 0
+  == int 10 1
+    * big 0 0
+      + int 13 1
+        adr int 13 1
+          name d1 Sys->Dir 0 0
+        const (32) int 6 0
+    * big 0 0
+      + int 13 1
+        adr int 13 1
+          name d2 Sys->Dir 0 0
+        const (32) int 6 0
+ecom to: 
+* int 8 0
+  name .ret int 0 0
+fn: isconsole
+64: argument fd ref Sys->FD ref 1
+72: local ok1 int ref 2
+80: local d1 Sys->Dir ref 3
+160: local ok2 int ref 2
+168: local d2 Sys->Dir ref 3
+248: local .b27 big ref 2
+generate desc for isconsole
+descmap offset 0
+descmap fd type ref Sys->FD offset 64 (d->offset=64 start=0) returns 64
+descmap ok1 type int offset 72 (d->offset=72 start=0) returns -1
+descmap adt offset 80
+descmap offset 80
+descmap name type string offset 80 (d->offset=0 start=80) returns 80
+descmap uid type string offset 88 (d->offset=8 start=80) returns 88
+descmap gid type string offset 96 (d->offset=16 start=80) returns 96
+descmap muid type string offset 104 (d->offset=24 start=80) returns 104
+descmap adt offset 112
+descmap offset 112
+descmap path type big offset 112 (d->offset=0 start=112) returns -1
+descmap vers type int offset 120 (d->offset=8 start=112) returns -1
+descmap qtype type int offset 124 (d->offset=12 start=112) returns -1
+descmap qid type Sys->Qid offset 112 (d->offset=32 start=80) returns -1
+descmap mode type int offset 128 (d->offset=48 start=80) returns -1
+descmap atime type int offset 132 (d->offset=52 start=80) returns -1
+descmap mtime type int offset 136 (d->offset=56 start=80) returns -1
+descmap length type big offset 144 (d->offset=64 start=80) returns -1
+descmap dtype type int offset 152 (d->offset=72 start=80) returns -1
+descmap dev type int offset 156 (d->offset=76 start=80) returns -1
+descmap d1 type Sys->Dir offset 80 (d->offset=80 start=0) returns 104
+descmap ok2 type int offset 160 (d->offset=160 start=0) returns -1
+descmap adt offset 168
+descmap offset 168
+descmap name type string offset 168 (d->offset=0 start=168) returns 168
+descmap uid type string offset 176 (d->offset=8 start=168) returns 176
+descmap gid type string offset 184 (d->offset=16 start=168) returns 184
+descmap muid type string offset 192 (d->offset=24 start=168) returns 192
+descmap adt offset 200
+descmap offset 200
+descmap path type big offset 200 (d->offset=0 start=200) returns -1
+descmap vers type int offset 208 (d->offset=8 start=200) returns -1
+descmap qtype type int offset 212 (d->offset=12 start=200) returns -1
+descmap qid type Sys->Qid offset 200 (d->offset=32 start=168) returns -1
+descmap mode type int offset 216 (d->offset=48 start=168) returns -1
+descmap atime type int offset 220 (d->offset=52 start=168) returns -1
+descmap mtime type int offset 224 (d->offset=56 start=168) returns -1
+descmap length type big offset 232 (d->offset=64 start=168) returns -1
+descmap dtype type int offset 240 (d->offset=72 start=168) returns -1
+descmap dev type int offset 244 (d->offset=76 start=168) returns -1
+descmap d2 type Sys->Dir offset 168 (d->offset=168 start=0) returns 192
+descmap .b27 type big offset 248 (d->offset=248 start=0) returns -1
+fncom: runscript 4 417de8
+ecom: 
+= ref Sys->FD 10 2
+  name fd ref Sys->FD 0 0
+  call ref Sys->FD 10 2
+    -> fn(s: string, mode: int): ref Sys->FD 12 1
+      name sys Sys 1 0
+      name open nothing 11 1
+    seq no type 10 1
+      name path string 0 0
+      seq no type 10 1
+        const OREAD (0) int 6 0
+ecom: 
+call ref Sys->FD 10 2
+  -> fn(s: string, mode: int): ref Sys->FD 12 1
+    name sys Sys 1 0
+    name open nothing 11 1
+  seq no type 10 1
+    name path string 0 0
+    seq no type 10 1
+      const OREAD (0) int 6 0
+ecom to: 
+name fd ref Sys->FD 0 0
+generate desc for big
+ecom: 
+name path string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b28 big 0 0
+    const (64) int 6 0
+ecom: 
+const OREAD (0) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b28 big 0 0
+    const (72) int 6 0
+ecom: 
+call no type 10 2
+  name runfile fn(ctxt: ref Context, fd: ref Sys->FD, path: string, args: list of ref Listnode) 11 1
+  seq no type 10 1
+    name ctxt ref Context 0 0
+    seq no type 10 1
+      name fd ref Sys->FD 0 0
+      seq no type 10 1
+        name path string 0 0
+        seq no type 10 1
+          name args list of ref Listnode 0 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b28 big 0 0
+    const (64) int 6 0
+ecom: 
+name fd ref Sys->FD 0 0
+ecom to: 
+* ref Sys->FD 8 0
+  + int 15 0
+    name .b28 big 0 0
+    const (72) int 6 0
+ecom: 
+name path string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b28 big 0 0
+    const (80) int 6 0
+ecom: 
+name args list of ref Listnode 0 0
+ecom to: 
+* list of ref Listnode 8 0
+  + int 15 0
+    name .b28 big 0 0
+    const (88) int 6 0
+ecom: 
+call no type 10 2
+  name fail fn(ctxt: self ref Context, ename: string, err: string) 11 1
+  seq nothing 10 2
+    name ctxt ref Context 0 0
+    seq no type 10 2
+      const bad script path string 1 0
+      seq no type 10 2
+        call string 10 2
+          -> fn(s: string, nil: string, *): string 12 1
+            name sys Sys 1 0
+            name sprint nothing 11 1
+          seq no type 10 1
+            const sh: cannot open %s: %r string 1 0
+            seq no type 10 1
+              name path string 0 0
+generate desc for big
+ecom: 
+call string 10 2
+  -> fn(s: string, nil: string, *): string 12 1
+    name sys Sys 1 0
+    name sprint nothing 11 1
+  seq no type 10 1
+    const sh: cannot open %s: %r string 1 0
+    seq no type 10 1
+      name path string 0 0
+ecom to: 
+name .t29 string 0 0
+generate desc for Sys->sprint
+descmap offset 0
+descmap s type string offset 64 (d->offset=64 start=0) returns 64
+descmap type string offset 72 returns 72
+generate desc for big
+ecom: 
+const sh: cannot open %s: %r string 1 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b30 big 0 0
+    const (64) int 6 0
+ecom: 
+name path string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b30 big 0 0
+    const (72) int 6 0
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b28 big 0 0
+    const (64) int 6 0
+ecom: 
+const bad script path string 1 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b28 big 0 0
+    const (72) int 6 0
+ecom: 
+name .t29 string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b28 big 0 0
+    const (80) int 6 0
+ecom: 
+= string 10 1
+  name .t29 string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name .t29 string 0 0
+ecom: 
+= ref Sys->FD 10 1
+  name fd ref Sys->FD 0 0
+  name nil ref Sys->FD 1 0
+ecom: 
+name nil ref Sys->FD 1 0
+ecom to: 
+name fd ref Sys->FD 0 0
+ecom: 
+raise nothing 10 1
+  name .ex0 exception 0 0
+fn: runscript
+64: argument ctxt ref Context ref 2
+72: argument path string ref 3
+80: argument args list of ref Listnode ref 1
+88: argument reporterr int ref 2
+92: local .ex0 ref exception ref 1
+96: local .b28 big ref 3
+104: local fd ref Sys->FD ref 3
+112: local .b30 big ref 1
+120: local .t29 string ref 1
+generate desc for runscript
+descmap offset 0
+descmap ctxt type ref Context offset 64 (d->offset=64 start=0) returns 64
+descmap path type string offset 72 (d->offset=72 start=0) returns 72
+descmap args type list of ref Listnode offset 80 (d->offset=80 start=0) returns 80
+descmap reporterr type int offset 88 (d->offset=88 start=0) returns -1
+descmap .ex0 type ref exception offset 92 (d->offset=92 start=0) returns 96
+descmap .b28 type big offset 96 (d->offset=96 start=0) returns -1
+descmap fd type ref Sys->FD offset 104 (d->offset=104 start=0) returns 104
+descmap .b30 type big offset 112 (d->offset=112 start=0) returns -1
+descmap .t29 type string offset 120 (d->offset=120 start=0) returns 120
+generate desc for .ex0
+descmap offset 0
+descmap fd type ref Sys->FD offset 104 (d->offset=104 start=0) returns 104
+fncom: runfile 3 417ea8
+ecom: 
+call no type 10 2
+  name push fn(ctxt: self ref Context) 11 1
+  seq nothing 10 1
+    name ctxt ref Context 0 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b31 big 0 0
+    const (64) int 6 0
+ecom: 
+call no type 10 2
+  name setlocal fn(ctxt: self ref Context, name: string, val: list of ref Listnode) 11 1
+  seq nothing 10 2
+    name ctxt ref Context 0 0
+    seq no type 10 2
+      const 0 string 1 0
+      seq no type 10 2
+        call list of ref Listnode 10 2
+          name stringlist2list fn(sl: list of string): list of ref Listnode 11 1
+          seq no type 10 1
+            :: list of string 10 1
+              name path string 0 0
+              name nil polymorphic type 1 0
+generate desc for big
+ecom: 
+call list of ref Listnode 10 2
+  name stringlist2list fn(sl: list of string): list of ref Listnode 11 1
+  seq no type 10 1
+    :: list of string 10 1
+      name path string 0 0
+      name nil polymorphic type 1 0
+ecom to: 
+name .t32 list of ref Listnode 0 0
+generate desc for big
+ecom: 
+:: list of string 10 1
+  name path string 0 0
+  name nil polymorphic type 1 0
+ecom to: 
+* list of string 8 0
+  + int 15 0
+    name .b33 big 0 0
+    const (64) int 6 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+name .t34 list of string 0 0
+ecom: 
+= list of string 10 1
+  name .t34 list of string 0 0
+  name nil list of string 1 0
+ecom: 
+name nil list of string 1 0
+ecom to: 
+name .t34 list of string 0 0
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b31 big 0 0
+    const (64) int 6 0
+ecom: 
+const 0 string 1 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b31 big 0 0
+    const (72) int 6 0
+ecom: 
+name .t32 list of ref Listnode 0 0
+ecom to: 
+* list of ref Listnode 8 0
+  + int 15 0
+    name .b31 big 0 0
+    const (80) int 6 0
+ecom: 
+= list of ref Listnode 10 1
+  name .t32 list of ref Listnode 0 0
+  name nil list of ref Listnode 1 0
+ecom: 
+name nil list of ref Listnode 1 0
+ecom to: 
+name .t32 list of ref Listnode 0 0
+ecom: 
+call no type 10 2
+  name setlocal fn(ctxt: self ref Context, name: string, val: list of ref Listnode) 11 1
+  seq nothing 10 1
+    name ctxt ref Context 0 0
+    seq no type 10 1
+      const * string 1 0
+      seq no type 10 1
+        name args list of ref Listnode 0 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b33 big 0 0
+    const (64) int 6 0
+ecom: 
+const * string 1 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b33 big 0 0
+    const (72) int 6 0
+ecom: 
+name args list of ref Listnode 0 0
+ecom to: 
+* list of ref Listnode 8 0
+  + int 15 0
+    name .b33 big 0 0
+    const (80) int 6 0
+ecom: 
+= ref YYLEX 10 2
+  name lex ref YYLEX 0 0
+  call ref YYLEX 10 2
+    name initfile fn(fd: ref Sys->FD, path: string): ref YYLEX 11 1
+    seq no type 10 1
+      name fd ref Sys->FD 0 0
+      seq no type 10 1
+        name path string 0 0
+ecom: 
+call ref YYLEX 10 2
+  name initfile fn(fd: ref Sys->FD, path: string): ref YYLEX 11 1
+  seq no type 10 1
+    name fd ref Sys->FD 0 0
+    seq no type 10 1
+      name path string 0 0
+ecom to: 
+name lex ref YYLEX 0 0
+generate desc for big
+ecom: 
+name fd ref Sys->FD 0 0
+ecom to: 
+* ref Sys->FD 8 0
+  + int 15 0
+    name .b33 big 0 0
+    const (64) int 6 0
+ecom: 
+name path string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b33 big 0 0
+    const (72) int 6 0
+ecom: 
+= list of string 10 1
+  name prompt list of string 0 0
+    name lex ref YYLEX 0 0
+  :: list of string 10 1
+    const  string 1 0
+    :: list of string 10 1
+      const  string 1 0
+      name nil polymorphic type 1 0
+ecom: 
+:: list of string 10 1
+  const  string 1 0
+  :: list of string 10 1
+    const  string 1 0
+    name nil polymorphic type 1 0
+ecom to: 
+name prompt list of string 0 0
+  name lex ref YYLEX 0 0
+ecom: 
+:: list of string 10 1
+  const  string 1 0
+  name nil polymorphic type 1 0
+ecom to: 
+name .t34 list of string 0 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+name .t34 list of string 0 0
+ecom: 
+= list of string 10 1
+  name .t34 list of string 0 0
+  name nil list of string 1 0
+ecom: 
+name nil list of string 1 0
+ecom to: 
+name .t34 list of string 0 0
+ecom: 
+= int 10 1
+  name interactive int 0 0
+  & int 10 1
+    * int 10 1
+      + int 10 1
+        * ref Localenv 10 1
+          + int 10 1
+            * ref Environment 8 0
+              name ctxt ref Context 0 0
+            const localenv (24) int 6 0
+        const flags (16) int 6 0
+    const INTERACTIVE (1) int 6 0
+ecom: 
+& int 10 1
+  * int 10 1
+    + int 10 1
+      * ref Localenv 10 1
+        + int 10 1
+          * ref Environment 8 0
+            name ctxt ref Context 0 0
+          const localenv (24) int 6 0
+      const flags (16) int 6 0
+  const INTERACTIVE (1) int 6 0
+ecom to: 
+name interactive int 0 0
+eacom: 
+* int 10 1
+  + int 10 1
+    * ref Localenv 10 1
+      + int 10 1
+        * ref Environment 8 0
+          name ctxt ref Context 0 0
+        const localenv (24) int 6 0
+    const flags (16) int 6 0
+generate desc for ref Localenv
+generate desc for ref Localenv
+	desc	$-1,8,"80"
+ecom: 
+* ref Localenv 10 1
+  + int 10 1
+    * ref Environment 8 0
+      name ctxt ref Context 0 0
+    const localenv (24) int 6 0
+ecom to: 
+name .b35 ref Localenv 0 0
+eacom: 
+* ref Localenv 10 1
+  + int 10 1
+    * ref Environment 8 0
+      name ctxt ref Context 0 0
+    const localenv (24) int 6 0
+generate desc for ref Environment
+generate desc for ref Environment
+	desc	$-1,8,"80"
+ecom: 
+* ref Environment 8 0
+  name ctxt ref Context 0 0
+ecom to: 
+name .b35 ref Environment 0 0
+ecom: 
+= ref Localenv 10 1
+  name .b35 ref Localenv 0 0
+  name nil ref Localenv 1 0
+ecom: 
+name nil ref Localenv 1 0
+ecom to: 
+name .b35 ref Localenv 0 0
+ecom: 
+= list of string 10 2
+  name prompt list of string 0 0
+  call list of string 10 2
+    name list2stringlist fn(nl: list of ref Listnode): list of string 11 1
+    seq no type 10 2
+      call list of ref Listnode 10 2
+        name get fn(ctxt: self ref Context, name: string): list of ref Listnode 11 1
+        seq nothing 10 1
+          name ctxt ref Context 0 0
+          seq no type 10 1
+            const prompt string 1 0
+ecom: 
+call list of string 10 2
+  name list2stringlist fn(nl: list of ref Listnode): list of string 11 1
+  seq no type 10 2
+    call list of ref Listnode 10 2
+      name get fn(ctxt: self ref Context, name: string): list of ref Listnode 11 1
+      seq nothing 10 1
+        name ctxt ref Context 0 0
+        seq no type 10 1
+          const prompt string 1 0
+ecom to: 
+name prompt list of string 0 0
+generate desc for big
+ecom: 
+call list of ref Listnode 10 2
+  name get fn(ctxt: self ref Context, name: string): list of ref Listnode 11 1
+  seq nothing 10 1
+    name ctxt ref Context 0 0
+    seq no type 10 1
+      const prompt string 1 0
+ecom to: 
+name .t34 list of ref Listnode 0 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b31 big 0 0
+    const (64) int 6 0
+ecom: 
+const prompt string 1 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b31 big 0 0
+    const (72) int 6 0
+ecom: 
+name .t34 list of ref Listnode 0 0
+ecom to: 
+* list of ref Listnode 8 0
+  + int 15 0
+    name .b33 big 0 0
+    const (64) int 6 0
+ecom: 
+= list of ref Listnode 10 1
+  name .t34 list of ref Listnode 0 0
+  name nil list of ref Listnode 1 0
+ecom: 
+name nil list of ref Listnode 1 0
+ecom to: 
+name .t34 list of ref Listnode 0 0
+ecom: 
+= list of string 10 1
+  name prompt list of string 0 0
+  :: list of string 10 1
+    const ;  string 1 0
+    :: list of string 10 1
+      const  string 1 0
+      name nil polymorphic type 1 0
+ecom: 
+:: list of string 10 1
+  const ;  string 1 0
+  :: list of string 10 1
+    const  string 1 0
+    name nil polymorphic type 1 0
+ecom to: 
+name prompt list of string 0 0
+ecom: 
+:: list of string 10 1
+  const  string 1 0
+  name nil polymorphic type 1 0
+ecom to: 
+name .t34 list of string 0 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+name .t34 list of string 0 0
+ecom: 
+= list of string 10 1
+  name .t34 list of string 0 0
+  name nil list of string 1 0
+ecom: 
+name nil list of string 1 0
+ecom to: 
+name .t34 list of string 0 0
+ecom: 
+used int 10 2
+  call int 10 2
+    -> fn(fd: ref Sys->FD, s: string, nil: string, *): int 12 1
+      name sys Sys 1 0
+      name fprint nothing 11 1
+    seq no type 10 2
+      call ref Sys->FD 10 2
+        -> fn(fd: int): ref Sys->FD 12 1
+          name sys Sys 1 0
+          name fildes nothing 11 1
+        seq no type 10 1
+          const (2) int 6 0
+      seq no type 10 1
+        const %s string 1 0
+        seq no type 10 1
+          hd string 10 1
+            name prompt list of string 0 0
+ecom: 
+call int 10 2
+  -> fn(fd: ref Sys->FD, s: string, nil: string, *): int 12 1
+    name sys Sys 1 0
+    name fprint nothing 11 1
+  seq no type 10 2
+    call ref Sys->FD 10 2
+      -> fn(fd: int): ref Sys->FD 12 1
+        name sys Sys 1 0
+        name fildes nothing 11 1
+      seq no type 10 1
+        const (2) int 6 0
+    seq no type 10 1
+      const %s string 1 0
+      seq no type 10 1
+        hd string 10 1
+          name prompt list of string 0 0
+ecom to: 
+name .t36 int 0 0
+generate desc for Sys->fprint
+descmap offset 0
+descmap fd type ref Sys->FD offset 64 (d->offset=64 start=0) returns 64
+descmap s type string offset 72 (d->offset=72 start=0) returns 72
+descmap type string offset 80 returns 80
+generate desc for big
+generate desc for ref Sys->FD
+ecom: 
+call ref Sys->FD 10 2
+  -> fn(fd: int): ref Sys->FD 12 1
+    name sys Sys 1 0
+    name fildes nothing 11 1
+  seq no type 10 1
+    const (2) int 6 0
+ecom to: 
+name .b35 ref Sys->FD 0 0
+generate desc for big
+ecom: 
+const (2) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b31 big 0 0
+    const (64) int 6 0
+ecom: 
+name .b35 ref Sys->FD 0 0
+ecom to: 
+* ref Sys->FD 8 0
+  + int 15 0
+    name .b33 big 0 0
+    const (64) int 6 0
+ecom: 
+= ref Sys->FD 10 1
+  name .b35 ref Sys->FD 0 0
+  name nil ref Sys->FD 1 0
+ecom: 
+name nil ref Sys->FD 1 0
+ecom to: 
+name .b35 ref Sys->FD 0 0
+ecom: 
+const %s string 1 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b33 big 0 0
+    const (72) int 6 0
+ecom: 
+hd string 10 1
+  name prompt list of string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b33 big 0 0
+    const (80) int 6 0
+eacom: 
+tl list of string 10 1
+  name prompt list of string 0 0
+ecom: 
+tl list of string 10 1
+  name prompt list of string 0 0
+ecom to: 
+name .t34 list of string 0 0
+ecom: 
+= list of string 10 1
+  name .t34 list of string 0 0
+  name nil list of string 1 0
+ecom: 
+name nil list of string 1 0
+ecom to: 
+name .t34 list of string 0 0
+ecom: 
+= list of string 10 2
+  name prompt list of string 0 0
+  :: list of string 10 2
+    hd string 10 1
+      name prompt list of string 0 0
+    :: list of string 10 1
+      const  string 1 0
+      name nil polymorphic type 1 0
+ecom: 
+:: list of string 10 2
+  hd string 10 1
+    name prompt list of string 0 0
+  :: list of string 10 1
+    const  string 1 0
+    name nil polymorphic type 1 0
+ecom to: 
+name prompt list of string 0 0
+eacom: 
+hd string 10 1
+  name prompt list of string 0 0
+ecom: 
+hd string 10 1
+  name prompt list of string 0 0
+ecom to: 
+name .t34 string 0 0
+ecom: 
+:: list of string 10 1
+  const  string 1 0
+  name nil polymorphic type 1 0
+ecom to: 
+name .t32 list of string 0 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+name .t32 list of string 0 0
+ecom: 
+= string 10 1
+  name .t34 string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name .t34 string 0 0
+ecom: 
+= list of string 10 1
+  name .t32 list of string 0 0
+  name nil list of string 1 0
+ecom: 
+name nil list of string 1 0
+ecom to: 
+name .t32 list of string 0 0
+ecom: 
+= (ref Node, string) 10 2
+  tuple (ref Node, string) 10 1
+    seq nothing 10 1
+      name n ref Node 0 0
+      seq nothing 10 1
+        name err string 0 0
+  call (ref Node, string) 10 2
+    name doparse fn(l: ref YYLEX, prompt: string, showline: int): (ref Node, string) 11 1
+    seq no type 10 2
+      name lex ref YYLEX 0 0
+      seq no type 10 2
+        hd string 10 1
+          tl list of string 10 1
+            name prompt list of string 0 0
+        seq no type 10 1
+          ! int 10 1
+            name interactive int 0 0
+ecom: 
+call (ref Node, string) 10 2
+  name doparse fn(l: ref YYLEX, prompt: string, showline: int): (ref Node, string) 11 1
+  seq no type 10 2
+    name lex ref YYLEX 0 0
+    seq no type 10 2
+      hd string 10 1
+        tl list of string 10 1
+          name prompt list of string 0 0
+      seq no type 10 1
+        ! int 10 1
+          name interactive int 0 0
+ecom to: 
+name n (ref Node, string) 0 0
+generate desc for big
+ecom: 
+name lex ref YYLEX 0 0
+ecom to: 
+* ref YYLEX 8 0
+  + int 15 0
+    name .b33 big 0 0
+    const (64) int 6 0
+ecom: 
+hd string 10 1
+  tl list of string 10 1
+    name prompt list of string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b33 big 0 0
+    const (72) int 6 0
+eacom: 
+tl list of string 10 1
+  name prompt list of string 0 0
+ecom: 
+tl list of string 10 1
+  name prompt list of string 0 0
+ecom to: 
+name .t34 list of string 0 0
+ecom: 
+= list of string 10 1
+  name .t34 list of string 0 0
+  name nil list of string 1 0
+ecom: 
+name nil list of string 1 0
+ecom to: 
+name .t34 list of string 0 0
+ecom: 
+! int 10 1
+  name interactive int 0 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b33 big 0 0
+    const (80) int 6 0
+ecom: 
+used int 10 2
+  call int 10 2
+    -> fn(fd: ref Sys->FD, s: string, nil: string, *): int 12 1
+      name sys Sys 1 0
+      name fprint nothing 11 1
+    seq no type 10 2
+      call ref Sys->FD 10 2
+        -> fn(fd: int): ref Sys->FD 12 1
+          name sys Sys 1 0
+          name fildes nothing 11 1
+        seq no type 10 1
+          const (2) int 6 0
+      seq no type 10 1
+        const sh: %s
+ string 1 0
+        seq no type 10 1
+          name err string 0 0
+ecom: 
+call int 10 2
+  -> fn(fd: ref Sys->FD, s: string, nil: string, *): int 12 1
+    name sys Sys 1 0
+    name fprint nothing 11 1
+  seq no type 10 2
+    call ref Sys->FD 10 2
+      -> fn(fd: int): ref Sys->FD 12 1
+        name sys Sys 1 0
+        name fildes nothing 11 1
+      seq no type 10 1
+        const (2) int 6 0
+    seq no type 10 1
+      const sh: %s
+ string 1 0
+      seq no type 10 1
+        name err string 0 0
+ecom to: 
+name .t36 int 0 0
+generate desc for Sys->fprint
+descmap offset 0
+descmap fd type ref Sys->FD offset 64 (d->offset=64 start=0) returns 64
+descmap s type string offset 72 (d->offset=72 start=0) returns 72
+descmap type string offset 80 returns 80
+generate desc for big
+generate desc for ref Sys->FD
+ecom: 
+call ref Sys->FD 10 2
+  -> fn(fd: int): ref Sys->FD 12 1
+    name sys Sys 1 0
+    name fildes nothing 11 1
+  seq no type 10 1
+    const (2) int 6 0
+ecom to: 
+name .b35 ref Sys->FD 0 0
+generate desc for big
+ecom: 
+const (2) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b31 big 0 0
+    const (64) int 6 0
+ecom: 
+name .b35 ref Sys->FD 0 0
+ecom to: 
+* ref Sys->FD 8 0
+  + int 15 0
+    name .b33 big 0 0
+    const (64) int 6 0
+ecom: 
+= ref Sys->FD 10 1
+  name .b35 ref Sys->FD 0 0
+  name nil ref Sys->FD 1 0
+ecom: 
+name nil ref Sys->FD 1 0
+ecom to: 
+name .b35 ref Sys->FD 0 0
+ecom: 
+const sh: %s
+ string 1 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b33 big 0 0
+    const (72) int 6 0
+ecom: 
+name err string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b33 big 0 0
+    const (80) int 6 0
+ecom: 
+raise nothing 10 1
+  const fail:parse error string 1 0
+ecom: 
+= string 10 2
+  name laststatus string 0 0
+  call string 10 2
+    name walk fn(ctxt: ref Context, n: ref Node, last: int): string 11 1
+    seq no type 10 1
+      name ctxt ref Context 0 0
+      seq no type 10 1
+        name n ref Node 0 0
+        seq no type 10 1
+          const (0) int 6 0
+ecom: 
+call string 10 2
+  name walk fn(ctxt: ref Context, n: ref Node, last: int): string 11 1
+  seq no type 10 1
+    name ctxt ref Context 0 0
+    seq no type 10 1
+      name n ref Node 0 0
+      seq no type 10 1
+        const (0) int 6 0
+ecom to: 
+name laststatus string 0 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b33 big 0 0
+    const (64) int 6 0
+ecom: 
+name n ref Node 0 0
+ecom to: 
+* ref Node 8 0
+  + int 15 0
+    name .b33 big 0 0
+    const (72) int 6 0
+ecom: 
+const (0) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b33 big 0 0
+    const (80) int 6 0
+ecom: 
+= string 10 2
+  name laststatus string 0 0
+  call string 10 2
+    name failurestatus fn(e: string): string 11 1
+    seq no type 10 1
+      name e2 string 0 0
+ecom: 
+call string 10 2
+  name failurestatus fn(e: string): string 11 1
+  seq no type 10 1
+    name e2 string 0 0
+ecom to: 
+name laststatus string 0 0
+generate desc for big
+ecom: 
+name e2 string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b33 big 0 0
+    const (64) int 6 0
+ecom: 
+= string 10 2
+  name laststatus string 0 0
+  call string 10 2
+    name walk fn(ctxt: ref Context, n: ref Node, last: int): string 11 1
+    seq no type 10 1
+      name ctxt ref Context 0 0
+      seq no type 10 1
+        name n ref Node 0 0
+        seq no type 10 1
+          const (0) int 6 0
+ecom: 
+call string 10 2
+  name walk fn(ctxt: ref Context, n: ref Node, last: int): string 11 1
+  seq no type 10 1
+    name ctxt ref Context 0 0
+    seq no type 10 1
+      name n ref Node 0 0
+      seq no type 10 1
+        const (0) int 6 0
+ecom to: 
+name laststatus string 0 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b33 big 0 0
+    const (64) int 6 0
+ecom: 
+name n ref Node 0 0
+ecom to: 
+* ref Node 8 0
+  + int 15 0
+    name .b33 big 0 0
+    const (72) int 6 0
+ecom: 
+const (0) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b33 big 0 0
+    const (80) int 6 0
+ecom: 
+used string 10 2
+  call string 10 2
+    name setstatus fn(ctxt: ref Context, val: string): string 11 1
+    seq no type 10 1
+      name ctxt ref Context 0 0
+      seq no type 10 1
+        name laststatus string 0 0
+ecom: 
+call string 10 2
+  name setstatus fn(ctxt: ref Context, val: string): string 11 1
+  seq no type 10 1
+    name ctxt ref Context 0 0
+    seq no type 10 1
+      name laststatus string 0 0
+ecom to: 
+name .t34 string 0 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b33 big 0 0
+    const (64) int 6 0
+ecom: 
+name laststatus string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b33 big 0 0
+    const (72) int 6 0
+ecom: 
+= string 10 1
+  name .t34 string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name .t34 string 0 0
+eacom: 
+& int 10 1
+  * int 10 1
+    + int 10 1
+      * ref Localenv 10 1
+        + int 10 1
+          * ref Environment 8 0
+            name ctxt ref Context 0 0
+          const localenv (24) int 6 0
+      const flags (16) int 6 0
+  const ERROREXIT (8) int 6 0
+ecom: 
+& int 10 1
+  * int 10 1
+    + int 10 1
+      * ref Localenv 10 1
+        + int 10 1
+          * ref Environment 8 0
+            name ctxt ref Context 0 0
+          const localenv (24) int 6 0
+      const flags (16) int 6 0
+  const ERROREXIT (8) int 6 0
+ecom to: 
+name .t36 int 0 0
+eacom: 
+* int 10 1
+  + int 10 1
+    * ref Localenv 10 1
+      + int 10 1
+        * ref Environment 8 0
+          name ctxt ref Context 0 0
+        const localenv (24) int 6 0
+    const flags (16) int 6 0
+generate desc for ref Localenv
+ecom: 
+* ref Localenv 10 1
+  + int 10 1
+    * ref Environment 8 0
+      name ctxt ref Context 0 0
+    const localenv (24) int 6 0
+ecom to: 
+name .b35 ref Localenv 0 0
+eacom: 
+* ref Localenv 10 1
+  + int 10 1
+    * ref Environment 8 0
+      name ctxt ref Context 0 0
+    const localenv (24) int 6 0
+generate desc for ref Environment
+ecom: 
+* ref Environment 8 0
+  name ctxt ref Context 0 0
+ecom to: 
+name .b35 ref Environment 0 0
+ecom: 
+= ref Localenv 10 1
+  name .b35 ref Localenv 0 0
+  name nil ref Localenv 1 0
+ecom: 
+name nil ref Localenv 1 0
+ecom to: 
+name .b35 ref Localenv 0 0
+ecom: 
+= ref Node 10 1
+  * ref Node 0 0
+    adr int 13 1
+      name n (ref Node, string) 0 0
+  name nil ref Node 1 0
+ecom: 
+name nil ref Node 1 0
+ecom to: 
+* ref Node 0 0
+  adr int 13 1
+    name n (ref Node, string) 0 0
+ecom: 
+= string 10 1
+  * string 0 0
+    + int 13 1
+      adr int 13 1
+        name n (ref Node, string) 0 0
+      const t1 (8) int 6 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+* string 0 0
+  + int 13 1
+    adr int 13 1
+      name n (ref Node, string) 0 0
+    const t1 (8) int 6 0
+ecom: 
+= string 10 1
+  name err string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name err string 0 0
+ecom: 
+= ref Node 10 1
+  * ref Node 0 0
+    adr int 13 1
+      name n (ref Node, string) 0 0
+  name nil ref Node 1 0
+ecom: 
+name nil ref Node 1 0
+ecom to: 
+* ref Node 0 0
+  adr int 13 1
+    name n (ref Node, string) 0 0
+ecom: 
+= string 10 1
+  * string 0 0
+    + int 13 1
+      adr int 13 1
+        name n (ref Node, string) 0 0
+      const t1 (8) int 6 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+* string 0 0
+  + int 13 1
+    adr int 13 1
+      name n (ref Node, string) 0 0
+    const t1 (8) int 6 0
+ecom: 
+= string 10 1
+  name err string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name err string 0 0
+ecom: 
+raise nothing 10 1
+  + string 10 1
+    const fail: string 1 0
+    name laststatus string 0 0
+eacom: 
++ string 10 1
+  const fail: string 1 0
+  name laststatus string 0 0
+ecom: 
++ string 10 1
+  const fail: string 1 0
+  name laststatus string 0 0
+ecom to: 
+name .t34 string 0 0
+ecom: 
+= string 10 1
+  name .t34 string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name .t34 string 0 0
+ecom: 
+call no type 10 2
+  name pop fn(ctxt: self ref Context) 11 1
+  seq nothing 10 1
+    name ctxt ref Context 0 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b33 big 0 0
+    const (64) int 6 0
+ecom: 
+= string 10 1
+  name laststatus string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name laststatus string 0 0
+ecom: 
+= list of string 10 1
+  name prompt list of string 0 0
+  name nil list of string 1 0
+ecom: 
+name nil list of string 1 0
+ecom to: 
+name prompt list of string 0 0
+ecom: 
+= ref YYLEX 10 1
+  name lex ref YYLEX 0 0
+  name nil ref YYLEX 1 0
+ecom: 
+name nil ref YYLEX 1 0
+ecom to: 
+name lex ref YYLEX 0 0
+ecom: 
+call no type 10 2
+  name pop fn(ctxt: self ref Context) 11 1
+  seq nothing 10 1
+    name ctxt ref Context 0 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b33 big 0 0
+    const (64) int 6 0
+ecom: 
+raise nothing 10 1
+  name .ex1 exception 0 0
+fn: runfile
+64: argument ctxt ref Context ref 15
+72: argument fd ref Sys->FD ref 1
+80: argument path string ref 2
+88: argument args list of ref Listnode ref 1
+96: local interactive int ref 5
+100: local e2 ref exception ref 2
+104: local .ex1 ref exception ref 1
+108: local .t36 int ref 1
+112: local .b33 big ref 13
+120: local prompt list of string ref 9
+128: local laststatus string ref 7
+136: local .b35 ref Localenv ref 6
+144: local .b31 big ref 5
+152: local n ref Node ref 4
+160: local err string ref 3
+168: local lex ref YYLEX ref 3
+176: local .t32 list of ref Listnode ref 1
+184: local .t34 list of string ref 1
+generate desc for runfile
+descmap offset 0
+descmap ctxt type ref Context offset 64 (d->offset=64 start=0) returns 64
+descmap fd type ref Sys->FD offset 72 (d->offset=72 start=0) returns 72
+descmap path type string offset 80 (d->offset=80 start=0) returns 80
+descmap args type list of ref Listnode offset 88 (d->offset=88 start=0) returns 88
+descmap interactive type int offset 96 (d->offset=96 start=0) returns -1
+descmap e2 type ref exception offset 100 (d->offset=100 start=0) returns 104
+descmap .ex1 type ref exception offset 104 (d->offset=104 start=0) returns 104
+descmap .t36 type int offset 108 (d->offset=108 start=0) returns -1
+descmap .b33 type big offset 112 (d->offset=112 start=0) returns -1
+descmap prompt type list of string offset 120 (d->offset=120 start=0) returns 120
+descmap laststatus type string offset 128 (d->offset=128 start=0) returns 128
+descmap .b35 type ref Localenv offset 136 (d->offset=136 start=0) returns 136
+descmap .b31 type big offset 144 (d->offset=144 start=0) returns -1
+descmap n type ref Node offset 152 (d->offset=152 start=0) returns 152
+descmap err type string offset 160 (d->offset=160 start=0) returns 160
+descmap lex type ref YYLEX offset 168 (d->offset=168 start=0) returns 168
+descmap .t32 type list of ref Listnode offset 176 (d->offset=176 start=0) returns 176
+descmap .t34 type list of string offset 184 (d->offset=184 start=0) returns 184
+generate desc for .ex1
+descmap offset 0
+descmap n type ref Node offset 152 (d->offset=152 start=0) returns 152
+descmap err type string offset 160 (d->offset=160 start=0) returns 160
+descmap laststatus type string offset 128 (d->offset=128 start=0) returns 128
+descmap prompt type list of string offset 120 (d->offset=120 start=0) returns 120
+descmap lex type ref YYLEX offset 168 (d->offset=168 start=0) returns 168
+fncom: nonexistent 5 417f68
+ecom: 
+= array of string 10 2
+  name errs array of string 0 0
+  array array of string 10 2
+    const (2) int 6 0
+    seq array initializers 10 2
+      elem string 10 1
+        seq nothing 10 1
+          const (0) int 6 0
+        const does not exist string 1 0
+      seq no type 10 1
+        elem string 10 1
+          seq nothing 10 1
+            const (1) int 6 0
+          const directory entry not found string 1 0
+ecom: 
+array array of string 10 2
+  const (2) int 6 0
+  seq array initializers 10 2
+    elem string 10 1
+      seq nothing 10 1
+        const (0) int 6 0
+      const does not exist string 1 0
+    seq no type 10 1
+      elem string 10 1
+        seq nothing 10 1
+          const (1) int 6 0
+        const directory entry not found string 1 0
+ecom to: 
+name errs array of string 0 0
+generate desc for string
+generate desc for string
+	desc	$-1,8,"80"
+generate desc for big
+ecom: 
+indx big 10 0
+  name errs array of string 0 0
+  const (0) int 6 0
+ecom to: 
+name .b37 big 0 0
+ecom: 
+const does not exist string 1 0
+ecom to: 
+* string 8 0
+  name .b37 big 0 0
+ecom: 
+indx big 10 0
+  name errs array of string 0 0
+  const (1) int 6 0
+ecom to: 
+name .b37 big 0 0
+ecom: 
+const directory entry not found string 1 0
+ecom to: 
+* string 8 0
+  name .b37 big 0 0
+ecom: 
+= int 10 1
+  name i int 0 0
+  const (0) int 6 0
+ecom: 
+const (0) int 6 0
+ecom to: 
+name i int 0 0
+eacom: 
+len int 10 1
+  name errs array of string 0 0
+ecom: 
+len int 10 1
+  name errs array of string 0 0
+ecom to: 
+name .t38 int 0 0
+ecom: 
+= int 10 1
+  name j int 0 0
+  len int 10 1
+    * string 10 1
+      indx big 10 1
+        name errs array of string 0 0
+        name i int 0 0
+ecom: 
+len int 10 1
+  * string 10 1
+    indx big 10 1
+      name errs array of string 0 0
+      name i int 0 0
+ecom to: 
+name j int 0 0
+eacom: 
+* string 10 1
+  indx big 10 1
+    name errs array of string 0 0
+    name i int 0 0
+generate desc for big
+ecom: 
+indx big 10 1
+  name errs array of string 0 0
+  name i int 0 0
+ecom to: 
+name .b37 big 0 0
+eacom: 
+len int 10 1
+  name e string 0 0
+ecom: 
+len int 10 1
+  name e string 0 0
+ecom to: 
+name .t38 int 0 0
+eacom: 
+slice string 10 2
+  name e string 0 0
+  seq no type 10 2
+    - int 10 1
+      len int 10 1
+        name e string 0 0
+      name j int 0 0
+    nothing no type 10 1
+ecom: 
+slice string 10 2
+  name e string 0 0
+  seq no type 10 2
+    - int 10 1
+      len int 10 1
+        name e string 0 0
+      name j int 0 0
+    nothing no type 10 1
+ecom to: 
+name .t39 string 0 0
+ecom: 
+len int 10 1
+  name e string 0 0
+ecom to: 
+name .t38 int 0 0
+eacom: 
+- int 10 1
+  len int 10 1
+    name e string 0 0
+  name j int 0 0
+ecom: 
+- int 10 1
+  len int 10 1
+    name e string 0 0
+  name j int 0 0
+ecom to: 
+name .t40 int 0 0
+ecom: 
+len int 10 1
+  name e string 0 0
+ecom to: 
+name .t40 int 0 0
+ecom: 
+name e string 0 0
+ecom to: 
+name .t39 string 0 0
+ecom: 
+* string 10 1
+  indx big 10 1
+    name errs array of string 0 0
+    name i int 0 0
+ecom to: 
+name .t41 string 0 0
+eacom: 
+* string 10 1
+  indx big 10 1
+    name errs array of string 0 0
+    name i int 0 0
+generate desc for big
+ecom: 
+indx big 10 1
+  name errs array of string 0 0
+  name i int 0 0
+ecom to: 
+name .b37 big 0 0
+ecom: 
+= string 10 1
+  name .t39 string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name .t39 string 0 0
+ecom: 
+= string 10 1
+  name .t41 string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name .t41 string 0 0
+ecom: 
+const (1) int 6 0
+ecom to: 
+* int 8 0
+  name .ret int 0 0
+ecom: 
+++ int 10 1
+  name i int 0 0
+  const (1) int 6 0
+ecom: 
+const (0) int 6 0
+ecom to: 
+* int 8 0
+  name .ret int 0 0
+fn: nonexistent
+64: argument e string ref 3
+72: local i int ref 5
+76: local j int ref 3
+80: local .t38 int ref 1
+84: local .t40 int ref 1
+88: local errs array of string ref 4
+96: local .b37 big ref 3
+104: local .t39 string ref 1
+112: local .t41 string ref 1
+generate desc for nonexistent
+descmap offset 0
+descmap e type string offset 64 (d->offset=64 start=0) returns 64
+descmap i type int offset 72 (d->offset=72 start=0) returns -1
+descmap j type int offset 76 (d->offset=76 start=0) returns -1
+descmap .t38 type int offset 80 (d->offset=80 start=0) returns -1
+descmap .t40 type int offset 84 (d->offset=84 start=0) returns -1
+descmap errs type array of string offset 88 (d->offset=88 start=0) returns 88
+descmap .b37 type big offset 96 (d->offset=96 start=0) returns -1
+descmap .t39 type string offset 104 (d->offset=104 start=0) returns 104
+descmap .t41 type string offset 112 (d->offset=112 start=0) returns 112
+fncom: pipe2cmd 2 418028
+fncom: walk 5 4180e8
+ecom: 
+= string 10 2
+  name status string 0 0
+  call string 10 2
+    name walk fn(ctxt: ref Context, n: ref Node, last: int): string 11 1
+    seq no type 10 1
+      name ctxt ref Context 0 0
+      seq no type 10 1
+        * ref Node 8 0
+          + int 15 1
+            name n ref Node 0 0
+            const left (8) int 6 0
+        seq no type 10 1
+          const (0) int 6 0
+ecom: 
+call string 10 2
+  name walk fn(ctxt: ref Context, n: ref Node, last: int): string 11 1
+  seq no type 10 1
+    name ctxt ref Context 0 0
+    seq no type 10 1
+      * ref Node 8 0
+        + int 15 1
+          name n ref Node 0 0
+          const left (8) int 6 0
+      seq no type 10 1
+        const (0) int 6 0
+ecom to: 
+name status string 0 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b42 big 0 0
+    const (64) int 6 0
+ecom: 
+* ref Node 8 0
+  + int 15 1
+    name n ref Node 0 0
+    const left (8) int 6 0
+ecom to: 
+* ref Node 8 0
+  + int 15 0
+    name .b42 big 0 0
+    const (72) int 6 0
+ecom: 
+const (0) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b42 big 0 0
+    const (80) int 6 0
+eacom: 
+& int 10 1
+  * int 10 1
+    + int 10 1
+      * ref Localenv 10 1
+        + int 10 1
+          * ref Environment 8 0
+            name ctxt ref Context 0 0
+          const localenv (24) int 6 0
+      const flags (16) int 6 0
+  const ERROREXIT (8) int 6 0
+ecom: 
+& int 10 1
+  * int 10 1
+    + int 10 1
+      * ref Localenv 10 1
+        + int 10 1
+          * ref Environment 8 0
+            name ctxt ref Context 0 0
+          const localenv (24) int 6 0
+      const flags (16) int 6 0
+  const ERROREXIT (8) int 6 0
+ecom to: 
+name .t43 int 0 0
+eacom: 
+* int 10 1
+  + int 10 1
+    * ref Localenv 10 1
+      + int 10 1
+        * ref Environment 8 0
+          name ctxt ref Context 0 0
+        const localenv (24) int 6 0
+    const flags (16) int 6 0
+generate desc for ref Localenv
+ecom: 
+* ref Localenv 10 1
+  + int 10 1
+    * ref Environment 8 0
+      name ctxt ref Context 0 0
+    const localenv (24) int 6 0
+ecom to: 
+name .b44 ref Localenv 0 0
+eacom: 
+* ref Localenv 10 1
+  + int 10 1
+    * ref Environment 8 0
+      name ctxt ref Context 0 0
+    const localenv (24) int 6 0
+generate desc for ref Environment
+ecom: 
+* ref Environment 8 0
+  name ctxt ref Context 0 0
+ecom to: 
+name .b44 ref Environment 0 0
+ecom: 
+= ref Localenv 10 1
+  name .b44 ref Localenv 0 0
+  name nil ref Localenv 1 0
+ecom: 
+name nil ref Localenv 1 0
+ecom to: 
+name .b44 ref Localenv 0 0
+ecom: 
+raise nothing 10 1
+  + string 10 1
+    const fail: string 1 0
+    name status string 0 0
+eacom: 
++ string 10 1
+  const fail: string 1 0
+  name status string 0 0
+ecom: 
++ string 10 1
+  const fail: string 1 0
+  name status string 0 0
+ecom to: 
+name .t45 string 0 0
+ecom: 
+= string 10 1
+  name .t45 string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name .t45 string 0 0
+ecom: 
+used string 10 2
+  call string 10 2
+    name setstatus fn(ctxt: ref Context, val: string): string 11 1
+    seq no type 10 1
+      name ctxt ref Context 0 0
+      seq no type 10 1
+        name status string 0 0
+ecom: 
+call string 10 2
+  name setstatus fn(ctxt: ref Context, val: string): string 11 1
+  seq no type 10 1
+    name ctxt ref Context 0 0
+    seq no type 10 1
+      name status string 0 0
+ecom to: 
+name .t45 string 0 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b42 big 0 0
+    const (64) int 6 0
+ecom: 
+name status string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b42 big 0 0
+    const (72) int 6 0
+ecom: 
+= string 10 1
+  name .t45 string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name .t45 string 0 0
+ecom: 
+= ref Node 10 1
+  name n ref Node 0 0
+  * ref Node 8 0
+    + int 15 1
+      name n ref Node 0 0
+      const right (16) int 6 0
+ecom: 
+* ref Node 8 0
+  + int 15 1
+    name n ref Node 0 0
+    const right (16) int 6 0
+ecom to: 
+name n ref Node 0 0
+ecom: 
+= string 10 1
+  name status string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name status string 0 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* polymorphic type 8 0
+  name .ret int 0 0
+ecom: 
+call string 10 2
+  name waitfor fn(ctxt: ref Context, pids: list of int): string 11 1
+  seq no type 10 2
+    name ctxt ref Context 0 0
+    seq no type 10 2
+      call list of int 10 2
+        name walkpipeline fn(ctxt: ref Context, n: ref Node, wrpipe: ref Sys->FD, wfdno: int): list of int 11 1
+        seq no type 10 1
+          name ctxt ref Context 0 0
+          seq no type 10 1
+            name n ref Node 0 0
+            seq no type 10 1
+              name nil ref Sys->FD 1 0
+              seq no type 10 1
+                const (-1) int 6 0
+ecom to: 
+* string 8 0
+  name .ret int 0 0
+generate desc for big
+ecom: 
+call list of int 10 2
+  name walkpipeline fn(ctxt: ref Context, n: ref Node, wrpipe: ref Sys->FD, wfdno: int): list of int 11 1
+  seq no type 10 1
+    name ctxt ref Context 0 0
+    seq no type 10 1
+      name n ref Node 0 0
+      seq no type 10 1
+        name nil ref Sys->FD 1 0
+        seq no type 10 1
+          const (-1) int 6 0
+ecom to: 
+name .t45 list of int 0 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b46 big 0 0
+    const (64) int 6 0
+ecom: 
+name n ref Node 0 0
+ecom to: 
+* ref Node 8 0
+  + int 15 0
+    name .b46 big 0 0
+    const (72) int 6 0
+ecom: 
+name nil ref Sys->FD 1 0
+ecom to: 
+* ref Sys->FD 8 0
+  + int 15 0
+    name .b46 big 0 0
+    const (80) int 6 0
+ecom: 
+const (-1) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b46 big 0 0
+    const (88) int 6 0
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b42 big 0 0
+    const (64) int 6 0
+ecom: 
+name .t45 list of int 0 0
+ecom to: 
+* list of int 8 0
+  + int 15 0
+    name .b42 big 0 0
+    const (72) int 6 0
+ecom: 
+= list of int 10 1
+  name .t45 list of int 0 0
+  name nil list of int 1 0
+ecom: 
+name nil list of int 1 0
+ecom to: 
+name .t45 list of int 0 0
+ecom: 
+used list of ref Listnode 10 2
+  call list of ref Listnode 10 2
+    name assign fn(ctxt: ref Context, n: ref Node): list of ref Listnode 11 1
+    seq no type 10 1
+      name ctxt ref Context 0 0
+      seq no type 10 1
+        name n ref Node 0 0
+ecom: 
+call list of ref Listnode 10 2
+  name assign fn(ctxt: ref Context, n: ref Node): list of ref Listnode 11 1
+  seq no type 10 1
+    name ctxt ref Context 0 0
+    seq no type 10 1
+      name n ref Node 0 0
+ecom to: 
+name .t45 list of ref Listnode 0 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b46 big 0 0
+    const (64) int 6 0
+ecom: 
+name n ref Node 0 0
+ecom to: 
+* ref Node 8 0
+  + int 15 0
+    name .b46 big 0 0
+    const (72) int 6 0
+ecom: 
+= list of ref Listnode 10 1
+  name .t45 list of ref Listnode 0 0
+  name nil list of ref Listnode 1 0
+ecom: 
+name nil list of ref Listnode 1 0
+ecom to: 
+name .t45 list of ref Listnode 0 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* polymorphic type 8 0
+  name .ret int 0 0
+ecom: 
+= int 10 1
+  name bg int 0 0
+  const (0) int 6 0
+ecom: 
+const (0) int 6 0
+ecom to: 
+name bg int 0 0
+ecom: 
+= int 10 1
+  name bg int 0 0
+  const (1) int 6 0
+ecom: 
+const (1) int 6 0
+ecom to: 
+name bg int 0 0
+ecom: 
+= ref Node 10 3
+  name n ref Node 0 0
+  if ref Node 10 3
+    || int 10 2
+      == int 10 1
+        * ref Node 8 0
+          + int 15 1
+            name n ref Node 0 0
+            const left (8) int 6 0
+        name nil ref Node 1 0
+      != int 10 1
+        * int 10 1
+          * ref Node 8 0
+            + int 15 1
+              name n ref Node 0 0
+              const left (8) int 6 0
+        const n_PIPE (9) int 6 0
+    seq ref Node 10 2
+      * ref Node 8 0
+        + int 15 1
+          name n ref Node 0 0
+          const left (8) int 6 0
+      ref ref Node 10 2
+        tuple Node 10 2
+          seq no type 10 2
+            const n_ADJ (10) int 6 0
+            seq no type 10 2
+              ref ref Node 10 1
+                tuple Node 10 1
+                  seq no type 10 1
+                    const n_BLOCK (0) int 6 0
+                    seq no type 10 1
+                      * ref Node 8 0
+                        + int 15 1
+                          name n ref Node 0 0
+                          const left (8) int 6 0
+                      seq no type 10 1
+                        name nil ref Node 1 0
+                        seq no type 10 1
+                          name nil polymorphic type 1 0
+                          seq no type 10 1
+                            name nil polymorphic type 1 0
+              seq no type 10 2
+                ref ref Node 10 2
+                  tuple Node 10 2
+                    seq no type 10 2
+                      const n_VAR (1) int 6 0
+                      seq no type 10 2
+                        ref ref Node 10 1
+                          tuple Node 10 1
+                            seq no type 10 1
+                              const n_WORD (11) int 6 0
+                              seq no type 10 1
+                                name nil polymorphic type 1 0
+                                seq no type 10 1
+                                  name nil polymorphic type 1 0
+                                  seq no type 10 1
+                                    const * string 1 0
+                                    seq no type 10 1
+                                      name nil polymorphic type 1 0
+                        seq no type 10 1
+                          name nil ref Node 1 0
+                          seq no type 10 1
+                            name nil polymorphic type 1 0
+                            seq no type 10 1
+                              name nil polymorphic type 1 0
+                seq no type 10 1
+                  name nil polymorphic type 1 0
+                  seq no type 10 1
+                    name nil polymorphic type 1 0
+ecom: 
+if ref Node 10 3
+  || int 10 2
+    == int 10 1
+      * ref Node 8 0
+        + int 15 1
+          name n ref Node 0 0
+          const left (8) int 6 0
+      name nil ref Node 1 0
+    != int 10 1
+      * int 10 1
+        * ref Node 8 0
+          + int 15 1
+            name n ref Node 0 0
+            const left (8) int 6 0
+      const n_PIPE (9) int 6 0
+  seq ref Node 10 2
+    * ref Node 8 0
+      + int 15 1
+        name n ref Node 0 0
+        const left (8) int 6 0
+    ref ref Node 10 2
+      tuple Node 10 2
+        seq no type 10 2
+          const n_ADJ (10) int 6 0
+          seq no type 10 2
+            ref ref Node 10 1
+              tuple Node 10 1
+                seq no type 10 1
+                  const n_BLOCK (0) int 6 0
+                  seq no type 10 1
+                    * ref Node 8 0
+                      + int 15 1
+                        name n ref Node 0 0
+                        const left (8) int 6 0
+                    seq no type 10 1
+                      name nil ref Node 1 0
+                      seq no type 10 1
+                        name nil polymorphic type 1 0
+                        seq no type 10 1
+                          name nil polymorphic type 1 0
+            seq no type 10 2
+              ref ref Node 10 2
+                tuple Node 10 2
+                  seq no type 10 2
+                    const n_VAR (1) int 6 0
+                    seq no type 10 2
+                      ref ref Node 10 1
+                        tuple Node 10 1
+                          seq no type 10 1
+                            const n_WORD (11) int 6 0
+                            seq no type 10 1
+                              name nil polymorphic type 1 0
+                              seq no type 10 1
+                                name nil polymorphic type 1 0
+                                seq no type 10 1
+                                  const * string 1 0
+                                  seq no type 10 1
+                                    name nil polymorphic type 1 0
+                      seq no type 10 1
+                        name nil ref Node 1 0
+                        seq no type 10 1
+                          name nil polymorphic type 1 0
+                          seq no type 10 1
+                            name nil polymorphic type 1 0
+              seq no type 10 1
+                name nil polymorphic type 1 0
+                seq no type 10 1
+                  name nil polymorphic type 1 0
+ecom to: 
+name n ref Node 0 0
+eacom: 
+* int 10 1
+  * ref Node 8 0
+    + int 15 1
+      name n ref Node 0 0
+      const left (8) int 6 0
+generate desc for ref Node
+generate desc for ref Node
+	desc	$-1,8,"80"
+ecom: 
+* ref Node 8 0
+  + int 15 1
+    name n ref Node 0 0
+    const left (8) int 6 0
+ecom to: 
+name .b44 ref Node 0 0
+ecom: 
+= ref Node 10 1
+  name .b44 ref Node 0 0
+  name nil ref Node 1 0
+ecom: 
+name nil ref Node 1 0
+ecom to: 
+name .b44 ref Node 0 0
+ecom: 
+* ref Node 8 0
+  + int 15 1
+    name n ref Node 0 0
+    const left (8) int 6 0
+ecom to: 
+name n ref Node 0 0
+ecom: 
+ref ref Node 10 2
+  tuple Node 10 2
+    seq no type 10 2
+      const n_ADJ (10) int 6 0
+      seq no type 10 2
+        ref ref Node 10 1
+          tuple Node 10 1
+            seq no type 10 1
+              const n_BLOCK (0) int 6 0
+              seq no type 10 1
+                * ref Node 8 0
+                  + int 15 1
+                    name n ref Node 0 0
+                    const left (8) int 6 0
+                seq no type 10 1
+                  name nil ref Node 1 0
+                  seq no type 10 1
+                    name nil polymorphic type 1 0
+                    seq no type 10 1
+                      name nil polymorphic type 1 0
+        seq no type 10 2
+          ref ref Node 10 2
+            tuple Node 10 2
+              seq no type 10 2
+                const n_VAR (1) int 6 0
+                seq no type 10 2
+                  ref ref Node 10 1
+                    tuple Node 10 1
+                      seq no type 10 1
+                        const n_WORD (11) int 6 0
+                        seq no type 10 1
+                          name nil polymorphic type 1 0
+                          seq no type 10 1
+                            name nil polymorphic type 1 0
+                            seq no type 10 1
+                              const * string 1 0
+                              seq no type 10 1
+                                name nil polymorphic type 1 0
+                  seq no type 10 1
+                    name nil ref Node 1 0
+                    seq no type 10 1
+                      name nil polymorphic type 1 0
+                      seq no type 10 1
+                        name nil polymorphic type 1 0
+          seq no type 10 1
+            name nil polymorphic type 1 0
+            seq no type 10 1
+              name nil polymorphic type 1 0
+ecom to: 
+name n ref Node 0 0
+generate desc for ref Node
+generate desc for ref Node
+	desc	$-1,8,"80"
+generate desc for Node
+descmap adt offset 0
+descmap offset 0
+descmap ntype type int offset 0 (d->offset=0 start=0) returns -1
+descmap left type ref Node offset 8 (d->offset=8 start=0) returns 8
+descmap right type ref Node offset 16 (d->offset=16 start=0) returns 16
+descmap word type string offset 24 (d->offset=24 start=0) returns 24
+descmap redir type ref Redir offset 32 (d->offset=32 start=0) returns 32
+generate desc for Node
+	desc	$-1,40,"78"
+ecom: 
+tuple Node 10 2
+  seq no type 10 2
+    const n_ADJ (10) int 6 0
+    seq no type 10 2
+      ref ref Node 10 1
+        tuple Node 10 1
+          seq no type 10 1
+            const n_BLOCK (0) int 6 0
+            seq no type 10 1
+              * ref Node 8 0
+                + int 15 1
+                  name n ref Node 0 0
+                  const left (8) int 6 0
+              seq no type 10 1
+                name nil ref Node 1 0
+                seq no type 10 1
+                  name nil polymorphic type 1 0
+                  seq no type 10 1
+                    name nil polymorphic type 1 0
+      seq no type 10 2
+        ref ref Node 10 2
+          tuple Node 10 2
+            seq no type 10 2
+              const n_VAR (1) int 6 0
+              seq no type 10 2
+                ref ref Node 10 1
+                  tuple Node 10 1
+                    seq no type 10 1
+                      const n_WORD (11) int 6 0
+                      seq no type 10 1
+                        name nil polymorphic type 1 0
+                        seq no type 10 1
+                          name nil polymorphic type 1 0
+                          seq no type 10 1
+                            const * string 1 0
+                            seq no type 10 1
+                              name nil polymorphic type 1 0
+                seq no type 10 1
+                  name nil ref Node 1 0
+                  seq no type 10 1
+                    name nil polymorphic type 1 0
+                    seq no type 10 1
+                      name nil polymorphic type 1 0
+        seq no type 10 1
+          name nil polymorphic type 1 0
+          seq no type 10 1
+            name nil polymorphic type 1 0
+ecom to: 
+* Node 8 0
+  name .b44 ref Node 0 0
+ecom: 
+const n_ADJ (10) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .b44 ref Node 0 0
+    const (0) int 6 0
+ecom: 
+ref ref Node 10 1
+  tuple Node 10 1
+    seq no type 10 1
+      const n_BLOCK (0) int 6 0
+      seq no type 10 1
+        * ref Node 8 0
+          + int 15 1
+            name n ref Node 0 0
+            const left (8) int 6 0
+        seq no type 10 1
+          name nil ref Node 1 0
+          seq no type 10 1
+            name nil polymorphic type 1 0
+            seq no type 10 1
+              name nil polymorphic type 1 0
+ecom to: 
+* ref Node 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .b44 ref Node 0 0
+    const (8) int 6 0
+generate desc for ref Node
+generate desc for ref Node
+	desc	$-1,8,"80"
+generate desc for Node
+ecom: 
+tuple Node 10 1
+  seq no type 10 1
+    const n_BLOCK (0) int 6 0
+    seq no type 10 1
+      * ref Node 8 0
+        + int 15 1
+          name n ref Node 0 0
+          const left (8) int 6 0
+      seq no type 10 1
+        name nil ref Node 1 0
+        seq no type 10 1
+          name nil polymorphic type 1 0
+          seq no type 10 1
+            name nil polymorphic type 1 0
+ecom to: 
+* Node 8 0
+  name .b47 ref Node 0 0
+ecom: 
+const n_BLOCK (0) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .b47 ref Node 0 0
+    const (0) int 6 0
+ecom: 
+* ref Node 8 0
+  + int 15 1
+    name n ref Node 0 0
+    const left (8) int 6 0
+ecom to: 
+* ref Node 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .b47 ref Node 0 0
+    const (8) int 6 0
+ecom: 
+name nil ref Node 1 0
+ecom to: 
+* ref Node 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .b47 ref Node 0 0
+    const (16) int 6 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* string 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .b47 ref Node 0 0
+    const (24) int 6 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* ref Redir 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .b47 ref Node 0 0
+    const (32) int 6 0
+ecom: 
+= ref Node 10 1
+  name .b47 ref Node 0 0
+  name nil ref Node 1 0
+ecom: 
+name nil ref Node 1 0
+ecom to: 
+name .b47 ref Node 0 0
+ecom: 
+ref ref Node 10 2
+  tuple Node 10 2
+    seq no type 10 2
+      const n_VAR (1) int 6 0
+      seq no type 10 2
+        ref ref Node 10 1
+          tuple Node 10 1
+            seq no type 10 1
+              const n_WORD (11) int 6 0
+              seq no type 10 1
+                name nil polymorphic type 1 0
+                seq no type 10 1
+                  name nil polymorphic type 1 0
+                  seq no type 10 1
+                    const * string 1 0
+                    seq no type 10 1
+                      name nil polymorphic type 1 0
+        seq no type 10 1
+          name nil ref Node 1 0
+          seq no type 10 1
+            name nil polymorphic type 1 0
+            seq no type 10 1
+              name nil polymorphic type 1 0
+ecom to: 
+* ref Node 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .b44 ref Node 0 0
+    const (16) int 6 0
+generate desc for ref Node
+generate desc for Node
+ecom: 
+tuple Node 10 2
+  seq no type 10 2
+    const n_VAR (1) int 6 0
+    seq no type 10 2
+      ref ref Node 10 1
+        tuple Node 10 1
+          seq no type 10 1
+            const n_WORD (11) int 6 0
+            seq no type 10 1
+              name nil polymorphic type 1 0
+              seq no type 10 1
+                name nil polymorphic type 1 0
+                seq no type 10 1
+                  const * string 1 0
+                  seq no type 10 1
+                    name nil polymorphic type 1 0
+      seq no type 10 1
+        name nil ref Node 1 0
+        seq no type 10 1
+          name nil polymorphic type 1 0
+          seq no type 10 1
+            name nil polymorphic type 1 0
+ecom to: 
+* Node 8 0
+  name .b47 ref Node 0 0
+ecom: 
+const n_VAR (1) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .b47 ref Node 0 0
+    const (0) int 6 0
+ecom: 
+ref ref Node 10 1
+  tuple Node 10 1
+    seq no type 10 1
+      const n_WORD (11) int 6 0
+      seq no type 10 1
+        name nil polymorphic type 1 0
+        seq no type 10 1
+          name nil polymorphic type 1 0
+          seq no type 10 1
+            const * string 1 0
+            seq no type 10 1
+              name nil polymorphic type 1 0
+ecom to: 
+* ref Node 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .b47 ref Node 0 0
+    const (8) int 6 0
+generate desc for ref Node
+generate desc for Node
+ecom: 
+tuple Node 10 1
+  seq no type 10 1
+    const n_WORD (11) int 6 0
+    seq no type 10 1
+      name nil polymorphic type 1 0
+      seq no type 10 1
+        name nil polymorphic type 1 0
+        seq no type 10 1
+          const * string 1 0
+          seq no type 10 1
+            name nil polymorphic type 1 0
+ecom to: 
+* Node 8 0
+  name .b48 ref Node 0 0
+ecom: 
+const n_WORD (11) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .b48 ref Node 0 0
+    const (0) int 6 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* ref Node 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .b48 ref Node 0 0
+    const (8) int 6 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* ref Node 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .b48 ref Node 0 0
+    const (16) int 6 0
+ecom: 
+const * string 1 0
+ecom to: 
+* string 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .b48 ref Node 0 0
+    const (24) int 6 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* ref Redir 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .b48 ref Node 0 0
+    const (32) int 6 0
+ecom: 
+= ref Node 10 1
+  name .b48 ref Node 0 0
+  name nil ref Node 1 0
+ecom: 
+name nil ref Node 1 0
+ecom to: 
+name .b48 ref Node 0 0
+ecom: 
+name nil ref Node 1 0
+ecom to: 
+* ref Node 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .b47 ref Node 0 0
+    const (16) int 6 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* string 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .b47 ref Node 0 0
+    const (24) int 6 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* ref Redir 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .b47 ref Node 0 0
+    const (32) int 6 0
+ecom: 
+= ref Node 10 1
+  name .b47 ref Node 0 0
+  name nil ref Node 1 0
+ecom: 
+name nil ref Node 1 0
+ecom to: 
+name .b47 ref Node 0 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* string 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .b44 ref Node 0 0
+    const (24) int 6 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* ref Redir 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .b44 ref Node 0 0
+    const (32) int 6 0
+ecom: 
+= ref Node 10 1
+  name .b44 ref Node 0 0
+  name nil ref Node 1 0
+ecom: 
+name nil ref Node 1 0
+ecom to: 
+name .b44 ref Node 0 0
+ecom: 
+= ref Redirlist 10 1
+  name redirs ref Redirlist 0 0
+  ref ref Redirlist 10 1
+    tuple Redirlist 10 1
+      seq no type 10 1
+        name nil polymorphic type 1 0
+ecom: 
+ref ref Redirlist 10 1
+  tuple Redirlist 10 1
+    seq no type 10 1
+      name nil polymorphic type 1 0
+ecom to: 
+name redirs ref Redirlist 0 0
+generate desc for ref Redirlist
+generate desc for ref Redirlist
+	desc	$-1,8,"80"
+generate desc for Redirlist
+descmap adt offset 0
+descmap offset 0
+descmap r type list of Redirword offset 0 (d->offset=0 start=0) returns 0
+generate desc for Redirlist
+	desc	$-1,8,"80"
+ecom: 
+tuple Redirlist 10 1
+  seq no type 10 1
+    name nil polymorphic type 1 0
+ecom to: 
+* Redirlist 8 0
+  name .b48 ref Redirlist 0 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* list of Redirword 8 0
+  + int 15 1
+    adr int 15 1
+      * Redirlist 8 0
+        name .b48 ref Redirlist 0 0
+    const (0) int 6 0
+ecom: 
+= ref Redirlist 10 1
+  name .b48 ref Redirlist 0 0
+  name nil ref Redirlist 1 0
+ecom: 
+name nil ref Redirlist 1 0
+ecom to: 
+name .b48 ref Redirlist 0 0
+ecom: 
+= list of ref Listnode 10 2
+  name line list of ref Listnode 0 0
+    name redirs ref Redirlist 0 0
+  call list of ref Listnode 10 2
+    name glob fn(nl: list of ref Listnode): list of ref Listnode 11 1
+    seq no type 10 2
+      call list of ref Listnode 10 2
+        name glom fn(ctxt: ref Context, n: ref Node, redirs: ref Redirlist, onto: list of ref Listnode): list of ref Listnode 11 1
+        seq no type 10 1
+          name ctxt ref Context 0 0
+          seq no type 10 1
+            name n ref Node 0 0
+            seq no type 10 1
+              name redirs ref Redirlist 0 0
+              seq no type 10 1
+                name nil list of ref Listnode 1 0
+ecom: 
+call list of ref Listnode 10 2
+  name glob fn(nl: list of ref Listnode): list of ref Listnode 11 1
+  seq no type 10 2
+    call list of ref Listnode 10 2
+      name glom fn(ctxt: ref Context, n: ref Node, redirs: ref Redirlist, onto: list of ref Listnode): list of ref Listnode 11 1
+      seq no type 10 1
+        name ctxt ref Context 0 0
+        seq no type 10 1
+          name n ref Node 0 0
+          seq no type 10 1
+            name redirs ref Redirlist 0 0
+            seq no type 10 1
+              name nil list of ref Listnode 1 0
+ecom to: 
+name line list of ref Listnode 0 0
+  name redirs ref Redirlist 0 0
+generate desc for big
+ecom: 
+call list of ref Listnode 10 2
+  name glom fn(ctxt: ref Context, n: ref Node, redirs: ref Redirlist, onto: list of ref Listnode): list of ref Listnode 11 1
+  seq no type 10 1
+    name ctxt ref Context 0 0
+    seq no type 10 1
+      name n ref Node 0 0
+      seq no type 10 1
+        name redirs ref Redirlist 0 0
+        seq no type 10 1
+          name nil list of ref Listnode 1 0
+ecom to: 
+name .t45 list of ref Listnode 0 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b42 big 0 0
+    const (64) int 6 0
+ecom: 
+name n ref Node 0 0
+ecom to: 
+* ref Node 8 0
+  + int 15 0
+    name .b42 big 0 0
+    const (72) int 6 0
+ecom: 
+name redirs ref Redirlist 0 0
+ecom to: 
+* ref Redirlist 8 0
+  + int 15 0
+    name .b42 big 0 0
+    const (80) int 6 0
+ecom: 
+name nil list of ref Listnode 1 0
+ecom to: 
+* list of ref Listnode 8 0
+  + int 15 0
+    name .b42 big 0 0
+    const (88) int 6 0
+ecom: 
+name .t45 list of ref Listnode 0 0
+ecom to: 
+* list of ref Listnode 8 0
+  + int 15 0
+    name .b46 big 0 0
+    const (64) int 6 0
+ecom: 
+= list of ref Listnode 10 1
+  name .t45 list of ref Listnode 0 0
+  name nil list of ref Listnode 1 0
+ecom: 
+name nil list of ref Listnode 1 0
+ecom to: 
+name .t45 list of ref Listnode 0 0
+ecom: 
+= chan of (int, ref Expropagate) 10 1
+  name startchan chan of (int, ref Expropagate) 0 0
+  chan chan of (int, ref Expropagate) 10 1
+    const (0) int 6 0
+ecom: 
+chan chan of (int, ref Expropagate) 10 1
+  const (0) int 6 0
+ecom to: 
+name startchan chan of (int, ref Expropagate) 0 0
+generate desc for (int, ref Expropagate)
+descmap adt offset 0
+descmap offset 0
+descmap t0 type int offset 0 (d->offset=0 start=0) returns -1
+descmap t1 type ref Expropagate offset 8 (d->offset=8 start=0) returns 8
+generate desc for (int, ref Expropagate)
+	desc	$-1,16,"40"
+ecom: 
+spawn nothing 10 2
+  call no type 10 2
+    name runasync fn(ctxt: ref Context, copyenv: int, argv: list of ref Listnode, redirs: ref Redirlist, startchan: chan of (int, ref Expropagate)) 11 1
+    seq no type 10 1
+      name ctxt ref Context 0 0
+      seq no type 10 1
+        const (1) int 6 0
+        seq no type 10 1
+          name line list of ref Listnode 0 0
+          seq no type 10 1
+            name redirs ref Redirlist 0 0
+            seq no type 10 1
+              name startchan chan of (int, ref Expropagate) 0 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b46 big 0 0
+    const (64) int 6 0
+ecom: 
+const (1) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b46 big 0 0
+    const (72) int 6 0
+ecom: 
+name line list of ref Listnode 0 0
+ecom to: 
+* list of ref Listnode 8 0
+  + int 15 0
+    name .b46 big 0 0
+    const (80) int 6 0
+ecom: 
+name redirs ref Redirlist 0 0
+ecom to: 
+* ref Redirlist 8 0
+  + int 15 0
+    name .b46 big 0 0
+    const (88) int 6 0
+ecom: 
+name startchan chan of (int, ref Expropagate) 0 0
+ecom to: 
+* chan of (int, ref Expropagate) 8 0
+  + int 15 0
+    name .b46 big 0 0
+    const (96) int 6 0
+ecom: 
+= (int, ref Expropagate) 10 2
+  tuple (int, ref Expropagate) 10 1
+    seq nothing 10 1
+      name pid int 0 0
+      seq nothing 10 1
+        name nil polymorphic type 1 0
+    name startchan chan of (int, ref Expropagate) 0 0
+  <- (int, ref Expropagate) 10 1
+    name startchan chan of (int, ref Expropagate) 0 0
+generate desc for (int, ref Expropagate)
+ecom: 
+<- (int, ref Expropagate) 10 1
+  name startchan chan of (int, ref Expropagate) 0 0
+ecom to: 
+name .b49 (int, ref Expropagate) 0 0
+ecom: 
+= ref Expropagate 10 1
+  * ref Expropagate 0 0
+    + int 13 1
+      adr int 13 1
+        name .b49 (int, ref Expropagate) 0 0
+      const t1 (8) int 6 0
+  name nil ref Expropagate 1 0
+ecom: 
+name nil ref Expropagate 1 0
+ecom to: 
+* ref Expropagate 0 0
+  + int 13 1
+    adr int 13 1
+      name .b49 (int, ref Expropagate) 0 0
+    const t1 (8) int 6 0
+ecom: 
+= ref Redirlist 10 1
+  name redirs ref Redirlist 0 0
+  name nil polymorphic type 1 0
+ecom: 
+name nil ref Redirlist 1 0
+ecom to: 
+name redirs ref Redirlist 0 0
+ecom: 
+call no type 10 2
+  name set fn(ctxt: self ref Context, name: string, val: list of ref Listnode) 11 1
+  seq nothing 10 1
+    name ctxt ref Context 0 0
+    seq no type 10 1
+      const apid string 1 0
+      seq no type 10 1
+        :: list of ref Listnode 10 1
+          ref ref Listnode 10 1
+            tuple Listnode 10 1
+              seq no type 10 1
+                name nil polymorphic type 1 0
+                seq no type 10 1
+                  cast string 10 1
+                    name pid int 0 0
+          name nil polymorphic type 1 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b46 big 0 0
+    const (64) int 6 0
+ecom: 
+const apid string 1 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b46 big 0 0
+    const (72) int 6 0
+ecom: 
+:: list of ref Listnode 10 1
+  ref ref Listnode 10 1
+    tuple Listnode 10 1
+      seq no type 10 1
+        name nil polymorphic type 1 0
+        seq no type 10 1
+          cast string 10 1
+            name pid int 0 0
+  name nil polymorphic type 1 0
+ecom to: 
+* list of ref Listnode 8 0
+  + int 15 0
+    name .b46 big 0 0
+    const (80) int 6 0
+eacom: 
+ref ref Listnode 10 1
+  tuple Listnode 10 1
+    seq no type 10 1
+      name nil polymorphic type 1 0
+      seq no type 10 1
+        cast string 10 1
+          name pid int 0 0
+generate desc for ref Listnode
+generate desc for ref Listnode
+	desc	$-1,8,"80"
+ecom: 
+ref ref Listnode 10 1
+  tuple Listnode 10 1
+    seq no type 10 1
+      name nil polymorphic type 1 0
+      seq no type 10 1
+        cast string 10 1
+          name pid int 0 0
+ecom to: 
+name .b48 ref Listnode 0 0
+generate desc for ref Listnode
+generate desc for Listnode
+ecom: 
+tuple Listnode 10 1
+  seq no type 10 1
+    name nil polymorphic type 1 0
+    seq no type 10 1
+      cast string 10 1
+        name pid int 0 0
+ecom to: 
+* Listnode 8 0
+  name .b48 ref Listnode 0 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* ref Node 8 0
+  + int 15 1
+    adr int 15 1
+      * Listnode 8 0
+        name .b48 ref Listnode 0 0
+    const (0) int 6 0
+ecom: 
+cast string 10 1
+  name pid int 0 0
+ecom to: 
+* string 8 0
+  + int 15 1
+    adr int 15 1
+      * Listnode 8 0
+        name .b48 ref Listnode 0 0
+    const (8) int 6 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+name .t45 list of ref Listnode 0 0
+ecom: 
+= ref Listnode 10 1
+  name .b48 ref Listnode 0 0
+  name nil ref Listnode 1 0
+ecom: 
+name nil ref Listnode 1 0
+ecom to: 
+name .b48 ref Listnode 0 0
+ecom: 
+= list of ref Listnode 10 1
+  name .t45 list of ref Listnode 0 0
+  name nil list of ref Listnode 1 0
+ecom: 
+name nil list of ref Listnode 1 0
+ecom to: 
+name .t45 list of ref Listnode 0 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* polymorphic type 8 0
+  name .ret int 0 0
+ecom: 
+= chan of (int, ref Expropagate) 10 1
+  name startchan chan of (int, ref Expropagate) 0 0
+  name nil chan of (int, ref Expropagate) 1 0
+ecom: 
+name nil chan of (int, ref Expropagate) 1 0
+ecom to: 
+name startchan chan of (int, ref Expropagate) 0 0
+ecom: 
+call string 10 2
+  name runsync fn(ctxt: ref Context, argv: list of ref Listnode, redirs: ref Redirlist, last: int): string 11 1
+  seq no type 10 1
+    name ctxt ref Context 0 0
+    seq no type 10 1
+      name line list of ref Listnode 0 0
+      seq no type 10 1
+        name redirs ref Redirlist 0 0
+        seq no type 10 1
+          name last int 0 0
+ecom to: 
+* string 8 0
+  name .ret int 0 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b46 big 0 0
+    const (64) int 6 0
+ecom: 
+name line list of ref Listnode 0 0
+ecom to: 
+* list of ref Listnode 8 0
+  + int 15 0
+    name .b46 big 0 0
+    const (72) int 6 0
+ecom: 
+name redirs ref Redirlist 0 0
+ecom to: 
+* ref Redirlist 8 0
+  + int 15 0
+    name .b46 big 0 0
+    const (80) int 6 0
+ecom: 
+name last int 0 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b46 big 0 0
+    const (88) int 6 0
+ecom: 
+= list of ref Listnode 10 1
+  name line list of ref Listnode 0 0
+  name nil list of ref Listnode 1 0
+ecom: 
+name nil list of ref Listnode 1 0
+ecom to: 
+name line list of ref Listnode 0 0
+ecom: 
+= ref Redirlist 10 1
+  name redirs ref Redirlist 0 0
+  name nil ref Redirlist 1 0
+ecom: 
+name nil ref Redirlist 1 0
+ecom to: 
+name redirs ref Redirlist 0 0
+fn: walk
+64: argument ctxt ref Context ref 11
+72: argument n ref Node ref 14
+80: argument last int ref 1
+84: local bg int ref 3
+88: local pid int ref 3
+92: local .t43 int ref 1
+96: local .b46 big ref 6
+104: local redirs ref Redirlist ref 5
+112: local .b42 big ref 4
+120: local .b44 ref Localenv ref 4
+128: local .b48 ref Node ref 4
+136: local status string ref 4
+144: local line list of ref Listnode ref 3
+152: local startchan chan of (int, ref Expropagate) ref 3
+160: local .b47 ref Node ref 2
+168: local .t45 string ref 1
+176: local .b49 (int, ref Expropagate) ref 1
+generate desc for walk
+descmap offset 0
+descmap ctxt type ref Context offset 64 (d->offset=64 start=0) returns 64
+descmap n type ref Node offset 72 (d->offset=72 start=0) returns 72
+descmap last type int offset 80 (d->offset=80 start=0) returns -1
+descmap bg type int offset 84 (d->offset=84 start=0) returns -1
+descmap pid type int offset 88 (d->offset=88 start=0) returns -1
+descmap .t43 type int offset 92 (d->offset=92 start=0) returns -1
+descmap .b46 type big offset 96 (d->offset=96 start=0) returns -1
+descmap redirs type ref Redirlist offset 104 (d->offset=104 start=0) returns 104
+descmap .b42 type big offset 112 (d->offset=112 start=0) returns -1
+descmap .b44 type ref Localenv offset 120 (d->offset=120 start=0) returns 120
+descmap .b48 type ref Node offset 128 (d->offset=128 start=0) returns 128
+descmap status type string offset 136 (d->offset=136 start=0) returns 136
+descmap line type list of ref Listnode offset 144 (d->offset=144 start=0) returns 144
+descmap startchan type chan of (int, ref Expropagate) offset 152 (d->offset=152 start=0) returns 152
+descmap .b47 type ref Node offset 160 (d->offset=160 start=0) returns 160
+descmap .t45 type string offset 168 (d->offset=168 start=0) returns 168
+descmap adt offset 176
+descmap offset 176
+descmap t0 type int offset 176 (d->offset=0 start=176) returns -1
+descmap t1 type ref Expropagate offset 184 (d->offset=8 start=176) returns 184
+descmap .b49 type (int, ref Expropagate) offset 176 (d->offset=176 start=0) returns 184
+fncom: assign 3 4181a8
+ecom: 
+= ref Redirlist 10 1
+  name redirs ref Redirlist 0 0
+  ref ref Redirlist 10 1
+    name Redirlist Redirlist 10 1
+ecom: 
+ref ref Redirlist 10 1
+  name Redirlist Redirlist 10 1
+ecom to: 
+name redirs ref Redirlist 0 0
+generate desc for Redirlist
+eacom: 
+* int 10 1
+  * ref Node 8 0
+    + int 15 1
+      name n ref Node 0 0
+      const right (16) int 6 0
+generate desc for ref Node
+generate desc for ref Node
+	desc	$-1,8,"80"
+ecom: 
+* ref Node 8 0
+  + int 15 1
+    name n ref Node 0 0
+    const right (16) int 6 0
+ecom to: 
+name .b50 ref Node 0 0
+ecom: 
+= ref Node 10 1
+  name .b50 ref Node 0 0
+  name nil ref Node 1 0
+ecom: 
+name nil ref Node 1 0
+ecom to: 
+name .b50 ref Node 0 0
+eacom: 
+* int 10 1
+  * ref Node 8 0
+    + int 15 1
+      name n ref Node 0 0
+      const right (16) int 6 0
+generate desc for ref Node
+ecom: 
+* ref Node 8 0
+  + int 15 1
+    name n ref Node 0 0
+    const right (16) int 6 0
+ecom to: 
+name .b50 ref Node 0 0
+ecom: 
+= ref Node 10 1
+  name .b50 ref Node 0 0
+  name nil ref Node 1 0
+ecom: 
+name nil ref Node 1 0
+ecom to: 
+name .b50 ref Node 0 0
+ecom: 
+= list of ref Listnode 10 2
+  name val list of ref Listnode 0 0
+  call list of ref Listnode 10 2
+    name assign fn(ctxt: ref Context, n: ref Node): list of ref Listnode 11 1
+    seq no type 10 1
+      name ctxt ref Context 0 0
+      seq no type 10 1
+        * ref Node 8 0
+          + int 15 1
+            name n ref Node 0 0
+            const right (16) int 6 0
+ecom: 
+call list of ref Listnode 10 2
+  name assign fn(ctxt: ref Context, n: ref Node): list of ref Listnode 11 1
+  seq no type 10 1
+    name ctxt ref Context 0 0
+    seq no type 10 1
+      * ref Node 8 0
+        + int 15 1
+          name n ref Node 0 0
+          const right (16) int 6 0
+ecom to: 
+name val list of ref Listnode 0 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b51 big 0 0
+    const (64) int 6 0
+ecom: 
+* ref Node 8 0
+  + int 15 1
+    name n ref Node 0 0
+    const right (16) int 6 0
+ecom to: 
+* ref Node 8 0
+  + int 15 0
+    name .b51 big 0 0
+    const (72) int 6 0
+ecom: 
+= list of ref Listnode 10 2
+  name val list of ref Listnode 0 0
+  call list of ref Listnode 10 2
+    name glob fn(nl: list of ref Listnode): list of ref Listnode 11 1
+    seq no type 10 2
+      call list of ref Listnode 10 2
+        name glom fn(ctxt: ref Context, n: ref Node, redirs: ref Redirlist, onto: list of ref Listnode): list of ref Listnode 11 1
+        seq no type 10 1
+          name ctxt ref Context 0 0
+          seq no type 10 1
+            * ref Node 8 0
+              + int 15 1
+                name n ref Node 0 0
+                const right (16) int 6 0
+            seq no type 10 1
+              name redirs ref Redirlist 0 0
+              seq no type 10 1
+                name nil list of ref Listnode 1 0
+ecom: 
+call list of ref Listnode 10 2
+  name glob fn(nl: list of ref Listnode): list of ref Listnode 11 1
+  seq no type 10 2
+    call list of ref Listnode 10 2
+      name glom fn(ctxt: ref Context, n: ref Node, redirs: ref Redirlist, onto: list of ref Listnode): list of ref Listnode 11 1
+      seq no type 10 1
+        name ctxt ref Context 0 0
+        seq no type 10 1
+          * ref Node 8 0
+            + int 15 1
+              name n ref Node 0 0
+              const right (16) int 6 0
+          seq no type 10 1
+            name redirs ref Redirlist 0 0
+            seq no type 10 1
+              name nil list of ref Listnode 1 0
+ecom to: 
+name val list of ref Listnode 0 0
+generate desc for big
+ecom: 
+call list of ref Listnode 10 2
+  name glom fn(ctxt: ref Context, n: ref Node, redirs: ref Redirlist, onto: list of ref Listnode): list of ref Listnode 11 1
+  seq no type 10 1
+    name ctxt ref Context 0 0
+    seq no type 10 1
+      * ref Node 8 0
+        + int 15 1
+          name n ref Node 0 0
+          const right (16) int 6 0
+      seq no type 10 1
+        name redirs ref Redirlist 0 0
+        seq no type 10 1
+          name nil list of ref Listnode 1 0
+ecom to: 
+name .t52 list of ref Listnode 0 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b53 big 0 0
+    const (64) int 6 0
+ecom: 
+* ref Node 8 0
+  + int 15 1
+    name n ref Node 0 0
+    const right (16) int 6 0
+ecom to: 
+* ref Node 8 0
+  + int 15 0
+    name .b53 big 0 0
+    const (72) int 6 0
+ecom: 
+name redirs ref Redirlist 0 0
+ecom to: 
+* ref Redirlist 8 0
+  + int 15 0
+    name .b53 big 0 0
+    const (80) int 6 0
+ecom: 
+name nil list of ref Listnode 1 0
+ecom to: 
+* list of ref Listnode 8 0
+  + int 15 0
+    name .b53 big 0 0
+    const (88) int 6 0
+ecom: 
+name .t52 list of ref Listnode 0 0
+ecom to: 
+* list of ref Listnode 8 0
+  + int 15 0
+    name .b51 big 0 0
+    const (64) int 6 0
+ecom: 
+= list of ref Listnode 10 1
+  name .t52 list of ref Listnode 0 0
+  name nil list of ref Listnode 1 0
+ecom: 
+name nil list of ref Listnode 1 0
+ecom to: 
+name .t52 list of ref Listnode 0 0
+ecom: 
+= list of ref Listnode 10 2
+  name vars list of ref Listnode 0 0
+  call list of ref Listnode 10 2
+    name glom fn(ctxt: ref Context, n: ref Node, redirs: ref Redirlist, onto: list of ref Listnode): list of ref Listnode 11 1
+    seq no type 10 1
+      name ctxt ref Context 0 0
+      seq no type 10 1
+        * ref Node 8 0
+          + int 15 1
+            name n ref Node 0 0
+            const left (8) int 6 0
+        seq no type 10 1
+          name redirs ref Redirlist 0 0
+          seq no type 10 1
+            name nil list of ref Listnode 1 0
+ecom: 
+call list of ref Listnode 10 2
+  name glom fn(ctxt: ref Context, n: ref Node, redirs: ref Redirlist, onto: list of ref Listnode): list of ref Listnode 11 1
+  seq no type 10 1
+    name ctxt ref Context 0 0
+    seq no type 10 1
+      * ref Node 8 0
+        + int 15 1
+          name n ref Node 0 0
+          const left (8) int 6 0
+      seq no type 10 1
+        name redirs ref Redirlist 0 0
+        seq no type 10 1
+          name nil list of ref Listnode 1 0
+ecom to: 
+name vars list of ref Listnode 0 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b53 big 0 0
+    const (64) int 6 0
+ecom: 
+* ref Node 8 0
+  + int 15 1
+    name n ref Node 0 0
+    const left (8) int 6 0
+ecom to: 
+* ref Node 8 0
+  + int 15 0
+    name .b53 big 0 0
+    const (72) int 6 0
+ecom: 
+name redirs ref Redirlist 0 0
+ecom to: 
+* ref Redirlist 8 0
+  + int 15 0
+    name .b53 big 0 0
+    const (80) int 6 0
+ecom: 
+name nil list of ref Listnode 1 0
+ecom to: 
+* list of ref Listnode 8 0
+  + int 15 0
+    name .b53 big 0 0
+    const (88) int 6 0
+ecom: 
+call no type 10 2
+  name fail fn(ctxt: self ref Context, ename: string, err: string) 11 1
+  seq nothing 10 1
+    name ctxt ref Context 0 0
+    seq no type 10 1
+      const bad assign string 1 0
+      seq no type 10 1
+        const sh: nil variable name string 1 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b53 big 0 0
+    const (64) int 6 0
+ecom: 
+const bad assign string 1 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b53 big 0 0
+    const (72) int 6 0
+ecom: 
+const sh: nil variable name string 1 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b53 big 0 0
+    const (80) int 6 0
+ecom: 
+call no type 10 2
+  name fail fn(ctxt: self ref Context, ename: string, err: string) 11 1
+  seq nothing 10 1
+    name ctxt ref Context 0 0
+    seq no type 10 1
+      const bad assign string 1 0
+      seq no type 10 1
+        const sh: redirections not allowed in assignment string 1 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b53 big 0 0
+    const (64) int 6 0
+ecom: 
+const bad assign string 1 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b53 big 0 0
+    const (72) int 6 0
+ecom: 
+const sh: redirections not allowed in assignment string 1 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b53 big 0 0
+    const (80) int 6 0
+ecom: 
+= list of ref Listnode 10 1
+  name tval list of ref Listnode 0 0
+  name val list of ref Listnode 0 0
+ecom: 
+name val list of ref Listnode 0 0
+ecom to: 
+name tval list of ref Listnode 0 0
+ecom: 
+= string 10 2
+  name vname string 0 0
+  call string 10 2
+    name deglob fn(s: string): string 11 1
+    seq no type 10 1
+      * string 10 1
+        + int 10 1
+          hd ref Listnode 10 1
+            name vars list of ref Listnode 0 0
+          const word (8) int 6 0
+ecom: 
+call string 10 2
+  name deglob fn(s: string): string 11 1
+  seq no type 10 1
+    * string 10 1
+      + int 10 1
+        hd ref Listnode 10 1
+          name vars list of ref Listnode 0 0
+        const word (8) int 6 0
+ecom to: 
+name vname string 0 0
+generate desc for big
+ecom: 
+* string 10 1
+  + int 10 1
+    hd ref Listnode 10 1
+      name vars list of ref Listnode 0 0
+    const word (8) int 6 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b53 big 0 0
+    const (64) int 6 0
+eacom: 
+* string 10 1
+  + int 10 1
+    hd ref Listnode 10 1
+      name vars list of ref Listnode 0 0
+    const word (8) int 6 0
+generate desc for ref Listnode
+generate desc for ref Listnode
+	desc	$-1,8,"80"
+ecom: 
+hd ref Listnode 10 1
+  name vars list of ref Listnode 0 0
+ecom to: 
+name .b50 ref Listnode 0 0
+ecom: 
+= ref Listnode 10 1
+  name .b50 ref Listnode 0 0
+  name nil ref Listnode 1 0
+ecom: 
+name nil ref Listnode 1 0
+ecom to: 
+name .b50 ref Listnode 0 0
+ecom: 
+call no type 10 2
+  name fail fn(ctxt: self ref Context, ename: string, err: string) 11 1
+  seq nothing 10 1
+    name ctxt ref Context 0 0
+    seq no type 10 1
+      const bad assign string 1 0
+      seq no type 10 1
+        const sh: bad variable name string 1 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b53 big 0 0
+    const (64) int 6 0
+ecom: 
+const bad assign string 1 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b53 big 0 0
+    const (72) int 6 0
+ecom: 
+const sh: bad variable name string 1 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b53 big 0 0
+    const (80) int 6 0
+ecom: 
+= list of ref Listnode 10 1
+  name v list of ref Listnode 0 0
+  name nil polymorphic type 1 0
+ecom: 
+name nil list of ref Listnode 1 0
+ecom to: 
+name v list of ref Listnode 0 0
+eacom: 
+tl list of ref Listnode 10 1
+  name vars list of ref Listnode 0 0
+ecom: 
+tl list of ref Listnode 10 1
+  name vars list of ref Listnode 0 0
+ecom to: 
+name .t52 list of ref Listnode 0 0
+ecom: 
+= list of ref Listnode 10 1
+  name .t52 list of ref Listnode 0 0
+  name nil list of ref Listnode 1 0
+ecom: 
+name nil list of ref Listnode 1 0
+ecom to: 
+name .t52 list of ref Listnode 0 0
+ecom: 
+= list of ref Listnode 10 1
+  name v list of ref Listnode 0 0
+  name tval list of ref Listnode 0 0
+ecom: 
+name tval list of ref Listnode 0 0
+ecom to: 
+name v list of ref Listnode 0 0
+ecom: 
+= list of ref Listnode 10 1
+  name v list of ref Listnode 0 0
+  :: list of ref Listnode 10 1
+    hd ref Listnode 10 1
+      name tval list of ref Listnode 0 0
+    name nil polymorphic type 1 0
+ecom: 
+:: list of ref Listnode 10 1
+  hd ref Listnode 10 1
+    name tval list of ref Listnode 0 0
+  name nil polymorphic type 1 0
+ecom to: 
+name v list of ref Listnode 0 0
+eacom: 
+hd ref Listnode 10 1
+  name tval list of ref Listnode 0 0
+generate desc for ref Listnode
+generate desc for ref Listnode
+	desc	$-1,8,"80"
+ecom: 
+hd ref Listnode 10 1
+  name tval list of ref Listnode 0 0
+ecom to: 
+name .b50 ref Listnode 0 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+name .t52 list of ref Listnode 0 0
+ecom: 
+= ref Listnode 10 1
+  name .b50 ref Listnode 0 0
+  name nil ref Listnode 1 0
+ecom: 
+name nil ref Listnode 1 0
+ecom to: 
+name .b50 ref Listnode 0 0
+ecom: 
+= list of ref Listnode 10 1
+  name .t52 list of ref Listnode 0 0
+  name nil list of ref Listnode 1 0
+ecom: 
+name nil list of ref Listnode 1 0
+ecom to: 
+name .t52 list of ref Listnode 0 0
+ecom: 
+call no type 10 2
+  name set fn(ctxt: self ref Context, name: string, val: list of ref Listnode) 11 1
+  seq nothing 10 1
+    name ctxt ref Context 0 0
+    seq no type 10 1
+      name vname string 0 0
+      seq no type 10 1
+        name v list of ref Listnode 0 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b53 big 0 0
+    const (64) int 6 0
+ecom: 
+name vname string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b53 big 0 0
+    const (72) int 6 0
+ecom: 
+name v list of ref Listnode 0 0
+ecom to: 
+* list of ref Listnode 8 0
+  + int 15 0
+    name .b53 big 0 0
+    const (80) int 6 0
+ecom: 
+call no type 10 2
+  name setlocal fn(ctxt: self ref Context, name: string, val: list of ref Listnode) 11 1
+  seq nothing 10 1
+    name ctxt ref Context 0 0
+    seq no type 10 1
+      name vname string 0 0
+      seq no type 10 1
+        name v list of ref Listnode 0 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b53 big 0 0
+    const (64) int 6 0
+ecom: 
+name vname string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b53 big 0 0
+    const (72) int 6 0
+ecom: 
+name v list of ref Listnode 0 0
+ecom to: 
+* list of ref Listnode 8 0
+  + int 15 0
+    name .b53 big 0 0
+    const (80) int 6 0
+ecom: 
+= list of ref Listnode 10 1
+  name tval list of ref Listnode 0 0
+  tl list of ref Listnode 10 1
+    name tval list of ref Listnode 0 0
+ecom: 
+tl list of ref Listnode 10 1
+  name tval list of ref Listnode 0 0
+ecom to: 
+name tval list of ref Listnode 0 0
+ecom: 
+= list of ref Listnode 10 1
+  name v list of ref Listnode 0 0
+  name nil list of ref Listnode 1 0
+ecom: 
+name nil list of ref Listnode 1 0
+ecom to: 
+name v list of ref Listnode 0 0
+ecom: 
+= string 10 1
+  name vname string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name vname string 0 0
+ecom: 
+= list of ref Listnode 10 1
+  name vars list of ref Listnode 0 0
+  tl list of ref Listnode 10 1
+    name vars list of ref Listnode 0 0
+ecom: 
+tl list of ref Listnode 10 1
+  name vars list of ref Listnode 0 0
+ecom to: 
+name vars list of ref Listnode 0 0
+ecom: 
+name val list of ref Listnode 0 0
+ecom to: 
+* list of ref Listnode 8 0
+  name .ret int 0 0
+fn: assign
+64: argument ctxt ref Context ref 8
+72: argument n ref Node ref 7
+80: local .b53 big ref 8
+88: local tval list of ref Listnode ref 7
+96: local vars list of ref Listnode ref 7
+104: local v list of ref Listnode ref 5
+112: local .b50 ref Node ref 4
+120: local redirs ref Redirlist ref 4
+128: local val list of ref Listnode ref 4
+136: local vname string ref 4
+144: local .b51 big ref 2
+152: local .t52 list of ref Listnode ref 1
+generate desc for assign
+descmap offset 0
+descmap ctxt type ref Context offset 64 (d->offset=64 start=0) returns 64
+descmap n type ref Node offset 72 (d->offset=72 start=0) returns 72
+descmap .b53 type big offset 80 (d->offset=80 start=0) returns -1
+descmap tval type list of ref Listnode offset 88 (d->offset=88 start=0) returns 88
+descmap vars type list of ref Listnode offset 96 (d->offset=96 start=0) returns 96
+descmap v type list of ref Listnode offset 104 (d->offset=104 start=0) returns 104
+descmap .b50 type ref Node offset 112 (d->offset=112 start=0) returns 112
+descmap redirs type ref Redirlist offset 120 (d->offset=120 start=0) returns 120
+descmap val type list of ref Listnode offset 128 (d->offset=128 start=0) returns 128
+descmap vname type string offset 136 (d->offset=136 start=0) returns 136
+descmap .b51 type big offset 144 (d->offset=144 start=0) returns -1
+descmap .t52 type list of ref Listnode offset 152 (d->offset=152 start=0) returns 152
+fncom: walkpipeline 3 418268
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* polymorphic type 8 0
+  name .ret int 0 0
+ecom: 
+= array of ref Sys->FD 10 1
+  name fds array of ref Sys->FD 0 0
+  array array of ref Sys->FD 10 1
+    const (2) int 6 0
+ecom: 
+array array of ref Sys->FD 10 1
+  const (2) int 6 0
+ecom to: 
+name fds array of ref Sys->FD 0 0
+generate desc for ref Sys->FD
+generate desc for ref Sys->FD
+	desc	$-1,8,"80"
+ecom: 
+= int 10 1
+  name rfdno int 0 0
+  const (-1) int 6 0
+ecom: 
+const (-1) int 6 0
+ecom to: 
+name rfdno int 0 0
+eacom: 
+call int 10 2
+  -> fn(fds: array of ref Sys->FD): int 12 1
+    name sys Sys 1 0
+    name pipe nothing 11 1
+  seq no type 10 1
+    name fds array of ref Sys->FD 0 0
+ecom: 
+call int 10 2
+  -> fn(fds: array of ref Sys->FD): int 12 1
+    name sys Sys 1 0
+    name pipe nothing 11 1
+  seq no type 10 1
+    name fds array of ref Sys->FD 0 0
+ecom to: 
+name .t54 int 0 0
+generate desc for big
+ecom: 
+name fds array of ref Sys->FD 0 0
+ecom to: 
+* array of ref Sys->FD 8 0
+  + int 15 0
+    name .b55 big 0 0
+    const (64) int 6 0
+ecom: 
+call no type 10 2
+  name fail fn(ctxt: self ref Context, ename: string, err: string) 11 1
+  seq nothing 10 2
+    name ctxt ref Context 0 0
+    seq no type 10 2
+      const no pipe string 1 0
+      seq no type 10 2
+        call string 10 2
+          -> fn(s: string, *): string 12 1
+            name sys Sys 1 0
+            name sprint nothing 11 1
+          seq no type 10 1
+            const sh: cannot make pipe: %r string 1 0
+generate desc for big
+ecom: 
+call string 10 2
+  -> fn(s: string, *): string 12 1
+    name sys Sys 1 0
+    name sprint nothing 11 1
+  seq no type 10 1
+    const sh: cannot make pipe: %r string 1 0
+ecom to: 
+name .t56 string 0 0
+generate desc for Sys->sprint
+descmap offset 0
+descmap s type string offset 64 (d->offset=64 start=0) returns 64
+generate desc for big
+ecom: 
+const sh: cannot make pipe: %r string 1 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b57 big 0 0
+    const (64) int 6 0
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b55 big 0 0
+    const (64) int 6 0
+ecom: 
+const no pipe string 1 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b55 big 0 0
+    const (72) int 6 0
+ecom: 
+name .t56 string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b55 big 0 0
+    const (80) int 6 0
+ecom: 
+= string 10 1
+  name .t56 string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name .t56 string 0 0
+ecom: 
+= int 10 1
+  name nwfdno int 0 0
+  const (-1) int 6 0
+ecom: 
+const (-1) int 6 0
+ecom to: 
+name nwfdno int 0 0
+ecom: 
+= (int, int) 10 2
+  tuple (int, int) 10 1
+    seq nothing 10 1
+      name fd1 int 0 0
+      seq nothing 10 1
+        name fd2 int 0 0
+  tuple (int, int) 10 2
+    seq no type 10 2
+      * int 10 1
+        + int 10 1
+          * ref Redir 8 0
+            + int 15 1
+              name n ref Node 0 0
+              const redir (32) int 6 0
+          const fd2 (8) int 6 0
+      seq no type 10 1
+        * int 10 1
+          + int 10 1
+            * ref Redir 8 0
+              + int 15 1
+                name n ref Node 0 0
+                const redir (32) int 6 0
+            const fd1 (4) int 6 0
+ecom: 
+tuple (int, int) 10 2
+  seq no type 10 2
+    * int 10 1
+      + int 10 1
+        * ref Redir 8 0
+          + int 15 1
+            name n ref Node 0 0
+            const redir (32) int 6 0
+        const fd2 (8) int 6 0
+    seq no type 10 1
+      * int 10 1
+        + int 10 1
+          * ref Redir 8 0
+            + int 15 1
+              name n ref Node 0 0
+              const redir (32) int 6 0
+          const fd1 (4) int 6 0
+ecom to: 
+name fd1 (int, int) 0 0
+ecom: 
+* int 10 1
+  + int 10 1
+    * ref Redir 8 0
+      + int 15 1
+        name n ref Node 0 0
+        const redir (32) int 6 0
+    const fd2 (8) int 6 0
+ecom to: 
+* int 0 0
+  + int 13 1
+    adr int 13 1
+      name fd1 (int, int) 0 0
+    const (0) int 6 0
+eacom: 
+* int 10 1
+  + int 10 1
+    * ref Redir 8 0
+      + int 15 1
+        name n ref Node 0 0
+        const redir (32) int 6 0
+    const fd2 (8) int 6 0
+generate desc for ref Redir
+generate desc for ref Redir
+	desc	$-1,8,"80"
+ecom: 
+* ref Redir 8 0
+  + int 15 1
+    name n ref Node 0 0
+    const redir (32) int 6 0
+ecom to: 
+name .b58 ref Redir 0 0
+ecom: 
+= ref Redir 10 1
+  name .b58 ref Redir 0 0
+  name nil ref Redir 1 0
+ecom: 
+name nil ref Redir 1 0
+ecom to: 
+name .b58 ref Redir 0 0
+ecom: 
+* int 10 1
+  + int 10 1
+    * ref Redir 8 0
+      + int 15 1
+        name n ref Node 0 0
+        const redir (32) int 6 0
+    const fd1 (4) int 6 0
+ecom to: 
+* int 0 0
+  + int 13 1
+    adr int 13 1
+      name fd1 (int, int) 0 0
+    const (4) int 6 0
+eacom: 
+* int 10 1
+  + int 10 1
+    * ref Redir 8 0
+      + int 15 1
+        name n ref Node 0 0
+        const redir (32) int 6 0
+    const fd1 (4) int 6 0
+generate desc for ref Redir
+ecom: 
+* ref Redir 8 0
+  + int 15 1
+    name n ref Node 0 0
+    const redir (32) int 6 0
+ecom to: 
+name .b58 ref Redir 0 0
+ecom: 
+= ref Redir 10 1
+  name .b58 ref Redir 0 0
+  name nil ref Redir 1 0
+ecom: 
+name nil ref Redir 1 0
+ecom to: 
+name .b58 ref Redir 0 0
+ecom: 
+= (int, int) 10 2
+  tuple (int, int) 10 1
+    seq no type 10 1
+      name fd1 int 0 0
+      seq no type 10 1
+        name fd2 int 0 0
+  tuple (int, int) 10 1
+    seq no type 10 1
+      name fd2 int 0 0
+      seq no type 10 1
+        name fd1 int 0 0
+generate desc for (int, int)
+descmap adt offset 0
+descmap offset 0
+descmap t0 type int offset 0 (d->offset=0 start=0) returns -1
+descmap t1 type int offset 4 (d->offset=4 start=0) returns -1
+generate desc for (int, int)
+	desc	$-1,8,""
+ecom: 
+tuple (int, int) 10 1
+  seq no type 10 1
+    name fd2 int 0 0
+    seq no type 10 1
+      name fd1 int 0 0
+ecom to: 
+name .b59 (int, int) 0 0
+ecom: 
+name fd2 int 0 0
+ecom to: 
+* int 0 0
+  + int 13 1
+    adr int 13 1
+      name .b59 (int, int) 0 0
+    const (0) int 6 0
+ecom: 
+name fd1 int 0 0
+ecom to: 
+* int 0 0
+  + int 13 1
+    adr int 13 1
+      name .b59 (int, int) 0 0
+    const (4) int 6 0
+ecom: 
+= (int, int) 10 2
+  tuple (int, int) 10 1
+    seq no type 10 1
+      name nwfdno int 0 0
+      seq no type 10 1
+        name rfdno int 0 0
+  tuple (int, int) 10 1
+    seq no type 10 1
+      name fd2 int 0 0
+      seq no type 10 1
+        name fd1 int 0 0
+ecom: 
+= int 10 1
+  name nwfdno int 0 0
+  name fd2 int 0 0
+ecom: 
+name fd2 int 0 0
+ecom to: 
+name nwfdno int 0 0
+ecom: 
+= int 10 1
+  name rfdno int 0 0
+  name fd1 int 0 0
+ecom: 
+name fd1 int 0 0
+ecom to: 
+name rfdno int 0 0
+ecom: 
+= list of int 10 2
+  name pids list of int 0 0
+  call list of int 10 2
+    name walkpipeline fn(ctxt: ref Context, n: ref Node, wrpipe: ref Sys->FD, wfdno: int): list of int 11 1
+    seq no type 10 2
+      name ctxt ref Context 0 0
+      seq no type 10 2
+        * ref Node 8 0
+          + int 15 1
+            name n ref Node 0 0
+            const left (8) int 6 0
+        seq no type 10 2
+          * ref Sys->FD 10 1
+            indx big 10 1
+              name fds array of ref Sys->FD 0 0
+              const (1) int 6 0
+          seq no type 10 1
+            name nwfdno int 0 0
+ecom: 
+call list of int 10 2
+  name walkpipeline fn(ctxt: ref Context, n: ref Node, wrpipe: ref Sys->FD, wfdno: int): list of int 11 1
+  seq no type 10 2
+    name ctxt ref Context 0 0
+    seq no type 10 2
+      * ref Node 8 0
+        + int 15 1
+          name n ref Node 0 0
+          const left (8) int 6 0
+      seq no type 10 2
+        * ref Sys->FD 10 1
+          indx big 10 1
+            name fds array of ref Sys->FD 0 0
+            const (1) int 6 0
+        seq no type 10 1
+          name nwfdno int 0 0
+ecom to: 
+name pids list of int 0 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b57 big 0 0
+    const (64) int 6 0
+ecom: 
+* ref Node 8 0
+  + int 15 1
+    name n ref Node 0 0
+    const left (8) int 6 0
+ecom to: 
+* ref Node 8 0
+  + int 15 0
+    name .b57 big 0 0
+    const (72) int 6 0
+ecom: 
+* ref Sys->FD 10 1
+  indx big 10 1
+    name fds array of ref Sys->FD 0 0
+    const (1) int 6 0
+ecom to: 
+* ref Sys->FD 8 0
+  + int 15 0
+    name .b57 big 0 0
+    const (80) int 6 0
+eacom: 
+* ref Sys->FD 10 1
+  indx big 10 1
+    name fds array of ref Sys->FD 0 0
+    const (1) int 6 0
+generate desc for big
+ecom: 
+indx big 10 1
+  name fds array of ref Sys->FD 0 0
+  const (1) int 6 0
+ecom to: 
+name .b55 big 0 0
+ecom: 
+name nwfdno int 0 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b57 big 0 0
+    const (88) int 6 0
+ecom: 
+= ref Sys->FD 10 1
+  * ref Sys->FD 10 1
+    indx big 10 1
+      name fds array of ref Sys->FD 0 0
+      const (1) int 6 0
+  name nil polymorphic type 1 0
+eacom: 
+* ref Sys->FD 10 1
+  indx big 10 1
+    name fds array of ref Sys->FD 0 0
+    const (1) int 6 0
+generate desc for big
+ecom: 
+indx big 10 1
+  name fds array of ref Sys->FD 0 0
+  const (1) int 6 0
+ecom to: 
+name .b57 big 0 0
+ecom: 
+name nil ref Sys->FD 1 0
+ecom to: 
+* ref Sys->FD 8 1
+  name .b57 big 0 0
+ecom: 
+= ref Node 10 1
+  name n ref Node 0 0
+  * ref Node 8 0
+    + int 15 1
+      name n ref Node 0 0
+      const right (16) int 6 0
+ecom: 
+* ref Node 8 0
+  + int 15 1
+    name n ref Node 0 0
+    const right (16) int 6 0
+ecom to: 
+name n ref Node 0 0
+ecom: 
+= ref Redirlist 10 1
+  name r ref Redirlist 0 0
+  ref ref Redirlist 10 1
+    tuple Redirlist 10 1
+      seq no type 10 1
+        name nil polymorphic type 1 0
+ecom: 
+ref ref Redirlist 10 1
+  tuple Redirlist 10 1
+    seq no type 10 1
+      name nil polymorphic type 1 0
+ecom to: 
+name r ref Redirlist 0 0
+generate desc for ref Redirlist
+generate desc for ref Redirlist
+	desc	$-1,8,"80"
+generate desc for Redirlist
+ecom: 
+tuple Redirlist 10 1
+  seq no type 10 1
+    name nil polymorphic type 1 0
+ecom to: 
+* Redirlist 8 0
+  name .b58 ref Redirlist 0 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* list of Redirword 8 0
+  + int 15 1
+    adr int 15 1
+      * Redirlist 8 0
+        name .b58 ref Redirlist 0 0
+    const (0) int 6 0
+ecom: 
+= ref Redirlist 10 1
+  name .b58 ref Redirlist 0 0
+  name nil ref Redirlist 1 0
+ecom: 
+name nil ref Redirlist 1 0
+ecom to: 
+name .b58 ref Redirlist 0 0
+ecom: 
+= list of ref Listnode 10 2
+  name rlist list of ref Listnode 0 0
+  call list of ref Listnode 10 2
+    name glob fn(nl: list of ref Listnode): list of ref Listnode 11 1
+    seq no type 10 2
+      call list of ref Listnode 10 2
+        name glom fn(ctxt: ref Context, n: ref Node, redirs: ref Redirlist, onto: list of ref Listnode): list of ref Listnode 11 1
+        seq no type 10 1
+          name ctxt ref Context 0 0
+          seq no type 10 1
+            name n ref Node 0 0
+            seq no type 10 1
+              name r ref Redirlist 0 0
+              seq no type 10 1
+                name nil list of ref Listnode 1 0
+ecom: 
+call list of ref Listnode 10 2
+  name glob fn(nl: list of ref Listnode): list of ref Listnode 11 1
+  seq no type 10 2
+    call list of ref Listnode 10 2
+      name glom fn(ctxt: ref Context, n: ref Node, redirs: ref Redirlist, onto: list of ref Listnode): list of ref Listnode 11 1
+      seq no type 10 1
+        name ctxt ref Context 0 0
+        seq no type 10 1
+          name n ref Node 0 0
+          seq no type 10 1
+            name r ref Redirlist 0 0
+            seq no type 10 1
+              name nil list of ref Listnode 1 0
+ecom to: 
+name rlist list of ref Listnode 0 0
+generate desc for big
+ecom: 
+call list of ref Listnode 10 2
+  name glom fn(ctxt: ref Context, n: ref Node, redirs: ref Redirlist, onto: list of ref Listnode): list of ref Listnode 11 1
+  seq no type 10 1
+    name ctxt ref Context 0 0
+    seq no type 10 1
+      name n ref Node 0 0
+      seq no type 10 1
+        name r ref Redirlist 0 0
+        seq no type 10 1
+          name nil list of ref Listnode 1 0
+ecom to: 
+name .t56 list of ref Listnode 0 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b55 big 0 0
+    const (64) int 6 0
+ecom: 
+name n ref Node 0 0
+ecom to: 
+* ref Node 8 0
+  + int 15 0
+    name .b55 big 0 0
+    const (72) int 6 0
+ecom: 
+name r ref Redirlist 0 0
+ecom to: 
+* ref Redirlist 8 0
+  + int 15 0
+    name .b55 big 0 0
+    const (80) int 6 0
+ecom: 
+name nil list of ref Listnode 1 0
+ecom to: 
+* list of ref Listnode 8 0
+  + int 15 0
+    name .b55 big 0 0
+    const (88) int 6 0
+ecom: 
+name .t56 list of ref Listnode 0 0
+ecom to: 
+* list of ref Listnode 8 0
+  + int 15 0
+    name .b57 big 0 0
+    const (64) int 6 0
+ecom: 
+= list of ref Listnode 10 1
+  name .t56 list of ref Listnode 0 0
+  name nil list of ref Listnode 1 0
+ecom: 
+name nil list of ref Listnode 1 0
+ecom to: 
+name .t56 list of ref Listnode 0 0
+eacom: 
+* ref Sys->FD 10 1
+  indx big 10 1
+    name fds array of ref Sys->FD 0 0
+    const (0) int 6 0
+generate desc for big
+ecom: 
+indx big 10 1
+  name fds array of ref Sys->FD 0 0
+  const (0) int 6 0
+ecom to: 
+name .b57 big 0 0
+ecom: 
+= int 10 1
+  name rfdno int 0 0
+  const (0) int 6 0
+ecom: 
+const (0) int 6 0
+ecom to: 
+name rfdno int 0 0
+ecom: 
+= list of Redirword 10 2
+  * list of Redirword 8 0
+    name r ref Redirlist 0 0
+  :: list of Redirword 10 2
+    tuple Redirword 10 2
+      seq no type 10 2
+        * ref Sys->FD 10 1
+          indx big 10 1
+            name fds array of ref Sys->FD 0 0
+            const (0) int 6 0
+        seq no type 10 1
+          name nil polymorphic type 1 0
+          seq no type 10 1
+            tuple Redir 10 1
+              seq no type 10 1
+                const OREAD (0) int 6 0
+                seq no type 10 1
+                  name rfdno int 0 0
+                  seq no type 10 1
+                    const (-1) int 6 0
+    * list of Redirword 8 0
+      name r ref Redirlist 0 0
+ecom: 
+:: list of Redirword 10 2
+  tuple Redirword 10 2
+    seq no type 10 2
+      * ref Sys->FD 10 1
+        indx big 10 1
+          name fds array of ref Sys->FD 0 0
+          const (0) int 6 0
+      seq no type 10 1
+        name nil polymorphic type 1 0
+        seq no type 10 1
+          tuple Redir 10 1
+            seq no type 10 1
+              const OREAD (0) int 6 0
+              seq no type 10 1
+                name rfdno int 0 0
+                seq no type 10 1
+                  const (-1) int 6 0
+  * list of Redirword 8 0
+    name r ref Redirlist 0 0
+ecom to: 
+* list of Redirword 8 0
+  name r ref Redirlist 0 0
+eacom: 
+tuple Redirword 10 2
+  seq no type 10 2
+    * ref Sys->FD 10 1
+      indx big 10 1
+        name fds array of ref Sys->FD 0 0
+        const (0) int 6 0
+    seq no type 10 1
+      name nil polymorphic type 1 0
+      seq no type 10 1
+        tuple Redir 10 1
+          seq no type 10 1
+            const OREAD (0) int 6 0
+            seq no type 10 1
+              name rfdno int 0 0
+              seq no type 10 1
+                const (-1) int 6 0
+generate desc for Redirword
+descmap adt offset 0
+descmap offset 0
+descmap fd type ref Sys->FD offset 0 (d->offset=0 start=0) returns 0
+descmap w type string offset 8 (d->offset=8 start=0) returns 8
+descmap adt offset 16
+descmap offset 16
+descmap rtype type int offset 16 (d->offset=0 start=16) returns -1
+descmap fd1 type int offset 20 (d->offset=4 start=16) returns -1
+descmap fd2 type int offset 24 (d->offset=8 start=16) returns -1
+descmap r type Redir offset 16 (d->offset=16 start=0) returns -1
+generate desc for Redirword
+	desc	$-1,32,"c0"
+ecom: 
+tuple Redirword 10 2
+  seq no type 10 2
+    * ref Sys->FD 10 1
+      indx big 10 1
+        name fds array of ref Sys->FD 0 0
+        const (0) int 6 0
+    seq no type 10 1
+      name nil polymorphic type 1 0
+      seq no type 10 1
+        tuple Redir 10 1
+          seq no type 10 1
+            const OREAD (0) int 6 0
+            seq no type 10 1
+              name rfdno int 0 0
+              seq no type 10 1
+                const (-1) int 6 0
+ecom to: 
+name .b60 Redirword 0 0
+ecom: 
+* ref Sys->FD 10 1
+  indx big 10 1
+    name fds array of ref Sys->FD 0 0
+    const (0) int 6 0
+ecom to: 
+* ref Sys->FD 0 0
+  + int 13 1
+    adr int 13 1
+      name .b60 Redirword 0 0
+    const (0) int 6 0
+eacom: 
+* ref Sys->FD 10 1
+  indx big 10 1
+    name fds array of ref Sys->FD 0 0
+    const (0) int 6 0
+generate desc for big
+ecom: 
+indx big 10 1
+  name fds array of ref Sys->FD 0 0
+  const (0) int 6 0
+ecom to: 
+name .b57 big 0 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* string 0 0
+  + int 13 1
+    adr int 13 1
+      name .b60 Redirword 0 0
+    const (8) int 6 0
+ecom: 
+tuple Redir 10 1
+  seq no type 10 1
+    const OREAD (0) int 6 0
+    seq no type 10 1
+      name rfdno int 0 0
+      seq no type 10 1
+        const (-1) int 6 0
+ecom to: 
+* Redir 0 0
+  + int 13 1
+    adr int 13 1
+      name .b60 Redirword 0 0
+    const (16) int 6 0
+ecom: 
+const OREAD (0) int 6 0
+ecom to: 
+* int 0 0
+  + int 13 1
+    adr int 13 1
+      * Redir 0 0
+        + int 13 1
+          adr int 13 1
+            name .b60 Redirword 0 0
+          const (16) int 6 0
+    const (0) int 6 0
+ecom: 
+name rfdno int 0 0
+ecom to: 
+* int 0 0
+  + int 13 1
+    adr int 13 1
+      * Redir 0 0
+        + int 13 1
+          adr int 13 1
+            name .b60 Redirword 0 0
+          const (16) int 6 0
+    const (4) int 6 0
+ecom: 
+const (-1) int 6 0
+ecom to: 
+* int 0 0
+  + int 13 1
+    adr int 13 1
+      * Redir 0 0
+        + int 13 1
+          adr int 13 1
+            name .b60 Redirword 0 0
+          const (16) int 6 0
+    const (8) int 6 0
+generate desc for Redirword
+ecom: 
+= ref Sys->FD 10 1
+  * ref Sys->FD 0 0
+    adr int 13 1
+      name .b60 Redirword 0 0
+  name nil ref Sys->FD 1 0
+ecom: 
+name nil ref Sys->FD 1 0
+ecom to: 
+* ref Sys->FD 0 0
+  adr int 13 1
+    name .b60 Redirword 0 0
+ecom: 
+= string 10 1
+  * string 0 0
+    + int 13 1
+      adr int 13 1
+        name .b60 Redirword 0 0
+      const w (8) int 6 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+* string 0 0
+  + int 13 1
+    adr int 13 1
+      name .b60 Redirword 0 0
+    const w (8) int 6 0
+ecom: 
+= int 10 1
+  name wfdno int 0 0
+  const (1) int 6 0
+ecom: 
+const (1) int 6 0
+ecom to: 
+name wfdno int 0 0
+ecom: 
+= list of Redirword 10 1
+  * list of Redirword 8 0
+    name r ref Redirlist 0 0
+  :: list of Redirword 10 1
+    tuple Redirword 10 1
+      seq no type 10 1
+        name wrpipe ref Sys->FD 0 0
+        seq no type 10 1
+          name nil polymorphic type 1 0
+          seq no type 10 1
+            tuple Redir 10 1
+              seq no type 10 1
+                const OWRITE (1) int 6 0
+                seq no type 10 1
+                  name wfdno int 0 0
+                  seq no type 10 1
+                    const (-1) int 6 0
+    * list of Redirword 8 0
+      name r ref Redirlist 0 0
+ecom: 
+:: list of Redirword 10 1
+  tuple Redirword 10 1
+    seq no type 10 1
+      name wrpipe ref Sys->FD 0 0
+      seq no type 10 1
+        name nil polymorphic type 1 0
+        seq no type 10 1
+          tuple Redir 10 1
+            seq no type 10 1
+              const OWRITE (1) int 6 0
+              seq no type 10 1
+                name wfdno int 0 0
+                seq no type 10 1
+                  const (-1) int 6 0
+  * list of Redirword 8 0
+    name r ref Redirlist 0 0
+ecom to: 
+* list of Redirword 8 0
+  name r ref Redirlist 0 0
+eacom: 
+tuple Redirword 10 1
+  seq no type 10 1
+    name wrpipe ref Sys->FD 0 0
+    seq no type 10 1
+      name nil polymorphic type 1 0
+      seq no type 10 1
+        tuple Redir 10 1
+          seq no type 10 1
+            const OWRITE (1) int 6 0
+            seq no type 10 1
+              name wfdno int 0 0
+              seq no type 10 1
+                const (-1) int 6 0
+generate desc for Redirword
+ecom: 
+tuple Redirword 10 1
+  seq no type 10 1
+    name wrpipe ref Sys->FD 0 0
+    seq no type 10 1
+      name nil polymorphic type 1 0
+      seq no type 10 1
+        tuple Redir 10 1
+          seq no type 10 1
+            const OWRITE (1) int 6 0
+            seq no type 10 1
+              name wfdno int 0 0
+              seq no type 10 1
+                const (-1) int 6 0
+ecom to: 
+name .b60 Redirword 0 0
+ecom: 
+name wrpipe ref Sys->FD 0 0
+ecom to: 
+* ref Sys->FD 0 0
+  + int 13 1
+    adr int 13 1
+      name .b60 Redirword 0 0
+    const (0) int 6 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* string 0 0
+  + int 13 1
+    adr int 13 1
+      name .b60 Redirword 0 0
+    const (8) int 6 0
+ecom: 
+tuple Redir 10 1
+  seq no type 10 1
+    const OWRITE (1) int 6 0
+    seq no type 10 1
+      name wfdno int 0 0
+      seq no type 10 1
+        const (-1) int 6 0
+ecom to: 
+* Redir 0 0
+  + int 13 1
+    adr int 13 1
+      name .b60 Redirword 0 0
+    const (16) int 6 0
+ecom: 
+const OWRITE (1) int 6 0
+ecom to: 
+* int 0 0
+  + int 13 1
+    adr int 13 1
+      * Redir 0 0
+        + int 13 1
+          adr int 13 1
+            name .b60 Redirword 0 0
+          const (16) int 6 0
+    const (0) int 6 0
+ecom: 
+name wfdno int 0 0
+ecom to: 
+* int 0 0
+  + int 13 1
+    adr int 13 1
+      * Redir 0 0
+        + int 13 1
+          adr int 13 1
+            name .b60 Redirword 0 0
+          const (16) int 6 0
+    const (4) int 6 0
+ecom: 
+const (-1) int 6 0
+ecom to: 
+* int 0 0
+  + int 13 1
+    adr int 13 1
+      * Redir 0 0
+        + int 13 1
+          adr int 13 1
+            name .b60 Redirword 0 0
+          const (16) int 6 0
+    const (8) int 6 0
+generate desc for Redirword
+ecom: 
+= ref Sys->FD 10 1
+  * ref Sys->FD 0 0
+    adr int 13 1
+      name .b60 Redirword 0 0
+  name nil ref Sys->FD 1 0
+ecom: 
+name nil ref Sys->FD 1 0
+ecom to: 
+* ref Sys->FD 0 0
+  adr int 13 1
+    name .b60 Redirword 0 0
+ecom: 
+= string 10 1
+  * string 0 0
+    + int 13 1
+      adr int 13 1
+        name .b60 Redirword 0 0
+      const w (8) int 6 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+* string 0 0
+  + int 13 1
+    adr int 13 1
+      name .b60 Redirword 0 0
+    const w (8) int 6 0
+ecom: 
+= chan of (int, ref Expropagate) 10 1
+  name startchan chan of (int, ref Expropagate) 0 0
+  chan chan of (int, ref Expropagate) 10 1
+    const (0) int 6 0
+ecom: 
+chan chan of (int, ref Expropagate) 10 1
+  const (0) int 6 0
+ecom to: 
+name startchan chan of (int, ref Expropagate) 0 0
+generate desc for (int, ref Expropagate)
+descmap adt offset 0
+descmap offset 0
+descmap t0 type int offset 0 (d->offset=0 start=0) returns -1
+descmap t1 type ref Expropagate offset 8 (d->offset=8 start=0) returns 8
+generate desc for (int, ref Expropagate)
+	desc	$-1,16,"40"
+ecom: 
+spawn nothing 10 2
+  call no type 10 2
+    name runasync fn(ctxt: ref Context, copyenv: int, argv: list of ref Listnode, redirs: ref Redirlist, startchan: chan of (int, ref Expropagate)) 11 1
+    seq no type 10 1
+      name ctxt ref Context 0 0
+      seq no type 10 1
+        const (1) int 6 0
+        seq no type 10 1
+          name rlist list of ref Listnode 0 0
+          seq no type 10 1
+            name r ref Redirlist 0 0
+            seq no type 10 1
+              name startchan chan of (int, ref Expropagate) 0 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b57 big 0 0
+    const (64) int 6 0
+ecom: 
+const (1) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b57 big 0 0
+    const (72) int 6 0
+ecom: 
+name rlist list of ref Listnode 0 0
+ecom to: 
+* list of ref Listnode 8 0
+  + int 15 0
+    name .b57 big 0 0
+    const (80) int 6 0
+ecom: 
+name r ref Redirlist 0 0
+ecom to: 
+* ref Redirlist 8 0
+  + int 15 0
+    name .b57 big 0 0
+    const (88) int 6 0
+ecom: 
+name startchan chan of (int, ref Expropagate) 0 0
+ecom to: 
+* chan of (int, ref Expropagate) 8 0
+  + int 15 0
+    name .b57 big 0 0
+    const (96) int 6 0
+ecom: 
+= (int, ref Expropagate) 10 2
+  tuple (int, ref Expropagate) 10 1
+    seq nothing 10 1
+      name pid int 0 0
+      seq nothing 10 1
+        name nil polymorphic type 1 0
+  <- (int, ref Expropagate) 10 1
+    name startchan chan of (int, ref Expropagate) 0 0
+generate desc for (int, ref Expropagate)
+ecom: 
+<- (int, ref Expropagate) 10 1
+  name startchan chan of (int, ref Expropagate) 0 0
+ecom to: 
+name .b61 (int, ref Expropagate) 0 0
+ecom: 
+= ref Expropagate 10 1
+  * ref Expropagate 0 0
+    + int 13 1
+      adr int 13 1
+        name .b61 (int, ref Expropagate) 0 0
+      const t1 (8) int 6 0
+  name nil ref Expropagate 1 0
+ecom: 
+name nil ref Expropagate 1 0
+ecom to: 
+* ref Expropagate 0 0
+  + int 13 1
+    adr int 13 1
+      name .b61 (int, ref Expropagate) 0 0
+    const t1 (8) int 6 0
+ecom: 
+:: list of int 10 1
+  name pid int 0 0
+  name pids list of int 0 0
+ecom to: 
+* list of int 8 0
+  name .ret int 0 0
+ecom: 
+name pids list of int 0 0
+ecom to: 
+name .t56 list of int 0 0
+ecom: 
+= list of int 10 1
+  name .t56 list of int 0 0
+  name nil list of int 1 0
+ecom: 
+name nil list of int 1 0
+ecom to: 
+name .t56 list of int 0 0
+fn: walkpipeline
+64: argument ctxt ref Context ref 4
+72: argument n ref Node ref 9
+80: argument wrpipe ref Sys->FD ref 2
+88: argument wfdno int ref 3
+92: local rfdno int ref 5
+96: local fd1 int ref 4
+100: local fd2 int ref 5
+104: local nwfdno int ref 3
+108: local .t54 int ref 1
+112: local .b57 big ref 7
+120: local r ref Redirlist ref 7
+128: local fds array of ref Sys->FD ref 6
+136: local .b55 big ref 4
+144: local .b58 ref Redir ref 3
+152: local startchan chan of (int, ref Expropagate) ref 3
+160: local pids list of int ref 2
+168: local rlist list of ref Listnode ref 2
+176: local .b60 Redirword ref 2
+208: local .b59 (int, int) ref 1
+216: local .t56 string ref 1
+224: local .b61 (int, ref Expropagate) ref 1
+104: local pid int ref 3
+generate desc for walkpipeline
+descmap offset 0
+descmap ctxt type ref Context offset 64 (d->offset=64 start=0) returns 64
+descmap n type ref Node offset 72 (d->offset=72 start=0) returns 72
+descmap wrpipe type ref Sys->FD offset 80 (d->offset=80 start=0) returns 80
+descmap wfdno type int offset 88 (d->offset=88 start=0) returns -1
+descmap rfdno type int offset 92 (d->offset=92 start=0) returns -1
+descmap fd1 type int offset 96 (d->offset=96 start=0) returns -1
+descmap fd2 type int offset 100 (d->offset=100 start=0) returns -1
+descmap nwfdno type int offset 104 (d->offset=104 start=0) returns -1
+descmap .t54 type int offset 108 (d->offset=108 start=0) returns -1
+descmap .b57 type big offset 112 (d->offset=112 start=0) returns -1
+descmap r type ref Redirlist offset 120 (d->offset=120 start=0) returns 120
+descmap fds type array of ref Sys->FD offset 128 (d->offset=128 start=0) returns 128
+descmap .b55 type big offset 136 (d->offset=136 start=0) returns -1
+descmap .b58 type ref Redir offset 144 (d->offset=144 start=0) returns 144
+descmap startchan type chan of (int, ref Expropagate) offset 152 (d->offset=152 start=0) returns 152
+descmap pids type list of int offset 160 (d->offset=160 start=0) returns 160
+descmap rlist type list of ref Listnode offset 168 (d->offset=168 start=0) returns 168
+descmap adt offset 176
+descmap offset 176
+descmap fd type ref Sys->FD offset 176 (d->offset=0 start=176) returns 176
+descmap w type string offset 184 (d->offset=8 start=176) returns 184
+descmap adt offset 192
+descmap offset 192
+descmap rtype type int offset 192 (d->offset=0 start=192) returns -1
+descmap fd1 type int offset 196 (d->offset=4 start=192) returns -1
+descmap fd2 type int offset 200 (d->offset=8 start=192) returns -1
+descmap r type Redir offset 192 (d->offset=16 start=176) returns -1
+descmap .b60 type Redirword offset 176 (d->offset=176 start=0) returns 184
+descmap adt offset 208
+descmap offset 208
+descmap t0 type int offset 208 (d->offset=0 start=208) returns -1
+descmap t1 type int offset 212 (d->offset=4 start=208) returns -1
+descmap .b59 type (int, int) offset 208 (d->offset=208 start=0) returns -1
+descmap .t56 type string offset 216 (d->offset=216 start=0) returns 216
+descmap adt offset 224
+descmap offset 224
+descmap t0 type int offset 224 (d->offset=0 start=224) returns -1
+descmap t1 type ref Expropagate offset 232 (d->offset=8 start=224) returns 232
+descmap .b61 type (int, ref Expropagate) offset 224 (d->offset=224 start=0) returns 232
+fncom: makeredir 1 418328
+fncom: glom 14 4183e8
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* polymorphic type 8 0
+  name .ret int 0 0
+ecom: 
+call list of ref Listnode 10 2
+  name listjoin fn(left: list of ref Listnode, right: list of ref Listnode): list of ref Listnode 11 1
+  seq no type 10 2
+    call list of ref Listnode 10 2
+      name glomoperation fn(ctxt: ref Context, n: ref Node, redirs: ref Redirlist): list of ref Listnode 11 1
+      seq no type 10 1
+        name ctxt ref Context 0 0
+        seq no type 10 1
+          name n ref Node 0 0
+          seq no type 10 1
+            name redirs ref Redirlist 0 0
+    seq no type 10 1
+      name onto list of ref Listnode 0 0
+ecom to: 
+* list of ref Listnode 8 0
+  name .ret int 0 0
+generate desc for big
+ecom: 
+call list of ref Listnode 10 2
+  name glomoperation fn(ctxt: ref Context, n: ref Node, redirs: ref Redirlist): list of ref Listnode 11 1
+  seq no type 10 1
+    name ctxt ref Context 0 0
+    seq no type 10 1
+      name n ref Node 0 0
+      seq no type 10 1
+        name redirs ref Redirlist 0 0
+ecom to: 
+name .t63 list of ref Listnode 0 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b64 big 0 0
+    const (64) int 6 0
+ecom: 
+name n ref Node 0 0
+ecom to: 
+* ref Node 8 0
+  + int 15 0
+    name .b64 big 0 0
+    const (72) int 6 0
+ecom: 
+name redirs ref Redirlist 0 0
+ecom to: 
+* ref Redirlist 8 0
+  + int 15 0
+    name .b64 big 0 0
+    const (80) int 6 0
+ecom: 
+name .t63 list of ref Listnode 0 0
+ecom to: 
+* list of ref Listnode 8 0
+  + int 15 0
+    name .b62 big 0 0
+    const (64) int 6 0
+ecom: 
+= list of ref Listnode 10 1
+  name .t63 list of ref Listnode 0 0
+  name nil list of ref Listnode 1 0
+ecom: 
+name nil list of ref Listnode 1 0
+ecom to: 
+name .t63 list of ref Listnode 0 0
+ecom: 
+name onto list of ref Listnode 0 0
+ecom to: 
+* list of ref Listnode 8 0
+  + int 15 0
+    name .b62 big 0 0
+    const (72) int 6 0
+ecom: 
+= list of ref Listnode 10 2
+  name nlist list of ref Listnode 0 0
+  call list of ref Listnode 10 2
+    name glom fn(ctxt: ref Context, n: ref Node, redirs: ref Redirlist, onto: list of ref Listnode): list of ref Listnode 11 1
+    seq no type 10 1
+      name ctxt ref Context 0 0
+      seq no type 10 1
+        * ref Node 8 0
+          + int 15 1
+            name n ref Node 0 0
+            const right (16) int 6 0
+        seq no type 10 1
+          name redirs ref Redirlist 0 0
+          seq no type 10 1
+            name onto list of ref Listnode 0 0
+ecom: 
+call list of ref Listnode 10 2
+  name glom fn(ctxt: ref Context, n: ref Node, redirs: ref Redirlist, onto: list of ref Listnode): list of ref Listnode 11 1
+  seq no type 10 1
+    name ctxt ref Context 0 0
+    seq no type 10 1
+      * ref Node 8 0
+        + int 15 1
+          name n ref Node 0 0
+          const right (16) int 6 0
+      seq no type 10 1
+        name redirs ref Redirlist 0 0
+        seq no type 10 1
+          name onto list of ref Listnode 0 0
+ecom to: 
+name nlist list of ref Listnode 0 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b64 big 0 0
+    const (64) int 6 0
+ecom: 
+* ref Node 8 0
+  + int 15 1
+    name n ref Node 0 0
+    const right (16) int 6 0
+ecom to: 
+* ref Node 8 0
+  + int 15 0
+    name .b64 big 0 0
+    const (72) int 6 0
+ecom: 
+name redirs ref Redirlist 0 0
+ecom to: 
+* ref Redirlist 8 0
+  + int 15 0
+    name .b64 big 0 0
+    const (80) int 6 0
+ecom: 
+name onto list of ref Listnode 0 0
+ecom to: 
+* list of ref Listnode 8 0
+  + int 15 0
+    name .b64 big 0 0
+    const (88) int 6 0
+eacom: 
+* int 10 1
+  * ref Node 8 0
+    + int 15 1
+      name n ref Node 0 0
+      const left (8) int 6 0
+generate desc for ref Node
+ecom: 
+* ref Node 8 0
+  + int 15 1
+    name n ref Node 0 0
+    const left (8) int 6 0
+ecom to: 
+name .b65 ref Node 0 0
+ecom: 
+= ref Node 10 1
+  name .b65 ref Node 0 0
+  name nil ref Node 1 0
+ecom: 
+name nil ref Node 1 0
+ecom to: 
+name .b65 ref Node 0 0
+ecom: 
+= list of ref Listnode 10 2
+  name nlist list of ref Listnode 0 0
+  call list of ref Listnode 10 2
+    name listjoin fn(left: list of ref Listnode, right: list of ref Listnode): list of ref Listnode 11 1
+    seq no type 10 2
+      call list of ref Listnode 10 2
+        name glomoperation fn(ctxt: ref Context, n: ref Node, redirs: ref Redirlist): list of ref Listnode 11 1
+        seq no type 10 1
+          name ctxt ref Context 0 0
+          seq no type 10 1
+            * ref Node 8 0
+              + int 15 1
+                name n ref Node 0 0
+                const left (8) int 6 0
+            seq no type 10 1
+              name redirs ref Redirlist 0 0
+      seq no type 10 1
+        name nlist list of ref Listnode 0 0
+ecom: 
+call list of ref Listnode 10 2
+  name listjoin fn(left: list of ref Listnode, right: list of ref Listnode): list of ref Listnode 11 1
+  seq no type 10 2
+    call list of ref Listnode 10 2
+      name glomoperation fn(ctxt: ref Context, n: ref Node, redirs: ref Redirlist): list of ref Listnode 11 1
+      seq no type 10 1
+        name ctxt ref Context 0 0
+        seq no type 10 1
+          * ref Node 8 0
+            + int 15 1
+              name n ref Node 0 0
+              const left (8) int 6 0
+          seq no type 10 1
+            name redirs ref Redirlist 0 0
+    seq no type 10 1
+      name nlist list of ref Listnode 0 0
+ecom to: 
+name nlist list of ref Listnode 0 0
+generate desc for big
+ecom: 
+call list of ref Listnode 10 2
+  name glomoperation fn(ctxt: ref Context, n: ref Node, redirs: ref Redirlist): list of ref Listnode 11 1
+  seq no type 10 1
+    name ctxt ref Context 0 0
+    seq no type 10 1
+      * ref Node 8 0
+        + int 15 1
+          name n ref Node 0 0
+          const left (8) int 6 0
+      seq no type 10 1
+        name redirs ref Redirlist 0 0
+ecom to: 
+name .t63 list of ref Listnode 0 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b62 big 0 0
+    const (64) int 6 0
+ecom: 
+* ref Node 8 0
+  + int 15 1
+    name n ref Node 0 0
+    const left (8) int 6 0
+ecom to: 
+* ref Node 8 0
+  + int 15 0
+    name .b62 big 0 0
+    const (72) int 6 0
+ecom: 
+name redirs ref Redirlist 0 0
+ecom to: 
+* ref Redirlist 8 0
+  + int 15 0
+    name .b62 big 0 0
+    const (80) int 6 0
+ecom: 
+name .t63 list of ref Listnode 0 0
+ecom to: 
+* list of ref Listnode 8 0
+  + int 15 0
+    name .b64 big 0 0
+    const (64) int 6 0
+ecom: 
+= list of ref Listnode 10 1
+  name .t63 list of ref Listnode 0 0
+  name nil list of ref Listnode 1 0
+ecom: 
+name nil list of ref Listnode 1 0
+ecom to: 
+name .t63 list of ref Listnode 0 0
+ecom: 
+name nlist list of ref Listnode 0 0
+ecom to: 
+* list of ref Listnode 8 0
+  + int 15 0
+    name .b64 big 0 0
+    const (72) int 6 0
+ecom: 
+= list of ref Listnode 10 2
+  name nlist list of ref Listnode 0 0
+  call list of ref Listnode 10 2
+    name glom fn(ctxt: ref Context, n: ref Node, redirs: ref Redirlist, onto: list of ref Listnode): list of ref Listnode 11 1
+    seq no type 10 1
+      name ctxt ref Context 0 0
+      seq no type 10 1
+        * ref Node 8 0
+          + int 15 1
+            name n ref Node 0 0
+            const left (8) int 6 0
+        seq no type 10 1
+          name redirs ref Redirlist 0 0
+          seq no type 10 1
+            name nlist list of ref Listnode 0 0
+ecom: 
+call list of ref Listnode 10 2
+  name glom fn(ctxt: ref Context, n: ref Node, redirs: ref Redirlist, onto: list of ref Listnode): list of ref Listnode 11 1
+  seq no type 10 1
+    name ctxt ref Context 0 0
+    seq no type 10 1
+      * ref Node 8 0
+        + int 15 1
+          name n ref Node 0 0
+          const left (8) int 6 0
+      seq no type 10 1
+        name redirs ref Redirlist 0 0
+        seq no type 10 1
+          name nlist list of ref Listnode 0 0
+ecom to: 
+name nlist list of ref Listnode 0 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b64 big 0 0
+    const (64) int 6 0
+ecom: 
+* ref Node 8 0
+  + int 15 1
+    name n ref Node 0 0
+    const left (8) int 6 0
+ecom to: 
+* ref Node 8 0
+  + int 15 0
+    name .b64 big 0 0
+    const (72) int 6 0
+ecom: 
+name redirs ref Redirlist 0 0
+ecom to: 
+* ref Redirlist 8 0
+  + int 15 0
+    name .b64 big 0 0
+    const (80) int 6 0
+ecom: 
+name nlist list of ref Listnode 0 0
+ecom to: 
+* list of ref Listnode 8 0
+  + int 15 0
+    name .b64 big 0 0
+    const (88) int 6 0
+ecom: 
+name nlist list of ref Listnode 0 0
+ecom to: 
+* list of ref Listnode 8 0
+  name .ret int 0 0
+fn: glom
+64: argument ctxt ref Context ref 4
+72: argument n ref Node ref 7
+80: argument redirs ref Redirlist ref 4
+88: argument onto list of ref Listnode ref 2
+96: local nlist list of ref Listnode ref 6
+104: local .b64 big ref 4
+112: local .b62 big ref 2
+120: local .b65 ref Node ref 1
+128: local .t63 list of ref Listnode ref 1
+generate desc for glom
+descmap offset 0
+descmap ctxt type ref Context offset 64 (d->offset=64 start=0) returns 64
+descmap n type ref Node offset 72 (d->offset=72 start=0) returns 72
+descmap redirs type ref Redirlist offset 80 (d->offset=80 start=0) returns 80
+descmap onto type list of ref Listnode offset 88 (d->offset=88 start=0) returns 88
+descmap nlist type list of ref Listnode offset 96 (d->offset=96 start=0) returns 96
+descmap .b64 type big offset 104 (d->offset=104 start=0) returns -1
+descmap .b62 type big offset 112 (d->offset=112 start=0) returns -1
+descmap .b65 type ref Node offset 120 (d->offset=120 start=0) returns 120
+descmap .t63 type list of ref Listnode offset 128 (d->offset=128 start=0) returns 128
+fncom: listjoin 3 4184a8
+ecom: 
+= list of ref Listnode 10 1
+  name l list of ref Listnode 0 0
+  :: list of ref Listnode 10 1
+    hd ref Listnode 10 1
+      name left list of ref Listnode 0 0
+    name l list of ref Listnode 0 0
+ecom: 
+:: list of ref Listnode 10 1
+  hd ref Listnode 10 1
+    name left list of ref Listnode 0 0
+  name l list of ref Listnode 0 0
+ecom to: 
+name l list of ref Listnode 0 0
+eacom: 
+hd ref Listnode 10 1
+  name left list of ref Listnode 0 0
+generate desc for ref Listnode
+generate desc for ref Listnode
+	desc	$-1,8,"80"
+ecom: 
+hd ref Listnode 10 1
+  name left list of ref Listnode 0 0
+ecom to: 
+name .b66 ref Listnode 0 0
+ecom: 
+= ref Listnode 10 1
+  name .b66 ref Listnode 0 0
+  name nil ref Listnode 1 0
+ecom: 
+name nil ref Listnode 1 0
+ecom to: 
+name .b66 ref Listnode 0 0
+ecom: 
+= list of ref Listnode 10 1
+  name left list of ref Listnode 0 0
+  tl list of ref Listnode 10 1
+    name left list of ref Listnode 0 0
+ecom: 
+tl list of ref Listnode 10 1
+  name left list of ref Listnode 0 0
+ecom to: 
+name left list of ref Listnode 0 0
+ecom: 
+= list of ref Listnode 10 1
+  name right list of ref Listnode 0 0
+  :: list of ref Listnode 10 1
+    hd ref Listnode 10 1
+      name l list of ref Listnode 0 0
+    name right list of ref Listnode 0 0
+ecom: 
+:: list of ref Listnode 10 1
+  hd ref Listnode 10 1
+    name l list of ref Listnode 0 0
+  name right list of ref Listnode 0 0
+ecom to: 
+name right list of ref Listnode 0 0
+eacom: 
+hd ref Listnode 10 1
+  name l list of ref Listnode 0 0
+generate desc for ref Listnode
+generate desc for ref Listnode
+	desc	$-1,8,"80"
+ecom: 
+hd ref Listnode 10 1
+  name l list of ref Listnode 0 0
+ecom to: 
+name .b66 ref Listnode 0 0
+ecom: 
+= ref Listnode 10 1
+  name .b66 ref Listnode 0 0
+  name nil ref Listnode 1 0
+ecom: 
+name nil ref Listnode 1 0
+ecom to: 
+name .b66 ref Listnode 0 0
+ecom: 
+= list of ref Listnode 10 1
+  name l list of ref Listnode 0 0
+  tl list of ref Listnode 10 1
+    name l list of ref Listnode 0 0
+ecom: 
+tl list of ref Listnode 10 1
+  name l list of ref Listnode 0 0
+ecom to: 
+name l list of ref Listnode 0 0
+ecom: 
+name right list of ref Listnode 0 0
+ecom to: 
+* list of ref Listnode 8 0
+  name .ret int 0 0
+fn: listjoin
+64: argument left list of ref Listnode ref 4
+72: argument right list of ref Listnode ref 3
+80: local l list of ref Listnode ref 6
+88: local .b66 ref Listnode ref 2
+generate desc for listjoin
+descmap offset 0
+descmap left type list of ref Listnode offset 64 (d->offset=64 start=0) returns 64
+descmap right type list of ref Listnode offset 72 (d->offset=72 start=0) returns 72
+descmap l type list of ref Listnode offset 80 (d->offset=80 start=0) returns 80
+descmap .b66 type ref Listnode offset 88 (d->offset=88 start=0) returns 88
+fncom: pipecmd 2 418568
+eacom: 
+& int 10 1
+  * int 8 0
+    name redir ref Redir 0 0
+  const OAPPEND (524288) int 6 0
+ecom: 
+& int 10 1
+  * int 8 0
+    name redir ref Redir 0 0
+  const OAPPEND (524288) int 6 0
+ecom to: 
+name .t67 int 0 0
+ecom: 
+call no type 10 2
+  name fail fn(ctxt: self ref Context, ename: string, err: string) 11 1
+  seq nothing 10 1
+    name ctxt ref Context 0 0
+    seq no type 10 1
+      const bad redir string 1 0
+      seq no type 10 1
+        const sh: bad redirection string 1 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b68 big 0 0
+    const (64) int 6 0
+ecom: 
+const bad redir string 1 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b68 big 0 0
+    const (72) int 6 0
+ecom: 
+const sh: bad redirection string 1 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b68 big 0 0
+    const (80) int 6 0
+ecom: 
+= Redir 10 1
+  name r Redir 0 0
+  * Redir 8 0
+    name redir ref Redir 0 0
+ecom: 
+* Redir 8 0
+  name redir ref Redir 0 0
+ecom to: 
+name r Redir 0 0
+generate desc for Redir
+descmap adt offset 0
+descmap offset 0
+descmap rtype type int offset 0 (d->offset=0 start=0) returns -1
+descmap fd1 type int offset 4 (d->offset=4 start=0) returns -1
+descmap fd2 type int offset 8 (d->offset=8 start=0) returns -1
+generate desc for Redir
+	desc	$-1,12,""
+ecom: 
+= int 10 1
+  * int 0 0
+    adr int 13 1
+      name r Redir 0 0
+  const OWRITE (1) int 6 0
+ecom: 
+const OWRITE (1) int 6 0
+ecom to: 
+* int 0 0
+  adr int 13 1
+    name r Redir 0 0
+ecom: 
+= int 10 1
+  * int 0 0
+    adr int 13 1
+      name r Redir 0 0
+  const OREAD (0) int 6 0
+ecom: 
+const OREAD (0) int 6 0
+ecom to: 
+* int 0 0
+  adr int 13 1
+    name r Redir 0 0
+ecom: 
+= array of ref Sys->FD 10 1
+  name p array of ref Sys->FD 0 0
+  array array of ref Sys->FD 10 1
+    const (2) int 6 0
+ecom: 
+array array of ref Sys->FD 10 1
+  const (2) int 6 0
+ecom to: 
+name p array of ref Sys->FD 0 0
+generate desc for ref Sys->FD
+generate desc for ref Sys->FD
+	desc	$-1,8,"80"
+eacom: 
+call int 10 2
+  -> fn(fds: array of ref Sys->FD): int 12 1
+    name sys Sys 1 0
+    name pipe nothing 11 1
+  seq no type 10 1
+    name p array of ref Sys->FD 0 0
+ecom: 
+call int 10 2
+  -> fn(fds: array of ref Sys->FD): int 12 1
+    name sys Sys 1 0
+    name pipe nothing 11 1
+  seq no type 10 1
+    name p array of ref Sys->FD 0 0
+ecom to: 
+name .t67 int 0 0
+generate desc for big
+ecom: 
+name p array of ref Sys->FD 0 0
+ecom to: 
+* array of ref Sys->FD 8 0
+  + int 15 0
+    name .b68 big 0 0
+    const (64) int 6 0
+ecom: 
+call no type 10 2
+  name fail fn(ctxt: self ref Context, ename: string, err: string) 11 1
+  seq nothing 10 2
+    name ctxt ref Context 0 0
+    seq no type 10 2
+      const no pipe string 1 0
+      seq no type 10 2
+        call string 10 2
+          -> fn(s: string, *): string 12 1
+            name sys Sys 1 0
+            name sprint nothing 11 1
+          seq no type 10 1
+            const sh: cannot make pipe: %r string 1 0
+generate desc for big
+ecom: 
+call string 10 2
+  -> fn(s: string, *): string 12 1
+    name sys Sys 1 0
+    name sprint nothing 11 1
+  seq no type 10 1
+    const sh: cannot make pipe: %r string 1 0
+ecom to: 
+name .t69 string 0 0
+generate desc for Sys->sprint
+descmap offset 0
+descmap s type string offset 64 (d->offset=64 start=0) returns 64
+generate desc for big
+ecom: 
+const sh: cannot make pipe: %r string 1 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b70 big 0 0
+    const (64) int 6 0
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b68 big 0 0
+    const (64) int 6 0
+ecom: 
+const no pipe string 1 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b68 big 0 0
+    const (72) int 6 0
+ecom: 
+name .t69 string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b68 big 0 0
+    const (80) int 6 0
+ecom: 
+= string 10 1
+  name .t69 string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name .t69 string 0 0
+ecom: 
+= chan of (int, ref Expropagate) 10 1
+  name startchan chan of (int, ref Expropagate) 0 0
+  chan chan of (int, ref Expropagate) 10 1
+    const (0) int 6 0
+ecom: 
+chan chan of (int, ref Expropagate) 10 1
+  const (0) int 6 0
+ecom to: 
+name startchan chan of (int, ref Expropagate) 0 0
+generate desc for (int, ref Expropagate)
+descmap adt offset 0
+descmap offset 0
+descmap t0 type int offset 0 (d->offset=0 start=0) returns -1
+descmap t1 type ref Expropagate offset 8 (d->offset=8 start=0) returns 8
+generate desc for (int, ref Expropagate)
+	desc	$-1,16,"40"
+ecom: 
+spawn nothing 10 2
+  call no type 10 2
+    name runasync fn(ctxt: ref Context, copyenv: int, argv: list of ref Listnode, redirs: ref Redirlist, startchan: chan of (int, ref Expropagate)) 11 1
+    seq no type 10 2
+      name ctxt ref Context 0 0
+      seq no type 10 2
+        const (1) int 6 0
+        seq no type 10 2
+          name cmd list of ref Listnode 0 0
+          seq no type 10 2
+            ref ref Redirlist 10 2
+              tuple Redirlist 10 2
+                seq no type 10 2
+                  :: list of (ref Sys->FD, polymorphic type, Redir) 10 2
+                    tuple (ref Sys->FD, polymorphic type, Redir) 10 2
+                      seq no type 10 2
+                        * ref Sys->FD 10 1
+                          indx big 10 1
+                            name p array of ref Sys->FD 0 0
+                            const (1) int 6 0
+                        seq no type 10 1
+                          name nil polymorphic type 1 0
+                          seq no type 10 1
+                            name r Redir 0 0
+                    name nil polymorphic type 1 0
+            seq no type 10 1
+              name startchan chan of (int, ref Expropagate) 0 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b70 big 0 0
+    const (64) int 6 0
+ecom: 
+const (1) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b70 big 0 0
+    const (72) int 6 0
+ecom: 
+name cmd list of ref Listnode 0 0
+ecom to: 
+* list of ref Listnode 8 0
+  + int 15 0
+    name .b70 big 0 0
+    const (80) int 6 0
+ecom: 
+ref ref Redirlist 10 2
+  tuple Redirlist 10 2
+    seq no type 10 2
+      :: list of (ref Sys->FD, polymorphic type, Redir) 10 2
+        tuple (ref Sys->FD, polymorphic type, Redir) 10 2
+          seq no type 10 2
+            * ref Sys->FD 10 1
+              indx big 10 1
+                name p array of ref Sys->FD 0 0
+                const (1) int 6 0
+            seq no type 10 1
+              name nil polymorphic type 1 0
+              seq no type 10 1
+                name r Redir 0 0
+        name nil polymorphic type 1 0
+ecom to: 
+* ref Redirlist 8 0
+  + int 15 0
+    name .b70 big 0 0
+    const (88) int 6 0
+generate desc for ref Redirlist
+generate desc for ref Redirlist
+	desc	$-1,8,"80"
+generate desc for Redirlist
+ecom: 
+tuple Redirlist 10 2
+  seq no type 10 2
+    :: list of (ref Sys->FD, polymorphic type, Redir) 10 2
+      tuple (ref Sys->FD, polymorphic type, Redir) 10 2
+        seq no type 10 2
+          * ref Sys->FD 10 1
+            indx big 10 1
+              name p array of ref Sys->FD 0 0
+              const (1) int 6 0
+          seq no type 10 1
+            name nil polymorphic type 1 0
+            seq no type 10 1
+              name r Redir 0 0
+      name nil polymorphic type 1 0
+ecom to: 
+* Redirlist 8 0
+  name .b71 ref Redirlist 0 0
+ecom: 
+:: list of (ref Sys->FD, polymorphic type, Redir) 10 2
+  tuple (ref Sys->FD, polymorphic type, Redir) 10 2
+    seq no type 10 2
+      * ref Sys->FD 10 1
+        indx big 10 1
+          name p array of ref Sys->FD 0 0
+          const (1) int 6 0
+      seq no type 10 1
+        name nil polymorphic type 1 0
+        seq no type 10 1
+          name r Redir 0 0
+  name nil polymorphic type 1 0
+ecom to: 
+* list of Redirword 8 0
+  + int 15 1
+    adr int 15 1
+      * Redirlist 8 0
+        name .b71 ref Redirlist 0 0
+    const (0) int 6 0
+eacom: 
+tuple (ref Sys->FD, polymorphic type, Redir) 10 2
+  seq no type 10 2
+    * ref Sys->FD 10 1
+      indx big 10 1
+        name p array of ref Sys->FD 0 0
+        const (1) int 6 0
+    seq no type 10 1
+      name nil polymorphic type 1 0
+      seq no type 10 1
+        name r Redir 0 0
+generate desc for (ref Sys->FD, polymorphic type, Redir)
+descmap adt offset 0
+descmap offset 0
+descmap t0 type ref Sys->FD offset 0 (d->offset=0 start=0) returns 0
+descmap t1 type polymorphic type offset 8 (d->offset=8 start=0) returns 8
+descmap adt offset 16
+descmap offset 16
+descmap rtype type int offset 16 (d->offset=0 start=16) returns -1
+descmap fd1 type int offset 20 (d->offset=4 start=16) returns -1
+descmap fd2 type int offset 24 (d->offset=8 start=16) returns -1
+descmap t2 type Redir offset 16 (d->offset=16 start=0) returns -1
+generate desc for (ref Sys->FD, polymorphic type, Redir)
+	desc	$-1,32,"c0"
+ecom: 
+tuple (ref Sys->FD, polymorphic type, Redir) 10 2
+  seq no type 10 2
+    * ref Sys->FD 10 1
+      indx big 10 1
+        name p array of ref Sys->FD 0 0
+        const (1) int 6 0
+    seq no type 10 1
+      name nil polymorphic type 1 0
+      seq no type 10 1
+        name r Redir 0 0
+ecom to: 
+name .b72 (ref Sys->FD, polymorphic type, Redir) 0 0
+ecom: 
+* ref Sys->FD 10 1
+  indx big 10 1
+    name p array of ref Sys->FD 0 0
+    const (1) int 6 0
+ecom to: 
+* ref Sys->FD 0 0
+  + int 13 1
+    adr int 13 1
+      name .b72 (ref Sys->FD, polymorphic type, Redir) 0 0
+    const (0) int 6 0
+eacom: 
+* ref Sys->FD 10 1
+  indx big 10 1
+    name p array of ref Sys->FD 0 0
+    const (1) int 6 0
+generate desc for big
+ecom: 
+indx big 10 1
+  name p array of ref Sys->FD 0 0
+  const (1) int 6 0
+ecom to: 
+name .b68 big 0 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* polymorphic type 0 0
+  + int 13 1
+    adr int 13 1
+      name .b72 (ref Sys->FD, polymorphic type, Redir) 0 0
+    const (8) int 6 0
+ecom: 
+name r Redir 0 0
+ecom to: 
+* Redir 0 0
+  + int 13 1
+    adr int 13 1
+      name .b72 (ref Sys->FD, polymorphic type, Redir) 0 0
+    const (16) int 6 0
+generate desc for Redir
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+name .t69 list of (ref Sys->FD, polymorphic type, Redir) 0 0
+generate desc for (ref Sys->FD, polymorphic type, Redir)
+ecom: 
+= ref Sys->FD 10 1
+  * ref Sys->FD 0 0
+    adr int 13 1
+      name .b72 (ref Sys->FD, polymorphic type, Redir) 0 0
+  name nil ref Sys->FD 1 0
+ecom: 
+name nil ref Sys->FD 1 0
+ecom to: 
+* ref Sys->FD 0 0
+  adr int 13 1
+    name .b72 (ref Sys->FD, polymorphic type, Redir) 0 0
+ecom: 
+= polymorphic type 10 1
+  * polymorphic type 0 0
+    + int 13 1
+      adr int 13 1
+        name .b72 (ref Sys->FD, polymorphic type, Redir) 0 0
+      const t1 (8) int 6 0
+  name nil polymorphic type 1 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* polymorphic type 0 0
+  + int 13 1
+    adr int 13 1
+      name .b72 (ref Sys->FD, polymorphic type, Redir) 0 0
+    const t1 (8) int 6 0
+ecom: 
+= list of (ref Sys->FD, polymorphic type, Redir) 10 1
+  name .t69 list of (ref Sys->FD, polymorphic type, Redir) 0 0
+  name nil list of (ref Sys->FD, polymorphic type, Redir) 1 0
+ecom: 
+name nil list of (ref Sys->FD, polymorphic type, Redir) 1 0
+ecom to: 
+name .t69 list of (ref Sys->FD, polymorphic type, Redir) 0 0
+ecom: 
+= ref Redirlist 10 1
+  name .b71 ref Redirlist 0 0
+  name nil ref Redirlist 1 0
+ecom: 
+name nil ref Redirlist 1 0
+ecom to: 
+name .b71 ref Redirlist 0 0
+ecom: 
+name startchan chan of (int, ref Expropagate) 0 0
+ecom to: 
+* chan of (int, ref Expropagate) 8 0
+  + int 15 0
+    name .b70 big 0 0
+    const (96) int 6 0
+ecom: 
+= ref Sys->FD 10 1
+  * ref Sys->FD 10 1
+    indx big 10 1
+      name p array of ref Sys->FD 0 0
+      const (1) int 6 0
+  name nil polymorphic type 1 0
+eacom: 
+* ref Sys->FD 10 1
+  indx big 10 1
+    name p array of ref Sys->FD 0 0
+    const (1) int 6 0
+generate desc for big
+ecom: 
+indx big 10 1
+  name p array of ref Sys->FD 0 0
+  const (1) int 6 0
+ecom to: 
+name .b70 big 0 0
+ecom: 
+name nil ref Sys->FD 1 0
+ecom to: 
+* ref Sys->FD 8 1
+  name .b70 big 0 0
+ecom: 
+<- (int, ref Expropagate) 10 1
+  name startchan chan of (int, ref Expropagate) 0 0
+generate desc for (int, ref Expropagate)
+ecom: 
+<- (int, ref Expropagate) 10 1
+  name startchan chan of (int, ref Expropagate) 0 0
+ecom to: 
+name .b73 (int, ref Expropagate) 0 0
+ecom: 
+= ref Expropagate 10 1
+  * ref Expropagate 0 0
+    + int 13 1
+      adr int 13 1
+        name .b73 (int, ref Expropagate) 0 0
+      const t1 (8) int 6 0
+  name nil ref Expropagate 1 0
+ecom: 
+name nil ref Expropagate 1 0
+ecom to: 
+* ref Expropagate 0 0
+  + int 13 1
+    adr int 13 1
+      name .b73 (int, ref Expropagate) 0 0
+    const t1 (8) int 6 0
+ecom: 
+* ref Sys->FD 10 1
+  indx big 10 1
+    name p array of ref Sys->FD 0 0
+    const (0) int 6 0
+ecom to: 
+* ref Sys->FD 8 0
+  name .ret int 0 0
+eacom: 
+* ref Sys->FD 10 1
+  indx big 10 1
+    name p array of ref Sys->FD 0 0
+    const (0) int 6 0
+generate desc for big
+ecom: 
+indx big 10 1
+  name p array of ref Sys->FD 0 0
+  const (0) int 6 0
+ecom to: 
+name .b70 big 0 0
+fn: pipecmd
+64: argument ctxt ref Context ref 3
+72: argument cmd list of ref Listnode ref 1
+80: argument redir ref Redir ref 4
+88: local .t67 int ref 1
+96: local p array of ref Sys->FD ref 5
+104: local .b68 big ref 4
+112: local .b70 big ref 4
+120: local r Redir ref 4
+136: local startchan chan of (int, ref Expropagate) ref 3
+144: local .b71 ref Redirlist ref 1
+152: local .t69 string ref 1
+160: local .b73 (int, ref Expropagate) ref 1
+176: local .b72 (ref Sys->FD, polymorphic type, Redir) ref 1
+generate desc for pipecmd
+descmap offset 0
+descmap ctxt type ref Context offset 64 (d->offset=64 start=0) returns 64
+descmap cmd type list of ref Listnode offset 72 (d->offset=72 start=0) returns 72
+descmap redir type ref Redir offset 80 (d->offset=80 start=0) returns 80
+descmap .t67 type int offset 88 (d->offset=88 start=0) returns -1
+descmap p type array of ref Sys->FD offset 96 (d->offset=96 start=0) returns 96
+descmap .b68 type big offset 104 (d->offset=104 start=0) returns -1
+descmap .b70 type big offset 112 (d->offset=112 start=0) returns -1
+descmap adt offset 120
+descmap offset 120
+descmap rtype type int offset 120 (d->offset=0 start=120) returns -1
+descmap fd1 type int offset 124 (d->offset=4 start=120) returns -1
+descmap fd2 type int offset 128 (d->offset=8 start=120) returns -1
+descmap r type Redir offset 120 (d->offset=120 start=0) returns -1
+descmap startchan type chan of (int, ref Expropagate) offset 136 (d->offset=136 start=0) returns 136
+descmap .b71 type ref Redirlist offset 144 (d->offset=144 start=0) returns 144
+descmap .t69 type string offset 152 (d->offset=152 start=0) returns 152
+descmap adt offset 160
+descmap offset 160
+descmap t0 type int offset 160 (d->offset=0 start=160) returns -1
+descmap t1 type ref Expropagate offset 168 (d->offset=8 start=160) returns 168
+descmap .b73 type (int, ref Expropagate) offset 160 (d->offset=160 start=0) returns 168
+descmap adt offset 176
+descmap offset 176
+descmap t0 type ref Sys->FD offset 176 (d->offset=0 start=176) returns 176
+descmap t1 type polymorphic type offset 184 (d->offset=8 start=176) returns 184
+descmap adt offset 192
+descmap offset 192
+descmap rtype type int offset 192 (d->offset=0 start=192) returns -1
+descmap fd1 type int offset 196 (d->offset=4 start=192) returns -1
+descmap fd2 type int offset 200 (d->offset=8 start=192) returns -1
+descmap t2 type Redir offset 192 (d->offset=16 start=176) returns -1
+descmap .b72 type (ref Sys->FD, polymorphic type, Redir) offset 176 (d->offset=176 start=0) returns 184
+fncom: glomoperation 3 418628
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* polymorphic type 8 0
+  name .ret int 0 0
+ecom: 
+= list of ref Listnode 10 1
+  name nlist list of ref Listnode 0 0
+  :: list of ref Listnode 10 1
+    ref ref Listnode 10 1
+      tuple Listnode 10 1
+        seq no type 10 1
+          name nil polymorphic type 1 0
+          seq no type 10 1
+            * string 8 0
+              + int 15 1
+                name n ref Node 0 0
+                const word (24) int 6 0
+    name nil polymorphic type 1 0
+ecom: 
+:: list of ref Listnode 10 1
+  ref ref Listnode 10 1
+    tuple Listnode 10 1
+      seq no type 10 1
+        name nil polymorphic type 1 0
+        seq no type 10 1
+          * string 8 0
+            + int 15 1
+              name n ref Node 0 0
+              const word (24) int 6 0
+  name nil polymorphic type 1 0
+ecom to: 
+name nlist list of ref Listnode 0 0
+eacom: 
+ref ref Listnode 10 1
+  tuple Listnode 10 1
+    seq no type 10 1
+      name nil polymorphic type 1 0
+      seq no type 10 1
+        * string 8 0
+          + int 15 1
+            name n ref Node 0 0
+            const word (24) int 6 0
+generate desc for ref Listnode
+generate desc for ref Listnode
+	desc	$-1,8,"80"
+ecom: 
+ref ref Listnode 10 1
+  tuple Listnode 10 1
+    seq no type 10 1
+      name nil polymorphic type 1 0
+      seq no type 10 1
+        * string 8 0
+          + int 15 1
+            name n ref Node 0 0
+            const word (24) int 6 0
+ecom to: 
+name .b74 ref Listnode 0 0
+generate desc for ref Listnode
+generate desc for Listnode
+ecom: 
+tuple Listnode 10 1
+  seq no type 10 1
+    name nil polymorphic type 1 0
+    seq no type 10 1
+      * string 8 0
+        + int 15 1
+          name n ref Node 0 0
+          const word (24) int 6 0
+ecom to: 
+* Listnode 8 0
+  name .b74 ref Listnode 0 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* ref Node 8 0
+  + int 15 1
+    adr int 15 1
+      * Listnode 8 0
+        name .b74 ref Listnode 0 0
+    const (0) int 6 0
+ecom: 
+* string 8 0
+  + int 15 1
+    name n ref Node 0 0
+    const word (24) int 6 0
+ecom to: 
+* string 8 0
+  + int 15 1
+    adr int 15 1
+      * Listnode 8 0
+        name .b74 ref Listnode 0 0
+    const (8) int 6 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+name .t75 list of ref Listnode 0 0
+ecom: 
+= ref Listnode 10 1
+  name .b74 ref Listnode 0 0
+  name nil ref Listnode 1 0
+ecom: 
+name nil ref Listnode 1 0
+ecom to: 
+name .b74 ref Listnode 0 0
+ecom: 
+= list of ref Listnode 10 1
+  name .t75 list of ref Listnode 0 0
+  name nil list of ref Listnode 1 0
+ecom: 
+name nil list of ref Listnode 1 0
+ecom to: 
+name .t75 list of ref Listnode 0 0
+ecom: 
+= list of ref Listnode 10 2
+  name wlist list of ref Listnode 0 0
+  call list of ref Listnode 10 2
+    name glob fn(nl: list of ref Listnode): list of ref Listnode 11 1
+    seq no type 10 2
+      call list of ref Listnode 10 2
+        name glom fn(ctxt: ref Context, n: ref Node, redirs: ref Redirlist, onto: list of ref Listnode): list of ref Listnode 11 1
+        seq no type 10 2
+          name ctxt ref Context 0 0
+          seq no type 10 2
+            * ref Node 8 0
+              + int 15 1
+                name n ref Node 0 0
+                const left (8) int 6 0
+            seq no type 10 2
+              ref ref Redirlist 10 1
+                tuple Redirlist 10 1
+                  seq no type 10 1
+                    name nil polymorphic type 1 0
+              seq no type 10 1
+                name nil list of ref Listnode 1 0
+ecom: 
+call list of ref Listnode 10 2
+  name glob fn(nl: list of ref Listnode): list of ref Listnode 11 1
+  seq no type 10 2
+    call list of ref Listnode 10 2
+      name glom fn(ctxt: ref Context, n: ref Node, redirs: ref Redirlist, onto: list of ref Listnode): list of ref Listnode 11 1
+      seq no type 10 2
+        name ctxt ref Context 0 0
+        seq no type 10 2
+          * ref Node 8 0
+            + int 15 1
+              name n ref Node 0 0
+              const left (8) int 6 0
+          seq no type 10 2
+            ref ref Redirlist 10 1
+              tuple Redirlist 10 1
+                seq no type 10 1
+                  name nil polymorphic type 1 0
+            seq no type 10 1
+              name nil list of ref Listnode 1 0
+ecom to: 
+name wlist list of ref Listnode 0 0
+generate desc for big
+ecom: 
+call list of ref Listnode 10 2
+  name glom fn(ctxt: ref Context, n: ref Node, redirs: ref Redirlist, onto: list of ref Listnode): list of ref Listnode 11 1
+  seq no type 10 2
+    name ctxt ref Context 0 0
+    seq no type 10 2
+      * ref Node 8 0
+        + int 15 1
+          name n ref Node 0 0
+          const left (8) int 6 0
+      seq no type 10 2
+        ref ref Redirlist 10 1
+          tuple Redirlist 10 1
+            seq no type 10 1
+              name nil polymorphic type 1 0
+        seq no type 10 1
+          name nil list of ref Listnode 1 0
+ecom to: 
+name .t75 list of ref Listnode 0 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b77 big 0 0
+    const (64) int 6 0
+ecom: 
+* ref Node 8 0
+  + int 15 1
+    name n ref Node 0 0
+    const left (8) int 6 0
+ecom to: 
+* ref Node 8 0
+  + int 15 0
+    name .b77 big 0 0
+    const (72) int 6 0
+ecom: 
+ref ref Redirlist 10 1
+  tuple Redirlist 10 1
+    seq no type 10 1
+      name nil polymorphic type 1 0
+ecom to: 
+* ref Redirlist 8 0
+  + int 15 0
+    name .b77 big 0 0
+    const (80) int 6 0
+generate desc for ref Redirlist
+generate desc for ref Redirlist
+	desc	$-1,8,"80"
+generate desc for Redirlist
+ecom: 
+tuple Redirlist 10 1
+  seq no type 10 1
+    name nil polymorphic type 1 0
+ecom to: 
+* Redirlist 8 0
+  name .b74 ref Redirlist 0 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* list of Redirword 8 0
+  + int 15 1
+    adr int 15 1
+      * Redirlist 8 0
+        name .b74 ref Redirlist 0 0
+    const (0) int 6 0
+ecom: 
+= ref Redirlist 10 1
+  name .b74 ref Redirlist 0 0
+  name nil ref Redirlist 1 0
+ecom: 
+name nil ref Redirlist 1 0
+ecom to: 
+name .b74 ref Redirlist 0 0
+ecom: 
+name nil list of ref Listnode 1 0
+ecom to: 
+* list of ref Listnode 8 0
+  + int 15 0
+    name .b77 big 0 0
+    const (88) int 6 0
+ecom: 
+name .t75 list of ref Listnode 0 0
+ecom to: 
+* list of ref Listnode 8 0
+  + int 15 0
+    name .b76 big 0 0
+    const (64) int 6 0
+ecom: 
+= list of ref Listnode 10 1
+  name .t75 list of ref Listnode 0 0
+  name nil list of ref Listnode 1 0
+ecom: 
+name nil list of ref Listnode 1 0
+ecom to: 
+name .t75 list of ref Listnode 0 0
+eacom: 
+len int 10 1
+  name wlist list of ref Listnode 0 0
+ecom: 
+len int 10 1
+  name wlist list of ref Listnode 0 0
+ecom to: 
+name .t78 int 0 0
+ecom: 
+call no type 10 2
+  name fail fn(ctxt: self ref Context, ename: string, err: string) 11 1
+  seq nothing 10 1
+    name ctxt ref Context 0 0
+    seq no type 10 1
+      const bad redir string 1 0
+      seq no type 10 1
+        const sh: single redirection operand required string 1 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b77 big 0 0
+    const (64) int 6 0
+ecom: 
+const bad redir string 1 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b77 big 0 0
+    const (72) int 6 0
+ecom: 
+const sh: single redirection operand required string 1 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b77 big 0 0
+    const (80) int 6 0
+eacom: 
+* ref Node 10 1
+  hd ref Listnode 10 1
+    name wlist list of ref Listnode 0 0
+generate desc for ref Listnode
+generate desc for ref Listnode
+	desc	$-1,8,"80"
+ecom: 
+hd ref Listnode 10 1
+  name wlist list of ref Listnode 0 0
+ecom to: 
+name .b74 ref Listnode 0 0
+ecom: 
+= ref Listnode 10 1
+  name .b74 ref Listnode 0 0
+  name nil ref Listnode 1 0
+ecom: 
+name nil ref Listnode 1 0
+ecom to: 
+name .b74 ref Listnode 0 0
+ecom: 
+= ref Sys->FD 10 2
+  name fd ref Sys->FD 0 0
+  call ref Sys->FD 10 2
+    name pipecmd fn(ctxt: ref Context, cmd: list of ref Listnode, redir: ref Redir): ref Sys->FD 11 1
+    seq no type 10 1
+      name ctxt ref Context 0 0
+      seq no type 10 1
+        name wlist list of ref Listnode 0 0
+        seq no type 10 1
+          * ref Redir 8 0
+            + int 15 1
+              name n ref Node 0 0
+              const redir (32) int 6 0
+ecom: 
+call ref Sys->FD 10 2
+  name pipecmd fn(ctxt: ref Context, cmd: list of ref Listnode, redir: ref Redir): ref Sys->FD 11 1
+  seq no type 10 1
+    name ctxt ref Context 0 0
+    seq no type 10 1
+      name wlist list of ref Listnode 0 0
+      seq no type 10 1
+        * ref Redir 8 0
+          + int 15 1
+            name n ref Node 0 0
+            const redir (32) int 6 0
+ecom to: 
+name fd ref Sys->FD 0 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b77 big 0 0
+    const (64) int 6 0
+ecom: 
+name wlist list of ref Listnode 0 0
+ecom to: 
+* list of ref Listnode 8 0
+  + int 15 0
+    name .b77 big 0 0
+    const (72) int 6 0
+ecom: 
+* ref Redir 8 0
+  + int 15 1
+    name n ref Node 0 0
+    const redir (32) int 6 0
+ecom to: 
+* ref Redir 8 0
+  + int 15 0
+    name .b77 big 0 0
+    const (80) int 6 0
+ecom: 
+= list of Redirword 10 2
+  * list of Redirword 8 0
+    name redirs ref Redirlist 0 0
+  :: list of Redirword 10 2
+    tuple Redirword 10 2
+      seq no type 10 2
+        name fd ref Sys->FD 0 0
+        seq no type 10 2
+          name nil polymorphic type 1 0
+          seq no type 10 2
+            tuple (int, int, int) 10 2
+              seq no type 10 2
+                * int 10 1
+                  * ref Redir 8 0
+                    + int 15 1
+                      name n ref Node 0 0
+                      const redir (32) int 6 0
+                seq no type 10 1
+                  * int 8 0
+                    name fd ref Sys->FD 0 0
+                  seq no type 10 1
+                    const (-1) int 6 0
+    * list of Redirword 8 0
+      name redirs ref Redirlist 0 0
+ecom: 
+:: list of Redirword 10 2
+  tuple Redirword 10 2
+    seq no type 10 2
+      name fd ref Sys->FD 0 0
+      seq no type 10 2
+        name nil polymorphic type 1 0
+        seq no type 10 2
+          tuple (int, int, int) 10 2
+            seq no type 10 2
+              * int 10 1
+                * ref Redir 8 0
+                  + int 15 1
+                    name n ref Node 0 0
+                    const redir (32) int 6 0
+              seq no type 10 1
+                * int 8 0
+                  name fd ref Sys->FD 0 0
+                seq no type 10 1
+                  const (-1) int 6 0
+  * list of Redirword 8 0
+    name redirs ref Redirlist 0 0
+ecom to: 
+* list of Redirword 8 0
+  name redirs ref Redirlist 0 0
+eacom: 
+tuple Redirword 10 2
+  seq no type 10 2
+    name fd ref Sys->FD 0 0
+    seq no type 10 2
+      name nil polymorphic type 1 0
+      seq no type 10 2
+        tuple (int, int, int) 10 2
+          seq no type 10 2
+            * int 10 1
+              * ref Redir 8 0
+                + int 15 1
+                  name n ref Node 0 0
+                  const redir (32) int 6 0
+            seq no type 10 1
+              * int 8 0
+                name fd ref Sys->FD 0 0
+              seq no type 10 1
+                const (-1) int 6 0
+generate desc for Redirword
+ecom: 
+tuple Redirword 10 2
+  seq no type 10 2
+    name fd ref Sys->FD 0 0
+    seq no type 10 2
+      name nil polymorphic type 1 0
+      seq no type 10 2
+        tuple (int, int, int) 10 2
+          seq no type 10 2
+            * int 10 1
+              * ref Redir 8 0
+                + int 15 1
+                  name n ref Node 0 0
+                  const redir (32) int 6 0
+            seq no type 10 1
+              * int 8 0
+                name fd ref Sys->FD 0 0
+              seq no type 10 1
+                const (-1) int 6 0
+ecom to: 
+name .b79 Redirword 0 0
+ecom: 
+name fd ref Sys->FD 0 0
+ecom to: 
+* ref Sys->FD 0 0
+  + int 13 1
+    adr int 13 1
+      name .b79 Redirword 0 0
+    const (0) int 6 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* string 0 0
+  + int 13 1
+    adr int 13 1
+      name .b79 Redirword 0 0
+    const (8) int 6 0
+ecom: 
+tuple (int, int, int) 10 2
+  seq no type 10 2
+    * int 10 1
+      * ref Redir 8 0
+        + int 15 1
+          name n ref Node 0 0
+          const redir (32) int 6 0
+    seq no type 10 1
+      * int 8 0
+        name fd ref Sys->FD 0 0
+      seq no type 10 1
+        const (-1) int 6 0
+ecom to: 
+* Redir 0 0
+  + int 13 1
+    adr int 13 1
+      name .b79 Redirword 0 0
+    const (16) int 6 0
+ecom: 
+* int 10 1
+  * ref Redir 8 0
+    + int 15 1
+      name n ref Node 0 0
+      const redir (32) int 6 0
+ecom to: 
+* int 0 0
+  + int 13 1
+    adr int 13 1
+      * Redir 0 0
+        + int 13 1
+          adr int 13 1
+            name .b79 Redirword 0 0
+          const (16) int 6 0
+    const (0) int 6 0
+eacom: 
+* int 10 1
+  * ref Redir 8 0
+    + int 15 1
+      name n ref Node 0 0
+      const redir (32) int 6 0
+generate desc for ref Redir
+ecom: 
+* ref Redir 8 0
+  + int 15 1
+    name n ref Node 0 0
+    const redir (32) int 6 0
+ecom to: 
+name .b74 ref Redir 0 0
+ecom: 
+= ref Redir 10 1
+  name .b74 ref Redir 0 0
+  name nil ref Redir 1 0
+ecom: 
+name nil ref Redir 1 0
+ecom to: 
+name .b74 ref Redir 0 0
+ecom: 
+* int 8 0
+  name fd ref Sys->FD 0 0
+ecom to: 
+* int 0 0
+  + int 13 1
+    adr int 13 1
+      * Redir 0 0
+        + int 13 1
+          adr int 13 1
+            name .b79 Redirword 0 0
+          const (16) int 6 0
+    const (4) int 6 0
+ecom: 
+const (-1) int 6 0
+ecom to: 
+* int 0 0
+  + int 13 1
+    adr int 13 1
+      * Redir 0 0
+        + int 13 1
+          adr int 13 1
+            name .b79 Redirword 0 0
+          const (16) int 6 0
+    const (8) int 6 0
+generate desc for Redirword
+ecom: 
+= ref Sys->FD 10 1
+  * ref Sys->FD 0 0
+    adr int 13 1
+      name .b79 Redirword 0 0
+  name nil ref Sys->FD 1 0
+ecom: 
+name nil ref Sys->FD 1 0
+ecom to: 
+* ref Sys->FD 0 0
+  adr int 13 1
+    name .b79 Redirword 0 0
+ecom: 
+= string 10 1
+  * string 0 0
+    + int 13 1
+      adr int 13 1
+        name .b79 Redirword 0 0
+      const w (8) int 6 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+* string 0 0
+  + int 13 1
+    adr int 13 1
+      name .b79 Redirword 0 0
+    const w (8) int 6 0
+ecom: 
+= list of ref Listnode 10 1
+  name nlist list of ref Listnode 0 0
+  :: list of ref Listnode 10 1
+    ref ref Listnode 10 1
+      tuple Listnode 10 1
+        seq no type 10 1
+          name nil polymorphic type 1 0
+          seq no type 10 1
+            + string 10 1
+              const /fd/ string 1 0
+              cast string 10 1
+                * int 8 0
+                  name fd ref Sys->FD 0 0
+    name nil polymorphic type 1 0
+ecom: 
+:: list of ref Listnode 10 1
+  ref ref Listnode 10 1
+    tuple Listnode 10 1
+      seq no type 10 1
+        name nil polymorphic type 1 0
+        seq no type 10 1
+          + string 10 1
+            const /fd/ string 1 0
+            cast string 10 1
+              * int 8 0
+                name fd ref Sys->FD 0 0
+  name nil polymorphic type 1 0
+ecom to: 
+name nlist list of ref Listnode 0 0
+eacom: 
+ref ref Listnode 10 1
+  tuple Listnode 10 1
+    seq no type 10 1
+      name nil polymorphic type 1 0
+      seq no type 10 1
+        + string 10 1
+          const /fd/ string 1 0
+          cast string 10 1
+            * int 8 0
+              name fd ref Sys->FD 0 0
+generate desc for ref Listnode
+generate desc for ref Listnode
+	desc	$-1,8,"80"
+ecom: 
+ref ref Listnode 10 1
+  tuple Listnode 10 1
+    seq no type 10 1
+      name nil polymorphic type 1 0
+      seq no type 10 1
+        + string 10 1
+          const /fd/ string 1 0
+          cast string 10 1
+            * int 8 0
+              name fd ref Sys->FD 0 0
+ecom to: 
+name .b74 ref Listnode 0 0
+generate desc for ref Listnode
+generate desc for Listnode
+ecom: 
+tuple Listnode 10 1
+  seq no type 10 1
+    name nil polymorphic type 1 0
+    seq no type 10 1
+      + string 10 1
+        const /fd/ string 1 0
+        cast string 10 1
+          * int 8 0
+            name fd ref Sys->FD 0 0
+ecom to: 
+* Listnode 8 0
+  name .b74 ref Listnode 0 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* ref Node 8 0
+  + int 15 1
+    adr int 15 1
+      * Listnode 8 0
+        name .b74 ref Listnode 0 0
+    const (0) int 6 0
+ecom: 
++ string 10 1
+  const /fd/ string 1 0
+  cast string 10 1
+    * int 8 0
+      name fd ref Sys->FD 0 0
+ecom to: 
+* string 8 0
+  + int 15 1
+    adr int 15 1
+      * Listnode 8 0
+        name .b74 ref Listnode 0 0
+    const (8) int 6 0
+eacom: 
+cast string 10 1
+  * int 8 0
+    name fd ref Sys->FD 0 0
+ecom: 
+cast string 10 1
+  * int 8 0
+    name fd ref Sys->FD 0 0
+ecom to: 
+name .t75 string 0 0
+ecom: 
+= string 10 1
+  name .t75 string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name .t75 string 0 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+name .t75 list of ref Listnode 0 0
+ecom: 
+= ref Listnode 10 1
+  name .b74 ref Listnode 0 0
+  name nil ref Listnode 1 0
+ecom: 
+name nil ref Listnode 1 0
+ecom to: 
+name .b74 ref Listnode 0 0
+ecom: 
+= list of ref Listnode 10 1
+  name .t75 list of ref Listnode 0 0
+  name nil list of ref Listnode 1 0
+ecom: 
+name nil list of ref Listnode 1 0
+ecom to: 
+name .t75 list of ref Listnode 0 0
+ecom: 
+= ref Sys->FD 10 1
+  name fd ref Sys->FD 0 0
+  name nil ref Sys->FD 1 0
+ecom: 
+name nil ref Sys->FD 1 0
+ecom to: 
+name fd ref Sys->FD 0 0
+ecom: 
+= list of Redirword 10 2
+  * list of Redirword 8 0
+    name redirs ref Redirlist 0 0
+  :: list of Redirword 10 2
+    tuple Redirword 10 2
+      seq no type 10 2
+        name nil polymorphic type 1 0
+        seq no type 10 2
+          * string 10 1
+            + int 10 1
+              hd ref Listnode 10 1
+                name wlist list of ref Listnode 0 0
+              const word (8) int 6 0
+          seq no type 10 1
+            * Redir 10 1
+              * ref Redir 8 0
+                + int 15 1
+                  name n ref Node 0 0
+                  const redir (32) int 6 0
+    * list of Redirword 8 0
+      name redirs ref Redirlist 0 0
+ecom: 
+:: list of Redirword 10 2
+  tuple Redirword 10 2
+    seq no type 10 2
+      name nil polymorphic type 1 0
+      seq no type 10 2
+        * string 10 1
+          + int 10 1
+            hd ref Listnode 10 1
+              name wlist list of ref Listnode 0 0
+            const word (8) int 6 0
+        seq no type 10 1
+          * Redir 10 1
+            * ref Redir 8 0
+              + int 15 1
+                name n ref Node 0 0
+                const redir (32) int 6 0
+  * list of Redirword 8 0
+    name redirs ref Redirlist 0 0
+ecom to: 
+* list of Redirword 8 0
+  name redirs ref Redirlist 0 0
+eacom: 
+tuple Redirword 10 2
+  seq no type 10 2
+    name nil polymorphic type 1 0
+    seq no type 10 2
+      * string 10 1
+        + int 10 1
+          hd ref Listnode 10 1
+            name wlist list of ref Listnode 0 0
+          const word (8) int 6 0
+      seq no type 10 1
+        * Redir 10 1
+          * ref Redir 8 0
+            + int 15 1
+              name n ref Node 0 0
+              const redir (32) int 6 0
+generate desc for Redirword
+ecom: 
+tuple Redirword 10 2
+  seq no type 10 2
+    name nil polymorphic type 1 0
+    seq no type 10 2
+      * string 10 1
+        + int 10 1
+          hd ref Listnode 10 1
+            name wlist list of ref Listnode 0 0
+          const word (8) int 6 0
+      seq no type 10 1
+        * Redir 10 1
+          * ref Redir 8 0
+            + int 15 1
+              name n ref Node 0 0
+              const redir (32) int 6 0
+ecom to: 
+name .b79 Redirword 0 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* ref Sys->FD 0 0
+  + int 13 1
+    adr int 13 1
+      name .b79 Redirword 0 0
+    const (0) int 6 0
+ecom: 
+* string 10 1
+  + int 10 1
+    hd ref Listnode 10 1
+      name wlist list of ref Listnode 0 0
+    const word (8) int 6 0
+ecom to: 
+* string 0 0
+  + int 13 1
+    adr int 13 1
+      name .b79 Redirword 0 0
+    const (8) int 6 0
+eacom: 
+* string 10 1
+  + int 10 1
+    hd ref Listnode 10 1
+      name wlist list of ref Listnode 0 0
+    const word (8) int 6 0
+generate desc for ref Listnode
+ecom: 
+hd ref Listnode 10 1
+  name wlist list of ref Listnode 0 0
+ecom to: 
+name .b74 ref Listnode 0 0
+ecom: 
+= ref Listnode 10 1
+  name .b74 ref Listnode 0 0
+  name nil ref Listnode 1 0
+ecom: 
+name nil ref Listnode 1 0
+ecom to: 
+name .b74 ref Listnode 0 0
+ecom: 
+* Redir 10 1
+  * ref Redir 8 0
+    + int 15 1
+      name n ref Node 0 0
+      const redir (32) int 6 0
+ecom to: 
+* Redir 0 0
+  + int 13 1
+    adr int 13 1
+      name .b79 Redirword 0 0
+    const (16) int 6 0
+eacom: 
+* Redir 10 1
+  * ref Redir 8 0
+    + int 15 1
+      name n ref Node 0 0
+      const redir (32) int 6 0
+generate desc for ref Redir
+ecom: 
+* ref Redir 8 0
+  + int 15 1
+    name n ref Node 0 0
+    const redir (32) int 6 0
+ecom to: 
+name .b74 ref Redir 0 0
+generate desc for Redir
+ecom: 
+= ref Redir 10 1
+  name .b74 ref Redir 0 0
+  name nil ref Redir 1 0
+ecom: 
+name nil ref Redir 1 0
+ecom to: 
+name .b74 ref Redir 0 0
+generate desc for Redirword
+ecom: 
+= ref Sys->FD 10 1
+  * ref Sys->FD 0 0
+    adr int 13 1
+      name .b79 Redirword 0 0
+  name nil ref Sys->FD 1 0
+ecom: 
+name nil ref Sys->FD 1 0
+ecom to: 
+* ref Sys->FD 0 0
+  adr int 13 1
+    name .b79 Redirword 0 0
+ecom: 
+= string 10 1
+  * string 0 0
+    + int 13 1
+      adr int 13 1
+        name .b79 Redirword 0 0
+      const w (8) int 6 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+* string 0 0
+  + int 13 1
+    adr int 13 1
+      name .b79 Redirword 0 0
+    const w (8) int 6 0
+ecom: 
+= list of ref Listnode 10 1
+  name wlist list of ref Listnode 0 0
+  name nil list of ref Listnode 1 0
+ecom: 
+name nil list of ref Listnode 1 0
+ecom to: 
+name wlist list of ref Listnode 0 0
+ecom: 
+= list of Redirword 10 1
+  * list of Redirword 8 0
+    name redirs ref Redirlist 0 0
+  :: list of Redirword 10 1
+    tuple Redirword 10 1
+      seq no type 10 1
+        name nil polymorphic type 1 0
+        seq no type 10 1
+          const  string 1 0
+          seq no type 10 1
+            * Redir 10 1
+              * ref Redir 8 0
+                + int 15 1
+                  name n ref Node 0 0
+                  const redir (32) int 6 0
+    * list of Redirword 8 0
+      name redirs ref Redirlist 0 0
+ecom: 
+:: list of Redirword 10 1
+  tuple Redirword 10 1
+    seq no type 10 1
+      name nil polymorphic type 1 0
+      seq no type 10 1
+        const  string 1 0
+        seq no type 10 1
+          * Redir 10 1
+            * ref Redir 8 0
+              + int 15 1
+                name n ref Node 0 0
+                const redir (32) int 6 0
+  * list of Redirword 8 0
+    name redirs ref Redirlist 0 0
+ecom to: 
+* list of Redirword 8 0
+  name redirs ref Redirlist 0 0
+eacom: 
+tuple Redirword 10 1
+  seq no type 10 1
+    name nil polymorphic type 1 0
+    seq no type 10 1
+      const  string 1 0
+      seq no type 10 1
+        * Redir 10 1
+          * ref Redir 8 0
+            + int 15 1
+              name n ref Node 0 0
+              const redir (32) int 6 0
+generate desc for Redirword
+ecom: 
+tuple Redirword 10 1
+  seq no type 10 1
+    name nil polymorphic type 1 0
+    seq no type 10 1
+      const  string 1 0
+      seq no type 10 1
+        * Redir 10 1
+          * ref Redir 8 0
+            + int 15 1
+              name n ref Node 0 0
+              const redir (32) int 6 0
+ecom to: 
+name .b79 Redirword 0 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* ref Sys->FD 0 0
+  + int 13 1
+    adr int 13 1
+      name .b79 Redirword 0 0
+    const (0) int 6 0
+ecom: 
+const  string 1 0
+ecom to: 
+* string 0 0
+  + int 13 1
+    adr int 13 1
+      name .b79 Redirword 0 0
+    const (8) int 6 0
+ecom: 
+* Redir 10 1
+  * ref Redir 8 0
+    + int 15 1
+      name n ref Node 0 0
+      const redir (32) int 6 0
+ecom to: 
+* Redir 0 0
+  + int 13 1
+    adr int 13 1
+      name .b79 Redirword 0 0
+    const (16) int 6 0
+eacom: 
+* Redir 10 1
+  * ref Redir 8 0
+    + int 15 1
+      name n ref Node 0 0
+      const redir (32) int 6 0
+generate desc for ref Redir
+ecom: 
+* ref Redir 8 0
+  + int 15 1
+    name n ref Node 0 0
+    const redir (32) int 6 0
+ecom to: 
+name .b74 ref Redir 0 0
+generate desc for Redir
+ecom: 
+= ref Redir 10 1
+  name .b74 ref Redir 0 0
+  name nil ref Redir 1 0
+ecom: 
+name nil ref Redir 1 0
+ecom to: 
+name .b74 ref Redir 0 0
+generate desc for Redirword
+ecom: 
+= ref Sys->FD 10 1
+  * ref Sys->FD 0 0
+    adr int 13 1
+      name .b79 Redirword 0 0
+  name nil ref Sys->FD 1 0
+ecom: 
+name nil ref Sys->FD 1 0
+ecom to: 
+* ref Sys->FD 0 0
+  adr int 13 1
+    name .b79 Redirword 0 0
+ecom: 
+= string 10 1
+  * string 0 0
+    + int 13 1
+      adr int 13 1
+        name .b79 Redirword 0 0
+      const w (8) int 6 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+* string 0 0
+  + int 13 1
+    adr int 13 1
+      name .b79 Redirword 0 0
+    const w (8) int 6 0
+ecom: 
+= list of ref Listnode 10 2
+  name nlist list of ref Listnode 0 0
+  call list of ref Listnode 10 2
+    name glom fn(ctxt: ref Context, n: ref Node, redirs: ref Redirlist, onto: list of ref Listnode): list of ref Listnode 11 1
+    seq no type 10 1
+      name ctxt ref Context 0 0
+      seq no type 10 1
+        * ref Node 8 0
+          + int 15 1
+            name n ref Node 0 0
+            const left (8) int 6 0
+        seq no type 10 1
+          name redirs ref Redirlist 0 0
+          seq no type 10 1
+            name nil list of ref Listnode 1 0
+ecom: 
+call list of ref Listnode 10 2
+  name glom fn(ctxt: ref Context, n: ref Node, redirs: ref Redirlist, onto: list of ref Listnode): list of ref Listnode 11 1
+  seq no type 10 1
+    name ctxt ref Context 0 0
+    seq no type 10 1
+      * ref Node 8 0
+        + int 15 1
+          name n ref Node 0 0
+          const left (8) int 6 0
+      seq no type 10 1
+        name redirs ref Redirlist 0 0
+        seq no type 10 1
+          name nil list of ref Listnode 1 0
+ecom to: 
+name nlist list of ref Listnode 0 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b77 big 0 0
+    const (64) int 6 0
+ecom: 
+* ref Node 8 0
+  + int 15 1
+    name n ref Node 0 0
+    const left (8) int 6 0
+ecom to: 
+* ref Node 8 0
+  + int 15 0
+    name .b77 big 0 0
+    const (72) int 6 0
+ecom: 
+name redirs ref Redirlist 0 0
+ecom to: 
+* ref Redirlist 8 0
+  + int 15 0
+    name .b77 big 0 0
+    const (80) int 6 0
+ecom: 
+name nil list of ref Listnode 1 0
+ecom to: 
+* list of ref Listnode 8 0
+  + int 15 0
+    name .b77 big 0 0
+    const (88) int 6 0
+ecom: 
+= list of ref Listnode 10 3
+  name nlist list of ref Listnode 0 0
+  call list of ref Listnode 10 3
+    name concat fn(ctxt: ref Context, nl1: list of ref Listnode, nl2: list of ref Listnode): list of ref Listnode 11 1
+    seq no type 10 3
+      name ctxt ref Context 0 0
+      seq no type 10 3
+        call list of ref Listnode 10 2
+          name glom fn(ctxt: ref Context, n: ref Node, redirs: ref Redirlist, onto: list of ref Listnode): list of ref Listnode 11 1
+          seq no type 10 1
+            name ctxt ref Context 0 0
+            seq no type 10 1
+              * ref Node 8 0
+                + int 15 1
+                  name n ref Node 0 0
+                  const left (8) int 6 0
+              seq no type 10 1
+                name redirs ref Redirlist 0 0
+                seq no type 10 1
+                  name nil list of ref Listnode 1 0
+        seq no type 10 2
+          call list of ref Listnode 10 2
+            name glom fn(ctxt: ref Context, n: ref Node, redirs: ref Redirlist, onto: list of ref Listnode): list of ref Listnode 11 1
+            seq no type 10 1
+              name ctxt ref Context 0 0
+              seq no type 10 1
+                * ref Node 8 0
+                  + int 15 1
+                    name n ref Node 0 0
+                    const right (16) int 6 0
+                seq no type 10 1
+                  name redirs ref Redirlist 0 0
+                  seq no type 10 1
+                    name nil list of ref Listnode 1 0
+ecom: 
+call list of ref Listnode 10 3
+  name concat fn(ctxt: ref Context, nl1: list of ref Listnode, nl2: list of ref Listnode): list of ref Listnode 11 1
+  seq no type 10 3
+    name ctxt ref Context 0 0
+    seq no type 10 3
+      call list of ref Listnode 10 2
+        name glom fn(ctxt: ref Context, n: ref Node, redirs: ref Redirlist, onto: list of ref Listnode): list of ref Listnode 11 1
+        seq no type 10 1
+          name ctxt ref Context 0 0
+          seq no type 10 1
+            * ref Node 8 0
+              + int 15 1
+                name n ref Node 0 0
+                const left (8) int 6 0
+            seq no type 10 1
+              name redirs ref Redirlist 0 0
+              seq no type 10 1
+                name nil list of ref Listnode 1 0
+      seq no type 10 2
+        call list of ref Listnode 10 2
+          name glom fn(ctxt: ref Context, n: ref Node, redirs: ref Redirlist, onto: list of ref Listnode): list of ref Listnode 11 1
+          seq no type 10 1
+            name ctxt ref Context 0 0
+            seq no type 10 1
+              * ref Node 8 0
+                + int 15 1
+                  name n ref Node 0 0
+                  const right (16) int 6 0
+              seq no type 10 1
+                name redirs ref Redirlist 0 0
+                seq no type 10 1
+                  name nil list of ref Listnode 1 0
+ecom to: 
+name nlist list of ref Listnode 0 0
+generate desc for big
+ecom: 
+call list of ref Listnode 10 2
+  name glom fn(ctxt: ref Context, n: ref Node, redirs: ref Redirlist, onto: list of ref Listnode): list of ref Listnode 11 1
+  seq no type 10 1
+    name ctxt ref Context 0 0
+    seq no type 10 1
+      * ref Node 8 0
+        + int 15 1
+          name n ref Node 0 0
+          const left (8) int 6 0
+      seq no type 10 1
+        name redirs ref Redirlist 0 0
+        seq no type 10 1
+          name nil list of ref Listnode 1 0
+ecom to: 
+name .t75 list of ref Listnode 0 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b76 big 0 0
+    const (64) int 6 0
+ecom: 
+* ref Node 8 0
+  + int 15 1
+    name n ref Node 0 0
+    const left (8) int 6 0
+ecom to: 
+* ref Node 8 0
+  + int 15 0
+    name .b76 big 0 0
+    const (72) int 6 0
+ecom: 
+name redirs ref Redirlist 0 0
+ecom to: 
+* ref Redirlist 8 0
+  + int 15 0
+    name .b76 big 0 0
+    const (80) int 6 0
+ecom: 
+name nil list of ref Listnode 1 0
+ecom to: 
+* list of ref Listnode 8 0
+  + int 15 0
+    name .b76 big 0 0
+    const (88) int 6 0
+ecom: 
+call list of ref Listnode 10 2
+  name glom fn(ctxt: ref Context, n: ref Node, redirs: ref Redirlist, onto: list of ref Listnode): list of ref Listnode 11 1
+  seq no type 10 1
+    name ctxt ref Context 0 0
+    seq no type 10 1
+      * ref Node 8 0
+        + int 15 1
+          name n ref Node 0 0
+          const right (16) int 6 0
+      seq no type 10 1
+        name redirs ref Redirlist 0 0
+        seq no type 10 1
+          name nil list of ref Listnode 1 0
+ecom to: 
+name .t80 list of ref Listnode 0 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b76 big 0 0
+    const (64) int 6 0
+ecom: 
+* ref Node 8 0
+  + int 15 1
+    name n ref Node 0 0
+    const right (16) int 6 0
+ecom to: 
+* ref Node 8 0
+  + int 15 0
+    name .b76 big 0 0
+    const (72) int 6 0
+ecom: 
+name redirs ref Redirlist 0 0
+ecom to: 
+* ref Redirlist 8 0
+  + int 15 0
+    name .b76 big 0 0
+    const (80) int 6 0
+ecom: 
+name nil list of ref Listnode 1 0
+ecom to: 
+* list of ref Listnode 8 0
+  + int 15 0
+    name .b76 big 0 0
+    const (88) int 6 0
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b77 big 0 0
+    const (64) int 6 0
+ecom: 
+name .t75 list of ref Listnode 0 0
+ecom to: 
+* list of ref Listnode 8 0
+  + int 15 0
+    name .b77 big 0 0
+    const (72) int 6 0
+ecom: 
+= list of ref Listnode 10 1
+  name .t75 list of ref Listnode 0 0
+  name nil list of ref Listnode 1 0
+ecom: 
+name nil list of ref Listnode 1 0
+ecom to: 
+name .t75 list of ref Listnode 0 0
+ecom: 
+name .t80 list of ref Listnode 0 0
+ecom to: 
+* list of ref Listnode 8 0
+  + int 15 0
+    name .b77 big 0 0
+    const (80) int 6 0
+ecom: 
+= list of ref Listnode 10 1
+  name .t80 list of ref Listnode 0 0
+  name nil list of ref Listnode 1 0
+ecom: 
+name nil list of ref Listnode 1 0
+ecom to: 
+name .t80 list of ref Listnode 0 0
+ecom: 
+= list of ref Listnode 10 2
+  name arg list of ref Listnode 0 0
+  call list of ref Listnode 10 2
+    name glom fn(ctxt: ref Context, n: ref Node, redirs: ref Redirlist, onto: list of ref Listnode): list of ref Listnode 11 1
+    seq no type 10 2
+      name ctxt ref Context 0 0
+      seq no type 10 2
+        * ref Node 8 0
+          + int 15 1
+            name n ref Node 0 0
+            const left (8) int 6 0
+        seq no type 10 2
+          ref ref Redirlist 10 1
+            tuple Redirlist 10 1
+              seq no type 10 1
+                name nil polymorphic type 1 0
+          seq no type 10 1
+            name nil list of ref Listnode 1 0
+ecom: 
+call list of ref Listnode 10 2
+  name glom fn(ctxt: ref Context, n: ref Node, redirs: ref Redirlist, onto: list of ref Listnode): list of ref Listnode 11 1
+  seq no type 10 2
+    name ctxt ref Context 0 0
+    seq no type 10 2
+      * ref Node 8 0
+        + int 15 1
+          name n ref Node 0 0
+          const left (8) int 6 0
+      seq no type 10 2
+        ref ref Redirlist 10 1
+          tuple Redirlist 10 1
+            seq no type 10 1
+              name nil polymorphic type 1 0
+        seq no type 10 1
+          name nil list of ref Listnode 1 0
+ecom to: 
+name arg list of ref Listnode 0 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b77 big 0 0
+    const (64) int 6 0
+ecom: 
+* ref Node 8 0
+  + int 15 1
+    name n ref Node 0 0
+    const left (8) int 6 0
+ecom to: 
+* ref Node 8 0
+  + int 15 0
+    name .b77 big 0 0
+    const (72) int 6 0
+ecom: 
+ref ref Redirlist 10 1
+  tuple Redirlist 10 1
+    seq no type 10 1
+      name nil polymorphic type 1 0
+ecom to: 
+* ref Redirlist 8 0
+  + int 15 0
+    name .b77 big 0 0
+    const (80) int 6 0
+generate desc for ref Redirlist
+generate desc for ref Redirlist
+	desc	$-1,8,"80"
+generate desc for Redirlist
+ecom: 
+tuple Redirlist 10 1
+  seq no type 10 1
+    name nil polymorphic type 1 0
+ecom to: 
+* Redirlist 8 0
+  name .b74 ref Redirlist 0 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* list of Redirword 8 0
+  + int 15 1
+    adr int 15 1
+      * Redirlist 8 0
+        name .b74 ref Redirlist 0 0
+    const (0) int 6 0
+ecom: 
+= ref Redirlist 10 1
+  name .b74 ref Redirlist 0 0
+  name nil ref Redirlist 1 0
+ecom: 
+name nil ref Redirlist 1 0
+ecom to: 
+name .b74 ref Redirlist 0 0
+ecom: 
+name nil list of ref Listnode 1 0
+ecom to: 
+* list of ref Listnode 8 0
+  + int 15 0
+    name .b77 big 0 0
+    const (88) int 6 0
+eacom: 
+len int 10 1
+  name arg list of ref Listnode 0 0
+ecom: 
+len int 10 1
+  name arg list of ref Listnode 0 0
+ecom to: 
+name .t78 int 0 0
+eacom: 
+* ref Node 10 1
+  hd ref Listnode 10 1
+    name arg list of ref Listnode 0 0
+generate desc for ref Listnode
+ecom: 
+hd ref Listnode 10 1
+  name arg list of ref Listnode 0 0
+ecom to: 
+name .b74 ref Listnode 0 0
+ecom: 
+= ref Listnode 10 1
+  name .b74 ref Listnode 0 0
+  name nil ref Listnode 1 0
+ecom: 
+name nil ref Listnode 1 0
+ecom to: 
+name .b74 ref Listnode 0 0
+ecom: 
+= list of ref Listnode 10 2
+  name nlist list of ref Listnode 0 0
+  call list of ref Listnode 10 2
+    name subsbuiltin fn(ctxt: ref Context, n: ref Node): list of ref Listnode 11 1
+    seq no type 10 1
+      name ctxt ref Context 0 0
+      seq no type 10 1
+        * ref Node 10 1
+          + int 10 1
+            * ref Node 10 1
+              hd ref Listnode 10 1
+                name arg list of ref Listnode 0 0
+            const left (8) int 6 0
+ecom: 
+call list of ref Listnode 10 2
+  name subsbuiltin fn(ctxt: ref Context, n: ref Node): list of ref Listnode 11 1
+  seq no type 10 1
+    name ctxt ref Context 0 0
+    seq no type 10 1
+      * ref Node 10 1
+        + int 10 1
+          * ref Node 10 1
+            hd ref Listnode 10 1
+              name arg list of ref Listnode 0 0
+          const left (8) int 6 0
+ecom to: 
+name nlist list of ref Listnode 0 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b77 big 0 0
+    const (64) int 6 0
+ecom: 
+* ref Node 10 1
+  + int 10 1
+    * ref Node 10 1
+      hd ref Listnode 10 1
+        name arg list of ref Listnode 0 0
+    const left (8) int 6 0
+ecom to: 
+* ref Node 8 0
+  + int 15 0
+    name .b77 big 0 0
+    const (72) int 6 0
+eacom: 
+* ref Node 10 1
+  + int 10 1
+    * ref Node 10 1
+      hd ref Listnode 10 1
+        name arg list of ref Listnode 0 0
+    const left (8) int 6 0
+generate desc for ref Node
+generate desc for ref Node
+	desc	$-1,8,"80"
+ecom: 
+* ref Node 10 1
+  hd ref Listnode 10 1
+    name arg list of ref Listnode 0 0
+ecom to: 
+name .b74 ref Node 0 0
+eacom: 
+* ref Node 10 1
+  hd ref Listnode 10 1
+    name arg list of ref Listnode 0 0
+generate desc for ref Listnode
+ecom: 
+hd ref Listnode 10 1
+  name arg list of ref Listnode 0 0
+ecom to: 
+name .b74 ref Listnode 0 0
+ecom: 
+= ref Node 10 1
+  name .b74 ref Node 0 0
+  name nil ref Node 1 0
+ecom: 
+name nil ref Node 1 0
+ecom to: 
+name .b74 ref Node 0 0
+eacom: 
+len int 10 1
+  name arg list of ref Listnode 0 0
+ecom: 
+len int 10 1
+  name arg list of ref Listnode 0 0
+ecom to: 
+name .t78 int 0 0
+eacom: 
+* string 10 1
+  + int 10 1
+    hd ref Listnode 10 1
+      name arg list of ref Listnode 0 0
+    const word (8) int 6 0
+generate desc for ref Listnode
+ecom: 
+hd ref Listnode 10 1
+  name arg list of ref Listnode 0 0
+ecom to: 
+name .b74 ref Listnode 0 0
+ecom: 
+= ref Listnode 10 1
+  name .b74 ref Listnode 0 0
+  name nil ref Listnode 1 0
+ecom: 
+name nil ref Listnode 1 0
+ecom to: 
+name .b74 ref Listnode 0 0
+ecom: 
+call no type 10 2
+  name fail fn(ctxt: self ref Context, ename: string, err: string) 11 1
+  seq nothing 10 1
+    name ctxt ref Context 0 0
+    seq no type 10 1
+      const bad $ arg string 1 0
+      seq no type 10 1
+        const sh: bad variable name string 1 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b77 big 0 0
+    const (64) int 6 0
+ecom: 
+const bad $ arg string 1 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b77 big 0 0
+    const (72) int 6 0
+ecom: 
+const sh: bad variable name string 1 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b77 big 0 0
+    const (80) int 6 0
+ecom: 
+= list of ref Listnode 10 2
+  name nlist list of ref Listnode 0 0
+  call list of ref Listnode 10 2
+    name get fn(ctxt: self ref Context, name: string): list of ref Listnode 11 1
+    seq nothing 10 2
+      name ctxt ref Context 0 0
+      seq no type 10 2
+        call string 10 2
+          name deglob fn(s: string): string 11 1
+          seq no type 10 1
+            * string 10 1
+              + int 10 1
+                hd ref Listnode 10 1
+                  name arg list of ref Listnode 0 0
+                const word (8) int 6 0
+ecom: 
+call list of ref Listnode 10 2
+  name get fn(ctxt: self ref Context, name: string): list of ref Listnode 11 1
+  seq nothing 10 2
+    name ctxt ref Context 0 0
+    seq no type 10 2
+      call string 10 2
+        name deglob fn(s: string): string 11 1
+        seq no type 10 1
+          * string 10 1
+            + int 10 1
+              hd ref Listnode 10 1
+                name arg list of ref Listnode 0 0
+              const word (8) int 6 0
+ecom to: 
+name nlist list of ref Listnode 0 0
+generate desc for big
+ecom: 
+call string 10 2
+  name deglob fn(s: string): string 11 1
+  seq no type 10 1
+    * string 10 1
+      + int 10 1
+        hd ref Listnode 10 1
+          name arg list of ref Listnode 0 0
+        const word (8) int 6 0
+ecom to: 
+name .t80 string 0 0
+generate desc for big
+ecom: 
+* string 10 1
+  + int 10 1
+    hd ref Listnode 10 1
+      name arg list of ref Listnode 0 0
+    const word (8) int 6 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b76 big 0 0
+    const (64) int 6 0
+eacom: 
+* string 10 1
+  + int 10 1
+    hd ref Listnode 10 1
+      name arg list of ref Listnode 0 0
+    const word (8) int 6 0
+generate desc for ref Listnode
+ecom: 
+hd ref Listnode 10 1
+  name arg list of ref Listnode 0 0
+ecom to: 
+name .b74 ref Listnode 0 0
+ecom: 
+= ref Listnode 10 1
+  name .b74 ref Listnode 0 0
+  name nil ref Listnode 1 0
+ecom: 
+name nil ref Listnode 1 0
+ecom to: 
+name .b74 ref Listnode 0 0
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b77 big 0 0
+    const (64) int 6 0
+ecom: 
+name .t80 string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b77 big 0 0
+    const (72) int 6 0
+ecom: 
+= string 10 1
+  name .t80 string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name .t80 string 0 0
+ecom: 
+= list of ref Listnode 10 1
+  name nlist list of ref Listnode 0 0
+  :: list of ref Listnode 10 1
+    ref ref Listnode 10 1
+      tuple Listnode 10 1
+        seq no type 10 1
+          name nil polymorphic type 1 0
+          seq no type 10 1
+            cast string 10 1
+              len int 10 1
+                name nlist list of ref Listnode 0 0
+    name nil polymorphic type 1 0
+ecom: 
+:: list of ref Listnode 10 1
+  ref ref Listnode 10 1
+    tuple Listnode 10 1
+      seq no type 10 1
+        name nil polymorphic type 1 0
+        seq no type 10 1
+          cast string 10 1
+            len int 10 1
+              name nlist list of ref Listnode 0 0
+  name nil polymorphic type 1 0
+ecom to: 
+name nlist list of ref Listnode 0 0
+eacom: 
+ref ref Listnode 10 1
+  tuple Listnode 10 1
+    seq no type 10 1
+      name nil polymorphic type 1 0
+      seq no type 10 1
+        cast string 10 1
+          len int 10 1
+            name nlist list of ref Listnode 0 0
+generate desc for ref Listnode
+generate desc for ref Listnode
+	desc	$-1,8,"80"
+ecom: 
+ref ref Listnode 10 1
+  tuple Listnode 10 1
+    seq no type 10 1
+      name nil polymorphic type 1 0
+      seq no type 10 1
+        cast string 10 1
+          len int 10 1
+            name nlist list of ref Listnode 0 0
+ecom to: 
+name .b74 ref Listnode 0 0
+generate desc for ref Listnode
+generate desc for Listnode
+ecom: 
+tuple Listnode 10 1
+  seq no type 10 1
+    name nil polymorphic type 1 0
+    seq no type 10 1
+      cast string 10 1
+        len int 10 1
+          name nlist list of ref Listnode 0 0
+ecom to: 
+* Listnode 8 0
+  name .b74 ref Listnode 0 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* ref Node 8 0
+  + int 15 1
+    adr int 15 1
+      * Listnode 8 0
+        name .b74 ref Listnode 0 0
+    const (0) int 6 0
+ecom: 
+cast string 10 1
+  len int 10 1
+    name nlist list of ref Listnode 0 0
+ecom to: 
+* string 8 0
+  + int 15 1
+    adr int 15 1
+      * Listnode 8 0
+        name .b74 ref Listnode 0 0
+    const (8) int 6 0
+eacom: 
+len int 10 1
+  name nlist list of ref Listnode 0 0
+ecom: 
+len int 10 1
+  name nlist list of ref Listnode 0 0
+ecom to: 
+name .t78 int 0 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+name .t80 list of ref Listnode 0 0
+ecom: 
+= ref Listnode 10 1
+  name .b74 ref Listnode 0 0
+  name nil ref Listnode 1 0
+ecom: 
+name nil ref Listnode 1 0
+ecom to: 
+name .b74 ref Listnode 0 0
+ecom: 
+= list of ref Listnode 10 1
+  name .t80 list of ref Listnode 0 0
+  name nil list of ref Listnode 1 0
+ecom: 
+name nil list of ref Listnode 1 0
+ecom to: 
+name .t80 list of ref Listnode 0 0
+ecom: 
+= list of ref Listnode 10 2
+  name nlist list of ref Listnode 0 0
+  :: list of ref Listnode 10 2
+    ref ref Listnode 10 2
+      tuple Listnode 10 2
+        seq no type 10 2
+          name nil polymorphic type 1 0
+          seq no type 10 2
+            call string 10 2
+              name squash fn(l: list of string, sep: string): string 11 1
+              seq no type 10 2
+                call list of string 10 2
+                  name list2stringlist fn(nl: list of ref Listnode): list of string 11 1
+                  seq no type 10 1
+                    name nlist list of ref Listnode 0 0
+                seq no type 10 1
+                  const   string 1 0
+    name nil polymorphic type 1 0
+ecom: 
+:: list of ref Listnode 10 2
+  ref ref Listnode 10 2
+    tuple Listnode 10 2
+      seq no type 10 2
+        name nil polymorphic type 1 0
+        seq no type 10 2
+          call string 10 2
+            name squash fn(l: list of string, sep: string): string 11 1
+            seq no type 10 2
+              call list of string 10 2
+                name list2stringlist fn(nl: list of ref Listnode): list of string 11 1
+                seq no type 10 1
+                  name nlist list of ref Listnode 0 0
+              seq no type 10 1
+                const   string 1 0
+  name nil polymorphic type 1 0
+ecom to: 
+name nlist list of ref Listnode 0 0
+eacom: 
+ref ref Listnode 10 2
+  tuple Listnode 10 2
+    seq no type 10 2
+      name nil polymorphic type 1 0
+      seq no type 10 2
+        call string 10 2
+          name squash fn(l: list of string, sep: string): string 11 1
+          seq no type 10 2
+            call list of string 10 2
+              name list2stringlist fn(nl: list of ref Listnode): list of string 11 1
+              seq no type 10 1
+                name nlist list of ref Listnode 0 0
+            seq no type 10 1
+              const   string 1 0
+generate desc for ref Listnode
+generate desc for ref Listnode
+	desc	$-1,8,"80"
+ecom: 
+ref ref Listnode 10 2
+  tuple Listnode 10 2
+    seq no type 10 2
+      name nil polymorphic type 1 0
+      seq no type 10 2
+        call string 10 2
+          name squash fn(l: list of string, sep: string): string 11 1
+          seq no type 10 2
+            call list of string 10 2
+              name list2stringlist fn(nl: list of ref Listnode): list of string 11 1
+              seq no type 10 1
+                name nlist list of ref Listnode 0 0
+            seq no type 10 1
+              const   string 1 0
+ecom to: 
+name .b74 ref Listnode 0 0
+generate desc for ref Listnode
+generate desc for Listnode
+ecom: 
+tuple Listnode 10 2
+  seq no type 10 2
+    name nil polymorphic type 1 0
+    seq no type 10 2
+      call string 10 2
+        name squash fn(l: list of string, sep: string): string 11 1
+        seq no type 10 2
+          call list of string 10 2
+            name list2stringlist fn(nl: list of ref Listnode): list of string 11 1
+            seq no type 10 1
+              name nlist list of ref Listnode 0 0
+          seq no type 10 1
+            const   string 1 0
+ecom to: 
+* Listnode 8 0
+  name .b74 ref Listnode 0 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* ref Node 8 0
+  + int 15 1
+    adr int 15 1
+      * Listnode 8 0
+        name .b74 ref Listnode 0 0
+    const (0) int 6 0
+ecom: 
+call string 10 2
+  name squash fn(l: list of string, sep: string): string 11 1
+  seq no type 10 2
+    call list of string 10 2
+      name list2stringlist fn(nl: list of ref Listnode): list of string 11 1
+      seq no type 10 1
+        name nlist list of ref Listnode 0 0
+    seq no type 10 1
+      const   string 1 0
+ecom to: 
+* string 8 0
+  + int 15 1
+    adr int 15 1
+      * Listnode 8 0
+        name .b74 ref Listnode 0 0
+    const (8) int 6 0
+generate desc for big
+ecom: 
+call list of string 10 2
+  name list2stringlist fn(nl: list of ref Listnode): list of string 11 1
+  seq no type 10 1
+    name nlist list of ref Listnode 0 0
+ecom to: 
+name .t80 list of string 0 0
+generate desc for big
+ecom: 
+name nlist list of ref Listnode 0 0
+ecom to: 
+* list of ref Listnode 8 0
+  + int 15 0
+    name .b76 big 0 0
+    const (64) int 6 0
+ecom: 
+name .t80 list of string 0 0
+ecom to: 
+* list of string 8 0
+  + int 15 0
+    name .b77 big 0 0
+    const (64) int 6 0
+ecom: 
+= list of string 10 1
+  name .t80 list of string 0 0
+  name nil list of string 1 0
+ecom: 
+name nil list of string 1 0
+ecom to: 
+name .t80 list of string 0 0
+ecom: 
+const   string 1 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b77 big 0 0
+    const (72) int 6 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+name .t80 list of ref Listnode 0 0
+ecom: 
+= ref Listnode 10 1
+  name .b74 ref Listnode 0 0
+  name nil ref Listnode 1 0
+ecom: 
+name nil ref Listnode 1 0
+ecom to: 
+name .b74 ref Listnode 0 0
+ecom: 
+= list of ref Listnode 10 1
+  name .t80 list of ref Listnode 0 0
+  name nil list of ref Listnode 1 0
+ecom: 
+name nil list of ref Listnode 1 0
+ecom to: 
+name .t80 list of ref Listnode 0 0
+ecom: 
+= list of ref Listnode 10 1
+  name arg list of ref Listnode 0 0
+  name nil list of ref Listnode 1 0
+ecom: 
+name nil list of ref Listnode 1 0
+ecom to: 
+name arg list of ref Listnode 0 0
+ecom: 
+= list of ref Listnode 10 2
+  name arg list of ref Listnode 0 0
+  call list of ref Listnode 10 2
+    name glom fn(ctxt: ref Context, n: ref Node, redirs: ref Redirlist, onto: list of ref Listnode): list of ref Listnode 11 1
+    seq no type 10 2
+      name ctxt ref Context 0 0
+      seq no type 10 2
+        * ref Node 8 0
+          + int 15 1
+            name n ref Node 0 0
+            const left (8) int 6 0
+        seq no type 10 2
+          ref ref Redirlist 10 1
+            tuple Redirlist 10 1
+              seq no type 10 1
+                name nil polymorphic type 1 0
+          seq no type 10 1
+            name nil list of ref Listnode 1 0
+ecom: 
+call list of ref Listnode 10 2
+  name glom fn(ctxt: ref Context, n: ref Node, redirs: ref Redirlist, onto: list of ref Listnode): list of ref Listnode 11 1
+  seq no type 10 2
+    name ctxt ref Context 0 0
+    seq no type 10 2
+      * ref Node 8 0
+        + int 15 1
+          name n ref Node 0 0
+          const left (8) int 6 0
+      seq no type 10 2
+        ref ref Redirlist 10 1
+          tuple Redirlist 10 1
+            seq no type 10 1
+              name nil polymorphic type 1 0
+        seq no type 10 1
+          name nil list of ref Listnode 1 0
+ecom to: 
+name arg list of ref Listnode 0 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b77 big 0 0
+    const (64) int 6 0
+ecom: 
+* ref Node 8 0
+  + int 15 1
+    name n ref Node 0 0
+    const left (8) int 6 0
+ecom to: 
+* ref Node 8 0
+  + int 15 0
+    name .b77 big 0 0
+    const (72) int 6 0
+ecom: 
+ref ref Redirlist 10 1
+  tuple Redirlist 10 1
+    seq no type 10 1
+      name nil polymorphic type 1 0
+ecom to: 
+* ref Redirlist 8 0
+  + int 15 0
+    name .b77 big 0 0
+    const (80) int 6 0
+generate desc for ref Redirlist
+generate desc for ref Redirlist
+	desc	$-1,8,"80"
+generate desc for Redirlist
+ecom: 
+tuple Redirlist 10 1
+  seq no type 10 1
+    name nil polymorphic type 1 0
+ecom to: 
+* Redirlist 8 0
+  name .b74 ref Redirlist 0 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* list of Redirword 8 0
+  + int 15 1
+    adr int 15 1
+      * Redirlist 8 0
+        name .b74 ref Redirlist 0 0
+    const (0) int 6 0
+ecom: 
+= ref Redirlist 10 1
+  name .b74 ref Redirlist 0 0
+  name nil ref Redirlist 1 0
+ecom: 
+name nil ref Redirlist 1 0
+ecom to: 
+name .b74 ref Redirlist 0 0
+ecom: 
+name nil list of ref Listnode 1 0
+ecom to: 
+* list of ref Listnode 8 0
+  + int 15 0
+    name .b77 big 0 0
+    const (88) int 6 0
+ecom: 
+= string 10 1
+  name seps string 0 0
+    name arg list of ref Listnode 0 0
+  const  string 1 0
+ecom: 
+const  string 1 0
+ecom to: 
+name seps string 0 0
+  name arg list of ref Listnode 0 0
+ecom: 
+= string 10 2
+  name seps string 0 0
+  call string 10 2
+    name squash fn(l: list of string, sep: string): string 11 1
+    seq no type 10 2
+      call list of string 10 2
+        name list2stringlist fn(nl: list of ref Listnode): list of string 11 1
+        seq no type 10 2
+          call list of ref Listnode 10 2
+            name get fn(ctxt: self ref Context, name: string): list of ref Listnode 11 1
+            seq nothing 10 1
+              name ctxt ref Context 0 0
+              seq no type 10 1
+                const ifs string 1 0
+      seq no type 10 1
+        const  string 1 0
+ecom: 
+call string 10 2
+  name squash fn(l: list of string, sep: string): string 11 1
+  seq no type 10 2
+    call list of string 10 2
+      name list2stringlist fn(nl: list of ref Listnode): list of string 11 1
+      seq no type 10 2
+        call list of ref Listnode 10 2
+          name get fn(ctxt: self ref Context, name: string): list of ref Listnode 11 1
+          seq nothing 10 1
+            name ctxt ref Context 0 0
+            seq no type 10 1
+              const ifs string 1 0
+    seq no type 10 1
+      const  string 1 0
+ecom to: 
+name seps string 0 0
+generate desc for big
+ecom: 
+call list of string 10 2
+  name list2stringlist fn(nl: list of ref Listnode): list of string 11 1
+  seq no type 10 2
+    call list of ref Listnode 10 2
+      name get fn(ctxt: self ref Context, name: string): list of ref Listnode 11 1
+      seq nothing 10 1
+        name ctxt ref Context 0 0
+        seq no type 10 1
+          const ifs string 1 0
+ecom to: 
+name .t80 list of string 0 0
+generate desc for big
+ecom: 
+call list of ref Listnode 10 2
+  name get fn(ctxt: self ref Context, name: string): list of ref Listnode 11 1
+  seq nothing 10 1
+    name ctxt ref Context 0 0
+    seq no type 10 1
+      const ifs string 1 0
+ecom to: 
+name .t75 list of ref Listnode 0 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b81 big 0 0
+    const (64) int 6 0
+ecom: 
+const ifs string 1 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b81 big 0 0
+    const (72) int 6 0
+ecom: 
+name .t75 list of ref Listnode 0 0
+ecom to: 
+* list of ref Listnode 8 0
+  + int 15 0
+    name .b76 big 0 0
+    const (64) int 6 0
+ecom: 
+= list of ref Listnode 10 1
+  name .t75 list of ref Listnode 0 0
+  name nil list of ref Listnode 1 0
+ecom: 
+name nil list of ref Listnode 1 0
+ecom to: 
+name .t75 list of ref Listnode 0 0
+ecom: 
+name .t80 list of string 0 0
+ecom to: 
+* list of string 8 0
+  + int 15 0
+    name .b77 big 0 0
+    const (64) int 6 0
+ecom: 
+= list of string 10 1
+  name .t80 list of string 0 0
+  name nil list of string 1 0
+ecom: 
+name nil list of string 1 0
+ecom to: 
+name .t80 list of string 0 0
+ecom: 
+const  string 1 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b77 big 0 0
+    const (72) int 6 0
+ecom: 
+= string 10 1
+  name seps string 0 0
+  const  	
+
 string 1 0
+ecom: 
+const  	
+
 string 1 0
+ecom to: 
+name seps string 0 0
+ecom: 
+= (list of ref Listnode, string) 10 2
+  tuple (list of ref Listnode, string) 10 1
+    seq no type 10 1
+      name nlist list of ref Listnode 0 0
+      seq no type 10 1
+        name nil polymorphic type 1 0
+  call (list of ref Listnode, string) 10 2
+    name bq fn(ctxt: ref Context, cmd: list of ref Listnode, seps: string): (list of ref Listnode, string) 11 1
+    seq no type 10 2
+      name ctxt ref Context 0 0
+      seq no type 10 2
+        call list of ref Listnode 10 2
+          name glob fn(nl: list of ref Listnode): list of ref Listnode 11 1
+          seq no type 10 1
+            name arg list of ref Listnode 0 0
+        seq no type 10 1
+          name seps string 0 0
+generate desc for (list of ref Listnode, string)
+descmap adt offset 0
+descmap offset 0
+descmap t0 type list of ref Listnode offset 0 (d->offset=0 start=0) returns 0
+descmap t1 type string offset 8 (d->offset=8 start=0) returns 8
+generate desc for (list of ref Listnode, string)
+	desc	$-1,16,"c0"
+ecom: 
+call (list of ref Listnode, string) 10 2
+  name bq fn(ctxt: ref Context, cmd: list of ref Listnode, seps: string): (list of ref Listnode, string) 11 1
+  seq no type 10 2
+    name ctxt ref Context 0 0
+    seq no type 10 2
+      call list of ref Listnode 10 2
+        name glob fn(nl: list of ref Listnode): list of ref Listnode 11 1
+        seq no type 10 1
+          name arg list of ref Listnode 0 0
+      seq no type 10 1
+        name seps string 0 0
+ecom to: 
+name .b82 (list of ref Listnode, string) 0 0
+generate desc for big
+ecom: 
+call list of ref Listnode 10 2
+  name glob fn(nl: list of ref Listnode): list of ref Listnode 11 1
+  seq no type 10 1
+    name arg list of ref Listnode 0 0
+ecom to: 
+name .t80 list of ref Listnode 0 0
+generate desc for big
+ecom: 
+name arg list of ref Listnode 0 0
+ecom to: 
+* list of ref Listnode 8 0
+  + int 15 0
+    name .b77 big 0 0
+    const (64) int 6 0
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b81 big 0 0
+    const (64) int 6 0
+ecom: 
+name .t80 list of ref Listnode 0 0
+ecom to: 
+* list of ref Listnode 8 0
+  + int 15 0
+    name .b81 big 0 0
+    const (72) int 6 0
+ecom: 
+= list of ref Listnode 10 1
+  name .t80 list of ref Listnode 0 0
+  name nil list of ref Listnode 1 0
+ecom: 
+name nil list of ref Listnode 1 0
+ecom to: 
+name .t80 list of ref Listnode 0 0
+ecom: 
+name seps string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b81 big 0 0
+    const (80) int 6 0
+ecom: 
+= list of ref Listnode 10 1
+  * list of ref Listnode 0 0
+    adr int 13 1
+      name .b82 (list of ref Listnode, string) 0 0
+  name nil list of ref Listnode 1 0
+ecom: 
+name nil list of ref Listnode 1 0
+ecom to: 
+* list of ref Listnode 0 0
+  adr int 13 1
+    name .b82 (list of ref Listnode, string) 0 0
+ecom: 
+= string 10 1
+  * string 0 0
+    + int 13 1
+      adr int 13 1
+        name .b82 (list of ref Listnode, string) 0 0
+      const t1 (8) int 6 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+* string 0 0
+  + int 13 1
+    adr int 13 1
+      name .b82 (list of ref Listnode, string) 0 0
+    const t1 (8) int 6 0
+ecom: 
+= string 10 1
+  name seps string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name seps string 0 0
+ecom: 
+= list of ref Listnode 10 1
+  name arg list of ref Listnode 0 0
+  name nil list of ref Listnode 1 0
+ecom: 
+name nil list of ref Listnode 1 0
+ecom to: 
+name arg list of ref Listnode 0 0
+ecom: 
+= list of ref Listnode 10 1
+  name nlist list of ref Listnode 0 0
+  :: list of ref Listnode 10 1
+    ref ref Listnode 10 1
+      tuple Listnode 10 1
+        seq no type 10 1
+          name n ref Node 0 0
+          seq no type 10 1
+            const  string 1 0
+    name nil polymorphic type 1 0
+ecom: 
+:: list of ref Listnode 10 1
+  ref ref Listnode 10 1
+    tuple Listnode 10 1
+      seq no type 10 1
+        name n ref Node 0 0
+        seq no type 10 1
+          const  string 1 0
+  name nil polymorphic type 1 0
+ecom to: 
+name nlist list of ref Listnode 0 0
+eacom: 
+ref ref Listnode 10 1
+  tuple Listnode 10 1
+    seq no type 10 1
+      name n ref Node 0 0
+      seq no type 10 1
+        const  string 1 0
+generate desc for ref Listnode
+generate desc for ref Listnode
+	desc	$-1,8,"80"
+ecom: 
+ref ref Listnode 10 1
+  tuple Listnode 10 1
+    seq no type 10 1
+      name n ref Node 0 0
+      seq no type 10 1
+        const  string 1 0
+ecom to: 
+name .b74 ref Listnode 0 0
+generate desc for ref Listnode
+generate desc for Listnode
+ecom: 
+tuple Listnode 10 1
+  seq no type 10 1
+    name n ref Node 0 0
+    seq no type 10 1
+      const  string 1 0
+ecom to: 
+* Listnode 8 0
+  name .b74 ref Listnode 0 0
+ecom: 
+name n ref Node 0 0
+ecom to: 
+* ref Node 8 0
+  + int 15 1
+    adr int 15 1
+      * Listnode 8 0
+        name .b74 ref Listnode 0 0
+    const (0) int 6 0
+ecom: 
+const  string 1 0
+ecom to: 
+* string 8 0
+  + int 15 1
+    adr int 15 1
+      * Listnode 8 0
+        name .b74 ref Listnode 0 0
+    const (8) int 6 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+name .t80 list of ref Listnode 0 0
+ecom: 
+= ref Listnode 10 1
+  name .b74 ref Listnode 0 0
+  name nil ref Listnode 1 0
+ecom: 
+name nil ref Listnode 1 0
+ecom to: 
+name .b74 ref Listnode 0 0
+ecom: 
+= list of ref Listnode 10 1
+  name .t80 list of ref Listnode 0 0
+  name nil list of ref Listnode 1 0
+ecom: 
+name nil list of ref Listnode 1 0
+ecom to: 
+name .t80 list of ref Listnode 0 0
+ecom: 
+call no type 10 2
+  name fail fn(ctxt: self ref Context, ename: string, err: string) 11 1
+  seq nothing 10 1
+    name ctxt ref Context 0 0
+    seq no type 10 1
+      const bad assign string 1 0
+      seq no type 10 1
+        const sh: assignment in invalid context string 1 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b81 big 0 0
+    const (64) int 6 0
+ecom: 
+const bad assign string 1 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b81 big 0 0
+    const (72) int 6 0
+ecom: 
+const sh: assignment in invalid context string 1 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b81 big 0 0
+    const (80) int 6 0
+ecom: 
+call no type 10 2
+  name panic fn(s: string) 11 1
+  seq no type 10 1
+    + string 10 1
+      + string 10 1
+        const bad node type  string 1 0
+        cast string 10 1
+          * int 8 0
+            name n ref Node 0 0
+      const  in glomop string 1 0
+generate desc for big
+ecom: 
++ string 10 1
+  + string 10 1
+    const bad node type  string 1 0
+    cast string 10 1
+      * int 8 0
+        name n ref Node 0 0
+  const  in glomop string 1 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b81 big 0 0
+    const (64) int 6 0
+ecom: 
++ string 10 1
+  const bad node type  string 1 0
+  cast string 10 1
+    * int 8 0
+      name n ref Node 0 0
+ecom to: 
+name .t80 string 0 0
+eacom: 
+cast string 10 1
+  * int 8 0
+    name n ref Node 0 0
+ecom: 
+cast string 10 1
+  * int 8 0
+    name n ref Node 0 0
+ecom to: 
+name .t80 string 0 0
+ecom: 
+= string 10 1
+  name .t80 string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name .t80 string 0 0
+ecom: 
+name nlist list of ref Listnode 0 0
+ecom to: 
+* list of ref Listnode 8 0
+  name .ret int 0 0
+fn: glomoperation
+64: argument ctxt ref Context ref 15
+72: argument n ref Node ref 17
+80: argument redirs ref Redirlist ref 9
+88: local .t78 int ref 1
+96: local .b74 ref Listnode ref 23
+104: local .b77 big ref 13
+112: local nlist list of ref Listnode ref 13
+120: local arg list of ref Listnode ref 7
+128: local .b76 big ref 6
+136: local seps string ref 5
+144: local wlist list of ref Listnode ref 5
+152: local .b81 big ref 4
+160: local fd ref Sys->FD ref 4
+168: local .b79 Redirword ref 3
+200: local arg list of ref Listnode ref 2
+208: local .t75 list of ref Listnode ref 1
+216: local .t80 list of ref Listnode ref 1
+224: local .b82 (list of ref Listnode, string) ref 1
+generate desc for glomoperation
+descmap offset 0
+descmap ctxt type ref Context offset 64 (d->offset=64 start=0) returns 64
+descmap n type ref Node offset 72 (d->offset=72 start=0) returns 72
+descmap redirs type ref Redirlist offset 80 (d->offset=80 start=0) returns 80
+descmap .t78 type int offset 88 (d->offset=88 start=0) returns -1
+descmap .b74 type ref Listnode offset 96 (d->offset=96 start=0) returns 96
+descmap .b77 type big offset 104 (d->offset=104 start=0) returns -1
+descmap nlist type list of ref Listnode offset 112 (d->offset=112 start=0) returns 112
+descmap arg type list of ref Listnode offset 120 (d->offset=120 start=0) returns 120
+descmap .b76 type big offset 128 (d->offset=128 start=0) returns -1
+descmap seps type string offset 136 (d->offset=136 start=0) returns 136
+descmap wlist type list of ref Listnode offset 144 (d->offset=144 start=0) returns 144
+descmap .b81 type big offset 152 (d->offset=152 start=0) returns -1
+descmap fd type ref Sys->FD offset 160 (d->offset=160 start=0) returns 160
+descmap adt offset 168
+descmap offset 168
+descmap fd type ref Sys->FD offset 168 (d->offset=0 start=168) returns 168
+descmap w type string offset 176 (d->offset=8 start=168) returns 176
+descmap adt offset 184
+descmap offset 184
+descmap rtype type int offset 184 (d->offset=0 start=184) returns -1
+descmap fd1 type int offset 188 (d->offset=4 start=184) returns -1
+descmap fd2 type int offset 192 (d->offset=8 start=184) returns -1
+descmap r type Redir offset 184 (d->offset=16 start=168) returns -1
+descmap .b79 type Redirword offset 168 (d->offset=168 start=0) returns 176
+descmap arg type list of ref Listnode offset 200 (d->offset=200 start=0) returns 200
+descmap .t75 type list of ref Listnode offset 208 (d->offset=208 start=0) returns 208
+descmap .t80 type list of ref Listnode offset 216 (d->offset=216 start=0) returns 216
+descmap adt offset 224
+descmap offset 224
+descmap t0 type list of ref Listnode offset 224 (d->offset=0 start=224) returns 224
+descmap t1 type string offset 232 (d->offset=8 start=224) returns 232
+descmap .b82 type (list of ref Listnode, string) offset 224 (d->offset=224 start=0) returns 232
+fncom: subsbuiltin 2 4186e8
+ecom: 
+call no type 10 2
+  name fail fn(ctxt: self ref Context, ename: string, err: string) 11 1
+  seq nothing 10 1
+    name ctxt ref Context 0 0
+    seq no type 10 1
+      const bad $ arg string 1 0
+      seq no type 10 1
+        const sh: invalid argument to ${} operator string 1 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b83 big 0 0
+    const (64) int 6 0
+ecom: 
+const bad $ arg string 1 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b83 big 0 0
+    const (72) int 6 0
+ecom: 
+const sh: invalid argument to ${} operator string 1 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b83 big 0 0
+    const (80) int 6 0
+ecom: 
+= ref Redirlist 10 1
+  name r ref Redirlist 0 0
+  ref ref Redirlist 10 1
+    name Redirlist Redirlist 10 1
+ecom: 
+ref ref Redirlist 10 1
+  name Redirlist Redirlist 10 1
+ecom to: 
+name r ref Redirlist 0 0
+generate desc for Redirlist
+ecom: 
+= list of ref Listnode 10 2
+  name cmd list of ref Listnode 0 0
+  call list of ref Listnode 10 2
+    name glob fn(nl: list of ref Listnode): list of ref Listnode 11 1
+    seq no type 10 2
+      call list of ref Listnode 10 2
+        name glom fn(ctxt: ref Context, n: ref Node, redirs: ref Redirlist, onto: list of ref Listnode): list of ref Listnode 11 1
+        seq no type 10 1
+          name ctxt ref Context 0 0
+          seq no type 10 1
+            name n ref Node 0 0
+            seq no type 10 1
+              name r ref Redirlist 0 0
+              seq no type 10 1
+                name nil list of ref Listnode 1 0
+ecom: 
+call list of ref Listnode 10 2
+  name glob fn(nl: list of ref Listnode): list of ref Listnode 11 1
+  seq no type 10 2
+    call list of ref Listnode 10 2
+      name glom fn(ctxt: ref Context, n: ref Node, redirs: ref Redirlist, onto: list of ref Listnode): list of ref Listnode 11 1
+      seq no type 10 1
+        name ctxt ref Context 0 0
+        seq no type 10 1
+          name n ref Node 0 0
+          seq no type 10 1
+            name r ref Redirlist 0 0
+            seq no type 10 1
+              name nil list of ref Listnode 1 0
+ecom to: 
+name cmd list of ref Listnode 0 0
+generate desc for big
+ecom: 
+call list of ref Listnode 10 2
+  name glom fn(ctxt: ref Context, n: ref Node, redirs: ref Redirlist, onto: list of ref Listnode): list of ref Listnode 11 1
+  seq no type 10 1
+    name ctxt ref Context 0 0
+    seq no type 10 1
+      name n ref Node 0 0
+      seq no type 10 1
+        name r ref Redirlist 0 0
+        seq no type 10 1
+          name nil list of ref Listnode 1 0
+ecom to: 
+name .t84 list of ref Listnode 0 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b85 big 0 0
+    const (64) int 6 0
+ecom: 
+name n ref Node 0 0
+ecom to: 
+* ref Node 8 0
+  + int 15 0
+    name .b85 big 0 0
+    const (72) int 6 0
+ecom: 
+name r ref Redirlist 0 0
+ecom to: 
+* ref Redirlist 8 0
+  + int 15 0
+    name .b85 big 0 0
+    const (80) int 6 0
+ecom: 
+name nil list of ref Listnode 1 0
+ecom to: 
+* list of ref Listnode 8 0
+  + int 15 0
+    name .b85 big 0 0
+    const (88) int 6 0
+ecom: 
+name .t84 list of ref Listnode 0 0
+ecom to: 
+* list of ref Listnode 8 0
+  + int 15 0
+    name .b83 big 0 0
+    const (64) int 6 0
+ecom: 
+= list of ref Listnode 10 1
+  name .t84 list of ref Listnode 0 0
+  name nil list of ref Listnode 1 0
+ecom: 
+name nil list of ref Listnode 1 0
+ecom to: 
+name .t84 list of ref Listnode 0 0
+ecom: 
+call no type 10 2
+  name fail fn(ctxt: self ref Context, ename: string, err: string) 11 1
+  seq nothing 10 1
+    name ctxt ref Context 0 0
+    seq no type 10 1
+      const bad $ arg string 1 0
+      seq no type 10 1
+        const sh: redirection not allowed in substitution string 1 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b85 big 0 0
+    const (64) int 6 0
+ecom: 
+const bad $ arg string 1 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b85 big 0 0
+    const (72) int 6 0
+ecom: 
+const sh: redirection not allowed in substitution string 1 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b85 big 0 0
+    const (80) int 6 0
+ecom: 
+= ref Redirlist 10 1
+  name r ref Redirlist 0 0
+  name nil polymorphic type 1 0
+ecom: 
+name nil ref Redirlist 1 0
+ecom to: 
+name r ref Redirlist 0 0
+eacom: 
+* string 10 1
+  + int 10 1
+    hd ref Listnode 10 1
+      name cmd list of ref Listnode 0 0
+    const word (8) int 6 0
+generate desc for ref Listnode
+ecom: 
+hd ref Listnode 10 1
+  name cmd list of ref Listnode 0 0
+ecom to: 
+name .b86 ref Listnode 0 0
+ecom: 
+= ref Listnode 10 1
+  name .b86 ref Listnode 0 0
+  name nil ref Listnode 1 0
+ecom: 
+name nil ref Listnode 1 0
+ecom to: 
+name .b86 ref Listnode 0 0
+eacom: 
+* ref Node 10 1
+  hd ref Listnode 10 1
+    name cmd list of ref Listnode 0 0
+generate desc for ref Listnode
+ecom: 
+hd ref Listnode 10 1
+  name cmd list of ref Listnode 0 0
+ecom to: 
+name .b86 ref Listnode 0 0
+ecom: 
+= ref Listnode 10 1
+  name .b86 ref Listnode 0 0
+  name nil ref Listnode 1 0
+ecom: 
+name nil ref Listnode 1 0
+ecom to: 
+name .b86 ref Listnode 0 0
+ecom: 
+call no type 10 2
+  name fail fn(ctxt: self ref Context, ename: string, err: string) 11 1
+  seq nothing 10 1
+    name ctxt ref Context 0 0
+    seq no type 10 1
+      const bad $ arg string 1 0
+      seq no type 10 1
+        const sh: bad builtin name string 1 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b85 big 0 0
+    const (64) int 6 0
+ecom: 
+const bad $ arg string 1 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b85 big 0 0
+    const (72) int 6 0
+ecom: 
+const sh: bad builtin name string 1 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b85 big 0 0
+    const (80) int 6 0
+ecom: 
+= (int, list of Shellbuiltin) 10 2
+  tuple (int, list of Shellbuiltin) 10 1
+    seq nothing 10 1
+      name nil polymorphic type 1 0
+      seq nothing 10 1
+        name bmods list of Shellbuiltin 0 0
+  call (int, list of Shellbuiltin) 10 2
+    name findbuiltin fn(b: ref Builtins, name: string): (int, list of Shellbuiltin) 11 1
+    seq no type 10 2
+      * ref Builtins 10 1
+        * ref Environment 8 0
+          name ctxt ref Context 0 0
+      seq no type 10 1
+        * string 10 1
+          + int 10 1
+            hd ref Listnode 10 1
+              name cmd list of ref Listnode 0 0
+            const word (8) int 6 0
+generate desc for (int, list of Shellbuiltin)
+descmap adt offset 0
+descmap offset 0
+descmap t0 type int offset 0 (d->offset=0 start=0) returns -1
+descmap t1 type list of Shellbuiltin offset 8 (d->offset=8 start=0) returns 8
+generate desc for (int, list of Shellbuiltin)
+	desc	$-1,16,"40"
+ecom: 
+call (int, list of Shellbuiltin) 10 2
+  name findbuiltin fn(b: ref Builtins, name: string): (int, list of Shellbuiltin) 11 1
+  seq no type 10 2
+    * ref Builtins 10 1
+      * ref Environment 8 0
+        name ctxt ref Context 0 0
+    seq no type 10 1
+      * string 10 1
+        + int 10 1
+          hd ref Listnode 10 1
+            name cmd list of ref Listnode 0 0
+          const word (8) int 6 0
+ecom to: 
+name .b87 (int, list of Shellbuiltin) 0 0
+generate desc for big
+ecom: 
+* ref Builtins 10 1
+  * ref Environment 8 0
+    name ctxt ref Context 0 0
+ecom to: 
+* ref Builtins 8 0
+  + int 15 0
+    name .b85 big 0 0
+    const (64) int 6 0
+eacom: 
+* ref Builtins 10 1
+  * ref Environment 8 0
+    name ctxt ref Context 0 0
+generate desc for ref Environment
+ecom: 
+* ref Environment 8 0
+  name ctxt ref Context 0 0
+ecom to: 
+name .b86 ref Environment 0 0
+ecom: 
+= ref Environment 10 1
+  name .b86 ref Environment 0 0
+  name nil ref Environment 1 0
+ecom: 
+name nil ref Environment 1 0
+ecom to: 
+name .b86 ref Environment 0 0
+ecom: 
+* string 10 1
+  + int 10 1
+    hd ref Listnode 10 1
+      name cmd list of ref Listnode 0 0
+    const word (8) int 6 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b85 big 0 0
+    const (72) int 6 0
+eacom: 
+* string 10 1
+  + int 10 1
+    hd ref Listnode 10 1
+      name cmd list of ref Listnode 0 0
+    const word (8) int 6 0
+generate desc for ref Listnode
+ecom: 
+hd ref Listnode 10 1
+  name cmd list of ref Listnode 0 0
+ecom to: 
+name .b86 ref Listnode 0 0
+ecom: 
+= ref Listnode 10 1
+  name .b86 ref Listnode 0 0
+  name nil ref Listnode 1 0
+ecom: 
+name nil ref Listnode 1 0
+ecom to: 
+name .b86 ref Listnode 0 0
+ecom: 
+= list of Shellbuiltin 10 1
+  * list of Shellbuiltin 0 0
+    + int 13 1
+      adr int 13 1
+        name .b87 (int, list of Shellbuiltin) 0 0
+      const t1 (8) int 6 0
+  name nil list of Shellbuiltin 1 0
+ecom: 
+name nil list of Shellbuiltin 1 0
+ecom to: 
+* list of Shellbuiltin 0 0
+  + int 13 1
+    adr int 13 1
+      name .b87 (int, list of Shellbuiltin) 0 0
+    const t1 (8) int 6 0
+ecom: 
+call no type 10 2
+  name fail fn(ctxt: self ref Context, ename: string, err: string) 11 1
+  seq nothing 10 2
+    name ctxt ref Context 0 0
+    seq no type 10 2
+      const builtin not found string 1 0
+      seq no type 10 2
+        call string 10 2
+          -> fn(s: string, nil: string, *): string 12 1
+            name sys Sys 1 0
+            name sprint nothing 11 1
+          seq no type 10 1
+            const sh: builtin %s not found string 1 0
+            seq no type 10 1
+              * string 10 1
+                + int 10 1
+                  hd ref Listnode 10 1
+                    name cmd list of ref Listnode 0 0
+                  const word (8) int 6 0
+generate desc for big
+ecom: 
+call string 10 2
+  -> fn(s: string, nil: string, *): string 12 1
+    name sys Sys 1 0
+    name sprint nothing 11 1
+  seq no type 10 1
+    const sh: builtin %s not found string 1 0
+    seq no type 10 1
+      * string 10 1
+        + int 10 1
+          hd ref Listnode 10 1
+            name cmd list of ref Listnode 0 0
+          const word (8) int 6 0
+ecom to: 
+name .t84 string 0 0
+generate desc for Sys->sprint
+descmap offset 0
+descmap s type string offset 64 (d->offset=64 start=0) returns 64
+descmap type string offset 72 returns 72
+generate desc for big
+ecom: 
+const sh: builtin %s not found string 1 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b83 big 0 0
+    const (64) int 6 0
+ecom: 
+* string 10 1
+  + int 10 1
+    hd ref Listnode 10 1
+      name cmd list of ref Listnode 0 0
+    const word (8) int 6 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b83 big 0 0
+    const (72) int 6 0
+eacom: 
+* string 10 1
+  + int 10 1
+    hd ref Listnode 10 1
+      name cmd list of ref Listnode 0 0
+    const word (8) int 6 0
+generate desc for ref Listnode
+ecom: 
+hd ref Listnode 10 1
+  name cmd list of ref Listnode 0 0
+ecom to: 
+name .b86 ref Listnode 0 0
+ecom: 
+= ref Listnode 10 1
+  name .b86 ref Listnode 0 0
+  name nil ref Listnode 1 0
+ecom: 
+name nil ref Listnode 1 0
+ecom to: 
+name .b86 ref Listnode 0 0
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b85 big 0 0
+    const (64) int 6 0
+ecom: 
+const builtin not found string 1 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b85 big 0 0
+    const (72) int 6 0
+ecom: 
+name .t84 string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b85 big 0 0
+    const (80) int 6 0
+ecom: 
+= string 10 1
+  name .t84 string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name .t84 string 0 0
+ecom: 
+call list of ref Listnode 10 2
+  -> fn(c: ref Context, sh: Sh, cmd: list of ref Listnode): list of ref Listnode 12 2
+    hd Shellbuiltin 10 1
+      name bmods list of Shellbuiltin 0 0
+    name runsbuiltin nothing 11 1
+  seq no type 10 1
+    name ctxt ref Context 0 0
+    seq no type 10 1
+      name myself Sh 1 0
+      seq no type 10 1
+        name cmd list of ref Listnode 0 0
+ecom to: 
+* list of ref Listnode 8 0
+  name .ret int 0 0
+generate desc for big
+eacom: 
+hd Shellbuiltin 10 1
+  name bmods list of Shellbuiltin 0 0
+ecom: 
+hd Shellbuiltin 10 1
+  name bmods list of Shellbuiltin 0 0
+ecom to: 
+name .t84 Shellbuiltin 0 0
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b85 big 0 0
+    const (64) int 6 0
+ecom: 
+name myself Sh 1 0
+ecom to: 
+* Sh 8 0
+  + int 15 0
+    name .b85 big 0 0
+    const (72) int 6 0
+ecom: 
+name cmd list of ref Listnode 0 0
+ecom to: 
+* list of ref Listnode 8 0
+  + int 15 0
+    name .b85 big 0 0
+    const (80) int 6 0
+ecom: 
+= Shellbuiltin 10 1
+  name .t84 Shellbuiltin 0 0
+  name nil Shellbuiltin 1 0
+ecom: 
+name nil Shellbuiltin 1 0
+ecom to: 
+name .t84 Shellbuiltin 0 0
+fn: subsbuiltin
+64: argument ctxt ref Context ref 7
+72: argument n ref Node ref 5
+80: local cmd list of ref Listnode ref 7
+88: local .b85 big ref 6
+96: local .b86 ref Listnode ref 5
+104: local r ref Redirlist ref 4
+112: local .b83 big ref 3
+120: local bmods list of Shellbuiltin ref 3
+128: local .t84 list of ref Listnode ref 1
+136: local .b87 (int, list of Shellbuiltin) ref 1
+generate desc for subsbuiltin
+descmap offset 0
+descmap ctxt type ref Context offset 64 (d->offset=64 start=0) returns 64
+descmap n type ref Node offset 72 (d->offset=72 start=0) returns 72
+descmap cmd type list of ref Listnode offset 80 (d->offset=80 start=0) returns 80
+descmap .b85 type big offset 88 (d->offset=88 start=0) returns -1
+descmap .b86 type ref Listnode offset 96 (d->offset=96 start=0) returns 96
+descmap r type ref Redirlist offset 104 (d->offset=104 start=0) returns 104
+descmap .b83 type big offset 112 (d->offset=112 start=0) returns -1
+descmap bmods type list of Shellbuiltin offset 120 (d->offset=120 start=0) returns 120
+descmap .t84 type list of ref Listnode offset 128 (d->offset=128 start=0) returns 128
+descmap adt offset 136
+descmap offset 136
+descmap t0 type int offset 136 (d->offset=0 start=136) returns -1
+descmap t1 type list of Shellbuiltin offset 144 (d->offset=8 start=136) returns 144
+descmap .b87 type (int, list of Shellbuiltin) offset 136 (d->offset=136 start=0) returns 144
+fncom: getbq 2 4187a8
+ecom: 
+= array of byte 10 1
+  name buf array of byte 0 0
+  array array of byte 10 1
+    const ATOMICIO (8192) int 6 0
+ecom: 
+array array of byte 10 1
+  const ATOMICIO (8192) int 6 0
+ecom to: 
+name buf array of byte 0 0
+generate desc for byte
+generate desc for byte
+	desc	$-1,1,""
+ecom: 
+= int 10 1
+  name buflen int 0 0
+  const (0) int 6 0
+ecom: 
+const (0) int 6 0
+ecom to: 
+name buflen int 0 0
+eacom: 
+= int 10 2
+  name n int 0 0
+  call int 10 2
+    -> fn(fd: ref Sys->FD, buf: array of byte, n: int): int 12 1
+      name sys Sys 1 0
+      name read nothing 11 1
+    seq no type 10 2
+      name fd ref Sys->FD 0 0
+      seq no type 10 2
+        slice array of byte 10 1
+          name buf array of byte 0 0
+          seq no type 10 1
+            name buflen int 0 0
+            nothing no type 10 1
+        seq no type 10 1
+          - int 10 1
+            len int 10 1
+              name buf array of byte 0 0
+            name buflen int 0 0
+ecom: 
+= int 10 2
+  name n int 0 0
+  call int 10 2
+    -> fn(fd: ref Sys->FD, buf: array of byte, n: int): int 12 1
+      name sys Sys 1 0
+      name read nothing 11 1
+    seq no type 10 2
+      name fd ref Sys->FD 0 0
+      seq no type 10 2
+        slice array of byte 10 1
+          name buf array of byte 0 0
+          seq no type 10 1
+            name buflen int 0 0
+            nothing no type 10 1
+        seq no type 10 1
+          - int 10 1
+            len int 10 1
+              name buf array of byte 0 0
+            name buflen int 0 0
+ecom to: 
+name .t88 int 0 0
+ecom: 
+call int 10 2
+  -> fn(fd: ref Sys->FD, buf: array of byte, n: int): int 12 1
+    name sys Sys 1 0
+    name read nothing 11 1
+  seq no type 10 2
+    name fd ref Sys->FD 0 0
+    seq no type 10 2
+      slice array of byte 10 1
+        name buf array of byte 0 0
+        seq no type 10 1
+          name buflen int 0 0
+          nothing no type 10 1
+      seq no type 10 1
+        - int 10 1
+          len int 10 1
+            name buf array of byte 0 0
+          name buflen int 0 0
+ecom to: 
+name n int 0 0
+generate desc for big
+ecom: 
+name fd ref Sys->FD 0 0
+ecom to: 
+* ref Sys->FD 8 0
+  + int 15 0
+    name .b89 big 0 0
+    const (64) int 6 0
+ecom: 
+slice array of byte 10 1
+  name buf array of byte 0 0
+  seq no type 10 1
+    name buflen int 0 0
+    nothing no type 10 1
+ecom to: 
+* array of byte 8 0
+  + int 15 0
+    name .b89 big 0 0
+    const (72) int 6 0
+ecom: 
+len int 10 1
+  name buf array of byte 0 0
+ecom to: 
+name .t90 int 0 0
+ecom: 
+name buf array of byte 0 0
+ecom to: 
+* array of byte 8 0
+  + int 15 0
+    name .b89 big 0 0
+    const (72) int 6 0
+ecom: 
+- int 10 1
+  len int 10 1
+    name buf array of byte 0 0
+  name buflen int 0 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b89 big 0 0
+    const (80) int 6 0
+ecom: 
+len int 10 1
+  name buf array of byte 0 0
+ecom to: 
+name .t90 int 0 0
+ecom: 
++= int 10 1
+  name buflen int 0 0
+  name n int 0 0
+eacom: 
+len int 10 1
+  name buf array of byte 0 0
+ecom: 
+len int 10 1
+  name buf array of byte 0 0
+ecom to: 
+name .t90 int 0 0
+ecom: 
+= array of byte 10 1
+  name nbuf array of byte 0 0
+  array array of byte 10 1
+    * int 10 1
+      name buflen int 0 0
+      const (2) int 6 0
+ecom: 
+array array of byte 10 1
+  * int 10 1
+    name buflen int 0 0
+    const (2) int 6 0
+ecom to: 
+name nbuf array of byte 0 0
+eacom: 
+* int 10 1
+  name buflen int 0 0
+  const (2) int 6 0
+ecom: 
+* int 10 1
+  name buflen int 0 0
+  const (2) int 6 0
+ecom to: 
+name .t90 int 0 0
+generate desc for byte
+ecom: 
+= array of byte 10 2
+  slice array of byte 10 1
+    name nbuf array of byte 0 0
+    seq no type 10 1
+      const (0) int 6 0
+      nothing no type 10 1
+  slice array of byte 10 1
+    name buf array of byte 0 0
+    seq no type 10 1
+      const (0) int 6 0
+      nothing no type 10 1
+eacom: 
+slice array of byte 10 1
+  name buf array of byte 0 0
+  seq no type 10 1
+    const (0) int 6 0
+    nothing no type 10 1
+ecom: 
+slice array of byte 10 1
+  name buf array of byte 0 0
+  seq no type 10 1
+    const (0) int 6 0
+    nothing no type 10 1
+ecom to: 
+name .t91 array of byte 0 0
+ecom: 
+len int 10 1
+  name buf array of byte 0 0
+ecom to: 
+name .t90 int 0 0
+ecom: 
+name buf array of byte 0 0
+ecom to: 
+name .t91 array of byte 0 0
+ecom: 
+= array of byte 10 1
+  name .t91 array of byte 0 0
+  name nil array of byte 1 0
+ecom: 
+name nil array of byte 1 0
+ecom to: 
+name .t91 array of byte 0 0
+ecom: 
+= array of byte 10 1
+  name buf array of byte 0 0
+  name nbuf array of byte 0 0
+ecom: 
+name nbuf array of byte 0 0
+ecom to: 
+name buf array of byte 0 0
+ecom: 
+= array of byte 10 1
+  name nbuf array of byte 0 0
+  name nil array of byte 1 0
+ecom: 
+name nil array of byte 1 0
+ecom to: 
+name nbuf array of byte 0 0
+ecom: 
+= (int, list of string) 10 2
+  tuple (int, list of string) 10 1
+    seq no type 10 1
+      name nil polymorphic type 1 0
+      seq no type 10 1
+        name l list of string 0 0
+  call (int, list of string) 10 2
+    -> fn(s: string, delim: string): (int, list of string) 12 1
+      name sys Sys 1 0
+      name tokenize nothing 11 1
+    seq no type 10 2
+      cast string 10 1
+        slice array of byte 10 1
+          name buf array of byte 0 0
+          seq no type 10 1
+            const (0) int 6 0
+            name buflen int 0 0
+      seq no type 10 1
+        name seps string 0 0
+generate desc for (int, list of string)
+descmap adt offset 0
+descmap offset 0
+descmap t0 type int offset 0 (d->offset=0 start=0) returns -1
+descmap t1 type list of string offset 8 (d->offset=8 start=0) returns 8
+generate desc for (int, list of string)
+	desc	$-1,16,"40"
+ecom: 
+call (int, list of string) 10 2
+  -> fn(s: string, delim: string): (int, list of string) 12 1
+    name sys Sys 1 0
+    name tokenize nothing 11 1
+  seq no type 10 2
+    cast string 10 1
+      slice array of byte 10 1
+        name buf array of byte 0 0
+        seq no type 10 1
+          const (0) int 6 0
+          name buflen int 0 0
+    seq no type 10 1
+      name seps string 0 0
+ecom to: 
+name .b92 (int, list of string) 0 0
+generate desc for big
+ecom: 
+cast string 10 1
+  slice array of byte 10 1
+    name buf array of byte 0 0
+    seq no type 10 1
+      const (0) int 6 0
+      name buflen int 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b89 big 0 0
+    const (64) int 6 0
+eacom: 
+slice array of byte 10 1
+  name buf array of byte 0 0
+  seq no type 10 1
+    const (0) int 6 0
+    name buflen int 0 0
+ecom: 
+slice array of byte 10 1
+  name buf array of byte 0 0
+  seq no type 10 1
+    const (0) int 6 0
+    name buflen int 0 0
+ecom to: 
+name .t91 array of byte 0 0
+ecom: 
+name buf array of byte 0 0
+ecom to: 
+name .t91 array of byte 0 0
+ecom: 
+= array of byte 10 1
+  name .t91 array of byte 0 0
+  name nil array of byte 1 0
+ecom: 
+name nil array of byte 1 0
+ecom to: 
+name .t91 array of byte 0 0
+ecom: 
+name seps string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b89 big 0 0
+    const (72) int 6 0
+ecom: 
+= list of string 10 1
+  * list of string 0 0
+    + int 13 1
+      adr int 13 1
+        name .b92 (int, list of string) 0 0
+      const t1 (8) int 6 0
+  name nil list of string 1 0
+ecom: 
+name nil list of string 1 0
+ecom to: 
+* list of string 0 0
+  + int 13 1
+    adr int 13 1
+      name .b92 (int, list of string) 0 0
+    const t1 (8) int 6 0
+ecom: 
+= list of string 10 1
+  name l list of string 0 0
+  :: list of string 10 1
+    cast string 10 1
+      slice array of byte 10 1
+        name buf array of byte 0 0
+        seq no type 10 1
+          const (0) int 6 0
+          name buflen int 0 0
+    name nil polymorphic type 1 0
+ecom: 
+:: list of string 10 1
+  cast string 10 1
+    slice array of byte 10 1
+      name buf array of byte 0 0
+      seq no type 10 1
+        const (0) int 6 0
+        name buflen int 0 0
+  name nil polymorphic type 1 0
+ecom to: 
+name l list of string 0 0
+eacom: 
+cast string 10 1
+  slice array of byte 10 1
+    name buf array of byte 0 0
+    seq no type 10 1
+      const (0) int 6 0
+      name buflen int 0 0
+ecom: 
+cast string 10 1
+  slice array of byte 10 1
+    name buf array of byte 0 0
+    seq no type 10 1
+      const (0) int 6 0
+      name buflen int 0 0
+ecom to: 
+name .t91 string 0 0
+eacom: 
+slice array of byte 10 1
+  name buf array of byte 0 0
+  seq no type 10 1
+    const (0) int 6 0
+    name buflen int 0 0
+ecom: 
+slice array of byte 10 1
+  name buf array of byte 0 0
+  seq no type 10 1
+    const (0) int 6 0
+    name buflen int 0 0
+ecom to: 
+name .t91 array of byte 0 0
+ecom: 
+name buf array of byte 0 0
+ecom to: 
+name .t91 array of byte 0 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+name .t93 list of string 0 0
+ecom: 
+= string 10 1
+  name .t91 string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name .t91 string 0 0
+ecom: 
+= list of string 10 1
+  name .t93 list of string 0 0
+  name nil list of string 1 0
+ecom: 
+name nil list of string 1 0
+ecom to: 
+name .t93 list of string 0 0
+ecom: 
+= array of byte 10 1
+  name buf array of byte 0 0
+  name nil polymorphic type 1 0
+ecom: 
+name nil array of byte 1 0
+ecom to: 
+name buf array of byte 0 0
+ecom: 
+call list of ref Listnode 10 2
+  name stringlist2list fn(sl: list of string): list of ref Listnode 11 1
+  seq no type 10 1
+    name l list of string 0 0
+ecom to: 
+* list of ref Listnode 8 0
+  name .ret int 0 0
+generate desc for big
+ecom: 
+name l list of string 0 0
+ecom to: 
+* list of string 8 0
+  + int 15 0
+    name .b89 big 0 0
+    const (64) int 6 0
+fn: getbq
+64: argument <nil> ref Context ref 0
+72: argument fd ref Sys->FD ref 1
+80: argument seps string ref 2
+88: local buflen int ref 8
+92: local n int ref 2
+96: local .t88 int ref 1
+100: local .t90 int ref 1
+104: local buf array of byte ref 9
+112: local .b89 big ref 3
+120: local l list of string ref 3
+128: local nbuf array of byte ref 3
+136: local .t91 array of byte ref 1
+144: local .t93 list of string ref 1
+152: local .b92 (int, list of string) ref 1
+generate desc for getbq
+descmap offset 0
+descmap type ref Context offset 64 returns 64
+descmap fd type ref Sys->FD offset 72 (d->offset=72 start=0) returns 72
+descmap seps type string offset 80 (d->offset=80 start=0) returns 80
+descmap buflen type int offset 88 (d->offset=88 start=0) returns -1
+descmap n type int offset 92 (d->offset=92 start=0) returns -1
+descmap .t88 type int offset 96 (d->offset=96 start=0) returns -1
+descmap .t90 type int offset 100 (d->offset=100 start=0) returns -1
+descmap buf type array of byte offset 104 (d->offset=104 start=0) returns 104
+descmap .b89 type big offset 112 (d->offset=112 start=0) returns -1
+descmap l type list of string offset 120 (d->offset=120 start=0) returns 120
+descmap nbuf type array of byte offset 128 (d->offset=128 start=0) returns 128
+descmap .t91 type array of byte offset 136 (d->offset=136 start=0) returns 136
+descmap .t93 type list of string offset 144 (d->offset=144 start=0) returns 144
+descmap adt offset 152
+descmap offset 152
+descmap t0 type int offset 152 (d->offset=0 start=152) returns -1
+descmap t1 type list of string offset 160 (d->offset=8 start=152) returns 160
+descmap .b92 type (int, list of string) offset 152 (d->offset=152 start=0) returns 160
+fncom: bq 2 418868
+ecom: 
+= array of ref Sys->FD 10 1
+  name fds array of ref Sys->FD 0 0
+  array array of ref Sys->FD 10 1
+    const (2) int 6 0
+ecom: 
+array array of ref Sys->FD 10 1
+  const (2) int 6 0
+ecom to: 
+name fds array of ref Sys->FD 0 0
+generate desc for ref Sys->FD
+generate desc for ref Sys->FD
+	desc	$-1,8,"80"
+eacom: 
+call int 10 2
+  -> fn(fds: array of ref Sys->FD): int 12 1
+    name sys Sys 1 0
+    name pipe nothing 11 1
+  seq no type 10 1
+    name fds array of ref Sys->FD 0 0
+ecom: 
+call int 10 2
+  -> fn(fds: array of ref Sys->FD): int 12 1
+    name sys Sys 1 0
+    name pipe nothing 11 1
+  seq no type 10 1
+    name fds array of ref Sys->FD 0 0
+ecom to: 
+name .t94 int 0 0
+generate desc for big
+ecom: 
+name fds array of ref Sys->FD 0 0
+ecom to: 
+* array of ref Sys->FD 8 0
+  + int 15 0
+    name .b95 big 0 0
+    const (64) int 6 0
+ecom: 
+call no type 10 2
+  name fail fn(ctxt: self ref Context, ename: string, err: string) 11 1
+  seq nothing 10 2
+    name ctxt ref Context 0 0
+    seq no type 10 2
+      const no pipe string 1 0
+      seq no type 10 2
+        call string 10 2
+          -> fn(s: string, *): string 12 1
+            name sys Sys 1 0
+            name sprint nothing 11 1
+          seq no type 10 1
+            const sh: cannot make pipe: %r string 1 0
+generate desc for big
+ecom: 
+call string 10 2
+  -> fn(s: string, *): string 12 1
+    name sys Sys 1 0
+    name sprint nothing 11 1
+  seq no type 10 1
+    const sh: cannot make pipe: %r string 1 0
+ecom to: 
+name .t96 string 0 0
+generate desc for Sys->sprint
+descmap offset 0
+descmap s type string offset 64 (d->offset=64 start=0) returns 64
+generate desc for big
+ecom: 
+const sh: cannot make pipe: %r string 1 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b97 big 0 0
+    const (64) int 6 0
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b95 big 0 0
+    const (64) int 6 0
+ecom: 
+const no pipe string 1 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b95 big 0 0
+    const (72) int 6 0
+ecom: 
+name .t96 string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b95 big 0 0
+    const (80) int 6 0
+ecom: 
+= string 10 1
+  name .t96 string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name .t96 string 0 0
+ecom: 
+= ref Redirlist 10 2
+  name r ref Redirlist 0 0
+  ref ref Redirlist 10 2
+    tuple Redirlist 10 2
+      seq no type 10 2
+        :: list of Redirword 10 2
+          tuple Redirword 10 2
+            seq no type 10 2
+              * ref Sys->FD 10 1
+                indx big 10 1
+                  name fds array of ref Sys->FD 0 0
+                  const (1) int 6 0
+              seq no type 10 1
+                name nil polymorphic type 1 0
+                seq no type 10 1
+                  tuple Redir 10 1
+                    seq no type 10 1
+                      const OWRITE (1) int 6 0
+                      seq no type 10 1
+                        const (1) int 6 0
+                        seq no type 10 1
+                          const (-1) int 6 0
+          name nil polymorphic type 1 0
+ecom: 
+ref ref Redirlist 10 2
+  tuple Redirlist 10 2
+    seq no type 10 2
+      :: list of Redirword 10 2
+        tuple Redirword 10 2
+          seq no type 10 2
+            * ref Sys->FD 10 1
+              indx big 10 1
+                name fds array of ref Sys->FD 0 0
+                const (1) int 6 0
+            seq no type 10 1
+              name nil polymorphic type 1 0
+              seq no type 10 1
+                tuple Redir 10 1
+                  seq no type 10 1
+                    const OWRITE (1) int 6 0
+                    seq no type 10 1
+                      const (1) int 6 0
+                      seq no type 10 1
+                        const (-1) int 6 0
+        name nil polymorphic type 1 0
+ecom to: 
+name r ref Redirlist 0 0
+generate desc for ref Redirlist
+generate desc for ref Redirlist
+	desc	$-1,8,"80"
+generate desc for Redirlist
+ecom: 
+tuple Redirlist 10 2
+  seq no type 10 2
+    :: list of Redirword 10 2
+      tuple Redirword 10 2
+        seq no type 10 2
+          * ref Sys->FD 10 1
+            indx big 10 1
+              name fds array of ref Sys->FD 0 0
+              const (1) int 6 0
+          seq no type 10 1
+            name nil polymorphic type 1 0
+            seq no type 10 1
+              tuple Redir 10 1
+                seq no type 10 1
+                  const OWRITE (1) int 6 0
+                  seq no type 10 1
+                    const (1) int 6 0
+                    seq no type 10 1
+                      const (-1) int 6 0
+      name nil polymorphic type 1 0
+ecom to: 
+* Redirlist 8 0
+  name .b98 ref Redirlist 0 0
+ecom: 
+:: list of Redirword 10 2
+  tuple Redirword 10 2
+    seq no type 10 2
+      * ref Sys->FD 10 1
+        indx big 10 1
+          name fds array of ref Sys->FD 0 0
+          const (1) int 6 0
+      seq no type 10 1
+        name nil polymorphic type 1 0
+        seq no type 10 1
+          tuple Redir 10 1
+            seq no type 10 1
+              const OWRITE (1) int 6 0
+              seq no type 10 1
+                const (1) int 6 0
+                seq no type 10 1
+                  const (-1) int 6 0
+  name nil polymorphic type 1 0
+ecom to: 
+* list of Redirword 8 0
+  + int 15 1
+    adr int 15 1
+      * Redirlist 8 0
+        name .b98 ref Redirlist 0 0
+    const (0) int 6 0
+eacom: 
+tuple Redirword 10 2
+  seq no type 10 2
+    * ref Sys->FD 10 1
+      indx big 10 1
+        name fds array of ref Sys->FD 0 0
+        const (1) int 6 0
+    seq no type 10 1
+      name nil polymorphic type 1 0
+      seq no type 10 1
+        tuple Redir 10 1
+          seq no type 10 1
+            const OWRITE (1) int 6 0
+            seq no type 10 1
+              const (1) int 6 0
+              seq no type 10 1
+                const (-1) int 6 0
+generate desc for Redirword
+ecom: 
+tuple Redirword 10 2
+  seq no type 10 2
+    * ref Sys->FD 10 1
+      indx big 10 1
+        name fds array of ref Sys->FD 0 0
+        const (1) int 6 0
+    seq no type 10 1
+      name nil polymorphic type 1 0
+      seq no type 10 1
+        tuple Redir 10 1
+          seq no type 10 1
+            const OWRITE (1) int 6 0
+            seq no type 10 1
+              const (1) int 6 0
+              seq no type 10 1
+                const (-1) int 6 0
+ecom to: 
+name .b99 Redirword 0 0
+ecom: 
+* ref Sys->FD 10 1
+  indx big 10 1
+    name fds array of ref Sys->FD 0 0
+    const (1) int 6 0
+ecom to: 
+* ref Sys->FD 0 0
+  + int 13 1
+    adr int 13 1
+      name .b99 Redirword 0 0
+    const (0) int 6 0
+eacom: 
+* ref Sys->FD 10 1
+  indx big 10 1
+    name fds array of ref Sys->FD 0 0
+    const (1) int 6 0
+generate desc for big
+ecom: 
+indx big 10 1
+  name fds array of ref Sys->FD 0 0
+  const (1) int 6 0
+ecom to: 
+name .b97 big 0 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* string 0 0
+  + int 13 1
+    adr int 13 1
+      name .b99 Redirword 0 0
+    const (8) int 6 0
+ecom: 
+tuple Redir 10 1
+  seq no type 10 1
+    const OWRITE (1) int 6 0
+    seq no type 10 1
+      const (1) int 6 0
+      seq no type 10 1
+        const (-1) int 6 0
+ecom to: 
+* Redir 0 0
+  + int 13 1
+    adr int 13 1
+      name .b99 Redirword 0 0
+    const (16) int 6 0
+ecom: 
+const OWRITE (1) int 6 0
+ecom to: 
+* int 0 0
+  + int 13 1
+    adr int 13 1
+      * Redir 0 0
+        + int 13 1
+          adr int 13 1
+            name .b99 Redirword 0 0
+          const (16) int 6 0
+    const (0) int 6 0
+ecom: 
+const (1) int 6 0
+ecom to: 
+* int 0 0
+  + int 13 1
+    adr int 13 1
+      * Redir 0 0
+        + int 13 1
+          adr int 13 1
+            name .b99 Redirword 0 0
+          const (16) int 6 0
+    const (4) int 6 0
+ecom: 
+const (-1) int 6 0
+ecom to: 
+* int 0 0
+  + int 13 1
+    adr int 13 1
+      * Redir 0 0
+        + int 13 1
+          adr int 13 1
+            name .b99 Redirword 0 0
+          const (16) int 6 0
+    const (8) int 6 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+name .t96 list of Redirword 0 0
+generate desc for Redirword
+ecom: 
+= ref Sys->FD 10 1
+  * ref Sys->FD 0 0
+    adr int 13 1
+      name .b99 Redirword 0 0
+  name nil ref Sys->FD 1 0
+ecom: 
+name nil ref Sys->FD 1 0
+ecom to: 
+* ref Sys->FD 0 0
+  adr int 13 1
+    name .b99 Redirword 0 0
+ecom: 
+= string 10 1
+  * string 0 0
+    + int 13 1
+      adr int 13 1
+        name .b99 Redirword 0 0
+      const w (8) int 6 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+* string 0 0
+  + int 13 1
+    adr int 13 1
+      name .b99 Redirword 0 0
+    const w (8) int 6 0
+ecom: 
+= list of Redirword 10 1
+  name .t96 list of Redirword 0 0
+  name nil list of Redirword 1 0
+ecom: 
+name nil list of Redirword 1 0
+ecom to: 
+name .t96 list of Redirword 0 0
+ecom: 
+= ref Redirlist 10 1
+  name .b98 ref Redirlist 0 0
+  name nil ref Redirlist 1 0
+ecom: 
+name nil ref Redirlist 1 0
+ecom to: 
+name .b98 ref Redirlist 0 0
+ecom: 
+= ref Sys->FD 10 1
+  * ref Sys->FD 10 1
+    indx big 10 1
+      name fds array of ref Sys->FD 0 0
+      const (1) int 6 0
+  name nil polymorphic type 1 0
+eacom: 
+* ref Sys->FD 10 1
+  indx big 10 1
+    name fds array of ref Sys->FD 0 0
+    const (1) int 6 0
+generate desc for big
+ecom: 
+indx big 10 1
+  name fds array of ref Sys->FD 0 0
+  const (1) int 6 0
+ecom to: 
+name .b97 big 0 0
+ecom: 
+name nil ref Sys->FD 1 0
+ecom to: 
+* ref Sys->FD 8 1
+  name .b97 big 0 0
+ecom: 
+= chan of (int, ref Expropagate) 10 1
+  name startchan chan of (int, ref Expropagate) 0 0
+  chan chan of (int, ref Expropagate) 10 1
+    const (0) int 6 0
+ecom: 
+chan chan of (int, ref Expropagate) 10 1
+  const (0) int 6 0
+ecom to: 
+name startchan chan of (int, ref Expropagate) 0 0
+generate desc for (int, ref Expropagate)
+descmap adt offset 0
+descmap offset 0
+descmap t0 type int offset 0 (d->offset=0 start=0) returns -1
+descmap t1 type ref Expropagate offset 8 (d->offset=8 start=0) returns 8
+generate desc for (int, ref Expropagate)
+	desc	$-1,16,"40"
+ecom: 
+spawn nothing 10 2
+  call no type 10 2
+    name runasync fn(ctxt: ref Context, copyenv: int, argv: list of ref Listnode, redirs: ref Redirlist, startchan: chan of (int, ref Expropagate)) 11 1
+    seq no type 10 1
+      name ctxt ref Context 0 0
+      seq no type 10 1
+        const (0) int 6 0
+        seq no type 10 1
+          name cmd list of ref Listnode 0 0
+          seq no type 10 1
+            name r ref Redirlist 0 0
+            seq no type 10 1
+              name startchan chan of (int, ref Expropagate) 0 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b97 big 0 0
+    const (64) int 6 0
+ecom: 
+const (0) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b97 big 0 0
+    const (72) int 6 0
+ecom: 
+name cmd list of ref Listnode 0 0
+ecom to: 
+* list of ref Listnode 8 0
+  + int 15 0
+    name .b97 big 0 0
+    const (80) int 6 0
+ecom: 
+name r ref Redirlist 0 0
+ecom to: 
+* ref Redirlist 8 0
+  + int 15 0
+    name .b97 big 0 0
+    const (88) int 6 0
+ecom: 
+name startchan chan of (int, ref Expropagate) 0 0
+ecom to: 
+* chan of (int, ref Expropagate) 8 0
+  + int 15 0
+    name .b97 big 0 0
+    const (96) int 6 0
+ecom: 
+= (int, ref Expropagate) 10 2
+  tuple (int, ref Expropagate) 10 1
+    seq nothing 10 1
+      name exepid int 0 0
+      seq nothing 10 1
+        name exprop ref Expropagate 0 0
+  <- (int, ref Expropagate) 10 1
+    name startchan chan of (int, ref Expropagate) 0 0
+ecom: 
+<- (int, ref Expropagate) 10 1
+  name startchan chan of (int, ref Expropagate) 0 0
+ecom to: 
+name exepid (int, ref Expropagate) 0 0
+ecom: 
+= ref Redirlist 10 1
+  name r ref Redirlist 0 0
+  name nil polymorphic type 1 0
+ecom: 
+name nil ref Redirlist 1 0
+ecom to: 
+name r ref Redirlist 0 0
+ecom: 
+= list of ref Listnode 10 2
+  name bqlist list of ref Listnode 0 0
+  call list of ref Listnode 10 2
+    name getbq fn(nil: ref Context, fd: ref Sys->FD, seps: string): list of ref Listnode 11 1
+    seq no type 10 2
+      name ctxt ref Context 0 0
+      seq no type 10 2
+        * ref Sys->FD 10 1
+          indx big 10 1
+            name fds array of ref Sys->FD 0 0
+            const (0) int 6 0
+        seq no type 10 1
+          name seps string 0 0
+ecom: 
+call list of ref Listnode 10 2
+  name getbq fn(nil: ref Context, fd: ref Sys->FD, seps: string): list of ref Listnode 11 1
+  seq no type 10 2
+    name ctxt ref Context 0 0
+    seq no type 10 2
+      * ref Sys->FD 10 1
+        indx big 10 1
+          name fds array of ref Sys->FD 0 0
+          const (0) int 6 0
+      seq no type 10 1
+        name seps string 0 0
+ecom to: 
+name bqlist list of ref Listnode 0 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b97 big 0 0
+    const (64) int 6 0
+ecom: 
+* ref Sys->FD 10 1
+  indx big 10 1
+    name fds array of ref Sys->FD 0 0
+    const (0) int 6 0
+ecom to: 
+* ref Sys->FD 8 0
+  + int 15 0
+    name .b97 big 0 0
+    const (72) int 6 0
+eacom: 
+* ref Sys->FD 10 1
+  indx big 10 1
+    name fds array of ref Sys->FD 0 0
+    const (0) int 6 0
+generate desc for big
+ecom: 
+indx big 10 1
+  name fds array of ref Sys->FD 0 0
+  const (0) int 6 0
+ecom to: 
+name .b95 big 0 0
+ecom: 
+name seps string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b97 big 0 0
+    const (80) int 6 0
+ecom: 
+used string 10 2
+  call string 10 2
+    name waitfor fn(ctxt: ref Context, pids: list of int): string 11 1
+    seq no type 10 1
+      name ctxt ref Context 0 0
+      seq no type 10 1
+        :: list of int 10 1
+          name exepid int 0 0
+          name nil polymorphic type 1 0
+ecom: 
+call string 10 2
+  name waitfor fn(ctxt: ref Context, pids: list of int): string 11 1
+  seq no type 10 1
+    name ctxt ref Context 0 0
+    seq no type 10 1
+      :: list of int 10 1
+        name exepid int 0 0
+        name nil polymorphic type 1 0
+ecom to: 
+name .t96 string 0 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b97 big 0 0
+    const (64) int 6 0
+ecom: 
+:: list of int 10 1
+  name exepid int 0 0
+  name nil polymorphic type 1 0
+ecom to: 
+* list of int 8 0
+  + int 15 0
+    name .b97 big 0 0
+    const (72) int 6 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+name .t100 list of int 0 0
+ecom: 
+= list of int 10 1
+  name .t100 list of int 0 0
+  name nil list of int 1 0
+ecom: 
+name nil list of int 1 0
+ecom to: 
+name .t100 list of int 0 0
+ecom: 
+= string 10 1
+  name .t96 string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name .t96 string 0 0
+ecom: 
+raise nothing 10 1
+  * string 8 0
+    name exprop ref Expropagate 0 0
+ecom: 
+tuple (list of ref Listnode, polymorphic type) 10 1
+  seq no type 10 1
+    name bqlist list of ref Listnode 0 0
+    seq no type 10 1
+      name nil polymorphic type 1 0
+ecom to: 
+* (list of ref Listnode, polymorphic type) 8 0
+  name .ret int 0 0
+ecom: 
+name bqlist list of ref Listnode 0 0
+ecom to: 
+* list of ref Listnode 8 0
+  + int 15 1
+    adr int 15 1
+      * (list of ref Listnode, polymorphic type) 8 0
+        name .ret int 0 0
+    const (0) int 6 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* polymorphic type 8 0
+  + int 15 1
+    adr int 15 1
+      * (list of ref Listnode, polymorphic type) 8 0
+        name .ret int 0 0
+    const (8) int 6 0
+fn: bq
+64: argument ctxt ref Context ref 4
+72: argument cmd list of ref Listnode ref 1
+80: argument seps string ref 1
+88: local exepid int ref 2
+96: local exprop ref Expropagate ref 3
+104: local .t94 int ref 1
+112: local .b97 big ref 6
+120: local fds array of ref Sys->FD ref 5
+128: local .b95 big ref 3
+136: local r ref Redirlist ref 3
+144: local startchan chan of (int, ref Expropagate) ref 3
+152: local bqlist list of ref Listnode ref 2
+160: local .b98 ref Redirlist ref 1
+168: local .t100 list of int ref 1
+176: local .t96 string ref 1
+184: local .b99 Redirword ref 1
+generate desc for bq
+descmap offset 0
+descmap ctxt type ref Context offset 64 (d->offset=64 start=0) returns 64
+descmap cmd type list of ref Listnode offset 72 (d->offset=72 start=0) returns 72
+descmap seps type string offset 80 (d->offset=80 start=0) returns 80
+descmap exepid type int offset 88 (d->offset=88 start=0) returns -1
+descmap exprop type ref Expropagate offset 96 (d->offset=96 start=0) returns 96
+descmap .t94 type int offset 104 (d->offset=104 start=0) returns -1
+descmap .b97 type big offset 112 (d->offset=112 start=0) returns -1
+descmap fds type array of ref Sys->FD offset 120 (d->offset=120 start=0) returns 120
+descmap .b95 type big offset 128 (d->offset=128 start=0) returns -1
+descmap r type ref Redirlist offset 136 (d->offset=136 start=0) returns 136
+descmap startchan type chan of (int, ref Expropagate) offset 144 (d->offset=144 start=0) returns 144
+descmap bqlist type list of ref Listnode offset 152 (d->offset=152 start=0) returns 152
+descmap .b98 type ref Redirlist offset 160 (d->offset=160 start=0) returns 160
+descmap .t100 type list of int offset 168 (d->offset=168 start=0) returns 168
+descmap .t96 type string offset 176 (d->offset=176 start=0) returns 176
+descmap adt offset 184
+descmap offset 184
+descmap fd type ref Sys->FD offset 184 (d->offset=0 start=184) returns 184
+descmap w type string offset 192 (d->offset=8 start=184) returns 192
+descmap adt offset 200
+descmap offset 200
+descmap rtype type int offset 200 (d->offset=0 start=200) returns -1
+descmap fd1 type int offset 204 (d->offset=4 start=200) returns -1
+descmap fd2 type int offset 208 (d->offset=8 start=200) returns -1
+descmap r type Redir offset 200 (d->offset=16 start=184) returns -1
+descmap .b99 type Redirword offset 184 (d->offset=184 start=0) returns 192
+fncom: rdir 2 418928
+fncom: concatwords 3 4189e8
+ecom: 
+= string 10 2
+  * string 8 0
+    + int 15 1
+      name p1 ref Listnode 0 0
+      const word (8) int 6 0
+  call string 10 2
+    name cmd2string fn(n: ref Node): string 11 1
+    seq no type 10 1
+      * ref Node 8 0
+        name p1 ref Listnode 0 0
+ecom: 
+call string 10 2
+  name cmd2string fn(n: ref Node): string 11 1
+  seq no type 10 1
+    * ref Node 8 0
+      name p1 ref Listnode 0 0
+ecom to: 
+* string 8 0
+  + int 15 1
+    name p1 ref Listnode 0 0
+    const word (8) int 6 0
+generate desc for big
+ecom: 
+* ref Node 8 0
+  name p1 ref Listnode 0 0
+ecom to: 
+* ref Node 8 0
+  + int 15 0
+    name .b101 big 0 0
+    const (64) int 6 0
+ecom: 
+= string 10 2
+  * string 8 0
+    + int 15 1
+      name p2 ref Listnode 0 0
+      const word (8) int 6 0
+  call string 10 2
+    name cmd2string fn(n: ref Node): string 11 1
+    seq no type 10 1
+      * ref Node 8 0
+        name p2 ref Listnode 0 0
+ecom: 
+call string 10 2
+  name cmd2string fn(n: ref Node): string 11 1
+  seq no type 10 1
+    * ref Node 8 0
+      name p2 ref Listnode 0 0
+ecom to: 
+* string 8 0
+  + int 15 1
+    name p2 ref Listnode 0 0
+    const word (8) int 6 0
+generate desc for big
+ecom: 
+* ref Node 8 0
+  name p2 ref Listnode 0 0
+ecom to: 
+* ref Node 8 0
+  + int 15 0
+    name .b101 big 0 0
+    const (64) int 6 0
+ecom: 
+ref ref Listnode 10 1
+  tuple Listnode 10 1
+    seq no type 10 1
+      name nil polymorphic type 1 0
+      seq no type 10 1
+        + string 10 1
+          * string 8 0
+            + int 15 1
+              name p1 ref Listnode 0 0
+              const word (8) int 6 0
+          * string 8 0
+            + int 15 1
+              name p2 ref Listnode 0 0
+              const word (8) int 6 0
+ecom to: 
+* ref Listnode 8 0
+  name .ret int 0 0
+generate desc for ref Listnode
+generate desc for ref Listnode
+	desc	$-1,8,"80"
+generate desc for Listnode
+ecom: 
+tuple Listnode 10 1
+  seq no type 10 1
+    name nil polymorphic type 1 0
+    seq no type 10 1
+      + string 10 1
+        * string 8 0
+          + int 15 1
+            name p1 ref Listnode 0 0
+            const word (8) int 6 0
+        * string 8 0
+          + int 15 1
+            name p2 ref Listnode 0 0
+            const word (8) int 6 0
+ecom to: 
+* Listnode 8 0
+  name .b102 ref Listnode 0 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* ref Node 8 0
+  + int 15 1
+    adr int 15 1
+      * Listnode 8 0
+        name .b102 ref Listnode 0 0
+    const (0) int 6 0
+ecom: 
++ string 10 1
+  * string 8 0
+    + int 15 1
+      name p1 ref Listnode 0 0
+      const word (8) int 6 0
+  * string 8 0
+    + int 15 1
+      name p2 ref Listnode 0 0
+      const word (8) int 6 0
+ecom to: 
+* string 8 0
+  + int 15 1
+    adr int 15 1
+      * Listnode 8 0
+        name .b102 ref Listnode 0 0
+    const (8) int 6 0
+ecom: 
+* string 8 0
+  + int 15 1
+    name p1 ref Listnode 0 0
+    const word (8) int 6 0
+ecom to: 
+name .t103 string 0 0
+ecom: 
+= string 10 1
+  name .t103 string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name .t103 string 0 0
+ecom: 
+= ref Listnode 10 1
+  name .b102 ref Listnode 0 0
+  name nil ref Listnode 1 0
+ecom: 
+name nil ref Listnode 1 0
+ecom to: 
+name .b102 ref Listnode 0 0
+fn: concatwords
+64: argument p1 ref Listnode ref 5
+72: argument p2 ref Listnode ref 5
+80: local .b101 big ref 2
+88: local .b102 ref Listnode ref 1
+96: local .t103 string ref 1
+generate desc for concatwords
+descmap offset 0
+descmap p1 type ref Listnode offset 64 (d->offset=64 start=0) returns 64
+descmap p2 type ref Listnode offset 72 (d->offset=72 start=0) returns 72
+descmap .b101 type big offset 80 (d->offset=80 start=0) returns -1
+descmap .b102 type ref Listnode offset 88 (d->offset=88 start=0) returns 88
+descmap .t103 type string offset 96 (d->offset=96 start=0) returns 96
+fncom: concat 2 418aa8
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* polymorphic type 8 0
+  name .ret int 0 0
+ecom: 
+call no type 10 2
+  name fail fn(ctxt: self ref Context, ename: string, err: string) 11 1
+  seq nothing 10 1
+    name ctxt ref Context 0 0
+    seq no type 10 1
+      const bad concatenation string 1 0
+      seq no type 10 1
+        const sh: null list in concatenation string 1 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b104 big 0 0
+    const (64) int 6 0
+ecom: 
+const bad concatenation string 1 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b104 big 0 0
+    const (72) int 6 0
+ecom: 
+const sh: null list in concatenation string 1 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b104 big 0 0
+    const (80) int 6 0
+eacom: 
+tl list of ref Listnode 10 1
+  name nl1 list of ref Listnode 0 0
+ecom: 
+tl list of ref Listnode 10 1
+  name nl1 list of ref Listnode 0 0
+ecom to: 
+name .t105 list of ref Listnode 0 0
+ecom: 
+= list of ref Listnode 10 1
+  name .t105 list of ref Listnode 0 0
+  name nil list of ref Listnode 1 0
+ecom: 
+name nil list of ref Listnode 1 0
+ecom to: 
+name .t105 list of ref Listnode 0 0
+eacom: 
+tl list of ref Listnode 10 1
+  name nl2 list of ref Listnode 0 0
+ecom: 
+tl list of ref Listnode 10 1
+  name nl2 list of ref Listnode 0 0
+ecom to: 
+name .t105 list of ref Listnode 0 0
+ecom: 
+= list of ref Listnode 10 1
+  name .t105 list of ref Listnode 0 0
+  name nil list of ref Listnode 1 0
+ecom: 
+name nil list of ref Listnode 1 0
+ecom to: 
+name .t105 list of ref Listnode 0 0
+ecom: 
+= list of ref Listnode 10 1
+  name p1 list of ref Listnode 0 0
+  name nl1 list of ref Listnode 0 0
+ecom: 
+name nl1 list of ref Listnode 0 0
+ecom to: 
+name p1 list of ref Listnode 0 0
+ecom: 
+= list of ref Listnode 10 1
+  name p2 list of ref Listnode 0 0
+    name p1 list of ref Listnode 0 0
+  name nl2 list of ref Listnode 0 0
+ecom: 
+name nl2 list of ref Listnode 0 0
+ecom to: 
+name p2 list of ref Listnode 0 0
+  name p1 list of ref Listnode 0 0
+ecom: 
+= list of ref Listnode 10 2
+  name ret list of ref Listnode 0 0
+  :: list of ref Listnode 10 2
+    call ref Listnode 10 2
+      name concatwords fn(p1: ref Listnode, p2: ref Listnode): ref Listnode 11 1
+      seq no type 10 2
+        hd ref Listnode 10 1
+          name p1 list of ref Listnode 0 0
+        seq no type 10 1
+          hd ref Listnode 10 1
+            name p2 list of ref Listnode 0 0
+    name ret list of ref Listnode 0 0
+ecom: 
+:: list of ref Listnode 10 2
+  call ref Listnode 10 2
+    name concatwords fn(p1: ref Listnode, p2: ref Listnode): ref Listnode 11 1
+    seq no type 10 2
+      hd ref Listnode 10 1
+        name p1 list of ref Listnode 0 0
+      seq no type 10 1
+        hd ref Listnode 10 1
+          name p2 list of ref Listnode 0 0
+  name ret list of ref Listnode 0 0
+ecom to: 
+name ret list of ref Listnode 0 0
+eacom: 
+call ref Listnode 10 2
+  name concatwords fn(p1: ref Listnode, p2: ref Listnode): ref Listnode 11 1
+  seq no type 10 2
+    hd ref Listnode 10 1
+      name p1 list of ref Listnode 0 0
+    seq no type 10 1
+      hd ref Listnode 10 1
+        name p2 list of ref Listnode 0 0
+generate desc for ref Listnode
+generate desc for ref Listnode
+	desc	$-1,8,"80"
+ecom: 
+call ref Listnode 10 2
+  name concatwords fn(p1: ref Listnode, p2: ref Listnode): ref Listnode 11 1
+  seq no type 10 2
+    hd ref Listnode 10 1
+      name p1 list of ref Listnode 0 0
+    seq no type 10 1
+      hd ref Listnode 10 1
+        name p2 list of ref Listnode 0 0
+ecom to: 
+name .b106 ref Listnode 0 0
+generate desc for big
+ecom: 
+hd ref Listnode 10 1
+  name p1 list of ref Listnode 0 0
+ecom to: 
+* ref Listnode 8 0
+  + int 15 0
+    name .b104 big 0 0
+    const (64) int 6 0
+ecom: 
+hd ref Listnode 10 1
+  name p2 list of ref Listnode 0 0
+ecom to: 
+* ref Listnode 8 0
+  + int 15 0
+    name .b104 big 0 0
+    const (72) int 6 0
+ecom: 
+= ref Listnode 10 1
+  name .b106 ref Listnode 0 0
+  name nil ref Listnode 1 0
+ecom: 
+name nil ref Listnode 1 0
+ecom to: 
+name .b106 ref Listnode 0 0
+ecom: 
+= list of ref Listnode 10 1
+  name p2 list of ref Listnode 0 0
+  tl list of ref Listnode 10 1
+    name p2 list of ref Listnode 0 0
+ecom: 
+tl list of ref Listnode 10 1
+  name p2 list of ref Listnode 0 0
+ecom to: 
+name p2 list of ref Listnode 0 0
+ecom: 
+= list of ref Listnode 10 1
+  name p1 list of ref Listnode 0 0
+  tl list of ref Listnode 10 1
+    name p1 list of ref Listnode 0 0
+ecom: 
+tl list of ref Listnode 10 1
+  name p1 list of ref Listnode 0 0
+ecom to: 
+name p1 list of ref Listnode 0 0
+ecom: 
+= list of ref Listnode 10 1
+  name p2 list of ref Listnode 0 0
+  name nil list of ref Listnode 1 0
+ecom: 
+name nil list of ref Listnode 1 0
+ecom to: 
+name p2 list of ref Listnode 0 0
+ecom: 
+= list of ref Listnode 10 1
+  name p1 list of ref Listnode 0 0
+  name nil list of ref Listnode 1 0
+ecom: 
+name nil list of ref Listnode 1 0
+ecom to: 
+name p1 list of ref Listnode 0 0
+ecom: 
+len int 10 1
+  name nl2 list of ref Listnode 0 0
+ecom to: 
+name .t107 int 0 0
+eacom: 
+len int 10 1
+  name nl1 list of ref Listnode 0 0
+ecom: 
+len int 10 1
+  name nl1 list of ref Listnode 0 0
+ecom to: 
+name .t108 int 0 0
+ecom: 
+call no type 10 2
+  name fail fn(ctxt: self ref Context, ename: string, err: string) 11 1
+  seq nothing 10 1
+    name ctxt ref Context 0 0
+    seq no type 10 1
+      const bad concatenation string 1 0
+      seq no type 10 1
+        const sh: lists of differing sizes can't be concatenated string 1 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b104 big 0 0
+    const (64) int 6 0
+ecom: 
+const bad concatenation string 1 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b104 big 0 0
+    const (72) int 6 0
+ecom: 
+const sh: lists of differing sizes can't be concatenated string 1 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b104 big 0 0
+    const (80) int 6 0
+ecom: 
+= list of ref Listnode 10 2
+  name ret list of ref Listnode 0 0
+  :: list of ref Listnode 10 2
+    call ref Listnode 10 2
+      name concatwords fn(p1: ref Listnode, p2: ref Listnode): ref Listnode 11 1
+      seq no type 10 2
+        hd ref Listnode 10 1
+          name nl1 list of ref Listnode 0 0
+        seq no type 10 1
+          hd ref Listnode 10 1
+            name nl2 list of ref Listnode 0 0
+    name ret list of ref Listnode 0 0
+ecom: 
+:: list of ref Listnode 10 2
+  call ref Listnode 10 2
+    name concatwords fn(p1: ref Listnode, p2: ref Listnode): ref Listnode 11 1
+    seq no type 10 2
+      hd ref Listnode 10 1
+        name nl1 list of ref Listnode 0 0
+      seq no type 10 1
+        hd ref Listnode 10 1
+          name nl2 list of ref Listnode 0 0
+  name ret list of ref Listnode 0 0
+ecom to: 
+name ret list of ref Listnode 0 0
+eacom: 
+call ref Listnode 10 2
+  name concatwords fn(p1: ref Listnode, p2: ref Listnode): ref Listnode 11 1
+  seq no type 10 2
+    hd ref Listnode 10 1
+      name nl1 list of ref Listnode 0 0
+    seq no type 10 1
+      hd ref Listnode 10 1
+        name nl2 list of ref Listnode 0 0
+generate desc for ref Listnode
+ecom: 
+call ref Listnode 10 2
+  name concatwords fn(p1: ref Listnode, p2: ref Listnode): ref Listnode 11 1
+  seq no type 10 2
+    hd ref Listnode 10 1
+      name nl1 list of ref Listnode 0 0
+    seq no type 10 1
+      hd ref Listnode 10 1
+        name nl2 list of ref Listnode 0 0
+ecom to: 
+name .b106 ref Listnode 0 0
+generate desc for big
+ecom: 
+hd ref Listnode 10 1
+  name nl1 list of ref Listnode 0 0
+ecom to: 
+* ref Listnode 8 0
+  + int 15 0
+    name .b104 big 0 0
+    const (64) int 6 0
+ecom: 
+hd ref Listnode 10 1
+  name nl2 list of ref Listnode 0 0
+ecom to: 
+* ref Listnode 8 0
+  + int 15 0
+    name .b104 big 0 0
+    const (72) int 6 0
+ecom: 
+= ref Listnode 10 1
+  name .b106 ref Listnode 0 0
+  name nil ref Listnode 1 0
+ecom: 
+name nil ref Listnode 1 0
+ecom to: 
+name .b106 ref Listnode 0 0
+ecom: 
+= (list of ref Listnode, list of ref Listnode) 10 2
+  tuple (list of ref Listnode, list of ref Listnode) 10 1
+    seq no type 10 1
+      name nl1 list of ref Listnode 0 0
+      seq no type 10 1
+        name nl2 list of ref Listnode 0 0
+  tuple (list of ref Listnode, list of ref Listnode) 10 2
+    seq no type 10 2
+      tl list of ref Listnode 10 1
+        name nl1 list of ref Listnode 0 0
+      seq no type 10 1
+        tl list of ref Listnode 10 1
+          name nl2 list of ref Listnode 0 0
+generate desc for (list of ref Listnode, list of ref Listnode)
+descmap adt offset 0
+descmap offset 0
+descmap t0 type list of ref Listnode offset 0 (d->offset=0 start=0) returns 0
+descmap t1 type list of ref Listnode offset 8 (d->offset=8 start=0) returns 8
+generate desc for (list of ref Listnode, list of ref Listnode)
+	desc	$-1,16,"c0"
+ecom: 
+tuple (list of ref Listnode, list of ref Listnode) 10 2
+  seq no type 10 2
+    tl list of ref Listnode 10 1
+      name nl1 list of ref Listnode 0 0
+    seq no type 10 1
+      tl list of ref Listnode 10 1
+        name nl2 list of ref Listnode 0 0
+ecom to: 
+name .b109 (list of ref Listnode, list of ref Listnode) 0 0
+ecom: 
+tl list of ref Listnode 10 1
+  name nl1 list of ref Listnode 0 0
+ecom to: 
+* list of ref Listnode 0 0
+  + int 13 1
+    adr int 13 1
+      name .b109 (list of ref Listnode, list of ref Listnode) 0 0
+    const (0) int 6 0
+ecom: 
+tl list of ref Listnode 10 1
+  name nl2 list of ref Listnode 0 0
+ecom to: 
+* list of ref Listnode 0 0
+  + int 13 1
+    adr int 13 1
+      name .b109 (list of ref Listnode, list of ref Listnode) 0 0
+    const (8) int 6 0
+ecom: 
+= list of ref Listnode 10 1
+  * list of ref Listnode 0 0
+    adr int 13 1
+      name .b109 (list of ref Listnode, list of ref Listnode) 0 0
+  name nil list of ref Listnode 1 0
+ecom: 
+name nil list of ref Listnode 1 0
+ecom to: 
+* list of ref Listnode 0 0
+  adr int 13 1
+    name .b109 (list of ref Listnode, list of ref Listnode) 0 0
+ecom: 
+= list of ref Listnode 10 1
+  * list of ref Listnode 0 0
+    + int 13 1
+      adr int 13 1
+        name .b109 (list of ref Listnode, list of ref Listnode) 0 0
+      const t1 (8) int 6 0
+  name nil list of ref Listnode 1 0
+ecom: 
+name nil list of ref Listnode 1 0
+ecom to: 
+* list of ref Listnode 0 0
+  + int 13 1
+    adr int 13 1
+      name .b109 (list of ref Listnode, list of ref Listnode) 0 0
+    const t1 (8) int 6 0
+ecom: 
+call list of ref Listnode 10 2
+  name revlist fn(l: list of ref Listnode): list of ref Listnode 11 1
+  seq no type 10 1
+    name ret list of ref Listnode 0 0
+ecom to: 
+* list of ref Listnode 8 0
+  name .ret int 0 0
+generate desc for big
+ecom: 
+name ret list of ref Listnode 0 0
+ecom to: 
+* list of ref Listnode 8 0
+  + int 15 0
+    name .b104 big 0 0
+    const (64) int 6 0
+fn: concat
+64: argument ctxt ref Context ref 2
+72: argument nl1 list of ref Listnode ref 9
+80: argument nl2 list of ref Listnode ref 8
+88: local .t107 int ref 1
+92: local .t108 int ref 1
+96: local .b104 big ref 5
+104: local p1 list of ref Listnode ref 5
+112: local p2 list of ref Listnode ref 5
+120: local ret list of ref Listnode ref 5
+128: local .b106 ref Listnode ref 2
+136: local .t105 list of ref Listnode ref 1
+144: local .b109 (list of ref Listnode, list of ref Listnode) ref 1
+generate desc for concat
+descmap offset 0
+descmap ctxt type ref Context offset 64 (d->offset=64 start=0) returns 64
+descmap nl1 type list of ref Listnode offset 72 (d->offset=72 start=0) returns 72
+descmap nl2 type list of ref Listnode offset 80 (d->offset=80 start=0) returns 80
+descmap .t107 type int offset 88 (d->offset=88 start=0) returns -1
+descmap .t108 type int offset 92 (d->offset=92 start=0) returns -1
+descmap .b104 type big offset 96 (d->offset=96 start=0) returns -1
+descmap p1 type list of ref Listnode offset 104 (d->offset=104 start=0) returns 104
+descmap p2 type list of ref Listnode offset 112 (d->offset=112 start=0) returns 112
+descmap ret type list of ref Listnode offset 120 (d->offset=120 start=0) returns 120
+descmap .b106 type ref Listnode offset 128 (d->offset=128 start=0) returns 128
+descmap .t105 type list of ref Listnode offset 136 (d->offset=136 start=0) returns 136
+descmap adt offset 144
+descmap offset 144
+descmap t0 type list of ref Listnode offset 144 (d->offset=0 start=144) returns 144
+descmap t1 type list of ref Listnode offset 152 (d->offset=8 start=144) returns 152
+descmap .b109 type (list of ref Listnode, list of ref Listnode) offset 144 (d->offset=144 start=0) returns 152
+fncom: runasync 7 418b68
+ecom: 
+= int 10 2
+  name pid int 0 0
+  call int 10 2
+    -> fn(flags: int, movefd: list of int): int 12 1
+      name sys Sys 1 0
+      name pctl nothing 11 1
+    seq no type 10 1
+      const FORKFD (2) int 6 0
+      seq no type 10 1
+        name nil list of int 1 0
+ecom: 
+call int 10 2
+  -> fn(flags: int, movefd: list of int): int 12 1
+    name sys Sys 1 0
+    name pctl nothing 11 1
+  seq no type 10 1
+    const FORKFD (2) int 6 0
+    seq no type 10 1
+      name nil list of int 1 0
+ecom to: 
+name pid int 0 0
+generate desc for big
+ecom: 
+const FORKFD (2) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b110 big 0 0
+    const (64) int 6 0
+ecom: 
+name nil list of int 1 0
+ecom to: 
+* list of int 8 0
+  + int 15 0
+    name .b110 big 0 0
+    const (72) int 6 0
+ecom: 
+= ref Context 10 2
+  name ctxt ref Context 0 0
+  call ref Context 10 2
+    name copy fn(ctxt: self ref Context, copyenv: int): ref Context 11 1
+    seq nothing 10 1
+      name ctxt ref Context 0 0
+      seq no type 10 1
+        name copyenv int 0 0
+ecom: 
+call ref Context 10 2
+  name copy fn(ctxt: self ref Context, copyenv: int): ref Context 11 1
+  seq nothing 10 1
+    name ctxt ref Context 0 0
+    seq no type 10 1
+      name copyenv int 0 0
+ecom to: 
+name ctxt ref Context 0 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b110 big 0 0
+    const (64) int 6 0
+ecom: 
+name copyenv int 0 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b110 big 0 0
+    const (72) int 6 0
+ecom: 
+= ref Expropagate 10 1
+  name exprop ref Expropagate 0 0
+  ref ref Expropagate 10 1
+    name Expropagate Expropagate 10 1
+ecom: 
+ref ref Expropagate 10 1
+  name Expropagate Expropagate 10 1
+ecom to: 
+name exprop ref Expropagate 0 0
+generate desc for Expropagate
+descmap adt offset 0
+descmap offset 0
+descmap name type string offset 0 (d->offset=0 start=0) returns 0
+generate desc for Expropagate
+	desc	$-1,8,"80"
+ecom: 
+= list of int 10 2
+  name newfdl list of int 0 0
+  call list of int 10 2
+    name doredirs fn(ctxt: ref Context, redirs: ref Redirlist): list of int 11 1
+    seq no type 10 1
+      name ctxt ref Context 0 0
+      seq no type 10 1
+        name redirs ref Redirlist 0 0
+ecom: 
+call list of int 10 2
+  name doredirs fn(ctxt: ref Context, redirs: ref Redirlist): list of int 11 1
+  seq no type 10 1
+    name ctxt ref Context 0 0
+    seq no type 10 1
+      name redirs ref Redirlist 0 0
+ecom to: 
+name newfdl list of int 0 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b110 big 0 0
+    const (64) int 6 0
+ecom: 
+name redirs ref Redirlist 0 0
+ecom to: 
+* ref Redirlist 8 0
+  + int 15 0
+    name .b110 big 0 0
+    const (72) int 6 0
+ecom: 
+= ref Redirlist 10 1
+  name redirs ref Redirlist 0 0
+  name nil polymorphic type 1 0
+ecom: 
+name nil ref Redirlist 1 0
+ecom to: 
+name redirs ref Redirlist 0 0
+ecom: 
+used int 10 2
+  call int 10 2
+    -> fn(flags: int, movefd: list of int): int 12 1
+      name sys Sys 1 0
+      name pctl nothing 11 1
+    seq no type 10 1
+      const NEWFD (1) int 6 0
+      seq no type 10 1
+        name newfdl list of int 0 0
+ecom: 
+call int 10 2
+  -> fn(flags: int, movefd: list of int): int 12 1
+    name sys Sys 1 0
+    name pctl nothing 11 1
+  seq no type 10 1
+    const NEWFD (1) int 6 0
+    seq no type 10 1
+      name newfdl list of int 0 0
+ecom to: 
+name .t111 int 0 0
+generate desc for big
+ecom: 
+const NEWFD (1) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b110 big 0 0
+    const (64) int 6 0
+ecom: 
+name newfdl list of int 0 0
+ecom to: 
+* list of int 8 0
+  + int 15 0
+    name .b110 big 0 0
+    const (72) int 6 0
+ecom: 
+= ref Sys->FD 10 1
+  * ref Sys->FD 8 0
+    + int 15 1
+      name ctxt ref Context 0 0
+      const waitfd (8) int 6 0
+  call ref Sys->FD 10 1
+    name waitfd fn(): ref Sys->FD 11 1
+ecom: 
+call ref Sys->FD 10 1
+  name waitfd fn(): ref Sys->FD 11 1
+ecom to: 
+* ref Sys->FD 8 0
+  + int 15 1
+    name ctxt ref Context 0 0
+    const waitfd (8) int 6 0
+generate desc for big
+ecom: 
+<-= (int, ref Expropagate) 10 1
+  name startchan chan of (int, ref Expropagate) 0 0
+  tuple (int, ref Expropagate) 10 1
+    seq no type 10 1
+      name pid int 0 0
+      seq no type 10 1
+        name exprop ref Expropagate 0 0
+eacom: 
+tuple (int, ref Expropagate) 10 1
+  seq no type 10 1
+    name pid int 0 0
+    seq no type 10 1
+      name exprop ref Expropagate 0 0
+generate desc for (int, ref Expropagate)
+descmap adt offset 0
+descmap offset 0
+descmap t0 type int offset 0 (d->offset=0 start=0) returns -1
+descmap t1 type ref Expropagate offset 8 (d->offset=8 start=0) returns 8
+generate desc for (int, ref Expropagate)
+	desc	$-1,16,"40"
+ecom: 
+tuple (int, ref Expropagate) 10 1
+  seq no type 10 1
+    name pid int 0 0
+    seq no type 10 1
+      name exprop ref Expropagate 0 0
+ecom to: 
+name .b112 (int, ref Expropagate) 0 0
+ecom: 
+name pid int 0 0
+ecom to: 
+* int 0 0
+  + int 13 1
+    adr int 13 1
+      name .b112 (int, ref Expropagate) 0 0
+    const (0) int 6 0
+ecom: 
+name exprop ref Expropagate 0 0
+ecom to: 
+* ref Expropagate 0 0
+  + int 13 1
+    adr int 13 1
+      name .b112 (int, ref Expropagate) 0 0
+    const (8) int 6 0
+ecom: 
+= ref Expropagate 10 1
+  * ref Expropagate 0 0
+    + int 13 1
+      adr int 13 1
+        name .b112 (int, ref Expropagate) 0 0
+      const t1 (8) int 6 0
+  name nil ref Expropagate 1 0
+ecom: 
+name nil ref Expropagate 1 0
+ecom to: 
+* ref Expropagate 0 0
+  + int 13 1
+    adr int 13 1
+      name .b112 (int, ref Expropagate) 0 0
+    const t1 (8) int 6 0
+ecom: 
+= chan of (int, ref Expropagate) 10 1
+  name startchan chan of (int, ref Expropagate) 0 0
+  name nil polymorphic type 1 0
+ecom: 
+name nil chan of (int, ref Expropagate) 1 0
+ecom to: 
+name startchan chan of (int, ref Expropagate) 0 0
+ecom: 
+= string 10 2
+  name status string 0 0
+  call string 10 2
+    name run fn(ctxt: self ref Context, args: list of ref Listnode, last: int): string 11 1
+    seq nothing 10 1
+      name ctxt ref Context 0 0
+      seq no type 10 1
+        name argv list of ref Listnode 0 0
+        seq no type 10 1
+          name copyenv int 0 0
+ecom: 
+call string 10 2
+  name run fn(ctxt: self ref Context, args: list of ref Listnode, last: int): string 11 1
+  seq nothing 10 1
+    name ctxt ref Context 0 0
+    seq no type 10 1
+      name argv list of ref Listnode 0 0
+      seq no type 10 1
+        name copyenv int 0 0
+ecom to: 
+name status string 0 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b110 big 0 0
+    const (64) int 6 0
+ecom: 
+name argv list of ref Listnode 0 0
+ecom to: 
+* list of ref Listnode 8 0
+  + int 15 0
+    name .b110 big 0 0
+    const (72) int 6 0
+ecom: 
+name copyenv int 0 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b110 big 0 0
+    const (80) int 6 0
+ecom: 
+= list of int 10 1
+  name newfdl list of int 0 0
+  name nil list of int 1 0
+ecom: 
+name nil list of int 1 0
+ecom to: 
+name newfdl list of int 0 0
+ecom: 
+= string 10 1
+  * string 8 0
+    name exprop ref Expropagate 0 0
+  name e string 0 0
+ecom: 
+name e string 0 0
+ecom to: 
+* string 8 0
+  name exprop ref Expropagate 0 0
+ecom: 
+<-= (int, ref Expropagate) 10 1
+  name startchan chan of (int, ref Expropagate) 0 0
+  tuple (int, ref Expropagate) 10 1
+    seq no type 10 1
+      name pid int 0 0
+      seq no type 10 1
+        name exprop ref Expropagate 0 0
+eacom: 
+tuple (int, ref Expropagate) 10 1
+  seq no type 10 1
+    name pid int 0 0
+    seq no type 10 1
+      name exprop ref Expropagate 0 0
+generate desc for (int, ref Expropagate)
+descmap adt offset 0
+descmap offset 0
+descmap t0 type int offset 0 (d->offset=0 start=0) returns -1
+descmap t1 type ref Expropagate offset 8 (d->offset=8 start=0) returns 8
+generate desc for (int, ref Expropagate)
+	desc	$-1,16,"40"
+ecom: 
+tuple (int, ref Expropagate) 10 1
+  seq no type 10 1
+    name pid int 0 0
+    seq no type 10 1
+      name exprop ref Expropagate 0 0
+ecom to: 
+name .b112 (int, ref Expropagate) 0 0
+ecom: 
+name pid int 0 0
+ecom to: 
+* int 0 0
+  + int 13 1
+    adr int 13 1
+      name .b112 (int, ref Expropagate) 0 0
+    const (0) int 6 0
+ecom: 
+name exprop ref Expropagate 0 0
+ecom to: 
+* ref Expropagate 0 0
+  + int 13 1
+    adr int 13 1
+      name .b112 (int, ref Expropagate) 0 0
+    const (8) int 6 0
+ecom: 
+= ref Expropagate 10 1
+  * ref Expropagate 0 0
+    + int 13 1
+      adr int 13 1
+        name .b112 (int, ref Expropagate) 0 0
+      const t1 (8) int 6 0
+  name nil ref Expropagate 1 0
+ecom: 
+name nil ref Expropagate 1 0
+ecom to: 
+* ref Expropagate 0 0
+  + int 13 1
+    adr int 13 1
+      name .b112 (int, ref Expropagate) 0 0
+    const t1 (8) int 6 0
+ecom: 
+raise nothing 10 1
+  name e string 0 0
+ecom: 
+raise nothing 10 1
+  + string 10 1
+    const fail: string 1 0
+    name status string 0 0
+eacom: 
++ string 10 1
+  const fail: string 1 0
+  name status string 0 0
+ecom: 
++ string 10 1
+  const fail: string 1 0
+  name status string 0 0
+ecom to: 
+name .t113 string 0 0
+ecom: 
+= string 10 1
+  name .t113 string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name .t113 string 0 0
+fn: runasync
+64: argument ctxt ref Context ref 5
+72: argument copyenv int ref 2
+80: argument argv list of ref Listnode ref 1
+88: argument redirs ref Redirlist ref 3
+96: argument startchan chan of (int, ref Expropagate) ref 4
+104: local e ref exception ref 3
+108: local pid int ref 3
+112: local .t111 int ref 1
+120: local .b110 big ref 6
+128: local exprop ref Expropagate ref 4
+136: local newfdl list of int ref 3
+144: local status string ref 3
+152: local .b112 (int, ref Expropagate) ref 2
+168: local .t113 string ref 1
+generate desc for runasync
+descmap offset 0
+descmap ctxt type ref Context offset 64 (d->offset=64 start=0) returns 64
+descmap copyenv type int offset 72 (d->offset=72 start=0) returns -1
+descmap argv type list of ref Listnode offset 80 (d->offset=80 start=0) returns 80
+descmap redirs type ref Redirlist offset 88 (d->offset=88 start=0) returns 88
+descmap startchan type chan of (int, ref Expropagate) offset 96 (d->offset=96 start=0) returns 96
+descmap e type ref exception offset 104 (d->offset=104 start=0) returns 104
+descmap pid type int offset 108 (d->offset=108 start=0) returns -1
+descmap .t111 type int offset 112 (d->offset=112 start=0) returns -1
+descmap .b110 type big offset 120 (d->offset=120 start=0) returns -1
+descmap exprop type ref Expropagate offset 128 (d->offset=128 start=0) returns 128
+descmap newfdl type list of int offset 136 (d->offset=136 start=0) returns 136
+descmap status type string offset 144 (d->offset=144 start=0) returns 144
+descmap adt offset 152
+descmap offset 152
+descmap t0 type int offset 152 (d->offset=0 start=152) returns -1
+descmap t1 type ref Expropagate offset 160 (d->offset=8 start=152) returns 160
+descmap .b112 type (int, ref Expropagate) offset 152 (d->offset=152 start=0) returns 160
+descmap .t113 type string offset 168 (d->offset=168 start=0) returns 168
+generate desc for e
+descmap offset 0
+descmap newfdl type list of int offset 136 (d->offset=136 start=0) returns 136
+fncom: runsync 2 418c28
+ecom: 
+= chan of (int, ref Expropagate) 10 1
+  name startchan chan of (int, ref Expropagate) 0 0
+  chan chan of (int, ref Expropagate) 10 1
+    const (0) int 6 0
+ecom: 
+chan chan of (int, ref Expropagate) 10 1
+  const (0) int 6 0
+ecom to: 
+name startchan chan of (int, ref Expropagate) 0 0
+generate desc for (int, ref Expropagate)
+descmap adt offset 0
+descmap offset 0
+descmap t0 type int offset 0 (d->offset=0 start=0) returns -1
+descmap t1 type ref Expropagate offset 8 (d->offset=8 start=0) returns 8
+generate desc for (int, ref Expropagate)
+	desc	$-1,16,"40"
+ecom: 
+spawn nothing 10 2
+  call no type 10 2
+    name runasync fn(ctxt: ref Context, copyenv: int, argv: list of ref Listnode, redirs: ref Redirlist, startchan: chan of (int, ref Expropagate)) 11 1
+    seq no type 10 1
+      name ctxt ref Context 0 0
+      seq no type 10 1
+        const (0) int 6 0
+        seq no type 10 1
+          name argv list of ref Listnode 0 0
+          seq no type 10 1
+            name redirs ref Redirlist 0 0
+            seq no type 10 1
+              name startchan chan of (int, ref Expropagate) 0 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b114 big 0 0
+    const (64) int 6 0
+ecom: 
+const (0) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b114 big 0 0
+    const (72) int 6 0
+ecom: 
+name argv list of ref Listnode 0 0
+ecom to: 
+* list of ref Listnode 8 0
+  + int 15 0
+    name .b114 big 0 0
+    const (80) int 6 0
+ecom: 
+name redirs ref Redirlist 0 0
+ecom to: 
+* ref Redirlist 8 0
+  + int 15 0
+    name .b114 big 0 0
+    const (88) int 6 0
+ecom: 
+name startchan chan of (int, ref Expropagate) 0 0
+ecom to: 
+* chan of (int, ref Expropagate) 8 0
+  + int 15 0
+    name .b114 big 0 0
+    const (96) int 6 0
+ecom: 
+= (int, ref Expropagate) 10 2
+  tuple (int, ref Expropagate) 10 1
+    seq nothing 10 1
+      name pid int 0 0
+      seq nothing 10 1
+        name exprop ref Expropagate 0 0
+    name startchan chan of (int, ref Expropagate) 0 0
+  <- (int, ref Expropagate) 10 1
+    name startchan chan of (int, ref Expropagate) 0 0
+generate desc for (int, ref Expropagate)
+ecom: 
+<- (int, ref Expropagate) 10 1
+  name startchan chan of (int, ref Expropagate) 0 0
+ecom to: 
+name .b115 (int, ref Expropagate) 0 0
+ecom: 
+= ref Expropagate 10 1
+  * ref Expropagate 0 0
+    + int 13 1
+      adr int 13 1
+        name .b115 (int, ref Expropagate) 0 0
+      const t1 (8) int 6 0
+  name nil ref Expropagate 1 0
+ecom: 
+name nil ref Expropagate 1 0
+ecom to: 
+* ref Expropagate 0 0
+  + int 13 1
+    adr int 13 1
+      name .b115 (int, ref Expropagate) 0 0
+    const t1 (8) int 6 0
+ecom: 
+= ref Redirlist 10 1
+  name redirs ref Redirlist 0 0
+  name nil polymorphic type 1 0
+ecom: 
+name nil ref Redirlist 1 0
+ecom to: 
+name redirs ref Redirlist 0 0
+ecom: 
+= string 10 2
+  name r string 0 0
+    tuple (int, ref Expropagate) 10 1
+      seq nothing 10 1
+        name pid int 0 0
+        seq nothing 10 1
+          name exprop ref Expropagate 0 0
+      name startchan chan of (int, ref Expropagate) 0 0
+  call string 10 2
+    name waitfor fn(ctxt: ref Context, pids: list of int): string 11 1
+    seq no type 10 1
+      name ctxt ref Context 0 0
+      seq no type 10 1
+        :: list of int 10 1
+          name pid int 0 0
+          name nil polymorphic type 1 0
+ecom: 
+call string 10 2
+  name waitfor fn(ctxt: ref Context, pids: list of int): string 11 1
+  seq no type 10 1
+    name ctxt ref Context 0 0
+    seq no type 10 1
+      :: list of int 10 1
+        name pid int 0 0
+        name nil polymorphic type 1 0
+ecom to: 
+name r string 0 0
+  tuple (int, ref Expropagate) 10 1
+    seq nothing 10 1
+      name pid int 0 0
+      seq nothing 10 1
+        name exprop ref Expropagate 0 0
+    name startchan chan of (int, ref Expropagate) 0 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b114 big 0 0
+    const (64) int 6 0
+ecom: 
+:: list of int 10 1
+  name pid int 0 0
+  name nil polymorphic type 1 0
+ecom to: 
+* list of int 8 0
+  + int 15 0
+    name .b114 big 0 0
+    const (72) int 6 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+name .t116 list of int 0 0
+ecom: 
+= list of int 10 1
+  name .t116 list of int 0 0
+  name nil list of int 1 0
+ecom: 
+name nil list of int 1 0
+ecom to: 
+name .t116 list of int 0 0
+ecom: 
+raise nothing 10 1
+  * string 8 0
+    name exprop ref Expropagate 0 0
+ecom: 
+name r string 0 0
+ecom to: 
+* string 8 0
+  name .ret int 0 0
+ecom: 
+= string 10 1
+  name r string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name r string 0 0
+ecom: 
+= ref Expropagate 10 1
+  name exprop ref Expropagate 0 0
+  name nil ref Expropagate 1 0
+ecom: 
+name nil ref Expropagate 1 0
+ecom to: 
+name exprop ref Expropagate 0 0
+ecom: 
+= chan of (int, ref Expropagate) 10 1
+  name startchan chan of (int, ref Expropagate) 0 0
+  name nil chan of (int, ref Expropagate) 1 0
+ecom: 
+name nil chan of (int, ref Expropagate) 1 0
+ecom to: 
+name startchan chan of (int, ref Expropagate) 0 0
+ecom: 
+= list of int 10 2
+  name newfdl list of int 0 0
+  call list of int 10 2
+    name doredirs fn(ctxt: ref Context, redirs: ref Redirlist): list of int 11 1
+    seq no type 10 1
+      name ctxt ref Context 0 0
+      seq no type 10 1
+        name redirs ref Redirlist 0 0
+ecom: 
+call list of int 10 2
+  name doredirs fn(ctxt: ref Context, redirs: ref Redirlist): list of int 11 1
+  seq no type 10 1
+    name ctxt ref Context 0 0
+    seq no type 10 1
+      name redirs ref Redirlist 0 0
+ecom to: 
+name newfdl list of int 0 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b114 big 0 0
+    const (64) int 6 0
+ecom: 
+name redirs ref Redirlist 0 0
+ecom to: 
+* ref Redirlist 8 0
+  + int 15 0
+    name .b114 big 0 0
+    const (72) int 6 0
+ecom: 
+= ref Redirlist 10 1
+  name redirs ref Redirlist 0 0
+  name nil polymorphic type 1 0
+ecom: 
+name nil ref Redirlist 1 0
+ecom to: 
+name redirs ref Redirlist 0 0
+ecom: 
+used int 10 2
+  call int 10 2
+    -> fn(flags: int, movefd: list of int): int 12 1
+      name sys Sys 1 0
+      name pctl nothing 11 1
+    seq no type 10 1
+      const NEWFD (1) int 6 0
+      seq no type 10 1
+        name newfdl list of int 0 0
+ecom: 
+call int 10 2
+  -> fn(flags: int, movefd: list of int): int 12 1
+    name sys Sys 1 0
+    name pctl nothing 11 1
+  seq no type 10 1
+    const NEWFD (1) int 6 0
+    seq no type 10 1
+      name newfdl list of int 0 0
+ecom to: 
+name .t117 int 0 0
+generate desc for big
+ecom: 
+const NEWFD (1) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b114 big 0 0
+    const (64) int 6 0
+ecom: 
+name newfdl list of int 0 0
+ecom to: 
+* list of int 8 0
+  + int 15 0
+    name .b114 big 0 0
+    const (72) int 6 0
+ecom: 
+call string 10 2
+  name run fn(ctxt: self ref Context, args: list of ref Listnode, last: int): string 11 1
+  seq nothing 10 1
+    name ctxt ref Context 0 0
+    seq no type 10 1
+      name argv list of ref Listnode 0 0
+      seq no type 10 1
+        name last int 0 0
+ecom to: 
+* string 8 0
+  name .ret int 0 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b114 big 0 0
+    const (64) int 6 0
+ecom: 
+name argv list of ref Listnode 0 0
+ecom to: 
+* list of ref Listnode 8 0
+  + int 15 0
+    name .b114 big 0 0
+    const (72) int 6 0
+ecom: 
+name last int 0 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b114 big 0 0
+    const (80) int 6 0
+ecom: 
+= list of int 10 1
+  name newfdl list of int 0 0
+  name nil list of int 1 0
+ecom: 
+name nil list of int 1 0
+ecom to: 
+name newfdl list of int 0 0
+fn: runsync
+64: argument ctxt ref Context ref 4
+72: argument argv list of ref Listnode ref 2
+80: argument redirs ref Redirlist ref 6
+88: argument last int ref 3
+96: local pid int ref 2
+104: local exprop ref Expropagate ref 3
+112: local .t117 int ref 1
+120: local .b114 big ref 5
+128: local newfdl list of int ref 3
+136: local startchan chan of (int, ref Expropagate) ref 3
+144: local r string ref 2
+152: local .t116 list of int ref 1
+160: local .b115 (int, ref Expropagate) ref 1
+generate desc for runsync
+descmap offset 0
+descmap ctxt type ref Context offset 64 (d->offset=64 start=0) returns 64
+descmap argv type list of ref Listnode offset 72 (d->offset=72 start=0) returns 72
+descmap redirs type ref Redirlist offset 80 (d->offset=80 start=0) returns 80
+descmap last type int offset 88 (d->offset=88 start=0) returns -1
+descmap pid type int offset 96 (d->offset=96 start=0) returns -1
+descmap exprop type ref Expropagate offset 104 (d->offset=104 start=0) returns 104
+descmap .t117 type int offset 112 (d->offset=112 start=0) returns -1
+descmap .b114 type big offset 120 (d->offset=120 start=0) returns -1
+descmap newfdl type list of int offset 128 (d->offset=128 start=0) returns 128
+descmap startchan type chan of (int, ref Expropagate) offset 136 (d->offset=136 start=0) returns 136
+descmap r type string offset 144 (d->offset=144 start=0) returns 144
+descmap .t116 type list of int offset 152 (d->offset=152 start=0) returns 152
+descmap adt offset 160
+descmap offset 160
+descmap t0 type int offset 160 (d->offset=0 start=160) returns -1
+descmap t1 type ref Expropagate offset 168 (d->offset=8 start=160) returns 168
+descmap .b115 type (int, ref Expropagate) offset 160 (d->offset=160 start=0) returns 168
+fncom: absolute 2 418ce8
+eacom: 
+len int 10 1
+  name p string 0 0
+ecom: 
+len int 10 1
+  name p string 0 0
+ecom to: 
+name .t118 int 0 0
+ecom: 
+const (0) int 6 0
+ecom to: 
+* int 8 0
+  name .ret int 0 0
+eacom: 
+inds int 10 1
+  name p string 0 0
+  const (0) int 6 0
+ecom: 
+inds int 10 1
+  name p string 0 0
+  const (0) int 6 0
+ecom to: 
+name .t118 int 0 0
+eacom: 
+inds int 10 1
+  name p string 0 0
+  const (0) int 6 0
+ecom: 
+inds int 10 1
+  name p string 0 0
+  const (0) int 6 0
+ecom to: 
+name .t118 int 0 0
+ecom: 
+const (1) int 6 0
+ecom to: 
+* int 8 0
+  name .ret int 0 0
+eacom: 
+len int 10 1
+  name p string 0 0
+ecom: 
+len int 10 1
+  name p string 0 0
+ecom to: 
+name .t118 int 0 0
+eacom: 
+inds int 10 1
+  name p string 0 0
+  const (0) int 6 0
+ecom: 
+inds int 10 1
+  name p string 0 0
+  const (0) int 6 0
+ecom to: 
+name .t118 int 0 0
+ecom: 
+const (0) int 6 0
+ecom to: 
+* int 8 0
+  name .ret int 0 0
+eacom: 
+inds int 10 1
+  name p string 0 0
+  const (1) int 6 0
+ecom: 
+inds int 10 1
+  name p string 0 0
+  const (1) int 6 0
+ecom to: 
+name .t118 int 0 0
+ecom: 
+const (1) int 6 0
+ecom to: 
+* int 8 0
+  name .ret int 0 0
+eacom: 
+inds int 10 1
+  name p string 0 0
+  const (1) int 6 0
+ecom: 
+inds int 10 1
+  name p string 0 0
+  const (1) int 6 0
+ecom to: 
+name .t118 int 0 0
+eacom: 
+inds int 10 1
+  name p string 0 0
+  const (2) int 6 0
+ecom: 
+inds int 10 1
+  name p string 0 0
+  const (2) int 6 0
+ecom to: 
+name .t118 int 0 0
+ecom: 
+const (1) int 6 0
+ecom to: 
+* int 8 0
+  name .ret int 0 0
+ecom: 
+const (0) int 6 0
+ecom to: 
+* int 8 0
+  name .ret int 0 0
+fn: absolute
+64: argument p string ref 8
+72: local .t118 int ref 1
+generate desc for absolute
+descmap offset 0
+descmap p type string offset 64 (d->offset=64 start=0) returns 64
+descmap .t118 type int offset 72 (d->offset=72 start=0) returns -1
+fncom: runexternal 4 418da8
+ecom: 
+= string 10 1
+  name progname string 0 0
+  * string 10 1
+    + int 10 1
+      hd ref Listnode 10 1
+        name args list of ref Listnode 0 0
+      const word (8) int 6 0
+ecom: 
+* string 10 1
+  + int 10 1
+    hd ref Listnode 10 1
+      name args list of ref Listnode 0 0
+    const word (8) int 6 0
+ecom to: 
+name progname string 0 0
+eacom: 
+* string 10 1
+  + int 10 1
+    hd ref Listnode 10 1
+      name args list of ref Listnode 0 0
+    const word (8) int 6 0
+generate desc for ref Listnode
+generate desc for ref Listnode
+	desc	$-1,8,"80"
+ecom: 
+hd ref Listnode 10 1
+  name args list of ref Listnode 0 0
+ecom to: 
+name .b119 ref Listnode 0 0
+ecom: 
+= ref Listnode 10 1
+  name .b119 ref Listnode 0 0
+  name nil ref Listnode 1 0
+ecom: 
+name nil ref Listnode 1 0
+ecom to: 
+name .b119 ref Listnode 0 0
+ecom: 
+= int 10 1
+  name disfile int 0 0
+  const (0) int 6 0
+ecom: 
+const (0) int 6 0
+ecom to: 
+name disfile int 0 0
+eacom: 
+len int 10 1
+  name progname string 0 0
+ecom: 
+len int 10 1
+  name progname string 0 0
+ecom to: 
+name .t120 int 0 0
+eacom: 
+slice string 10 2
+  name progname string 0 0
+  seq no type 10 2
+    - int 10 1
+      len int 10 1
+        name progname string 0 0
+      const (4) int 6 0
+    nothing no type 10 1
+ecom: 
+slice string 10 2
+  name progname string 0 0
+  seq no type 10 2
+    - int 10 1
+      len int 10 1
+        name progname string 0 0
+      const (4) int 6 0
+    nothing no type 10 1
+ecom to: 
+name .t121 string 0 0
+ecom: 
+len int 10 1
+  name progname string 0 0
+ecom to: 
+name .t120 int 0 0
+eacom: 
+- int 10 1
+  len int 10 1
+    name progname string 0 0
+  const (4) int 6 0
+ecom: 
+- int 10 1
+  len int 10 1
+    name progname string 0 0
+  const (4) int 6 0
+ecom to: 
+name .t122 int 0 0
+ecom: 
+len int 10 1
+  name progname string 0 0
+ecom to: 
+name .t122 int 0 0
+ecom: 
+name progname string 0 0
+ecom to: 
+name .t121 string 0 0
+ecom: 
+= string 10 1
+  name .t121 string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name .t121 string 0 0
+ecom: 
+= int 10 1
+  name disfile int 0 0
+  const (1) int 6 0
+ecom: 
+const (1) int 6 0
+ecom to: 
+name disfile int 0 0
+eacom: 
+call int 10 2
+  name absolute fn(p: string): int 11 1
+  seq no type 10 1
+    name progname string 0 0
+ecom: 
+call int 10 2
+  name absolute fn(p: string): int 11 1
+  seq no type 10 1
+    name progname string 0 0
+ecom to: 
+name .t122 int 0 0
+generate desc for big
+ecom: 
+name progname string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b123 big 0 0
+    const (64) int 6 0
+ecom: 
+= list of string 10 1
+  name pathlist list of string 0 0
+  :: list of string 10 1
+    const  string 1 0
+    name nil polymorphic type 1 0
+ecom: 
+:: list of string 10 1
+  const  string 1 0
+  name nil polymorphic type 1 0
+ecom to: 
+name pathlist list of string 0 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+name .t121 list of string 0 0
+ecom: 
+= list of string 10 1
+  name .t121 list of string 0 0
+  name nil list of string 1 0
+ecom: 
+name nil list of string 1 0
+ecom to: 
+name .t121 list of string 0 0
+eacom: 
+= list of ref Listnode 10 2
+  name pl list of ref Listnode 0 0
+  call list of ref Listnode 10 2
+    name get fn(ctxt: self ref Context, name: string): list of ref Listnode 11 1
+    seq nothing 10 1
+      name ctxt ref Context 0 0
+      seq no type 10 1
+        const path string 1 0
+ecom: 
+= list of ref Listnode 10 2
+  name pl list of ref Listnode 0 0
+  call list of ref Listnode 10 2
+    name get fn(ctxt: self ref Context, name: string): list of ref Listnode 11 1
+    seq nothing 10 1
+      name ctxt ref Context 0 0
+      seq no type 10 1
+        const path string 1 0
+ecom to: 
+name .t121 list of ref Listnode 0 0
+ecom: 
+call list of ref Listnode 10 2
+  name get fn(ctxt: self ref Context, name: string): list of ref Listnode 11 1
+  seq nothing 10 1
+    name ctxt ref Context 0 0
+    seq no type 10 1
+      const path string 1 0
+ecom to: 
+name pl list of ref Listnode 0 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b123 big 0 0
+    const (64) int 6 0
+ecom: 
+const path string 1 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b123 big 0 0
+    const (72) int 6 0
+ecom: 
+= list of ref Listnode 10 1
+  name .t121 list of ref Listnode 0 0
+  name nil list of ref Listnode 1 0
+ecom: 
+name nil list of ref Listnode 1 0
+ecom to: 
+name .t121 list of ref Listnode 0 0
+ecom: 
+= list of string 10 2
+  name pathlist list of string 0 0
+  call list of string 10 2
+    name list2stringlist fn(nl: list of ref Listnode): list of string 11 1
+    seq no type 10 1
+      name pl list of ref Listnode 0 0
+ecom: 
+call list of string 10 2
+  name list2stringlist fn(nl: list of ref Listnode): list of string 11 1
+  seq no type 10 1
+    name pl list of ref Listnode 0 0
+ecom to: 
+name pathlist list of string 0 0
+generate desc for big
+ecom: 
+name pl list of ref Listnode 0 0
+ecom to: 
+* list of ref Listnode 8 0
+  + int 15 0
+    name .b123 big 0 0
+    const (64) int 6 0
+ecom: 
+= list of string 10 1
+  name pathlist list of string 0 0
+  :: list of string 10 1
+    const /dis string 1 0
+    :: list of string 10 1
+      const . string 1 0
+      name nil polymorphic type 1 0
+ecom: 
+:: list of string 10 1
+  const /dis string 1 0
+  :: list of string 10 1
+    const . string 1 0
+    name nil polymorphic type 1 0
+ecom to: 
+name pathlist list of string 0 0
+ecom: 
+:: list of string 10 1
+  const . string 1 0
+  name nil polymorphic type 1 0
+ecom to: 
+name .t121 list of string 0 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+name .t121 list of string 0 0
+ecom: 
+= list of string 10 1
+  name .t121 list of string 0 0
+  name nil list of string 1 0
+ecom: 
+name nil list of string 1 0
+ecom to: 
+name .t121 list of string 0 0
+ecom: 
+= string 10 1
+  name err string 0 0
+  const  string 1 0
+ecom: 
+const  string 1 0
+ecom to: 
+name err string 0 0
+eacom: 
+hd string 10 1
+  name pathlist list of string 0 0
+ecom: 
+hd string 10 1
+  name pathlist list of string 0 0
+ecom to: 
+name .t121 string 0 0
+ecom: 
+= string 10 1
+  name .t121 string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name .t121 string 0 0
+ecom: 
+= string 10 1
+  name path string 0 0
+  + string 10 1
+    + string 10 1
+      hd string 10 1
+        name pathlist list of string 0 0
+      const / string 1 0
+    name progname string 0 0
+ecom: 
++ string 10 1
+  + string 10 1
+    hd string 10 1
+      name pathlist list of string 0 0
+    const / string 1 0
+  name progname string 0 0
+ecom to: 
+name path string 0 0
+ecom: 
++ string 10 1
+  hd string 10 1
+    name pathlist list of string 0 0
+  const / string 1 0
+ecom to: 
+name .t121 string 0 0
+ecom: 
+hd string 10 1
+  name pathlist list of string 0 0
+ecom to: 
+name .t121 string 0 0
+ecom: 
+= string 10 1
+  name .t121 string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name .t121 string 0 0
+ecom: 
+= string 10 1
+  name path string 0 0
+  name progname string 0 0
+ecom: 
+name progname string 0 0
+ecom to: 
+name path string 0 0
+ecom: 
+= string 10 1
+  name npath string 0 0
+    vardecl string 10 1
+      seq nothing 10 1
+  name path string 0 0
+ecom: 
+name path string 0 0
+ecom to: 
+name npath string 0 0
+  vardecl string 10 1
+    seq nothing 10 1
+ecom: 
++= string 10 1
+  name npath string 0 0
+  const .dis string 1 0
+ecom: 
+= Command 10 1
+  name mod Command 0 0
+    name npath string 0 0
+      vardecl string 10 1
+        seq nothing 10 1
+  load Command 10 1
+    name npath string 0 0
+    name .m.Command Command 17 1
+ecom: 
+load Command 10 1
+  name npath string 0 0
+  name .m.Command Command 17 1
+ecom to: 
+name mod Command 0 0
+  name npath string 0 0
+    vardecl string 10 1
+      seq nothing 10 1
+ecom: 
+= list of string 10 2
+  name argv list of string 0 0
+  call list of string 10 2
+    name list2stringlist fn(nl: list of ref Listnode): list of string 11 1
+    seq no type 10 1
+      name args list of ref Listnode 0 0
+ecom: 
+call list of string 10 2
+  name list2stringlist fn(nl: list of ref Listnode): list of string 11 1
+  seq no type 10 1
+    name args list of ref Listnode 0 0
+ecom to: 
+name argv list of string 0 0
+generate desc for big
+ecom: 
+name args list of ref Listnode 0 0
+ecom to: 
+* list of ref Listnode 8 0
+  + int 15 0
+    name .b123 big 0 0
+    const (64) int 6 0
+ecom: 
+call no type 10 2
+  name export fn(e: ref Localenv) 11 1
+  seq no type 10 1
+    * ref Localenv 10 1
+      + int 10 1
+        * ref Environment 8 0
+          name ctxt ref Context 0 0
+        const localenv (24) int 6 0
+generate desc for big
+ecom: 
+* ref Localenv 10 1
+  + int 10 1
+    * ref Environment 8 0
+      name ctxt ref Context 0 0
+    const localenv (24) int 6 0
+ecom to: 
+* ref Localenv 8 0
+  + int 15 0
+    name .b123 big 0 0
+    const (64) int 6 0
+eacom: 
+* ref Localenv 10 1
+  + int 10 1
+    * ref Environment 8 0
+      name ctxt ref Context 0 0
+    const localenv (24) int 6 0
+generate desc for ref Environment
+ecom: 
+* ref Environment 8 0
+  name ctxt ref Context 0 0
+ecom to: 
+name .b119 ref Environment 0 0
+ecom: 
+= ref Environment 10 1
+  name .b119 ref Environment 0 0
+  name nil ref Environment 1 0
+ecom: 
+name nil ref Environment 1 0
+ecom to: 
+name .b119 ref Environment 0 0
+ecom: 
+used int 10 2
+  call int 10 2
+    -> fn(flags: int, movefd: list of int): int 12 1
+      name sys Sys 1 0
+      name pctl nothing 11 1
+    seq no type 10 1
+      const NEWFD (1) int 6 0
+      seq no type 10 1
+        * list of int 8 0
+          + int 15 1
+            name ctxt ref Context 0 0
+            const keepfds (24) int 6 0
+ecom: 
+call int 10 2
+  -> fn(flags: int, movefd: list of int): int 12 1
+    name sys Sys 1 0
+    name pctl nothing 11 1
+  seq no type 10 1
+    const NEWFD (1) int 6 0
+    seq no type 10 1
+      * list of int 8 0
+        + int 15 1
+          name ctxt ref Context 0 0
+          const keepfds (24) int 6 0
+ecom to: 
+name .t122 int 0 0
+generate desc for big
+ecom: 
+const NEWFD (1) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b123 big 0 0
+    const (64) int 6 0
+ecom: 
+* list of int 8 0
+  + int 15 1
+    name ctxt ref Context 0 0
+    const keepfds (24) int 6 0
+ecom to: 
+* list of int 8 0
+  + int 15 0
+    name .b123 big 0 0
+    const (72) int 6 0
+ecom: 
+call no type 10 2
+  -> fn(ctxt: ref Draw->Context, argv: list of string) 12 1
+    name mod Command 0 0
+    name init nothing 11 1
+  seq no type 10 1
+    * ref Draw->Context 8 0
+      + int 15 1
+        name ctxt ref Context 0 0
+        const drawcontext (16) int 6 0
+    seq no type 10 1
+      name argv list of string 0 0
+generate desc for big
+ecom: 
+* ref Draw->Context 8 0
+  + int 15 1
+    name ctxt ref Context 0 0
+    const drawcontext (16) int 6 0
+ecom to: 
+* ref Draw->Context 8 0
+  + int 15 0
+    name .b123 big 0 0
+    const (64) int 6 0
+ecom: 
+name argv list of string 0 0
+ecom to: 
+* list of string 8 0
+  + int 15 0
+    name .b123 big 0 0
+    const (72) int 6 0
+ecom: 
+const write on closed pipe string 1 0
+ecom to: 
+* string 8 0
+  name .ret int 0 0
+ecom: 
+call string 10 2
+  name failurestatus fn(e: string): string 11 1
+  seq no type 10 1
+    name e string 0 0
+ecom to: 
+* string 8 0
+  name .ret int 0 0
+generate desc for big
+ecom: 
+name e string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b123 big 0 0
+    const (64) int 6 0
+ecom: 
+= chan of int 10 1
+  name extstart chan of int 0 0
+    name argv list of string 0 0
+  chan chan of int 10 1
+    const (0) int 6 0
+ecom: 
+chan chan of int 10 1
+  const (0) int 6 0
+ecom to: 
+name extstart chan of int 0 0
+  name argv list of string 0 0
+ecom: 
+spawn nothing 10 2
+  call no type 10 2
+    name externalexec fn(mod: Command, drawcontext: ref Draw->Context, argv: list of string, startchan: chan of int, keepfds: list of int) 11 1
+    seq no type 10 1
+      name mod Command 0 0
+      seq no type 10 1
+        * ref Draw->Context 8 0
+          + int 15 1
+            name ctxt ref Context 0 0
+            const drawcontext (16) int 6 0
+        seq no type 10 1
+          name argv list of string 0 0
+          seq no type 10 1
+            name extstart chan of int 0 0
+            seq no type 10 1
+              * list of int 8 0
+                + int 15 1
+                  name ctxt ref Context 0 0
+                  const keepfds (24) int 6 0
+generate desc for big
+ecom: 
+name mod Command 0 0
+ecom to: 
+* Command 8 0
+  + int 15 0
+    name .b123 big 0 0
+    const (64) int 6 0
+ecom: 
+* ref Draw->Context 8 0
+  + int 15 1
+    name ctxt ref Context 0 0
+    const drawcontext (16) int 6 0
+ecom to: 
+* ref Draw->Context 8 0
+  + int 15 0
+    name .b123 big 0 0
+    const (72) int 6 0
+ecom: 
+name argv list of string 0 0
+ecom to: 
+* list of string 8 0
+  + int 15 0
+    name .b123 big 0 0
+    const (80) int 6 0
+ecom: 
+name extstart chan of int 0 0
+ecom to: 
+* chan of int 8 0
+  + int 15 0
+    name .b123 big 0 0
+    const (88) int 6 0
+ecom: 
+* list of int 8 0
+  + int 15 1
+    name ctxt ref Context 0 0
+    const keepfds (24) int 6 0
+ecom to: 
+* list of int 8 0
+  + int 15 0
+    name .b123 big 0 0
+    const (96) int 6 0
+ecom: 
+= int 10 1
+  name pid int 0 0
+  <- int 10 1
+    name extstart chan of int 0 0
+ecom: 
+<- int 10 1
+  name extstart chan of int 0 0
+ecom to: 
+name pid int 0 0
+ecom: 
+call string 10 2
+  name waitfor fn(ctxt: ref Context, pids: list of int): string 11 1
+  seq no type 10 1
+    name ctxt ref Context 0 0
+    seq no type 10 1
+      :: list of int 10 1
+        name pid int 0 0
+        name nil polymorphic type 1 0
+ecom to: 
+* string 8 0
+  name .ret int 0 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b123 big 0 0
+    const (64) int 6 0
+ecom: 
+:: list of int 10 1
+  name pid int 0 0
+  name nil polymorphic type 1 0
+ecom to: 
+* list of int 8 0
+  + int 15 0
+    name .b123 big 0 0
+    const (72) int 6 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+name .t121 list of int 0 0
+ecom: 
+= list of int 10 1
+  name .t121 list of int 0 0
+  name nil list of int 1 0
+ecom: 
+name nil list of int 1 0
+ecom to: 
+name .t121 list of int 0 0
+ecom: 
+= chan of int 10 1
+  name extstart chan of int 0 0
+  name nil chan of int 1 0
+ecom: 
+name nil chan of int 1 0
+ecom to: 
+name extstart chan of int 0 0
+ecom: 
+= list of string 10 1
+  name argv list of string 0 0
+  name nil list of string 1 0
+ecom: 
+name nil list of string 1 0
+ecom to: 
+name argv list of string 0 0
+ecom: 
+= string 10 2
+  name err string 0 0
+  call string 10 2
+    -> fn(s: string, *): string 12 1
+      name sys Sys 1 0
+      name sprint nothing 11 1
+    seq no type 10 1
+      const %r string 1 0
+ecom: 
+call string 10 2
+  -> fn(s: string, *): string 12 1
+    name sys Sys 1 0
+    name sprint nothing 11 1
+  seq no type 10 1
+    const %r string 1 0
+ecom to: 
+name err string 0 0
+generate desc for Sys->sprint
+descmap offset 0
+descmap s type string offset 64 (d->offset=64 start=0) returns 64
+generate desc for big
+ecom: 
+const %r string 1 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b123 big 0 0
+    const (64) int 6 0
+eacom: 
+call int 10 2
+  name nonexistent fn(e: string): int 11 1
+  seq no type 10 1
+    name err string 0 0
+ecom: 
+call int 10 2
+  name nonexistent fn(e: string): int 11 1
+  seq no type 10 1
+    name err string 0 0
+ecom to: 
+name .t122 int 0 0
+generate desc for big
+ecom: 
+name err string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b123 big 0 0
+    const (64) int 6 0
+eacom: 
+= ref Sys->FD 10 2
+  name fd ref Sys->FD 0 0
+  call ref Sys->FD 10 2
+    -> fn(s: string, mode: int): ref Sys->FD 12 1
+      name sys Sys 1 0
+      name open nothing 11 1
+    seq no type 10 1
+      name path string 0 0
+      seq no type 10 1
+        const OREAD (0) int 6 0
+generate desc for ref Sys->FD
+generate desc for ref Sys->FD
+	desc	$-1,8,"80"
+ecom: 
+= ref Sys->FD 10 2
+  name fd ref Sys->FD 0 0
+  call ref Sys->FD 10 2
+    -> fn(s: string, mode: int): ref Sys->FD 12 1
+      name sys Sys 1 0
+      name open nothing 11 1
+    seq no type 10 1
+      name path string 0 0
+      seq no type 10 1
+        const OREAD (0) int 6 0
+ecom to: 
+name .b119 ref Sys->FD 0 0
+ecom: 
+call ref Sys->FD 10 2
+  -> fn(s: string, mode: int): ref Sys->FD 12 1
+    name sys Sys 1 0
+    name open nothing 11 1
+  seq no type 10 1
+    name path string 0 0
+    seq no type 10 1
+      const OREAD (0) int 6 0
+ecom to: 
+name fd ref Sys->FD 0 0
+generate desc for big
+ecom: 
+name path string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b123 big 0 0
+    const (64) int 6 0
+ecom: 
+const OREAD (0) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b123 big 0 0
+    const (72) int 6 0
+ecom: 
+= ref Sys->FD 10 1
+  name .b119 ref Sys->FD 0 0
+  name nil ref Sys->FD 1 0
+ecom: 
+name nil ref Sys->FD 1 0
+ecom to: 
+name .b119 ref Sys->FD 0 0
+ecom: 
+= (int, Sys->Dir) 10 2
+  tuple (int, Sys->Dir) 10 1
+    seq nothing 10 1
+      name ok int 0 0
+      seq nothing 10 1
+        name info Sys->Dir 0 0
+  call (int, Sys->Dir) 10 2
+    -> fn(fd: ref Sys->FD): (int, Sys->Dir) 12 1
+      name sys Sys 1 0
+      name fstat nothing 11 1
+    seq no type 10 1
+      name fd ref Sys->FD 0 0
+ecom: 
+call (int, Sys->Dir) 10 2
+  -> fn(fd: ref Sys->FD): (int, Sys->Dir) 12 1
+    name sys Sys 1 0
+    name fstat nothing 11 1
+  seq no type 10 1
+    name fd ref Sys->FD 0 0
+ecom to: 
+name ok (int, Sys->Dir) 0 0
+generate desc for big
+ecom: 
+name fd ref Sys->FD 0 0
+ecom to: 
+* ref Sys->FD 8 0
+  + int 15 0
+    name .b123 big 0 0
+    const (64) int 6 0
+eacom: 
+& int 10 1
+  * int 0 0
+    + int 13 1
+      adr int 13 1
+        name info Sys->Dir 0 0
+      const mode (48) int 6 0
+  const .i.80000000 (-2147483648) int 1 0
+ecom: 
+& int 10 1
+  * int 0 0
+    + int 13 1
+      adr int 13 1
+        name info Sys->Dir 0 0
+      const mode (48) int 6 0
+  const .i.80000000 (-2147483648) int 1 0
+ecom to: 
+name .t122 int 0 0
+eacom: 
+& int 10 1
+  * int 0 0
+    + int 13 1
+      adr int 13 1
+        name info Sys->Dir 0 0
+      const mode (48) int 6 0
+  const (73) int 6 0
+ecom: 
+& int 10 1
+  * int 0 0
+    + int 13 1
+      adr int 13 1
+        name info Sys->Dir 0 0
+      const mode (48) int 6 0
+  const (73) int 6 0
+ecom to: 
+name .t122 int 0 0
+ecom: 
+call string 10 2
+  name runhashpling fn(ctxt: ref Context, fd: ref Sys->FD, path: string, argv: list of ref Listnode, last: int): string 11 1
+  seq no type 10 2
+    name ctxt ref Context 0 0
+    seq no type 10 2
+      name fd ref Sys->FD 0 0
+      seq no type 10 2
+        name path string 0 0
+        seq no type 10 2
+          tl list of ref Listnode 10 1
+            name args list of ref Listnode 0 0
+          seq no type 10 1
+            name last int 0 0
+ecom to: 
+* string 8 0
+  name .ret int 0 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b123 big 0 0
+    const (64) int 6 0
+ecom: 
+name fd ref Sys->FD 0 0
+ecom to: 
+* ref Sys->FD 8 0
+  + int 15 0
+    name .b123 big 0 0
+    const (72) int 6 0
+ecom: 
+name path string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b123 big 0 0
+    const (80) int 6 0
+ecom: 
+tl list of ref Listnode 10 1
+  name args list of ref Listnode 0 0
+ecom to: 
+* list of ref Listnode 8 0
+  + int 15 0
+    name .b123 big 0 0
+    const (88) int 6 0
+ecom: 
+name last int 0 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b123 big 0 0
+    const (96) int 6 0
+ecom: 
+= string 10 1
+  * string 0 0
+    + int 13 1
+      adr int 13 1
+        name ok (int, Sys->Dir) 0 0
+      const (8) int 6 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+* string 0 0
+  + int 13 1
+    adr int 13 1
+      name ok (int, Sys->Dir) 0 0
+    const (8) int 6 0
+ecom: 
+= string 10 1
+  * string 0 0
+    + int 13 1
+      adr int 13 1
+        name ok (int, Sys->Dir) 0 0
+      const (16) int 6 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+* string 0 0
+  + int 13 1
+    adr int 13 1
+      name ok (int, Sys->Dir) 0 0
+    const (16) int 6 0
+ecom: 
+= string 10 1
+  * string 0 0
+    + int 13 1
+      adr int 13 1
+        name ok (int, Sys->Dir) 0 0
+      const (24) int 6 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+* string 0 0
+  + int 13 1
+    adr int 13 1
+      name ok (int, Sys->Dir) 0 0
+    const (24) int 6 0
+ecom: 
+= string 10 1
+  * string 0 0
+    + int 13 1
+      adr int 13 1
+        name ok (int, Sys->Dir) 0 0
+      const (32) int 6 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+* string 0 0
+  + int 13 1
+    adr int 13 1
+      name ok (int, Sys->Dir) 0 0
+    const (32) int 6 0
+ecom: 
+= string 10 1
+  * string 0 0
+    adr int 13 1
+      name info Sys->Dir 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+* string 0 0
+  adr int 13 1
+    name info Sys->Dir 0 0
+ecom: 
+= string 10 1
+  * string 0 0
+    + int 13 1
+      adr int 13 1
+        name info Sys->Dir 0 0
+      const uid (8) int 6 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+* string 0 0
+  + int 13 1
+    adr int 13 1
+      name info Sys->Dir 0 0
+    const uid (8) int 6 0
+ecom: 
+= string 10 1
+  * string 0 0
+    + int 13 1
+      adr int 13 1
+        name info Sys->Dir 0 0
+      const gid (16) int 6 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+* string 0 0
+  + int 13 1
+    adr int 13 1
+      name info Sys->Dir 0 0
+    const gid (16) int 6 0
+ecom: 
+= string 10 1
+  * string 0 0
+    + int 13 1
+      adr int 13 1
+        name info Sys->Dir 0 0
+      const muid (24) int 6 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+* string 0 0
+  + int 13 1
+    adr int 13 1
+      name info Sys->Dir 0 0
+    const muid (24) int 6 0
+ecom: 
+= string 10 2
+  name err string 0 0
+  call string 10 2
+    -> fn(s: string, *): string 12 1
+      name sys Sys 1 0
+      name sprint nothing 11 1
+    seq no type 10 1
+      const %r string 1 0
+ecom: 
+call string 10 2
+  -> fn(s: string, *): string 12 1
+    name sys Sys 1 0
+    name sprint nothing 11 1
+  seq no type 10 1
+    const %r string 1 0
+ecom to: 
+name err string 0 0
+generate desc for Sys->sprint
+descmap offset 0
+descmap s type string offset 64 (d->offset=64 start=0) returns 64
+generate desc for big
+ecom: 
+const %r string 1 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b123 big 0 0
+    const (64) int 6 0
+ecom: 
+= ref Sys->FD 10 1
+  name fd ref Sys->FD 0 0
+  name nil ref Sys->FD 1 0
+ecom: 
+name nil ref Sys->FD 1 0
+ecom to: 
+name fd ref Sys->FD 0 0
+ecom: 
+= list of string 10 1
+  name pathlist list of string 0 0
+  tl list of string 10 1
+    name pathlist list of string 0 0
+ecom: 
+tl list of string 10 1
+  name pathlist list of string 0 0
+ecom to: 
+name pathlist list of string 0 0
+ecom: 
+= Command 10 1
+  name mod Command 0 0
+  name nil Command 1 0
+ecom: 
+name nil Command 1 0
+ecom to: 
+name mod Command 0 0
+ecom: 
+= string 10 1
+  name npath string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name npath string 0 0
+ecom: 
+= string 10 1
+  name path string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name path string 0 0
+eacom: 
+call int 10 2
+  name nonexistent fn(e: string): int 11 1
+  seq no type 10 1
+    name err string 0 0
+ecom: 
+call int 10 2
+  name nonexistent fn(e: string): int 11 1
+  seq no type 10 1
+    name err string 0 0
+ecom to: 
+name .t122 int 0 0
+generate desc for big
+ecom: 
+name err string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b123 big 0 0
+    const (64) int 6 0
+ecom: 
+call no type 10 2
+  name diagnostic fn(ctxt: ref Context, s: string) 11 1
+  seq no type 10 2
+    name ctxt ref Context 0 0
+    seq no type 10 2
+      call string 10 2
+        -> fn(s: string, nil: string, nil: string, *): string 12 1
+          name sys Sys 1 0
+          name sprint nothing 11 1
+        seq no type 10 1
+          const %s: %s string 1 0
+          seq no type 10 1
+            name progname string 0 0
+            seq no type 10 1
+              name err string 0 0
+generate desc for big
+ecom: 
+call string 10 2
+  -> fn(s: string, nil: string, nil: string, *): string 12 1
+    name sys Sys 1 0
+    name sprint nothing 11 1
+  seq no type 10 1
+    const %s: %s string 1 0
+    seq no type 10 1
+      name progname string 0 0
+      seq no type 10 1
+        name err string 0 0
+ecom to: 
+name .t121 string 0 0
+generate desc for Sys->sprint
+descmap offset 0
+descmap s type string offset 64 (d->offset=64 start=0) returns 64
+descmap type string offset 72 returns 72
+descmap type string offset 80 returns 80
+generate desc for big
+ecom: 
+const %s: %s string 1 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b124 big 0 0
+    const (64) int 6 0
+ecom: 
+name progname string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b124 big 0 0
+    const (72) int 6 0
+ecom: 
+name err string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b124 big 0 0
+    const (80) int 6 0
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b123 big 0 0
+    const (64) int 6 0
+ecom: 
+name .t121 string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b123 big 0 0
+    const (72) int 6 0
+ecom: 
+= string 10 1
+  name .t121 string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name .t121 string 0 0
+ecom: 
+name err string 0 0
+ecom to: 
+* string 8 0
+  name .ret int 0 0
+fn: runexternal
+64: argument ctxt ref Context ref 9
+72: argument args list of ref Listnode ref 3
+80: argument last int ref 2
+84: local disfile int ref 4
+88: local pid int ref 3
+92: local e ref exception ref 2
+96: local ok int ref 2
+104: local info Sys->Dir ref 3
+184: local .t120 int ref 1
+188: local .t122 int ref 1
+192: local .b123 big ref 18
+200: local pathlist list of string ref 8
+208: local progname string ref 8
+216: local err string ref 7
+224: local path string ref 5
+232: local mod Command ref 4
+240: local .b119 ref Listnode ref 3
+248: local argv list of string ref 3
+256: local extstart chan of int ref 3
+264: local fd ref Sys->FD ref 3
+272: local npath string ref 3
+280: local pl list of ref Listnode ref 2
+288: local .b124 big ref 1
+296: local .t121 string ref 1
+generate desc for runexternal
+descmap offset 0
+descmap ctxt type ref Context offset 64 (d->offset=64 start=0) returns 64
+descmap args type list of ref Listnode offset 72 (d->offset=72 start=0) returns 72
+descmap last type int offset 80 (d->offset=80 start=0) returns -1
+descmap disfile type int offset 84 (d->offset=84 start=0) returns -1
+descmap pid type int offset 88 (d->offset=88 start=0) returns -1
+descmap e type ref exception offset 92 (d->offset=92 start=0) returns 96
+descmap ok type int offset 96 (d->offset=96 start=0) returns -1
+descmap adt offset 104
+descmap offset 104
+descmap name type string offset 104 (d->offset=0 start=104) returns 104
+descmap uid type string offset 112 (d->offset=8 start=104) returns 112
+descmap gid type string offset 120 (d->offset=16 start=104) returns 120
+descmap muid type string offset 128 (d->offset=24 start=104) returns 128
+descmap adt offset 136
+descmap offset 136
+descmap path type big offset 136 (d->offset=0 start=136) returns -1
+descmap vers type int offset 144 (d->offset=8 start=136) returns -1
+descmap qtype type int offset 148 (d->offset=12 start=136) returns -1
+descmap qid type Sys->Qid offset 136 (d->offset=32 start=104) returns -1
+descmap mode type int offset 152 (d->offset=48 start=104) returns -1
+descmap atime type int offset 156 (d->offset=52 start=104) returns -1
+descmap mtime type int offset 160 (d->offset=56 start=104) returns -1
+descmap length type big offset 168 (d->offset=64 start=104) returns -1
+descmap dtype type int offset 176 (d->offset=72 start=104) returns -1
+descmap dev type int offset 180 (d->offset=76 start=104) returns -1
+descmap info type Sys->Dir offset 104 (d->offset=104 start=0) returns 128
+descmap .t120 type int offset 184 (d->offset=184 start=0) returns -1
+descmap .t122 type int offset 188 (d->offset=188 start=0) returns -1
+descmap .b123 type big offset 192 (d->offset=192 start=0) returns -1
+descmap pathlist type list of string offset 200 (d->offset=200 start=0) returns 200
+descmap progname type string offset 208 (d->offset=208 start=0) returns 208
+descmap err type string offset 216 (d->offset=216 start=0) returns 216
+descmap path type string offset 224 (d->offset=224 start=0) returns 224
+descmap mod type Command offset 232 (d->offset=232 start=0) returns 232
+descmap .b119 type ref Listnode offset 240 (d->offset=240 start=0) returns 240
+descmap argv type list of string offset 248 (d->offset=248 start=0) returns 248
+descmap extstart type chan of int offset 256 (d->offset=256 start=0) returns 256
+descmap fd type ref Sys->FD offset 264 (d->offset=264 start=0) returns 264
+descmap npath type string offset 272 (d->offset=272 start=0) returns 272
+descmap pl type list of ref Listnode offset 280 (d->offset=280 start=0) returns 280
+descmap .b124 type big offset 288 (d->offset=288 start=0) returns -1
+descmap .t121 type string offset 296 (d->offset=296 start=0) returns 296
+fncom: failurestatus 7 418e68
+ecom: 
+= string 10 1
+  name s string 0 0
+  slice string 10 1
+    name e string 0 0
+    seq no type 10 1
+      const (5) int 6 0
+      nothing no type 10 1
+ecom: 
+slice string 10 1
+  name e string 0 0
+  seq no type 10 1
+    const (5) int 6 0
+    nothing no type 10 1
+ecom to: 
+name s string 0 0
+ecom: 
+len int 10 1
+  name e string 0 0
+ecom to: 
+name .t125 int 0 0
+ecom: 
+name e string 0 0
+ecom to: 
+name s string 0 0
+eacom: 
+inds int 10 1
+  name s string 0 0
+  const (0) int 6 0
+ecom: 
+inds int 10 1
+  name s string 0 0
+  const (0) int 6 0
+ecom to: 
+name .t125 int 0 0
+eacom: 
+inds int 10 1
+  name s string 0 0
+  const (0) int 6 0
+ecom: 
+inds int 10 1
+  name s string 0 0
+  const (0) int 6 0
+ecom to: 
+name .t125 int 0 0
+ecom: 
+= string 10 1
+  name s string 0 0
+  slice string 10 1
+    name s string 0 0
+    seq no type 10 1
+      const (1) int 6 0
+      nothing no type 10 1
+ecom: 
+slice string 10 1
+  name s string 0 0
+  seq no type 10 1
+    const (1) int 6 0
+    nothing no type 10 1
+ecom to: 
+name s string 0 0
+ecom: 
+len int 10 1
+  name s string 0 0
+ecom to: 
+name .t125 int 0 0
+ecom: 
+name s string 0 0
+ecom to: 
+* string 8 0
+  name .ret int 0 0
+ecom: 
+const failed string 1 0
+ecom to: 
+* string 8 0
+  name .ret int 0 0
+fn: failurestatus
+64: argument e string ref 1
+72: local .t125 int ref 1
+80: local s string ref 8
+generate desc for failurestatus
+descmap offset 0
+descmap e type string offset 64 (d->offset=64 start=0) returns 64
+descmap .t125 type int offset 72 (d->offset=72 start=0) returns -1
+descmap s type string offset 80 (d->offset=80 start=0) returns 80
+fncom: runhashpling 2 418f28
+ecom: 
+= array of byte 10 1
+  name header array of byte 0 0
+  array array of byte 10 1
+    const (1024) int 6 0
+ecom: 
+array array of byte 10 1
+  const (1024) int 6 0
+ecom to: 
+name header array of byte 0 0
+generate desc for byte
+ecom: 
+= int 10 2
+  name n int 0 0
+  call int 10 2
+    -> fn(fd: ref Sys->FD, buf: array of byte, n: int): int 12 1
+      name sys Sys 1 0
+      name read nothing 11 1
+    seq no type 10 1
+      name fd ref Sys->FD 0 0
+      seq no type 10 1
+        name header array of byte 0 0
+        seq no type 10 1
+          len int 10 1
+            name header array of byte 0 0
+ecom: 
+call int 10 2
+  -> fn(fd: ref Sys->FD, buf: array of byte, n: int): int 12 1
+    name sys Sys 1 0
+    name read nothing 11 1
+  seq no type 10 1
+    name fd ref Sys->FD 0 0
+    seq no type 10 1
+      name header array of byte 0 0
+      seq no type 10 1
+        len int 10 1
+          name header array of byte 0 0
+ecom to: 
+name n int 0 0
+generate desc for big
+ecom: 
+name fd ref Sys->FD 0 0
+ecom to: 
+* ref Sys->FD 8 0
+  + int 15 0
+    name .b126 big 0 0
+    const (64) int 6 0
+ecom: 
+name header array of byte 0 0
+ecom to: 
+* array of byte 8 0
+  + int 15 0
+    name .b126 big 0 0
+    const (72) int 6 0
+ecom: 
+len int 10 1
+  name header array of byte 0 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b126 big 0 0
+    const (80) int 6 0
+ecom: 
+= int 10 1
+  name i int 0 0
+  const (0) int 6 0
+ecom: 
+const (0) int 6 0
+ecom to: 
+name i int 0 0
+eacom: 
+* byte 10 1
+  indx big 10 1
+    name header array of byte 0 0
+    name i int 0 0
+generate desc for big
+ecom: 
+indx big 10 1
+  name header array of byte 0 0
+  name i int 0 0
+ecom to: 
+name .b126 big 0 0
+ecom: 
+++ int 10 1
+  name i int 0 0
+  const (1) int 6 0
+eacom: 
+* byte 10 1
+  indx big 10 1
+    name header array of byte 0 0
+    const (0) int 6 0
+generate desc for big
+ecom: 
+indx big 10 1
+  name header array of byte 0 0
+  const (0) int 6 0
+ecom to: 
+name .b126 big 0 0
+eacom: 
+* byte 10 1
+  indx big 10 1
+    name header array of byte 0 0
+    const (1) int 6 0
+generate desc for big
+ecom: 
+indx big 10 1
+  name header array of byte 0 0
+  const (1) int 6 0
+ecom to: 
+name .b126 big 0 0
+ecom: 
+call no type 10 2
+  name diagnostic fn(ctxt: ref Context, s: string) 11 1
+  seq no type 10 1
+    name ctxt ref Context 0 0
+    seq no type 10 1
+      + string 10 1
+        const bad script header on  string 1 0
+        name path string 0 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b126 big 0 0
+    const (64) int 6 0
+ecom: 
++ string 10 1
+  const bad script header on  string 1 0
+  name path string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b126 big 0 0
+    const (72) int 6 0
+ecom: 
+const bad header string 1 0
+ecom to: 
+* string 8 0
+  name .ret int 0 0
+ecom: 
+= (int, list of string) 10 2
+  tuple (int, list of string) 10 1
+    seq nothing 10 1
+      name nil polymorphic type 1 0
+      seq nothing 10 1
+        name args list of string 0 0
+  call (int, list of string) 10 2
+    -> fn(s: string, delim: string): (int, list of string) 12 1
+      name sys Sys 1 0
+      name tokenize nothing 11 1
+    seq no type 10 2
+      cast string 10 1
+        slice array of byte 10 1
+          name header array of byte 0 0
+          seq no type 10 1
+            const (2) int 6 0
+            name i int 0 0
+      seq no type 10 1
+        const  	 string 1 0
+generate desc for (int, list of string)
+ecom: 
+call (int, list of string) 10 2
+  -> fn(s: string, delim: string): (int, list of string) 12 1
+    name sys Sys 1 0
+    name tokenize nothing 11 1
+  seq no type 10 2
+    cast string 10 1
+      slice array of byte 10 1
+        name header array of byte 0 0
+        seq no type 10 1
+          const (2) int 6 0
+          name i int 0 0
+    seq no type 10 1
+      const  	 string 1 0
+ecom to: 
+name .b127 (int, list of string) 0 0
+generate desc for big
+ecom: 
+cast string 10 1
+  slice array of byte 10 1
+    name header array of byte 0 0
+    seq no type 10 1
+      const (2) int 6 0
+      name i int 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b126 big 0 0
+    const (64) int 6 0
+eacom: 
+slice array of byte 10 1
+  name header array of byte 0 0
+  seq no type 10 1
+    const (2) int 6 0
+    name i int 0 0
+ecom: 
+slice array of byte 10 1
+  name header array of byte 0 0
+  seq no type 10 1
+    const (2) int 6 0
+    name i int 0 0
+ecom to: 
+name .t128 array of byte 0 0
+ecom: 
+name header array of byte 0 0
+ecom to: 
+name .t128 array of byte 0 0
+ecom: 
+= array of byte 10 1
+  name .t128 array of byte 0 0
+  name nil array of byte 1 0
+ecom: 
+name nil array of byte 1 0
+ecom to: 
+name .t128 array of byte 0 0
+ecom: 
+const  	 string 1 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b126 big 0 0
+    const (72) int 6 0
+ecom: 
+= list of string 10 1
+  * list of string 0 0
+    + int 13 1
+      adr int 13 1
+        name .b127 (int, list of string) 0 0
+      const t1 (8) int 6 0
+  name nil list of string 1 0
+ecom: 
+name nil list of string 1 0
+ecom to: 
+* list of string 0 0
+  + int 13 1
+    adr int 13 1
+      name .b127 (int, list of string) 0 0
+    const t1 (8) int 6 0
+ecom: 
+call no type 10 2
+  name diagnostic fn(ctxt: ref Context, s: string) 11 1
+  seq no type 10 1
+    name ctxt ref Context 0 0
+    seq no type 10 1
+      + string 10 1
+        const empty header on  string 1 0
+        name path string 0 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b126 big 0 0
+    const (64) int 6 0
+ecom: 
++ string 10 1
+  const empty header on  string 1 0
+  name path string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b126 big 0 0
+    const (72) int 6 0
+ecom: 
+const bad header string 1 0
+ecom to: 
+* string 8 0
+  name .ret int 0 0
+ecom: 
+= array of byte 10 1
+  name header array of byte 0 0
+  name nil polymorphic type 1 0
+ecom: 
+name nil array of byte 1 0
+ecom to: 
+name header array of byte 0 0
+ecom: 
+= ref Sys->FD 10 1
+  name fd ref Sys->FD 0 0
+  name nil polymorphic type 1 0
+ecom: 
+name nil ref Sys->FD 1 0
+ecom to: 
+name fd ref Sys->FD 0 0
+ecom: 
+= list of ref Listnode 10 1
+  name nargs list of ref Listnode 0 0
+  :: list of ref Listnode 10 1
+    ref ref Listnode 10 1
+      tuple Listnode 10 1
+        seq no type 10 1
+          name nil polymorphic type 1 0
+          seq no type 10 1
+            hd string 10 1
+              name args list of string 0 0
+    name nargs list of ref Listnode 0 0
+ecom: 
+:: list of ref Listnode 10 1
+  ref ref Listnode 10 1
+    tuple Listnode 10 1
+      seq no type 10 1
+        name nil polymorphic type 1 0
+        seq no type 10 1
+          hd string 10 1
+            name args list of string 0 0
+  name nargs list of ref Listnode 0 0
+ecom to: 
+name nargs list of ref Listnode 0 0
+eacom: 
+ref ref Listnode 10 1
+  tuple Listnode 10 1
+    seq no type 10 1
+      name nil polymorphic type 1 0
+      seq no type 10 1
+        hd string 10 1
+          name args list of string 0 0
+generate desc for ref Listnode
+generate desc for ref Listnode
+	desc	$-1,8,"80"
+ecom: 
+ref ref Listnode 10 1
+  tuple Listnode 10 1
+    seq no type 10 1
+      name nil polymorphic type 1 0
+      seq no type 10 1
+        hd string 10 1
+          name args list of string 0 0
+ecom to: 
+name .b129 ref Listnode 0 0
+generate desc for ref Listnode
+generate desc for Listnode
+ecom: 
+tuple Listnode 10 1
+  seq no type 10 1
+    name nil polymorphic type 1 0
+    seq no type 10 1
+      hd string 10 1
+        name args list of string 0 0
+ecom to: 
+* Listnode 8 0
+  name .b129 ref Listnode 0 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* ref Node 8 0
+  + int 15 1
+    adr int 15 1
+      * Listnode 8 0
+        name .b129 ref Listnode 0 0
+    const (0) int 6 0
+ecom: 
+hd string 10 1
+  name args list of string 0 0
+ecom to: 
+* string 8 0
+  + int 15 1
+    adr int 15 1
+      * Listnode 8 0
+        name .b129 ref Listnode 0 0
+    const (8) int 6 0
+ecom: 
+= ref Listnode 10 1
+  name .b129 ref Listnode 0 0
+  name nil ref Listnode 1 0
+ecom: 
+name nil ref Listnode 1 0
+ecom to: 
+name .b129 ref Listnode 0 0
+ecom: 
+= list of string 10 1
+  name args list of string 0 0
+  tl list of string 10 1
+    name args list of string 0 0
+ecom: 
+tl list of string 10 1
+  name args list of string 0 0
+ecom to: 
+name args list of string 0 0
+ecom: 
+= list of ref Listnode 10 1
+  name nargs list of ref Listnode 0 0
+  :: list of ref Listnode 10 1
+    ref ref Listnode 10 1
+      tuple Listnode 10 1
+        seq no type 10 1
+          name nil polymorphic type 1 0
+          seq no type 10 1
+            name path string 0 0
+    name nargs list of ref Listnode 0 0
+ecom: 
+:: list of ref Listnode 10 1
+  ref ref Listnode 10 1
+    tuple Listnode 10 1
+      seq no type 10 1
+        name nil polymorphic type 1 0
+        seq no type 10 1
+          name path string 0 0
+  name nargs list of ref Listnode 0 0
+ecom to: 
+name nargs list of ref Listnode 0 0
+eacom: 
+ref ref Listnode 10 1
+  tuple Listnode 10 1
+    seq no type 10 1
+      name nil polymorphic type 1 0
+      seq no type 10 1
+        name path string 0 0
+generate desc for ref Listnode
+generate desc for ref Listnode
+	desc	$-1,8,"80"
+ecom: 
+ref ref Listnode 10 1
+  tuple Listnode 10 1
+    seq no type 10 1
+      name nil polymorphic type 1 0
+      seq no type 10 1
+        name path string 0 0
+ecom to: 
+name .b129 ref Listnode 0 0
+generate desc for ref Listnode
+generate desc for Listnode
+ecom: 
+tuple Listnode 10 1
+  seq no type 10 1
+    name nil polymorphic type 1 0
+    seq no type 10 1
+      name path string 0 0
+ecom to: 
+* Listnode 8 0
+  name .b129 ref Listnode 0 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* ref Node 8 0
+  + int 15 1
+    adr int 15 1
+      * Listnode 8 0
+        name .b129 ref Listnode 0 0
+    const (0) int 6 0
+ecom: 
+name path string 0 0
+ecom to: 
+* string 8 0
+  + int 15 1
+    adr int 15 1
+      * Listnode 8 0
+        name .b129 ref Listnode 0 0
+    const (8) int 6 0
+ecom: 
+= ref Listnode 10 1
+  name .b129 ref Listnode 0 0
+  name nil ref Listnode 1 0
+ecom: 
+name nil ref Listnode 1 0
+ecom to: 
+name .b129 ref Listnode 0 0
+ecom: 
+= list of ref Listnode 10 1
+  name nargs list of ref Listnode 0 0
+  :: list of ref Listnode 10 1
+    hd ref Listnode 10 1
+      name argv list of ref Listnode 0 0
+    name nargs list of ref Listnode 0 0
+ecom: 
+:: list of ref Listnode 10 1
+  hd ref Listnode 10 1
+    name argv list of ref Listnode 0 0
+  name nargs list of ref Listnode 0 0
+ecom to: 
+name nargs list of ref Listnode 0 0
+eacom: 
+hd ref Listnode 10 1
+  name argv list of ref Listnode 0 0
+generate desc for ref Listnode
+generate desc for ref Listnode
+	desc	$-1,8,"80"
+ecom: 
+hd ref Listnode 10 1
+  name argv list of ref Listnode 0 0
+ecom to: 
+name .b129 ref Listnode 0 0
+ecom: 
+= ref Listnode 10 1
+  name .b129 ref Listnode 0 0
+  name nil ref Listnode 1 0
+ecom: 
+name nil ref Listnode 1 0
+ecom to: 
+name .b129 ref Listnode 0 0
+ecom: 
+= list of ref Listnode 10 1
+  name argv list of ref Listnode 0 0
+  tl list of ref Listnode 10 1
+    name argv list of ref Listnode 0 0
+ecom: 
+tl list of ref Listnode 10 1
+  name argv list of ref Listnode 0 0
+ecom to: 
+name argv list of ref Listnode 0 0
+ecom: 
+call string 10 2
+  name runexternal fn(ctxt: ref Context, args: list of ref Listnode, last: int): string 11 1
+  seq no type 10 2
+    name ctxt ref Context 0 0
+    seq no type 10 2
+      call list of ref Listnode 10 2
+        name revlist fn(l: list of ref Listnode): list of ref Listnode 11 1
+        seq no type 10 1
+          name nargs list of ref Listnode 0 0
+      seq no type 10 1
+        name last int 0 0
+ecom to: 
+* string 8 0
+  name .ret int 0 0
+generate desc for big
+ecom: 
+call list of ref Listnode 10 2
+  name revlist fn(l: list of ref Listnode): list of ref Listnode 11 1
+  seq no type 10 1
+    name nargs list of ref Listnode 0 0
+ecom to: 
+name .t128 list of ref Listnode 0 0
+generate desc for big
+ecom: 
+name nargs list of ref Listnode 0 0
+ecom to: 
+* list of ref Listnode 8 0
+  + int 15 0
+    name .b130 big 0 0
+    const (64) int 6 0
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b126 big 0 0
+    const (64) int 6 0
+ecom: 
+name .t128 list of ref Listnode 0 0
+ecom to: 
+* list of ref Listnode 8 0
+  + int 15 0
+    name .b126 big 0 0
+    const (72) int 6 0
+ecom: 
+= list of ref Listnode 10 1
+  name .t128 list of ref Listnode 0 0
+  name nil list of ref Listnode 1 0
+ecom: 
+name nil list of ref Listnode 1 0
+ecom to: 
+name .t128 list of ref Listnode 0 0
+ecom: 
+name last int 0 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b126 big 0 0
+    const (80) int 6 0
+fn: runhashpling
+64: argument ctxt ref Context ref 3
+72: argument fd ref Sys->FD ref 2
+80: argument path string ref 3
+88: argument argv list of ref Listnode ref 4
+96: argument last int ref 1
+100: local i int ref 7
+104: local n int ref 3
+112: local .b126 big ref 8
+120: local header array of byte ref 8
+128: local nargs list of ref Listnode ref 7
+136: local args list of string ref 6
+144: local .b129 ref Listnode ref 5
+152: local .b130 big ref 1
+160: local .t128 array of byte ref 1
+168: local .b127 (int, list of string) ref 1
+generate desc for runhashpling
+descmap offset 0
+descmap ctxt type ref Context offset 64 (d->offset=64 start=0) returns 64
+descmap fd type ref Sys->FD offset 72 (d->offset=72 start=0) returns 72
+descmap path type string offset 80 (d->offset=80 start=0) returns 80
+descmap argv type list of ref Listnode offset 88 (d->offset=88 start=0) returns 88
+descmap last type int offset 96 (d->offset=96 start=0) returns -1
+descmap i type int offset 100 (d->offset=100 start=0) returns -1
+descmap n type int offset 104 (d->offset=104 start=0) returns -1
+descmap .b126 type big offset 112 (d->offset=112 start=0) returns -1
+descmap header type array of byte offset 120 (d->offset=120 start=0) returns 120
+descmap nargs type list of ref Listnode offset 128 (d->offset=128 start=0) returns 128
+descmap args type list of string offset 136 (d->offset=136 start=0) returns 136
+descmap .b129 type ref Listnode offset 144 (d->offset=144 start=0) returns 144
+descmap .b130 type big offset 152 (d->offset=152 start=0) returns -1
+descmap .t128 type array of byte offset 160 (d->offset=160 start=0) returns 160
+descmap adt offset 168
+descmap offset 168
+descmap t0 type int offset 168 (d->offset=0 start=168) returns -1
+descmap t1 type list of string offset 176 (d->offset=8 start=168) returns 176
+descmap .b127 type (int, list of string) offset 168 (d->offset=168 start=0) returns 176
+fncom: runblock 2 418fe8
+ecom: 
+= ref Node 10 1
+  name cmd ref Node 0 0
+  * ref Node 10 1
+    hd ref Listnode 10 1
+      name args list of ref Listnode 0 0
+ecom: 
+* ref Node 10 1
+  hd ref Listnode 10 1
+    name args list of ref Listnode 0 0
+ecom to: 
+name cmd ref Node 0 0
+eacom: 
+* ref Node 10 1
+  hd ref Listnode 10 1
+    name args list of ref Listnode 0 0
+generate desc for ref Listnode
+generate desc for ref Listnode
+	desc	$-1,8,"80"
+ecom: 
+hd ref Listnode 10 1
+  name args list of ref Listnode 0 0
+ecom to: 
+name .b131 ref Listnode 0 0
+ecom: 
+= ref Listnode 10 1
+  name .b131 ref Listnode 0 0
+  name nil ref Listnode 1 0
+ecom: 
+name nil ref Listnode 1 0
+ecom to: 
+name .b131 ref Listnode 0 0
+ecom: 
+= ref YYLEX 10 2
+  name lex ref YYLEX 0 0
+  call ref YYLEX 10 2
+    name initstring fn(s: string): ref YYLEX 11 1
+    seq no type 10 1
+      * string 10 1
+        + int 10 1
+          hd ref Listnode 10 1
+            name args list of ref Listnode 0 0
+          const word (8) int 6 0
+ecom: 
+call ref YYLEX 10 2
+  name initstring fn(s: string): ref YYLEX 11 1
+  seq no type 10 1
+    * string 10 1
+      + int 10 1
+        hd ref Listnode 10 1
+          name args list of ref Listnode 0 0
+        const word (8) int 6 0
+ecom to: 
+name lex ref YYLEX 0 0
+generate desc for big
+ecom: 
+* string 10 1
+  + int 10 1
+    hd ref Listnode 10 1
+      name args list of ref Listnode 0 0
+    const word (8) int 6 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b132 big 0 0
+    const (64) int 6 0
+eacom: 
+* string 10 1
+  + int 10 1
+    hd ref Listnode 10 1
+      name args list of ref Listnode 0 0
+    const word (8) int 6 0
+generate desc for ref Listnode
+ecom: 
+hd ref Listnode 10 1
+  name args list of ref Listnode 0 0
+ecom to: 
+name .b131 ref Listnode 0 0
+ecom: 
+= ref Listnode 10 1
+  name .b131 ref Listnode 0 0
+  name nil ref Listnode 1 0
+ecom: 
+name nil ref Listnode 1 0
+ecom to: 
+name .b131 ref Listnode 0 0
+ecom: 
+= (ref Node, string) 10 2
+  tuple (ref Node, string) 10 1
+    seq no type 10 1
+      name cmd ref Node 0 0
+      seq no type 10 1
+        name err string 0 0
+  call (ref Node, string) 10 2
+    name doparse fn(l: ref YYLEX, prompt: string, showline: int): (ref Node, string) 11 1
+    seq no type 10 1
+      name lex ref YYLEX 0 0
+      seq no type 10 1
+        const  string 1 0
+        seq no type 10 1
+          const (0) int 6 0
+generate desc for (ref Node, string)
+descmap adt offset 0
+descmap offset 0
+descmap t0 type ref Node offset 0 (d->offset=0 start=0) returns 0
+descmap t1 type string offset 8 (d->offset=8 start=0) returns 8
+generate desc for (ref Node, string)
+	desc	$-1,16,"c0"
+ecom: 
+call (ref Node, string) 10 2
+  name doparse fn(l: ref YYLEX, prompt: string, showline: int): (ref Node, string) 11 1
+  seq no type 10 1
+    name lex ref YYLEX 0 0
+    seq no type 10 1
+      const  string 1 0
+      seq no type 10 1
+        const (0) int 6 0
+ecom to: 
+name .b133 (ref Node, string) 0 0
+generate desc for big
+ecom: 
+name lex ref YYLEX 0 0
+ecom to: 
+* ref YYLEX 8 0
+  + int 15 0
+    name .b132 big 0 0
+    const (64) int 6 0
+ecom: 
+const  string 1 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b132 big 0 0
+    const (72) int 6 0
+ecom: 
+const (0) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b132 big 0 0
+    const (80) int 6 0
+ecom: 
+= ref Node 10 1
+  * ref Node 0 0
+    adr int 13 1
+      name .b133 (ref Node, string) 0 0
+  name nil ref Node 1 0
+ecom: 
+name nil ref Node 1 0
+ecom to: 
+* ref Node 0 0
+  adr int 13 1
+    name .b133 (ref Node, string) 0 0
+ecom: 
+= string 10 1
+  * string 0 0
+    + int 13 1
+      adr int 13 1
+        name .b133 (ref Node, string) 0 0
+      const t1 (8) int 6 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+* string 0 0
+  + int 13 1
+    adr int 13 1
+      name .b133 (ref Node, string) 0 0
+    const t1 (8) int 6 0
+ecom: 
+call no type 10 2
+  name fail fn(ctxt: self ref Context, ename: string, err: string) 11 1
+  seq nothing 10 1
+    name ctxt ref Context 0 0
+    seq no type 10 1
+      const parse error string 1 0
+      seq no type 10 1
+        + string 10 1
+          const sh:  string 1 0
+          name err string 0 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b132 big 0 0
+    const (64) int 6 0
+ecom: 
+const parse error string 1 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b132 big 0 0
+    const (72) int 6 0
+ecom: 
++ string 10 1
+  const sh:  string 1 0
+  name err string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b132 big 0 0
+    const (80) int 6 0
+ecom: 
+= ref Node 10 1
+  * ref Node 10 1
+    hd ref Listnode 10 1
+      name args list of ref Listnode 0 0
+  name cmd ref Node 0 0
+eacom: 
+* ref Node 10 1
+  hd ref Listnode 10 1
+    name args list of ref Listnode 0 0
+generate desc for ref Listnode
+ecom: 
+hd ref Listnode 10 1
+  name args list of ref Listnode 0 0
+ecom to: 
+name .b131 ref Listnode 0 0
+ecom: 
+name cmd ref Node 0 0
+ecom to: 
+* ref Node 8 1
+  name .b131 ref Listnode 0 0
+ecom: 
+= ref Listnode 10 1
+  name .b131 ref Listnode 0 0
+  name nil ref Listnode 1 0
+ecom: 
+name nil ref Listnode 1 0
+ecom to: 
+name .b131 ref Listnode 0 0
+ecom: 
+= string 10 1
+  name err string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name err string 0 0
+ecom: 
+= ref YYLEX 10 1
+  name lex ref YYLEX 0 0
+  name nil ref YYLEX 1 0
+ecom: 
+name nil ref YYLEX 1 0
+ecom to: 
+name lex ref YYLEX 0 0
+ecom: 
+call no type 10 2
+  name push fn(ctxt: self ref Context) 11 1
+  seq nothing 10 1
+    name ctxt ref Context 0 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b132 big 0 0
+    const (64) int 6 0
+ecom: 
+call no type 10 2
+  name setlocal fn(ctxt: self ref Context, name: string, val: list of ref Listnode) 11 1
+  seq nothing 10 1
+    name ctxt ref Context 0 0
+    seq no type 10 1
+      const 0 string 1 0
+      seq no type 10 1
+        :: list of ref Listnode 10 1
+          hd ref Listnode 10 1
+            name args list of ref Listnode 0 0
+          name nil polymorphic type 1 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b132 big 0 0
+    const (64) int 6 0
+ecom: 
+const 0 string 1 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b132 big 0 0
+    const (72) int 6 0
+ecom: 
+:: list of ref Listnode 10 1
+  hd ref Listnode 10 1
+    name args list of ref Listnode 0 0
+  name nil polymorphic type 1 0
+ecom to: 
+* list of ref Listnode 8 0
+  + int 15 0
+    name .b132 big 0 0
+    const (80) int 6 0
+eacom: 
+hd ref Listnode 10 1
+  name args list of ref Listnode 0 0
+generate desc for ref Listnode
+ecom: 
+hd ref Listnode 10 1
+  name args list of ref Listnode 0 0
+ecom to: 
+name .b131 ref Listnode 0 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+name .t134 list of ref Listnode 0 0
+ecom: 
+= ref Listnode 10 1
+  name .b131 ref Listnode 0 0
+  name nil ref Listnode 1 0
+ecom: 
+name nil ref Listnode 1 0
+ecom to: 
+name .b131 ref Listnode 0 0
+ecom: 
+= list of ref Listnode 10 1
+  name .t134 list of ref Listnode 0 0
+  name nil list of ref Listnode 1 0
+ecom: 
+name nil list of ref Listnode 1 0
+ecom to: 
+name .t134 list of ref Listnode 0 0
+ecom: 
+call no type 10 2
+  name setlocal fn(ctxt: self ref Context, name: string, val: list of ref Listnode) 11 1
+  seq nothing 10 1
+    name ctxt ref Context 0 0
+    seq no type 10 1
+      const * string 1 0
+      seq no type 10 1
+        tl list of ref Listnode 10 1
+          name args list of ref Listnode 0 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b132 big 0 0
+    const (64) int 6 0
+ecom: 
+const * string 1 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b132 big 0 0
+    const (72) int 6 0
+ecom: 
+tl list of ref Listnode 10 1
+  name args list of ref Listnode 0 0
+ecom to: 
+* list of ref Listnode 8 0
+  + int 15 0
+    name .b132 big 0 0
+    const (80) int 6 0
+ecom: 
+= ref Node 10 1
+  name cmd ref Node 0 0
+  * ref Node 8 0
+    + int 15 1
+      name cmd ref Node 0 0
+      const left (8) int 6 0
+ecom: 
+* ref Node 8 0
+  + int 15 1
+    name cmd ref Node 0 0
+    const left (8) int 6 0
+ecom to: 
+name cmd ref Node 0 0
+ecom: 
+= string 10 2
+  name status string 0 0
+  call string 10 2
+    name walk fn(ctxt: ref Context, n: ref Node, last: int): string 11 1
+    seq no type 10 1
+      name ctxt ref Context 0 0
+      seq no type 10 1
+        name cmd ref Node 0 0
+        seq no type 10 1
+          name last int 0 0
+ecom: 
+call string 10 2
+  name walk fn(ctxt: ref Context, n: ref Node, last: int): string 11 1
+  seq no type 10 1
+    name ctxt ref Context 0 0
+    seq no type 10 1
+      name cmd ref Node 0 0
+      seq no type 10 1
+        name last int 0 0
+ecom to: 
+name status string 0 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b132 big 0 0
+    const (64) int 6 0
+ecom: 
+name cmd ref Node 0 0
+ecom to: 
+* ref Node 8 0
+  + int 15 0
+    name .b132 big 0 0
+    const (72) int 6 0
+ecom: 
+name last int 0 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b132 big 0 0
+    const (80) int 6 0
+ecom: 
+call no type 10 2
+  name pop fn(ctxt: self ref Context) 11 1
+  seq nothing 10 1
+    name ctxt ref Context 0 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b132 big 0 0
+    const (64) int 6 0
+ecom: 
+name status string 0 0
+ecom to: 
+* string 8 0
+  name .ret int 0 0
+ecom: 
+= string 10 1
+  name status string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name status string 0 0
+ecom: 
+call no type 10 2
+  name pop fn(ctxt: self ref Context) 11 1
+  seq nothing 10 1
+    name ctxt ref Context 0 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b132 big 0 0
+    const (64) int 6 0
+ecom: 
+raise nothing 10 1
+  name .ex2 exception 0 0
+fn: runblock
+64: argument ctxt ref Context ref 7
+72: argument args list of ref Listnode ref 5
+80: argument last int ref 1
+84: local .ex2 ref exception ref 1
+88: local cmd ref Node ref 10
+96: local .b132 big ref 9
+104: local .b131 ref Listnode ref 4
+112: local err string ref 2
+120: local lex ref YYLEX ref 2
+128: local status string ref 2
+136: local .t134 list of ref Listnode ref 1
+144: local .b133 (ref Node, string) ref 1
+generate desc for runblock
+descmap offset 0
+descmap ctxt type ref Context offset 64 (d->offset=64 start=0) returns 64
+descmap args type list of ref Listnode offset 72 (d->offset=72 start=0) returns 72
+descmap last type int offset 80 (d->offset=80 start=0) returns -1
+descmap .ex2 type ref exception offset 84 (d->offset=84 start=0) returns 88
+descmap cmd type ref Node offset 88 (d->offset=88 start=0) returns 88
+descmap .b132 type big offset 96 (d->offset=96 start=0) returns -1
+descmap .b131 type ref Listnode offset 104 (d->offset=104 start=0) returns 104
+descmap err type string offset 112 (d->offset=112 start=0) returns 112
+descmap lex type ref YYLEX offset 120 (d->offset=120 start=0) returns 120
+descmap status type string offset 128 (d->offset=128 start=0) returns 128
+descmap .t134 type list of ref Listnode offset 136 (d->offset=136 start=0) returns 136
+descmap adt offset 144
+descmap offset 144
+descmap t0 type ref Node offset 144 (d->offset=0 start=144) returns 144
+descmap t1 type string offset 152 (d->offset=8 start=144) returns 152
+descmap .b133 type (ref Node, string) offset 144 (d->offset=144 start=0) returns 152
+generate desc for .ex2
+descmap offset 0
+descmap status type string offset 128 (d->offset=128 start=0) returns 128
+fncom: trybuiltin 2 4190a8
+ecom: 
+= (int, list of Shellbuiltin) 10 2
+  tuple (int, list of Shellbuiltin) 10 1
+    seq nothing 10 1
+      name nil polymorphic type 1 0
+      seq nothing 10 1
+        name bmods list of Shellbuiltin 0 0
+  call (int, list of Shellbuiltin) 10 2
+    name findbuiltin fn(b: ref Builtins, name: string): (int, list of Shellbuiltin) 11 1
+    seq no type 10 2
+      * ref Builtins 10 1
+        + int 10 1
+          * ref Environment 8 0
+            name ctxt ref Context 0 0
+          const builtins (8) int 6 0
+      seq no type 10 1
+        * string 10 1
+          + int 10 1
+            hd ref Listnode 10 1
+              name args list of ref Listnode 0 0
+            const word (8) int 6 0
+generate desc for (int, list of Shellbuiltin)
+ecom: 
+call (int, list of Shellbuiltin) 10 2
+  name findbuiltin fn(b: ref Builtins, name: string): (int, list of Shellbuiltin) 11 1
+  seq no type 10 2
+    * ref Builtins 10 1
+      + int 10 1
+        * ref Environment 8 0
+          name ctxt ref Context 0 0
+        const builtins (8) int 6 0
+    seq no type 10 1
+      * string 10 1
+        + int 10 1
+          hd ref Listnode 10 1
+            name args list of ref Listnode 0 0
+          const word (8) int 6 0
+ecom to: 
+name .b135 (int, list of Shellbuiltin) 0 0
+generate desc for big
+ecom: 
+* ref Builtins 10 1
+  + int 10 1
+    * ref Environment 8 0
+      name ctxt ref Context 0 0
+    const builtins (8) int 6 0
+ecom to: 
+* ref Builtins 8 0
+  + int 15 0
+    name .b136 big 0 0
+    const (64) int 6 0
+eacom: 
+* ref Builtins 10 1
+  + int 10 1
+    * ref Environment 8 0
+      name ctxt ref Context 0 0
+    const builtins (8) int 6 0
+generate desc for ref Environment
+ecom: 
+* ref Environment 8 0
+  name ctxt ref Context 0 0
+ecom to: 
+name .b137 ref Environment 0 0
+ecom: 
+= ref Environment 10 1
+  name .b137 ref Environment 0 0
+  name nil ref Environment 1 0
+ecom: 
+name nil ref Environment 1 0
+ecom to: 
+name .b137 ref Environment 0 0
+ecom: 
+* string 10 1
+  + int 10 1
+    hd ref Listnode 10 1
+      name args list of ref Listnode 0 0
+    const word (8) int 6 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b136 big 0 0
+    const (72) int 6 0
+eacom: 
+* string 10 1
+  + int 10 1
+    hd ref Listnode 10 1
+      name args list of ref Listnode 0 0
+    const word (8) int 6 0
+generate desc for ref Listnode
+generate desc for ref Listnode
+	desc	$-1,8,"80"
+ecom: 
+hd ref Listnode 10 1
+  name args list of ref Listnode 0 0
+ecom to: 
+name .b137 ref Listnode 0 0
+ecom: 
+= ref Listnode 10 1
+  name .b137 ref Listnode 0 0
+  name nil ref Listnode 1 0
+ecom: 
+name nil ref Listnode 1 0
+ecom to: 
+name .b137 ref Listnode 0 0
+ecom: 
+= list of Shellbuiltin 10 1
+  * list of Shellbuiltin 0 0
+    + int 13 1
+      adr int 13 1
+        name .b135 (int, list of Shellbuiltin) 0 0
+      const t1 (8) int 6 0
+  name nil list of Shellbuiltin 1 0
+ecom: 
+name nil list of Shellbuiltin 1 0
+ecom to: 
+* list of Shellbuiltin 0 0
+  + int 13 1
+    adr int 13 1
+      name .b135 (int, list of Shellbuiltin) 0 0
+    const t1 (8) int 6 0
+ecom: 
+tuple (int, polymorphic type) 10 1
+  seq no type 10 1
+    const (0) int 6 0
+    seq no type 10 1
+      name nil polymorphic type 1 0
+ecom to: 
+* (int, polymorphic type) 8 0
+  name .ret int 0 0
+ecom: 
+const (0) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 1
+    adr int 15 1
+      * (int, polymorphic type) 8 0
+        name .ret int 0 0
+    const (0) int 6 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* polymorphic type 8 0
+  + int 15 1
+    adr int 15 1
+      * (int, polymorphic type) 8 0
+        name .ret int 0 0
+    const (8) int 6 0
+ecom: 
+tuple (int, string) 10 2
+  seq no type 10 2
+    const (1) int 6 0
+    seq no type 10 2
+      call string 10 2
+        -> fn(c: ref Context, sh: Sh, cmd: list of ref Listnode, last: int): string 12 2
+          hd Shellbuiltin 10 1
+            name bmods list of Shellbuiltin 0 0
+          name runbuiltin nothing 11 1
+        seq no type 10 1
+          name ctxt ref Context 0 0
+          seq no type 10 1
+            name myself Sh 1 0
+            seq no type 10 1
+              name args list of ref Listnode 0 0
+              seq no type 10 1
+                name lseq int 0 0
+ecom to: 
+* (int, string) 8 0
+  name .ret int 0 0
+ecom: 
+const (1) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 1
+    adr int 15 1
+      * (int, string) 8 0
+        name .ret int 0 0
+    const (0) int 6 0
+ecom: 
+call string 10 2
+  -> fn(c: ref Context, sh: Sh, cmd: list of ref Listnode, last: int): string 12 2
+    hd Shellbuiltin 10 1
+      name bmods list of Shellbuiltin 0 0
+    name runbuiltin nothing 11 1
+  seq no type 10 1
+    name ctxt ref Context 0 0
+    seq no type 10 1
+      name myself Sh 1 0
+      seq no type 10 1
+        name args list of ref Listnode 0 0
+        seq no type 10 1
+          name lseq int 0 0
+ecom to: 
+* string 8 0
+  + int 15 1
+    adr int 15 1
+      * (int, string) 8 0
+        name .ret int 0 0
+    const (8) int 6 0
+generate desc for big
+eacom: 
+hd Shellbuiltin 10 1
+  name bmods list of Shellbuiltin 0 0
+ecom: 
+hd Shellbuiltin 10 1
+  name bmods list of Shellbuiltin 0 0
+ecom to: 
+name .t138 Shellbuiltin 0 0
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b136 big 0 0
+    const (64) int 6 0
+ecom: 
+name myself Sh 1 0
+ecom to: 
+* Sh 8 0
+  + int 15 0
+    name .b136 big 0 0
+    const (72) int 6 0
+ecom: 
+name args list of ref Listnode 0 0
+ecom to: 
+* list of ref Listnode 8 0
+  + int 15 0
+    name .b136 big 0 0
+    const (80) int 6 0
+ecom: 
+name lseq int 0 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b136 big 0 0
+    const (88) int 6 0
+ecom: 
+= Shellbuiltin 10 1
+  name .t138 Shellbuiltin 0 0
+  name nil Shellbuiltin 1 0
+ecom: 
+name nil Shellbuiltin 1 0
+ecom to: 
+name .t138 Shellbuiltin 0 0
+fn: trybuiltin
+64: argument ctxt ref Context ref 2
+72: argument args list of ref Listnode ref 2
+80: argument lseq int ref 1
+88: local bmods list of Shellbuiltin ref 3
+96: local .b136 big ref 2
+104: local .b137 ref Environment ref 2
+112: local .t138 Shellbuiltin ref 1
+120: local .b135 (int, list of Shellbuiltin) ref 1
+generate desc for trybuiltin
+descmap offset 0
+descmap ctxt type ref Context offset 64 (d->offset=64 start=0) returns 64
+descmap args type list of ref Listnode offset 72 (d->offset=72 start=0) returns 72
+descmap lseq type int offset 80 (d->offset=80 start=0) returns -1
+descmap bmods type list of Shellbuiltin offset 88 (d->offset=88 start=0) returns 88
+descmap .b136 type big offset 96 (d->offset=96 start=0) returns -1
+descmap .b137 type ref Environment offset 104 (d->offset=104 start=0) returns 104
+descmap .t138 type Shellbuiltin offset 112 (d->offset=112 start=0) returns 112
+descmap adt offset 120
+descmap offset 120
+descmap t0 type int offset 120 (d->offset=0 start=120) returns -1
+descmap t1 type list of Shellbuiltin offset 128 (d->offset=8 start=120) returns 128
+descmap .b135 type (int, list of Shellbuiltin) offset 120 (d->offset=120 start=0) returns 128
+fncom: keepfdstr 1 419168
+fncom: externalexec 2 419228
+ecom: 
+used int 10 2
+  call int 10 2
+    -> fn(flags: int, movefd: list of int): int 12 1
+      name sys Sys 1 0
+      name pctl nothing 11 1
+    seq no type 10 1
+      const NEWFD (1) int 6 0
+      seq no type 10 1
+        name keepfds list of int 0 0
+ecom: 
+call int 10 2
+  -> fn(flags: int, movefd: list of int): int 12 1
+    name sys Sys 1 0
+    name pctl nothing 11 1
+  seq no type 10 1
+    const NEWFD (1) int 6 0
+    seq no type 10 1
+      name keepfds list of int 0 0
+ecom to: 
+name .t139 int 0 0
+generate desc for big
+ecom: 
+const NEWFD (1) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b140 big 0 0
+    const (64) int 6 0
+ecom: 
+name keepfds list of int 0 0
+ecom to: 
+* list of int 8 0
+  + int 15 0
+    name .b140 big 0 0
+    const (72) int 6 0
+ecom: 
+<-= int 10 2
+  name startchan chan of int 0 0
+  call int 10 2
+    -> fn(flags: int, movefd: list of int): int 12 1
+      name sys Sys 1 0
+      name pctl nothing 11 1
+    seq no type 10 1
+      const (0) int 6 0
+      seq no type 10 1
+        name nil list of int 1 0
+eacom: 
+call int 10 2
+  -> fn(flags: int, movefd: list of int): int 12 1
+    name sys Sys 1 0
+    name pctl nothing 11 1
+  seq no type 10 1
+    const (0) int 6 0
+    seq no type 10 1
+      name nil list of int 1 0
+ecom: 
+call int 10 2
+  -> fn(flags: int, movefd: list of int): int 12 1
+    name sys Sys 1 0
+    name pctl nothing 11 1
+  seq no type 10 1
+    const (0) int 6 0
+    seq no type 10 1
+      name nil list of int 1 0
+ecom to: 
+name .t139 int 0 0
+generate desc for big
+ecom: 
+const (0) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b140 big 0 0
+    const (64) int 6 0
+ecom: 
+name nil list of int 1 0
+ecom to: 
+* list of int 8 0
+  + int 15 0
+    name .b140 big 0 0
+    const (72) int 6 0
+ecom: 
+call no type 10 2
+  -> fn(ctxt: ref Draw->Context, argv: list of string) 12 1
+    name mod Command 0 0
+    name init nothing 11 1
+  seq no type 10 1
+    name drawcontext ref Draw->Context 0 0
+    seq no type 10 1
+      name argv list of string 0 0
+generate desc for big
+ecom: 
+name drawcontext ref Draw->Context 0 0
+ecom to: 
+* ref Draw->Context 8 0
+  + int 15 0
+    name .b140 big 0 0
+    const (64) int 6 0
+ecom: 
+name argv list of string 0 0
+ecom to: 
+* list of string 8 0
+  + int 15 0
+    name .b140 big 0 0
+    const (72) int 6 0
+ecom: 
+raise nothing 10 1
+  const fail:write on closed pipe string 1 0
+fn: externalexec
+64: argument mod Command ref 1
+72: argument drawcontext ref Draw->Context ref 1
+80: argument argv list of string ref 3
+88: argument startchan chan of int ref 1
+96: argument keepfds list of int ref 1
+104: local .ex3 ref exception ref 1
+108: local .t139 int ref 1
+112: local .b140 big ref 3
+generate desc for externalexec
+descmap offset 0
+descmap mod type Command offset 64 (d->offset=64 start=0) returns 64
+descmap drawcontext type ref Draw->Context offset 72 (d->offset=72 start=0) returns 72
+descmap argv type list of string offset 80 (d->offset=80 start=0) returns 80
+descmap startchan type chan of int offset 88 (d->offset=88 start=0) returns 88
+descmap keepfds type list of int offset 96 (d->offset=96 start=0) returns 96
+descmap .ex3 type ref exception offset 104 (d->offset=104 start=0) returns 104
+descmap .t139 type int offset 108 (d->offset=108 start=0) returns -1
+descmap .b140 type big offset 112 (d->offset=112 start=0) returns -1
+fncom: dup 3 4192e8
+eacom: 
+* int 10 1
+  * ref Sys->FD 8 0
+    + int 15 1
+      name ctxt ref Context 0 0
+      const waitfd (8) int 6 0
+generate desc for ref Sys->FD
+generate desc for ref Sys->FD
+	desc	$-1,8,"80"
+ecom: 
+* ref Sys->FD 8 0
+  + int 15 1
+    name ctxt ref Context 0 0
+    const waitfd (8) int 6 0
+ecom to: 
+name .b141 ref Sys->FD 0 0
+ecom: 
+= ref Sys->FD 10 1
+  name .b141 ref Sys->FD 0 0
+  name nil ref Sys->FD 1 0
+ecom: 
+name nil ref Sys->FD 1 0
+ecom to: 
+name .b141 ref Sys->FD 0 0
+ecom: 
+= ref Sys->FD 10 1
+  * ref Sys->FD 8 0
+    + int 15 1
+      name ctxt ref Context 0 0
+      const waitfd (8) int 6 0
+  call ref Sys->FD 10 1
+    name waitfd fn(): ref Sys->FD 11 1
+ecom: 
+call ref Sys->FD 10 1
+  name waitfd fn(): ref Sys->FD 11 1
+ecom to: 
+* ref Sys->FD 8 0
+  + int 15 1
+    name ctxt ref Context 0 0
+    const waitfd (8) int 6 0
+generate desc for big
+eacom: 
+* int 10 1
+  * ref Sys->FD 8 0
+    + int 15 1
+      name ctxt ref Context 0 0
+      const waitfd (8) int 6 0
+generate desc for ref Sys->FD
+ecom: 
+* ref Sys->FD 8 0
+  + int 15 1
+    name ctxt ref Context 0 0
+    const waitfd (8) int 6 0
+ecom to: 
+name .b141 ref Sys->FD 0 0
+ecom: 
+= ref Sys->FD 10 1
+  name .b141 ref Sys->FD 0 0
+  name nil ref Sys->FD 1 0
+ecom: 
+name nil ref Sys->FD 1 0
+ecom to: 
+name .b141 ref Sys->FD 0 0
+ecom: 
+call no type 10 2
+  name panic fn(s: string) 11 1
+  seq no type 10 2
+    call string 10 2
+      -> fn(s: string, nil: int, *): string 12 1
+        name sys Sys 1 0
+        name sprint nothing 11 1
+      seq no type 10 1
+        const reopen of waitfd gave same fd (%d) string 1 0
+        seq no type 10 1
+          * int 10 1
+            * ref Sys->FD 8 0
+              + int 15 1
+                name ctxt ref Context 0 0
+                const waitfd (8) int 6 0
+generate desc for big
+ecom: 
+call string 10 2
+  -> fn(s: string, nil: int, *): string 12 1
+    name sys Sys 1 0
+    name sprint nothing 11 1
+  seq no type 10 1
+    const reopen of waitfd gave same fd (%d) string 1 0
+    seq no type 10 1
+      * int 10 1
+        * ref Sys->FD 8 0
+          + int 15 1
+            name ctxt ref Context 0 0
+            const waitfd (8) int 6 0
+ecom to: 
+name .t143 string 0 0
+generate desc for Sys->sprint
+descmap offset 0
+descmap s type string offset 64 (d->offset=64 start=0) returns 64
+descmap type int offset 72 returns -1
+generate desc for big
+ecom: 
+const reopen of waitfd gave same fd (%d) string 1 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b144 big 0 0
+    const (64) int 6 0
+ecom: 
+* int 10 1
+  * ref Sys->FD 8 0
+    + int 15 1
+      name ctxt ref Context 0 0
+      const waitfd (8) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b144 big 0 0
+    const (72) int 6 0
+eacom: 
+* int 10 1
+  * ref Sys->FD 8 0
+    + int 15 1
+      name ctxt ref Context 0 0
+      const waitfd (8) int 6 0
+generate desc for ref Sys->FD
+ecom: 
+* ref Sys->FD 8 0
+  + int 15 1
+    name ctxt ref Context 0 0
+    const waitfd (8) int 6 0
+ecom to: 
+name .b141 ref Sys->FD 0 0
+ecom: 
+= ref Sys->FD 10 1
+  name .b141 ref Sys->FD 0 0
+  name nil ref Sys->FD 1 0
+ecom: 
+name nil ref Sys->FD 1 0
+ecom to: 
+name .b141 ref Sys->FD 0 0
+ecom: 
+name .t143 string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b142 big 0 0
+    const (64) int 6 0
+ecom: 
+= string 10 1
+  name .t143 string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name .t143 string 0 0
+ecom: 
+call int 10 2
+  -> fn(old: int, new: int): int 12 1
+    name sys Sys 1 0
+    name dup nothing 11 1
+  seq no type 10 1
+    name fd1 int 0 0
+    seq no type 10 1
+      name fd2 int 0 0
+ecom to: 
+* int 8 0
+  name .ret int 0 0
+generate desc for big
+ecom: 
+name fd1 int 0 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b144 big 0 0
+    const (64) int 6 0
+ecom: 
+name fd2 int 0 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b144 big 0 0
+    const (68) int 6 0
+fn: dup
+64: argument ctxt ref Context ref 4
+72: argument fd1 int ref 1
+76: argument fd2 int ref 3
+80: local .b141 ref Sys->FD ref 3
+88: local .b142 big ref 2
+96: local .b144 big ref 2
+104: local .t143 string ref 1
+generate desc for dup
+descmap offset 0
+descmap ctxt type ref Context offset 64 (d->offset=64 start=0) returns 64
+descmap fd1 type int offset 72 (d->offset=72 start=0) returns -1
+descmap fd2 type int offset 76 (d->offset=76 start=0) returns -1
+descmap .b141 type ref Sys->FD offset 80 (d->offset=80 start=0) returns 80
+descmap .b142 type big offset 88 (d->offset=88 start=0) returns -1
+descmap .b144 type big offset 96 (d->offset=96 start=0) returns -1
+descmap .t143 type string offset 104 (d->offset=104 start=0) returns 104
+fncom: doredirs 3 4193a8
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* polymorphic type 8 0
+  name .ret int 0 0
+ecom: 
+= list of int 10 1
+  name keepfds list of int 0 0
+  * list of int 8 0
+    + int 15 1
+      name ctxt ref Context 0 0
+      const keepfds (24) int 6 0
+ecom: 
+* list of int 8 0
+  + int 15 1
+    name ctxt ref Context 0 0
+    const keepfds (24) int 6 0
+ecom to: 
+name keepfds list of int 0 0
+ecom: 
+= list of Redirword 10 1
+  name rl list of Redirword 0 0
+  * list of Redirword 8 0
+    name redirs ref Redirlist 0 0
+ecom: 
+* list of Redirword 8 0
+  name redirs ref Redirlist 0 0
+ecom to: 
+name rl list of Redirword 0 0
+ecom: 
+= ref Redirlist 10 1
+  name redirs ref Redirlist 0 0
+  name nil polymorphic type 1 0
+ecom: 
+name nil ref Redirlist 1 0
+ecom to: 
+name redirs ref Redirlist 0 0
+ecom: 
+= Redirword 10 2
+  tuple Redirword 10 1
+    seq nothing 10 1
+      name rfd ref Sys->FD 0 0
+      seq nothing 10 1
+        name path string 0 0
+        seq nothing 10 1
+          tuple Redir 10 1
+            seq nothing 10 1
+              name mode int 0 0
+              seq nothing 10 1
+                name fd1 int 0 0
+                seq nothing 10 1
+                  name fd2 int 0 0
+  hd Redirword 10 1
+    name rl list of Redirword 0 0
+ecom: 
+hd Redirword 10 1
+  name rl list of Redirword 0 0
+ecom to: 
+name rfd Redirword 0 0
+generate desc for Redirword
+ecom: 
+call no type 10 2
+  name fail fn(ctxt: self ref Context, ename: string, err: string) 11 1
+  seq nothing 10 1
+    name ctxt ref Context 0 0
+    seq no type 10 1
+      const bad redir string 1 0
+      seq no type 10 1
+        const sh: invalid dup string 1 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b145 big 0 0
+    const (64) int 6 0
+ecom: 
+const bad redir string 1 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b145 big 0 0
+    const (72) int 6 0
+ecom: 
+const sh: invalid dup string 1 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b145 big 0 0
+    const (80) int 6 0
+eacom: 
+call int 10 2
+  name dup fn(ctxt: ref Context, fd1: int, fd2: int): int 11 1
+  seq no type 10 1
+    name ctxt ref Context 0 0
+    seq no type 10 1
+      name fd2 int 0 0
+      seq no type 10 1
+        name fd1 int 0 0
+ecom: 
+call int 10 2
+  name dup fn(ctxt: ref Context, fd1: int, fd2: int): int 11 1
+  seq no type 10 1
+    name ctxt ref Context 0 0
+    seq no type 10 1
+      name fd2 int 0 0
+      seq no type 10 1
+        name fd1 int 0 0
+ecom to: 
+name .t146 int 0 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b145 big 0 0
+    const (64) int 6 0
+ecom: 
+name fd2 int 0 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b145 big 0 0
+    const (72) int 6 0
+ecom: 
+name fd1 int 0 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b145 big 0 0
+    const (76) int 6 0
+ecom: 
+call no type 10 2
+  name fail fn(ctxt: self ref Context, ename: string, err: string) 11 1
+  seq nothing 10 2
+    name ctxt ref Context 0 0
+    seq no type 10 2
+      const bad redir string 1 0
+      seq no type 10 2
+        call string 10 2
+          -> fn(s: string, *): string 12 1
+            name sys Sys 1 0
+            name sprint nothing 11 1
+          seq no type 10 1
+            const sh: cannot dup: %r string 1 0
+generate desc for big
+ecom: 
+call string 10 2
+  -> fn(s: string, *): string 12 1
+    name sys Sys 1 0
+    name sprint nothing 11 1
+  seq no type 10 1
+    const sh: cannot dup: %r string 1 0
+ecom to: 
+name .t147 string 0 0
+generate desc for Sys->sprint
+descmap offset 0
+descmap s type string offset 64 (d->offset=64 start=0) returns 64
+generate desc for big
+ecom: 
+const sh: cannot dup: %r string 1 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b148 big 0 0
+    const (64) int 6 0
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b145 big 0 0
+    const (64) int 6 0
+ecom: 
+const bad redir string 1 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b145 big 0 0
+    const (72) int 6 0
+ecom: 
+name .t147 string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b145 big 0 0
+    const (80) int 6 0
+ecom: 
+= string 10 1
+  name .t147 string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name .t147 string 0 0
+ecom: 
+= list of int 10 1
+  name keepfds list of int 0 0
+  :: list of int 10 1
+    name fd1 int 0 0
+    name keepfds list of int 0 0
+ecom: 
+:: list of int 10 1
+  name fd1 int 0 0
+  name keepfds list of int 0 0
+ecom to: 
+name keepfds list of int 0 0
+ecom: 
+= ref Sys->FD 10 1
+  * ref Sys->FD 0 0
+    adr int 13 1
+      name rfd Redirword 0 0
+  name nil ref Sys->FD 1 0
+ecom: 
+name nil ref Sys->FD 1 0
+ecom to: 
+* ref Sys->FD 0 0
+  adr int 13 1
+    name rfd Redirword 0 0
+ecom: 
+= string 10 1
+  * string 0 0
+    + int 13 1
+      adr int 13 1
+        name rfd Redirword 0 0
+      const w (8) int 6 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+* string 0 0
+  + int 13 1
+    adr int 13 1
+      name rfd Redirword 0 0
+    const w (8) int 6 0
+ecom: 
+= string 10 1
+  name path string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name path string 0 0
+eacom: 
+& int 10 1
+  name mode int 0 0
+  const OMASK (7) int 6 0
+ecom: 
+& int 10 1
+  name mode int 0 0
+  const OMASK (7) int 6 0
+ecom to: 
+name .t146 int 0 0
+ecom: 
+= int 10 1
+  name fd1 int 0 0
+  const (1) int 6 0
+ecom: 
+const (1) int 6 0
+ecom to: 
+name fd1 int 0 0
+ecom: 
+= int 10 1
+  name fd1 int 0 0
+  const (0) int 6 0
+ecom: 
+const (0) int 6 0
+ecom to: 
+name fd1 int 0 0
+ecom: 
+= (int, int) 10 2
+  tuple (int, int) 10 1
+    seq nothing 10 1
+      name append int 0 0
+      seq nothing 10 1
+        name omode int 0 0
+  tuple (int, int) 10 2
+    seq no type 10 2
+      & int 10 1
+        name mode int 0 0
+        const OAPPEND (524288) int 6 0
+      seq no type 10 1
+        & int 10 1
+          name mode int 0 0
+          const (-524289) int 6 0
+ecom: 
+tuple (int, int) 10 2
+  seq no type 10 2
+    & int 10 1
+      name mode int 0 0
+      const OAPPEND (524288) int 6 0
+    seq no type 10 1
+      & int 10 1
+        name mode int 0 0
+        const (-524289) int 6 0
+ecom to: 
+name append (int, int) 0 0
+ecom: 
+& int 10 1
+  name mode int 0 0
+  const OAPPEND (524288) int 6 0
+ecom to: 
+* int 0 0
+  + int 13 1
+    adr int 13 1
+      name append (int, int) 0 0
+    const (0) int 6 0
+ecom: 
+& int 10 1
+  name mode int 0 0
+  const (-524289) int 6 0
+ecom to: 
+* int 0 0
+  + int 13 1
+    adr int 13 1
+      name append (int, int) 0 0
+    const (4) int 6 0
+ecom: 
+= string 10 1
+  name err string 0 0
+  const  string 1 0
+ecom: 
+const  string 1 0
+ecom to: 
+name err string 0 0
+ecom: 
+= ref Sys->FD 10 2
+  name rfd ref Sys->FD 0 0
+  call ref Sys->FD 10 2
+    -> fn(s: string, mode: int): ref Sys->FD 12 1
+      name sys Sys 1 0
+      name open nothing 11 1
+    seq no type 10 1
+      name path string 0 0
+      seq no type 10 1
+        name omode int 0 0
+ecom: 
+call ref Sys->FD 10 2
+  -> fn(s: string, mode: int): ref Sys->FD 12 1
+    name sys Sys 1 0
+    name open nothing 11 1
+  seq no type 10 1
+    name path string 0 0
+    seq no type 10 1
+      name omode int 0 0
+ecom to: 
+name rfd ref Sys->FD 0 0
+generate desc for big
+ecom: 
+name path string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b148 big 0 0
+    const (64) int 6 0
+ecom: 
+name omode int 0 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b148 big 0 0
+    const (72) int 6 0
+ecom: 
+= ref Sys->FD 10 2
+  name rfd ref Sys->FD 0 0
+  call ref Sys->FD 10 2
+    -> fn(s: string, mode: int): ref Sys->FD 12 1
+      name sys Sys 1 0
+      name open nothing 11 1
+    seq no type 10 1
+      name path string 0 0
+      seq no type 10 1
+        name omode int 0 0
+ecom: 
+call ref Sys->FD 10 2
+  -> fn(s: string, mode: int): ref Sys->FD 12 1
+    name sys Sys 1 0
+    name open nothing 11 1
+  seq no type 10 1
+    name path string 0 0
+    seq no type 10 1
+      name omode int 0 0
+ecom to: 
+name rfd ref Sys->FD 0 0
+generate desc for big
+ecom: 
+name path string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b148 big 0 0
+    const (64) int 6 0
+ecom: 
+name omode int 0 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b148 big 0 0
+    const (72) int 6 0
+ecom: 
+= string 10 2
+  name err string 0 0
+  call string 10 2
+    -> fn(s: string, *): string 12 1
+      name sys Sys 1 0
+      name sprint fn(s: string, *): string 11 1
+    seq no type 10 1
+      const %r string 1 0
+ecom: 
+call string 10 2
+  -> fn(s: string, *): string 12 1
+    name sys Sys 1 0
+    name sprint fn(s: string, *): string 11 1
+  seq no type 10 1
+    const %r string 1 0
+ecom to: 
+name err string 0 0
+generate desc for Sys->sprint
+descmap offset 0
+descmap s type string offset 64 (d->offset=64 start=0) returns 64
+generate desc for big
+ecom: 
+const %r string 1 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b148 big 0 0
+    const (64) int 6 0
+eacom: 
+call int 10 2
+  name nonexistent fn(e: string): int 11 1
+  seq no type 10 1
+    name err string 0 0
+ecom: 
+call int 10 2
+  name nonexistent fn(e: string): int 11 1
+  seq no type 10 1
+    name err string 0 0
+ecom to: 
+name .t146 int 0 0
+generate desc for big
+ecom: 
+name err string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b148 big 0 0
+    const (64) int 6 0
+ecom: 
+= ref Sys->FD 10 2
+  name rfd ref Sys->FD 0 0
+  call ref Sys->FD 10 2
+    -> fn(s: string, mode: int, perm: int): ref Sys->FD 12 1
+      name sys Sys 1 0
+      name create nothing 11 1
+    seq no type 10 1
+      name path string 0 0
+      seq no type 10 1
+        name omode int 0 0
+        seq no type 10 1
+          const (438) int 6 0
+ecom: 
+call ref Sys->FD 10 2
+  -> fn(s: string, mode: int, perm: int): ref Sys->FD 12 1
+    name sys Sys 1 0
+    name create nothing 11 1
+  seq no type 10 1
+    name path string 0 0
+    seq no type 10 1
+      name omode int 0 0
+      seq no type 10 1
+        const (438) int 6 0
+ecom to: 
+name rfd ref Sys->FD 0 0
+generate desc for big
+ecom: 
+name path string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b148 big 0 0
+    const (64) int 6 0
+ecom: 
+name omode int 0 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b148 big 0 0
+    const (72) int 6 0
+ecom: 
+const (438) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b148 big 0 0
+    const (76) int 6 0
+ecom: 
+= string 10 1
+  name err string 0 0
+  name nil polymorphic type 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name err string 0 0
+ecom: 
+= ref Sys->FD 10 2
+  name rfd ref Sys->FD 0 0
+  call ref Sys->FD 10 2
+    -> fn(s: string, mode: int, perm: int): ref Sys->FD 12 1
+      name sys Sys 1 0
+      name create nothing 11 1
+    seq no type 10 1
+      name path string 0 0
+      seq no type 10 1
+        name omode int 0 0
+        seq no type 10 1
+          const (438) int 6 0
+ecom: 
+call ref Sys->FD 10 2
+  -> fn(s: string, mode: int, perm: int): ref Sys->FD 12 1
+    name sys Sys 1 0
+    name create nothing 11 1
+  seq no type 10 1
+    name path string 0 0
+    seq no type 10 1
+      name omode int 0 0
+      seq no type 10 1
+        const (438) int 6 0
+ecom to: 
+name rfd ref Sys->FD 0 0
+generate desc for big
+ecom: 
+name path string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b148 big 0 0
+    const (64) int 6 0
+ecom: 
+name omode int 0 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b148 big 0 0
+    const (72) int 6 0
+ecom: 
+const (438) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b148 big 0 0
+    const (76) int 6 0
+ecom: 
+= string 10 2
+  name err string 0 0
+  call string 10 2
+    -> fn(s: string, *): string 12 1
+      name sys Sys 1 0
+      name sprint fn(s: string, *): string 11 1
+    seq no type 10 1
+      const %r string 1 0
+ecom: 
+call string 10 2
+  -> fn(s: string, *): string 12 1
+    name sys Sys 1 0
+    name sprint fn(s: string, *): string 11 1
+  seq no type 10 1
+    const %r string 1 0
+ecom to: 
+name err string 0 0
+generate desc for Sys->sprint
+descmap offset 0
+descmap s type string offset 64 (d->offset=64 start=0) returns 64
+generate desc for big
+ecom: 
+const %r string 1 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b148 big 0 0
+    const (64) int 6 0
+ecom: 
+= ref Sys->FD 10 2
+  name rfd ref Sys->FD 0 0
+  call ref Sys->FD 10 2
+    -> fn(s: string, mode: int): ref Sys->FD 12 1
+      name sys Sys 1 0
+      name open nothing 11 1
+    seq no type 10 1
+      name path string 0 0
+      seq no type 10 1
+        name omode int 0 0
+ecom: 
+call ref Sys->FD 10 2
+  -> fn(s: string, mode: int): ref Sys->FD 12 1
+    name sys Sys 1 0
+    name open nothing 11 1
+  seq no type 10 1
+    name path string 0 0
+    seq no type 10 1
+      name omode int 0 0
+ecom to: 
+name rfd ref Sys->FD 0 0
+generate desc for big
+ecom: 
+name path string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b148 big 0 0
+    const (64) int 6 0
+ecom: 
+name omode int 0 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b148 big 0 0
+    const (72) int 6 0
+ecom: 
+= string 10 2
+  name nerr string 0 0
+  call string 10 2
+    -> fn(s: string, *): string 12 1
+      name sys Sys 1 0
+      name sprint fn(s: string, *): string 11 1
+    seq no type 10 1
+      const %r string 1 0
+ecom: 
+call string 10 2
+  -> fn(s: string, *): string 12 1
+    name sys Sys 1 0
+    name sprint fn(s: string, *): string 11 1
+  seq no type 10 1
+    const %r string 1 0
+ecom to: 
+name nerr string 0 0
+generate desc for Sys->sprint
+descmap offset 0
+descmap s type string offset 64 (d->offset=64 start=0) returns 64
+generate desc for big
+ecom: 
+const %r string 1 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b148 big 0 0
+    const (64) int 6 0
+eacom: 
+call int 10 2
+  name nonexistent fn(e: string): int 11 1
+  seq no type 10 1
+    name nerr string 0 0
+ecom: 
+call int 10 2
+  name nonexistent fn(e: string): int 11 1
+  seq no type 10 1
+    name nerr string 0 0
+ecom to: 
+name .t146 int 0 0
+generate desc for big
+ecom: 
+name nerr string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b148 big 0 0
+    const (64) int 6 0
+ecom: 
+= string 10 1
+  name err string 0 0
+  name nerr string 0 0
+ecom: 
+name nerr string 0 0
+ecom to: 
+name err string 0 0
+ecom: 
+= string 10 1
+  name nerr string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name nerr string 0 0
+ecom: 
+= string 10 2
+  name err string 0 0
+  call string 10 2
+    -> fn(s: string, *): string 12 1
+      name sys Sys 1 0
+      name sprint fn(s: string, *): string 11 1
+    seq no type 10 1
+      const %r string 1 0
+ecom: 
+call string 10 2
+  -> fn(s: string, *): string 12 1
+    name sys Sys 1 0
+    name sprint fn(s: string, *): string 11 1
+  seq no type 10 1
+    const %r string 1 0
+ecom to: 
+name err string 0 0
+generate desc for Sys->sprint
+descmap offset 0
+descmap s type string offset 64 (d->offset=64 start=0) returns 64
+generate desc for big
+ecom: 
+const %r string 1 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b148 big 0 0
+    const (64) int 6 0
+ecom: 
+call no type 10 2
+  name fail fn(ctxt: self ref Context, ename: string, err: string) 11 1
+  seq nothing 10 2
+    name ctxt ref Context 0 0
+    seq no type 10 2
+      const bad redir string 1 0
+      seq no type 10 2
+        call string 10 2
+          -> fn(s: string, nil: string, nil: string, *): string 12 1
+            name sys Sys 1 0
+            name sprint nothing 11 1
+          seq no type 10 1
+            const sh: cannot open %s: %s string 1 0
+            seq no type 10 1
+              name path string 0 0
+              seq no type 10 1
+                name err string 0 0
+generate desc for big
+ecom: 
+call string 10 2
+  -> fn(s: string, nil: string, nil: string, *): string 12 1
+    name sys Sys 1 0
+    name sprint nothing 11 1
+  seq no type 10 1
+    const sh: cannot open %s: %s string 1 0
+    seq no type 10 1
+      name path string 0 0
+      seq no type 10 1
+        name err string 0 0
+ecom to: 
+name .t147 string 0 0
+generate desc for Sys->sprint
+descmap offset 0
+descmap s type string offset 64 (d->offset=64 start=0) returns 64
+descmap type string offset 72 returns 72
+descmap type string offset 80 returns 80
+generate desc for big
+ecom: 
+const sh: cannot open %s: %s string 1 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b145 big 0 0
+    const (64) int 6 0
+ecom: 
+name path string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b145 big 0 0
+    const (72) int 6 0
+ecom: 
+name err string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b145 big 0 0
+    const (80) int 6 0
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b148 big 0 0
+    const (64) int 6 0
+ecom: 
+const bad redir string 1 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b148 big 0 0
+    const (72) int 6 0
+ecom: 
+name .t147 string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b148 big 0 0
+    const (80) int 6 0
+ecom: 
+= string 10 1
+  name .t147 string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name .t147 string 0 0
+ecom: 
+used big 10 2
+  call big 10 2
+    -> fn(fd: ref Sys->FD, off: big, start: int): big 12 1
+      name sys Sys 1 0
+      name seek nothing 11 1
+    seq no type 10 1
+      name rfd ref Sys->FD 0 0
+      seq no type 10 1
+        const .B.00000000.       0 (0) big 1 0
+        seq no type 10 1
+          const SEEKEND (2) int 6 0
+generate desc for big
+ecom: 
+call big 10 2
+  -> fn(fd: ref Sys->FD, off: big, start: int): big 12 1
+    name sys Sys 1 0
+    name seek nothing 11 1
+  seq no type 10 1
+    name rfd ref Sys->FD 0 0
+    seq no type 10 1
+      const .B.00000000.       0 (0) big 1 0
+      seq no type 10 1
+        const SEEKEND (2) int 6 0
+ecom to: 
+name .b148 big 0 0
+generate desc for big
+ecom: 
+name rfd ref Sys->FD 0 0
+ecom to: 
+* ref Sys->FD 8 0
+  + int 15 0
+    name .b145 big 0 0
+    const (64) int 6 0
+ecom: 
+const .B.00000000.       0 (0) big 1 0
+ecom to: 
+* big 8 0
+  + int 15 0
+    name .b145 big 0 0
+    const (72) int 6 0
+ecom: 
+const SEEKEND (2) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b145 big 0 0
+    const (80) int 6 0
+ecom: 
+= string 10 1
+  name err string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name err string 0 0
+ecom: 
+used int 10 2
+  call int 10 2
+    name dup fn(ctxt: ref Context, fd1: int, fd2: int): int 11 1
+    seq no type 10 1
+      name ctxt ref Context 0 0
+      seq no type 10 1
+        * int 8 0
+          name rfd ref Sys->FD 0 0
+        seq no type 10 1
+          name fd1 int 0 0
+ecom: 
+call int 10 2
+  name dup fn(ctxt: ref Context, fd1: int, fd2: int): int 11 1
+  seq no type 10 1
+    name ctxt ref Context 0 0
+    seq no type 10 1
+      * int 8 0
+        name rfd ref Sys->FD 0 0
+      seq no type 10 1
+        name fd1 int 0 0
+ecom to: 
+name .t146 int 0 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b148 big 0 0
+    const (64) int 6 0
+ecom: 
+* int 8 0
+  name rfd ref Sys->FD 0 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b148 big 0 0
+    const (72) int 6 0
+ecom: 
+name fd1 int 0 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b148 big 0 0
+    const (76) int 6 0
+ecom: 
+= list of int 10 1
+  name keepfds list of int 0 0
+  :: list of int 10 1
+    name fd1 int 0 0
+    name keepfds list of int 0 0
+ecom: 
+:: list of int 10 1
+  name fd1 int 0 0
+  name keepfds list of int 0 0
+ecom to: 
+name keepfds list of int 0 0
+ecom: 
+= ref Sys->FD 10 1
+  * ref Sys->FD 0 0
+    adr int 13 1
+      name rfd Redirword 0 0
+  name nil ref Sys->FD 1 0
+ecom: 
+name nil ref Sys->FD 1 0
+ecom to: 
+* ref Sys->FD 0 0
+  adr int 13 1
+    name rfd Redirword 0 0
+ecom: 
+= string 10 1
+  * string 0 0
+    + int 13 1
+      adr int 13 1
+        name rfd Redirword 0 0
+      const w (8) int 6 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+* string 0 0
+  + int 13 1
+    adr int 13 1
+      name rfd Redirword 0 0
+    const w (8) int 6 0
+ecom: 
+= string 10 1
+  name path string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name path string 0 0
+ecom: 
+= list of Redirword 10 1
+  name rl list of Redirword 0 0
+  tl list of Redirword 10 1
+    name rl list of Redirword 0 0
+ecom: 
+tl list of Redirword 10 1
+  name rl list of Redirword 0 0
+ecom to: 
+name rl list of Redirword 0 0
+ecom: 
+= list of int 10 1
+  * list of int 8 0
+    + int 15 1
+      name ctxt ref Context 0 0
+      const keepfds (24) int 6 0
+  name keepfds list of int 0 0
+ecom: 
+name keepfds list of int 0 0
+ecom to: 
+* list of int 8 0
+  + int 15 1
+    name ctxt ref Context 0 0
+    const keepfds (24) int 6 0
+ecom: 
+:: list of int 10 1
+  * int 10 1
+    * ref Sys->FD 8 0
+      + int 15 1
+        name ctxt ref Context 0 0
+        const waitfd (8) int 6 0
+  name keepfds list of int 0 0
+ecom to: 
+* list of int 8 0
+  name .ret int 0 0
+eacom: 
+* int 10 1
+  * ref Sys->FD 8 0
+    + int 15 1
+      name ctxt ref Context 0 0
+      const waitfd (8) int 6 0
+generate desc for ref Sys->FD
+ecom: 
+* ref Sys->FD 8 0
+  + int 15 1
+    name ctxt ref Context 0 0
+    const waitfd (8) int 6 0
+ecom to: 
+name .b149 ref Sys->FD 0 0
+ecom: 
+name keepfds list of int 0 0
+ecom to: 
+name .t147 list of int 0 0
+ecom: 
+= ref Sys->FD 10 1
+  name .b149 ref Sys->FD 0 0
+  name nil ref Sys->FD 1 0
+ecom: 
+name nil ref Sys->FD 1 0
+ecom to: 
+name .b149 ref Sys->FD 0 0
+ecom: 
+= list of int 10 1
+  name .t147 list of int 0 0
+  name nil list of int 1 0
+ecom: 
+name nil list of int 1 0
+ecom to: 
+name .t147 list of int 0 0
+fn: doredirs
+64: argument ctxt ref Context ref 8
+72: argument redirs ref Redirlist ref 3
+80: local append int ref 2
+84: local omode int ref 6
+88: local .t146 int ref 1
+96: local .b148 big ref 15
+104: local rfd ref Sys->FD ref 13
+112: local path string ref 8
+120: local mode int ref 5
+124: local fd1 int ref 9
+128: local fd2 int ref 3
+136: local err string ref 10
+144: local keepfds list of int ref 7
+152: local .b145 big ref 5
+160: local rl list of Redirword ref 5
+168: local nerr string ref 3
+176: local .b149 ref Sys->FD ref 1
+184: local .t147 string ref 1
+generate desc for doredirs
+descmap offset 0
+descmap ctxt type ref Context offset 64 (d->offset=64 start=0) returns 64
+descmap redirs type ref Redirlist offset 72 (d->offset=72 start=0) returns 72
+descmap append type int offset 80 (d->offset=80 start=0) returns -1
+descmap omode type int offset 84 (d->offset=84 start=0) returns -1
+descmap .t146 type int offset 88 (d->offset=88 start=0) returns -1
+descmap .b148 type big offset 96 (d->offset=96 start=0) returns -1
+descmap rfd type ref Sys->FD offset 104 (d->offset=104 start=0) returns 104
+descmap path type string offset 112 (d->offset=112 start=0) returns 112
+descmap mode type int offset 120 (d->offset=120 start=0) returns -1
+descmap fd1 type int offset 124 (d->offset=124 start=0) returns -1
+descmap fd2 type int offset 128 (d->offset=128 start=0) returns -1
+descmap err type string offset 136 (d->offset=136 start=0) returns 136
+descmap keepfds type list of int offset 144 (d->offset=144 start=0) returns 144
+descmap .b145 type big offset 152 (d->offset=152 start=0) returns -1
+descmap rl type list of Redirword offset 160 (d->offset=160 start=0) returns 160
+descmap nerr type string offset 168 (d->offset=168 start=0) returns 168
+descmap .b149 type ref Sys->FD offset 176 (d->offset=176 start=0) returns 176
+descmap .t147 type string offset 184 (d->offset=184 start=0) returns 184
+fncom: waitfd 5 419468
+ecom: 
+= string 10 2
+  name wf string 0 0
+  + string 10 2
+    cast string 10 2
+      call int 10 2
+        -> fn(flags: int, movefd: list of int): int 12 1
+          name sys Sys 1 0
+          name pctl nothing 11 1
+        seq no type 10 1
+          const (0) int 6 0
+          seq no type 10 1
+            name nil list of int 1 0
+    const /wait string 1 0
+ecom: 
++ string 10 2
+  cast string 10 2
+    call int 10 2
+      -> fn(flags: int, movefd: list of int): int 12 1
+        name sys Sys 1 0
+        name pctl nothing 11 1
+      seq no type 10 1
+        const (0) int 6 0
+        seq no type 10 1
+          name nil list of int 1 0
+  const /wait string 1 0
+ecom to: 
+name wf string 0 0
+ecom: 
+cast string 10 2
+  call int 10 2
+    -> fn(flags: int, movefd: list of int): int 12 1
+      name sys Sys 1 0
+      name pctl nothing 11 1
+    seq no type 10 1
+      const (0) int 6 0
+      seq no type 10 1
+        name nil list of int 1 0
+ecom to: 
+name .t150 string 0 0
+eacom: 
+call int 10 2
+  -> fn(flags: int, movefd: list of int): int 12 1
+    name sys Sys 1 0
+    name pctl nothing 11 1
+  seq no type 10 1
+    const (0) int 6 0
+    seq no type 10 1
+      name nil list of int 1 0
+ecom: 
+call int 10 2
+  -> fn(flags: int, movefd: list of int): int 12 1
+    name sys Sys 1 0
+    name pctl nothing 11 1
+  seq no type 10 1
+    const (0) int 6 0
+    seq no type 10 1
+      name nil list of int 1 0
+ecom to: 
+name .t151 int 0 0
+generate desc for big
+ecom: 
+const (0) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b152 big 0 0
+    const (64) int 6 0
+ecom: 
+name nil list of int 1 0
+ecom to: 
+* list of int 8 0
+  + int 15 0
+    name .b152 big 0 0
+    const (72) int 6 0
+ecom: 
+= string 10 1
+  name .t150 string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name .t150 string 0 0
+ecom: 
+= ref Sys->FD 10 2
+  name waitfd ref Sys->FD 0 0
+  call ref Sys->FD 10 2
+    -> fn(s: string, mode: int): ref Sys->FD 12 1
+      name sys Sys 1 0
+      name open nothing 11 1
+    seq no type 10 2
+      + string 10 1
+        const #p/ string 1 0
+        name wf string 0 0
+      seq no type 10 1
+        const OREAD (0) int 6 0
+ecom: 
+call ref Sys->FD 10 2
+  -> fn(s: string, mode: int): ref Sys->FD 12 1
+    name sys Sys 1 0
+    name open nothing 11 1
+  seq no type 10 2
+    + string 10 1
+      const #p/ string 1 0
+      name wf string 0 0
+    seq no type 10 1
+      const OREAD (0) int 6 0
+ecom to: 
+name waitfd ref Sys->FD 0 0
+generate desc for big
+ecom: 
++ string 10 1
+  const #p/ string 1 0
+  name wf string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b152 big 0 0
+    const (64) int 6 0
+ecom: 
+const OREAD (0) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b152 big 0 0
+    const (72) int 6 0
+ecom: 
+= ref Sys->FD 10 2
+  name waitfd ref Sys->FD 0 0
+  call ref Sys->FD 10 2
+    -> fn(s: string, mode: int): ref Sys->FD 12 1
+      name sys Sys 1 0
+      name open nothing 11 1
+    seq no type 10 2
+      + string 10 1
+        const /prog/ string 1 0
+        name wf string 0 0
+      seq no type 10 1
+        const OREAD (0) int 6 0
+ecom: 
+call ref Sys->FD 10 2
+  -> fn(s: string, mode: int): ref Sys->FD 12 1
+    name sys Sys 1 0
+    name open nothing 11 1
+  seq no type 10 2
+    + string 10 1
+      const /prog/ string 1 0
+      name wf string 0 0
+    seq no type 10 1
+      const OREAD (0) int 6 0
+ecom to: 
+name waitfd ref Sys->FD 0 0
+generate desc for big
+ecom: 
++ string 10 1
+  const /prog/ string 1 0
+  name wf string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b152 big 0 0
+    const (64) int 6 0
+ecom: 
+const OREAD (0) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b152 big 0 0
+    const (72) int 6 0
+ecom: 
+call no type 10 2
+  name panic fn(s: string) 11 1
+  seq no type 10 2
+    call string 10 2
+      -> fn(s: string, *): string 12 1
+        name sys Sys 1 0
+        name sprint nothing 11 1
+      seq no type 10 1
+        const cannot open wait file: %r string 1 0
+generate desc for big
+ecom: 
+call string 10 2
+  -> fn(s: string, *): string 12 1
+    name sys Sys 1 0
+    name sprint nothing 11 1
+  seq no type 10 1
+    const cannot open wait file: %r string 1 0
+ecom to: 
+name .t150 string 0 0
+generate desc for Sys->sprint
+descmap offset 0
+descmap s type string offset 64 (d->offset=64 start=0) returns 64
+generate desc for big
+ecom: 
+const cannot open wait file: %r string 1 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b153 big 0 0
+    const (64) int 6 0
+ecom: 
+name .t150 string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b152 big 0 0
+    const (64) int 6 0
+ecom: 
+= string 10 1
+  name .t150 string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name .t150 string 0 0
+ecom: 
+name waitfd ref Sys->FD 0 0
+ecom to: 
+* ref Sys->FD 8 0
+  name .ret int 0 0
+fn: waitfd
+64: local .t151 int ref 1
+72: local waitfd ref Sys->FD ref 5
+80: local .b152 big ref 4
+88: local wf string ref 3
+96: local .b153 big ref 1
+104: local .t150 string ref 1
+generate desc for waitfd
+descmap offset 0
+descmap .t151 type int offset 64 (d->offset=64 start=0) returns -1
+descmap waitfd type ref Sys->FD offset 72 (d->offset=72 start=0) returns 72
+descmap .b152 type big offset 80 (d->offset=80 start=0) returns -1
+descmap wf type string offset 88 (d->offset=88 start=0) returns 88
+descmap .b153 type big offset 96 (d->offset=96 start=0) returns -1
+descmap .t150 type string offset 104 (d->offset=104 start=0) returns 104
+fncom: waitfor 6 419528
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* polymorphic type 8 0
+  name .ret int 0 0
+ecom: 
+= array of string 10 1
+  name status array of string 0 0
+  array array of string 10 1
+    len int 10 1
+      name pids list of int 0 0
+ecom: 
+array array of string 10 1
+  len int 10 1
+    name pids list of int 0 0
+ecom to: 
+name status array of string 0 0
+eacom: 
+len int 10 1
+  name pids list of int 0 0
+ecom: 
+len int 10 1
+  name pids list of int 0 0
+ecom to: 
+name .t154 int 0 0
+generate desc for string
+ecom: 
+= int 10 1
+  name wcount int 0 0
+  len int 10 1
+    name status array of string 0 0
+ecom: 
+len int 10 1
+  name status array of string 0 0
+ecom to: 
+name wcount int 0 0
+ecom: 
+= array of byte 10 1
+  name buf array of byte 0 0
+  array array of byte 10 1
+    const WAITLEN (192) int 6 0
+ecom: 
+array array of byte 10 1
+  const WAITLEN (192) int 6 0
+ecom to: 
+name buf array of byte 0 0
+generate desc for byte
+ecom: 
+= int 10 1
+  name onebad int 0 0
+  const (0) int 6 0
+ecom: 
+const (0) int 6 0
+ecom to: 
+name onebad int 0 0
+ecom: 
+= int 10 2
+  name n int 0 0
+  call int 10 2
+    -> fn(fd: ref Sys->FD, buf: array of byte, n: int): int 12 1
+      name sys Sys 1 0
+      name read nothing 11 1
+    seq no type 10 1
+      * ref Sys->FD 8 0
+        + int 15 1
+          name ctxt ref Context 0 0
+          const waitfd (8) int 6 0
+      seq no type 10 1
+        name buf array of byte 0 0
+        seq no type 10 1
+          len int 10 1
+            name buf array of byte 0 0
+ecom: 
+call int 10 2
+  -> fn(fd: ref Sys->FD, buf: array of byte, n: int): int 12 1
+    name sys Sys 1 0
+    name read nothing 11 1
+  seq no type 10 1
+    * ref Sys->FD 8 0
+      + int 15 1
+        name ctxt ref Context 0 0
+        const waitfd (8) int 6 0
+    seq no type 10 1
+      name buf array of byte 0 0
+      seq no type 10 1
+        len int 10 1
+          name buf array of byte 0 0
+ecom to: 
+name n int 0 0
+generate desc for big
+ecom: 
+* ref Sys->FD 8 0
+  + int 15 1
+    name ctxt ref Context 0 0
+    const waitfd (8) int 6 0
+ecom to: 
+* ref Sys->FD 8 0
+  + int 15 0
+    name .b155 big 0 0
+    const (64) int 6 0
+ecom: 
+name buf array of byte 0 0
+ecom to: 
+* array of byte 8 0
+  + int 15 0
+    name .b155 big 0 0
+    const (72) int 6 0
+ecom: 
+len int 10 1
+  name buf array of byte 0 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b155 big 0 0
+    const (80) int 6 0
+ecom: 
+call no type 10 2
+  name panic fn(s: string) 11 1
+  seq no type 10 2
+    call string 10 2
+      -> fn(s: string, *): string 12 1
+        name sys Sys 1 0
+        name sprint nothing 11 1
+      seq no type 10 1
+        const error on wait read: %r string 1 0
+generate desc for big
+ecom: 
+call string 10 2
+  -> fn(s: string, *): string 12 1
+    name sys Sys 1 0
+    name sprint nothing 11 1
+  seq no type 10 1
+    const error on wait read: %r string 1 0
+ecom to: 
+name .t156 string 0 0
+generate desc for Sys->sprint
+descmap offset 0
+descmap s type string offset 64 (d->offset=64 start=0) returns 64
+generate desc for big
+ecom: 
+const error on wait read: %r string 1 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b157 big 0 0
+    const (64) int 6 0
+ecom: 
+name .t156 string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b155 big 0 0
+    const (64) int 6 0
+ecom: 
+= string 10 1
+  name .t156 string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name .t156 string 0 0
+ecom: 
+= (int, string, string) 10 2
+  tuple (int, string, string) 10 1
+    seq nothing 10 1
+      name who int 0 0
+      seq nothing 10 1
+        name line string 0 0
+        seq nothing 10 1
+          name s string 0 0
+  call (int, string, string) 10 2
+    name parsewaitstatus fn(ctxt: ref Context, status: string): (int, string, string) 11 1
+    seq no type 10 1
+      name ctxt ref Context 0 0
+      seq no type 10 1
+        cast string 10 1
+          slice array of byte 10 1
+            name buf array of byte 0 0
+            seq no type 10 1
+              const (0) int 6 0
+              name n int 0 0
+ecom: 
+call (int, string, string) 10 2
+  name parsewaitstatus fn(ctxt: ref Context, status: string): (int, string, string) 11 1
+  seq no type 10 1
+    name ctxt ref Context 0 0
+    seq no type 10 1
+      cast string 10 1
+        slice array of byte 10 1
+          name buf array of byte 0 0
+          seq no type 10 1
+            const (0) int 6 0
+            name n int 0 0
+ecom to: 
+name who (int, string, string) 0 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b157 big 0 0
+    const (64) int 6 0
+ecom: 
+cast string 10 1
+  slice array of byte 10 1
+    name buf array of byte 0 0
+    seq no type 10 1
+      const (0) int 6 0
+      name n int 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b157 big 0 0
+    const (72) int 6 0
+eacom: 
+slice array of byte 10 1
+  name buf array of byte 0 0
+  seq no type 10 1
+    const (0) int 6 0
+    name n int 0 0
+ecom: 
+slice array of byte 10 1
+  name buf array of byte 0 0
+  seq no type 10 1
+    const (0) int 6 0
+    name n int 0 0
+ecom to: 
+name .t156 array of byte 0 0
+ecom: 
+name buf array of byte 0 0
+ecom to: 
+name .t156 array of byte 0 0
+ecom: 
+= array of byte 10 1
+  name .t156 array of byte 0 0
+  name nil array of byte 1 0
+ecom: 
+name nil array of byte 1 0
+ecom to: 
+name .t156 array of byte 0 0
+eacom: 
+len int 10 1
+  name s string 0 0
+ecom: 
+len int 10 1
+  name s string 0 0
+ecom to: 
+name .t154 int 0 0
+eacom: 
+slice string 10 1
+  name s string 0 0
+  seq no type 10 1
+    const (0) int 6 0
+    const (5) int 6 0
+ecom: 
+slice string 10 1
+  name s string 0 0
+  seq no type 10 1
+    const (0) int 6 0
+    const (5) int 6 0
+ecom to: 
+name .t156 string 0 0
+ecom: 
+name s string 0 0
+ecom to: 
+name .t156 string 0 0
+ecom: 
+= string 10 1
+  name .t156 string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name .t156 string 0 0
+ecom: 
+= string 10 2
+  name s string 0 0
+  call string 10 2
+    name failurestatus fn(e: string): string 11 1
+    seq no type 10 1
+      name s string 0 0
+ecom: 
+call string 10 2
+  name failurestatus fn(e: string): string 11 1
+  seq no type 10 1
+    name s string 0 0
+ecom to: 
+name s string 0 0
+generate desc for big
+ecom: 
+name s string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b157 big 0 0
+    const (64) int 6 0
+ecom: 
+call no type 10 2
+  name diagnostic fn(ctxt: ref Context, s: string) 11 1
+  seq no type 10 1
+    name ctxt ref Context 0 0
+    seq no type 10 1
+      name line string 0 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b157 big 0 0
+    const (64) int 6 0
+ecom: 
+name line string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b157 big 0 0
+    const (72) int 6 0
+ecom: 
+= (int, list of int) 10 2
+  tuple (int, list of int) 10 2
+    seq nothing 10 1
+      name i int 0 0
+      seq nothing 10 1
+        name pl list of int 0 0
+    tuple (int, string, string) 10 1
+      seq nothing 10 1
+        name who (int, string, string) 0 0
+        seq nothing 10 1
+          name line string 0 0
+          seq nothing 10 1
+            name s string 0 0
+  tuple (int, list of int) 10 1
+    seq no type 10 1
+      const (0) int 6 0
+      seq no type 10 1
+        name pids list of int 0 0
+ecom: 
+tuple (int, list of int) 10 1
+  seq no type 10 1
+    const (0) int 6 0
+    seq no type 10 1
+      name pids list of int 0 0
+ecom to: 
+name i (int, list of int) 0 0
+ecom: 
+const (0) int 6 0
+ecom to: 
+* int 0 0
+  + int 13 1
+    adr int 13 1
+      name i (int, list of int) 0 0
+    const (0) int 6 0
+ecom: 
+name pids list of int 0 0
+ecom to: 
+* list of int 0 0
+  + int 13 1
+    adr int 13 1
+      name i (int, list of int) 0 0
+    const (8) int 6 0
+eacom: 
+hd int 10 1
+  name pl list of int 0 0
+ecom: 
+hd int 10 1
+  name pl list of int 0 0
+ecom to: 
+name .t154 int 0 0
+ecom: 
+= (int, list of int) 10 2
+  tuple (int, list of int) 10 1
+    seq no type 10 1
+      name i int 0 0
+      seq no type 10 1
+        name pl list of int 0 0
+  tuple (int, list of int) 10 2
+    seq no type 10 2
+      + int 15 1
+        name i int 0 0
+        const (1) int 6 0
+      seq no type 10 1
+        tl list of int 10 1
+          name pl list of int 0 0
+generate desc for (int, list of int)
+descmap adt offset 0
+descmap offset 0
+descmap t0 type int offset 0 (d->offset=0 start=0) returns -1
+descmap t1 type list of int offset 8 (d->offset=8 start=0) returns 8
+generate desc for (int, list of int)
+	desc	$-1,16,"40"
+ecom: 
+tuple (int, list of int) 10 2
+  seq no type 10 2
+    + int 15 1
+      name i int 0 0
+      const (1) int 6 0
+    seq no type 10 1
+      tl list of int 10 1
+        name pl list of int 0 0
+ecom to: 
+name .b158 (int, list of int) 0 0
+ecom: 
++ int 15 1
+  name i int 0 0
+  const (1) int 6 0
+ecom to: 
+* int 0 0
+  + int 13 1
+    adr int 13 1
+      name .b158 (int, list of int) 0 0
+    const (0) int 6 0
+ecom: 
+tl list of int 10 1
+  name pl list of int 0 0
+ecom to: 
+* list of int 0 0
+  + int 13 1
+    adr int 13 1
+      name .b158 (int, list of int) 0 0
+    const (8) int 6 0
+ecom: 
+= list of int 10 1
+  * list of int 0 0
+    + int 13 1
+      adr int 13 1
+        name .b158 (int, list of int) 0 0
+      const t1 (8) int 6 0
+  name nil list of int 1 0
+ecom: 
+name nil list of int 1 0
+ecom to: 
+* list of int 0 0
+  + int 13 1
+    adr int 13 1
+      name .b158 (int, list of int) 0 0
+    const t1 (8) int 6 0
+eacom: 
+len int 10 1
+  name status array of string 0 0
+ecom: 
+len int 10 1
+  name status array of string 0 0
+ecom to: 
+name .t154 int 0 0
+eacom: 
+* string 10 1
+  indx big 10 1
+    name status array of string 0 0
+    name i int 0 0
+generate desc for big
+ecom: 
+indx big 10 1
+  name status array of string 0 0
+  name i int 0 0
+ecom to: 
+name .b157 big 0 0
+ecom: 
++= int 10 1
+  name onebad int 0 0
+  != int 10 1
+    name s string 0 0
+    name nil string 1 0
+eacom: 
+!= int 10 1
+  name s string 0 0
+  name nil string 1 0
+ecom: 
+!= int 10 1
+  name s string 0 0
+  name nil string 1 0
+ecom to: 
+name .t154 int 0 0
+ecom: 
+= string 10 1
+  * string 10 1
+    indx big 10 1
+      name status array of string 0 0
+      name i int 0 0
+  name s string 0 0
+eacom: 
+* string 10 1
+  indx big 10 1
+    name status array of string 0 0
+    name i int 0 0
+generate desc for big
+ecom: 
+indx big 10 1
+  name status array of string 0 0
+  name i int 0 0
+ecom to: 
+name .b157 big 0 0
+ecom: 
+name s string 0 0
+ecom to: 
+* string 8 1
+  name .b157 big 0 0
+eacom: 
+-- int 10 1
+  name wcount int 0 0
+  const (1) int 6 0
+ecom: 
+-- int 10 1
+  name wcount int 0 0
+  const (1) int 6 0
+ecom to: 
+name .t154 int 0 0
+ecom: 
+= list of int 10 1
+  * list of int 0 0
+    + int 13 1
+      adr int 13 1
+        name i (int, list of int) 0 0
+      const t1 (8) int 6 0
+  name nil list of int 1 0
+ecom: 
+name nil list of int 1 0
+ecom to: 
+* list of int 0 0
+  + int 13 1
+    adr int 13 1
+      name i (int, list of int) 0 0
+    const t1 (8) int 6 0
+ecom: 
+= list of int 10 1
+  name pl list of int 0 0
+  name nil list of int 1 0
+ecom: 
+name nil list of int 1 0
+ecom to: 
+name pl list of int 0 0
+ecom: 
+= string 10 1
+  * string 0 0
+    + int 13 1
+      adr int 13 1
+        name who (int, string, string) 0 0
+      const t1 (8) int 6 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+* string 0 0
+  + int 13 1
+    adr int 13 1
+      name who (int, string, string) 0 0
+    const t1 (8) int 6 0
+ecom: 
+= string 10 1
+  * string 0 0
+    + int 13 1
+      adr int 13 1
+        name who (int, string, string) 0 0
+      const t2 (16) int 6 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+* string 0 0
+  + int 13 1
+    adr int 13 1
+      name who (int, string, string) 0 0
+    const t2 (16) int 6 0
+ecom: 
+= string 10 1
+  name line string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name line string 0 0
+ecom: 
+= string 10 1
+  name s string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name s string 0 0
+ecom: 
+= list of int 10 1
+  * list of int 0 0
+    + int 13 1
+      adr int 13 1
+        name i (int, list of int) 0 0
+      const t1 (8) int 6 0
+  name nil list of int 1 0
+ecom: 
+name nil list of int 1 0
+ecom to: 
+* list of int 0 0
+  + int 13 1
+    adr int 13 1
+      name i (int, list of int) 0 0
+    const t1 (8) int 6 0
+ecom: 
+= list of int 10 1
+  name pl list of int 0 0
+  name nil list of int 1 0
+ecom: 
+name nil list of int 1 0
+ecom to: 
+name pl list of int 0 0
+ecom: 
+= string 10 1
+  * string 0 0
+    + int 13 1
+      adr int 13 1
+        name who (int, string, string) 0 0
+      const t1 (8) int 6 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+* string 0 0
+  + int 13 1
+    adr int 13 1
+      name who (int, string, string) 0 0
+    const t1 (8) int 6 0
+ecom: 
+= string 10 1
+  * string 0 0
+    + int 13 1
+      adr int 13 1
+        name who (int, string, string) 0 0
+      const t2 (16) int 6 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+* string 0 0
+  + int 13 1
+    adr int 13 1
+      name who (int, string, string) 0 0
+    const t2 (16) int 6 0
+ecom: 
+= string 10 1
+  name line string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name line string 0 0
+ecom: 
+= string 10 1
+  name s string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name s string 0 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* polymorphic type 8 0
+  name .ret int 0 0
+ecom: 
+= string 10 1
+  name r string 0 0
+  * string 10 1
+    indx big 10 1
+      name status array of string 0 0
+      - int 10 1
+        len int 10 1
+          name status array of string 0 0
+        const (1) int 6 0
+ecom: 
+* string 10 1
+  indx big 10 1
+    name status array of string 0 0
+    - int 10 1
+      len int 10 1
+        name status array of string 0 0
+      const (1) int 6 0
+ecom to: 
+name r string 0 0
+eacom: 
+* string 10 1
+  indx big 10 1
+    name status array of string 0 0
+    - int 10 1
+      len int 10 1
+        name status array of string 0 0
+      const (1) int 6 0
+generate desc for big
+ecom: 
+indx big 10 1
+  name status array of string 0 0
+  - int 10 1
+    len int 10 1
+      name status array of string 0 0
+    const (1) int 6 0
+ecom to: 
+name .b157 big 0 0
+eacom: 
+- int 10 1
+  len int 10 1
+    name status array of string 0 0
+  const (1) int 6 0
+ecom: 
+- int 10 1
+  len int 10 1
+    name status array of string 0 0
+  const (1) int 6 0
+ecom to: 
+name .t154 int 0 0
+ecom: 
+len int 10 1
+  name status array of string 0 0
+ecom to: 
+name .t154 int 0 0
+ecom: 
+= int 10 1
+  name i int 0 0
+  - int 10 1
+    len int 10 1
+      name status array of string 0 0
+    const (2) int 6 0
+ecom: 
+- int 10 1
+  len int 10 1
+    name status array of string 0 0
+  const (2) int 6 0
+ecom to: 
+name i int 0 0
+ecom: 
+len int 10 1
+  name status array of string 0 0
+ecom to: 
+name .t154 int 0 0
+ecom: 
++= string 10 1
+  name r string 0 0
+  + string 10 1
+    const | string 1 0
+    * string 10 1
+      indx big 10 1
+        name status array of string 0 0
+        name i int 0 0
+eacom: 
++ string 10 1
+  const | string 1 0
+  * string 10 1
+    indx big 10 1
+      name status array of string 0 0
+      name i int 0 0
+ecom: 
++ string 10 1
+  const | string 1 0
+  * string 10 1
+    indx big 10 1
+      name status array of string 0 0
+      name i int 0 0
+ecom to: 
+name .t156 string 0 0
+eacom: 
+* string 10 1
+  indx big 10 1
+    name status array of string 0 0
+    name i int 0 0
+generate desc for big
+ecom: 
+indx big 10 1
+  name status array of string 0 0
+  name i int 0 0
+ecom to: 
+name .b157 big 0 0
+ecom: 
+= string 10 1
+  name .t156 string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name .t156 string 0 0
+ecom: 
+-- int 10 1
+  name i int 0 0
+  const (1) int 6 0
+ecom: 
+name r string 0 0
+ecom to: 
+* string 8 0
+  name .ret int 0 0
+fn: waitfor
+64: argument ctxt ref Context ref 3
+72: argument pids list of int ref 3
+80: local i int ref 6
+88: local pl list of int ref 5
+96: local n int ref 3
+100: local onebad int ref 3
+104: local wcount int ref 2
+112: local who int ref 2
+120: local line string ref 2
+128: local s string ref 9
+136: local .t154 int ref 1
+144: local status array of string ref 9
+152: local .b157 big ref 8
+160: local buf array of byte ref 4
+168: local r string ref 3
+176: local .b155 big ref 2
+184: local .t156 string ref 1
+192: local .b158 (int, list of int) ref 1
+96: local i int ref 4
+generate desc for waitfor
+descmap offset 0
+descmap ctxt type ref Context offset 64 (d->offset=64 start=0) returns 64
+descmap pids type list of int offset 72 (d->offset=72 start=0) returns 72
+descmap i type int offset 80 (d->offset=80 start=0) returns -1
+descmap pl type list of int offset 88 (d->offset=88 start=0) returns 88
+descmap n type int offset 96 (d->offset=96 start=0) returns -1
+descmap onebad type int offset 100 (d->offset=100 start=0) returns -1
+descmap wcount type int offset 104 (d->offset=104 start=0) returns -1
+descmap who type int offset 112 (d->offset=112 start=0) returns -1
+descmap line type string offset 120 (d->offset=120 start=0) returns 120
+descmap s type string offset 128 (d->offset=128 start=0) returns 128
+descmap .t154 type int offset 136 (d->offset=136 start=0) returns -1
+descmap status type array of string offset 144 (d->offset=144 start=0) returns 144
+descmap .b157 type big offset 152 (d->offset=152 start=0) returns -1
+descmap buf type array of byte offset 160 (d->offset=160 start=0) returns 160
+descmap r type string offset 168 (d->offset=168 start=0) returns 168
+descmap .b155 type big offset 176 (d->offset=176 start=0) returns -1
+descmap .t156 type string offset 184 (d->offset=184 start=0) returns 184
+descmap adt offset 192
+descmap offset 192
+descmap t0 type int offset 192 (d->offset=0 start=192) returns -1
+descmap t1 type list of int offset 200 (d->offset=8 start=192) returns 200
+descmap .b158 type (int, list of int) offset 192 (d->offset=192 start=0) returns 200
+fncom: parsewaitstatus 2 4195e8
+ecom: 
+= int 10 1
+  name i int 0 0
+  const (0) int 6 0
+ecom: 
+const (0) int 6 0
+ecom to: 
+name i int 0 0
+eacom: 
+len int 10 1
+  name status string 0 0
+ecom: 
+len int 10 1
+  name status string 0 0
+ecom to: 
+name .t159 int 0 0
+eacom: 
+inds int 10 1
+  name status string 0 0
+  name i int 0 0
+ecom: 
+inds int 10 1
+  name status string 0 0
+  name i int 0 0
+ecom to: 
+name .t159 int 0 0
+ecom: 
+++ int 10 1
+  name i int 0 0
+  const (1) int 6 0
+eacom: 
+- int 10 1
+  len int 10 1
+    name status string 0 0
+  const (1) int 6 0
+ecom: 
+- int 10 1
+  len int 10 1
+    name status string 0 0
+  const (1) int 6 0
+ecom to: 
+name .t159 int 0 0
+ecom: 
+len int 10 1
+  name status string 0 0
+ecom to: 
+name .t159 int 0 0
+eacom: 
+inds int 10 1
+  name status string 0 0
+  + int 15 1
+    name i int 0 0
+    const (1) int 6 0
+ecom: 
+inds int 10 1
+  name status string 0 0
+  + int 15 1
+    name i int 0 0
+    const (1) int 6 0
+ecom to: 
+name .t159 int 0 0
+ecom: 
++ int 15 1
+  name i int 0 0
+  const (1) int 6 0
+ecom to: 
+name .t160 int 0 0
+ecom: 
+call no type 10 2
+  name fail fn(ctxt: self ref Context, ename: string, err: string) 11 1
+  seq nothing 10 2
+    name ctxt ref Context 0 0
+    seq no type 10 2
+      const bad wait read string 1 0
+      seq no type 10 2
+        call string 10 2
+          -> fn(s: string, nil: string, *): string 12 1
+            name sys Sys 1 0
+            name sprint nothing 11 1
+          seq no type 10 1
+            const sh: bad exit status '%s' string 1 0
+            seq no type 10 1
+              name status string 0 0
+generate desc for big
+ecom: 
+call string 10 2
+  -> fn(s: string, nil: string, *): string 12 1
+    name sys Sys 1 0
+    name sprint nothing 11 1
+  seq no type 10 1
+    const sh: bad exit status '%s' string 1 0
+    seq no type 10 1
+      name status string 0 0
+ecom to: 
+name .t162 string 0 0
+generate desc for Sys->sprint
+descmap offset 0
+descmap s type string offset 64 (d->offset=64 start=0) returns 64
+descmap type string offset 72 returns 72
+generate desc for big
+ecom: 
+const sh: bad exit status '%s' string 1 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b163 big 0 0
+    const (64) int 6 0
+ecom: 
+name status string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b163 big 0 0
+    const (72) int 6 0
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b161 big 0 0
+    const (64) int 6 0
+ecom: 
+const bad wait read string 1 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b161 big 0 0
+    const (72) int 6 0
+ecom: 
+name .t162 string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b161 big 0 0
+    const (80) int 6 0
+ecom: 
+= string 10 1
+  name .t162 string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name .t162 string 0 0
+ecom: 
++= int 10 1
+  name i int 0 0
+  const (2) int 6 0
+eacom: 
+len int 10 1
+  name status string 0 0
+ecom: 
+len int 10 1
+  name status string 0 0
+ecom to: 
+name .t160 int 0 0
+eacom: 
+inds int 10 1
+  name status string 0 0
+  name i int 0 0
+ecom: 
+inds int 10 1
+  name status string 0 0
+  name i int 0 0
+ecom to: 
+name .t160 int 0 0
+ecom: 
+++ int 10 1
+  name i int 0 0
+  const (1) int 6 0
+eacom: 
+- int 10 1
+  len int 10 1
+    name status string 0 0
+  const (2) int 6 0
+ecom: 
+- int 10 1
+  len int 10 1
+    name status string 0 0
+  const (2) int 6 0
+ecom to: 
+name .t160 int 0 0
+ecom: 
+len int 10 1
+  name status string 0 0
+ecom to: 
+name .t160 int 0 0
+eacom: 
+inds int 10 1
+  name status string 0 0
+  + int 15 1
+    name i int 0 0
+    const (1) int 6 0
+ecom: 
+inds int 10 1
+  name status string 0 0
+  + int 15 1
+    name i int 0 0
+    const (1) int 6 0
+ecom to: 
+name .t160 int 0 0
+ecom: 
++ int 15 1
+  name i int 0 0
+  const (1) int 6 0
+ecom to: 
+name .t159 int 0 0
+ecom: 
+call no type 10 2
+  name fail fn(ctxt: self ref Context, ename: string, err: string) 11 1
+  seq nothing 10 2
+    name ctxt ref Context 0 0
+    seq no type 10 2
+      const bad wait read string 1 0
+      seq no type 10 2
+        call string 10 2
+          -> fn(s: string, nil: string, *): string 12 1
+            name sys Sys 1 0
+            name sprint nothing 11 1
+          seq no type 10 1
+            const sh: bad exit status '%s' string 1 0
+            seq no type 10 1
+              name status string 0 0
+generate desc for big
+ecom: 
+call string 10 2
+  -> fn(s: string, nil: string, *): string 12 1
+    name sys Sys 1 0
+    name sprint nothing 11 1
+  seq no type 10 1
+    const sh: bad exit status '%s' string 1 0
+    seq no type 10 1
+      name status string 0 0
+ecom to: 
+name .t162 string 0 0
+generate desc for Sys->sprint
+descmap offset 0
+descmap s type string offset 64 (d->offset=64 start=0) returns 64
+descmap type string offset 72 returns 72
+generate desc for big
+ecom: 
+const sh: bad exit status '%s' string 1 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b161 big 0 0
+    const (64) int 6 0
+ecom: 
+name status string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b161 big 0 0
+    const (72) int 6 0
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b163 big 0 0
+    const (64) int 6 0
+ecom: 
+const bad wait read string 1 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b163 big 0 0
+    const (72) int 6 0
+ecom: 
+name .t162 string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b163 big 0 0
+    const (80) int 6 0
+ecom: 
+= string 10 1
+  name .t162 string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name .t162 string 0 0
+ecom: 
+tuple (int, string, string) 10 2
+  seq no type 10 2
+    cast int 10 1
+      name status string 0 0
+    seq no type 10 2
+      name status string 0 0
+      seq no type 10 2
+        slice string 10 2
+          name status string 0 0
+          seq no type 10 2
+            + int 15 1
+              name i int 0 0
+              const (2) int 6 0
+            nothing no type 10 1
+ecom to: 
+* (int, string, string) 8 0
+  name .ret int 0 0
+ecom: 
+cast int 10 1
+  name status string 0 0
+ecom to: 
+* int 8 0
+  + int 15 1
+    adr int 15 1
+      * (int, string, string) 8 0
+        name .ret int 0 0
+    const (0) int 6 0
+ecom: 
+name status string 0 0
+ecom to: 
+* string 8 0
+  + int 15 1
+    adr int 15 1
+      * (int, string, string) 8 0
+        name .ret int 0 0
+    const (8) int 6 0
+ecom: 
+slice string 10 2
+  name status string 0 0
+  seq no type 10 2
+    + int 15 1
+      name i int 0 0
+      const (2) int 6 0
+    nothing no type 10 1
+ecom to: 
+* string 8 0
+  + int 15 1
+    adr int 15 1
+      * (int, string, string) 8 0
+        name .ret int 0 0
+    const (16) int 6 0
+ecom: 
+len int 10 1
+  name status string 0 0
+ecom to: 
+name .t160 int 0 0
+eacom: 
++ int 15 1
+  name i int 0 0
+  const (2) int 6 0
+ecom: 
++ int 15 1
+  name i int 0 0
+  const (2) int 6 0
+ecom to: 
+name .t159 int 0 0
+ecom: 
+name status string 0 0
+ecom to: 
+* string 8 0
+  + int 15 1
+    adr int 15 1
+      * (int, string, string) 8 0
+        name .ret int 0 0
+    const (16) int 6 0
+fn: parsewaitstatus
+64: argument ctxt ref Context ref 2
+72: argument status string ref 13
+80: local i int ref 13
+84: local .t159 int ref 1
+88: local .t160 int ref 1
+96: local .b161 big ref 2
+104: local .b163 big ref 2
+112: local .t162 string ref 1
+generate desc for parsewaitstatus
+descmap offset 0
+descmap ctxt type ref Context offset 64 (d->offset=64 start=0) returns 64
+descmap status type string offset 72 (d->offset=72 start=0) returns 72
+descmap i type int offset 80 (d->offset=80 start=0) returns -1
+descmap .t159 type int offset 84 (d->offset=84 start=0) returns -1
+descmap .t160 type int offset 88 (d->offset=88 start=0) returns -1
+descmap .b161 type big offset 96 (d->offset=96 start=0) returns -1
+descmap .b163 type big offset 104 (d->offset=104 start=0) returns -1
+descmap .t162 type string offset 112 (d->offset=112 start=0) returns 112
+fncom: panic 6 4196a8
+ecom: 
+used int 10 2
+  call int 10 2
+    -> fn(fd: ref Sys->FD, s: string, nil: string, *): int 12 1
+      name sys Sys 1 0
+      name fprint nothing 11 1
+    seq no type 10 2
+      call ref Sys->FD 10 2
+        -> fn(fd: int): ref Sys->FD 12 1
+          name sys Sys 1 0
+          name fildes nothing 11 1
+        seq no type 10 1
+          const (2) int 6 0
+      seq no type 10 1
+        const sh panic: %s
+ string 1 0
+        seq no type 10 1
+          name s string 0 0
+ecom: 
+call int 10 2
+  -> fn(fd: ref Sys->FD, s: string, nil: string, *): int 12 1
+    name sys Sys 1 0
+    name fprint nothing 11 1
+  seq no type 10 2
+    call ref Sys->FD 10 2
+      -> fn(fd: int): ref Sys->FD 12 1
+        name sys Sys 1 0
+        name fildes nothing 11 1
+      seq no type 10 1
+        const (2) int 6 0
+    seq no type 10 1
+      const sh panic: %s
+ string 1 0
+      seq no type 10 1
+        name s string 0 0
+ecom to: 
+name .t164 int 0 0
+generate desc for Sys->fprint
+descmap offset 0
+descmap fd type ref Sys->FD offset 64 (d->offset=64 start=0) returns 64
+descmap s type string offset 72 (d->offset=72 start=0) returns 72
+descmap type string offset 80 returns 80
+generate desc for big
+generate desc for ref Sys->FD
+ecom: 
+call ref Sys->FD 10 2
+  -> fn(fd: int): ref Sys->FD 12 1
+    name sys Sys 1 0
+    name fildes nothing 11 1
+  seq no type 10 1
+    const (2) int 6 0
+ecom to: 
+name .b166 ref Sys->FD 0 0
+generate desc for big
+ecom: 
+const (2) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b167 big 0 0
+    const (64) int 6 0
+ecom: 
+name .b166 ref Sys->FD 0 0
+ecom to: 
+* ref Sys->FD 8 0
+  + int 15 0
+    name .b165 big 0 0
+    const (64) int 6 0
+ecom: 
+= ref Sys->FD 10 1
+  name .b166 ref Sys->FD 0 0
+  name nil ref Sys->FD 1 0
+ecom: 
+name nil ref Sys->FD 1 0
+ecom to: 
+name .b166 ref Sys->FD 0 0
+ecom: 
+const sh panic: %s
+ string 1 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b165 big 0 0
+    const (72) int 6 0
+ecom: 
+name s string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b165 big 0 0
+    const (80) int 6 0
+ecom: 
+raise nothing 10 1
+  const panic string 1 0
+fn: panic
+64: argument s string ref 1
+72: local .t164 int ref 1
+80: local .b165 big ref 1
+88: local .b166 ref Sys->FD ref 1
+96: local .b167 big ref 1
+generate desc for panic
+descmap offset 0
+descmap s type string offset 64 (d->offset=64 start=0) returns 64
+descmap .t164 type int offset 72 (d->offset=72 start=0) returns -1
+descmap .b165 type big offset 80 (d->offset=80 start=0) returns -1
+descmap .b166 type ref Sys->FD offset 88 (d->offset=88 start=0) returns 88
+descmap .b167 type big offset 96 (d->offset=96 start=0) returns -1
+fncom: diagnostic 9 419768
+eacom: 
+& int 10 1
+  * int 10 1
+    + int 10 1
+      * ref Localenv 10 1
+        + int 10 1
+          * ref Environment 8 0
+            name ctxt ref Context 0 0
+          const localenv (24) int 6 0
+      const flags (16) int 6 0
+  const VERBOSE (2) int 6 0
+ecom: 
+& int 10 1
+  * int 10 1
+    + int 10 1
+      * ref Localenv 10 1
+        + int 10 1
+          * ref Environment 8 0
+            name ctxt ref Context 0 0
+          const localenv (24) int 6 0
+      const flags (16) int 6 0
+  const VERBOSE (2) int 6 0
+ecom to: 
+name .t168 int 0 0
+eacom: 
+* int 10 1
+  + int 10 1
+    * ref Localenv 10 1
+      + int 10 1
+        * ref Environment 8 0
+          name ctxt ref Context 0 0
+        const localenv (24) int 6 0
+    const flags (16) int 6 0
+generate desc for ref Localenv
+ecom: 
+* ref Localenv 10 1
+  + int 10 1
+    * ref Environment 8 0
+      name ctxt ref Context 0 0
+    const localenv (24) int 6 0
+ecom to: 
+name .b169 ref Localenv 0 0
+eacom: 
+* ref Localenv 10 1
+  + int 10 1
+    * ref Environment 8 0
+      name ctxt ref Context 0 0
+    const localenv (24) int 6 0
+generate desc for ref Environment
+ecom: 
+* ref Environment 8 0
+  name ctxt ref Context 0 0
+ecom to: 
+name .b169 ref Environment 0 0
+ecom: 
+= ref Localenv 10 1
+  name .b169 ref Localenv 0 0
+  name nil ref Localenv 1 0
+ecom: 
+name nil ref Localenv 1 0
+ecom to: 
+name .b169 ref Localenv 0 0
+ecom: 
+used int 10 2
+  call int 10 2
+    -> fn(fd: ref Sys->FD, s: string, nil: string, *): int 12 1
+      name sys Sys 1 0
+      name fprint nothing 11 1
+    seq no type 10 2
+      call ref Sys->FD 10 2
+        -> fn(fd: int): ref Sys->FD 12 1
+          name sys Sys 1 0
+          name fildes nothing 11 1
+        seq no type 10 1
+          const (2) int 6 0
+      seq no type 10 1
+        const sh: %s
+ string 1 0
+        seq no type 10 1
+          name s string 0 0
+ecom: 
+call int 10 2
+  -> fn(fd: ref Sys->FD, s: string, nil: string, *): int 12 1
+    name sys Sys 1 0
+    name fprint nothing 11 1
+  seq no type 10 2
+    call ref Sys->FD 10 2
+      -> fn(fd: int): ref Sys->FD 12 1
+        name sys Sys 1 0
+        name fildes nothing 11 1
+      seq no type 10 1
+        const (2) int 6 0
+    seq no type 10 1
+      const sh: %s
+ string 1 0
+      seq no type 10 1
+        name s string 0 0
+ecom to: 
+name .t168 int 0 0
+generate desc for Sys->fprint
+descmap offset 0
+descmap fd type ref Sys->FD offset 64 (d->offset=64 start=0) returns 64
+descmap s type string offset 72 (d->offset=72 start=0) returns 72
+descmap type string offset 80 returns 80
+generate desc for big
+generate desc for ref Sys->FD
+ecom: 
+call ref Sys->FD 10 2
+  -> fn(fd: int): ref Sys->FD 12 1
+    name sys Sys 1 0
+    name fildes nothing 11 1
+  seq no type 10 1
+    const (2) int 6 0
+ecom to: 
+name .b169 ref Sys->FD 0 0
+generate desc for big
+ecom: 
+const (2) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b171 big 0 0
+    const (64) int 6 0
+ecom: 
+name .b169 ref Sys->FD 0 0
+ecom to: 
+* ref Sys->FD 8 0
+  + int 15 0
+    name .b170 big 0 0
+    const (64) int 6 0
+ecom: 
+= ref Sys->FD 10 1
+  name .b169 ref Sys->FD 0 0
+  name nil ref Sys->FD 1 0
+ecom: 
+name nil ref Sys->FD 1 0
+ecom to: 
+name .b169 ref Sys->FD 0 0
+ecom: 
+const sh: %s
+ string 1 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b170 big 0 0
+    const (72) int 6 0
+ecom: 
+name s string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b170 big 0 0
+    const (80) int 6 0
+fn: diagnostic
+64: argument ctxt ref Context ref 1
+72: argument s string ref 1
+80: local .t168 int ref 1
+88: local .b169 ref Localenv ref 3
+96: local .b170 big ref 1
+104: local .b171 big ref 1
+generate desc for diagnostic
+descmap offset 0
+descmap ctxt type ref Context offset 64 (d->offset=64 start=0) returns 64
+descmap s type string offset 72 (d->offset=72 start=0) returns 72
+descmap .t168 type int offset 80 (d->offset=80 start=0) returns -1
+descmap .b169 type ref Localenv offset 88 (d->offset=88 start=0) returns 88
+descmap .b170 type big offset 96 (d->offset=96 start=0) returns -1
+descmap .b171 type big offset 104 (d->offset=104 start=0) returns -1
+fncom: new 5 4b9480
+ecom: 
+call no type 10 1
+  name initialise fn() 11 1
+generate desc for big
+ecom: 
+used int 10 1
+  call int 10 1
+    -> fn(): int 12 1
+      name env Env 1 0
+      name clone nothing 11 1
+ecom: 
+call int 10 1
+  -> fn(): int 12 1
+    name env Env 1 0
+    name clone nothing 11 1
+ecom to: 
+name .t173 int 0 0
+generate desc for big
+ecom: 
+= ref Context 10 3
+  name ctxt ref Context 0 0
+  ref ref Context 10 3
+    tuple Context 10 3
+      seq no type 10 3
+        ref ref Environment 10 2
+          tuple Environment 10 2
+            seq no type 10 2
+              ref ref Builtins 10 1
+                tuple Builtins 10 1
+                  seq no type 10 1
+                    name nil polymorphic type 1 0
+                    seq no type 10 1
+                      const (0) int 6 0
+              seq no type 10 2
+                ref ref Builtins 10 1
+                  tuple Builtins 10 1
+                    seq no type 10 1
+                      name nil polymorphic type 1 0
+                      seq no type 10 1
+                        const (0) int 6 0
+                seq no type 10 2
+                  name nil polymorphic type 1 0
+                  seq no type 10 2
+                    call ref Localenv 10 2
+                      name newlocalenv fn(pushed: ref Localenv): ref Localenv 11 1
+                      seq no type 10 1
+                        name nil ref Localenv 1 0
+        seq no type 10 2
+          call ref Sys->FD 10 1
+            name waitfd fn(): ref Sys->FD 11 1
+          seq no type 10 1
+            name drawcontext ref Draw->Context 0 0
+            seq no type 10 1
+              :: list of int 10 1
+                const (0) int 6 0
+                :: list of int 10 1
+                  const (1) int 6 0
+                  :: list of int 10 1
+                    const (2) int 6 0
+                    name nil polymorphic type 1 0
+ecom: 
+ref ref Context 10 3
+  tuple Context 10 3
+    seq no type 10 3
+      ref ref Environment 10 2
+        tuple Environment 10 2
+          seq no type 10 2
+            ref ref Builtins 10 1
+              tuple Builtins 10 1
+                seq no type 10 1
+                  name nil polymorphic type 1 0
+                  seq no type 10 1
+                    const (0) int 6 0
+            seq no type 10 2
+              ref ref Builtins 10 1
+                tuple Builtins 10 1
+                  seq no type 10 1
+                    name nil polymorphic type 1 0
+                    seq no type 10 1
+                      const (0) int 6 0
+              seq no type 10 2
+                name nil polymorphic type 1 0
+                seq no type 10 2
+                  call ref Localenv 10 2
+                    name newlocalenv fn(pushed: ref Localenv): ref Localenv 11 1
+                    seq no type 10 1
+                      name nil ref Localenv 1 0
+      seq no type 10 2
+        call ref Sys->FD 10 1
+          name waitfd fn(): ref Sys->FD 11 1
+        seq no type 10 1
+          name drawcontext ref Draw->Context 0 0
+          seq no type 10 1
+            :: list of int 10 1
+              const (0) int 6 0
+              :: list of int 10 1
+                const (1) int 6 0
+                :: list of int 10 1
+                  const (2) int 6 0
+                  name nil polymorphic type 1 0
+ecom to: 
+name ctxt ref Context 0 0
+generate desc for ref Context
+generate desc for ref Context
+	desc	$-1,8,"80"
+generate desc for Context
+descmap adt offset 0
+descmap offset 0
+descmap env type ref Environment offset 0 (d->offset=0 start=0) returns 0
+descmap waitfd type ref Sys->FD offset 8 (d->offset=8 start=0) returns 8
+descmap drawcontext type ref Draw->Context offset 16 (d->offset=16 start=0) returns 16
+descmap keepfds type list of int offset 24 (d->offset=24 start=0) returns 24
+generate desc for Context
+	desc	$-1,32,"f0"
+ecom: 
+tuple Context 10 3
+  seq no type 10 3
+    ref ref Environment 10 2
+      tuple Environment 10 2
+        seq no type 10 2
+          ref ref Builtins 10 1
+            tuple Builtins 10 1
+              seq no type 10 1
+                name nil polymorphic type 1 0
+                seq no type 10 1
+                  const (0) int 6 0
+          seq no type 10 2
+            ref ref Builtins 10 1
+              tuple Builtins 10 1
+                seq no type 10 1
+                  name nil polymorphic type 1 0
+                  seq no type 10 1
+                    const (0) int 6 0
+            seq no type 10 2
+              name nil polymorphic type 1 0
+              seq no type 10 2
+                call ref Localenv 10 2
+                  name newlocalenv fn(pushed: ref Localenv): ref Localenv 11 1
+                  seq no type 10 1
+                    name nil ref Localenv 1 0
+    seq no type 10 2
+      call ref Sys->FD 10 1
+        name waitfd fn(): ref Sys->FD 11 1
+      seq no type 10 1
+        name drawcontext ref Draw->Context 0 0
+        seq no type 10 1
+          :: list of int 10 1
+            const (0) int 6 0
+            :: list of int 10 1
+              const (1) int 6 0
+              :: list of int 10 1
+                const (2) int 6 0
+                name nil polymorphic type 1 0
+ecom to: 
+* Context 8 0
+  name .b174 ref Context 0 0
+ecom: 
+ref ref Environment 10 2
+  tuple Environment 10 2
+    seq no type 10 2
+      ref ref Builtins 10 1
+        tuple Builtins 10 1
+          seq no type 10 1
+            name nil polymorphic type 1 0
+            seq no type 10 1
+              const (0) int 6 0
+      seq no type 10 2
+        ref ref Builtins 10 1
+          tuple Builtins 10 1
+            seq no type 10 1
+              name nil polymorphic type 1 0
+              seq no type 10 1
+                const (0) int 6 0
+        seq no type 10 2
+          name nil polymorphic type 1 0
+          seq no type 10 2
+            call ref Localenv 10 2
+              name newlocalenv fn(pushed: ref Localenv): ref Localenv 11 1
+              seq no type 10 1
+                name nil ref Localenv 1 0
+ecom to: 
+* ref Environment 8 0
+  + int 15 1
+    adr int 15 1
+      * Context 8 0
+        name .b174 ref Context 0 0
+    const (0) int 6 0
+generate desc for ref Environment
+generate desc for ref Environment
+	desc	$-1,8,"80"
+generate desc for Environment
+descmap adt offset 0
+descmap offset 0
+descmap sbuiltins type ref Builtins offset 0 (d->offset=0 start=0) returns 0
+descmap builtins type ref Builtins offset 8 (d->offset=8 start=0) returns 8
+descmap bmods type list of (string, Shellbuiltin) offset 16 (d->offset=16 start=0) returns 16
+descmap localenv type ref Localenv offset 24 (d->offset=24 start=0) returns 24
+generate desc for Environment
+	desc	$-1,32,"f0"
+ecom: 
+tuple Environment 10 2
+  seq no type 10 2
+    ref ref Builtins 10 1
+      tuple Builtins 10 1
+        seq no type 10 1
+          name nil polymorphic type 1 0
+          seq no type 10 1
+            const (0) int 6 0
+    seq no type 10 2
+      ref ref Builtins 10 1
+        tuple Builtins 10 1
+          seq no type 10 1
+            name nil polymorphic type 1 0
+            seq no type 10 1
+              const (0) int 6 0
+      seq no type 10 2
+        name nil polymorphic type 1 0
+        seq no type 10 2
+          call ref Localenv 10 2
+            name newlocalenv fn(pushed: ref Localenv): ref Localenv 11 1
+            seq no type 10 1
+              name nil ref Localenv 1 0
+ecom to: 
+* Environment 8 0
+  name .b175 ref Environment 0 0
+ecom: 
+ref ref Builtins 10 1
+  tuple Builtins 10 1
+    seq no type 10 1
+      name nil polymorphic type 1 0
+      seq no type 10 1
+        const (0) int 6 0
+ecom to: 
+* ref Builtins 8 0
+  + int 15 1
+    adr int 15 1
+      * Environment 8 0
+        name .b175 ref Environment 0 0
+    const (0) int 6 0
+generate desc for ref Builtins
+generate desc for ref Builtins
+	desc	$-1,8,"80"
+generate desc for Builtins
+descmap adt offset 0
+descmap offset 0
+descmap ba type array of (string, list of Shellbuiltin) offset 0 (d->offset=0 start=0) returns 0
+descmap n type int offset 8 (d->offset=8 start=0) returns -1
+generate desc for Builtins
+	desc	$-1,16,"80"
+ecom: 
+tuple Builtins 10 1
+  seq no type 10 1
+    name nil polymorphic type 1 0
+    seq no type 10 1
+      const (0) int 6 0
+ecom to: 
+* Builtins 8 0
+  name .b176 ref Builtins 0 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* array of (string, list of Shellbuiltin) 8 0
+  + int 15 1
+    adr int 15 1
+      * Builtins 8 0
+        name .b176 ref Builtins 0 0
+    const (0) int 6 0
+ecom: 
+const (0) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 1
+    adr int 15 1
+      * Builtins 8 0
+        name .b176 ref Builtins 0 0
+    const (8) int 6 0
+ecom: 
+= ref Builtins 10 1
+  name .b176 ref Builtins 0 0
+  name nil ref Builtins 1 0
+ecom: 
+name nil ref Builtins 1 0
+ecom to: 
+name .b176 ref Builtins 0 0
+ecom: 
+ref ref Builtins 10 1
+  tuple Builtins 10 1
+    seq no type 10 1
+      name nil polymorphic type 1 0
+      seq no type 10 1
+        const (0) int 6 0
+ecom to: 
+* ref Builtins 8 0
+  + int 15 1
+    adr int 15 1
+      * Environment 8 0
+        name .b175 ref Environment 0 0
+    const (8) int 6 0
+generate desc for ref Builtins
+generate desc for ref Builtins
+	desc	$-1,8,"80"
+generate desc for Builtins
+ecom: 
+tuple Builtins 10 1
+  seq no type 10 1
+    name nil polymorphic type 1 0
+    seq no type 10 1
+      const (0) int 6 0
+ecom to: 
+* Builtins 8 0
+  name .b176 ref Builtins 0 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* array of (string, list of Shellbuiltin) 8 0
+  + int 15 1
+    adr int 15 1
+      * Builtins 8 0
+        name .b176 ref Builtins 0 0
+    const (0) int 6 0
+ecom: 
+const (0) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 1
+    adr int 15 1
+      * Builtins 8 0
+        name .b176 ref Builtins 0 0
+    const (8) int 6 0
+ecom: 
+= ref Builtins 10 1
+  name .b176 ref Builtins 0 0
+  name nil ref Builtins 1 0
+ecom: 
+name nil ref Builtins 1 0
+ecom to: 
+name .b176 ref Builtins 0 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* list of (string, Shellbuiltin) 8 0
+  + int 15 1
+    adr int 15 1
+      * Environment 8 0
+        name .b175 ref Environment 0 0
+    const (16) int 6 0
+ecom: 
+call ref Localenv 10 2
+  name newlocalenv fn(pushed: ref Localenv): ref Localenv 11 1
+  seq no type 10 1
+    name nil ref Localenv 1 0
+ecom to: 
+* ref Localenv 8 0
+  + int 15 1
+    adr int 15 1
+      * Environment 8 0
+        name .b175 ref Environment 0 0
+    const (24) int 6 0
+generate desc for big
+ecom: 
+name nil ref Localenv 1 0
+ecom to: 
+* ref Localenv 8 0
+  + int 15 0
+    name .b172 big 0 0
+    const (64) int 6 0
+ecom: 
+= ref Environment 10 1
+  name .b175 ref Environment 0 0
+  name nil ref Environment 1 0
+ecom: 
+name nil ref Environment 1 0
+ecom to: 
+name .b175 ref Environment 0 0
+ecom: 
+call ref Sys->FD 10 1
+  name waitfd fn(): ref Sys->FD 11 1
+ecom to: 
+* ref Sys->FD 8 0
+  + int 15 1
+    adr int 15 1
+      * Context 8 0
+        name .b174 ref Context 0 0
+    const (8) int 6 0
+generate desc for big
+ecom: 
+name drawcontext ref Draw->Context 0 0
+ecom to: 
+* ref Draw->Context 8 0
+  + int 15 1
+    adr int 15 1
+      * Context 8 0
+        name .b174 ref Context 0 0
+    const (16) int 6 0
+ecom: 
+:: list of int 10 1
+  const (0) int 6 0
+  :: list of int 10 1
+    const (1) int 6 0
+    :: list of int 10 1
+      const (2) int 6 0
+      name nil polymorphic type 1 0
+ecom to: 
+* list of int 8 0
+  + int 15 1
+    adr int 15 1
+      * Context 8 0
+        name .b174 ref Context 0 0
+    const (24) int 6 0
+ecom: 
+:: list of int 10 1
+  const (1) int 6 0
+  :: list of int 10 1
+    const (2) int 6 0
+    name nil polymorphic type 1 0
+ecom to: 
+name .t177 list of int 0 0
+ecom: 
+:: list of int 10 1
+  const (2) int 6 0
+  name nil polymorphic type 1 0
+ecom to: 
+name .t177 list of int 0 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+name .t177 list of int 0 0
+ecom: 
+= list of int 10 1
+  name .t177 list of int 0 0
+  name nil list of int 1 0
+ecom: 
+name nil list of int 1 0
+ecom to: 
+name .t177 list of int 0 0
+ecom: 
+= ref Context 10 1
+  name .b174 ref Context 0 0
+  name nil ref Context 1 0
+ecom: 
+name nil ref Context 1 0
+ecom to: 
+name .b174 ref Context 0 0
+ecom: 
+used string 10 2
+  call string 10 2
+    -> fn(c: ref Context, sh: Sh): string 12 1
+      name myselfbuiltin Shellbuiltin 1 0
+      name initbuiltin nothing 11 1
+    seq no type 10 1
+      name ctxt ref Context 0 0
+      seq no type 10 1
+        name myself Sh 1 0
+ecom: 
+call string 10 2
+  -> fn(c: ref Context, sh: Sh): string 12 1
+    name myselfbuiltin Shellbuiltin 1 0
+    name initbuiltin nothing 11 1
+  seq no type 10 1
+    name ctxt ref Context 0 0
+    seq no type 10 1
+      name myself Sh 1 0
+ecom to: 
+name .t177 string 0 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b172 big 0 0
+    const (64) int 6 0
+ecom: 
+name myself Sh 1 0
+ecom to: 
+* Sh 8 0
+  + int 15 0
+    name .b172 big 0 0
+    const (72) int 6 0
+ecom: 
+= string 10 1
+  name .t177 string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name .t177 string 0 0
+ecom: 
+= int 10 1
+  * int 10 1
+    + int 10 1
+      * ref Localenv 10 1
+        + int 10 1
+          * ref Environment 8 0
+            name ctxt ref Context 0 0
+          const localenv (24) int 6 0
+      const flags (16) int 6 0
+  const VERBOSE (2) int 6 0
+eacom: 
+* int 10 1
+  + int 10 1
+    * ref Localenv 10 1
+      + int 10 1
+        * ref Environment 8 0
+          name ctxt ref Context 0 0
+        const localenv (24) int 6 0
+    const flags (16) int 6 0
+generate desc for ref Localenv
+ecom: 
+* ref Localenv 10 1
+  + int 10 1
+    * ref Environment 8 0
+      name ctxt ref Context 0 0
+    const localenv (24) int 6 0
+ecom to: 
+name .b176 ref Localenv 0 0
+eacom: 
+* ref Localenv 10 1
+  + int 10 1
+    * ref Environment 8 0
+      name ctxt ref Context 0 0
+    const localenv (24) int 6 0
+generate desc for ref Environment
+ecom: 
+* ref Environment 8 0
+  name ctxt ref Context 0 0
+ecom to: 
+name .b176 ref Environment 0 0
+ecom: 
+const VERBOSE (2) int 6 0
+ecom to: 
+* int 8 1
+  + int 15 1
+    name .b176 ref Localenv 0 0
+    const flags (16) int 6 0
+ecom: 
+= ref Localenv 10 1
+  name .b176 ref Localenv 0 0
+  name nil ref Localenv 1 0
+ecom: 
+name nil ref Localenv 1 0
+ecom to: 
+name .b176 ref Localenv 0 0
+ecom: 
+= list of ref Listnode 10 2
+  name vl list of ref Listnode 0 0
+  call list of ref Listnode 10 2
+    name get fn(ctxt: self ref Context, name: string): list of ref Listnode 11 1
+    seq nothing 10 1
+      name ctxt ref Context 0 0
+      seq no type 10 1
+        const autoload string 1 0
+ecom: 
+call list of ref Listnode 10 2
+  name get fn(ctxt: self ref Context, name: string): list of ref Listnode 11 1
+  seq nothing 10 1
+    name ctxt ref Context 0 0
+    seq no type 10 1
+      const autoload string 1 0
+ecom to: 
+name vl list of ref Listnode 0 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b172 big 0 0
+    const (64) int 6 0
+ecom: 
+const autoload string 1 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b172 big 0 0
+    const (72) int 6 0
+eacom: 
+* ref Node 10 1
+  hd ref Listnode 10 1
+    name vl list of ref Listnode 0 0
+generate desc for ref Listnode
+generate desc for ref Listnode
+	desc	$-1,8,"80"
+ecom: 
+hd ref Listnode 10 1
+  name vl list of ref Listnode 0 0
+ecom to: 
+name .b176 ref Listnode 0 0
+ecom: 
+= ref Listnode 10 1
+  name .b176 ref Listnode 0 0
+  name nil ref Listnode 1 0
+ecom: 
+name nil ref Listnode 1 0
+ecom to: 
+name .b176 ref Listnode 0 0
+eacom: 
+* string 10 1
+  + int 10 1
+    hd ref Listnode 10 1
+      name vl list of ref Listnode 0 0
+    const word (8) int 6 0
+generate desc for ref Listnode
+ecom: 
+hd ref Listnode 10 1
+  name vl list of ref Listnode 0 0
+ecom to: 
+name .b176 ref Listnode 0 0
+ecom: 
+= ref Listnode 10 1
+  name .b176 ref Listnode 0 0
+  name nil ref Listnode 1 0
+ecom: 
+name nil ref Listnode 1 0
+ecom to: 
+name .b176 ref Listnode 0 0
+ecom: 
+used string 10 2
+  call string 10 2
+    name loadmodule fn(ctxt: ref Context, name: string): string 11 1
+    seq no type 10 1
+      name ctxt ref Context 0 0
+      seq no type 10 1
+        * string 10 1
+          + int 10 1
+            hd ref Listnode 10 1
+              name vl list of ref Listnode 0 0
+            const word (8) int 6 0
+ecom: 
+call string 10 2
+  name loadmodule fn(ctxt: ref Context, name: string): string 11 1
+  seq no type 10 1
+    name ctxt ref Context 0 0
+    seq no type 10 1
+      * string 10 1
+        + int 10 1
+          hd ref Listnode 10 1
+            name vl list of ref Listnode 0 0
+          const word (8) int 6 0
+ecom to: 
+name .t177 string 0 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b172 big 0 0
+    const (64) int 6 0
+ecom: 
+* string 10 1
+  + int 10 1
+    hd ref Listnode 10 1
+      name vl list of ref Listnode 0 0
+    const word (8) int 6 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b172 big 0 0
+    const (72) int 6 0
+eacom: 
+* string 10 1
+  + int 10 1
+    hd ref Listnode 10 1
+      name vl list of ref Listnode 0 0
+    const word (8) int 6 0
+generate desc for ref Listnode
+ecom: 
+hd ref Listnode 10 1
+  name vl list of ref Listnode 0 0
+ecom to: 
+name .b176 ref Listnode 0 0
+ecom: 
+= ref Listnode 10 1
+  name .b176 ref Listnode 0 0
+  name nil ref Listnode 1 0
+ecom: 
+name nil ref Listnode 1 0
+ecom to: 
+name .b176 ref Listnode 0 0
+ecom: 
+= string 10 1
+  name .t177 string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name .t177 string 0 0
+ecom: 
+= list of ref Listnode 10 1
+  name vl list of ref Listnode 0 0
+  tl list of ref Listnode 10 1
+    name vl list of ref Listnode 0 0
+ecom: 
+tl list of ref Listnode 10 1
+  name vl list of ref Listnode 0 0
+ecom to: 
+name vl list of ref Listnode 0 0
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  name .ret int 0 0
+fn: new
+64: argument drawcontext ref Draw->Context ref 1
+72: local .t173 int ref 1
+80: local .b172 big ref 7
+88: local .b176 ref Builtins ref 7
+96: local ctxt ref Context ref 7
+104: local vl list of ref Listnode ref 7
+112: local .b174 ref Context ref 1
+120: local .b175 ref Environment ref 1
+128: local .t177 list of int ref 1
+generate desc for Context.new
+descmap offset 0
+descmap drawcontext type ref Draw->Context offset 64 (d->offset=64 start=0) returns 64
+descmap .t173 type int offset 72 (d->offset=72 start=0) returns -1
+descmap .b172 type big offset 80 (d->offset=80 start=0) returns -1
+descmap .b176 type ref Builtins offset 88 (d->offset=88 start=0) returns 88
+descmap ctxt type ref Context offset 96 (d->offset=96 start=0) returns 96
+descmap vl type list of ref Listnode offset 104 (d->offset=104 start=0) returns 104
+descmap .b174 type ref Context offset 112 (d->offset=112 start=0) returns 112
+descmap .b175 type ref Environment offset 120 (d->offset=120 start=0) returns 120
+descmap .t177 type list of int offset 128 (d->offset=128 start=0) returns 128
+fncom: copy 3 4bc9d0
+ecom: 
+= ref Context 10 2
+  name nctxt ref Context 0 0
+  ref ref Context 10 2
+    tuple Context 10 2
+      seq no type 10 2
+        * ref Environment 8 0
+          name ctxt ref Context 0 0
+        seq no type 10 2
+          call ref Sys->FD 10 1
+            name waitfd fn(): ref Sys->FD 11 1
+          seq no type 10 1
+            * ref Draw->Context 8 0
+              + int 15 1
+                name ctxt ref Context 0 0
+                const drawcontext (16) int 6 0
+            seq no type 10 1
+              * list of int 8 0
+                + int 15 1
+                  name ctxt ref Context 0 0
+                  const keepfds (24) int 6 0
+ecom: 
+ref ref Context 10 2
+  tuple Context 10 2
+    seq no type 10 2
+      * ref Environment 8 0
+        name ctxt ref Context 0 0
+      seq no type 10 2
+        call ref Sys->FD 10 1
+          name waitfd fn(): ref Sys->FD 11 1
+        seq no type 10 1
+          * ref Draw->Context 8 0
+            + int 15 1
+              name ctxt ref Context 0 0
+              const drawcontext (16) int 6 0
+          seq no type 10 1
+            * list of int 8 0
+              + int 15 1
+                name ctxt ref Context 0 0
+                const keepfds (24) int 6 0
+ecom to: 
+name nctxt ref Context 0 0
+generate desc for ref Context
+generate desc for ref Context
+	desc	$-1,8,"80"
+generate desc for Context
+ecom: 
+tuple Context 10 2
+  seq no type 10 2
+    * ref Environment 8 0
+      name ctxt ref Context 0 0
+    seq no type 10 2
+      call ref Sys->FD 10 1
+        name waitfd fn(): ref Sys->FD 11 1
+      seq no type 10 1
+        * ref Draw->Context 8 0
+          + int 15 1
+            name ctxt ref Context 0 0
+            const drawcontext (16) int 6 0
+        seq no type 10 1
+          * list of int 8 0
+            + int 15 1
+              name ctxt ref Context 0 0
+              const keepfds (24) int 6 0
+ecom to: 
+* Context 8 0
+  name .b178 ref Context 0 0
+ecom: 
+* ref Environment 8 0
+  name ctxt ref Context 0 0
+ecom to: 
+* ref Environment 8 0
+  + int 15 1
+    adr int 15 1
+      * Context 8 0
+        name .b178 ref Context 0 0
+    const (0) int 6 0
+ecom: 
+call ref Sys->FD 10 1
+  name waitfd fn(): ref Sys->FD 11 1
+ecom to: 
+* ref Sys->FD 8 0
+  + int 15 1
+    adr int 15 1
+      * Context 8 0
+        name .b178 ref Context 0 0
+    const (8) int 6 0
+generate desc for big
+ecom: 
+* ref Draw->Context 8 0
+  + int 15 1
+    name ctxt ref Context 0 0
+    const drawcontext (16) int 6 0
+ecom to: 
+* ref Draw->Context 8 0
+  + int 15 1
+    adr int 15 1
+      * Context 8 0
+        name .b178 ref Context 0 0
+    const (16) int 6 0
+ecom: 
+* list of int 8 0
+  + int 15 1
+    name ctxt ref Context 0 0
+    const keepfds (24) int 6 0
+ecom to: 
+* list of int 8 0
+  + int 15 1
+    adr int 15 1
+      * Context 8 0
+        name .b178 ref Context 0 0
+    const (24) int 6 0
+ecom: 
+= ref Context 10 1
+  name .b178 ref Context 0 0
+  name nil ref Context 1 0
+ecom: 
+name nil ref Context 1 0
+ecom to: 
+name .b178 ref Context 0 0
+ecom: 
+used int 10 1
+  call int 10 1
+    -> fn(): int 12 1
+      name env Env 1 0
+      name clone nothing 11 1
+ecom: 
+call int 10 1
+  -> fn(): int 12 1
+    name env Env 1 0
+    name clone nothing 11 1
+ecom to: 
+name .t180 int 0 0
+generate desc for big
+ecom: 
+= ref Environment 10 3
+  * ref Environment 8 0
+    name nctxt ref Context 0 0
+  ref ref Environment 10 3
+    tuple Environment 10 3
+      seq no type 10 3
+        call ref Builtins 10 2
+          name copybuiltins fn(b: ref Builtins): ref Builtins 11 1
+          seq no type 10 1
+            * ref Builtins 10 1
+              * ref Environment 8 0
+                name ctxt ref Context 0 0
+        seq no type 10 3
+          call ref Builtins 10 2
+            name copybuiltins fn(b: ref Builtins): ref Builtins 11 1
+            seq no type 10 1
+              * ref Builtins 10 1
+                + int 10 1
+                  * ref Environment 8 0
+                    name ctxt ref Context 0 0
+                  const builtins (8) int 6 0
+          seq no type 10 2
+            * list of (string, Shellbuiltin) 10 1
+              + int 10 1
+                * ref Environment 8 0
+                  name ctxt ref Context 0 0
+                const bmods (16) int 6 0
+            seq no type 10 2
+              call ref Localenv 10 2
+                name copylocalenv fn(e: ref Localenv): ref Localenv 11 1
+                seq no type 10 1
+                  * ref Localenv 10 1
+                    + int 10 1
+                      * ref Environment 8 0
+                        name ctxt ref Context 0 0
+                      const localenv (24) int 6 0
+ecom: 
+ref ref Environment 10 3
+  tuple Environment 10 3
+    seq no type 10 3
+      call ref Builtins 10 2
+        name copybuiltins fn(b: ref Builtins): ref Builtins 11 1
+        seq no type 10 1
+          * ref Builtins 10 1
+            * ref Environment 8 0
+              name ctxt ref Context 0 0
+      seq no type 10 3
+        call ref Builtins 10 2
+          name copybuiltins fn(b: ref Builtins): ref Builtins 11 1
+          seq no type 10 1
+            * ref Builtins 10 1
+              + int 10 1
+                * ref Environment 8 0
+                  name ctxt ref Context 0 0
+                const builtins (8) int 6 0
+        seq no type 10 2
+          * list of (string, Shellbuiltin) 10 1
+            + int 10 1
+              * ref Environment 8 0
+                name ctxt ref Context 0 0
+              const bmods (16) int 6 0
+          seq no type 10 2
+            call ref Localenv 10 2
+              name copylocalenv fn(e: ref Localenv): ref Localenv 11 1
+              seq no type 10 1
+                * ref Localenv 10 1
+                  + int 10 1
+                    * ref Environment 8 0
+                      name ctxt ref Context 0 0
+                    const localenv (24) int 6 0
+ecom to: 
+* ref Environment 8 0
+  name nctxt ref Context 0 0
+generate desc for ref Environment
+generate desc for ref Environment
+	desc	$-1,8,"80"
+generate desc for Environment
+ecom: 
+tuple Environment 10 3
+  seq no type 10 3
+    call ref Builtins 10 2
+      name copybuiltins fn(b: ref Builtins): ref Builtins 11 1
+      seq no type 10 1
+        * ref Builtins 10 1
+          * ref Environment 8 0
+            name ctxt ref Context 0 0
+    seq no type 10 3
+      call ref Builtins 10 2
+        name copybuiltins fn(b: ref Builtins): ref Builtins 11 1
+        seq no type 10 1
+          * ref Builtins 10 1
+            + int 10 1
+              * ref Environment 8 0
+                name ctxt ref Context 0 0
+              const builtins (8) int 6 0
+      seq no type 10 2
+        * list of (string, Shellbuiltin) 10 1
+          + int 10 1
+            * ref Environment 8 0
+              name ctxt ref Context 0 0
+            const bmods (16) int 6 0
+        seq no type 10 2
+          call ref Localenv 10 2
+            name copylocalenv fn(e: ref Localenv): ref Localenv 11 1
+            seq no type 10 1
+              * ref Localenv 10 1
+                + int 10 1
+                  * ref Environment 8 0
+                    name ctxt ref Context 0 0
+                  const localenv (24) int 6 0
+ecom to: 
+* Environment 8 0
+  name .b178 ref Environment 0 0
+ecom: 
+call ref Builtins 10 2
+  name copybuiltins fn(b: ref Builtins): ref Builtins 11 1
+  seq no type 10 1
+    * ref Builtins 10 1
+      * ref Environment 8 0
+        name ctxt ref Context 0 0
+ecom to: 
+* ref Builtins 8 0
+  + int 15 1
+    adr int 15 1
+      * Environment 8 0
+        name .b178 ref Environment 0 0
+    const (0) int 6 0
+generate desc for big
+ecom: 
+* ref Builtins 10 1
+  * ref Environment 8 0
+    name ctxt ref Context 0 0
+ecom to: 
+* ref Builtins 8 0
+  + int 15 0
+    name .b179 big 0 0
+    const (64) int 6 0
+eacom: 
+* ref Builtins 10 1
+  * ref Environment 8 0
+    name ctxt ref Context 0 0
+generate desc for ref Environment
+ecom: 
+* ref Environment 8 0
+  name ctxt ref Context 0 0
+ecom to: 
+name .b181 ref Environment 0 0
+ecom: 
+= ref Environment 10 1
+  name .b181 ref Environment 0 0
+  name nil ref Environment 1 0
+ecom: 
+name nil ref Environment 1 0
+ecom to: 
+name .b181 ref Environment 0 0
+ecom: 
+call ref Builtins 10 2
+  name copybuiltins fn(b: ref Builtins): ref Builtins 11 1
+  seq no type 10 1
+    * ref Builtins 10 1
+      + int 10 1
+        * ref Environment 8 0
+          name ctxt ref Context 0 0
+        const builtins (8) int 6 0
+ecom to: 
+* ref Builtins 8 0
+  + int 15 1
+    adr int 15 1
+      * Environment 8 0
+        name .b178 ref Environment 0 0
+    const (8) int 6 0
+generate desc for big
+ecom: 
+* ref Builtins 10 1
+  + int 10 1
+    * ref Environment 8 0
+      name ctxt ref Context 0 0
+    const builtins (8) int 6 0
+ecom to: 
+* ref Builtins 8 0
+  + int 15 0
+    name .b179 big 0 0
+    const (64) int 6 0
+eacom: 
+* ref Builtins 10 1
+  + int 10 1
+    * ref Environment 8 0
+      name ctxt ref Context 0 0
+    const builtins (8) int 6 0
+generate desc for ref Environment
+ecom: 
+* ref Environment 8 0
+  name ctxt ref Context 0 0
+ecom to: 
+name .b181 ref Environment 0 0
+ecom: 
+= ref Environment 10 1
+  name .b181 ref Environment 0 0
+  name nil ref Environment 1 0
+ecom: 
+name nil ref Environment 1 0
+ecom to: 
+name .b181 ref Environment 0 0
+ecom: 
+* list of (string, Shellbuiltin) 10 1
+  + int 10 1
+    * ref Environment 8 0
+      name ctxt ref Context 0 0
+    const bmods (16) int 6 0
+ecom to: 
+* list of (string, Shellbuiltin) 8 0
+  + int 15 1
+    adr int 15 1
+      * Environment 8 0
+        name .b178 ref Environment 0 0
+    const (16) int 6 0
+eacom: 
+* list of (string, Shellbuiltin) 10 1
+  + int 10 1
+    * ref Environment 8 0
+      name ctxt ref Context 0 0
+    const bmods (16) int 6 0
+generate desc for ref Environment
+ecom: 
+* ref Environment 8 0
+  name ctxt ref Context 0 0
+ecom to: 
+name .b181 ref Environment 0 0
+ecom: 
+= ref Environment 10 1
+  name .b181 ref Environment 0 0
+  name nil ref Environment 1 0
+ecom: 
+name nil ref Environment 1 0
+ecom to: 
+name .b181 ref Environment 0 0
+ecom: 
+call ref Localenv 10 2
+  name copylocalenv fn(e: ref Localenv): ref Localenv 11 1
+  seq no type 10 1
+    * ref Localenv 10 1
+      + int 10 1
+        * ref Environment 8 0
+          name ctxt ref Context 0 0
+        const localenv (24) int 6 0
+ecom to: 
+* ref Localenv 8 0
+  + int 15 1
+    adr int 15 1
+      * Environment 8 0
+        name .b178 ref Environment 0 0
+    const (24) int 6 0
+generate desc for big
+ecom: 
+* ref Localenv 10 1
+  + int 10 1
+    * ref Environment 8 0
+      name ctxt ref Context 0 0
+    const localenv (24) int 6 0
+ecom to: 
+* ref Localenv 8 0
+  + int 15 0
+    name .b179 big 0 0
+    const (64) int 6 0
+eacom: 
+* ref Localenv 10 1
+  + int 10 1
+    * ref Environment 8 0
+      name ctxt ref Context 0 0
+    const localenv (24) int 6 0
+generate desc for ref Environment
+ecom: 
+* ref Environment 8 0
+  name ctxt ref Context 0 0
+ecom to: 
+name .b181 ref Environment 0 0
+ecom: 
+= ref Environment 10 1
+  name .b181 ref Environment 0 0
+  name nil ref Environment 1 0
+ecom: 
+name nil ref Environment 1 0
+ecom to: 
+name .b181 ref Environment 0 0
+ecom: 
+= ref Environment 10 1
+  name .b178 ref Environment 0 0
+  name nil ref Environment 1 0
+ecom: 
+name nil ref Environment 1 0
+ecom to: 
+name .b178 ref Environment 0 0
+ecom: 
+name nctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  name .ret int 0 0
+fn: copy
+64: argument ctxt ref Context ref 7
+72: argument copyenv int ref 1
+76: local .t180 int ref 1
+80: local .b179 big ref 5
+88: local .b181 ref Environment ref 4
+96: local nctxt ref Context ref 3
+104: local .b178 ref Context ref 2
+generate desc for Context.copy
+descmap offset 0
+descmap ctxt type ref Context offset 64 (d->offset=64 start=0) returns 64
+descmap copyenv type int offset 72 (d->offset=72 start=0) returns -1
+descmap .t180 type int offset 76 (d->offset=76 start=0) returns -1
+descmap .b179 type big offset 80 (d->offset=80 start=0) returns -1
+descmap .b181 type ref Environment offset 88 (d->offset=88 start=0) returns 88
+descmap nctxt type ref Context offset 96 (d->offset=96 start=0) returns 96
+descmap .b178 type ref Context offset 104 (d->offset=104 start=0) returns 104
+fncom: set 5 4ba4c0
+ecom: 
+= ref Localenv 10 1
+  name e ref Localenv 0 0
+  * ref Localenv 10 1
+    + int 10 1
+      * ref Environment 8 0
+        name ctxt ref Context 0 0
+      const localenv (24) int 6 0
+ecom: 
+* ref Localenv 10 1
+  + int 10 1
+    * ref Environment 8 0
+      name ctxt ref Context 0 0
+    const localenv (24) int 6 0
+ecom to: 
+name e ref Localenv 0 0
+eacom: 
+* ref Localenv 10 1
+  + int 10 1
+    * ref Environment 8 0
+      name ctxt ref Context 0 0
+    const localenv (24) int 6 0
+generate desc for ref Environment
+ecom: 
+* ref Environment 8 0
+  name ctxt ref Context 0 0
+ecom to: 
+name .b182 ref Environment 0 0
+ecom: 
+= ref Environment 10 1
+  name .b182 ref Environment 0 0
+  name nil ref Environment 1 0
+ecom: 
+name nil ref Environment 1 0
+ecom to: 
+name .b182 ref Environment 0 0
+ecom: 
+= int 10 2
+  name idx int 0 0
+  call int 10 2
+    name hashfn fn(s: string, n: int): int 11 1
+    seq no type 10 1
+      name name string 0 0
+      seq no type 10 1
+        len int 10 1
+          * array of list of ref Var 8 0
+            name e ref Localenv 0 0
+ecom: 
+call int 10 2
+  name hashfn fn(s: string, n: int): int 11 1
+  seq no type 10 1
+    name name string 0 0
+    seq no type 10 1
+      len int 10 1
+        * array of list of ref Var 8 0
+          name e ref Localenv 0 0
+ecom to: 
+name idx int 0 0
+generate desc for big
+ecom: 
+name name string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b183 big 0 0
+    const (64) int 6 0
+ecom: 
+len int 10 1
+  * array of list of ref Var 8 0
+    name e ref Localenv 0 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b183 big 0 0
+    const (72) int 6 0
+ecom: 
+= ref Var 10 2
+  name v ref Var 0 0
+  call ref Var 10 2
+    name hashfind fn(ht: array of list of ref Var, idx: int, n: string): ref Var 11 1
+    seq no type 10 1
+      * array of list of ref Var 8 0
+        name e ref Localenv 0 0
+      seq no type 10 1
+        name idx int 0 0
+        seq no type 10 1
+          name name string 0 0
+ecom: 
+call ref Var 10 2
+  name hashfind fn(ht: array of list of ref Var, idx: int, n: string): ref Var 11 1
+  seq no type 10 1
+    * array of list of ref Var 8 0
+      name e ref Localenv 0 0
+    seq no type 10 1
+      name idx int 0 0
+      seq no type 10 1
+        name name string 0 0
+ecom to: 
+name v ref Var 0 0
+generate desc for big
+ecom: 
+* array of list of ref Var 8 0
+  name e ref Localenv 0 0
+ecom to: 
+* array of list of ref Var 8 0
+  + int 15 0
+    name .b183 big 0 0
+    const (64) int 6 0
+ecom: 
+name idx int 0 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b183 big 0 0
+    const (72) int 6 0
+ecom: 
+name name string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b183 big 0 0
+    const (80) int 6 0
+ecom: 
+= int 10 1
+  name flags int 0 0
+  const CHANGED (1) int 6 0
+ecom: 
+const CHANGED (1) int 6 0
+ecom to: 
+name flags int 0 0
+eacom: 
+call int 10 2
+  name noexport fn(name: string): int 11 1
+  seq no type 10 1
+    name name string 0 0
+ecom: 
+call int 10 2
+  name noexport fn(name: string): int 11 1
+  seq no type 10 1
+    name name string 0 0
+ecom to: 
+name .t184 int 0 0
+generate desc for big
+ecom: 
+name name string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b183 big 0 0
+    const (64) int 6 0
+ecom: 
+|= int 10 1
+  name flags int 0 0
+  const NOEXPORT (2) int 6 0
+ecom: 
+call no type 10 2
+  name hashadd fn(ht: array of list of ref Var, idx: int, v: ref Var) 11 1
+  seq no type 10 1
+    * array of list of ref Var 8 0
+      name e ref Localenv 0 0
+    seq no type 10 1
+      name idx int 0 0
+      seq no type 10 1
+        ref ref Var 10 1
+          tuple Var 10 1
+            seq no type 10 1
+              name name string 0 0
+              seq no type 10 1
+                name val list of ref Listnode 0 0
+                seq no type 10 1
+                  name flags int 0 0
+generate desc for big
+ecom: 
+* array of list of ref Var 8 0
+  name e ref Localenv 0 0
+ecom to: 
+* array of list of ref Var 8 0
+  + int 15 0
+    name .b183 big 0 0
+    const (64) int 6 0
+ecom: 
+name idx int 0 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b183 big 0 0
+    const (72) int 6 0
+ecom: 
+ref ref Var 10 1
+  tuple Var 10 1
+    seq no type 10 1
+      name name string 0 0
+      seq no type 10 1
+        name val list of ref Listnode 0 0
+        seq no type 10 1
+          name flags int 0 0
+ecom to: 
+* ref Var 8 0
+  + int 15 0
+    name .b183 big 0 0
+    const (80) int 6 0
+generate desc for ref Var
+generate desc for ref Var
+	desc	$-1,8,"80"
+generate desc for Var
+descmap adt offset 0
+descmap offset 0
+descmap name type string offset 0 (d->offset=0 start=0) returns 0
+descmap val type list of ref Listnode offset 8 (d->offset=8 start=0) returns 8
+descmap flags type int offset 16 (d->offset=16 start=0) returns -1
+generate desc for Var
+	desc	$-1,24,"c0"
+ecom: 
+tuple Var 10 1
+  seq no type 10 1
+    name name string 0 0
+    seq no type 10 1
+      name val list of ref Listnode 0 0
+      seq no type 10 1
+        name flags int 0 0
+ecom to: 
+* Var 8 0
+  name .b182 ref Var 0 0
+ecom: 
+name name string 0 0
+ecom to: 
+* string 8 0
+  + int 15 1
+    adr int 15 1
+      * Var 8 0
+        name .b182 ref Var 0 0
+    const (0) int 6 0
+ecom: 
+name val list of ref Listnode 0 0
+ecom to: 
+* list of ref Listnode 8 0
+  + int 15 1
+    adr int 15 1
+      * Var 8 0
+        name .b182 ref Var 0 0
+    const (8) int 6 0
+ecom: 
+name flags int 0 0
+ecom to: 
+* int 8 0
+  + int 15 1
+    adr int 15 1
+      * Var 8 0
+        name .b182 ref Var 0 0
+    const (16) int 6 0
+ecom: 
+= ref Var 10 1
+  name .b182 ref Var 0 0
+  name nil ref Var 1 0
+ecom: 
+name nil ref Var 1 0
+ecom to: 
+name .b182 ref Var 0 0
+ecom: 
+= list of ref Listnode 10 1
+  * list of ref Listnode 8 0
+    + int 15 1
+      name v ref Var 0 0
+      const val (8) int 6 0
+  name val list of ref Listnode 0 0
+ecom: 
+name val list of ref Listnode 0 0
+ecom to: 
+* list of ref Listnode 8 0
+  + int 15 1
+    name v ref Var 0 0
+    const val (8) int 6 0
+ecom: 
+|= int 10 1
+  * int 8 0
+    + int 15 1
+      name v ref Var 0 0
+      const flags (16) int 6 0
+  const CHANGED (1) int 6 0
+ecom: 
+= ref Localenv 10 1
+  name e ref Localenv 0 0
+  * ref Localenv 8 0
+    + int 15 1
+      name e ref Localenv 0 0
+      const pushed (8) int 6 0
+ecom: 
+* ref Localenv 8 0
+  + int 15 1
+    name e ref Localenv 0 0
+    const pushed (8) int 6 0
+ecom to: 
+name e ref Localenv 0 0
+ecom: 
+= ref Var 10 1
+  name v ref Var 0 0
+  name nil ref Var 1 0
+ecom: 
+name nil ref Var 1 0
+ecom to: 
+name v ref Var 0 0
+fn: set
+64: argument ctxt ref Context ref 1
+72: argument name string ref 4
+80: argument val list of ref Listnode ref 2
+88: local flags int ref 3
+92: local idx int ref 3
+96: local .t184 int ref 1
+104: local e ref Localenv ref 7
+112: local .b183 big ref 4
+120: local v ref Var ref 4
+128: local .b182 ref Environment ref 2
+generate desc for Context.set
+descmap offset 0
+descmap ctxt type ref Context offset 64 (d->offset=64 start=0) returns 64
+descmap name type string offset 72 (d->offset=72 start=0) returns 72
+descmap val type list of ref Listnode offset 80 (d->offset=80 start=0) returns 80
+descmap flags type int offset 88 (d->offset=88 start=0) returns -1
+descmap idx type int offset 92 (d->offset=92 start=0) returns -1
+descmap .t184 type int offset 96 (d->offset=96 start=0) returns -1
+descmap e type ref Localenv offset 104 (d->offset=104 start=0) returns 104
+descmap .b183 type big offset 112 (d->offset=112 start=0) returns -1
+descmap v type ref Var offset 120 (d->offset=120 start=0) returns 120
+descmap .b182 type ref Environment offset 128 (d->offset=128 start=0) returns 128
+fncom: get 9 4b9b60
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* polymorphic type 8 0
+  name .ret int 0 0
+ecom: 
+= int 10 1
+  name idx int 0 0
+  const (-1) int 6 0
+ecom: 
+const (-1) int 6 0
+ecom to: 
+name idx int 0 0
+eacom: 
+inds int 10 1
+  name name string 0 0
+  const (0) int 6 0
+ecom: 
+inds int 10 1
+  name name string 0 0
+  const (0) int 6 0
+ecom to: 
+name .t185 int 0 0
+eacom: 
+inds int 10 1
+  name name string 0 0
+  const (0) int 6 0
+ecom: 
+inds int 10 1
+  name name string 0 0
+  const (0) int 6 0
+ecom to: 
+name .t185 int 0 0
+ecom: 
+= int 10 1
+  name i int 0 0
+  const (0) int 6 0
+ecom: 
+const (0) int 6 0
+ecom to: 
+name i int 0 0
+eacom: 
+len int 10 1
+  name name string 0 0
+ecom: 
+len int 10 1
+  name name string 0 0
+ecom to: 
+name .t185 int 0 0
+eacom: 
+inds int 10 1
+  name name string 0 0
+  name i int 0 0
+ecom: 
+inds int 10 1
+  name name string 0 0
+  name i int 0 0
+ecom to: 
+name .t185 int 0 0
+eacom: 
+inds int 10 1
+  name name string 0 0
+  name i int 0 0
+ecom: 
+inds int 10 1
+  name name string 0 0
+  name i int 0 0
+ecom to: 
+name .t185 int 0 0
+ecom: 
+++ int 10 1
+  name i int 0 0
+  const (1) int 6 0
+eacom: 
+len int 10 1
+  name name string 0 0
+ecom: 
+len int 10 1
+  name name string 0 0
+ecom to: 
+name .t185 int 0 0
+ecom: 
+= int 10 1
+  name idx int 0 0
+  - int 10 1
+    cast int 10 1
+      name name string 0 0
+    const (1) int 6 0
+ecom: 
+- int 10 1
+  cast int 10 1
+    name name string 0 0
+  const (1) int 6 0
+ecom to: 
+name idx int 0 0
+ecom: 
+cast int 10 1
+  name name string 0 0
+ecom to: 
+name .t185 int 0 0
+ecom: 
+= string 10 1
+  name name string 0 0
+  const * string 1 0
+ecom: 
+const * string 1 0
+ecom to: 
+name name string 0 0
+ecom: 
+= ref Var 10 2
+  name v ref Var 0 0
+  call ref Var 10 2
+    name varfind fn(e: ref Localenv, name: string): ref Var 11 1
+    seq no type 10 2
+      * ref Localenv 10 1
+        + int 10 1
+          * ref Environment 8 0
+            name ctxt ref Context 0 0
+          const localenv (24) int 6 0
+      seq no type 10 1
+        name name string 0 0
+ecom: 
+call ref Var 10 2
+  name varfind fn(e: ref Localenv, name: string): ref Var 11 1
+  seq no type 10 2
+    * ref Localenv 10 1
+      + int 10 1
+        * ref Environment 8 0
+          name ctxt ref Context 0 0
+        const localenv (24) int 6 0
+    seq no type 10 1
+      name name string 0 0
+ecom to: 
+name v ref Var 0 0
+generate desc for big
+ecom: 
+* ref Localenv 10 1
+  + int 10 1
+    * ref Environment 8 0
+      name ctxt ref Context 0 0
+    const localenv (24) int 6 0
+ecom to: 
+* ref Localenv 8 0
+  + int 15 0
+    name .b186 big 0 0
+    const (64) int 6 0
+eacom: 
+* ref Localenv 10 1
+  + int 10 1
+    * ref Environment 8 0
+      name ctxt ref Context 0 0
+    const localenv (24) int 6 0
+generate desc for ref Environment
+ecom: 
+* ref Environment 8 0
+  name ctxt ref Context 0 0
+ecom to: 
+name .b187 ref Environment 0 0
+ecom: 
+= ref Environment 10 1
+  name .b187 ref Environment 0 0
+  name nil ref Environment 1 0
+ecom: 
+name nil ref Environment 1 0
+ecom to: 
+name .b187 ref Environment 0 0
+ecom: 
+name name string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b186 big 0 0
+    const (72) int 6 0
+ecom: 
+call list of ref Listnode 10 2
+  name index fn(val: list of ref Listnode, k: int): list of ref Listnode 11 1
+  seq no type 10 1
+    * list of ref Listnode 8 0
+      + int 15 1
+        name v ref Var 0 0
+        const val (8) int 6 0
+    seq no type 10 1
+      name idx int 0 0
+ecom to: 
+* list of ref Listnode 8 0
+  name .ret int 0 0
+generate desc for big
+ecom: 
+* list of ref Listnode 8 0
+  + int 15 1
+    name v ref Var 0 0
+    const val (8) int 6 0
+ecom to: 
+* list of ref Listnode 8 0
+  + int 15 0
+    name .b186 big 0 0
+    const (64) int 6 0
+ecom: 
+name idx int 0 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b186 big 0 0
+    const (72) int 6 0
+ecom: 
+* list of ref Listnode 8 0
+  + int 15 1
+    name v ref Var 0 0
+    const val (8) int 6 0
+ecom to: 
+* list of ref Listnode 8 0
+  name .ret int 0 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* polymorphic type 8 0
+  name .ret int 0 0
+fn: get
+64: argument ctxt ref Context ref 1
+72: argument name string ref 10
+80: local i int ref 6
+84: local idx int ref 4
+88: local .t185 int ref 1
+96: local v ref Var ref 4
+104: local .b186 big ref 2
+112: local .b187 ref Environment ref 1
+generate desc for Context.get
+descmap offset 0
+descmap ctxt type ref Context offset 64 (d->offset=64 start=0) returns 64
+descmap name type string offset 72 (d->offset=72 start=0) returns 72
+descmap i type int offset 80 (d->offset=80 start=0) returns -1
+descmap idx type int offset 84 (d->offset=84 start=0) returns -1
+descmap .t185 type int offset 88 (d->offset=88 start=0) returns -1
+descmap v type ref Var offset 96 (d->offset=96 start=0) returns 96
+descmap .b186 type big offset 104 (d->offset=104 start=0) returns -1
+descmap .b187 type ref Environment offset 112 (d->offset=112 start=0) returns 112
+fncom: envlist 2 4bb650
+ecom: 
+= array of list of ref Var 10 1
+  name t array of list of ref Var 0 0
+  array array of list of ref Var 10 1
+    const ENVHASHSIZE (7) int 6 0
+ecom: 
+array array of list of ref Var 10 1
+  const ENVHASHSIZE (7) int 6 0
+ecom to: 
+name t array of list of ref Var 0 0
+generate desc for list of ref Var
+generate desc for list of ref Var
+	desc	$-1,8,"80"
+ecom: 
+= ref Localenv 10 1
+  name e ref Localenv 0 0
+  * ref Localenv 10 1
+    + int 10 1
+      * ref Environment 8 0
+        name ctxt ref Context 0 0
+      const localenv (24) int 6 0
+ecom: 
+* ref Localenv 10 1
+  + int 10 1
+    * ref Environment 8 0
+      name ctxt ref Context 0 0
+    const localenv (24) int 6 0
+ecom to: 
+name e ref Localenv 0 0
+eacom: 
+* ref Localenv 10 1
+  + int 10 1
+    * ref Environment 8 0
+      name ctxt ref Context 0 0
+    const localenv (24) int 6 0
+generate desc for ref Environment
+ecom: 
+* ref Environment 8 0
+  name ctxt ref Context 0 0
+ecom to: 
+name .b188 ref Environment 0 0
+ecom: 
+= ref Environment 10 1
+  name .b188 ref Environment 0 0
+  name nil ref Environment 1 0
+ecom: 
+name nil ref Environment 1 0
+ecom to: 
+name .b188 ref Environment 0 0
+ecom: 
+= int 10 1
+  name i int 0 0
+  const (0) int 6 0
+ecom: 
+const (0) int 6 0
+ecom to: 
+name i int 0 0
+eacom: 
+len int 10 1
+  * array of list of ref Var 8 0
+    name e ref Localenv 0 0
+ecom: 
+len int 10 1
+  * array of list of ref Var 8 0
+    name e ref Localenv 0 0
+ecom to: 
+name .t189 int 0 0
+ecom: 
+= list of ref Var 10 1
+  name vl list of ref Var 0 0
+  * list of ref Var 10 1
+    indx big 10 1
+      * array of list of ref Var 8 0
+        name e ref Localenv 0 0
+      name i int 0 0
+ecom: 
+* list of ref Var 10 1
+  indx big 10 1
+    * array of list of ref Var 8 0
+      name e ref Localenv 0 0
+    name i int 0 0
+ecom to: 
+name vl list of ref Var 0 0
+eacom: 
+* list of ref Var 10 1
+  indx big 10 1
+    * array of list of ref Var 8 0
+      name e ref Localenv 0 0
+    name i int 0 0
+generate desc for big
+ecom: 
+indx big 10 1
+  * array of list of ref Var 8 0
+    name e ref Localenv 0 0
+  name i int 0 0
+ecom to: 
+name .b190 big 0 0
+ecom: 
+= ref Var 10 1
+  name v ref Var 0 0
+  hd ref Var 10 1
+    name vl list of ref Var 0 0
+ecom: 
+hd ref Var 10 1
+  name vl list of ref Var 0 0
+ecom to: 
+name v ref Var 0 0
+ecom: 
+= int 10 2
+  name idx int 0 0
+  call int 10 2
+    name hashfn fn(s: string, n: int): int 11 1
+    seq no type 10 1
+      * string 8 0
+        name v ref Var 0 0
+      seq no type 10 1
+        len int 10 1
+          * array of list of ref Var 8 0
+            name e ref Localenv 0 0
+ecom: 
+call int 10 2
+  name hashfn fn(s: string, n: int): int 11 1
+  seq no type 10 1
+    * string 8 0
+      name v ref Var 0 0
+    seq no type 10 1
+      len int 10 1
+        * array of list of ref Var 8 0
+          name e ref Localenv 0 0
+ecom to: 
+name idx int 0 0
+generate desc for big
+ecom: 
+* string 8 0
+  name v ref Var 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b190 big 0 0
+    const (64) int 6 0
+ecom: 
+len int 10 1
+  * array of list of ref Var 8 0
+    name e ref Localenv 0 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b190 big 0 0
+    const (72) int 6 0
+eacom: 
+call ref Var 10 2
+  name hashfind fn(ht: array of list of ref Var, idx: int, n: string): ref Var 11 1
+  seq no type 10 1
+    name t array of list of ref Var 0 0
+    seq no type 10 1
+      name idx int 0 0
+      seq no type 10 1
+        * string 8 0
+          name v ref Var 0 0
+generate desc for ref Var
+generate desc for ref Var
+	desc	$-1,8,"80"
+ecom: 
+call ref Var 10 2
+  name hashfind fn(ht: array of list of ref Var, idx: int, n: string): ref Var 11 1
+  seq no type 10 1
+    name t array of list of ref Var 0 0
+    seq no type 10 1
+      name idx int 0 0
+      seq no type 10 1
+        * string 8 0
+          name v ref Var 0 0
+ecom to: 
+name .b188 ref Var 0 0
+generate desc for big
+ecom: 
+name t array of list of ref Var 0 0
+ecom to: 
+* array of list of ref Var 8 0
+  + int 15 0
+    name .b190 big 0 0
+    const (64) int 6 0
+ecom: 
+name idx int 0 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b190 big 0 0
+    const (72) int 6 0
+ecom: 
+* string 8 0
+  name v ref Var 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b190 big 0 0
+    const (80) int 6 0
+ecom: 
+= ref Var 10 1
+  name .b188 ref Var 0 0
+  name nil ref Var 1 0
+ecom: 
+name nil ref Var 1 0
+ecom to: 
+name .b188 ref Var 0 0
+ecom: 
+call no type 10 2
+  name hashadd fn(ht: array of list of ref Var, idx: int, v: ref Var) 11 1
+  seq no type 10 1
+    name t array of list of ref Var 0 0
+    seq no type 10 1
+      name idx int 0 0
+      seq no type 10 1
+        name v ref Var 0 0
+generate desc for big
+ecom: 
+name t array of list of ref Var 0 0
+ecom to: 
+* array of list of ref Var 8 0
+  + int 15 0
+    name .b190 big 0 0
+    const (64) int 6 0
+ecom: 
+name idx int 0 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b190 big 0 0
+    const (72) int 6 0
+ecom: 
+name v ref Var 0 0
+ecom to: 
+* ref Var 8 0
+  + int 15 0
+    name .b190 big 0 0
+    const (80) int 6 0
+ecom: 
+= ref Var 10 1
+  name v ref Var 0 0
+  name nil ref Var 1 0
+ecom: 
+name nil ref Var 1 0
+ecom to: 
+name v ref Var 0 0
+ecom: 
+= list of ref Var 10 1
+  name vl list of ref Var 0 0
+  tl list of ref Var 10 1
+    name vl list of ref Var 0 0
+ecom: 
+tl list of ref Var 10 1
+  name vl list of ref Var 0 0
+ecom to: 
+name vl list of ref Var 0 0
+ecom: 
+= list of ref Var 10 1
+  name vl list of ref Var 0 0
+  name nil list of ref Var 1 0
+ecom: 
+name nil list of ref Var 1 0
+ecom to: 
+name vl list of ref Var 0 0
+ecom: 
+++ int 10 1
+  name i int 0 0
+  const (1) int 6 0
+ecom: 
+= ref Localenv 10 1
+  name e ref Localenv 0 0
+  * ref Localenv 8 0
+    + int 15 1
+      name e ref Localenv 0 0
+      const pushed (8) int 6 0
+ecom: 
+* ref Localenv 8 0
+  + int 15 1
+    name e ref Localenv 0 0
+    const pushed (8) int 6 0
+ecom to: 
+name e ref Localenv 0 0
+ecom: 
+= int 10 1
+  name i int 0 0
+  const (0) int 6 0
+ecom: 
+const (0) int 6 0
+ecom to: 
+name i int 0 0
+ecom: 
+= list of ref Var 10 1
+  name vl list of ref Var 0 0
+  * list of ref Var 10 1
+    indx big 10 1
+      name t array of list of ref Var 0 0
+      name i int 0 0
+ecom: 
+* list of ref Var 10 1
+  indx big 10 1
+    name t array of list of ref Var 0 0
+    name i int 0 0
+ecom to: 
+name vl list of ref Var 0 0
+eacom: 
+* list of ref Var 10 1
+  indx big 10 1
+    name t array of list of ref Var 0 0
+    name i int 0 0
+generate desc for big
+ecom: 
+indx big 10 1
+  name t array of list of ref Var 0 0
+  name i int 0 0
+ecom to: 
+name .b190 big 0 0
+ecom: 
+= ref Var 10 1
+  name v ref Var 0 0
+  hd ref Var 10 1
+    name vl list of ref Var 0 0
+ecom: 
+hd ref Var 10 1
+  name vl list of ref Var 0 0
+ecom to: 
+name v ref Var 0 0
+ecom: 
+= list of (string, list of ref Listnode) 10 1
+  name l list of (string, list of ref Listnode) 0 0
+  :: list of (string, list of ref Listnode) 10 1
+    tuple (string, list of ref Listnode) 10 1
+      seq no type 10 1
+        * string 8 0
+          name v ref Var 0 0
+        seq no type 10 1
+          * list of ref Listnode 8 0
+            + int 15 1
+              name v ref Var 0 0
+              const val (8) int 6 0
+    name l list of (string, list of ref Listnode) 0 0
+ecom: 
+:: list of (string, list of ref Listnode) 10 1
+  tuple (string, list of ref Listnode) 10 1
+    seq no type 10 1
+      * string 8 0
+        name v ref Var 0 0
+      seq no type 10 1
+        * list of ref Listnode 8 0
+          + int 15 1
+            name v ref Var 0 0
+            const val (8) int 6 0
+  name l list of (string, list of ref Listnode) 0 0
+ecom to: 
+name l list of (string, list of ref Listnode) 0 0
+eacom: 
+tuple (string, list of ref Listnode) 10 1
+  seq no type 10 1
+    * string 8 0
+      name v ref Var 0 0
+    seq no type 10 1
+      * list of ref Listnode 8 0
+        + int 15 1
+          name v ref Var 0 0
+          const val (8) int 6 0
+generate desc for (string, list of ref Listnode)
+descmap adt offset 0
+descmap offset 0
+descmap t0 type string offset 0 (d->offset=0 start=0) returns 0
+descmap t1 type list of ref Listnode offset 8 (d->offset=8 start=0) returns 8
+generate desc for (string, list of ref Listnode)
+	desc	$-1,16,"c0"
+ecom: 
+tuple (string, list of ref Listnode) 10 1
+  seq no type 10 1
+    * string 8 0
+      name v ref Var 0 0
+    seq no type 10 1
+      * list of ref Listnode 8 0
+        + int 15 1
+          name v ref Var 0 0
+          const val (8) int 6 0
+ecom to: 
+name .b191 (string, list of ref Listnode) 0 0
+ecom: 
+* string 8 0
+  name v ref Var 0 0
+ecom to: 
+* string 0 0
+  + int 13 1
+    adr int 13 1
+      name .b191 (string, list of ref Listnode) 0 0
+    const (0) int 6 0
+ecom: 
+* list of ref Listnode 8 0
+  + int 15 1
+    name v ref Var 0 0
+    const val (8) int 6 0
+ecom to: 
+* list of ref Listnode 0 0
+  + int 13 1
+    adr int 13 1
+      name .b191 (string, list of ref Listnode) 0 0
+    const (8) int 6 0
+generate desc for (string, list of ref Listnode)
+ecom: 
+= string 10 1
+  * string 0 0
+    adr int 13 1
+      name .b191 (string, list of ref Listnode) 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+* string 0 0
+  adr int 13 1
+    name .b191 (string, list of ref Listnode) 0 0
+ecom: 
+= list of ref Listnode 10 1
+  * list of ref Listnode 0 0
+    + int 13 1
+      adr int 13 1
+        name .b191 (string, list of ref Listnode) 0 0
+      const t1 (8) int 6 0
+  name nil list of ref Listnode 1 0
+ecom: 
+name nil list of ref Listnode 1 0
+ecom to: 
+* list of ref Listnode 0 0
+  + int 13 1
+    adr int 13 1
+      name .b191 (string, list of ref Listnode) 0 0
+    const t1 (8) int 6 0
+ecom: 
+= ref Var 10 1
+  name v ref Var 0 0
+  name nil ref Var 1 0
+ecom: 
+name nil ref Var 1 0
+ecom to: 
+name v ref Var 0 0
+ecom: 
+= list of ref Var 10 1
+  name vl list of ref Var 0 0
+  tl list of ref Var 10 1
+    name vl list of ref Var 0 0
+ecom: 
+tl list of ref Var 10 1
+  name vl list of ref Var 0 0
+ecom to: 
+name vl list of ref Var 0 0
+ecom: 
+= list of ref Var 10 1
+  name vl list of ref Var 0 0
+  name nil list of ref Var 1 0
+ecom: 
+name nil list of ref Var 1 0
+ecom to: 
+name vl list of ref Var 0 0
+ecom: 
+++ int 10 1
+  name i int 0 0
+  const (1) int 6 0
+ecom: 
+name l list of (string, list of ref Listnode) 0 0
+ecom to: 
+* list of (string, list of ref Listnode) 8 0
+  name .ret int 0 0
+fn: envlist
+64: argument ctxt ref Context ref 1
+72: local i int ref 4
+76: local idx int ref 3
+80: local .t189 int ref 1
+88: local e ref Localenv ref 7
+96: local .b190 big ref 5
+104: local vl list of ref Var ref 5
+112: local vl list of ref Var ref 5
+120: local t array of list of ref Var ref 4
+128: local v ref Var ref 4
+136: local l list of (string, list of ref Listnode) ref 3
+144: local v ref Var ref 3
+152: local .b188 ref Environment ref 2
+160: local .b191 (string, list of ref Listnode) ref 1
+76: local i int ref 4
+generate desc for Context.envlist
+descmap offset 0
+descmap ctxt type ref Context offset 64 (d->offset=64 start=0) returns 64
+descmap i type int offset 72 (d->offset=72 start=0) returns -1
+descmap idx type int offset 76 (d->offset=76 start=0) returns -1
+descmap .t189 type int offset 80 (d->offset=80 start=0) returns -1
+descmap e type ref Localenv offset 88 (d->offset=88 start=0) returns 88
+descmap .b190 type big offset 96 (d->offset=96 start=0) returns -1
+descmap vl type list of ref Var offset 104 (d->offset=104 start=0) returns 104
+descmap vl type list of ref Var offset 112 (d->offset=112 start=0) returns 112
+descmap t type array of list of ref Var offset 120 (d->offset=120 start=0) returns 120
+descmap v type ref Var offset 128 (d->offset=128 start=0) returns 128
+descmap l type list of (string, list of ref Listnode) offset 136 (d->offset=136 start=0) returns 136
+descmap v type ref Var offset 144 (d->offset=144 start=0) returns 144
+descmap .b188 type ref Environment offset 152 (d->offset=152 start=0) returns 152
+descmap adt offset 160
+descmap offset 160
+descmap t0 type string offset 160 (d->offset=0 start=160) returns 160
+descmap t1 type list of ref Listnode offset 168 (d->offset=8 start=160) returns 168
+descmap .b191 type (string, list of ref Listnode) offset 160 (d->offset=160 start=0) returns 168
+fncom: setlocal 8 4bad90
+ecom: 
+= ref Localenv 10 1
+  name e ref Localenv 0 0
+  * ref Localenv 10 1
+    + int 10 1
+      * ref Environment 8 0
+        name ctxt ref Context 0 0
+      const localenv (24) int 6 0
+ecom: 
+* ref Localenv 10 1
+  + int 10 1
+    * ref Environment 8 0
+      name ctxt ref Context 0 0
+    const localenv (24) int 6 0
+ecom to: 
+name e ref Localenv 0 0
+eacom: 
+* ref Localenv 10 1
+  + int 10 1
+    * ref Environment 8 0
+      name ctxt ref Context 0 0
+    const localenv (24) int 6 0
+generate desc for ref Environment
+ecom: 
+* ref Environment 8 0
+  name ctxt ref Context 0 0
+ecom to: 
+name .b192 ref Environment 0 0
+ecom: 
+= ref Environment 10 1
+  name .b192 ref Environment 0 0
+  name nil ref Environment 1 0
+ecom: 
+name nil ref Environment 1 0
+ecom to: 
+name .b192 ref Environment 0 0
+ecom: 
+= int 10 2
+  name idx int 0 0
+  call int 10 2
+    name hashfn fn(s: string, n: int): int 11 1
+    seq no type 10 1
+      name name string 0 0
+      seq no type 10 1
+        len int 10 1
+          * array of list of ref Var 8 0
+            name e ref Localenv 0 0
+ecom: 
+call int 10 2
+  name hashfn fn(s: string, n: int): int 11 1
+  seq no type 10 1
+    name name string 0 0
+    seq no type 10 1
+      len int 10 1
+        * array of list of ref Var 8 0
+          name e ref Localenv 0 0
+ecom to: 
+name idx int 0 0
+generate desc for big
+ecom: 
+name name string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b193 big 0 0
+    const (64) int 6 0
+ecom: 
+len int 10 1
+  * array of list of ref Var 8 0
+    name e ref Localenv 0 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b193 big 0 0
+    const (72) int 6 0
+ecom: 
+= ref Var 10 2
+  name v ref Var 0 0
+  call ref Var 10 2
+    name hashfind fn(ht: array of list of ref Var, idx: int, n: string): ref Var 11 1
+    seq no type 10 1
+      * array of list of ref Var 8 0
+        name e ref Localenv 0 0
+      seq no type 10 1
+        name idx int 0 0
+        seq no type 10 1
+          name name string 0 0
+ecom: 
+call ref Var 10 2
+  name hashfind fn(ht: array of list of ref Var, idx: int, n: string): ref Var 11 1
+  seq no type 10 1
+    * array of list of ref Var 8 0
+      name e ref Localenv 0 0
+    seq no type 10 1
+      name idx int 0 0
+      seq no type 10 1
+        name name string 0 0
+ecom to: 
+name v ref Var 0 0
+generate desc for big
+ecom: 
+* array of list of ref Var 8 0
+  name e ref Localenv 0 0
+ecom to: 
+* array of list of ref Var 8 0
+  + int 15 0
+    name .b193 big 0 0
+    const (64) int 6 0
+ecom: 
+name idx int 0 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b193 big 0 0
+    const (72) int 6 0
+ecom: 
+name name string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b193 big 0 0
+    const (80) int 6 0
+ecom: 
+= int 10 1
+  name flags int 0 0
+  const CHANGED (1) int 6 0
+ecom: 
+const CHANGED (1) int 6 0
+ecom to: 
+name flags int 0 0
+eacom: 
+call int 10 2
+  name noexport fn(name: string): int 11 1
+  seq no type 10 1
+    name name string 0 0
+ecom: 
+call int 10 2
+  name noexport fn(name: string): int 11 1
+  seq no type 10 1
+    name name string 0 0
+ecom to: 
+name .t194 int 0 0
+generate desc for big
+ecom: 
+name name string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b193 big 0 0
+    const (64) int 6 0
+ecom: 
+|= int 10 1
+  name flags int 0 0
+  const NOEXPORT (2) int 6 0
+ecom: 
+call no type 10 2
+  name hashadd fn(ht: array of list of ref Var, idx: int, v: ref Var) 11 1
+  seq no type 10 1
+    * array of list of ref Var 8 0
+      name e ref Localenv 0 0
+    seq no type 10 1
+      name idx int 0 0
+      seq no type 10 1
+        ref ref Var 10 1
+          tuple Var 10 1
+            seq no type 10 1
+              name name string 0 0
+              seq no type 10 1
+                name val list of ref Listnode 0 0
+                seq no type 10 1
+                  name flags int 0 0
+generate desc for big
+ecom: 
+* array of list of ref Var 8 0
+  name e ref Localenv 0 0
+ecom to: 
+* array of list of ref Var 8 0
+  + int 15 0
+    name .b193 big 0 0
+    const (64) int 6 0
+ecom: 
+name idx int 0 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b193 big 0 0
+    const (72) int 6 0
+ecom: 
+ref ref Var 10 1
+  tuple Var 10 1
+    seq no type 10 1
+      name name string 0 0
+      seq no type 10 1
+        name val list of ref Listnode 0 0
+        seq no type 10 1
+          name flags int 0 0
+ecom to: 
+* ref Var 8 0
+  + int 15 0
+    name .b193 big 0 0
+    const (80) int 6 0
+generate desc for ref Var
+generate desc for ref Var
+	desc	$-1,8,"80"
+generate desc for Var
+ecom: 
+tuple Var 10 1
+  seq no type 10 1
+    name name string 0 0
+    seq no type 10 1
+      name val list of ref Listnode 0 0
+      seq no type 10 1
+        name flags int 0 0
+ecom to: 
+* Var 8 0
+  name .b192 ref Var 0 0
+ecom: 
+name name string 0 0
+ecom to: 
+* string 8 0
+  + int 15 1
+    adr int 15 1
+      * Var 8 0
+        name .b192 ref Var 0 0
+    const (0) int 6 0
+ecom: 
+name val list of ref Listnode 0 0
+ecom to: 
+* list of ref Listnode 8 0
+  + int 15 1
+    adr int 15 1
+      * Var 8 0
+        name .b192 ref Var 0 0
+    const (8) int 6 0
+ecom: 
+name flags int 0 0
+ecom to: 
+* int 8 0
+  + int 15 1
+    adr int 15 1
+      * Var 8 0
+        name .b192 ref Var 0 0
+    const (16) int 6 0
+ecom: 
+= ref Var 10 1
+  name .b192 ref Var 0 0
+  name nil ref Var 1 0
+ecom: 
+name nil ref Var 1 0
+ecom to: 
+name .b192 ref Var 0 0
+ecom: 
+= list of ref Listnode 10 1
+  * list of ref Listnode 8 0
+    + int 15 1
+      name v ref Var 0 0
+      const val (8) int 6 0
+  name val list of ref Listnode 0 0
+ecom: 
+name val list of ref Listnode 0 0
+ecom to: 
+* list of ref Listnode 8 0
+  + int 15 1
+    name v ref Var 0 0
+    const val (8) int 6 0
+ecom: 
+|= int 10 1
+  * int 8 0
+    + int 15 1
+      name v ref Var 0 0
+      const flags (16) int 6 0
+  const CHANGED (1) int 6 0
+fn: setlocal
+64: argument ctxt ref Context ref 1
+72: argument name string ref 4
+80: argument val list of ref Listnode ref 2
+88: local flags int ref 3
+92: local idx int ref 3
+96: local .t194 int ref 1
+104: local .b193 big ref 4
+112: local e ref Localenv ref 4
+120: local v ref Var ref 4
+128: local .b192 ref Environment ref 2
+generate desc for Context.setlocal
+descmap offset 0
+descmap ctxt type ref Context offset 64 (d->offset=64 start=0) returns 64
+descmap name type string offset 72 (d->offset=72 start=0) returns 72
+descmap val type list of ref Listnode offset 80 (d->offset=80 start=0) returns 80
+descmap flags type int offset 88 (d->offset=88 start=0) returns -1
+descmap idx type int offset 92 (d->offset=92 start=0) returns -1
+descmap .t194 type int offset 96 (d->offset=96 start=0) returns -1
+descmap .b193 type big offset 104 (d->offset=104 start=0) returns -1
+descmap e type ref Localenv offset 112 (d->offset=112 start=0) returns 112
+descmap v type ref Var offset 120 (d->offset=120 start=0) returns 120
+descmap .b192 type ref Environment offset 128 (d->offset=128 start=0) returns 128
+fncom: push 5 4bc050
+ecom: 
+= ref Localenv 10 2
+  * ref Localenv 10 1
+    + int 10 1
+      * ref Environment 8 0
+        name ctxt ref Context 0 0
+      const localenv (24) int 6 0
+  call ref Localenv 10 2
+    name newlocalenv fn(pushed: ref Localenv): ref Localenv 11 1
+    seq no type 10 1
+      * ref Localenv 10 1
+        + int 10 1
+          * ref Environment 8 0
+            name ctxt ref Context 0 0
+          const localenv (24) int 6 0
+eacom: 
+* ref Localenv 10 1
+  + int 10 1
+    * ref Environment 8 0
+      name ctxt ref Context 0 0
+    const localenv (24) int 6 0
+generate desc for ref Environment
+ecom: 
+* ref Environment 8 0
+  name ctxt ref Context 0 0
+ecom to: 
+name .b195 ref Environment 0 0
+ecom: 
+call ref Localenv 10 2
+  name newlocalenv fn(pushed: ref Localenv): ref Localenv 11 1
+  seq no type 10 1
+    * ref Localenv 10 1
+      + int 10 1
+        * ref Environment 8 0
+          name ctxt ref Context 0 0
+        const localenv (24) int 6 0
+ecom to: 
+* ref Localenv 8 1
+  + int 15 1
+    name .b195 ref Environment 0 0
+    const localenv (24) int 6 0
+generate desc for big
+ecom: 
+* ref Localenv 10 1
+  + int 10 1
+    * ref Environment 8 0
+      name ctxt ref Context 0 0
+    const localenv (24) int 6 0
+ecom to: 
+* ref Localenv 8 0
+  + int 15 0
+    name .b196 big 0 0
+    const (64) int 6 0
+eacom: 
+* ref Localenv 10 1
+  + int 10 1
+    * ref Environment 8 0
+      name ctxt ref Context 0 0
+    const localenv (24) int 6 0
+generate desc for ref Environment
+ecom: 
+* ref Environment 8 0
+  name ctxt ref Context 0 0
+ecom to: 
+name .b197 ref Environment 0 0
+ecom: 
+= ref Environment 10 1
+  name .b197 ref Environment 0 0
+  name nil ref Environment 1 0
+ecom: 
+name nil ref Environment 1 0
+ecom to: 
+name .b197 ref Environment 0 0
+ecom: 
+= ref Environment 10 1
+  name .b195 ref Environment 0 0
+  name nil ref Environment 1 0
+ecom: 
+name nil ref Environment 1 0
+ecom to: 
+name .b195 ref Environment 0 0
+fn: push
+64: argument ctxt ref Context ref 2
+72: local .b195 ref Environment ref 1
+80: local .b196 big ref 1
+88: local .b197 ref Environment ref 1
+generate desc for Context.push
+descmap offset 0
+descmap ctxt type ref Context offset 64 (d->offset=64 start=0) returns 64
+descmap .b195 type ref Environment offset 72 (d->offset=72 start=0) returns 72
+descmap .b196 type big offset 80 (d->offset=80 start=0) returns -1
+descmap .b197 type ref Environment offset 88 (d->offset=88 start=0) returns 88
+fncom: pop 8 4bc510
+eacom: 
+* ref Localenv 10 1
+  + int 10 1
+    * ref Localenv 10 1
+      + int 10 1
+        * ref Environment 8 0
+          name ctxt ref Context 0 0
+        const localenv (24) int 6 0
+    const pushed (8) int 6 0
+generate desc for ref Localenv
+ecom: 
+* ref Localenv 10 1
+  + int 10 1
+    * ref Environment 8 0
+      name ctxt ref Context 0 0
+    const localenv (24) int 6 0
+ecom to: 
+name .b198 ref Localenv 0 0
+eacom: 
+* ref Localenv 10 1
+  + int 10 1
+    * ref Environment 8 0
+      name ctxt ref Context 0 0
+    const localenv (24) int 6 0
+generate desc for ref Environment
+ecom: 
+* ref Environment 8 0
+  name ctxt ref Context 0 0
+ecom to: 
+name .b198 ref Environment 0 0
+ecom: 
+= ref Localenv 10 1
+  name .b198 ref Localenv 0 0
+  name nil ref Localenv 1 0
+ecom: 
+name nil ref Localenv 1 0
+ecom to: 
+name .b198 ref Localenv 0 0
+ecom: 
+call no type 10 2
+  name panic fn(s: string) 11 1
+  seq no type 10 1
+    const unbalanced contexts in shell environment string 1 0
+generate desc for big
+ecom: 
+const unbalanced contexts in shell environment string 1 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b199 big 0 0
+    const (64) int 6 0
+ecom: 
+= array of list of ref Var 10 1
+  name oldv array of list of ref Var 0 0
+  * array of list of ref Var 10 1
+    * ref Localenv 10 1
+      + int 10 1
+        * ref Environment 8 0
+          name ctxt ref Context 0 0
+        const localenv (24) int 6 0
+ecom: 
+* array of list of ref Var 10 1
+  * ref Localenv 10 1
+    + int 10 1
+      * ref Environment 8 0
+        name ctxt ref Context 0 0
+      const localenv (24) int 6 0
+ecom to: 
+name oldv array of list of ref Var 0 0
+eacom: 
+* array of list of ref Var 10 1
+  * ref Localenv 10 1
+    + int 10 1
+      * ref Environment 8 0
+        name ctxt ref Context 0 0
+      const localenv (24) int 6 0
+generate desc for ref Localenv
+ecom: 
+* ref Localenv 10 1
+  + int 10 1
+    * ref Environment 8 0
+      name ctxt ref Context 0 0
+    const localenv (24) int 6 0
+ecom to: 
+name .b198 ref Localenv 0 0
+eacom: 
+* ref Localenv 10 1
+  + int 10 1
+    * ref Environment 8 0
+      name ctxt ref Context 0 0
+    const localenv (24) int 6 0
+generate desc for ref Environment
+ecom: 
+* ref Environment 8 0
+  name ctxt ref Context 0 0
+ecom to: 
+name .b198 ref Environment 0 0
+ecom: 
+= ref Localenv 10 1
+  name .b198 ref Localenv 0 0
+  name nil ref Localenv 1 0
+ecom: 
+name nil ref Localenv 1 0
+ecom to: 
+name .b198 ref Localenv 0 0
+ecom: 
+= ref Localenv 10 2
+  * ref Localenv 10 1
+    + int 10 1
+      * ref Environment 8 0
+        name ctxt ref Context 0 0
+      const localenv (24) int 6 0
+  * ref Localenv 10 1
+    + int 10 1
+      * ref Localenv 10 1
+        + int 10 1
+          * ref Environment 8 0
+            name ctxt ref Context 0 0
+          const localenv (24) int 6 0
+      const pushed (8) int 6 0
+eacom: 
+* ref Localenv 10 1
+  + int 10 1
+    * ref Environment 8 0
+      name ctxt ref Context 0 0
+    const localenv (24) int 6 0
+generate desc for ref Environment
+ecom: 
+* ref Environment 8 0
+  name ctxt ref Context 0 0
+ecom to: 
+name .b198 ref Environment 0 0
+ecom: 
+* ref Localenv 10 1
+  + int 10 1
+    * ref Localenv 10 1
+      + int 10 1
+        * ref Environment 8 0
+          name ctxt ref Context 0 0
+        const localenv (24) int 6 0
+    const pushed (8) int 6 0
+ecom to: 
+* ref Localenv 8 1
+  + int 15 1
+    name .b198 ref Environment 0 0
+    const localenv (24) int 6 0
+eacom: 
+* ref Localenv 10 1
+  + int 10 1
+    * ref Localenv 10 1
+      + int 10 1
+        * ref Environment 8 0
+          name ctxt ref Context 0 0
+        const localenv (24) int 6 0
+    const pushed (8) int 6 0
+generate desc for ref Localenv
+ecom: 
+* ref Localenv 10 1
+  + int 10 1
+    * ref Environment 8 0
+      name ctxt ref Context 0 0
+    const localenv (24) int 6 0
+ecom to: 
+name .b200 ref Localenv 0 0
+eacom: 
+* ref Localenv 10 1
+  + int 10 1
+    * ref Environment 8 0
+      name ctxt ref Context 0 0
+    const localenv (24) int 6 0
+generate desc for ref Environment
+ecom: 
+* ref Environment 8 0
+  name ctxt ref Context 0 0
+ecom to: 
+name .b200 ref Environment 0 0
+ecom: 
+= ref Localenv 10 1
+  name .b200 ref Localenv 0 0
+  name nil ref Localenv 1 0
+ecom: 
+name nil ref Localenv 1 0
+ecom to: 
+name .b200 ref Localenv 0 0
+ecom: 
+= ref Environment 10 1
+  name .b198 ref Environment 0 0
+  name nil ref Environment 1 0
+ecom: 
+name nil ref Environment 1 0
+ecom to: 
+name .b198 ref Environment 0 0
+ecom: 
+= int 10 1
+  name i int 0 0
+  const (0) int 6 0
+ecom: 
+const (0) int 6 0
+ecom to: 
+name i int 0 0
+eacom: 
+len int 10 1
+  name oldv array of list of ref Var 0 0
+ecom: 
+len int 10 1
+  name oldv array of list of ref Var 0 0
+ecom to: 
+name .t201 int 0 0
+ecom: 
+= list of ref Var 10 1
+  name vl list of ref Var 0 0
+  * list of ref Var 10 1
+    indx big 10 1
+      name oldv array of list of ref Var 0 0
+      name i int 0 0
+ecom: 
+* list of ref Var 10 1
+  indx big 10 1
+    name oldv array of list of ref Var 0 0
+    name i int 0 0
+ecom to: 
+name vl list of ref Var 0 0
+eacom: 
+* list of ref Var 10 1
+  indx big 10 1
+    name oldv array of list of ref Var 0 0
+    name i int 0 0
+generate desc for big
+ecom: 
+indx big 10 1
+  name oldv array of list of ref Var 0 0
+  name i int 0 0
+ecom to: 
+name .b199 big 0 0
+eacom: 
+= ref Var 10 2
+  name v ref Var 0 0
+  call ref Var 10 2
+    name varfind fn(e: ref Localenv, name: string): ref Var 11 1
+    seq no type 10 2
+      * ref Localenv 10 1
+        + int 10 1
+          * ref Environment 8 0
+            name ctxt ref Context 0 0
+          const localenv (24) int 6 0
+      seq no type 10 1
+        * string 10 1
+          hd ref Var 10 1
+            name vl list of ref Var 0 0
+generate desc for ref Var
+generate desc for ref Var
+	desc	$-1,8,"80"
+ecom: 
+= ref Var 10 2
+  name v ref Var 0 0
+  call ref Var 10 2
+    name varfind fn(e: ref Localenv, name: string): ref Var 11 1
+    seq no type 10 2
+      * ref Localenv 10 1
+        + int 10 1
+          * ref Environment 8 0
+            name ctxt ref Context 0 0
+          const localenv (24) int 6 0
+      seq no type 10 1
+        * string 10 1
+          hd ref Var 10 1
+            name vl list of ref Var 0 0
+ecom to: 
+name .b200 ref Var 0 0
+ecom: 
+call ref Var 10 2
+  name varfind fn(e: ref Localenv, name: string): ref Var 11 1
+  seq no type 10 2
+    * ref Localenv 10 1
+      + int 10 1
+        * ref Environment 8 0
+          name ctxt ref Context 0 0
+        const localenv (24) int 6 0
+    seq no type 10 1
+      * string 10 1
+        hd ref Var 10 1
+          name vl list of ref Var 0 0
+ecom to: 
+name v ref Var 0 0
+generate desc for big
+ecom: 
+* ref Localenv 10 1
+  + int 10 1
+    * ref Environment 8 0
+      name ctxt ref Context 0 0
+    const localenv (24) int 6 0
+ecom to: 
+* ref Localenv 8 0
+  + int 15 0
+    name .b199 big 0 0
+    const (64) int 6 0
+eacom: 
+* ref Localenv 10 1
+  + int 10 1
+    * ref Environment 8 0
+      name ctxt ref Context 0 0
+    const localenv (24) int 6 0
+generate desc for ref Environment
+ecom: 
+* ref Environment 8 0
+  name ctxt ref Context 0 0
+ecom to: 
+name .b198 ref Environment 0 0
+ecom: 
+= ref Environment 10 1
+  name .b198 ref Environment 0 0
+  name nil ref Environment 1 0
+ecom: 
+name nil ref Environment 1 0
+ecom to: 
+name .b198 ref Environment 0 0
+ecom: 
+* string 10 1
+  hd ref Var 10 1
+    name vl list of ref Var 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b199 big 0 0
+    const (72) int 6 0
+eacom: 
+* string 10 1
+  hd ref Var 10 1
+    name vl list of ref Var 0 0
+generate desc for ref Var
+generate desc for ref Var
+	desc	$-1,8,"80"
+ecom: 
+hd ref Var 10 1
+  name vl list of ref Var 0 0
+ecom to: 
+name .b198 ref Var 0 0
+ecom: 
+= ref Var 10 1
+  name .b198 ref Var 0 0
+  name nil ref Var 1 0
+ecom: 
+name nil ref Var 1 0
+ecom to: 
+name .b198 ref Var 0 0
+ecom: 
+= ref Var 10 1
+  name .b200 ref Var 0 0
+  name nil ref Var 1 0
+ecom: 
+name nil ref Var 1 0
+ecom to: 
+name .b200 ref Var 0 0
+ecom: 
+|= int 10 1
+  * int 8 0
+    + int 15 1
+      name v ref Var 0 0
+      const flags (16) int 6 0
+  const CHANGED (1) int 6 0
+ecom: 
+call no type 10 2
+  name set fn(ctxt: self ref Context, name: string, val: list of ref Listnode) 11 1
+  seq nothing 10 2
+    name ctxt ref Context 0 0
+    seq no type 10 2
+      * string 10 1
+        hd ref Var 10 1
+          name vl list of ref Var 0 0
+      seq no type 10 1
+        name nil list of ref Listnode 1 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b199 big 0 0
+    const (64) int 6 0
+ecom: 
+* string 10 1
+  hd ref Var 10 1
+    name vl list of ref Var 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b199 big 0 0
+    const (72) int 6 0
+eacom: 
+* string 10 1
+  hd ref Var 10 1
+    name vl list of ref Var 0 0
+generate desc for ref Var
+ecom: 
+hd ref Var 10 1
+  name vl list of ref Var 0 0
+ecom to: 
+name .b200 ref Var 0 0
+ecom: 
+= ref Var 10 1
+  name .b200 ref Var 0 0
+  name nil ref Var 1 0
+ecom: 
+name nil ref Var 1 0
+ecom to: 
+name .b200 ref Var 0 0
+ecom: 
+name nil list of ref Listnode 1 0
+ecom to: 
+* list of ref Listnode 8 0
+  + int 15 0
+    name .b199 big 0 0
+    const (80) int 6 0
+ecom: 
+= ref Var 10 1
+  name v ref Var 0 0
+  name nil ref Var 1 0
+ecom: 
+name nil ref Var 1 0
+ecom to: 
+name v ref Var 0 0
+ecom: 
+= list of ref Var 10 1
+  name vl list of ref Var 0 0
+  tl list of ref Var 10 1
+    name vl list of ref Var 0 0
+ecom: 
+tl list of ref Var 10 1
+  name vl list of ref Var 0 0
+ecom to: 
+name vl list of ref Var 0 0
+ecom: 
+= list of ref Var 10 1
+  name vl list of ref Var 0 0
+  name nil list of ref Var 1 0
+ecom: 
+name nil list of ref Var 1 0
+ecom to: 
+name vl list of ref Var 0 0
+ecom: 
+++ int 10 1
+  name i int 0 0
+  const (1) int 6 0
+ecom: 
+= array of list of ref Var 10 1
+  name oldv array of list of ref Var 0 0
+  name nil array of list of ref Var 1 0
+ecom: 
+name nil array of list of ref Var 1 0
+ecom to: 
+name oldv array of list of ref Var 0 0
+fn: pop
+64: argument ctxt ref Context ref 6
+72: local i int ref 4
+76: local .t201 int ref 1
+80: local .b198 ref Localenv ref 7
+88: local vl list of ref Var ref 6
+96: local .b199 big ref 4
+104: local .b200 ref Localenv ref 4
+112: local oldv array of list of ref Var ref 3
+120: local v ref Var ref 2
+generate desc for Context.pop
+descmap offset 0
+descmap ctxt type ref Context offset 64 (d->offset=64 start=0) returns 64
+descmap i type int offset 72 (d->offset=72 start=0) returns -1
+descmap .t201 type int offset 76 (d->offset=76 start=0) returns -1
+descmap .b198 type ref Localenv offset 80 (d->offset=80 start=0) returns 80
+descmap vl type list of ref Var offset 88 (d->offset=88 start=0) returns 88
+descmap .b199 type big offset 96 (d->offset=96 start=0) returns -1
+descmap .b200 type ref Localenv offset 104 (d->offset=104 start=0) returns 104
+descmap oldv type array of list of ref Var offset 112 (d->offset=112 start=0) returns 112
+descmap v type ref Var offset 120 (d->offset=120 start=0) returns 120
+fncom: run 7 4bd140
+eacom: 
+* ref Node 10 1
+  hd ref Listnode 10 1
+    name args list of ref Listnode 0 0
+generate desc for ref Listnode
+generate desc for ref Listnode
+	desc	$-1,8,"80"
+ecom: 
+hd ref Listnode 10 1
+  name args list of ref Listnode 0 0
+ecom to: 
+name .b202 ref Listnode 0 0
+ecom: 
+= ref Listnode 10 1
+  name .b202 ref Listnode 0 0
+  name nil ref Listnode 1 0
+ecom: 
+name nil ref Listnode 1 0
+ecom to: 
+name .b202 ref Listnode 0 0
+eacom: 
+* string 10 1
+  + int 10 1
+    hd ref Listnode 10 1
+      name args list of ref Listnode 0 0
+    const word (8) int 6 0
+generate desc for ref Listnode
+ecom: 
+hd ref Listnode 10 1
+  name args list of ref Listnode 0 0
+ecom to: 
+name .b202 ref Listnode 0 0
+ecom: 
+= ref Listnode 10 1
+  name .b202 ref Listnode 0 0
+  name nil ref Listnode 1 0
+ecom: 
+name nil ref Listnode 1 0
+ecom to: 
+name .b202 ref Listnode 0 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* polymorphic type 8 0
+  name .ret int 0 0
+ecom: 
+= ref Listnode 10 1
+  name cmd ref Listnode 0 0
+  hd ref Listnode 10 1
+    name args list of ref Listnode 0 0
+ecom: 
+hd ref Listnode 10 1
+  name args list of ref Listnode 0 0
+ecom to: 
+name cmd ref Listnode 0 0
+eacom: 
+inds int 10 1
+  * string 8 0
+    + int 15 1
+      name cmd ref Listnode 0 0
+      const word (8) int 6 0
+  const (0) int 6 0
+ecom: 
+inds int 10 1
+  * string 8 0
+    + int 15 1
+      name cmd ref Listnode 0 0
+      const word (8) int 6 0
+  const (0) int 6 0
+ecom to: 
+name .t203 int 0 0
+ecom: 
+call string 10 2
+  name runblock fn(ctxt: ref Context, args: list of ref Listnode, last: int): string 11 1
+  seq no type 10 1
+    name ctxt ref Context 0 0
+    seq no type 10 1
+      name args list of ref Listnode 0 0
+      seq no type 10 1
+        name last int 0 0
+ecom to: 
+* string 8 0
+  name .ret int 0 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b204 big 0 0
+    const (64) int 6 0
+ecom: 
+name args list of ref Listnode 0 0
+ecom to: 
+* list of ref Listnode 8 0
+  + int 15 0
+    name .b204 big 0 0
+    const (72) int 6 0
+ecom: 
+name last int 0 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b204 big 0 0
+    const (80) int 6 0
+eacom: 
+& int 10 1
+  * int 10 1
+    + int 10 1
+      * ref Localenv 10 1
+        + int 10 1
+          * ref Environment 8 0
+            name ctxt ref Context 0 0
+          const localenv (24) int 6 0
+      const flags (16) int 6 0
+  const EXECPRINT (4) int 6 0
+ecom: 
+& int 10 1
+  * int 10 1
+    + int 10 1
+      * ref Localenv 10 1
+        + int 10 1
+          * ref Environment 8 0
+            name ctxt ref Context 0 0
+          const localenv (24) int 6 0
+      const flags (16) int 6 0
+  const EXECPRINT (4) int 6 0
+ecom to: 
+name .t203 int 0 0
+eacom: 
+* int 10 1
+  + int 10 1
+    * ref Localenv 10 1
+      + int 10 1
+        * ref Environment 8 0
+          name ctxt ref Context 0 0
+        const localenv (24) int 6 0
+    const flags (16) int 6 0
+generate desc for ref Localenv
+ecom: 
+* ref Localenv 10 1
+  + int 10 1
+    * ref Environment 8 0
+      name ctxt ref Context 0 0
+    const localenv (24) int 6 0
+ecom to: 
+name .b202 ref Localenv 0 0
+eacom: 
+* ref Localenv 10 1
+  + int 10 1
+    * ref Environment 8 0
+      name ctxt ref Context 0 0
+    const localenv (24) int 6 0
+generate desc for ref Environment
+ecom: 
+* ref Environment 8 0
+  name ctxt ref Context 0 0
+ecom to: 
+name .b202 ref Environment 0 0
+ecom: 
+= ref Localenv 10 1
+  name .b202 ref Localenv 0 0
+  name nil ref Localenv 1 0
+ecom: 
+name nil ref Localenv 1 0
+ecom to: 
+name .b202 ref Localenv 0 0
+ecom: 
+used int 10 3
+  call int 10 3
+    -> fn(fd: ref Sys->FD, s: string, nil: string, *): int 12 1
+      name sys Sys 1 0
+      name fprint nothing 11 1
+    seq no type 10 3
+      call ref Sys->FD 10 2
+        -> fn(fd: int): ref Sys->FD 12 1
+          name sys Sys 1 0
+          name fildes nothing 11 1
+        seq no type 10 1
+          const (2) int 6 0
+      seq no type 10 2
+        const %s
+ string 1 0
+        seq no type 10 2
+          call string 10 2
+            name quoted fn(val: list of ref Listnode, quoteblocks: int): string 11 1
+            seq no type 10 1
+              name args list of ref Listnode 0 0
+              seq no type 10 1
+                const (0) int 6 0
+ecom: 
+call int 10 3
+  -> fn(fd: ref Sys->FD, s: string, nil: string, *): int 12 1
+    name sys Sys 1 0
+    name fprint nothing 11 1
+  seq no type 10 3
+    call ref Sys->FD 10 2
+      -> fn(fd: int): ref Sys->FD 12 1
+        name sys Sys 1 0
+        name fildes nothing 11 1
+      seq no type 10 1
+        const (2) int 6 0
+    seq no type 10 2
+      const %s
+ string 1 0
+      seq no type 10 2
+        call string 10 2
+          name quoted fn(val: list of ref Listnode, quoteblocks: int): string 11 1
+          seq no type 10 1
+            name args list of ref Listnode 0 0
+            seq no type 10 1
+              const (0) int 6 0
+ecom to: 
+name .t203 int 0 0
+generate desc for Sys->fprint
+descmap offset 0
+descmap fd type ref Sys->FD offset 64 (d->offset=64 start=0) returns 64
+descmap s type string offset 72 (d->offset=72 start=0) returns 72
+descmap type string offset 80 returns 80
+generate desc for big
+generate desc for ref Sys->FD
+ecom: 
+call ref Sys->FD 10 2
+  -> fn(fd: int): ref Sys->FD 12 1
+    name sys Sys 1 0
+    name fildes nothing 11 1
+  seq no type 10 1
+    const (2) int 6 0
+ecom to: 
+name .b202 ref Sys->FD 0 0
+generate desc for big
+ecom: 
+const (2) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b205 big 0 0
+    const (64) int 6 0
+ecom: 
+call string 10 2
+  name quoted fn(val: list of ref Listnode, quoteblocks: int): string 11 1
+  seq no type 10 1
+    name args list of ref Listnode 0 0
+    seq no type 10 1
+      const (0) int 6 0
+ecom to: 
+name .t206 string 0 0
+generate desc for big
+ecom: 
+name args list of ref Listnode 0 0
+ecom to: 
+* list of ref Listnode 8 0
+  + int 15 0
+    name .b205 big 0 0
+    const (64) int 6 0
+ecom: 
+const (0) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b205 big 0 0
+    const (72) int 6 0
+ecom: 
+name .b202 ref Sys->FD 0 0
+ecom to: 
+* ref Sys->FD 8 0
+  + int 15 0
+    name .b204 big 0 0
+    const (64) int 6 0
+ecom: 
+= ref Sys->FD 10 1
+  name .b202 ref Sys->FD 0 0
+  name nil ref Sys->FD 1 0
+ecom: 
+name nil ref Sys->FD 1 0
+ecom to: 
+name .b202 ref Sys->FD 0 0
+ecom: 
+const %s
+ string 1 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b204 big 0 0
+    const (72) int 6 0
+ecom: 
+name .t206 string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b204 big 0 0
+    const (80) int 6 0
+ecom: 
+= string 10 1
+  name .t206 string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name .t206 string 0 0
+ecom: 
+= (int, string) 10 2
+  tuple (int, string) 10 1
+    seq nothing 10 1
+      name doneit int 0 0
+      seq nothing 10 1
+        name status string 0 0
+  call (int, string) 10 2
+    name trybuiltin fn(ctxt: ref Context, args: list of ref Listnode, lseq: int): (int, string) 11 1
+    seq no type 10 1
+      name ctxt ref Context 0 0
+      seq no type 10 1
+        name args list of ref Listnode 0 0
+        seq no type 10 1
+          name last int 0 0
+ecom: 
+call (int, string) 10 2
+  name trybuiltin fn(ctxt: ref Context, args: list of ref Listnode, lseq: int): (int, string) 11 1
+  seq no type 10 1
+    name ctxt ref Context 0 0
+    seq no type 10 1
+      name args list of ref Listnode 0 0
+      seq no type 10 1
+        name last int 0 0
+ecom to: 
+name doneit (int, string) 0 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b205 big 0 0
+    const (64) int 6 0
+ecom: 
+name args list of ref Listnode 0 0
+ecom to: 
+* list of ref Listnode 8 0
+  + int 15 0
+    name .b205 big 0 0
+    const (72) int 6 0
+ecom: 
+name last int 0 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b205 big 0 0
+    const (80) int 6 0
+ecom: 
+= string 10 2
+  name status string 0 0
+  call string 10 2
+    name runexternal fn(ctxt: ref Context, args: list of ref Listnode, last: int): string 11 1
+    seq no type 10 1
+      name ctxt ref Context 0 0
+      seq no type 10 1
+        name args list of ref Listnode 0 0
+        seq no type 10 1
+          name last int 0 0
+ecom: 
+call string 10 2
+  name runexternal fn(ctxt: ref Context, args: list of ref Listnode, last: int): string 11 1
+  seq no type 10 1
+    name ctxt ref Context 0 0
+    seq no type 10 1
+      name args list of ref Listnode 0 0
+      seq no type 10 1
+        name last int 0 0
+ecom to: 
+name status string 0 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b205 big 0 0
+    const (64) int 6 0
+ecom: 
+name args list of ref Listnode 0 0
+ecom to: 
+* list of ref Listnode 8 0
+  + int 15 0
+    name .b205 big 0 0
+    const (72) int 6 0
+ecom: 
+name last int 0 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b205 big 0 0
+    const (80) int 6 0
+ecom: 
+name status string 0 0
+ecom to: 
+* string 8 0
+  name .ret int 0 0
+fn: run
+64: argument ctxt ref Context ref 5
+72: argument args list of ref Listnode ref 8
+80: argument last int ref 3
+88: local doneit int ref 2
+96: local status string ref 3
+104: local .t203 int ref 1
+112: local .b202 ref Listnode ref 5
+120: local .b205 big ref 4
+128: local cmd ref Listnode ref 3
+136: local .b204 big ref 2
+144: local .t206 string ref 1
+generate desc for Context.run
+descmap offset 0
+descmap ctxt type ref Context offset 64 (d->offset=64 start=0) returns 64
+descmap args type list of ref Listnode offset 72 (d->offset=72 start=0) returns 72
+descmap last type int offset 80 (d->offset=80 start=0) returns -1
+descmap doneit type int offset 88 (d->offset=88 start=0) returns -1
+descmap status type string offset 96 (d->offset=96 start=0) returns 96
+descmap .t203 type int offset 104 (d->offset=104 start=0) returns -1
+descmap .b202 type ref Listnode offset 112 (d->offset=112 start=0) returns 112
+descmap .b205 type big offset 120 (d->offset=120 start=0) returns -1
+descmap cmd type ref Listnode offset 128 (d->offset=128 start=0) returns 128
+descmap .b204 type big offset 136 (d->offset=136 start=0) returns -1
+descmap .t206 type string offset 144 (d->offset=144 start=0) returns 144
+fncom: addmodule 2 4bdb40
+ecom: 
+used string 10 2
+  call string 10 2
+    -> fn(c: ref Context, sh: Sh): string 12 1
+      name mod Shellbuiltin 0 0
+      name initbuiltin nothing 11 1
+    seq no type 10 1
+      name ctxt ref Context 0 0
+      seq no type 10 1
+        name myself Sh 1 0
+ecom: 
+call string 10 2
+  -> fn(c: ref Context, sh: Sh): string 12 1
+    name mod Shellbuiltin 0 0
+    name initbuiltin nothing 11 1
+  seq no type 10 1
+    name ctxt ref Context 0 0
+    seq no type 10 1
+      name myself Sh 1 0
+ecom to: 
+name .t207 string 0 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b208 big 0 0
+    const (64) int 6 0
+ecom: 
+name myself Sh 1 0
+ecom to: 
+* Sh 8 0
+  + int 15 0
+    name .b208 big 0 0
+    const (72) int 6 0
+ecom: 
+= string 10 1
+  name .t207 string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name .t207 string 0 0
+ecom: 
+= list of (string, Shellbuiltin) 10 2
+  * list of (string, Shellbuiltin) 10 1
+    + int 10 1
+      * ref Environment 8 0
+        name ctxt ref Context 0 0
+      const bmods (16) int 6 0
+  :: list of (string, Shellbuiltin) 10 2
+    tuple (string, Shellbuiltin) 10 1
+      seq no type 10 1
+        name name string 0 0
+        seq no type 10 1
+          call Shellbuiltin 10 1
+            -> fn(): Shellbuiltin 12 1
+              name mod Shellbuiltin 0 0
+              name getself nothing 11 1
+    * list of (string, Shellbuiltin) 10 1
+      + int 10 1
+        * ref Environment 8 0
+          name ctxt ref Context 0 0
+        const bmods (16) int 6 0
+eacom: 
+* list of (string, Shellbuiltin) 10 1
+  + int 10 1
+    * ref Environment 8 0
+      name ctxt ref Context 0 0
+    const bmods (16) int 6 0
+generate desc for ref Environment
+ecom: 
+* ref Environment 8 0
+  name ctxt ref Context 0 0
+ecom to: 
+name .b209 ref Environment 0 0
+ecom: 
+:: list of (string, Shellbuiltin) 10 2
+  tuple (string, Shellbuiltin) 10 1
+    seq no type 10 1
+      name name string 0 0
+      seq no type 10 1
+        call Shellbuiltin 10 1
+          -> fn(): Shellbuiltin 12 1
+            name mod Shellbuiltin 0 0
+            name getself nothing 11 1
+  * list of (string, Shellbuiltin) 10 1
+    + int 10 1
+      * ref Environment 8 0
+        name ctxt ref Context 0 0
+      const bmods (16) int 6 0
+ecom to: 
+* list of (string, Shellbuiltin) 8 1
+  + int 15 1
+    name .b209 ref Environment 0 0
+    const bmods (16) int 6 0
+eacom: 
+tuple (string, Shellbuiltin) 10 1
+  seq no type 10 1
+    name name string 0 0
+    seq no type 10 1
+      call Shellbuiltin 10 1
+        -> fn(): Shellbuiltin 12 1
+          name mod Shellbuiltin 0 0
+          name getself nothing 11 1
+generate desc for (string, Shellbuiltin)
+descmap adt offset 0
+descmap offset 0
+descmap t0 type string offset 0 (d->offset=0 start=0) returns 0
+descmap t1 type Shellbuiltin offset 8 (d->offset=8 start=0) returns 8
+generate desc for (string, Shellbuiltin)
+	desc	$-1,16,"c0"
+ecom: 
+tuple (string, Shellbuiltin) 10 1
+  seq no type 10 1
+    name name string 0 0
+    seq no type 10 1
+      call Shellbuiltin 10 1
+        -> fn(): Shellbuiltin 12 1
+          name mod Shellbuiltin 0 0
+          name getself nothing 11 1
+ecom to: 
+name .b210 (string, Shellbuiltin) 0 0
+ecom: 
+name name string 0 0
+ecom to: 
+* string 0 0
+  + int 13 1
+    adr int 13 1
+      name .b210 (string, Shellbuiltin) 0 0
+    const (0) int 6 0
+ecom: 
+call Shellbuiltin 10 1
+  -> fn(): Shellbuiltin 12 1
+    name mod Shellbuiltin 0 0
+    name getself nothing 11 1
+ecom to: 
+* Shellbuiltin 0 0
+  + int 13 1
+    adr int 13 1
+      name .b210 (string, Shellbuiltin) 0 0
+    const (8) int 6 0
+generate desc for big
+ecom: 
+* list of (string, Shellbuiltin) 10 1
+  + int 10 1
+    * ref Environment 8 0
+      name ctxt ref Context 0 0
+    const bmods (16) int 6 0
+ecom to: 
+name .t207 list of (string, Shellbuiltin) 0 0
+eacom: 
+* list of (string, Shellbuiltin) 10 1
+  + int 10 1
+    * ref Environment 8 0
+      name ctxt ref Context 0 0
+    const bmods (16) int 6 0
+generate desc for ref Environment
+ecom: 
+* ref Environment 8 0
+  name ctxt ref Context 0 0
+ecom to: 
+name .b211 ref Environment 0 0
+ecom: 
+= ref Environment 10 1
+  name .b211 ref Environment 0 0
+  name nil ref Environment 1 0
+ecom: 
+name nil ref Environment 1 0
+ecom to: 
+name .b211 ref Environment 0 0
+generate desc for (string, Shellbuiltin)
+ecom: 
+= string 10 1
+  * string 0 0
+    adr int 13 1
+      name .b210 (string, Shellbuiltin) 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+* string 0 0
+  adr int 13 1
+    name .b210 (string, Shellbuiltin) 0 0
+ecom: 
+= Shellbuiltin 10 1
+  * Shellbuiltin 0 0
+    + int 13 1
+      adr int 13 1
+        name .b210 (string, Shellbuiltin) 0 0
+      const t1 (8) int 6 0
+  name nil Shellbuiltin 1 0
+ecom: 
+name nil Shellbuiltin 1 0
+ecom to: 
+* Shellbuiltin 0 0
+  + int 13 1
+    adr int 13 1
+      name .b210 (string, Shellbuiltin) 0 0
+    const t1 (8) int 6 0
+ecom: 
+= list of (string, Shellbuiltin) 10 1
+  name .t207 list of (string, Shellbuiltin) 0 0
+  name nil list of (string, Shellbuiltin) 1 0
+ecom: 
+name nil list of (string, Shellbuiltin) 1 0
+ecom to: 
+name .t207 list of (string, Shellbuiltin) 0 0
+ecom: 
+= ref Environment 10 1
+  name .b209 ref Environment 0 0
+  name nil ref Environment 1 0
+ecom: 
+name nil ref Environment 1 0
+ecom to: 
+name .b209 ref Environment 0 0
+fn: addmodule
+64: argument ctxt ref Context ref 3
+72: argument name string ref 1
+80: argument mod Shellbuiltin ref 2
+88: local .b208 big ref 2
+96: local .b209 ref Environment ref 1
+104: local .b211 ref Environment ref 1
+112: local .t207 string ref 1
+120: local .b210 (string, Shellbuiltin) ref 1
+generate desc for Context.addmodule
+descmap offset 0
+descmap ctxt type ref Context offset 64 (d->offset=64 start=0) returns 64
+descmap name type string offset 72 (d->offset=72 start=0) returns 72
+descmap mod type Shellbuiltin offset 80 (d->offset=80 start=0) returns 80
+descmap .b208 type big offset 88 (d->offset=88 start=0) returns -1
+descmap .b209 type ref Environment offset 96 (d->offset=96 start=0) returns 96
+descmap .b211 type ref Environment offset 104 (d->offset=104 start=0) returns 104
+descmap .t207 type string offset 112 (d->offset=112 start=0) returns 112
+descmap adt offset 120
+descmap offset 120
+descmap t0 type string offset 120 (d->offset=0 start=120) returns 120
+descmap t1 type Shellbuiltin offset 128 (d->offset=8 start=120) returns 128
+descmap .b210 type (string, Shellbuiltin) offset 120 (d->offset=120 start=0) returns 128
+fncom: addbuiltin 3 4be4c0
+ecom: 
+call no type 10 2
+  name addbuiltin fn(b: ref Builtins, name: string, mod: Shellbuiltin) 11 1
+  seq no type 10 2
+    * ref Builtins 10 1
+      + int 10 1
+        * ref Environment 8 0
+          name c ref Context 0 0
+        const builtins (8) int 6 0
+    seq no type 10 1
+      name name string 0 0
+      seq no type 10 1
+        name mod Shellbuiltin 0 0
+generate desc for big
+ecom: 
+* ref Builtins 10 1
+  + int 10 1
+    * ref Environment 8 0
+      name c ref Context 0 0
+    const builtins (8) int 6 0
+ecom to: 
+* ref Builtins 8 0
+  + int 15 0
+    name .b212 big 0 0
+    const (64) int 6 0
+eacom: 
+* ref Builtins 10 1
+  + int 10 1
+    * ref Environment 8 0
+      name c ref Context 0 0
+    const builtins (8) int 6 0
+generate desc for ref Environment
+ecom: 
+* ref Environment 8 0
+  name c ref Context 0 0
+ecom to: 
+name .b213 ref Environment 0 0
+ecom: 
+= ref Environment 10 1
+  name .b213 ref Environment 0 0
+  name nil ref Environment 1 0
+ecom: 
+name nil ref Environment 1 0
+ecom to: 
+name .b213 ref Environment 0 0
+ecom: 
+name name string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b212 big 0 0
+    const (72) int 6 0
+ecom: 
+name mod Shellbuiltin 0 0
+ecom to: 
+* Shellbuiltin 8 0
+  + int 15 0
+    name .b212 big 0 0
+    const (80) int 6 0
+fn: addbuiltin
+64: argument c ref Context ref 1
+72: argument name string ref 1
+80: argument mod Shellbuiltin ref 1
+88: local .b212 big ref 1
+96: local .b213 ref Environment ref 1
+generate desc for Context.addbuiltin
+descmap offset 0
+descmap c type ref Context offset 64 (d->offset=64 start=0) returns 64
+descmap name type string offset 72 (d->offset=72 start=0) returns 72
+descmap mod type Shellbuiltin offset 80 (d->offset=80 start=0) returns 80
+descmap .b212 type big offset 88 (d->offset=88 start=0) returns -1
+descmap .b213 type ref Environment offset 96 (d->offset=96 start=0) returns 96
+fncom: removebuiltin 2 4bec50
+ecom: 
+call no type 10 2
+  name removebuiltin fn(b: ref Builtins, name: string, mod: Shellbuiltin) 11 1
+  seq no type 10 2
+    * ref Builtins 10 1
+      + int 10 1
+        * ref Environment 8 0
+          name c ref Context 0 0
+        const builtins (8) int 6 0
+    seq no type 10 1
+      name name string 0 0
+      seq no type 10 1
+        name mod Shellbuiltin 0 0
+generate desc for big
+ecom: 
+* ref Builtins 10 1
+  + int 10 1
+    * ref Environment 8 0
+      name c ref Context 0 0
+    const builtins (8) int 6 0
+ecom to: 
+* ref Builtins 8 0
+  + int 15 0
+    name .b214 big 0 0
+    const (64) int 6 0
+eacom: 
+* ref Builtins 10 1
+  + int 10 1
+    * ref Environment 8 0
+      name c ref Context 0 0
+    const builtins (8) int 6 0
+generate desc for ref Environment
+ecom: 
+* ref Environment 8 0
+  name c ref Context 0 0
+ecom to: 
+name .b215 ref Environment 0 0
+ecom: 
+= ref Environment 10 1
+  name .b215 ref Environment 0 0
+  name nil ref Environment 1 0
+ecom: 
+name nil ref Environment 1 0
+ecom to: 
+name .b215 ref Environment 0 0
+ecom: 
+name name string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b214 big 0 0
+    const (72) int 6 0
+ecom: 
+name mod Shellbuiltin 0 0
+ecom to: 
+* Shellbuiltin 8 0
+  + int 15 0
+    name .b214 big 0 0
+    const (80) int 6 0
+fn: removebuiltin
+64: argument c ref Context ref 1
+72: argument name string ref 1
+80: argument mod Shellbuiltin ref 1
+88: local .b214 big ref 1
+96: local .b215 ref Environment ref 1
+generate desc for Context.removebuiltin
+descmap offset 0
+descmap c type ref Context offset 64 (d->offset=64 start=0) returns 64
+descmap name type string offset 72 (d->offset=72 start=0) returns 72
+descmap mod type Shellbuiltin offset 80 (d->offset=80 start=0) returns 80
+descmap .b214 type big offset 88 (d->offset=88 start=0) returns -1
+descmap .b215 type ref Environment offset 96 (d->offset=96 start=0) returns 96
+fncom: addsbuiltin 7 4bf3d0
+ecom: 
+call no type 10 2
+  name addbuiltin fn(b: ref Builtins, name: string, mod: Shellbuiltin) 11 1
+  seq no type 10 2
+    * ref Builtins 10 1
+      * ref Environment 8 0
+        name c ref Context 0 0
+    seq no type 10 1
+      name name string 0 0
+      seq no type 10 1
+        name mod Shellbuiltin 0 0
+generate desc for big
+ecom: 
+* ref Builtins 10 1
+  * ref Environment 8 0
+    name c ref Context 0 0
+ecom to: 
+* ref Builtins 8 0
+  + int 15 0
+    name .b216 big 0 0
+    const (64) int 6 0
+eacom: 
+* ref Builtins 10 1
+  * ref Environment 8 0
+    name c ref Context 0 0
+generate desc for ref Environment
+ecom: 
+* ref Environment 8 0
+  name c ref Context 0 0
+ecom to: 
+name .b217 ref Environment 0 0
+ecom: 
+= ref Environment 10 1
+  name .b217 ref Environment 0 0
+  name nil ref Environment 1 0
+ecom: 
+name nil ref Environment 1 0
+ecom to: 
+name .b217 ref Environment 0 0
+ecom: 
+name name string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b216 big 0 0
+    const (72) int 6 0
+ecom: 
+name mod Shellbuiltin 0 0
+ecom to: 
+* Shellbuiltin 8 0
+  + int 15 0
+    name .b216 big 0 0
+    const (80) int 6 0
+fn: addsbuiltin
+64: argument c ref Context ref 1
+72: argument name string ref 1
+80: argument mod Shellbuiltin ref 1
+88: local .b216 big ref 1
+96: local .b217 ref Environment ref 1
+generate desc for Context.addsbuiltin
+descmap offset 0
+descmap c type ref Context offset 64 (d->offset=64 start=0) returns 64
+descmap name type string offset 72 (d->offset=72 start=0) returns 72
+descmap mod type Shellbuiltin offset 80 (d->offset=80 start=0) returns 80
+descmap .b216 type big offset 88 (d->offset=88 start=0) returns -1
+descmap .b217 type ref Environment offset 96 (d->offset=96 start=0) returns 96
+fncom: removesbuiltin 2 4bfb58
+ecom: 
+call no type 10 2
+  name removebuiltin fn(b: ref Builtins, name: string, mod: Shellbuiltin) 11 1
+  seq no type 10 2
+    * ref Builtins 10 1
+      * ref Environment 8 0
+        name c ref Context 0 0
+    seq no type 10 1
+      name name string 0 0
+      seq no type 10 1
+        name mod Shellbuiltin 0 0
+generate desc for big
+ecom: 
+* ref Builtins 10 1
+  * ref Environment 8 0
+    name c ref Context 0 0
+ecom to: 
+* ref Builtins 8 0
+  + int 15 0
+    name .b218 big 0 0
+    const (64) int 6 0
+eacom: 
+* ref Builtins 10 1
+  * ref Environment 8 0
+    name c ref Context 0 0
+generate desc for ref Environment
+ecom: 
+* ref Environment 8 0
+  name c ref Context 0 0
+ecom to: 
+name .b219 ref Environment 0 0
+ecom: 
+= ref Environment 10 1
+  name .b219 ref Environment 0 0
+  name nil ref Environment 1 0
+ecom: 
+name nil ref Environment 1 0
+ecom to: 
+name .b219 ref Environment 0 0
+ecom: 
+name name string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b218 big 0 0
+    const (72) int 6 0
+ecom: 
+name mod Shellbuiltin 0 0
+ecom to: 
+* Shellbuiltin 8 0
+  + int 15 0
+    name .b218 big 0 0
+    const (80) int 6 0
+fn: removesbuiltin
+64: argument c ref Context ref 1
+72: argument name string ref 1
+80: argument mod Shellbuiltin ref 1
+88: local .b218 big ref 1
+96: local .b219 ref Environment ref 1
+generate desc for Context.removesbuiltin
+descmap offset 0
+descmap c type ref Context offset 64 (d->offset=64 start=0) returns 64
+descmap name type string offset 72 (d->offset=72 start=0) returns 72
+descmap mod type Shellbuiltin offset 80 (d->offset=80 start=0) returns 80
+descmap .b218 type big offset 88 (d->offset=88 start=0) returns -1
+descmap .b219 type ref Environment offset 96 (d->offset=96 start=0) returns 96
+fncom: varfind 3 419828
+ecom: 
+= int 10 2
+  name idx int 0 0
+  call int 10 2
+    name hashfn fn(s: string, n: int): int 11 1
+    seq no type 10 1
+      name name string 0 0
+      seq no type 10 1
+        len int 10 1
+          * array of list of ref Var 8 0
+            name e ref Localenv 0 0
+ecom: 
+call int 10 2
+  name hashfn fn(s: string, n: int): int 11 1
+  seq no type 10 1
+    name name string 0 0
+    seq no type 10 1
+      len int 10 1
+        * array of list of ref Var 8 0
+          name e ref Localenv 0 0
+ecom to: 
+name idx int 0 0
+generate desc for big
+ecom: 
+name name string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b220 big 0 0
+    const (64) int 6 0
+ecom: 
+len int 10 1
+  * array of list of ref Var 8 0
+    name e ref Localenv 0 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b220 big 0 0
+    const (72) int 6 0
+ecom: 
+= list of ref Var 10 1
+  name vl list of ref Var 0 0
+  * list of ref Var 10 1
+    indx big 10 1
+      * array of list of ref Var 8 0
+        name e ref Localenv 0 0
+      name idx int 0 0
+ecom: 
+* list of ref Var 10 1
+  indx big 10 1
+    * array of list of ref Var 8 0
+      name e ref Localenv 0 0
+    name idx int 0 0
+ecom to: 
+name vl list of ref Var 0 0
+eacom: 
+* list of ref Var 10 1
+  indx big 10 1
+    * array of list of ref Var 8 0
+      name e ref Localenv 0 0
+    name idx int 0 0
+generate desc for big
+ecom: 
+indx big 10 1
+  * array of list of ref Var 8 0
+    name e ref Localenv 0 0
+  name idx int 0 0
+ecom to: 
+name .b220 big 0 0
+eacom: 
+* string 10 1
+  hd ref Var 10 1
+    name vl list of ref Var 0 0
+generate desc for ref Var
+ecom: 
+hd ref Var 10 1
+  name vl list of ref Var 0 0
+ecom to: 
+name .b221 ref Var 0 0
+ecom: 
+= ref Var 10 1
+  name .b221 ref Var 0 0
+  name nil ref Var 1 0
+ecom: 
+name nil ref Var 1 0
+ecom to: 
+name .b221 ref Var 0 0
+ecom: 
+hd ref Var 10 1
+  name vl list of ref Var 0 0
+ecom to: 
+* ref Var 8 0
+  name .ret int 0 0
+ecom: 
+= list of ref Var 10 1
+  name vl list of ref Var 0 0
+  tl list of ref Var 10 1
+    name vl list of ref Var 0 0
+ecom: 
+tl list of ref Var 10 1
+  name vl list of ref Var 0 0
+ecom to: 
+name vl list of ref Var 0 0
+ecom: 
+= ref Localenv 10 1
+  name e ref Localenv 0 0
+  * ref Localenv 8 0
+    + int 15 1
+      name e ref Localenv 0 0
+      const pushed (8) int 6 0
+ecom: 
+* ref Localenv 8 0
+  + int 15 1
+    name e ref Localenv 0 0
+    const pushed (8) int 6 0
+ecom to: 
+name e ref Localenv 0 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* polymorphic type 8 0
+  name .ret int 0 0
+fn: varfind
+64: argument e ref Localenv ref 5
+72: argument name string ref 2
+80: local idx int ref 2
+88: local vl list of ref Var ref 6
+96: local .b220 big ref 2
+104: local .b221 ref Var ref 1
+generate desc for varfind
+descmap offset 0
+descmap e type ref Localenv offset 64 (d->offset=64 start=0) returns 64
+descmap name type string offset 72 (d->offset=72 start=0) returns 72
+descmap idx type int offset 80 (d->offset=80 start=0) returns -1
+descmap vl type list of ref Var offset 88 (d->offset=88 start=0) returns 88
+descmap .b220 type big offset 96 (d->offset=96 start=0) returns -1
+descmap .b221 type ref Var offset 104 (d->offset=104 start=0) returns 104
+fncom: fail 27 4c02d8
+eacom: 
+& int 10 1
+  * int 10 1
+    + int 10 1
+      * ref Localenv 10 1
+        + int 10 1
+          * ref Environment 8 0
+            name ctxt ref Context 0 0
+          const localenv (24) int 6 0
+      const flags (16) int 6 0
+  const VERBOSE (2) int 6 0
+ecom: 
+& int 10 1
+  * int 10 1
+    + int 10 1
+      * ref Localenv 10 1
+        + int 10 1
+          * ref Environment 8 0
+            name ctxt ref Context 0 0
+          const localenv (24) int 6 0
+      const flags (16) int 6 0
+  const VERBOSE (2) int 6 0
+ecom to: 
+name .t222 int 0 0
+eacom: 
+* int 10 1
+  + int 10 1
+    * ref Localenv 10 1
+      + int 10 1
+        * ref Environment 8 0
+          name ctxt ref Context 0 0
+        const localenv (24) int 6 0
+    const flags (16) int 6 0
+generate desc for ref Localenv
+ecom: 
+* ref Localenv 10 1
+  + int 10 1
+    * ref Environment 8 0
+      name ctxt ref Context 0 0
+    const localenv (24) int 6 0
+ecom to: 
+name .b223 ref Localenv 0 0
+eacom: 
+* ref Localenv 10 1
+  + int 10 1
+    * ref Environment 8 0
+      name ctxt ref Context 0 0
+    const localenv (24) int 6 0
+generate desc for ref Environment
+ecom: 
+* ref Environment 8 0
+  name ctxt ref Context 0 0
+ecom to: 
+name .b223 ref Environment 0 0
+ecom: 
+= ref Localenv 10 1
+  name .b223 ref Localenv 0 0
+  name nil ref Localenv 1 0
+ecom: 
+name nil ref Localenv 1 0
+ecom to: 
+name .b223 ref Localenv 0 0
+ecom: 
+used int 10 2
+  call int 10 2
+    -> fn(fd: ref Sys->FD, s: string, nil: string, *): int 12 1
+      name sys Sys 1 0
+      name fprint nothing 11 1
+    seq no type 10 2
+      call ref Sys->FD 10 2
+        -> fn(fd: int): ref Sys->FD 12 1
+          name sys Sys 1 0
+          name fildes nothing 11 1
+        seq no type 10 1
+          const (2) int 6 0
+      seq no type 10 1
+        const %s
+ string 1 0
+        seq no type 10 1
+          name err string 0 0
+ecom: 
+call int 10 2
+  -> fn(fd: ref Sys->FD, s: string, nil: string, *): int 12 1
+    name sys Sys 1 0
+    name fprint nothing 11 1
+  seq no type 10 2
+    call ref Sys->FD 10 2
+      -> fn(fd: int): ref Sys->FD 12 1
+        name sys Sys 1 0
+        name fildes nothing 11 1
+      seq no type 10 1
+        const (2) int 6 0
+    seq no type 10 1
+      const %s
+ string 1 0
+      seq no type 10 1
+        name err string 0 0
+ecom to: 
+name .t222 int 0 0
+generate desc for Sys->fprint
+descmap offset 0
+descmap fd type ref Sys->FD offset 64 (d->offset=64 start=0) returns 64
+descmap s type string offset 72 (d->offset=72 start=0) returns 72
+descmap type string offset 80 returns 80
+generate desc for big
+generate desc for ref Sys->FD
+ecom: 
+call ref Sys->FD 10 2
+  -> fn(fd: int): ref Sys->FD 12 1
+    name sys Sys 1 0
+    name fildes nothing 11 1
+  seq no type 10 1
+    const (2) int 6 0
+ecom to: 
+name .b223 ref Sys->FD 0 0
+generate desc for big
+ecom: 
+const (2) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b225 big 0 0
+    const (64) int 6 0
+ecom: 
+name .b223 ref Sys->FD 0 0
+ecom to: 
+* ref Sys->FD 8 0
+  + int 15 0
+    name .b224 big 0 0
+    const (64) int 6 0
+ecom: 
+= ref Sys->FD 10 1
+  name .b223 ref Sys->FD 0 0
+  name nil ref Sys->FD 1 0
+ecom: 
+name nil ref Sys->FD 1 0
+ecom to: 
+name .b223 ref Sys->FD 0 0
+ecom: 
+const %s
+ string 1 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b224 big 0 0
+    const (72) int 6 0
+ecom: 
+name err string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b224 big 0 0
+    const (80) int 6 0
+ecom: 
+raise nothing 10 1
+  + string 10 1
+    const fail: string 1 0
+    name ename string 0 0
+eacom: 
++ string 10 1
+  const fail: string 1 0
+  name ename string 0 0
+ecom: 
++ string 10 1
+  const fail: string 1 0
+  name ename string 0 0
+ecom to: 
+name .t226 string 0 0
+ecom: 
+= string 10 1
+  name .t226 string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name .t226 string 0 0
+fn: fail
+64: argument ctxt ref Context ref 1
+72: argument ename string ref 1
+80: argument err string ref 1
+88: local .t222 int ref 1
+96: local .b223 ref Localenv ref 3
+104: local .b224 big ref 1
+112: local .b225 big ref 1
+120: local .t226 string ref 1
+generate desc for Context.fail
+descmap offset 0
+descmap ctxt type ref Context offset 64 (d->offset=64 start=0) returns 64
+descmap ename type string offset 72 (d->offset=72 start=0) returns 72
+descmap err type string offset 80 (d->offset=80 start=0) returns 80
+descmap .t222 type int offset 88 (d->offset=88 start=0) returns -1
+descmap .b223 type ref Localenv offset 96 (d->offset=96 start=0) returns 96
+descmap .b224 type big offset 104 (d->offset=104 start=0) returns -1
+descmap .b225 type big offset 112 (d->offset=112 start=0) returns -1
+descmap .t226 type string offset 120 (d->offset=120 start=0) returns 120
+fncom: setoptions 6 4c1058
+ecom: 
+= int 10 1
+  name old int 0 0
+  * int 10 1
+    + int 10 1
+      * ref Localenv 10 1
+        + int 10 1
+          * ref Environment 8 0
+            name ctxt ref Context 0 0
+          const localenv (24) int 6 0
+      const flags (16) int 6 0
+ecom: 
+* int 10 1
+  + int 10 1
+    * ref Localenv 10 1
+      + int 10 1
+        * ref Environment 8 0
+          name ctxt ref Context 0 0
+        const localenv (24) int 6 0
+    const flags (16) int 6 0
+ecom to: 
+name old int 0 0
+eacom: 
+* int 10 1
+  + int 10 1
+    * ref Localenv 10 1
+      + int 10 1
+        * ref Environment 8 0
+          name ctxt ref Context 0 0
+        const localenv (24) int 6 0
+    const flags (16) int 6 0
+generate desc for ref Localenv
+ecom: 
+* ref Localenv 10 1
+  + int 10 1
+    * ref Environment 8 0
+      name ctxt ref Context 0 0
+    const localenv (24) int 6 0
+ecom to: 
+name .b227 ref Localenv 0 0
+eacom: 
+* ref Localenv 10 1
+  + int 10 1
+    * ref Environment 8 0
+      name ctxt ref Context 0 0
+    const localenv (24) int 6 0
+generate desc for ref Environment
+ecom: 
+* ref Environment 8 0
+  name ctxt ref Context 0 0
+ecom to: 
+name .b227 ref Environment 0 0
+ecom: 
+= ref Localenv 10 1
+  name .b227 ref Localenv 0 0
+  name nil ref Localenv 1 0
+ecom: 
+name nil ref Localenv 1 0
+ecom to: 
+name .b227 ref Localenv 0 0
+ecom: 
+|= int 10 1
+  * int 10 1
+    + int 10 1
+      * ref Localenv 10 1
+        + int 10 1
+          * ref Environment 8 0
+            name ctxt ref Context 0 0
+          const localenv (24) int 6 0
+      const flags (16) int 6 0
+  name flags int 0 0
+eacom: 
+* int 10 1
+  + int 10 1
+    * ref Localenv 10 1
+      + int 10 1
+        * ref Environment 8 0
+          name ctxt ref Context 0 0
+        const localenv (24) int 6 0
+    const flags (16) int 6 0
+generate desc for ref Localenv
+ecom: 
+* ref Localenv 10 1
+  + int 10 1
+    * ref Environment 8 0
+      name ctxt ref Context 0 0
+    const localenv (24) int 6 0
+ecom to: 
+name .b227 ref Localenv 0 0
+eacom: 
+* ref Localenv 10 1
+  + int 10 1
+    * ref Environment 8 0
+      name ctxt ref Context 0 0
+    const localenv (24) int 6 0
+generate desc for ref Environment
+ecom: 
+* ref Environment 8 0
+  name ctxt ref Context 0 0
+ecom to: 
+name .b227 ref Environment 0 0
+ecom: 
+= ref Localenv 10 1
+  name .b227 ref Localenv 0 0
+  name nil ref Localenv 1 0
+ecom: 
+name nil ref Localenv 1 0
+ecom to: 
+name .b227 ref Localenv 0 0
+ecom: 
+&= int 10 2
+  * int 10 1
+    + int 10 1
+      * ref Localenv 10 1
+        + int 10 1
+          * ref Environment 8 0
+            name ctxt ref Context 0 0
+          const localenv (24) int 6 0
+      const flags (16) int 6 0
+  ^ int 10 1
+    name flags int 0 0
+    const (-1) int 6 0
+eacom: 
+* int 10 1
+  + int 10 1
+    * ref Localenv 10 1
+      + int 10 1
+        * ref Environment 8 0
+          name ctxt ref Context 0 0
+        const localenv (24) int 6 0
+    const flags (16) int 6 0
+generate desc for ref Localenv
+ecom: 
+* ref Localenv 10 1
+  + int 10 1
+    * ref Environment 8 0
+      name ctxt ref Context 0 0
+    const localenv (24) int 6 0
+ecom to: 
+name .b227 ref Localenv 0 0
+eacom: 
+* ref Localenv 10 1
+  + int 10 1
+    * ref Environment 8 0
+      name ctxt ref Context 0 0
+    const localenv (24) int 6 0
+generate desc for ref Environment
+ecom: 
+* ref Environment 8 0
+  name ctxt ref Context 0 0
+ecom to: 
+name .b227 ref Environment 0 0
+eacom: 
+^ int 10 1
+  name flags int 0 0
+  const (-1) int 6 0
+ecom: 
+^ int 10 1
+  name flags int 0 0
+  const (-1) int 6 0
+ecom to: 
+name .t228 int 0 0
+ecom: 
+= ref Localenv 10 1
+  name .b227 ref Localenv 0 0
+  name nil ref Localenv 1 0
+ecom: 
+name nil ref Localenv 1 0
+ecom to: 
+name .b227 ref Localenv 0 0
+ecom: 
+name old int 0 0
+ecom to: 
+* int 8 0
+  name .ret int 0 0
+fn: setoptions
+64: argument ctxt ref Context ref 3
+72: argument flags int ref 2
+76: argument on int ref 1
+80: local old int ref 2
+84: local .t228 int ref 1
+88: local .b227 ref Localenv ref 6
+generate desc for Context.setoptions
+descmap offset 0
+descmap ctxt type ref Context offset 64 (d->offset=64 start=0) returns 64
+descmap flags type int offset 72 (d->offset=72 start=0) returns -1
+descmap on type int offset 76 (d->offset=76 start=0) returns -1
+descmap old type int offset 80 (d->offset=80 start=0) returns -1
+descmap .t228 type int offset 84 (d->offset=84 start=0) returns -1
+descmap .b227 type ref Localenv offset 88 (d->offset=88 start=0) returns 88
+fncom: options 10 4c0af8
+ecom: 
+* int 10 1
+  + int 10 1
+    * ref Localenv 10 1
+      + int 10 1
+        * ref Environment 8 0
+          name ctxt ref Context 0 0
+        const localenv (24) int 6 0
+    const flags (16) int 6 0
+ecom to: 
+* int 8 0
+  name .ret int 0 0
+eacom: 
+* int 10 1
+  + int 10 1
+    * ref Localenv 10 1
+      + int 10 1
+        * ref Environment 8 0
+          name ctxt ref Context 0 0
+        const localenv (24) int 6 0
+    const flags (16) int 6 0
+generate desc for ref Localenv
+ecom: 
+* ref Localenv 10 1
+  + int 10 1
+    * ref Environment 8 0
+      name ctxt ref Context 0 0
+    const localenv (24) int 6 0
+ecom to: 
+name .b229 ref Localenv 0 0
+eacom: 
+* ref Localenv 10 1
+  + int 10 1
+    * ref Environment 8 0
+      name ctxt ref Context 0 0
+    const localenv (24) int 6 0
+generate desc for ref Environment
+ecom: 
+* ref Environment 8 0
+  name ctxt ref Context 0 0
+ecom to: 
+name .b229 ref Environment 0 0
+ecom: 
+= ref Localenv 10 1
+  name .b229 ref Localenv 0 0
+  name nil ref Localenv 1 0
+ecom: 
+name nil ref Localenv 1 0
+ecom to: 
+name .b229 ref Localenv 0 0
+fn: options
+64: argument ctxt ref Context ref 1
+72: local .b229 ref Localenv ref 2
+generate desc for Context.options
+descmap offset 0
+descmap ctxt type ref Context offset 64 (d->offset=64 start=0) returns 64
+descmap .b229 type ref Localenv offset 72 (d->offset=72 start=0) returns 72
+fncom: hashfn 7 4198e8
+ecom: 
+= int 10 1
+  name h int 0 0
+  const (0) int 6 0
+ecom: 
+const (0) int 6 0
+ecom to: 
+name h int 0 0
+ecom: 
+= int 10 1
+  name m int 0 0
+  len int 10 1
+    name s string 0 0
+ecom: 
+len int 10 1
+  name s string 0 0
+ecom to: 
+name m int 0 0
+ecom: 
+= int 10 1
+  name i int 0 0
+  const (0) int 6 0
+ecom: 
+const (0) int 6 0
+ecom to: 
+name i int 0 0
+ecom: 
+= int 10 2
+  name h int 0 0
+  + int 10 2
+    * int 10 1
+      name h int 0 0
+      const (65599) int 6 0
+    inds int 10 1
+      name s string 0 0
+      name i int 0 0
+ecom: 
++ int 10 2
+  * int 10 1
+    name h int 0 0
+    const (65599) int 6 0
+  inds int 10 1
+    name s string 0 0
+    name i int 0 0
+ecom to: 
+name h int 0 0
+ecom: 
+* int 10 1
+  name h int 0 0
+  const (65599) int 6 0
+ecom to: 
+name .t230 int 0 0
+eacom: 
+inds int 10 1
+  name s string 0 0
+  name i int 0 0
+ecom: 
+inds int 10 1
+  name s string 0 0
+  name i int 0 0
+ecom to: 
+name .t231 int 0 0
+ecom: 
+++ int 10 1
+  name i int 0 0
+  const (1) int 6 0
+ecom: 
+% int 10 1
+  & int 10 1
+    name h int 0 0
+    const .i.7fffffff (2147483647) int 1 0
+  name n int 0 0
+ecom to: 
+* int 8 0
+  name .ret int 0 0
+ecom: 
+& int 10 1
+  name h int 0 0
+  const .i.7fffffff (2147483647) int 1 0
+ecom to: 
+name .t231 int 0 0
+fn: hashfn
+64: argument s string ref 2
+72: argument n int ref 1
+76: local h int ref 4
+80: local i int ref 4
+84: local m int ref 2
+88: local .t230 int ref 1
+92: local .t231 int ref 1
+generate desc for hashfn
+descmap offset 0
+descmap s type string offset 64 (d->offset=64 start=0) returns 64
+descmap n type int offset 72 (d->offset=72 start=0) returns -1
+descmap h type int offset 76 (d->offset=76 start=0) returns -1
+descmap i type int offset 80 (d->offset=80 start=0) returns -1
+descmap m type int offset 84 (d->offset=84 start=0) returns -1
+descmap .t230 type int offset 88 (d->offset=88 start=0) returns -1
+descmap .t231 type int offset 92 (d->offset=92 start=0) returns -1
+fncom: hashfind 5 4199a8
+ecom: 
+= list of ref Var 10 1
+  name ent list of ref Var 0 0
+  * list of ref Var 10 1
+    indx big 10 1
+      name ht array of list of ref Var 0 0
+      name idx int 0 0
+ecom: 
+* list of ref Var 10 1
+  indx big 10 1
+    name ht array of list of ref Var 0 0
+    name idx int 0 0
+ecom to: 
+name ent list of ref Var 0 0
+eacom: 
+* list of ref Var 10 1
+  indx big 10 1
+    name ht array of list of ref Var 0 0
+    name idx int 0 0
+generate desc for big
+ecom: 
+indx big 10 1
+  name ht array of list of ref Var 0 0
+  name idx int 0 0
+ecom to: 
+name .b232 big 0 0
+eacom: 
+* string 10 1
+  hd ref Var 10 1
+    name ent list of ref Var 0 0
+generate desc for ref Var
+generate desc for ref Var
+	desc	$-1,8,"80"
+ecom: 
+hd ref Var 10 1
+  name ent list of ref Var 0 0
+ecom to: 
+name .b233 ref Var 0 0
+ecom: 
+= ref Var 10 1
+  name .b233 ref Var 0 0
+  name nil ref Var 1 0
+ecom: 
+name nil ref Var 1 0
+ecom to: 
+name .b233 ref Var 0 0
+ecom: 
+hd ref Var 10 1
+  name ent list of ref Var 0 0
+ecom to: 
+* ref Var 8 0
+  name .ret int 0 0
+ecom: 
+= list of ref Var 10 1
+  name ent list of ref Var 0 0
+  tl list of ref Var 10 1
+    name ent list of ref Var 0 0
+ecom: 
+tl list of ref Var 10 1
+  name ent list of ref Var 0 0
+ecom to: 
+name ent list of ref Var 0 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* polymorphic type 8 0
+  name .ret int 0 0
+fn: hashfind
+64: argument ht array of list of ref Var ref 1
+72: argument idx int ref 1
+80: argument n string ref 1
+88: local ent list of ref Var ref 6
+96: local .b232 big ref 1
+104: local .b233 ref Var ref 1
+generate desc for hashfind
+descmap offset 0
+descmap ht type array of list of ref Var offset 64 (d->offset=64 start=0) returns 64
+descmap idx type int offset 72 (d->offset=72 start=0) returns -1
+descmap n type string offset 80 (d->offset=80 start=0) returns 80
+descmap ent type list of ref Var offset 88 (d->offset=88 start=0) returns 88
+descmap .b232 type big offset 96 (d->offset=96 start=0) returns -1
+descmap .b233 type ref Var offset 104 (d->offset=104 start=0) returns 104
+fncom: hashadd 6 419a68
+ecom: 
+= list of ref Var 10 2
+  * list of ref Var 10 1
+    indx big 10 1
+      name ht array of list of ref Var 0 0
+      name idx int 0 0
+  :: list of ref Var 10 1
+    name v ref Var 0 0
+    * list of ref Var 10 1
+      indx big 10 1
+        name ht array of list of ref Var 0 0
+        name idx int 0 0
+eacom: 
+* list of ref Var 10 1
+  indx big 10 1
+    name ht array of list of ref Var 0 0
+    name idx int 0 0
+generate desc for big
+ecom: 
+indx big 10 1
+  name ht array of list of ref Var 0 0
+  name idx int 0 0
+ecom to: 
+name .b234 big 0 0
+ecom: 
+:: list of ref Var 10 1
+  name v ref Var 0 0
+  * list of ref Var 10 1
+    indx big 10 1
+      name ht array of list of ref Var 0 0
+      name idx int 0 0
+ecom to: 
+* list of ref Var 8 1
+  name .b234 big 0 0
+ecom: 
+* list of ref Var 10 1
+  indx big 10 1
+    name ht array of list of ref Var 0 0
+    name idx int 0 0
+ecom to: 
+name .t235 list of ref Var 0 0
+eacom: 
+* list of ref Var 10 1
+  indx big 10 1
+    name ht array of list of ref Var 0 0
+    name idx int 0 0
+generate desc for big
+ecom: 
+indx big 10 1
+  name ht array of list of ref Var 0 0
+  name idx int 0 0
+ecom to: 
+name .b236 big 0 0
+ecom: 
+= list of ref Var 10 1
+  name .t235 list of ref Var 0 0
+  name nil list of ref Var 1 0
+ecom: 
+name nil list of ref Var 1 0
+ecom to: 
+name .t235 list of ref Var 0 0
+fn: hashadd
+64: argument ht array of list of ref Var ref 2
+72: argument idx int ref 2
+80: argument v ref Var ref 1
+88: local .b234 big ref 1
+96: local .b236 big ref 1
+104: local .t235 list of ref Var ref 1
+generate desc for hashadd
+descmap offset 0
+descmap ht type array of list of ref Var offset 64 (d->offset=64 start=0) returns 64
+descmap idx type int offset 72 (d->offset=72 start=0) returns -1
+descmap v type ref Var offset 80 (d->offset=80 start=0) returns 80
+descmap .b234 type big offset 88 (d->offset=88 start=0) returns -1
+descmap .b236 type big offset 96 (d->offset=96 start=0) returns -1
+descmap .t235 type list of ref Var offset 104 (d->offset=104 start=0) returns 104
+fncom: copylocalenv 2 419b28
+ecom: 
+= array of list of ref Var 10 1
+  name nvars array of list of ref Var 0 0
+  array array of list of ref Var 10 1
+    len int 10 1
+      * array of list of ref Var 8 0
+        name e ref Localenv 0 0
+ecom: 
+array array of list of ref Var 10 1
+  len int 10 1
+    * array of list of ref Var 8 0
+      name e ref Localenv 0 0
+ecom to: 
+name nvars array of list of ref Var 0 0
+eacom: 
+len int 10 1
+  * array of list of ref Var 8 0
+    name e ref Localenv 0 0
+ecom: 
+len int 10 1
+  * array of list of ref Var 8 0
+    name e ref Localenv 0 0
+ecom to: 
+name .t237 int 0 0
+generate desc for list of ref Var
+generate desc for list of ref Var
+	desc	$-1,8,"80"
+ecom: 
+= int 10 1
+  name flags int 0 0
+  * int 8 0
+    + int 15 1
+      name e ref Localenv 0 0
+      const flags (16) int 6 0
+ecom: 
+* int 8 0
+  + int 15 1
+    name e ref Localenv 0 0
+    const flags (16) int 6 0
+ecom to: 
+name flags int 0 0
+ecom: 
+= int 10 1
+  name i int 0 0
+  const (0) int 6 0
+ecom: 
+const (0) int 6 0
+ecom to: 
+name i int 0 0
+eacom: 
+len int 10 1
+  name nvars array of list of ref Var 0 0
+ecom: 
+len int 10 1
+  name nvars array of list of ref Var 0 0
+ecom to: 
+name .t237 int 0 0
+ecom: 
+= list of ref Var 10 1
+  name vl list of ref Var 0 0
+  * list of ref Var 10 1
+    indx big 10 1
+      * array of list of ref Var 8 0
+        name e ref Localenv 0 0
+      name i int 0 0
+ecom: 
+* list of ref Var 10 1
+  indx big 10 1
+    * array of list of ref Var 8 0
+      name e ref Localenv 0 0
+    name i int 0 0
+ecom to: 
+name vl list of ref Var 0 0
+eacom: 
+* list of ref Var 10 1
+  indx big 10 1
+    * array of list of ref Var 8 0
+      name e ref Localenv 0 0
+    name i int 0 0
+generate desc for big
+ecom: 
+indx big 10 1
+  * array of list of ref Var 8 0
+    name e ref Localenv 0 0
+  name i int 0 0
+ecom to: 
+name .b238 big 0 0
+ecom: 
+= int 10 2
+  name idx int 0 0
+  call int 10 2
+    name hashfn fn(s: string, n: int): int 11 1
+    seq no type 10 2
+      * string 10 1
+        hd ref Var 10 1
+          name vl list of ref Var 0 0
+      seq no type 10 1
+        len int 10 1
+          name nvars array of list of ref Var 0 0
+ecom: 
+call int 10 2
+  name hashfn fn(s: string, n: int): int 11 1
+  seq no type 10 2
+    * string 10 1
+      hd ref Var 10 1
+        name vl list of ref Var 0 0
+    seq no type 10 1
+      len int 10 1
+        name nvars array of list of ref Var 0 0
+ecom to: 
+name idx int 0 0
+generate desc for big
+ecom: 
+* string 10 1
+  hd ref Var 10 1
+    name vl list of ref Var 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b238 big 0 0
+    const (64) int 6 0
+eacom: 
+* string 10 1
+  hd ref Var 10 1
+    name vl list of ref Var 0 0
+generate desc for ref Var
+ecom: 
+hd ref Var 10 1
+  name vl list of ref Var 0 0
+ecom to: 
+name .b239 ref Var 0 0
+ecom: 
+= ref Var 10 1
+  name .b239 ref Var 0 0
+  name nil ref Var 1 0
+ecom: 
+name nil ref Var 1 0
+ecom to: 
+name .b239 ref Var 0 0
+ecom: 
+len int 10 1
+  name nvars array of list of ref Var 0 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b238 big 0 0
+    const (72) int 6 0
+eacom: 
+call ref Var 10 2
+  name hashfind fn(ht: array of list of ref Var, idx: int, n: string): ref Var 11 1
+  seq no type 10 1
+    name nvars array of list of ref Var 0 0
+    seq no type 10 1
+      name idx int 0 0
+      seq no type 10 1
+        * string 10 1
+          hd ref Var 10 1
+            name vl list of ref Var 0 0
+generate desc for ref Var
+ecom: 
+call ref Var 10 2
+  name hashfind fn(ht: array of list of ref Var, idx: int, n: string): ref Var 11 1
+  seq no type 10 1
+    name nvars array of list of ref Var 0 0
+    seq no type 10 1
+      name idx int 0 0
+      seq no type 10 1
+        * string 10 1
+          hd ref Var 10 1
+            name vl list of ref Var 0 0
+ecom to: 
+name .b239 ref Var 0 0
+generate desc for big
+ecom: 
+name nvars array of list of ref Var 0 0
+ecom to: 
+* array of list of ref Var 8 0
+  + int 15 0
+    name .b238 big 0 0
+    const (64) int 6 0
+ecom: 
+name idx int 0 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b238 big 0 0
+    const (72) int 6 0
+ecom: 
+* string 10 1
+  hd ref Var 10 1
+    name vl list of ref Var 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b238 big 0 0
+    const (80) int 6 0
+eacom: 
+* string 10 1
+  hd ref Var 10 1
+    name vl list of ref Var 0 0
+generate desc for ref Var
+ecom: 
+hd ref Var 10 1
+  name vl list of ref Var 0 0
+ecom to: 
+name .b240 ref Var 0 0
+ecom: 
+= ref Var 10 1
+  name .b240 ref Var 0 0
+  name nil ref Var 1 0
+ecom: 
+name nil ref Var 1 0
+ecom to: 
+name .b240 ref Var 0 0
+ecom: 
+= ref Var 10 1
+  name .b239 ref Var 0 0
+  name nil ref Var 1 0
+ecom: 
+name nil ref Var 1 0
+ecom to: 
+name .b239 ref Var 0 0
+ecom: 
+call no type 10 2
+  name hashadd fn(ht: array of list of ref Var, idx: int, v: ref Var) 11 1
+  seq no type 10 1
+    name nvars array of list of ref Var 0 0
+    seq no type 10 1
+      name idx int 0 0
+      seq no type 10 1
+        ref ref Var 10 1
+          * Var 10 1
+            hd ref Var 10 1
+              name vl list of ref Var 0 0
+generate desc for big
+ecom: 
+name nvars array of list of ref Var 0 0
+ecom to: 
+* array of list of ref Var 8 0
+  + int 15 0
+    name .b238 big 0 0
+    const (64) int 6 0
+ecom: 
+name idx int 0 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b238 big 0 0
+    const (72) int 6 0
+ecom: 
+ref ref Var 10 1
+  * Var 10 1
+    hd ref Var 10 1
+      name vl list of ref Var 0 0
+ecom to: 
+* ref Var 8 0
+  + int 15 0
+    name .b238 big 0 0
+    const (80) int 6 0
+generate desc for ref Var
+generate desc for ref Var
+	desc	$-1,8,"80"
+generate desc for Var
+ecom: 
+* Var 10 1
+  hd ref Var 10 1
+    name vl list of ref Var 0 0
+ecom to: 
+* Var 8 0
+  name .b240 ref Var 0 0
+eacom: 
+* Var 10 1
+  hd ref Var 10 1
+    name vl list of ref Var 0 0
+generate desc for ref Var
+ecom: 
+hd ref Var 10 1
+  name vl list of ref Var 0 0
+ecom to: 
+name .b239 ref Var 0 0
+generate desc for Var
+ecom: 
+= ref Var 10 1
+  name .b239 ref Var 0 0
+  name nil ref Var 1 0
+ecom: 
+name nil ref Var 1 0
+ecom to: 
+name .b239 ref Var 0 0
+ecom: 
+= ref Var 10 1
+  name .b240 ref Var 0 0
+  name nil ref Var 1 0
+ecom: 
+name nil ref Var 1 0
+ecom to: 
+name .b240 ref Var 0 0
+ecom: 
+= list of ref Var 10 1
+  name vl list of ref Var 0 0
+  tl list of ref Var 10 1
+    name vl list of ref Var 0 0
+ecom: 
+tl list of ref Var 10 1
+  name vl list of ref Var 0 0
+ecom to: 
+name vl list of ref Var 0 0
+ecom: 
+++ int 10 1
+  name i int 0 0
+  const (1) int 6 0
+ecom: 
+= ref Localenv 10 1
+  name e ref Localenv 0 0
+  * ref Localenv 8 0
+    + int 15 1
+      name e ref Localenv 0 0
+      const pushed (8) int 6 0
+ecom: 
+* ref Localenv 8 0
+  + int 15 1
+    name e ref Localenv 0 0
+    const pushed (8) int 6 0
+ecom to: 
+name e ref Localenv 0 0
+ecom: 
+ref ref Localenv 10 1
+  tuple Localenv 10 1
+    seq no type 10 1
+      name nvars array of list of ref Var 0 0
+      seq no type 10 1
+        name nil polymorphic type 1 0
+        seq no type 10 1
+          name flags int 0 0
+ecom to: 
+* ref Localenv 8 0
+  name .ret int 0 0
+generate desc for ref Localenv
+generate desc for ref Localenv
+	desc	$-1,8,"80"
+generate desc for Localenv
+descmap adt offset 0
+descmap offset 0
+descmap vars type array of list of ref Var offset 0 (d->offset=0 start=0) returns 0
+descmap pushed type ref Localenv offset 8 (d->offset=8 start=0) returns 8
+descmap flags type int offset 16 (d->offset=16 start=0) returns -1
+generate desc for Localenv
+	desc	$-1,24,"c0"
+ecom: 
+tuple Localenv 10 1
+  seq no type 10 1
+    name nvars array of list of ref Var 0 0
+    seq no type 10 1
+      name nil polymorphic type 1 0
+      seq no type 10 1
+        name flags int 0 0
+ecom to: 
+* Localenv 8 0
+  name .b240 ref Localenv 0 0
+ecom: 
+name nvars array of list of ref Var 0 0
+ecom to: 
+* array of list of ref Var 8 0
+  + int 15 1
+    adr int 15 1
+      * Localenv 8 0
+        name .b240 ref Localenv 0 0
+    const (0) int 6 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* ref Localenv 8 0
+  + int 15 1
+    adr int 15 1
+      * Localenv 8 0
+        name .b240 ref Localenv 0 0
+    const (8) int 6 0
+ecom: 
+name flags int 0 0
+ecom to: 
+* int 8 0
+  + int 15 1
+    adr int 15 1
+      * Localenv 8 0
+        name .b240 ref Localenv 0 0
+    const (16) int 6 0
+ecom: 
+= ref Localenv 10 1
+  name .b240 ref Localenv 0 0
+  name nil ref Localenv 1 0
+ecom: 
+name nil ref Localenv 1 0
+ecom to: 
+name .b240 ref Localenv 0 0
+fn: copylocalenv
+64: argument e ref Localenv ref 6
+72: local i int ref 4
+76: local idx int ref 3
+80: local flags int ref 2
+84: local .t237 int ref 1
+88: local vl list of ref Var ref 7
+96: local nvars array of list of ref Var ref 6
+104: local .b238 big ref 4
+112: local .b239 ref Var ref 3
+120: local .b240 ref Var ref 3
+generate desc for copylocalenv
+descmap offset 0
+descmap e type ref Localenv offset 64 (d->offset=64 start=0) returns 64
+descmap i type int offset 72 (d->offset=72 start=0) returns -1
+descmap idx type int offset 76 (d->offset=76 start=0) returns -1
+descmap flags type int offset 80 (d->offset=80 start=0) returns -1
+descmap .t237 type int offset 84 (d->offset=84 start=0) returns -1
+descmap vl type list of ref Var offset 88 (d->offset=88 start=0) returns 88
+descmap nvars type array of list of ref Var offset 96 (d->offset=96 start=0) returns 96
+descmap .b238 type big offset 104 (d->offset=104 start=0) returns -1
+descmap .b239 type ref Var offset 112 (d->offset=112 start=0) returns 112
+descmap .b240 type ref Var offset 120 (d->offset=120 start=0) returns 120
+fncom: newlocalenv 3 419be8
+ecom: 
+= ref Localenv 10 2
+  name e ref Localenv 0 0
+  ref ref Localenv 10 2
+    tuple Localenv 10 2
+      seq no type 10 2
+        array array of list of ref Var 10 1
+          const ENVHASHSIZE (7) int 6 0
+        seq no type 10 1
+          name pushed ref Localenv 0 0
+          seq no type 10 1
+            const (0) int 6 0
+ecom: 
+ref ref Localenv 10 2
+  tuple Localenv 10 2
+    seq no type 10 2
+      array array of list of ref Var 10 1
+        const ENVHASHSIZE (7) int 6 0
+      seq no type 10 1
+        name pushed ref Localenv 0 0
+        seq no type 10 1
+          const (0) int 6 0
+ecom to: 
+name e ref Localenv 0 0
+generate desc for ref Localenv
+generate desc for ref Localenv
+	desc	$-1,8,"80"
+generate desc for Localenv
+ecom: 
+tuple Localenv 10 2
+  seq no type 10 2
+    array array of list of ref Var 10 1
+      const ENVHASHSIZE (7) int 6 0
+    seq no type 10 1
+      name pushed ref Localenv 0 0
+      seq no type 10 1
+        const (0) int 6 0
+ecom to: 
+* Localenv 8 0
+  name .b241 ref Localenv 0 0
+ecom: 
+array array of list of ref Var 10 1
+  const ENVHASHSIZE (7) int 6 0
+ecom to: 
+* array of list of ref Var 8 0
+  + int 15 1
+    adr int 15 1
+      * Localenv 8 0
+        name .b241 ref Localenv 0 0
+    const (0) int 6 0
+generate desc for list of ref Var
+generate desc for list of ref Var
+	desc	$-1,8,"80"
+ecom: 
+name pushed ref Localenv 0 0
+ecom to: 
+* ref Localenv 8 0
+  + int 15 1
+    adr int 15 1
+      * Localenv 8 0
+        name .b241 ref Localenv 0 0
+    const (8) int 6 0
+ecom: 
+const (0) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 1
+    adr int 15 1
+      * Localenv 8 0
+        name .b241 ref Localenv 0 0
+    const (16) int 6 0
+ecom: 
+= ref Localenv 10 1
+  name .b241 ref Localenv 0 0
+  name nil ref Localenv 1 0
+ecom: 
+name nil ref Localenv 1 0
+ecom to: 
+name .b241 ref Localenv 0 0
+ecom: 
+= list of (string, string) 10 1
+  name vl list of (string, string) 0 0
+  call list of (string, string) 10 1
+    -> fn(): list of (string, string) 12 1
+      name env Env 1 0
+      name getall nothing 11 1
+ecom: 
+call list of (string, string) 10 1
+  -> fn(): list of (string, string) 12 1
+    name env Env 1 0
+    name getall nothing 11 1
+ecom to: 
+name vl list of (string, string) 0 0
+generate desc for big
+ecom: 
+= (string, string) 10 2
+  tuple (string, string) 10 1
+    seq nothing 10 1
+      name name string 0 0
+      seq nothing 10 1
+        name val string 0 0
+  hd (string, string) 10 1
+    name vl list of (string, string) 0 0
+ecom: 
+hd (string, string) 10 1
+  name vl list of (string, string) 0 0
+ecom to: 
+name name (string, string) 0 0
+generate desc for (string, string)
+descmap adt offset 0
+descmap offset 0
+descmap t0 type string offset 0 (d->offset=0 start=0) returns 0
+descmap t1 type string offset 8 (d->offset=8 start=0) returns 8
+generate desc for (string, string)
+	desc	$-1,16,"c0"
+ecom: 
+call no type 10 3
+  name hashadd fn(ht: array of list of ref Var, idx: int, v: ref Var) 11 1
+  seq no type 10 3
+    * array of list of ref Var 8 0
+      name e ref Localenv 0 0
+    seq no type 10 3
+      call int 10 2
+        name hashfn fn(s: string, n: int): int 11 1
+        seq no type 10 1
+          name name string 0 0
+          seq no type 10 1
+            len int 10 1
+              * array of list of ref Var 8 0
+                name e ref Localenv 0 0
+      seq no type 10 2
+        ref ref Var 10 2
+          tuple Var 10 2
+            seq no type 10 2
+              name name string 0 0
+              seq no type 10 2
+                call list of ref Listnode 10 2
+                  name stringlist2list fn(sl: list of string): list of ref Listnode 11 1
+                  seq no type 10 2
+                    call list of string 10 2
+                      -> fn(args: string): list of string 12 1
+                        name str String 1 0
+                        name unquoted nothing 11 1
+                      seq no type 10 1
+                        name val string 0 0
+                seq no type 10 1
+                  const (0) int 6 0
+generate desc for big
+ecom: 
+call int 10 2
+  name hashfn fn(s: string, n: int): int 11 1
+  seq no type 10 1
+    name name string 0 0
+    seq no type 10 1
+      len int 10 1
+        * array of list of ref Var 8 0
+          name e ref Localenv 0 0
+ecom to: 
+name .t243 int 0 0
+generate desc for big
+ecom: 
+name name string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b244 big 0 0
+    const (64) int 6 0
+ecom: 
+len int 10 1
+  * array of list of ref Var 8 0
+    name e ref Localenv 0 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b244 big 0 0
+    const (72) int 6 0
+generate desc for ref Var
+generate desc for ref Var
+	desc	$-1,8,"80"
+ecom: 
+ref ref Var 10 2
+  tuple Var 10 2
+    seq no type 10 2
+      name name string 0 0
+      seq no type 10 2
+        call list of ref Listnode 10 2
+          name stringlist2list fn(sl: list of string): list of ref Listnode 11 1
+          seq no type 10 2
+            call list of string 10 2
+              -> fn(args: string): list of string 12 1
+                name str String 1 0
+                name unquoted nothing 11 1
+              seq no type 10 1
+                name val string 0 0
+        seq no type 10 1
+          const (0) int 6 0
+ecom to: 
+name .b241 ref Var 0 0
+generate desc for ref Var
+generate desc for Var
+ecom: 
+tuple Var 10 2
+  seq no type 10 2
+    name name string 0 0
+    seq no type 10 2
+      call list of ref Listnode 10 2
+        name stringlist2list fn(sl: list of string): list of ref Listnode 11 1
+        seq no type 10 2
+          call list of string 10 2
+            -> fn(args: string): list of string 12 1
+              name str String 1 0
+              name unquoted nothing 11 1
+            seq no type 10 1
+              name val string 0 0
+      seq no type 10 1
+        const (0) int 6 0
+ecom to: 
+* Var 8 0
+  name .b241 ref Var 0 0
+ecom: 
+name name string 0 0
+ecom to: 
+* string 8 0
+  + int 15 1
+    adr int 15 1
+      * Var 8 0
+        name .b241 ref Var 0 0
+    const (0) int 6 0
+ecom: 
+call list of ref Listnode 10 2
+  name stringlist2list fn(sl: list of string): list of ref Listnode 11 1
+  seq no type 10 2
+    call list of string 10 2
+      -> fn(args: string): list of string 12 1
+        name str String 1 0
+        name unquoted nothing 11 1
+      seq no type 10 1
+        name val string 0 0
+ecom to: 
+* list of ref Listnode 8 0
+  + int 15 1
+    adr int 15 1
+      * Var 8 0
+        name .b241 ref Var 0 0
+    const (8) int 6 0
+generate desc for big
+ecom: 
+call list of string 10 2
+  -> fn(args: string): list of string 12 1
+    name str String 1 0
+    name unquoted nothing 11 1
+  seq no type 10 1
+    name val string 0 0
+ecom to: 
+name .t245 list of string 0 0
+generate desc for big
+ecom: 
+name val string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b246 big 0 0
+    const (64) int 6 0
+ecom: 
+name .t245 list of string 0 0
+ecom to: 
+* list of string 8 0
+  + int 15 0
+    name .b244 big 0 0
+    const (64) int 6 0
+ecom: 
+= list of string 10 1
+  name .t245 list of string 0 0
+  name nil list of string 1 0
+ecom: 
+name nil list of string 1 0
+ecom to: 
+name .t245 list of string 0 0
+ecom: 
+const (0) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 1
+    adr int 15 1
+      * Var 8 0
+        name .b241 ref Var 0 0
+    const (16) int 6 0
+ecom: 
+* array of list of ref Var 8 0
+  name e ref Localenv 0 0
+ecom to: 
+* array of list of ref Var 8 0
+  + int 15 0
+    name .b242 big 0 0
+    const (64) int 6 0
+ecom: 
+name .t243 int 0 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b242 big 0 0
+    const (72) int 6 0
+ecom: 
+name .b241 ref Var 0 0
+ecom to: 
+* ref Var 8 0
+  + int 15 0
+    name .b242 big 0 0
+    const (80) int 6 0
+ecom: 
+= ref Var 10 1
+  name .b241 ref Var 0 0
+  name nil ref Var 1 0
+ecom: 
+name nil ref Var 1 0
+ecom to: 
+name .b241 ref Var 0 0
+ecom: 
+= string 10 1
+  * string 0 0
+    adr int 13 1
+      name name (string, string) 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+* string 0 0
+  adr int 13 1
+    name name (string, string) 0 0
+ecom: 
+= string 10 1
+  * string 0 0
+    + int 13 1
+      adr int 13 1
+        name name (string, string) 0 0
+      const t1 (8) int 6 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+* string 0 0
+  + int 13 1
+    adr int 13 1
+      name name (string, string) 0 0
+    const t1 (8) int 6 0
+ecom: 
+= string 10 1
+  name val string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name val string 0 0
+ecom: 
+= list of (string, string) 10 1
+  name vl list of (string, string) 0 0
+  tl list of (string, string) 10 1
+    name vl list of (string, string) 0 0
+ecom: 
+tl list of (string, string) 10 1
+  name vl list of (string, string) 0 0
+ecom to: 
+name vl list of (string, string) 0 0
+ecom: 
+= list of (string, string) 10 1
+  name vl list of (string, string) 0 0
+  name nil list of (string, string) 1 0
+ecom: 
+name nil list of (string, string) 1 0
+ecom to: 
+name vl list of (string, string) 0 0
+ecom: 
+= int 10 1
+  * int 8 0
+    + int 15 1
+      name e ref Localenv 0 0
+      const flags (16) int 6 0
+  * int 8 0
+    + int 15 1
+      name pushed ref Localenv 0 0
+      const flags (16) int 6 0
+ecom: 
+* int 8 0
+  + int 15 1
+    name pushed ref Localenv 0 0
+    const flags (16) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 1
+    name e ref Localenv 0 0
+    const flags (16) int 6 0
+ecom: 
+name e ref Localenv 0 0
+ecom to: 
+* ref Localenv 8 0
+  name .ret int 0 0
+fn: newlocalenv
+64: argument pushed ref Localenv ref 4
+72: local .t243 int ref 1
+80: local e ref Localenv ref 5
+88: local vl list of (string, string) ref 5
+96: local .b241 ref Localenv ref 3
+104: local name string ref 3
+112: local val string ref 2
+120: local .b242 big ref 2
+128: local .b244 big ref 2
+136: local .b246 big ref 1
+144: local .t245 list of string ref 1
+generate desc for newlocalenv
+descmap offset 0
+descmap pushed type ref Localenv offset 64 (d->offset=64 start=0) returns 64
+descmap .t243 type int offset 72 (d->offset=72 start=0) returns -1
+descmap e type ref Localenv offset 80 (d->offset=80 start=0) returns 80
+descmap vl type list of (string, string) offset 88 (d->offset=88 start=0) returns 88
+descmap .b241 type ref Localenv offset 96 (d->offset=96 start=0) returns 96
+descmap name type string offset 104 (d->offset=104 start=0) returns 104
+descmap val type string offset 112 (d->offset=112 start=0) returns 112
+descmap .b242 type big offset 120 (d->offset=120 start=0) returns -1
+descmap .b244 type big offset 128 (d->offset=128 start=0) returns -1
+descmap .b246 type big offset 136 (d->offset=136 start=0) returns -1
+descmap .t245 type list of string offset 144 (d->offset=144 start=0) returns 144
+fncom: copybuiltins 3 419ca8
+ecom: 
+= ref Builtins 10 2
+  name nb ref Builtins 0 0
+  ref ref Builtins 10 2
+    tuple Builtins 10 2
+      seq no type 10 2
+        array array of (string, list of Shellbuiltin) 10 1
+          * int 8 0
+            + int 15 1
+              name b ref Builtins 0 0
+              const n (8) int 6 0
+        seq no type 10 1
+          * int 8 0
+            + int 15 1
+              name b ref Builtins 0 0
+              const n (8) int 6 0
+ecom: 
+ref ref Builtins 10 2
+  tuple Builtins 10 2
+    seq no type 10 2
+      array array of (string, list of Shellbuiltin) 10 1
+        * int 8 0
+          + int 15 1
+            name b ref Builtins 0 0
+            const n (8) int 6 0
+      seq no type 10 1
+        * int 8 0
+          + int 15 1
+            name b ref Builtins 0 0
+            const n (8) int 6 0
+ecom to: 
+name nb ref Builtins 0 0
+generate desc for ref Builtins
+generate desc for ref Builtins
+	desc	$-1,8,"80"
+generate desc for Builtins
+ecom: 
+tuple Builtins 10 2
+  seq no type 10 2
+    array array of (string, list of Shellbuiltin) 10 1
+      * int 8 0
+        + int 15 1
+          name b ref Builtins 0 0
+          const n (8) int 6 0
+    seq no type 10 1
+      * int 8 0
+        + int 15 1
+          name b ref Builtins 0 0
+          const n (8) int 6 0
+ecom to: 
+* Builtins 8 0
+  name .b247 ref Builtins 0 0
+ecom: 
+array array of (string, list of Shellbuiltin) 10 1
+  * int 8 0
+    + int 15 1
+      name b ref Builtins 0 0
+      const n (8) int 6 0
+ecom to: 
+* array of (string, list of Shellbuiltin) 8 0
+  + int 15 1
+    adr int 15 1
+      * Builtins 8 0
+        name .b247 ref Builtins 0 0
+    const (0) int 6 0
+generate desc for (string, list of Shellbuiltin)
+descmap adt offset 0
+descmap offset 0
+descmap t0 type string offset 0 (d->offset=0 start=0) returns 0
+descmap t1 type list of Shellbuiltin offset 8 (d->offset=8 start=0) returns 8
+generate desc for (string, list of Shellbuiltin)
+	desc	$-1,16,"c0"
+ecom: 
+* int 8 0
+  + int 15 1
+    name b ref Builtins 0 0
+    const n (8) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 1
+    adr int 15 1
+      * Builtins 8 0
+        name .b247 ref Builtins 0 0
+    const (8) int 6 0
+ecom: 
+= ref Builtins 10 1
+  name .b247 ref Builtins 0 0
+  name nil ref Builtins 1 0
+ecom: 
+name nil ref Builtins 1 0
+ecom to: 
+name .b247 ref Builtins 0 0
+ecom: 
+= array of (string, list of Shellbuiltin) 10 2
+  slice array of (string, list of Shellbuiltin) 10 1
+    * array of (string, list of Shellbuiltin) 8 0
+      name nb ref Builtins 0 0
+    seq no type 10 1
+      const (0) int 6 0
+      nothing no type 10 1
+  slice array of (string, list of Shellbuiltin) 10 1
+    * array of (string, list of Shellbuiltin) 8 0
+      name b ref Builtins 0 0
+    seq no type 10 1
+      const (0) int 6 0
+      * int 8 0
+        + int 15 1
+          name b ref Builtins 0 0
+          const n (8) int 6 0
+eacom: 
+slice array of (string, list of Shellbuiltin) 10 1
+  * array of (string, list of Shellbuiltin) 8 0
+    name b ref Builtins 0 0
+  seq no type 10 1
+    const (0) int 6 0
+    * int 8 0
+      + int 15 1
+        name b ref Builtins 0 0
+        const n (8) int 6 0
+ecom: 
+slice array of (string, list of Shellbuiltin) 10 1
+  * array of (string, list of Shellbuiltin) 8 0
+    name b ref Builtins 0 0
+  seq no type 10 1
+    const (0) int 6 0
+    * int 8 0
+      + int 15 1
+        name b ref Builtins 0 0
+        const n (8) int 6 0
+ecom to: 
+name .t248 array of (string, list of Shellbuiltin) 0 0
+ecom: 
+* int 8 0
+  + int 15 1
+    name b ref Builtins 0 0
+    const n (8) int 6 0
+ecom to: 
+name .t249 int 0 0
+ecom: 
+* array of (string, list of Shellbuiltin) 8 0
+  name b ref Builtins 0 0
+ecom to: 
+name .t248 array of (string, list of Shellbuiltin) 0 0
+ecom: 
+= array of (string, list of Shellbuiltin) 10 1
+  name .t248 array of (string, list of Shellbuiltin) 0 0
+  name nil array of (string, list of Shellbuiltin) 1 0
+ecom: 
+name nil array of (string, list of Shellbuiltin) 1 0
+ecom to: 
+name .t248 array of (string, list of Shellbuiltin) 0 0
+ecom: 
+name nb ref Builtins 0 0
+ecom to: 
+* ref Builtins 8 0
+  name .ret int 0 0
+fn: copybuiltins
+64: argument b ref Builtins ref 4
+72: local .t249 int ref 1
+80: local nb ref Builtins ref 3
+88: local .b247 ref Builtins ref 1
+96: local .t248 array of (string, list of Shellbuiltin) ref 1
+generate desc for copybuiltins
+descmap offset 0
+descmap b type ref Builtins offset 64 (d->offset=64 start=0) returns 64
+descmap .t249 type int offset 72 (d->offset=72 start=0) returns -1
+descmap nb type ref Builtins offset 80 (d->offset=80 start=0) returns 80
+descmap .b247 type ref Builtins offset 88 (d->offset=88 start=0) returns 88
+descmap .t248 type array of (string, list of Shellbuiltin) offset 96 (d->offset=96 start=0) returns 96
+fncom: findbuiltin 9 419d68
+ecom: 
+= int 10 1
+  name lo int 0 0
+  const (0) int 6 0
+ecom: 
+const (0) int 6 0
+ecom to: 
+name lo int 0 0
+ecom: 
+= int 10 1
+  name hi int 0 0
+  - int 10 1
+    * int 8 0
+      + int 15 1
+        name b ref Builtins 0 0
+        const n (8) int 6 0
+    const (1) int 6 0
+ecom: 
+- int 10 1
+  * int 8 0
+    + int 15 1
+      name b ref Builtins 0 0
+      const n (8) int 6 0
+  const (1) int 6 0
+ecom to: 
+name hi int 0 0
+ecom: 
+* int 8 0
+  + int 15 1
+    name b ref Builtins 0 0
+    const n (8) int 6 0
+ecom to: 
+name .t250 int 0 0
+ecom: 
+= int 10 1
+  name mid int 0 0
+  / int 10 1
+    + int 10 1
+      name lo int 0 0
+      name hi int 0 0
+    const (2) int 6 0
+ecom: 
+/ int 10 1
+  + int 10 1
+    name lo int 0 0
+    name hi int 0 0
+  const (2) int 6 0
+ecom to: 
+name mid int 0 0
+ecom: 
++ int 10 1
+  name lo int 0 0
+  name hi int 0 0
+ecom to: 
+name .t250 int 0 0
+ecom: 
+= (string, list of Shellbuiltin) 10 2
+  tuple (string, list of Shellbuiltin) 10 1
+    seq nothing 10 1
+      name bname string 0 0
+      seq nothing 10 1
+        name bmod list of Shellbuiltin 0 0
+  * (string, list of Shellbuiltin) 10 1
+    indx big 10 1
+      * array of (string, list of Shellbuiltin) 8 0
+        name b ref Builtins 0 0
+      name mid int 0 0
+ecom: 
+* (string, list of Shellbuiltin) 10 1
+  indx big 10 1
+    * array of (string, list of Shellbuiltin) 8 0
+      name b ref Builtins 0 0
+    name mid int 0 0
+ecom to: 
+name bname (string, list of Shellbuiltin) 0 0
+eacom: 
+* (string, list of Shellbuiltin) 10 1
+  indx big 10 1
+    * array of (string, list of Shellbuiltin) 8 0
+      name b ref Builtins 0 0
+    name mid int 0 0
+generate desc for big
+ecom: 
+indx big 10 1
+  * array of (string, list of Shellbuiltin) 8 0
+    name b ref Builtins 0 0
+  name mid int 0 0
+ecom to: 
+name .b251 big 0 0
+generate desc for (string, list of Shellbuiltin)
+descmap adt offset 0
+descmap offset 0
+descmap t0 type string offset 0 (d->offset=0 start=0) returns 0
+descmap t1 type list of Shellbuiltin offset 8 (d->offset=8 start=0) returns 8
+generate desc for (string, list of Shellbuiltin)
+	desc	$-1,16,"c0"
+ecom: 
+= int 10 1
+  name hi int 0 0
+  - int 10 1
+    name mid int 0 0
+    const (1) int 6 0
+ecom: 
+- int 10 1
+  name mid int 0 0
+  const (1) int 6 0
+ecom to: 
+name hi int 0 0
+ecom: 
+= int 10 1
+  name lo int 0 0
+  + int 15 1
+    name mid int 0 0
+    const (1) int 6 0
+ecom: 
++ int 15 1
+  name mid int 0 0
+  const (1) int 6 0
+ecom to: 
+name lo int 0 0
+ecom: 
+tuple (int, list of Shellbuiltin) 10 1
+  seq no type 10 1
+    name mid int 0 0
+    seq no type 10 1
+      name bmod list of Shellbuiltin 0 0
+ecom to: 
+* (int, list of Shellbuiltin) 8 0
+  name .ret int 0 0
+ecom: 
+name mid int 0 0
+ecom to: 
+* int 8 0
+  + int 15 1
+    adr int 15 1
+      * (int, list of Shellbuiltin) 8 0
+        name .ret int 0 0
+    const (0) int 6 0
+ecom: 
+name bmod list of Shellbuiltin 0 0
+ecom to: 
+* list of Shellbuiltin 8 0
+  + int 15 1
+    adr int 15 1
+      * (int, list of Shellbuiltin) 8 0
+        name .ret int 0 0
+    const (8) int 6 0
+ecom: 
+= string 10 1
+  * string 0 0
+    adr int 13 1
+      name bname (string, list of Shellbuiltin) 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+* string 0 0
+  adr int 13 1
+    name bname (string, list of Shellbuiltin) 0 0
+ecom: 
+= list of Shellbuiltin 10 1
+  * list of Shellbuiltin 0 0
+    + int 13 1
+      adr int 13 1
+        name bname (string, list of Shellbuiltin) 0 0
+      const t1 (8) int 6 0
+  name nil list of Shellbuiltin 1 0
+ecom: 
+name nil list of Shellbuiltin 1 0
+ecom to: 
+* list of Shellbuiltin 0 0
+  + int 13 1
+    adr int 13 1
+      name bname (string, list of Shellbuiltin) 0 0
+    const t1 (8) int 6 0
+ecom: 
+= list of Shellbuiltin 10 1
+  name bmod list of Shellbuiltin 0 0
+  name nil list of Shellbuiltin 1 0
+ecom: 
+name nil list of Shellbuiltin 1 0
+ecom to: 
+name bmod list of Shellbuiltin 0 0
+ecom: 
+tuple (int, polymorphic type) 10 1
+  seq no type 10 1
+    name lo int 0 0
+    seq no type 10 1
+      name nil polymorphic type 1 0
+ecom to: 
+* (int, polymorphic type) 8 0
+  name .ret int 0 0
+ecom: 
+name lo int 0 0
+ecom to: 
+* int 8 0
+  + int 15 1
+    adr int 15 1
+      * (int, polymorphic type) 8 0
+        name .ret int 0 0
+    const (0) int 6 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* polymorphic type 8 0
+  + int 15 1
+    adr int 15 1
+      * (int, polymorphic type) 8 0
+        name .ret int 0 0
+    const (8) int 6 0
+fn: findbuiltin
+64: argument b ref Builtins ref 2
+72: argument name string ref 2
+80: local lo int ref 5
+84: local mid int ref 5
+88: local hi int ref 4
+92: local .t250 int ref 1
+96: local bname string ref 3
+104: local bmod list of Shellbuiltin ref 2
+112: local .b251 big ref 1
+generate desc for findbuiltin
+descmap offset 0
+descmap b type ref Builtins offset 64 (d->offset=64 start=0) returns 64
+descmap name type string offset 72 (d->offset=72 start=0) returns 72
+descmap lo type int offset 80 (d->offset=80 start=0) returns -1
+descmap mid type int offset 84 (d->offset=84 start=0) returns -1
+descmap hi type int offset 88 (d->offset=88 start=0) returns -1
+descmap .t250 type int offset 92 (d->offset=92 start=0) returns -1
+descmap bname type string offset 96 (d->offset=96 start=0) returns 96
+descmap bmod type list of Shellbuiltin offset 104 (d->offset=104 start=0) returns 104
+descmap .b251 type big offset 112 (d->offset=112 start=0) returns -1
+fncom: removebuiltin 3 419e28
+ecom: 
+= (int, list of Shellbuiltin) 10 2
+  tuple (int, list of Shellbuiltin) 10 1
+    seq nothing 10 1
+      name n int 0 0
+      seq nothing 10 1
+        name bmods list of Shellbuiltin 0 0
+  call (int, list of Shellbuiltin) 10 2
+    name findbuiltin fn(b: ref Builtins, name: string): (int, list of Shellbuiltin) 11 1
+    seq no type 10 1
+      name b ref Builtins 0 0
+      seq no type 10 1
+        name name string 0 0
+ecom: 
+call (int, list of Shellbuiltin) 10 2
+  name findbuiltin fn(b: ref Builtins, name: string): (int, list of Shellbuiltin) 11 1
+  seq no type 10 1
+    name b ref Builtins 0 0
+    seq no type 10 1
+      name name string 0 0
+ecom to: 
+name n (int, list of Shellbuiltin) 0 0
+generate desc for big
+ecom: 
+name b ref Builtins 0 0
+ecom to: 
+* ref Builtins 8 0
+  + int 15 0
+    name .b252 big 0 0
+    const (64) int 6 0
+ecom: 
+name name string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b252 big 0 0
+    const (72) int 6 0
+eacom: 
+hd Shellbuiltin 10 1
+  name bmods list of Shellbuiltin 0 0
+ecom: 
+hd Shellbuiltin 10 1
+  name bmods list of Shellbuiltin 0 0
+ecom to: 
+name .t253 Shellbuiltin 0 0
+ecom: 
+= Shellbuiltin 10 1
+  name .t253 Shellbuiltin 0 0
+  name nil Shellbuiltin 1 0
+ecom: 
+name nil Shellbuiltin 1 0
+ecom to: 
+name .t253 Shellbuiltin 0 0
+eacom: 
+tl list of Shellbuiltin 10 1
+  name bmods list of Shellbuiltin 0 0
+ecom: 
+tl list of Shellbuiltin 10 1
+  name bmods list of Shellbuiltin 0 0
+ecom to: 
+name .t253 list of Shellbuiltin 0 0
+ecom: 
+= list of Shellbuiltin 10 1
+  name .t253 list of Shellbuiltin 0 0
+  name nil list of Shellbuiltin 1 0
+ecom: 
+name nil list of Shellbuiltin 1 0
+ecom to: 
+name .t253 list of Shellbuiltin 0 0
+ecom: 
+= (string, list of Shellbuiltin) 10 2
+  * (string, list of Shellbuiltin) 10 1
+    indx big 10 1
+      * array of (string, list of Shellbuiltin) 8 0
+        name b ref Builtins 0 0
+      name n int 0 0
+  tuple (string, list of Shellbuiltin) 10 1
+    seq no type 10 1
+      name name string 0 0
+      seq no type 10 1
+        tl list of Shellbuiltin 10 1
+          name bmods list of Shellbuiltin 0 0
+generate desc for (string, list of Shellbuiltin)
+descmap adt offset 0
+descmap offset 0
+descmap t0 type string offset 0 (d->offset=0 start=0) returns 0
+descmap t1 type list of Shellbuiltin offset 8 (d->offset=8 start=0) returns 8
+generate desc for (string, list of Shellbuiltin)
+	desc	$-1,16,"c0"
+ecom: 
+tuple (string, list of Shellbuiltin) 10 1
+  seq no type 10 1
+    name name string 0 0
+    seq no type 10 1
+      tl list of Shellbuiltin 10 1
+        name bmods list of Shellbuiltin 0 0
+ecom to: 
+name .b254 (string, list of Shellbuiltin) 0 0
+ecom: 
+name name string 0 0
+ecom to: 
+* string 0 0
+  + int 13 1
+    adr int 13 1
+      name .b254 (string, list of Shellbuiltin) 0 0
+    const (0) int 6 0
+ecom: 
+tl list of Shellbuiltin 10 1
+  name bmods list of Shellbuiltin 0 0
+ecom to: 
+* list of Shellbuiltin 0 0
+  + int 13 1
+    adr int 13 1
+      name .b254 (string, list of Shellbuiltin) 0 0
+    const (8) int 6 0
+eacom: 
+* (string, list of Shellbuiltin) 10 1
+  indx big 10 1
+    * array of (string, list of Shellbuiltin) 8 0
+      name b ref Builtins 0 0
+    name n int 0 0
+generate desc for big
+ecom: 
+indx big 10 1
+  * array of (string, list of Shellbuiltin) 8 0
+    name b ref Builtins 0 0
+  name n int 0 0
+ecom to: 
+name .b252 big 0 0
+ecom: 
+name .b254 (string, list of Shellbuiltin) 0 0
+ecom to: 
+* (string, list of Shellbuiltin) 8 1
+  name .b252 big 0 0
+generate desc for (string, list of Shellbuiltin)
+ecom: 
+= string 10 1
+  * string 0 0
+    adr int 13 1
+      name .b254 (string, list of Shellbuiltin) 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+* string 0 0
+  adr int 13 1
+    name .b254 (string, list of Shellbuiltin) 0 0
+ecom: 
+= list of Shellbuiltin 10 1
+  * list of Shellbuiltin 0 0
+    + int 13 1
+      adr int 13 1
+        name .b254 (string, list of Shellbuiltin) 0 0
+      const t1 (8) int 6 0
+  name nil list of Shellbuiltin 1 0
+ecom: 
+name nil list of Shellbuiltin 1 0
+ecom to: 
+* list of Shellbuiltin 0 0
+  + int 13 1
+    adr int 13 1
+      name .b254 (string, list of Shellbuiltin) 0 0
+    const t1 (8) int 6 0
+ecom: 
+= array of (string, list of Shellbuiltin) 10 2
+  slice array of (string, list of Shellbuiltin) 10 1
+    * array of (string, list of Shellbuiltin) 8 0
+      name b ref Builtins 0 0
+    seq no type 10 1
+      name n int 0 0
+      nothing no type 10 1
+  slice array of (string, list of Shellbuiltin) 10 1
+    * array of (string, list of Shellbuiltin) 8 0
+      name b ref Builtins 0 0
+    seq no type 10 1
+      + int 15 1
+        name n int 0 0
+        const (1) int 6 0
+      * int 8 0
+        + int 15 1
+          name b ref Builtins 0 0
+          const n (8) int 6 0
+eacom: 
+slice array of (string, list of Shellbuiltin) 10 1
+  * array of (string, list of Shellbuiltin) 8 0
+    name b ref Builtins 0 0
+  seq no type 10 1
+    + int 15 1
+      name n int 0 0
+      const (1) int 6 0
+    * int 8 0
+      + int 15 1
+        name b ref Builtins 0 0
+        const n (8) int 6 0
+ecom: 
+slice array of (string, list of Shellbuiltin) 10 1
+  * array of (string, list of Shellbuiltin) 8 0
+    name b ref Builtins 0 0
+  seq no type 10 1
+    + int 15 1
+      name n int 0 0
+      const (1) int 6 0
+    * int 8 0
+      + int 15 1
+        name b ref Builtins 0 0
+        const n (8) int 6 0
+ecom to: 
+name .t253 array of (string, list of Shellbuiltin) 0 0
+eacom: 
++ int 15 1
+  name n int 0 0
+  const (1) int 6 0
+ecom: 
++ int 15 1
+  name n int 0 0
+  const (1) int 6 0
+ecom to: 
+name .t255 int 0 0
+ecom: 
+* int 8 0
+  + int 15 1
+    name b ref Builtins 0 0
+    const n (8) int 6 0
+ecom to: 
+name .t256 int 0 0
+ecom: 
+* array of (string, list of Shellbuiltin) 8 0
+  name b ref Builtins 0 0
+ecom to: 
+name .t253 array of (string, list of Shellbuiltin) 0 0
+ecom: 
+= array of (string, list of Shellbuiltin) 10 1
+  name .t253 array of (string, list of Shellbuiltin) 0 0
+  name nil array of (string, list of Shellbuiltin) 1 0
+ecom: 
+name nil array of (string, list of Shellbuiltin) 1 0
+ecom to: 
+name .t253 array of (string, list of Shellbuiltin) 0 0
+ecom: 
+= (polymorphic type, polymorphic type) 10 2
+  * (polymorphic type, polymorphic type) 10 1
+    indx big 10 1
+      * array of (string, list of Shellbuiltin) 8 0
+        name b ref Builtins 0 0
+      -= int 10 1
+        * int 8 0
+          + int 15 1
+            name b ref Builtins 0 0
+            const n (8) int 6 0
+        const (1) int 6 0
+  tuple (polymorphic type, polymorphic type) 10 1
+    seq no type 10 1
+      name nil polymorphic type 1 0
+      seq no type 10 1
+        name nil polymorphic type 1 0
+generate desc for (polymorphic type, polymorphic type)
+descmap adt offset 0
+descmap offset 0
+descmap t0 type polymorphic type offset 0 (d->offset=0 start=0) returns 0
+descmap t1 type polymorphic type offset 8 (d->offset=8 start=0) returns 8
+generate desc for (polymorphic type, polymorphic type)
+	desc	$-1,16,"c0"
+ecom: 
+tuple (polymorphic type, polymorphic type) 10 1
+  seq no type 10 1
+    name nil polymorphic type 1 0
+    seq no type 10 1
+      name nil polymorphic type 1 0
+ecom to: 
+name .b254 (polymorphic type, polymorphic type) 0 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* polymorphic type 0 0
+  + int 13 1
+    adr int 13 1
+      name .b254 (polymorphic type, polymorphic type) 0 0
+    const (0) int 6 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* polymorphic type 0 0
+  + int 13 1
+    adr int 13 1
+      name .b254 (polymorphic type, polymorphic type) 0 0
+    const (8) int 6 0
+eacom: 
+* (polymorphic type, polymorphic type) 10 1
+  indx big 10 1
+    * array of (string, list of Shellbuiltin) 8 0
+      name b ref Builtins 0 0
+    -= int 10 1
+      * int 8 0
+        + int 15 1
+          name b ref Builtins 0 0
+          const n (8) int 6 0
+      const (1) int 6 0
+generate desc for big
+ecom: 
+indx big 10 1
+  * array of (string, list of Shellbuiltin) 8 0
+    name b ref Builtins 0 0
+  -= int 10 1
+    * int 8 0
+      + int 15 1
+        name b ref Builtins 0 0
+        const n (8) int 6 0
+    const (1) int 6 0
+ecom to: 
+name .b252 big 0 0
+eacom: 
+-= int 10 1
+  * int 8 0
+    + int 15 1
+      name b ref Builtins 0 0
+      const n (8) int 6 0
+  const (1) int 6 0
+ecom: 
+-= int 10 1
+  * int 8 0
+    + int 15 1
+      name b ref Builtins 0 0
+      const n (8) int 6 0
+  const (1) int 6 0
+ecom to: 
+name .t256 int 0 0
+ecom: 
+name .b254 (polymorphic type, polymorphic type) 0 0
+ecom to: 
+* (polymorphic type, polymorphic type) 8 1
+  name .b252 big 0 0
+generate desc for (polymorphic type, polymorphic type)
+ecom: 
+= polymorphic type 10 1
+  * polymorphic type 0 0
+    adr int 13 1
+      name .b254 (polymorphic type, polymorphic type) 0 0
+  name nil polymorphic type 1 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* polymorphic type 0 0
+  adr int 13 1
+    name .b254 (polymorphic type, polymorphic type) 0 0
+ecom: 
+= polymorphic type 10 1
+  * polymorphic type 0 0
+    + int 13 1
+      adr int 13 1
+        name .b254 (polymorphic type, polymorphic type) 0 0
+      const t1 (8) int 6 0
+  name nil polymorphic type 1 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* polymorphic type 0 0
+  + int 13 1
+    adr int 13 1
+      name .b254 (polymorphic type, polymorphic type) 0 0
+    const t1 (8) int 6 0
+fn: removebuiltin
+64: argument b ref Builtins ref 7
+72: argument name string ref 2
+80: argument mod Shellbuiltin ref 1
+88: local n int ref 4
+96: local bmods list of Shellbuiltin ref 5
+104: local .t255 int ref 1
+108: local .t256 int ref 1
+112: local .b252 big ref 3
+120: local .b254 (string, list of Shellbuiltin) ref 2
+136: local .t253 Shellbuiltin ref 1
+generate desc for removebuiltin
+descmap offset 0
+descmap b type ref Builtins offset 64 (d->offset=64 start=0) returns 64
+descmap name type string offset 72 (d->offset=72 start=0) returns 72
+descmap mod type Shellbuiltin offset 80 (d->offset=80 start=0) returns 80
+descmap n type int offset 88 (d->offset=88 start=0) returns -1
+descmap bmods type list of Shellbuiltin offset 96 (d->offset=96 start=0) returns 96
+descmap .t255 type int offset 104 (d->offset=104 start=0) returns -1
+descmap .t256 type int offset 108 (d->offset=108 start=0) returns -1
+descmap .b252 type big offset 112 (d->offset=112 start=0) returns -1
+descmap adt offset 120
+descmap offset 120
+descmap t0 type string offset 120 (d->offset=0 start=120) returns 120
+descmap t1 type list of Shellbuiltin offset 128 (d->offset=8 start=120) returns 128
+descmap .b254 type (string, list of Shellbuiltin) offset 120 (d->offset=120 start=0) returns 128
+descmap .t253 type Shellbuiltin offset 136 (d->offset=136 start=0) returns 136
+fncom: addbuiltin 3 419ee8
+ecom: 
+= (int, list of Shellbuiltin) 10 2
+  tuple (int, list of Shellbuiltin) 10 1
+    seq nothing 10 1
+      name n int 0 0
+      seq nothing 10 1
+        name bmods list of Shellbuiltin 0 0
+  call (int, list of Shellbuiltin) 10 2
+    name findbuiltin fn(b: ref Builtins, name: string): (int, list of Shellbuiltin) 11 1
+    seq no type 10 1
+      name b ref Builtins 0 0
+      seq no type 10 1
+        name name string 0 0
+ecom: 
+call (int, list of Shellbuiltin) 10 2
+  name findbuiltin fn(b: ref Builtins, name: string): (int, list of Shellbuiltin) 11 1
+  seq no type 10 1
+    name b ref Builtins 0 0
+    seq no type 10 1
+      name name string 0 0
+ecom to: 
+name n (int, list of Shellbuiltin) 0 0
+generate desc for big
+ecom: 
+name b ref Builtins 0 0
+ecom to: 
+* ref Builtins 8 0
+  + int 15 0
+    name .b257 big 0 0
+    const (64) int 6 0
+ecom: 
+name name string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b257 big 0 0
+    const (72) int 6 0
+eacom: 
+hd Shellbuiltin 10 1
+  name bmods list of Shellbuiltin 0 0
+ecom: 
+hd Shellbuiltin 10 1
+  name bmods list of Shellbuiltin 0 0
+ecom to: 
+name .t258 Shellbuiltin 0 0
+ecom: 
+= Shellbuiltin 10 1
+  name .t258 Shellbuiltin 0 0
+  name nil Shellbuiltin 1 0
+ecom: 
+name nil Shellbuiltin 1 0
+ecom to: 
+name .t258 Shellbuiltin 0 0
+ecom: 
+= (string, list of Shellbuiltin) 10 2
+  * (string, list of Shellbuiltin) 10 1
+    indx big 10 1
+      * array of (string, list of Shellbuiltin) 8 0
+        name b ref Builtins 0 0
+      name n int 0 0
+  tuple (string, list of Shellbuiltin) 10 1
+    seq no type 10 1
+      name name string 0 0
+      seq no type 10 1
+        :: list of Shellbuiltin 10 1
+          name mod Shellbuiltin 0 0
+          name bmods list of Shellbuiltin 0 0
+generate desc for (string, list of Shellbuiltin)
+descmap adt offset 0
+descmap offset 0
+descmap t0 type string offset 0 (d->offset=0 start=0) returns 0
+descmap t1 type list of Shellbuiltin offset 8 (d->offset=8 start=0) returns 8
+generate desc for (string, list of Shellbuiltin)
+	desc	$-1,16,"c0"
+ecom: 
+tuple (string, list of Shellbuiltin) 10 1
+  seq no type 10 1
+    name name string 0 0
+    seq no type 10 1
+      :: list of Shellbuiltin 10 1
+        name mod Shellbuiltin 0 0
+        name bmods list of Shellbuiltin 0 0
+ecom to: 
+name .b259 (string, list of Shellbuiltin) 0 0
+ecom: 
+name name string 0 0
+ecom to: 
+* string 0 0
+  + int 13 1
+    adr int 13 1
+      name .b259 (string, list of Shellbuiltin) 0 0
+    const (0) int 6 0
+ecom: 
+:: list of Shellbuiltin 10 1
+  name mod Shellbuiltin 0 0
+  name bmods list of Shellbuiltin 0 0
+ecom to: 
+* list of Shellbuiltin 0 0
+  + int 13 1
+    adr int 13 1
+      name .b259 (string, list of Shellbuiltin) 0 0
+    const (8) int 6 0
+ecom: 
+name bmods list of Shellbuiltin 0 0
+ecom to: 
+name .t258 list of Shellbuiltin 0 0
+ecom: 
+= list of Shellbuiltin 10 1
+  name .t258 list of Shellbuiltin 0 0
+  name nil list of Shellbuiltin 1 0
+ecom: 
+name nil list of Shellbuiltin 1 0
+ecom to: 
+name .t258 list of Shellbuiltin 0 0
+eacom: 
+* (string, list of Shellbuiltin) 10 1
+  indx big 10 1
+    * array of (string, list of Shellbuiltin) 8 0
+      name b ref Builtins 0 0
+    name n int 0 0
+generate desc for big
+ecom: 
+indx big 10 1
+  * array of (string, list of Shellbuiltin) 8 0
+    name b ref Builtins 0 0
+  name n int 0 0
+ecom to: 
+name .b257 big 0 0
+ecom: 
+name .b259 (string, list of Shellbuiltin) 0 0
+ecom to: 
+* (string, list of Shellbuiltin) 8 1
+  name .b257 big 0 0
+generate desc for (string, list of Shellbuiltin)
+ecom: 
+= string 10 1
+  * string 0 0
+    adr int 13 1
+      name .b259 (string, list of Shellbuiltin) 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+* string 0 0
+  adr int 13 1
+    name .b259 (string, list of Shellbuiltin) 0 0
+ecom: 
+= list of Shellbuiltin 10 1
+  * list of Shellbuiltin 0 0
+    + int 13 1
+      adr int 13 1
+        name .b259 (string, list of Shellbuiltin) 0 0
+      const t1 (8) int 6 0
+  name nil list of Shellbuiltin 1 0
+ecom: 
+name nil list of Shellbuiltin 1 0
+ecom to: 
+* list of Shellbuiltin 0 0
+  + int 13 1
+    adr int 13 1
+      name .b259 (string, list of Shellbuiltin) 0 0
+    const t1 (8) int 6 0
+ecom: 
+= (string, list of Shellbuiltin) 10 2
+  * (string, list of Shellbuiltin) 10 1
+    indx big 10 1
+      * array of (string, list of Shellbuiltin) 8 0
+        name b ref Builtins 0 0
+      name n int 0 0
+  tuple (string, list of Shellbuiltin) 10 1
+    seq no type 10 1
+      name name string 0 0
+      seq no type 10 1
+        :: list of Shellbuiltin 10 1
+          name mod Shellbuiltin 0 0
+          name nil polymorphic type 1 0
+generate desc for (string, list of Shellbuiltin)
+descmap adt offset 0
+descmap offset 0
+descmap t0 type string offset 0 (d->offset=0 start=0) returns 0
+descmap t1 type list of Shellbuiltin offset 8 (d->offset=8 start=0) returns 8
+generate desc for (string, list of Shellbuiltin)
+	desc	$-1,16,"c0"
+ecom: 
+tuple (string, list of Shellbuiltin) 10 1
+  seq no type 10 1
+    name name string 0 0
+    seq no type 10 1
+      :: list of Shellbuiltin 10 1
+        name mod Shellbuiltin 0 0
+        name nil polymorphic type 1 0
+ecom to: 
+name .b259 (string, list of Shellbuiltin) 0 0
+ecom: 
+name name string 0 0
+ecom to: 
+* string 0 0
+  + int 13 1
+    adr int 13 1
+      name .b259 (string, list of Shellbuiltin) 0 0
+    const (0) int 6 0
+ecom: 
+:: list of Shellbuiltin 10 1
+  name mod Shellbuiltin 0 0
+  name nil polymorphic type 1 0
+ecom to: 
+* list of Shellbuiltin 0 0
+  + int 13 1
+    adr int 13 1
+      name .b259 (string, list of Shellbuiltin) 0 0
+    const (8) int 6 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+name .t258 list of Shellbuiltin 0 0
+ecom: 
+= list of Shellbuiltin 10 1
+  name .t258 list of Shellbuiltin 0 0
+  name nil list of Shellbuiltin 1 0
+ecom: 
+name nil list of Shellbuiltin 1 0
+ecom to: 
+name .t258 list of Shellbuiltin 0 0
+eacom: 
+* (string, list of Shellbuiltin) 10 1
+  indx big 10 1
+    * array of (string, list of Shellbuiltin) 8 0
+      name b ref Builtins 0 0
+    name n int 0 0
+generate desc for big
+ecom: 
+indx big 10 1
+  * array of (string, list of Shellbuiltin) 8 0
+    name b ref Builtins 0 0
+  name n int 0 0
+ecom to: 
+name .b257 big 0 0
+ecom: 
+name .b259 (string, list of Shellbuiltin) 0 0
+ecom to: 
+* (string, list of Shellbuiltin) 8 1
+  name .b257 big 0 0
+generate desc for (string, list of Shellbuiltin)
+ecom: 
+= string 10 1
+  * string 0 0
+    adr int 13 1
+      name .b259 (string, list of Shellbuiltin) 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+* string 0 0
+  adr int 13 1
+    name .b259 (string, list of Shellbuiltin) 0 0
+ecom: 
+= list of Shellbuiltin 10 1
+  * list of Shellbuiltin 0 0
+    + int 13 1
+      adr int 13 1
+        name .b259 (string, list of Shellbuiltin) 0 0
+      const t1 (8) int 6 0
+  name nil list of Shellbuiltin 1 0
+ecom: 
+name nil list of Shellbuiltin 1 0
+ecom to: 
+* list of Shellbuiltin 0 0
+  + int 13 1
+    adr int 13 1
+      name .b259 (string, list of Shellbuiltin) 0 0
+    const t1 (8) int 6 0
+eacom: 
+len int 10 1
+  * array of (string, list of Shellbuiltin) 8 0
+    name b ref Builtins 0 0
+ecom: 
+len int 10 1
+  * array of (string, list of Shellbuiltin) 8 0
+    name b ref Builtins 0 0
+ecom to: 
+name .t260 int 0 0
+ecom: 
+* int 8 0
+  + int 15 1
+    name b ref Builtins 0 0
+    const n (8) int 6 0
+ecom to: 
+name .t261 int 0 0
+ecom: 
+= array of (string, list of Shellbuiltin) 10 1
+  name nb array of (string, list of Shellbuiltin) 0 0
+  array array of (string, list of Shellbuiltin) 10 1
+    + int 10 1
+      * int 8 0
+        + int 15 1
+          name b ref Builtins 0 0
+          const n (8) int 6 0
+      const (10) int 6 0
+ecom: 
+array array of (string, list of Shellbuiltin) 10 1
+  + int 10 1
+    * int 8 0
+      + int 15 1
+        name b ref Builtins 0 0
+        const n (8) int 6 0
+    const (10) int 6 0
+ecom to: 
+name nb array of (string, list of Shellbuiltin) 0 0
+eacom: 
++ int 10 1
+  * int 8 0
+    + int 15 1
+      name b ref Builtins 0 0
+      const n (8) int 6 0
+  const (10) int 6 0
+ecom: 
++ int 10 1
+  * int 8 0
+    + int 15 1
+      name b ref Builtins 0 0
+      const n (8) int 6 0
+  const (10) int 6 0
+ecom to: 
+name .t261 int 0 0
+generate desc for (string, list of Shellbuiltin)
+descmap adt offset 0
+descmap offset 0
+descmap t0 type string offset 0 (d->offset=0 start=0) returns 0
+descmap t1 type list of Shellbuiltin offset 8 (d->offset=8 start=0) returns 8
+generate desc for (string, list of Shellbuiltin)
+	desc	$-1,16,"c0"
+ecom: 
+= array of (string, list of Shellbuiltin) 10 2
+  slice array of (string, list of Shellbuiltin) 10 1
+    name nb array of (string, list of Shellbuiltin) 0 0
+    seq no type 10 1
+      const (0) int 6 0
+      nothing no type 10 1
+  slice array of (string, list of Shellbuiltin) 10 1
+    * array of (string, list of Shellbuiltin) 8 0
+      name b ref Builtins 0 0
+    seq no type 10 1
+      const (0) int 6 0
+      * int 8 0
+        + int 15 1
+          name b ref Builtins 0 0
+          const n (8) int 6 0
+eacom: 
+slice array of (string, list of Shellbuiltin) 10 1
+  * array of (string, list of Shellbuiltin) 8 0
+    name b ref Builtins 0 0
+  seq no type 10 1
+    const (0) int 6 0
+    * int 8 0
+      + int 15 1
+        name b ref Builtins 0 0
+        const n (8) int 6 0
+ecom: 
+slice array of (string, list of Shellbuiltin) 10 1
+  * array of (string, list of Shellbuiltin) 8 0
+    name b ref Builtins 0 0
+  seq no type 10 1
+    const (0) int 6 0
+    * int 8 0
+      + int 15 1
+        name b ref Builtins 0 0
+        const n (8) int 6 0
+ecom to: 
+name .t258 array of (string, list of Shellbuiltin) 0 0
+ecom: 
+* int 8 0
+  + int 15 1
+    name b ref Builtins 0 0
+    const n (8) int 6 0
+ecom to: 
+name .t261 int 0 0
+ecom: 
+* array of (string, list of Shellbuiltin) 8 0
+  name b ref Builtins 0 0
+ecom to: 
+name .t258 array of (string, list of Shellbuiltin) 0 0
+ecom: 
+= array of (string, list of Shellbuiltin) 10 1
+  name .t258 array of (string, list of Shellbuiltin) 0 0
+  name nil array of (string, list of Shellbuiltin) 1 0
+ecom: 
+name nil array of (string, list of Shellbuiltin) 1 0
+ecom to: 
+name .t258 array of (string, list of Shellbuiltin) 0 0
+ecom: 
+= array of (string, list of Shellbuiltin) 10 1
+  * array of (string, list of Shellbuiltin) 8 0
+    name b ref Builtins 0 0
+  name nb array of (string, list of Shellbuiltin) 0 0
+ecom: 
+name nb array of (string, list of Shellbuiltin) 0 0
+ecom to: 
+* array of (string, list of Shellbuiltin) 8 0
+  name b ref Builtins 0 0
+ecom: 
+= array of (string, list of Shellbuiltin) 10 1
+  name nb array of (string, list of Shellbuiltin) 0 0
+  name nil array of (string, list of Shellbuiltin) 1 0
+ecom: 
+name nil array of (string, list of Shellbuiltin) 1 0
+ecom to: 
+name nb array of (string, list of Shellbuiltin) 0 0
+ecom: 
+= array of (string, list of Shellbuiltin) 10 2
+  slice array of (string, list of Shellbuiltin) 10 2
+    * array of (string, list of Shellbuiltin) 8 0
+      name b ref Builtins 0 0
+    seq no type 10 2
+      + int 15 1
+        name n int 0 0
+        const (1) int 6 0
+      nothing no type 10 1
+  slice array of (string, list of Shellbuiltin) 10 1
+    * array of (string, list of Shellbuiltin) 8 0
+      name b ref Builtins 0 0
+    seq no type 10 1
+      name n int 0 0
+      * int 8 0
+        + int 15 1
+          name b ref Builtins 0 0
+          const n (8) int 6 0
+ecom: 
++ int 15 1
+  name n int 0 0
+  const (1) int 6 0
+ecom to: 
+name .t261 int 0 0
+eacom: 
+slice array of (string, list of Shellbuiltin) 10 1
+  * array of (string, list of Shellbuiltin) 8 0
+    name b ref Builtins 0 0
+  seq no type 10 1
+    name n int 0 0
+    * int 8 0
+      + int 15 1
+        name b ref Builtins 0 0
+        const n (8) int 6 0
+ecom: 
+slice array of (string, list of Shellbuiltin) 10 1
+  * array of (string, list of Shellbuiltin) 8 0
+    name b ref Builtins 0 0
+  seq no type 10 1
+    name n int 0 0
+    * int 8 0
+      + int 15 1
+        name b ref Builtins 0 0
+        const n (8) int 6 0
+ecom to: 
+name .t258 array of (string, list of Shellbuiltin) 0 0
+ecom: 
+* int 8 0
+  + int 15 1
+    name b ref Builtins 0 0
+    const n (8) int 6 0
+ecom to: 
+name .t260 int 0 0
+ecom: 
+* array of (string, list of Shellbuiltin) 8 0
+  name b ref Builtins 0 0
+ecom to: 
+name .t258 array of (string, list of Shellbuiltin) 0 0
+ecom: 
+= array of (string, list of Shellbuiltin) 10 1
+  name .t258 array of (string, list of Shellbuiltin) 0 0
+  name nil array of (string, list of Shellbuiltin) 1 0
+ecom: 
+name nil array of (string, list of Shellbuiltin) 1 0
+ecom to: 
+name .t258 array of (string, list of Shellbuiltin) 0 0
+ecom: 
+= (string, list of Shellbuiltin) 10 2
+  * (string, list of Shellbuiltin) 10 1
+    indx big 10 1
+      * array of (string, list of Shellbuiltin) 8 0
+        name b ref Builtins 0 0
+      name n int 0 0
+  tuple (string, list of Shellbuiltin) 10 1
+    seq no type 10 1
+      name name string 0 0
+      seq no type 10 1
+        :: list of Shellbuiltin 10 1
+          name mod Shellbuiltin 0 0
+          name nil polymorphic type 1 0
+generate desc for (string, list of Shellbuiltin)
+descmap adt offset 0
+descmap offset 0
+descmap t0 type string offset 0 (d->offset=0 start=0) returns 0
+descmap t1 type list of Shellbuiltin offset 8 (d->offset=8 start=0) returns 8
+generate desc for (string, list of Shellbuiltin)
+	desc	$-1,16,"c0"
+ecom: 
+tuple (string, list of Shellbuiltin) 10 1
+  seq no type 10 1
+    name name string 0 0
+    seq no type 10 1
+      :: list of Shellbuiltin 10 1
+        name mod Shellbuiltin 0 0
+        name nil polymorphic type 1 0
+ecom to: 
+name .b259 (string, list of Shellbuiltin) 0 0
+ecom: 
+name name string 0 0
+ecom to: 
+* string 0 0
+  + int 13 1
+    adr int 13 1
+      name .b259 (string, list of Shellbuiltin) 0 0
+    const (0) int 6 0
+ecom: 
+:: list of Shellbuiltin 10 1
+  name mod Shellbuiltin 0 0
+  name nil polymorphic type 1 0
+ecom to: 
+* list of Shellbuiltin 0 0
+  + int 13 1
+    adr int 13 1
+      name .b259 (string, list of Shellbuiltin) 0 0
+    const (8) int 6 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+name .t258 list of Shellbuiltin 0 0
+ecom: 
+= list of Shellbuiltin 10 1
+  name .t258 list of Shellbuiltin 0 0
+  name nil list of Shellbuiltin 1 0
+ecom: 
+name nil list of Shellbuiltin 1 0
+ecom to: 
+name .t258 list of Shellbuiltin 0 0
+eacom: 
+* (string, list of Shellbuiltin) 10 1
+  indx big 10 1
+    * array of (string, list of Shellbuiltin) 8 0
+      name b ref Builtins 0 0
+    name n int 0 0
+generate desc for big
+ecom: 
+indx big 10 1
+  * array of (string, list of Shellbuiltin) 8 0
+    name b ref Builtins 0 0
+  name n int 0 0
+ecom to: 
+name .b257 big 0 0
+ecom: 
+name .b259 (string, list of Shellbuiltin) 0 0
+ecom to: 
+* (string, list of Shellbuiltin) 8 1
+  name .b257 big 0 0
+generate desc for (string, list of Shellbuiltin)
+ecom: 
+= string 10 1
+  * string 0 0
+    adr int 13 1
+      name .b259 (string, list of Shellbuiltin) 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+* string 0 0
+  adr int 13 1
+    name .b259 (string, list of Shellbuiltin) 0 0
+ecom: 
+= list of Shellbuiltin 10 1
+  * list of Shellbuiltin 0 0
+    + int 13 1
+      adr int 13 1
+        name .b259 (string, list of Shellbuiltin) 0 0
+      const t1 (8) int 6 0
+  name nil list of Shellbuiltin 1 0
+ecom: 
+name nil list of Shellbuiltin 1 0
+ecom to: 
+* list of Shellbuiltin 0 0
+  + int 13 1
+    adr int 13 1
+      name .b259 (string, list of Shellbuiltin) 0 0
+    const t1 (8) int 6 0
+ecom: 
+++ int 10 1
+  * int 8 0
+    + int 15 1
+      name b ref Builtins 0 0
+      const n (8) int 6 0
+  const (1) int 6 0
+fn: addbuiltin
+64: argument b ref Builtins ref 14
+72: argument name string ref 5
+80: argument mod Shellbuiltin ref 5
+88: local n int ref 6
+96: local bmods list of Shellbuiltin ref 4
+104: local .t260 int ref 1
+108: local .t261 int ref 1
+112: local .b257 big ref 4
+120: local nb array of (string, list of Shellbuiltin) ref 3
+128: local .b259 (string, list of Shellbuiltin) ref 3
+144: local .t258 Shellbuiltin ref 1
+generate desc for addbuiltin
+descmap offset 0
+descmap b type ref Builtins offset 64 (d->offset=64 start=0) returns 64
+descmap name type string offset 72 (d->offset=72 start=0) returns 72
+descmap mod type Shellbuiltin offset 80 (d->offset=80 start=0) returns 80
+descmap n type int offset 88 (d->offset=88 start=0) returns -1
+descmap bmods type list of Shellbuiltin offset 96 (d->offset=96 start=0) returns 96
+descmap .t260 type int offset 104 (d->offset=104 start=0) returns -1
+descmap .t261 type int offset 108 (d->offset=108 start=0) returns -1
+descmap .b257 type big offset 112 (d->offset=112 start=0) returns -1
+descmap nb type array of (string, list of Shellbuiltin) offset 120 (d->offset=120 start=0) returns 120
+descmap adt offset 128
+descmap offset 128
+descmap t0 type string offset 128 (d->offset=0 start=128) returns 128
+descmap t1 type list of Shellbuiltin offset 136 (d->offset=8 start=128) returns 136
+descmap .b259 type (string, list of Shellbuiltin) offset 128 (d->offset=128 start=0) returns 136
+descmap .t258 type Shellbuiltin offset 144 (d->offset=144 start=0) returns 144
+fncom: removebuiltinmod 3 419fa8
+ecom: 
+= int 10 1
+  name j int 0 0
+  const (0) int 6 0
+ecom: 
+const (0) int 6 0
+ecom to: 
+name j int 0 0
+ecom: 
+= int 10 1
+  name i int 0 0
+  const (0) int 6 0
+ecom: 
+const (0) int 6 0
+ecom to: 
+name i int 0 0
+ecom: 
+= (string, list of Shellbuiltin) 10 2
+  tuple (string, list of Shellbuiltin) 10 1
+    seq nothing 10 1
+      name name string 0 0
+      seq nothing 10 1
+        name bmods list of Shellbuiltin 0 0
+  * (string, list of Shellbuiltin) 10 1
+    indx big 10 1
+      * array of (string, list of Shellbuiltin) 8 0
+        name b ref Builtins 0 0
+      name i int 0 0
+ecom: 
+* (string, list of Shellbuiltin) 10 1
+  indx big 10 1
+    * array of (string, list of Shellbuiltin) 8 0
+      name b ref Builtins 0 0
+    name i int 0 0
+ecom to: 
+name name (string, list of Shellbuiltin) 0 0
+eacom: 
+* (string, list of Shellbuiltin) 10 1
+  indx big 10 1
+    * array of (string, list of Shellbuiltin) 8 0
+      name b ref Builtins 0 0
+    name i int 0 0
+generate desc for big
+ecom: 
+indx big 10 1
+  * array of (string, list of Shellbuiltin) 8 0
+    name b ref Builtins 0 0
+  name i int 0 0
+ecom to: 
+name .b262 big 0 0
+generate desc for (string, list of Shellbuiltin)
+eacom: 
+hd Shellbuiltin 10 1
+  name bmods list of Shellbuiltin 0 0
+ecom: 
+hd Shellbuiltin 10 1
+  name bmods list of Shellbuiltin 0 0
+ecom to: 
+name .t263 Shellbuiltin 0 0
+ecom: 
+= Shellbuiltin 10 1
+  name .t263 Shellbuiltin 0 0
+  name nil Shellbuiltin 1 0
+ecom: 
+name nil Shellbuiltin 1 0
+ecom to: 
+name .t263 Shellbuiltin 0 0
+ecom: 
+= list of Shellbuiltin 10 1
+  name bmods list of Shellbuiltin 0 0
+  tl list of Shellbuiltin 10 1
+    name bmods list of Shellbuiltin 0 0
+ecom: 
+tl list of Shellbuiltin 10 1
+  name bmods list of Shellbuiltin 0 0
+ecom to: 
+name bmods list of Shellbuiltin 0 0
+ecom: 
+= (string, list of Shellbuiltin) 10 2
+  * (string, list of Shellbuiltin) 10 1
+    indx big 10 1
+      * array of (string, list of Shellbuiltin) 8 0
+        name b ref Builtins 0 0
+      ++ int 10 1
+        name j int 0 0
+        const (1) int 6 0
+  tuple (string, list of Shellbuiltin) 10 1
+    seq no type 10 1
+      name name string 0 0
+      seq no type 10 1
+        name bmods list of Shellbuiltin 0 0
+eacom: 
+* (string, list of Shellbuiltin) 10 1
+  indx big 10 1
+    * array of (string, list of Shellbuiltin) 8 0
+      name b ref Builtins 0 0
+    ++ int 10 1
+      name j int 0 0
+      const (1) int 6 0
+generate desc for big
+ecom: 
+indx big 10 1
+  * array of (string, list of Shellbuiltin) 8 0
+    name b ref Builtins 0 0
+  ++ int 10 1
+    name j int 0 0
+    const (1) int 6 0
+ecom to: 
+name .b262 big 0 0
+eacom: 
+++ int 10 1
+  name j int 0 0
+  const (1) int 6 0
+ecom: 
+++ int 10 1
+  name j int 0 0
+  const (1) int 6 0
+ecom to: 
+name .t264 int 0 0
+ecom: 
+name name (string, list of Shellbuiltin) 0 0
+ecom to: 
+* (string, list of Shellbuiltin) 8 1
+  name .b262 big 0 0
+generate desc for (string, list of Shellbuiltin)
+descmap adt offset 0
+descmap offset 0
+descmap t0 type string offset 0 (d->offset=0 start=0) returns 0
+descmap t1 type list of Shellbuiltin offset 8 (d->offset=8 start=0) returns 8
+generate desc for (string, list of Shellbuiltin)
+	desc	$-1,16,"c0"
+ecom: 
+= string 10 1
+  * string 0 0
+    adr int 13 1
+      name name (string, list of Shellbuiltin) 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+* string 0 0
+  adr int 13 1
+    name name (string, list of Shellbuiltin) 0 0
+ecom: 
+= list of Shellbuiltin 10 1
+  * list of Shellbuiltin 0 0
+    + int 13 1
+      adr int 13 1
+        name name (string, list of Shellbuiltin) 0 0
+      const t1 (8) int 6 0
+  name nil list of Shellbuiltin 1 0
+ecom: 
+name nil list of Shellbuiltin 1 0
+ecom to: 
+* list of Shellbuiltin 0 0
+  + int 13 1
+    adr int 13 1
+      name name (string, list of Shellbuiltin) 0 0
+    const t1 (8) int 6 0
+ecom: 
+= list of Shellbuiltin 10 1
+  name bmods list of Shellbuiltin 0 0
+  name nil list of Shellbuiltin 1 0
+ecom: 
+name nil list of Shellbuiltin 1 0
+ecom to: 
+name bmods list of Shellbuiltin 0 0
+ecom: 
+++ int 10 1
+  name i int 0 0
+  const (1) int 6 0
+ecom: 
+= int 10 1
+  * int 8 0
+    + int 15 1
+      name b ref Builtins 0 0
+      const n (8) int 6 0
+  name j int 0 0
+ecom: 
+name j int 0 0
+ecom to: 
+* int 8 0
+  + int 15 1
+    name b ref Builtins 0 0
+    const n (8) int 6 0
+ecom: 
+= (polymorphic type, polymorphic type) 10 2
+  * (polymorphic type, polymorphic type) 10 1
+    indx big 10 1
+      * array of (string, list of Shellbuiltin) 8 0
+        name b ref Builtins 0 0
+      name j int 0 0
+  tuple (polymorphic type, polymorphic type) 10 1
+    seq no type 10 1
+      name nil polymorphic type 1 0
+      seq no type 10 1
+        name nil polymorphic type 1 0
+generate desc for (polymorphic type, polymorphic type)
+descmap adt offset 0
+descmap offset 0
+descmap t0 type polymorphic type offset 0 (d->offset=0 start=0) returns 0
+descmap t1 type polymorphic type offset 8 (d->offset=8 start=0) returns 8
+generate desc for (polymorphic type, polymorphic type)
+	desc	$-1,16,"c0"
+ecom: 
+tuple (polymorphic type, polymorphic type) 10 1
+  seq no type 10 1
+    name nil polymorphic type 1 0
+    seq no type 10 1
+      name nil polymorphic type 1 0
+ecom to: 
+name .b265 (polymorphic type, polymorphic type) 0 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* polymorphic type 0 0
+  + int 13 1
+    adr int 13 1
+      name .b265 (polymorphic type, polymorphic type) 0 0
+    const (0) int 6 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* polymorphic type 0 0
+  + int 13 1
+    adr int 13 1
+      name .b265 (polymorphic type, polymorphic type) 0 0
+    const (8) int 6 0
+eacom: 
+* (polymorphic type, polymorphic type) 10 1
+  indx big 10 1
+    * array of (string, list of Shellbuiltin) 8 0
+      name b ref Builtins 0 0
+    name j int 0 0
+generate desc for big
+ecom: 
+indx big 10 1
+  * array of (string, list of Shellbuiltin) 8 0
+    name b ref Builtins 0 0
+  name j int 0 0
+ecom to: 
+name .b262 big 0 0
+ecom: 
+name .b265 (polymorphic type, polymorphic type) 0 0
+ecom to: 
+* (polymorphic type, polymorphic type) 8 1
+  name .b262 big 0 0
+generate desc for (polymorphic type, polymorphic type)
+ecom: 
+= polymorphic type 10 1
+  * polymorphic type 0 0
+    adr int 13 1
+      name .b265 (polymorphic type, polymorphic type) 0 0
+  name nil polymorphic type 1 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* polymorphic type 0 0
+  adr int 13 1
+    name .b265 (polymorphic type, polymorphic type) 0 0
+ecom: 
+= polymorphic type 10 1
+  * polymorphic type 0 0
+    + int 13 1
+      adr int 13 1
+        name .b265 (polymorphic type, polymorphic type) 0 0
+      const t1 (8) int 6 0
+  name nil polymorphic type 1 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* polymorphic type 0 0
+  + int 13 1
+    adr int 13 1
+      name .b265 (polymorphic type, polymorphic type) 0 0
+    const t1 (8) int 6 0
+ecom: 
+++ int 10 1
+  name j int 0 0
+  const (1) int 6 0
+fn: removebuiltinmod
+64: argument b ref Builtins ref 5
+72: argument mod Shellbuiltin ref 1
+80: local j int ref 6
+84: local i int ref 5
+88: local .t264 int ref 1
+96: local .b262 big ref 3
+104: local name string ref 2
+112: local bmods list of Shellbuiltin ref 6
+120: local .t263 Shellbuiltin ref 1
+128: local .b265 (polymorphic type, polymorphic type) ref 1
+generate desc for removebuiltinmod
+descmap offset 0
+descmap b type ref Builtins offset 64 (d->offset=64 start=0) returns 64
+descmap mod type Shellbuiltin offset 72 (d->offset=72 start=0) returns 72
+descmap j type int offset 80 (d->offset=80 start=0) returns -1
+descmap i type int offset 84 (d->offset=84 start=0) returns -1
+descmap .t264 type int offset 88 (d->offset=88 start=0) returns -1
+descmap .b262 type big offset 96 (d->offset=96 start=0) returns -1
+descmap name type string offset 104 (d->offset=104 start=0) returns 104
+descmap bmods type list of Shellbuiltin offset 112 (d->offset=112 start=0) returns 112
+descmap .t263 type Shellbuiltin offset 120 (d->offset=120 start=0) returns 120
+descmap adt offset 128
+descmap offset 128
+descmap t0 type polymorphic type offset 128 (d->offset=0 start=128) returns 128
+descmap t1 type polymorphic type offset 136 (d->offset=8 start=128) returns 136
+descmap .b265 type (polymorphic type, polymorphic type) offset 128 (d->offset=128 start=0) returns 136
+fncom: export 4 6e80d0
+ecom: 
+call no type 10 2
+  name export fn(e: ref Localenv) 11 1
+  seq no type 10 1
+    * ref Localenv 8 0
+      + int 15 1
+        name e ref Localenv 0 0
+        const pushed (8) int 6 0
+generate desc for big
+ecom: 
+* ref Localenv 8 0
+  + int 15 1
+    name e ref Localenv 0 0
+    const pushed (8) int 6 0
+ecom to: 
+* ref Localenv 8 0
+  + int 15 0
+    name .b266 big 0 0
+    const (64) int 6 0
+ecom: 
+= int 10 1
+  name i int 0 0
+  const (0) int 6 0
+ecom: 
+const (0) int 6 0
+ecom to: 
+name i int 0 0
+eacom: 
+len int 10 1
+  * array of list of ref Var 8 0
+    name e ref Localenv 0 0
+ecom: 
+len int 10 1
+  * array of list of ref Var 8 0
+    name e ref Localenv 0 0
+ecom to: 
+name .t267 int 0 0
+ecom: 
+= list of ref Var 10 1
+  name vl list of ref Var 0 0
+  * list of ref Var 10 1
+    indx big 10 1
+      * array of list of ref Var 8 0
+        name e ref Localenv 0 0
+      name i int 0 0
+ecom: 
+* list of ref Var 10 1
+  indx big 10 1
+    * array of list of ref Var 8 0
+      name e ref Localenv 0 0
+    name i int 0 0
+ecom to: 
+name vl list of ref Var 0 0
+eacom: 
+* list of ref Var 10 1
+  indx big 10 1
+    * array of list of ref Var 8 0
+      name e ref Localenv 0 0
+    name i int 0 0
+generate desc for big
+ecom: 
+indx big 10 1
+  * array of list of ref Var 8 0
+    name e ref Localenv 0 0
+  name i int 0 0
+ecom to: 
+name .b266 big 0 0
+ecom: 
+= ref Var 10 1
+  name v ref Var 0 0
+  hd ref Var 10 1
+    name vl list of ref Var 0 0
+ecom: 
+hd ref Var 10 1
+  name vl list of ref Var 0 0
+ecom to: 
+name v ref Var 0 0
+eacom: 
+& int 10 1
+  * int 8 0
+    + int 15 1
+      name v ref Var 0 0
+      const flags (16) int 6 0
+  const CHANGED (1) int 6 0
+ecom: 
+& int 10 1
+  * int 8 0
+    + int 15 1
+      name v ref Var 0 0
+      const flags (16) int 6 0
+  const CHANGED (1) int 6 0
+ecom to: 
+name .t267 int 0 0
+eacom: 
+& int 10 1
+  * int 8 0
+    + int 15 1
+      name v ref Var 0 0
+      const flags (16) int 6 0
+  const NOEXPORT (2) int 6 0
+ecom: 
+& int 10 1
+  * int 8 0
+    + int 15 1
+      name v ref Var 0 0
+      const flags (16) int 6 0
+  const NOEXPORT (2) int 6 0
+ecom to: 
+name .t267 int 0 0
+ecom: 
+call no type 10 2
+  name setenv fn(name: string, val: list of ref Listnode) 11 1
+  seq no type 10 1
+    * string 8 0
+      name v ref Var 0 0
+    seq no type 10 1
+      * list of ref Listnode 8 0
+        + int 15 1
+          name v ref Var 0 0
+          const val (8) int 6 0
+generate desc for big
+ecom: 
+* string 8 0
+  name v ref Var 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b266 big 0 0
+    const (64) int 6 0
+ecom: 
+* list of ref Listnode 8 0
+  + int 15 1
+    name v ref Var 0 0
+    const val (8) int 6 0
+ecom to: 
+* list of ref Listnode 8 0
+  + int 15 0
+    name .b266 big 0 0
+    const (72) int 6 0
+ecom: 
+&= int 10 1
+  * int 8 0
+    + int 15 1
+      name v ref Var 0 0
+      const flags (16) int 6 0
+  const (-2) int 6 0
+ecom: 
+= ref Var 10 1
+  name v ref Var 0 0
+  name nil ref Var 1 0
+ecom: 
+name nil ref Var 1 0
+ecom to: 
+name v ref Var 0 0
+ecom: 
+= list of ref Var 10 1
+  name vl list of ref Var 0 0
+  tl list of ref Var 10 1
+    name vl list of ref Var 0 0
+ecom: 
+tl list of ref Var 10 1
+  name vl list of ref Var 0 0
+ecom to: 
+name vl list of ref Var 0 0
+ecom: 
+= list of ref Var 10 1
+  name vl list of ref Var 0 0
+  name nil list of ref Var 1 0
+ecom: 
+name nil list of ref Var 1 0
+ecom to: 
+name vl list of ref Var 0 0
+ecom: 
+++ int 10 1
+  name i int 0 0
+  const (1) int 6 0
+fn: export
+64: argument e ref Localenv ref 4
+72: local i int ref 4
+76: local .t267 int ref 1
+80: local v ref Var ref 6
+88: local vl list of ref Var ref 5
+96: local .b266 big ref 3
+generate desc for export
+descmap offset 0
+descmap e type ref Localenv offset 64 (d->offset=64 start=0) returns 64
+descmap i type int offset 72 (d->offset=72 start=0) returns -1
+descmap .t267 type int offset 76 (d->offset=76 start=0) returns -1
+descmap v type ref Var offset 80 (d->offset=80 start=0) returns 80
+descmap vl type list of ref Var offset 88 (d->offset=88 start=0) returns 88
+descmap .b266 type big offset 96 (d->offset=96 start=0) returns -1
+fncom: noexport 3 6e8190
+ecom: 
+const (1) int 6 0
+ecom to: 
+* int 8 0
+  name .ret int 0 0
+ecom: 
+const (0) int 6 0
+ecom to: 
+* int 8 0
+  name .ret int 0 0
+fn: noexport
+64: argument name string ref 1
+generate desc for noexport
+descmap offset 0
+descmap name type string offset 64 (d->offset=64 start=0) returns 64
+fncom: index 2 6e8250
+ecom: 
+= list of ref Listnode 10 1
+  name val list of ref Listnode 0 0
+  tl list of ref Listnode 10 1
+    name val list of ref Listnode 0 0
+ecom: 
+tl list of ref Listnode 10 1
+  name val list of ref Listnode 0 0
+ecom to: 
+name val list of ref Listnode 0 0
+ecom: 
+-- int 10 1
+  name k int 0 0
+  const (1) int 6 0
+ecom: 
+= list of ref Listnode 10 1
+  name val list of ref Listnode 0 0
+  :: list of ref Listnode 10 1
+    hd ref Listnode 10 1
+      name val list of ref Listnode 0 0
+    name nil polymorphic type 1 0
+ecom: 
+:: list of ref Listnode 10 1
+  hd ref Listnode 10 1
+    name val list of ref Listnode 0 0
+  name nil polymorphic type 1 0
+ecom to: 
+name val list of ref Listnode 0 0
+eacom: 
+hd ref Listnode 10 1
+  name val list of ref Listnode 0 0
+generate desc for ref Listnode
+generate desc for ref Listnode
+	desc	$-1,8,"80"
+ecom: 
+hd ref Listnode 10 1
+  name val list of ref Listnode 0 0
+ecom to: 
+name .b268 ref Listnode 0 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+name .t269 list of ref Listnode 0 0
+ecom: 
+= ref Listnode 10 1
+  name .b268 ref Listnode 0 0
+  name nil ref Listnode 1 0
+ecom: 
+name nil ref Listnode 1 0
+ecom to: 
+name .b268 ref Listnode 0 0
+ecom: 
+= list of ref Listnode 10 1
+  name .t269 list of ref Listnode 0 0
+  name nil list of ref Listnode 1 0
+ecom: 
+name nil list of ref Listnode 1 0
+ecom to: 
+name .t269 list of ref Listnode 0 0
+ecom: 
+name val list of ref Listnode 0 0
+ecom to: 
+* list of ref Listnode 8 0
+  name .ret int 0 0
+fn: index
+64: argument val list of ref Listnode ref 7
+72: argument k int ref 2
+80: local .b268 ref Listnode ref 1
+88: local .t269 list of ref Listnode ref 1
+generate desc for index
+descmap offset 0
+descmap val type list of ref Listnode offset 64 (d->offset=64 start=0) returns 64
+descmap k type int offset 72 (d->offset=72 start=0) returns -1
+descmap .b268 type ref Listnode offset 80 (d->offset=80 start=0) returns 80
+descmap .t269 type list of ref Listnode offset 88 (d->offset=88 start=0) returns 88
+fncom: getenv 1 6e8310
+fncom: envstringtoval 3 6e83d0
+fncom: XXXenvstringtoval 1 6e8490
+fncom: setenv 2 6e8550
+ecom: 
+used int 10 2
+  call int 10 2
+    -> fn(var: string, val: string): int 12 1
+      name env Env 1 0
+      name setenv nothing 11 1
+    seq no type 10 2
+      name name string 0 0
+      seq no type 10 2
+        call string 10 2
+          name quoted fn(val: list of ref Listnode, quoteblocks: int): string 11 1
+          seq no type 10 1
+            name val list of ref Listnode 0 0
+            seq no type 10 1
+              const (1) int 6 0
+ecom: 
+call int 10 2
+  -> fn(var: string, val: string): int 12 1
+    name env Env 1 0
+    name setenv nothing 11 1
+  seq no type 10 2
+    name name string 0 0
+    seq no type 10 2
+      call string 10 2
+        name quoted fn(val: list of ref Listnode, quoteblocks: int): string 11 1
+        seq no type 10 1
+          name val list of ref Listnode 0 0
+          seq no type 10 1
+            const (1) int 6 0
+ecom to: 
+name .t270 int 0 0
+generate desc for big
+ecom: 
+call string 10 2
+  name quoted fn(val: list of ref Listnode, quoteblocks: int): string 11 1
+  seq no type 10 1
+    name val list of ref Listnode 0 0
+    seq no type 10 1
+      const (1) int 6 0
+ecom to: 
+name .t272 string 0 0
+generate desc for big
+ecom: 
+name val list of ref Listnode 0 0
+ecom to: 
+* list of ref Listnode 8 0
+  + int 15 0
+    name .b273 big 0 0
+    const (64) int 6 0
+ecom: 
+const (1) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b273 big 0 0
+    const (72) int 6 0
+ecom: 
+name name string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b271 big 0 0
+    const (64) int 6 0
+ecom: 
+name .t272 string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b271 big 0 0
+    const (72) int 6 0
+ecom: 
+= string 10 1
+  name .t272 string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name .t272 string 0 0
+fn: setenv
+64: argument name string ref 1
+72: argument val list of ref Listnode ref 1
+80: local .t270 int ref 1
+88: local .b271 big ref 1
+96: local .b273 big ref 1
+104: local .t272 string ref 1
+generate desc for setenv
+descmap offset 0
+descmap name type string offset 64 (d->offset=64 start=0) returns 64
+descmap val type list of ref Listnode offset 72 (d->offset=72 start=0) returns 72
+descmap .t270 type int offset 80 (d->offset=80 start=0) returns -1
+descmap .b271 type big offset 88 (d->offset=88 start=0) returns -1
+descmap .b273 type big offset 96 (d->offset=96 start=0) returns -1
+descmap .t272 type string offset 104 (d->offset=104 start=0) returns 104
+fncom: containswildchar 2 6e8610
+ecom: 
+= int 10 1
+  name i int 0 0
+  const (0) int 6 0
+ecom: 
+const (0) int 6 0
+ecom to: 
+name i int 0 0
+eacom: 
+len int 10 1
+  name s string 0 0
+ecom: 
+len int 10 1
+  name s string 0 0
+ecom to: 
+name .t274 int 0 0
+eacom: 
+inds int 10 1
+  name s string 0 0
+  name i int 0 0
+ecom: 
+inds int 10 1
+  name s string 0 0
+  name i int 0 0
+ecom to: 
+name .t274 int 0 0
+eacom: 
+- int 10 1
+  len int 10 1
+    name s string 0 0
+  const (1) int 6 0
+ecom: 
+- int 10 1
+  len int 10 1
+    name s string 0 0
+  const (1) int 6 0
+ecom to: 
+name .t274 int 0 0
+ecom: 
+len int 10 1
+  name s string 0 0
+ecom to: 
+name .t274 int 0 0
+eacom: 
+inds int 10 1
+  name s string 0 0
+  + int 15 1
+    name i int 0 0
+    const (1) int 6 0
+ecom: 
+inds int 10 1
+  name s string 0 0
+  + int 15 1
+    name i int 0 0
+    const (1) int 6 0
+ecom to: 
+name .t274 int 0 0
+ecom: 
++ int 15 1
+  name i int 0 0
+  const (1) int 6 0
+ecom to: 
+name .t275 int 0 0
+ecom: 
+const (1) int 6 0
+ecom to: 
+* int 8 0
+  name .ret int 0 0
+ecom: 
+++ int 10 1
+  name i int 0 0
+  const (1) int 6 0
+ecom: 
+const (0) int 6 0
+ecom to: 
+* int 8 0
+  name .ret int 0 0
+fn: containswildchar
+64: argument s string ref 4
+72: local i int ref 6
+76: local .t274 int ref 1
+80: local .t275 int ref 1
+generate desc for containswildchar
+descmap offset 0
+descmap s type string offset 64 (d->offset=64 start=0) returns 64
+descmap i type int offset 72 (d->offset=72 start=0) returns -1
+descmap .t274 type int offset 76 (d->offset=76 start=0) returns -1
+descmap .t275 type int offset 80 (d->offset=80 start=0) returns -1
+fncom: patquote 2 6e86d0
+ecom: 
+= string 10 1
+  name outword string 0 0
+  const  string 1 0
+ecom: 
+const  string 1 0
+ecom to: 
+name outword string 0 0
+ecom: 
+= int 10 1
+  name i int 0 0
+  const (0) int 6 0
+ecom: 
+const (0) int 6 0
+ecom to: 
+name i int 0 0
+eacom: 
+len int 10 1
+  name word string 0 0
+ecom: 
+len int 10 1
+  name word string 0 0
+ecom to: 
+name .t276 int 0 0
+eacom: 
+inds int 10 1
+  name word string 0 0
+  name i int 0 0
+ecom: 
+inds int 10 1
+  name word string 0 0
+  name i int 0 0
+ecom to: 
+name .t276 int 0 0
+ecom: 
+= int 10 1
+  inds int 10 1
+    name outword string 0 0
+    len int 10 1
+      name outword string 0 0
+  const (92) int 6 0
+ecom: 
+len int 10 1
+  name outword string 0 0
+ecom to: 
+name .t276 int 0 0
+ecom: 
+++ int 10 1
+  name i int 0 0
+  const (1) int 6 0
+eacom: 
+len int 10 1
+  name word string 0 0
+ecom: 
+len int 10 1
+  name word string 0 0
+ecom to: 
+name .t276 int 0 0
+ecom: 
+name outword string 0 0
+ecom to: 
+* string 8 0
+  name .ret int 0 0
+eacom: 
+inds int 10 1
+  name word string 0 0
+  name i int 0 0
+ecom: 
+inds int 10 1
+  name word string 0 0
+  name i int 0 0
+ecom to: 
+name .t276 int 0 0
+eacom: 
+- int 10 1
+  len int 10 1
+    name word string 0 0
+  const (1) int 6 0
+ecom: 
+- int 10 1
+  len int 10 1
+    name word string 0 0
+  const (1) int 6 0
+ecom to: 
+name .t276 int 0 0
+ecom: 
+len int 10 1
+  name word string 0 0
+ecom to: 
+name .t276 int 0 0
+eacom: 
+inds int 10 1
+  name word string 0 0
+  + int 15 1
+    name i int 0 0
+    const (1) int 6 0
+ecom: 
+inds int 10 1
+  name word string 0 0
+  + int 15 1
+    name i int 0 0
+    const (1) int 6 0
+ecom to: 
+name .t276 int 0 0
+ecom: 
++ int 15 1
+  name i int 0 0
+  const (1) int 6 0
+ecom to: 
+name .t277 int 0 0
+ecom: 
+= int 10 1
+  inds int 10 1
+    name word string 0 0
+    + int 15 1
+      name i int 0 0
+      const (1) int 6 0
+  const (94) int 6 0
+ecom: 
++ int 15 1
+  name i int 0 0
+  const (1) int 6 0
+ecom to: 
+name .t277 int 0 0
+ecom: 
+= int 10 2
+  inds int 10 1
+    name outword string 0 0
+    len int 10 1
+      name outword string 0 0
+  inds int 10 1
+    name word string 0 0
+    name i int 0 0
+ecom: 
+len int 10 1
+  name outword string 0 0
+ecom to: 
+name .t277 int 0 0
+eacom: 
+inds int 10 1
+  name word string 0 0
+  name i int 0 0
+ecom: 
+inds int 10 1
+  name word string 0 0
+  name i int 0 0
+ecom to: 
+name .t276 int 0 0
+ecom: 
+++ int 10 1
+  name i int 0 0
+  const (1) int 6 0
+ecom: 
+name outword string 0 0
+ecom to: 
+* string 8 0
+  name .ret int 0 0
+fn: patquote
+64: argument word string ref 8
+72: local i int ref 11
+76: local .t276 int ref 1
+80: local .t277 int ref 1
+88: local outword string ref 7
+generate desc for patquote
+descmap offset 0
+descmap word type string offset 64 (d->offset=64 start=0) returns 64
+descmap i type int offset 72 (d->offset=72 start=0) returns -1
+descmap .t276 type int offset 76 (d->offset=76 start=0) returns -1
+descmap .t277 type int offset 80 (d->offset=80 start=0) returns -1
+descmap outword type string offset 88 (d->offset=88 start=0) returns 88
+fncom: deglob 4 6e8790
+ecom: 
+= int 10 1
+  name j int 0 0
+  const (0) int 6 0
+ecom: 
+const (0) int 6 0
+ecom to: 
+name j int 0 0
+ecom: 
+= int 10 1
+  name i int 0 0
+  const (0) int 6 0
+ecom: 
+const (0) int 6 0
+ecom to: 
+name i int 0 0
+eacom: 
+len int 10 1
+  name s string 0 0
+ecom: 
+len int 10 1
+  name s string 0 0
+ecom to: 
+name .t278 int 0 0
+eacom: 
+inds int 10 1
+  name s string 0 0
+  name i int 0 0
+ecom: 
+inds int 10 1
+  name s string 0 0
+  name i int 0 0
+ecom to: 
+name .t278 int 0 0
+ecom: 
+= int 10 2
+  inds int 10 1
+    name s string 0 0
+    name j int 0 0
+  inds int 10 1
+    name s string 0 0
+    name i int 0 0
+eacom: 
+inds int 10 1
+  name s string 0 0
+  name i int 0 0
+ecom: 
+inds int 10 1
+  name s string 0 0
+  name i int 0 0
+ecom to: 
+name .t278 int 0 0
+ecom: 
+++ int 10 1
+  name j int 0 0
+  const (1) int 6 0
+ecom: 
+++ int 10 1
+  name i int 0 0
+  const (1) int 6 0
+ecom: 
+name s string 0 0
+ecom to: 
+* string 8 0
+  name .ret int 0 0
+ecom: 
+slice string 10 1
+  name s string 0 0
+  seq no type 10 1
+    const (0) int 6 0
+    name j int 0 0
+ecom to: 
+* string 8 0
+  name .ret int 0 0
+ecom: 
+name s string 0 0
+ecom to: 
+* string 8 0
+  name .ret int 0 0
+fn: deglob
+64: argument s string ref 6
+72: local i int ref 7
+76: local j int ref 6
+80: local .t278 int ref 1
+generate desc for deglob
+descmap offset 0
+descmap s type string offset 64 (d->offset=64 start=0) returns 64
+descmap i type int offset 72 (d->offset=72 start=0) returns -1
+descmap j type int offset 76 (d->offset=76 start=0) returns -1
+descmap .t278 type int offset 80 (d->offset=80 start=0) returns -1
+fncom: glob 7 6e8850
+ecom: 
+= ref Listnode 10 1
+  name n ref Listnode 0 0
+  hd ref Listnode 10 1
+    name nl list of ref Listnode 0 0
+ecom: 
+hd ref Listnode 10 1
+  name nl list of ref Listnode 0 0
+ecom to: 
+name n ref Listnode 0 0
+eacom: 
+call int 10 2
+  name containswildchar fn(s: string): int 11 1
+  seq no type 10 1
+    * string 8 0
+      + int 15 1
+        name n ref Listnode 0 0
+        const word (8) int 6 0
+ecom: 
+call int 10 2
+  name containswildchar fn(s: string): int 11 1
+  seq no type 10 1
+    * string 8 0
+      + int 15 1
+        name n ref Listnode 0 0
+        const word (8) int 6 0
+ecom to: 
+name .t279 int 0 0
+generate desc for big
+ecom: 
+* string 8 0
+  + int 15 1
+    name n ref Listnode 0 0
+    const word (8) int 6 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b280 big 0 0
+    const (64) int 6 0
+ecom: 
+= string 10 2
+  name qword string 0 0
+  call string 10 2
+    name patquote fn(word: string): string 11 1
+    seq no type 10 1
+      * string 8 0
+        + int 15 1
+          name n ref Listnode 0 0
+          const word (8) int 6 0
+ecom: 
+call string 10 2
+  name patquote fn(word: string): string 11 1
+  seq no type 10 1
+    * string 8 0
+      + int 15 1
+        name n ref Listnode 0 0
+        const word (8) int 6 0
+ecom to: 
+name qword string 0 0
+generate desc for big
+ecom: 
+* string 8 0
+  + int 15 1
+    name n ref Listnode 0 0
+    const word (8) int 6 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b280 big 0 0
+    const (64) int 6 0
+ecom: 
+= list of string 10 2
+  name files list of string 0 0
+    name qword string 0 0
+  call list of string 10 2
+    -> fn(pat: string): list of string 12 1
+      name filepat Filepat 1 0
+      name expand nothing 11 1
+    seq no type 10 1
+      name qword string 0 0
+ecom: 
+call list of string 10 2
+  -> fn(pat: string): list of string 12 1
+    name filepat Filepat 1 0
+    name expand nothing 11 1
+  seq no type 10 1
+    name qword string 0 0
+ecom to: 
+name files list of string 0 0
+  name qword string 0 0
+generate desc for big
+ecom: 
+name qword string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b280 big 0 0
+    const (64) int 6 0
+ecom: 
+= list of string 10 2
+  name files list of string 0 0
+  :: list of string 10 2
+    call string 10 2
+      name deglob fn(s: string): string 11 1
+      seq no type 10 1
+        * string 8 0
+          + int 15 1
+            name n ref Listnode 0 0
+            const word (8) int 6 0
+    name nil polymorphic type 1 0
+ecom: 
+:: list of string 10 2
+  call string 10 2
+    name deglob fn(s: string): string 11 1
+    seq no type 10 1
+      * string 8 0
+        + int 15 1
+          name n ref Listnode 0 0
+          const word (8) int 6 0
+  name nil polymorphic type 1 0
+ecom to: 
+name files list of string 0 0
+eacom: 
+call string 10 2
+  name deglob fn(s: string): string 11 1
+  seq no type 10 1
+    * string 8 0
+      + int 15 1
+        name n ref Listnode 0 0
+        const word (8) int 6 0
+ecom: 
+call string 10 2
+  name deglob fn(s: string): string 11 1
+  seq no type 10 1
+    * string 8 0
+      + int 15 1
+        name n ref Listnode 0 0
+        const word (8) int 6 0
+ecom to: 
+name .t281 string 0 0
+generate desc for big
+ecom: 
+* string 8 0
+  + int 15 1
+    name n ref Listnode 0 0
+    const word (8) int 6 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b280 big 0 0
+    const (64) int 6 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+name .t282 list of string 0 0
+ecom: 
+= string 10 1
+  name .t281 string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name .t281 string 0 0
+ecom: 
+= list of string 10 1
+  name .t282 list of string 0 0
+  name nil list of string 1 0
+ecom: 
+name nil list of string 1 0
+ecom to: 
+name .t282 list of string 0 0
+ecom: 
+= list of ref Listnode 10 1
+  name new list of ref Listnode 0 0
+  :: list of ref Listnode 10 1
+    ref ref Listnode 10 1
+      tuple Listnode 10 1
+        seq no type 10 1
+          name nil polymorphic type 1 0
+          seq no type 10 1
+            hd string 10 1
+              name files list of string 0 0
+    name new list of ref Listnode 0 0
+ecom: 
+:: list of ref Listnode 10 1
+  ref ref Listnode 10 1
+    tuple Listnode 10 1
+      seq no type 10 1
+        name nil polymorphic type 1 0
+        seq no type 10 1
+          hd string 10 1
+            name files list of string 0 0
+  name new list of ref Listnode 0 0
+ecom to: 
+name new list of ref Listnode 0 0
+eacom: 
+ref ref Listnode 10 1
+  tuple Listnode 10 1
+    seq no type 10 1
+      name nil polymorphic type 1 0
+      seq no type 10 1
+        hd string 10 1
+          name files list of string 0 0
+generate desc for ref Listnode
+generate desc for ref Listnode
+	desc	$-1,8,"80"
+ecom: 
+ref ref Listnode 10 1
+  tuple Listnode 10 1
+    seq no type 10 1
+      name nil polymorphic type 1 0
+      seq no type 10 1
+        hd string 10 1
+          name files list of string 0 0
+ecom to: 
+name .b283 ref Listnode 0 0
+generate desc for ref Listnode
+generate desc for Listnode
+ecom: 
+tuple Listnode 10 1
+  seq no type 10 1
+    name nil polymorphic type 1 0
+    seq no type 10 1
+      hd string 10 1
+        name files list of string 0 0
+ecom to: 
+* Listnode 8 0
+  name .b283 ref Listnode 0 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* ref Node 8 0
+  + int 15 1
+    adr int 15 1
+      * Listnode 8 0
+        name .b283 ref Listnode 0 0
+    const (0) int 6 0
+ecom: 
+hd string 10 1
+  name files list of string 0 0
+ecom to: 
+* string 8 0
+  + int 15 1
+    adr int 15 1
+      * Listnode 8 0
+        name .b283 ref Listnode 0 0
+    const (8) int 6 0
+ecom: 
+= ref Listnode 10 1
+  name .b283 ref Listnode 0 0
+  name nil ref Listnode 1 0
+ecom: 
+name nil ref Listnode 1 0
+ecom to: 
+name .b283 ref Listnode 0 0
+ecom: 
+= list of string 10 1
+  name files list of string 0 0
+  tl list of string 10 1
+    name files list of string 0 0
+ecom: 
+tl list of string 10 1
+  name files list of string 0 0
+ecom to: 
+name files list of string 0 0
+ecom: 
+= list of string 10 1
+  name files list of string 0 0
+  name nil list of string 1 0
+ecom: 
+name nil list of string 1 0
+ecom to: 
+name files list of string 0 0
+ecom: 
+= string 10 1
+  name qword string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name qword string 0 0
+ecom: 
+= list of ref Listnode 10 1
+  name new list of ref Listnode 0 0
+  :: list of ref Listnode 10 1
+    name n ref Listnode 0 0
+    name new list of ref Listnode 0 0
+ecom: 
+:: list of ref Listnode 10 1
+  name n ref Listnode 0 0
+  name new list of ref Listnode 0 0
+ecom to: 
+name new list of ref Listnode 0 0
+ecom: 
+= list of ref Listnode 10 1
+  name nl list of ref Listnode 0 0
+  tl list of ref Listnode 10 1
+    name nl list of ref Listnode 0 0
+ecom: 
+tl list of ref Listnode 10 1
+  name nl list of ref Listnode 0 0
+ecom to: 
+name nl list of ref Listnode 0 0
+ecom: 
+= ref Listnode 10 1
+  name n ref Listnode 0 0
+  name nil ref Listnode 1 0
+ecom: 
+name nil ref Listnode 1 0
+ecom to: 
+name n ref Listnode 0 0
+ecom: 
+= list of ref Listnode 10 2
+  name ret list of ref Listnode 0 0
+  call list of ref Listnode 10 2
+    name revlist fn(l: list of ref Listnode): list of ref Listnode 11 1
+    seq no type 10 1
+      name new list of ref Listnode 0 0
+ecom: 
+call list of ref Listnode 10 2
+  name revlist fn(l: list of ref Listnode): list of ref Listnode 11 1
+  seq no type 10 1
+    name new list of ref Listnode 0 0
+ecom to: 
+name ret list of ref Listnode 0 0
+generate desc for big
+ecom: 
+name new list of ref Listnode 0 0
+ecom to: 
+* list of ref Listnode 8 0
+  + int 15 0
+    name .b280 big 0 0
+    const (64) int 6 0
+ecom: 
+name ret list of ref Listnode 0 0
+ecom to: 
+* list of ref Listnode 8 0
+  name .ret int 0 0
+fn: glob
+64: argument nl list of ref Listnode ref 4
+72: local .t279 int ref 1
+80: local files list of string ref 7
+88: local .b280 big ref 5
+96: local n ref Listnode ref 5
+104: local new list of ref Listnode ref 5
+112: local .b283 ref Listnode ref 2
+120: local qword string ref 2
+128: local ret list of ref Listnode ref 2
+136: local .t281 string ref 1
+144: local .t282 list of string ref 1
+generate desc for glob
+descmap offset 0
+descmap nl type list of ref Listnode offset 64 (d->offset=64 start=0) returns 64
+descmap .t279 type int offset 72 (d->offset=72 start=0) returns -1
+descmap files type list of string offset 80 (d->offset=80 start=0) returns 80
+descmap .b280 type big offset 88 (d->offset=88 start=0) returns -1
+descmap n type ref Listnode offset 96 (d->offset=96 start=0) returns 96
+descmap new type list of ref Listnode offset 104 (d->offset=104 start=0) returns 104
+descmap .b283 type ref Listnode offset 112 (d->offset=112 start=0) returns 112
+descmap qword type string offset 120 (d->offset=120 start=0) returns 120
+descmap ret type list of ref Listnode offset 128 (d->offset=128 start=0) returns 128
+descmap .t281 type string offset 136 (d->offset=136 start=0) returns 136
+descmap .t282 type list of string offset 144 (d->offset=144 start=0) returns 144
+fncom: list2stringlist 8 4c3048
+ecom: 
+= list of string 10 1
+  name ret list of string 0 0
+  name nil polymorphic type 1 0
+ecom: 
+name nil list of string 1 0
+ecom to: 
+name ret list of string 0 0
+ecom: 
+= ref Listnode 10 1
+  name el ref Listnode 0 0
+    vardecl string 10 1
+      seq nothing 10 1
+  hd ref Listnode 10 1
+    name nl list of ref Listnode 0 0
+ecom: 
+hd ref Listnode 10 1
+  name nl list of ref Listnode 0 0
+ecom to: 
+name el ref Listnode 0 0
+  vardecl string 10 1
+    seq nothing 10 1
+ecom: 
+= string 10 1
+  name newel string 0 0
+  * string 8 0
+    + int 15 1
+      name el ref Listnode 0 0
+      const word (8) int 6 0
+ecom: 
+* string 8 0
+  + int 15 1
+    name el ref Listnode 0 0
+    const word (8) int 6 0
+ecom to: 
+name newel string 0 0
+ecom: 
+= string 10 2
+  * string 8 0
+    + int 15 1
+      name el ref Listnode 0 0
+      const word (8) int 6 0
+  = string 10 2
+    name newel string 0 0
+    call string 10 2
+      name cmd2string fn(n: ref Node): string 11 1
+      seq no type 10 1
+        * ref Node 8 0
+          name el ref Listnode 0 0
+ecom: 
+= string 10 2
+  name newel string 0 0
+  call string 10 2
+    name cmd2string fn(n: ref Node): string 11 1
+    seq no type 10 1
+      * ref Node 8 0
+        name el ref Listnode 0 0
+ecom to: 
+* string 8 0
+  + int 15 1
+    name el ref Listnode 0 0
+    const word (8) int 6 0
+ecom: 
+call string 10 2
+  name cmd2string fn(n: ref Node): string 11 1
+  seq no type 10 1
+    * ref Node 8 0
+      name el ref Listnode 0 0
+ecom to: 
+name newel string 0 0
+generate desc for big
+ecom: 
+* ref Node 8 0
+  name el ref Listnode 0 0
+ecom to: 
+* ref Node 8 0
+  + int 15 0
+    name .b284 big 0 0
+    const (64) int 6 0
+ecom: 
+= list of string 10 1
+  name ret list of string 0 0
+  :: list of string 10 1
+    name newel string 0 0
+    name ret list of string 0 0
+ecom: 
+:: list of string 10 1
+  name newel string 0 0
+  name ret list of string 0 0
+ecom to: 
+name ret list of string 0 0
+ecom: 
+= list of ref Listnode 10 1
+  name nl list of ref Listnode 0 0
+  tl list of ref Listnode 10 1
+    name nl list of ref Listnode 0 0
+ecom: 
+tl list of ref Listnode 10 1
+  name nl list of ref Listnode 0 0
+ecom to: 
+name nl list of ref Listnode 0 0
+ecom: 
+= ref Listnode 10 1
+  name el ref Listnode 0 0
+  name nil ref Listnode 1 0
+ecom: 
+name nil ref Listnode 1 0
+ecom to: 
+name el ref Listnode 0 0
+ecom: 
+= string 10 1
+  name newel string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name newel string 0 0
+ecom: 
+= list of string 10 2
+  name sl list of string 0 0
+  call list of string 10 2
+    name revstringlist fn(l: list of string): list of string 11 1
+    seq no type 10 1
+      name ret list of string 0 0
+ecom: 
+call list of string 10 2
+  name revstringlist fn(l: list of string): list of string 11 1
+  seq no type 10 1
+    name ret list of string 0 0
+ecom to: 
+name sl list of string 0 0
+generate desc for big
+ecom: 
+name ret list of string 0 0
+ecom to: 
+* list of string 8 0
+  + int 15 0
+    name .b284 big 0 0
+    const (64) int 6 0
+ecom: 
+name sl list of string 0 0
+ecom to: 
+* list of string 8 0
+  name .ret int 0 0
+fn: list2stringlist
+64: argument nl list of ref Listnode ref 4
+72: local el ref Listnode ref 6
+80: local ret list of string ref 4
+88: local newel string ref 3
+96: local .b284 big ref 2
+104: local sl list of string ref 2
+generate desc for list2stringlist
+descmap offset 0
+descmap nl type list of ref Listnode offset 64 (d->offset=64 start=0) returns 64
+descmap el type ref Listnode offset 72 (d->offset=72 start=0) returns 72
+descmap ret type list of string offset 80 (d->offset=80 start=0) returns 80
+descmap newel type string offset 88 (d->offset=88 start=0) returns 88
+descmap .b284 type big offset 96 (d->offset=96 start=0) returns -1
+descmap sl type list of string offset 104 (d->offset=104 start=0) returns 104
+fncom: stringlist2list 9 4c3788
+ecom: 
+= list of ref Listnode 10 1
+  name ret list of ref Listnode 0 0
+  :: list of ref Listnode 10 1
+    ref ref Listnode 10 1
+      tuple Listnode 10 1
+        seq no type 10 1
+          name nil polymorphic type 1 0
+          seq no type 10 1
+            hd string 10 1
+              name sl list of string 0 0
+    name ret list of ref Listnode 0 0
+ecom: 
+:: list of ref Listnode 10 1
+  ref ref Listnode 10 1
+    tuple Listnode 10 1
+      seq no type 10 1
+        name nil polymorphic type 1 0
+        seq no type 10 1
+          hd string 10 1
+            name sl list of string 0 0
+  name ret list of ref Listnode 0 0
+ecom to: 
+name ret list of ref Listnode 0 0
+eacom: 
+ref ref Listnode 10 1
+  tuple Listnode 10 1
+    seq no type 10 1
+      name nil polymorphic type 1 0
+      seq no type 10 1
+        hd string 10 1
+          name sl list of string 0 0
+generate desc for ref Listnode
+generate desc for ref Listnode
+	desc	$-1,8,"80"
+ecom: 
+ref ref Listnode 10 1
+  tuple Listnode 10 1
+    seq no type 10 1
+      name nil polymorphic type 1 0
+      seq no type 10 1
+        hd string 10 1
+          name sl list of string 0 0
+ecom to: 
+name .b285 ref Listnode 0 0
+generate desc for ref Listnode
+generate desc for Listnode
+ecom: 
+tuple Listnode 10 1
+  seq no type 10 1
+    name nil polymorphic type 1 0
+    seq no type 10 1
+      hd string 10 1
+        name sl list of string 0 0
+ecom to: 
+* Listnode 8 0
+  name .b285 ref Listnode 0 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* ref Node 8 0
+  + int 15 1
+    adr int 15 1
+      * Listnode 8 0
+        name .b285 ref Listnode 0 0
+    const (0) int 6 0
+ecom: 
+hd string 10 1
+  name sl list of string 0 0
+ecom to: 
+* string 8 0
+  + int 15 1
+    adr int 15 1
+      * Listnode 8 0
+        name .b285 ref Listnode 0 0
+    const (8) int 6 0
+ecom: 
+= ref Listnode 10 1
+  name .b285 ref Listnode 0 0
+  name nil ref Listnode 1 0
+ecom: 
+name nil ref Listnode 1 0
+ecom to: 
+name .b285 ref Listnode 0 0
+ecom: 
+= list of string 10 1
+  name sl list of string 0 0
+  tl list of string 10 1
+    name sl list of string 0 0
+ecom: 
+tl list of string 10 1
+  name sl list of string 0 0
+ecom to: 
+name sl list of string 0 0
+ecom: 
+call list of ref Listnode 10 2
+  name revlist fn(l: list of ref Listnode): list of ref Listnode 11 1
+  seq no type 10 1
+    name ret list of ref Listnode 0 0
+ecom to: 
+* list of ref Listnode 8 0
+  name .ret int 0 0
+generate desc for big
+ecom: 
+name ret list of ref Listnode 0 0
+ecom to: 
+* list of ref Listnode 8 0
+  + int 15 0
+    name .b286 big 0 0
+    const (64) int 6 0
+fn: stringlist2list
+64: argument sl list of string ref 4
+72: local ret list of ref Listnode ref 3
+80: local .b285 ref Listnode ref 2
+88: local .b286 big ref 1
+generate desc for stringlist2list
+descmap offset 0
+descmap sl type list of string offset 64 (d->offset=64 start=0) returns 64
+descmap ret type list of ref Listnode offset 72 (d->offset=72 start=0) returns 72
+descmap .b285 type ref Listnode offset 80 (d->offset=80 start=0) returns 80
+descmap .b286 type big offset 88 (d->offset=88 start=0) returns -1
+fncom: revstringlist 2 6e8910
+ecom: 
+= list of string 10 1
+  name t list of string 0 0
+  :: list of string 10 1
+    hd string 10 1
+      name l list of string 0 0
+    name t list of string 0 0
+ecom: 
+:: list of string 10 1
+  hd string 10 1
+    name l list of string 0 0
+  name t list of string 0 0
+ecom to: 
+name t list of string 0 0
+eacom: 
+hd string 10 1
+  name l list of string 0 0
+ecom: 
+hd string 10 1
+  name l list of string 0 0
+ecom to: 
+name .t287 string 0 0
+ecom: 
+= string 10 1
+  name .t287 string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name .t287 string 0 0
+ecom: 
+= list of string 10 1
+  name l list of string 0 0
+  tl list of string 10 1
+    name l list of string 0 0
+ecom: 
+tl list of string 10 1
+  name l list of string 0 0
+ecom to: 
+name l list of string 0 0
+ecom: 
+name t list of string 0 0
+ecom to: 
+* list of string 8 0
+  name .ret int 0 0
+fn: revstringlist
+64: argument l list of string ref 4
+72: local t list of string ref 3
+80: local .t287 string ref 1
+generate desc for revstringlist
+descmap offset 0
+descmap l type list of string offset 64 (d->offset=64 start=0) returns 64
+descmap t type list of string offset 72 (d->offset=72 start=0) returns 72
+descmap .t287 type string offset 80 (d->offset=80 start=0) returns 80
+fncom: revlist 5 6e89d0
+ecom: 
+= list of ref Listnode 10 1
+  name t list of ref Listnode 0 0
+  :: list of ref Listnode 10 1
+    hd ref Listnode 10 1
+      name l list of ref Listnode 0 0
+    name t list of ref Listnode 0 0
+ecom: 
+:: list of ref Listnode 10 1
+  hd ref Listnode 10 1
+    name l list of ref Listnode 0 0
+  name t list of ref Listnode 0 0
+ecom to: 
+name t list of ref Listnode 0 0
+eacom: 
+hd ref Listnode 10 1
+  name l list of ref Listnode 0 0
+generate desc for ref Listnode
+generate desc for ref Listnode
+	desc	$-1,8,"80"
+ecom: 
+hd ref Listnode 10 1
+  name l list of ref Listnode 0 0
+ecom to: 
+name .b288 ref Listnode 0 0
+ecom: 
+= ref Listnode 10 1
+  name .b288 ref Listnode 0 0
+  name nil ref Listnode 1 0
+ecom: 
+name nil ref Listnode 1 0
+ecom to: 
+name .b288 ref Listnode 0 0
+ecom: 
+= list of ref Listnode 10 1
+  name l list of ref Listnode 0 0
+  tl list of ref Listnode 10 1
+    name l list of ref Listnode 0 0
+ecom: 
+tl list of ref Listnode 10 1
+  name l list of ref Listnode 0 0
+ecom to: 
+name l list of ref Listnode 0 0
+ecom: 
+name t list of ref Listnode 0 0
+ecom to: 
+* list of ref Listnode 8 0
+  name .ret int 0 0
+fn: revlist
+64: argument l list of ref Listnode ref 4
+72: local t list of ref Listnode ref 3
+80: local .b288 ref Listnode ref 1
+generate desc for revlist
+descmap offset 0
+descmap l type list of ref Listnode offset 64 (d->offset=64 start=0) returns 64
+descmap t type list of ref Listnode offset 72 (d->offset=72 start=0) returns 72
+descmap .b288 type ref Listnode offset 80 (d->offset=80 start=0) returns 80
+fncom: fdassignstr 4 6e8a90
+ecom: 
+= string 10 1
+  name l string 0 0
+  name nil polymorphic type 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name l string 0 0
+ecom: 
+= string 10 1
+  name l string 0 0
+  cast string 10 1
+    * int 8 0
+      + int 15 1
+        name redir ref Redir 0 0
+        const fd1 (4) int 6 0
+ecom: 
+cast string 10 1
+  * int 8 0
+    + int 15 1
+      name redir ref Redir 0 0
+      const fd1 (4) int 6 0
+ecom to: 
+name l string 0 0
+ecom: 
+= string 10 1
+  name r string 0 0
+  name nil polymorphic type 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name r string 0 0
+ecom: 
+= string 10 1
+  name r string 0 0
+  cast string 10 1
+    * int 8 0
+      + int 15 1
+        name redir ref Redir 0 0
+        const fd2 (8) int 6 0
+ecom: 
+cast string 10 1
+  * int 8 0
+    + int 15 1
+      name redir ref Redir 0 0
+      const fd2 (8) int 6 0
+ecom to: 
+name r string 0 0
+ecom: 
++ string 10 1
+  + string 10 1
+    + string 10 1
+      + string 10 1
+        const [ string 1 0
+        name l string 0 0
+      const = string 1 0
+    name r string 0 0
+  const ] string 1 0
+ecom to: 
+* string 8 0
+  name .ret int 0 0
+ecom: 
++ string 10 1
+  + string 10 1
+    + string 10 1
+      const [ string 1 0
+      name l string 0 0
+    const = string 1 0
+  name r string 0 0
+ecom to: 
+name .t289 string 0 0
+ecom: 
++ string 10 1
+  + string 10 1
+    const [ string 1 0
+    name l string 0 0
+  const = string 1 0
+ecom to: 
+name .t289 string 0 0
+ecom: 
++ string 10 1
+  const [ string 1 0
+  name l string 0 0
+ecom to: 
+name .t289 string 0 0
+ecom: 
+= string 10 1
+  name .t289 string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name .t289 string 0 0
+ecom: 
+= string 10 1
+  name r string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name r string 0 0
+ecom: 
++ string 10 1
+  + string 10 1
+    const [ string 1 0
+    name l string 0 0
+  const ] string 1 0
+ecom to: 
+* string 8 0
+  name .ret int 0 0
+ecom: 
++ string 10 1
+  const [ string 1 0
+  name l string 0 0
+ecom to: 
+name .t289 string 0 0
+ecom: 
+= string 10 1
+  name .t289 string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name .t289 string 0 0
+fn: fdassignstr
+64: argument isassign int ref 1
+72: argument redir ref Redir ref 4
+80: local l string ref 4
+88: local r string ref 3
+96: local .t289 string ref 1
+generate desc for fdassignstr
+descmap offset 0
+descmap isassign type int offset 64 (d->offset=64 start=0) returns -1
+descmap redir type ref Redir offset 72 (d->offset=72 start=0) returns 72
+descmap l type string offset 80 (d->offset=80 start=0) returns 80
+descmap r type string offset 88 (d->offset=88 start=0) returns 88
+descmap .t289 type string offset 96 (d->offset=96 start=0) returns 96
+fncom: redirstr 3 6e8b50
+ecom: 
+const < string 1 0
+ecom to: 
+* string 8 0
+  name .ret int 0 0
+ecom: 
+const > string 1 0
+ecom to: 
+* string 8 0
+  name .ret int 0 0
+ecom: 
+const >> string 1 0
+ecom to: 
+* string 8 0
+  name .ret int 0 0
+ecom: 
+const <> string 1 0
+ecom to: 
+* string 8 0
+  name .ret int 0 0
+fn: redirstr
+64: argument rtype int ref 1
+generate desc for redirstr
+descmap offset 0
+descmap rtype type int offset 64 (d->offset=64 start=0) returns -1
+fncom: cmd2string 31 4b8f00
+ecom: 
+const  string 1 0
+ecom to: 
+* string 8 0
+  name .ret int 0 0
+ecom: 
+= string 10 2
+  name s string 0 0
+  + string 10 2
+    + string 10 2
+      const { string 1 0
+      call string 10 2
+        name cmd2string fn(n: ref Node): string 11 1
+        seq no type 10 1
+          * ref Node 8 0
+            + int 15 1
+              name n ref Node 0 0
+              const left (8) int 6 0
+    const } string 1 0
+ecom: 
++ string 10 2
+  + string 10 2
+    const { string 1 0
+    call string 10 2
+      name cmd2string fn(n: ref Node): string 11 1
+      seq no type 10 1
+        * ref Node 8 0
+          + int 15 1
+            name n ref Node 0 0
+            const left (8) int 6 0
+  const } string 1 0
+ecom to: 
+name s string 0 0
+ecom: 
++ string 10 2
+  const { string 1 0
+  call string 10 2
+    name cmd2string fn(n: ref Node): string 11 1
+    seq no type 10 1
+      * ref Node 8 0
+        + int 15 1
+          name n ref Node 0 0
+          const left (8) int 6 0
+ecom to: 
+name .t290 string 0 0
+eacom: 
+call string 10 2
+  name cmd2string fn(n: ref Node): string 11 1
+  seq no type 10 1
+    * ref Node 8 0
+      + int 15 1
+        name n ref Node 0 0
+        const left (8) int 6 0
+ecom: 
+call string 10 2
+  name cmd2string fn(n: ref Node): string 11 1
+  seq no type 10 1
+    * ref Node 8 0
+      + int 15 1
+        name n ref Node 0 0
+        const left (8) int 6 0
+ecom to: 
+name .t290 string 0 0
+generate desc for big
+ecom: 
+* ref Node 8 0
+  + int 15 1
+    name n ref Node 0 0
+    const left (8) int 6 0
+ecom to: 
+* ref Node 8 0
+  + int 15 0
+    name .b291 big 0 0
+    const (64) int 6 0
+ecom: 
+= string 10 1
+  name .t290 string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name .t290 string 0 0
+ecom: 
+= string 10 2
+  name s string 0 0
+  + string 10 2
+    const $ string 1 0
+    call string 10 2
+      name cmd2string fn(n: ref Node): string 11 1
+      seq no type 10 1
+        * ref Node 8 0
+          + int 15 1
+            name n ref Node 0 0
+            const left (8) int 6 0
+ecom: 
++ string 10 2
+  const $ string 1 0
+  call string 10 2
+    name cmd2string fn(n: ref Node): string 11 1
+    seq no type 10 1
+      * ref Node 8 0
+        + int 15 1
+          name n ref Node 0 0
+          const left (8) int 6 0
+ecom to: 
+name s string 0 0
+eacom: 
+call string 10 2
+  name cmd2string fn(n: ref Node): string 11 1
+  seq no type 10 1
+    * ref Node 8 0
+      + int 15 1
+        name n ref Node 0 0
+        const left (8) int 6 0
+ecom: 
+call string 10 2
+  name cmd2string fn(n: ref Node): string 11 1
+  seq no type 10 1
+    * ref Node 8 0
+      + int 15 1
+        name n ref Node 0 0
+        const left (8) int 6 0
+ecom to: 
+name .t290 string 0 0
+generate desc for big
+ecom: 
+* ref Node 8 0
+  + int 15 1
+    name n ref Node 0 0
+    const left (8) int 6 0
+ecom to: 
+* ref Node 8 0
+  + int 15 0
+    name .b291 big 0 0
+    const (64) int 6 0
+ecom: 
+= string 10 1
+  name .t290 string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name .t290 string 0 0
+ecom: 
++= string 10 2
+  name s string 0 0
+  + string 10 2
+    + string 10 2
+      const ( string 1 0
+      call string 10 2
+        name cmd2string fn(n: ref Node): string 11 1
+        seq no type 10 1
+          * ref Node 8 0
+            + int 15 1
+              name n ref Node 0 0
+              const right (16) int 6 0
+    const ) string 1 0
+eacom: 
++ string 10 2
+  + string 10 2
+    const ( string 1 0
+    call string 10 2
+      name cmd2string fn(n: ref Node): string 11 1
+      seq no type 10 1
+        * ref Node 8 0
+          + int 15 1
+            name n ref Node 0 0
+            const right (16) int 6 0
+  const ) string 1 0
+ecom: 
++ string 10 2
+  + string 10 2
+    const ( string 1 0
+    call string 10 2
+      name cmd2string fn(n: ref Node): string 11 1
+      seq no type 10 1
+        * ref Node 8 0
+          + int 15 1
+            name n ref Node 0 0
+            const right (16) int 6 0
+  const ) string 1 0
+ecom to: 
+name .t290 string 0 0
+ecom: 
++ string 10 2
+  const ( string 1 0
+  call string 10 2
+    name cmd2string fn(n: ref Node): string 11 1
+    seq no type 10 1
+      * ref Node 8 0
+        + int 15 1
+          name n ref Node 0 0
+          const right (16) int 6 0
+ecom to: 
+name .t290 string 0 0
+eacom: 
+call string 10 2
+  name cmd2string fn(n: ref Node): string 11 1
+  seq no type 10 1
+    * ref Node 8 0
+      + int 15 1
+        name n ref Node 0 0
+        const right (16) int 6 0
+ecom: 
+call string 10 2
+  name cmd2string fn(n: ref Node): string 11 1
+  seq no type 10 1
+    * ref Node 8 0
+      + int 15 1
+        name n ref Node 0 0
+        const right (16) int 6 0
+ecom to: 
+name .t290 string 0 0
+generate desc for big
+ecom: 
+* ref Node 8 0
+  + int 15 1
+    name n ref Node 0 0
+    const right (16) int 6 0
+ecom to: 
+* ref Node 8 0
+  + int 15 0
+    name .b291 big 0 0
+    const (64) int 6 0
+ecom: 
+= string 10 1
+  name .t290 string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name .t290 string 0 0
+ecom: 
+= string 10 2
+  name s string 0 0
+  + string 10 2
+    const $" string 1 0
+    call string 10 2
+      name cmd2string fn(n: ref Node): string 11 1
+      seq no type 10 1
+        * ref Node 8 0
+          + int 15 1
+            name n ref Node 0 0
+            const left (8) int 6 0
+ecom: 
++ string 10 2
+  const $" string 1 0
+  call string 10 2
+    name cmd2string fn(n: ref Node): string 11 1
+    seq no type 10 1
+      * ref Node 8 0
+        + int 15 1
+          name n ref Node 0 0
+          const left (8) int 6 0
+ecom to: 
+name s string 0 0
+eacom: 
+call string 10 2
+  name cmd2string fn(n: ref Node): string 11 1
+  seq no type 10 1
+    * ref Node 8 0
+      + int 15 1
+        name n ref Node 0 0
+        const left (8) int 6 0
+ecom: 
+call string 10 2
+  name cmd2string fn(n: ref Node): string 11 1
+  seq no type 10 1
+    * ref Node 8 0
+      + int 15 1
+        name n ref Node 0 0
+        const left (8) int 6 0
+ecom to: 
+name .t290 string 0 0
+generate desc for big
+ecom: 
+* ref Node 8 0
+  + int 15 1
+    name n ref Node 0 0
+    const left (8) int 6 0
+ecom to: 
+* ref Node 8 0
+  + int 15 0
+    name .b291 big 0 0
+    const (64) int 6 0
+ecom: 
+= string 10 1
+  name .t290 string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name .t290 string 0 0
+ecom: 
+= string 10 2
+  name s string 0 0
+  + string 10 2
+    const $# string 1 0
+    call string 10 2
+      name cmd2string fn(n: ref Node): string 11 1
+      seq no type 10 1
+        * ref Node 8 0
+          + int 15 1
+            name n ref Node 0 0
+            const left (8) int 6 0
+ecom: 
++ string 10 2
+  const $# string 1 0
+  call string 10 2
+    name cmd2string fn(n: ref Node): string 11 1
+    seq no type 10 1
+      * ref Node 8 0
+        + int 15 1
+          name n ref Node 0 0
+          const left (8) int 6 0
+ecom to: 
+name s string 0 0
+eacom: 
+call string 10 2
+  name cmd2string fn(n: ref Node): string 11 1
+  seq no type 10 1
+    * ref Node 8 0
+      + int 15 1
+        name n ref Node 0 0
+        const left (8) int 6 0
+ecom: 
+call string 10 2
+  name cmd2string fn(n: ref Node): string 11 1
+  seq no type 10 1
+    * ref Node 8 0
+      + int 15 1
+        name n ref Node 0 0
+        const left (8) int 6 0
+ecom to: 
+name .t290 string 0 0
+generate desc for big
+ecom: 
+* ref Node 8 0
+  + int 15 1
+    name n ref Node 0 0
+    const left (8) int 6 0
+ecom to: 
+* ref Node 8 0
+  + int 15 0
+    name .b291 big 0 0
+    const (64) int 6 0
+ecom: 
+= string 10 1
+  name .t290 string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name .t290 string 0 0
+ecom: 
+= string 10 2
+  name s string 0 0
+  + string 10 2
+    const ` string 1 0
+    call string 10 2
+      name cmd2string fn(n: ref Node): string 11 1
+      seq no type 10 1
+        * ref Node 8 0
+          + int 15 1
+            name n ref Node 0 0
+            const left (8) int 6 0
+ecom: 
++ string 10 2
+  const ` string 1 0
+  call string 10 2
+    name cmd2string fn(n: ref Node): string 11 1
+    seq no type 10 1
+      * ref Node 8 0
+        + int 15 1
+          name n ref Node 0 0
+          const left (8) int 6 0
+ecom to: 
+name s string 0 0
+eacom: 
+call string 10 2
+  name cmd2string fn(n: ref Node): string 11 1
+  seq no type 10 1
+    * ref Node 8 0
+      + int 15 1
+        name n ref Node 0 0
+        const left (8) int 6 0
+ecom: 
+call string 10 2
+  name cmd2string fn(n: ref Node): string 11 1
+  seq no type 10 1
+    * ref Node 8 0
+      + int 15 1
+        name n ref Node 0 0
+        const left (8) int 6 0
+ecom to: 
+name .t290 string 0 0
+generate desc for big
+ecom: 
+* ref Node 8 0
+  + int 15 1
+    name n ref Node 0 0
+    const left (8) int 6 0
+ecom to: 
+* ref Node 8 0
+  + int 15 0
+    name .b291 big 0 0
+    const (64) int 6 0
+ecom: 
+= string 10 1
+  name .t290 string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name .t290 string 0 0
+ecom: 
+= string 10 2
+  name s string 0 0
+  + string 10 2
+    const " string 1 0
+    call string 10 2
+      name cmd2string fn(n: ref Node): string 11 1
+      seq no type 10 1
+        * ref Node 8 0
+          + int 15 1
+            name n ref Node 0 0
+            const left (8) int 6 0
+ecom: 
++ string 10 2
+  const " string 1 0
+  call string 10 2
+    name cmd2string fn(n: ref Node): string 11 1
+    seq no type 10 1
+      * ref Node 8 0
+        + int 15 1
+          name n ref Node 0 0
+          const left (8) int 6 0
+ecom to: 
+name s string 0 0
+eacom: 
+call string 10 2
+  name cmd2string fn(n: ref Node): string 11 1
+  seq no type 10 1
+    * ref Node 8 0
+      + int 15 1
+        name n ref Node 0 0
+        const left (8) int 6 0
+ecom: 
+call string 10 2
+  name cmd2string fn(n: ref Node): string 11 1
+  seq no type 10 1
+    * ref Node 8 0
+      + int 15 1
+        name n ref Node 0 0
+        const left (8) int 6 0
+ecom to: 
+name .t290 string 0 0
+generate desc for big
+ecom: 
+* ref Node 8 0
+  + int 15 1
+    name n ref Node 0 0
+    const left (8) int 6 0
+ecom to: 
+* ref Node 8 0
+  + int 15 0
+    name .b291 big 0 0
+    const (64) int 6 0
+ecom: 
+= string 10 1
+  name .t290 string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name .t290 string 0 0
+ecom: 
+= string 10 2
+  name s string 0 0
+  call string 10 2
+    name redirstr fn(rtype: int): string 11 1
+    seq no type 10 1
+      * int 10 1
+        * ref Redir 8 0
+          + int 15 1
+            name n ref Node 0 0
+            const redir (32) int 6 0
+ecom: 
+call string 10 2
+  name redirstr fn(rtype: int): string 11 1
+  seq no type 10 1
+    * int 10 1
+      * ref Redir 8 0
+        + int 15 1
+          name n ref Node 0 0
+          const redir (32) int 6 0
+ecom to: 
+name s string 0 0
+generate desc for big
+ecom: 
+* int 10 1
+  * ref Redir 8 0
+    + int 15 1
+      name n ref Node 0 0
+      const redir (32) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b291 big 0 0
+    const (64) int 6 0
+eacom: 
+* int 10 1
+  * ref Redir 8 0
+    + int 15 1
+      name n ref Node 0 0
+      const redir (32) int 6 0
+generate desc for ref Redir
+ecom: 
+* ref Redir 8 0
+  + int 15 1
+    name n ref Node 0 0
+    const redir (32) int 6 0
+ecom to: 
+name .b292 ref Redir 0 0
+ecom: 
+= ref Redir 10 1
+  name .b292 ref Redir 0 0
+  name nil ref Redir 1 0
+ecom: 
+name nil ref Redir 1 0
+ecom to: 
+name .b292 ref Redir 0 0
+eacom: 
+* int 10 1
+  + int 10 1
+    * ref Redir 8 0
+      + int 15 1
+        name n ref Node 0 0
+        const redir (32) int 6 0
+    const fd1 (4) int 6 0
+generate desc for ref Redir
+ecom: 
+* ref Redir 8 0
+  + int 15 1
+    name n ref Node 0 0
+    const redir (32) int 6 0
+ecom to: 
+name .b292 ref Redir 0 0
+ecom: 
+= ref Redir 10 1
+  name .b292 ref Redir 0 0
+  name nil ref Redir 1 0
+ecom: 
+name nil ref Redir 1 0
+ecom to: 
+name .b292 ref Redir 0 0
+ecom: 
++= string 10 2
+  name s string 0 0
+  call string 10 2
+    name fdassignstr fn(isassign: int, redir: ref Redir): string 11 1
+    seq no type 10 1
+      const (0) int 6 0
+      seq no type 10 1
+        * ref Redir 8 0
+          + int 15 1
+            name n ref Node 0 0
+            const redir (32) int 6 0
+eacom: 
+call string 10 2
+  name fdassignstr fn(isassign: int, redir: ref Redir): string 11 1
+  seq no type 10 1
+    const (0) int 6 0
+    seq no type 10 1
+      * ref Redir 8 0
+        + int 15 1
+          name n ref Node 0 0
+          const redir (32) int 6 0
+ecom: 
+call string 10 2
+  name fdassignstr fn(isassign: int, redir: ref Redir): string 11 1
+  seq no type 10 1
+    const (0) int 6 0
+    seq no type 10 1
+      * ref Redir 8 0
+        + int 15 1
+          name n ref Node 0 0
+          const redir (32) int 6 0
+ecom to: 
+name .t290 string 0 0
+generate desc for big
+ecom: 
+const (0) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b291 big 0 0
+    const (64) int 6 0
+ecom: 
+* ref Redir 8 0
+  + int 15 1
+    name n ref Node 0 0
+    const redir (32) int 6 0
+ecom to: 
+* ref Redir 8 0
+  + int 15 0
+    name .b291 big 0 0
+    const (72) int 6 0
+ecom: 
+= string 10 1
+  name .t290 string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name .t290 string 0 0
+ecom: 
++= string 10 2
+  name s string 0 0
+  call string 10 2
+    name cmd2string fn(n: ref Node): string 11 1
+    seq no type 10 1
+      * ref Node 8 0
+        + int 15 1
+          name n ref Node 0 0
+          const left (8) int 6 0
+eacom: 
+call string 10 2
+  name cmd2string fn(n: ref Node): string 11 1
+  seq no type 10 1
+    * ref Node 8 0
+      + int 15 1
+        name n ref Node 0 0
+        const left (8) int 6 0
+ecom: 
+call string 10 2
+  name cmd2string fn(n: ref Node): string 11 1
+  seq no type 10 1
+    * ref Node 8 0
+      + int 15 1
+        name n ref Node 0 0
+        const left (8) int 6 0
+ecom to: 
+name .t290 string 0 0
+generate desc for big
+ecom: 
+* ref Node 8 0
+  + int 15 1
+    name n ref Node 0 0
+    const left (8) int 6 0
+ecom to: 
+* ref Node 8 0
+  + int 15 0
+    name .b291 big 0 0
+    const (64) int 6 0
+ecom: 
+= string 10 1
+  name .t290 string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name .t290 string 0 0
+ecom: 
+= string 10 3
+  name s string 0 0
+  + string 10 3
+    call string 10 2
+      name redirstr fn(rtype: int): string 11 1
+      seq no type 10 1
+        * int 10 1
+          * ref Redir 8 0
+            + int 15 1
+              name n ref Node 0 0
+              const redir (32) int 6 0
+    call string 10 2
+      name fdassignstr fn(isassign: int, redir: ref Redir): string 11 1
+      seq no type 10 1
+        const (1) int 6 0
+        seq no type 10 1
+          * ref Redir 8 0
+            + int 15 1
+              name n ref Node 0 0
+              const redir (32) int 6 0
+ecom: 
++ string 10 3
+  call string 10 2
+    name redirstr fn(rtype: int): string 11 1
+    seq no type 10 1
+      * int 10 1
+        * ref Redir 8 0
+          + int 15 1
+            name n ref Node 0 0
+            const redir (32) int 6 0
+  call string 10 2
+    name fdassignstr fn(isassign: int, redir: ref Redir): string 11 1
+    seq no type 10 1
+      const (1) int 6 0
+      seq no type 10 1
+        * ref Redir 8 0
+          + int 15 1
+            name n ref Node 0 0
+            const redir (32) int 6 0
+ecom to: 
+name s string 0 0
+ecom: 
+call string 10 2
+  name redirstr fn(rtype: int): string 11 1
+  seq no type 10 1
+    * int 10 1
+      * ref Redir 8 0
+        + int 15 1
+          name n ref Node 0 0
+          const redir (32) int 6 0
+ecom to: 
+name .t290 string 0 0
+generate desc for big
+ecom: 
+* int 10 1
+  * ref Redir 8 0
+    + int 15 1
+      name n ref Node 0 0
+      const redir (32) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b291 big 0 0
+    const (64) int 6 0
+eacom: 
+* int 10 1
+  * ref Redir 8 0
+    + int 15 1
+      name n ref Node 0 0
+      const redir (32) int 6 0
+generate desc for ref Redir
+ecom: 
+* ref Redir 8 0
+  + int 15 1
+    name n ref Node 0 0
+    const redir (32) int 6 0
+ecom to: 
+name .b292 ref Redir 0 0
+ecom: 
+= ref Redir 10 1
+  name .b292 ref Redir 0 0
+  name nil ref Redir 1 0
+ecom: 
+name nil ref Redir 1 0
+ecom to: 
+name .b292 ref Redir 0 0
+eacom: 
+call string 10 2
+  name fdassignstr fn(isassign: int, redir: ref Redir): string 11 1
+  seq no type 10 1
+    const (1) int 6 0
+    seq no type 10 1
+      * ref Redir 8 0
+        + int 15 1
+          name n ref Node 0 0
+          const redir (32) int 6 0
+ecom: 
+call string 10 2
+  name fdassignstr fn(isassign: int, redir: ref Redir): string 11 1
+  seq no type 10 1
+    const (1) int 6 0
+    seq no type 10 1
+      * ref Redir 8 0
+        + int 15 1
+          name n ref Node 0 0
+          const redir (32) int 6 0
+ecom to: 
+name .t293 string 0 0
+generate desc for big
+ecom: 
+const (1) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b291 big 0 0
+    const (64) int 6 0
+ecom: 
+* ref Redir 8 0
+  + int 15 1
+    name n ref Node 0 0
+    const redir (32) int 6 0
+ecom to: 
+* ref Redir 8 0
+  + int 15 0
+    name .b291 big 0 0
+    const (72) int 6 0
+ecom: 
+= string 10 1
+  name .t290 string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name .t290 string 0 0
+ecom: 
+= string 10 1
+  name .t293 string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name .t293 string 0 0
+ecom: 
+= string 10 2
+  name s string 0 0
+  + string 10 2
+    + string 10 2
+      const ( string 1 0
+      call string 10 2
+        name cmd2string fn(n: ref Node): string 11 1
+        seq no type 10 1
+          * ref Node 8 0
+            + int 15 1
+              name n ref Node 0 0
+              const left (8) int 6 0
+    const ) string 1 0
+ecom: 
++ string 10 2
+  + string 10 2
+    const ( string 1 0
+    call string 10 2
+      name cmd2string fn(n: ref Node): string 11 1
+      seq no type 10 1
+        * ref Node 8 0
+          + int 15 1
+            name n ref Node 0 0
+            const left (8) int 6 0
+  const ) string 1 0
+ecom to: 
+name s string 0 0
+ecom: 
++ string 10 2
+  const ( string 1 0
+  call string 10 2
+    name cmd2string fn(n: ref Node): string 11 1
+    seq no type 10 1
+      * ref Node 8 0
+        + int 15 1
+          name n ref Node 0 0
+          const left (8) int 6 0
+ecom to: 
+name .t293 string 0 0
+eacom: 
+call string 10 2
+  name cmd2string fn(n: ref Node): string 11 1
+  seq no type 10 1
+    * ref Node 8 0
+      + int 15 1
+        name n ref Node 0 0
+        const left (8) int 6 0
+ecom: 
+call string 10 2
+  name cmd2string fn(n: ref Node): string 11 1
+  seq no type 10 1
+    * ref Node 8 0
+      + int 15 1
+        name n ref Node 0 0
+        const left (8) int 6 0
+ecom to: 
+name .t293 string 0 0
+generate desc for big
+ecom: 
+* ref Node 8 0
+  + int 15 1
+    name n ref Node 0 0
+    const left (8) int 6 0
+ecom to: 
+* ref Node 8 0
+  + int 15 0
+    name .b291 big 0 0
+    const (64) int 6 0
+ecom: 
+= string 10 1
+  name .t293 string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name .t293 string 0 0
+ecom: 
+= string 10 3
+  name s string 0 0
+  + string 10 3
+    + string 10 2
+      call string 10 2
+        name cmd2string fn(n: ref Node): string 11 1
+        seq no type 10 1
+          * ref Node 8 0
+            + int 15 1
+              name n ref Node 0 0
+              const left (8) int 6 0
+      const ; string 1 0
+    call string 10 2
+      name cmd2string fn(n: ref Node): string 11 1
+      seq no type 10 1
+        * ref Node 8 0
+          + int 15 1
+            name n ref Node 0 0
+            const right (16) int 6 0
+ecom: 
++ string 10 3
+  + string 10 2
+    call string 10 2
+      name cmd2string fn(n: ref Node): string 11 1
+      seq no type 10 1
+        * ref Node 8 0
+          + int 15 1
+            name n ref Node 0 0
+            const left (8) int 6 0
+    const ; string 1 0
+  call string 10 2
+    name cmd2string fn(n: ref Node): string 11 1
+    seq no type 10 1
+      * ref Node 8 0
+        + int 15 1
+          name n ref Node 0 0
+          const right (16) int 6 0
+ecom to: 
+name s string 0 0
+ecom: 
++ string 10 2
+  call string 10 2
+    name cmd2string fn(n: ref Node): string 11 1
+    seq no type 10 1
+      * ref Node 8 0
+        + int 15 1
+          name n ref Node 0 0
+          const left (8) int 6 0
+  const ; string 1 0
+ecom to: 
+name .t293 string 0 0
+ecom: 
+call string 10 2
+  name cmd2string fn(n: ref Node): string 11 1
+  seq no type 10 1
+    * ref Node 8 0
+      + int 15 1
+        name n ref Node 0 0
+        const left (8) int 6 0
+ecom to: 
+name .t293 string 0 0
+generate desc for big
+ecom: 
+* ref Node 8 0
+  + int 15 1
+    name n ref Node 0 0
+    const left (8) int 6 0
+ecom to: 
+* ref Node 8 0
+  + int 15 0
+    name .b291 big 0 0
+    const (64) int 6 0
+eacom: 
+call string 10 2
+  name cmd2string fn(n: ref Node): string 11 1
+  seq no type 10 1
+    * ref Node 8 0
+      + int 15 1
+        name n ref Node 0 0
+        const right (16) int 6 0
+ecom: 
+call string 10 2
+  name cmd2string fn(n: ref Node): string 11 1
+  seq no type 10 1
+    * ref Node 8 0
+      + int 15 1
+        name n ref Node 0 0
+        const right (16) int 6 0
+ecom to: 
+name .t290 string 0 0
+generate desc for big
+ecom: 
+* ref Node 8 0
+  + int 15 1
+    name n ref Node 0 0
+    const right (16) int 6 0
+ecom to: 
+* ref Node 8 0
+  + int 15 0
+    name .b291 big 0 0
+    const (64) int 6 0
+ecom: 
+= string 10 1
+  name .t293 string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name .t293 string 0 0
+ecom: 
+= string 10 1
+  name .t290 string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name .t290 string 0 0
+ecom: 
+= string 10 2
+  name s string 0 0
+  + string 10 2
+    call string 10 2
+      name cmd2string fn(n: ref Node): string 11 1
+      seq no type 10 1
+        * ref Node 8 0
+          + int 15 1
+            name n ref Node 0 0
+            const left (8) int 6 0
+    const & string 1 0
+ecom: 
++ string 10 2
+  call string 10 2
+    name cmd2string fn(n: ref Node): string 11 1
+    seq no type 10 1
+      * ref Node 8 0
+        + int 15 1
+          name n ref Node 0 0
+          const left (8) int 6 0
+  const & string 1 0
+ecom to: 
+name s string 0 0
+ecom: 
+call string 10 2
+  name cmd2string fn(n: ref Node): string 11 1
+  seq no type 10 1
+    * ref Node 8 0
+      + int 15 1
+        name n ref Node 0 0
+        const left (8) int 6 0
+ecom to: 
+name .t293 string 0 0
+generate desc for big
+ecom: 
+* ref Node 8 0
+  + int 15 1
+    name n ref Node 0 0
+    const left (8) int 6 0
+ecom to: 
+* ref Node 8 0
+  + int 15 0
+    name .b291 big 0 0
+    const (64) int 6 0
+ecom: 
+= string 10 1
+  name .t293 string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name .t293 string 0 0
+ecom: 
+= string 10 3
+  name s string 0 0
+  + string 10 3
+    + string 10 2
+      call string 10 2
+        name cmd2string fn(n: ref Node): string 11 1
+        seq no type 10 1
+          * ref Node 8 0
+            + int 15 1
+              name n ref Node 0 0
+              const left (8) int 6 0
+      const ^ string 1 0
+    call string 10 2
+      name cmd2string fn(n: ref Node): string 11 1
+      seq no type 10 1
+        * ref Node 8 0
+          + int 15 1
+            name n ref Node 0 0
+            const right (16) int 6 0
+ecom: 
++ string 10 3
+  + string 10 2
+    call string 10 2
+      name cmd2string fn(n: ref Node): string 11 1
+      seq no type 10 1
+        * ref Node 8 0
+          + int 15 1
+            name n ref Node 0 0
+            const left (8) int 6 0
+    const ^ string 1 0
+  call string 10 2
+    name cmd2string fn(n: ref Node): string 11 1
+    seq no type 10 1
+      * ref Node 8 0
+        + int 15 1
+          name n ref Node 0 0
+          const right (16) int 6 0
+ecom to: 
+name s string 0 0
+ecom: 
++ string 10 2
+  call string 10 2
+    name cmd2string fn(n: ref Node): string 11 1
+    seq no type 10 1
+      * ref Node 8 0
+        + int 15 1
+          name n ref Node 0 0
+          const left (8) int 6 0
+  const ^ string 1 0
+ecom to: 
+name .t293 string 0 0
+ecom: 
+call string 10 2
+  name cmd2string fn(n: ref Node): string 11 1
+  seq no type 10 1
+    * ref Node 8 0
+      + int 15 1
+        name n ref Node 0 0
+        const left (8) int 6 0
+ecom to: 
+name .t293 string 0 0
+generate desc for big
+ecom: 
+* ref Node 8 0
+  + int 15 1
+    name n ref Node 0 0
+    const left (8) int 6 0
+ecom to: 
+* ref Node 8 0
+  + int 15 0
+    name .b291 big 0 0
+    const (64) int 6 0
+eacom: 
+call string 10 2
+  name cmd2string fn(n: ref Node): string 11 1
+  seq no type 10 1
+    * ref Node 8 0
+      + int 15 1
+        name n ref Node 0 0
+        const right (16) int 6 0
+ecom: 
+call string 10 2
+  name cmd2string fn(n: ref Node): string 11 1
+  seq no type 10 1
+    * ref Node 8 0
+      + int 15 1
+        name n ref Node 0 0
+        const right (16) int 6 0
+ecom to: 
+name .t290 string 0 0
+generate desc for big
+ecom: 
+* ref Node 8 0
+  + int 15 1
+    name n ref Node 0 0
+    const right (16) int 6 0
+ecom to: 
+* ref Node 8 0
+  + int 15 0
+    name .b291 big 0 0
+    const (64) int 6 0
+ecom: 
+= string 10 1
+  name .t293 string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name .t293 string 0 0
+ecom: 
+= string 10 1
+  name .t290 string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name .t290 string 0 0
+ecom: 
+= string 10 2
+  name s string 0 0
+  + string 10 2
+    call string 10 2
+      name cmd2string fn(n: ref Node): string 11 1
+      seq no type 10 1
+        * ref Node 8 0
+          + int 15 1
+            name n ref Node 0 0
+            const left (8) int 6 0
+    const | string 1 0
+ecom: 
++ string 10 2
+  call string 10 2
+    name cmd2string fn(n: ref Node): string 11 1
+    seq no type 10 1
+      * ref Node 8 0
+        + int 15 1
+          name n ref Node 0 0
+          const left (8) int 6 0
+  const | string 1 0
+ecom to: 
+name s string 0 0
+ecom: 
+call string 10 2
+  name cmd2string fn(n: ref Node): string 11 1
+  seq no type 10 1
+    * ref Node 8 0
+      + int 15 1
+        name n ref Node 0 0
+        const left (8) int 6 0
+ecom to: 
+name .t293 string 0 0
+generate desc for big
+ecom: 
+* ref Node 8 0
+  + int 15 1
+    name n ref Node 0 0
+    const left (8) int 6 0
+ecom to: 
+* ref Node 8 0
+  + int 15 0
+    name .b291 big 0 0
+    const (64) int 6 0
+ecom: 
+= string 10 1
+  name .t293 string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name .t293 string 0 0
+eacom: 
+* int 10 1
+  + int 10 1
+    * ref Redir 8 0
+      + int 15 1
+        name n ref Node 0 0
+        const redir (32) int 6 0
+    const fd1 (4) int 6 0
+generate desc for ref Redir
+ecom: 
+* ref Redir 8 0
+  + int 15 1
+    name n ref Node 0 0
+    const redir (32) int 6 0
+ecom to: 
+name .b292 ref Redir 0 0
+ecom: 
+= ref Redir 10 1
+  name .b292 ref Redir 0 0
+  name nil ref Redir 1 0
+ecom: 
+name nil ref Redir 1 0
+ecom to: 
+name .b292 ref Redir 0 0
+eacom: 
+* int 10 1
+  + int 10 1
+    * ref Redir 8 0
+      + int 15 1
+        name n ref Node 0 0
+        const redir (32) int 6 0
+    const fd2 (8) int 6 0
+generate desc for ref Redir
+ecom: 
+* ref Redir 8 0
+  + int 15 1
+    name n ref Node 0 0
+    const redir (32) int 6 0
+ecom to: 
+name .b292 ref Redir 0 0
+ecom: 
+= ref Redir 10 1
+  name .b292 ref Redir 0 0
+  name nil ref Redir 1 0
+ecom: 
+name nil ref Redir 1 0
+ecom to: 
+name .b292 ref Redir 0 0
+ecom: 
++= string 10 2
+  name s string 0 0
+  call string 10 2
+    name fdassignstr fn(isassign: int, redir: ref Redir): string 11 1
+    seq no type 10 2
+      != int 10 1
+        * int 10 1
+          + int 10 1
+            * ref Redir 8 0
+              + int 15 1
+                name n ref Node 0 0
+                const redir (32) int 6 0
+            const fd2 (8) int 6 0
+        const (-1) int 6 0
+      seq no type 10 1
+        * ref Redir 8 0
+          + int 15 1
+            name n ref Node 0 0
+            const redir (32) int 6 0
+eacom: 
+call string 10 2
+  name fdassignstr fn(isassign: int, redir: ref Redir): string 11 1
+  seq no type 10 2
+    != int 10 1
+      * int 10 1
+        + int 10 1
+          * ref Redir 8 0
+            + int 15 1
+              name n ref Node 0 0
+              const redir (32) int 6 0
+          const fd2 (8) int 6 0
+      const (-1) int 6 0
+    seq no type 10 1
+      * ref Redir 8 0
+        + int 15 1
+          name n ref Node 0 0
+          const redir (32) int 6 0
+ecom: 
+call string 10 2
+  name fdassignstr fn(isassign: int, redir: ref Redir): string 11 1
+  seq no type 10 2
+    != int 10 1
+      * int 10 1
+        + int 10 1
+          * ref Redir 8 0
+            + int 15 1
+              name n ref Node 0 0
+              const redir (32) int 6 0
+          const fd2 (8) int 6 0
+      const (-1) int 6 0
+    seq no type 10 1
+      * ref Redir 8 0
+        + int 15 1
+          name n ref Node 0 0
+          const redir (32) int 6 0
+ecom to: 
+name .t293 string 0 0
+generate desc for big
+ecom: 
+!= int 10 1
+  * int 10 1
+    + int 10 1
+      * ref Redir 8 0
+        + int 15 1
+          name n ref Node 0 0
+          const redir (32) int 6 0
+      const fd2 (8) int 6 0
+  const (-1) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b291 big 0 0
+    const (64) int 6 0
+eacom: 
+* int 10 1
+  + int 10 1
+    * ref Redir 8 0
+      + int 15 1
+        name n ref Node 0 0
+        const redir (32) int 6 0
+    const fd2 (8) int 6 0
+generate desc for ref Redir
+ecom: 
+* ref Redir 8 0
+  + int 15 1
+    name n ref Node 0 0
+    const redir (32) int 6 0
+ecom to: 
+name .b292 ref Redir 0 0
+ecom: 
+= ref Redir 10 1
+  name .b292 ref Redir 0 0
+  name nil ref Redir 1 0
+ecom: 
+name nil ref Redir 1 0
+ecom to: 
+name .b292 ref Redir 0 0
+ecom: 
+* ref Redir 8 0
+  + int 15 1
+    name n ref Node 0 0
+    const redir (32) int 6 0
+ecom to: 
+* ref Redir 8 0
+  + int 15 0
+    name .b291 big 0 0
+    const (72) int 6 0
+ecom: 
+= string 10 1
+  name .t293 string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name .t293 string 0 0
+ecom: 
++= string 10 2
+  name s string 0 0
+  call string 10 2
+    name cmd2string fn(n: ref Node): string 11 1
+    seq no type 10 1
+      * ref Node 8 0
+        + int 15 1
+          name n ref Node 0 0
+          const right (16) int 6 0
+eacom: 
+call string 10 2
+  name cmd2string fn(n: ref Node): string 11 1
+  seq no type 10 1
+    * ref Node 8 0
+      + int 15 1
+        name n ref Node 0 0
+        const right (16) int 6 0
+ecom: 
+call string 10 2
+  name cmd2string fn(n: ref Node): string 11 1
+  seq no type 10 1
+    * ref Node 8 0
+      + int 15 1
+        name n ref Node 0 0
+        const right (16) int 6 0
+ecom to: 
+name .t293 string 0 0
+generate desc for big
+ecom: 
+* ref Node 8 0
+  + int 15 1
+    name n ref Node 0 0
+    const right (16) int 6 0
+ecom to: 
+* ref Node 8 0
+  + int 15 0
+    name .b291 big 0 0
+    const (64) int 6 0
+ecom: 
+= string 10 1
+  name .t293 string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name .t293 string 0 0
+ecom: 
+= string 10 3
+  name s string 0 0
+  + string 10 3
+    + string 10 2
+      call string 10 2
+        name cmd2string fn(n: ref Node): string 11 1
+        seq no type 10 1
+          * ref Node 8 0
+            + int 15 1
+              name n ref Node 0 0
+              const left (8) int 6 0
+      const = string 1 0
+    call string 10 2
+      name cmd2string fn(n: ref Node): string 11 1
+      seq no type 10 1
+        * ref Node 8 0
+          + int 15 1
+            name n ref Node 0 0
+            const right (16) int 6 0
+ecom: 
++ string 10 3
+  + string 10 2
+    call string 10 2
+      name cmd2string fn(n: ref Node): string 11 1
+      seq no type 10 1
+        * ref Node 8 0
+          + int 15 1
+            name n ref Node 0 0
+            const left (8) int 6 0
+    const = string 1 0
+  call string 10 2
+    name cmd2string fn(n: ref Node): string 11 1
+    seq no type 10 1
+      * ref Node 8 0
+        + int 15 1
+          name n ref Node 0 0
+          const right (16) int 6 0
+ecom to: 
+name s string 0 0
+ecom: 
++ string 10 2
+  call string 10 2
+    name cmd2string fn(n: ref Node): string 11 1
+    seq no type 10 1
+      * ref Node 8 0
+        + int 15 1
+          name n ref Node 0 0
+          const left (8) int 6 0
+  const = string 1 0
+ecom to: 
+name .t293 string 0 0
+ecom: 
+call string 10 2
+  name cmd2string fn(n: ref Node): string 11 1
+  seq no type 10 1
+    * ref Node 8 0
+      + int 15 1
+        name n ref Node 0 0
+        const left (8) int 6 0
+ecom to: 
+name .t293 string 0 0
+generate desc for big
+ecom: 
+* ref Node 8 0
+  + int 15 1
+    name n ref Node 0 0
+    const left (8) int 6 0
+ecom to: 
+* ref Node 8 0
+  + int 15 0
+    name .b291 big 0 0
+    const (64) int 6 0
+eacom: 
+call string 10 2
+  name cmd2string fn(n: ref Node): string 11 1
+  seq no type 10 1
+    * ref Node 8 0
+      + int 15 1
+        name n ref Node 0 0
+        const right (16) int 6 0
+ecom: 
+call string 10 2
+  name cmd2string fn(n: ref Node): string 11 1
+  seq no type 10 1
+    * ref Node 8 0
+      + int 15 1
+        name n ref Node 0 0
+        const right (16) int 6 0
+ecom to: 
+name .t290 string 0 0
+generate desc for big
+ecom: 
+* ref Node 8 0
+  + int 15 1
+    name n ref Node 0 0
+    const right (16) int 6 0
+ecom to: 
+* ref Node 8 0
+  + int 15 0
+    name .b291 big 0 0
+    const (64) int 6 0
+ecom: 
+= string 10 1
+  name .t293 string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name .t293 string 0 0
+ecom: 
+= string 10 1
+  name .t290 string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name .t290 string 0 0
+ecom: 
+= string 10 3
+  name s string 0 0
+  + string 10 3
+    + string 10 2
+      call string 10 2
+        name cmd2string fn(n: ref Node): string 11 1
+        seq no type 10 1
+          * ref Node 8 0
+            + int 15 1
+              name n ref Node 0 0
+              const left (8) int 6 0
+      const := string 1 0
+    call string 10 2
+      name cmd2string fn(n: ref Node): string 11 1
+      seq no type 10 1
+        * ref Node 8 0
+          + int 15 1
+            name n ref Node 0 0
+            const right (16) int 6 0
+ecom: 
++ string 10 3
+  + string 10 2
+    call string 10 2
+      name cmd2string fn(n: ref Node): string 11 1
+      seq no type 10 1
+        * ref Node 8 0
+          + int 15 1
+            name n ref Node 0 0
+            const left (8) int 6 0
+    const := string 1 0
+  call string 10 2
+    name cmd2string fn(n: ref Node): string 11 1
+    seq no type 10 1
+      * ref Node 8 0
+        + int 15 1
+          name n ref Node 0 0
+          const right (16) int 6 0
+ecom to: 
+name s string 0 0
+ecom: 
++ string 10 2
+  call string 10 2
+    name cmd2string fn(n: ref Node): string 11 1
+    seq no type 10 1
+      * ref Node 8 0
+        + int 15 1
+          name n ref Node 0 0
+          const left (8) int 6 0
+  const := string 1 0
+ecom to: 
+name .t293 string 0 0
+ecom: 
+call string 10 2
+  name cmd2string fn(n: ref Node): string 11 1
+  seq no type 10 1
+    * ref Node 8 0
+      + int 15 1
+        name n ref Node 0 0
+        const left (8) int 6 0
+ecom to: 
+name .t293 string 0 0
+generate desc for big
+ecom: 
+* ref Node 8 0
+  + int 15 1
+    name n ref Node 0 0
+    const left (8) int 6 0
+ecom to: 
+* ref Node 8 0
+  + int 15 0
+    name .b291 big 0 0
+    const (64) int 6 0
+eacom: 
+call string 10 2
+  name cmd2string fn(n: ref Node): string 11 1
+  seq no type 10 1
+    * ref Node 8 0
+      + int 15 1
+        name n ref Node 0 0
+        const right (16) int 6 0
+ecom: 
+call string 10 2
+  name cmd2string fn(n: ref Node): string 11 1
+  seq no type 10 1
+    * ref Node 8 0
+      + int 15 1
+        name n ref Node 0 0
+        const right (16) int 6 0
+ecom to: 
+name .t290 string 0 0
+generate desc for big
+ecom: 
+* ref Node 8 0
+  + int 15 1
+    name n ref Node 0 0
+    const right (16) int 6 0
+ecom to: 
+* ref Node 8 0
+  + int 15 0
+    name .b291 big 0 0
+    const (64) int 6 0
+ecom: 
+= string 10 1
+  name .t293 string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name .t293 string 0 0
+ecom: 
+= string 10 1
+  name .t290 string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name .t290 string 0 0
+ecom: 
+= string 10 3
+  name s string 0 0
+  + string 10 3
+    + string 10 2
+      call string 10 2
+        name cmd2string fn(n: ref Node): string 11 1
+        seq no type 10 1
+          * ref Node 8 0
+            + int 15 1
+              name n ref Node 0 0
+              const left (8) int 6 0
+      const   string 1 0
+    call string 10 2
+      name cmd2string fn(n: ref Node): string 11 1
+      seq no type 10 1
+        * ref Node 8 0
+          + int 15 1
+            name n ref Node 0 0
+            const right (16) int 6 0
+ecom: 
++ string 10 3
+  + string 10 2
+    call string 10 2
+      name cmd2string fn(n: ref Node): string 11 1
+      seq no type 10 1
+        * ref Node 8 0
+          + int 15 1
+            name n ref Node 0 0
+            const left (8) int 6 0
+    const   string 1 0
+  call string 10 2
+    name cmd2string fn(n: ref Node): string 11 1
+    seq no type 10 1
+      * ref Node 8 0
+        + int 15 1
+          name n ref Node 0 0
+          const right (16) int 6 0
+ecom to: 
+name s string 0 0
+ecom: 
++ string 10 2
+  call string 10 2
+    name cmd2string fn(n: ref Node): string 11 1
+    seq no type 10 1
+      * ref Node 8 0
+        + int 15 1
+          name n ref Node 0 0
+          const left (8) int 6 0
+  const   string 1 0
+ecom to: 
+name .t293 string 0 0
+ecom: 
+call string 10 2
+  name cmd2string fn(n: ref Node): string 11 1
+  seq no type 10 1
+    * ref Node 8 0
+      + int 15 1
+        name n ref Node 0 0
+        const left (8) int 6 0
+ecom to: 
+name .t293 string 0 0
+generate desc for big
+ecom: 
+* ref Node 8 0
+  + int 15 1
+    name n ref Node 0 0
+    const left (8) int 6 0
+ecom to: 
+* ref Node 8 0
+  + int 15 0
+    name .b291 big 0 0
+    const (64) int 6 0
+eacom: 
+call string 10 2
+  name cmd2string fn(n: ref Node): string 11 1
+  seq no type 10 1
+    * ref Node 8 0
+      + int 15 1
+        name n ref Node 0 0
+        const right (16) int 6 0
+ecom: 
+call string 10 2
+  name cmd2string fn(n: ref Node): string 11 1
+  seq no type 10 1
+    * ref Node 8 0
+      + int 15 1
+        name n ref Node 0 0
+        const right (16) int 6 0
+ecom to: 
+name .t290 string 0 0
+generate desc for big
+ecom: 
+* ref Node 8 0
+  + int 15 1
+    name n ref Node 0 0
+    const right (16) int 6 0
+ecom to: 
+* ref Node 8 0
+  + int 15 0
+    name .b291 big 0 0
+    const (64) int 6 0
+ecom: 
+= string 10 1
+  name .t293 string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name .t293 string 0 0
+ecom: 
+= string 10 1
+  name .t290 string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name .t290 string 0 0
+ecom: 
+= string 10 2
+  name s string 0 0
+  call string 10 2
+    name quote fn(s: string, glob: int): string 11 1
+    seq no type 10 1
+      * string 8 0
+        + int 15 1
+          name n ref Node 0 0
+          const word (24) int 6 0
+      seq no type 10 1
+        const (1) int 6 0
+ecom: 
+call string 10 2
+  name quote fn(s: string, glob: int): string 11 1
+  seq no type 10 1
+    * string 8 0
+      + int 15 1
+        name n ref Node 0 0
+        const word (24) int 6 0
+    seq no type 10 1
+      const (1) int 6 0
+ecom to: 
+name s string 0 0
+generate desc for big
+ecom: 
+* string 8 0
+  + int 15 1
+    name n ref Node 0 0
+    const word (24) int 6 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b291 big 0 0
+    const (64) int 6 0
+ecom: 
+const (1) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b291 big 0 0
+    const (72) int 6 0
+ecom: 
+= string 10 2
+  name s string 0 0
+  call string 10 2
+    -> fn(s: string, nil: int, *): string 12 1
+      name sys Sys 1 0
+      name sprint nothing 11 1
+    seq no type 10 1
+      const unknown%d string 1 0
+      seq no type 10 1
+        * int 8 0
+          name n ref Node 0 0
+ecom: 
+call string 10 2
+  -> fn(s: string, nil: int, *): string 12 1
+    name sys Sys 1 0
+    name sprint nothing 11 1
+  seq no type 10 1
+    const unknown%d string 1 0
+    seq no type 10 1
+      * int 8 0
+        name n ref Node 0 0
+ecom to: 
+name s string 0 0
+generate desc for Sys->sprint
+descmap offset 0
+descmap s type string offset 64 (d->offset=64 start=0) returns 64
+descmap type int offset 72 returns -1
+generate desc for big
+ecom: 
+const unknown%d string 1 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b291 big 0 0
+    const (64) int 6 0
+ecom: 
+* int 8 0
+  name n ref Node 0 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b291 big 0 0
+    const (72) int 6 0
+ecom: 
+name s string 0 0
+ecom to: 
+* string 8 0
+  name .ret int 0 0
+fn: cmd2string
+64: argument n ref Node ref 37
+72: local .b291 big ref 29
+80: local s string ref 24
+88: local .b292 ref Redir ref 6
+96: local .t290 string ref 1
+104: local .t293 string ref 1
+generate desc for cmd2string
+descmap offset 0
+descmap n type ref Node offset 64 (d->offset=64 start=0) returns 64
+descmap .b291 type big offset 72 (d->offset=72 start=0) returns -1
+descmap s type string offset 80 (d->offset=80 start=0) returns 80
+descmap .b292 type ref Redir offset 88 (d->offset=88 start=0) returns 88
+descmap .t290 type string offset 96 (d->offset=96 start=0) returns 96
+descmap .t293 type string offset 104 (d->offset=104 start=0) returns 104
+fncom: quote 5 6e8c10
+ecom: 
+= int 10 1
+  name needquote int 0 0
+  const (0) int 6 0
+ecom: 
+const (0) int 6 0
+ecom to: 
+name needquote int 0 0
+ecom: 
+= string 10 1
+  name t string 0 0
+  const  string 1 0
+ecom: 
+const  string 1 0
+ecom to: 
+name t string 0 0
+ecom: 
+= int 10 1
+  name i int 0 0
+  const (0) int 6 0
+ecom: 
+const (0) int 6 0
+ecom to: 
+name i int 0 0
+eacom: 
+len int 10 1
+  name s string 0 0
+ecom: 
+len int 10 1
+  name s string 0 0
+ecom to: 
+name .t294 int 0 0
+eacom: 
+inds int 10 1
+  name s string 0 0
+  name i int 0 0
+ecom: 
+inds int 10 1
+  name s string 0 0
+  name i int 0 0
+ecom to: 
+name .t294 int 0 0
+ecom: 
+= int 10 1
+  name needquote int 0 0
+  const (1) int 6 0
+ecom: 
+const (1) int 6 0
+ecom to: 
+name needquote int 0 0
+ecom: 
+= int 10 1
+  inds int 10 1
+    name t string 0 0
+    len int 10 1
+      name t string 0 0
+  const (39) int 6 0
+ecom: 
+len int 10 1
+  name t string 0 0
+ecom to: 
+name .t294 int 0 0
+ecom: 
+= int 10 1
+  name needquote int 0 0
+  const (1) int 6 0
+ecom: 
+const (1) int 6 0
+ecom to: 
+name needquote int 0 0
+eacom: 
+- int 10 1
+  len int 10 1
+    name s string 0 0
+  const (1) int 6 0
+ecom: 
+- int 10 1
+  len int 10 1
+    name s string 0 0
+  const (1) int 6 0
+ecom to: 
+name .t294 int 0 0
+ecom: 
+len int 10 1
+  name s string 0 0
+ecom to: 
+name .t294 int 0 0
+ecom: 
+++ int 10 1
+  name i int 0 0
+  const (1) int 6 0
+ecom: 
+= int 10 2
+  inds int 10 1
+    name t string 0 0
+    len int 10 1
+      name t string 0 0
+  inds int 10 1
+    name s string 0 0
+    name i int 0 0
+ecom: 
+len int 10 1
+  name t string 0 0
+ecom to: 
+name .t294 int 0 0
+eacom: 
+inds int 10 1
+  name s string 0 0
+  name i int 0 0
+ecom: 
+inds int 10 1
+  name s string 0 0
+  name i int 0 0
+ecom to: 
+name .t295 int 0 0
+ecom: 
+++ int 10 1
+  name i int 0 0
+  const (1) int 6 0
+ecom: 
+= string 10 1
+  name t string 0 0
+  + string 10 1
+    + string 10 1
+      const ' string 1 0
+      name t string 0 0
+    const ' string 1 0
+ecom: 
++ string 10 1
+  + string 10 1
+    const ' string 1 0
+    name t string 0 0
+  const ' string 1 0
+ecom to: 
+name t string 0 0
+ecom: 
++ string 10 1
+  const ' string 1 0
+  name t string 0 0
+ecom to: 
+name .t296 string 0 0
+ecom: 
+= string 10 1
+  name .t296 string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name .t296 string 0 0
+ecom: 
+name t string 0 0
+ecom to: 
+* string 8 0
+  name .ret int 0 0
+fn: quote
+64: argument s string ref 4
+72: argument glob int ref 1
+76: local i int ref 7
+80: local needquote int ref 4
+84: local .t294 int ref 1
+88: local .t295 int ref 1
+96: local t string ref 9
+104: local .t296 string ref 1
+generate desc for quote
+descmap offset 0
+descmap s type string offset 64 (d->offset=64 start=0) returns 64
+descmap glob type int offset 72 (d->offset=72 start=0) returns -1
+descmap i type int offset 76 (d->offset=76 start=0) returns -1
+descmap needquote type int offset 80 (d->offset=80 start=0) returns -1
+descmap .t294 type int offset 84 (d->offset=84 start=0) returns -1
+descmap .t295 type int offset 88 (d->offset=88 start=0) returns -1
+descmap t type string offset 96 (d->offset=96 start=0) returns 96
+descmap .t296 type string offset 104 (d->offset=104 start=0) returns 104
+fncom: squash 3 6e8cd0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* polymorphic type 8 0
+  name .ret int 0 0
+ecom: 
+= string 10 1
+  name s string 0 0
+  hd string 10 1
+    name l list of string 0 0
+ecom: 
+hd string 10 1
+  name l list of string 0 0
+ecom to: 
+name s string 0 0
+ecom: 
+= list of string 10 1
+  name l list of string 0 0
+  tl list of string 10 1
+    name l list of string 0 0
+ecom: 
+tl list of string 10 1
+  name l list of string 0 0
+ecom to: 
+name l list of string 0 0
+ecom: 
++= string 10 1
+  name s string 0 0
+  + string 10 1
+    name sep string 0 0
+    hd string 10 1
+      name l list of string 0 0
+eacom: 
++ string 10 1
+  name sep string 0 0
+  hd string 10 1
+    name l list of string 0 0
+ecom: 
++ string 10 1
+  name sep string 0 0
+  hd string 10 1
+    name l list of string 0 0
+ecom to: 
+name .t297 string 0 0
+eacom: 
+hd string 10 1
+  name l list of string 0 0
+ecom: 
+hd string 10 1
+  name l list of string 0 0
+ecom to: 
+name .t297 string 0 0
+ecom: 
+= string 10 1
+  name .t297 string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name .t297 string 0 0
+ecom: 
+= list of string 10 1
+  name l list of string 0 0
+  tl list of string 10 1
+    name l list of string 0 0
+ecom: 
+tl list of string 10 1
+  name l list of string 0 0
+ecom to: 
+name l list of string 0 0
+ecom: 
+name s string 0 0
+ecom to: 
+* string 8 0
+  name .ret int 0 0
+fn: squash
+64: argument l list of string ref 8
+72: argument sep string ref 1
+80: local s string ref 3
+88: local .t297 string ref 1
+generate desc for squash
+descmap offset 0
+descmap l type list of string offset 64 (d->offset=64 start=0) returns 64
+descmap sep type string offset 72 (d->offset=72 start=0) returns 72
+descmap s type string offset 80 (d->offset=80 start=0) returns 80
+descmap .t297 type string offset 88 (d->offset=88 start=0) returns 88
+fncom: debug 9 6e8d90
+fn: debug
+64: argument s string ref 1
+generate desc for debug
+descmap offset 0
+descmap s type string offset 64 (d->offset=64 start=0) returns 64
+fncom: initbuiltin 2 4c4628
+ecom: 
+= array of string 10 2
+  name names array of string 0 0
+  array array of string 10 2
+    const (9) int 6 0
+    seq array initializers 10 2
+      elem string 10 1
+        seq nothing 10 1
+          const (0) int 6 0
+        const load string 1 0
+      seq no type 10 2
+        elem string 10 1
+          seq nothing 10 1
+            const (1) int 6 0
+          const unload string 1 0
+        seq no type 10 2
+          elem string 10 1
+            seq nothing 10 1
+              const (2) int 6 0
+            const loaded string 1 0
+          seq no type 10 2
+            elem string 10 1
+              seq nothing 10 1
+                const (3) int 6 0
+              const builtin string 1 0
+            seq no type 10 2
+              elem string 10 1
+                seq nothing 10 1
+                  const (4) int 6 0
+                const syncenv string 1 0
+              seq no type 10 2
+                elem string 10 1
+                  seq nothing 10 1
+                    const (5) int 6 0
+                  const whatis string 1 0
+                seq no type 10 2
+                  elem string 10 1
+                    seq nothing 10 1
+                      const (6) int 6 0
+                    const run string 1 0
+                  seq no type 10 2
+                    elem string 10 1
+                      seq nothing 10 1
+                        const (7) int 6 0
+                      const exit string 1 0
+                    seq no type 10 1
+                      elem string 10 1
+                        seq nothing 10 1
+                          const (8) int 6 0
+                        const @ string 1 0
+ecom: 
+array array of string 10 2
+  const (9) int 6 0
+  seq array initializers 10 2
+    elem string 10 1
+      seq nothing 10 1
+        const (0) int 6 0
+      const load string 1 0
+    seq no type 10 2
+      elem string 10 1
+        seq nothing 10 1
+          const (1) int 6 0
+        const unload string 1 0
+      seq no type 10 2
+        elem string 10 1
+          seq nothing 10 1
+            const (2) int 6 0
+          const loaded string 1 0
+        seq no type 10 2
+          elem string 10 1
+            seq nothing 10 1
+              const (3) int 6 0
+            const builtin string 1 0
+          seq no type 10 2
+            elem string 10 1
+              seq nothing 10 1
+                const (4) int 6 0
+              const syncenv string 1 0
+            seq no type 10 2
+              elem string 10 1
+                seq nothing 10 1
+                  const (5) int 6 0
+                const whatis string 1 0
+              seq no type 10 2
+                elem string 10 1
+                  seq nothing 10 1
+                    const (6) int 6 0
+                  const run string 1 0
+                seq no type 10 2
+                  elem string 10 1
+                    seq nothing 10 1
+                      const (7) int 6 0
+                    const exit string 1 0
+                  seq no type 10 1
+                    elem string 10 1
+                      seq nothing 10 1
+                        const (8) int 6 0
+                      const @ string 1 0
+ecom to: 
+name names array of string 0 0
+generate desc for string
+generate desc for big
+ecom: 
+indx big 10 0
+  name names array of string 0 0
+  const (0) int 6 0
+ecom to: 
+name .b298 big 0 0
+ecom: 
+const load string 1 0
+ecom to: 
+* string 8 0
+  name .b298 big 0 0
+ecom: 
+indx big 10 0
+  name names array of string 0 0
+  const (1) int 6 0
+ecom to: 
+name .b298 big 0 0
+ecom: 
+const unload string 1 0
+ecom to: 
+* string 8 0
+  name .b298 big 0 0
+ecom: 
+indx big 10 0
+  name names array of string 0 0
+  const (2) int 6 0
+ecom to: 
+name .b298 big 0 0
+ecom: 
+const loaded string 1 0
+ecom to: 
+* string 8 0
+  name .b298 big 0 0
+ecom: 
+indx big 10 0
+  name names array of string 0 0
+  const (3) int 6 0
+ecom to: 
+name .b298 big 0 0
+ecom: 
+const builtin string 1 0
+ecom to: 
+* string 8 0
+  name .b298 big 0 0
+ecom: 
+indx big 10 0
+  name names array of string 0 0
+  const (4) int 6 0
+ecom to: 
+name .b298 big 0 0
+ecom: 
+const syncenv string 1 0
+ecom to: 
+* string 8 0
+  name .b298 big 0 0
+ecom: 
+indx big 10 0
+  name names array of string 0 0
+  const (5) int 6 0
+ecom to: 
+name .b298 big 0 0
+ecom: 
+const whatis string 1 0
+ecom to: 
+* string 8 0
+  name .b298 big 0 0
+ecom: 
+indx big 10 0
+  name names array of string 0 0
+  const (6) int 6 0
+ecom to: 
+name .b298 big 0 0
+ecom: 
+const run string 1 0
+ecom to: 
+* string 8 0
+  name .b298 big 0 0
+ecom: 
+indx big 10 0
+  name names array of string 0 0
+  const (7) int 6 0
+ecom to: 
+name .b298 big 0 0
+ecom: 
+const exit string 1 0
+ecom to: 
+* string 8 0
+  name .b298 big 0 0
+ecom: 
+indx big 10 0
+  name names array of string 0 0
+  const (8) int 6 0
+ecom to: 
+name .b298 big 0 0
+ecom: 
+const @ string 1 0
+ecom to: 
+* string 8 0
+  name .b298 big 0 0
+ecom: 
+= int 10 1
+  name i int 0 0
+  const (0) int 6 0
+ecom: 
+const (0) int 6 0
+ecom to: 
+name i int 0 0
+eacom: 
+len int 10 1
+  name names array of string 0 0
+ecom: 
+len int 10 1
+  name names array of string 0 0
+ecom to: 
+name .t299 int 0 0
+ecom: 
+call no type 10 2
+  name addbuiltin fn(c: self ref Context, name: string, mod: Shellbuiltin) 11 1
+  seq nothing 10 2
+    name c ref Context 0 0
+    seq no type 10 2
+      * string 10 1
+        indx big 10 1
+          name names array of string 0 0
+          name i int 0 0
+      seq no type 10 1
+        name myselfbuiltin Shellbuiltin 1 0
+generate desc for big
+ecom: 
+name c ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b298 big 0 0
+    const (64) int 6 0
+ecom: 
+* string 10 1
+  indx big 10 1
+    name names array of string 0 0
+    name i int 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b298 big 0 0
+    const (72) int 6 0
+eacom: 
+* string 10 1
+  indx big 10 1
+    name names array of string 0 0
+    name i int 0 0
+generate desc for big
+ecom: 
+indx big 10 1
+  name names array of string 0 0
+  name i int 0 0
+ecom to: 
+name .b300 big 0 0
+ecom: 
+name myselfbuiltin Shellbuiltin 1 0
+ecom to: 
+* Shellbuiltin 8 0
+  + int 15 0
+    name .b298 big 0 0
+    const (80) int 6 0
+ecom: 
+++ int 10 1
+  name i int 0 0
+  const (1) int 6 0
+ecom: 
+call no type 10 2
+  name addsbuiltin fn(c: self ref Context, name: string, mod: Shellbuiltin) 11 1
+  seq nothing 10 1
+    name c ref Context 0 0
+    seq no type 10 1
+      const loaded string 1 0
+      seq no type 10 1
+        name myselfbuiltin Shellbuiltin 1 0
+generate desc for big
+ecom: 
+name c ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b300 big 0 0
+    const (64) int 6 0
+ecom: 
+const loaded string 1 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b300 big 0 0
+    const (72) int 6 0
+ecom: 
+name myselfbuiltin Shellbuiltin 1 0
+ecom to: 
+* Shellbuiltin 8 0
+  + int 15 0
+    name .b300 big 0 0
+    const (80) int 6 0
+ecom: 
+call no type 10 2
+  name addsbuiltin fn(c: self ref Context, name: string, mod: Shellbuiltin) 11 1
+  seq nothing 10 1
+    name c ref Context 0 0
+    seq no type 10 1
+      const quote string 1 0
+      seq no type 10 1
+        name myselfbuiltin Shellbuiltin 1 0
+generate desc for big
+ecom: 
+name c ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b300 big 0 0
+    const (64) int 6 0
+ecom: 
+const quote string 1 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b300 big 0 0
+    const (72) int 6 0
+ecom: 
+name myselfbuiltin Shellbuiltin 1 0
+ecom to: 
+* Shellbuiltin 8 0
+  + int 15 0
+    name .b300 big 0 0
+    const (80) int 6 0
+ecom: 
+call no type 10 2
+  name addsbuiltin fn(c: self ref Context, name: string, mod: Shellbuiltin) 11 1
+  seq nothing 10 1
+    name c ref Context 0 0
+    seq no type 10 1
+      const bquote string 1 0
+      seq no type 10 1
+        name myselfbuiltin Shellbuiltin 1 0
+generate desc for big
+ecom: 
+name c ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b300 big 0 0
+    const (64) int 6 0
+ecom: 
+const bquote string 1 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b300 big 0 0
+    const (72) int 6 0
+ecom: 
+name myselfbuiltin Shellbuiltin 1 0
+ecom to: 
+* Shellbuiltin 8 0
+  + int 15 0
+    name .b300 big 0 0
+    const (80) int 6 0
+ecom: 
+call no type 10 2
+  name addsbuiltin fn(c: self ref Context, name: string, mod: Shellbuiltin) 11 1
+  seq nothing 10 1
+    name c ref Context 0 0
+    seq no type 10 1
+      const unquote string 1 0
+      seq no type 10 1
+        name myselfbuiltin Shellbuiltin 1 0
+generate desc for big
+ecom: 
+name c ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b300 big 0 0
+    const (64) int 6 0
+ecom: 
+const unquote string 1 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b300 big 0 0
+    const (72) int 6 0
+ecom: 
+name myselfbuiltin Shellbuiltin 1 0
+ecom to: 
+* Shellbuiltin 8 0
+  + int 15 0
+    name .b300 big 0 0
+    const (80) int 6 0
+ecom: 
+call no type 10 2
+  name addsbuiltin fn(c: self ref Context, name: string, mod: Shellbuiltin) 11 1
+  seq nothing 10 1
+    name c ref Context 0 0
+    seq no type 10 1
+      const builtin string 1 0
+      seq no type 10 1
+        name myselfbuiltin Shellbuiltin 1 0
+generate desc for big
+ecom: 
+name c ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b300 big 0 0
+    const (64) int 6 0
+ecom: 
+const builtin string 1 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b300 big 0 0
+    const (72) int 6 0
+ecom: 
+name myselfbuiltin Shellbuiltin 1 0
+ecom to: 
+* Shellbuiltin 8 0
+  + int 15 0
+    name .b300 big 0 0
+    const (80) int 6 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* polymorphic type 8 0
+  name .ret int 0 0
+fn: initbuiltin
+64: argument c ref Context ref 6
+72: argument <nil> Sh ref 0
+80: local i int ref 4
+84: local .t299 int ref 1
+88: local .b300 big ref 6
+96: local names array of string ref 3
+104: local .b298 big ref 2
+generate desc for initbuiltin
+descmap offset 0
+descmap c type ref Context offset 64 (d->offset=64 start=0) returns 64
+descmap type Sh offset 72 returns 72
+descmap i type int offset 80 (d->offset=80 start=0) returns -1
+descmap .t299 type int offset 84 (d->offset=84 start=0) returns -1
+descmap .b300 type big offset 88 (d->offset=88 start=0) returns -1
+descmap names type array of string offset 96 (d->offset=96 start=0) returns 96
+descmap .b298 type big offset 104 (d->offset=104 start=0) returns -1
+fncom: whatis 2 4c4e48
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* polymorphic type 8 0
+  name .ret int 0 0
+fn: whatis
+64: argument <nil> ref Context ref 0
+72: argument <nil> Sh ref 0
+80: argument <nil> string ref 0
+88: argument <nil> int ref 0
+generate desc for whatis
+descmap offset 0
+descmap type ref Context offset 64 returns 64
+descmap type Sh offset 72 returns 72
+descmap type string offset 80 returns 80
+descmap type int offset 88 returns -1
+fncom: runsbuiltin 2 4c6328
+eacom: 
+* string 10 1
+  + int 10 1
+    hd ref Listnode 10 1
+      name argv list of ref Listnode 0 0
+    const word (8) int 6 0
+generate desc for ref Listnode
+generate desc for ref Listnode
+	desc	$-1,8,"80"
+ecom: 
+hd ref Listnode 10 1
+  name argv list of ref Listnode 0 0
+ecom to: 
+name .b301 ref Listnode 0 0
+ecom: 
+= ref Listnode 10 1
+  name .b301 ref Listnode 0 0
+  name nil ref Listnode 1 0
+ecom: 
+name nil ref Listnode 1 0
+ecom to: 
+name .b301 ref Listnode 0 0
+ecom: 
+call list of ref Listnode 10 2
+  name sbuiltin_loaded fn(ctxt: ref Context, nil: list of ref Listnode): list of ref Listnode 11 1
+  seq no type 10 1
+    name ctxt ref Context 0 0
+    seq no type 10 1
+      name argv list of ref Listnode 0 0
+ecom to: 
+* list of ref Listnode 8 0
+  name .ret int 0 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b302 big 0 0
+    const (64) int 6 0
+ecom: 
+name argv list of ref Listnode 0 0
+ecom to: 
+* list of ref Listnode 8 0
+  + int 15 0
+    name .b302 big 0 0
+    const (72) int 6 0
+ecom: 
+:: list of ref Listnode 10 2
+  ref ref Listnode 10 2
+    tuple Listnode 10 2
+      seq no type 10 2
+        name nil polymorphic type 1 0
+        seq no type 10 2
+          call string 10 2
+            name quoted fn(val: list of ref Listnode, quoteblocks: int): string 11 1
+            seq no type 10 2
+              tl list of ref Listnode 10 1
+                name argv list of ref Listnode 0 0
+              seq no type 10 1
+                const (0) int 6 0
+  name nil polymorphic type 1 0
+ecom to: 
+* list of ref Listnode 8 0
+  name .ret int 0 0
+eacom: 
+ref ref Listnode 10 2
+  tuple Listnode 10 2
+    seq no type 10 2
+      name nil polymorphic type 1 0
+      seq no type 10 2
+        call string 10 2
+          name quoted fn(val: list of ref Listnode, quoteblocks: int): string 11 1
+          seq no type 10 2
+            tl list of ref Listnode 10 1
+              name argv list of ref Listnode 0 0
+            seq no type 10 1
+              const (0) int 6 0
+generate desc for ref Listnode
+generate desc for ref Listnode
+	desc	$-1,8,"80"
+ecom: 
+ref ref Listnode 10 2
+  tuple Listnode 10 2
+    seq no type 10 2
+      name nil polymorphic type 1 0
+      seq no type 10 2
+        call string 10 2
+          name quoted fn(val: list of ref Listnode, quoteblocks: int): string 11 1
+          seq no type 10 2
+            tl list of ref Listnode 10 1
+              name argv list of ref Listnode 0 0
+            seq no type 10 1
+              const (0) int 6 0
+ecom to: 
+name .b301 ref Listnode 0 0
+generate desc for ref Listnode
+generate desc for Listnode
+ecom: 
+tuple Listnode 10 2
+  seq no type 10 2
+    name nil polymorphic type 1 0
+    seq no type 10 2
+      call string 10 2
+        name quoted fn(val: list of ref Listnode, quoteblocks: int): string 11 1
+        seq no type 10 2
+          tl list of ref Listnode 10 1
+            name argv list of ref Listnode 0 0
+          seq no type 10 1
+            const (0) int 6 0
+ecom to: 
+* Listnode 8 0
+  name .b301 ref Listnode 0 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* ref Node 8 0
+  + int 15 1
+    adr int 15 1
+      * Listnode 8 0
+        name .b301 ref Listnode 0 0
+    const (0) int 6 0
+ecom: 
+call string 10 2
+  name quoted fn(val: list of ref Listnode, quoteblocks: int): string 11 1
+  seq no type 10 2
+    tl list of ref Listnode 10 1
+      name argv list of ref Listnode 0 0
+    seq no type 10 1
+      const (0) int 6 0
+ecom to: 
+* string 8 0
+  + int 15 1
+    adr int 15 1
+      * Listnode 8 0
+        name .b301 ref Listnode 0 0
+    const (8) int 6 0
+generate desc for big
+ecom: 
+tl list of ref Listnode 10 1
+  name argv list of ref Listnode 0 0
+ecom to: 
+* list of ref Listnode 8 0
+  + int 15 0
+    name .b302 big 0 0
+    const (64) int 6 0
+ecom: 
+const (0) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b302 big 0 0
+    const (72) int 6 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+name .t303 list of ref Listnode 0 0
+ecom: 
+= ref Listnode 10 1
+  name .b301 ref Listnode 0 0
+  name nil ref Listnode 1 0
+ecom: 
+name nil ref Listnode 1 0
+ecom to: 
+name .b301 ref Listnode 0 0
+ecom: 
+= list of ref Listnode 10 1
+  name .t303 list of ref Listnode 0 0
+  name nil list of ref Listnode 1 0
+ecom: 
+name nil list of ref Listnode 1 0
+ecom to: 
+name .t303 list of ref Listnode 0 0
+ecom: 
+:: list of ref Listnode 10 2
+  ref ref Listnode 10 2
+    tuple Listnode 10 2
+      seq no type 10 2
+        name nil polymorphic type 1 0
+        seq no type 10 2
+          call string 10 2
+            name quoted fn(val: list of ref Listnode, quoteblocks: int): string 11 1
+            seq no type 10 2
+              tl list of ref Listnode 10 1
+                name argv list of ref Listnode 0 0
+              seq no type 10 1
+                const (1) int 6 0
+  name nil polymorphic type 1 0
+ecom to: 
+* list of ref Listnode 8 0
+  name .ret int 0 0
+eacom: 
+ref ref Listnode 10 2
+  tuple Listnode 10 2
+    seq no type 10 2
+      name nil polymorphic type 1 0
+      seq no type 10 2
+        call string 10 2
+          name quoted fn(val: list of ref Listnode, quoteblocks: int): string 11 1
+          seq no type 10 2
+            tl list of ref Listnode 10 1
+              name argv list of ref Listnode 0 0
+            seq no type 10 1
+              const (1) int 6 0
+generate desc for ref Listnode
+ecom: 
+ref ref Listnode 10 2
+  tuple Listnode 10 2
+    seq no type 10 2
+      name nil polymorphic type 1 0
+      seq no type 10 2
+        call string 10 2
+          name quoted fn(val: list of ref Listnode, quoteblocks: int): string 11 1
+          seq no type 10 2
+            tl list of ref Listnode 10 1
+              name argv list of ref Listnode 0 0
+            seq no type 10 1
+              const (1) int 6 0
+ecom to: 
+name .b301 ref Listnode 0 0
+generate desc for ref Listnode
+generate desc for Listnode
+ecom: 
+tuple Listnode 10 2
+  seq no type 10 2
+    name nil polymorphic type 1 0
+    seq no type 10 2
+      call string 10 2
+        name quoted fn(val: list of ref Listnode, quoteblocks: int): string 11 1
+        seq no type 10 2
+          tl list of ref Listnode 10 1
+            name argv list of ref Listnode 0 0
+          seq no type 10 1
+            const (1) int 6 0
+ecom to: 
+* Listnode 8 0
+  name .b301 ref Listnode 0 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* ref Node 8 0
+  + int 15 1
+    adr int 15 1
+      * Listnode 8 0
+        name .b301 ref Listnode 0 0
+    const (0) int 6 0
+ecom: 
+call string 10 2
+  name quoted fn(val: list of ref Listnode, quoteblocks: int): string 11 1
+  seq no type 10 2
+    tl list of ref Listnode 10 1
+      name argv list of ref Listnode 0 0
+    seq no type 10 1
+      const (1) int 6 0
+ecom to: 
+* string 8 0
+  + int 15 1
+    adr int 15 1
+      * Listnode 8 0
+        name .b301 ref Listnode 0 0
+    const (8) int 6 0
+generate desc for big
+ecom: 
+tl list of ref Listnode 10 1
+  name argv list of ref Listnode 0 0
+ecom to: 
+* list of ref Listnode 8 0
+  + int 15 0
+    name .b302 big 0 0
+    const (64) int 6 0
+ecom: 
+const (1) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b302 big 0 0
+    const (72) int 6 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+name .t303 list of ref Listnode 0 0
+ecom: 
+= ref Listnode 10 1
+  name .b301 ref Listnode 0 0
+  name nil ref Listnode 1 0
+ecom: 
+name nil ref Listnode 1 0
+ecom to: 
+name .b301 ref Listnode 0 0
+ecom: 
+= list of ref Listnode 10 1
+  name .t303 list of ref Listnode 0 0
+  name nil list of ref Listnode 1 0
+ecom: 
+name nil list of ref Listnode 1 0
+ecom to: 
+name .t303 list of ref Listnode 0 0
+ecom: 
+call list of ref Listnode 10 2
+  name sbuiltin_unquote fn(ctxt: ref Context, argv: list of ref Listnode): list of ref Listnode 11 1
+  seq no type 10 1
+    name ctxt ref Context 0 0
+    seq no type 10 1
+      name argv list of ref Listnode 0 0
+ecom to: 
+* list of ref Listnode 8 0
+  name .ret int 0 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b302 big 0 0
+    const (64) int 6 0
+ecom: 
+name argv list of ref Listnode 0 0
+ecom to: 
+* list of ref Listnode 8 0
+  + int 15 0
+    name .b302 big 0 0
+    const (72) int 6 0
+ecom: 
+call list of ref Listnode 10 2
+  name sbuiltin_builtin fn(ctxt: ref Context, args: list of ref Listnode): list of ref Listnode 11 1
+  seq no type 10 1
+    name ctxt ref Context 0 0
+    seq no type 10 1
+      name argv list of ref Listnode 0 0
+ecom to: 
+* list of ref Listnode 8 0
+  name .ret int 0 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b302 big 0 0
+    const (64) int 6 0
+ecom: 
+name argv list of ref Listnode 0 0
+ecom to: 
+* list of ref Listnode 8 0
+  + int 15 0
+    name .b302 big 0 0
+    const (72) int 6 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* polymorphic type 8 0
+  name .ret int 0 0
+fn: runsbuiltin
+64: argument ctxt ref Context ref 5
+72: argument <nil> Sh ref 0
+80: argument argv list of ref Listnode ref 6
+88: local .b301 ref Listnode ref 5
+96: local .b302 big ref 5
+104: local .t303 list of ref Listnode ref 1
+generate desc for runsbuiltin
+descmap offset 0
+descmap ctxt type ref Context offset 64 (d->offset=64 start=0) returns 64
+descmap type Sh offset 72 returns 72
+descmap argv type list of ref Listnode offset 80 (d->offset=80 start=0) returns 80
+descmap .b301 type ref Listnode offset 88 (d->offset=88 start=0) returns 88
+descmap .b302 type big offset 96 (d->offset=96 start=0) returns -1
+descmap .t303 type list of ref Listnode offset 104 (d->offset=104 start=0) returns 104
+fncom: runbuiltin 2 4c5868
+ecom: 
+= string 10 1
+  name status string 0 0
+  const  string 1 0
+ecom: 
+const  string 1 0
+ecom to: 
+name status string 0 0
+ecom: 
+= string 10 1
+  name name string 0 0
+  * string 10 1
+    + int 10 1
+      hd ref Listnode 10 1
+        name args list of ref Listnode 0 0
+      const word (8) int 6 0
+ecom: 
+* string 10 1
+  + int 10 1
+    hd ref Listnode 10 1
+      name args list of ref Listnode 0 0
+    const word (8) int 6 0
+ecom to: 
+name name string 0 0
+eacom: 
+* string 10 1
+  + int 10 1
+    hd ref Listnode 10 1
+      name args list of ref Listnode 0 0
+    const word (8) int 6 0
+generate desc for ref Listnode
+generate desc for ref Listnode
+	desc	$-1,8,"80"
+ecom: 
+hd ref Listnode 10 1
+  name args list of ref Listnode 0 0
+ecom to: 
+name .b304 ref Listnode 0 0
+ecom: 
+= ref Listnode 10 1
+  name .b304 ref Listnode 0 0
+  name nil ref Listnode 1 0
+ecom: 
+name nil ref Listnode 1 0
+ecom to: 
+name .b304 ref Listnode 0 0
+ecom: 
+= string 10 2
+  name status string 0 0
+  call string 10 2
+    name builtin_load fn(ctxt: ref Context, args: list of ref Listnode, nil: int): string 11 1
+    seq no type 10 1
+      name ctxt ref Context 0 0
+      seq no type 10 1
+        name args list of ref Listnode 0 0
+        seq no type 10 1
+          name lseq int 0 0
+ecom: 
+call string 10 2
+  name builtin_load fn(ctxt: ref Context, args: list of ref Listnode, nil: int): string 11 1
+  seq no type 10 1
+    name ctxt ref Context 0 0
+    seq no type 10 1
+      name args list of ref Listnode 0 0
+      seq no type 10 1
+        name lseq int 0 0
+ecom to: 
+name status string 0 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b305 big 0 0
+    const (64) int 6 0
+ecom: 
+name args list of ref Listnode 0 0
+ecom to: 
+* list of ref Listnode 8 0
+  + int 15 0
+    name .b305 big 0 0
+    const (72) int 6 0
+ecom: 
+name lseq int 0 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b305 big 0 0
+    const (80) int 6 0
+ecom: 
+= string 10 2
+  name status string 0 0
+  call string 10 2
+    name builtin_loaded fn(ctxt: ref Context, nil: list of ref Listnode, nil: int): string 11 1
+    seq no type 10 1
+      name ctxt ref Context 0 0
+      seq no type 10 1
+        name args list of ref Listnode 0 0
+        seq no type 10 1
+          name lseq int 0 0
+ecom: 
+call string 10 2
+  name builtin_loaded fn(ctxt: ref Context, nil: list of ref Listnode, nil: int): string 11 1
+  seq no type 10 1
+    name ctxt ref Context 0 0
+    seq no type 10 1
+      name args list of ref Listnode 0 0
+      seq no type 10 1
+        name lseq int 0 0
+ecom to: 
+name status string 0 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b305 big 0 0
+    const (64) int 6 0
+ecom: 
+name args list of ref Listnode 0 0
+ecom to: 
+* list of ref Listnode 8 0
+  + int 15 0
+    name .b305 big 0 0
+    const (72) int 6 0
+ecom: 
+name lseq int 0 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b305 big 0 0
+    const (80) int 6 0
+ecom: 
+= string 10 2
+  name status string 0 0
+  call string 10 2
+    name builtin_unload fn(ctxt: ref Context, args: list of ref Listnode, nil: int): string 11 1
+    seq no type 10 1
+      name ctxt ref Context 0 0
+      seq no type 10 1
+        name args list of ref Listnode 0 0
+        seq no type 10 1
+          name lseq int 0 0
+ecom: 
+call string 10 2
+  name builtin_unload fn(ctxt: ref Context, args: list of ref Listnode, nil: int): string 11 1
+  seq no type 10 1
+    name ctxt ref Context 0 0
+    seq no type 10 1
+      name args list of ref Listnode 0 0
+      seq no type 10 1
+        name lseq int 0 0
+ecom to: 
+name status string 0 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b305 big 0 0
+    const (64) int 6 0
+ecom: 
+name args list of ref Listnode 0 0
+ecom to: 
+* list of ref Listnode 8 0
+  + int 15 0
+    name .b305 big 0 0
+    const (72) int 6 0
+ecom: 
+name lseq int 0 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b305 big 0 0
+    const (80) int 6 0
+ecom: 
+= string 10 2
+  name status string 0 0
+  call string 10 2
+    name builtin_builtin fn(ctxt: ref Context, args: list of ref Listnode, last: int): string 11 1
+    seq no type 10 1
+      name ctxt ref Context 0 0
+      seq no type 10 1
+        name args list of ref Listnode 0 0
+        seq no type 10 1
+          name lseq int 0 0
+ecom: 
+call string 10 2
+  name builtin_builtin fn(ctxt: ref Context, args: list of ref Listnode, last: int): string 11 1
+  seq no type 10 1
+    name ctxt ref Context 0 0
+    seq no type 10 1
+      name args list of ref Listnode 0 0
+      seq no type 10 1
+        name lseq int 0 0
+ecom to: 
+name status string 0 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b305 big 0 0
+    const (64) int 6 0
+ecom: 
+name args list of ref Listnode 0 0
+ecom to: 
+* list of ref Listnode 8 0
+  + int 15 0
+    name .b305 big 0 0
+    const (72) int 6 0
+ecom: 
+name lseq int 0 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b305 big 0 0
+    const (80) int 6 0
+ecom: 
+= string 10 2
+  name status string 0 0
+  call string 10 2
+    name builtin_whatis fn(ctxt: ref Context, args: list of ref Listnode, nil: int): string 11 1
+    seq no type 10 1
+      name ctxt ref Context 0 0
+      seq no type 10 1
+        name args list of ref Listnode 0 0
+        seq no type 10 1
+          name lseq int 0 0
+ecom: 
+call string 10 2
+  name builtin_whatis fn(ctxt: ref Context, args: list of ref Listnode, nil: int): string 11 1
+  seq no type 10 1
+    name ctxt ref Context 0 0
+    seq no type 10 1
+      name args list of ref Listnode 0 0
+      seq no type 10 1
+        name lseq int 0 0
+ecom to: 
+name status string 0 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b305 big 0 0
+    const (64) int 6 0
+ecom: 
+name args list of ref Listnode 0 0
+ecom to: 
+* list of ref Listnode 8 0
+  + int 15 0
+    name .b305 big 0 0
+    const (72) int 6 0
+ecom: 
+name lseq int 0 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b305 big 0 0
+    const (80) int 6 0
+ecom: 
+= string 10 2
+  name status string 0 0
+  call string 10 2
+    name builtin_run fn(ctxt: ref Context, args: list of ref Listnode, nil: int): string 11 1
+    seq no type 10 1
+      name ctxt ref Context 0 0
+      seq no type 10 1
+        name args list of ref Listnode 0 0
+        seq no type 10 1
+          name lseq int 0 0
+ecom: 
+call string 10 2
+  name builtin_run fn(ctxt: ref Context, args: list of ref Listnode, nil: int): string 11 1
+  seq no type 10 1
+    name ctxt ref Context 0 0
+    seq no type 10 1
+      name args list of ref Listnode 0 0
+      seq no type 10 1
+        name lseq int 0 0
+ecom to: 
+name status string 0 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b305 big 0 0
+    const (64) int 6 0
+ecom: 
+name args list of ref Listnode 0 0
+ecom to: 
+* list of ref Listnode 8 0
+  + int 15 0
+    name .b305 big 0 0
+    const (72) int 6 0
+ecom: 
+name lseq int 0 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b305 big 0 0
+    const (80) int 6 0
+ecom: 
+= string 10 2
+  name status string 0 0
+  call string 10 2
+    name builtin_exit fn(nil: ref Context, nil: list of ref Listnode, nil: int): string 11 1
+    seq no type 10 1
+      name ctxt ref Context 0 0
+      seq no type 10 1
+        name args list of ref Listnode 0 0
+        seq no type 10 1
+          name lseq int 0 0
+ecom: 
+call string 10 2
+  name builtin_exit fn(nil: ref Context, nil: list of ref Listnode, nil: int): string 11 1
+  seq no type 10 1
+    name ctxt ref Context 0 0
+    seq no type 10 1
+      name args list of ref Listnode 0 0
+      seq no type 10 1
+        name lseq int 0 0
+ecom to: 
+name status string 0 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b305 big 0 0
+    const (64) int 6 0
+ecom: 
+name args list of ref Listnode 0 0
+ecom to: 
+* list of ref Listnode 8 0
+  + int 15 0
+    name .b305 big 0 0
+    const (72) int 6 0
+ecom: 
+name lseq int 0 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b305 big 0 0
+    const (80) int 6 0
+ecom: 
+call no type 10 2
+  name export fn(e: ref Localenv) 11 1
+  seq no type 10 1
+    * ref Localenv 10 1
+      + int 10 1
+        * ref Environment 8 0
+          name ctxt ref Context 0 0
+        const localenv (24) int 6 0
+generate desc for big
+ecom: 
+* ref Localenv 10 1
+  + int 10 1
+    * ref Environment 8 0
+      name ctxt ref Context 0 0
+    const localenv (24) int 6 0
+ecom to: 
+* ref Localenv 8 0
+  + int 15 0
+    name .b305 big 0 0
+    const (64) int 6 0
+eacom: 
+* ref Localenv 10 1
+  + int 10 1
+    * ref Environment 8 0
+      name ctxt ref Context 0 0
+    const localenv (24) int 6 0
+generate desc for ref Environment
+ecom: 
+* ref Environment 8 0
+  name ctxt ref Context 0 0
+ecom to: 
+name .b304 ref Environment 0 0
+ecom: 
+= ref Environment 10 1
+  name .b304 ref Environment 0 0
+  name nil ref Environment 1 0
+ecom: 
+name nil ref Environment 1 0
+ecom to: 
+name .b304 ref Environment 0 0
+ecom: 
+= string 10 2
+  name status string 0 0
+  call string 10 2
+    name builtin_subsh fn(ctxt: ref Context, args: list of ref Listnode, nil: int): string 11 1
+    seq no type 10 1
+      name ctxt ref Context 0 0
+      seq no type 10 1
+        name args list of ref Listnode 0 0
+        seq no type 10 1
+          name lseq int 0 0
+ecom: 
+call string 10 2
+  name builtin_subsh fn(ctxt: ref Context, args: list of ref Listnode, nil: int): string 11 1
+  seq no type 10 1
+    name ctxt ref Context 0 0
+    seq no type 10 1
+      name args list of ref Listnode 0 0
+      seq no type 10 1
+        name lseq int 0 0
+ecom to: 
+name status string 0 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b305 big 0 0
+    const (64) int 6 0
+ecom: 
+name args list of ref Listnode 0 0
+ecom to: 
+* list of ref Listnode 8 0
+  + int 15 0
+    name .b305 big 0 0
+    const (72) int 6 0
+ecom: 
+name lseq int 0 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b305 big 0 0
+    const (80) int 6 0
+ecom: 
+name status string 0 0
+ecom to: 
+* string 8 0
+  name .ret int 0 0
+fn: runbuiltin
+64: argument ctxt ref Context ref 9
+72: argument <nil> Sh ref 0
+80: argument args list of ref Listnode ref 9
+88: argument lseq int ref 8
+96: local status string ref 10
+104: local .b305 big ref 9
+112: local .b304 ref Listnode ref 2
+120: local name string ref 2
+generate desc for runbuiltin
+descmap offset 0
+descmap ctxt type ref Context offset 64 (d->offset=64 start=0) returns 64
+descmap type Sh offset 72 returns 72
+descmap args type list of ref Listnode offset 80 (d->offset=80 start=0) returns 80
+descmap lseq type int offset 88 (d->offset=88 start=0) returns -1
+descmap status type string offset 96 (d->offset=96 start=0) returns 96
+descmap .b305 type big offset 104 (d->offset=104 start=0) returns -1
+descmap .b304 type ref Listnode offset 112 (d->offset=112 start=0) returns 112
+descmap name type string offset 120 (d->offset=120 start=0) returns 120
+fncom: sbuiltin_loaded 2 6e8e50
+ecom: 
+= list of (string, Shellbuiltin) 10 1
+  name bl list of (string, Shellbuiltin) 0 0
+  * list of (string, Shellbuiltin) 10 1
+    + int 10 1
+      * ref Environment 8 0
+        name ctxt ref Context 0 0
+      const bmods (16) int 6 0
+ecom: 
+* list of (string, Shellbuiltin) 10 1
+  + int 10 1
+    * ref Environment 8 0
+      name ctxt ref Context 0 0
+    const bmods (16) int 6 0
+ecom to: 
+name bl list of (string, Shellbuiltin) 0 0
+eacom: 
+* list of (string, Shellbuiltin) 10 1
+  + int 10 1
+    * ref Environment 8 0
+      name ctxt ref Context 0 0
+    const bmods (16) int 6 0
+generate desc for ref Environment
+ecom: 
+* ref Environment 8 0
+  name ctxt ref Context 0 0
+ecom to: 
+name .b306 ref Environment 0 0
+ecom: 
+= ref Environment 10 1
+  name .b306 ref Environment 0 0
+  name nil ref Environment 1 0
+ecom: 
+name nil ref Environment 1 0
+ecom to: 
+name .b306 ref Environment 0 0
+ecom: 
+= (string, Shellbuiltin) 10 2
+  tuple (string, Shellbuiltin) 10 1
+    seq nothing 10 1
+      name name string 0 0
+      seq nothing 10 1
+        name nil polymorphic type 1 0
+  hd (string, Shellbuiltin) 10 1
+    name bl list of (string, Shellbuiltin) 0 0
+generate desc for (string, Shellbuiltin)
+descmap adt offset 0
+descmap offset 0
+descmap t0 type string offset 0 (d->offset=0 start=0) returns 0
+descmap t1 type Shellbuiltin offset 8 (d->offset=8 start=0) returns 8
+generate desc for (string, Shellbuiltin)
+	desc	$-1,16,"c0"
+ecom: 
+hd (string, Shellbuiltin) 10 1
+  name bl list of (string, Shellbuiltin) 0 0
+ecom to: 
+name .b307 (string, Shellbuiltin) 0 0
+generate desc for (string, Shellbuiltin)
+ecom: 
+= string 10 1
+  * string 0 0
+    adr int 13 1
+      name .b307 (string, Shellbuiltin) 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+* string 0 0
+  adr int 13 1
+    name .b307 (string, Shellbuiltin) 0 0
+ecom: 
+= Shellbuiltin 10 1
+  * Shellbuiltin 0 0
+    + int 13 1
+      adr int 13 1
+        name .b307 (string, Shellbuiltin) 0 0
+      const t1 (8) int 6 0
+  name nil Shellbuiltin 1 0
+ecom: 
+name nil Shellbuiltin 1 0
+ecom to: 
+* Shellbuiltin 0 0
+  + int 13 1
+    adr int 13 1
+      name .b307 (string, Shellbuiltin) 0 0
+    const t1 (8) int 6 0
+ecom: 
+= list of ref Listnode 10 1
+  name v list of ref Listnode 0 0
+  :: list of ref Listnode 10 1
+    ref ref Listnode 10 1
+      tuple Listnode 10 1
+        seq no type 10 1
+          name nil polymorphic type 1 0
+          seq no type 10 1
+            name name string 0 0
+    name v list of ref Listnode 0 0
+ecom: 
+:: list of ref Listnode 10 1
+  ref ref Listnode 10 1
+    tuple Listnode 10 1
+      seq no type 10 1
+        name nil polymorphic type 1 0
+        seq no type 10 1
+          name name string 0 0
+  name v list of ref Listnode 0 0
+ecom to: 
+name v list of ref Listnode 0 0
+eacom: 
+ref ref Listnode 10 1
+  tuple Listnode 10 1
+    seq no type 10 1
+      name nil polymorphic type 1 0
+      seq no type 10 1
+        name name string 0 0
+generate desc for ref Listnode
+generate desc for ref Listnode
+	desc	$-1,8,"80"
+ecom: 
+ref ref Listnode 10 1
+  tuple Listnode 10 1
+    seq no type 10 1
+      name nil polymorphic type 1 0
+      seq no type 10 1
+        name name string 0 0
+ecom to: 
+name .b306 ref Listnode 0 0
+generate desc for ref Listnode
+generate desc for Listnode
+ecom: 
+tuple Listnode 10 1
+  seq no type 10 1
+    name nil polymorphic type 1 0
+    seq no type 10 1
+      name name string 0 0
+ecom to: 
+* Listnode 8 0
+  name .b306 ref Listnode 0 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* ref Node 8 0
+  + int 15 1
+    adr int 15 1
+      * Listnode 8 0
+        name .b306 ref Listnode 0 0
+    const (0) int 6 0
+ecom: 
+name name string 0 0
+ecom to: 
+* string 8 0
+  + int 15 1
+    adr int 15 1
+      * Listnode 8 0
+        name .b306 ref Listnode 0 0
+    const (8) int 6 0
+ecom: 
+= ref Listnode 10 1
+  name .b306 ref Listnode 0 0
+  name nil ref Listnode 1 0
+ecom: 
+name nil ref Listnode 1 0
+ecom to: 
+name .b306 ref Listnode 0 0
+ecom: 
+= string 10 1
+  name name string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name name string 0 0
+ecom: 
+= list of (string, Shellbuiltin) 10 1
+  name bl list of (string, Shellbuiltin) 0 0
+  tl list of (string, Shellbuiltin) 10 1
+    name bl list of (string, Shellbuiltin) 0 0
+ecom: 
+tl list of (string, Shellbuiltin) 10 1
+  name bl list of (string, Shellbuiltin) 0 0
+ecom to: 
+name bl list of (string, Shellbuiltin) 0 0
+ecom: 
+name v list of ref Listnode 0 0
+ecom to: 
+* list of ref Listnode 8 0
+  name .ret int 0 0
+fn: sbuiltin_loaded
+64: argument ctxt ref Context ref 1
+72: argument <nil> list of ref Listnode ref 0
+80: local bl list of (string, Shellbuiltin) ref 5
+88: local .b306 ref Environment ref 3
+96: local v list of ref Listnode ref 3
+104: local name string ref 2
+112: local .b307 (string, Shellbuiltin) ref 1
+generate desc for sbuiltin_loaded
+descmap offset 0
+descmap ctxt type ref Context offset 64 (d->offset=64 start=0) returns 64
+descmap type list of ref Listnode offset 72 returns 72
+descmap bl type list of (string, Shellbuiltin) offset 80 (d->offset=80 start=0) returns 80
+descmap .b306 type ref Environment offset 88 (d->offset=88 start=0) returns 88
+descmap v type list of ref Listnode offset 96 (d->offset=96 start=0) returns 96
+descmap name type string offset 104 (d->offset=104 start=0) returns 104
+descmap adt offset 112
+descmap offset 112
+descmap t0 type string offset 112 (d->offset=0 start=112) returns 112
+descmap t1 type Shellbuiltin offset 120 (d->offset=8 start=112) returns 120
+descmap .b307 type (string, Shellbuiltin) offset 112 (d->offset=112 start=0) returns 120
+fncom: sbuiltin_quote 3 6e8f10
+fncom: sbuiltin_builtin 2 6e8fd0
+eacom: 
+tl list of ref Listnode 10 1
+  name args list of ref Listnode 0 0
+ecom: 
+tl list of ref Listnode 10 1
+  name args list of ref Listnode 0 0
+ecom to: 
+name .t308 list of ref Listnode 0 0
+ecom: 
+= list of ref Listnode 10 1
+  name .t308 list of ref Listnode 0 0
+  name nil list of ref Listnode 1 0
+ecom: 
+name nil list of ref Listnode 1 0
+ecom to: 
+name .t308 list of ref Listnode 0 0
+ecom: 
+call no type 10 2
+  name builtinusage fn(ctxt: ref Context, s: string) 11 1
+  seq no type 10 1
+    name ctxt ref Context 0 0
+    seq no type 10 1
+      const builtin command [args ...] string 1 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b309 big 0 0
+    const (64) int 6 0
+ecom: 
+const builtin command [args ...] string 1 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b309 big 0 0
+    const (72) int 6 0
+ecom: 
+= string 10 1
+  name name string 0 0
+  * string 10 1
+    + int 10 1
+      hd ref Listnode 10 1
+        tl list of ref Listnode 10 1
+          name args list of ref Listnode 0 0
+      const word (8) int 6 0
+ecom: 
+* string 10 1
+  + int 10 1
+    hd ref Listnode 10 1
+      tl list of ref Listnode 10 1
+        name args list of ref Listnode 0 0
+    const word (8) int 6 0
+ecom to: 
+name name string 0 0
+eacom: 
+* string 10 1
+  + int 10 1
+    hd ref Listnode 10 1
+      tl list of ref Listnode 10 1
+        name args list of ref Listnode 0 0
+    const word (8) int 6 0
+generate desc for ref Listnode
+generate desc for ref Listnode
+	desc	$-1,8,"80"
+ecom: 
+hd ref Listnode 10 1
+  tl list of ref Listnode 10 1
+    name args list of ref Listnode 0 0
+ecom to: 
+name .b310 ref Listnode 0 0
+eacom: 
+tl list of ref Listnode 10 1
+  name args list of ref Listnode 0 0
+ecom: 
+tl list of ref Listnode 10 1
+  name args list of ref Listnode 0 0
+ecom to: 
+name .t308 list of ref Listnode 0 0
+ecom: 
+= list of ref Listnode 10 1
+  name .t308 list of ref Listnode 0 0
+  name nil list of ref Listnode 1 0
+ecom: 
+name nil list of ref Listnode 1 0
+ecom to: 
+name .t308 list of ref Listnode 0 0
+ecom: 
+= ref Listnode 10 1
+  name .b310 ref Listnode 0 0
+  name nil ref Listnode 1 0
+ecom: 
+name nil ref Listnode 1 0
+ecom to: 
+name .b310 ref Listnode 0 0
+ecom: 
+= (int, list of Shellbuiltin) 10 2
+  tuple (int, list of Shellbuiltin) 10 1
+    seq nothing 10 1
+      name nil polymorphic type 1 0
+      seq nothing 10 1
+        name mods list of Shellbuiltin 0 0
+  call (int, list of Shellbuiltin) 10 2
+    name findbuiltin fn(b: ref Builtins, name: string): (int, list of Shellbuiltin) 11 1
+    seq no type 10 2
+      * ref Builtins 10 1
+        * ref Environment 8 0
+          name ctxt ref Context 0 0
+      seq no type 10 1
+        name name string 0 0
+generate desc for (int, list of Shellbuiltin)
+ecom: 
+call (int, list of Shellbuiltin) 10 2
+  name findbuiltin fn(b: ref Builtins, name: string): (int, list of Shellbuiltin) 11 1
+  seq no type 10 2
+    * ref Builtins 10 1
+      * ref Environment 8 0
+        name ctxt ref Context 0 0
+    seq no type 10 1
+      name name string 0 0
+ecom to: 
+name .b311 (int, list of Shellbuiltin) 0 0
+generate desc for big
+ecom: 
+* ref Builtins 10 1
+  * ref Environment 8 0
+    name ctxt ref Context 0 0
+ecom to: 
+* ref Builtins 8 0
+  + int 15 0
+    name .b309 big 0 0
+    const (64) int 6 0
+eacom: 
+* ref Builtins 10 1
+  * ref Environment 8 0
+    name ctxt ref Context 0 0
+generate desc for ref Environment
+ecom: 
+* ref Environment 8 0
+  name ctxt ref Context 0 0
+ecom to: 
+name .b310 ref Environment 0 0
+ecom: 
+= ref Environment 10 1
+  name .b310 ref Environment 0 0
+  name nil ref Environment 1 0
+ecom: 
+name nil ref Environment 1 0
+ecom to: 
+name .b310 ref Environment 0 0
+ecom: 
+name name string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b309 big 0 0
+    const (72) int 6 0
+ecom: 
+= list of Shellbuiltin 10 1
+  * list of Shellbuiltin 0 0
+    + int 13 1
+      adr int 13 1
+        name .b311 (int, list of Shellbuiltin) 0 0
+      const t1 (8) int 6 0
+  name nil list of Shellbuiltin 1 0
+ecom: 
+name nil list of Shellbuiltin 1 0
+ecom to: 
+* list of Shellbuiltin 0 0
+  + int 13 1
+    adr int 13 1
+      name .b311 (int, list of Shellbuiltin) 0 0
+    const t1 (8) int 6 0
+eacom: 
+hd Shellbuiltin 10 1
+  name mods list of Shellbuiltin 0 0
+ecom: 
+hd Shellbuiltin 10 1
+  name mods list of Shellbuiltin 0 0
+ecom to: 
+name .t308 Shellbuiltin 0 0
+ecom: 
+= Shellbuiltin 10 1
+  name .t308 Shellbuiltin 0 0
+  name nil Shellbuiltin 1 0
+ecom: 
+name nil Shellbuiltin 1 0
+ecom to: 
+name .t308 Shellbuiltin 0 0
+ecom: 
+call list of ref Listnode 10 2
+  -> fn(c: ref Context, sh: Sh, cmd: list of ref Listnode): list of ref Listnode 12 2
+    hd Shellbuiltin 10 1
+      name mods list of Shellbuiltin 0 0
+    name runsbuiltin nothing 11 1
+  seq no type 10 1
+    name ctxt ref Context 0 0
+    seq no type 10 1
+      name myself Sh 1 0
+      seq no type 10 1
+        tl list of ref Listnode 10 1
+          name args list of ref Listnode 0 0
+ecom to: 
+* list of ref Listnode 8 0
+  name .ret int 0 0
+generate desc for big
+eacom: 
+hd Shellbuiltin 10 1
+  name mods list of Shellbuiltin 0 0
+ecom: 
+hd Shellbuiltin 10 1
+  name mods list of Shellbuiltin 0 0
+ecom to: 
+name .t308 Shellbuiltin 0 0
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b309 big 0 0
+    const (64) int 6 0
+ecom: 
+name myself Sh 1 0
+ecom to: 
+* Sh 8 0
+  + int 15 0
+    name .b309 big 0 0
+    const (72) int 6 0
+ecom: 
+tl list of ref Listnode 10 1
+  name args list of ref Listnode 0 0
+ecom to: 
+* list of ref Listnode 8 0
+  + int 15 0
+    name .b309 big 0 0
+    const (80) int 6 0
+ecom: 
+= Shellbuiltin 10 1
+  name .t308 Shellbuiltin 0 0
+  name nil Shellbuiltin 1 0
+ecom: 
+name nil Shellbuiltin 1 0
+ecom to: 
+name .t308 Shellbuiltin 0 0
+ecom: 
+= list of Shellbuiltin 10 1
+  name mods list of Shellbuiltin 0 0
+  tl list of Shellbuiltin 10 1
+    name mods list of Shellbuiltin 0 0
+ecom: 
+tl list of Shellbuiltin 10 1
+  name mods list of Shellbuiltin 0 0
+ecom to: 
+name mods list of Shellbuiltin 0 0
+ecom: 
+call no type 10 2
+  name fail fn(ctxt: self ref Context, ename: string, err: string) 11 1
+  seq nothing 10 2
+    name ctxt ref Context 0 0
+    seq no type 10 2
+      const builtin not found string 1 0
+      seq no type 10 2
+        call string 10 2
+          -> fn(s: string, nil: string, *): string 12 1
+            name sys Sys 1 0
+            name sprint nothing 11 1
+          seq no type 10 1
+            const sh: builtin %s not found string 1 0
+            seq no type 10 1
+              name name string 0 0
+generate desc for big
+ecom: 
+call string 10 2
+  -> fn(s: string, nil: string, *): string 12 1
+    name sys Sys 1 0
+    name sprint nothing 11 1
+  seq no type 10 1
+    const sh: builtin %s not found string 1 0
+    seq no type 10 1
+      name name string 0 0
+ecom to: 
+name .t308 string 0 0
+generate desc for Sys->sprint
+descmap offset 0
+descmap s type string offset 64 (d->offset=64 start=0) returns 64
+descmap type string offset 72 returns 72
+generate desc for big
+ecom: 
+const sh: builtin %s not found string 1 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b312 big 0 0
+    const (64) int 6 0
+ecom: 
+name name string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b312 big 0 0
+    const (72) int 6 0
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b309 big 0 0
+    const (64) int 6 0
+ecom: 
+const builtin not found string 1 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b309 big 0 0
+    const (72) int 6 0
+ecom: 
+name .t308 string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b309 big 0 0
+    const (80) int 6 0
+ecom: 
+= string 10 1
+  name .t308 string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name .t308 string 0 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* polymorphic type 8 0
+  name .ret int 0 0
+fn: sbuiltin_builtin
+64: argument ctxt ref Context ref 4
+72: argument args list of ref Listnode ref 4
+80: local mods list of Shellbuiltin ref 6
+88: local .b309 big ref 4
+96: local name string ref 3
+104: local .b310 ref Listnode ref 2
+112: local .b312 big ref 1
+120: local .t308 list of ref Listnode ref 1
+128: local .b311 (int, list of Shellbuiltin) ref 1
+generate desc for sbuiltin_builtin
+descmap offset 0
+descmap ctxt type ref Context offset 64 (d->offset=64 start=0) returns 64
+descmap args type list of ref Listnode offset 72 (d->offset=72 start=0) returns 72
+descmap mods type list of Shellbuiltin offset 80 (d->offset=80 start=0) returns 80
+descmap .b309 type big offset 88 (d->offset=88 start=0) returns -1
+descmap name type string offset 96 (d->offset=96 start=0) returns 96
+descmap .b310 type ref Listnode offset 104 (d->offset=104 start=0) returns 104
+descmap .b312 type big offset 112 (d->offset=112 start=0) returns -1
+descmap .t308 type list of ref Listnode offset 120 (d->offset=120 start=0) returns 120
+descmap adt offset 128
+descmap offset 128
+descmap t0 type int offset 128 (d->offset=0 start=128) returns -1
+descmap t1 type list of Shellbuiltin offset 136 (d->offset=8 start=128) returns 136
+descmap .b311 type (int, list of Shellbuiltin) offset 128 (d->offset=128 start=0) returns 136
+fncom: sbuiltin_unquote 2 6e9090
+ecom: 
+= list of ref Listnode 10 1
+  name argv list of ref Listnode 0 0
+  tl list of ref Listnode 10 1
+    name argv list of ref Listnode 0 0
+ecom: 
+tl list of ref Listnode 10 1
+  name argv list of ref Listnode 0 0
+ecom to: 
+name argv list of ref Listnode 0 0
+eacom: 
+tl list of ref Listnode 10 1
+  name argv list of ref Listnode 0 0
+ecom: 
+tl list of ref Listnode 10 1
+  name argv list of ref Listnode 0 0
+ecom to: 
+name .t313 list of ref Listnode 0 0
+ecom: 
+= list of ref Listnode 10 1
+  name .t313 list of ref Listnode 0 0
+  name nil list of ref Listnode 1 0
+ecom: 
+name nil list of ref Listnode 1 0
+ecom to: 
+name .t313 list of ref Listnode 0 0
+ecom: 
+call no type 10 2
+  name builtinusage fn(ctxt: ref Context, s: string) 11 1
+  seq no type 10 1
+    name ctxt ref Context 0 0
+    seq no type 10 1
+      const unquote arg string 1 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b314 big 0 0
+    const (64) int 6 0
+ecom: 
+const unquote arg string 1 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b314 big 0 0
+    const (72) int 6 0
+ecom: 
+= string 10 1
+  name arg string 0 0
+  * string 10 1
+    + int 10 1
+      hd ref Listnode 10 1
+        name argv list of ref Listnode 0 0
+      const word (8) int 6 0
+ecom: 
+* string 10 1
+  + int 10 1
+    hd ref Listnode 10 1
+      name argv list of ref Listnode 0 0
+    const word (8) int 6 0
+ecom to: 
+name arg string 0 0
+eacom: 
+* string 10 1
+  + int 10 1
+    hd ref Listnode 10 1
+      name argv list of ref Listnode 0 0
+    const word (8) int 6 0
+generate desc for ref Listnode
+generate desc for ref Listnode
+	desc	$-1,8,"80"
+ecom: 
+hd ref Listnode 10 1
+  name argv list of ref Listnode 0 0
+ecom to: 
+name .b315 ref Listnode 0 0
+ecom: 
+= ref Listnode 10 1
+  name .b315 ref Listnode 0 0
+  name nil ref Listnode 1 0
+ecom: 
+name nil ref Listnode 1 0
+ecom to: 
+name .b315 ref Listnode 0 0
+eacom: 
+* ref Node 10 1
+  hd ref Listnode 10 1
+    name argv list of ref Listnode 0 0
+generate desc for ref Listnode
+ecom: 
+hd ref Listnode 10 1
+  name argv list of ref Listnode 0 0
+ecom to: 
+name .b315 ref Listnode 0 0
+ecom: 
+= ref Listnode 10 1
+  name .b315 ref Listnode 0 0
+  name nil ref Listnode 1 0
+ecom: 
+name nil ref Listnode 1 0
+ecom to: 
+name .b315 ref Listnode 0 0
+ecom: 
+= string 10 2
+  name arg string 0 0
+  call string 10 2
+    name cmd2string fn(n: ref Node): string 11 1
+    seq no type 10 1
+      * ref Node 10 1
+        hd ref Listnode 10 1
+          name argv list of ref Listnode 0 0
+ecom: 
+call string 10 2
+  name cmd2string fn(n: ref Node): string 11 1
+  seq no type 10 1
+    * ref Node 10 1
+      hd ref Listnode 10 1
+        name argv list of ref Listnode 0 0
+ecom to: 
+name arg string 0 0
+generate desc for big
+ecom: 
+* ref Node 10 1
+  hd ref Listnode 10 1
+    name argv list of ref Listnode 0 0
+ecom to: 
+* ref Node 8 0
+  + int 15 0
+    name .b314 big 0 0
+    const (64) int 6 0
+eacom: 
+* ref Node 10 1
+  hd ref Listnode 10 1
+    name argv list of ref Listnode 0 0
+generate desc for ref Listnode
+ecom: 
+hd ref Listnode 10 1
+  name argv list of ref Listnode 0 0
+ecom to: 
+name .b315 ref Listnode 0 0
+ecom: 
+= ref Listnode 10 1
+  name .b315 ref Listnode 0 0
+  name nil ref Listnode 1 0
+ecom: 
+name nil ref Listnode 1 0
+ecom to: 
+name .b315 ref Listnode 0 0
+ecom: 
+call list of ref Listnode 10 2
+  name stringlist2list fn(sl: list of string): list of ref Listnode 11 1
+  seq no type 10 2
+    call list of string 10 2
+      -> fn(args: string): list of string 12 1
+        name str String 1 0
+        name unquoted nothing 11 1
+      seq no type 10 1
+        name arg string 0 0
+ecom to: 
+* list of ref Listnode 8 0
+  name .ret int 0 0
+generate desc for big
+ecom: 
+call list of string 10 2
+  -> fn(args: string): list of string 12 1
+    name str String 1 0
+    name unquoted nothing 11 1
+  seq no type 10 1
+    name arg string 0 0
+ecom to: 
+name .t313 list of string 0 0
+generate desc for big
+ecom: 
+name arg string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b316 big 0 0
+    const (64) int 6 0
+ecom: 
+name .t313 list of string 0 0
+ecom to: 
+* list of string 8 0
+  + int 15 0
+    name .b314 big 0 0
+    const (64) int 6 0
+ecom: 
+= list of string 10 1
+  name .t313 list of string 0 0
+  name nil list of string 1 0
+ecom: 
+name nil list of string 1 0
+ecom to: 
+name .t313 list of string 0 0
+fn: sbuiltin_unquote
+64: argument ctxt ref Context ref 1
+72: argument argv list of ref Listnode ref 7
+80: local arg string ref 4
+88: local .b314 big ref 3
+96: local .b315 ref Listnode ref 3
+104: local .b316 big ref 1
+112: local .t313 list of ref Listnode ref 1
+generate desc for sbuiltin_unquote
+descmap offset 0
+descmap ctxt type ref Context offset 64 (d->offset=64 start=0) returns 64
+descmap argv type list of ref Listnode offset 72 (d->offset=72 start=0) returns 72
+descmap arg type string offset 80 (d->offset=80 start=0) returns 80
+descmap .b314 type big offset 88 (d->offset=88 start=0) returns -1
+descmap .b315 type ref Listnode offset 96 (d->offset=96 start=0) returns 96
+descmap .b316 type big offset 104 (d->offset=104 start=0) returns -1
+descmap .t313 type list of ref Listnode offset 112 (d->offset=112 start=0) returns 112
+fncom: getself 2 4c6dc8
+ecom: 
+name myselfbuiltin Shellbuiltin 1 0
+ecom to: 
+* Shellbuiltin 8 0
+  name .ret int 0 0
+fn: getself
+generate desc for getself
+descmap offset 0
+fncom: builtinusage 9 6e9150
+ecom: 
+call no type 10 2
+  name fail fn(ctxt: self ref Context, ename: string, err: string) 11 1
+  seq nothing 10 1
+    name ctxt ref Context 0 0
+    seq no type 10 1
+      const usage string 1 0
+      seq no type 10 1
+        + string 10 1
+          const sh: usage:  string 1 0
+          name s string 0 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b317 big 0 0
+    const (64) int 6 0
+ecom: 
+const usage string 1 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b317 big 0 0
+    const (72) int 6 0
+ecom: 
++ string 10 1
+  const sh: usage:  string 1 0
+  name s string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b317 big 0 0
+    const (80) int 6 0
+fn: builtinusage
+64: argument ctxt ref Context ref 1
+72: argument s string ref 1
+80: local .b317 big ref 1
+generate desc for builtinusage
+descmap offset 0
+descmap ctxt type ref Context offset 64 (d->offset=64 start=0) returns 64
+descmap s type string offset 72 (d->offset=72 start=0) returns 72
+descmap .b317 type big offset 80 (d->offset=80 start=0) returns -1
+fncom: builtin_exit 2 6e9210
+fn: builtin_exit
+64: argument <nil> ref Context ref 0
+72: argument <nil> list of ref Listnode ref 0
+80: argument <nil> int ref 0
+generate desc for builtin_exit
+descmap offset 0
+descmap type ref Context offset 64 returns 64
+descmap type list of ref Listnode offset 72 returns 72
+descmap type int offset 80 returns -1
+fncom: builtin_subsh 2 6e92d0
+eacom: 
+tl list of ref Listnode 10 1
+  name args list of ref Listnode 0 0
+ecom: 
+tl list of ref Listnode 10 1
+  name args list of ref Listnode 0 0
+ecom to: 
+name .t318 list of ref Listnode 0 0
+ecom: 
+= list of ref Listnode 10 1
+  name .t318 list of ref Listnode 0 0
+  name nil list of ref Listnode 1 0
+ecom: 
+name nil list of ref Listnode 1 0
+ecom to: 
+name .t318 list of ref Listnode 0 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* polymorphic type 8 0
+  name .ret int 0 0
+ecom: 
+= chan of (int, ref Expropagate) 10 1
+  name startchan chan of (int, ref Expropagate) 0 0
+  chan chan of (int, ref Expropagate) 10 1
+    const (0) int 6 0
+ecom: 
+chan chan of (int, ref Expropagate) 10 1
+  const (0) int 6 0
+ecom to: 
+name startchan chan of (int, ref Expropagate) 0 0
+generate desc for (int, ref Expropagate)
+descmap adt offset 0
+descmap offset 0
+descmap t0 type int offset 0 (d->offset=0 start=0) returns -1
+descmap t1 type ref Expropagate offset 8 (d->offset=8 start=0) returns 8
+generate desc for (int, ref Expropagate)
+	desc	$-1,16,"40"
+ecom: 
+spawn nothing 10 2
+  call no type 10 2
+    name runasync fn(ctxt: ref Context, copyenv: int, argv: list of ref Listnode, redirs: ref Redirlist, startchan: chan of (int, ref Expropagate)) 11 1
+    seq no type 10 2
+      name ctxt ref Context 0 0
+      seq no type 10 2
+        const (0) int 6 0
+        seq no type 10 2
+          tl list of ref Listnode 10 1
+            name args list of ref Listnode 0 0
+          seq no type 10 2
+            ref ref Redirlist 10 1
+              name Redirlist Redirlist 10 1
+            seq no type 10 1
+              name startchan chan of (int, ref Expropagate) 0 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b319 big 0 0
+    const (64) int 6 0
+ecom: 
+const (0) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b319 big 0 0
+    const (72) int 6 0
+ecom: 
+tl list of ref Listnode 10 1
+  name args list of ref Listnode 0 0
+ecom to: 
+* list of ref Listnode 8 0
+  + int 15 0
+    name .b319 big 0 0
+    const (80) int 6 0
+ecom: 
+ref ref Redirlist 10 1
+  name Redirlist Redirlist 10 1
+ecom to: 
+* ref Redirlist 8 0
+  + int 15 0
+    name .b319 big 0 0
+    const (88) int 6 0
+generate desc for Redirlist
+ecom: 
+name startchan chan of (int, ref Expropagate) 0 0
+ecom to: 
+* chan of (int, ref Expropagate) 8 0
+  + int 15 0
+    name .b319 big 0 0
+    const (96) int 6 0
+ecom: 
+= (int, ref Expropagate) 10 2
+  tuple (int, ref Expropagate) 10 1
+    seq nothing 10 1
+      name exepid int 0 0
+      seq nothing 10 1
+        name exprop ref Expropagate 0 0
+  <- (int, ref Expropagate) 10 1
+    name startchan chan of (int, ref Expropagate) 0 0
+ecom: 
+<- (int, ref Expropagate) 10 1
+  name startchan chan of (int, ref Expropagate) 0 0
+ecom to: 
+name exepid (int, ref Expropagate) 0 0
+ecom: 
+= string 10 2
+  name status string 0 0
+  call string 10 2
+    name waitfor fn(ctxt: ref Context, pids: list of int): string 11 1
+    seq no type 10 1
+      name ctxt ref Context 0 0
+      seq no type 10 1
+        :: list of int 10 1
+          name exepid int 0 0
+          name nil polymorphic type 1 0
+ecom: 
+call string 10 2
+  name waitfor fn(ctxt: ref Context, pids: list of int): string 11 1
+  seq no type 10 1
+    name ctxt ref Context 0 0
+    seq no type 10 1
+      :: list of int 10 1
+        name exepid int 0 0
+        name nil polymorphic type 1 0
+ecom to: 
+name status string 0 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b319 big 0 0
+    const (64) int 6 0
+ecom: 
+:: list of int 10 1
+  name exepid int 0 0
+  name nil polymorphic type 1 0
+ecom to: 
+* list of int 8 0
+  + int 15 0
+    name .b319 big 0 0
+    const (72) int 6 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+name .t318 list of int 0 0
+ecom: 
+= list of int 10 1
+  name .t318 list of int 0 0
+  name nil list of int 1 0
+ecom: 
+name nil list of int 1 0
+ecom to: 
+name .t318 list of int 0 0
+ecom: 
+raise nothing 10 1
+  * string 8 0
+    name exprop ref Expropagate 0 0
+ecom: 
+name status string 0 0
+ecom to: 
+* string 8 0
+  name .ret int 0 0
+fn: builtin_subsh
+64: argument ctxt ref Context ref 2
+72: argument args list of ref Listnode ref 2
+80: argument <nil> int ref 0
+88: local exepid int ref 2
+96: local exprop ref Expropagate ref 3
+104: local startchan chan of (int, ref Expropagate) ref 3
+112: local .b319 big ref 2
+120: local status string ref 2
+128: local .t318 list of ref Listnode ref 1
+generate desc for builtin_subsh
+descmap offset 0
+descmap ctxt type ref Context offset 64 (d->offset=64 start=0) returns 64
+descmap args type list of ref Listnode offset 72 (d->offset=72 start=0) returns 72
+descmap type int offset 80 returns -1
+descmap exepid type int offset 88 (d->offset=88 start=0) returns -1
+descmap exprop type ref Expropagate offset 96 (d->offset=96 start=0) returns 96
+descmap startchan type chan of (int, ref Expropagate) offset 104 (d->offset=104 start=0) returns 104
+descmap .b319 type big offset 112 (d->offset=112 start=0) returns -1
+descmap status type string offset 120 (d->offset=120 start=0) returns 120
+descmap .t318 type list of ref Listnode offset 128 (d->offset=128 start=0) returns 128
+fncom: builtin_loaded 2 6e9390
+ecom: 
+= ref Builtins 10 1
+  name b ref Builtins 0 0
+  * ref Builtins 10 1
+    + int 10 1
+      * ref Environment 8 0
+        name ctxt ref Context 0 0
+      const builtins (8) int 6 0
+ecom: 
+* ref Builtins 10 1
+  + int 10 1
+    * ref Environment 8 0
+      name ctxt ref Context 0 0
+    const builtins (8) int 6 0
+ecom to: 
+name b ref Builtins 0 0
+eacom: 
+* ref Builtins 10 1
+  + int 10 1
+    * ref Environment 8 0
+      name ctxt ref Context 0 0
+    const builtins (8) int 6 0
+generate desc for ref Environment
+ecom: 
+* ref Environment 8 0
+  name ctxt ref Context 0 0
+ecom to: 
+name .b320 ref Environment 0 0
+ecom: 
+= ref Environment 10 1
+  name .b320 ref Environment 0 0
+  name nil ref Environment 1 0
+ecom: 
+name nil ref Environment 1 0
+ecom to: 
+name .b320 ref Environment 0 0
+ecom: 
+= int 10 1
+  name i int 0 0
+  const (0) int 6 0
+ecom: 
+const (0) int 6 0
+ecom to: 
+name i int 0 0
+ecom: 
+= (string, list of Shellbuiltin) 10 2
+  tuple (string, list of Shellbuiltin) 10 1
+    seq nothing 10 1
+      name name string 0 0
+      seq nothing 10 1
+        name bmods list of Shellbuiltin 0 0
+  * (string, list of Shellbuiltin) 10 1
+    indx big 10 1
+      * array of (string, list of Shellbuiltin) 8 0
+        name b ref Builtins 0 0
+      name i int 0 0
+ecom: 
+* (string, list of Shellbuiltin) 10 1
+  indx big 10 1
+    * array of (string, list of Shellbuiltin) 8 0
+      name b ref Builtins 0 0
+    name i int 0 0
+ecom to: 
+name name (string, list of Shellbuiltin) 0 0
+eacom: 
+* (string, list of Shellbuiltin) 10 1
+  indx big 10 1
+    * array of (string, list of Shellbuiltin) 8 0
+      name b ref Builtins 0 0
+    name i int 0 0
+generate desc for big
+ecom: 
+indx big 10 1
+  * array of (string, list of Shellbuiltin) 8 0
+    name b ref Builtins 0 0
+  name i int 0 0
+ecom to: 
+name .b321 big 0 0
+generate desc for (string, list of Shellbuiltin)
+ecom: 
+used int 10 2
+  call int 10 2
+    -> fn(s: string, nil: string, nil: string, *): int 12 1
+      name sys Sys 1 0
+      name print nothing 11 1
+    seq no type 10 2
+      const %s	%s
+ string 1 0
+      seq no type 10 2
+        name name string 0 0
+        seq no type 10 2
+          call string 10 2
+            name modname fn(ctxt: ref Context, mod: Shellbuiltin): string 11 1
+            seq no type 10 1
+              name ctxt ref Context 0 0
+              seq no type 10 1
+                hd Shellbuiltin 10 1
+                  name bmods list of Shellbuiltin 0 0
+ecom: 
+call int 10 2
+  -> fn(s: string, nil: string, nil: string, *): int 12 1
+    name sys Sys 1 0
+    name print nothing 11 1
+  seq no type 10 2
+    const %s	%s
+ string 1 0
+    seq no type 10 2
+      name name string 0 0
+      seq no type 10 2
+        call string 10 2
+          name modname fn(ctxt: ref Context, mod: Shellbuiltin): string 11 1
+          seq no type 10 1
+            name ctxt ref Context 0 0
+            seq no type 10 1
+              hd Shellbuiltin 10 1
+                name bmods list of Shellbuiltin 0 0
+ecom to: 
+name .t322 int 0 0
+generate desc for Sys->print
+descmap offset 0
+descmap s type string offset 64 (d->offset=64 start=0) returns 64
+descmap type string offset 72 returns 72
+descmap type string offset 80 returns 80
+generate desc for big
+ecom: 
+call string 10 2
+  name modname fn(ctxt: ref Context, mod: Shellbuiltin): string 11 1
+  seq no type 10 1
+    name ctxt ref Context 0 0
+    seq no type 10 1
+      hd Shellbuiltin 10 1
+        name bmods list of Shellbuiltin 0 0
+ecom to: 
+name .t323 string 0 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b324 big 0 0
+    const (64) int 6 0
+ecom: 
+hd Shellbuiltin 10 1
+  name bmods list of Shellbuiltin 0 0
+ecom to: 
+* Shellbuiltin 8 0
+  + int 15 0
+    name .b324 big 0 0
+    const (72) int 6 0
+ecom: 
+const %s	%s
+ string 1 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b321 big 0 0
+    const (64) int 6 0
+ecom: 
+name name string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b321 big 0 0
+    const (72) int 6 0
+ecom: 
+name .t323 string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b321 big 0 0
+    const (80) int 6 0
+ecom: 
+= string 10 1
+  name .t323 string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name .t323 string 0 0
+ecom: 
+= string 10 1
+  * string 0 0
+    adr int 13 1
+      name name (string, list of Shellbuiltin) 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+* string 0 0
+  adr int 13 1
+    name name (string, list of Shellbuiltin) 0 0
+ecom: 
+= list of Shellbuiltin 10 1
+  * list of Shellbuiltin 0 0
+    + int 13 1
+      adr int 13 1
+        name name (string, list of Shellbuiltin) 0 0
+      const t1 (8) int 6 0
+  name nil list of Shellbuiltin 1 0
+ecom: 
+name nil list of Shellbuiltin 1 0
+ecom to: 
+* list of Shellbuiltin 0 0
+  + int 13 1
+    adr int 13 1
+      name name (string, list of Shellbuiltin) 0 0
+    const t1 (8) int 6 0
+ecom: 
+= list of Shellbuiltin 10 1
+  name bmods list of Shellbuiltin 0 0
+  name nil list of Shellbuiltin 1 0
+ecom: 
+name nil list of Shellbuiltin 1 0
+ecom to: 
+name bmods list of Shellbuiltin 0 0
+ecom: 
+++ int 10 1
+  name i int 0 0
+  const (1) int 6 0
+ecom: 
+= ref Builtins 10 1
+  name b ref Builtins 0 0
+  * ref Builtins 10 1
+    * ref Environment 8 0
+      name ctxt ref Context 0 0
+ecom: 
+* ref Builtins 10 1
+  * ref Environment 8 0
+    name ctxt ref Context 0 0
+ecom to: 
+name b ref Builtins 0 0
+eacom: 
+* ref Builtins 10 1
+  * ref Environment 8 0
+    name ctxt ref Context 0 0
+generate desc for ref Environment
+ecom: 
+* ref Environment 8 0
+  name ctxt ref Context 0 0
+ecom to: 
+name .b320 ref Environment 0 0
+ecom: 
+= ref Environment 10 1
+  name .b320 ref Environment 0 0
+  name nil ref Environment 1 0
+ecom: 
+name nil ref Environment 1 0
+ecom to: 
+name .b320 ref Environment 0 0
+ecom: 
+= int 10 1
+  name i int 0 0
+  const (0) int 6 0
+ecom: 
+const (0) int 6 0
+ecom to: 
+name i int 0 0
+ecom: 
+= (string, list of Shellbuiltin) 10 2
+  tuple (string, list of Shellbuiltin) 10 1
+    seq nothing 10 1
+      name name string 0 0
+      seq nothing 10 1
+        name bmods list of Shellbuiltin 0 0
+  * (string, list of Shellbuiltin) 10 1
+    indx big 10 1
+      * array of (string, list of Shellbuiltin) 8 0
+        name b ref Builtins 0 0
+      name i int 0 0
+ecom: 
+* (string, list of Shellbuiltin) 10 1
+  indx big 10 1
+    * array of (string, list of Shellbuiltin) 8 0
+      name b ref Builtins 0 0
+    name i int 0 0
+ecom to: 
+name name (string, list of Shellbuiltin) 0 0
+eacom: 
+* (string, list of Shellbuiltin) 10 1
+  indx big 10 1
+    * array of (string, list of Shellbuiltin) 8 0
+      name b ref Builtins 0 0
+    name i int 0 0
+generate desc for big
+ecom: 
+indx big 10 1
+  * array of (string, list of Shellbuiltin) 8 0
+    name b ref Builtins 0 0
+  name i int 0 0
+ecom to: 
+name .b324 big 0 0
+generate desc for (string, list of Shellbuiltin)
+ecom: 
+used int 10 2
+  call int 10 2
+    -> fn(s: string, nil: string, nil: string, *): int 12 1
+      name sys Sys 1 0
+      name print nothing 11 1
+    seq no type 10 2
+      const ${%s}	%s
+ string 1 0
+      seq no type 10 2
+        name name string 0 0
+        seq no type 10 2
+          call string 10 2
+            name modname fn(ctxt: ref Context, mod: Shellbuiltin): string 11 1
+            seq no type 10 1
+              name ctxt ref Context 0 0
+              seq no type 10 1
+                hd Shellbuiltin 10 1
+                  name bmods list of Shellbuiltin 0 0
+ecom: 
+call int 10 2
+  -> fn(s: string, nil: string, nil: string, *): int 12 1
+    name sys Sys 1 0
+    name print nothing 11 1
+  seq no type 10 2
+    const ${%s}	%s
+ string 1 0
+    seq no type 10 2
+      name name string 0 0
+      seq no type 10 2
+        call string 10 2
+          name modname fn(ctxt: ref Context, mod: Shellbuiltin): string 11 1
+          seq no type 10 1
+            name ctxt ref Context 0 0
+            seq no type 10 1
+              hd Shellbuiltin 10 1
+                name bmods list of Shellbuiltin 0 0
+ecom to: 
+name .t322 int 0 0
+generate desc for Sys->print
+descmap offset 0
+descmap s type string offset 64 (d->offset=64 start=0) returns 64
+descmap type string offset 72 returns 72
+descmap type string offset 80 returns 80
+generate desc for big
+ecom: 
+call string 10 2
+  name modname fn(ctxt: ref Context, mod: Shellbuiltin): string 11 1
+  seq no type 10 1
+    name ctxt ref Context 0 0
+    seq no type 10 1
+      hd Shellbuiltin 10 1
+        name bmods list of Shellbuiltin 0 0
+ecom to: 
+name .t323 string 0 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b321 big 0 0
+    const (64) int 6 0
+ecom: 
+hd Shellbuiltin 10 1
+  name bmods list of Shellbuiltin 0 0
+ecom to: 
+* Shellbuiltin 8 0
+  + int 15 0
+    name .b321 big 0 0
+    const (72) int 6 0
+ecom: 
+const ${%s}	%s
+ string 1 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b324 big 0 0
+    const (64) int 6 0
+ecom: 
+name name string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b324 big 0 0
+    const (72) int 6 0
+ecom: 
+name .t323 string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b324 big 0 0
+    const (80) int 6 0
+ecom: 
+= string 10 1
+  name .t323 string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name .t323 string 0 0
+ecom: 
+= string 10 1
+  * string 0 0
+    adr int 13 1
+      name name (string, list of Shellbuiltin) 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+* string 0 0
+  adr int 13 1
+    name name (string, list of Shellbuiltin) 0 0
+ecom: 
+= list of Shellbuiltin 10 1
+  * list of Shellbuiltin 0 0
+    + int 13 1
+      adr int 13 1
+        name name (string, list of Shellbuiltin) 0 0
+      const t1 (8) int 6 0
+  name nil list of Shellbuiltin 1 0
+ecom: 
+name nil list of Shellbuiltin 1 0
+ecom to: 
+* list of Shellbuiltin 0 0
+  + int 13 1
+    adr int 13 1
+      name name (string, list of Shellbuiltin) 0 0
+    const t1 (8) int 6 0
+ecom: 
+= list of Shellbuiltin 10 1
+  name bmods list of Shellbuiltin 0 0
+  name nil list of Shellbuiltin 1 0
+ecom: 
+name nil list of Shellbuiltin 1 0
+ecom to: 
+name bmods list of Shellbuiltin 0 0
+ecom: 
+++ int 10 1
+  name i int 0 0
+  const (1) int 6 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* polymorphic type 8 0
+  name .ret int 0 0
+fn: builtin_loaded
+64: argument ctxt ref Context ref 4
+72: argument <nil> list of ref Listnode ref 0
+80: argument <nil> int ref 0
+84: local i int ref 8
+88: local .t322 int ref 1
+96: local b ref Builtins ref 6
+104: local .b321 big ref 3
+112: local .b324 big ref 3
+120: local .b320 ref Environment ref 2
+128: local name string ref 2
+136: local bmods list of Shellbuiltin ref 2
+144: local name string ref 2
+152: local bmods list of Shellbuiltin ref 2
+160: local .t323 string ref 1
+generate desc for builtin_loaded
+descmap offset 0
+descmap ctxt type ref Context offset 64 (d->offset=64 start=0) returns 64
+descmap type list of ref Listnode offset 72 returns 72
+descmap type int offset 80 returns -1
+descmap i type int offset 84 (d->offset=84 start=0) returns -1
+descmap .t322 type int offset 88 (d->offset=88 start=0) returns -1
+descmap b type ref Builtins offset 96 (d->offset=96 start=0) returns 96
+descmap .b321 type big offset 104 (d->offset=104 start=0) returns -1
+descmap .b324 type big offset 112 (d->offset=112 start=0) returns -1
+descmap .b320 type ref Environment offset 120 (d->offset=120 start=0) returns 120
+descmap name type string offset 128 (d->offset=128 start=0) returns 128
+descmap bmods type list of Shellbuiltin offset 136 (d->offset=136 start=0) returns 136
+descmap name type string offset 144 (d->offset=144 start=0) returns 144
+descmap bmods type list of Shellbuiltin offset 152 (d->offset=152 start=0) returns 152
+descmap .t323 type string offset 160 (d->offset=160 start=0) returns 160
+fncom: builtin_load 2 6e9450
+eacom: 
+tl list of ref Listnode 10 1
+  name args list of ref Listnode 0 0
+ecom: 
+tl list of ref Listnode 10 1
+  name args list of ref Listnode 0 0
+ecom to: 
+name .t325 list of ref Listnode 0 0
+ecom: 
+= list of ref Listnode 10 1
+  name .t325 list of ref Listnode 0 0
+  name nil list of ref Listnode 1 0
+ecom: 
+name nil list of ref Listnode 1 0
+ecom to: 
+name .t325 list of ref Listnode 0 0
+eacom: 
+* string 10 1
+  + int 10 1
+    hd ref Listnode 10 1
+      tl list of ref Listnode 10 1
+        name args list of ref Listnode 0 0
+    const word (8) int 6 0
+generate desc for ref Listnode
+generate desc for ref Listnode
+	desc	$-1,8,"80"
+ecom: 
+hd ref Listnode 10 1
+  tl list of ref Listnode 10 1
+    name args list of ref Listnode 0 0
+ecom to: 
+name .b326 ref Listnode 0 0
+eacom: 
+tl list of ref Listnode 10 1
+  name args list of ref Listnode 0 0
+ecom: 
+tl list of ref Listnode 10 1
+  name args list of ref Listnode 0 0
+ecom to: 
+name .t325 list of ref Listnode 0 0
+ecom: 
+= list of ref Listnode 10 1
+  name .t325 list of ref Listnode 0 0
+  name nil list of ref Listnode 1 0
+ecom: 
+name nil list of ref Listnode 1 0
+ecom to: 
+name .t325 list of ref Listnode 0 0
+ecom: 
+= ref Listnode 10 1
+  name .b326 ref Listnode 0 0
+  name nil ref Listnode 1 0
+ecom: 
+name nil ref Listnode 1 0
+ecom to: 
+name .b326 ref Listnode 0 0
+ecom: 
+call no type 10 2
+  name builtinusage fn(ctxt: ref Context, s: string) 11 1
+  seq no type 10 1
+    name ctxt ref Context 0 0
+    seq no type 10 1
+      const load path... string 1 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b327 big 0 0
+    const (64) int 6 0
+ecom: 
+const load path... string 1 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b327 big 0 0
+    const (72) int 6 0
+ecom: 
+= list of ref Listnode 10 1
+  name args list of ref Listnode 0 0
+  tl list of ref Listnode 10 1
+    name args list of ref Listnode 0 0
+ecom: 
+tl list of ref Listnode 10 1
+  name args list of ref Listnode 0 0
+ecom to: 
+name args list of ref Listnode 0 0
+ecom: 
+call no type 10 2
+  name builtinusage fn(ctxt: ref Context, s: string) 11 1
+  seq no type 10 1
+    name ctxt ref Context 0 0
+    seq no type 10 1
+      const load path... string 1 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b327 big 0 0
+    const (64) int 6 0
+ecom: 
+const load path... string 1 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b327 big 0 0
+    const (72) int 6 0
+ecom: 
+= string 10 2
+  name s string 0 0
+  call string 10 2
+    name loadmodule fn(ctxt: ref Context, name: string): string 11 1
+    seq no type 10 1
+      name ctxt ref Context 0 0
+      seq no type 10 1
+        * string 10 1
+          + int 10 1
+            hd ref Listnode 10 1
+              name args list of ref Listnode 0 0
+            const word (8) int 6 0
+ecom: 
+call string 10 2
+  name loadmodule fn(ctxt: ref Context, name: string): string 11 1
+  seq no type 10 1
+    name ctxt ref Context 0 0
+    seq no type 10 1
+      * string 10 1
+        + int 10 1
+          hd ref Listnode 10 1
+            name args list of ref Listnode 0 0
+          const word (8) int 6 0
+ecom to: 
+name s string 0 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b327 big 0 0
+    const (64) int 6 0
+ecom: 
+* string 10 1
+  + int 10 1
+    hd ref Listnode 10 1
+      name args list of ref Listnode 0 0
+    const word (8) int 6 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b327 big 0 0
+    const (72) int 6 0
+eacom: 
+* string 10 1
+  + int 10 1
+    hd ref Listnode 10 1
+      name args list of ref Listnode 0 0
+    const word (8) int 6 0
+generate desc for ref Listnode
+ecom: 
+hd ref Listnode 10 1
+  name args list of ref Listnode 0 0
+ecom to: 
+name .b326 ref Listnode 0 0
+ecom: 
+= ref Listnode 10 1
+  name .b326 ref Listnode 0 0
+  name nil ref Listnode 1 0
+ecom: 
+name nil ref Listnode 1 0
+ecom to: 
+name .b326 ref Listnode 0 0
+ecom: 
+raise nothing 10 1
+  + string 10 1
+    const fail: string 1 0
+    name s string 0 0
+eacom: 
++ string 10 1
+  const fail: string 1 0
+  name s string 0 0
+ecom: 
++ string 10 1
+  const fail: string 1 0
+  name s string 0 0
+ecom to: 
+name .t325 string 0 0
+ecom: 
+= string 10 1
+  name .t325 string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name .t325 string 0 0
+ecom: 
+= string 10 1
+  name s string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name s string 0 0
+ecom: 
+= list of ref Listnode 10 1
+  name args list of ref Listnode 0 0
+  tl list of ref Listnode 10 1
+    name args list of ref Listnode 0 0
+ecom: 
+tl list of ref Listnode 10 1
+  name args list of ref Listnode 0 0
+ecom to: 
+name args list of ref Listnode 0 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* polymorphic type 8 0
+  name .ret int 0 0
+fn: builtin_load
+64: argument ctxt ref Context ref 3
+72: argument args list of ref Listnode ref 9
+80: argument <nil> int ref 0
+88: local .b327 big ref 3
+96: local s string ref 3
+104: local .b326 ref Listnode ref 2
+112: local .t325 list of ref Listnode ref 1
+generate desc for builtin_load
+descmap offset 0
+descmap ctxt type ref Context offset 64 (d->offset=64 start=0) returns 64
+descmap args type list of ref Listnode offset 72 (d->offset=72 start=0) returns 72
+descmap type int offset 80 returns -1
+descmap .b327 type big offset 88 (d->offset=88 start=0) returns -1
+descmap s type string offset 96 (d->offset=96 start=0) returns 96
+descmap .b326 type ref Listnode offset 104 (d->offset=104 start=0) returns 104
+descmap .t325 type list of ref Listnode offset 112 (d->offset=112 start=0) returns 112
+fncom: builtin_unload 2 6e9510
+eacom: 
+tl list of ref Listnode 10 1
+  name args list of ref Listnode 0 0
+ecom: 
+tl list of ref Listnode 10 1
+  name args list of ref Listnode 0 0
+ecom to: 
+name .t328 list of ref Listnode 0 0
+ecom: 
+= list of ref Listnode 10 1
+  name .t328 list of ref Listnode 0 0
+  name nil list of ref Listnode 1 0
+ecom: 
+name nil list of ref Listnode 1 0
+ecom to: 
+name .t328 list of ref Listnode 0 0
+ecom: 
+call no type 10 2
+  name builtinusage fn(ctxt: ref Context, s: string) 11 1
+  seq no type 10 1
+    name ctxt ref Context 0 0
+    seq no type 10 1
+      const unload path... string 1 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b329 big 0 0
+    const (64) int 6 0
+ecom: 
+const unload path... string 1 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b329 big 0 0
+    const (72) int 6 0
+ecom: 
+= string 10 1
+  name status string 0 0
+  const  string 1 0
+ecom: 
+const  string 1 0
+ecom to: 
+name status string 0 0
+ecom: 
+= list of ref Listnode 10 1
+  name args list of ref Listnode 0 0
+  tl list of ref Listnode 10 1
+    name args list of ref Listnode 0 0
+ecom: 
+tl list of ref Listnode 10 1
+  name args list of ref Listnode 0 0
+ecom to: 
+name args list of ref Listnode 0 0
+eacom: 
+= string 10 2
+  name s string 0 0
+  call string 10 2
+    name unloadmodule fn(ctxt: ref Context, name: string): string 11 1
+    seq no type 10 1
+      name ctxt ref Context 0 0
+      seq no type 10 1
+        * string 10 1
+          + int 10 1
+            hd ref Listnode 10 1
+              name args list of ref Listnode 0 0
+            const word (8) int 6 0
+ecom: 
+= string 10 2
+  name s string 0 0
+  call string 10 2
+    name unloadmodule fn(ctxt: ref Context, name: string): string 11 1
+    seq no type 10 1
+      name ctxt ref Context 0 0
+      seq no type 10 1
+        * string 10 1
+          + int 10 1
+            hd ref Listnode 10 1
+              name args list of ref Listnode 0 0
+            const word (8) int 6 0
+ecom to: 
+name .t328 string 0 0
+ecom: 
+call string 10 2
+  name unloadmodule fn(ctxt: ref Context, name: string): string 11 1
+  seq no type 10 1
+    name ctxt ref Context 0 0
+    seq no type 10 1
+      * string 10 1
+        + int 10 1
+          hd ref Listnode 10 1
+            name args list of ref Listnode 0 0
+          const word (8) int 6 0
+ecom to: 
+name s string 0 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b329 big 0 0
+    const (64) int 6 0
+ecom: 
+* string 10 1
+  + int 10 1
+    hd ref Listnode 10 1
+      name args list of ref Listnode 0 0
+    const word (8) int 6 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b329 big 0 0
+    const (72) int 6 0
+eacom: 
+* string 10 1
+  + int 10 1
+    hd ref Listnode 10 1
+      name args list of ref Listnode 0 0
+    const word (8) int 6 0
+generate desc for ref Listnode
+generate desc for ref Listnode
+	desc	$-1,8,"80"
+ecom: 
+hd ref Listnode 10 1
+  name args list of ref Listnode 0 0
+ecom to: 
+name .b330 ref Listnode 0 0
+ecom: 
+= ref Listnode 10 1
+  name .b330 ref Listnode 0 0
+  name nil ref Listnode 1 0
+ecom: 
+name nil ref Listnode 1 0
+ecom to: 
+name .b330 ref Listnode 0 0
+ecom: 
+= string 10 1
+  name .t328 string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name .t328 string 0 0
+ecom: 
+= string 10 1
+  name status string 0 0
+  name s string 0 0
+ecom: 
+name s string 0 0
+ecom to: 
+name status string 0 0
+ecom: 
+= list of ref Listnode 10 1
+  name args list of ref Listnode 0 0
+  tl list of ref Listnode 10 1
+    name args list of ref Listnode 0 0
+ecom: 
+tl list of ref Listnode 10 1
+  name args list of ref Listnode 0 0
+ecom to: 
+name args list of ref Listnode 0 0
+ecom: 
+name status string 0 0
+ecom to: 
+* string 8 0
+  name .ret int 0 0
+fn: builtin_unload
+64: argument ctxt ref Context ref 2
+72: argument args list of ref Listnode ref 7
+80: argument <nil> int ref 0
+88: local status string ref 3
+96: local .b329 big ref 2
+104: local s string ref 2
+112: local .b330 ref Listnode ref 1
+120: local .t328 list of ref Listnode ref 1
+generate desc for builtin_unload
+descmap offset 0
+descmap ctxt type ref Context offset 64 (d->offset=64 start=0) returns 64
+descmap args type list of ref Listnode offset 72 (d->offset=72 start=0) returns 72
+descmap type int offset 80 returns -1
+descmap status type string offset 88 (d->offset=88 start=0) returns 88
+descmap .b329 type big offset 96 (d->offset=96 start=0) returns -1
+descmap s type string offset 104 (d->offset=104 start=0) returns 104
+descmap .b330 type ref Listnode offset 112 (d->offset=112 start=0) returns 112
+descmap .t328 type list of ref Listnode offset 120 (d->offset=120 start=0) returns 120
+fncom: builtin_run 2 6e95d0
+eacom: 
+tl list of ref Listnode 10 1
+  name args list of ref Listnode 0 0
+ecom: 
+tl list of ref Listnode 10 1
+  name args list of ref Listnode 0 0
+ecom to: 
+name .t331 list of ref Listnode 0 0
+ecom: 
+= list of ref Listnode 10 1
+  name .t331 list of ref Listnode 0 0
+  name nil list of ref Listnode 1 0
+ecom: 
+name nil list of ref Listnode 1 0
+ecom to: 
+name .t331 list of ref Listnode 0 0
+eacom: 
+* string 10 1
+  + int 10 1
+    hd ref Listnode 10 1
+      tl list of ref Listnode 10 1
+        name args list of ref Listnode 0 0
+    const word (8) int 6 0
+generate desc for ref Listnode
+generate desc for ref Listnode
+	desc	$-1,8,"80"
+ecom: 
+hd ref Listnode 10 1
+  tl list of ref Listnode 10 1
+    name args list of ref Listnode 0 0
+ecom to: 
+name .b332 ref Listnode 0 0
+eacom: 
+tl list of ref Listnode 10 1
+  name args list of ref Listnode 0 0
+ecom: 
+tl list of ref Listnode 10 1
+  name args list of ref Listnode 0 0
+ecom to: 
+name .t331 list of ref Listnode 0 0
+ecom: 
+= list of ref Listnode 10 1
+  name .t331 list of ref Listnode 0 0
+  name nil list of ref Listnode 1 0
+ecom: 
+name nil list of ref Listnode 1 0
+ecom to: 
+name .t331 list of ref Listnode 0 0
+ecom: 
+= ref Listnode 10 1
+  name .b332 ref Listnode 0 0
+  name nil ref Listnode 1 0
+ecom: 
+name nil ref Listnode 1 0
+ecom to: 
+name .b332 ref Listnode 0 0
+ecom: 
+call no type 10 2
+  name builtinusage fn(ctxt: ref Context, s: string) 11 1
+  seq no type 10 1
+    name ctxt ref Context 0 0
+    seq no type 10 1
+      const run path string 1 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b333 big 0 0
+    const (64) int 6 0
+ecom: 
+const run path string 1 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b333 big 0 0
+    const (72) int 6 0
+ecom: 
+call no type 10 2
+  name push fn(ctxt: self ref Context) 11 1
+  seq nothing 10 1
+    name ctxt ref Context 0 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b333 big 0 0
+    const (64) int 6 0
+ecom: 
+used int 10 2
+  call int 10 2
+    name setoptions fn(ctxt: self ref Context, flags: int, on: int): int 11 1
+    seq nothing 10 1
+      name ctxt ref Context 0 0
+      seq no type 10 1
+        const INTERACTIVE (1) int 6 0
+        seq no type 10 1
+          const (0) int 6 0
+ecom: 
+call int 10 2
+  name setoptions fn(ctxt: self ref Context, flags: int, on: int): int 11 1
+  seq nothing 10 1
+    name ctxt ref Context 0 0
+    seq no type 10 1
+      const INTERACTIVE (1) int 6 0
+      seq no type 10 1
+        const (0) int 6 0
+ecom to: 
+name .t334 int 0 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b333 big 0 0
+    const (64) int 6 0
+ecom: 
+const INTERACTIVE (1) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b333 big 0 0
+    const (72) int 6 0
+ecom: 
+const (0) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b333 big 0 0
+    const (76) int 6 0
+ecom: 
+call no type 10 2
+  name runscript fn(ctxt: ref Context, path: string, args: list of ref Listnode, reporterr: int) 11 1
+  seq no type 10 2
+    name ctxt ref Context 0 0
+    seq no type 10 2
+      * string 10 1
+        + int 10 1
+          hd ref Listnode 10 1
+            tl list of ref Listnode 10 1
+              name args list of ref Listnode 0 0
+          const word (8) int 6 0
+      seq no type 10 2
+        tl list of ref Listnode 10 1
+          tl list of ref Listnode 10 1
+            name args list of ref Listnode 0 0
+        seq no type 10 1
+          const (1) int 6 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b333 big 0 0
+    const (64) int 6 0
+ecom: 
+* string 10 1
+  + int 10 1
+    hd ref Listnode 10 1
+      tl list of ref Listnode 10 1
+        name args list of ref Listnode 0 0
+    const word (8) int 6 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b333 big 0 0
+    const (72) int 6 0
+eacom: 
+* string 10 1
+  + int 10 1
+    hd ref Listnode 10 1
+      tl list of ref Listnode 10 1
+        name args list of ref Listnode 0 0
+    const word (8) int 6 0
+generate desc for ref Listnode
+ecom: 
+hd ref Listnode 10 1
+  tl list of ref Listnode 10 1
+    name args list of ref Listnode 0 0
+ecom to: 
+name .b332 ref Listnode 0 0
+eacom: 
+tl list of ref Listnode 10 1
+  name args list of ref Listnode 0 0
+ecom: 
+tl list of ref Listnode 10 1
+  name args list of ref Listnode 0 0
+ecom to: 
+name .t331 list of ref Listnode 0 0
+ecom: 
+= list of ref Listnode 10 1
+  name .t331 list of ref Listnode 0 0
+  name nil list of ref Listnode 1 0
+ecom: 
+name nil list of ref Listnode 1 0
+ecom to: 
+name .t331 list of ref Listnode 0 0
+ecom: 
+= ref Listnode 10 1
+  name .b332 ref Listnode 0 0
+  name nil ref Listnode 1 0
+ecom: 
+name nil ref Listnode 1 0
+ecom to: 
+name .b332 ref Listnode 0 0
+ecom: 
+tl list of ref Listnode 10 1
+  tl list of ref Listnode 10 1
+    name args list of ref Listnode 0 0
+ecom to: 
+* list of ref Listnode 8 0
+  + int 15 0
+    name .b333 big 0 0
+    const (80) int 6 0
+eacom: 
+tl list of ref Listnode 10 1
+  name args list of ref Listnode 0 0
+ecom: 
+tl list of ref Listnode 10 1
+  name args list of ref Listnode 0 0
+ecom to: 
+name .t331 list of ref Listnode 0 0
+ecom: 
+= list of ref Listnode 10 1
+  name .t331 list of ref Listnode 0 0
+  name nil list of ref Listnode 1 0
+ecom: 
+name nil list of ref Listnode 1 0
+ecom to: 
+name .t331 list of ref Listnode 0 0
+ecom: 
+const (1) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b333 big 0 0
+    const (88) int 6 0
+ecom: 
+call no type 10 2
+  name pop fn(ctxt: self ref Context) 11 1
+  seq nothing 10 1
+    name ctxt ref Context 0 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b333 big 0 0
+    const (64) int 6 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* polymorphic type 8 0
+  name .ret int 0 0
+ecom: 
+call no type 10 2
+  name pop fn(ctxt: self ref Context) 11 1
+  seq nothing 10 1
+    name ctxt ref Context 0 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b333 big 0 0
+    const (64) int 6 0
+ecom: 
+call string 10 2
+  name failurestatus fn(e: string): string 11 1
+  seq no type 10 1
+    name e string 0 0
+ecom to: 
+* string 8 0
+  name .ret int 0 0
+generate desc for big
+ecom: 
+name e string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b333 big 0 0
+    const (64) int 6 0
+fn: builtin_run
+64: argument ctxt ref Context ref 7
+72: argument args list of ref Listnode ref 4
+80: argument <nil> int ref 0
+84: local e ref exception ref 2
+88: local .t334 int ref 1
+96: local .b333 big ref 7
+104: local .b332 ref Listnode ref 2
+112: local .t331 list of ref Listnode ref 1
+generate desc for builtin_run
+descmap offset 0
+descmap ctxt type ref Context offset 64 (d->offset=64 start=0) returns 64
+descmap args type list of ref Listnode offset 72 (d->offset=72 start=0) returns 72
+descmap type int offset 80 returns -1
+descmap e type ref exception offset 84 (d->offset=84 start=0) returns 88
+descmap .t334 type int offset 88 (d->offset=88 start=0) returns -1
+descmap .b333 type big offset 96 (d->offset=96 start=0) returns -1
+descmap .b332 type ref Listnode offset 104 (d->offset=104 start=0) returns 104
+descmap .t331 type list of ref Listnode offset 112 (d->offset=112 start=0) returns 112
+fncom: builtin_whatis 2 6e9690
+eacom: 
+len int 10 1
+  name args list of ref Listnode 0 0
+ecom: 
+len int 10 1
+  name args list of ref Listnode 0 0
+ecom to: 
+name .t335 int 0 0
+ecom: 
+call no type 10 2
+  name builtinusage fn(ctxt: ref Context, s: string) 11 1
+  seq no type 10 1
+    name ctxt ref Context 0 0
+    seq no type 10 1
+      const whatis name ... string 1 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b336 big 0 0
+    const (64) int 6 0
+ecom: 
+const whatis name ... string 1 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b336 big 0 0
+    const (72) int 6 0
+ecom: 
+= string 10 1
+  name err string 0 0
+  const  string 1 0
+ecom: 
+const  string 1 0
+ecom to: 
+name err string 0 0
+ecom: 
+= list of ref Listnode 10 1
+  name args list of ref Listnode 0 0
+  tl list of ref Listnode 10 1
+    name args list of ref Listnode 0 0
+ecom: 
+tl list of ref Listnode 10 1
+  name args list of ref Listnode 0 0
+ecom to: 
+name args list of ref Listnode 0 0
+eacom: 
+= string 10 2
+  name e string 0 0
+  call string 10 2
+    name whatisit fn(ctxt: ref Context, el: ref Listnode): string 11 1
+    seq no type 10 1
+      name ctxt ref Context 0 0
+      seq no type 10 1
+        hd ref Listnode 10 1
+          name args list of ref Listnode 0 0
+ecom: 
+= string 10 2
+  name e string 0 0
+  call string 10 2
+    name whatisit fn(ctxt: ref Context, el: ref Listnode): string 11 1
+    seq no type 10 1
+      name ctxt ref Context 0 0
+      seq no type 10 1
+        hd ref Listnode 10 1
+          name args list of ref Listnode 0 0
+ecom to: 
+name .t337 string 0 0
+ecom: 
+call string 10 2
+  name whatisit fn(ctxt: ref Context, el: ref Listnode): string 11 1
+  seq no type 10 1
+    name ctxt ref Context 0 0
+    seq no type 10 1
+      hd ref Listnode 10 1
+        name args list of ref Listnode 0 0
+ecom to: 
+name e string 0 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b336 big 0 0
+    const (64) int 6 0
+ecom: 
+hd ref Listnode 10 1
+  name args list of ref Listnode 0 0
+ecom to: 
+* ref Listnode 8 0
+  + int 15 0
+    name .b336 big 0 0
+    const (72) int 6 0
+ecom: 
+= string 10 1
+  name .t337 string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name .t337 string 0 0
+ecom: 
+= string 10 1
+  name err string 0 0
+  name e string 0 0
+ecom: 
+name e string 0 0
+ecom to: 
+name err string 0 0
+ecom: 
+= list of ref Listnode 10 1
+  name args list of ref Listnode 0 0
+  tl list of ref Listnode 10 1
+    name args list of ref Listnode 0 0
+ecom: 
+tl list of ref Listnode 10 1
+  name args list of ref Listnode 0 0
+ecom to: 
+name args list of ref Listnode 0 0
+ecom: 
+name err string 0 0
+ecom to: 
+* string 8 0
+  name .ret int 0 0
+fn: builtin_whatis
+64: argument ctxt ref Context ref 2
+72: argument args list of ref Listnode ref 7
+80: argument <nil> int ref 0
+84: local .t335 int ref 1
+88: local err string ref 3
+96: local .b336 big ref 2
+104: local e string ref 2
+112: local .t337 string ref 1
+generate desc for builtin_whatis
+descmap offset 0
+descmap ctxt type ref Context offset 64 (d->offset=64 start=0) returns 64
+descmap args type list of ref Listnode offset 72 (d->offset=72 start=0) returns 72
+descmap type int offset 80 returns -1
+descmap .t335 type int offset 84 (d->offset=84 start=0) returns -1
+descmap err type string offset 88 (d->offset=88 start=0) returns 88
+descmap .b336 type big offset 96 (d->offset=96 start=0) returns -1
+descmap e type string offset 104 (d->offset=104 start=0) returns 104
+descmap .t337 type string offset 112 (d->offset=112 start=0) returns 112
+fncom: whatisit 2 6e9750
+ecom: 
+used int 10 2
+  call int 10 2
+    -> fn(s: string, nil: string, *): int 12 1
+      name sys Sys 1 0
+      name print nothing 11 1
+    seq no type 10 2
+      const %s
+ string 1 0
+      seq no type 10 2
+        call string 10 2
+          name cmd2string fn(n: ref Node): string 11 1
+          seq no type 10 1
+            * ref Node 8 0
+              name el ref Listnode 0 0
+ecom: 
+call int 10 2
+  -> fn(s: string, nil: string, *): int 12 1
+    name sys Sys 1 0
+    name print nothing 11 1
+  seq no type 10 2
+    const %s
+ string 1 0
+    seq no type 10 2
+      call string 10 2
+        name cmd2string fn(n: ref Node): string 11 1
+        seq no type 10 1
+          * ref Node 8 0
+            name el ref Listnode 0 0
+ecom to: 
+name .t338 int 0 0
+generate desc for Sys->print
+descmap offset 0
+descmap s type string offset 64 (d->offset=64 start=0) returns 64
+descmap type string offset 72 returns 72
+generate desc for big
+ecom: 
+call string 10 2
+  name cmd2string fn(n: ref Node): string 11 1
+  seq no type 10 1
+    * ref Node 8 0
+      name el ref Listnode 0 0
+ecom to: 
+name .t340 string 0 0
+generate desc for big
+ecom: 
+* ref Node 8 0
+  name el ref Listnode 0 0
+ecom to: 
+* ref Node 8 0
+  + int 15 0
+    name .b341 big 0 0
+    const (64) int 6 0
+ecom: 
+const %s
+ string 1 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b339 big 0 0
+    const (64) int 6 0
+ecom: 
+name .t340 string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b339 big 0 0
+    const (72) int 6 0
+ecom: 
+= string 10 1
+  name .t340 string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name .t340 string 0 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* polymorphic type 8 0
+  name .ret int 0 0
+ecom: 
+= int 10 1
+  name found int 0 0
+  const (0) int 6 0
+ecom: 
+const (0) int 6 0
+ecom to: 
+name found int 0 0
+ecom: 
+= string 10 1
+  name name string 0 0
+  * string 8 0
+    + int 15 1
+      name el ref Listnode 0 0
+      const word (8) int 6 0
+ecom: 
+* string 8 0
+  + int 15 1
+    name el ref Listnode 0 0
+    const word (8) int 6 0
+ecom to: 
+name name string 0 0
+eacom: 
+inds int 10 1
+  name name string 0 0
+  const (0) int 6 0
+ecom: 
+inds int 10 1
+  name name string 0 0
+  const (0) int 6 0
+ecom to: 
+name .t338 int 0 0
+ecom: 
+used int 10 2
+  call int 10 2
+    -> fn(s: string, nil: string, *): int 12 1
+      name sys Sys 1 0
+      name print nothing 11 1
+    seq no type 10 1
+      const %s
+ string 1 0
+      seq no type 10 1
+        name name string 0 0
+ecom: 
+call int 10 2
+  -> fn(s: string, nil: string, *): int 12 1
+    name sys Sys 1 0
+    name print nothing 11 1
+  seq no type 10 1
+    const %s
+ string 1 0
+    seq no type 10 1
+      name name string 0 0
+ecom to: 
+name .t338 int 0 0
+generate desc for Sys->print
+descmap offset 0
+descmap s type string offset 64 (d->offset=64 start=0) returns 64
+descmap type string offset 72 returns 72
+generate desc for big
+ecom: 
+const %s
+ string 1 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b341 big 0 0
+    const (64) int 6 0
+ecom: 
+name name string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b341 big 0 0
+    const (72) int 6 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* polymorphic type 8 0
+  name .ret int 0 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* polymorphic type 8 0
+  name .ret int 0 0
+ecom: 
+= list of ref Listnode 10 2
+  name val list of ref Listnode 0 0
+  call list of ref Listnode 10 2
+    name get fn(ctxt: self ref Context, name: string): list of ref Listnode 11 1
+    seq nothing 10 1
+      name ctxt ref Context 0 0
+      seq no type 10 1
+        name name string 0 0
+ecom: 
+call list of ref Listnode 10 2
+  name get fn(ctxt: self ref Context, name: string): list of ref Listnode 11 1
+  seq nothing 10 1
+    name ctxt ref Context 0 0
+    seq no type 10 1
+      name name string 0 0
+ecom to: 
+name val list of ref Listnode 0 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b341 big 0 0
+    const (64) int 6 0
+ecom: 
+name name string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b341 big 0 0
+    const (72) int 6 0
+ecom: 
+++ int 10 1
+  name found int 0 0
+  const (1) int 6 0
+ecom: 
++= string 10 3
+  name w string 0 0
+  call string 10 3
+    -> fn(s: string, nil: string, nil: string, *): string 12 1
+      name sys Sys 1 0
+      name sprint nothing 11 1
+    seq no type 10 3
+      const %s=%s
+ string 1 0
+      seq no type 10 3
+        call string 10 2
+          name quote fn(s: string, glob: int): string 11 1
+          seq no type 10 1
+            name name string 0 0
+            seq no type 10 1
+              const (0) int 6 0
+        seq no type 10 2
+          call string 10 2
+            name quoted fn(val: list of ref Listnode, quoteblocks: int): string 11 1
+            seq no type 10 1
+              name val list of ref Listnode 0 0
+              seq no type 10 1
+                const (0) int 6 0
+eacom: 
+call string 10 3
+  -> fn(s: string, nil: string, nil: string, *): string 12 1
+    name sys Sys 1 0
+    name sprint nothing 11 1
+  seq no type 10 3
+    const %s=%s
+ string 1 0
+    seq no type 10 3
+      call string 10 2
+        name quote fn(s: string, glob: int): string 11 1
+        seq no type 10 1
+          name name string 0 0
+          seq no type 10 1
+            const (0) int 6 0
+      seq no type 10 2
+        call string 10 2
+          name quoted fn(val: list of ref Listnode, quoteblocks: int): string 11 1
+          seq no type 10 1
+            name val list of ref Listnode 0 0
+            seq no type 10 1
+              const (0) int 6 0
+ecom: 
+call string 10 3
+  -> fn(s: string, nil: string, nil: string, *): string 12 1
+    name sys Sys 1 0
+    name sprint nothing 11 1
+  seq no type 10 3
+    const %s=%s
+ string 1 0
+    seq no type 10 3
+      call string 10 2
+        name quote fn(s: string, glob: int): string 11 1
+        seq no type 10 1
+          name name string 0 0
+          seq no type 10 1
+            const (0) int 6 0
+      seq no type 10 2
+        call string 10 2
+          name quoted fn(val: list of ref Listnode, quoteblocks: int): string 11 1
+          seq no type 10 1
+            name val list of ref Listnode 0 0
+            seq no type 10 1
+              const (0) int 6 0
+ecom to: 
+name .t340 string 0 0
+generate desc for Sys->sprint
+descmap offset 0
+descmap s type string offset 64 (d->offset=64 start=0) returns 64
+descmap type string offset 72 returns 72
+descmap type string offset 80 returns 80
+generate desc for big
+ecom: 
+call string 10 2
+  name quote fn(s: string, glob: int): string 11 1
+  seq no type 10 1
+    name name string 0 0
+    seq no type 10 1
+      const (0) int 6 0
+ecom to: 
+name .t342 string 0 0
+generate desc for big
+ecom: 
+name name string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b339 big 0 0
+    const (64) int 6 0
+ecom: 
+const (0) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b339 big 0 0
+    const (72) int 6 0
+ecom: 
+call string 10 2
+  name quoted fn(val: list of ref Listnode, quoteblocks: int): string 11 1
+  seq no type 10 1
+    name val list of ref Listnode 0 0
+    seq no type 10 1
+      const (0) int 6 0
+ecom to: 
+name .t343 string 0 0
+generate desc for big
+ecom: 
+name val list of ref Listnode 0 0
+ecom to: 
+* list of ref Listnode 8 0
+  + int 15 0
+    name .b339 big 0 0
+    const (64) int 6 0
+ecom: 
+const (0) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b339 big 0 0
+    const (72) int 6 0
+ecom: 
+const %s=%s
+ string 1 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b341 big 0 0
+    const (64) int 6 0
+ecom: 
+name .t342 string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b341 big 0 0
+    const (72) int 6 0
+ecom: 
+= string 10 1
+  name .t342 string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name .t342 string 0 0
+ecom: 
+name .t343 string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b341 big 0 0
+    const (80) int 6 0
+ecom: 
+= string 10 1
+  name .t343 string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name .t343 string 0 0
+ecom: 
+= string 10 1
+  name .t340 string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name .t340 string 0 0
+ecom: 
+= (int, list of Shellbuiltin) 10 2
+  tuple (int, list of Shellbuiltin) 10 1
+    seq nothing 10 1
+      name nil polymorphic type 1 0
+      seq nothing 10 1
+        name mods list of Shellbuiltin 0 0
+  call (int, list of Shellbuiltin) 10 2
+    name findbuiltin fn(b: ref Builtins, name: string): (int, list of Shellbuiltin) 11 1
+    seq no type 10 2
+      * ref Builtins 10 1
+        * ref Environment 8 0
+          name ctxt ref Context 0 0
+      seq no type 10 1
+        name name string 0 0
+generate desc for (int, list of Shellbuiltin)
+ecom: 
+call (int, list of Shellbuiltin) 10 2
+  name findbuiltin fn(b: ref Builtins, name: string): (int, list of Shellbuiltin) 11 1
+  seq no type 10 2
+    * ref Builtins 10 1
+      * ref Environment 8 0
+        name ctxt ref Context 0 0
+    seq no type 10 1
+      name name string 0 0
+ecom to: 
+name .b344 (int, list of Shellbuiltin) 0 0
+generate desc for big
+ecom: 
+* ref Builtins 10 1
+  * ref Environment 8 0
+    name ctxt ref Context 0 0
+ecom to: 
+* ref Builtins 8 0
+  + int 15 0
+    name .b341 big 0 0
+    const (64) int 6 0
+eacom: 
+* ref Builtins 10 1
+  * ref Environment 8 0
+    name ctxt ref Context 0 0
+generate desc for ref Environment
+ecom: 
+* ref Environment 8 0
+  name ctxt ref Context 0 0
+ecom to: 
+name .b345 ref Environment 0 0
+ecom: 
+= ref Environment 10 1
+  name .b345 ref Environment 0 0
+  name nil ref Environment 1 0
+ecom: 
+name nil ref Environment 1 0
+ecom to: 
+name .b345 ref Environment 0 0
+ecom: 
+name name string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b341 big 0 0
+    const (72) int 6 0
+ecom: 
+= list of Shellbuiltin 10 1
+  * list of Shellbuiltin 0 0
+    + int 13 1
+      adr int 13 1
+        name .b344 (int, list of Shellbuiltin) 0 0
+      const t1 (8) int 6 0
+  name nil list of Shellbuiltin 1 0
+ecom: 
+name nil list of Shellbuiltin 1 0
+ecom to: 
+* list of Shellbuiltin 0 0
+  + int 13 1
+    adr int 13 1
+      name .b344 (int, list of Shellbuiltin) 0 0
+    const t1 (8) int 6 0
+ecom: 
+= Shellbuiltin 10 1
+  name mod Shellbuiltin 0 0
+  hd Shellbuiltin 10 1
+    name mods list of Shellbuiltin 0 0
+ecom: 
+hd Shellbuiltin 10 1
+  name mods list of Shellbuiltin 0 0
+ecom to: 
+name mod Shellbuiltin 0 0
+ecom: 
++= string 10 1
+  name w string 0 0
+  + string 10 1
+    + string 10 1
+      const ${builtin  string 1 0
+      name name string 0 0
+    const }
+ string 1 0
+eacom: 
++ string 10 1
+  + string 10 1
+    const ${builtin  string 1 0
+    name name string 0 0
+  const }
+ string 1 0
+ecom: 
++ string 10 1
+  + string 10 1
+    const ${builtin  string 1 0
+    name name string 0 0
+  const }
+ string 1 0
+ecom to: 
+name .t343 string 0 0
+ecom: 
++ string 10 1
+  const ${builtin  string 1 0
+  name name string 0 0
+ecom to: 
+name .t343 string 0 0
+ecom: 
+= string 10 1
+  name .t343 string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name .t343 string 0 0
+ecom: 
+= string 10 2
+  name mw string 0 0
+  call string 10 2
+    -> fn(c: ref Context, sh: Sh, name: string, wtype: int): string 12 1
+      name mod Shellbuiltin 0 0
+      name whatis nothing 11 1
+    seq no type 10 1
+      name ctxt ref Context 0 0
+      seq no type 10 1
+        name myself Sh 1 0
+        seq no type 10 1
+          name name string 0 0
+          seq no type 10 1
+            const SBUILTIN (1) int 6 0
+ecom: 
+call string 10 2
+  -> fn(c: ref Context, sh: Sh, name: string, wtype: int): string 12 1
+    name mod Shellbuiltin 0 0
+    name whatis nothing 11 1
+  seq no type 10 1
+    name ctxt ref Context 0 0
+    seq no type 10 1
+      name myself Sh 1 0
+      seq no type 10 1
+        name name string 0 0
+        seq no type 10 1
+          const SBUILTIN (1) int 6 0
+ecom to: 
+name mw string 0 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b341 big 0 0
+    const (64) int 6 0
+ecom: 
+name myself Sh 1 0
+ecom to: 
+* Sh 8 0
+  + int 15 0
+    name .b341 big 0 0
+    const (72) int 6 0
+ecom: 
+name name string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b341 big 0 0
+    const (80) int 6 0
+ecom: 
+const SBUILTIN (1) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b341 big 0 0
+    const (88) int 6 0
+ecom: 
+= string 10 1
+  name mw string 0 0
+  + string 10 1
+    + string 10 1
+      const ${ string 1 0
+      name name string 0 0
+    const } string 1 0
+ecom: 
++ string 10 1
+  + string 10 1
+    const ${ string 1 0
+    name name string 0 0
+  const } string 1 0
+ecom to: 
+name mw string 0 0
+ecom: 
++ string 10 1
+  const ${ string 1 0
+  name name string 0 0
+ecom to: 
+name .t343 string 0 0
+ecom: 
+= string 10 1
+  name .t343 string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name .t343 string 0 0
+ecom: 
++= string 10 2
+  name w string 0 0
+  + string 10 2
+    + string 10 2
+      + string 10 2
+        + string 10 2
+          const load  string 1 0
+          call string 10 2
+            name modname fn(ctxt: ref Context, mod: Shellbuiltin): string 11 1
+            seq no type 10 1
+              name ctxt ref Context 0 0
+              seq no type 10 1
+                name mod Shellbuiltin 0 0
+        const ;  string 1 0
+      name mw string 0 0
+    const 
+ string 1 0
+eacom: 
++ string 10 2
+  + string 10 2
+    + string 10 2
+      + string 10 2
+        const load  string 1 0
+        call string 10 2
+          name modname fn(ctxt: ref Context, mod: Shellbuiltin): string 11 1
+          seq no type 10 1
+            name ctxt ref Context 0 0
+            seq no type 10 1
+              name mod Shellbuiltin 0 0
+      const ;  string 1 0
+    name mw string 0 0
+  const 
+ string 1 0
+ecom: 
++ string 10 2
+  + string 10 2
+    + string 10 2
+      + string 10 2
+        const load  string 1 0
+        call string 10 2
+          name modname fn(ctxt: ref Context, mod: Shellbuiltin): string 11 1
+          seq no type 10 1
+            name ctxt ref Context 0 0
+            seq no type 10 1
+              name mod Shellbuiltin 0 0
+      const ;  string 1 0
+    name mw string 0 0
+  const 
+ string 1 0
+ecom to: 
+name .t343 string 0 0
+ecom: 
++ string 10 2
+  + string 10 2
+    + string 10 2
+      const load  string 1 0
+      call string 10 2
+        name modname fn(ctxt: ref Context, mod: Shellbuiltin): string 11 1
+        seq no type 10 1
+          name ctxt ref Context 0 0
+          seq no type 10 1
+            name mod Shellbuiltin 0 0
+    const ;  string 1 0
+  name mw string 0 0
+ecom to: 
+name .t343 string 0 0
+ecom: 
++ string 10 2
+  + string 10 2
+    const load  string 1 0
+    call string 10 2
+      name modname fn(ctxt: ref Context, mod: Shellbuiltin): string 11 1
+      seq no type 10 1
+        name ctxt ref Context 0 0
+        seq no type 10 1
+          name mod Shellbuiltin 0 0
+  const ;  string 1 0
+ecom to: 
+name .t343 string 0 0
+ecom: 
++ string 10 2
+  const load  string 1 0
+  call string 10 2
+    name modname fn(ctxt: ref Context, mod: Shellbuiltin): string 11 1
+    seq no type 10 1
+      name ctxt ref Context 0 0
+      seq no type 10 1
+        name mod Shellbuiltin 0 0
+ecom to: 
+name .t343 string 0 0
+eacom: 
+call string 10 2
+  name modname fn(ctxt: ref Context, mod: Shellbuiltin): string 11 1
+  seq no type 10 1
+    name ctxt ref Context 0 0
+    seq no type 10 1
+      name mod Shellbuiltin 0 0
+ecom: 
+call string 10 2
+  name modname fn(ctxt: ref Context, mod: Shellbuiltin): string 11 1
+  seq no type 10 1
+    name ctxt ref Context 0 0
+    seq no type 10 1
+      name mod Shellbuiltin 0 0
+ecom to: 
+name .t343 string 0 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b341 big 0 0
+    const (64) int 6 0
+ecom: 
+name mod Shellbuiltin 0 0
+ecom to: 
+* Shellbuiltin 8 0
+  + int 15 0
+    name .b341 big 0 0
+    const (72) int 6 0
+ecom: 
+= string 10 1
+  name .t343 string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name .t343 string 0 0
+ecom: 
+= string 10 1
+  name mw string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name mw string 0 0
+ecom: 
+++ int 10 1
+  name found int 0 0
+  const (1) int 6 0
+ecom: 
+= Shellbuiltin 10 1
+  name mod Shellbuiltin 0 0
+  name nil Shellbuiltin 1 0
+ecom: 
+name nil Shellbuiltin 1 0
+ecom to: 
+name mod Shellbuiltin 0 0
+ecom: 
+= (int, list of Shellbuiltin) 10 2
+  tuple (int, list of Shellbuiltin) 10 1
+    seq no type 10 1
+      name nil polymorphic type 1 0
+      seq no type 10 1
+        name mods list of Shellbuiltin 0 0
+  call (int, list of Shellbuiltin) 10 2
+    name findbuiltin fn(b: ref Builtins, name: string): (int, list of Shellbuiltin) 11 1
+    seq no type 10 2
+      * ref Builtins 10 1
+        + int 10 1
+          * ref Environment 8 0
+            name ctxt ref Context 0 0
+          const builtins (8) int 6 0
+      seq no type 10 1
+        name name string 0 0
+generate desc for (int, list of Shellbuiltin)
+ecom: 
+call (int, list of Shellbuiltin) 10 2
+  name findbuiltin fn(b: ref Builtins, name: string): (int, list of Shellbuiltin) 11 1
+  seq no type 10 2
+    * ref Builtins 10 1
+      + int 10 1
+        * ref Environment 8 0
+          name ctxt ref Context 0 0
+        const builtins (8) int 6 0
+    seq no type 10 1
+      name name string 0 0
+ecom to: 
+name .b344 (int, list of Shellbuiltin) 0 0
+generate desc for big
+ecom: 
+* ref Builtins 10 1
+  + int 10 1
+    * ref Environment 8 0
+      name ctxt ref Context 0 0
+    const builtins (8) int 6 0
+ecom to: 
+* ref Builtins 8 0
+  + int 15 0
+    name .b341 big 0 0
+    const (64) int 6 0
+eacom: 
+* ref Builtins 10 1
+  + int 10 1
+    * ref Environment 8 0
+      name ctxt ref Context 0 0
+    const builtins (8) int 6 0
+generate desc for ref Environment
+ecom: 
+* ref Environment 8 0
+  name ctxt ref Context 0 0
+ecom to: 
+name .b345 ref Environment 0 0
+ecom: 
+= ref Environment 10 1
+  name .b345 ref Environment 0 0
+  name nil ref Environment 1 0
+ecom: 
+name nil ref Environment 1 0
+ecom to: 
+name .b345 ref Environment 0 0
+ecom: 
+name name string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b341 big 0 0
+    const (72) int 6 0
+ecom: 
+= list of Shellbuiltin 10 1
+  * list of Shellbuiltin 0 0
+    + int 13 1
+      adr int 13 1
+        name .b344 (int, list of Shellbuiltin) 0 0
+      const t1 (8) int 6 0
+  name nil list of Shellbuiltin 1 0
+ecom: 
+name nil list of Shellbuiltin 1 0
+ecom to: 
+* list of Shellbuiltin 0 0
+  + int 13 1
+    adr int 13 1
+      name .b344 (int, list of Shellbuiltin) 0 0
+    const t1 (8) int 6 0
+ecom: 
+= Shellbuiltin 10 1
+  name mod Shellbuiltin 0 0
+  hd Shellbuiltin 10 1
+    name mods list of Shellbuiltin 0 0
+ecom: 
+hd Shellbuiltin 10 1
+  name mods list of Shellbuiltin 0 0
+ecom to: 
+name mod Shellbuiltin 0 0
+ecom: 
+used int 10 2
+  call int 10 2
+    -> fn(s: string, nil: string, *): int 12 1
+      name sys Sys 1 0
+      name print nothing 11 1
+    seq no type 10 1
+      const builtin %s
+ string 1 0
+      seq no type 10 1
+        name name string 0 0
+ecom: 
+call int 10 2
+  -> fn(s: string, nil: string, *): int 12 1
+    name sys Sys 1 0
+    name print nothing 11 1
+  seq no type 10 1
+    const builtin %s
+ string 1 0
+    seq no type 10 1
+      name name string 0 0
+ecom to: 
+name .t338 int 0 0
+generate desc for Sys->print
+descmap offset 0
+descmap s type string offset 64 (d->offset=64 start=0) returns 64
+descmap type string offset 72 returns 72
+generate desc for big
+ecom: 
+const builtin %s
+ string 1 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b341 big 0 0
+    const (64) int 6 0
+ecom: 
+name name string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b341 big 0 0
+    const (72) int 6 0
+ecom: 
+= string 10 2
+  name mw string 0 0
+  call string 10 2
+    -> fn(c: ref Context, sh: Sh, name: string, wtype: int): string 12 1
+      name mod Shellbuiltin 0 0
+      name whatis nothing 11 1
+    seq no type 10 1
+      name ctxt ref Context 0 0
+      seq no type 10 1
+        name myself Sh 1 0
+        seq no type 10 1
+          name name string 0 0
+          seq no type 10 1
+            const BUILTIN (0) int 6 0
+ecom: 
+call string 10 2
+  -> fn(c: ref Context, sh: Sh, name: string, wtype: int): string 12 1
+    name mod Shellbuiltin 0 0
+    name whatis nothing 11 1
+  seq no type 10 1
+    name ctxt ref Context 0 0
+    seq no type 10 1
+      name myself Sh 1 0
+      seq no type 10 1
+        name name string 0 0
+        seq no type 10 1
+          const BUILTIN (0) int 6 0
+ecom to: 
+name mw string 0 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b341 big 0 0
+    const (64) int 6 0
+ecom: 
+name myself Sh 1 0
+ecom to: 
+* Sh 8 0
+  + int 15 0
+    name .b341 big 0 0
+    const (72) int 6 0
+ecom: 
+name name string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b341 big 0 0
+    const (80) int 6 0
+ecom: 
+const BUILTIN (0) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b341 big 0 0
+    const (88) int 6 0
+ecom: 
+= string 10 1
+  name mw string 0 0
+  name name string 0 0
+ecom: 
+name name string 0 0
+ecom to: 
+name mw string 0 0
+ecom: 
++= string 10 2
+  name w string 0 0
+  + string 10 2
+    + string 10 2
+      + string 10 2
+        + string 10 2
+          const load  string 1 0
+          call string 10 2
+            name modname fn(ctxt: ref Context, mod: Shellbuiltin): string 11 1
+            seq no type 10 1
+              name ctxt ref Context 0 0
+              seq no type 10 1
+                name mod Shellbuiltin 0 0
+        const ;  string 1 0
+      name mw string 0 0
+    const 
+ string 1 0
+eacom: 
++ string 10 2
+  + string 10 2
+    + string 10 2
+      + string 10 2
+        const load  string 1 0
+        call string 10 2
+          name modname fn(ctxt: ref Context, mod: Shellbuiltin): string 11 1
+          seq no type 10 1
+            name ctxt ref Context 0 0
+            seq no type 10 1
+              name mod Shellbuiltin 0 0
+      const ;  string 1 0
+    name mw string 0 0
+  const 
+ string 1 0
+ecom: 
++ string 10 2
+  + string 10 2
+    + string 10 2
+      + string 10 2
+        const load  string 1 0
+        call string 10 2
+          name modname fn(ctxt: ref Context, mod: Shellbuiltin): string 11 1
+          seq no type 10 1
+            name ctxt ref Context 0 0
+            seq no type 10 1
+              name mod Shellbuiltin 0 0
+      const ;  string 1 0
+    name mw string 0 0
+  const 
+ string 1 0
+ecom to: 
+name .t343 string 0 0
+ecom: 
++ string 10 2
+  + string 10 2
+    + string 10 2
+      const load  string 1 0
+      call string 10 2
+        name modname fn(ctxt: ref Context, mod: Shellbuiltin): string 11 1
+        seq no type 10 1
+          name ctxt ref Context 0 0
+          seq no type 10 1
+            name mod Shellbuiltin 0 0
+    const ;  string 1 0
+  name mw string 0 0
+ecom to: 
+name .t343 string 0 0
+ecom: 
++ string 10 2
+  + string 10 2
+    const load  string 1 0
+    call string 10 2
+      name modname fn(ctxt: ref Context, mod: Shellbuiltin): string 11 1
+      seq no type 10 1
+        name ctxt ref Context 0 0
+        seq no type 10 1
+          name mod Shellbuiltin 0 0
+  const ;  string 1 0
+ecom to: 
+name .t343 string 0 0
+ecom: 
++ string 10 2
+  const load  string 1 0
+  call string 10 2
+    name modname fn(ctxt: ref Context, mod: Shellbuiltin): string 11 1
+    seq no type 10 1
+      name ctxt ref Context 0 0
+      seq no type 10 1
+        name mod Shellbuiltin 0 0
+ecom to: 
+name .t343 string 0 0
+eacom: 
+call string 10 2
+  name modname fn(ctxt: ref Context, mod: Shellbuiltin): string 11 1
+  seq no type 10 1
+    name ctxt ref Context 0 0
+    seq no type 10 1
+      name mod Shellbuiltin 0 0
+ecom: 
+call string 10 2
+  name modname fn(ctxt: ref Context, mod: Shellbuiltin): string 11 1
+  seq no type 10 1
+    name ctxt ref Context 0 0
+    seq no type 10 1
+      name mod Shellbuiltin 0 0
+ecom to: 
+name .t343 string 0 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b341 big 0 0
+    const (64) int 6 0
+ecom: 
+name mod Shellbuiltin 0 0
+ecom to: 
+* Shellbuiltin 8 0
+  + int 15 0
+    name .b341 big 0 0
+    const (72) int 6 0
+ecom: 
+= string 10 1
+  name .t343 string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name .t343 string 0 0
+ecom: 
+= string 10 1
+  name mw string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name mw string 0 0
+ecom: 
+++ int 10 1
+  name found int 0 0
+  const (1) int 6 0
+ecom: 
+= Shellbuiltin 10 1
+  name mod Shellbuiltin 0 0
+  name nil Shellbuiltin 1 0
+ecom: 
+name nil Shellbuiltin 1 0
+ecom to: 
+name mod Shellbuiltin 0 0
+ecom: 
+= int 10 1
+  name disfile int 0 0
+  const (0) int 6 0
+ecom: 
+const (0) int 6 0
+ecom to: 
+name disfile int 0 0
+eacom: 
+len int 10 1
+  name name string 0 0
+ecom: 
+len int 10 1
+  name name string 0 0
+ecom to: 
+name .t338 int 0 0
+eacom: 
+slice string 10 2
+  name name string 0 0
+  seq no type 10 2
+    - int 10 1
+      len int 10 1
+        name name string 0 0
+      const (4) int 6 0
+    nothing no type 10 1
+ecom: 
+slice string 10 2
+  name name string 0 0
+  seq no type 10 2
+    - int 10 1
+      len int 10 1
+        name name string 0 0
+      const (4) int 6 0
+    nothing no type 10 1
+ecom to: 
+name .t343 string 0 0
+ecom: 
+len int 10 1
+  name name string 0 0
+ecom to: 
+name .t338 int 0 0
+eacom: 
+- int 10 1
+  len int 10 1
+    name name string 0 0
+  const (4) int 6 0
+ecom: 
+- int 10 1
+  len int 10 1
+    name name string 0 0
+  const (4) int 6 0
+ecom to: 
+name .t346 int 0 0
+ecom: 
+len int 10 1
+  name name string 0 0
+ecom to: 
+name .t346 int 0 0
+ecom: 
+name name string 0 0
+ecom to: 
+name .t343 string 0 0
+ecom: 
+= string 10 1
+  name .t343 string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name .t343 string 0 0
+ecom: 
+= int 10 1
+  name disfile int 0 0
+  const (1) int 6 0
+ecom: 
+const (1) int 6 0
+ecom to: 
+name disfile int 0 0
+eacom: 
+len int 10 1
+  name name string 0 0
+ecom: 
+len int 10 1
+  name name string 0 0
+ecom to: 
+name .t346 int 0 0
+eacom: 
+inds int 10 1
+  name name string 0 0
+  const (0) int 6 0
+ecom: 
+inds int 10 1
+  name name string 0 0
+  const (0) int 6 0
+ecom to: 
+name .t346 int 0 0
+eacom: 
+slice string 10 1
+  name name string 0 0
+  seq no type 10 1
+    const (0) int 6 0
+    const (2) int 6 0
+ecom: 
+slice string 10 1
+  name name string 0 0
+  seq no type 10 1
+    const (0) int 6 0
+    const (2) int 6 0
+ecom to: 
+name .t343 string 0 0
+ecom: 
+name name string 0 0
+ecom to: 
+name .t343 string 0 0
+ecom: 
+= string 10 1
+  name .t343 string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name .t343 string 0 0
+ecom: 
+= list of string 10 1
+  name pathlist list of string 0 0
+  :: list of string 10 1
+    const  string 1 0
+    name nil polymorphic type 1 0
+ecom: 
+:: list of string 10 1
+  const  string 1 0
+  name nil polymorphic type 1 0
+ecom to: 
+name pathlist list of string 0 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+name .t343 list of string 0 0
+ecom: 
+= list of string 10 1
+  name .t343 list of string 0 0
+  name nil list of string 1 0
+ecom: 
+name nil list of string 1 0
+ecom to: 
+name .t343 list of string 0 0
+eacom: 
+= list of ref Listnode 10 2
+  name pl list of ref Listnode 0 0
+    vardecl list of string 10 1
+      seq nothing 10 1
+  call list of ref Listnode 10 2
+    name get fn(ctxt: self ref Context, name: string): list of ref Listnode 11 1
+    seq nothing 10 1
+      name ctxt ref Context 0 0
+      seq no type 10 1
+        const path string 1 0
+ecom: 
+= list of ref Listnode 10 2
+  name pl list of ref Listnode 0 0
+    vardecl list of string 10 1
+      seq nothing 10 1
+  call list of ref Listnode 10 2
+    name get fn(ctxt: self ref Context, name: string): list of ref Listnode 11 1
+    seq nothing 10 1
+      name ctxt ref Context 0 0
+      seq no type 10 1
+        const path string 1 0
+ecom to: 
+name .t343 list of ref Listnode 0 0
+ecom: 
+call list of ref Listnode 10 2
+  name get fn(ctxt: self ref Context, name: string): list of ref Listnode 11 1
+  seq nothing 10 1
+    name ctxt ref Context 0 0
+    seq no type 10 1
+      const path string 1 0
+ecom to: 
+name pl list of ref Listnode 0 0
+  vardecl list of string 10 1
+    seq nothing 10 1
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b341 big 0 0
+    const (64) int 6 0
+ecom: 
+const path string 1 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b341 big 0 0
+    const (72) int 6 0
+ecom: 
+= list of ref Listnode 10 1
+  name .t343 list of ref Listnode 0 0
+  name nil list of ref Listnode 1 0
+ecom: 
+name nil list of ref Listnode 1 0
+ecom to: 
+name .t343 list of ref Listnode 0 0
+ecom: 
+= list of string 10 2
+  name pathlist list of string 0 0
+  call list of string 10 2
+    name list2stringlist fn(nl: list of ref Listnode): list of string 11 1
+    seq no type 10 1
+      name pl list of ref Listnode 0 0
+ecom: 
+call list of string 10 2
+  name list2stringlist fn(nl: list of ref Listnode): list of string 11 1
+  seq no type 10 1
+    name pl list of ref Listnode 0 0
+ecom to: 
+name pathlist list of string 0 0
+generate desc for big
+ecom: 
+name pl list of ref Listnode 0 0
+ecom to: 
+* list of ref Listnode 8 0
+  + int 15 0
+    name .b341 big 0 0
+    const (64) int 6 0
+ecom: 
+= list of string 10 1
+  name pathlist list of string 0 0
+  :: list of string 10 1
+    const /dis string 1 0
+    :: list of string 10 1
+      const . string 1 0
+      name nil polymorphic type 1 0
+ecom: 
+:: list of string 10 1
+  const /dis string 1 0
+  :: list of string 10 1
+    const . string 1 0
+    name nil polymorphic type 1 0
+ecom to: 
+name pathlist list of string 0 0
+ecom: 
+:: list of string 10 1
+  const . string 1 0
+  name nil polymorphic type 1 0
+ecom to: 
+name .t343 list of string 0 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+name .t343 list of string 0 0
+ecom: 
+= list of string 10 1
+  name .t343 list of string 0 0
+  name nil list of string 1 0
+ecom: 
+name nil list of string 1 0
+ecom to: 
+name .t343 list of string 0 0
+ecom: 
+= string 10 1
+  name foundpath string 0 0
+    name pl list of ref Listnode 0 0
+      vardecl list of string 10 1
+        seq nothing 10 1
+  const  string 1 0
+ecom: 
+const  string 1 0
+ecom to: 
+name foundpath string 0 0
+  name pl list of ref Listnode 0 0
+    vardecl list of string 10 1
+      seq nothing 10 1
+eacom: 
+hd string 10 1
+  name pathlist list of string 0 0
+ecom: 
+hd string 10 1
+  name pathlist list of string 0 0
+ecom to: 
+name .t343 string 0 0
+ecom: 
+= string 10 1
+  name .t343 string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name .t343 string 0 0
+ecom: 
+= string 10 1
+  name path string 0 0
+  + string 10 1
+    + string 10 1
+      hd string 10 1
+        name pathlist list of string 0 0
+      const / string 1 0
+    name name string 0 0
+ecom: 
++ string 10 1
+  + string 10 1
+    hd string 10 1
+      name pathlist list of string 0 0
+    const / string 1 0
+  name name string 0 0
+ecom to: 
+name path string 0 0
+ecom: 
++ string 10 1
+  hd string 10 1
+    name pathlist list of string 0 0
+  const / string 1 0
+ecom to: 
+name .t343 string 0 0
+ecom: 
+hd string 10 1
+  name pathlist list of string 0 0
+ecom to: 
+name .t343 string 0 0
+ecom: 
+= string 10 1
+  name .t343 string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name .t343 string 0 0
+ecom: 
+= string 10 1
+  name path string 0 0
+  name name string 0 0
+ecom: 
+name name string 0 0
+ecom to: 
+name path string 0 0
+eacom: 
+= ref Sys->FD 10 2
+  name fd ref Sys->FD 0 0
+    vardecl string 10 1
+      seq nothing 10 1
+  call ref Sys->FD 10 2
+    -> fn(s: string, mode: int): ref Sys->FD 12 1
+      name sys Sys 1 0
+      name open nothing 11 1
+    seq no type 10 1
+      name path string 0 0
+      seq no type 10 1
+        const OREAD (0) int 6 0
+generate desc for ref Sys->FD
+ecom: 
+= ref Sys->FD 10 2
+  name fd ref Sys->FD 0 0
+    vardecl string 10 1
+      seq nothing 10 1
+  call ref Sys->FD 10 2
+    -> fn(s: string, mode: int): ref Sys->FD 12 1
+      name sys Sys 1 0
+      name open nothing 11 1
+    seq no type 10 1
+      name path string 0 0
+      seq no type 10 1
+        const OREAD (0) int 6 0
+ecom to: 
+name .b345 ref Sys->FD 0 0
+ecom: 
+call ref Sys->FD 10 2
+  -> fn(s: string, mode: int): ref Sys->FD 12 1
+    name sys Sys 1 0
+    name open nothing 11 1
+  seq no type 10 1
+    name path string 0 0
+    seq no type 10 1
+      const OREAD (0) int 6 0
+ecom to: 
+name fd ref Sys->FD 0 0
+  vardecl string 10 1
+    seq nothing 10 1
+generate desc for big
+ecom: 
+name path string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b341 big 0 0
+    const (64) int 6 0
+ecom: 
+const OREAD (0) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b341 big 0 0
+    const (72) int 6 0
+ecom: 
+= ref Sys->FD 10 1
+  name .b345 ref Sys->FD 0 0
+  name nil ref Sys->FD 1 0
+ecom: 
+name nil ref Sys->FD 1 0
+ecom to: 
+name .b345 ref Sys->FD 0 0
+eacom: 
+call int 10 2
+  name executable fn(s: (int, Sys->Dir), mode: int): int 11 1
+  seq no type 10 2
+    call (int, Sys->Dir) 10 2
+      -> fn(fd: ref Sys->FD): (int, Sys->Dir) 12 1
+        name sys Sys 1 0
+        name fstat nothing 11 1
+      seq no type 10 1
+        name fd ref Sys->FD 0 0
+    seq no type 10 1
+      const (73) int 6 0
+ecom: 
+call int 10 2
+  name executable fn(s: (int, Sys->Dir), mode: int): int 11 1
+  seq no type 10 2
+    call (int, Sys->Dir) 10 2
+      -> fn(fd: ref Sys->FD): (int, Sys->Dir) 12 1
+        name sys Sys 1 0
+        name fstat nothing 11 1
+      seq no type 10 1
+        name fd ref Sys->FD 0 0
+    seq no type 10 1
+      const (73) int 6 0
+ecom to: 
+name .t346 int 0 0
+generate desc for big
+generate desc for (int, Sys->Dir)
+descmap adt offset 0
+descmap offset 0
+descmap t0 type int offset 0 (d->offset=0 start=0) returns -1
+descmap adt offset 8
+descmap offset 8
+descmap name type string offset 8 (d->offset=0 start=8) returns 8
+descmap uid type string offset 16 (d->offset=8 start=8) returns 16
+descmap gid type string offset 24 (d->offset=16 start=8) returns 24
+descmap muid type string offset 32 (d->offset=24 start=8) returns 32
+descmap adt offset 40
+descmap offset 40
+descmap path type big offset 40 (d->offset=0 start=40) returns -1
+descmap vers type int offset 48 (d->offset=8 start=40) returns -1
+descmap qtype type int offset 52 (d->offset=12 start=40) returns -1
+descmap qid type Sys->Qid offset 40 (d->offset=32 start=8) returns -1
+descmap mode type int offset 56 (d->offset=48 start=8) returns -1
+descmap atime type int offset 60 (d->offset=52 start=8) returns -1
+descmap mtime type int offset 64 (d->offset=56 start=8) returns -1
+descmap length type big offset 72 (d->offset=64 start=8) returns -1
+descmap dtype type int offset 80 (d->offset=72 start=8) returns -1
+descmap dev type int offset 84 (d->offset=76 start=8) returns -1
+descmap t1 type Sys->Dir offset 8 (d->offset=8 start=0) returns 32
+generate desc for (int, Sys->Dir)
+	desc	$-1,88,"78"
+ecom: 
+call (int, Sys->Dir) 10 2
+  -> fn(fd: ref Sys->FD): (int, Sys->Dir) 12 1
+    name sys Sys 1 0
+    name fstat nothing 11 1
+  seq no type 10 1
+    name fd ref Sys->FD 0 0
+ecom to: 
+name .b347 (int, Sys->Dir) 0 0
+generate desc for big
+ecom: 
+name fd ref Sys->FD 0 0
+ecom to: 
+* ref Sys->FD 8 0
+  + int 15 0
+    name .b339 big 0 0
+    const (64) int 6 0
+ecom: 
+name .b347 (int, Sys->Dir) 0 0
+ecom to: 
+* (int, Sys->Dir) 8 0
+  + int 15 0
+    name .b341 big 0 0
+    const (64) int 6 0
+generate desc for (int, Sys->Dir)
+ecom: 
+= string 10 1
+  * string 0 0
+    + int 13 1
+      adr int 13 1
+        name .b347 (int, Sys->Dir) 0 0
+      const (8) int 6 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+* string 0 0
+  + int 13 1
+    adr int 13 1
+      name .b347 (int, Sys->Dir) 0 0
+    const (8) int 6 0
+ecom: 
+= string 10 1
+  * string 0 0
+    + int 13 1
+      adr int 13 1
+        name .b347 (int, Sys->Dir) 0 0
+      const (16) int 6 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+* string 0 0
+  + int 13 1
+    adr int 13 1
+      name .b347 (int, Sys->Dir) 0 0
+    const (16) int 6 0
+ecom: 
+= string 10 1
+  * string 0 0
+    + int 13 1
+      adr int 13 1
+        name .b347 (int, Sys->Dir) 0 0
+      const (24) int 6 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+* string 0 0
+  + int 13 1
+    adr int 13 1
+      name .b347 (int, Sys->Dir) 0 0
+    const (24) int 6 0
+ecom: 
+= string 10 1
+  * string 0 0
+    + int 13 1
+      adr int 13 1
+        name .b347 (int, Sys->Dir) 0 0
+      const (32) int 6 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+* string 0 0
+  + int 13 1
+    adr int 13 1
+      name .b347 (int, Sys->Dir) 0 0
+    const (32) int 6 0
+ecom: 
+const (73) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b341 big 0 0
+    const (152) int 6 0
+ecom: 
+= string 10 1
+  name foundpath string 0 0
+  name path string 0 0
+ecom: 
+name path string 0 0
+ecom to: 
+name foundpath string 0 0
+ecom: 
+= ref Sys->FD 10 1
+  name fd ref Sys->FD 0 0
+  name nil ref Sys->FD 1 0
+ecom: 
+name nil ref Sys->FD 1 0
+ecom to: 
+name fd ref Sys->FD 0 0
+ecom: 
+= string 10 1
+  name path string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name path string 0 0
+ecom: 
++= string 10 1
+  name path string 0 0
+  const .dis string 1 0
+eacom: 
+call int 10 2
+  name executable fn(s: (int, Sys->Dir), mode: int): int 11 1
+  seq no type 10 2
+    call (int, Sys->Dir) 10 2
+      -> fn(s: string): (int, Sys->Dir) 12 1
+        name sys Sys 1 0
+        name stat nothing 11 1
+      seq no type 10 1
+        name path string 0 0
+    seq no type 10 1
+      const (292) int 6 0
+ecom: 
+call int 10 2
+  name executable fn(s: (int, Sys->Dir), mode: int): int 11 1
+  seq no type 10 2
+    call (int, Sys->Dir) 10 2
+      -> fn(s: string): (int, Sys->Dir) 12 1
+        name sys Sys 1 0
+        name stat nothing 11 1
+      seq no type 10 1
+        name path string 0 0
+    seq no type 10 1
+      const (292) int 6 0
+ecom to: 
+name .t346 int 0 0
+generate desc for big
+generate desc for (int, Sys->Dir)
+descmap adt offset 0
+descmap offset 0
+descmap t0 type int offset 0 (d->offset=0 start=0) returns -1
+descmap adt offset 8
+descmap offset 8
+descmap name type string offset 8 (d->offset=0 start=8) returns 8
+descmap uid type string offset 16 (d->offset=8 start=8) returns 16
+descmap gid type string offset 24 (d->offset=16 start=8) returns 24
+descmap muid type string offset 32 (d->offset=24 start=8) returns 32
+descmap adt offset 40
+descmap offset 40
+descmap path type big offset 40 (d->offset=0 start=40) returns -1
+descmap vers type int offset 48 (d->offset=8 start=40) returns -1
+descmap qtype type int offset 52 (d->offset=12 start=40) returns -1
+descmap qid type Sys->Qid offset 40 (d->offset=32 start=8) returns -1
+descmap mode type int offset 56 (d->offset=48 start=8) returns -1
+descmap atime type int offset 60 (d->offset=52 start=8) returns -1
+descmap mtime type int offset 64 (d->offset=56 start=8) returns -1
+descmap length type big offset 72 (d->offset=64 start=8) returns -1
+descmap dtype type int offset 80 (d->offset=72 start=8) returns -1
+descmap dev type int offset 84 (d->offset=76 start=8) returns -1
+descmap t1 type Sys->Dir offset 8 (d->offset=8 start=0) returns 32
+generate desc for (int, Sys->Dir)
+	desc	$-1,88,"78"
+ecom: 
+call (int, Sys->Dir) 10 2
+  -> fn(s: string): (int, Sys->Dir) 12 1
+    name sys Sys 1 0
+    name stat nothing 11 1
+  seq no type 10 1
+    name path string 0 0
+ecom to: 
+name .b347 (int, Sys->Dir) 0 0
+generate desc for big
+ecom: 
+name path string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b339 big 0 0
+    const (64) int 6 0
+ecom: 
+name .b347 (int, Sys->Dir) 0 0
+ecom to: 
+* (int, Sys->Dir) 8 0
+  + int 15 0
+    name .b341 big 0 0
+    const (64) int 6 0
+generate desc for (int, Sys->Dir)
+ecom: 
+= string 10 1
+  * string 0 0
+    + int 13 1
+      adr int 13 1
+        name .b347 (int, Sys->Dir) 0 0
+      const (8) int 6 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+* string 0 0
+  + int 13 1
+    adr int 13 1
+      name .b347 (int, Sys->Dir) 0 0
+    const (8) int 6 0
+ecom: 
+= string 10 1
+  * string 0 0
+    + int 13 1
+      adr int 13 1
+        name .b347 (int, Sys->Dir) 0 0
+      const (16) int 6 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+* string 0 0
+  + int 13 1
+    adr int 13 1
+      name .b347 (int, Sys->Dir) 0 0
+    const (16) int 6 0
+ecom: 
+= string 10 1
+  * string 0 0
+    + int 13 1
+      adr int 13 1
+        name .b347 (int, Sys->Dir) 0 0
+      const (24) int 6 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+* string 0 0
+  + int 13 1
+    adr int 13 1
+      name .b347 (int, Sys->Dir) 0 0
+    const (24) int 6 0
+ecom: 
+= string 10 1
+  * string 0 0
+    + int 13 1
+      adr int 13 1
+        name .b347 (int, Sys->Dir) 0 0
+      const (32) int 6 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+* string 0 0
+  + int 13 1
+    adr int 13 1
+      name .b347 (int, Sys->Dir) 0 0
+    const (32) int 6 0
+ecom: 
+const (292) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b341 big 0 0
+    const (152) int 6 0
+ecom: 
+= string 10 1
+  name foundpath string 0 0
+  name path string 0 0
+ecom: 
+name path string 0 0
+ecom to: 
+name foundpath string 0 0
+ecom: 
+= ref Sys->FD 10 1
+  name fd ref Sys->FD 0 0
+  name nil ref Sys->FD 1 0
+ecom: 
+name nil ref Sys->FD 1 0
+ecom to: 
+name fd ref Sys->FD 0 0
+ecom: 
+= string 10 1
+  name path string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name path string 0 0
+ecom: 
+= list of string 10 1
+  name pathlist list of string 0 0
+  tl list of string 10 1
+    name pathlist list of string 0 0
+ecom: 
+tl list of string 10 1
+  name pathlist list of string 0 0
+ecom to: 
+name pathlist list of string 0 0
+ecom: 
+= ref Sys->FD 10 1
+  name fd ref Sys->FD 0 0
+  name nil ref Sys->FD 1 0
+ecom: 
+name nil ref Sys->FD 1 0
+ecom to: 
+name fd ref Sys->FD 0 0
+ecom: 
+= string 10 1
+  name path string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name path string 0 0
+ecom: 
++= string 10 1
+  name w string 0 0
+  + string 10 1
+    name foundpath string 0 0
+    const 
+ string 1 0
+eacom: 
++ string 10 1
+  name foundpath string 0 0
+  const 
+ string 1 0
+ecom: 
++ string 10 1
+  name foundpath string 0 0
+  const 
+ string 1 0
+ecom to: 
+name .t343 string 0 0
+ecom: 
+= string 10 1
+  name .t343 string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name .t343 string 0 0
+ecom: 
+= string 10 1
+  name foundpath string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name foundpath string 0 0
+ecom: 
+= list of ref Listnode 10 1
+  name pl list of ref Listnode 0 0
+  name nil list of ref Listnode 1 0
+ecom: 
+name nil list of ref Listnode 1 0
+ecom to: 
+name pl list of ref Listnode 0 0
+ecom: 
+= list of string 10 1
+  name pathlist list of string 0 0
+  name nil list of string 1 0
+ecom: 
+name nil list of string 1 0
+ecom to: 
+name pathlist list of string 0 0
+ecom: 
+= list of (string, Shellbuiltin) 10 1
+  name bmods list of (string, Shellbuiltin) 0 0
+  * list of (string, Shellbuiltin) 10 1
+    + int 10 1
+      * ref Environment 8 0
+        name ctxt ref Context 0 0
+      const bmods (16) int 6 0
+ecom: 
+* list of (string, Shellbuiltin) 10 1
+  + int 10 1
+    * ref Environment 8 0
+      name ctxt ref Context 0 0
+    const bmods (16) int 6 0
+ecom to: 
+name bmods list of (string, Shellbuiltin) 0 0
+eacom: 
+* list of (string, Shellbuiltin) 10 1
+  + int 10 1
+    * ref Environment 8 0
+      name ctxt ref Context 0 0
+    const bmods (16) int 6 0
+generate desc for ref Environment
+ecom: 
+* ref Environment 8 0
+  name ctxt ref Context 0 0
+ecom to: 
+name .b345 ref Environment 0 0
+ecom: 
+= ref Environment 10 1
+  name .b345 ref Environment 0 0
+  name nil ref Environment 1 0
+ecom: 
+name nil ref Environment 1 0
+ecom to: 
+name .b345 ref Environment 0 0
+ecom: 
+= (string, Shellbuiltin) 10 2
+  tuple (string, Shellbuiltin) 10 1
+    seq nothing 10 1
+      name modname string 0 0
+      seq nothing 10 1
+        name mod Shellbuiltin 0 0
+  hd (string, Shellbuiltin) 10 1
+    name bmods list of (string, Shellbuiltin) 0 0
+ecom: 
+hd (string, Shellbuiltin) 10 1
+  name bmods list of (string, Shellbuiltin) 0 0
+ecom to: 
+name modname (string, Shellbuiltin) 0 0
+generate desc for (string, Shellbuiltin)
+eacom: 
+= string 10 2
+  name mw string 0 0
+    tuple (string, Shellbuiltin) 10 1
+      seq nothing 10 1
+        name modname (string, Shellbuiltin) 0 0
+        seq nothing 10 1
+          name mod Shellbuiltin 0 0
+  call string 10 2
+    -> fn(c: ref Context, sh: Sh, name: string, wtype: int): string 12 1
+      name mod Shellbuiltin 0 0
+      name whatis nothing 11 1
+    seq no type 10 1
+      name ctxt ref Context 0 0
+      seq no type 10 1
+        name myself Sh 1 0
+        seq no type 10 1
+          name name string 0 0
+          seq no type 10 1
+            const OTHER (2) int 6 0
+ecom: 
+= string 10 2
+  name mw string 0 0
+    tuple (string, Shellbuiltin) 10 1
+      seq nothing 10 1
+        name modname (string, Shellbuiltin) 0 0
+        seq nothing 10 1
+          name mod Shellbuiltin 0 0
+  call string 10 2
+    -> fn(c: ref Context, sh: Sh, name: string, wtype: int): string 12 1
+      name mod Shellbuiltin 0 0
+      name whatis nothing 11 1
+    seq no type 10 1
+      name ctxt ref Context 0 0
+      seq no type 10 1
+        name myself Sh 1 0
+        seq no type 10 1
+          name name string 0 0
+          seq no type 10 1
+            const OTHER (2) int 6 0
+ecom to: 
+name .t343 string 0 0
+ecom: 
+call string 10 2
+  -> fn(c: ref Context, sh: Sh, name: string, wtype: int): string 12 1
+    name mod Shellbuiltin 0 0
+    name whatis nothing 11 1
+  seq no type 10 1
+    name ctxt ref Context 0 0
+    seq no type 10 1
+      name myself Sh 1 0
+      seq no type 10 1
+        name name string 0 0
+        seq no type 10 1
+          const OTHER (2) int 6 0
+ecom to: 
+name mw string 0 0
+  tuple (string, Shellbuiltin) 10 1
+    seq nothing 10 1
+      name modname (string, Shellbuiltin) 0 0
+      seq nothing 10 1
+        name mod Shellbuiltin 0 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b341 big 0 0
+    const (64) int 6 0
+ecom: 
+name myself Sh 1 0
+ecom to: 
+* Sh 8 0
+  + int 15 0
+    name .b341 big 0 0
+    const (72) int 6 0
+ecom: 
+name name string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b341 big 0 0
+    const (80) int 6 0
+ecom: 
+const OTHER (2) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b341 big 0 0
+    const (88) int 6 0
+ecom: 
+= string 10 1
+  name .t343 string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name .t343 string 0 0
+ecom: 
++= string 10 1
+  name w string 0 0
+  + string 10 1
+    + string 10 1
+      + string 10 1
+        + string 10 1
+          const load  string 1 0
+          name modname string 0 0
+        const ;  string 1 0
+      name mw string 0 0
+    const 
+ string 1 0
+eacom: 
++ string 10 1
+  + string 10 1
+    + string 10 1
+      + string 10 1
+        const load  string 1 0
+        name modname string 0 0
+      const ;  string 1 0
+    name mw string 0 0
+  const 
+ string 1 0
+ecom: 
++ string 10 1
+  + string 10 1
+    + string 10 1
+      + string 10 1
+        const load  string 1 0
+        name modname string 0 0
+      const ;  string 1 0
+    name mw string 0 0
+  const 
+ string 1 0
+ecom to: 
+name .t343 string 0 0
+ecom: 
++ string 10 1
+  + string 10 1
+    + string 10 1
+      const load  string 1 0
+      name modname string 0 0
+    const ;  string 1 0
+  name mw string 0 0
+ecom to: 
+name .t343 string 0 0
+ecom: 
++ string 10 1
+  + string 10 1
+    const load  string 1 0
+    name modname string 0 0
+  const ;  string 1 0
+ecom to: 
+name .t343 string 0 0
+ecom: 
++ string 10 1
+  const load  string 1 0
+  name modname string 0 0
+ecom to: 
+name .t343 string 0 0
+ecom: 
+= string 10 1
+  name .t343 string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name .t343 string 0 0
+ecom: 
+= string 10 1
+  name mw string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name mw string 0 0
+ecom: 
+= string 10 1
+  * string 0 0
+    adr int 13 1
+      name modname (string, Shellbuiltin) 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+* string 0 0
+  adr int 13 1
+    name modname (string, Shellbuiltin) 0 0
+ecom: 
+= Shellbuiltin 10 1
+  * Shellbuiltin 0 0
+    + int 13 1
+      adr int 13 1
+        name modname (string, Shellbuiltin) 0 0
+      const t1 (8) int 6 0
+  name nil Shellbuiltin 1 0
+ecom: 
+name nil Shellbuiltin 1 0
+ecom to: 
+* Shellbuiltin 0 0
+  + int 13 1
+    adr int 13 1
+      name modname (string, Shellbuiltin) 0 0
+    const t1 (8) int 6 0
+ecom: 
+= Shellbuiltin 10 1
+  name mod Shellbuiltin 0 0
+  name nil Shellbuiltin 1 0
+ecom: 
+name nil Shellbuiltin 1 0
+ecom to: 
+name mod Shellbuiltin 0 0
+ecom: 
+= list of (string, Shellbuiltin) 10 1
+  name bmods list of (string, Shellbuiltin) 0 0
+  tl list of (string, Shellbuiltin) 10 1
+    name bmods list of (string, Shellbuiltin) 0 0
+ecom: 
+tl list of (string, Shellbuiltin) 10 1
+  name bmods list of (string, Shellbuiltin) 0 0
+ecom to: 
+name bmods list of (string, Shellbuiltin) 0 0
+ecom: 
+used int 10 2
+  call int 10 2
+    -> fn(fd: ref Sys->FD, s: string, nil: string, *): int 12 1
+      name sys Sys 1 0
+      name fprint nothing 11 1
+    seq no type 10 2
+      call ref Sys->FD 10 2
+        -> fn(fd: int): ref Sys->FD 12 1
+          name sys Sys 1 0
+          name fildes nothing 11 1
+        seq no type 10 1
+          const (2) int 6 0
+      seq no type 10 1
+        const %s: not found
+ string 1 0
+        seq no type 10 1
+          name name string 0 0
+ecom: 
+call int 10 2
+  -> fn(fd: ref Sys->FD, s: string, nil: string, *): int 12 1
+    name sys Sys 1 0
+    name fprint nothing 11 1
+  seq no type 10 2
+    call ref Sys->FD 10 2
+      -> fn(fd: int): ref Sys->FD 12 1
+        name sys Sys 1 0
+        name fildes nothing 11 1
+      seq no type 10 1
+        const (2) int 6 0
+    seq no type 10 1
+      const %s: not found
+ string 1 0
+      seq no type 10 1
+        name name string 0 0
+ecom to: 
+name .t346 int 0 0
+generate desc for Sys->fprint
+descmap offset 0
+descmap fd type ref Sys->FD offset 64 (d->offset=64 start=0) returns 64
+descmap s type string offset 72 (d->offset=72 start=0) returns 72
+descmap type string offset 80 returns 80
+generate desc for big
+generate desc for ref Sys->FD
+ecom: 
+call ref Sys->FD 10 2
+  -> fn(fd: int): ref Sys->FD 12 1
+    name sys Sys 1 0
+    name fildes nothing 11 1
+  seq no type 10 1
+    const (2) int 6 0
+ecom to: 
+name .b345 ref Sys->FD 0 0
+generate desc for big
+ecom: 
+const (2) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b339 big 0 0
+    const (64) int 6 0
+ecom: 
+name .b345 ref Sys->FD 0 0
+ecom to: 
+* ref Sys->FD 8 0
+  + int 15 0
+    name .b341 big 0 0
+    const (64) int 6 0
+ecom: 
+= ref Sys->FD 10 1
+  name .b345 ref Sys->FD 0 0
+  name nil ref Sys->FD 1 0
+ecom: 
+name nil ref Sys->FD 1 0
+ecom to: 
+name .b345 ref Sys->FD 0 0
+ecom: 
+const %s: not found
+ string 1 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b341 big 0 0
+    const (72) int 6 0
+ecom: 
+name name string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b341 big 0 0
+    const (80) int 6 0
+ecom: 
+const not found string 1 0
+ecom to: 
+* string 8 0
+  name .ret int 0 0
+ecom: 
+used int 10 2
+  call int 10 2
+    -> fn(s: string, nil: string, *): int 12 1
+      name sys Sys 1 0
+      name print nothing 11 1
+    seq no type 10 1
+      const %s string 1 0
+      seq no type 10 1
+        name w string 0 0
+ecom: 
+call int 10 2
+  -> fn(s: string, nil: string, *): int 12 1
+    name sys Sys 1 0
+    name print nothing 11 1
+  seq no type 10 1
+    const %s string 1 0
+    seq no type 10 1
+      name w string 0 0
+ecom to: 
+name .t346 int 0 0
+generate desc for Sys->print
+descmap offset 0
+descmap s type string offset 64 (d->offset=64 start=0) returns 64
+descmap type string offset 72 returns 72
+generate desc for big
+ecom: 
+const %s string 1 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b341 big 0 0
+    const (64) int 6 0
+ecom: 
+name w string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b341 big 0 0
+    const (72) int 6 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* polymorphic type 8 0
+  name .ret int 0 0
+fn: whatisit
+64: argument ctxt ref Context ref 10
+72: argument el ref Listnode ref 3
+80: local disfile int ref 4
+84: local found int ref 4
+88: local .t338 int ref 1
+92: local .t346 int ref 1
+96: local name string ref 25
+104: local .b341 big ref 19
+112: local pathlist list of string ref 8
+120: local w string ref 8
+128: local path string ref 7
+136: local .b339 big ref 6
+144: local mods list of Shellbuiltin ref 6
+152: local .b345 ref Environment ref 5
+160: local bmods list of (string, Shellbuiltin) ref 5
+168: local foundpath string ref 5
+176: local mod Shellbuiltin ref 4
+184: local mod Shellbuiltin ref 4
+192: local mw string ref 4
+200: local mw string ref 4
+208: local val list of ref Listnode ref 3
+216: local fd ref Sys->FD ref 2
+224: local modname string ref 2
+232: local mod Shellbuiltin ref 2
+240: local mw string ref 2
+248: local pl list of ref Listnode ref 2
+256: local .b344 (int, list of Shellbuiltin) ref 2
+272: local .b347 (int, Sys->Dir) ref 2
+360: local .t340 string ref 1
+368: local .t342 string ref 1
+376: local .t343 string ref 1
+generate desc for whatisit
+descmap offset 0
+descmap ctxt type ref Context offset 64 (d->offset=64 start=0) returns 64
+descmap el type ref Listnode offset 72 (d->offset=72 start=0) returns 72
+descmap disfile type int offset 80 (d->offset=80 start=0) returns -1
+descmap found type int offset 84 (d->offset=84 start=0) returns -1
+descmap .t338 type int offset 88 (d->offset=88 start=0) returns -1
+descmap .t346 type int offset 92 (d->offset=92 start=0) returns -1
+descmap name type string offset 96 (d->offset=96 start=0) returns 96
+descmap .b341 type big offset 104 (d->offset=104 start=0) returns -1
+descmap pathlist type list of string offset 112 (d->offset=112 start=0) returns 112
+descmap w type string offset 120 (d->offset=120 start=0) returns 120
+descmap path type string offset 128 (d->offset=128 start=0) returns 128
+descmap .b339 type big offset 136 (d->offset=136 start=0) returns -1
+descmap mods type list of Shellbuiltin offset 144 (d->offset=144 start=0) returns 144
+descmap .b345 type ref Environment offset 152 (d->offset=152 start=0) returns 152
+descmap bmods type list of (string, Shellbuiltin) offset 160 (d->offset=160 start=0) returns 160
+descmap foundpath type string offset 168 (d->offset=168 start=0) returns 168
+descmap mod type Shellbuiltin offset 176 (d->offset=176 start=0) returns 176
+descmap mod type Shellbuiltin offset 184 (d->offset=184 start=0) returns 184
+descmap mw type string offset 192 (d->offset=192 start=0) returns 192
+descmap mw type string offset 200 (d->offset=200 start=0) returns 200
+descmap val type list of ref Listnode offset 208 (d->offset=208 start=0) returns 208
+descmap fd type ref Sys->FD offset 216 (d->offset=216 start=0) returns 216
+descmap modname type string offset 224 (d->offset=224 start=0) returns 224
+descmap mod type Shellbuiltin offset 232 (d->offset=232 start=0) returns 232
+descmap mw type string offset 240 (d->offset=240 start=0) returns 240
+descmap pl type list of ref Listnode offset 248 (d->offset=248 start=0) returns 248
+descmap adt offset 256
+descmap offset 256
+descmap t0 type int offset 256 (d->offset=0 start=256) returns -1
+descmap t1 type list of Shellbuiltin offset 264 (d->offset=8 start=256) returns 264
+descmap .b344 type (int, list of Shellbuiltin) offset 256 (d->offset=256 start=0) returns 264
+descmap adt offset 272
+descmap offset 272
+descmap t0 type int offset 272 (d->offset=0 start=272) returns -1
+descmap adt offset 280
+descmap offset 280
+descmap name type string offset 280 (d->offset=0 start=280) returns 280
+descmap uid type string offset 288 (d->offset=8 start=280) returns 288
+descmap gid type string offset 296 (d->offset=16 start=280) returns 296
+descmap muid type string offset 304 (d->offset=24 start=280) returns 304
+descmap adt offset 312
+descmap offset 312
+descmap path type big offset 312 (d->offset=0 start=312) returns -1
+descmap vers type int offset 320 (d->offset=8 start=312) returns -1
+descmap qtype type int offset 324 (d->offset=12 start=312) returns -1
+descmap qid type Sys->Qid offset 312 (d->offset=32 start=280) returns -1
+descmap mode type int offset 328 (d->offset=48 start=280) returns -1
+descmap atime type int offset 332 (d->offset=52 start=280) returns -1
+descmap mtime type int offset 336 (d->offset=56 start=280) returns -1
+descmap length type big offset 344 (d->offset=64 start=280) returns -1
+descmap dtype type int offset 352 (d->offset=72 start=280) returns -1
+descmap dev type int offset 356 (d->offset=76 start=280) returns -1
+descmap t1 type Sys->Dir offset 280 (d->offset=8 start=272) returns 304
+descmap .b347 type (int, Sys->Dir) offset 272 (d->offset=272 start=0) returns 304
+descmap .t340 type string offset 360 (d->offset=360 start=0) returns 360
+descmap .t342 type string offset 368 (d->offset=368 start=0) returns 368
+descmap .t343 type string offset 376 (d->offset=376 start=0) returns 376
+fncom: builtin_builtin 2 6e9810
+eacom: 
+len int 10 1
+  name args list of ref Listnode 0 0
+ecom: 
+len int 10 1
+  name args list of ref Listnode 0 0
+ecom to: 
+name .t348 int 0 0
+ecom: 
+call no type 10 2
+  name builtinusage fn(ctxt: ref Context, s: string) 11 1
+  seq no type 10 1
+    name ctxt ref Context 0 0
+    seq no type 10 1
+      const builtin command [args ...] string 1 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b349 big 0 0
+    const (64) int 6 0
+ecom: 
+const builtin command [args ...] string 1 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b349 big 0 0
+    const (72) int 6 0
+ecom: 
+= string 10 1
+  name name string 0 0
+  * string 10 1
+    + int 10 1
+      hd ref Listnode 10 1
+        tl list of ref Listnode 10 1
+          name args list of ref Listnode 0 0
+      const word (8) int 6 0
+ecom: 
+* string 10 1
+  + int 10 1
+    hd ref Listnode 10 1
+      tl list of ref Listnode 10 1
+        name args list of ref Listnode 0 0
+    const word (8) int 6 0
+ecom to: 
+name name string 0 0
+eacom: 
+* string 10 1
+  + int 10 1
+    hd ref Listnode 10 1
+      tl list of ref Listnode 10 1
+        name args list of ref Listnode 0 0
+    const word (8) int 6 0
+generate desc for ref Listnode
+generate desc for ref Listnode
+	desc	$-1,8,"80"
+ecom: 
+hd ref Listnode 10 1
+  tl list of ref Listnode 10 1
+    name args list of ref Listnode 0 0
+ecom to: 
+name .b350 ref Listnode 0 0
+eacom: 
+tl list of ref Listnode 10 1
+  name args list of ref Listnode 0 0
+ecom: 
+tl list of ref Listnode 10 1
+  name args list of ref Listnode 0 0
+ecom to: 
+name .t351 list of ref Listnode 0 0
+ecom: 
+= list of ref Listnode 10 1
+  name .t351 list of ref Listnode 0 0
+  name nil list of ref Listnode 1 0
+ecom: 
+name nil list of ref Listnode 1 0
+ecom to: 
+name .t351 list of ref Listnode 0 0
+ecom: 
+= ref Listnode 10 1
+  name .b350 ref Listnode 0 0
+  name nil ref Listnode 1 0
+ecom: 
+name nil ref Listnode 1 0
+ecom to: 
+name .b350 ref Listnode 0 0
+eacom: 
+inds int 10 1
+  name name string 0 0
+  const (0) int 6 0
+ecom: 
+inds int 10 1
+  name name string 0 0
+  const (0) int 6 0
+ecom to: 
+name .t348 int 0 0
+ecom: 
+call no type 10 2
+  name diagnostic fn(ctxt: ref Context, s: string) 11 1
+  seq no type 10 1
+    name ctxt ref Context 0 0
+    seq no type 10 1
+      + string 10 1
+        name name string 0 0
+        const  not found string 1 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b349 big 0 0
+    const (64) int 6 0
+ecom: 
++ string 10 1
+  name name string 0 0
+  const  not found string 1 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b349 big 0 0
+    const (72) int 6 0
+ecom: 
+const not found string 1 0
+ecom to: 
+* string 8 0
+  name .ret int 0 0
+ecom: 
+= (int, list of Shellbuiltin) 10 2
+  tuple (int, list of Shellbuiltin) 10 1
+    seq nothing 10 1
+      name nil polymorphic type 1 0
+      seq nothing 10 1
+        name mods list of Shellbuiltin 0 0
+  call (int, list of Shellbuiltin) 10 2
+    name findbuiltin fn(b: ref Builtins, name: string): (int, list of Shellbuiltin) 11 1
+    seq no type 10 2
+      * ref Builtins 10 1
+        + int 10 1
+          * ref Environment 8 0
+            name ctxt ref Context 0 0
+          const builtins (8) int 6 0
+      seq no type 10 1
+        name name string 0 0
+generate desc for (int, list of Shellbuiltin)
+ecom: 
+call (int, list of Shellbuiltin) 10 2
+  name findbuiltin fn(b: ref Builtins, name: string): (int, list of Shellbuiltin) 11 1
+  seq no type 10 2
+    * ref Builtins 10 1
+      + int 10 1
+        * ref Environment 8 0
+          name ctxt ref Context 0 0
+        const builtins (8) int 6 0
+    seq no type 10 1
+      name name string 0 0
+ecom to: 
+name .b352 (int, list of Shellbuiltin) 0 0
+generate desc for big
+ecom: 
+* ref Builtins 10 1
+  + int 10 1
+    * ref Environment 8 0
+      name ctxt ref Context 0 0
+    const builtins (8) int 6 0
+ecom to: 
+* ref Builtins 8 0
+  + int 15 0
+    name .b349 big 0 0
+    const (64) int 6 0
+eacom: 
+* ref Builtins 10 1
+  + int 10 1
+    * ref Environment 8 0
+      name ctxt ref Context 0 0
+    const builtins (8) int 6 0
+generate desc for ref Environment
+ecom: 
+* ref Environment 8 0
+  name ctxt ref Context 0 0
+ecom to: 
+name .b350 ref Environment 0 0
+ecom: 
+= ref Environment 10 1
+  name .b350 ref Environment 0 0
+  name nil ref Environment 1 0
+ecom: 
+name nil ref Environment 1 0
+ecom to: 
+name .b350 ref Environment 0 0
+ecom: 
+name name string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b349 big 0 0
+    const (72) int 6 0
+ecom: 
+= list of Shellbuiltin 10 1
+  * list of Shellbuiltin 0 0
+    + int 13 1
+      adr int 13 1
+        name .b352 (int, list of Shellbuiltin) 0 0
+      const t1 (8) int 6 0
+  name nil list of Shellbuiltin 1 0
+ecom: 
+name nil list of Shellbuiltin 1 0
+ecom to: 
+* list of Shellbuiltin 0 0
+  + int 13 1
+    adr int 13 1
+      name .b352 (int, list of Shellbuiltin) 0 0
+    const t1 (8) int 6 0
+eacom: 
+hd Shellbuiltin 10 1
+  name mods list of Shellbuiltin 0 0
+ecom: 
+hd Shellbuiltin 10 1
+  name mods list of Shellbuiltin 0 0
+ecom to: 
+name .t351 Shellbuiltin 0 0
+ecom: 
+= Shellbuiltin 10 1
+  name .t351 Shellbuiltin 0 0
+  name nil Shellbuiltin 1 0
+ecom: 
+name nil Shellbuiltin 1 0
+ecom to: 
+name .t351 Shellbuiltin 0 0
+ecom: 
+call string 10 3
+  -> fn(c: ref Context, sh: Sh, cmd: list of ref Listnode, last: int): string 12 2
+    hd Shellbuiltin 10 1
+      name mods list of Shellbuiltin 0 0
+    name runbuiltin nothing 11 1
+  seq no type 10 2
+    name ctxt ref Context 0 0
+    seq no type 10 2
+      name myself Sh 1 0
+      seq no type 10 2
+        tl list of ref Listnode 10 1
+          name args list of ref Listnode 0 0
+        seq no type 10 1
+          name last int 0 0
+ecom to: 
+* string 8 0
+  name .ret int 0 0
+generate desc for big
+eacom: 
+hd Shellbuiltin 10 1
+  name mods list of Shellbuiltin 0 0
+ecom: 
+hd Shellbuiltin 10 1
+  name mods list of Shellbuiltin 0 0
+ecom to: 
+name .t351 Shellbuiltin 0 0
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b349 big 0 0
+    const (64) int 6 0
+ecom: 
+name myself Sh 1 0
+ecom to: 
+* Sh 8 0
+  + int 15 0
+    name .b349 big 0 0
+    const (72) int 6 0
+ecom: 
+tl list of ref Listnode 10 1
+  name args list of ref Listnode 0 0
+ecom to: 
+* list of ref Listnode 8 0
+  + int 15 0
+    name .b349 big 0 0
+    const (80) int 6 0
+ecom: 
+name last int 0 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b349 big 0 0
+    const (88) int 6 0
+ecom: 
+= Shellbuiltin 10 1
+  name .t351 Shellbuiltin 0 0
+  name nil Shellbuiltin 1 0
+ecom: 
+name nil Shellbuiltin 1 0
+ecom to: 
+name .t351 Shellbuiltin 0 0
+ecom: 
+= list of Shellbuiltin 10 1
+  name mods list of Shellbuiltin 0 0
+  tl list of Shellbuiltin 10 1
+    name mods list of Shellbuiltin 0 0
+ecom: 
+tl list of Shellbuiltin 10 1
+  name mods list of Shellbuiltin 0 0
+ecom to: 
+name mods list of Shellbuiltin 0 0
+eacom: 
+& int 10 1
+  * int 10 1
+    + int 10 1
+      * ref Localenv 10 1
+        + int 10 1
+          * ref Environment 8 0
+            name ctxt ref Context 0 0
+          const localenv (24) int 6 0
+      const flags (16) int 6 0
+  const EXECPRINT (4) int 6 0
+ecom: 
+& int 10 1
+  * int 10 1
+    + int 10 1
+      * ref Localenv 10 1
+        + int 10 1
+          * ref Environment 8 0
+            name ctxt ref Context 0 0
+          const localenv (24) int 6 0
+      const flags (16) int 6 0
+  const EXECPRINT (4) int 6 0
+ecom to: 
+name .t348 int 0 0
+eacom: 
+* int 10 1
+  + int 10 1
+    * ref Localenv 10 1
+      + int 10 1
+        * ref Environment 8 0
+          name ctxt ref Context 0 0
+        const localenv (24) int 6 0
+    const flags (16) int 6 0
+generate desc for ref Localenv
+ecom: 
+* ref Localenv 10 1
+  + int 10 1
+    * ref Environment 8 0
+      name ctxt ref Context 0 0
+    const localenv (24) int 6 0
+ecom to: 
+name .b350 ref Localenv 0 0
+eacom: 
+* ref Localenv 10 1
+  + int 10 1
+    * ref Environment 8 0
+      name ctxt ref Context 0 0
+    const localenv (24) int 6 0
+generate desc for ref Environment
+ecom: 
+* ref Environment 8 0
+  name ctxt ref Context 0 0
+ecom to: 
+name .b350 ref Environment 0 0
+ecom: 
+= ref Localenv 10 1
+  name .b350 ref Localenv 0 0
+  name nil ref Localenv 1 0
+ecom: 
+name nil ref Localenv 1 0
+ecom to: 
+name .b350 ref Localenv 0 0
+ecom: 
+used int 10 3
+  call int 10 3
+    -> fn(fd: ref Sys->FD, s: string, nil: string, *): int 12 1
+      name sys Sys 1 0
+      name fprint nothing 11 1
+    seq no type 10 3
+      call ref Sys->FD 10 2
+        -> fn(fd: int): ref Sys->FD 12 1
+          name sys Sys 1 0
+          name fildes nothing 11 1
+        seq no type 10 1
+          const (2) int 6 0
+      seq no type 10 2
+        const %s
+ string 1 0
+        seq no type 10 2
+          call string 10 2
+            name quoted fn(val: list of ref Listnode, quoteblocks: int): string 11 1
+            seq no type 10 2
+              tl list of ref Listnode 10 1
+                name args list of ref Listnode 0 0
+              seq no type 10 1
+                const (0) int 6 0
+ecom: 
+call int 10 3
+  -> fn(fd: ref Sys->FD, s: string, nil: string, *): int 12 1
+    name sys Sys 1 0
+    name fprint nothing 11 1
+  seq no type 10 3
+    call ref Sys->FD 10 2
+      -> fn(fd: int): ref Sys->FD 12 1
+        name sys Sys 1 0
+        name fildes nothing 11 1
+      seq no type 10 1
+        const (2) int 6 0
+    seq no type 10 2
+      const %s
+ string 1 0
+      seq no type 10 2
+        call string 10 2
+          name quoted fn(val: list of ref Listnode, quoteblocks: int): string 11 1
+          seq no type 10 2
+            tl list of ref Listnode 10 1
+              name args list of ref Listnode 0 0
+            seq no type 10 1
+              const (0) int 6 0
+ecom to: 
+name .t348 int 0 0
+generate desc for Sys->fprint
+descmap offset 0
+descmap fd type ref Sys->FD offset 64 (d->offset=64 start=0) returns 64
+descmap s type string offset 72 (d->offset=72 start=0) returns 72
+descmap type string offset 80 returns 80
+generate desc for big
+generate desc for ref Sys->FD
+ecom: 
+call ref Sys->FD 10 2
+  -> fn(fd: int): ref Sys->FD 12 1
+    name sys Sys 1 0
+    name fildes nothing 11 1
+  seq no type 10 1
+    const (2) int 6 0
+ecom to: 
+name .b350 ref Sys->FD 0 0
+generate desc for big
+ecom: 
+const (2) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b353 big 0 0
+    const (64) int 6 0
+ecom: 
+call string 10 2
+  name quoted fn(val: list of ref Listnode, quoteblocks: int): string 11 1
+  seq no type 10 2
+    tl list of ref Listnode 10 1
+      name args list of ref Listnode 0 0
+    seq no type 10 1
+      const (0) int 6 0
+ecom to: 
+name .t351 string 0 0
+generate desc for big
+ecom: 
+tl list of ref Listnode 10 1
+  name args list of ref Listnode 0 0
+ecom to: 
+* list of ref Listnode 8 0
+  + int 15 0
+    name .b353 big 0 0
+    const (64) int 6 0
+ecom: 
+const (0) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b353 big 0 0
+    const (72) int 6 0
+ecom: 
+name .b350 ref Sys->FD 0 0
+ecom to: 
+* ref Sys->FD 8 0
+  + int 15 0
+    name .b349 big 0 0
+    const (64) int 6 0
+ecom: 
+= ref Sys->FD 10 1
+  name .b350 ref Sys->FD 0 0
+  name nil ref Sys->FD 1 0
+ecom: 
+name nil ref Sys->FD 1 0
+ecom to: 
+name .b350 ref Sys->FD 0 0
+ecom: 
+const %s
+ string 1 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b349 big 0 0
+    const (72) int 6 0
+ecom: 
+name .t351 string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b349 big 0 0
+    const (80) int 6 0
+ecom: 
+= string 10 1
+  name .t351 string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name .t351 string 0 0
+ecom: 
+call string 10 2
+  name runexternal fn(ctxt: ref Context, args: list of ref Listnode, last: int): string 11 1
+  seq no type 10 2
+    name ctxt ref Context 0 0
+    seq no type 10 2
+      tl list of ref Listnode 10 1
+        name args list of ref Listnode 0 0
+      seq no type 10 1
+        name last int 0 0
+ecom to: 
+* string 8 0
+  name .ret int 0 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b353 big 0 0
+    const (64) int 6 0
+ecom: 
+tl list of ref Listnode 10 1
+  name args list of ref Listnode 0 0
+ecom to: 
+* list of ref Listnode 8 0
+  + int 15 0
+    name .b353 big 0 0
+    const (72) int 6 0
+ecom: 
+name last int 0 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b353 big 0 0
+    const (80) int 6 0
+fn: builtin_builtin
+64: argument ctxt ref Context ref 7
+72: argument args list of ref Listnode ref 5
+80: argument last int ref 2
+84: local .t348 int ref 1
+88: local mods list of Shellbuiltin ref 6
+96: local .b349 big ref 5
+104: local .b350 ref Listnode ref 5
+112: local name string ref 5
+120: local .b353 big ref 3
+128: local .t351 list of ref Listnode ref 1
+136: local .b352 (int, list of Shellbuiltin) ref 1
+generate desc for builtin_builtin
+descmap offset 0
+descmap ctxt type ref Context offset 64 (d->offset=64 start=0) returns 64
+descmap args type list of ref Listnode offset 72 (d->offset=72 start=0) returns 72
+descmap last type int offset 80 (d->offset=80 start=0) returns -1
+descmap .t348 type int offset 84 (d->offset=84 start=0) returns -1
+descmap mods type list of Shellbuiltin offset 88 (d->offset=88 start=0) returns 88
+descmap .b349 type big offset 96 (d->offset=96 start=0) returns -1
+descmap .b350 type ref Listnode offset 104 (d->offset=104 start=0) returns 104
+descmap name type string offset 112 (d->offset=112 start=0) returns 112
+descmap .b353 type big offset 120 (d->offset=120 start=0) returns -1
+descmap .t351 type list of ref Listnode offset 128 (d->offset=128 start=0) returns 128
+descmap adt offset 136
+descmap offset 136
+descmap t0 type int offset 136 (d->offset=0 start=136) returns -1
+descmap t1 type list of Shellbuiltin offset 144 (d->offset=8 start=136) returns 144
+descmap .b352 type (int, list of Shellbuiltin) offset 136 (d->offset=136 start=0) returns 144
+fncom: modname 5 6e98d0
+ecom: 
+= list of (string, Shellbuiltin) 10 1
+  name ml list of (string, Shellbuiltin) 0 0
+  * list of (string, Shellbuiltin) 10 1
+    + int 10 1
+      * ref Environment 8 0
+        name ctxt ref Context 0 0
+      const bmods (16) int 6 0
+ecom: 
+* list of (string, Shellbuiltin) 10 1
+  + int 10 1
+    * ref Environment 8 0
+      name ctxt ref Context 0 0
+    const bmods (16) int 6 0
+ecom to: 
+name ml list of (string, Shellbuiltin) 0 0
+eacom: 
+* list of (string, Shellbuiltin) 10 1
+  + int 10 1
+    * ref Environment 8 0
+      name ctxt ref Context 0 0
+    const bmods (16) int 6 0
+generate desc for ref Environment
+ecom: 
+* ref Environment 8 0
+  name ctxt ref Context 0 0
+ecom to: 
+name .b354 ref Environment 0 0
+ecom: 
+= ref Environment 10 1
+  name .b354 ref Environment 0 0
+  name nil ref Environment 1 0
+ecom: 
+name nil ref Environment 1 0
+ecom to: 
+name .b354 ref Environment 0 0
+ecom: 
+= (string, Shellbuiltin) 10 2
+  tuple (string, Shellbuiltin) 10 1
+    seq nothing 10 1
+      name bname string 0 0
+      seq nothing 10 1
+        name bmod Shellbuiltin 0 0
+  hd (string, Shellbuiltin) 10 1
+    name ml list of (string, Shellbuiltin) 0 0
+ecom: 
+hd (string, Shellbuiltin) 10 1
+  name ml list of (string, Shellbuiltin) 0 0
+ecom to: 
+name bname (string, Shellbuiltin) 0 0
+generate desc for (string, Shellbuiltin)
+ecom: 
+name bname string 0 0
+ecom to: 
+* string 8 0
+  name .ret int 0 0
+ecom: 
+= string 10 1
+  * string 0 0
+    adr int 13 1
+      name bname (string, Shellbuiltin) 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+* string 0 0
+  adr int 13 1
+    name bname (string, Shellbuiltin) 0 0
+ecom: 
+= Shellbuiltin 10 1
+  * Shellbuiltin 0 0
+    + int 13 1
+      adr int 13 1
+        name bname (string, Shellbuiltin) 0 0
+      const t1 (8) int 6 0
+  name nil Shellbuiltin 1 0
+ecom: 
+name nil Shellbuiltin 1 0
+ecom to: 
+* Shellbuiltin 0 0
+  + int 13 1
+    adr int 13 1
+      name bname (string, Shellbuiltin) 0 0
+    const t1 (8) int 6 0
+ecom: 
+= Shellbuiltin 10 1
+  name bmod Shellbuiltin 0 0
+  name nil Shellbuiltin 1 0
+ecom: 
+name nil Shellbuiltin 1 0
+ecom to: 
+name bmod Shellbuiltin 0 0
+ecom: 
+= list of (string, Shellbuiltin) 10 1
+  name ml list of (string, Shellbuiltin) 0 0
+  tl list of (string, Shellbuiltin) 10 1
+    name ml list of (string, Shellbuiltin) 0 0
+ecom: 
+tl list of (string, Shellbuiltin) 10 1
+  name ml list of (string, Shellbuiltin) 0 0
+ecom to: 
+name ml list of (string, Shellbuiltin) 0 0
+ecom: 
+const builtin string 1 0
+ecom to: 
+* string 8 0
+  name .ret int 0 0
+fn: modname
+64: argument ctxt ref Context ref 1
+72: argument mod Shellbuiltin ref 1
+80: local ml list of (string, Shellbuiltin) ref 5
+88: local bname string ref 2
+96: local bmod Shellbuiltin ref 2
+104: local .b354 ref Environment ref 1
+generate desc for modname
+descmap offset 0
+descmap ctxt type ref Context offset 64 (d->offset=64 start=0) returns 64
+descmap mod type Shellbuiltin offset 72 (d->offset=72 start=0) returns 72
+descmap ml type list of (string, Shellbuiltin) offset 80 (d->offset=80 start=0) returns 80
+descmap bname type string offset 88 (d->offset=88 start=0) returns 88
+descmap bmod type Shellbuiltin offset 96 (d->offset=96 start=0) returns 96
+descmap .b354 type ref Environment offset 104 (d->offset=104 start=0) returns 104
+fncom: loadmodule 3 6e9990
+ecom: 
+= list of (string, Shellbuiltin) 10 1
+  name bl list of (string, Shellbuiltin) 0 0
+  * list of (string, Shellbuiltin) 10 1
+    + int 10 1
+      * ref Environment 8 0
+        name ctxt ref Context 0 0
+      const bmods (16) int 6 0
+ecom: 
+* list of (string, Shellbuiltin) 10 1
+  + int 10 1
+    * ref Environment 8 0
+      name ctxt ref Context 0 0
+    const bmods (16) int 6 0
+ecom to: 
+name bl list of (string, Shellbuiltin) 0 0
+eacom: 
+* list of (string, Shellbuiltin) 10 1
+  + int 10 1
+    * ref Environment 8 0
+      name ctxt ref Context 0 0
+    const bmods (16) int 6 0
+generate desc for ref Environment
+ecom: 
+* ref Environment 8 0
+  name ctxt ref Context 0 0
+ecom to: 
+name .b355 ref Environment 0 0
+ecom: 
+= ref Environment 10 1
+  name .b355 ref Environment 0 0
+  name nil ref Environment 1 0
+ecom: 
+name nil ref Environment 1 0
+ecom to: 
+name .b355 ref Environment 0 0
+ecom: 
+= (string, Shellbuiltin) 10 2
+  tuple (string, Shellbuiltin) 10 1
+    seq nothing 10 1
+      name bname string 0 0
+      seq nothing 10 1
+        name nil polymorphic type 1 0
+  hd (string, Shellbuiltin) 10 1
+    name bl list of (string, Shellbuiltin) 0 0
+generate desc for (string, Shellbuiltin)
+ecom: 
+hd (string, Shellbuiltin) 10 1
+  name bl list of (string, Shellbuiltin) 0 0
+ecom to: 
+name .b356 (string, Shellbuiltin) 0 0
+generate desc for (string, Shellbuiltin)
+ecom: 
+= string 10 1
+  * string 0 0
+    adr int 13 1
+      name .b356 (string, Shellbuiltin) 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+* string 0 0
+  adr int 13 1
+    name .b356 (string, Shellbuiltin) 0 0
+ecom: 
+= Shellbuiltin 10 1
+  * Shellbuiltin 0 0
+    + int 13 1
+      adr int 13 1
+        name .b356 (string, Shellbuiltin) 0 0
+      const t1 (8) int 6 0
+  name nil Shellbuiltin 1 0
+ecom: 
+name nil Shellbuiltin 1 0
+ecom to: 
+* Shellbuiltin 0 0
+  + int 13 1
+    adr int 13 1
+      name .b356 (string, Shellbuiltin) 0 0
+    const t1 (8) int 6 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* polymorphic type 8 0
+  name .ret int 0 0
+ecom: 
+= string 10 1
+  name bname string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name bname string 0 0
+ecom: 
+= list of (string, Shellbuiltin) 10 1
+  name bl list of (string, Shellbuiltin) 0 0
+  tl list of (string, Shellbuiltin) 10 1
+    name bl list of (string, Shellbuiltin) 0 0
+ecom: 
+tl list of (string, Shellbuiltin) 10 1
+  name bl list of (string, Shellbuiltin) 0 0
+ecom to: 
+name bl list of (string, Shellbuiltin) 0 0
+ecom: 
+= string 10 1
+  name path string 0 0
+  name name string 0 0
+ecom: 
+name name string 0 0
+ecom to: 
+name path string 0 0
+eacom: 
+len int 10 1
+  name path string 0 0
+ecom: 
+len int 10 1
+  name path string 0 0
+ecom to: 
+name .t357 int 0 0
+eacom: 
+slice string 10 2
+  name path string 0 0
+  seq no type 10 2
+    - int 10 1
+      len int 10 1
+        name path string 0 0
+      const (4) int 6 0
+    nothing no type 10 1
+ecom: 
+slice string 10 2
+  name path string 0 0
+  seq no type 10 2
+    - int 10 1
+      len int 10 1
+        name path string 0 0
+      const (4) int 6 0
+    nothing no type 10 1
+ecom to: 
+name .t358 string 0 0
+ecom: 
+len int 10 1
+  name path string 0 0
+ecom to: 
+name .t357 int 0 0
+eacom: 
+- int 10 1
+  len int 10 1
+    name path string 0 0
+  const (4) int 6 0
+ecom: 
+- int 10 1
+  len int 10 1
+    name path string 0 0
+  const (4) int 6 0
+ecom to: 
+name .t359 int 0 0
+ecom: 
+len int 10 1
+  name path string 0 0
+ecom to: 
+name .t359 int 0 0
+ecom: 
+name path string 0 0
+ecom to: 
+name .t358 string 0 0
+ecom: 
+= string 10 1
+  name .t358 string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name .t358 string 0 0
+ecom: 
++= string 10 1
+  name path string 0 0
+  const .dis string 1 0
+eacom: 
+inds int 10 1
+  name path string 0 0
+  const (0) int 6 0
+ecom: 
+inds int 10 1
+  name path string 0 0
+  const (0) int 6 0
+ecom to: 
+name .t359 int 0 0
+eacom: 
+slice string 10 1
+  name path string 0 0
+  seq no type 10 1
+    const (0) int 6 0
+    const (2) int 6 0
+ecom: 
+slice string 10 1
+  name path string 0 0
+  seq no type 10 1
+    const (0) int 6 0
+    const (2) int 6 0
+ecom to: 
+name .t358 string 0 0
+ecom: 
+name path string 0 0
+ecom to: 
+name .t358 string 0 0
+ecom: 
+= string 10 1
+  name .t358 string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name .t358 string 0 0
+ecom: 
+= string 10 1
+  name path string 0 0
+  + string 10 1
+    const /dis/sh/ string 1 0
+    name path string 0 0
+ecom: 
++ string 10 1
+  const /dis/sh/ string 1 0
+  name path string 0 0
+ecom to: 
+name path string 0 0
+ecom: 
+= Shellbuiltin 10 1
+  name mod Shellbuiltin 0 0
+  load Shellbuiltin 10 1
+    name path string 0 0
+    name .m.Shellbuiltin Shellbuiltin 17 1
+ecom: 
+load Shellbuiltin 10 1
+  name path string 0 0
+  name .m.Shellbuiltin Shellbuiltin 17 1
+ecom to: 
+name mod Shellbuiltin 0 0
+ecom: 
+call no type 10 2
+  name diagnostic fn(ctxt: ref Context, s: string) 11 1
+  seq no type 10 2
+    name ctxt ref Context 0 0
+    seq no type 10 2
+      call string 10 2
+        -> fn(s: string, nil: string, *): string 12 1
+          name sys Sys 1 0
+          name sprint nothing 11 1
+        seq no type 10 1
+          const load: cannot load %s: %r string 1 0
+          seq no type 10 1
+            name path string 0 0
+generate desc for big
+ecom: 
+call string 10 2
+  -> fn(s: string, nil: string, *): string 12 1
+    name sys Sys 1 0
+    name sprint nothing 11 1
+  seq no type 10 1
+    const load: cannot load %s: %r string 1 0
+    seq no type 10 1
+      name path string 0 0
+ecom to: 
+name .t358 string 0 0
+generate desc for Sys->sprint
+descmap offset 0
+descmap s type string offset 64 (d->offset=64 start=0) returns 64
+descmap type string offset 72 returns 72
+generate desc for big
+ecom: 
+const load: cannot load %s: %r string 1 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b361 big 0 0
+    const (64) int 6 0
+ecom: 
+name path string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b361 big 0 0
+    const (72) int 6 0
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b360 big 0 0
+    const (64) int 6 0
+ecom: 
+name .t358 string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b360 big 0 0
+    const (72) int 6 0
+ecom: 
+= string 10 1
+  name .t358 string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name .t358 string 0 0
+ecom: 
+const bad module string 1 0
+ecom to: 
+* string 8 0
+  name .ret int 0 0
+ecom: 
+= string 10 2
+  name s string 0 0
+  call string 10 2
+    -> fn(c: ref Context, sh: Sh): string 12 1
+      name mod Shellbuiltin 0 0
+      name initbuiltin nothing 11 1
+    seq no type 10 1
+      name ctxt ref Context 0 0
+      seq no type 10 1
+        name myself Sh 1 0
+ecom: 
+call string 10 2
+  -> fn(c: ref Context, sh: Sh): string 12 1
+    name mod Shellbuiltin 0 0
+    name initbuiltin nothing 11 1
+  seq no type 10 1
+    name ctxt ref Context 0 0
+    seq no type 10 1
+      name myself Sh 1 0
+ecom to: 
+name s string 0 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b361 big 0 0
+    const (64) int 6 0
+ecom: 
+name myself Sh 1 0
+ecom to: 
+* Sh 8 0
+  + int 15 0
+    name .b361 big 0 0
+    const (72) int 6 0
+ecom: 
+= list of (string, Shellbuiltin) 10 2
+  * list of (string, Shellbuiltin) 10 1
+    + int 10 1
+      * ref Environment 8 0
+        name ctxt ref Context 0 0
+      const bmods (16) int 6 0
+  :: list of (string, Shellbuiltin) 10 2
+    tuple (string, Shellbuiltin) 10 1
+      seq no type 10 1
+        name name string 0 0
+        seq no type 10 1
+          call Shellbuiltin 10 1
+            -> fn(): Shellbuiltin 12 1
+              name mod Shellbuiltin 0 0
+              name getself nothing 11 1
+    * list of (string, Shellbuiltin) 10 1
+      + int 10 1
+        * ref Environment 8 0
+          name ctxt ref Context 0 0
+        const bmods (16) int 6 0
+eacom: 
+* list of (string, Shellbuiltin) 10 1
+  + int 10 1
+    * ref Environment 8 0
+      name ctxt ref Context 0 0
+    const bmods (16) int 6 0
+generate desc for ref Environment
+ecom: 
+* ref Environment 8 0
+  name ctxt ref Context 0 0
+ecom to: 
+name .b355 ref Environment 0 0
+ecom: 
+:: list of (string, Shellbuiltin) 10 2
+  tuple (string, Shellbuiltin) 10 1
+    seq no type 10 1
+      name name string 0 0
+      seq no type 10 1
+        call Shellbuiltin 10 1
+          -> fn(): Shellbuiltin 12 1
+            name mod Shellbuiltin 0 0
+            name getself nothing 11 1
+  * list of (string, Shellbuiltin) 10 1
+    + int 10 1
+      * ref Environment 8 0
+        name ctxt ref Context 0 0
+      const bmods (16) int 6 0
+ecom to: 
+* list of (string, Shellbuiltin) 8 1
+  + int 15 1
+    name .b355 ref Environment 0 0
+    const bmods (16) int 6 0
+eacom: 
+tuple (string, Shellbuiltin) 10 1
+  seq no type 10 1
+    name name string 0 0
+    seq no type 10 1
+      call Shellbuiltin 10 1
+        -> fn(): Shellbuiltin 12 1
+          name mod Shellbuiltin 0 0
+          name getself nothing 11 1
+generate desc for (string, Shellbuiltin)
+descmap adt offset 0
+descmap offset 0
+descmap t0 type string offset 0 (d->offset=0 start=0) returns 0
+descmap t1 type Shellbuiltin offset 8 (d->offset=8 start=0) returns 8
+generate desc for (string, Shellbuiltin)
+	desc	$-1,16,"c0"
+ecom: 
+tuple (string, Shellbuiltin) 10 1
+  seq no type 10 1
+    name name string 0 0
+    seq no type 10 1
+      call Shellbuiltin 10 1
+        -> fn(): Shellbuiltin 12 1
+          name mod Shellbuiltin 0 0
+          name getself nothing 11 1
+ecom to: 
+name .b356 (string, Shellbuiltin) 0 0
+ecom: 
+name name string 0 0
+ecom to: 
+* string 0 0
+  + int 13 1
+    adr int 13 1
+      name .b356 (string, Shellbuiltin) 0 0
+    const (0) int 6 0
+ecom: 
+call Shellbuiltin 10 1
+  -> fn(): Shellbuiltin 12 1
+    name mod Shellbuiltin 0 0
+    name getself nothing 11 1
+ecom to: 
+* Shellbuiltin 0 0
+  + int 13 1
+    adr int 13 1
+      name .b356 (string, Shellbuiltin) 0 0
+    const (8) int 6 0
+generate desc for big
+ecom: 
+* list of (string, Shellbuiltin) 10 1
+  + int 10 1
+    * ref Environment 8 0
+      name ctxt ref Context 0 0
+    const bmods (16) int 6 0
+ecom to: 
+name .t358 list of (string, Shellbuiltin) 0 0
+eacom: 
+* list of (string, Shellbuiltin) 10 1
+  + int 10 1
+    * ref Environment 8 0
+      name ctxt ref Context 0 0
+    const bmods (16) int 6 0
+generate desc for ref Environment
+ecom: 
+* ref Environment 8 0
+  name ctxt ref Context 0 0
+ecom to: 
+name .b362 ref Environment 0 0
+ecom: 
+= ref Environment 10 1
+  name .b362 ref Environment 0 0
+  name nil ref Environment 1 0
+ecom: 
+name nil ref Environment 1 0
+ecom to: 
+name .b362 ref Environment 0 0
+generate desc for (string, Shellbuiltin)
+ecom: 
+= string 10 1
+  * string 0 0
+    adr int 13 1
+      name .b356 (string, Shellbuiltin) 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+* string 0 0
+  adr int 13 1
+    name .b356 (string, Shellbuiltin) 0 0
+ecom: 
+= Shellbuiltin 10 1
+  * Shellbuiltin 0 0
+    + int 13 1
+      adr int 13 1
+        name .b356 (string, Shellbuiltin) 0 0
+      const t1 (8) int 6 0
+  name nil Shellbuiltin 1 0
+ecom: 
+name nil Shellbuiltin 1 0
+ecom to: 
+* Shellbuiltin 0 0
+  + int 13 1
+    adr int 13 1
+      name .b356 (string, Shellbuiltin) 0 0
+    const t1 (8) int 6 0
+ecom: 
+= list of (string, Shellbuiltin) 10 1
+  name .t358 list of (string, Shellbuiltin) 0 0
+  name nil list of (string, Shellbuiltin) 1 0
+ecom: 
+name nil list of (string, Shellbuiltin) 1 0
+ecom to: 
+name .t358 list of (string, Shellbuiltin) 0 0
+ecom: 
+= ref Environment 10 1
+  name .b355 ref Environment 0 0
+  name nil ref Environment 1 0
+ecom: 
+name nil ref Environment 1 0
+ecom to: 
+name .b355 ref Environment 0 0
+ecom: 
+used string 10 2
+  call string 10 2
+    name unloadmodule fn(ctxt: ref Context, name: string): string 11 1
+    seq no type 10 1
+      name ctxt ref Context 0 0
+      seq no type 10 1
+        name name string 0 0
+ecom: 
+call string 10 2
+  name unloadmodule fn(ctxt: ref Context, name: string): string 11 1
+  seq no type 10 1
+    name ctxt ref Context 0 0
+    seq no type 10 1
+      name name string 0 0
+ecom to: 
+name .t358 string 0 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b361 big 0 0
+    const (64) int 6 0
+ecom: 
+name name string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b361 big 0 0
+    const (72) int 6 0
+ecom: 
+= string 10 1
+  name .t358 string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name .t358 string 0 0
+ecom: 
+call no type 10 2
+  name diagnostic fn(ctxt: ref Context, s: string) 11 1
+  seq no type 10 1
+    name ctxt ref Context 0 0
+    seq no type 10 1
+      + string 10 1
+        const load: module init failed:  string 1 0
+        name s string 0 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b361 big 0 0
+    const (64) int 6 0
+ecom: 
++ string 10 1
+  const load: module init failed:  string 1 0
+  name s string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b361 big 0 0
+    const (72) int 6 0
+ecom: 
+name s string 0 0
+ecom to: 
+* string 8 0
+  name .ret int 0 0
+fn: loadmodule
+64: argument ctxt ref Context ref 7
+72: argument name string ref 4
+80: local .t357 int ref 1
+84: local .t359 int ref 1
+88: local path string ref 11
+96: local .b361 big ref 5
+104: local bl list of (string, Shellbuiltin) ref 5
+112: local mod Shellbuiltin ref 4
+120: local s string ref 4
+128: local .b355 ref Environment ref 2
+136: local bname string ref 2
+144: local .b356 (string, Shellbuiltin) ref 2
+160: local .b360 big ref 1
+168: local .b362 ref Environment ref 1
+176: local .t358 string ref 1
+generate desc for loadmodule
+descmap offset 0
+descmap ctxt type ref Context offset 64 (d->offset=64 start=0) returns 64
+descmap name type string offset 72 (d->offset=72 start=0) returns 72
+descmap .t357 type int offset 80 (d->offset=80 start=0) returns -1
+descmap .t359 type int offset 84 (d->offset=84 start=0) returns -1
+descmap path type string offset 88 (d->offset=88 start=0) returns 88
+descmap .b361 type big offset 96 (d->offset=96 start=0) returns -1
+descmap bl type list of (string, Shellbuiltin) offset 104 (d->offset=104 start=0) returns 104
+descmap mod type Shellbuiltin offset 112 (d->offset=112 start=0) returns 112
+descmap s type string offset 120 (d->offset=120 start=0) returns 120
+descmap .b355 type ref Environment offset 128 (d->offset=128 start=0) returns 128
+descmap bname type string offset 136 (d->offset=136 start=0) returns 136
+descmap adt offset 144
+descmap offset 144
+descmap t0 type string offset 144 (d->offset=0 start=144) returns 144
+descmap t1 type Shellbuiltin offset 152 (d->offset=8 start=144) returns 152
+descmap .b356 type (string, Shellbuiltin) offset 144 (d->offset=144 start=0) returns 152
+descmap .b360 type big offset 160 (d->offset=160 start=0) returns -1
+descmap .b362 type ref Environment offset 168 (d->offset=168 start=0) returns 168
+descmap .t358 type string offset 176 (d->offset=176 start=0) returns 176
+fncom: unloadmodule 3 6e9a50
+ecom: 
+= list of (string, Shellbuiltin) 10 1
+  name cl list of (string, Shellbuiltin) 0 0
+  * list of (string, Shellbuiltin) 10 1
+    + int 10 1
+      * ref Environment 8 0
+        name ctxt ref Context 0 0
+      const bmods (16) int 6 0
+ecom: 
+* list of (string, Shellbuiltin) 10 1
+  + int 10 1
+    * ref Environment 8 0
+      name ctxt ref Context 0 0
+    const bmods (16) int 6 0
+ecom to: 
+name cl list of (string, Shellbuiltin) 0 0
+eacom: 
+* list of (string, Shellbuiltin) 10 1
+  + int 10 1
+    * ref Environment 8 0
+      name ctxt ref Context 0 0
+    const bmods (16) int 6 0
+generate desc for ref Environment
+ecom: 
+* ref Environment 8 0
+  name ctxt ref Context 0 0
+ecom to: 
+name .b363 ref Environment 0 0
+ecom: 
+= ref Environment 10 1
+  name .b363 ref Environment 0 0
+  name nil ref Environment 1 0
+ecom: 
+name nil ref Environment 1 0
+ecom to: 
+name .b363 ref Environment 0 0
+ecom: 
+= (string, Shellbuiltin) 10 2
+  tuple (string, Shellbuiltin) 10 1
+    seq nothing 10 1
+      name bname string 0 0
+      seq nothing 10 1
+        name bmod Shellbuiltin 0 0
+  hd (string, Shellbuiltin) 10 1
+    name cl list of (string, Shellbuiltin) 0 0
+ecom: 
+hd (string, Shellbuiltin) 10 1
+  name cl list of (string, Shellbuiltin) 0 0
+ecom to: 
+name bname (string, Shellbuiltin) 0 0
+generate desc for (string, Shellbuiltin)
+ecom: 
+= Shellbuiltin 10 1
+  name mod Shellbuiltin 0 0
+  name bmod Shellbuiltin 0 0
+ecom: 
+name bmod Shellbuiltin 0 0
+ecom to: 
+name mod Shellbuiltin 0 0
+ecom: 
+= list of (string, Shellbuiltin) 10 1
+  name bl list of (string, Shellbuiltin) 0 0
+  :: list of (string, Shellbuiltin) 10 1
+    hd (string, Shellbuiltin) 10 1
+      name cl list of (string, Shellbuiltin) 0 0
+    name bl list of (string, Shellbuiltin) 0 0
+ecom: 
+:: list of (string, Shellbuiltin) 10 1
+  hd (string, Shellbuiltin) 10 1
+    name cl list of (string, Shellbuiltin) 0 0
+  name bl list of (string, Shellbuiltin) 0 0
+ecom to: 
+name bl list of (string, Shellbuiltin) 0 0
+eacom: 
+hd (string, Shellbuiltin) 10 1
+  name cl list of (string, Shellbuiltin) 0 0
+generate desc for (string, Shellbuiltin)
+ecom: 
+hd (string, Shellbuiltin) 10 1
+  name cl list of (string, Shellbuiltin) 0 0
+ecom to: 
+name .b364 (string, Shellbuiltin) 0 0
+generate desc for (string, Shellbuiltin)
+generate desc for (string, Shellbuiltin)
+ecom: 
+= string 10 1
+  * string 0 0
+    adr int 13 1
+      name .b364 (string, Shellbuiltin) 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+* string 0 0
+  adr int 13 1
+    name .b364 (string, Shellbuiltin) 0 0
+ecom: 
+= Shellbuiltin 10 1
+  * Shellbuiltin 0 0
+    + int 13 1
+      adr int 13 1
+        name .b364 (string, Shellbuiltin) 0 0
+      const t1 (8) int 6 0
+  name nil Shellbuiltin 1 0
+ecom: 
+name nil Shellbuiltin 1 0
+ecom to: 
+* Shellbuiltin 0 0
+  + int 13 1
+    adr int 13 1
+      name .b364 (string, Shellbuiltin) 0 0
+    const t1 (8) int 6 0
+ecom: 
+= string 10 1
+  * string 0 0
+    adr int 13 1
+      name bname (string, Shellbuiltin) 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+* string 0 0
+  adr int 13 1
+    name bname (string, Shellbuiltin) 0 0
+ecom: 
+= Shellbuiltin 10 1
+  * Shellbuiltin 0 0
+    + int 13 1
+      adr int 13 1
+        name bname (string, Shellbuiltin) 0 0
+      const t1 (8) int 6 0
+  name nil Shellbuiltin 1 0
+ecom: 
+name nil Shellbuiltin 1 0
+ecom to: 
+* Shellbuiltin 0 0
+  + int 13 1
+    adr int 13 1
+      name bname (string, Shellbuiltin) 0 0
+    const t1 (8) int 6 0
+ecom: 
+= Shellbuiltin 10 1
+  name bmod Shellbuiltin 0 0
+  name nil Shellbuiltin 1 0
+ecom: 
+name nil Shellbuiltin 1 0
+ecom to: 
+name bmod Shellbuiltin 0 0
+ecom: 
+= list of (string, Shellbuiltin) 10 1
+  name cl list of (string, Shellbuiltin) 0 0
+  tl list of (string, Shellbuiltin) 10 1
+    name cl list of (string, Shellbuiltin) 0 0
+ecom: 
+tl list of (string, Shellbuiltin) 10 1
+  name cl list of (string, Shellbuiltin) 0 0
+ecom to: 
+name cl list of (string, Shellbuiltin) 0 0
+ecom: 
+call no type 10 2
+  name diagnostic fn(ctxt: ref Context, s: string) 11 1
+  seq no type 10 2
+    name ctxt ref Context 0 0
+    seq no type 10 2
+      call string 10 2
+        -> fn(s: string, nil: string, *): string 12 1
+          name sys Sys 1 0
+          name sprint nothing 11 1
+        seq no type 10 1
+          const module %s not found string 1 0
+          seq no type 10 1
+            name name string 0 0
+generate desc for big
+ecom: 
+call string 10 2
+  -> fn(s: string, nil: string, *): string 12 1
+    name sys Sys 1 0
+    name sprint nothing 11 1
+  seq no type 10 1
+    const module %s not found string 1 0
+    seq no type 10 1
+      name name string 0 0
+ecom to: 
+name .t366 string 0 0
+generate desc for Sys->sprint
+descmap offset 0
+descmap s type string offset 64 (d->offset=64 start=0) returns 64
+descmap type string offset 72 returns 72
+generate desc for big
+ecom: 
+const module %s not found string 1 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b367 big 0 0
+    const (64) int 6 0
+ecom: 
+name name string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b367 big 0 0
+    const (72) int 6 0
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b365 big 0 0
+    const (64) int 6 0
+ecom: 
+name .t366 string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b365 big 0 0
+    const (72) int 6 0
+ecom: 
+= string 10 1
+  name .t366 string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name .t366 string 0 0
+ecom: 
+const not found string 1 0
+ecom to: 
+* string 8 0
+  name .ret int 0 0
+ecom: 
+= list of (string, Shellbuiltin) 10 1
+  * list of (string, Shellbuiltin) 10 1
+    + int 10 1
+      * ref Environment 8 0
+        name ctxt ref Context 0 0
+      const bmods (16) int 6 0
+  name nil polymorphic type 1 0
+eacom: 
+* list of (string, Shellbuiltin) 10 1
+  + int 10 1
+    * ref Environment 8 0
+      name ctxt ref Context 0 0
+    const bmods (16) int 6 0
+generate desc for ref Environment
+ecom: 
+* ref Environment 8 0
+  name ctxt ref Context 0 0
+ecom to: 
+name .b363 ref Environment 0 0
+ecom: 
+name nil list of (string, Shellbuiltin) 1 0
+ecom to: 
+* list of (string, Shellbuiltin) 8 1
+  + int 15 1
+    name .b363 ref Environment 0 0
+    const bmods (16) int 6 0
+ecom: 
+= ref Environment 10 1
+  name .b363 ref Environment 0 0
+  name nil ref Environment 1 0
+ecom: 
+name nil ref Environment 1 0
+ecom to: 
+name .b363 ref Environment 0 0
+ecom: 
+= list of (string, Shellbuiltin) 10 2
+  * list of (string, Shellbuiltin) 10 1
+    + int 10 1
+      * ref Environment 8 0
+        name ctxt ref Context 0 0
+      const bmods (16) int 6 0
+  :: list of (string, Shellbuiltin) 10 2
+    hd (string, Shellbuiltin) 10 1
+      name bl list of (string, Shellbuiltin) 0 0
+    * list of (string, Shellbuiltin) 10 1
+      + int 10 1
+        * ref Environment 8 0
+          name ctxt ref Context 0 0
+        const bmods (16) int 6 0
+eacom: 
+* list of (string, Shellbuiltin) 10 1
+  + int 10 1
+    * ref Environment 8 0
+      name ctxt ref Context 0 0
+    const bmods (16) int 6 0
+generate desc for ref Environment
+ecom: 
+* ref Environment 8 0
+  name ctxt ref Context 0 0
+ecom to: 
+name .b363 ref Environment 0 0
+ecom: 
+:: list of (string, Shellbuiltin) 10 2
+  hd (string, Shellbuiltin) 10 1
+    name bl list of (string, Shellbuiltin) 0 0
+  * list of (string, Shellbuiltin) 10 1
+    + int 10 1
+      * ref Environment 8 0
+        name ctxt ref Context 0 0
+      const bmods (16) int 6 0
+ecom to: 
+* list of (string, Shellbuiltin) 8 1
+  + int 15 1
+    name .b363 ref Environment 0 0
+    const bmods (16) int 6 0
+eacom: 
+hd (string, Shellbuiltin) 10 1
+  name bl list of (string, Shellbuiltin) 0 0
+generate desc for (string, Shellbuiltin)
+descmap adt offset 0
+descmap offset 0
+descmap t0 type string offset 0 (d->offset=0 start=0) returns 0
+descmap t1 type Shellbuiltin offset 8 (d->offset=8 start=0) returns 8
+generate desc for (string, Shellbuiltin)
+	desc	$-1,16,"c0"
+ecom: 
+hd (string, Shellbuiltin) 10 1
+  name bl list of (string, Shellbuiltin) 0 0
+ecom to: 
+name .b364 (string, Shellbuiltin) 0 0
+generate desc for (string, Shellbuiltin)
+ecom: 
+* list of (string, Shellbuiltin) 10 1
+  + int 10 1
+    * ref Environment 8 0
+      name ctxt ref Context 0 0
+    const bmods (16) int 6 0
+ecom to: 
+name .t366 list of (string, Shellbuiltin) 0 0
+eacom: 
+* list of (string, Shellbuiltin) 10 1
+  + int 10 1
+    * ref Environment 8 0
+      name ctxt ref Context 0 0
+    const bmods (16) int 6 0
+generate desc for ref Environment
+ecom: 
+* ref Environment 8 0
+  name ctxt ref Context 0 0
+ecom to: 
+name .b368 ref Environment 0 0
+ecom: 
+= ref Environment 10 1
+  name .b368 ref Environment 0 0
+  name nil ref Environment 1 0
+ecom: 
+name nil ref Environment 1 0
+ecom to: 
+name .b368 ref Environment 0 0
+generate desc for (string, Shellbuiltin)
+ecom: 
+= string 10 1
+  * string 0 0
+    adr int 13 1
+      name .b364 (string, Shellbuiltin) 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+* string 0 0
+  adr int 13 1
+    name .b364 (string, Shellbuiltin) 0 0
+ecom: 
+= Shellbuiltin 10 1
+  * Shellbuiltin 0 0
+    + int 13 1
+      adr int 13 1
+        name .b364 (string, Shellbuiltin) 0 0
+      const t1 (8) int 6 0
+  name nil Shellbuiltin 1 0
+ecom: 
+name nil Shellbuiltin 1 0
+ecom to: 
+* Shellbuiltin 0 0
+  + int 13 1
+    adr int 13 1
+      name .b364 (string, Shellbuiltin) 0 0
+    const t1 (8) int 6 0
+ecom: 
+= list of (string, Shellbuiltin) 10 1
+  name .t366 list of (string, Shellbuiltin) 0 0
+  name nil list of (string, Shellbuiltin) 1 0
+ecom: 
+name nil list of (string, Shellbuiltin) 1 0
+ecom to: 
+name .t366 list of (string, Shellbuiltin) 0 0
+ecom: 
+= ref Environment 10 1
+  name .b363 ref Environment 0 0
+  name nil ref Environment 1 0
+ecom: 
+name nil ref Environment 1 0
+ecom to: 
+name .b363 ref Environment 0 0
+ecom: 
+= list of (string, Shellbuiltin) 10 1
+  name bl list of (string, Shellbuiltin) 0 0
+  tl list of (string, Shellbuiltin) 10 1
+    name bl list of (string, Shellbuiltin) 0 0
+ecom: 
+tl list of (string, Shellbuiltin) 10 1
+  name bl list of (string, Shellbuiltin) 0 0
+ecom to: 
+name bl list of (string, Shellbuiltin) 0 0
+ecom: 
+call no type 10 2
+  name removebuiltinmod fn(b: ref Builtins, mod: Shellbuiltin) 11 1
+  seq no type 10 2
+    * ref Builtins 10 1
+      + int 10 1
+        * ref Environment 8 0
+          name ctxt ref Context 0 0
+        const builtins (8) int 6 0
+    seq no type 10 1
+      name mod Shellbuiltin 0 0
+generate desc for big
+ecom: 
+* ref Builtins 10 1
+  + int 10 1
+    * ref Environment 8 0
+      name ctxt ref Context 0 0
+    const builtins (8) int 6 0
+ecom to: 
+* ref Builtins 8 0
+  + int 15 0
+    name .b367 big 0 0
+    const (64) int 6 0
+eacom: 
+* ref Builtins 10 1
+  + int 10 1
+    * ref Environment 8 0
+      name ctxt ref Context 0 0
+    const builtins (8) int 6 0
+generate desc for ref Environment
+ecom: 
+* ref Environment 8 0
+  name ctxt ref Context 0 0
+ecom to: 
+name .b368 ref Environment 0 0
+ecom: 
+= ref Environment 10 1
+  name .b368 ref Environment 0 0
+  name nil ref Environment 1 0
+ecom: 
+name nil ref Environment 1 0
+ecom to: 
+name .b368 ref Environment 0 0
+ecom: 
+name mod Shellbuiltin 0 0
+ecom to: 
+* Shellbuiltin 8 0
+  + int 15 0
+    name .b367 big 0 0
+    const (72) int 6 0
+ecom: 
+call no type 10 2
+  name removebuiltinmod fn(b: ref Builtins, mod: Shellbuiltin) 11 1
+  seq no type 10 2
+    * ref Builtins 10 1
+      * ref Environment 8 0
+        name ctxt ref Context 0 0
+    seq no type 10 1
+      name mod Shellbuiltin 0 0
+generate desc for big
+ecom: 
+* ref Builtins 10 1
+  * ref Environment 8 0
+    name ctxt ref Context 0 0
+ecom to: 
+* ref Builtins 8 0
+  + int 15 0
+    name .b367 big 0 0
+    const (64) int 6 0
+eacom: 
+* ref Builtins 10 1
+  * ref Environment 8 0
+    name ctxt ref Context 0 0
+generate desc for ref Environment
+ecom: 
+* ref Environment 8 0
+  name ctxt ref Context 0 0
+ecom to: 
+name .b368 ref Environment 0 0
+ecom: 
+= ref Environment 10 1
+  name .b368 ref Environment 0 0
+  name nil ref Environment 1 0
+ecom: 
+name nil ref Environment 1 0
+ecom to: 
+name .b368 ref Environment 0 0
+ecom: 
+name mod Shellbuiltin 0 0
+ecom to: 
+* Shellbuiltin 8 0
+  + int 15 0
+    name .b367 big 0 0
+    const (72) int 6 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* polymorphic type 8 0
+  name .ret int 0 0
+fn: unloadmodule
+64: argument ctxt ref Context ref 7
+72: argument name string ref 2
+80: local bl list of (string, Shellbuiltin) ref 6
+88: local cl list of (string, Shellbuiltin) ref 6
+96: local mod Shellbuiltin ref 4
+104: local .b363 ref Environment ref 3
+112: local .b367 big ref 3
+120: local .b368 ref Environment ref 3
+128: local bname string ref 2
+136: local bmod Shellbuiltin ref 2
+144: local .b364 (string, Shellbuiltin) ref 2
+160: local .b365 big ref 1
+168: local .t366 string ref 1
+generate desc for unloadmodule
+descmap offset 0
+descmap ctxt type ref Context offset 64 (d->offset=64 start=0) returns 64
+descmap name type string offset 72 (d->offset=72 start=0) returns 72
+descmap bl type list of (string, Shellbuiltin) offset 80 (d->offset=80 start=0) returns 80
+descmap cl type list of (string, Shellbuiltin) offset 88 (d->offset=88 start=0) returns 88
+descmap mod type Shellbuiltin offset 96 (d->offset=96 start=0) returns 96
+descmap .b363 type ref Environment offset 104 (d->offset=104 start=0) returns 104
+descmap .b367 type big offset 112 (d->offset=112 start=0) returns -1
+descmap .b368 type ref Environment offset 120 (d->offset=120 start=0) returns 120
+descmap bname type string offset 128 (d->offset=128 start=0) returns 128
+descmap bmod type Shellbuiltin offset 136 (d->offset=136 start=0) returns 136
+descmap adt offset 144
+descmap offset 144
+descmap t0 type string offset 144 (d->offset=0 start=144) returns 144
+descmap t1 type Shellbuiltin offset 152 (d->offset=8 start=144) returns 152
+descmap .b364 type (string, Shellbuiltin) offset 144 (d->offset=144 start=0) returns 152
+descmap .b365 type big offset 160 (d->offset=160 start=0) returns -1
+descmap .t366 type string offset 168 (d->offset=168 start=0) returns 168
+fncom: executable 3 6e9b10
+ecom: 
+= (int, Sys->Dir) 10 1
+  tuple (int, Sys->Dir) 10 1
+    seq nothing 10 1
+      name ok int 0 0
+      seq nothing 10 1
+        name info Sys->Dir 0 0
+  name s (int, Sys->Dir) 0 0
+ecom: 
+name s (int, Sys->Dir) 0 0
+ecom to: 
+name ok (int, Sys->Dir) 0 0
+generate desc for (int, Sys->Dir)
+descmap adt offset 0
+descmap offset 0
+descmap t0 type int offset 0 (d->offset=0 start=0) returns -1
+descmap adt offset 8
+descmap offset 8
+descmap name type string offset 8 (d->offset=0 start=8) returns 8
+descmap uid type string offset 16 (d->offset=8 start=8) returns 16
+descmap gid type string offset 24 (d->offset=16 start=8) returns 24
+descmap muid type string offset 32 (d->offset=24 start=8) returns 32
+descmap adt offset 40
+descmap offset 40
+descmap path type big offset 40 (d->offset=0 start=40) returns -1
+descmap vers type int offset 48 (d->offset=8 start=40) returns -1
+descmap qtype type int offset 52 (d->offset=12 start=40) returns -1
+descmap qid type Sys->Qid offset 40 (d->offset=32 start=8) returns -1
+descmap mode type int offset 56 (d->offset=48 start=8) returns -1
+descmap atime type int offset 60 (d->offset=52 start=8) returns -1
+descmap mtime type int offset 64 (d->offset=56 start=8) returns -1
+descmap length type big offset 72 (d->offset=64 start=8) returns -1
+descmap dtype type int offset 80 (d->offset=72 start=8) returns -1
+descmap dev type int offset 84 (d->offset=76 start=8) returns -1
+descmap t1 type Sys->Dir offset 8 (d->offset=8 start=0) returns 32
+generate desc for (int, Sys->Dir)
+	desc	$-1,88,"78"
+ecom: 
+&& int 10 2
+  && int 10 2
+    != int 10 1
+      name ok int 0 0
+      const (-1) int 6 0
+    == int 10 1
+      & int 10 1
+        * int 0 0
+          + int 13 1
+            adr int 13 1
+              name info Sys->Dir 0 0
+            const mode (48) int 6 0
+        const .i.80000000 (-2147483648) int 1 0
+      const (0) int 6 0
+  != int 10 1
+    & int 10 1
+      * int 0 0
+        + int 13 1
+          adr int 13 1
+            name info Sys->Dir 0 0
+          const mode (48) int 6 0
+      name mode int 0 0
+    const (0) int 6 0
+ecom to: 
+* int 8 0
+  name .ret int 0 0
+eacom: 
+& int 10 1
+  * int 0 0
+    + int 13 1
+      adr int 13 1
+        name info Sys->Dir 0 0
+      const mode (48) int 6 0
+  const .i.80000000 (-2147483648) int 1 0
+ecom: 
+& int 10 1
+  * int 0 0
+    + int 13 1
+      adr int 13 1
+        name info Sys->Dir 0 0
+      const mode (48) int 6 0
+  const .i.80000000 (-2147483648) int 1 0
+ecom to: 
+name .t369 int 0 0
+eacom: 
+& int 10 1
+  * int 0 0
+    + int 13 1
+      adr int 13 1
+        name info Sys->Dir 0 0
+      const mode (48) int 6 0
+  name mode int 0 0
+ecom: 
+& int 10 1
+  * int 0 0
+    + int 13 1
+      adr int 13 1
+        name info Sys->Dir 0 0
+      const mode (48) int 6 0
+  name mode int 0 0
+ecom to: 
+name .t369 int 0 0
+fn: executable
+64: argument s (int, Sys->Dir) ref 1
+152: argument mode int ref 1
+160: local ok int ref 2
+168: local info Sys->Dir ref 3
+248: local .t369 int ref 1
+generate desc for executable
+descmap offset 0
+descmap adt offset 64
+descmap offset 64
+descmap t0 type int offset 64 (d->offset=0 start=64) returns -1
+descmap adt offset 72
+descmap offset 72
+descmap name type string offset 72 (d->offset=0 start=72) returns 72
+descmap uid type string offset 80 (d->offset=8 start=72) returns 80
+descmap gid type string offset 88 (d->offset=16 start=72) returns 88
+descmap muid type string offset 96 (d->offset=24 start=72) returns 96
+descmap adt offset 104
+descmap offset 104
+descmap path type big offset 104 (d->offset=0 start=104) returns -1
+descmap vers type int offset 112 (d->offset=8 start=104) returns -1
+descmap qtype type int offset 116 (d->offset=12 start=104) returns -1
+descmap qid type Sys->Qid offset 104 (d->offset=32 start=72) returns -1
+descmap mode type int offset 120 (d->offset=48 start=72) returns -1
+descmap atime type int offset 124 (d->offset=52 start=72) returns -1
+descmap mtime type int offset 128 (d->offset=56 start=72) returns -1
+descmap length type big offset 136 (d->offset=64 start=72) returns -1
+descmap dtype type int offset 144 (d->offset=72 start=72) returns -1
+descmap dev type int offset 148 (d->offset=76 start=72) returns -1
+descmap t1 type Sys->Dir offset 72 (d->offset=8 start=64) returns 96
+descmap s type (int, Sys->Dir) offset 64 (d->offset=64 start=0) returns 96
+descmap mode type int offset 152 (d->offset=152 start=0) returns -1
+descmap ok type int offset 160 (d->offset=160 start=0) returns -1
+descmap adt offset 168
+descmap offset 168
+descmap name type string offset 168 (d->offset=0 start=168) returns 168
+descmap uid type string offset 176 (d->offset=8 start=168) returns 176
+descmap gid type string offset 184 (d->offset=16 start=168) returns 184
+descmap muid type string offset 192 (d->offset=24 start=168) returns 192
+descmap adt offset 200
+descmap offset 200
+descmap path type big offset 200 (d->offset=0 start=200) returns -1
+descmap vers type int offset 208 (d->offset=8 start=200) returns -1
+descmap qtype type int offset 212 (d->offset=12 start=200) returns -1
+descmap qid type Sys->Qid offset 200 (d->offset=32 start=168) returns -1
+descmap mode type int offset 216 (d->offset=48 start=168) returns -1
+descmap atime type int offset 220 (d->offset=52 start=168) returns -1
+descmap mtime type int offset 224 (d->offset=56 start=168) returns -1
+descmap length type big offset 232 (d->offset=64 start=168) returns -1
+descmap dtype type int offset 240 (d->offset=72 start=168) returns -1
+descmap dev type int offset 244 (d->offset=76 start=168) returns -1
+descmap info type Sys->Dir offset 168 (d->offset=168 start=0) returns 192
+descmap .t369 type int offset 248 (d->offset=248 start=0) returns -1
+fncom: quoted 7 4c3e28
+ecom: 
+= string 10 1
+  name s string 0 0
+  const  string 1 0
+ecom: 
+const  string 1 0
+ecom to: 
+name s string 0 0
+ecom: 
+= ref Listnode 10 1
+  name el ref Listnode 0 0
+  hd ref Listnode 10 1
+    name val list of ref Listnode 0 0
+ecom: 
+hd ref Listnode 10 1
+  name val list of ref Listnode 0 0
+ecom to: 
+name el ref Listnode 0 0
+ecom: 
++= string 10 2
+  name s string 0 0
+  call string 10 2
+    name quote fn(s: string, glob: int): string 11 1
+    seq no type 10 1
+      * string 8 0
+        + int 15 1
+          name el ref Listnode 0 0
+          const word (8) int 6 0
+      seq no type 10 1
+        const (0) int 6 0
+eacom: 
+call string 10 2
+  name quote fn(s: string, glob: int): string 11 1
+  seq no type 10 1
+    * string 8 0
+      + int 15 1
+        name el ref Listnode 0 0
+        const word (8) int 6 0
+    seq no type 10 1
+      const (0) int 6 0
+ecom: 
+call string 10 2
+  name quote fn(s: string, glob: int): string 11 1
+  seq no type 10 1
+    * string 8 0
+      + int 15 1
+        name el ref Listnode 0 0
+        const word (8) int 6 0
+    seq no type 10 1
+      const (0) int 6 0
+ecom to: 
+name .t370 string 0 0
+generate desc for big
+ecom: 
+* string 8 0
+  + int 15 1
+    name el ref Listnode 0 0
+    const word (8) int 6 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b371 big 0 0
+    const (64) int 6 0
+ecom: 
+const (0) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b371 big 0 0
+    const (72) int 6 0
+ecom: 
+= string 10 1
+  name .t370 string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name .t370 string 0 0
+ecom: 
+= string 10 2
+  name cmd string 0 0
+  call string 10 2
+    name cmd2string fn(n: ref Node): string 11 1
+    seq no type 10 1
+      * ref Node 8 0
+        name el ref Listnode 0 0
+ecom: 
+call string 10 2
+  name cmd2string fn(n: ref Node): string 11 1
+  seq no type 10 1
+    * ref Node 8 0
+      name el ref Listnode 0 0
+ecom to: 
+name cmd string 0 0
+generate desc for big
+ecom: 
+* ref Node 8 0
+  name el ref Listnode 0 0
+ecom to: 
+* ref Node 8 0
+  + int 15 0
+    name .b371 big 0 0
+    const (64) int 6 0
+ecom: 
+= string 10 2
+  name cmd string 0 0
+  call string 10 2
+    name quote fn(s: string, glob: int): string 11 1
+    seq no type 10 1
+      name cmd string 0 0
+      seq no type 10 1
+        const (0) int 6 0
+ecom: 
+call string 10 2
+  name quote fn(s: string, glob: int): string 11 1
+  seq no type 10 1
+    name cmd string 0 0
+    seq no type 10 1
+      const (0) int 6 0
+ecom to: 
+name cmd string 0 0
+generate desc for big
+ecom: 
+name cmd string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b371 big 0 0
+    const (64) int 6 0
+ecom: 
+const (0) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b371 big 0 0
+    const (72) int 6 0
+ecom: 
++= string 10 1
+  name s string 0 0
+  name cmd string 0 0
+ecom: 
+= string 10 1
+  name cmd string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name cmd string 0 0
+eacom: 
+tl list of ref Listnode 10 1
+  name val list of ref Listnode 0 0
+ecom: 
+tl list of ref Listnode 10 1
+  name val list of ref Listnode 0 0
+ecom to: 
+name .t370 list of ref Listnode 0 0
+ecom: 
+= list of ref Listnode 10 1
+  name .t370 list of ref Listnode 0 0
+  name nil list of ref Listnode 1 0
+ecom: 
+name nil list of ref Listnode 1 0
+ecom to: 
+name .t370 list of ref Listnode 0 0
+ecom: 
+= int 10 1
+  inds int 10 1
+    name s string 0 0
+    len int 10 1
+      name s string 0 0
+  const (32) int 6 0
+ecom: 
+len int 10 1
+  name s string 0 0
+ecom to: 
+name .t372 int 0 0
+ecom: 
+= ref Listnode 10 1
+  name el ref Listnode 0 0
+  name nil ref Listnode 1 0
+ecom: 
+name nil ref Listnode 1 0
+ecom to: 
+name el ref Listnode 0 0
+ecom: 
+= list of ref Listnode 10 1
+  name val list of ref Listnode 0 0
+  tl list of ref Listnode 10 1
+    name val list of ref Listnode 0 0
+ecom: 
+tl list of ref Listnode 10 1
+  name val list of ref Listnode 0 0
+ecom to: 
+name val list of ref Listnode 0 0
+ecom: 
+name s string 0 0
+ecom to: 
+* string 8 0
+  name .ret int 0 0
+fn: quoted
+64: argument val list of ref Listnode ref 5
+72: argument quoteblocks int ref 2
+76: local .t372 int ref 1
+80: local s string ref 6
+88: local el ref Listnode ref 5
+96: local cmd string ref 4
+104: local .b371 big ref 3
+112: local .t370 string ref 1
+generate desc for quoted
+descmap offset 0
+descmap val type list of ref Listnode offset 64 (d->offset=64 start=0) returns 64
+descmap quoteblocks type int offset 72 (d->offset=72 start=0) returns -1
+descmap .t372 type int offset 76 (d->offset=76 start=0) returns -1
+descmap s type string offset 80 (d->offset=80 start=0) returns 80
+descmap el type ref Listnode offset 88 (d->offset=88 start=0) returns 88
+descmap cmd type string offset 96 (d->offset=96 start=0) returns 96
+descmap .b371 type big offset 104 (d->offset=104 start=0) returns -1
+descmap .t370 type string offset 112 (d->offset=112 start=0) returns 112
+fncom: setstatus 4 6e9bd0
+ecom: 
+call no type 10 2
+  name setlocal fn(ctxt: self ref Context, name: string, val: list of ref Listnode) 11 1
+  seq nothing 10 1
+    name ctxt ref Context 0 0
+    seq no type 10 1
+      const status string 1 0
+      seq no type 10 1
+        :: list of ref Listnode 10 1
+          ref ref Listnode 10 1
+            tuple Listnode 10 1
+              seq no type 10 1
+                name nil polymorphic type 1 0
+                seq no type 10 1
+                  name val string 0 0
+          name nil polymorphic type 1 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b373 big 0 0
+    const (64) int 6 0
+ecom: 
+const status string 1 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b373 big 0 0
+    const (72) int 6 0
+ecom: 
+:: list of ref Listnode 10 1
+  ref ref Listnode 10 1
+    tuple Listnode 10 1
+      seq no type 10 1
+        name nil polymorphic type 1 0
+        seq no type 10 1
+          name val string 0 0
+  name nil polymorphic type 1 0
+ecom to: 
+* list of ref Listnode 8 0
+  + int 15 0
+    name .b373 big 0 0
+    const (80) int 6 0
+eacom: 
+ref ref Listnode 10 1
+  tuple Listnode 10 1
+    seq no type 10 1
+      name nil polymorphic type 1 0
+      seq no type 10 1
+        name val string 0 0
+generate desc for ref Listnode
+generate desc for ref Listnode
+	desc	$-1,8,"80"
+ecom: 
+ref ref Listnode 10 1
+  tuple Listnode 10 1
+    seq no type 10 1
+      name nil polymorphic type 1 0
+      seq no type 10 1
+        name val string 0 0
+ecom to: 
+name .b374 ref Listnode 0 0
+generate desc for ref Listnode
+generate desc for Listnode
+ecom: 
+tuple Listnode 10 1
+  seq no type 10 1
+    name nil polymorphic type 1 0
+    seq no type 10 1
+      name val string 0 0
+ecom to: 
+* Listnode 8 0
+  name .b374 ref Listnode 0 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* ref Node 8 0
+  + int 15 1
+    adr int 15 1
+      * Listnode 8 0
+        name .b374 ref Listnode 0 0
+    const (0) int 6 0
+ecom: 
+name val string 0 0
+ecom to: 
+* string 8 0
+  + int 15 1
+    adr int 15 1
+      * Listnode 8 0
+        name .b374 ref Listnode 0 0
+    const (8) int 6 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+name .t375 list of ref Listnode 0 0
+ecom: 
+= ref Listnode 10 1
+  name .b374 ref Listnode 0 0
+  name nil ref Listnode 1 0
+ecom: 
+name nil ref Listnode 1 0
+ecom to: 
+name .b374 ref Listnode 0 0
+ecom: 
+= list of ref Listnode 10 1
+  name .t375 list of ref Listnode 0 0
+  name nil list of ref Listnode 1 0
+ecom: 
+name nil list of ref Listnode 1 0
+ecom to: 
+name .t375 list of ref Listnode 0 0
+ecom: 
+name val string 0 0
+ecom to: 
+* string 8 0
+  name .ret int 0 0
+fn: setstatus
+64: argument ctxt ref Context ref 1
+72: argument val string ref 2
+80: local .b374 ref Listnode ref 2
+88: local .b373 big ref 1
+96: local .t375 list of ref Listnode ref 1
+generate desc for setstatus
+descmap offset 0
+descmap ctxt type ref Context offset 64 (d->offset=64 start=0) returns 64
+descmap val type string offset 72 (d->offset=72 start=0) returns 72
+descmap .b374 type ref Listnode offset 80 (d->offset=80 start=0) returns 80
+descmap .b373 type big offset 88 (d->offset=88 start=0) returns -1
+descmap .t375 type list of ref Listnode offset 96 (d->offset=96 start=0) returns 96
+fncom: doparse 4 6e9c90
+ecom: 
+= string 10 1
+  * string 8 0
+    + int 15 1
+      name l ref YYLEX 0 0
+      const prompt (112) int 6 0
+  name prompt string 0 0
+ecom: 
+name prompt string 0 0
+ecom to: 
+* string 8 0
+  + int 15 1
+    name l ref YYLEX 0 0
+    const prompt (112) int 6 0
+ecom: 
+= string 10 1
+  * string 8 0
+    + int 15 1
+      name l ref YYLEX 0 0
+      const err (32) int 6 0
+  name nil polymorphic type 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+* string 8 0
+  + int 15 1
+    name l ref YYLEX 0 0
+    const err (32) int 6 0
+ecom: 
+= ref Node 10 1
+  * ref Node 8 0
+    name l ref YYLEX 0 0
+  name nil polymorphic type 1 0
+ecom: 
+name nil ref Node 1 0
+ecom to: 
+* ref Node 8 0
+  name l ref YYLEX 0 0
+ecom: 
+used int 10 2
+  call int 10 2
+    name yyparse fn(yylex: ref YYLEX): int 11 1
+    seq no type 10 1
+      name l ref YYLEX 0 0
+ecom: 
+call int 10 2
+  name yyparse fn(yylex: ref YYLEX): int 11 1
+  seq no type 10 1
+    name l ref YYLEX 0 0
+ecom to: 
+name .t376 int 0 0
+generate desc for big
+ecom: 
+name l ref YYLEX 0 0
+ecom to: 
+* ref YYLEX 8 0
+  + int 15 0
+    name .b377 big 0 0
+    const (64) int 6 0
+ecom: 
+= int 10 1
+  * int 8 0
+    + int 15 1
+      name l ref YYLEX 0 0
+      const lastnl (120) int 6 0
+  const (0) int 6 0
+ecom: 
+const (0) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 1
+    name l ref YYLEX 0 0
+    const lastnl (120) int 6 0
+ecom: 
+= string 10 1
+  * string 8 0
+    + int 15 1
+      name l ref YYLEX 0 0
+      const err (32) int 6 0
+  const unknown error string 1 0
+ecom: 
+const unknown error string 1 0
+ecom to: 
+* string 8 0
+  + int 15 1
+    name l ref YYLEX 0 0
+    const err (32) int 6 0
+ecom: 
+= string 10 2
+  name s string 0 0
+  call string 10 2
+    -> fn(s: string, nil: string, nil: int, nil: string, *): string 12 1
+      name sys Sys 1 0
+      name sprint nothing 11 1
+    seq no type 10 1
+      const %s:%d: %s string 1 0
+      seq no type 10 1
+        * string 8 0
+          + int 15 1
+            name l ref YYLEX 0 0
+            const path (48) int 6 0
+        seq no type 10 1
+          * int 8 0
+            + int 15 1
+              name l ref YYLEX 0 0
+              const errline (40) int 6 0
+          seq no type 10 1
+            * string 8 0
+              + int 15 1
+                name l ref YYLEX 0 0
+                const err (32) int 6 0
+ecom: 
+call string 10 2
+  -> fn(s: string, nil: string, nil: int, nil: string, *): string 12 1
+    name sys Sys 1 0
+    name sprint nothing 11 1
+  seq no type 10 1
+    const %s:%d: %s string 1 0
+    seq no type 10 1
+      * string 8 0
+        + int 15 1
+          name l ref YYLEX 0 0
+          const path (48) int 6 0
+      seq no type 10 1
+        * int 8 0
+          + int 15 1
+            name l ref YYLEX 0 0
+            const errline (40) int 6 0
+        seq no type 10 1
+          * string 8 0
+            + int 15 1
+              name l ref YYLEX 0 0
+              const err (32) int 6 0
+ecom to: 
+name s string 0 0
+generate desc for Sys->sprint
+descmap offset 0
+descmap s type string offset 64 (d->offset=64 start=0) returns 64
+descmap type string offset 72 returns 72
+descmap type int offset 80 returns -1
+descmap type string offset 88 returns 88
+generate desc for big
+ecom: 
+const %s:%d: %s string 1 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b377 big 0 0
+    const (64) int 6 0
+ecom: 
+* string 8 0
+  + int 15 1
+    name l ref YYLEX 0 0
+    const path (48) int 6 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b377 big 0 0
+    const (72) int 6 0
+ecom: 
+* int 8 0
+  + int 15 1
+    name l ref YYLEX 0 0
+    const errline (40) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b377 big 0 0
+    const (80) int 6 0
+ecom: 
+* string 8 0
+  + int 15 1
+    name l ref YYLEX 0 0
+    const err (32) int 6 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b377 big 0 0
+    const (88) int 6 0
+ecom: 
+= string 10 1
+  name s string 0 0
+  + string 10 1
+    + string 10 1
+      * string 8 0
+        + int 15 1
+          name l ref YYLEX 0 0
+          const path (48) int 6 0
+      const : parse error:  string 1 0
+    * string 8 0
+      + int 15 1
+        name l ref YYLEX 0 0
+        const err (32) int 6 0
+ecom: 
++ string 10 1
+  + string 10 1
+    * string 8 0
+      + int 15 1
+        name l ref YYLEX 0 0
+        const path (48) int 6 0
+    const : parse error:  string 1 0
+  * string 8 0
+    + int 15 1
+      name l ref YYLEX 0 0
+      const err (32) int 6 0
+ecom to: 
+name s string 0 0
+ecom: 
++ string 10 1
+  * string 8 0
+    + int 15 1
+      name l ref YYLEX 0 0
+      const path (48) int 6 0
+  const : parse error:  string 1 0
+ecom to: 
+name .t378 string 0 0
+ecom: 
+* string 8 0
+  + int 15 1
+    name l ref YYLEX 0 0
+    const path (48) int 6 0
+ecom to: 
+name .t378 string 0 0
+ecom: 
+= string 10 1
+  name .t378 string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name .t378 string 0 0
+ecom: 
+tuple (polymorphic type, string) 10 1
+  seq no type 10 1
+    name nil polymorphic type 1 0
+    seq no type 10 1
+      name s string 0 0
+ecom to: 
+* (polymorphic type, string) 8 0
+  name .ret int 0 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* polymorphic type 8 0
+  + int 15 1
+    adr int 15 1
+      * (polymorphic type, string) 8 0
+        name .ret int 0 0
+    const (0) int 6 0
+ecom: 
+name s string 0 0
+ecom to: 
+* string 8 0
+  + int 15 1
+    adr int 15 1
+      * (polymorphic type, string) 8 0
+        name .ret int 0 0
+    const (8) int 6 0
+ecom: 
+= string 10 1
+  name s string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name s string 0 0
+ecom: 
+tuple (ref Node, polymorphic type) 10 1
+  seq no type 10 1
+    * ref Node 8 0
+      name l ref YYLEX 0 0
+    seq no type 10 1
+      name nil polymorphic type 1 0
+ecom to: 
+* (ref Node, polymorphic type) 8 0
+  name .ret int 0 0
+ecom: 
+* ref Node 8 0
+  name l ref YYLEX 0 0
+ecom to: 
+* ref Node 8 0
+  + int 15 1
+    adr int 15 1
+      * (ref Node, polymorphic type) 8 0
+        name .ret int 0 0
+    const (0) int 6 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* polymorphic type 8 0
+  + int 15 1
+    adr int 15 1
+      * (ref Node, polymorphic type) 8 0
+        name .ret int 0 0
+    const (8) int 6 0
+fn: doparse
+64: argument l ref YYLEX ref 15
+72: argument prompt string ref 1
+80: argument showline int ref 1
+84: local .t376 int ref 1
+88: local s string ref 3
+96: local .b377 big ref 2
+104: local .t378 string ref 1
+generate desc for doparse
+descmap offset 0
+descmap l type ref YYLEX offset 64 (d->offset=64 start=0) returns 64
+descmap prompt type string offset 72 (d->offset=72 start=0) returns 72
+descmap showline type int offset 80 (d->offset=80 start=0) returns -1
+descmap .t376 type int offset 84 (d->offset=84 start=0) returns -1
+descmap s type string offset 88 (d->offset=88 start=0) returns 88
+descmap .b377 type big offset 96 (d->offset=96 start=0) returns -1
+descmap .t378 type string offset 104 (d->offset=104 start=0) returns 104
+fncom: initstring 3 4d3e10
+ecom: 
+= ref YYLEX 10 1
+  name ret ref YYLEX 0 0
+  ref ref YYLEX 10 1
+    name blanklex YYLEX 1 0
+ecom: 
+ref ref YYLEX 10 1
+  name blanklex YYLEX 1 0
+ecom to: 
+name ret ref YYLEX 0 0
+generate desc for ref YYLEX
+generate desc for ref YYLEX
+	desc	$-1,8,"80"
+generate desc for YYLEX
+descmap adt offset 0
+descmap offset 0
+descmap adt offset 0
+descmap offset 0
+descmap node type ref Node offset 0 (d->offset=0 start=0) returns 0
+descmap word type string offset 8 (d->offset=8 start=0) returns 8
+descmap redir type ref Redir offset 16 (d->offset=16 start=0) returns 16
+descmap optype type int offset 24 (d->offset=24 start=0) returns -1
+descmap lval type YYSTYPE offset 0 (d->offset=0 start=0) returns 16
+descmap err type string offset 32 (d->offset=32 start=0) returns 32
+descmap errline type int offset 40 (d->offset=40 start=0) returns -1
+descmap path type string offset 48 (d->offset=48 start=0) returns 48
+descmap wasdollar type int offset 56 (d->offset=56 start=0) returns -1
+descmap atendword type int offset 60 (d->offset=60 start=0) returns -1
+descmap eof type int offset 64 (d->offset=64 start=0) returns -1
+descmap cbuf type array of int offset 72 (d->offset=72 start=0) returns 72
+descmap ncbuf type int offset 80 (d->offset=80 start=0) returns -1
+descmap f type ref Bufio->Iobuf offset 88 (d->offset=88 start=0) returns 88
+descmap s type string offset 96 (d->offset=96 start=0) returns 96
+descmap strpos type int offset 104 (d->offset=104 start=0) returns -1
+descmap linenum type int offset 108 (d->offset=108 start=0) returns -1
+descmap prompt type string offset 112 (d->offset=112 start=0) returns 112
+descmap lastnl type int offset 120 (d->offset=120 start=0) returns -1
+generate desc for YYLEX
+	desc	$-1,128,"ea5a"
+ecom: 
+name blanklex YYLEX 1 0
+ecom to: 
+* YYLEX 8 0
+  name .b379 ref YYLEX 0 0
+generate desc for YYLEX
+ecom: 
+= ref YYLEX 10 1
+  name .b379 ref YYLEX 0 0
+  name nil ref YYLEX 1 0
+ecom: 
+name nil ref YYLEX 1 0
+ecom to: 
+name .b379 ref YYLEX 0 0
+ecom: 
+= string 10 1
+  * string 8 0
+    + int 15 1
+      name ret ref YYLEX 0 0
+      const s (96) int 6 0
+  name s string 0 0
+ecom: 
+name s string 0 0
+ecom to: 
+* string 8 0
+  + int 15 1
+    name ret ref YYLEX 0 0
+    const s (96) int 6 0
+ecom: 
+= string 10 1
+  * string 8 0
+    + int 15 1
+      name ret ref YYLEX 0 0
+      const path (48) int 6 0
+  const internal string 1 0
+ecom: 
+const internal string 1 0
+ecom to: 
+* string 8 0
+  + int 15 1
+    name ret ref YYLEX 0 0
+    const path (48) int 6 0
+ecom: 
+= int 10 1
+  * int 8 0
+    + int 15 1
+      name ret ref YYLEX 0 0
+      const strpos (104) int 6 0
+  const (0) int 6 0
+ecom: 
+const (0) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 1
+    name ret ref YYLEX 0 0
+    const strpos (104) int 6 0
+ecom: 
+name ret ref YYLEX 0 0
+ecom to: 
+* ref YYLEX 8 0
+  name .ret int 0 0
+fn: initstring
+64: argument s string ref 1
+72: local ret ref YYLEX ref 5
+80: local .b379 ref YYLEX ref 1
+generate desc for YYLEX.initstring
+descmap offset 0
+descmap s type string offset 64 (d->offset=64 start=0) returns 64
+descmap ret type ref YYLEX offset 72 (d->offset=72 start=0) returns 72
+descmap .b379 type ref YYLEX offset 80 (d->offset=80 start=0) returns 80
+fncom: initfile 2 4d4430
+ecom: 
+= ref YYLEX 10 1
+  name lex ref YYLEX 0 0
+  ref ref YYLEX 10 1
+    name blanklex YYLEX 1 0
+ecom: 
+ref ref YYLEX 10 1
+  name blanklex YYLEX 1 0
+ecom to: 
+name lex ref YYLEX 0 0
+generate desc for ref YYLEX
+generate desc for ref YYLEX
+	desc	$-1,8,"80"
+generate desc for YYLEX
+ecom: 
+name blanklex YYLEX 1 0
+ecom to: 
+* YYLEX 8 0
+  name .b380 ref YYLEX 0 0
+generate desc for YYLEX
+ecom: 
+= ref YYLEX 10 1
+  name .b380 ref YYLEX 0 0
+  name nil ref YYLEX 1 0
+ecom: 
+name nil ref YYLEX 1 0
+ecom to: 
+name .b380 ref YYLEX 0 0
+ecom: 
+= ref Bufio->Iobuf 10 2
+  * ref Bufio->Iobuf 8 0
+    + int 15 1
+      name lex ref YYLEX 0 0
+      const f (88) int 6 0
+  call ref Bufio->Iobuf 10 2
+    -> fn(fd: ref Sys->FD, mode: int): ref Bufio->Iobuf 12 1
+      name bufio Bufio 1 0
+      name fopen nothing 11 1
+    seq no type 10 1
+      name fd ref Sys->FD 0 0
+      seq no type 10 1
+        const OREAD (0) int 6 0
+ecom: 
+call ref Bufio->Iobuf 10 2
+  -> fn(fd: ref Sys->FD, mode: int): ref Bufio->Iobuf 12 1
+    name bufio Bufio 1 0
+    name fopen nothing 11 1
+  seq no type 10 1
+    name fd ref Sys->FD 0 0
+    seq no type 10 1
+      const OREAD (0) int 6 0
+ecom to: 
+* ref Bufio->Iobuf 8 0
+  + int 15 1
+    name lex ref YYLEX 0 0
+    const f (88) int 6 0
+generate desc for big
+ecom: 
+name fd ref Sys->FD 0 0
+ecom to: 
+* ref Sys->FD 8 0
+  + int 15 0
+    name .b381 big 0 0
+    const (64) int 6 0
+ecom: 
+const OREAD (0) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b381 big 0 0
+    const (72) int 6 0
+ecom: 
+= string 10 1
+  * string 8 0
+    + int 15 1
+      name lex ref YYLEX 0 0
+      const path (48) int 6 0
+  name path string 0 0
+ecom: 
+name path string 0 0
+ecom to: 
+* string 8 0
+  + int 15 1
+    name lex ref YYLEX 0 0
+    const path (48) int 6 0
+ecom: 
+= array of int 10 1
+  * array of int 8 0
+    + int 15 1
+      name lex ref YYLEX 0 0
+      const cbuf (72) int 6 0
+  array array of int 10 1
+    const (2) int 6 0
+ecom: 
+array array of int 10 1
+  const (2) int 6 0
+ecom to: 
+* array of int 8 0
+  + int 15 1
+    name lex ref YYLEX 0 0
+    const cbuf (72) int 6 0
+generate desc for int
+ecom: 
+= int 10 1
+  * int 8 0
+    + int 15 1
+      name lex ref YYLEX 0 0
+      const linenum (108) int 6 0
+  const (1) int 6 0
+ecom: 
+const (1) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 1
+    name lex ref YYLEX 0 0
+    const linenum (108) int 6 0
+ecom: 
+= string 10 1
+  * string 8 0
+    + int 15 1
+      name lex ref YYLEX 0 0
+      const prompt (112) int 6 0
+  const  string 1 0
+ecom: 
+const  string 1 0
+ecom to: 
+* string 8 0
+  + int 15 1
+    name lex ref YYLEX 0 0
+    const prompt (112) int 6 0
+ecom: 
+name lex ref YYLEX 0 0
+ecom to: 
+* ref YYLEX 8 0
+  name .ret int 0 0
+fn: initfile
+64: argument fd ref Sys->FD ref 1
+72: argument path string ref 1
+80: local lex ref YYLEX ref 7
+88: local .b380 ref YYLEX ref 1
+96: local .b381 big ref 1
+generate desc for YYLEX.initfile
+descmap offset 0
+descmap fd type ref Sys->FD offset 64 (d->offset=64 start=0) returns 64
+descmap path type string offset 72 (d->offset=72 start=0) returns 72
+descmap lex type ref YYLEX offset 80 (d->offset=80 start=0) returns 80
+descmap .b380 type ref YYLEX offset 88 (d->offset=88 start=0) returns 88
+descmap .b381 type big offset 96 (d->offset=96 start=0) returns -1
+fncom: error 2 4d51a0
+ecom: 
+= string 10 1
+  * string 8 0
+    + int 15 1
+      name l ref YYLEX 0 0
+      const err (32) int 6 0
+  name s string 0 0
+ecom: 
+name s string 0 0
+ecom to: 
+* string 8 0
+  + int 15 1
+    name l ref YYLEX 0 0
+    const err (32) int 6 0
+ecom: 
+= int 10 1
+  * int 8 0
+    + int 15 1
+      name l ref YYLEX 0 0
+      const errline (40) int 6 0
+  * int 8 0
+    + int 15 1
+      name l ref YYLEX 0 0
+      const linenum (108) int 6 0
+ecom: 
+* int 8 0
+  + int 15 1
+    name l ref YYLEX 0 0
+    const linenum (108) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 1
+    name l ref YYLEX 0 0
+    const errline (40) int 6 0
+fn: error
+64: argument l ref YYLEX ref 4
+72: argument s string ref 1
+generate desc for YYLEX.error
+descmap offset 0
+descmap l type ref YYLEX offset 64 (d->offset=64 start=0) returns 64
+descmap s type string offset 72 (d->offset=72 start=0) returns 72
+fncom: lex 2 4d4c30
+ecom: 
+= int 10 1
+  name endword int 0 0
+  const (0) int 6 0
+ecom: 
+const (0) int 6 0
+ecom to: 
+name endword int 0 0
+ecom: 
+= int 10 1
+  name wasdollar int 0 0
+  const (0) int 6 0
+ecom: 
+const (0) int 6 0
+ecom to: 
+name wasdollar int 0 0
+ecom: 
+= int 10 1
+  name tok int 0 0
+  const NOTOKEN (-1) int 6 0
+ecom: 
+const NOTOKEN (-1) int 6 0
+ecom to: 
+name tok int 0 0
+eacom: 
+= int 10 2
+  name c int 0 0
+  call int 10 2
+    name getc fn(lex: self ref YYLEX): int 11 1
+    seq nothing 10 1
+      name l ref YYLEX 0 0
+ecom: 
+= int 10 2
+  name c int 0 0
+  call int 10 2
+    name getc fn(lex: self ref YYLEX): int 11 1
+    seq nothing 10 1
+      name l ref YYLEX 0 0
+ecom to: 
+name .t382 int 0 0
+ecom: 
+call int 10 2
+  name getc fn(lex: self ref YYLEX): int 11 1
+  seq nothing 10 1
+    name l ref YYLEX 0 0
+ecom to: 
+name c int 0 0
+generate desc for big
+ecom: 
+name l ref YYLEX 0 0
+ecom to: 
+* ref YYLEX 8 0
+  + int 15 0
+    name .b383 big 0 0
+    const (64) int 6 0
+ecom: 
+= int 10 1
+  name tok int 0 0
+  const END (57350) int 6 0
+ecom: 
+const END (57350) int 6 0
+ecom to: 
+name tok int 0 0
+ecom: 
+= int 10 1
+  name tok int 0 0
+  const (10) int 6 0
+ecom: 
+const (10) int 6 0
+ecom to: 
+name tok int 0 0
+eacom: 
+= int 10 2
+  name c int 0 0
+  call int 10 2
+    name getc fn(lex: self ref YYLEX): int 11 1
+    seq nothing 10 1
+      name l ref YYLEX 0 0
+ecom: 
+= int 10 2
+  name c int 0 0
+  call int 10 2
+    name getc fn(lex: self ref YYLEX): int 11 1
+    seq nothing 10 1
+      name l ref YYLEX 0 0
+ecom to: 
+name .t382 int 0 0
+ecom: 
+call int 10 2
+  name getc fn(lex: self ref YYLEX): int 11 1
+  seq nothing 10 1
+    name l ref YYLEX 0 0
+ecom to: 
+name c int 0 0
+generate desc for big
+ecom: 
+name l ref YYLEX 0 0
+ecom to: 
+* ref YYLEX 8 0
+  + int 15 0
+    name .b383 big 0 0
+    const (64) int 6 0
+ecom: 
+call no type 10 2
+  name ungetc fn(lex: self ref YYLEX) 11 1
+  seq nothing 10 1
+    name l ref YYLEX 0 0
+generate desc for big
+ecom: 
+name l ref YYLEX 0 0
+ecom to: 
+* ref YYLEX 8 0
+  + int 15 0
+    name .b383 big 0 0
+    const (64) int 6 0
+ecom: 
+= int 10 1
+  name tok int 0 0
+  const (59) int 6 0
+ecom: 
+const (59) int 6 0
+ecom to: 
+name tok int 0 0
+ecom: 
+= int 10 2
+  name c int 0 0
+  call int 10 2
+    name getc fn(lex: self ref YYLEX): int 11 1
+    seq nothing 10 1
+      name l ref YYLEX 0 0
+ecom: 
+call int 10 2
+  name getc fn(lex: self ref YYLEX): int 11 1
+  seq nothing 10 1
+    name l ref YYLEX 0 0
+ecom to: 
+name c int 0 0
+generate desc for big
+ecom: 
+name l ref YYLEX 0 0
+ecom to: 
+* ref YYLEX 8 0
+  + int 15 0
+    name .b383 big 0 0
+    const (64) int 6 0
+ecom: 
+= int 10 1
+  name tok int 0 0
+  const ANDAND (57352) int 6 0
+ecom: 
+const ANDAND (57352) int 6 0
+ecom to: 
+name tok int 0 0
+ecom: 
+call no type 10 2
+  name ungetc fn(lex: self ref YYLEX) 11 1
+  seq nothing 10 1
+    name l ref YYLEX 0 0
+generate desc for big
+ecom: 
+name l ref YYLEX 0 0
+ecom to: 
+* ref YYLEX 8 0
+  + int 15 0
+    name .b383 big 0 0
+    const (64) int 6 0
+ecom: 
+= int 10 1
+  name tok int 0 0
+  const (38) int 6 0
+ecom: 
+const (38) int 6 0
+ecom to: 
+name tok int 0 0
+ecom: 
+= int 10 1
+  name tok int 0 0
+  const (94) int 6 0
+ecom: 
+const (94) int 6 0
+ecom to: 
+name tok int 0 0
+ecom: 
+= int 10 1
+  name tok int 0 0
+  const (123) int 6 0
+ecom: 
+const (123) int 6 0
+ecom to: 
+name tok int 0 0
+ecom: 
+= int 10 1
+  name tok int 0 0
+  const (125) int 6 0
+ecom: 
+const (125) int 6 0
+ecom to: 
+name tok int 0 0
+ecom: 
+= int 10 1
+  name tok int 0 0
+  const (41) int 6 0
+ecom: 
+const (41) int 6 0
+ecom to: 
+name tok int 0 0
+ecom: 
+= int 10 1
+  name tok int 0 0
+  const (40) int 6 0
+ecom: 
+const (40) int 6 0
+ecom to: 
+name tok int 0 0
+ecom: 
+= (int, int) 10 2
+  tuple (int, int) 10 1
+    seq no type 10 1
+      name tok int 0 0
+      seq no type 10 1
+        * int 8 0
+          + int 15 1
+            name l ref YYLEX 0 0
+            const optype (24) int 6 0
+  tuple (int, int) 10 1
+    seq no type 10 1
+      const (61) int 6 0
+      seq no type 10 1
+        const n_ASSIGN (15) int 6 0
+ecom: 
+= int 10 1
+  name tok int 0 0
+  const (61) int 6 0
+ecom: 
+const (61) int 6 0
+ecom to: 
+name tok int 0 0
+ecom: 
+= int 10 1
+  * int 8 0
+    + int 15 1
+      name l ref YYLEX 0 0
+      const optype (24) int 6 0
+  const n_ASSIGN (15) int 6 0
+ecom: 
+const n_ASSIGN (15) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 1
+    name l ref YYLEX 0 0
+    const optype (24) int 6 0
+ecom: 
+call no type 10 2
+  name ungetc fn(lex: self ref YYLEX) 11 1
+  seq nothing 10 1
+    name l ref YYLEX 0 0
+generate desc for big
+ecom: 
+name l ref YYLEX 0 0
+ecom to: 
+* ref YYLEX 8 0
+  + int 15 0
+    name .b383 big 0 0
+    const (64) int 6 0
+ecom: 
+= int 10 1
+  name tok int 0 0
+  const (94) int 6 0
+ecom: 
+const (94) int 6 0
+ecom to: 
+name tok int 0 0
+eacom: 
+= int 10 2
+  name c int 0 0
+  call int 10 2
+    name getc fn(lex: self ref YYLEX): int 11 1
+    seq nothing 10 1
+      name l ref YYLEX 0 0
+ecom: 
+= int 10 2
+  name c int 0 0
+  call int 10 2
+    name getc fn(lex: self ref YYLEX): int 11 1
+    seq nothing 10 1
+      name l ref YYLEX 0 0
+ecom to: 
+name .t382 int 0 0
+ecom: 
+call int 10 2
+  name getc fn(lex: self ref YYLEX): int 11 1
+  seq nothing 10 1
+    name l ref YYLEX 0 0
+ecom to: 
+name c int 0 0
+generate desc for big
+ecom: 
+name l ref YYLEX 0 0
+ecom to: 
+* ref YYLEX 8 0
+  + int 15 0
+    name .b383 big 0 0
+    const (64) int 6 0
+ecom: 
+= int 10 1
+  * int 8 0
+    + int 15 1
+      name l ref YYLEX 0 0
+      const optype (24) int 6 0
+  const n_COUNT (14) int 6 0
+ecom: 
+const n_COUNT (14) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 1
+    name l ref YYLEX 0 0
+    const optype (24) int 6 0
+ecom: 
+= int 10 1
+  * int 8 0
+    + int 15 1
+      name l ref YYLEX 0 0
+      const optype (24) int 6 0
+  const n_SQUASH (13) int 6 0
+ecom: 
+const n_SQUASH (13) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 1
+    name l ref YYLEX 0 0
+    const optype (24) int 6 0
+ecom: 
+call no type 10 2
+  name ungetc fn(lex: self ref YYLEX) 11 1
+  seq nothing 10 1
+    name l ref YYLEX 0 0
+generate desc for big
+ecom: 
+name l ref YYLEX 0 0
+ecom to: 
+* ref YYLEX 8 0
+  + int 15 0
+    name .b383 big 0 0
+    const (64) int 6 0
+ecom: 
+= int 10 1
+  * int 8 0
+    + int 15 1
+      name l ref YYLEX 0 0
+      const optype (24) int 6 0
+  const n_VAR (1) int 6 0
+ecom: 
+const n_VAR (1) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 1
+    name l ref YYLEX 0 0
+    const optype (24) int 6 0
+ecom: 
+= int 10 1
+  name tok int 0 0
+  const OP (57349) int 6 0
+ecom: 
+const OP (57349) int 6 0
+ecom to: 
+name tok int 0 0
+ecom: 
+= int 10 1
+  name wasdollar int 0 0
+  const (1) int 6 0
+ecom: 
+const (1) int 6 0
+ecom to: 
+name wasdollar int 0 0
+ecom: 
+= int 10 1
+  name tok int 0 0
+  const (94) int 6 0
+ecom: 
+const (94) int 6 0
+ecom to: 
+name tok int 0 0
+ecom: 
+call no type 10 2
+  name ungetc fn(lex: self ref YYLEX) 11 1
+  seq nothing 10 1
+    name l ref YYLEX 0 0
+generate desc for big
+ecom: 
+name l ref YYLEX 0 0
+ecom to: 
+* ref YYLEX 8 0
+  + int 15 0
+    name .b383 big 0 0
+    const (64) int 6 0
+ecom: 
+= int 10 1
+  name tok int 0 0
+  const OP (57349) int 6 0
+ecom: 
+const OP (57349) int 6 0
+ecom to: 
+name tok int 0 0
+ecom: 
+= int 10 1
+  * int 8 0
+    + int 15 1
+      name l ref YYLEX 0 0
+      const optype (24) int 6 0
+  const n_BQ2 (3) int 6 0
+ecom: 
+const n_BQ2 (3) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 1
+    name l ref YYLEX 0 0
+    const optype (24) int 6 0
+ecom: 
+= int 10 1
+  * int 8 0
+    + int 15 1
+      name l ref YYLEX 0 0
+      const optype (24) int 6 0
+  const n_BQ (2) int 6 0
+ecom: 
+const n_BQ (2) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 1
+    name l ref YYLEX 0 0
+    const optype (24) int 6 0
+ecom: 
+= int 10 2
+  name nc int 0 0
+  call int 10 2
+    name getc fn(lex: self ref YYLEX): int 11 1
+    seq nothing 10 1
+      name l ref YYLEX 0 0
+ecom: 
+call int 10 2
+  name getc fn(lex: self ref YYLEX): int 11 1
+  seq nothing 10 1
+    name l ref YYLEX 0 0
+ecom to: 
+name nc int 0 0
+generate desc for big
+ecom: 
+name l ref YYLEX 0 0
+ecom to: 
+* ref YYLEX 8 0
+  + int 15 0
+    name .b383 big 0 0
+    const (64) int 6 0
+ecom: 
+= int 10 1
+  name rtype int 0 0
+  const (524289) int 6 0
+ecom: 
+const (524289) int 6 0
+ecom to: 
+name rtype int 0 0
+ecom: 
+= int 10 1
+  name rtype int 0 0
+  const ORDWR (2) int 6 0
+ecom: 
+const ORDWR (2) int 6 0
+ecom to: 
+name rtype int 0 0
+ecom: 
+= int 10 2
+  name nc int 0 0
+  call int 10 2
+    name getc fn(lex: self ref YYLEX): int 11 1
+    seq nothing 10 1
+      name l ref YYLEX 0 0
+ecom: 
+call int 10 2
+  name getc fn(lex: self ref YYLEX): int 11 1
+  seq nothing 10 1
+    name l ref YYLEX 0 0
+ecom to: 
+name nc int 0 0
+generate desc for big
+ecom: 
+name l ref YYLEX 0 0
+ecom to: 
+* ref YYLEX 8 0
+  + int 15 0
+    name .b383 big 0 0
+    const (64) int 6 0
+ecom: 
+= int 10 1
+  name rtype int 0 0
+  const OWRITE (1) int 6 0
+ecom: 
+const OWRITE (1) int 6 0
+ecom to: 
+name rtype int 0 0
+ecom: 
+= int 10 1
+  name rtype int 0 0
+  const OREAD (0) int 6 0
+ecom: 
+const OREAD (0) int 6 0
+ecom to: 
+name rtype int 0 0
+ecom: 
+= int 10 1
+  name tok int 0 0
+  const REDIR (57347) int 6 0
+ecom: 
+const REDIR (57347) int 6 0
+ecom to: 
+name tok int 0 0
+ecom: 
+= (int, ref Redir) 10 2
+  tuple (int, ref Redir) 10 1
+    seq no type 10 1
+      name tok int 0 0
+      seq no type 10 1
+        * ref Redir 8 0
+          + int 15 1
+            name l ref YYLEX 0 0
+            const redir (16) int 6 0
+  call (int, ref Redir) 10 2
+    name readfdassign fn(lex: ref YYLEX): (int, ref Redir) 11 1
+    seq no type 10 1
+      name l ref YYLEX 0 0
+generate desc for (int, ref Redir)
+descmap adt offset 0
+descmap offset 0
+descmap t0 type int offset 0 (d->offset=0 start=0) returns -1
+descmap t1 type ref Redir offset 8 (d->offset=8 start=0) returns 8
+generate desc for (int, ref Redir)
+	desc	$-1,16,"40"
+ecom: 
+call (int, ref Redir) 10 2
+  name readfdassign fn(lex: ref YYLEX): (int, ref Redir) 11 1
+  seq no type 10 1
+    name l ref YYLEX 0 0
+ecom to: 
+name .b384 (int, ref Redir) 0 0
+generate desc for big
+ecom: 
+name l ref YYLEX 0 0
+ecom to: 
+* ref YYLEX 8 0
+  + int 15 0
+    name .b383 big 0 0
+    const (64) int 6 0
+ecom: 
+= ref Redir 10 1
+  * ref Redir 0 0
+    + int 13 1
+      adr int 13 1
+        name .b384 (int, ref Redir) 0 0
+      const t1 (8) int 6 0
+  name nil ref Redir 1 0
+ecom: 
+name nil ref Redir 1 0
+ecom to: 
+* ref Redir 0 0
+  + int 13 1
+    adr int 13 1
+      name .b384 (int, ref Redir) 0 0
+    const t1 (8) int 6 0
+ecom: 
+= (string, int) 10 2
+  tuple (string, int) 10 1
+    seq no type 10 1
+      * string 8 0
+        + int 15 1
+          name l ref YYLEX 0 0
+          const err (32) int 6 0
+      seq no type 10 1
+        * int 8 0
+          + int 15 1
+            name l ref YYLEX 0 0
+            const errline (40) int 6 0
+  tuple (string, int) 10 1
+    seq no type 10 1
+      const syntax error in redirection string 1 0
+      seq no type 10 1
+        * int 8 0
+          + int 15 1
+            name l ref YYLEX 0 0
+            const linenum (108) int 6 0
+generate desc for (string, int)
+descmap adt offset 0
+descmap offset 0
+descmap t0 type string offset 0 (d->offset=0 start=0) returns 0
+descmap t1 type int offset 8 (d->offset=8 start=0) returns -1
+generate desc for (string, int)
+	desc	$-1,16,"80"
+ecom: 
+tuple (string, int) 10 1
+  seq no type 10 1
+    const syntax error in redirection string 1 0
+    seq no type 10 1
+      * int 8 0
+        + int 15 1
+          name l ref YYLEX 0 0
+          const linenum (108) int 6 0
+ecom to: 
+name .b385 (string, int) 0 0
+ecom: 
+const syntax error in redirection string 1 0
+ecom to: 
+* string 0 0
+  + int 13 1
+    adr int 13 1
+      name .b385 (string, int) 0 0
+    const (0) int 6 0
+ecom: 
+* int 8 0
+  + int 15 1
+    name l ref YYLEX 0 0
+    const linenum (108) int 6 0
+ecom to: 
+* int 0 0
+  + int 13 1
+    adr int 13 1
+      name .b385 (string, int) 0 0
+    const (8) int 6 0
+ecom: 
+= string 10 1
+  * string 0 0
+    adr int 13 1
+      name .b385 (string, int) 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+* string 0 0
+  adr int 13 1
+    name .b385 (string, int) 0 0
+ecom: 
+call no type 10 2
+  name ungetc fn(lex: self ref YYLEX) 11 1
+  seq nothing 10 1
+    name l ref YYLEX 0 0
+generate desc for big
+ecom: 
+name l ref YYLEX 0 0
+ecom to: 
+* ref YYLEX 8 0
+  + int 15 0
+    name .b383 big 0 0
+    const (64) int 6 0
+ecom: 
+= ref Redir 10 1
+  * ref Redir 8 0
+    + int 15 1
+      name l ref YYLEX 0 0
+      const redir (16) int 6 0
+  ref ref Redir 10 1
+    tuple Redir 10 1
+      seq no type 10 1
+        const (-1) int 6 0
+        seq no type 10 1
+          const (-1) int 6 0
+          seq no type 10 1
+            const (-1) int 6 0
+ecom: 
+ref ref Redir 10 1
+  tuple Redir 10 1
+    seq no type 10 1
+      const (-1) int 6 0
+      seq no type 10 1
+        const (-1) int 6 0
+        seq no type 10 1
+          const (-1) int 6 0
+ecom to: 
+* ref Redir 8 0
+  + int 15 1
+    name l ref YYLEX 0 0
+    const redir (16) int 6 0
+generate desc for ref Redir
+generate desc for ref Redir
+	desc	$-1,8,"80"
+generate desc for Redir
+ecom: 
+tuple Redir 10 1
+  seq no type 10 1
+    const (-1) int 6 0
+    seq no type 10 1
+      const (-1) int 6 0
+      seq no type 10 1
+        const (-1) int 6 0
+ecom to: 
+* Redir 8 0
+  name .b386 ref Redir 0 0
+ecom: 
+const (-1) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 1
+    adr int 15 1
+      * Redir 8 0
+        name .b386 ref Redir 0 0
+    const (0) int 6 0
+ecom: 
+const (-1) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 1
+    adr int 15 1
+      * Redir 8 0
+        name .b386 ref Redir 0 0
+    const (4) int 6 0
+ecom: 
+const (-1) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 1
+    adr int 15 1
+      * Redir 8 0
+        name .b386 ref Redir 0 0
+    const (8) int 6 0
+ecom: 
+= ref Redir 10 1
+  name .b386 ref Redir 0 0
+  name nil ref Redir 1 0
+ecom: 
+name nil ref Redir 1 0
+ecom to: 
+name .b386 ref Redir 0 0
+ecom: 
+= int 10 1
+  * int 10 1
+    * ref Redir 8 0
+      + int 15 1
+        name l ref YYLEX 0 0
+        const redir (16) int 6 0
+  name rtype int 0 0
+eacom: 
+* int 10 1
+  * ref Redir 8 0
+    + int 15 1
+      name l ref YYLEX 0 0
+      const redir (16) int 6 0
+generate desc for ref Redir
+generate desc for ref Redir
+	desc	$-1,8,"80"
+ecom: 
+* ref Redir 8 0
+  + int 15 1
+    name l ref YYLEX 0 0
+    const redir (16) int 6 0
+ecom to: 
+name .b386 ref Redir 0 0
+ecom: 
+name rtype int 0 0
+ecom to: 
+* int 8 1
+  name .b386 ref Redir 0 0
+ecom: 
+= ref Redir 10 1
+  name .b386 ref Redir 0 0
+  name nil ref Redir 1 0
+ecom: 
+name nil ref Redir 1 0
+ecom to: 
+name .b386 ref Redir 0 0
+ecom: 
+= int 10 1
+  name tok int 0 0
+  const (124) int 6 0
+ecom: 
+const (124) int 6 0
+ecom to: 
+name tok int 0 0
+ecom: 
+= ref Redir 10 1
+  * ref Redir 8 0
+    + int 15 1
+      name l ref YYLEX 0 0
+      const redir (16) int 6 0
+  name nil polymorphic type 1 0
+ecom: 
+name nil ref Redir 1 0
+ecom to: 
+* ref Redir 8 0
+  + int 15 1
+    name l ref YYLEX 0 0
+    const redir (16) int 6 0
+eacom: 
+= int 10 2
+  name c int 0 0
+  call int 10 2
+    name getc fn(lex: self ref YYLEX): int 11 1
+    seq nothing 10 1
+      name l ref YYLEX 0 0
+ecom: 
+= int 10 2
+  name c int 0 0
+  call int 10 2
+    name getc fn(lex: self ref YYLEX): int 11 1
+    seq nothing 10 1
+      name l ref YYLEX 0 0
+ecom to: 
+name .t382 int 0 0
+ecom: 
+call int 10 2
+  name getc fn(lex: self ref YYLEX): int 11 1
+  seq nothing 10 1
+    name l ref YYLEX 0 0
+ecom to: 
+name c int 0 0
+generate desc for big
+ecom: 
+name l ref YYLEX 0 0
+ecom to: 
+* ref YYLEX 8 0
+  + int 15 0
+    name .b383 big 0 0
+    const (64) int 6 0
+ecom: 
+= (int, ref Redir) 10 2
+  tuple (int, ref Redir) 10 1
+    seq no type 10 1
+      name tok int 0 0
+      seq no type 10 1
+        * ref Redir 8 0
+          + int 15 1
+            name l ref YYLEX 0 0
+            const redir (16) int 6 0
+  call (int, ref Redir) 10 2
+    name readfdassign fn(lex: ref YYLEX): (int, ref Redir) 11 1
+    seq no type 10 1
+      name l ref YYLEX 0 0
+generate desc for (int, ref Redir)
+ecom: 
+call (int, ref Redir) 10 2
+  name readfdassign fn(lex: ref YYLEX): (int, ref Redir) 11 1
+  seq no type 10 1
+    name l ref YYLEX 0 0
+ecom to: 
+name .b384 (int, ref Redir) 0 0
+generate desc for big
+ecom: 
+name l ref YYLEX 0 0
+ecom to: 
+* ref YYLEX 8 0
+  + int 15 0
+    name .b383 big 0 0
+    const (64) int 6 0
+ecom: 
+= ref Redir 10 1
+  * ref Redir 0 0
+    + int 13 1
+      adr int 13 1
+        name .b384 (int, ref Redir) 0 0
+      const t1 (8) int 6 0
+  name nil ref Redir 1 0
+ecom: 
+name nil ref Redir 1 0
+ecom to: 
+* ref Redir 0 0
+  + int 13 1
+    adr int 13 1
+      name .b384 (int, ref Redir) 0 0
+    const t1 (8) int 6 0
+ecom: 
+= (string, int) 10 2
+  tuple (string, int) 10 1
+    seq no type 10 1
+      * string 8 0
+        + int 15 1
+          name l ref YYLEX 0 0
+          const err (32) int 6 0
+      seq no type 10 1
+        * int 8 0
+          + int 15 1
+            name l ref YYLEX 0 0
+            const errline (40) int 6 0
+  tuple (string, int) 10 1
+    seq no type 10 1
+      const syntax error in pipe redirection string 1 0
+      seq no type 10 1
+        * int 8 0
+          + int 15 1
+            name l ref YYLEX 0 0
+            const linenum (108) int 6 0
+generate desc for (string, int)
+descmap adt offset 0
+descmap offset 0
+descmap t0 type string offset 0 (d->offset=0 start=0) returns 0
+descmap t1 type int offset 8 (d->offset=8 start=0) returns -1
+generate desc for (string, int)
+	desc	$-1,16,"80"
+ecom: 
+tuple (string, int) 10 1
+  seq no type 10 1
+    const syntax error in pipe redirection string 1 0
+    seq no type 10 1
+      * int 8 0
+        + int 15 1
+          name l ref YYLEX 0 0
+          const linenum (108) int 6 0
+ecom to: 
+name .b385 (string, int) 0 0
+ecom: 
+const syntax error in pipe redirection string 1 0
+ecom to: 
+* string 0 0
+  + int 13 1
+    adr int 13 1
+      name .b385 (string, int) 0 0
+    const (0) int 6 0
+ecom: 
+* int 8 0
+  + int 15 1
+    name l ref YYLEX 0 0
+    const linenum (108) int 6 0
+ecom to: 
+* int 0 0
+  + int 13 1
+    adr int 13 1
+      name .b385 (string, int) 0 0
+    const (8) int 6 0
+ecom: 
+= string 10 1
+  * string 0 0
+    adr int 13 1
+      name .b385 (string, int) 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+* string 0 0
+  adr int 13 1
+    name .b385 (string, int) 0 0
+ecom: 
+name tok int 0 0
+ecom to: 
+* int 8 0
+  name .ret int 0 0
+ecom: 
+= int 10 1
+  name tok int 0 0
+  const (124) int 6 0
+ecom: 
+const (124) int 6 0
+ecom to: 
+name tok int 0 0
+ecom: 
+= int 10 1
+  name tok int 0 0
+  const OROR (57353) int 6 0
+ecom: 
+const OROR (57353) int 6 0
+ecom to: 
+name tok int 0 0
+ecom: 
+call no type 10 2
+  name ungetc fn(lex: self ref YYLEX) 11 1
+  seq nothing 10 1
+    name l ref YYLEX 0 0
+generate desc for big
+ecom: 
+name l ref YYLEX 0 0
+ecom to: 
+* ref YYLEX 8 0
+  + int 15 0
+    name .b383 big 0 0
+    const (64) int 6 0
+ecom: 
+call no type 10 2
+  name ungetc fn(lex: self ref YYLEX) 11 1
+  seq nothing 10 1
+    name l ref YYLEX 0 0
+generate desc for big
+ecom: 
+name l ref YYLEX 0 0
+ecom to: 
+* ref YYLEX 8 0
+  + int 15 0
+    name .b383 big 0 0
+    const (64) int 6 0
+ecom: 
+= int 10 1
+  name tok int 0 0
+  const (94) int 6 0
+ecom: 
+const (94) int 6 0
+ecom to: 
+name tok int 0 0
+ecom: 
+= string 10 1
+  name s string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name s string 0 0
+ecom: 
+= int 10 1
+  name startline int 0 0
+  * int 8 0
+    + int 15 1
+      name l ref YYLEX 0 0
+      const linenum (108) int 6 0
+ecom: 
+* int 8 0
+  + int 15 1
+    name l ref YYLEX 0 0
+    const linenum (108) int 6 0
+ecom to: 
+name startline int 0 0
+ecom: 
+= string 10 1
+  name s string 0 0
+  const  string 1 0
+ecom: 
+const  string 1 0
+ecom to: 
+name s string 0 0
+eacom: 
+= int 10 2
+  name nc int 0 0
+  call int 10 2
+    name getc fn(lex: self ref YYLEX): int 11 1
+    seq nothing 10 1
+      name l ref YYLEX 0 0
+ecom: 
+= int 10 2
+  name nc int 0 0
+  call int 10 2
+    name getc fn(lex: self ref YYLEX): int 11 1
+    seq nothing 10 1
+      name l ref YYLEX 0 0
+ecom to: 
+name .t382 int 0 0
+ecom: 
+call int 10 2
+  name getc fn(lex: self ref YYLEX): int 11 1
+  seq nothing 10 1
+    name l ref YYLEX 0 0
+ecom to: 
+name nc int 0 0
+generate desc for big
+ecom: 
+name l ref YYLEX 0 0
+ecom to: 
+* ref YYLEX 8 0
+  + int 15 0
+    name .b383 big 0 0
+    const (64) int 6 0
+ecom: 
+= int 10 1
+  inds int 10 1
+    name s string 0 0
+    len int 10 1
+      name s string 0 0
+  name nc int 0 0
+ecom: 
+len int 10 1
+  name s string 0 0
+ecom to: 
+name .t382 int 0 0
+ecom: 
+= (string, int) 10 2
+  tuple (string, int) 10 1
+    seq no type 10 1
+      * string 8 0
+        + int 15 1
+          name l ref YYLEX 0 0
+          const err (32) int 6 0
+      seq no type 10 1
+        * int 8 0
+          + int 15 1
+            name l ref YYLEX 0 0
+            const errline (40) int 6 0
+  tuple (string, int) 10 1
+    seq no type 10 1
+      const unterminated string literal string 1 0
+      seq no type 10 1
+        name startline int 0 0
+ecom: 
+= string 10 1
+  * string 8 0
+    + int 15 1
+      name l ref YYLEX 0 0
+      const err (32) int 6 0
+  const unterminated string literal string 1 0
+ecom: 
+const unterminated string literal string 1 0
+ecom to: 
+* string 8 0
+  + int 15 1
+    name l ref YYLEX 0 0
+    const err (32) int 6 0
+ecom: 
+= int 10 1
+  * int 8 0
+    + int 15 1
+      name l ref YYLEX 0 0
+      const errline (40) int 6 0
+  name startline int 0 0
+ecom: 
+name startline int 0 0
+ecom to: 
+* int 8 0
+  + int 15 1
+    name l ref YYLEX 0 0
+    const errline (40) int 6 0
+ecom: 
+const ERROR (57351) int 6 0
+ecom to: 
+* int 8 0
+  name .ret int 0 0
+eacom: 
+call int 10 2
+  name getc fn(lex: self ref YYLEX): int 11 1
+  seq nothing 10 1
+    name l ref YYLEX 0 0
+ecom: 
+call int 10 2
+  name getc fn(lex: self ref YYLEX): int 11 1
+  seq nothing 10 1
+    name l ref YYLEX 0 0
+ecom to: 
+name .t382 int 0 0
+generate desc for big
+ecom: 
+name l ref YYLEX 0 0
+ecom to: 
+* ref YYLEX 8 0
+  + int 15 0
+    name .b383 big 0 0
+    const (64) int 6 0
+ecom: 
+call no type 10 2
+  name ungetc fn(lex: self ref YYLEX) 11 1
+  seq nothing 10 1
+    name l ref YYLEX 0 0
+generate desc for big
+ecom: 
+name l ref YYLEX 0 0
+ecom to: 
+* ref YYLEX 8 0
+  + int 15 0
+    name .b383 big 0 0
+    const (64) int 6 0
+ecom: 
+= int 10 1
+  inds int 10 1
+    name s string 0 0
+    len int 10 1
+      name s string 0 0
+  const (39) int 6 0
+ecom: 
+len int 10 1
+  name s string 0 0
+ecom to: 
+name .t382 int 0 0
+ecom: 
+= string 10 1
+  * string 8 0
+    + int 15 1
+      name l ref YYLEX 0 0
+      const word (8) int 6 0
+  name s string 0 0
+ecom: 
+name s string 0 0
+ecom to: 
+* string 8 0
+  + int 15 1
+    name l ref YYLEX 0 0
+    const word (8) int 6 0
+ecom: 
+= int 10 1
+  name tok int 0 0
+  const WORD (57348) int 6 0
+ecom: 
+const WORD (57348) int 6 0
+ecom to: 
+name tok int 0 0
+ecom: 
+= int 10 1
+  name endword int 0 0
+  const (1) int 6 0
+ecom: 
+const (1) int 6 0
+ecom to: 
+name endword int 0 0
+ecom: 
+= string 10 1
+  name s string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name s string 0 0
+eacom: 
+call int 10 2
+  name getc fn(lex: self ref YYLEX): int 11 1
+  seq nothing 10 1
+    name l ref YYLEX 0 0
+ecom: 
+call int 10 2
+  name getc fn(lex: self ref YYLEX): int 11 1
+  seq nothing 10 1
+    name l ref YYLEX 0 0
+ecom to: 
+name .t382 int 0 0
+generate desc for big
+ecom: 
+name l ref YYLEX 0 0
+ecom to: 
+* ref YYLEX 8 0
+  + int 15 0
+    name .b383 big 0 0
+    const (64) int 6 0
+ecom: 
+= int 10 1
+  name tok int 0 0
+  const (61) int 6 0
+ecom: 
+const (61) int 6 0
+ecom to: 
+name tok int 0 0
+ecom: 
+= int 10 1
+  * int 8 0
+    + int 15 1
+      name l ref YYLEX 0 0
+      const optype (24) int 6 0
+  const n_LOCAL (16) int 6 0
+ecom: 
+const n_LOCAL (16) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 1
+    name l ref YYLEX 0 0
+    const optype (24) int 6 0
+ecom: 
+= string 10 1
+  name word string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name word string 0 0
+ecom: 
+= string 10 1
+  name allowed string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name allowed string 0 0
+ecom: 
+call no type 10 2
+  name ungetc fn(lex: self ref YYLEX) 11 1
+  seq nothing 10 1
+    name l ref YYLEX 0 0
+generate desc for big
+ecom: 
+name l ref YYLEX 0 0
+ecom to: 
+* ref YYLEX 8 0
+  + int 15 0
+    name .b383 big 0 0
+    const (64) int 6 0
+ecom: 
+call no type 10 2
+  name ungetc fn(lex: self ref YYLEX) 11 1
+  seq nothing 10 1
+    name l ref YYLEX 0 0
+generate desc for big
+ecom: 
+name l ref YYLEX 0 0
+ecom to: 
+* ref YYLEX 8 0
+  + int 15 0
+    name .b383 big 0 0
+    const (64) int 6 0
+ecom: 
+= int 10 1
+  name tok int 0 0
+  const (94) int 6 0
+ecom: 
+const (94) int 6 0
+ecom to: 
+name tok int 0 0
+ecom: 
+= string 10 1
+  name word string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name word string 0 0
+ecom: 
+= string 10 1
+  name allowed string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name allowed string 0 0
+ecom: 
+= string 10 1
+  name allowed string 0 0
+  const a-zA-Z0-9*_ string 1 0
+ecom: 
+const a-zA-Z0-9*_ string 1 0
+ecom to: 
+name allowed string 0 0
+ecom: 
+= string 10 1
+  name allowed string 0 0
+  const ^
+ 	
|$'#<>;^(){}`&=" string 1 0
+ecom: 
+const ^
+ 	
|$'#<>;^(){}`&=" string 1 0
+ecom to: 
+name allowed string 0 0
+ecom: 
+= string 10 1
+  name word string 0 0
+    vardecl string 10 1
+      seq nothing 10 1
+  const  string 1 0
+ecom: 
+const  string 1 0
+ecom to: 
+name word string 0 0
+  vardecl string 10 1
+    seq nothing 10 1
+ecom: 
+= int 10 1
+  inds int 10 1
+    name word string 0 0
+    len int 10 1
+      name word string 0 0
+  const GLOB (1) int 6 0
+ecom: 
+len int 10 1
+  name word string 0 0
+ecom to: 
+name .t382 int 0 0
+ecom: 
+= int 10 2
+  name nc int 0 0
+  call int 10 2
+    name getc fn(lex: self ref YYLEX): int 11 1
+    seq nothing 10 1
+      name l ref YYLEX 0 0
+ecom: 
+call int 10 2
+  name getc fn(lex: self ref YYLEX): int 11 1
+  seq nothing 10 1
+    name l ref YYLEX 0 0
+ecom to: 
+name nc int 0 0
+generate desc for big
+ecom: 
+name l ref YYLEX 0 0
+ecom to: 
+* ref YYLEX 8 0
+  + int 15 0
+    name .b383 big 0 0
+    const (64) int 6 0
+ecom: 
+call no type 10 2
+  name ungetc fn(lex: self ref YYLEX) 11 1
+  seq nothing 10 1
+    name l ref YYLEX 0 0
+generate desc for big
+ecom: 
+name l ref YYLEX 0 0
+ecom to: 
+* ref YYLEX 8 0
+  + int 15 0
+    name .b383 big 0 0
+    const (64) int 6 0
+ecom: 
+= int 10 1
+  inds int 10 1
+    name word string 0 0
+    len int 10 1
+      name word string 0 0
+  name c int 0 0
+ecom: 
+len int 10 1
+  name word string 0 0
+ecom to: 
+name .t382 int 0 0
+eacom: 
+= int 10 2
+  name c int 0 0
+  call int 10 2
+    name getc fn(lex: self ref YYLEX): int 11 1
+    seq nothing 10 1
+      name l ref YYLEX 0 0
+ecom: 
+= int 10 2
+  name c int 0 0
+  call int 10 2
+    name getc fn(lex: self ref YYLEX): int 11 1
+    seq nothing 10 1
+      name l ref YYLEX 0 0
+ecom to: 
+name .t382 int 0 0
+ecom: 
+call int 10 2
+  name getc fn(lex: self ref YYLEX): int 11 1
+  seq nothing 10 1
+    name l ref YYLEX 0 0
+ecom to: 
+name c int 0 0
+generate desc for big
+ecom: 
+name l ref YYLEX 0 0
+ecom to: 
+* ref YYLEX 8 0
+  + int 15 0
+    name .b383 big 0 0
+    const (64) int 6 0
+eacom: 
+call int 10 2
+  -> fn(c: int, cl: string): int 12 1
+    name str String 1 0
+    name in nothing 11 1
+  seq no type 10 1
+    name c int 0 0
+    seq no type 10 1
+      name allowed string 0 0
+ecom: 
+call int 10 2
+  -> fn(c: int, cl: string): int 12 1
+    name str String 1 0
+    name in nothing 11 1
+  seq no type 10 1
+    name c int 0 0
+    seq no type 10 1
+      name allowed string 0 0
+ecom to: 
+name .t382 int 0 0
+generate desc for big
+ecom: 
+name c int 0 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b383 big 0 0
+    const (64) int 6 0
+ecom: 
+name allowed string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b383 big 0 0
+    const (72) int 6 0
+ecom: 
+call no type 10 2
+  name ungetc fn(lex: self ref YYLEX) 11 1
+  seq nothing 10 1
+    name l ref YYLEX 0 0
+generate desc for big
+ecom: 
+name l ref YYLEX 0 0
+ecom to: 
+* ref YYLEX 8 0
+  + int 15 0
+    name .b383 big 0 0
+    const (64) int 6 0
+ecom: 
+= string 10 1
+  * string 8 0
+    + int 15 1
+      name l ref YYLEX 0 0
+      const word (8) int 6 0
+  name word string 0 0
+ecom: 
+name word string 0 0
+ecom to: 
+* string 8 0
+  + int 15 1
+    name l ref YYLEX 0 0
+    const word (8) int 6 0
+ecom: 
+= int 10 1
+  name tok int 0 0
+  const WORD (57348) int 6 0
+ecom: 
+const WORD (57348) int 6 0
+ecom to: 
+name tok int 0 0
+ecom: 
+= int 10 1
+  name endword int 0 0
+  const (1) int 6 0
+ecom: 
+const (1) int 6 0
+ecom to: 
+name endword int 0 0
+ecom: 
+= string 10 1
+  name word string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name word string 0 0
+ecom: 
+= string 10 1
+  name allowed string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name allowed string 0 0
+ecom: 
+= int 10 1
+  * int 8 0
+    + int 15 1
+      name l ref YYLEX 0 0
+      const atendword (60) int 6 0
+  name endword int 0 0
+ecom: 
+name endword int 0 0
+ecom to: 
+* int 8 0
+  + int 15 1
+    name l ref YYLEX 0 0
+    const atendword (60) int 6 0
+ecom: 
+= int 10 1
+  * int 8 0
+    + int 15 1
+      name l ref YYLEX 0 0
+      const wasdollar (56) int 6 0
+  name wasdollar int 0 0
+ecom: 
+name wasdollar int 0 0
+ecom to: 
+* int 8 0
+  + int 15 1
+    name l ref YYLEX 0 0
+    const wasdollar (56) int 6 0
+ecom: 
+name tok int 0 0
+ecom to: 
+* int 8 0
+  name .ret int 0 0
+fn: lex
+64: argument l ref YYLEX ref 63
+72: local tok int ref 32
+76: local c int ref 16
+80: local rtype int ref 5
+84: local endword int ref 4
+88: local nc int ref 4
+92: local wasdollar int ref 3
+96: local .t382 int ref 1
+104: local .b383 big ref 28
+112: local s string ref 6
+120: local word string ref 6
+128: local allowed string ref 3
+136: local .b386 ref Redir ref 2
+144: local .b384 (int, ref Redir) ref 2
+160: local .b385 (string, int) ref 2
+88: local nc int ref 4
+80: local nc int ref 2
+80: local startline int ref 2
+generate desc for YYLEX.lex
+descmap offset 0
+descmap l type ref YYLEX offset 64 (d->offset=64 start=0) returns 64
+descmap tok type int offset 72 (d->offset=72 start=0) returns -1
+descmap c type int offset 76 (d->offset=76 start=0) returns -1
+descmap rtype type int offset 80 (d->offset=80 start=0) returns -1
+descmap endword type int offset 84 (d->offset=84 start=0) returns -1
+descmap nc type int offset 88 (d->offset=88 start=0) returns -1
+descmap wasdollar type int offset 92 (d->offset=92 start=0) returns -1
+descmap .t382 type int offset 96 (d->offset=96 start=0) returns -1
+descmap .b383 type big offset 104 (d->offset=104 start=0) returns -1
+descmap s type string offset 112 (d->offset=112 start=0) returns 112
+descmap word type string offset 120 (d->offset=120 start=0) returns 120
+descmap allowed type string offset 128 (d->offset=128 start=0) returns 128
+descmap .b386 type ref Redir offset 136 (d->offset=136 start=0) returns 136
+descmap adt offset 144
+descmap offset 144
+descmap t0 type int offset 144 (d->offset=0 start=144) returns -1
+descmap t1 type ref Redir offset 152 (d->offset=8 start=144) returns 152
+descmap .b384 type (int, ref Redir) offset 144 (d->offset=144 start=0) returns 152
+descmap adt offset 160
+descmap offset 160
+descmap t0 type string offset 160 (d->offset=0 start=160) returns 160
+descmap t1 type int offset 168 (d->offset=8 start=160) returns -1
+descmap .b385 type (string, int) offset 160 (d->offset=160 start=0) returns 160
+fncom: tokstr 1 6e9d50
+fncom: ungetc 15 4d5be0
+ecom: 
+-- int 10 1
+  * int 8 0
+    + int 15 1
+      name lex ref YYLEX 0 0
+      const strpos (104) int 6 0
+  const (1) int 6 0
+ecom: 
+++ int 10 1
+  * int 8 0
+    + int 15 1
+      name lex ref YYLEX 0 0
+      const ncbuf (80) int 6 0
+  const (1) int 6 0
+ecom: 
+= int 10 1
+  * int 8 0
+    + int 15 1
+      name lex ref YYLEX 0 0
+      const strpos (104) int 6 0
+  - int 10 1
+    len int 10 1
+      * array of int 8 0
+        + int 15 1
+          name lex ref YYLEX 0 0
+          const cbuf (72) int 6 0
+    const (1) int 6 0
+ecom: 
+- int 10 1
+  len int 10 1
+    * array of int 8 0
+      + int 15 1
+        name lex ref YYLEX 0 0
+        const cbuf (72) int 6 0
+  const (1) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 1
+    name lex ref YYLEX 0 0
+    const strpos (104) int 6 0
+ecom: 
+len int 10 1
+  * array of int 8 0
+    + int 15 1
+      name lex ref YYLEX 0 0
+      const cbuf (72) int 6 0
+ecom to: 
+name .t387 int 0 0
+fn: ungetc
+64: argument lex ref YYLEX ref 6
+72: local .t387 int ref 1
+generate desc for YYLEX.ungetc
+descmap offset 0
+descmap lex type ref YYLEX offset 64 (d->offset=64 start=0) returns 64
+descmap .t387 type int offset 72 (d->offset=72 start=0) returns -1
+fncom: getc 16 4d5720
+ecom: 
+const EOF (-1) int 6 0
+ecom to: 
+* int 8 0
+  name .ret int 0 0
+ecom: 
+= int 10 1
+  name c int 0 0
+  * int 10 1
+    indx big 10 1
+      * array of int 8 0
+        + int 15 1
+          name lex ref YYLEX 0 0
+          const cbuf (72) int 6 0
+      ++ int 10 1
+        * int 8 0
+          + int 15 1
+            name lex ref YYLEX 0 0
+            const strpos (104) int 6 0
+        const (1) int 6 0
+ecom: 
+* int 10 1
+  indx big 10 1
+    * array of int 8 0
+      + int 15 1
+        name lex ref YYLEX 0 0
+        const cbuf (72) int 6 0
+    ++ int 10 1
+      * int 8 0
+        + int 15 1
+          name lex ref YYLEX 0 0
+          const strpos (104) int 6 0
+      const (1) int 6 0
+ecom to: 
+name c int 0 0
+eacom: 
+* int 10 1
+  indx big 10 1
+    * array of int 8 0
+      + int 15 1
+        name lex ref YYLEX 0 0
+        const cbuf (72) int 6 0
+    ++ int 10 1
+      * int 8 0
+        + int 15 1
+          name lex ref YYLEX 0 0
+          const strpos (104) int 6 0
+      const (1) int 6 0
+generate desc for big
+ecom: 
+indx big 10 1
+  * array of int 8 0
+    + int 15 1
+      name lex ref YYLEX 0 0
+      const cbuf (72) int 6 0
+  ++ int 10 1
+    * int 8 0
+      + int 15 1
+        name lex ref YYLEX 0 0
+        const strpos (104) int 6 0
+    const (1) int 6 0
+ecom to: 
+name .b388 big 0 0
+eacom: 
+++ int 10 1
+  * int 8 0
+    + int 15 1
+      name lex ref YYLEX 0 0
+      const strpos (104) int 6 0
+  const (1) int 6 0
+ecom: 
+++ int 10 1
+  * int 8 0
+    + int 15 1
+      name lex ref YYLEX 0 0
+      const strpos (104) int 6 0
+  const (1) int 6 0
+ecom to: 
+name .t389 int 0 0
+eacom: 
+len int 10 1
+  * array of int 8 0
+    + int 15 1
+      name lex ref YYLEX 0 0
+      const cbuf (72) int 6 0
+ecom: 
+len int 10 1
+  * array of int 8 0
+    + int 15 1
+      name lex ref YYLEX 0 0
+      const cbuf (72) int 6 0
+ecom to: 
+name .t389 int 0 0
+ecom: 
+* int 8 0
+  + int 15 1
+    name lex ref YYLEX 0 0
+    const strpos (104) int 6 0
+ecom to: 
+name .t390 int 0 0
+ecom: 
+= int 10 1
+  * int 8 0
+    + int 15 1
+      name lex ref YYLEX 0 0
+      const strpos (104) int 6 0
+  const (0) int 6 0
+ecom: 
+const (0) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 1
+    name lex ref YYLEX 0 0
+    const strpos (104) int 6 0
+ecom: 
+-- int 10 1
+  * int 8 0
+    + int 15 1
+      name lex ref YYLEX 0 0
+      const ncbuf (80) int 6 0
+  const (1) int 6 0
+ecom: 
+used int 10 2
+  call int 10 2
+    -> fn(fd: ref Sys->FD, s: string, nil: string, *): int 12 1
+      name sys Sys 1 0
+      name fprint nothing 11 1
+    seq no type 10 2
+      call ref Sys->FD 10 2
+        -> fn(fd: int): ref Sys->FD 12 1
+          name sys Sys 1 0
+          name fildes nothing 11 1
+        seq no type 10 1
+          const (2) int 6 0
+      seq no type 10 1
+        const %s string 1 0
+        seq no type 10 1
+          * string 8 0
+            + int 15 1
+              name lex ref YYLEX 0 0
+              const prompt (112) int 6 0
+ecom: 
+call int 10 2
+  -> fn(fd: ref Sys->FD, s: string, nil: string, *): int 12 1
+    name sys Sys 1 0
+    name fprint nothing 11 1
+  seq no type 10 2
+    call ref Sys->FD 10 2
+      -> fn(fd: int): ref Sys->FD 12 1
+        name sys Sys 1 0
+        name fildes nothing 11 1
+      seq no type 10 1
+        const (2) int 6 0
+    seq no type 10 1
+      const %s string 1 0
+      seq no type 10 1
+        * string 8 0
+          + int 15 1
+            name lex ref YYLEX 0 0
+            const prompt (112) int 6 0
+ecom to: 
+name .t390 int 0 0
+generate desc for Sys->fprint
+descmap offset 0
+descmap fd type ref Sys->FD offset 64 (d->offset=64 start=0) returns 64
+descmap s type string offset 72 (d->offset=72 start=0) returns 72
+descmap type string offset 80 returns 80
+generate desc for big
+generate desc for ref Sys->FD
+ecom: 
+call ref Sys->FD 10 2
+  -> fn(fd: int): ref Sys->FD 12 1
+    name sys Sys 1 0
+    name fildes nothing 11 1
+  seq no type 10 1
+    const (2) int 6 0
+ecom to: 
+name .b391 ref Sys->FD 0 0
+generate desc for big
+ecom: 
+const (2) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b392 big 0 0
+    const (64) int 6 0
+ecom: 
+name .b391 ref Sys->FD 0 0
+ecom to: 
+* ref Sys->FD 8 0
+  + int 15 0
+    name .b388 big 0 0
+    const (64) int 6 0
+ecom: 
+= ref Sys->FD 10 1
+  name .b391 ref Sys->FD 0 0
+  name nil ref Sys->FD 1 0
+ecom: 
+name nil ref Sys->FD 1 0
+ecom to: 
+name .b391 ref Sys->FD 0 0
+ecom: 
+const %s string 1 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b388 big 0 0
+    const (72) int 6 0
+ecom: 
+* string 8 0
+  + int 15 1
+    name lex ref YYLEX 0 0
+    const prompt (112) int 6 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b388 big 0 0
+    const (80) int 6 0
+ecom: 
+= int 10 2
+  name c int 0 0
+  call int 10 2
+    -> fn(b: self ref Bufio->Iobuf): int 12 1
+      name bufio Bufio 1 0
+      name getc fn(b: self ref Bufio->Iobuf): int 11 1
+    seq nothing 10 1
+      * ref Bufio->Iobuf 8 0
+        + int 15 1
+          name lex ref YYLEX 0 0
+          const f (88) int 6 0
+ecom: 
+call int 10 2
+  -> fn(b: self ref Bufio->Iobuf): int 12 1
+    name bufio Bufio 1 0
+    name getc fn(b: self ref Bufio->Iobuf): int 11 1
+  seq nothing 10 1
+    * ref Bufio->Iobuf 8 0
+      + int 15 1
+        name lex ref YYLEX 0 0
+        const f (88) int 6 0
+ecom to: 
+name c int 0 0
+generate desc for big
+ecom: 
+* ref Bufio->Iobuf 8 0
+  + int 15 1
+    name lex ref YYLEX 0 0
+    const f (88) int 6 0
+ecom to: 
+* ref Bufio->Iobuf 8 0
+  + int 15 0
+    name .b392 big 0 0
+    const (64) int 6 0
+ecom: 
+= int 10 1
+  * int 8 0
+    + int 15 1
+      name lex ref YYLEX 0 0
+      const eof (64) int 6 0
+  const (1) int 6 0
+ecom: 
+const (1) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 1
+    name lex ref YYLEX 0 0
+    const eof (64) int 6 0
+ecom: 
+= int 10 1
+  name c int 0 0
+  const EOF (-1) int 6 0
+ecom: 
+const EOF (-1) int 6 0
+ecom to: 
+name c int 0 0
+ecom: 
+++ int 10 1
+  * int 8 0
+    + int 15 1
+      name lex ref YYLEX 0 0
+      const linenum (108) int 6 0
+  const (1) int 6 0
+ecom: 
+= int 10 1
+  * int 8 0
+    + int 15 1
+      name lex ref YYLEX 0 0
+      const lastnl (120) int 6 0
+  == int 10 1
+    name c int 0 0
+    const (10) int 6 0
+ecom: 
+== int 10 1
+  name c int 0 0
+  const (10) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 1
+    name lex ref YYLEX 0 0
+    const lastnl (120) int 6 0
+ecom: 
+= int 10 1
+  * int 10 1
+    indx big 10 1
+      * array of int 8 0
+        + int 15 1
+          name lex ref YYLEX 0 0
+          const cbuf (72) int 6 0
+      ++ int 10 1
+        * int 8 0
+          + int 15 1
+            name lex ref YYLEX 0 0
+            const strpos (104) int 6 0
+        const (1) int 6 0
+  name c int 0 0
+eacom: 
+* int 10 1
+  indx big 10 1
+    * array of int 8 0
+      + int 15 1
+        name lex ref YYLEX 0 0
+        const cbuf (72) int 6 0
+    ++ int 10 1
+      * int 8 0
+        + int 15 1
+          name lex ref YYLEX 0 0
+          const strpos (104) int 6 0
+      const (1) int 6 0
+generate desc for big
+ecom: 
+indx big 10 1
+  * array of int 8 0
+    + int 15 1
+      name lex ref YYLEX 0 0
+      const cbuf (72) int 6 0
+  ++ int 10 1
+    * int 8 0
+      + int 15 1
+        name lex ref YYLEX 0 0
+        const strpos (104) int 6 0
+    const (1) int 6 0
+ecom to: 
+name .b392 big 0 0
+eacom: 
+++ int 10 1
+  * int 8 0
+    + int 15 1
+      name lex ref YYLEX 0 0
+      const strpos (104) int 6 0
+  const (1) int 6 0
+ecom: 
+++ int 10 1
+  * int 8 0
+    + int 15 1
+      name lex ref YYLEX 0 0
+      const strpos (104) int 6 0
+  const (1) int 6 0
+ecom to: 
+name .t390 int 0 0
+ecom: 
+name c int 0 0
+ecom to: 
+* int 8 1
+  name .b392 big 0 0
+eacom: 
+len int 10 1
+  * array of int 8 0
+    + int 15 1
+      name lex ref YYLEX 0 0
+      const cbuf (72) int 6 0
+ecom: 
+len int 10 1
+  * array of int 8 0
+    + int 15 1
+      name lex ref YYLEX 0 0
+      const cbuf (72) int 6 0
+ecom to: 
+name .t390 int 0 0
+ecom: 
+* int 8 0
+  + int 15 1
+    name lex ref YYLEX 0 0
+    const strpos (104) int 6 0
+ecom to: 
+name .t389 int 0 0
+ecom: 
+= int 10 1
+  * int 8 0
+    + int 15 1
+      name lex ref YYLEX 0 0
+      const strpos (104) int 6 0
+  const (0) int 6 0
+ecom: 
+const (0) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 1
+    name lex ref YYLEX 0 0
+    const strpos (104) int 6 0
+eacom: 
+len int 10 1
+  * string 8 0
+    + int 15 1
+      name lex ref YYLEX 0 0
+      const s (96) int 6 0
+ecom: 
+len int 10 1
+  * string 8 0
+    + int 15 1
+      name lex ref YYLEX 0 0
+      const s (96) int 6 0
+ecom to: 
+name .t390 int 0 0
+ecom: 
+* int 8 0
+  + int 15 1
+    name lex ref YYLEX 0 0
+    const strpos (104) int 6 0
+ecom to: 
+name .t389 int 0 0
+ecom: 
+= int 10 1
+  * int 8 0
+    + int 15 1
+      name lex ref YYLEX 0 0
+      const eof (64) int 6 0
+  const (1) int 6 0
+ecom: 
+const (1) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 1
+    name lex ref YYLEX 0 0
+    const eof (64) int 6 0
+ecom: 
+= int 10 1
+  name c int 0 0
+  const EOF (-1) int 6 0
+ecom: 
+const EOF (-1) int 6 0
+ecom to: 
+name c int 0 0
+ecom: 
+= int 10 1
+  name c int 0 0
+  inds int 10 1
+    * string 8 0
+      + int 15 1
+        name lex ref YYLEX 0 0
+        const s (96) int 6 0
+    ++ int 10 1
+      * int 8 0
+        + int 15 1
+          name lex ref YYLEX 0 0
+          const strpos (104) int 6 0
+      const (1) int 6 0
+ecom: 
+inds int 10 1
+  * string 8 0
+    + int 15 1
+      name lex ref YYLEX 0 0
+      const s (96) int 6 0
+  ++ int 10 1
+    * int 8 0
+      + int 15 1
+        name lex ref YYLEX 0 0
+        const strpos (104) int 6 0
+    const (1) int 6 0
+ecom to: 
+name c int 0 0
+ecom: 
+++ int 10 1
+  * int 8 0
+    + int 15 1
+      name lex ref YYLEX 0 0
+      const strpos (104) int 6 0
+  const (1) int 6 0
+ecom to: 
+name .t390 int 0 0
+ecom: 
+name c int 0 0
+ecom to: 
+* int 8 0
+  name .ret int 0 0
+fn: getc
+64: argument lex ref YYLEX ref 29
+72: local c int ref 11
+76: local .t389 int ref 1
+80: local .t390 int ref 1
+88: local .b392 big ref 3
+96: local .b388 big ref 2
+104: local .b391 ref Sys->FD ref 1
+generate desc for YYLEX.getc
+descmap offset 0
+descmap lex type ref YYLEX offset 64 (d->offset=64 start=0) returns 64
+descmap c type int offset 72 (d->offset=72 start=0) returns -1
+descmap .t389 type int offset 76 (d->offset=76 start=0) returns -1
+descmap .t390 type int offset 80 (d->offset=80 start=0) returns -1
+descmap .b392 type big offset 88 (d->offset=88 start=0) returns -1
+descmap .b388 type big offset 96 (d->offset=96 start=0) returns -1
+descmap .b391 type ref Sys->FD offset 104 (d->offset=104 start=0) returns 104
+fncom: readnum 3 6e9e10
+ecom: 
+= int 10 1
+  name sum int 0 0
+  = int 10 1
+    name nc int 0 0
+    const (0) int 6 0
+ecom: 
+= int 10 1
+  name nc int 0 0
+  const (0) int 6 0
+ecom to: 
+name sum int 0 0
+ecom: 
+const (0) int 6 0
+ecom to: 
+name nc int 0 0
+eacom: 
+= int 10 2
+  name c int 0 0
+  call int 10 2
+    name getc fn(lex: self ref YYLEX): int 11 1
+    seq nothing 10 1
+      name lex ref YYLEX 0 0
+ecom: 
+= int 10 2
+  name c int 0 0
+  call int 10 2
+    name getc fn(lex: self ref YYLEX): int 11 1
+    seq nothing 10 1
+      name lex ref YYLEX 0 0
+ecom to: 
+name .t393 int 0 0
+ecom: 
+call int 10 2
+  name getc fn(lex: self ref YYLEX): int 11 1
+  seq nothing 10 1
+    name lex ref YYLEX 0 0
+ecom to: 
+name c int 0 0
+generate desc for big
+ecom: 
+name lex ref YYLEX 0 0
+ecom to: 
+* ref YYLEX 8 0
+  + int 15 0
+    name .b394 big 0 0
+    const (64) int 6 0
+ecom: 
+= int 10 2
+  name sum int 0 0
+  + int 10 2
+    * int 10 1
+      name sum int 0 0
+      const (10) int 6 0
+    - int 10 1
+      name c int 0 0
+      const (48) int 6 0
+ecom: 
++ int 10 2
+  * int 10 1
+    name sum int 0 0
+    const (10) int 6 0
+  - int 10 1
+    name c int 0 0
+    const (48) int 6 0
+ecom to: 
+name sum int 0 0
+ecom: 
+* int 10 1
+  name sum int 0 0
+  const (10) int 6 0
+ecom to: 
+name .t393 int 0 0
+eacom: 
+- int 10 1
+  name c int 0 0
+  const (48) int 6 0
+ecom: 
+- int 10 1
+  name c int 0 0
+  const (48) int 6 0
+ecom to: 
+name .t395 int 0 0
+ecom: 
+++ int 10 1
+  name nc int 0 0
+  const (1) int 6 0
+ecom: 
+call no type 10 2
+  name ungetc fn(lex: self ref YYLEX) 11 1
+  seq nothing 10 1
+    name lex ref YYLEX 0 0
+generate desc for big
+ecom: 
+name lex ref YYLEX 0 0
+ecom to: 
+* ref YYLEX 8 0
+  + int 15 0
+    name .b394 big 0 0
+    const (64) int 6 0
+ecom: 
+const (-1) int 6 0
+ecom to: 
+* int 8 0
+  name .ret int 0 0
+ecom: 
+name sum int 0 0
+ecom to: 
+* int 8 0
+  name .ret int 0 0
+fn: readnum
+64: argument lex ref YYLEX ref 2
+72: local sum int ref 4
+76: local c int ref 3
+80: local nc int ref 3
+84: local .t393 int ref 1
+88: local .t395 int ref 1
+96: local .b394 big ref 2
+generate desc for readnum
+descmap offset 0
+descmap lex type ref YYLEX offset 64 (d->offset=64 start=0) returns 64
+descmap sum type int offset 72 (d->offset=72 start=0) returns -1
+descmap c type int offset 76 (d->offset=76 start=0) returns -1
+descmap nc type int offset 80 (d->offset=80 start=0) returns -1
+descmap .t393 type int offset 84 (d->offset=84 start=0) returns -1
+descmap .t395 type int offset 88 (d->offset=88 start=0) returns -1
+descmap .b394 type big offset 96 (d->offset=96 start=0) returns -1
+fncom: readfdassign 3 6e9ed0
+ecom: 
+= int 10 2
+  name n1 int 0 0
+  call int 10 2
+    name readnum fn(lex: ref YYLEX): int 11 1
+    seq no type 10 1
+      name lex ref YYLEX 0 0
+ecom: 
+call int 10 2
+  name readnum fn(lex: ref YYLEX): int 11 1
+  seq no type 10 1
+    name lex ref YYLEX 0 0
+ecom to: 
+name n1 int 0 0
+generate desc for big
+ecom: 
+name lex ref YYLEX 0 0
+ecom to: 
+* ref YYLEX 8 0
+  + int 15 0
+    name .b396 big 0 0
+    const (64) int 6 0
+eacom: 
+= int 10 2
+  name c int 0 0
+  call int 10 2
+    name getc fn(lex: self ref YYLEX): int 11 1
+    seq nothing 10 1
+      name lex ref YYLEX 0 0
+ecom: 
+= int 10 2
+  name c int 0 0
+  call int 10 2
+    name getc fn(lex: self ref YYLEX): int 11 1
+    seq nothing 10 1
+      name lex ref YYLEX 0 0
+ecom to: 
+name .t397 int 0 0
+ecom: 
+call int 10 2
+  name getc fn(lex: self ref YYLEX): int 11 1
+  seq nothing 10 1
+    name lex ref YYLEX 0 0
+ecom to: 
+name c int 0 0
+generate desc for big
+ecom: 
+name lex ref YYLEX 0 0
+ecom to: 
+* ref YYLEX 8 0
+  + int 15 0
+    name .b396 big 0 0
+    const (64) int 6 0
+ecom: 
+tuple (int, ref Redir) 10 1
+  seq no type 10 1
+    const REDIR (57347) int 6 0
+    seq no type 10 1
+      ref ref Redir 10 1
+        tuple Redir 10 1
+          seq no type 10 1
+            const (-1) int 6 0
+            seq no type 10 1
+              name n1 int 0 0
+              seq no type 10 1
+                const (-1) int 6 0
+ecom to: 
+* (int, ref Redir) 8 0
+  name .ret int 0 0
+ecom: 
+const REDIR (57347) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 1
+    adr int 15 1
+      * (int, ref Redir) 8 0
+        name .ret int 0 0
+    const (0) int 6 0
+ecom: 
+ref ref Redir 10 1
+  tuple Redir 10 1
+    seq no type 10 1
+      const (-1) int 6 0
+      seq no type 10 1
+        name n1 int 0 0
+        seq no type 10 1
+          const (-1) int 6 0
+ecom to: 
+* ref Redir 8 0
+  + int 15 1
+    adr int 15 1
+      * (int, ref Redir) 8 0
+        name .ret int 0 0
+    const (8) int 6 0
+generate desc for ref Redir
+generate desc for ref Redir
+	desc	$-1,8,"80"
+generate desc for Redir
+ecom: 
+tuple Redir 10 1
+  seq no type 10 1
+    const (-1) int 6 0
+    seq no type 10 1
+      name n1 int 0 0
+      seq no type 10 1
+        const (-1) int 6 0
+ecom to: 
+* Redir 8 0
+  name .b398 ref Redir 0 0
+ecom: 
+const (-1) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 1
+    adr int 15 1
+      * Redir 8 0
+        name .b398 ref Redir 0 0
+    const (0) int 6 0
+ecom: 
+name n1 int 0 0
+ecom to: 
+* int 8 0
+  + int 15 1
+    adr int 15 1
+      * Redir 8 0
+        name .b398 ref Redir 0 0
+    const (4) int 6 0
+ecom: 
+const (-1) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 1
+    adr int 15 1
+      * Redir 8 0
+        name .b398 ref Redir 0 0
+    const (8) int 6 0
+ecom: 
+= ref Redir 10 1
+  name .b398 ref Redir 0 0
+  name nil ref Redir 1 0
+ecom: 
+name nil ref Redir 1 0
+ecom to: 
+name .b398 ref Redir 0 0
+ecom: 
+tuple (int, polymorphic type) 10 1
+  seq no type 10 1
+    const ERROR (57351) int 6 0
+    seq no type 10 1
+      name nil polymorphic type 1 0
+ecom to: 
+* (int, polymorphic type) 8 0
+  name .ret int 0 0
+ecom: 
+const ERROR (57351) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 1
+    adr int 15 1
+      * (int, polymorphic type) 8 0
+        name .ret int 0 0
+    const (0) int 6 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* polymorphic type 8 0
+  + int 15 1
+    adr int 15 1
+      * (int, polymorphic type) 8 0
+        name .ret int 0 0
+    const (8) int 6 0
+ecom: 
+= int 10 2
+  name n2 int 0 0
+  call int 10 2
+    name readnum fn(lex: ref YYLEX): int 11 1
+    seq no type 10 1
+      name lex ref YYLEX 0 0
+ecom: 
+call int 10 2
+  name readnum fn(lex: ref YYLEX): int 11 1
+  seq no type 10 1
+    name lex ref YYLEX 0 0
+ecom to: 
+name n2 int 0 0
+generate desc for big
+ecom: 
+name lex ref YYLEX 0 0
+ecom to: 
+* ref YYLEX 8 0
+  + int 15 0
+    name .b396 big 0 0
+    const (64) int 6 0
+eacom: 
+call int 10 2
+  name getc fn(lex: self ref YYLEX): int 11 1
+  seq nothing 10 1
+    name lex ref YYLEX 0 0
+ecom: 
+call int 10 2
+  name getc fn(lex: self ref YYLEX): int 11 1
+  seq nothing 10 1
+    name lex ref YYLEX 0 0
+ecom to: 
+name .t397 int 0 0
+generate desc for big
+ecom: 
+name lex ref YYLEX 0 0
+ecom to: 
+* ref YYLEX 8 0
+  + int 15 0
+    name .b396 big 0 0
+    const (64) int 6 0
+ecom: 
+tuple (int, polymorphic type) 10 1
+  seq no type 10 1
+    const ERROR (57351) int 6 0
+    seq no type 10 1
+      name nil polymorphic type 1 0
+ecom to: 
+* (int, polymorphic type) 8 0
+  name .ret int 0 0
+ecom: 
+const ERROR (57351) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 1
+    adr int 15 1
+      * (int, polymorphic type) 8 0
+        name .ret int 0 0
+    const (0) int 6 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* polymorphic type 8 0
+  + int 15 1
+    adr int 15 1
+      * (int, polymorphic type) 8 0
+        name .ret int 0 0
+    const (8) int 6 0
+ecom: 
+tuple (int, ref Redir) 10 1
+  seq no type 10 1
+    const DUP (57346) int 6 0
+    seq no type 10 1
+      ref ref Redir 10 1
+        tuple Redir 10 1
+          seq no type 10 1
+            const (-1) int 6 0
+            seq no type 10 1
+              name n1 int 0 0
+              seq no type 10 1
+                name n2 int 0 0
+ecom to: 
+* (int, ref Redir) 8 0
+  name .ret int 0 0
+ecom: 
+const DUP (57346) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 1
+    adr int 15 1
+      * (int, ref Redir) 8 0
+        name .ret int 0 0
+    const (0) int 6 0
+ecom: 
+ref ref Redir 10 1
+  tuple Redir 10 1
+    seq no type 10 1
+      const (-1) int 6 0
+      seq no type 10 1
+        name n1 int 0 0
+        seq no type 10 1
+          name n2 int 0 0
+ecom to: 
+* ref Redir 8 0
+  + int 15 1
+    adr int 15 1
+      * (int, ref Redir) 8 0
+        name .ret int 0 0
+    const (8) int 6 0
+generate desc for ref Redir
+generate desc for ref Redir
+	desc	$-1,8,"80"
+generate desc for Redir
+ecom: 
+tuple Redir 10 1
+  seq no type 10 1
+    const (-1) int 6 0
+    seq no type 10 1
+      name n1 int 0 0
+      seq no type 10 1
+        name n2 int 0 0
+ecom to: 
+* Redir 8 0
+  name .b398 ref Redir 0 0
+ecom: 
+const (-1) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 1
+    adr int 15 1
+      * Redir 8 0
+        name .b398 ref Redir 0 0
+    const (0) int 6 0
+ecom: 
+name n1 int 0 0
+ecom to: 
+* int 8 0
+  + int 15 1
+    adr int 15 1
+      * Redir 8 0
+        name .b398 ref Redir 0 0
+    const (4) int 6 0
+ecom: 
+name n2 int 0 0
+ecom to: 
+* int 8 0
+  + int 15 1
+    adr int 15 1
+      * Redir 8 0
+        name .b398 ref Redir 0 0
+    const (8) int 6 0
+ecom: 
+= ref Redir 10 1
+  name .b398 ref Redir 0 0
+  name nil ref Redir 1 0
+ecom: 
+name nil ref Redir 1 0
+ecom to: 
+name .b398 ref Redir 0 0
+fn: readfdassign
+64: argument lex ref YYLEX ref 4
+72: local n1 int ref 3
+76: local c int ref 2
+80: local n2 int ref 2
+84: local .t397 int ref 1
+88: local .b396 big ref 4
+96: local .b398 ref Redir ref 2
+generate desc for readfdassign
+descmap offset 0
+descmap lex type ref YYLEX offset 64 (d->offset=64 start=0) returns 64
+descmap n1 type int offset 72 (d->offset=72 start=0) returns -1
+descmap c type int offset 76 (d->offset=76 start=0) returns -1
+descmap n2 type int offset 80 (d->offset=80 start=0) returns -1
+descmap .t397 type int offset 84 (d->offset=84 start=0) returns -1
+descmap .b396 type big offset 88 (d->offset=88 start=0) returns -1
+descmap .b398 type ref Redir offset 96 (d->offset=96 start=0) returns 96
+fncom: mkseq 3 6e9f90
+ecom: 
+ref ref Node 10 1
+  tuple Node 10 1
+    seq no type 10 1
+      const n_SEQ (7) int 6 0
+      seq no type 10 1
+        name left ref Node 0 0
+        seq no type 10 1
+          name right ref Node 0 0
+          seq no type 10 1
+            name nil polymorphic type 1 0
+            seq no type 10 1
+              name nil polymorphic type 1 0
+ecom to: 
+* ref Node 8 0
+  name .ret int 0 0
+generate desc for ref Node
+generate desc for Node
+ecom: 
+tuple Node 10 1
+  seq no type 10 1
+    const n_SEQ (7) int 6 0
+    seq no type 10 1
+      name left ref Node 0 0
+      seq no type 10 1
+        name right ref Node 0 0
+        seq no type 10 1
+          name nil polymorphic type 1 0
+          seq no type 10 1
+            name nil polymorphic type 1 0
+ecom to: 
+* Node 8 0
+  name .b399 ref Node 0 0
+ecom: 
+const n_SEQ (7) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .b399 ref Node 0 0
+    const (0) int 6 0
+ecom: 
+name left ref Node 0 0
+ecom to: 
+* ref Node 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .b399 ref Node 0 0
+    const (8) int 6 0
+ecom: 
+name right ref Node 0 0
+ecom to: 
+* ref Node 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .b399 ref Node 0 0
+    const (16) int 6 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* string 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .b399 ref Node 0 0
+    const (24) int 6 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* ref Redir 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .b399 ref Node 0 0
+    const (32) int 6 0
+ecom: 
+= ref Node 10 1
+  name .b399 ref Node 0 0
+  name nil ref Node 1 0
+ecom: 
+name nil ref Node 1 0
+ecom to: 
+name .b399 ref Node 0 0
+ecom: 
+name right ref Node 0 0
+ecom to: 
+* ref Node 8 0
+  name .ret int 0 0
+ecom: 
+name left ref Node 0 0
+ecom to: 
+* ref Node 8 0
+  name .ret int 0 0
+fn: mkseq
+64: argument left ref Node ref 4
+72: argument right ref Node ref 3
+80: local .b399 ref Node ref 1
+generate desc for mkseq
+descmap offset 0
+descmap left type ref Node offset 64 (d->offset=64 start=0) returns 64
+descmap right type ref Node offset 72 (d->offset=72 start=0) returns 72
+descmap .b399 type ref Node offset 80 (d->offset=80 start=0) returns 80
+fncom: mk 25 6ea050
+fncom: stderr 12 6ea110
+fncom: yytokname 6 6eab10
+fncom: yystatname 5 6eabd0
+fncom: yylex1 3 6eac90
+ecom: 
+= int 10 2
+  name yychar int 0 0
+  call int 10 2
+    name lex fn(l: self ref YYLEX): int 11 1
+    seq nothing 10 1
+      name yylex ref YYLEX 0 0
+ecom: 
+call int 10 2
+  name lex fn(l: self ref YYLEX): int 11 1
+  seq nothing 10 1
+    name yylex ref YYLEX 0 0
+ecom to: 
+name yychar int 0 0
+generate desc for big
+ecom: 
+name yylex ref YYLEX 0 0
+ecom to: 
+* ref YYLEX 8 0
+  + int 15 0
+    name .b400 big 0 0
+    const (64) int 6 0
+ecom: 
+= int 10 1
+  name c int 0 0
+  * int 10 1
+    indx big 10 1
+      name yytok1 array of int 1 0
+      const (0) int 6 0
+ecom: 
+* int 10 1
+  indx big 10 1
+    name yytok1 array of int 1 0
+    const (0) int 6 0
+ecom to: 
+name c int 0 0
+eacom: 
+* int 10 1
+  indx big 10 1
+    name yytok1 array of int 1 0
+    const (0) int 6 0
+generate desc for big
+ecom: 
+indx big 10 1
+  name yytok1 array of int 1 0
+  const (0) int 6 0
+ecom to: 
+name .b400 big 0 0
+eacom: 
+len int 10 1
+  name yytok1 array of int 1 0
+ecom: 
+len int 10 1
+  name yytok1 array of int 1 0
+ecom to: 
+name .t401 int 0 0
+ecom: 
+= int 10 1
+  name c int 0 0
+  * int 10 1
+    indx big 10 1
+      name yytok1 array of int 1 0
+      name yychar int 0 0
+ecom: 
+* int 10 1
+  indx big 10 1
+    name yytok1 array of int 1 0
+    name yychar int 0 0
+ecom to: 
+name c int 0 0
+eacom: 
+* int 10 1
+  indx big 10 1
+    name yytok1 array of int 1 0
+    name yychar int 0 0
+generate desc for big
+ecom: 
+indx big 10 1
+  name yytok1 array of int 1 0
+  name yychar int 0 0
+ecom to: 
+name .b400 big 0 0
+eacom: 
++ int 10 1
+  len int 10 1
+    name yytok2 array of int 1 0
+  const YYPRIVATE (57344) int 6 0
+ecom: 
++ int 10 1
+  len int 10 1
+    name yytok2 array of int 1 0
+  const YYPRIVATE (57344) int 6 0
+ecom to: 
+name .t401 int 0 0
+eacom: 
+len int 10 1
+  name yytok2 array of int 1 0
+ecom: 
+len int 10 1
+  name yytok2 array of int 1 0
+ecom to: 
+name .t401 int 0 0
+ecom: 
+= int 10 1
+  name c int 0 0
+  * int 10 1
+    indx big 10 1
+      name yytok2 array of int 1 0
+      - int 10 1
+        name yychar int 0 0
+        const YYPRIVATE (57344) int 6 0
+ecom: 
+* int 10 1
+  indx big 10 1
+    name yytok2 array of int 1 0
+    - int 10 1
+      name yychar int 0 0
+      const YYPRIVATE (57344) int 6 0
+ecom to: 
+name c int 0 0
+eacom: 
+* int 10 1
+  indx big 10 1
+    name yytok2 array of int 1 0
+    - int 10 1
+      name yychar int 0 0
+      const YYPRIVATE (57344) int 6 0
+generate desc for big
+ecom: 
+indx big 10 1
+  name yytok2 array of int 1 0
+  - int 10 1
+    name yychar int 0 0
+    const YYPRIVATE (57344) int 6 0
+ecom to: 
+name .b400 big 0 0
+eacom: 
+- int 10 1
+  name yychar int 0 0
+  const YYPRIVATE (57344) int 6 0
+ecom: 
+- int 10 1
+  name yychar int 0 0
+  const YYPRIVATE (57344) int 6 0
+ecom to: 
+name .t401 int 0 0
+ecom: 
+= int 10 1
+  name n int 0 0
+  len int 10 1
+    name yytok3 array of int 1 0
+ecom: 
+len int 10 1
+  name yytok3 array of int 1 0
+ecom to: 
+name n int 0 0
+ecom: 
+= int 10 1
+  name c int 0 0
+  const (0) int 6 0
+ecom: 
+const (0) int 6 0
+ecom to: 
+name c int 0 0
+ecom: 
+= int 10 1
+  name i int 0 0
+  const (0) int 6 0
+ecom: 
+const (0) int 6 0
+ecom to: 
+name i int 0 0
+eacom: 
+* int 10 1
+  indx big 10 1
+    name yytok3 array of int 1 0
+    name i int 0 0
+generate desc for big
+ecom: 
+indx big 10 1
+  name yytok3 array of int 1 0
+  name i int 0 0
+ecom to: 
+name .b400 big 0 0
+ecom: 
+= int 10 1
+  name c int 0 0
+  * int 10 1
+    indx big 10 1
+      name yytok3 array of int 1 0
+      + int 15 1
+        name i int 0 0
+        const (1) int 6 0
+ecom: 
+* int 10 1
+  indx big 10 1
+    name yytok3 array of int 1 0
+    + int 15 1
+      name i int 0 0
+      const (1) int 6 0
+ecom to: 
+name c int 0 0
+eacom: 
+* int 10 1
+  indx big 10 1
+    name yytok3 array of int 1 0
+    + int 15 1
+      name i int 0 0
+      const (1) int 6 0
+generate desc for big
+ecom: 
+indx big 10 1
+  name yytok3 array of int 1 0
+  + int 15 1
+    name i int 0 0
+    const (1) int 6 0
+ecom to: 
+name .b400 big 0 0
+eacom: 
++ int 15 1
+  name i int 0 0
+  const (1) int 6 0
+ecom: 
++ int 15 1
+  name i int 0 0
+  const (1) int 6 0
+ecom to: 
+name .t401 int 0 0
+ecom: 
++= int 10 1
+  name i int 0 0
+  const (2) int 6 0
+ecom: 
+= int 10 1
+  name c int 0 0
+  * int 10 1
+    indx big 10 1
+      name yytok2 array of int 1 0
+      const (1) int 6 0
+ecom: 
+* int 10 1
+  indx big 10 1
+    name yytok2 array of int 1 0
+    const (1) int 6 0
+ecom to: 
+name c int 0 0
+eacom: 
+* int 10 1
+  indx big 10 1
+    name yytok2 array of int 1 0
+    const (1) int 6 0
+generate desc for big
+ecom: 
+indx big 10 1
+  name yytok2 array of int 1 0
+  const (1) int 6 0
+ecom to: 
+name .b400 big 0 0
+ecom: 
+name c int 0 0
+ecom to: 
+* int 8 0
+  name .ret int 0 0
+fn: yylex1
+64: argument yylex ref YYLEX ref 1
+72: local c int ref 9
+76: local yychar int ref 9
+80: local i int ref 5
+84: local n int ref 2
+88: local .t401 int ref 1
+96: local .b400 big ref 7
+generate desc for yylex1
+descmap offset 0
+descmap yylex type ref YYLEX offset 64 (d->offset=64 start=0) returns 64
+descmap c type int offset 72 (d->offset=72 start=0) returns -1
+descmap yychar type int offset 76 (d->offset=76 start=0) returns -1
+descmap i type int offset 80 (d->offset=80 start=0) returns -1
+descmap n type int offset 84 (d->offset=84 start=0) returns -1
+descmap .t401 type int offset 88 (d->offset=88 start=0) returns -1
+descmap .b400 type big offset 96 (d->offset=96 start=0) returns -1
+fncom: yyparse 2 6ead50
+ecom: 
+= array of YYS 10 1
+  name yys array of YYS 0 0
+  array array of YYS 10 1
+    const YYMAXDEPTH (200) int 6 0
+ecom: 
+array array of YYS 10 1
+  const YYMAXDEPTH (200) int 6 0
+ecom to: 
+name yys array of YYS 0 0
+generate desc for YYS
+descmap adt offset 0
+descmap offset 0
+descmap adt offset 0
+descmap offset 0
+descmap node type ref Node offset 0 (d->offset=0 start=0) returns 0
+descmap word type string offset 8 (d->offset=8 start=0) returns 8
+descmap redir type ref Redir offset 16 (d->offset=16 start=0) returns 16
+descmap optype type int offset 24 (d->offset=24 start=0) returns -1
+descmap yyv type YYSTYPE offset 0 (d->offset=0 start=0) returns 16
+descmap yys type int offset 32 (d->offset=32 start=0) returns -1
+generate desc for YYS
+	desc	$-1,40,"e0"
+ecom: 
+= int 10 1
+  name yystate int 0 0
+  const (0) int 6 0
+ecom: 
+const (0) int 6 0
+ecom to: 
+name yystate int 0 0
+ecom: 
+= int 10 1
+  name yychar int 0 0
+  const (-1) int 6 0
+ecom: 
+const (-1) int 6 0
+ecom to: 
+name yychar int 0 0
+ecom: 
+= int 10 1
+  name yynerrs int 0 0
+  const (0) int 6 0
+ecom: 
+const (0) int 6 0
+ecom to: 
+name yynerrs int 0 0
+ecom: 
+= int 10 1
+  name yyerrflag int 0 0
+  const (0) int 6 0
+ecom: 
+const (0) int 6 0
+ecom to: 
+name yyerrflag int 0 0
+ecom: 
+= int 10 1
+  name yyp int 0 0
+  const (-1) int 6 0
+ecom: 
+const (-1) int 6 0
+ecom to: 
+name yyp int 0 0
+ecom: 
+= int 10 1
+  name yyn int 0 0
+  const (0) int 6 0
+ecom: 
+const (0) int 6 0
+ecom to: 
+name yyn int 0 0
+ecom: 
+++ int 10 1
+  name yyp int 0 0
+  const (1) int 6 0
+eacom: 
+len int 10 1
+  name yys array of YYS 0 0
+ecom: 
+len int 10 1
+  name yys array of YYS 0 0
+ecom to: 
+name .t402 int 0 0
+ecom: 
+= array of YYS 10 2
+  name yys array of YYS 0 0
+  = array of YYS 10 2
+    slice array of YYS 10 2
+      array array of YYS 10 1
+        * int 10 1
+          len int 10 1
+            name yys array of YYS 0 0
+          const (2) int 6 0
+      seq no type 10 1
+        const (0) int 6 0
+        nothing no type 10 1
+    name yys array of YYS 0 0
+ecom: 
+= array of YYS 10 2
+  slice array of YYS 10 2
+    array array of YYS 10 1
+      * int 10 1
+        len int 10 1
+          name yys array of YYS 0 0
+        const (2) int 6 0
+    seq no type 10 1
+      const (0) int 6 0
+      nothing no type 10 1
+  name yys array of YYS 0 0
+ecom to: 
+name yys array of YYS 0 0
+eacom: 
+array array of YYS 10 1
+  * int 10 1
+    len int 10 1
+      name yys array of YYS 0 0
+    const (2) int 6 0
+ecom: 
+array array of YYS 10 1
+  * int 10 1
+    len int 10 1
+      name yys array of YYS 0 0
+    const (2) int 6 0
+ecom to: 
+name .t403 array of YYS 0 0
+eacom: 
+* int 10 1
+  len int 10 1
+    name yys array of YYS 0 0
+  const (2) int 6 0
+ecom: 
+* int 10 1
+  len int 10 1
+    name yys array of YYS 0 0
+  const (2) int 6 0
+ecom to: 
+name .t402 int 0 0
+eacom: 
+len int 10 1
+  name yys array of YYS 0 0
+ecom: 
+len int 10 1
+  name yys array of YYS 0 0
+ecom to: 
+name .t402 int 0 0
+generate desc for YYS
+ecom: 
+= array of YYS 10 1
+  name .t403 array of YYS 0 0
+  name nil array of YYS 1 0
+ecom: 
+name nil array of YYS 1 0
+ecom to: 
+name .t403 array of YYS 0 0
+ecom: 
+= int 10 1
+  * int 10 1
+    + int 10 1
+      indx big 10 1
+        name yys array of YYS 0 0
+        name yyp int 0 0
+      const yys (32) int 6 0
+  name yystate int 0 0
+eacom: 
+* int 10 1
+  + int 10 1
+    indx big 10 1
+      name yys array of YYS 0 0
+      name yyp int 0 0
+    const yys (32) int 6 0
+generate desc for big
+ecom: 
+indx big 10 1
+  name yys array of YYS 0 0
+  name yyp int 0 0
+ecom to: 
+name .b404 big 0 0
+ecom: 
+name yystate int 0 0
+ecom to: 
+* int 8 1
+  + int 15 1
+    name .b404 big 0 0
+    const yys (32) int 6 0
+ecom: 
+= YYSTYPE 10 1
+  * YYSTYPE 10 1
+    indx big 10 1
+      name yys array of YYS 0 0
+      name yyp int 0 0
+  name yyval YYSTYPE 0 0
+eacom: 
+* YYSTYPE 10 1
+  indx big 10 1
+    name yys array of YYS 0 0
+    name yyp int 0 0
+generate desc for big
+ecom: 
+indx big 10 1
+  name yys array of YYS 0 0
+  name yyp int 0 0
+ecom to: 
+name .b404 big 0 0
+ecom: 
+name yyval YYSTYPE 0 0
+ecom to: 
+* YYSTYPE 8 1
+  name .b404 big 0 0
+generate desc for YYSTYPE
+descmap adt offset 0
+descmap offset 0
+descmap node type ref Node offset 0 (d->offset=0 start=0) returns 0
+descmap word type string offset 8 (d->offset=8 start=0) returns 8
+descmap redir type ref Redir offset 16 (d->offset=16 start=0) returns 16
+descmap optype type int offset 24 (d->offset=24 start=0) returns -1
+generate desc for YYSTYPE
+	desc	$-1,32,"e0"
+ecom: 
+= int 10 1
+  name yyn int 0 0
+  * int 10 1
+    indx big 10 1
+      name yypact array of int 1 0
+      name yystate int 0 0
+ecom: 
+* int 10 1
+  indx big 10 1
+    name yypact array of int 1 0
+    name yystate int 0 0
+ecom to: 
+name yyn int 0 0
+eacom: 
+* int 10 1
+  indx big 10 1
+    name yypact array of int 1 0
+    name yystate int 0 0
+generate desc for big
+ecom: 
+indx big 10 1
+  name yypact array of int 1 0
+  name yystate int 0 0
+ecom to: 
+name .b404 big 0 0
+ecom: 
+= int 10 2
+  name yychar int 0 0
+  call int 10 2
+    name yylex1 fn(yylex: ref YYLEX): int 11 1
+    seq no type 10 1
+      name yylex ref YYLEX 0 0
+ecom: 
+call int 10 2
+  name yylex1 fn(yylex: ref YYLEX): int 11 1
+  seq no type 10 1
+    name yylex ref YYLEX 0 0
+ecom to: 
+name yychar int 0 0
+generate desc for big
+ecom: 
+name yylex ref YYLEX 0 0
+ecom to: 
+* ref YYLEX 8 0
+  + int 15 0
+    name .b404 big 0 0
+    const (64) int 6 0
+ecom: 
++= int 10 1
+  name yyn int 0 0
+  name yychar int 0 0
+ecom: 
+= int 10 1
+  name yyn int 0 0
+  * int 10 1
+    indx big 10 1
+      name yyact array of int 1 0
+      name yyn int 0 0
+ecom: 
+* int 10 1
+  indx big 10 1
+    name yyact array of int 1 0
+    name yyn int 0 0
+ecom to: 
+name yyn int 0 0
+eacom: 
+* int 10 1
+  indx big 10 1
+    name yyact array of int 1 0
+    name yyn int 0 0
+generate desc for big
+ecom: 
+indx big 10 1
+  name yyact array of int 1 0
+  name yyn int 0 0
+ecom to: 
+name .b404 big 0 0
+eacom: 
+* int 10 1
+  indx big 10 1
+    name yychk array of int 1 0
+    name yyn int 0 0
+generate desc for big
+ecom: 
+indx big 10 1
+  name yychk array of int 1 0
+  name yyn int 0 0
+ecom to: 
+name .b404 big 0 0
+ecom: 
+= int 10 1
+  name yychar int 0 0
+  const (-1) int 6 0
+ecom: 
+const (-1) int 6 0
+ecom to: 
+name yychar int 0 0
+ecom: 
+++ int 10 1
+  name yyp int 0 0
+  const (1) int 6 0
+eacom: 
+len int 10 1
+  name yys array of YYS 0 0
+ecom: 
+len int 10 1
+  name yys array of YYS 0 0
+ecom to: 
+name .t402 int 0 0
+ecom: 
+= array of YYS 10 2
+  name yys array of YYS 0 0
+  = array of YYS 10 2
+    slice array of YYS 10 2
+      array array of YYS 10 1
+        * int 10 1
+          len int 10 1
+            name yys array of YYS 0 0
+          const (2) int 6 0
+      seq no type 10 1
+        const (0) int 6 0
+        nothing no type 10 1
+    name yys array of YYS 0 0
+ecom: 
+= array of YYS 10 2
+  slice array of YYS 10 2
+    array array of YYS 10 1
+      * int 10 1
+        len int 10 1
+          name yys array of YYS 0 0
+        const (2) int 6 0
+    seq no type 10 1
+      const (0) int 6 0
+      nothing no type 10 1
+  name yys array of YYS 0 0
+ecom to: 
+name yys array of YYS 0 0
+eacom: 
+array array of YYS 10 1
+  * int 10 1
+    len int 10 1
+      name yys array of YYS 0 0
+    const (2) int 6 0
+ecom: 
+array array of YYS 10 1
+  * int 10 1
+    len int 10 1
+      name yys array of YYS 0 0
+    const (2) int 6 0
+ecom to: 
+name .t403 array of YYS 0 0
+eacom: 
+* int 10 1
+  len int 10 1
+    name yys array of YYS 0 0
+  const (2) int 6 0
+ecom: 
+* int 10 1
+  len int 10 1
+    name yys array of YYS 0 0
+  const (2) int 6 0
+ecom to: 
+name .t402 int 0 0
+eacom: 
+len int 10 1
+  name yys array of YYS 0 0
+ecom: 
+len int 10 1
+  name yys array of YYS 0 0
+ecom to: 
+name .t402 int 0 0
+generate desc for YYS
+ecom: 
+= array of YYS 10 1
+  name .t403 array of YYS 0 0
+  name nil array of YYS 1 0
+ecom: 
+name nil array of YYS 1 0
+ecom to: 
+name .t403 array of YYS 0 0
+ecom: 
+= int 10 1
+  name yystate int 0 0
+  name yyn int 0 0
+ecom: 
+name yyn int 0 0
+ecom to: 
+name yystate int 0 0
+ecom: 
+= int 10 1
+  * int 10 1
+    + int 10 1
+      indx big 10 1
+        name yys array of YYS 0 0
+        name yyp int 0 0
+      const yys (32) int 6 0
+  name yystate int 0 0
+eacom: 
+* int 10 1
+  + int 10 1
+    indx big 10 1
+      name yys array of YYS 0 0
+      name yyp int 0 0
+    const yys (32) int 6 0
+generate desc for big
+ecom: 
+indx big 10 1
+  name yys array of YYS 0 0
+  name yyp int 0 0
+ecom to: 
+name .b404 big 0 0
+ecom: 
+name yystate int 0 0
+ecom to: 
+* int 8 1
+  + int 15 1
+    name .b404 big 0 0
+    const yys (32) int 6 0
+ecom: 
+= YYSTYPE 10 1
+  * YYSTYPE 10 1
+    indx big 10 1
+      name yys array of YYS 0 0
+      name yyp int 0 0
+  * YYSTYPE 8 0
+    name yylex ref YYLEX 0 0
+eacom: 
+* YYSTYPE 10 1
+  indx big 10 1
+    name yys array of YYS 0 0
+    name yyp int 0 0
+generate desc for big
+ecom: 
+indx big 10 1
+  name yys array of YYS 0 0
+  name yyp int 0 0
+ecom to: 
+name .b404 big 0 0
+ecom: 
+* YYSTYPE 8 0
+  name yylex ref YYLEX 0 0
+ecom to: 
+* YYSTYPE 8 1
+  name .b404 big 0 0
+generate desc for YYSTYPE
+ecom: 
+-- int 10 1
+  name yyerrflag int 0 0
+  const (1) int 6 0
+ecom: 
+= int 10 1
+  name yyn int 0 0
+  * int 10 1
+    indx big 10 1
+      name yydef array of int 1 0
+      name yystate int 0 0
+ecom: 
+* int 10 1
+  indx big 10 1
+    name yydef array of int 1 0
+    name yystate int 0 0
+ecom to: 
+name yyn int 0 0
+eacom: 
+* int 10 1
+  indx big 10 1
+    name yydef array of int 1 0
+    name yystate int 0 0
+generate desc for big
+ecom: 
+indx big 10 1
+  name yydef array of int 1 0
+  name yystate int 0 0
+ecom to: 
+name .b404 big 0 0
+ecom: 
+= int 10 2
+  name yychar int 0 0
+  call int 10 2
+    name yylex1 fn(yylex: ref YYLEX): int 11 1
+    seq no type 10 1
+      name yylex ref YYLEX 0 0
+ecom: 
+call int 10 2
+  name yylex1 fn(yylex: ref YYLEX): int 11 1
+  seq no type 10 1
+    name yylex ref YYLEX 0 0
+ecom to: 
+name yychar int 0 0
+generate desc for big
+ecom: 
+name yylex ref YYLEX 0 0
+ecom to: 
+* ref YYLEX 8 0
+  + int 15 0
+    name .b404 big 0 0
+    const (64) int 6 0
+ecom: 
+= int 10 1
+  name yyxi int 0 0
+  const (0) int 6 0
+ecom: 
+const (0) int 6 0
+ecom to: 
+name yyxi int 0 0
+eacom: 
+* int 10 1
+  indx big 10 1
+    name yyexca array of int 1 0
+    name yyxi int 0 0
+generate desc for big
+ecom: 
+indx big 10 1
+  name yyexca array of int 1 0
+  name yyxi int 0 0
+ecom to: 
+name .b404 big 0 0
+eacom: 
+* int 10 1
+  indx big 10 1
+    name yyexca array of int 1 0
+    + int 15 1
+      name yyxi int 0 0
+      const (1) int 6 0
+generate desc for big
+ecom: 
+indx big 10 1
+  name yyexca array of int 1 0
+  + int 15 1
+    name yyxi int 0 0
+    const (1) int 6 0
+ecom to: 
+name .b404 big 0 0
+eacom: 
++ int 15 1
+  name yyxi int 0 0
+  const (1) int 6 0
+ecom: 
++ int 15 1
+  name yyxi int 0 0
+  const (1) int 6 0
+ecom to: 
+name .t402 int 0 0
+ecom: 
++= int 10 1
+  name yyxi int 0 0
+  const (2) int 6 0
+ecom: 
++= int 10 1
+  name yyxi int 0 0
+  const (2) int 6 0
+ecom: 
+= int 10 1
+  name yyn int 0 0
+  * int 10 1
+    indx big 10 1
+      name yyexca array of int 1 0
+      name yyxi int 0 0
+ecom: 
+* int 10 1
+  indx big 10 1
+    name yyexca array of int 1 0
+    name yyxi int 0 0
+ecom to: 
+name yyn int 0 0
+eacom: 
+* int 10 1
+  indx big 10 1
+    name yyexca array of int 1 0
+    name yyxi int 0 0
+generate desc for big
+ecom: 
+indx big 10 1
+  name yyexca array of int 1 0
+  name yyxi int 0 0
+ecom to: 
+name .b404 big 0 0
+ecom: 
++= int 10 1
+  name yyxi int 0 0
+  const (2) int 6 0
+ecom: 
+= int 10 1
+  name yyn int 0 0
+  * int 10 1
+    indx big 10 1
+      name yyexca array of int 1 0
+      + int 15 1
+        name yyxi int 0 0
+        const (1) int 6 0
+ecom: 
+* int 10 1
+  indx big 10 1
+    name yyexca array of int 1 0
+    + int 15 1
+      name yyxi int 0 0
+      const (1) int 6 0
+ecom to: 
+name yyn int 0 0
+eacom: 
+* int 10 1
+  indx big 10 1
+    name yyexca array of int 1 0
+    + int 15 1
+      name yyxi int 0 0
+      const (1) int 6 0
+generate desc for big
+ecom: 
+indx big 10 1
+  name yyexca array of int 1 0
+  + int 15 1
+    name yyxi int 0 0
+    const (1) int 6 0
+ecom to: 
+name .b404 big 0 0
+eacom: 
++ int 15 1
+  name yyxi int 0 0
+  const (1) int 6 0
+ecom: 
++ int 15 1
+  name yyxi int 0 0
+  const (1) int 6 0
+ecom to: 
+name .t402 int 0 0
+ecom: 
+= int 10 1
+  name yyn int 0 0
+  const (0) int 6 0
+ecom: 
+const (0) int 6 0
+ecom to: 
+name yyn int 0 0
+ecom: 
+call no type 10 2
+  name error fn(l: self ref YYLEX, s: string) 11 1
+  seq nothing 10 1
+    name yylex ref YYLEX 0 0
+    seq no type 10 1
+      const syntax error string 1 0
+generate desc for big
+ecom: 
+name yylex ref YYLEX 0 0
+ecom to: 
+* ref YYLEX 8 0
+  + int 15 0
+    name .b404 big 0 0
+    const (64) int 6 0
+ecom: 
+const syntax error string 1 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b404 big 0 0
+    const (72) int 6 0
+ecom: 
+++ int 10 1
+  name yynerrs int 0 0
+  const (1) int 6 0
+ecom: 
+= int 10 1
+  name yyerrflag int 0 0
+  const (3) int 6 0
+ecom: 
+const (3) int 6 0
+ecom to: 
+name yyerrflag int 0 0
+ecom: 
+= int 10 1
+  name yyn int 0 0
+  + int 10 1
+    * int 10 1
+      indx big 10 1
+        name yypact array of int 1 0
+        * int 10 1
+          + int 10 1
+            indx big 10 1
+              name yys array of YYS 0 0
+              name yyp int 0 0
+            const yys (32) int 6 0
+    const YYERRCODE (2) int 6 0
+ecom: 
++ int 10 1
+  * int 10 1
+    indx big 10 1
+      name yypact array of int 1 0
+      * int 10 1
+        + int 10 1
+          indx big 10 1
+            name yys array of YYS 0 0
+            name yyp int 0 0
+          const yys (32) int 6 0
+  const YYERRCODE (2) int 6 0
+ecom to: 
+name yyn int 0 0
+eacom: 
+* int 10 1
+  indx big 10 1
+    name yypact array of int 1 0
+    * int 10 1
+      + int 10 1
+        indx big 10 1
+          name yys array of YYS 0 0
+          name yyp int 0 0
+        const yys (32) int 6 0
+generate desc for big
+ecom: 
+indx big 10 1
+  name yypact array of int 1 0
+  * int 10 1
+    + int 10 1
+      indx big 10 1
+        name yys array of YYS 0 0
+        name yyp int 0 0
+      const yys (32) int 6 0
+ecom to: 
+name .b404 big 0 0
+eacom: 
+* int 10 1
+  + int 10 1
+    indx big 10 1
+      name yys array of YYS 0 0
+      name yyp int 0 0
+    const yys (32) int 6 0
+generate desc for big
+ecom: 
+indx big 10 1
+  name yys array of YYS 0 0
+  name yyp int 0 0
+ecom to: 
+name .b404 big 0 0
+ecom: 
+= int 10 1
+  name yystate int 0 0
+  * int 10 1
+    indx big 10 1
+      name yyact array of int 1 0
+      name yyn int 0 0
+ecom: 
+* int 10 1
+  indx big 10 1
+    name yyact array of int 1 0
+    name yyn int 0 0
+ecom to: 
+name yystate int 0 0
+eacom: 
+* int 10 1
+  indx big 10 1
+    name yyact array of int 1 0
+    name yyn int 0 0
+generate desc for big
+ecom: 
+indx big 10 1
+  name yyact array of int 1 0
+  name yyn int 0 0
+ecom to: 
+name .b404 big 0 0
+eacom: 
+* int 10 1
+  indx big 10 1
+    name yychk array of int 1 0
+    name yystate int 0 0
+generate desc for big
+ecom: 
+indx big 10 1
+  name yychk array of int 1 0
+  name yystate int 0 0
+ecom to: 
+name .b404 big 0 0
+ecom: 
+-- int 10 1
+  name yyp int 0 0
+  const (1) int 6 0
+ecom: 
+= int 10 1
+  name yyn int 0 0
+  const (1) int 6 0
+ecom: 
+const (1) int 6 0
+ecom to: 
+name yyn int 0 0
+ecom: 
+= int 10 1
+  name yyn int 0 0
+  const (1) int 6 0
+ecom: 
+const (1) int 6 0
+ecom to: 
+name yyn int 0 0
+ecom: 
+= int 10 1
+  name yychar int 0 0
+  const (-1) int 6 0
+ecom: 
+const (-1) int 6 0
+ecom to: 
+name yychar int 0 0
+ecom: 
+= int 10 1
+  name yypt int 0 0
+  name yyp int 0 0
+ecom: 
+name yyp int 0 0
+ecom to: 
+name yypt int 0 0
+ecom: 
+-= int 10 1
+  name yyp int 0 0
+  * int 10 1
+    indx big 10 1
+      name yyr2 array of int 1 0
+      name yyn int 0 0
+eacom: 
+* int 10 1
+  indx big 10 1
+    name yyr2 array of int 1 0
+    name yyn int 0 0
+generate desc for big
+ecom: 
+indx big 10 1
+  name yyr2 array of int 1 0
+  name yyn int 0 0
+ecom to: 
+name .b404 big 0 0
+ecom: 
+= int 10 1
+  name yym int 0 0
+  name yyn int 0 0
+ecom: 
+name yyn int 0 0
+ecom to: 
+name yym int 0 0
+ecom: 
+= int 10 1
+  name yyn int 0 0
+  * int 10 1
+    indx big 10 1
+      name yyr1 array of int 1 0
+      name yyn int 0 0
+ecom: 
+* int 10 1
+  indx big 10 1
+    name yyr1 array of int 1 0
+    name yyn int 0 0
+ecom to: 
+name yyn int 0 0
+eacom: 
+* int 10 1
+  indx big 10 1
+    name yyr1 array of int 1 0
+    name yyn int 0 0
+generate desc for big
+ecom: 
+indx big 10 1
+  name yyr1 array of int 1 0
+  name yyn int 0 0
+ecom to: 
+name .b404 big 0 0
+ecom: 
+= int 10 1
+  name yyg int 0 0
+  * int 10 1
+    indx big 10 1
+      name yypgo array of int 1 0
+      name yyn int 0 0
+ecom: 
+* int 10 1
+  indx big 10 1
+    name yypgo array of int 1 0
+    name yyn int 0 0
+ecom to: 
+name yyg int 0 0
+eacom: 
+* int 10 1
+  indx big 10 1
+    name yypgo array of int 1 0
+    name yyn int 0 0
+generate desc for big
+ecom: 
+indx big 10 1
+  name yypgo array of int 1 0
+  name yyn int 0 0
+ecom to: 
+name .b404 big 0 0
+ecom: 
+= int 10 1
+  name yyj int 0 0
+  + int 10 1
+    + int 10 1
+      name yyg int 0 0
+      * int 10 1
+        + int 10 1
+          indx big 10 1
+            name yys array of YYS 0 0
+            name yyp int 0 0
+          const yys (32) int 6 0
+    const (1) int 6 0
+ecom: 
++ int 10 1
+  + int 10 1
+    name yyg int 0 0
+    * int 10 1
+      + int 10 1
+        indx big 10 1
+          name yys array of YYS 0 0
+          name yyp int 0 0
+        const yys (32) int 6 0
+  const (1) int 6 0
+ecom to: 
+name yyj int 0 0
+eacom: 
++ int 10 1
+  name yyg int 0 0
+  * int 10 1
+    + int 10 1
+      indx big 10 1
+        name yys array of YYS 0 0
+        name yyp int 0 0
+      const yys (32) int 6 0
+ecom: 
++ int 10 1
+  name yyg int 0 0
+  * int 10 1
+    + int 10 1
+      indx big 10 1
+        name yys array of YYS 0 0
+        name yyp int 0 0
+      const yys (32) int 6 0
+ecom to: 
+name .t402 int 0 0
+eacom: 
+* int 10 1
+  + int 10 1
+    indx big 10 1
+      name yys array of YYS 0 0
+      name yyp int 0 0
+    const yys (32) int 6 0
+generate desc for big
+ecom: 
+indx big 10 1
+  name yys array of YYS 0 0
+  name yyp int 0 0
+ecom to: 
+name .b404 big 0 0
+ecom: 
+- int 10 1
+  const (0) int 6 0
+  name yyn int 0 0
+ecom to: 
+name .t402 int 0 0
+eacom: 
+* int 10 1
+  indx big 10 1
+    name yychk array of int 1 0
+    = int 10 1
+      name yystate int 0 0
+      * int 10 1
+        indx big 10 1
+          name yyact array of int 1 0
+          name yyj int 0 0
+generate desc for big
+ecom: 
+indx big 10 1
+  name yychk array of int 1 0
+  = int 10 1
+    name yystate int 0 0
+    * int 10 1
+      indx big 10 1
+        name yyact array of int 1 0
+        name yyj int 0 0
+ecom to: 
+name .b404 big 0 0
+eacom: 
+= int 10 1
+  name yystate int 0 0
+  * int 10 1
+    indx big 10 1
+      name yyact array of int 1 0
+      name yyj int 0 0
+ecom: 
+= int 10 1
+  name yystate int 0 0
+  * int 10 1
+    indx big 10 1
+      name yyact array of int 1 0
+      name yyj int 0 0
+ecom to: 
+name .t405 int 0 0
+ecom: 
+* int 10 1
+  indx big 10 1
+    name yyact array of int 1 0
+    name yyj int 0 0
+ecom to: 
+name yystate int 0 0
+eacom: 
+* int 10 1
+  indx big 10 1
+    name yyact array of int 1 0
+    name yyj int 0 0
+generate desc for big
+ecom: 
+indx big 10 1
+  name yyact array of int 1 0
+  name yyj int 0 0
+ecom to: 
+name .b406 big 0 0
+ecom: 
+= int 10 1
+  name yystate int 0 0
+  * int 10 1
+    indx big 10 1
+      name yyact array of int 1 0
+      name yyg int 0 0
+ecom: 
+* int 10 1
+  indx big 10 1
+    name yyact array of int 1 0
+    name yyg int 0 0
+ecom to: 
+name yystate int 0 0
+eacom: 
+* int 10 1
+  indx big 10 1
+    name yyact array of int 1 0
+    name yyg int 0 0
+generate desc for big
+ecom: 
+indx big 10 1
+  name yyact array of int 1 0
+  name yyg int 0 0
+ecom to: 
+name .b406 big 0 0
+ecom: 
+= ref Node 10 1
+  * ref Node 8 0
+    name yylex ref YYLEX 0 0
+  * ref Node 10 1
+    indx big 10 1
+      name yys array of YYS 0 0
+      - int 10 1
+        name yypt int 0 0
+        const (1) int 6 0
+ecom: 
+* ref Node 10 1
+  indx big 10 1
+    name yys array of YYS 0 0
+    - int 10 1
+      name yypt int 0 0
+      const (1) int 6 0
+ecom to: 
+* ref Node 8 0
+  name yylex ref YYLEX 0 0
+eacom: 
+* ref Node 10 1
+  indx big 10 1
+    name yys array of YYS 0 0
+    - int 10 1
+      name yypt int 0 0
+      const (1) int 6 0
+generate desc for big
+ecom: 
+indx big 10 1
+  name yys array of YYS 0 0
+  - int 10 1
+    name yypt int 0 0
+    const (1) int 6 0
+ecom to: 
+name .b406 big 0 0
+eacom: 
+- int 10 1
+  name yypt int 0 0
+  const (1) int 6 0
+ecom: 
+- int 10 1
+  name yypt int 0 0
+  const (1) int 6 0
+ecom to: 
+name .t405 int 0 0
+ecom: 
+const (0) int 6 0
+ecom to: 
+* int 8 0
+  name .ret int 0 0
+ecom: 
+= ref Node 10 1
+  * ref Node 8 0
+    name yylex ref YYLEX 0 0
+  name nil polymorphic type 1 0
+ecom: 
+name nil ref Node 1 0
+ecom to: 
+* ref Node 8 0
+  name yylex ref YYLEX 0 0
+ecom: 
+const (0) int 6 0
+ecom to: 
+* int 8 0
+  name .ret int 0 0
+ecom: 
+= ref Node 10 1
+  * ref Node 0 0
+    adr int 13 1
+      name yyval YYSTYPE 0 0
+  * ref Node 10 1
+    indx big 10 1
+      name yys array of YYS 0 0
+      + int 15 1
+        name yyp int 0 0
+        const (1) int 6 0
+ecom: 
+* ref Node 10 1
+  indx big 10 1
+    name yys array of YYS 0 0
+    + int 15 1
+      name yyp int 0 0
+      const (1) int 6 0
+ecom to: 
+* ref Node 0 0
+  adr int 13 1
+    name yyval YYSTYPE 0 0
+eacom: 
+* ref Node 10 1
+  indx big 10 1
+    name yys array of YYS 0 0
+    + int 15 1
+      name yyp int 0 0
+      const (1) int 6 0
+generate desc for big
+ecom: 
+indx big 10 1
+  name yys array of YYS 0 0
+  + int 15 1
+    name yyp int 0 0
+    const (1) int 6 0
+ecom to: 
+name .b406 big 0 0
+eacom: 
++ int 15 1
+  name yyp int 0 0
+  const (1) int 6 0
+ecom: 
++ int 15 1
+  name yyp int 0 0
+  const (1) int 6 0
+ecom to: 
+name .t405 int 0 0
+ecom: 
+= ref Node 10 2
+  * ref Node 0 0
+    adr int 13 1
+      name yyval YYSTYPE 0 0
+  call ref Node 10 2
+    name mkseq fn(left: ref Node, right: ref Node): ref Node 11 1
+    seq no type 10 2
+      * ref Node 10 1
+        indx big 10 1
+          name yys array of YYS 0 0
+          - int 10 1
+            name yypt int 0 0
+            const (1) int 6 0
+      seq no type 10 1
+        * ref Node 10 1
+          indx big 10 1
+            name yys array of YYS 0 0
+            name yypt int 0 0
+ecom: 
+call ref Node 10 2
+  name mkseq fn(left: ref Node, right: ref Node): ref Node 11 1
+  seq no type 10 2
+    * ref Node 10 1
+      indx big 10 1
+        name yys array of YYS 0 0
+        - int 10 1
+          name yypt int 0 0
+          const (1) int 6 0
+    seq no type 10 1
+      * ref Node 10 1
+        indx big 10 1
+          name yys array of YYS 0 0
+          name yypt int 0 0
+ecom to: 
+* ref Node 0 0
+  adr int 13 1
+    name yyval YYSTYPE 0 0
+generate desc for big
+ecom: 
+* ref Node 10 1
+  indx big 10 1
+    name yys array of YYS 0 0
+    - int 10 1
+      name yypt int 0 0
+      const (1) int 6 0
+ecom to: 
+* ref Node 8 0
+  + int 15 0
+    name .b406 big 0 0
+    const (64) int 6 0
+eacom: 
+* ref Node 10 1
+  indx big 10 1
+    name yys array of YYS 0 0
+    - int 10 1
+      name yypt int 0 0
+      const (1) int 6 0
+generate desc for big
+ecom: 
+indx big 10 1
+  name yys array of YYS 0 0
+  - int 10 1
+    name yypt int 0 0
+    const (1) int 6 0
+ecom to: 
+name .b404 big 0 0
+eacom: 
+- int 10 1
+  name yypt int 0 0
+  const (1) int 6 0
+ecom: 
+- int 10 1
+  name yypt int 0 0
+  const (1) int 6 0
+ecom to: 
+name .t405 int 0 0
+ecom: 
+* ref Node 10 1
+  indx big 10 1
+    name yys array of YYS 0 0
+    name yypt int 0 0
+ecom to: 
+* ref Node 8 0
+  + int 15 0
+    name .b406 big 0 0
+    const (72) int 6 0
+eacom: 
+* ref Node 10 1
+  indx big 10 1
+    name yys array of YYS 0 0
+    name yypt int 0 0
+generate desc for big
+ecom: 
+indx big 10 1
+  name yys array of YYS 0 0
+  name yypt int 0 0
+ecom to: 
+name .b404 big 0 0
+ecom: 
+= ref Node 10 1
+  * ref Node 0 0
+    adr int 13 1
+      name yyval YYSTYPE 0 0
+  * ref Node 10 1
+    indx big 10 1
+      name yys array of YYS 0 0
+      + int 15 1
+        name yyp int 0 0
+        const (1) int 6 0
+ecom: 
+* ref Node 10 1
+  indx big 10 1
+    name yys array of YYS 0 0
+    + int 15 1
+      name yyp int 0 0
+      const (1) int 6 0
+ecom to: 
+* ref Node 0 0
+  adr int 13 1
+    name yyval YYSTYPE 0 0
+eacom: 
+* ref Node 10 1
+  indx big 10 1
+    name yys array of YYS 0 0
+    + int 15 1
+      name yyp int 0 0
+      const (1) int 6 0
+generate desc for big
+ecom: 
+indx big 10 1
+  name yys array of YYS 0 0
+  + int 15 1
+    name yyp int 0 0
+    const (1) int 6 0
+ecom to: 
+name .b406 big 0 0
+eacom: 
++ int 15 1
+  name yyp int 0 0
+  const (1) int 6 0
+ecom: 
++ int 15 1
+  name yyp int 0 0
+  const (1) int 6 0
+ecom to: 
+name .t405 int 0 0
+ecom: 
+= ref Node 10 2
+  * ref Node 0 0
+    adr int 13 1
+      name yyval YYSTYPE 0 0
+  call ref Node 10 2
+    name mkseq fn(left: ref Node, right: ref Node): ref Node 11 1
+    seq no type 10 2
+      * ref Node 10 1
+        indx big 10 1
+          name yys array of YYS 0 0
+          - int 10 1
+            name yypt int 0 0
+            const (1) int 6 0
+      seq no type 10 1
+        * ref Node 10 1
+          indx big 10 1
+            name yys array of YYS 0 0
+            name yypt int 0 0
+ecom: 
+call ref Node 10 2
+  name mkseq fn(left: ref Node, right: ref Node): ref Node 11 1
+  seq no type 10 2
+    * ref Node 10 1
+      indx big 10 1
+        name yys array of YYS 0 0
+        - int 10 1
+          name yypt int 0 0
+          const (1) int 6 0
+    seq no type 10 1
+      * ref Node 10 1
+        indx big 10 1
+          name yys array of YYS 0 0
+          name yypt int 0 0
+ecom to: 
+* ref Node 0 0
+  adr int 13 1
+    name yyval YYSTYPE 0 0
+generate desc for big
+ecom: 
+* ref Node 10 1
+  indx big 10 1
+    name yys array of YYS 0 0
+    - int 10 1
+      name yypt int 0 0
+      const (1) int 6 0
+ecom to: 
+* ref Node 8 0
+  + int 15 0
+    name .b406 big 0 0
+    const (64) int 6 0
+eacom: 
+* ref Node 10 1
+  indx big 10 1
+    name yys array of YYS 0 0
+    - int 10 1
+      name yypt int 0 0
+      const (1) int 6 0
+generate desc for big
+ecom: 
+indx big 10 1
+  name yys array of YYS 0 0
+  - int 10 1
+    name yypt int 0 0
+    const (1) int 6 0
+ecom to: 
+name .b404 big 0 0
+eacom: 
+- int 10 1
+  name yypt int 0 0
+  const (1) int 6 0
+ecom: 
+- int 10 1
+  name yypt int 0 0
+  const (1) int 6 0
+ecom to: 
+name .t405 int 0 0
+ecom: 
+* ref Node 10 1
+  indx big 10 1
+    name yys array of YYS 0 0
+    name yypt int 0 0
+ecom to: 
+* ref Node 8 0
+  + int 15 0
+    name .b406 big 0 0
+    const (72) int 6 0
+eacom: 
+* ref Node 10 1
+  indx big 10 1
+    name yys array of YYS 0 0
+    name yypt int 0 0
+generate desc for big
+ecom: 
+indx big 10 1
+  name yys array of YYS 0 0
+  name yypt int 0 0
+ecom to: 
+name .b404 big 0 0
+ecom: 
+= ref Node 10 1
+  * ref Node 0 0
+    adr int 13 1
+      name yyval YYSTYPE 0 0
+  * ref Node 10 1
+    indx big 10 1
+      name yys array of YYS 0 0
+      - int 10 1
+        name yypt int 0 0
+        const (1) int 6 0
+ecom: 
+* ref Node 10 1
+  indx big 10 1
+    name yys array of YYS 0 0
+    - int 10 1
+      name yypt int 0 0
+      const (1) int 6 0
+ecom to: 
+* ref Node 0 0
+  adr int 13 1
+    name yyval YYSTYPE 0 0
+eacom: 
+* ref Node 10 1
+  indx big 10 1
+    name yys array of YYS 0 0
+    - int 10 1
+      name yypt int 0 0
+      const (1) int 6 0
+generate desc for big
+ecom: 
+indx big 10 1
+  name yys array of YYS 0 0
+  - int 10 1
+    name yypt int 0 0
+    const (1) int 6 0
+ecom to: 
+name .b406 big 0 0
+eacom: 
+- int 10 1
+  name yypt int 0 0
+  const (1) int 6 0
+ecom: 
+- int 10 1
+  name yypt int 0 0
+  const (1) int 6 0
+ecom to: 
+name .t405 int 0 0
+ecom: 
+= ref Node 10 2
+  * ref Node 0 0
+    adr int 13 1
+      name yyval YYSTYPE 0 0
+  ref ref Node 10 2
+    tuple Node 10 2
+      seq no type 10 2
+        const n_NOWAIT (12) int 6 0
+        seq no type 10 2
+          * ref Node 10 1
+            indx big 10 1
+              name yys array of YYS 0 0
+              - int 10 1
+                name yypt int 0 0
+                const (1) int 6 0
+          seq no type 10 1
+            name nil polymorphic type 1 0
+            seq no type 10 1
+              name nil polymorphic type 1 0
+              seq no type 10 1
+                name nil polymorphic type 1 0
+ecom: 
+ref ref Node 10 2
+  tuple Node 10 2
+    seq no type 10 2
+      const n_NOWAIT (12) int 6 0
+      seq no type 10 2
+        * ref Node 10 1
+          indx big 10 1
+            name yys array of YYS 0 0
+            - int 10 1
+              name yypt int 0 0
+              const (1) int 6 0
+        seq no type 10 1
+          name nil polymorphic type 1 0
+          seq no type 10 1
+            name nil polymorphic type 1 0
+            seq no type 10 1
+              name nil polymorphic type 1 0
+ecom to: 
+* ref Node 0 0
+  adr int 13 1
+    name yyval YYSTYPE 0 0
+generate desc for ref Node
+generate desc for ref Node
+	desc	$-1,8,"80"
+generate desc for Node
+ecom: 
+tuple Node 10 2
+  seq no type 10 2
+    const n_NOWAIT (12) int 6 0
+    seq no type 10 2
+      * ref Node 10 1
+        indx big 10 1
+          name yys array of YYS 0 0
+          - int 10 1
+            name yypt int 0 0
+            const (1) int 6 0
+      seq no type 10 1
+        name nil polymorphic type 1 0
+        seq no type 10 1
+          name nil polymorphic type 1 0
+          seq no type 10 1
+            name nil polymorphic type 1 0
+ecom to: 
+* Node 8 0
+  name .b407 ref Node 0 0
+ecom: 
+const n_NOWAIT (12) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .b407 ref Node 0 0
+    const (0) int 6 0
+ecom: 
+* ref Node 10 1
+  indx big 10 1
+    name yys array of YYS 0 0
+    - int 10 1
+      name yypt int 0 0
+      const (1) int 6 0
+ecom to: 
+* ref Node 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .b407 ref Node 0 0
+    const (8) int 6 0
+eacom: 
+* ref Node 10 1
+  indx big 10 1
+    name yys array of YYS 0 0
+    - int 10 1
+      name yypt int 0 0
+      const (1) int 6 0
+generate desc for big
+ecom: 
+indx big 10 1
+  name yys array of YYS 0 0
+  - int 10 1
+    name yypt int 0 0
+    const (1) int 6 0
+ecom to: 
+name .b406 big 0 0
+eacom: 
+- int 10 1
+  name yypt int 0 0
+  const (1) int 6 0
+ecom: 
+- int 10 1
+  name yypt int 0 0
+  const (1) int 6 0
+ecom to: 
+name .t405 int 0 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* ref Node 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .b407 ref Node 0 0
+    const (16) int 6 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* string 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .b407 ref Node 0 0
+    const (24) int 6 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* ref Redir 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .b407 ref Node 0 0
+    const (32) int 6 0
+ecom: 
+= ref Node 10 1
+  name .b407 ref Node 0 0
+  name nil ref Node 1 0
+ecom: 
+name nil ref Node 1 0
+ecom to: 
+name .b407 ref Node 0 0
+ecom: 
+= ref Node 10 1
+  * ref Node 0 0
+    adr int 13 1
+      name yyval YYSTYPE 0 0
+  * ref Node 10 1
+    indx big 10 1
+      name yys array of YYS 0 0
+      + int 15 1
+        name yyp int 0 0
+        const (1) int 6 0
+ecom: 
+* ref Node 10 1
+  indx big 10 1
+    name yys array of YYS 0 0
+    + int 15 1
+      name yyp int 0 0
+      const (1) int 6 0
+ecom to: 
+* ref Node 0 0
+  adr int 13 1
+    name yyval YYSTYPE 0 0
+eacom: 
+* ref Node 10 1
+  indx big 10 1
+    name yys array of YYS 0 0
+    + int 15 1
+      name yyp int 0 0
+      const (1) int 6 0
+generate desc for big
+ecom: 
+indx big 10 1
+  name yys array of YYS 0 0
+  + int 15 1
+    name yyp int 0 0
+    const (1) int 6 0
+ecom to: 
+name .b406 big 0 0
+eacom: 
++ int 15 1
+  name yyp int 0 0
+  const (1) int 6 0
+ecom: 
++ int 15 1
+  name yyp int 0 0
+  const (1) int 6 0
+ecom to: 
+name .t405 int 0 0
+ecom: 
+= ref Node 10 1
+  * ref Node 0 0
+    adr int 13 1
+      name yyval YYSTYPE 0 0
+  * ref Node 10 1
+    indx big 10 1
+      name yys array of YYS 0 0
+      - int 10 1
+        name yypt int 0 0
+        const (1) int 6 0
+ecom: 
+* ref Node 10 1
+  indx big 10 1
+    name yys array of YYS 0 0
+    - int 10 1
+      name yypt int 0 0
+      const (1) int 6 0
+ecom to: 
+* ref Node 0 0
+  adr int 13 1
+    name yyval YYSTYPE 0 0
+eacom: 
+* ref Node 10 1
+  indx big 10 1
+    name yys array of YYS 0 0
+    - int 10 1
+      name yypt int 0 0
+      const (1) int 6 0
+generate desc for big
+ecom: 
+indx big 10 1
+  name yys array of YYS 0 0
+  - int 10 1
+    name yypt int 0 0
+    const (1) int 6 0
+ecom to: 
+name .b406 big 0 0
+eacom: 
+- int 10 1
+  name yypt int 0 0
+  const (1) int 6 0
+ecom: 
+- int 10 1
+  name yypt int 0 0
+  const (1) int 6 0
+ecom to: 
+name .t405 int 0 0
+ecom: 
+= ref Node 10 1
+  * ref Node 0 0
+    adr int 13 1
+      name yyval YYSTYPE 0 0
+  * ref Node 10 1
+    indx big 10 1
+      name yys array of YYS 0 0
+      + int 15 1
+        name yyp int 0 0
+        const (1) int 6 0
+ecom: 
+* ref Node 10 1
+  indx big 10 1
+    name yys array of YYS 0 0
+    + int 15 1
+      name yyp int 0 0
+      const (1) int 6 0
+ecom to: 
+* ref Node 0 0
+  adr int 13 1
+    name yyval YYSTYPE 0 0
+eacom: 
+* ref Node 10 1
+  indx big 10 1
+    name yys array of YYS 0 0
+    + int 15 1
+      name yyp int 0 0
+      const (1) int 6 0
+generate desc for big
+ecom: 
+indx big 10 1
+  name yys array of YYS 0 0
+  + int 15 1
+    name yyp int 0 0
+    const (1) int 6 0
+ecom to: 
+name .b406 big 0 0
+eacom: 
++ int 15 1
+  name yyp int 0 0
+  const (1) int 6 0
+ecom: 
++ int 15 1
+  name yyp int 0 0
+  const (1) int 6 0
+ecom to: 
+name .t405 int 0 0
+ecom: 
+= ref Node 10 3
+  * ref Node 0 0
+    adr int 13 1
+      name yyval YYSTYPE 0 0
+  ref ref Node 10 3
+    tuple Node 10 3
+      seq no type 10 3
+        const n_ADJ (10) int 6 0
+        seq no type 10 3
+          ref ref Node 10 2
+            tuple Node 10 2
+              seq no type 10 2
+                const n_ADJ (10) int 6 0
+                seq no type 10 2
+                  ref ref Node 10 1
+                    tuple Node 10 1
+                      seq no type 10 1
+                        const n_WORD (11) int 6 0
+                        seq no type 10 1
+                          name nil polymorphic type 1 0
+                          seq no type 10 1
+                            name nil polymorphic type 1 0
+                            seq no type 10 1
+                              const or string 1 0
+                              seq no type 10 1
+                                name nil polymorphic type 1 0
+                  seq no type 10 2
+                    ref ref Node 10 2
+                      tuple Node 10 2
+                        seq no type 10 2
+                          const n_BLOCK (0) int 6 0
+                          seq no type 10 2
+                            * ref Node 10 1
+                              indx big 10 1
+                                name yys array of YYS 0 0
+                                - int 10 1
+                                  name yypt int 0 0
+                                  const (2) int 6 0
+                            seq no type 10 1
+                              name nil ref Node 1 0
+                              seq no type 10 1
+                                name nil polymorphic type 1 0
+                                seq no type 10 1
+                                  name nil polymorphic type 1 0
+                    seq no type 10 1
+                      name nil polymorphic type 1 0
+                      seq no type 10 1
+                        name nil polymorphic type 1 0
+          seq no type 10 2
+            ref ref Node 10 2
+              tuple Node 10 2
+                seq no type 10 2
+                  const n_BLOCK (0) int 6 0
+                  seq no type 10 2
+                    * ref Node 10 1
+                      indx big 10 1
+                        name yys array of YYS 0 0
+                        name yypt int 0 0
+                    seq no type 10 1
+                      name nil ref Node 1 0
+                      seq no type 10 1
+                        name nil polymorphic type 1 0
+                        seq no type 10 1
+                          name nil polymorphic type 1 0
+            seq no type 10 1
+              name nil polymorphic type 1 0
+              seq no type 10 1
+                name nil polymorphic type 1 0
+ecom: 
+ref ref Node 10 3
+  tuple Node 10 3
+    seq no type 10 3
+      const n_ADJ (10) int 6 0
+      seq no type 10 3
+        ref ref Node 10 2
+          tuple Node 10 2
+            seq no type 10 2
+              const n_ADJ (10) int 6 0
+              seq no type 10 2
+                ref ref Node 10 1
+                  tuple Node 10 1
+                    seq no type 10 1
+                      const n_WORD (11) int 6 0
+                      seq no type 10 1
+                        name nil polymorphic type 1 0
+                        seq no type 10 1
+                          name nil polymorphic type 1 0
+                          seq no type 10 1
+                            const or string 1 0
+                            seq no type 10 1
+                              name nil polymorphic type 1 0
+                seq no type 10 2
+                  ref ref Node 10 2
+                    tuple Node 10 2
+                      seq no type 10 2
+                        const n_BLOCK (0) int 6 0
+                        seq no type 10 2
+                          * ref Node 10 1
+                            indx big 10 1
+                              name yys array of YYS 0 0
+                              - int 10 1
+                                name yypt int 0 0
+                                const (2) int 6 0
+                          seq no type 10 1
+                            name nil ref Node 1 0
+                            seq no type 10 1
+                              name nil polymorphic type 1 0
+                              seq no type 10 1
+                                name nil polymorphic type 1 0
+                  seq no type 10 1
+                    name nil polymorphic type 1 0
+                    seq no type 10 1
+                      name nil polymorphic type 1 0
+        seq no type 10 2
+          ref ref Node 10 2
+            tuple Node 10 2
+              seq no type 10 2
+                const n_BLOCK (0) int 6 0
+                seq no type 10 2
+                  * ref Node 10 1
+                    indx big 10 1
+                      name yys array of YYS 0 0
+                      name yypt int 0 0
+                  seq no type 10 1
+                    name nil ref Node 1 0
+                    seq no type 10 1
+                      name nil polymorphic type 1 0
+                      seq no type 10 1
+                        name nil polymorphic type 1 0
+          seq no type 10 1
+            name nil polymorphic type 1 0
+            seq no type 10 1
+              name nil polymorphic type 1 0
+ecom to: 
+* ref Node 0 0
+  adr int 13 1
+    name yyval YYSTYPE 0 0
+generate desc for ref Node
+generate desc for Node
+ecom: 
+tuple Node 10 3
+  seq no type 10 3
+    const n_ADJ (10) int 6 0
+    seq no type 10 3
+      ref ref Node 10 2
+        tuple Node 10 2
+          seq no type 10 2
+            const n_ADJ (10) int 6 0
+            seq no type 10 2
+              ref ref Node 10 1
+                tuple Node 10 1
+                  seq no type 10 1
+                    const n_WORD (11) int 6 0
+                    seq no type 10 1
+                      name nil polymorphic type 1 0
+                      seq no type 10 1
+                        name nil polymorphic type 1 0
+                        seq no type 10 1
+                          const or string 1 0
+                          seq no type 10 1
+                            name nil polymorphic type 1 0
+              seq no type 10 2
+                ref ref Node 10 2
+                  tuple Node 10 2
+                    seq no type 10 2
+                      const n_BLOCK (0) int 6 0
+                      seq no type 10 2
+                        * ref Node 10 1
+                          indx big 10 1
+                            name yys array of YYS 0 0
+                            - int 10 1
+                              name yypt int 0 0
+                              const (2) int 6 0
+                        seq no type 10 1
+                          name nil ref Node 1 0
+                          seq no type 10 1
+                            name nil polymorphic type 1 0
+                            seq no type 10 1
+                              name nil polymorphic type 1 0
+                seq no type 10 1
+                  name nil polymorphic type 1 0
+                  seq no type 10 1
+                    name nil polymorphic type 1 0
+      seq no type 10 2
+        ref ref Node 10 2
+          tuple Node 10 2
+            seq no type 10 2
+              const n_BLOCK (0) int 6 0
+              seq no type 10 2
+                * ref Node 10 1
+                  indx big 10 1
+                    name yys array of YYS 0 0
+                    name yypt int 0 0
+                seq no type 10 1
+                  name nil ref Node 1 0
+                  seq no type 10 1
+                    name nil polymorphic type 1 0
+                    seq no type 10 1
+                      name nil polymorphic type 1 0
+        seq no type 10 1
+          name nil polymorphic type 1 0
+          seq no type 10 1
+            name nil polymorphic type 1 0
+ecom to: 
+* Node 8 0
+  name .b407 ref Node 0 0
+ecom: 
+const n_ADJ (10) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .b407 ref Node 0 0
+    const (0) int 6 0
+ecom: 
+ref ref Node 10 2
+  tuple Node 10 2
+    seq no type 10 2
+      const n_ADJ (10) int 6 0
+      seq no type 10 2
+        ref ref Node 10 1
+          tuple Node 10 1
+            seq no type 10 1
+              const n_WORD (11) int 6 0
+              seq no type 10 1
+                name nil polymorphic type 1 0
+                seq no type 10 1
+                  name nil polymorphic type 1 0
+                  seq no type 10 1
+                    const or string 1 0
+                    seq no type 10 1
+                      name nil polymorphic type 1 0
+        seq no type 10 2
+          ref ref Node 10 2
+            tuple Node 10 2
+              seq no type 10 2
+                const n_BLOCK (0) int 6 0
+                seq no type 10 2
+                  * ref Node 10 1
+                    indx big 10 1
+                      name yys array of YYS 0 0
+                      - int 10 1
+                        name yypt int 0 0
+                        const (2) int 6 0
+                  seq no type 10 1
+                    name nil ref Node 1 0
+                    seq no type 10 1
+                      name nil polymorphic type 1 0
+                      seq no type 10 1
+                        name nil polymorphic type 1 0
+          seq no type 10 1
+            name nil polymorphic type 1 0
+            seq no type 10 1
+              name nil polymorphic type 1 0
+ecom to: 
+* ref Node 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .b407 ref Node 0 0
+    const (8) int 6 0
+generate desc for ref Node
+generate desc for Node
+ecom: 
+tuple Node 10 2
+  seq no type 10 2
+    const n_ADJ (10) int 6 0
+    seq no type 10 2
+      ref ref Node 10 1
+        tuple Node 10 1
+          seq no type 10 1
+            const n_WORD (11) int 6 0
+            seq no type 10 1
+              name nil polymorphic type 1 0
+              seq no type 10 1
+                name nil polymorphic type 1 0
+                seq no type 10 1
+                  const or string 1 0
+                  seq no type 10 1
+                    name nil polymorphic type 1 0
+      seq no type 10 2
+        ref ref Node 10 2
+          tuple Node 10 2
+            seq no type 10 2
+              const n_BLOCK (0) int 6 0
+              seq no type 10 2
+                * ref Node 10 1
+                  indx big 10 1
+                    name yys array of YYS 0 0
+                    - int 10 1
+                      name yypt int 0 0
+                      const (2) int 6 0
+                seq no type 10 1
+                  name nil ref Node 1 0
+                  seq no type 10 1
+                    name nil polymorphic type 1 0
+                    seq no type 10 1
+                      name nil polymorphic type 1 0
+        seq no type 10 1
+          name nil polymorphic type 1 0
+          seq no type 10 1
+            name nil polymorphic type 1 0
+ecom to: 
+* Node 8 0
+  name .b408 ref Node 0 0
+ecom: 
+const n_ADJ (10) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .b408 ref Node 0 0
+    const (0) int 6 0
+ecom: 
+ref ref Node 10 1
+  tuple Node 10 1
+    seq no type 10 1
+      const n_WORD (11) int 6 0
+      seq no type 10 1
+        name nil polymorphic type 1 0
+        seq no type 10 1
+          name nil polymorphic type 1 0
+          seq no type 10 1
+            const or string 1 0
+            seq no type 10 1
+              name nil polymorphic type 1 0
+ecom to: 
+* ref Node 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .b408 ref Node 0 0
+    const (8) int 6 0
+generate desc for ref Node
+generate desc for Node
+ecom: 
+tuple Node 10 1
+  seq no type 10 1
+    const n_WORD (11) int 6 0
+    seq no type 10 1
+      name nil polymorphic type 1 0
+      seq no type 10 1
+        name nil polymorphic type 1 0
+        seq no type 10 1
+          const or string 1 0
+          seq no type 10 1
+            name nil polymorphic type 1 0
+ecom to: 
+* Node 8 0
+  name .b409 ref Node 0 0
+ecom: 
+const n_WORD (11) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .b409 ref Node 0 0
+    const (0) int 6 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* ref Node 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .b409 ref Node 0 0
+    const (8) int 6 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* ref Node 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .b409 ref Node 0 0
+    const (16) int 6 0
+ecom: 
+const or string 1 0
+ecom to: 
+* string 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .b409 ref Node 0 0
+    const (24) int 6 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* ref Redir 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .b409 ref Node 0 0
+    const (32) int 6 0
+ecom: 
+= ref Node 10 1
+  name .b409 ref Node 0 0
+  name nil ref Node 1 0
+ecom: 
+name nil ref Node 1 0
+ecom to: 
+name .b409 ref Node 0 0
+ecom: 
+ref ref Node 10 2
+  tuple Node 10 2
+    seq no type 10 2
+      const n_BLOCK (0) int 6 0
+      seq no type 10 2
+        * ref Node 10 1
+          indx big 10 1
+            name yys array of YYS 0 0
+            - int 10 1
+              name yypt int 0 0
+              const (2) int 6 0
+        seq no type 10 1
+          name nil ref Node 1 0
+          seq no type 10 1
+            name nil polymorphic type 1 0
+            seq no type 10 1
+              name nil polymorphic type 1 0
+ecom to: 
+* ref Node 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .b408 ref Node 0 0
+    const (16) int 6 0
+generate desc for ref Node
+generate desc for Node
+ecom: 
+tuple Node 10 2
+  seq no type 10 2
+    const n_BLOCK (0) int 6 0
+    seq no type 10 2
+      * ref Node 10 1
+        indx big 10 1
+          name yys array of YYS 0 0
+          - int 10 1
+            name yypt int 0 0
+            const (2) int 6 0
+      seq no type 10 1
+        name nil ref Node 1 0
+        seq no type 10 1
+          name nil polymorphic type 1 0
+          seq no type 10 1
+            name nil polymorphic type 1 0
+ecom to: 
+* Node 8 0
+  name .b409 ref Node 0 0
+ecom: 
+const n_BLOCK (0) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .b409 ref Node 0 0
+    const (0) int 6 0
+ecom: 
+* ref Node 10 1
+  indx big 10 1
+    name yys array of YYS 0 0
+    - int 10 1
+      name yypt int 0 0
+      const (2) int 6 0
+ecom to: 
+* ref Node 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .b409 ref Node 0 0
+    const (8) int 6 0
+eacom: 
+* ref Node 10 1
+  indx big 10 1
+    name yys array of YYS 0 0
+    - int 10 1
+      name yypt int 0 0
+      const (2) int 6 0
+generate desc for big
+ecom: 
+indx big 10 1
+  name yys array of YYS 0 0
+  - int 10 1
+    name yypt int 0 0
+    const (2) int 6 0
+ecom to: 
+name .b406 big 0 0
+eacom: 
+- int 10 1
+  name yypt int 0 0
+  const (2) int 6 0
+ecom: 
+- int 10 1
+  name yypt int 0 0
+  const (2) int 6 0
+ecom to: 
+name .t405 int 0 0
+ecom: 
+name nil ref Node 1 0
+ecom to: 
+* ref Node 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .b409 ref Node 0 0
+    const (16) int 6 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* string 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .b409 ref Node 0 0
+    const (24) int 6 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* ref Redir 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .b409 ref Node 0 0
+    const (32) int 6 0
+ecom: 
+= ref Node 10 1
+  name .b409 ref Node 0 0
+  name nil ref Node 1 0
+ecom: 
+name nil ref Node 1 0
+ecom to: 
+name .b409 ref Node 0 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* string 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .b408 ref Node 0 0
+    const (24) int 6 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* ref Redir 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .b408 ref Node 0 0
+    const (32) int 6 0
+ecom: 
+= ref Node 10 1
+  name .b408 ref Node 0 0
+  name nil ref Node 1 0
+ecom: 
+name nil ref Node 1 0
+ecom to: 
+name .b408 ref Node 0 0
+ecom: 
+ref ref Node 10 2
+  tuple Node 10 2
+    seq no type 10 2
+      const n_BLOCK (0) int 6 0
+      seq no type 10 2
+        * ref Node 10 1
+          indx big 10 1
+            name yys array of YYS 0 0
+            name yypt int 0 0
+        seq no type 10 1
+          name nil ref Node 1 0
+          seq no type 10 1
+            name nil polymorphic type 1 0
+            seq no type 10 1
+              name nil polymorphic type 1 0
+ecom to: 
+* ref Node 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .b407 ref Node 0 0
+    const (16) int 6 0
+generate desc for ref Node
+generate desc for Node
+ecom: 
+tuple Node 10 2
+  seq no type 10 2
+    const n_BLOCK (0) int 6 0
+    seq no type 10 2
+      * ref Node 10 1
+        indx big 10 1
+          name yys array of YYS 0 0
+          name yypt int 0 0
+      seq no type 10 1
+        name nil ref Node 1 0
+        seq no type 10 1
+          name nil polymorphic type 1 0
+          seq no type 10 1
+            name nil polymorphic type 1 0
+ecom to: 
+* Node 8 0
+  name .b409 ref Node 0 0
+ecom: 
+const n_BLOCK (0) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .b409 ref Node 0 0
+    const (0) int 6 0
+ecom: 
+* ref Node 10 1
+  indx big 10 1
+    name yys array of YYS 0 0
+    name yypt int 0 0
+ecom to: 
+* ref Node 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .b409 ref Node 0 0
+    const (8) int 6 0
+eacom: 
+* ref Node 10 1
+  indx big 10 1
+    name yys array of YYS 0 0
+    name yypt int 0 0
+generate desc for big
+ecom: 
+indx big 10 1
+  name yys array of YYS 0 0
+  name yypt int 0 0
+ecom to: 
+name .b406 big 0 0
+ecom: 
+name nil ref Node 1 0
+ecom to: 
+* ref Node 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .b409 ref Node 0 0
+    const (16) int 6 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* string 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .b409 ref Node 0 0
+    const (24) int 6 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* ref Redir 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .b409 ref Node 0 0
+    const (32) int 6 0
+ecom: 
+= ref Node 10 1
+  name .b409 ref Node 0 0
+  name nil ref Node 1 0
+ecom: 
+name nil ref Node 1 0
+ecom to: 
+name .b409 ref Node 0 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* string 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .b407 ref Node 0 0
+    const (24) int 6 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* ref Redir 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .b407 ref Node 0 0
+    const (32) int 6 0
+ecom: 
+= ref Node 10 1
+  name .b407 ref Node 0 0
+  name nil ref Node 1 0
+ecom: 
+name nil ref Node 1 0
+ecom to: 
+name .b407 ref Node 0 0
+ecom: 
+= ref Node 10 1
+  * ref Node 0 0
+    adr int 13 1
+      name yyval YYSTYPE 0 0
+  * ref Node 10 1
+    indx big 10 1
+      name yys array of YYS 0 0
+      + int 15 1
+        name yyp int 0 0
+        const (1) int 6 0
+ecom: 
+* ref Node 10 1
+  indx big 10 1
+    name yys array of YYS 0 0
+    + int 15 1
+      name yyp int 0 0
+      const (1) int 6 0
+ecom to: 
+* ref Node 0 0
+  adr int 13 1
+    name yyval YYSTYPE 0 0
+eacom: 
+* ref Node 10 1
+  indx big 10 1
+    name yys array of YYS 0 0
+    + int 15 1
+      name yyp int 0 0
+      const (1) int 6 0
+generate desc for big
+ecom: 
+indx big 10 1
+  name yys array of YYS 0 0
+  + int 15 1
+    name yyp int 0 0
+    const (1) int 6 0
+ecom to: 
+name .b406 big 0 0
+eacom: 
++ int 15 1
+  name yyp int 0 0
+  const (1) int 6 0
+ecom: 
++ int 15 1
+  name yyp int 0 0
+  const (1) int 6 0
+ecom to: 
+name .t405 int 0 0
+ecom: 
+= ref Node 10 3
+  * ref Node 0 0
+    adr int 13 1
+      name yyval YYSTYPE 0 0
+  ref ref Node 10 3
+    tuple Node 10 3
+      seq no type 10 3
+        const n_ADJ (10) int 6 0
+        seq no type 10 3
+          ref ref Node 10 2
+            tuple Node 10 2
+              seq no type 10 2
+                const n_ADJ (10) int 6 0
+                seq no type 10 2
+                  ref ref Node 10 1
+                    tuple Node 10 1
+                      seq no type 10 1
+                        const n_WORD (11) int 6 0
+                        seq no type 10 1
+                          name nil polymorphic type 1 0
+                          seq no type 10 1
+                            name nil polymorphic type 1 0
+                            seq no type 10 1
+                              const and string 1 0
+                              seq no type 10 1
+                                name nil polymorphic type 1 0
+                  seq no type 10 2
+                    ref ref Node 10 2
+                      tuple Node 10 2
+                        seq no type 10 2
+                          const n_BLOCK (0) int 6 0
+                          seq no type 10 2
+                            * ref Node 10 1
+                              indx big 10 1
+                                name yys array of YYS 0 0
+                                - int 10 1
+                                  name yypt int 0 0
+                                  const (2) int 6 0
+                            seq no type 10 1
+                              name nil ref Node 1 0
+                              seq no type 10 1
+                                name nil polymorphic type 1 0
+                                seq no type 10 1
+                                  name nil polymorphic type 1 0
+                    seq no type 10 1
+                      name nil polymorphic type 1 0
+                      seq no type 10 1
+                        name nil polymorphic type 1 0
+          seq no type 10 2
+            ref ref Node 10 2
+              tuple Node 10 2
+                seq no type 10 2
+                  const n_BLOCK (0) int 6 0
+                  seq no type 10 2
+                    * ref Node 10 1
+                      indx big 10 1
+                        name yys array of YYS 0 0
+                        name yypt int 0 0
+                    seq no type 10 1
+                      name nil ref Node 1 0
+                      seq no type 10 1
+                        name nil polymorphic type 1 0
+                        seq no type 10 1
+                          name nil polymorphic type 1 0
+            seq no type 10 1
+              name nil polymorphic type 1 0
+              seq no type 10 1
+                name nil polymorphic type 1 0
+ecom: 
+ref ref Node 10 3
+  tuple Node 10 3
+    seq no type 10 3
+      const n_ADJ (10) int 6 0
+      seq no type 10 3
+        ref ref Node 10 2
+          tuple Node 10 2
+            seq no type 10 2
+              const n_ADJ (10) int 6 0
+              seq no type 10 2
+                ref ref Node 10 1
+                  tuple Node 10 1
+                    seq no type 10 1
+                      const n_WORD (11) int 6 0
+                      seq no type 10 1
+                        name nil polymorphic type 1 0
+                        seq no type 10 1
+                          name nil polymorphic type 1 0
+                          seq no type 10 1
+                            const and string 1 0
+                            seq no type 10 1
+                              name nil polymorphic type 1 0
+                seq no type 10 2
+                  ref ref Node 10 2
+                    tuple Node 10 2
+                      seq no type 10 2
+                        const n_BLOCK (0) int 6 0
+                        seq no type 10 2
+                          * ref Node 10 1
+                            indx big 10 1
+                              name yys array of YYS 0 0
+                              - int 10 1
+                                name yypt int 0 0
+                                const (2) int 6 0
+                          seq no type 10 1
+                            name nil ref Node 1 0
+                            seq no type 10 1
+                              name nil polymorphic type 1 0
+                              seq no type 10 1
+                                name nil polymorphic type 1 0
+                  seq no type 10 1
+                    name nil polymorphic type 1 0
+                    seq no type 10 1
+                      name nil polymorphic type 1 0
+        seq no type 10 2
+          ref ref Node 10 2
+            tuple Node 10 2
+              seq no type 10 2
+                const n_BLOCK (0) int 6 0
+                seq no type 10 2
+                  * ref Node 10 1
+                    indx big 10 1
+                      name yys array of YYS 0 0
+                      name yypt int 0 0
+                  seq no type 10 1
+                    name nil ref Node 1 0
+                    seq no type 10 1
+                      name nil polymorphic type 1 0
+                      seq no type 10 1
+                        name nil polymorphic type 1 0
+          seq no type 10 1
+            name nil polymorphic type 1 0
+            seq no type 10 1
+              name nil polymorphic type 1 0
+ecom to: 
+* ref Node 0 0
+  adr int 13 1
+    name yyval YYSTYPE 0 0
+generate desc for ref Node
+generate desc for Node
+ecom: 
+tuple Node 10 3
+  seq no type 10 3
+    const n_ADJ (10) int 6 0
+    seq no type 10 3
+      ref ref Node 10 2
+        tuple Node 10 2
+          seq no type 10 2
+            const n_ADJ (10) int 6 0
+            seq no type 10 2
+              ref ref Node 10 1
+                tuple Node 10 1
+                  seq no type 10 1
+                    const n_WORD (11) int 6 0
+                    seq no type 10 1
+                      name nil polymorphic type 1 0
+                      seq no type 10 1
+                        name nil polymorphic type 1 0
+                        seq no type 10 1
+                          const and string 1 0
+                          seq no type 10 1
+                            name nil polymorphic type 1 0
+              seq no type 10 2
+                ref ref Node 10 2
+                  tuple Node 10 2
+                    seq no type 10 2
+                      const n_BLOCK (0) int 6 0
+                      seq no type 10 2
+                        * ref Node 10 1
+                          indx big 10 1
+                            name yys array of YYS 0 0
+                            - int 10 1
+                              name yypt int 0 0
+                              const (2) int 6 0
+                        seq no type 10 1
+                          name nil ref Node 1 0
+                          seq no type 10 1
+                            name nil polymorphic type 1 0
+                            seq no type 10 1
+                              name nil polymorphic type 1 0
+                seq no type 10 1
+                  name nil polymorphic type 1 0
+                  seq no type 10 1
+                    name nil polymorphic type 1 0
+      seq no type 10 2
+        ref ref Node 10 2
+          tuple Node 10 2
+            seq no type 10 2
+              const n_BLOCK (0) int 6 0
+              seq no type 10 2
+                * ref Node 10 1
+                  indx big 10 1
+                    name yys array of YYS 0 0
+                    name yypt int 0 0
+                seq no type 10 1
+                  name nil ref Node 1 0
+                  seq no type 10 1
+                    name nil polymorphic type 1 0
+                    seq no type 10 1
+                      name nil polymorphic type 1 0
+        seq no type 10 1
+          name nil polymorphic type 1 0
+          seq no type 10 1
+            name nil polymorphic type 1 0
+ecom to: 
+* Node 8 0
+  name .b409 ref Node 0 0
+ecom: 
+const n_ADJ (10) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .b409 ref Node 0 0
+    const (0) int 6 0
+ecom: 
+ref ref Node 10 2
+  tuple Node 10 2
+    seq no type 10 2
+      const n_ADJ (10) int 6 0
+      seq no type 10 2
+        ref ref Node 10 1
+          tuple Node 10 1
+            seq no type 10 1
+              const n_WORD (11) int 6 0
+              seq no type 10 1
+                name nil polymorphic type 1 0
+                seq no type 10 1
+                  name nil polymorphic type 1 0
+                  seq no type 10 1
+                    const and string 1 0
+                    seq no type 10 1
+                      name nil polymorphic type 1 0
+        seq no type 10 2
+          ref ref Node 10 2
+            tuple Node 10 2
+              seq no type 10 2
+                const n_BLOCK (0) int 6 0
+                seq no type 10 2
+                  * ref Node 10 1
+                    indx big 10 1
+                      name yys array of YYS 0 0
+                      - int 10 1
+                        name yypt int 0 0
+                        const (2) int 6 0
+                  seq no type 10 1
+                    name nil ref Node 1 0
+                    seq no type 10 1
+                      name nil polymorphic type 1 0
+                      seq no type 10 1
+                        name nil polymorphic type 1 0
+          seq no type 10 1
+            name nil polymorphic type 1 0
+            seq no type 10 1
+              name nil polymorphic type 1 0
+ecom to: 
+* ref Node 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .b409 ref Node 0 0
+    const (8) int 6 0
+generate desc for ref Node
+generate desc for Node
+ecom: 
+tuple Node 10 2
+  seq no type 10 2
+    const n_ADJ (10) int 6 0
+    seq no type 10 2
+      ref ref Node 10 1
+        tuple Node 10 1
+          seq no type 10 1
+            const n_WORD (11) int 6 0
+            seq no type 10 1
+              name nil polymorphic type 1 0
+              seq no type 10 1
+                name nil polymorphic type 1 0
+                seq no type 10 1
+                  const and string 1 0
+                  seq no type 10 1
+                    name nil polymorphic type 1 0
+      seq no type 10 2
+        ref ref Node 10 2
+          tuple Node 10 2
+            seq no type 10 2
+              const n_BLOCK (0) int 6 0
+              seq no type 10 2
+                * ref Node 10 1
+                  indx big 10 1
+                    name yys array of YYS 0 0
+                    - int 10 1
+                      name yypt int 0 0
+                      const (2) int 6 0
+                seq no type 10 1
+                  name nil ref Node 1 0
+                  seq no type 10 1
+                    name nil polymorphic type 1 0
+                    seq no type 10 1
+                      name nil polymorphic type 1 0
+        seq no type 10 1
+          name nil polymorphic type 1 0
+          seq no type 10 1
+            name nil polymorphic type 1 0
+ecom to: 
+* Node 8 0
+  name .b408 ref Node 0 0
+ecom: 
+const n_ADJ (10) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .b408 ref Node 0 0
+    const (0) int 6 0
+ecom: 
+ref ref Node 10 1
+  tuple Node 10 1
+    seq no type 10 1
+      const n_WORD (11) int 6 0
+      seq no type 10 1
+        name nil polymorphic type 1 0
+        seq no type 10 1
+          name nil polymorphic type 1 0
+          seq no type 10 1
+            const and string 1 0
+            seq no type 10 1
+              name nil polymorphic type 1 0
+ecom to: 
+* ref Node 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .b408 ref Node 0 0
+    const (8) int 6 0
+generate desc for ref Node
+generate desc for Node
+ecom: 
+tuple Node 10 1
+  seq no type 10 1
+    const n_WORD (11) int 6 0
+    seq no type 10 1
+      name nil polymorphic type 1 0
+      seq no type 10 1
+        name nil polymorphic type 1 0
+        seq no type 10 1
+          const and string 1 0
+          seq no type 10 1
+            name nil polymorphic type 1 0
+ecom to: 
+* Node 8 0
+  name .b407 ref Node 0 0
+ecom: 
+const n_WORD (11) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .b407 ref Node 0 0
+    const (0) int 6 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* ref Node 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .b407 ref Node 0 0
+    const (8) int 6 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* ref Node 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .b407 ref Node 0 0
+    const (16) int 6 0
+ecom: 
+const and string 1 0
+ecom to: 
+* string 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .b407 ref Node 0 0
+    const (24) int 6 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* ref Redir 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .b407 ref Node 0 0
+    const (32) int 6 0
+ecom: 
+= ref Node 10 1
+  name .b407 ref Node 0 0
+  name nil ref Node 1 0
+ecom: 
+name nil ref Node 1 0
+ecom to: 
+name .b407 ref Node 0 0
+ecom: 
+ref ref Node 10 2
+  tuple Node 10 2
+    seq no type 10 2
+      const n_BLOCK (0) int 6 0
+      seq no type 10 2
+        * ref Node 10 1
+          indx big 10 1
+            name yys array of YYS 0 0
+            - int 10 1
+              name yypt int 0 0
+              const (2) int 6 0
+        seq no type 10 1
+          name nil ref Node 1 0
+          seq no type 10 1
+            name nil polymorphic type 1 0
+            seq no type 10 1
+              name nil polymorphic type 1 0
+ecom to: 
+* ref Node 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .b408 ref Node 0 0
+    const (16) int 6 0
+generate desc for ref Node
+generate desc for Node
+ecom: 
+tuple Node 10 2
+  seq no type 10 2
+    const n_BLOCK (0) int 6 0
+    seq no type 10 2
+      * ref Node 10 1
+        indx big 10 1
+          name yys array of YYS 0 0
+          - int 10 1
+            name yypt int 0 0
+            const (2) int 6 0
+      seq no type 10 1
+        name nil ref Node 1 0
+        seq no type 10 1
+          name nil polymorphic type 1 0
+          seq no type 10 1
+            name nil polymorphic type 1 0
+ecom to: 
+* Node 8 0
+  name .b407 ref Node 0 0
+ecom: 
+const n_BLOCK (0) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .b407 ref Node 0 0
+    const (0) int 6 0
+ecom: 
+* ref Node 10 1
+  indx big 10 1
+    name yys array of YYS 0 0
+    - int 10 1
+      name yypt int 0 0
+      const (2) int 6 0
+ecom to: 
+* ref Node 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .b407 ref Node 0 0
+    const (8) int 6 0
+eacom: 
+* ref Node 10 1
+  indx big 10 1
+    name yys array of YYS 0 0
+    - int 10 1
+      name yypt int 0 0
+      const (2) int 6 0
+generate desc for big
+ecom: 
+indx big 10 1
+  name yys array of YYS 0 0
+  - int 10 1
+    name yypt int 0 0
+    const (2) int 6 0
+ecom to: 
+name .b406 big 0 0
+eacom: 
+- int 10 1
+  name yypt int 0 0
+  const (2) int 6 0
+ecom: 
+- int 10 1
+  name yypt int 0 0
+  const (2) int 6 0
+ecom to: 
+name .t405 int 0 0
+ecom: 
+name nil ref Node 1 0
+ecom to: 
+* ref Node 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .b407 ref Node 0 0
+    const (16) int 6 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* string 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .b407 ref Node 0 0
+    const (24) int 6 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* ref Redir 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .b407 ref Node 0 0
+    const (32) int 6 0
+ecom: 
+= ref Node 10 1
+  name .b407 ref Node 0 0
+  name nil ref Node 1 0
+ecom: 
+name nil ref Node 1 0
+ecom to: 
+name .b407 ref Node 0 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* string 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .b408 ref Node 0 0
+    const (24) int 6 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* ref Redir 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .b408 ref Node 0 0
+    const (32) int 6 0
+ecom: 
+= ref Node 10 1
+  name .b408 ref Node 0 0
+  name nil ref Node 1 0
+ecom: 
+name nil ref Node 1 0
+ecom to: 
+name .b408 ref Node 0 0
+ecom: 
+ref ref Node 10 2
+  tuple Node 10 2
+    seq no type 10 2
+      const n_BLOCK (0) int 6 0
+      seq no type 10 2
+        * ref Node 10 1
+          indx big 10 1
+            name yys array of YYS 0 0
+            name yypt int 0 0
+        seq no type 10 1
+          name nil ref Node 1 0
+          seq no type 10 1
+            name nil polymorphic type 1 0
+            seq no type 10 1
+              name nil polymorphic type 1 0
+ecom to: 
+* ref Node 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .b409 ref Node 0 0
+    const (16) int 6 0
+generate desc for ref Node
+generate desc for Node
+ecom: 
+tuple Node 10 2
+  seq no type 10 2
+    const n_BLOCK (0) int 6 0
+    seq no type 10 2
+      * ref Node 10 1
+        indx big 10 1
+          name yys array of YYS 0 0
+          name yypt int 0 0
+      seq no type 10 1
+        name nil ref Node 1 0
+        seq no type 10 1
+          name nil polymorphic type 1 0
+          seq no type 10 1
+            name nil polymorphic type 1 0
+ecom to: 
+* Node 8 0
+  name .b408 ref Node 0 0
+ecom: 
+const n_BLOCK (0) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .b408 ref Node 0 0
+    const (0) int 6 0
+ecom: 
+* ref Node 10 1
+  indx big 10 1
+    name yys array of YYS 0 0
+    name yypt int 0 0
+ecom to: 
+* ref Node 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .b408 ref Node 0 0
+    const (8) int 6 0
+eacom: 
+* ref Node 10 1
+  indx big 10 1
+    name yys array of YYS 0 0
+    name yypt int 0 0
+generate desc for big
+ecom: 
+indx big 10 1
+  name yys array of YYS 0 0
+  name yypt int 0 0
+ecom to: 
+name .b406 big 0 0
+ecom: 
+name nil ref Node 1 0
+ecom to: 
+* ref Node 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .b408 ref Node 0 0
+    const (16) int 6 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* string 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .b408 ref Node 0 0
+    const (24) int 6 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* ref Redir 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .b408 ref Node 0 0
+    const (32) int 6 0
+ecom: 
+= ref Node 10 1
+  name .b408 ref Node 0 0
+  name nil ref Node 1 0
+ecom: 
+name nil ref Node 1 0
+ecom to: 
+name .b408 ref Node 0 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* string 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .b409 ref Node 0 0
+    const (24) int 6 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* ref Redir 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .b409 ref Node 0 0
+    const (32) int 6 0
+ecom: 
+= ref Node 10 1
+  name .b409 ref Node 0 0
+  name nil ref Node 1 0
+ecom: 
+name nil ref Node 1 0
+ecom to: 
+name .b409 ref Node 0 0
+ecom: 
+= ref Node 10 1
+  * ref Node 0 0
+    adr int 13 1
+      name yyval YYSTYPE 0 0
+  name nil polymorphic type 1 0
+ecom: 
+name nil ref Node 1 0
+ecom to: 
+* ref Node 0 0
+  adr int 13 1
+    name yyval YYSTYPE 0 0
+ecom: 
+= ref Node 10 1
+  * ref Node 0 0
+    adr int 13 1
+      name yyval YYSTYPE 0 0
+  * ref Node 10 1
+    indx big 10 1
+      name yys array of YYS 0 0
+      + int 15 1
+        name yyp int 0 0
+        const (1) int 6 0
+ecom: 
+* ref Node 10 1
+  indx big 10 1
+    name yys array of YYS 0 0
+    + int 15 1
+      name yyp int 0 0
+      const (1) int 6 0
+ecom to: 
+* ref Node 0 0
+  adr int 13 1
+    name yyval YYSTYPE 0 0
+eacom: 
+* ref Node 10 1
+  indx big 10 1
+    name yys array of YYS 0 0
+    + int 15 1
+      name yyp int 0 0
+      const (1) int 6 0
+generate desc for big
+ecom: 
+indx big 10 1
+  name yys array of YYS 0 0
+  + int 15 1
+    name yyp int 0 0
+    const (1) int 6 0
+ecom to: 
+name .b406 big 0 0
+eacom: 
++ int 15 1
+  name yyp int 0 0
+  const (1) int 6 0
+ecom: 
++ int 15 1
+  name yyp int 0 0
+  const (1) int 6 0
+ecom to: 
+name .t405 int 0 0
+ecom: 
+= ref Node 10 2
+  * ref Node 0 0
+    adr int 13 1
+      name yyval YYSTYPE 0 0
+  ref ref Node 10 2
+    tuple Node 10 2
+      seq no type 10 2
+        const n_PIPE (9) int 6 0
+        seq no type 10 2
+          * ref Node 10 1
+            indx big 10 1
+              name yys array of YYS 0 0
+              - int 10 1
+                name yypt int 0 0
+                const (3) int 6 0
+          seq no type 10 2
+            * ref Node 10 1
+              indx big 10 1
+                name yys array of YYS 0 0
+                name yypt int 0 0
+            seq no type 10 1
+              name nil polymorphic type 1 0
+              seq no type 10 1
+                * ref Redir 10 1
+                  + int 10 1
+                    indx big 10 1
+                      name yys array of YYS 0 0
+                      - int 10 1
+                        name yypt int 0 0
+                        const (2) int 6 0
+                    const redir (16) int 6 0
+ecom: 
+ref ref Node 10 2
+  tuple Node 10 2
+    seq no type 10 2
+      const n_PIPE (9) int 6 0
+      seq no type 10 2
+        * ref Node 10 1
+          indx big 10 1
+            name yys array of YYS 0 0
+            - int 10 1
+              name yypt int 0 0
+              const (3) int 6 0
+        seq no type 10 2
+          * ref Node 10 1
+            indx big 10 1
+              name yys array of YYS 0 0
+              name yypt int 0 0
+          seq no type 10 1
+            name nil polymorphic type 1 0
+            seq no type 10 1
+              * ref Redir 10 1
+                + int 10 1
+                  indx big 10 1
+                    name yys array of YYS 0 0
+                    - int 10 1
+                      name yypt int 0 0
+                      const (2) int 6 0
+                  const redir (16) int 6 0
+ecom to: 
+* ref Node 0 0
+  adr int 13 1
+    name yyval YYSTYPE 0 0
+generate desc for ref Node
+generate desc for ref Node
+	desc	$-1,8,"80"
+generate desc for Node
+ecom: 
+tuple Node 10 2
+  seq no type 10 2
+    const n_PIPE (9) int 6 0
+    seq no type 10 2
+      * ref Node 10 1
+        indx big 10 1
+          name yys array of YYS 0 0
+          - int 10 1
+            name yypt int 0 0
+            const (3) int 6 0
+      seq no type 10 2
+        * ref Node 10 1
+          indx big 10 1
+            name yys array of YYS 0 0
+            name yypt int 0 0
+        seq no type 10 1
+          name nil polymorphic type 1 0
+          seq no type 10 1
+            * ref Redir 10 1
+              + int 10 1
+                indx big 10 1
+                  name yys array of YYS 0 0
+                  - int 10 1
+                    name yypt int 0 0
+                    const (2) int 6 0
+                const redir (16) int 6 0
+ecom to: 
+* Node 8 0
+  name .b409 ref Node 0 0
+ecom: 
+const n_PIPE (9) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .b409 ref Node 0 0
+    const (0) int 6 0
+ecom: 
+* ref Node 10 1
+  indx big 10 1
+    name yys array of YYS 0 0
+    - int 10 1
+      name yypt int 0 0
+      const (3) int 6 0
+ecom to: 
+* ref Node 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .b409 ref Node 0 0
+    const (8) int 6 0
+eacom: 
+* ref Node 10 1
+  indx big 10 1
+    name yys array of YYS 0 0
+    - int 10 1
+      name yypt int 0 0
+      const (3) int 6 0
+generate desc for big
+ecom: 
+indx big 10 1
+  name yys array of YYS 0 0
+  - int 10 1
+    name yypt int 0 0
+    const (3) int 6 0
+ecom to: 
+name .b406 big 0 0
+eacom: 
+- int 10 1
+  name yypt int 0 0
+  const (3) int 6 0
+ecom: 
+- int 10 1
+  name yypt int 0 0
+  const (3) int 6 0
+ecom to: 
+name .t405 int 0 0
+ecom: 
+* ref Node 10 1
+  indx big 10 1
+    name yys array of YYS 0 0
+    name yypt int 0 0
+ecom to: 
+* ref Node 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .b409 ref Node 0 0
+    const (16) int 6 0
+eacom: 
+* ref Node 10 1
+  indx big 10 1
+    name yys array of YYS 0 0
+    name yypt int 0 0
+generate desc for big
+ecom: 
+indx big 10 1
+  name yys array of YYS 0 0
+  name yypt int 0 0
+ecom to: 
+name .b406 big 0 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* string 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .b409 ref Node 0 0
+    const (24) int 6 0
+ecom: 
+* ref Redir 10 1
+  + int 10 1
+    indx big 10 1
+      name yys array of YYS 0 0
+      - int 10 1
+        name yypt int 0 0
+        const (2) int 6 0
+    const redir (16) int 6 0
+ecom to: 
+* ref Redir 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .b409 ref Node 0 0
+    const (32) int 6 0
+eacom: 
+* ref Redir 10 1
+  + int 10 1
+    indx big 10 1
+      name yys array of YYS 0 0
+      - int 10 1
+        name yypt int 0 0
+        const (2) int 6 0
+    const redir (16) int 6 0
+generate desc for big
+ecom: 
+indx big 10 1
+  name yys array of YYS 0 0
+  - int 10 1
+    name yypt int 0 0
+    const (2) int 6 0
+ecom to: 
+name .b406 big 0 0
+eacom: 
+- int 10 1
+  name yypt int 0 0
+  const (2) int 6 0
+ecom: 
+- int 10 1
+  name yypt int 0 0
+  const (2) int 6 0
+ecom to: 
+name .t405 int 0 0
+ecom: 
+= ref Node 10 1
+  name .b409 ref Node 0 0
+  name nil ref Node 1 0
+ecom: 
+name nil ref Node 1 0
+ecom to: 
+name .b409 ref Node 0 0
+ecom: 
+= ref Node 10 1
+  * ref Node 0 0
+    adr int 13 1
+      name yyval YYSTYPE 0 0
+  * ref Node 10 1
+    indx big 10 1
+      name yys array of YYS 0 0
+      + int 15 1
+        name yyp int 0 0
+        const (1) int 6 0
+ecom: 
+* ref Node 10 1
+  indx big 10 1
+    name yys array of YYS 0 0
+    + int 15 1
+      name yyp int 0 0
+      const (1) int 6 0
+ecom to: 
+* ref Node 0 0
+  adr int 13 1
+    name yyval YYSTYPE 0 0
+eacom: 
+* ref Node 10 1
+  indx big 10 1
+    name yys array of YYS 0 0
+    + int 15 1
+      name yyp int 0 0
+      const (1) int 6 0
+generate desc for big
+ecom: 
+indx big 10 1
+  name yys array of YYS 0 0
+  + int 15 1
+    name yyp int 0 0
+    const (1) int 6 0
+ecom to: 
+name .b406 big 0 0
+eacom: 
++ int 15 1
+  name yyp int 0 0
+  const (1) int 6 0
+ecom: 
++ int 15 1
+  name yyp int 0 0
+  const (1) int 6 0
+ecom to: 
+name .t405 int 0 0
+ecom: 
+= ref Node 10 2
+  * ref Node 0 0
+    adr int 13 1
+      name yyval YYSTYPE 0 0
+  ref ref Node 10 2
+    tuple Node 10 2
+      seq no type 10 2
+        const n_ADJ (10) int 6 0
+        seq no type 10 2
+          * ref Node 10 1
+            indx big 10 1
+              name yys array of YYS 0 0
+              - int 10 1
+                name yypt int 0 0
+                const (1) int 6 0
+          seq no type 10 2
+            * ref Node 10 1
+              indx big 10 1
+                name yys array of YYS 0 0
+                name yypt int 0 0
+            seq no type 10 1
+              name nil polymorphic type 1 0
+              seq no type 10 1
+                name nil polymorphic type 1 0
+ecom: 
+ref ref Node 10 2
+  tuple Node 10 2
+    seq no type 10 2
+      const n_ADJ (10) int 6 0
+      seq no type 10 2
+        * ref Node 10 1
+          indx big 10 1
+            name yys array of YYS 0 0
+            - int 10 1
+              name yypt int 0 0
+              const (1) int 6 0
+        seq no type 10 2
+          * ref Node 10 1
+            indx big 10 1
+              name yys array of YYS 0 0
+              name yypt int 0 0
+          seq no type 10 1
+            name nil polymorphic type 1 0
+            seq no type 10 1
+              name nil polymorphic type 1 0
+ecom to: 
+* ref Node 0 0
+  adr int 13 1
+    name yyval YYSTYPE 0 0
+generate desc for ref Node
+generate desc for Node
+ecom: 
+tuple Node 10 2
+  seq no type 10 2
+    const n_ADJ (10) int 6 0
+    seq no type 10 2
+      * ref Node 10 1
+        indx big 10 1
+          name yys array of YYS 0 0
+          - int 10 1
+            name yypt int 0 0
+            const (1) int 6 0
+      seq no type 10 2
+        * ref Node 10 1
+          indx big 10 1
+            name yys array of YYS 0 0
+            name yypt int 0 0
+        seq no type 10 1
+          name nil polymorphic type 1 0
+          seq no type 10 1
+            name nil polymorphic type 1 0
+ecom to: 
+* Node 8 0
+  name .b409 ref Node 0 0
+ecom: 
+const n_ADJ (10) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .b409 ref Node 0 0
+    const (0) int 6 0
+ecom: 
+* ref Node 10 1
+  indx big 10 1
+    name yys array of YYS 0 0
+    - int 10 1
+      name yypt int 0 0
+      const (1) int 6 0
+ecom to: 
+* ref Node 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .b409 ref Node 0 0
+    const (8) int 6 0
+eacom: 
+* ref Node 10 1
+  indx big 10 1
+    name yys array of YYS 0 0
+    - int 10 1
+      name yypt int 0 0
+      const (1) int 6 0
+generate desc for big
+ecom: 
+indx big 10 1
+  name yys array of YYS 0 0
+  - int 10 1
+    name yypt int 0 0
+    const (1) int 6 0
+ecom to: 
+name .b406 big 0 0
+eacom: 
+- int 10 1
+  name yypt int 0 0
+  const (1) int 6 0
+ecom: 
+- int 10 1
+  name yypt int 0 0
+  const (1) int 6 0
+ecom to: 
+name .t405 int 0 0
+ecom: 
+* ref Node 10 1
+  indx big 10 1
+    name yys array of YYS 0 0
+    name yypt int 0 0
+ecom to: 
+* ref Node 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .b409 ref Node 0 0
+    const (16) int 6 0
+eacom: 
+* ref Node 10 1
+  indx big 10 1
+    name yys array of YYS 0 0
+    name yypt int 0 0
+generate desc for big
+ecom: 
+indx big 10 1
+  name yys array of YYS 0 0
+  name yypt int 0 0
+ecom to: 
+name .b406 big 0 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* string 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .b409 ref Node 0 0
+    const (24) int 6 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* ref Redir 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .b409 ref Node 0 0
+    const (32) int 6 0
+ecom: 
+= ref Node 10 1
+  name .b409 ref Node 0 0
+  name nil ref Node 1 0
+ecom: 
+name nil ref Node 1 0
+ecom to: 
+name .b409 ref Node 0 0
+ecom: 
+= ref Node 10 1
+  * ref Node 0 0
+    adr int 13 1
+      name yyval YYSTYPE 0 0
+  * ref Node 10 1
+    indx big 10 1
+      name yys array of YYS 0 0
+      + int 15 1
+        name yyp int 0 0
+        const (1) int 6 0
+ecom: 
+* ref Node 10 1
+  indx big 10 1
+    name yys array of YYS 0 0
+    + int 15 1
+      name yyp int 0 0
+      const (1) int 6 0
+ecom to: 
+* ref Node 0 0
+  adr int 13 1
+    name yyval YYSTYPE 0 0
+eacom: 
+* ref Node 10 1
+  indx big 10 1
+    name yys array of YYS 0 0
+    + int 15 1
+      name yyp int 0 0
+      const (1) int 6 0
+generate desc for big
+ecom: 
+indx big 10 1
+  name yys array of YYS 0 0
+  + int 15 1
+    name yyp int 0 0
+    const (1) int 6 0
+ecom to: 
+name .b406 big 0 0
+eacom: 
++ int 15 1
+  name yyp int 0 0
+  const (1) int 6 0
+ecom: 
++ int 15 1
+  name yyp int 0 0
+  const (1) int 6 0
+ecom to: 
+name .t405 int 0 0
+ecom: 
+= ref Node 10 1
+  * ref Node 0 0
+    adr int 13 1
+      name yyval YYSTYPE 0 0
+  * ref Node 10 1
+    indx big 10 1
+      name yys array of YYS 0 0
+      + int 15 1
+        name yyp int 0 0
+        const (1) int 6 0
+ecom: 
+* ref Node 10 1
+  indx big 10 1
+    name yys array of YYS 0 0
+    + int 15 1
+      name yyp int 0 0
+      const (1) int 6 0
+ecom to: 
+* ref Node 0 0
+  adr int 13 1
+    name yyval YYSTYPE 0 0
+eacom: 
+* ref Node 10 1
+  indx big 10 1
+    name yys array of YYS 0 0
+    + int 15 1
+      name yyp int 0 0
+      const (1) int 6 0
+generate desc for big
+ecom: 
+indx big 10 1
+  name yys array of YYS 0 0
+  + int 15 1
+    name yyp int 0 0
+    const (1) int 6 0
+ecom to: 
+name .b406 big 0 0
+eacom: 
++ int 15 1
+  name yyp int 0 0
+  const (1) int 6 0
+ecom: 
++ int 15 1
+  name yyp int 0 0
+  const (1) int 6 0
+ecom to: 
+name .t405 int 0 0
+ecom: 
+= ref Node 10 2
+  * ref Node 0 0
+    adr int 13 1
+      name yyval YYSTYPE 0 0
+  ref ref Node 10 2
+    tuple Node 10 2
+      seq no type 10 2
+        * int 10 1
+          + int 10 1
+            indx big 10 1
+              name yys array of YYS 0 0
+              - int 10 1
+                name yypt int 0 0
+                const (1) int 6 0
+            const optype (24) int 6 0
+        seq no type 10 2
+          * ref Node 10 1
+            indx big 10 1
+              name yys array of YYS 0 0
+              - int 10 1
+                name yypt int 0 0
+                const (2) int 6 0
+          seq no type 10 2
+            * ref Node 10 1
+              indx big 10 1
+                name yys array of YYS 0 0
+                name yypt int 0 0
+            seq no type 10 1
+              name nil polymorphic type 1 0
+              seq no type 10 1
+                name nil polymorphic type 1 0
+ecom: 
+ref ref Node 10 2
+  tuple Node 10 2
+    seq no type 10 2
+      * int 10 1
+        + int 10 1
+          indx big 10 1
+            name yys array of YYS 0 0
+            - int 10 1
+              name yypt int 0 0
+              const (1) int 6 0
+          const optype (24) int 6 0
+      seq no type 10 2
+        * ref Node 10 1
+          indx big 10 1
+            name yys array of YYS 0 0
+            - int 10 1
+              name yypt int 0 0
+              const (2) int 6 0
+        seq no type 10 2
+          * ref Node 10 1
+            indx big 10 1
+              name yys array of YYS 0 0
+              name yypt int 0 0
+          seq no type 10 1
+            name nil polymorphic type 1 0
+            seq no type 10 1
+              name nil polymorphic type 1 0
+ecom to: 
+* ref Node 0 0
+  adr int 13 1
+    name yyval YYSTYPE 0 0
+generate desc for ref Node
+generate desc for Node
+ecom: 
+tuple Node 10 2
+  seq no type 10 2
+    * int 10 1
+      + int 10 1
+        indx big 10 1
+          name yys array of YYS 0 0
+          - int 10 1
+            name yypt int 0 0
+            const (1) int 6 0
+        const optype (24) int 6 0
+    seq no type 10 2
+      * ref Node 10 1
+        indx big 10 1
+          name yys array of YYS 0 0
+          - int 10 1
+            name yypt int 0 0
+            const (2) int 6 0
+      seq no type 10 2
+        * ref Node 10 1
+          indx big 10 1
+            name yys array of YYS 0 0
+            name yypt int 0 0
+        seq no type 10 1
+          name nil polymorphic type 1 0
+          seq no type 10 1
+            name nil polymorphic type 1 0
+ecom to: 
+* Node 8 0
+  name .b409 ref Node 0 0
+ecom: 
+* int 10 1
+  + int 10 1
+    indx big 10 1
+      name yys array of YYS 0 0
+      - int 10 1
+        name yypt int 0 0
+        const (1) int 6 0
+    const optype (24) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .b409 ref Node 0 0
+    const (0) int 6 0
+eacom: 
+* int 10 1
+  + int 10 1
+    indx big 10 1
+      name yys array of YYS 0 0
+      - int 10 1
+        name yypt int 0 0
+        const (1) int 6 0
+    const optype (24) int 6 0
+generate desc for big
+ecom: 
+indx big 10 1
+  name yys array of YYS 0 0
+  - int 10 1
+    name yypt int 0 0
+    const (1) int 6 0
+ecom to: 
+name .b406 big 0 0
+eacom: 
+- int 10 1
+  name yypt int 0 0
+  const (1) int 6 0
+ecom: 
+- int 10 1
+  name yypt int 0 0
+  const (1) int 6 0
+ecom to: 
+name .t405 int 0 0
+ecom: 
+* ref Node 10 1
+  indx big 10 1
+    name yys array of YYS 0 0
+    - int 10 1
+      name yypt int 0 0
+      const (2) int 6 0
+ecom to: 
+* ref Node 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .b409 ref Node 0 0
+    const (8) int 6 0
+eacom: 
+* ref Node 10 1
+  indx big 10 1
+    name yys array of YYS 0 0
+    - int 10 1
+      name yypt int 0 0
+      const (2) int 6 0
+generate desc for big
+ecom: 
+indx big 10 1
+  name yys array of YYS 0 0
+  - int 10 1
+    name yypt int 0 0
+    const (2) int 6 0
+ecom to: 
+name .b406 big 0 0
+eacom: 
+- int 10 1
+  name yypt int 0 0
+  const (2) int 6 0
+ecom: 
+- int 10 1
+  name yypt int 0 0
+  const (2) int 6 0
+ecom to: 
+name .t405 int 0 0
+ecom: 
+* ref Node 10 1
+  indx big 10 1
+    name yys array of YYS 0 0
+    name yypt int 0 0
+ecom to: 
+* ref Node 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .b409 ref Node 0 0
+    const (16) int 6 0
+eacom: 
+* ref Node 10 1
+  indx big 10 1
+    name yys array of YYS 0 0
+    name yypt int 0 0
+generate desc for big
+ecom: 
+indx big 10 1
+  name yys array of YYS 0 0
+  name yypt int 0 0
+ecom to: 
+name .b406 big 0 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* string 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .b409 ref Node 0 0
+    const (24) int 6 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* ref Redir 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .b409 ref Node 0 0
+    const (32) int 6 0
+ecom: 
+= ref Node 10 1
+  name .b409 ref Node 0 0
+  name nil ref Node 1 0
+ecom: 
+name nil ref Node 1 0
+ecom to: 
+name .b409 ref Node 0 0
+ecom: 
+= ref Node 10 2
+  * ref Node 0 0
+    adr int 13 1
+      name yyval YYSTYPE 0 0
+  ref ref Node 10 2
+    tuple Node 10 2
+      seq no type 10 2
+        * int 10 1
+          + int 10 1
+            indx big 10 1
+              name yys array of YYS 0 0
+              - int 10 1
+                name yypt int 0 0
+                const (1) int 6 0
+            const optype (24) int 6 0
+        seq no type 10 2
+          * ref Node 10 1
+            indx big 10 1
+              name yys array of YYS 0 0
+              - int 10 1
+                name yypt int 0 0
+                const (2) int 6 0
+          seq no type 10 2
+            * ref Node 10 1
+              indx big 10 1
+                name yys array of YYS 0 0
+                name yypt int 0 0
+            seq no type 10 1
+              name nil polymorphic type 1 0
+              seq no type 10 1
+                name nil polymorphic type 1 0
+ecom: 
+ref ref Node 10 2
+  tuple Node 10 2
+    seq no type 10 2
+      * int 10 1
+        + int 10 1
+          indx big 10 1
+            name yys array of YYS 0 0
+            - int 10 1
+              name yypt int 0 0
+              const (1) int 6 0
+          const optype (24) int 6 0
+      seq no type 10 2
+        * ref Node 10 1
+          indx big 10 1
+            name yys array of YYS 0 0
+            - int 10 1
+              name yypt int 0 0
+              const (2) int 6 0
+        seq no type 10 2
+          * ref Node 10 1
+            indx big 10 1
+              name yys array of YYS 0 0
+              name yypt int 0 0
+          seq no type 10 1
+            name nil polymorphic type 1 0
+            seq no type 10 1
+              name nil polymorphic type 1 0
+ecom to: 
+* ref Node 0 0
+  adr int 13 1
+    name yyval YYSTYPE 0 0
+generate desc for ref Node
+generate desc for Node
+ecom: 
+tuple Node 10 2
+  seq no type 10 2
+    * int 10 1
+      + int 10 1
+        indx big 10 1
+          name yys array of YYS 0 0
+          - int 10 1
+            name yypt int 0 0
+            const (1) int 6 0
+        const optype (24) int 6 0
+    seq no type 10 2
+      * ref Node 10 1
+        indx big 10 1
+          name yys array of YYS 0 0
+          - int 10 1
+            name yypt int 0 0
+            const (2) int 6 0
+      seq no type 10 2
+        * ref Node 10 1
+          indx big 10 1
+            name yys array of YYS 0 0
+            name yypt int 0 0
+        seq no type 10 1
+          name nil polymorphic type 1 0
+          seq no type 10 1
+            name nil polymorphic type 1 0
+ecom to: 
+* Node 8 0
+  name .b409 ref Node 0 0
+ecom: 
+* int 10 1
+  + int 10 1
+    indx big 10 1
+      name yys array of YYS 0 0
+      - int 10 1
+        name yypt int 0 0
+        const (1) int 6 0
+    const optype (24) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .b409 ref Node 0 0
+    const (0) int 6 0
+eacom: 
+* int 10 1
+  + int 10 1
+    indx big 10 1
+      name yys array of YYS 0 0
+      - int 10 1
+        name yypt int 0 0
+        const (1) int 6 0
+    const optype (24) int 6 0
+generate desc for big
+ecom: 
+indx big 10 1
+  name yys array of YYS 0 0
+  - int 10 1
+    name yypt int 0 0
+    const (1) int 6 0
+ecom to: 
+name .b406 big 0 0
+eacom: 
+- int 10 1
+  name yypt int 0 0
+  const (1) int 6 0
+ecom: 
+- int 10 1
+  name yypt int 0 0
+  const (1) int 6 0
+ecom to: 
+name .t405 int 0 0
+ecom: 
+* ref Node 10 1
+  indx big 10 1
+    name yys array of YYS 0 0
+    - int 10 1
+      name yypt int 0 0
+      const (2) int 6 0
+ecom to: 
+* ref Node 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .b409 ref Node 0 0
+    const (8) int 6 0
+eacom: 
+* ref Node 10 1
+  indx big 10 1
+    name yys array of YYS 0 0
+    - int 10 1
+      name yypt int 0 0
+      const (2) int 6 0
+generate desc for big
+ecom: 
+indx big 10 1
+  name yys array of YYS 0 0
+  - int 10 1
+    name yypt int 0 0
+    const (2) int 6 0
+ecom to: 
+name .b406 big 0 0
+eacom: 
+- int 10 1
+  name yypt int 0 0
+  const (2) int 6 0
+ecom: 
+- int 10 1
+  name yypt int 0 0
+  const (2) int 6 0
+ecom to: 
+name .t405 int 0 0
+ecom: 
+* ref Node 10 1
+  indx big 10 1
+    name yys array of YYS 0 0
+    name yypt int 0 0
+ecom to: 
+* ref Node 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .b409 ref Node 0 0
+    const (16) int 6 0
+eacom: 
+* ref Node 10 1
+  indx big 10 1
+    name yys array of YYS 0 0
+    name yypt int 0 0
+generate desc for big
+ecom: 
+indx big 10 1
+  name yys array of YYS 0 0
+  name yypt int 0 0
+ecom to: 
+name .b406 big 0 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* string 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .b409 ref Node 0 0
+    const (24) int 6 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* ref Redir 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .b409 ref Node 0 0
+    const (32) int 6 0
+ecom: 
+= ref Node 10 1
+  name .b409 ref Node 0 0
+  name nil ref Node 1 0
+ecom: 
+name nil ref Node 1 0
+ecom to: 
+name .b409 ref Node 0 0
+ecom: 
+= ref Node 10 2
+  * ref Node 0 0
+    adr int 13 1
+      name yyval YYSTYPE 0 0
+  ref ref Node 10 2
+    tuple Node 10 2
+      seq no type 10 2
+        * int 10 1
+          + int 10 1
+            indx big 10 1
+              name yys array of YYS 0 0
+              name yypt int 0 0
+            const optype (24) int 6 0
+        seq no type 10 2
+          * ref Node 10 1
+            indx big 10 1
+              name yys array of YYS 0 0
+              - int 10 1
+                name yypt int 0 0
+                const (1) int 6 0
+          seq no type 10 1
+            name nil ref Node 1 0
+            seq no type 10 1
+              name nil polymorphic type 1 0
+              seq no type 10 1
+                name nil polymorphic type 1 0
+ecom: 
+ref ref Node 10 2
+  tuple Node 10 2
+    seq no type 10 2
+      * int 10 1
+        + int 10 1
+          indx big 10 1
+            name yys array of YYS 0 0
+            name yypt int 0 0
+          const optype (24) int 6 0
+      seq no type 10 2
+        * ref Node 10 1
+          indx big 10 1
+            name yys array of YYS 0 0
+            - int 10 1
+              name yypt int 0 0
+              const (1) int 6 0
+        seq no type 10 1
+          name nil ref Node 1 0
+          seq no type 10 1
+            name nil polymorphic type 1 0
+            seq no type 10 1
+              name nil polymorphic type 1 0
+ecom to: 
+* ref Node 0 0
+  adr int 13 1
+    name yyval YYSTYPE 0 0
+generate desc for ref Node
+generate desc for Node
+ecom: 
+tuple Node 10 2
+  seq no type 10 2
+    * int 10 1
+      + int 10 1
+        indx big 10 1
+          name yys array of YYS 0 0
+          name yypt int 0 0
+        const optype (24) int 6 0
+    seq no type 10 2
+      * ref Node 10 1
+        indx big 10 1
+          name yys array of YYS 0 0
+          - int 10 1
+            name yypt int 0 0
+            const (1) int 6 0
+      seq no type 10 1
+        name nil ref Node 1 0
+        seq no type 10 1
+          name nil polymorphic type 1 0
+          seq no type 10 1
+            name nil polymorphic type 1 0
+ecom to: 
+* Node 8 0
+  name .b409 ref Node 0 0
+ecom: 
+* int 10 1
+  + int 10 1
+    indx big 10 1
+      name yys array of YYS 0 0
+      name yypt int 0 0
+    const optype (24) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .b409 ref Node 0 0
+    const (0) int 6 0
+eacom: 
+* int 10 1
+  + int 10 1
+    indx big 10 1
+      name yys array of YYS 0 0
+      name yypt int 0 0
+    const optype (24) int 6 0
+generate desc for big
+ecom: 
+indx big 10 1
+  name yys array of YYS 0 0
+  name yypt int 0 0
+ecom to: 
+name .b406 big 0 0
+ecom: 
+* ref Node 10 1
+  indx big 10 1
+    name yys array of YYS 0 0
+    - int 10 1
+      name yypt int 0 0
+      const (1) int 6 0
+ecom to: 
+* ref Node 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .b409 ref Node 0 0
+    const (8) int 6 0
+eacom: 
+* ref Node 10 1
+  indx big 10 1
+    name yys array of YYS 0 0
+    - int 10 1
+      name yypt int 0 0
+      const (1) int 6 0
+generate desc for big
+ecom: 
+indx big 10 1
+  name yys array of YYS 0 0
+  - int 10 1
+    name yypt int 0 0
+    const (1) int 6 0
+ecom to: 
+name .b406 big 0 0
+eacom: 
+- int 10 1
+  name yypt int 0 0
+  const (1) int 6 0
+ecom: 
+- int 10 1
+  name yypt int 0 0
+  const (1) int 6 0
+ecom to: 
+name .t405 int 0 0
+ecom: 
+name nil ref Node 1 0
+ecom to: 
+* ref Node 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .b409 ref Node 0 0
+    const (16) int 6 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* string 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .b409 ref Node 0 0
+    const (24) int 6 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* ref Redir 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .b409 ref Node 0 0
+    const (32) int 6 0
+ecom: 
+= ref Node 10 1
+  name .b409 ref Node 0 0
+  name nil ref Node 1 0
+ecom: 
+name nil ref Node 1 0
+ecom to: 
+name .b409 ref Node 0 0
+ecom: 
+= ref Node 10 1
+  * ref Node 0 0
+    adr int 13 1
+      name yyval YYSTYPE 0 0
+  ref ref Node 10 1
+    tuple Node 10 1
+      seq no type 10 1
+        const n_DUP (5) int 6 0
+        seq no type 10 1
+          name nil polymorphic type 1 0
+          seq no type 10 1
+            name nil polymorphic type 1 0
+            seq no type 10 1
+              name nil polymorphic type 1 0
+              seq no type 10 1
+                * ref Redir 10 1
+                  + int 10 1
+                    indx big 10 1
+                      name yys array of YYS 0 0
+                      name yypt int 0 0
+                    const redir (16) int 6 0
+ecom: 
+ref ref Node 10 1
+  tuple Node 10 1
+    seq no type 10 1
+      const n_DUP (5) int 6 0
+      seq no type 10 1
+        name nil polymorphic type 1 0
+        seq no type 10 1
+          name nil polymorphic type 1 0
+          seq no type 10 1
+            name nil polymorphic type 1 0
+            seq no type 10 1
+              * ref Redir 10 1
+                + int 10 1
+                  indx big 10 1
+                    name yys array of YYS 0 0
+                    name yypt int 0 0
+                  const redir (16) int 6 0
+ecom to: 
+* ref Node 0 0
+  adr int 13 1
+    name yyval YYSTYPE 0 0
+generate desc for ref Node
+generate desc for ref Node
+	desc	$-1,8,"80"
+generate desc for Node
+ecom: 
+tuple Node 10 1
+  seq no type 10 1
+    const n_DUP (5) int 6 0
+    seq no type 10 1
+      name nil polymorphic type 1 0
+      seq no type 10 1
+        name nil polymorphic type 1 0
+        seq no type 10 1
+          name nil polymorphic type 1 0
+          seq no type 10 1
+            * ref Redir 10 1
+              + int 10 1
+                indx big 10 1
+                  name yys array of YYS 0 0
+                  name yypt int 0 0
+                const redir (16) int 6 0
+ecom to: 
+* Node 8 0
+  name .b409 ref Node 0 0
+ecom: 
+const n_DUP (5) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .b409 ref Node 0 0
+    const (0) int 6 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* ref Node 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .b409 ref Node 0 0
+    const (8) int 6 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* ref Node 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .b409 ref Node 0 0
+    const (16) int 6 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* string 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .b409 ref Node 0 0
+    const (24) int 6 0
+ecom: 
+* ref Redir 10 1
+  + int 10 1
+    indx big 10 1
+      name yys array of YYS 0 0
+      name yypt int 0 0
+    const redir (16) int 6 0
+ecom to: 
+* ref Redir 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .b409 ref Node 0 0
+    const (32) int 6 0
+eacom: 
+* ref Redir 10 1
+  + int 10 1
+    indx big 10 1
+      name yys array of YYS 0 0
+      name yypt int 0 0
+    const redir (16) int 6 0
+generate desc for big
+ecom: 
+indx big 10 1
+  name yys array of YYS 0 0
+  name yypt int 0 0
+ecom to: 
+name .b406 big 0 0
+ecom: 
+= ref Node 10 1
+  name .b409 ref Node 0 0
+  name nil ref Node 1 0
+ecom: 
+name nil ref Node 1 0
+ecom to: 
+name .b409 ref Node 0 0
+ecom: 
+= ref Node 10 2
+  * ref Node 0 0
+    adr int 13 1
+      name yyval YYSTYPE 0 0
+  ref ref Node 10 2
+    tuple Node 10 2
+      seq no type 10 2
+        const n_REDIR (4) int 6 0
+        seq no type 10 2
+          * ref Node 10 1
+            indx big 10 1
+              name yys array of YYS 0 0
+              name yypt int 0 0
+          seq no type 10 1
+            name nil polymorphic type 1 0
+            seq no type 10 1
+              name nil polymorphic type 1 0
+              seq no type 10 1
+                * ref Redir 10 1
+                  + int 10 1
+                    indx big 10 1
+                      name yys array of YYS 0 0
+                      - int 10 1
+                        name yypt int 0 0
+                        const (1) int 6 0
+                    const redir (16) int 6 0
+ecom: 
+ref ref Node 10 2
+  tuple Node 10 2
+    seq no type 10 2
+      const n_REDIR (4) int 6 0
+      seq no type 10 2
+        * ref Node 10 1
+          indx big 10 1
+            name yys array of YYS 0 0
+            name yypt int 0 0
+        seq no type 10 1
+          name nil polymorphic type 1 0
+          seq no type 10 1
+            name nil polymorphic type 1 0
+            seq no type 10 1
+              * ref Redir 10 1
+                + int 10 1
+                  indx big 10 1
+                    name yys array of YYS 0 0
+                    - int 10 1
+                      name yypt int 0 0
+                      const (1) int 6 0
+                  const redir (16) int 6 0
+ecom to: 
+* ref Node 0 0
+  adr int 13 1
+    name yyval YYSTYPE 0 0
+generate desc for ref Node
+generate desc for ref Node
+	desc	$-1,8,"80"
+generate desc for Node
+ecom: 
+tuple Node 10 2
+  seq no type 10 2
+    const n_REDIR (4) int 6 0
+    seq no type 10 2
+      * ref Node 10 1
+        indx big 10 1
+          name yys array of YYS 0 0
+          name yypt int 0 0
+      seq no type 10 1
+        name nil polymorphic type 1 0
+        seq no type 10 1
+          name nil polymorphic type 1 0
+          seq no type 10 1
+            * ref Redir 10 1
+              + int 10 1
+                indx big 10 1
+                  name yys array of YYS 0 0
+                  - int 10 1
+                    name yypt int 0 0
+                    const (1) int 6 0
+                const redir (16) int 6 0
+ecom to: 
+* Node 8 0
+  name .b409 ref Node 0 0
+ecom: 
+const n_REDIR (4) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .b409 ref Node 0 0
+    const (0) int 6 0
+ecom: 
+* ref Node 10 1
+  indx big 10 1
+    name yys array of YYS 0 0
+    name yypt int 0 0
+ecom to: 
+* ref Node 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .b409 ref Node 0 0
+    const (8) int 6 0
+eacom: 
+* ref Node 10 1
+  indx big 10 1
+    name yys array of YYS 0 0
+    name yypt int 0 0
+generate desc for big
+ecom: 
+indx big 10 1
+  name yys array of YYS 0 0
+  name yypt int 0 0
+ecom to: 
+name .b406 big 0 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* ref Node 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .b409 ref Node 0 0
+    const (16) int 6 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* string 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .b409 ref Node 0 0
+    const (24) int 6 0
+ecom: 
+* ref Redir 10 1
+  + int 10 1
+    indx big 10 1
+      name yys array of YYS 0 0
+      - int 10 1
+        name yypt int 0 0
+        const (1) int 6 0
+    const redir (16) int 6 0
+ecom to: 
+* ref Redir 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .b409 ref Node 0 0
+    const (32) int 6 0
+eacom: 
+* ref Redir 10 1
+  + int 10 1
+    indx big 10 1
+      name yys array of YYS 0 0
+      - int 10 1
+        name yypt int 0 0
+        const (1) int 6 0
+    const redir (16) int 6 0
+generate desc for big
+ecom: 
+indx big 10 1
+  name yys array of YYS 0 0
+  - int 10 1
+    name yypt int 0 0
+    const (1) int 6 0
+ecom to: 
+name .b406 big 0 0
+eacom: 
+- int 10 1
+  name yypt int 0 0
+  const (1) int 6 0
+ecom: 
+- int 10 1
+  name yypt int 0 0
+  const (1) int 6 0
+ecom to: 
+name .t405 int 0 0
+ecom: 
+= ref Node 10 1
+  name .b409 ref Node 0 0
+  name nil ref Node 1 0
+ecom: 
+name nil ref Node 1 0
+ecom to: 
+name .b409 ref Node 0 0
+ecom: 
+= ref Node 10 1
+  * ref Node 0 0
+    adr int 13 1
+      name yyval YYSTYPE 0 0
+  * ref Node 10 1
+    indx big 10 1
+      name yys array of YYS 0 0
+      + int 15 1
+        name yyp int 0 0
+        const (1) int 6 0
+ecom: 
+* ref Node 10 1
+  indx big 10 1
+    name yys array of YYS 0 0
+    + int 15 1
+      name yyp int 0 0
+      const (1) int 6 0
+ecom to: 
+* ref Node 0 0
+  adr int 13 1
+    name yyval YYSTYPE 0 0
+eacom: 
+* ref Node 10 1
+  indx big 10 1
+    name yys array of YYS 0 0
+    + int 15 1
+      name yyp int 0 0
+      const (1) int 6 0
+generate desc for big
+ecom: 
+indx big 10 1
+  name yys array of YYS 0 0
+  + int 15 1
+    name yyp int 0 0
+    const (1) int 6 0
+ecom to: 
+name .b406 big 0 0
+eacom: 
++ int 15 1
+  name yyp int 0 0
+  const (1) int 6 0
+ecom: 
++ int 15 1
+  name yyp int 0 0
+  const (1) int 6 0
+ecom to: 
+name .t405 int 0 0
+ecom: 
+= ref Node 10 2
+  * ref Node 0 0
+    adr int 13 1
+      name yyval YYSTYPE 0 0
+  ref ref Node 10 2
+    tuple Node 10 2
+      seq no type 10 2
+        const n_ADJ (10) int 6 0
+        seq no type 10 2
+          * ref Node 10 1
+            indx big 10 1
+              name yys array of YYS 0 0
+              - int 10 1
+                name yypt int 0 0
+                const (1) int 6 0
+          seq no type 10 2
+            * ref Node 10 1
+              indx big 10 1
+                name yys array of YYS 0 0
+                name yypt int 0 0
+            seq no type 10 1
+              name nil polymorphic type 1 0
+              seq no type 10 1
+                name nil polymorphic type 1 0
+ecom: 
+ref ref Node 10 2
+  tuple Node 10 2
+    seq no type 10 2
+      const n_ADJ (10) int 6 0
+      seq no type 10 2
+        * ref Node 10 1
+          indx big 10 1
+            name yys array of YYS 0 0
+            - int 10 1
+              name yypt int 0 0
+              const (1) int 6 0
+        seq no type 10 2
+          * ref Node 10 1
+            indx big 10 1
+              name yys array of YYS 0 0
+              name yypt int 0 0
+          seq no type 10 1
+            name nil polymorphic type 1 0
+            seq no type 10 1
+              name nil polymorphic type 1 0
+ecom to: 
+* ref Node 0 0
+  adr int 13 1
+    name yyval YYSTYPE 0 0
+generate desc for ref Node
+generate desc for Node
+ecom: 
+tuple Node 10 2
+  seq no type 10 2
+    const n_ADJ (10) int 6 0
+    seq no type 10 2
+      * ref Node 10 1
+        indx big 10 1
+          name yys array of YYS 0 0
+          - int 10 1
+            name yypt int 0 0
+            const (1) int 6 0
+      seq no type 10 2
+        * ref Node 10 1
+          indx big 10 1
+            name yys array of YYS 0 0
+            name yypt int 0 0
+        seq no type 10 1
+          name nil polymorphic type 1 0
+          seq no type 10 1
+            name nil polymorphic type 1 0
+ecom to: 
+* Node 8 0
+  name .b409 ref Node 0 0
+ecom: 
+const n_ADJ (10) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .b409 ref Node 0 0
+    const (0) int 6 0
+ecom: 
+* ref Node 10 1
+  indx big 10 1
+    name yys array of YYS 0 0
+    - int 10 1
+      name yypt int 0 0
+      const (1) int 6 0
+ecom to: 
+* ref Node 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .b409 ref Node 0 0
+    const (8) int 6 0
+eacom: 
+* ref Node 10 1
+  indx big 10 1
+    name yys array of YYS 0 0
+    - int 10 1
+      name yypt int 0 0
+      const (1) int 6 0
+generate desc for big
+ecom: 
+indx big 10 1
+  name yys array of YYS 0 0
+  - int 10 1
+    name yypt int 0 0
+    const (1) int 6 0
+ecom to: 
+name .b406 big 0 0
+eacom: 
+- int 10 1
+  name yypt int 0 0
+  const (1) int 6 0
+ecom: 
+- int 10 1
+  name yypt int 0 0
+  const (1) int 6 0
+ecom to: 
+name .t405 int 0 0
+ecom: 
+* ref Node 10 1
+  indx big 10 1
+    name yys array of YYS 0 0
+    name yypt int 0 0
+ecom to: 
+* ref Node 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .b409 ref Node 0 0
+    const (16) int 6 0
+eacom: 
+* ref Node 10 1
+  indx big 10 1
+    name yys array of YYS 0 0
+    name yypt int 0 0
+generate desc for big
+ecom: 
+indx big 10 1
+  name yys array of YYS 0 0
+  name yypt int 0 0
+ecom to: 
+name .b406 big 0 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* string 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .b409 ref Node 0 0
+    const (24) int 6 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* ref Redir 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .b409 ref Node 0 0
+    const (32) int 6 0
+ecom: 
+= ref Node 10 1
+  name .b409 ref Node 0 0
+  name nil ref Node 1 0
+ecom: 
+name nil ref Node 1 0
+ecom to: 
+name .b409 ref Node 0 0
+ecom: 
+= ref Node 10 2
+  * ref Node 0 0
+    adr int 13 1
+      name yyval YYSTYPE 0 0
+  ref ref Node 10 2
+    tuple Node 10 2
+      seq no type 10 2
+        const n_ADJ (10) int 6 0
+        seq no type 10 2
+          * ref Node 10 1
+            indx big 10 1
+              name yys array of YYS 0 0
+              - int 10 1
+                name yypt int 0 0
+                const (1) int 6 0
+          seq no type 10 2
+            * ref Node 10 1
+              indx big 10 1
+                name yys array of YYS 0 0
+                name yypt int 0 0
+            seq no type 10 1
+              name nil polymorphic type 1 0
+              seq no type 10 1
+                name nil polymorphic type 1 0
+ecom: 
+ref ref Node 10 2
+  tuple Node 10 2
+    seq no type 10 2
+      const n_ADJ (10) int 6 0
+      seq no type 10 2
+        * ref Node 10 1
+          indx big 10 1
+            name yys array of YYS 0 0
+            - int 10 1
+              name yypt int 0 0
+              const (1) int 6 0
+        seq no type 10 2
+          * ref Node 10 1
+            indx big 10 1
+              name yys array of YYS 0 0
+              name yypt int 0 0
+          seq no type 10 1
+            name nil polymorphic type 1 0
+            seq no type 10 1
+              name nil polymorphic type 1 0
+ecom to: 
+* ref Node 0 0
+  adr int 13 1
+    name yyval YYSTYPE 0 0
+generate desc for ref Node
+generate desc for Node
+ecom: 
+tuple Node 10 2
+  seq no type 10 2
+    const n_ADJ (10) int 6 0
+    seq no type 10 2
+      * ref Node 10 1
+        indx big 10 1
+          name yys array of YYS 0 0
+          - int 10 1
+            name yypt int 0 0
+            const (1) int 6 0
+      seq no type 10 2
+        * ref Node 10 1
+          indx big 10 1
+            name yys array of YYS 0 0
+            name yypt int 0 0
+        seq no type 10 1
+          name nil polymorphic type 1 0
+          seq no type 10 1
+            name nil polymorphic type 1 0
+ecom to: 
+* Node 8 0
+  name .b409 ref Node 0 0
+ecom: 
+const n_ADJ (10) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .b409 ref Node 0 0
+    const (0) int 6 0
+ecom: 
+* ref Node 10 1
+  indx big 10 1
+    name yys array of YYS 0 0
+    - int 10 1
+      name yypt int 0 0
+      const (1) int 6 0
+ecom to: 
+* ref Node 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .b409 ref Node 0 0
+    const (8) int 6 0
+eacom: 
+* ref Node 10 1
+  indx big 10 1
+    name yys array of YYS 0 0
+    - int 10 1
+      name yypt int 0 0
+      const (1) int 6 0
+generate desc for big
+ecom: 
+indx big 10 1
+  name yys array of YYS 0 0
+  - int 10 1
+    name yypt int 0 0
+    const (1) int 6 0
+ecom to: 
+name .b406 big 0 0
+eacom: 
+- int 10 1
+  name yypt int 0 0
+  const (1) int 6 0
+ecom: 
+- int 10 1
+  name yypt int 0 0
+  const (1) int 6 0
+ecom to: 
+name .t405 int 0 0
+ecom: 
+* ref Node 10 1
+  indx big 10 1
+    name yys array of YYS 0 0
+    name yypt int 0 0
+ecom to: 
+* ref Node 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .b409 ref Node 0 0
+    const (16) int 6 0
+eacom: 
+* ref Node 10 1
+  indx big 10 1
+    name yys array of YYS 0 0
+    name yypt int 0 0
+generate desc for big
+ecom: 
+indx big 10 1
+  name yys array of YYS 0 0
+  name yypt int 0 0
+ecom to: 
+name .b406 big 0 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* string 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .b409 ref Node 0 0
+    const (24) int 6 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* ref Redir 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .b409 ref Node 0 0
+    const (32) int 6 0
+ecom: 
+= ref Node 10 1
+  name .b409 ref Node 0 0
+  name nil ref Node 1 0
+ecom: 
+name nil ref Node 1 0
+ecom to: 
+name .b409 ref Node 0 0
+ecom: 
+= ref Node 10 1
+  * ref Node 0 0
+    adr int 13 1
+      name yyval YYSTYPE 0 0
+  name nil polymorphic type 1 0
+ecom: 
+name nil ref Node 1 0
+ecom to: 
+* ref Node 0 0
+  adr int 13 1
+    name yyval YYSTYPE 0 0
+ecom: 
+= ref Node 10 1
+  * ref Node 0 0
+    adr int 13 1
+      name yyval YYSTYPE 0 0
+  * ref Node 10 1
+    indx big 10 1
+      name yys array of YYS 0 0
+      + int 15 1
+        name yyp int 0 0
+        const (1) int 6 0
+ecom: 
+* ref Node 10 1
+  indx big 10 1
+    name yys array of YYS 0 0
+    + int 15 1
+      name yyp int 0 0
+      const (1) int 6 0
+ecom to: 
+* ref Node 0 0
+  adr int 13 1
+    name yyval YYSTYPE 0 0
+eacom: 
+* ref Node 10 1
+  indx big 10 1
+    name yys array of YYS 0 0
+    + int 15 1
+      name yyp int 0 0
+      const (1) int 6 0
+generate desc for big
+ecom: 
+indx big 10 1
+  name yys array of YYS 0 0
+  + int 15 1
+    name yyp int 0 0
+    const (1) int 6 0
+ecom to: 
+name .b406 big 0 0
+eacom: 
++ int 15 1
+  name yyp int 0 0
+  const (1) int 6 0
+ecom: 
++ int 15 1
+  name yyp int 0 0
+  const (1) int 6 0
+ecom to: 
+name .t405 int 0 0
+ecom: 
+= ref Node 10 1
+  * ref Node 0 0
+    adr int 13 1
+      name yyval YYSTYPE 0 0
+  * ref Node 10 1
+    indx big 10 1
+      name yys array of YYS 0 0
+      name yypt int 0 0
+ecom: 
+* ref Node 10 1
+  indx big 10 1
+    name yys array of YYS 0 0
+    name yypt int 0 0
+ecom to: 
+* ref Node 0 0
+  adr int 13 1
+    name yyval YYSTYPE 0 0
+eacom: 
+* ref Node 10 1
+  indx big 10 1
+    name yys array of YYS 0 0
+    name yypt int 0 0
+generate desc for big
+ecom: 
+indx big 10 1
+  name yys array of YYS 0 0
+  name yypt int 0 0
+ecom to: 
+name .b406 big 0 0
+ecom: 
+= ref Node 10 2
+  * ref Node 0 0
+    adr int 13 1
+      name yyval YYSTYPE 0 0
+  ref ref Node 10 2
+    tuple Node 10 2
+      seq no type 10 2
+        const n_ADJ (10) int 6 0
+        seq no type 10 2
+          * ref Node 10 1
+            indx big 10 1
+              name yys array of YYS 0 0
+              - int 10 1
+                name yypt int 0 0
+                const (2) int 6 0
+          seq no type 10 2
+            * ref Node 10 1
+              indx big 10 1
+                name yys array of YYS 0 0
+                name yypt int 0 0
+            seq no type 10 1
+              name nil polymorphic type 1 0
+              seq no type 10 1
+                name nil polymorphic type 1 0
+ecom: 
+ref ref Node 10 2
+  tuple Node 10 2
+    seq no type 10 2
+      const n_ADJ (10) int 6 0
+      seq no type 10 2
+        * ref Node 10 1
+          indx big 10 1
+            name yys array of YYS 0 0
+            - int 10 1
+              name yypt int 0 0
+              const (2) int 6 0
+        seq no type 10 2
+          * ref Node 10 1
+            indx big 10 1
+              name yys array of YYS 0 0
+              name yypt int 0 0
+          seq no type 10 1
+            name nil polymorphic type 1 0
+            seq no type 10 1
+              name nil polymorphic type 1 0
+ecom to: 
+* ref Node 0 0
+  adr int 13 1
+    name yyval YYSTYPE 0 0
+generate desc for ref Node
+generate desc for Node
+ecom: 
+tuple Node 10 2
+  seq no type 10 2
+    const n_ADJ (10) int 6 0
+    seq no type 10 2
+      * ref Node 10 1
+        indx big 10 1
+          name yys array of YYS 0 0
+          - int 10 1
+            name yypt int 0 0
+            const (2) int 6 0
+      seq no type 10 2
+        * ref Node 10 1
+          indx big 10 1
+            name yys array of YYS 0 0
+            name yypt int 0 0
+        seq no type 10 1
+          name nil polymorphic type 1 0
+          seq no type 10 1
+            name nil polymorphic type 1 0
+ecom to: 
+* Node 8 0
+  name .b409 ref Node 0 0
+ecom: 
+const n_ADJ (10) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .b409 ref Node 0 0
+    const (0) int 6 0
+ecom: 
+* ref Node 10 1
+  indx big 10 1
+    name yys array of YYS 0 0
+    - int 10 1
+      name yypt int 0 0
+      const (2) int 6 0
+ecom to: 
+* ref Node 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .b409 ref Node 0 0
+    const (8) int 6 0
+eacom: 
+* ref Node 10 1
+  indx big 10 1
+    name yys array of YYS 0 0
+    - int 10 1
+      name yypt int 0 0
+      const (2) int 6 0
+generate desc for big
+ecom: 
+indx big 10 1
+  name yys array of YYS 0 0
+  - int 10 1
+    name yypt int 0 0
+    const (2) int 6 0
+ecom to: 
+name .b406 big 0 0
+eacom: 
+- int 10 1
+  name yypt int 0 0
+  const (2) int 6 0
+ecom: 
+- int 10 1
+  name yypt int 0 0
+  const (2) int 6 0
+ecom to: 
+name .t405 int 0 0
+ecom: 
+* ref Node 10 1
+  indx big 10 1
+    name yys array of YYS 0 0
+    name yypt int 0 0
+ecom to: 
+* ref Node 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .b409 ref Node 0 0
+    const (16) int 6 0
+eacom: 
+* ref Node 10 1
+  indx big 10 1
+    name yys array of YYS 0 0
+    name yypt int 0 0
+generate desc for big
+ecom: 
+indx big 10 1
+  name yys array of YYS 0 0
+  name yypt int 0 0
+ecom to: 
+name .b406 big 0 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* string 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .b409 ref Node 0 0
+    const (24) int 6 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* ref Redir 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .b409 ref Node 0 0
+    const (32) int 6 0
+ecom: 
+= ref Node 10 1
+  name .b409 ref Node 0 0
+  name nil ref Node 1 0
+ecom: 
+name nil ref Node 1 0
+ecom to: 
+name .b409 ref Node 0 0
+ecom: 
+= ref Node 10 2
+  * ref Node 0 0
+    adr int 13 1
+      name yyval YYSTYPE 0 0
+  ref ref Node 10 2
+    tuple Node 10 2
+      seq no type 10 2
+        const n_ADJ (10) int 6 0
+        seq no type 10 2
+          * ref Node 10 1
+            indx big 10 1
+              name yys array of YYS 0 0
+              - int 10 1
+                name yypt int 0 0
+                const (2) int 6 0
+          seq no type 10 2
+            * ref Node 10 1
+              indx big 10 1
+                name yys array of YYS 0 0
+                name yypt int 0 0
+            seq no type 10 1
+              name nil polymorphic type 1 0
+              seq no type 10 1
+                name nil polymorphic type 1 0
+ecom: 
+ref ref Node 10 2
+  tuple Node 10 2
+    seq no type 10 2
+      const n_ADJ (10) int 6 0
+      seq no type 10 2
+        * ref Node 10 1
+          indx big 10 1
+            name yys array of YYS 0 0
+            - int 10 1
+              name yypt int 0 0
+              const (2) int 6 0
+        seq no type 10 2
+          * ref Node 10 1
+            indx big 10 1
+              name yys array of YYS 0 0
+              name yypt int 0 0
+          seq no type 10 1
+            name nil polymorphic type 1 0
+            seq no type 10 1
+              name nil polymorphic type 1 0
+ecom to: 
+* ref Node 0 0
+  adr int 13 1
+    name yyval YYSTYPE 0 0
+generate desc for ref Node
+generate desc for Node
+ecom: 
+tuple Node 10 2
+  seq no type 10 2
+    const n_ADJ (10) int 6 0
+    seq no type 10 2
+      * ref Node 10 1
+        indx big 10 1
+          name yys array of YYS 0 0
+          - int 10 1
+            name yypt int 0 0
+            const (2) int 6 0
+      seq no type 10 2
+        * ref Node 10 1
+          indx big 10 1
+            name yys array of YYS 0 0
+            name yypt int 0 0
+        seq no type 10 1
+          name nil polymorphic type 1 0
+          seq no type 10 1
+            name nil polymorphic type 1 0
+ecom to: 
+* Node 8 0
+  name .b409 ref Node 0 0
+ecom: 
+const n_ADJ (10) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .b409 ref Node 0 0
+    const (0) int 6 0
+ecom: 
+* ref Node 10 1
+  indx big 10 1
+    name yys array of YYS 0 0
+    - int 10 1
+      name yypt int 0 0
+      const (2) int 6 0
+ecom to: 
+* ref Node 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .b409 ref Node 0 0
+    const (8) int 6 0
+eacom: 
+* ref Node 10 1
+  indx big 10 1
+    name yys array of YYS 0 0
+    - int 10 1
+      name yypt int 0 0
+      const (2) int 6 0
+generate desc for big
+ecom: 
+indx big 10 1
+  name yys array of YYS 0 0
+  - int 10 1
+    name yypt int 0 0
+    const (2) int 6 0
+ecom to: 
+name .b406 big 0 0
+eacom: 
+- int 10 1
+  name yypt int 0 0
+  const (2) int 6 0
+ecom: 
+- int 10 1
+  name yypt int 0 0
+  const (2) int 6 0
+ecom to: 
+name .t405 int 0 0
+ecom: 
+* ref Node 10 1
+  indx big 10 1
+    name yys array of YYS 0 0
+    name yypt int 0 0
+ecom to: 
+* ref Node 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .b409 ref Node 0 0
+    const (16) int 6 0
+eacom: 
+* ref Node 10 1
+  indx big 10 1
+    name yys array of YYS 0 0
+    name yypt int 0 0
+generate desc for big
+ecom: 
+indx big 10 1
+  name yys array of YYS 0 0
+  name yypt int 0 0
+ecom to: 
+name .b406 big 0 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* string 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .b409 ref Node 0 0
+    const (24) int 6 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* ref Redir 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .b409 ref Node 0 0
+    const (32) int 6 0
+ecom: 
+= ref Node 10 1
+  name .b409 ref Node 0 0
+  name nil ref Node 1 0
+ecom: 
+name nil ref Node 1 0
+ecom to: 
+name .b409 ref Node 0 0
+ecom: 
+= ref Node 10 1
+  * ref Node 0 0
+    adr int 13 1
+      name yyval YYSTYPE 0 0
+  * ref Node 10 1
+    indx big 10 1
+      name yys array of YYS 0 0
+      + int 15 1
+        name yyp int 0 0
+        const (1) int 6 0
+ecom: 
+* ref Node 10 1
+  indx big 10 1
+    name yys array of YYS 0 0
+    + int 15 1
+      name yyp int 0 0
+      const (1) int 6 0
+ecom to: 
+* ref Node 0 0
+  adr int 13 1
+    name yyval YYSTYPE 0 0
+eacom: 
+* ref Node 10 1
+  indx big 10 1
+    name yys array of YYS 0 0
+    + int 15 1
+      name yyp int 0 0
+      const (1) int 6 0
+generate desc for big
+ecom: 
+indx big 10 1
+  name yys array of YYS 0 0
+  + int 15 1
+    name yyp int 0 0
+    const (1) int 6 0
+ecom to: 
+name .b406 big 0 0
+eacom: 
++ int 15 1
+  name yyp int 0 0
+  const (1) int 6 0
+ecom: 
++ int 15 1
+  name yyp int 0 0
+  const (1) int 6 0
+ecom to: 
+name .t405 int 0 0
+ecom: 
+= ref Node 10 2
+  * ref Node 0 0
+    adr int 13 1
+      name yyval YYSTYPE 0 0
+  ref ref Node 10 2
+    tuple Node 10 2
+      seq no type 10 2
+        const n_CONCAT (8) int 6 0
+        seq no type 10 2
+          * ref Node 10 1
+            indx big 10 1
+              name yys array of YYS 0 0
+              - int 10 1
+                name yypt int 0 0
+                const (3) int 6 0
+          seq no type 10 2
+            * ref Node 10 1
+              indx big 10 1
+                name yys array of YYS 0 0
+                name yypt int 0 0
+            seq no type 10 1
+              name nil polymorphic type 1 0
+              seq no type 10 1
+                name nil polymorphic type 1 0
+ecom: 
+ref ref Node 10 2
+  tuple Node 10 2
+    seq no type 10 2
+      const n_CONCAT (8) int 6 0
+      seq no type 10 2
+        * ref Node 10 1
+          indx big 10 1
+            name yys array of YYS 0 0
+            - int 10 1
+              name yypt int 0 0
+              const (3) int 6 0
+        seq no type 10 2
+          * ref Node 10 1
+            indx big 10 1
+              name yys array of YYS 0 0
+              name yypt int 0 0
+          seq no type 10 1
+            name nil polymorphic type 1 0
+            seq no type 10 1
+              name nil polymorphic type 1 0
+ecom to: 
+* ref Node 0 0
+  adr int 13 1
+    name yyval YYSTYPE 0 0
+generate desc for ref Node
+generate desc for Node
+ecom: 
+tuple Node 10 2
+  seq no type 10 2
+    const n_CONCAT (8) int 6 0
+    seq no type 10 2
+      * ref Node 10 1
+        indx big 10 1
+          name yys array of YYS 0 0
+          - int 10 1
+            name yypt int 0 0
+            const (3) int 6 0
+      seq no type 10 2
+        * ref Node 10 1
+          indx big 10 1
+            name yys array of YYS 0 0
+            name yypt int 0 0
+        seq no type 10 1
+          name nil polymorphic type 1 0
+          seq no type 10 1
+            name nil polymorphic type 1 0
+ecom to: 
+* Node 8 0
+  name .b409 ref Node 0 0
+ecom: 
+const n_CONCAT (8) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .b409 ref Node 0 0
+    const (0) int 6 0
+ecom: 
+* ref Node 10 1
+  indx big 10 1
+    name yys array of YYS 0 0
+    - int 10 1
+      name yypt int 0 0
+      const (3) int 6 0
+ecom to: 
+* ref Node 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .b409 ref Node 0 0
+    const (8) int 6 0
+eacom: 
+* ref Node 10 1
+  indx big 10 1
+    name yys array of YYS 0 0
+    - int 10 1
+      name yypt int 0 0
+      const (3) int 6 0
+generate desc for big
+ecom: 
+indx big 10 1
+  name yys array of YYS 0 0
+  - int 10 1
+    name yypt int 0 0
+    const (3) int 6 0
+ecom to: 
+name .b406 big 0 0
+eacom: 
+- int 10 1
+  name yypt int 0 0
+  const (3) int 6 0
+ecom: 
+- int 10 1
+  name yypt int 0 0
+  const (3) int 6 0
+ecom to: 
+name .t405 int 0 0
+ecom: 
+* ref Node 10 1
+  indx big 10 1
+    name yys array of YYS 0 0
+    name yypt int 0 0
+ecom to: 
+* ref Node 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .b409 ref Node 0 0
+    const (16) int 6 0
+eacom: 
+* ref Node 10 1
+  indx big 10 1
+    name yys array of YYS 0 0
+    name yypt int 0 0
+generate desc for big
+ecom: 
+indx big 10 1
+  name yys array of YYS 0 0
+  name yypt int 0 0
+ecom to: 
+name .b406 big 0 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* string 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .b409 ref Node 0 0
+    const (24) int 6 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* ref Redir 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .b409 ref Node 0 0
+    const (32) int 6 0
+ecom: 
+= ref Node 10 1
+  name .b409 ref Node 0 0
+  name nil ref Node 1 0
+ecom: 
+name nil ref Node 1 0
+ecom to: 
+name .b409 ref Node 0 0
+ecom: 
+= ref Node 10 2
+  * ref Node 0 0
+    adr int 13 1
+      name yyval YYSTYPE 0 0
+  ref ref Node 10 2
+    tuple Node 10 2
+      seq no type 10 2
+        const n_WORD (11) int 6 0
+        seq no type 10 2
+          name nil polymorphic type 1 0
+          seq no type 10 2
+            name nil polymorphic type 1 0
+            seq no type 10 2
+              * string 10 1
+                + int 10 1
+                  indx big 10 1
+                    name yys array of YYS 0 0
+                    name yypt int 0 0
+                  const word (8) int 6 0
+              seq no type 10 1
+                name nil polymorphic type 1 0
+ecom: 
+ref ref Node 10 2
+  tuple Node 10 2
+    seq no type 10 2
+      const n_WORD (11) int 6 0
+      seq no type 10 2
+        name nil polymorphic type 1 0
+        seq no type 10 2
+          name nil polymorphic type 1 0
+          seq no type 10 2
+            * string 10 1
+              + int 10 1
+                indx big 10 1
+                  name yys array of YYS 0 0
+                  name yypt int 0 0
+                const word (8) int 6 0
+            seq no type 10 1
+              name nil polymorphic type 1 0
+ecom to: 
+* ref Node 0 0
+  adr int 13 1
+    name yyval YYSTYPE 0 0
+generate desc for ref Node
+generate desc for ref Node
+	desc	$-1,8,"80"
+generate desc for Node
+ecom: 
+tuple Node 10 2
+  seq no type 10 2
+    const n_WORD (11) int 6 0
+    seq no type 10 2
+      name nil polymorphic type 1 0
+      seq no type 10 2
+        name nil polymorphic type 1 0
+        seq no type 10 2
+          * string 10 1
+            + int 10 1
+              indx big 10 1
+                name yys array of YYS 0 0
+                name yypt int 0 0
+              const word (8) int 6 0
+          seq no type 10 1
+            name nil polymorphic type 1 0
+ecom to: 
+* Node 8 0
+  name .b409 ref Node 0 0
+ecom: 
+const n_WORD (11) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .b409 ref Node 0 0
+    const (0) int 6 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* ref Node 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .b409 ref Node 0 0
+    const (8) int 6 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* ref Node 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .b409 ref Node 0 0
+    const (16) int 6 0
+ecom: 
+* string 10 1
+  + int 10 1
+    indx big 10 1
+      name yys array of YYS 0 0
+      name yypt int 0 0
+    const word (8) int 6 0
+ecom to: 
+* string 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .b409 ref Node 0 0
+    const (24) int 6 0
+eacom: 
+* string 10 1
+  + int 10 1
+    indx big 10 1
+      name yys array of YYS 0 0
+      name yypt int 0 0
+    const word (8) int 6 0
+generate desc for big
+ecom: 
+indx big 10 1
+  name yys array of YYS 0 0
+  name yypt int 0 0
+ecom to: 
+name .b406 big 0 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* ref Redir 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .b409 ref Node 0 0
+    const (32) int 6 0
+ecom: 
+= ref Node 10 1
+  name .b409 ref Node 0 0
+  name nil ref Node 1 0
+ecom: 
+name nil ref Node 1 0
+ecom to: 
+name .b409 ref Node 0 0
+ecom: 
+= ref Node 10 2
+  * ref Node 0 0
+    adr int 13 1
+      name yyval YYSTYPE 0 0
+  ref ref Node 10 2
+    tuple Node 10 2
+      seq no type 10 2
+        * int 10 1
+          + int 10 1
+            indx big 10 1
+              name yys array of YYS 0 0
+              - int 10 1
+                name yypt int 0 0
+                const (1) int 6 0
+            const optype (24) int 6 0
+        seq no type 10 2
+          * ref Node 10 1
+            indx big 10 1
+              name yys array of YYS 0 0
+              name yypt int 0 0
+          seq no type 10 1
+            name nil ref Node 1 0
+            seq no type 10 1
+              name nil polymorphic type 1 0
+              seq no type 10 1
+                name nil polymorphic type 1 0
+ecom: 
+ref ref Node 10 2
+  tuple Node 10 2
+    seq no type 10 2
+      * int 10 1
+        + int 10 1
+          indx big 10 1
+            name yys array of YYS 0 0
+            - int 10 1
+              name yypt int 0 0
+              const (1) int 6 0
+          const optype (24) int 6 0
+      seq no type 10 2
+        * ref Node 10 1
+          indx big 10 1
+            name yys array of YYS 0 0
+            name yypt int 0 0
+        seq no type 10 1
+          name nil ref Node 1 0
+          seq no type 10 1
+            name nil polymorphic type 1 0
+            seq no type 10 1
+              name nil polymorphic type 1 0
+ecom to: 
+* ref Node 0 0
+  adr int 13 1
+    name yyval YYSTYPE 0 0
+generate desc for ref Node
+generate desc for Node
+ecom: 
+tuple Node 10 2
+  seq no type 10 2
+    * int 10 1
+      + int 10 1
+        indx big 10 1
+          name yys array of YYS 0 0
+          - int 10 1
+            name yypt int 0 0
+            const (1) int 6 0
+        const optype (24) int 6 0
+    seq no type 10 2
+      * ref Node 10 1
+        indx big 10 1
+          name yys array of YYS 0 0
+          name yypt int 0 0
+      seq no type 10 1
+        name nil ref Node 1 0
+        seq no type 10 1
+          name nil polymorphic type 1 0
+          seq no type 10 1
+            name nil polymorphic type 1 0
+ecom to: 
+* Node 8 0
+  name .b409 ref Node 0 0
+ecom: 
+* int 10 1
+  + int 10 1
+    indx big 10 1
+      name yys array of YYS 0 0
+      - int 10 1
+        name yypt int 0 0
+        const (1) int 6 0
+    const optype (24) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .b409 ref Node 0 0
+    const (0) int 6 0
+eacom: 
+* int 10 1
+  + int 10 1
+    indx big 10 1
+      name yys array of YYS 0 0
+      - int 10 1
+        name yypt int 0 0
+        const (1) int 6 0
+    const optype (24) int 6 0
+generate desc for big
+ecom: 
+indx big 10 1
+  name yys array of YYS 0 0
+  - int 10 1
+    name yypt int 0 0
+    const (1) int 6 0
+ecom to: 
+name .b406 big 0 0
+eacom: 
+- int 10 1
+  name yypt int 0 0
+  const (1) int 6 0
+ecom: 
+- int 10 1
+  name yypt int 0 0
+  const (1) int 6 0
+ecom to: 
+name .t405 int 0 0
+ecom: 
+* ref Node 10 1
+  indx big 10 1
+    name yys array of YYS 0 0
+    name yypt int 0 0
+ecom to: 
+* ref Node 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .b409 ref Node 0 0
+    const (8) int 6 0
+eacom: 
+* ref Node 10 1
+  indx big 10 1
+    name yys array of YYS 0 0
+    name yypt int 0 0
+generate desc for big
+ecom: 
+indx big 10 1
+  name yys array of YYS 0 0
+  name yypt int 0 0
+ecom to: 
+name .b406 big 0 0
+ecom: 
+name nil ref Node 1 0
+ecom to: 
+* ref Node 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .b409 ref Node 0 0
+    const (16) int 6 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* string 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .b409 ref Node 0 0
+    const (24) int 6 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* ref Redir 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .b409 ref Node 0 0
+    const (32) int 6 0
+ecom: 
+= ref Node 10 1
+  name .b409 ref Node 0 0
+  name nil ref Node 1 0
+ecom: 
+name nil ref Node 1 0
+ecom to: 
+name .b409 ref Node 0 0
+ecom: 
+= ref Node 10 2
+  * ref Node 0 0
+    adr int 13 1
+      name yyval YYSTYPE 0 0
+  ref ref Node 10 2
+    tuple Node 10 2
+      seq no type 10 2
+        const n_LIST (6) int 6 0
+        seq no type 10 2
+          * ref Node 10 1
+            indx big 10 1
+              name yys array of YYS 0 0
+              - int 10 1
+                name yypt int 0 0
+                const (1) int 6 0
+          seq no type 10 1
+            name nil ref Node 1 0
+            seq no type 10 1
+              name nil polymorphic type 1 0
+              seq no type 10 1
+                name nil polymorphic type 1 0
+ecom: 
+ref ref Node 10 2
+  tuple Node 10 2
+    seq no type 10 2
+      const n_LIST (6) int 6 0
+      seq no type 10 2
+        * ref Node 10 1
+          indx big 10 1
+            name yys array of YYS 0 0
+            - int 10 1
+              name yypt int 0 0
+              const (1) int 6 0
+        seq no type 10 1
+          name nil ref Node 1 0
+          seq no type 10 1
+            name nil polymorphic type 1 0
+            seq no type 10 1
+              name nil polymorphic type 1 0
+ecom to: 
+* ref Node 0 0
+  adr int 13 1
+    name yyval YYSTYPE 0 0
+generate desc for ref Node
+generate desc for Node
+ecom: 
+tuple Node 10 2
+  seq no type 10 2
+    const n_LIST (6) int 6 0
+    seq no type 10 2
+      * ref Node 10 1
+        indx big 10 1
+          name yys array of YYS 0 0
+          - int 10 1
+            name yypt int 0 0
+            const (1) int 6 0
+      seq no type 10 1
+        name nil ref Node 1 0
+        seq no type 10 1
+          name nil polymorphic type 1 0
+          seq no type 10 1
+            name nil polymorphic type 1 0
+ecom to: 
+* Node 8 0
+  name .b409 ref Node 0 0
+ecom: 
+const n_LIST (6) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .b409 ref Node 0 0
+    const (0) int 6 0
+ecom: 
+* ref Node 10 1
+  indx big 10 1
+    name yys array of YYS 0 0
+    - int 10 1
+      name yypt int 0 0
+      const (1) int 6 0
+ecom to: 
+* ref Node 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .b409 ref Node 0 0
+    const (8) int 6 0
+eacom: 
+* ref Node 10 1
+  indx big 10 1
+    name yys array of YYS 0 0
+    - int 10 1
+      name yypt int 0 0
+      const (1) int 6 0
+generate desc for big
+ecom: 
+indx big 10 1
+  name yys array of YYS 0 0
+  - int 10 1
+    name yypt int 0 0
+    const (1) int 6 0
+ecom to: 
+name .b406 big 0 0
+eacom: 
+- int 10 1
+  name yypt int 0 0
+  const (1) int 6 0
+ecom: 
+- int 10 1
+  name yypt int 0 0
+  const (1) int 6 0
+ecom to: 
+name .t405 int 0 0
+ecom: 
+name nil ref Node 1 0
+ecom to: 
+* ref Node 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .b409 ref Node 0 0
+    const (16) int 6 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* string 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .b409 ref Node 0 0
+    const (24) int 6 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* ref Redir 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .b409 ref Node 0 0
+    const (32) int 6 0
+ecom: 
+= ref Node 10 1
+  name .b409 ref Node 0 0
+  name nil ref Node 1 0
+ecom: 
+name nil ref Node 1 0
+ecom to: 
+name .b409 ref Node 0 0
+ecom: 
+= ref Node 10 2
+  * ref Node 0 0
+    adr int 13 1
+      name yyval YYSTYPE 0 0
+  ref ref Node 10 2
+    tuple Node 10 2
+      seq no type 10 2
+        const n_BLOCK (0) int 6 0
+        seq no type 10 2
+          * ref Node 10 1
+            indx big 10 1
+              name yys array of YYS 0 0
+              - int 10 1
+                name yypt int 0 0
+                const (1) int 6 0
+          seq no type 10 1
+            name nil ref Node 1 0
+            seq no type 10 1
+              name nil polymorphic type 1 0
+              seq no type 10 1
+                name nil polymorphic type 1 0
+ecom: 
+ref ref Node 10 2
+  tuple Node 10 2
+    seq no type 10 2
+      const n_BLOCK (0) int 6 0
+      seq no type 10 2
+        * ref Node 10 1
+          indx big 10 1
+            name yys array of YYS 0 0
+            - int 10 1
+              name yypt int 0 0
+              const (1) int 6 0
+        seq no type 10 1
+          name nil ref Node 1 0
+          seq no type 10 1
+            name nil polymorphic type 1 0
+            seq no type 10 1
+              name nil polymorphic type 1 0
+ecom to: 
+* ref Node 0 0
+  adr int 13 1
+    name yyval YYSTYPE 0 0
+generate desc for ref Node
+generate desc for Node
+ecom: 
+tuple Node 10 2
+  seq no type 10 2
+    const n_BLOCK (0) int 6 0
+    seq no type 10 2
+      * ref Node 10 1
+        indx big 10 1
+          name yys array of YYS 0 0
+          - int 10 1
+            name yypt int 0 0
+            const (1) int 6 0
+      seq no type 10 1
+        name nil ref Node 1 0
+        seq no type 10 1
+          name nil polymorphic type 1 0
+          seq no type 10 1
+            name nil polymorphic type 1 0
+ecom to: 
+* Node 8 0
+  name .b409 ref Node 0 0
+ecom: 
+const n_BLOCK (0) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .b409 ref Node 0 0
+    const (0) int 6 0
+ecom: 
+* ref Node 10 1
+  indx big 10 1
+    name yys array of YYS 0 0
+    - int 10 1
+      name yypt int 0 0
+      const (1) int 6 0
+ecom to: 
+* ref Node 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .b409 ref Node 0 0
+    const (8) int 6 0
+eacom: 
+* ref Node 10 1
+  indx big 10 1
+    name yys array of YYS 0 0
+    - int 10 1
+      name yypt int 0 0
+      const (1) int 6 0
+generate desc for big
+ecom: 
+indx big 10 1
+  name yys array of YYS 0 0
+  - int 10 1
+    name yypt int 0 0
+    const (1) int 6 0
+ecom to: 
+name .b406 big 0 0
+eacom: 
+- int 10 1
+  name yypt int 0 0
+  const (1) int 6 0
+ecom: 
+- int 10 1
+  name yypt int 0 0
+  const (1) int 6 0
+ecom to: 
+name .t405 int 0 0
+ecom: 
+name nil ref Node 1 0
+ecom to: 
+* ref Node 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .b409 ref Node 0 0
+    const (16) int 6 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* string 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .b409 ref Node 0 0
+    const (24) int 6 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* ref Redir 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .b409 ref Node 0 0
+    const (32) int 6 0
+ecom: 
+= ref Node 10 1
+  name .b409 ref Node 0 0
+  name nil ref Node 1 0
+ecom: 
+name nil ref Node 1 0
+ecom to: 
+name .b409 ref Node 0 0
+ecom: 
+name yyn int 0 0
+ecom to: 
+* int 8 0
+  name .ret int 0 0
+fn: yyparse
+64: argument yylex ref YYLEX ref 6
+72: local yyn int ref 33
+76: local yyp int ref 29
+80: local yychar int ref 15
+84: local yystate int ref 15
+88: local yyxi int ref 8
+92: local yyerrflag int ref 6
+96: local yyg int ref 3
+100: local yyj int ref 3
+104: local yym int ref 2
+108: local yynerrs int ref 2
+112: local .t402 int ref 1
+116: local .t405 int ref 1
+120: local yys array of YYS ref 73
+128: local .b406 big ref 56
+136: local yyval YYSTYPE ref 39
+168: local .b404 big ref 28
+176: local .b409 ref Node ref 20
+184: local .b407 ref Node ref 4
+192: local .b408 ref Node ref 3
+200: local .t403 array of YYS ref 1
+88: local yypt int ref 45
+generate desc for yyparse
+descmap offset 0
+descmap yylex type ref YYLEX offset 64 (d->offset=64 start=0) returns 64
+descmap yyn type int offset 72 (d->offset=72 start=0) returns -1
+descmap yyp type int offset 76 (d->offset=76 start=0) returns -1
+descmap yychar type int offset 80 (d->offset=80 start=0) returns -1
+descmap yystate type int offset 84 (d->offset=84 start=0) returns -1
+descmap yyxi type int offset 88 (d->offset=88 start=0) returns -1
+descmap yyerrflag type int offset 92 (d->offset=92 start=0) returns -1
+descmap yyg type int offset 96 (d->offset=96 start=0) returns -1
+descmap yyj type int offset 100 (d->offset=100 start=0) returns -1
+descmap yym type int offset 104 (d->offset=104 start=0) returns -1
+descmap yynerrs type int offset 108 (d->offset=108 start=0) returns -1
+descmap .t402 type int offset 112 (d->offset=112 start=0) returns -1
+descmap .t405 type int offset 116 (d->offset=116 start=0) returns -1
+descmap yys type array of YYS offset 120 (d->offset=120 start=0) returns 120
+descmap .b406 type big offset 128 (d->offset=128 start=0) returns -1
+descmap adt offset 136
+descmap offset 136
+descmap node type ref Node offset 136 (d->offset=0 start=136) returns 136
+descmap word type string offset 144 (d->offset=8 start=136) returns 144
+descmap redir type ref Redir offset 152 (d->offset=16 start=136) returns 152
+descmap optype type int offset 160 (d->offset=24 start=136) returns -1
+descmap yyval type YYSTYPE offset 136 (d->offset=136 start=0) returns 152
+descmap .b404 type big offset 168 (d->offset=168 start=0) returns -1
+descmap .b409 type ref Node offset 176 (d->offset=176 start=0) returns 176
+descmap .b407 type ref Node offset 184 (d->offset=184 start=0) returns 184
+descmap .b408 type ref Node offset 192 (d->offset=192 start=0) returns 192
+descmap .t403 type array of YYS offset 200 (d->offset=200 start=0) returns 200
+nil 'nil' ref 1083
+nil '' ref 28
+variable '
+' val '"\n"'
+variable ' ' val '" "'
+variable ' 	' val '" \t"'
+variable ' 	
+
' val '" \t\n\r"'
+variable ' in glomop' val '" in glomop"'
+variable ' not found' val '" not found"'
+variable '"' val '"\""'
+variable '#p/' val '"#p/"'
+variable '$' val '"$"'
+variable '$"' val '"$\""'
+variable '$#' val '"$#"'
+variable '$Sys' val '"$Sys"'
+variable '$self' val '"$self"'
+variable '$self(Sh)' val '"$self(Sh)"'
+variable '$self(Shellbuiltin)' val '"$self(Shel..."'
+variable '${' val '"${"'
+variable '${%s}	%s
+' val '"${%s}\t%s\n"'
+variable '${builtin ' val '"${builtin "'
+variable '%r' val '"%r"'
+variable '%s' val '"%s"'
+variable '%s	%s
+' val '"%s\t%s\n"'
+variable '%s
+' val '"%s\n"'
+variable '%s: %s' val '"%s: %s"'
+variable '%s: not found
+' val '"%s: not fo..."'
+variable '%s:%d: %s' val '"%s:%d: %s"'
+variable '%s=%s
+' val '"%s=%s\n"'
+variable '&' val '"&"'
+variable ''' val '"'"'
+variable '(' val '"("'
+variable ')' val '")"'
+variable '*' val '"*"'
+variable '.' val '"."'
+variable './' val '"./"'
+variable '.B.00000000.       0' val '.B.00000000.       0'
+variable '.b.0a' val '.b.0a'
+variable '.b.21' val '(.b.21)'
+variable '.b.23' val '(.b.23)'
+variable '.c0' val '.c0'
+variable '.c1' val '.c1'
+variable '.c11' val '.c11'
+variable '.c12' val '.c12'
+variable '.c13' val '.c13'
+variable '.c14' val '.c14'
+variable '.c15' val '.c15'
+variable '.c16' val '.c16'
+variable '.c2' val '.c2'
+variable '.c4' val '.c4'
+variable '.c5' val '.c5'
+variable '.c6' val '.c6'
+variable '.c7' val '.c7'
+variable '.c8' val '.c8'
+variable '.c9' val '.c9'
+variable '.dis' val '".dis"'
+variable '.g10' val '.g10'
+variable '.g17' val '.g17'
+variable '.g3' val '.g3'
+variable '.i.7fffffff' val '.i.7fffffff'
+variable '.i.80000000' val '.i.80000000'
+variable '.m.Bufio' val ''
+variable '.m.Command' val ''
+variable '.m.Env' val ''
+variable '.m.Filepat' val ''
+variable '.m.Sh' val ''
+variable '.m.Shellbuiltin' val ''
+variable '.m.String' val ''
+variable '.m.Sys' val ''
+variable '.m.YYSys' val ''
+variable '/' val '"/"'
+variable '/dev/cons' val '"/dev/cons"'
+variable '/dis' val '"/dis"'
+variable '/dis/lib/bufio.dis' val '"/dis/lib/b..."'
+variable '/dis/lib/env.dis' val '"/dis/lib/e..."'
+variable '/dis/lib/filepat.dis' val '"/dis/lib/f..."'
+variable '/dis/lib/string.dis' val '"/dis/lib/s..."'
+variable '/dis/sh/' val '"/dis/sh/"'
+variable '/fd/' val '"/fd/"'
+variable '/lib/sh/profile' val '"/lib/sh/pr..."'
+variable '/prog/' val '"/prog/"'
+variable '/wait' val '"/wait"'
+variable '0' val '"0"'
+variable ': parse error: ' val '": parse er..."'
+variable ':=' val '":="'
+variable ';' val '";"'
+variable '; ' val '"; "'
+variable '<' val '"<"'
+variable '<>' val '"<>"'
+variable '=' val '"="'
+variable '>' val '">"'
+variable '>>' val '">>"'
+variable '@' val '"@"'
+variable '[' val '"["'
+variable ']' val '"]"'
+variable '^' val '"^"'
+variable '^
+ 	
|$'#<>;^(){}`&="' val '"^\n \t\r|$'#<..."'
+variable '`' val '"`"'
+variable 'a-zA-Z0-9*_' val '"a-zA-Z0-9*..."'
+variable 'and' val '"and"'
+variable 'apid' val '"apid"'
+variable 'autoload' val '"autoload"'
+variable 'bad $ arg' val '"bad $ arg"'
+variable 'bad assign' val '"bad assign"'
+variable 'bad concatenation' val '"bad concat..."'
+variable 'bad header' val '"bad header"'
+variable 'bad module' val '"bad module"'
+variable 'bad node type ' val '"bad node t..."'
+variable 'bad redir' val '"bad redir"'
+variable 'bad script header on ' val '"bad script..."'
+variable 'bad script path' val '"bad script..."'
+variable 'bad wait read' val '"bad wait r..."'
+variable 'blanklex' val ''
+variable 'blankopts' val ''
+variable 'bquote' val '"bquote"'
+variable 'bufio' val ''
+variable 'builtin' val '"builtin"'
+variable 'builtin %s
+' val '"builtin %s..."'
+variable 'builtin command [args ...]' val '"builtin co..."'
+variable 'builtin not found' val '"builtin no..."'
+variable 'cannot open wait file: %r' val '"cannot ope..."'
+variable 'directory entry not found' val '"directory ..."'
+variable 'does not exist' val '"does not e..."'
+variable 'empty header on ' val '"empty head..."'
+variable 'env' val ''
+variable 'error on wait read: %r' val '"error on w..."'
+variable 'exit' val '"exit"'
+variable 'fail:' val '"fail:"'
+variable 'fail:bad module' val '"fail:bad m..."'
+variable 'fail:parse error' val '"fail:parse..."'
+variable 'fail:usage' val '"fail:usage"'
+variable 'fail:write on closed pipe' val '"fail:write..."'
+variable 'failed' val '"failed"'
+variable 'filepat' val ''
+variable 'ifs' val '"ifs"'
+variable 'internal' val '"internal"'
+variable 'killed' val '"killed"'
+variable 'load' val '"load"'
+variable 'load ' val '"load "'
+variable 'load path...' val '"load path...."'
+variable 'load: cannot load %s: %r' val '"load: cann..."'
+variable 'load: module init failed: ' val '"load: modu..."'
+variable 'loaded' val '"loaded"'
+variable 'module %s not found' val '"module %s ..."'
+variable 'myself' val ''
+variable 'myselfbuiltin' val ''
+variable 'nil' val ''
+variable 'no pipe' val '"no pipe"'
+variable 'not found' val '"not found"'
+variable 'or' val '"or"'
+variable 'panic' val '"panic"'
+variable 'parse error' val '"parse erro..."'
+variable 'path' val '"path"'
+variable 'permission denied' val '"permission..."'
+variable 'prompt' val '"prompt"'
+variable 'quote' val '"quote"'
+variable 'reopen of waitfd gave same fd (%d)' val '"reopen of ..."'
+variable 'run' val '"run"'
+variable 'run path' val '"run path"'
+variable 'sh panic: %s
+' val '"sh panic: ..."'
+variable 'sh: ' val '"sh: "'
+variable 'sh: %s
+' val '"sh: %s\n"'
+variable 'sh: assignment in invalid context' val '"sh: assign..."'
+variable 'sh: bad builtin name' val '"sh: bad bu..."'
+variable 'sh: bad exit status '%s'' val '"sh: bad ex..."'
+variable 'sh: bad redirection' val '"sh: bad re..."'
+variable 'sh: bad variable name' val '"sh: bad va..."'
+variable 'sh: builtin %s not found' val '"sh: builti..."'
+variable 'sh: cannot dup: %r' val '"sh: cannot..."'
+variable 'sh: cannot load %s: %r
+' val '"sh: cannot..."'
+variable 'sh: cannot make pipe: %r' val '"sh: cannot..."'
+variable 'sh: cannot open %s: %r' val '"sh: cannot..."'
+variable 'sh: cannot open %s: %s' val '"sh: cannot..."'
+variable 'sh: invalid argument to ${} operator' val '"sh: invali..."'
+variable 'sh: invalid dup' val '"sh: invali..."'
+variable 'sh: lists of differing sizes can't be concatenated' val '"sh: lists ..."'
+variable 'sh: nil variable name' val '"sh: nil va..."'
+variable 'sh: null list in concatenation' val '"sh: null l..."'
+variable 'sh: redirection not allowed in substitution' val '"sh: redire..."'
+variable 'sh: redirections not allowed in assignment' val '"sh: redire..."'
+variable 'sh: single redirection operand required' val '"sh: single..."'
+variable 'sh: usage: ' val '"sh: usage:..."'
+variable 'status' val '"status"'
+variable 'stdin' val '"stdin"'
+variable 'str' val ''
+variable 'syncenv' val '"syncenv"'
+variable 'syntax error' val '"syntax err..."'
+variable 'syntax error in pipe redirection' val '"syntax err..."'
+variable 'syntax error in redirection' val '"syntax err..."'
+variable 'sys' val ''
+variable 'unbalanced contexts in shell environment' val '"unbalanced..."'
+variable 'unknown error' val '"unknown er..."'
+variable 'unknown%d' val '"unknown%d"'
+variable 'unload' val '"unload"'
+variable 'unload path...' val '"unload pat..."'
+variable 'unquote' val '"unquote"'
+variable 'unquote arg' val '"unquote ar..."'
+variable 'unterminated string literal' val '"unterminat..."'
+variable 'usage' val '"usage"'
+variable 'usage: sh [-ilexn] [-c command] [file [arg...]]
+' val '"usage: sh ..."'
+variable 'whatis' val '"whatis"'
+variable 'whatis name ...' val '"whatis nam..."'
+variable 'write on closed pipe' val '"write on c..."'
+variable 'yyact' val 'array [93] of {0 =>12, 1 =>10, 2 =>15, 3 =>4, 4 =>5, 5 =>40, 6 =>8, 7 =>11, 8 =>9, 9 =>7, 10 =>30, 11 =>31, 12 =>54, 13 =>6, 14 =>50, 15 =>35, 16 =>34, 17 =>32, 18 =>33, 19 =>21, 20 =>36, 21 =>38, 22 =>34, 23 =>41, 24 =>43, 25 =>22, 26 =>29, 27 =>3, 28 =>28, 29 =>13, 30 =>14, 31 =>16, 32 =>17, 33 =>20, 34 =>37, 35 =>42, 36 =>1, 37 =>23, 38 =>45, 39 =>51, 40 =>44, 41 =>47, 42 =>48, 43 =>18, 44 =>39, 45 =>19, 46 =>41, 47 =>43, 48 =>56, 49 =>30, 50 =>31, 51 =>46, 52 =>58, 53 =>57, 54 =>59, 55 =>60, 56 =>49, 57 =>13, 58 =>14, 59 =>16, 60 =>17, 61 =>53, 62 =>13, 63 =>14, 64 =>16, 65 =>17, 66 =>2, 67 =>52, 68 =>0, 69 =>16, 70 =>17, 71 =>18, 72 =>27, 73 =>19, 74 =>16, 75 =>17, 76 =>18, 77 =>52, 78 =>19, 79 =>0, 80 =>26, 81 =>18, 82 =>0, 83 =>19, 84 =>24, 85 =>25, 86 =>18, 87 =>26, 88 =>19, 89 =>0, 90 =>55, 91 =>24, 92 =>25}'
+generate desc for int
+variable 'yychk' val 'array [61] of {0 =>-1000, 1 =>-6, 2 =>-12, 3 =>2, 4 =>-16, 5 =>-9, 6 =>-15, 7 =>-10, 8 =>-5, 9 =>-4, 10 =>-1, 11 =>-7, 12 =>-2, 13 =>4, 14 =>5, 15 =>-11, 16 =>6, 17 =>7, 18 =>18, 19 =>20, 20 =>-17, 21 =>8, 22 =>14, 23 =>-17, 24 =>15, 25 =>16, 26 =>11, 27 =>-12, 28 =>10, 29 =>12, 30 =>-2, 31 =>-1, 32 =>-5, 33 =>13, 34 =>17, 35 =>-2, 36 =>-11, 37 =>-14, 38 =>-18, 39 =>-3, 40 =>-13, 41 =>-16, 42 =>-8, 43 =>-9, 44 =>-15, 45 =>-10, 46 =>-18, 47 =>-7, 48 =>-4, 49 =>-18, 50 =>19, 51 =>-2, 52 =>14, 53 =>-18, 54 =>21, 55 =>14, 56 =>-13, 57 =>-5, 58 =>-11, 59 =>-2, 60 =>-1}'
+generate desc for int
+variable 'yydef' val 'array [61] of {0 =>-2, 1 =>-2, 2 =>0, 3 =>0, 4 =>5, 5 =>17, 6 =>13, 7 =>15, 8 =>18, 9 =>20, 10 =>22, 11 =>23, 12 =>29, 13 =>27, 14 =>0, 15 =>37, 16 =>39, 17 =>0, 18 =>43, 19 =>17, 20 =>1, 21 =>3, 22 =>4, 23 =>2, 24 =>9, 25 =>10, 26 =>17, 27 =>6, 28 =>17, 29 =>43, 30 =>30, 31 =>31, 32 =>21, 33 =>26, 34 =>43, 35 =>28, 36 =>40, 37 =>0, 38 =>32, 39 =>43, 40 =>0, 41 =>7, 42 =>17, 43 =>11, 44 =>14, 45 =>16, 46 =>0, 47 =>24, 48 =>25, 49 =>0, 50 =>41, 51 =>34, 52 =>44, 53 =>33, 54 =>42, 55 =>12, 56 =>8, 57 =>19, 58 =>38, 59 =>35, 60 =>36}'
+generate desc for int
+variable 'yyexca' val 'array [24] of {0 =>-1, 1 =>0, 2 =>8, 3 =>17, 4 =>10, 5 =>17, 6 =>11, 7 =>17, 8 =>12, 9 =>17, 10 =>14, 11 =>17, 12 =>15, 13 =>17, 14 =>16, 15 =>17, 16 =>-2, 17 =>0, 18 =>-1, 19 =>1, 20 =>1, 21 =>-1, 22 =>-2, 23 =>0}'
+generate desc for int
+variable 'yypact' val 'array [61] of {0 =>25, 1 =>-1000, 2 =>11, 3 =>11, 4 =>69, 5 =>58, 6 =>18, 7 =>14, 8 =>-1000, 9 =>58, 10 =>58, 11 =>-1000, 12 =>5, 13 =>-1000, 14 =>68, 15 =>-1000, 16 =>-1000, 17 =>68, 18 =>-1000, 19 =>58, 20 =>-1000, 21 =>-1000, 22 =>-1000, 23 =>-1000, 24 =>-1000, 25 =>-1000, 26 =>58, 27 =>-1000, 28 =>58, 29 =>-1000, 30 =>-1, 31 =>-1000, 32 =>-1000, 33 =>68, 34 =>-1000, 35 =>-1, 36 =>-1000, 37 =>-5, 38 =>63, 39 =>-1000, 40 =>-9, 41 =>76, 42 =>58, 43 =>-1000, 44 =>18, 45 =>14, 46 =>53, 47 =>-1000, 48 =>58, 49 =>63, 50 =>-1000, 51 =>-1, 52 =>-1000, 53 =>53, 54 =>-1000, 55 =>-1000, 56 =>-1000, 57 =>-1000, 58 =>-1000, 59 =>-1, 60 =>-1000}'
+generate desc for int
+variable 'yypgo' val 'array [19] of {0 =>0, 1 =>1, 2 =>0, 3 =>44, 4 =>8, 5 =>6, 6 =>36, 7 =>7, 8 =>35, 9 =>4, 10 =>9, 11 =>2, 12 =>66, 13 =>5, 14 =>34, 15 =>13, 16 =>3, 17 =>33, 18 =>21}'
+generate desc for int
+variable 'yyr1' val 'array [45] of {0 =>0, 1 =>6, 2 =>6, 3 =>17, 4 =>17, 5 =>12, 6 =>12, 7 =>13, 8 =>13, 9 =>9, 10 =>9, 11 =>8, 12 =>8, 13 =>16, 14 =>16, 15 =>15, 16 =>15, 17 =>10, 18 =>10, 19 =>10, 20 =>5, 21 =>5, 22 =>5, 23 =>5, 24 =>7, 25 =>7, 26 =>7, 27 =>1, 28 =>1, 29 =>4, 30 =>4, 31 =>4, 32 =>14, 33 =>14, 34 =>3, 35 =>3, 36 =>3, 37 =>2, 38 =>2, 39 =>11, 40 =>11, 41 =>11, 42 =>11, 43 =>18, 44 =>18}'
+generate desc for int
+variable 'yyr2' val 'array [45] of {0 =>0, 1 =>2, 2 =>2, 3 =>1, 4 =>1, 5 =>1, 6 =>2, 7 =>1, 8 =>2, 9 =>2, 10 =>2, 11 =>1, 12 =>2, 13 =>1, 14 =>3, 15 =>1, 16 =>3, 17 =>0, 18 =>1, 19 =>4, 20 =>1, 21 =>2, 22 =>1, 23 =>1, 24 =>3, 25 =>3, 26 =>2, 27 =>1, 28 =>2, 29 =>1, 30 =>2, 31 =>2, 32 =>1, 33 =>2, 34 =>2, 35 =>3, 36 =>3, 37 =>1, 38 =>4, 39 =>1, 40 =>2, 41 =>3, 42 =>3, 43 =>0, 44 =>2}'
+generate desc for int
+variable 'yystates' val ''
+variable 'yystderr' val ''
+variable 'yysys' val ''
+variable 'yytok1' val 'array [126] of {0 =>1, 1 =>3, 2 =>3, 3 =>3, 4 =>3, 5 =>3, 6 =>3, 7 =>3, 8 =>3, 9 =>3, 10 =>14, 11 =>3, 12 =>3, 13 =>3, 14 =>3, 15 =>3, 16 =>3, 17 =>3, 18 =>3, 19 =>3, 20 =>3, 21 =>3, 22 =>3, 23 =>3, 24 =>3, 25 =>3, 26 =>3, 27 =>3, 28 =>3, 29 =>3, 30 =>3, 31 =>3, 32 =>3, 33 =>3, 34 =>3, 35 =>3, 36 =>3, 37 =>3, 38 =>16, 39 =>3, 40 =>18, 41 =>19, 42 =>3, 43 =>3, 44 =>3, 45 =>3, 46 =>3, 47 =>3, 48 =>3, 49 =>3, 50 =>3, 51 =>3, 52 =>3, 53 =>3, 54 =>3, 55 =>3, 56 =>3, 57 =>3, 58 =>3, 59 =>15, 60 =>3, 61 =>13, 62 =>3, 63 =>3, 64 =>3, 65 =>3, 66 =>3, 67 =>3, 68 =>3, 69 =>3, 70 =>3, 71 =>3, 72 =>3, 73 =>3, 74 =>3, 75 =>3, 76 =>3, 77 =>3, 78 =>3, 79 =>3, 80 =>3, 81 =>3, 82 =>3, 83 =>3, 84 =>3, 85 =>3, 86 =>3, 87 =>3, 88 =>3, 89 =>3, 90 =>3, 91 =>3, 92 =>3, 93 =>3, 94 =>17, 95 =>3, 96 =>3, 97 =>3, 98 =>3, 99 =>3, 100 =>3, 101 =>3, 102 =>3, 103 =>3, 104 =>3, 105 =>3, 106 =>3, 107 =>3, 108 =>3, 109 =>3, 110 =>3, 111 =>3, 112 =>3, 113 =>3, 114 =>3, 115 =>3, 116 =>3, 117 =>3, 118 =>3, 119 =>3, 120 =>3, 121 =>3, 122 =>3, 123 =>20, 124 =>12, 125 =>21}'
+generate desc for int
+variable 'yytok2' val 'array [10] of {0 =>2, 1 =>3, 2 =>4, 3 =>5, 4 =>6, 5 =>7, 6 =>8, 7 =>9, 8 =>10, 9 =>11}'
+generate desc for int
+variable 'yytok3' val 'array [1] of {0 =>0}'
+generate desc for int
+variable 'yytoknames' val ''
+variable '{' val '"{"'
+variable '|' val '"|"'
+variable '}' val '"}"'
+variable '}
+' val '"}\n"'
+nil 'nil' ref 1083
+nil '' ref 28
+generate desc for Sh
+descmap offset 0
+descmap 
+ type string offset 0 (d->offset=0 start=0) returns 0
+descmap   type string offset 8 (d->offset=8 start=0) returns 8
+descmap  	 type string offset 16 (d->offset=16 start=0) returns 16
+descmap  	
+
 type string offset 24 (d->offset=24 start=0) returns 24
+descmap  in glomop type string offset 32 (d->offset=32 start=0) returns 32
+descmap  not found type string offset 40 (d->offset=40 start=0) returns 40
+descmap " type string offset 48 (d->offset=48 start=0) returns 48
+descmap #p/ type string offset 56 (d->offset=56 start=0) returns 56
+descmap $ type string offset 64 (d->offset=64 start=0) returns 64
+descmap $" type string offset 72 (d->offset=72 start=0) returns 72
+descmap $# type string offset 80 (d->offset=80 start=0) returns 80
+descmap $Sys type string offset 88 (d->offset=88 start=0) returns 88
+descmap $self type string offset 96 (d->offset=96 start=0) returns 96
+descmap $self(Sh) type string offset 104 (d->offset=104 start=0) returns 104
+descmap $self(Shellbuiltin) type string offset 112 (d->offset=112 start=0) returns 112
+descmap ${ type string offset 120 (d->offset=120 start=0) returns 120
+descmap ${%s}	%s
+ type string offset 128 (d->offset=128 start=0) returns 128
+descmap ${builtin  type string offset 136 (d->offset=136 start=0) returns 136
+descmap %r type string offset 144 (d->offset=144 start=0) returns 144
+descmap %s type string offset 152 (d->offset=152 start=0) returns 152
+descmap %s	%s
+ type string offset 160 (d->offset=160 start=0) returns 160
+descmap %s
+ type string offset 168 (d->offset=168 start=0) returns 168
+descmap %s: %s type string offset 176 (d->offset=176 start=0) returns 176
+descmap %s: not found
+ type string offset 184 (d->offset=184 start=0) returns 184
+descmap %s:%d: %s type string offset 192 (d->offset=192 start=0) returns 192
+descmap %s=%s
+ type string offset 200 (d->offset=200 start=0) returns 200
+descmap & type string offset 208 (d->offset=208 start=0) returns 208
+descmap ' type string offset 216 (d->offset=216 start=0) returns 216
+descmap ( type string offset 224 (d->offset=224 start=0) returns 224
+descmap ) type string offset 232 (d->offset=232 start=0) returns 232
+descmap * type string offset 240 (d->offset=240 start=0) returns 240
+descmap . type string offset 248 (d->offset=248 start=0) returns 248
+descmap ./ type string offset 256 (d->offset=256 start=0) returns 256
+descmap .B.00000000.       0 type big offset 264 (d->offset=264 start=0) returns -1
+descmap .b.0a type byte offset 272 (d->offset=272 start=0) returns -1
+descmap .b.21 type byte offset 273 (d->offset=273 start=0) returns -1
+descmap .b.23 type byte offset 274 (d->offset=274 start=0) returns -1
+descmap .c0 type case int labels offset 276 (d->offset=276 start=0) returns -1
+descmap .c1 type case int labels offset 356 (d->offset=356 start=0) returns -1
+descmap .c11 type case int labels offset 388 (d->offset=388 start=0) returns -1
+descmap .c12 type case string labels offset 552 (d->offset=552 start=0) returns 664
+descmap .c13 type case string labels offset 688 (d->offset=688 start=0) returns 896
+descmap .c14 type case int labels offset 920 (d->offset=920 start=0) returns -1
+descmap .c15 type case int labels offset 1180 (d->offset=1180 start=0) returns -1
+descmap .c16 type case int labels offset 1212 (d->offset=1212 start=0) returns -1
+descmap .c2 type case int labels offset 1280 (d->offset=1280 start=0) returns -1
+descmap .c4 type case int labels offset 1312 (d->offset=1312 start=0) returns -1
+descmap .c5 type case int labels offset 1356 (d->offset=1356 start=0) returns -1
+descmap .c6 type case string labels offset 1416 (d->offset=1416 start=0) returns 1480
+descmap .c7 type case int labels offset 1504 (d->offset=1504 start=0) returns -1
+descmap .c8 type case int labels offset 1560 (d->offset=1560 start=0) returns -1
+descmap .c9 type case int labels offset 1616 (d->offset=1616 start=0) returns -1
+descmap .dis type string offset 1672 (d->offset=1672 start=0) returns 1672
+descmap .g10 type goto labels offset 1680 (d->offset=1680 start=0) returns -1
+descmap .g17 type goto labels offset 1756 (d->offset=1756 start=0) returns -1
+descmap .g3 type goto labels offset 1932 (d->offset=1932 start=0) returns -1
+descmap .i.7fffffff type int offset 2008 (d->offset=2008 start=0) returns -1
+descmap .i.80000000 type int offset 2012 (d->offset=2012 start=0) returns -1
+descmap / type string offset 2016 (d->offset=2016 start=0) returns 2016
+descmap /dev/cons type string offset 2024 (d->offset=2024 start=0) returns 2024
+descmap /dis type string offset 2032 (d->offset=2032 start=0) returns 2032
+descmap /dis/lib/bufio.dis type string offset 2040 (d->offset=2040 start=0) returns 2040
+descmap /dis/lib/env.dis type string offset 2048 (d->offset=2048 start=0) returns 2048
+descmap /dis/lib/filepat.dis type string offset 2056 (d->offset=2056 start=0) returns 2056
+descmap /dis/lib/string.dis type string offset 2064 (d->offset=2064 start=0) returns 2064
+descmap /dis/sh/ type string offset 2072 (d->offset=2072 start=0) returns 2072
+descmap /fd/ type string offset 2080 (d->offset=2080 start=0) returns 2080
+descmap /lib/sh/profile type string offset 2088 (d->offset=2088 start=0) returns 2088
+descmap /prog/ type string offset 2096 (d->offset=2096 start=0) returns 2096
+descmap /wait type string offset 2104 (d->offset=2104 start=0) returns 2104
+descmap 0 type string offset 2112 (d->offset=2112 start=0) returns 2112
+descmap : parse error:  type string offset 2120 (d->offset=2120 start=0) returns 2120
+descmap := type string offset 2128 (d->offset=2128 start=0) returns 2128
+descmap ; type string offset 2136 (d->offset=2136 start=0) returns 2136
+descmap ;  type string offset 2144 (d->offset=2144 start=0) returns 2144
+descmap < type string offset 2152 (d->offset=2152 start=0) returns 2152
+descmap <> type string offset 2160 (d->offset=2160 start=0) returns 2160
+descmap = type string offset 2168 (d->offset=2168 start=0) returns 2168
+descmap > type string offset 2176 (d->offset=2176 start=0) returns 2176
+descmap >> type string offset 2184 (d->offset=2184 start=0) returns 2184
+descmap @ type string offset 2192 (d->offset=2192 start=0) returns 2192
+descmap [ type string offset 2200 (d->offset=2200 start=0) returns 2200
+descmap ] type string offset 2208 (d->offset=2208 start=0) returns 2208
+descmap ^ type string offset 2216 (d->offset=2216 start=0) returns 2216
+descmap ^
+ 	
|$'#<>;^(){}`&=" type string offset 2224 (d->offset=2224 start=0) returns 2224
+descmap ` type string offset 2232 (d->offset=2232 start=0) returns 2232
+descmap a-zA-Z0-9*_ type string offset 2240 (d->offset=2240 start=0) returns 2240
+descmap and type string offset 2248 (d->offset=2248 start=0) returns 2248
+descmap apid type string offset 2256 (d->offset=2256 start=0) returns 2256
+descmap autoload type string offset 2264 (d->offset=2264 start=0) returns 2264
+descmap bad $ arg type string offset 2272 (d->offset=2272 start=0) returns 2272
+descmap bad assign type string offset 2280 (d->offset=2280 start=0) returns 2280
+descmap bad concatenation type string offset 2288 (d->offset=2288 start=0) returns 2288
+descmap bad header type string offset 2296 (d->offset=2296 start=0) returns 2296
+descmap bad module type string offset 2304 (d->offset=2304 start=0) returns 2304
+descmap bad node type  type string offset 2312 (d->offset=2312 start=0) returns 2312
+descmap bad redir type string offset 2320 (d->offset=2320 start=0) returns 2320
+descmap bad script header on  type string offset 2328 (d->offset=2328 start=0) returns 2328
+descmap bad script path type string offset 2336 (d->offset=2336 start=0) returns 2336
+descmap bad wait read type string offset 2344 (d->offset=2344 start=0) returns 2344
+descmap adt offset 2352
+descmap offset 2352
+descmap adt offset 2352
+descmap offset 2352
+descmap node type ref Node offset 2352 (d->offset=0 start=2352) returns 2352
+descmap word type string offset 2360 (d->offset=8 start=2352) returns 2360
+descmap redir type ref Redir offset 2368 (d->offset=16 start=2352) returns 2368
+descmap optype type int offset 2376 (d->offset=24 start=2352) returns -1
+descmap lval type YYSTYPE offset 2352 (d->offset=0 start=2352) returns 2368
+descmap err type string offset 2384 (d->offset=32 start=2352) returns 2384
+descmap errline type int offset 2392 (d->offset=40 start=2352) returns -1
+descmap path type string offset 2400 (d->offset=48 start=2352) returns 2400
+descmap wasdollar type int offset 2408 (d->offset=56 start=2352) returns -1
+descmap atendword type int offset 2412 (d->offset=60 start=2352) returns -1
+descmap eof type int offset 2416 (d->offset=64 start=2352) returns -1
+descmap cbuf type array of int offset 2424 (d->offset=72 start=2352) returns 2424
+descmap ncbuf type int offset 2432 (d->offset=80 start=2352) returns -1
+descmap f type ref Bufio->Iobuf offset 2440 (d->offset=88 start=2352) returns 2440
+descmap s type string offset 2448 (d->offset=96 start=2352) returns 2448
+descmap strpos type int offset 2456 (d->offset=104 start=2352) returns -1
+descmap linenum type int offset 2460 (d->offset=108 start=2352) returns -1
+descmap prompt type string offset 2464 (d->offset=112 start=2352) returns 2464
+descmap lastnl type int offset 2472 (d->offset=120 start=2352) returns -1
+descmap blanklex type YYLEX offset 2352 (d->offset=2352 start=0) returns 2464
+descmap adt offset 2480
+descmap offset 2480
+descmap lflag type int offset 2480 (d->offset=0 start=2480) returns -1
+descmap nflag type int offset 2484 (d->offset=4 start=2480) returns -1
+descmap ctxtflags type int offset 2488 (d->offset=8 start=2480) returns -1
+descmap carg type string offset 2496 (d->offset=16 start=2480) returns 2496
+descmap blankopts type Options offset 2480 (d->offset=2480 start=0) returns 2496
+descmap bquote type string offset 2504 (d->offset=2504 start=0) returns 2504
+descmap bufio type Bufio offset 2512 (d->offset=2512 start=0) returns 2512
+descmap builtin type string offset 2520 (d->offset=2520 start=0) returns 2520
+descmap builtin %s
+ type string offset 2528 (d->offset=2528 start=0) returns 2528
+descmap builtin command [args ...] type string offset 2536 (d->offset=2536 start=0) returns 2536
+descmap builtin not found type string offset 2544 (d->offset=2544 start=0) returns 2544
+descmap cannot open wait file: %r type string offset 2552 (d->offset=2552 start=0) returns 2552
+descmap directory entry not found type string offset 2560 (d->offset=2560 start=0) returns 2560
+descmap does not exist type string offset 2568 (d->offset=2568 start=0) returns 2568
+descmap empty header on  type string offset 2576 (d->offset=2576 start=0) returns 2576
+descmap env type Env offset 2584 (d->offset=2584 start=0) returns 2584
+descmap error on wait read: %r type string offset 2592 (d->offset=2592 start=0) returns 2592
+descmap exit type string offset 2600 (d->offset=2600 start=0) returns 2600
+descmap fail: type string offset 2608 (d->offset=2608 start=0) returns 2608
+descmap fail:bad module type string offset 2616 (d->offset=2616 start=0) returns 2616
+descmap fail:parse error type string offset 2624 (d->offset=2624 start=0) returns 2624
+descmap fail:usage type string offset 2632 (d->offset=2632 start=0) returns 2632
+descmap fail:write on closed pipe type string offset 2640 (d->offset=2640 start=0) returns 2640
+descmap failed type string offset 2648 (d->offset=2648 start=0) returns 2648
+descmap filepat type Filepat offset 2656 (d->offset=2656 start=0) returns 2656
+descmap ifs type string offset 2664 (d->offset=2664 start=0) returns 2664
+descmap internal type string offset 2672 (d->offset=2672 start=0) returns 2672
+descmap killed type string offset 2680 (d->offset=2680 start=0) returns 2680
+descmap load type string offset 2688 (d->offset=2688 start=0) returns 2688
+descmap load  type string offset 2696 (d->offset=2696 start=0) returns 2696
+descmap load path... type string offset 2704 (d->offset=2704 start=0) returns 2704
+descmap load: cannot load %s: %r type string offset 2712 (d->offset=2712 start=0) returns 2712
+descmap load: module init failed:  type string offset 2720 (d->offset=2720 start=0) returns 2720
+descmap loaded type string offset 2728 (d->offset=2728 start=0) returns 2728
+descmap module %s not found type string offset 2736 (d->offset=2736 start=0) returns 2736
+descmap myself type Sh offset 2744 (d->offset=2744 start=0) returns 2744
+descmap myselfbuiltin type Shellbuiltin offset 2752 (d->offset=2752 start=0) returns 2752
+descmap nil type polymorphic type offset 2760 (d->offset=2760 start=0) returns 2760
+descmap no pipe type string offset 2768 (d->offset=2768 start=0) returns 2768
+descmap not found type string offset 2776 (d->offset=2776 start=0) returns 2776
+descmap or type string offset 2784 (d->offset=2784 start=0) returns 2784
+descmap panic type string offset 2792 (d->offset=2792 start=0) returns 2792
+descmap parse error type string offset 2800 (d->offset=2800 start=0) returns 2800
+descmap path type string offset 2808 (d->offset=2808 start=0) returns 2808
+descmap permission denied type string offset 2816 (d->offset=2816 start=0) returns 2816
+descmap prompt type string offset 2824 (d->offset=2824 start=0) returns 2824
+descmap quote type string offset 2832 (d->offset=2832 start=0) returns 2832
+descmap reopen of waitfd gave same fd (%d) type string offset 2840 (d->offset=2840 start=0) returns 2840
+descmap run type string offset 2848 (d->offset=2848 start=0) returns 2848
+descmap run path type string offset 2856 (d->offset=2856 start=0) returns 2856
+descmap sh panic: %s
+ type string offset 2864 (d->offset=2864 start=0) returns 2864
+descmap sh:  type string offset 2872 (d->offset=2872 start=0) returns 2872
+descmap sh: %s
+ type string offset 2880 (d->offset=2880 start=0) returns 2880
+descmap sh: assignment in invalid context type string offset 2888 (d->offset=2888 start=0) returns 2888
+descmap sh: bad builtin name type string offset 2896 (d->offset=2896 start=0) returns 2896
+descmap sh: bad exit status '%s' type string offset 2904 (d->offset=2904 start=0) returns 2904
+descmap sh: bad redirection type string offset 2912 (d->offset=2912 start=0) returns 2912
+descmap sh: bad variable name type string offset 2920 (d->offset=2920 start=0) returns 2920
+descmap sh: builtin %s not found type string offset 2928 (d->offset=2928 start=0) returns 2928
+descmap sh: cannot dup: %r type string offset 2936 (d->offset=2936 start=0) returns 2936
+descmap sh: cannot load %s: %r
+ type string offset 2944 (d->offset=2944 start=0) returns 2944
+descmap sh: cannot make pipe: %r type string offset 2952 (d->offset=2952 start=0) returns 2952
+descmap sh: cannot open %s: %r type string offset 2960 (d->offset=2960 start=0) returns 2960
+descmap sh: cannot open %s: %s type string offset 2968 (d->offset=2968 start=0) returns 2968
+descmap sh: invalid argument to ${} operator type string offset 2976 (d->offset=2976 start=0) returns 2976
+descmap sh: invalid dup type string offset 2984 (d->offset=2984 start=0) returns 2984
+descmap sh: lists of differing sizes can't be concatenated type string offset 2992 (d->offset=2992 start=0) returns 2992
+descmap sh: nil variable name type string offset 3000 (d->offset=3000 start=0) returns 3000
+descmap sh: null list in concatenation type string offset 3008 (d->offset=3008 start=0) returns 3008
+descmap sh: redirection not allowed in substitution type string offset 3016 (d->offset=3016 start=0) returns 3016
+descmap sh: redirections not allowed in assignment type string offset 3024 (d->offset=3024 start=0) returns 3024
+descmap sh: single redirection operand required type string offset 3032 (d->offset=3032 start=0) returns 3032
+descmap sh: usage:  type string offset 3040 (d->offset=3040 start=0) returns 3040
+descmap status type string offset 3048 (d->offset=3048 start=0) returns 3048
+descmap stdin type string offset 3056 (d->offset=3056 start=0) returns 3056
+descmap str type String offset 3064 (d->offset=3064 start=0) returns 3064
+descmap syncenv type string offset 3072 (d->offset=3072 start=0) returns 3072
+descmap syntax error type string offset 3080 (d->offset=3080 start=0) returns 3080
+descmap syntax error in pipe redirection type string offset 3088 (d->offset=3088 start=0) returns 3088
+descmap syntax error in redirection type string offset 3096 (d->offset=3096 start=0) returns 3096
+descmap sys type Sys offset 3104 (d->offset=3104 start=0) returns 3104
+descmap unbalanced contexts in shell environment type string offset 3112 (d->offset=3112 start=0) returns 3112
+descmap unknown error type string offset 3120 (d->offset=3120 start=0) returns 3120
+descmap unknown%d type string offset 3128 (d->offset=3128 start=0) returns 3128
+descmap unload type string offset 3136 (d->offset=3136 start=0) returns 3136
+descmap unload path... type string offset 3144 (d->offset=3144 start=0) returns 3144
+descmap unquote type string offset 3152 (d->offset=3152 start=0) returns 3152
+descmap unquote arg type string offset 3160 (d->offset=3160 start=0) returns 3160
+descmap unterminated string literal type string offset 3168 (d->offset=3168 start=0) returns 3168
+descmap usage type string offset 3176 (d->offset=3176 start=0) returns 3176
+descmap usage: sh [-ilexn] [-c command] [file [arg...]]
+ type string offset 3184 (d->offset=3184 start=0) returns 3184
+descmap whatis type string offset 3192 (d->offset=3192 start=0) returns 3192
+descmap whatis name ... type string offset 3200 (d->offset=3200 start=0) returns 3200
+descmap write on closed pipe type string offset 3208 (d->offset=3208 start=0) returns 3208
+descmap yyact type array of int offset 3216 (d->offset=3216 start=0) returns 3216
+descmap yychk type array of int offset 3224 (d->offset=3224 start=0) returns 3224
+descmap yydef type array of int offset 3232 (d->offset=3232 start=0) returns 3232
+descmap yyexca type array of int offset 3240 (d->offset=3240 start=0) returns 3240
+descmap yypact type array of int offset 3248 (d->offset=3248 start=0) returns 3248
+descmap yypgo type array of int offset 3256 (d->offset=3256 start=0) returns 3256
+descmap yyr1 type array of int offset 3264 (d->offset=3264 start=0) returns 3264
+descmap yyr2 type array of int offset 3272 (d->offset=3272 start=0) returns 3272
+descmap yystates type array of string offset 3280 (d->offset=3280 start=0) returns 3280
+descmap yystderr type ref YYSys->FD offset 3288 (d->offset=3288 start=0) returns 3288
+descmap yysys type YYSys offset 3296 (d->offset=3296 start=0) returns 3296
+descmap yytok1 type array of int offset 3304 (d->offset=3304 start=0) returns 3304
+descmap yytok2 type array of int offset 3312 (d->offset=3312 start=0) returns 3312
+descmap yytok3 type array of int offset 3320 (d->offset=3320 start=0) returns 3320
+descmap yytoknames type array of string offset 3328 (d->offset=3328 start=0) returns 3328
+descmap { type string offset 3336 (d->offset=3336 start=0) returns 3336
+descmap | type string offset 3344 (d->offset=3344 start=0) returns 3344
+descmap } type string offset 3352 (d->offset=3352 start=0) returns 3352
+descmap }
+ type string offset 3360 (d->offset=3360 start=0) returns 3360
+R2: new 4b9480 7079c8 7f2818
+R2: get 4b9b60 707a88 7f7e08
+R2: set 4ba4c0 707b48 7fa4c8
+R2: setlocal 4bad90 707c08 7fc6f0
+R2: envlist 4bb650 707cc8 7fe5a0
+R2: push 4bc050 707d88 801ae0
+R2: pop 4bc510 707e48 803870
+R2: copy 4bc9d0 707f08 7f3f58
+R2: run 4bd140 707fc8 807700
+R2: addmodule 4bdb40 708088 8043f0
+R2: addbuiltin 4be4c0 708148 80abf0
+R2: removebuiltin 4bec50 708208 80c730
+R2: addsbuiltin 4bf3d0 7082c8 80d838
+R2: removesbuiltin 4bfb58 708388 80cf78
+R2: fail 4c02d8 708448 80e0f8
+R2: options 4c0af8 708508 8128c0
+R2: setoptions 4c1058 7085c8 80fa50
+R1: cmd2string 4b8f00 707908 834648
+R1: getself 4c6dc8 708bc8 84fbc8
+R1: init 4b6d80 7075b8 766930
+R1: initbuiltin 4c4628 7088c8 841ae8
+R1: initialise 4b6b60 7074f8 763c08
+R1: list2stringlist 4c3048 708688 82d078
+R1: parse 4b8580 7077f8 768310
+R1: quoted 4c3e28 708808 87d608
+R1: run 4b7d80 707738 771b48
+R1: runbuiltin 4c5868 708a48 8454e8
+R1: runsbuiltin 4c6328 708b08 842548
+R1: stringlist2list 4c3788 708748 830430
+R1: system 4b74e0 707678 771150
+R1: whatis 4c4e48 708988 845128
+R3: addbuiltin 708148 4be4c0 80abf0
+R3: addmodule 708088 4bdb40 8043f0
+R3: addsbuiltin 7082c8 4bf3d0 80d838
+R3: cmd2string 707908 4b8f00 834648
+R3: copy 707f08 4bc9d0 7f3f58
+R3: envlist 707cc8 4bb650 7fe5a0
+R3: fail 708448 4c02d8 80e0f8
+R3: get 707a88 4b9b60 7f7e08
+R3: getself 708bc8 4c6dc8 84fbc8
+R3: init 7075b8 4b6d80 766930
+R3: initbuiltin 7088c8 4c4628 841ae8
+R3: initialise 7074f8 4b6b60 763c08
+R3: list2stringlist 708688 4c3048 82d078
+R3: new 7079c8 4b9480 7f2818
+R3: options 708508 4c0af8 8128c0
+R3: parse 7077f8 4b8580 768310
+R3: pop 707e48 4bc510 803870
+R3: push 707d88 4bc050 801ae0
+R3: quoted 708808 4c3e28 87d608
+R3: removebuiltin 708208 4bec50 80c730
+R3: removesbuiltin 708388 4bfb58 80cf78
+R3: run 707738 4b7d80 771b48
+R3: run 707fc8 4bd140 807700
+R3: runbuiltin 708a48 4c5868 8454e8
+R3: runsbuiltin 708b08 4c6328 842548
+R3: set 707b48 4ba4c0 7fa4c8
+R3: setlocal 707c08 4bad90 7fc6f0
+R3: setoptions 7085c8 4c1058 80fa50
+R3: stringlist2list 708748 4c3788 830430
+R3: system 707678 4b74e0 771150
+R3: whatis 708988 4c4e48 845128
+5879 instructions
+210 data elements
+121 type descriptors
+31 functions exported
+3840 stack size
+signed Context.addbuiltin type fn(c: self ref Context, name: string, mod: Shellbuiltin) len 1393 sig 0x7304b57
+signed Context.addmodule type fn(c: self ref Context, name: string, mod: Shellbuiltin) len 1393 sig 0x7304b57
+signed Context.addsbuiltin type fn(c: self ref Context, name: string, mod: Shellbuiltin) len 1393 sig 0x7304b57
+signed cmd2string type fn(c: ref Node): string len 71 sig 0x646c6641
+signed Context.copy type fn(c: self ref Context, copyenv: int): ref Context len 1392 sig 0x973848e0
+signed Context.envlist type fn(c: self ref Context): list of (string, list of ref Listnode) len 1390 sig 0xb803442e
+signed Context.fail type fn(c: self ref Context, ename: string, msg: string) len 1392 sig 0x1047d495
+signed Context.get type fn(c: self ref Context, name: string): list of ref Listnode len 1394 sig 0xbc3270e2
+signed getself type fn(): Shellbuiltin len 1381 sig 0x3b72c707
+signed init type fn(ctxt: ref Draw->Context, argv: list of string) len 334 sig 0x4244b354
+signed initbuiltin type fn(c: ref Context, sh: Sh): string len 1390 sig 0x51f91725
+signed initialise type fn() len 4 sig 0x9cd71c5e
+signed list2stringlist type fn(nl: list of ref Listnode): list of string len 88 sig 0x4776e837
+signed Context.new type fn(drawcontext: ref Draw->Context): ref Context len 1417 sig 0x7602fbec
+signed Context.options type fn(c: self ref Context): int len 1388 sig 0xa2dac671
+signed parse type fn(s: string): (ref Node, string) len 76 sig 0x33ce8029
+signed Context.pop type fn(c: self ref Context) len 1388 sig 0x25c9aa1f
+signed Context.push type fn(c: self ref Context) len 1388 sig 0x25c9aa1f
+signed quoted type fn(val: list of ref Listnode, quoteblocks: int): string len 89 sig 0xbcd573b7
+signed Context.removebuiltin type fn(c: self ref Context, name: string, mod: Shellbuiltin) len 1393 sig 0x7304b57
+signed Context.removesbuiltin type fn(c: self ref Context, name: string, mod: Shellbuiltin) len 1393 sig 0x7304b57
+signed run type fn(drawctxt: ref Draw->Context, argv: list of string): string len 334 sig 0x303ddb34
+signed Context.run type fn(c: self ref Context, args: list of ref Listnode, last: int): string len 1396 sig 0x53f0d124
+signed runbuiltin type fn(c: ref Context, sh: Sh, cmd: list of ref Listnode, last: int): string len 1398 sig 0x5694f318
+signed runsbuiltin type fn(c: ref Context, sh: Sh, cmd: list of ref Listnode): list of ref Listnode len 1400 sig 0xf849cd8b
+signed Context.set type fn(c: self ref Context, name: string, val: list of ref Listnode) len 1396 sig 0x368d9849
+signed Context.setlocal type fn(c: self ref Context, name: string, val: list of ref Listnode) len 1396 sig 0x368d9849
+signed Context.setoptions type fn(c: self ref Context, flags: int, on: int): int len 1392 sig 0x660f6009
+signed stringlist2list type fn(sl: list of string): list of ref Listnode len 88 sig 0x4a8f87f
+signed system type fn(drawctxt: ref Draw->Context, cmd: string): string len 333 sig 0xa44fa1e5
+signed whatis type fn(nil: ref Context, nil: Sh, nil: string, nil: int): string len 1394 sig 0x65971166
+signed Bufio->fopen type fn(fd: ref Sys->FD, mode: int): ref Bufio->Iobuf len 90 sig 0x2c386517
+signed Bufio->Iobuf.getc type fn(b: self ref Bufio->Iobuf): int len 87 sig 0xd9e8365b
+signed Command->init type fn(ctxt: ref Draw->Context, argv: list of string) len 334 sig 0x4244b354
+signed Env->clone type fn(): int len 4 sig 0x616977e8
+signed Env->getall type fn(): list of (string, string) len 10 sig 0x99901c60
+signed Env->getenv type fn(var: string): string len 5 sig 0xb2cd7190
+signed Env->setenv type fn(var: string, val: string): int len 7 sig 0x21e337e3
+signed Filepat->expand type fn(pat: string): list of string len 6 sig 0xaf4c19dd
+signed Shellbuiltin->getself type fn(): Shellbuiltin len 1381 sig 0x3b72c707
+signed Shellbuiltin->initbuiltin type fn(c: ref Context, sh: Sh): string len 1390 sig 0x51f91725
+signed Shellbuiltin->runbuiltin type fn(c: ref Context, sh: Sh, cmd: list of ref Listnode, last: int): string len 1398 sig 0x5694f318
+signed Shellbuiltin->runsbuiltin type fn(c: ref Context, sh: Sh, cmd: list of ref Listnode): list of ref Listnode len 1400 sig 0xf849cd8b
+signed Shellbuiltin->whatis type fn(c: ref Context, sh: Sh, name: string, wtype: int): string len 1394 sig 0x65971166
+signed String->in type fn(c: int, cl: string): int len 7 sig 0x75e8db6d
+signed String->unquoted type fn(args: string): list of string len 6 sig 0xaf4c19dd
+signed Sys->create type fn(s: string, mode: int, perm: int): ref Sys->FD len 16 sig 0x54db77d9
+signed Sys->dup type fn(old: int, new: int): int len 7 sig 0x6584767b
+signed Sys->fildes type fn(fd: int): ref Sys->FD len 12 sig 0x1478f993
+signed Sys->fprint type fn(fd: ref Sys->FD, s: string, *): int len 15 sig 0xf46486c8
+signed Sys->fstat type fn(fd: ref Sys->FD): (int, Sys->Dir) len 119 sig 0xda4499c2
+signed Sys->open type fn(s: string, mode: int): ref Sys->FD len 14 sig 0x8f477f99
+signed Sys->pctl type fn(flags: int, movefd: list of int): int len 8 sig 0x5df27fb
+signed Sys->pipe type fn(fds: array of ref Sys->FD): int len 13 sig 0x1f2c52ea
+signed Sys->print type fn(s: string, *): int len 6 sig 0xac849033
+signed Sys->read type fn(fd: ref Sys->FD, buf: array of byte, n: int): int len 17 sig 0x7cfef557
+signed Sys->seek type fn(fd: ref Sys->FD, off: big, start: int): big len 16 sig 0xaeccaddb
+signed Sys->sprint type fn(s: string, *): string len 6 sig 0x4c0624b6
+signed Sys->stat type fn(s: string): (int, Sys->Dir) len 112 sig 0x319328dd
+signed Sys->tokenize type fn(s: string, delim: string): (int, list of string) len 13 sig 0x57338f20
+signed YYSys->fildes type fn(fd: int): ref YYSys->FD len 12 sig 0x1478f993
+signed YYSys->fprint type fn(fd: ref YYSys->FD, s: string, *): int len 15 sig 0xf46486c8
--- /dev/null
+++ b/tests/sh.debug
@@ -1,0 +1,58534 @@
+declare module Sys
+declare module Draw
+declare module Bufio
+declare module BufioFill
+declare module ChanFill
+declare module String
+declare module Filepat
+declare module Env
+declare module Command
+declare module Sh
+declare module Shellbuiltin
+declare module YYSys
+variable 'SELF' val '"$self"'
+variable 'Sys->PATH' val '"$Sys"'
+variable 'Sys->Maxint' val '2147483647'
+variable 'Sys->QTDIR' val '128'
+variable 'Sys->QTAPPEND' val '64'
+variable 'Sys->QTEXCL' val '32'
+variable 'Sys->QTAUTH' val '8'
+variable 'Sys->QTTMP' val '4'
+variable 'Sys->QTFILE' val '0'
+variable 'Sys->nulldir' val 'Dir(nil, nil, nil, nil, (-1, -1, -1), -1, -1, -1, -1, -1, -1)'
+variable 'Sys->zerodir' val 'Dir(nil, nil, nil, nil, (0, 0, 0), 0, 0, 0, 0, 0, 0)'
+variable 'Sys->ATOMICIO' val '8192'
+variable 'Sys->SEEKSTART' val '0'
+variable 'Sys->SEEKRELA' val '1'
+variable 'Sys->SEEKEND' val '2'
+variable 'Sys->NAMEMAX' val '256'
+variable 'Sys->ERRMAX' val '128'
+variable 'Sys->WAITLEN' val '192'
+variable 'Sys->OREAD' val '0'
+variable 'Sys->OWRITE' val '1'
+variable 'Sys->ORDWR' val '2'
+variable 'Sys->OTRUNC' val '16'
+variable 'Sys->ORCLOSE' val '64'
+variable 'Sys->OEXCL' val '4096'
+variable 'Sys->DMDIR' val '-2147483648'
+variable 'Sys->DMAPPEND' val '1073741824'
+variable 'Sys->DMEXCL' val '536870912'
+variable 'Sys->DMAUTH' val '134217728'
+variable 'Sys->DMTMP' val '67108864'
+variable 'Sys->MREPL' val '0'
+variable 'Sys->MBEFORE' val '1'
+variable 'Sys->MAFTER' val '2'
+variable 'Sys->MCREATE' val '4'
+variable 'Sys->MCACHE' val '16'
+variable 'Sys->NEWFD' val '(1)'
+variable 'Sys->FORKFD' val '(2)'
+variable 'Sys->NEWNS' val '(4)'
+variable 'Sys->FORKNS' val '(8)'
+variable 'Sys->NEWPGRP' val '(16)'
+variable 'Sys->NODEVS' val '(32)'
+variable 'Sys->NEWENV' val '(64)'
+variable 'Sys->FORKENV' val '(128)'
+variable 'Sys->EXPWAIT' val '0'
+variable 'Sys->EXPASYNC' val '1'
+variable 'Sys->UTFmax' val '4'
+variable 'Sys->UTFerror' val '65533'
+variable 'Sys->Runemax' val '1114111'
+variable 'Sys->Runemask' val '2097151'
+variable 'Draw->PATH' val '"$Draw"'
+variable 'Draw->Opaque' val '-1'
+variable 'Draw->Transparent' val '0'
+variable 'Draw->Black' val '255'
+variable 'Draw->White' val '-1'
+variable 'Draw->Red' val '-16776961'
+variable 'Draw->Green' val '16711935'
+variable 'Draw->Blue' val '65535'
+variable 'Draw->Cyan' val '16777215'
+variable 'Draw->Magenta' val '-16711681'
+variable 'Draw->Yellow' val '-65281'
+variable 'Draw->Grey' val '-286331137'
+variable 'Draw->Paleyellow' val '-21761'
+variable 'Draw->Darkyellow' val '-286351617'
+variable 'Draw->Darkgreen' val '1149781247'
+variable 'Draw->Palegreen' val '-1426085121'
+variable 'Draw->Medgreen' val '-1999861505'
+variable 'Draw->Darkblue' val '22015'
+variable 'Draw->Palebluegreen' val '-1426063361'
+variable 'Draw->Paleblue' val '48127'
+variable 'Draw->Bluegreen' val '8947967'
+variable 'Draw->Greygreen' val '1437248255'
+variable 'Draw->Palegreygreen' val '-1628508417'
+variable 'Draw->Yellowgreen' val '-1718006529'
+variable 'Draw->Medblue' val '39423'
+variable 'Draw->Greyblue' val '6142975'
+variable 'Draw->Palegreyblue' val '1234427391'
+variable 'Draw->Purpleblue' val '-2004300545'
+variable 'Draw->Notacolor' val '-256'
+variable 'Draw->Nofill' val 'Notacolor'
+variable 'Draw->Endsquare' val '0'
+variable 'Draw->Enddisc' val '1'
+variable 'Draw->Endarrow' val '2'
+variable 'Draw->Flushoff' val '0'
+variable 'Draw->Flushon' val '1'
+variable 'Draw->Flushnow' val '2'
+variable 'Draw->Refbackup' val '0'
+variable 'Draw->Refnone' val '1'
+variable 'Draw->SinD' val '8'
+variable 'Draw->DinS' val '4'
+variable 'Draw->SoutD' val '2'
+variable 'Draw->DoutS' val '1'
+variable 'Draw->S' val '10'
+variable 'Draw->SoverD' val '11'
+variable 'Draw->SatopD' val '9'
+variable 'Draw->SxorD' val '3'
+variable 'Draw->D' val '5'
+variable 'Draw->DoverS' val '7'
+variable 'Draw->DatopS' val '6'
+variable 'Draw->DxorS' val '3'
+variable 'Draw->Clear' val '0'
+variable 'Draw->CRed' val 'iota'
+variable 'Draw->CGreen' val 'iota'
+variable 'Draw->CBlue' val 'iota'
+variable 'Draw->CGrey' val 'iota'
+variable 'Draw->CAlpha' val 'iota'
+variable 'Draw->CMap' val 'iota'
+variable 'Draw->CIgnore' val 'iota'
+variable 'Draw->GREY1' val 'Chans(49)'
+variable 'Draw->GREY2' val 'Chans(50)'
+variable 'Draw->GREY4' val 'Chans(52)'
+variable 'Draw->GREY8' val 'Chans(56)'
+variable 'Draw->CMAP8' val 'Chans(88)'
+variable 'Draw->RGB15' val 'Chans(1627723045)'
+variable 'Draw->RGB16' val 'Chans(333349)'
+variable 'Draw->RGB24' val 'Chans(530472)'
+variable 'Draw->RGBA32' val 'Chans(402663496)'
+variable 'Draw->ARGB32' val 'Chans(1208490024)'
+variable 'Draw->XRGB32' val 'Chans(1745360936)'
+variable 'Bufio->PATH' val '"/dis/lib/b..."'
+variable 'Bufio->SEEKSTART' val 'SEEKSTART'
+variable 'Bufio->SEEKRELA' val 'SEEKRELA'
+variable 'Bufio->SEEKEND' val 'SEEKEND'
+variable 'Bufio->OREAD' val 'OREAD'
+variable 'Bufio->OWRITE' val 'OWRITE'
+variable 'Bufio->ORDWR' val 'ORDWR'
+variable 'Bufio->EOF' val '-1'
+variable 'Bufio->ERROR' val '-2'
+variable 'ChanFill->PATH' val '"/dis/lib/c..."'
+variable 'String->PATH' val '"/dis/lib/s..."'
+variable 'Filepat->PATH' val '"/dis/lib/f..."'
+variable 'Env->PATH' val '"/dis/lib/e..."'
+variable 'Command->PATH' val '"/dis/sh.di..."'
+variable 'PATH' val '"/dis/sh.di..."'
+variable 'Context.INTERACTIVE' val '1'
+variable 'Context.VERBOSE' val '2'
+variable 'Context.EXECPRINT' val '4'
+variable 'Context.ERROREXIT' val '8'
+variable 'Var.CHANGED' val '(1)'
+variable 'Var.NOEXPORT' val '(2)'
+variable 'n_BLOCK' val 'iota'
+variable 'n_VAR' val 'iota'
+variable 'n_BQ' val 'iota'
+variable 'n_BQ2' val 'iota'
+variable 'n_REDIR' val 'iota'
+variable 'n_DUP' val 'iota'
+variable 'n_LIST' val 'iota'
+variable 'n_SEQ' val 'iota'
+variable 'n_CONCAT' val 'iota'
+variable 'n_PIPE' val 'iota'
+variable 'n_ADJ' val 'iota'
+variable 'n_WORD' val 'iota'
+variable 'n_NOWAIT' val 'iota'
+variable 'n_SQUASH' val 'iota'
+variable 'n_COUNT' val 'iota'
+variable 'n_ASSIGN' val 'iota'
+variable 'n_LOCAL' val 'iota'
+variable 'GLOB' val '1'
+variable 'Shellbuiltin->BUILTIN' val 'iota'
+variable 'Shellbuiltin->SBUILTIN' val 'iota'
+variable 'Shellbuiltin->OTHER' val 'iota'
+variable 'YYLEX.EOF' val '-1'
+variable 'DUP' val '57346'
+variable 'REDIR' val '57347'
+variable 'WORD' val '57348'
+variable 'OP' val '57349'
+variable 'END' val '57350'
+variable 'ERROR' val '57351'
+variable 'ANDAND' val '57352'
+variable 'OROR' val '57353'
+variable 'YYEOFCODE' val '1'
+variable 'YYERRCODE' val '2'
+variable 'YYMAXDEPTH' val '200'
+variable 'EPERM' val '"permission..."'
+variable 'EPIPE' val '"write on c..."'
+variable 'LIBSHELLRC' val '"/lib/sh/pr..."'
+variable 'BUILTINPATH' val '"/dis/sh"'
+variable 'DEBUG' val '0'
+variable 'ENVSEP' val '0'
+variable 'ENVHASHSIZE' val '7'
+variable 'OAPPEND' val '524288'
+variable 'OMASK' val '7'
+variable 'NOTOKEN' val '-1'
+generate desc for int
+generate desc for int
+	desc	$-1,4,""
+variable 'YYNPROD' val '45'
+variable 'YYPRIVATE' val '57344'
+variable 'yydebug' val '0'
+variable 'YYLAST' val '93'
+generate desc for int
+generate desc for int
+generate desc for int
+generate desc for int
+generate desc for int
+generate desc for int
+generate desc for int
+generate desc for int
+generate desc for int
+generate desc for int
+variable 'YYFLAG' val '-1000'
+typecheck tree: 
+fn(){} fn() 0 0
+  name usage fn() 0 0
+  seq nothing 0 0
+    call nothing 0 0
+      -> nothing 0 0
+        name sys nothing 0 0
+        name fprint nothing 0 0
+      seq nothing 0 0
+        call nothing 0 0
+          name stderr nothing 0 0
+        seq nothing 0 0
+          const usage: sh [-ilexn] [-c command] [file [arg...]]
+ string 0 0
+    seq nothing 0 0
+      raise nothing 0 0
+        const fail:usage string 0 0
+typecheck tree: 
+fn(){} fn(path: string) 0 0
+  name badmodule fn(path: string) 0 0
+  seq nothing 0 0
+    call nothing 0 0
+      -> nothing 0 0
+        name sys nothing 0 0
+        name fprint nothing 0 0
+      seq nothing 0 0
+        call nothing 0 0
+          -> nothing 0 0
+            name sys nothing 0 0
+            name fildes nothing 0 0
+          seq nothing 0 0
+            const (2) int 0 0
+        seq nothing 0 0
+          const sh: cannot load %s: %r
+ string 0 0
+          seq nothing 0 0
+            name path nothing 0 0
+    seq nothing 0 0
+      raise nothing 0 0
+        const fail:bad module string 0 0
+typecheck tree: 
+fn(){} fn() 0 0
+  name initialise fn() 0 0
+  seq nothing 0 0
+    if nothing 0 0
+      == nothing 0 0
+        name sys nothing 0 0
+        name nil polymorphic type 0 0
+      seq nothing 0 0
+        scope nothing 0 0
+          seq nothing 0 0
+            = nothing 0 0
+              name sys nothing 0 0
+              load Sys 0 0
+                -> nothing 0 0
+                  name Sys nothing 0 0
+                  name PATH nothing 0 0
+            seq nothing 0 0
+              = nothing 0 0
+                name filepat nothing 0 0
+                load Filepat 0 0
+                  -> nothing 0 0
+                    name Filepat nothing 0 0
+                    name PATH nothing 0 0
+              seq nothing 0 0
+                if nothing 0 0
+                  == nothing 0 0
+                    name filepat nothing 0 0
+                    name nil polymorphic type 0 0
+                  seq nothing 0 0
+                    call nothing 0 0
+                      name badmodule nothing 0 0
+                      seq nothing 0 0
+                        -> nothing 0 0
+                          name Filepat nothing 0 0
+                          name PATH nothing 0 0
+                seq nothing 0 0
+                  = nothing 0 0
+                    name str nothing 0 0
+                    load String 0 0
+                      -> nothing 0 0
+                        name String nothing 0 0
+                        name PATH nothing 0 0
+                  seq nothing 0 0
+                    if nothing 0 0
+                      == nothing 0 0
+                        name str nothing 0 0
+                        name nil polymorphic type 0 0
+                      seq nothing 0 0
+                        call nothing 0 0
+                          name badmodule nothing 0 0
+                          seq nothing 0 0
+                            -> nothing 0 0
+                              name String nothing 0 0
+                              name PATH nothing 0 0
+                    seq nothing 0 0
+                      = nothing 0 0
+                        name bufio nothing 0 0
+                        load Bufio 0 0
+                          -> nothing 0 0
+                            name Bufio nothing 0 0
+                            name PATH nothing 0 0
+                      seq nothing 0 0
+                        if nothing 0 0
+                          == nothing 0 0
+                            name bufio nothing 0 0
+                            name nil polymorphic type 0 0
+                          seq nothing 0 0
+                            call nothing 0 0
+                              name badmodule nothing 0 0
+                              seq nothing 0 0
+                                -> nothing 0 0
+                                  name Bufio nothing 0 0
+                                  name PATH nothing 0 0
+                        seq nothing 0 0
+                          = nothing 0 0
+                            name myself nothing 0 0
+                            load Sh 0 0
+                              const $self string 0 0
+                          seq nothing 0 0
+                            if nothing 0 0
+                              == nothing 0 0
+                                name myself nothing 0 0
+                                name nil polymorphic type 0 0
+                              seq nothing 0 0
+                                call nothing 0 0
+                                  name badmodule nothing 0 0
+                                  seq nothing 0 0
+                                    const $self(Sh) string 0 0
+                            seq nothing 0 0
+                              = nothing 0 0
+                                name myselfbuiltin nothing 0 0
+                                load Shellbuiltin 0 0
+                                  const $self string 0 0
+                              seq nothing 0 0
+                                if nothing 0 0
+                                  == nothing 0 0
+                                    name myselfbuiltin nothing 0 0
+                             
+typecheck tree: 
+fn(){} fn(drawcontext: ref Draw->Context, argv: list of string) 0 0
+  name init fn(ctxt: ref Draw->Context, argv: list of string) 0 0
+  seq nothing 0 0
+    call nothing 0 0
+      name initialise nothing 0 0
+    seq nothing 0 0
+      := nothing 0 0
+        name opts nothing 0 0
+        name blankopts nothing 0 0
+      seq nothing 0 0
+        if nothing 0 0
+          != nothing 0 0
+            name argv nothing 0 0
+            name nil polymorphic type 0 0
+          seq nothing 0 0
+            scope nothing 0 0
+              seq nothing 0 0
+                if nothing 0 0
+                  == nothing 0 0
+                    index nothing 0 0
+                      hd nothing 0 0
+                        name argv nothing 0 0
+                      const (0) int 0 0
+                    const (45) int 0 0
+                  seq nothing 0 0
+                    ++ nothing 0 0
+                      . nothing 0 0
+                        name opts nothing 0 0
+                        name lflag nothing 0 0
+                seq nothing 0 0
+                  = nothing 0 0
+                    name argv nothing 0 0
+                    tl nothing 0 0
+                      name argv nothing 0 0
+        seq nothing 0 0
+          := nothing 0 0
+            name interactive nothing 0 0
+            const (0) int 0 0
+          seq nothing 0 0
+            for nothing 0 0
+              && nothing 0 0
+                && nothing 0 0
+                  != nothing 0 0
+                    name argv nothing 0 0
+                    name nil polymorphic type 0 0
+                  != nothing 0 0
+                    hd nothing 0 0
+                      name argv nothing 0 0
+                    name nil polymorphic type 0 0
+                == nothing 0 0
+                  index nothing 0 0
+                    hd nothing 0 0
+                      name argv nothing 0 0
+                    const (0) int 0 0
+                  const (45) int 0 0
+              seq nothing 0 0
+                scope nothing 0 0
+                  seq nothing 0 0
+                    := nothing 0 0
+                      name i nothing 0 0
+                      const (1) int 0 0
+                    seq nothing 0 0
+                      for nothing 0 0
+                        < nothing 0 0
+                          name i nothing 0 0
+                          len nothing 0 0
+                            hd nothing 0 0
+                              name argv nothing 0 0
+                        seq nothing 0 0
+                          scope nothing 0 0
+                            seq nothing 0 0
+                              := nothing 0 0
+                                name c nothing 0 0
+                                index nothing 0 0
+                                  hd nothing 0 0
+                                    name argv nothing 0 0
+                                  name i nothing 0 0
+                              seq nothing 0 0
+                                case nothing 0 0
+                                  name c nothing 0 0
+                                  seq nothing 0 0
+                                    label nothing 0 0
+                                      seq nothing 0 0
+                                        const (105) int 0 0
+                                      scope nothing 0 0
+                                        = nothing 0 0
+                                          name interactive nothing 0 0
+                                          . nothing 0 0
+                                            name Context nothing 0 0
+                                            name INTERACTIVE nothing 0 0
+                                    seq nothing 0 0
+                                      label nothing 0 0
+                                        seq nothing 0 0
+                                          const (108) int 0 0
+                                        scope nothing 0 0
+                                          ++ nothing 0 0
+                                            . nothing 0 0
+                                              name opts nothing 0 0
+      
+typecheck tree: 
+fn(){} fn(s: string): (ref Node, string) 0 0
+  name parse fn(s: string): (ref Node, string) 0 0
+  seq nothing 0 0
+    call nothing 0 0
+      name initialise nothing 0 0
+    seq nothing 0 0
+      := nothing 0 0
+        name lex nothing 0 0
+        call nothing 0 0
+          . nothing 0 0
+            name YYLEX nothing 0 0
+            name initstring nothing 0 0
+          seq nothing 0 0
+            name s nothing 0 0
+      seq nothing 0 0
+        return nothing 0 0
+          call nothing 0 0
+            name doparse nothing 0 0
+            seq nothing 0 0
+              name lex nothing 0 0
+              seq nothing 0 0
+                const  string 0 0
+                seq nothing 0 0
+                  const (0) int 0 0
+typecheck tree: 
+fn(){} fn(drawctxt: ref Draw->Context, cmd: string): string 0 0
+  name system fn(drawctxt: ref Draw->Context, cmd: string): string 0 0
+  seq nothing 0 0
+    call nothing 0 0
+      name initialise nothing 0 0
+    seq nothing 0 0
+      exstat nothing 0 0
+        scope nothing 0 0
+          seq nothing 0 0
+            := nothing 0 0
+              tuple nothing 0 0
+                seq nothing 0 0
+                  name n nothing 0 0
+                  seq nothing 0 0
+                    name err nothing 0 0
+              call nothing 0 0
+                name parse nothing 0 0
+                seq nothing 0 0
+                  name cmd nothing 0 0
+            seq nothing 0 0
+              if nothing 0 0
+                != nothing 0 0
+                  name err nothing 0 0
+                  name nil polymorphic type 0 0
+                seq nothing 0 0
+                  return nothing 0 0
+                    name err nothing 0 0
+              seq nothing 0 0
+                if nothing 0 0
+                  == nothing 0 0
+                    name n nothing 0 0
+                    name nil polymorphic type 0 0
+                  seq nothing 0 0
+                    return nothing 0 0
+                      name nil polymorphic type 0 0
+                seq nothing 0 0
+                  return nothing 0 0
+                    call nothing 0 0
+                      . nothing 0 0
+                        call nothing 0 0
+                          . nothing 0 0
+                            name Context nothing 0 0
+                            name new nothing 0 0
+                          seq nothing 0 0
+                            name drawctxt nothing 0 0
+                        name run nothing 0 0
+                      seq nothing 0 0
+                        :: nothing 0 0
+                          ref nothing 0 0
+                            call nothing 0 0
+                              name Listnode nothing 0 0
+                              seq nothing 0 0
+                                name n nothing 0 0
+                                seq nothing 0 0
+                                  name nil polymorphic type 0 0
+                          name nil polymorphic type 0 0
+                        seq nothing 0 0
+                          const (0) int 0 0
+        except nothing 0 0
+          name e nothing 0 0
+          seq nothing 0 0
+            label nothing 0 0
+              seq nothing 0 0
+                const fail:* string 0 0
+              scope nothing 0 0
+                return nothing 0 0
+                  call nothing 0 0
+                    name failurestatus nothing 0 0
+                    seq nothing 0 0
+                      name e nothing 0 0
+typecheck tree: 
+fn(){} fn(drawctxt: ref Draw->Context, argv: list of string): string 0 0
+  name run fn(drawctxt: ref Draw->Context, argv: list of string): string 0 0
+  seq nothing 0 0
+    call nothing 0 0
+      name initialise nothing 0 0
+    seq nothing 0 0
+      exstat nothing 0 0
+        scope nothing 0 0
+          seq nothing 0 0
+            return nothing 0 0
+              call nothing 0 0
+                . nothing 0 0
+                  call nothing 0 0
+                    . nothing 0 0
+                      name Context nothing 0 0
+                      name new nothing 0 0
+                    seq nothing 0 0
+                      name drawctxt nothing 0 0
+                  name run nothing 0 0
+                seq nothing 0 0
+                  call nothing 0 0
+                    name stringlist2list nothing 0 0
+                    seq nothing 0 0
+                      name argv nothing 0 0
+                  seq nothing 0 0
+                    const (0) int 0 0
+        except nothing 0 0
+          name e nothing 0 0
+          seq nothing 0 0
+            label nothing 0 0
+              seq nothing 0 0
+                const fail:* string 0 0
+              scope nothing 0 0
+                return nothing 0 0
+                  call nothing 0 0
+                    name failurestatus nothing 0 0
+                    seq nothing 0 0
+                      name e nothing 0 0
+typecheck tree: 
+fn(){} fn(fd: ref Sys->FD): int 0 0
+  name isconsole fn(fd: ref Sys->FD): int 0 0
+  seq nothing 0 0
+    := nothing 0 0
+      tuple nothing 0 0
+        seq nothing 0 0
+          name ok1 nothing 0 0
+          seq nothing 0 0
+            name d1 nothing 0 0
+      call nothing 0 0
+        -> nothing 0 0
+          name sys nothing 0 0
+          name fstat nothing 0 0
+        seq nothing 0 0
+          name fd nothing 0 0
+    seq nothing 0 0
+      := nothing 0 0
+        tuple nothing 0 0
+          seq nothing 0 0
+            name ok2 nothing 0 0
+            seq nothing 0 0
+              name d2 nothing 0 0
+        call nothing 0 0
+          -> nothing 0 0
+            name sys nothing 0 0
+            name stat nothing 0 0
+          seq nothing 0 0
+            const /dev/cons string 0 0
+      seq nothing 0 0
+        if nothing 0 0
+          || nothing 0 0
+            < nothing 0 0
+              name ok1 nothing 0 0
+              const (0) int 0 0
+            < nothing 0 0
+              name ok2 nothing 0 0
+              const (0) int 0 0
+          seq nothing 0 0
+            return nothing 0 0
+              const (0) int 0 0
+        seq nothing 0 0
+          return nothing 0 0
+            && nothing 0 0
+              == nothing 0 0
+                . nothing 0 0
+                  name d1 nothing 0 0
+                  name dtype nothing 0 0
+                . nothing 0 0
+                  name d2 nothing 0 0
+                  name dtype nothing 0 0
+              == nothing 0 0
+                . nothing 0 0
+                  . nothing 0 0
+                    name d1 nothing 0 0
+                    name qid nothing 0 0
+                  name path nothing 0 0
+                . nothing 0 0
+                  . nothing 0 0
+                    name d2 nothing 0 0
+                    name qid nothing 0 0
+                  name path nothing 0 0
+typecheck tree: 
+fn(){} fn(ctxt: ref Context, path: string, args: list of ref Listnode, reporterr: int) 0 0
+  name runscript fn(ctxt: ref Context, path: string, args: list of ref Listnode, reporterr: int) 0 0
+  seq nothing 0 0
+    exstat nothing 0 0
+      scope nothing 0 0
+        seq nothing 0 0
+          := nothing 0 0
+            name fd nothing 0 0
+            call nothing 0 0
+              -> nothing 0 0
+                name sys nothing 0 0
+                name open nothing 0 0
+              seq nothing 0 0
+                name path nothing 0 0
+                seq nothing 0 0
+                  -> nothing 0 0
+                    name Sys nothing 0 0
+                    name OREAD nothing 0 0
+          seq nothing 0 0
+            if nothing 0 0
+              != nothing 0 0
+                name fd nothing 0 0
+                name nil polymorphic type 0 0
+              seq nothing 0 0
+                call nothing 0 0
+                  name runfile nothing 0 0
+                  seq nothing 0 0
+                    name ctxt nothing 0 0
+                    seq nothing 0 0
+                      name fd nothing 0 0
+                      seq nothing 0 0
+                        name path nothing 0 0
+                        seq nothing 0 0
+                          name args nothing 0 0
+                if nothing 0 0
+                  name reporterr nothing 0 0
+                  seq nothing 0 0
+                    call nothing 0 0
+                      . nothing 0 0
+                        name ctxt nothing 0 0
+                        name fail nothing 0 0
+                      seq nothing 0 0
+                        const bad script path string 0 0
+                        seq nothing 0 0
+                          call nothing 0 0
+                            -> nothing 0 0
+                              name sys nothing 0 0
+                              name sprint nothing 0 0
+                            seq nothing 0 0
+                              const sh: cannot open %s: %r string 0 0
+                              seq nothing 0 0
+                                name path nothing 0 0
+      except nothing 0 0
+        seq nothing 0 0
+          label nothing 0 0
+            seq nothing 0 0
+              const fail:* string 0 0
+            scope nothing 0 0
+              seq nothing 0 0
+                if nothing 0 0
+                  ! nothing 0 0
+                    name reporterr nothing 0 0
+                  seq nothing 0 0
+                    return nothing 0 0
+                raise nothing 0 0
+                  nothing nothing 0 0
+typecheck tree: 
+fn(){} fn(ctxt: ref Context, fd: ref Sys->FD, path: string, args: list of ref Listnode) 0 0
+  name runfile fn(ctxt: ref Context, fd: ref Sys->FD, path: string, args: list of ref Listnode) 0 0
+  seq nothing 0 0
+    call nothing 0 0
+      . nothing 0 0
+        name ctxt nothing 0 0
+        name push nothing 0 0
+    seq nothing 0 0
+      exstat nothing 0 0
+        scope nothing 0 0
+          seq nothing 0 0
+            call nothing 0 0
+              . nothing 0 0
+                name ctxt nothing 0 0
+                name setlocal nothing 0 0
+              seq nothing 0 0
+                const 0 string 0 0
+                seq nothing 0 0
+                  call nothing 0 0
+                    name stringlist2list nothing 0 0
+                    seq nothing 0 0
+                      :: nothing 0 0
+                        name path nothing 0 0
+                        name nil polymorphic type 0 0
+            seq nothing 0 0
+              call nothing 0 0
+                . nothing 0 0
+                  name ctxt nothing 0 0
+                  name setlocal nothing 0 0
+                seq nothing 0 0
+                  const * string 0 0
+                  seq nothing 0 0
+                    name args nothing 0 0
+              seq nothing 0 0
+                := nothing 0 0
+                  name lex nothing 0 0
+                  call nothing 0 0
+                    . nothing 0 0
+                      name YYLEX nothing 0 0
+                      name initfile nothing 0 0
+                    seq nothing 0 0
+                      name fd nothing 0 0
+                      seq nothing 0 0
+                        name path nothing 0 0
+                seq nothing 0 0
+                  if nothing 0 0
+                    name DEBUG nothing 0 0
+                    seq nothing 0 0
+                      call nothing 0 0
+                        name debug nothing 0 0
+                        seq nothing 0 0
+                          call nothing 0 0
+                            name sprint nothing 0 0
+                            seq nothing 0 0
+                              const parse(interactive == %d) string 0 0
+                              seq nothing 0 0
+                                != nothing 0 0
+                                  & nothing 0 0
+                                    call nothing 0 0
+                                      . nothing 0 0
+                                        name ctxt nothing 0 0
+                                        name options nothing 0 0
+                                    . nothing 0 0
+                                      name ctxt nothing 0 0
+                                      name INTERACTIVE nothing 0 0
+                                  const (0) int 0 0
+                  seq nothing 0 0
+                    := nothing 0 0
+                      name prompt nothing 0 0
+                      :: nothing 0 0
+                        const  string 0 0
+                        :: nothing 0 0
+                          const  string 0 0
+                          name nil polymorphic type 0 0
+                    seq nothing 0 0
+                      vardecl string 0 0
+                        seq nothing 0 0
+                      seq nothing 0 0
+                        for nothing 0 0
+                          ! nothing 0 0
+                            . nothing 0 0
+                              name lex nothing 0 0
+                              name eof nothing 0 0
+                          seq nothing 0 0
+                            scope nothing 0 0
+                              seq nothing 0 0
+                                := nothing 0 0
+                                  name interactive nothing 0 0
+                                  & nothing 0 0
+                                    call nothing 0 0
+                                      . nothing 0 0
+                                        name ctxt nothing 0 0
+                                        name options nothing 0 0
+                                    . nothing 0 0
+                                      name ctxt nothing 0 0
+                    
+typecheck tree: 
+fn(){} fn(e: string): int 0 0
+  name nonexistent fn(e: string): int 0 0
+  seq nothing 0 0
+    := nothing 0 0
+      name errs nothing 0 0
+      array nothing 0 0
+        nothing nothing 0 0
+        seq nothing 0 0
+          elem nothing 0 0
+            const does not exist string 0 0
+          seq nothing 0 0
+            elem nothing 0 0
+              const directory entry not found string 0 0
+    seq nothing 0 0
+      seq nothing 0 0
+        := nothing 0 0
+          name i nothing 0 0
+          const (0) int 0 0
+        for nothing 0 0
+          < nothing 0 0
+            name i nothing 0 0
+            len nothing 0 0
+              name errs nothing 0 0
+          seq nothing 0 0
+            scope nothing 0 0
+              seq nothing 0 0
+                := nothing 0 0
+                  name j nothing 0 0
+                  len nothing 0 0
+                    index nothing 0 0
+                      name errs nothing 0 0
+                      name i nothing 0 0
+                seq nothing 0 0
+                  if nothing 0 0
+                    && nothing 0 0
+                      <= nothing 0 0
+                        name j nothing 0 0
+                        len nothing 0 0
+                          name e nothing 0 0
+                      == nothing 0 0
+                        slice nothing 0 0
+                          name e nothing 0 0
+                          seq nothing 0 0
+                            - nothing 0 0
+                              len nothing 0 0
+                                name e nothing 0 0
+                              name j nothing 0 0
+                            nothing nothing 0 0
+                        index nothing 0 0
+                          name errs nothing 0 0
+                          name i nothing 0 0
+                    seq nothing 0 0
+                      return nothing 0 0
+                        const (1) int 0 0
+            ++ nothing 0 0
+              name i nothing 0 0
+      seq nothing 0 0
+        return nothing 0 0
+          const (0) int 0 0
+typecheck tree: 
+fn(){} fn(n: ref Node): ref Node 0 0
+  name pipe2cmd fn(n: ref Node): ref Node 0 0
+  seq nothing 0 0
+    if nothing 0 0
+      || nothing 0 0
+        == nothing 0 0
+          name n nothing 0 0
+          name nil polymorphic type 0 0
+        != nothing 0 0
+          . nothing 0 0
+            name n nothing 0 0
+            name ntype nothing 0 0
+          name n_PIPE nothing 0 0
+      seq nothing 0 0
+        return nothing 0 0
+          name n nothing 0 0
+    seq nothing 0 0
+      return nothing 0 0
+        call nothing 0 0
+          name mk nothing 0 0
+          seq nothing 0 0
+            name n_ADJ nothing 0 0
+            seq nothing 0 0
+              call nothing 0 0
+                name mk nothing 0 0
+                seq nothing 0 0
+                  name n_BLOCK nothing 0 0
+                  seq nothing 0 0
+                    name n nothing 0 0
+                    seq nothing 0 0
+                      name nil polymorphic type 0 0
+              seq nothing 0 0
+                call nothing 0 0
+                  name mk nothing 0 0
+                  seq nothing 0 0
+                    name n_VAR nothing 0 0
+                    seq nothing 0 0
+                      ref nothing 0 0
+                        call nothing 0 0
+                          name Node nothing 0 0
+                          seq nothing 0 0
+                            name n_WORD nothing 0 0
+                            seq nothing 0 0
+                              name nil polymorphic type 0 0
+                              seq nothing 0 0
+                                name nil polymorphic type 0 0
+                                seq nothing 0 0
+                                  const * string 0 0
+                                  seq nothing 0 0
+                                    name nil polymorphic type 0 0
+                      seq nothing 0 0
+                        name nil polymorphic type 0 0
+typecheck tree: 
+fn(){} fn(ctxt: ref Context, n: ref Node, last: int): string 0 0
+  name walk fn(ctxt: ref Context, n: ref Node, last: int): string 0 0
+  seq nothing 0 0
+    if nothing 0 0
+      name DEBUG nothing 0 0
+      seq nothing 0 0
+        call nothing 0 0
+          name debug nothing 0 0
+          seq nothing 0 0
+            call nothing 0 0
+              name sprint nothing 0 0
+              seq nothing 0 0
+                const walking: %s string 0 0
+                seq nothing 0 0
+                  call nothing 0 0
+                    name cmd2string nothing 0 0
+                    seq nothing 0 0
+                      name n nothing 0 0
+    seq nothing 0 0
+      for nothing 0 0
+        && nothing 0 0
+          != nothing 0 0
+            name n nothing 0 0
+            name nil polymorphic type 0 0
+          == nothing 0 0
+            . nothing 0 0
+              name n nothing 0 0
+              name ntype nothing 0 0
+            name n_SEQ nothing 0 0
+        seq nothing 0 0
+          scope nothing 0 0
+            seq nothing 0 0
+              := nothing 0 0
+                name status nothing 0 0
+                call nothing 0 0
+                  name walk nothing 0 0
+                  seq nothing 0 0
+                    name ctxt nothing 0 0
+                    seq nothing 0 0
+                      . nothing 0 0
+                        name n nothing 0 0
+                        name left nothing 0 0
+                      seq nothing 0 0
+                        const (0) int 0 0
+              seq nothing 0 0
+                if nothing 0 0
+                  && nothing 0 0
+                    & nothing 0 0
+                      call nothing 0 0
+                        . nothing 0 0
+                          name ctxt nothing 0 0
+                          name options nothing 0 0
+                      . nothing 0 0
+                        name ctxt nothing 0 0
+                        name ERROREXIT nothing 0 0
+                    != nothing 0 0
+                      name status nothing 0 0
+                      name nil polymorphic type 0 0
+                  seq nothing 0 0
+                    raise nothing 0 0
+                      + nothing 0 0
+                        const fail: string 0 0
+                        name status nothing 0 0
+                seq nothing 0 0
+                  call nothing 0 0
+                    name setstatus nothing 0 0
+                    seq nothing 0 0
+                      name ctxt nothing 0 0
+                      seq nothing 0 0
+                        name status nothing 0 0
+                  seq nothing 0 0
+                    = nothing 0 0
+                      name n nothing 0 0
+                      . nothing 0 0
+                        name n nothing 0 0
+                        name right nothing 0 0
+      seq nothing 0 0
+        if nothing 0 0
+          == nothing 0 0
+            name n nothing 0 0
+            name nil polymorphic type 0 0
+          seq nothing 0 0
+            return nothing 0 0
+              name nil polymorphic type 0 0
+        seq nothing 0 0
+          case nothing 0 0
+            . nothing 0 0
+              name n nothing 0 0
+              name ntype nothing 0 0
+            seq nothing 0 0
+              label nothing 0 0
+                seq nothing 0 0
+                  name n_PIPE nothing 0 0
+                scope nothing 0 0
+                  return nothing 0 0
+                    call nothing 0 0
+                      name waitfor nothing 0 0
+                      seq nothing 0 0
+                        name ctxt nothing 0 0
+                        seq nothing 0 0
+                          call nothing 0 0
+                            name walkpipeline nothing 0 0
+                            seq nothing 0 0
+                              name ctxt nothing 0 0
+                              seq nothing 0 0
+                                name n nothing 0 0
+                                seq nothing 0 0
+                                  name nil polymorphic type 0 0
+                                  seq nothing 0 0
+                                    - nothing 0
+typecheck tree: 
+fn(){} fn(ctxt: ref Context, n: ref Node): list of ref Listnode 0 0
+  name assign fn(ctxt: ref Context, n: ref Node): list of ref Listnode 0 0
+  seq nothing 0 0
+    := nothing 0 0
+      name redirs nothing 0 0
+      ref nothing 0 0
+        name Redirlist nothing 0 0
+    seq nothing 0 0
+      vardecl list of ref Listnode 0 0
+        seq nothing 0 0
+      seq nothing 0 0
+        if nothing 0 0
+          && nothing 0 0
+            != nothing 0 0
+              . nothing 0 0
+                name n nothing 0 0
+                name right nothing 0 0
+              name nil polymorphic type 0 0
+            || nothing 0 0
+              == nothing 0 0
+                . nothing 0 0
+                  . nothing 0 0
+                    name n nothing 0 0
+                    name right nothing 0 0
+                  name ntype nothing 0 0
+                name n_ASSIGN nothing 0 0
+              == nothing 0 0
+                . nothing 0 0
+                  . nothing 0 0
+                    name n nothing 0 0
+                    name right nothing 0 0
+                  name ntype nothing 0 0
+                name n_LOCAL nothing 0 0
+          seq nothing 0 0
+            = nothing 0 0
+              name val nothing 0 0
+              call nothing 0 0
+                name assign nothing 0 0
+                seq nothing 0 0
+                  name ctxt nothing 0 0
+                  seq nothing 0 0
+                    . nothing 0 0
+                      name n nothing 0 0
+                      name right nothing 0 0
+            = nothing 0 0
+              name val nothing 0 0
+              call nothing 0 0
+                name glob nothing 0 0
+                seq nothing 0 0
+                  call nothing 0 0
+                    name glom nothing 0 0
+                    seq nothing 0 0
+                      name ctxt nothing 0 0
+                      seq nothing 0 0
+                        . nothing 0 0
+                          name n nothing 0 0
+                          name right nothing 0 0
+                        seq nothing 0 0
+                          name redirs nothing 0 0
+                          seq nothing 0 0
+                            name nil polymorphic type 0 0
+        seq nothing 0 0
+          := nothing 0 0
+            name vars nothing 0 0
+            call nothing 0 0
+              name glom nothing 0 0
+              seq nothing 0 0
+                name ctxt nothing 0 0
+                seq nothing 0 0
+                  . nothing 0 0
+                    name n nothing 0 0
+                    name left nothing 0 0
+                  seq nothing 0 0
+                    name redirs nothing 0 0
+                    seq nothing 0 0
+                      name nil polymorphic type 0 0
+          seq nothing 0 0
+            if nothing 0 0
+              == nothing 0 0
+                name vars nothing 0 0
+                name nil polymorphic type 0 0
+              seq nothing 0 0
+                call nothing 0 0
+                  . nothing 0 0
+                    name ctxt nothing 0 0
+                    name fail nothing 0 0
+                  seq nothing 0 0
+                    const bad assign string 0 0
+                    seq nothing 0 0
+                      const sh: nil variable name string 0 0
+            seq nothing 0 0
+              if nothing 0 0
+                != nothing 0 0
+                  . nothing 0 0
+                    name redirs nothing 0 0
+                    name r nothing 0 0
+                  name nil polymorphic type 0 0
+                seq nothing 0 0
+                  call nothing 0 0
+                    . nothing 0 0
+                      name ctxt nothing 0 0
+                      name fail nothing 0 0
+                    seq nothing 0 0
+                      const bad assign string 0 0
+                      seq nothing 0 0
+                        const sh: redirections not allowed in assignment string 0 0
+              seq nothing 0 0
+                := nothing 0 0
+                  name tval nothing 0 0
+                  name val nothing 0 0
+                seq nothing 0 0
+                  for nothing
+typecheck tree: 
+fn(){} fn(ctxt: ref Context, n: ref Node, wrpipe: ref Sys->FD, wfdno: int): list of int 0 0
+  name walkpipeline fn(ctxt: ref Context, n: ref Node, wrpipe: ref Sys->FD, wfdno: int): list of int 0 0
+  seq nothing 0 0
+    if nothing 0 0
+      == nothing 0 0
+        name n nothing 0 0
+        name nil polymorphic type 0 0
+      seq nothing 0 0
+        return nothing 0 0
+          name nil polymorphic type 0 0
+    seq nothing 0 0
+      := nothing 0 0
+        name fds nothing 0 0
+        array array of ref Sys->FD 0 0
+          const (2) int 0 0
+      seq nothing 0 0
+        vardecl list of int 0 0
+          seq nothing 0 0
+        seq nothing 0 0
+          := nothing 0 0
+            name rfdno nothing 0 0
+            - nothing 0 0
+              const (1) int 0 0
+          seq nothing 0 0
+            if nothing 0 0
+              == nothing 0 0
+                . nothing 0 0
+                  name n nothing 0 0
+                  name ntype nothing 0 0
+                name n_PIPE nothing 0 0
+              seq nothing 0 0
+                scope nothing 0 0
+                  seq nothing 0 0
+                    if nothing 0 0
+                      == nothing 0 0
+                        call nothing 0 0
+                          -> nothing 0 0
+                            name sys nothing 0 0
+                            name pipe nothing 0 0
+                          seq nothing 0 0
+                            name fds nothing 0 0
+                        - nothing 0 0
+                          const (1) int 0 0
+                      seq nothing 0 0
+                        call nothing 0 0
+                          . nothing 0 0
+                            name ctxt nothing 0 0
+                            name fail nothing 0 0
+                          seq nothing 0 0
+                            const no pipe string 0 0
+                            seq nothing 0 0
+                              call nothing 0 0
+                                -> nothing 0 0
+                                  name sys nothing 0 0
+                                  name sprint nothing 0 0
+                                seq nothing 0 0
+                                  const sh: cannot make pipe: %r string 0 0
+                    seq nothing 0 0
+                      := nothing 0 0
+                        name nwfdno nothing 0 0
+                        - nothing 0 0
+                          const (1) int 0 0
+                      seq nothing 0 0
+                        if nothing 0 0
+                          != nothing 0 0
+                            . nothing 0 0
+                              name n nothing 0 0
+                              name redir nothing 0 0
+                            name nil polymorphic type 0 0
+                          seq nothing 0 0
+                            scope nothing 0 0
+                              seq nothing 0 0
+                                := nothing 0 0
+                                  tuple nothing 0 0
+                                    seq nothing 0 0
+                                      name fd1 nothing 0 0
+                                      seq nothing 0 0
+                                        name fd2 nothing 0 0
+                                  tuple nothing 0 0
+                                    seq nothing 0 0
+                                      . nothing 0 0
+                                        . nothing 0 0
+                                          name n nothing 0 0
+                                          name redir nothing 0 0
+                                        name fd2 nothing 0 0
+                                      seq nothing 0 0
+                                        . nothing 0 0
+                                          . nothing 0 0
+                                            name n nothing 0 0
+                                            name redir nothing 0 0
+                                          name fd1 nothing 0 0
+                                seq nothing 0 0
+                                  if nothing 0 0
+                                    == nothing 0 0
+typecheck tree: 
+fn(){} fn(f: string, mode: int, fd: int): Redirword 0 0
+  name makeredir fn(f: string, mode: int, fd: int): Redirword 0 0
+  seq nothing 0 0
+    return nothing 0 0
+      call nothing 0 0
+        name Redirword nothing 0 0
+        seq nothing 0 0
+          name nil polymorphic type 0 0
+          seq nothing 0 0
+            name f nothing 0 0
+            seq nothing 0 0
+              call nothing 0 0
+                name Redir nothing 0 0
+                seq nothing 0 0
+                  name mode nothing 0 0
+                  seq nothing 0 0
+                    name fd nothing 0 0
+                    seq nothing 0 0
+                      - nothing 0 0
+                        const (1) int 0 0
+typecheck tree: 
+fn(){} fn(ctxt: ref Context, n: ref Node, redirs: ref Redirlist, onto: list of ref Listnode): list of ref Listnode 0 0
+  name glom fn(ctxt: ref Context, n: ref Node, redirs: ref Redirlist, onto: list of ref Listnode): list of ref Listnode 0 0
+  seq nothing 0 0
+    if nothing 0 0
+      == nothing 0 0
+        name n nothing 0 0
+        name nil polymorphic type 0 0
+      seq nothing 0 0
+        return nothing 0 0
+          name nil polymorphic type 0 0
+    seq nothing 0 0
+      if nothing 0 0
+        != nothing 0 0
+          . nothing 0 0
+            name n nothing 0 0
+            name ntype nothing 0 0
+          name n_ADJ nothing 0 0
+        seq nothing 0 0
+          return nothing 0 0
+            call nothing 0 0
+              name listjoin nothing 0 0
+              seq nothing 0 0
+                call nothing 0 0
+                  name glomoperation nothing 0 0
+                  seq nothing 0 0
+                    name ctxt nothing 0 0
+                    seq nothing 0 0
+                      name n nothing 0 0
+                      seq nothing 0 0
+                        name redirs nothing 0 0
+                seq nothing 0 0
+                  name onto nothing 0 0
+      seq nothing 0 0
+        := nothing 0 0
+          name nlist nothing 0 0
+          call nothing 0 0
+            name glom nothing 0 0
+            seq nothing 0 0
+              name ctxt nothing 0 0
+              seq nothing 0 0
+                . nothing 0 0
+                  name n nothing 0 0
+                  name right nothing 0 0
+                seq nothing 0 0
+                  name redirs nothing 0 0
+                  seq nothing 0 0
+                    name onto nothing 0 0
+        seq nothing 0 0
+          if nothing 0 0
+            != nothing 0 0
+              . nothing 0 0
+                . nothing 0 0
+                  name n nothing 0 0
+                  name left nothing 0 0
+                name ntype nothing 0 0
+              name n_ADJ nothing 0 0
+            seq nothing 0 0
+              scope nothing 0 0
+                seq nothing 0 0
+                  = nothing 0 0
+                    name nlist nothing 0 0
+                    call nothing 0 0
+                      name listjoin nothing 0 0
+                      seq nothing 0 0
+                        call nothing 0 0
+                          name glomoperation nothing 0 0
+                          seq nothing 0 0
+                            name ctxt nothing 0 0
+                            seq nothing 0 0
+                              . nothing 0 0
+                                name n nothing 0 0
+                                name left nothing 0 0
+                              seq nothing 0 0
+                                name redirs nothing 0 0
+                        seq nothing 0 0
+                          name nlist nothing 0 0
+              = nothing 0 0
+                name nlist nothing 0 0
+                call nothing 0 0
+                  name glom nothing 0 0
+                  seq nothing 0 0
+                    name ctxt nothing 0 0
+                    seq nothing 0 0
+                      . nothing 0 0
+                        name n nothing 0 0
+                        name left nothing 0 0
+                      seq nothing 0 0
+                        name redirs nothing 0 0
+                        seq nothing 0 0
+                          name nlist nothing 0 0
+          seq nothing 0 0
+            return nothing 0 0
+              name nlist nothing 0 0
+typecheck tree: 
+fn(){} fn(left: list of ref Listnode, right: list of ref Listnode): list of ref Listnode 0 0
+  name listjoin fn(left: list of ref Listnode, right: list of ref Listnode): list of ref Listnode 0 0
+  seq nothing 0 0
+    vardecl list of ref Listnode 0 0
+      seq nothing 0 0
+    seq nothing 0 0
+      for nothing 0 0
+        != nothing 0 0
+          name left nothing 0 0
+          name nil polymorphic type 0 0
+        seq nothing 0 0
+          = nothing 0 0
+            name l nothing 0 0
+            :: nothing 0 0
+              hd nothing 0 0
+                name left nothing 0 0
+              name l nothing 0 0
+          = nothing 0 0
+            name left nothing 0 0
+            tl nothing 0 0
+              name left nothing 0 0
+      seq nothing 0 0
+        for nothing 0 0
+          != nothing 0 0
+            name l nothing 0 0
+            name nil polymorphic type 0 0
+          seq nothing 0 0
+            = nothing 0 0
+              name right nothing 0 0
+              :: nothing 0 0
+                hd nothing 0 0
+                  name l nothing 0 0
+                name right nothing 0 0
+            = nothing 0 0
+              name l nothing 0 0
+              tl nothing 0 0
+                name l nothing 0 0
+        seq nothing 0 0
+          return nothing 0 0
+            name right nothing 0 0
+typecheck tree: 
+fn(){} fn(ctxt: ref Context, cmd: list of ref Listnode, redir: ref Redir): ref Sys->FD 0 0
+  name pipecmd fn(ctxt: ref Context, cmd: list of ref Listnode, redir: ref Redir): ref Sys->FD 0 0
+  seq nothing 0 0
+    if nothing 0 0
+      || nothing 0 0
+        != nothing 0 0
+          . nothing 0 0
+            name redir nothing 0 0
+            name fd2 nothing 0 0
+          - nothing 0 0
+            const (1) int 0 0
+        & nothing 0 0
+          . nothing 0 0
+            name redir nothing 0 0
+            name rtype nothing 0 0
+          name OAPPEND nothing 0 0
+      seq nothing 0 0
+        call nothing 0 0
+          . nothing 0 0
+            name ctxt nothing 0 0
+            name fail nothing 0 0
+          seq nothing 0 0
+            const bad redir string 0 0
+            seq nothing 0 0
+              const sh: bad redirection string 0 0
+    seq nothing 0 0
+      := nothing 0 0
+        name r nothing 0 0
+        * nothing 0 0
+          name redir nothing 0 0
+      seq nothing 0 0
+        case nothing 0 0
+          . nothing 0 0
+            name redir nothing 0 0
+            name rtype nothing 0 0
+          seq nothing 0 0
+            label nothing 0 0
+              seq nothing 0 0
+                -> nothing 0 0
+                  name Sys nothing 0 0
+                  name OREAD nothing 0 0
+              scope nothing 0 0
+                = nothing 0 0
+                  . nothing 0 0
+                    name r nothing 0 0
+                    name rtype nothing 0 0
+                  -> nothing 0 0
+                    name Sys nothing 0 0
+                    name OWRITE nothing 0 0
+            seq nothing 0 0
+              label nothing 0 0
+                seq nothing 0 0
+                  -> nothing 0 0
+                    name Sys nothing 0 0
+                    name OWRITE nothing 0 0
+                scope nothing 0 0
+                  = nothing 0 0
+                    . nothing 0 0
+                      name r nothing 0 0
+                      name rtype nothing 0 0
+                    -> nothing 0 0
+                      name Sys nothing 0 0
+                      name OREAD nothing 0 0
+        seq nothing 0 0
+          := nothing 0 0
+            name p nothing 0 0
+            array array of ref Sys->FD 0 0
+              const (2) int 0 0
+          seq nothing 0 0
+            if nothing 0 0
+              == nothing 0 0
+                call nothing 0 0
+                  -> nothing 0 0
+                    name sys nothing 0 0
+                    name pipe nothing 0 0
+                  seq nothing 0 0
+                    name p nothing 0 0
+                - nothing 0 0
+                  const (1) int 0 0
+              seq nothing 0 0
+                call nothing 0 0
+                  . nothing 0 0
+                    name ctxt nothing 0 0
+                    name fail nothing 0 0
+                  seq nothing 0 0
+                    const no pipe string 0 0
+                    seq nothing 0 0
+                      call nothing 0 0
+                        -> nothing 0 0
+                          name sys nothing 0 0
+                          name sprint nothing 0 0
+                        seq nothing 0 0
+                          const sh: cannot make pipe: %r string 0 0
+            seq nothing 0 0
+              := nothing 0 0
+                name startchan nothing 0 0
+                chan chan of (int, ref Expropagate) 0 0
+              seq nothing 0 0
+                spawn nothing 0 0
+                  call nothing 0 0
+                    name runasync nothing 0 0
+                    seq nothing 0 0
+                      name ctxt nothing 0 0
+                      seq nothing 0 0
+                        const (1) int 0 0
+                        seq nothing 0 0
+                          name cmd nothing 0 0
+                          seq nothing 0 0
+                            ref nothing 0 0
+                              call nothing 0 0
+                                name Redirlist nothing 0 0
+                                seq nothing 0 0
+                                  :: nothing 0 0
+                              
+typecheck tree: 
+fn(){} fn(ctxt: ref Context, n: ref Node, redirs: ref Redirlist): list of ref Listnode 0 0
+  name glomoperation fn(ctxt: ref Context, n: ref Node, redirs: ref Redirlist): list of ref Listnode 0 0
+  seq nothing 0 0
+    if nothing 0 0
+      == nothing 0 0
+        name n nothing 0 0
+        name nil polymorphic type 0 0
+      seq nothing 0 0
+        return nothing 0 0
+          name nil polymorphic type 0 0
+    seq nothing 0 0
+      vardecl list of ref Listnode 0 0
+        seq nothing 0 0
+      seq nothing 0 0
+        case nothing 0 0
+          . nothing 0 0
+            name n nothing 0 0
+            name ntype nothing 0 0
+          seq nothing 0 0
+            label nothing 0 0
+              seq nothing 0 0
+                name n_WORD nothing 0 0
+              scope nothing 0 0
+                = nothing 0 0
+                  name nlist nothing 0 0
+                  :: nothing 0 0
+                    ref nothing 0 0
+                      call nothing 0 0
+                        name Listnode nothing 0 0
+                        seq nothing 0 0
+                          name nil polymorphic type 0 0
+                          seq nothing 0 0
+                            . nothing 0 0
+                              name n nothing 0 0
+                              name word nothing 0 0
+                    name nil polymorphic type 0 0
+            seq nothing 0 0
+              label nothing 0 0
+                seq nothing 0 0
+                  name n_REDIR nothing 0 0
+                scope nothing 0 0
+                  seq nothing 0 0
+                    seq nothing 0 0
+                      := nothing 0 0
+                        name wlist nothing 0 0
+                        call nothing 0 0
+                          name glob nothing 0 0
+                          seq nothing 0 0
+                            call nothing 0 0
+                              name glom nothing 0 0
+                              seq nothing 0 0
+                                name ctxt nothing 0 0
+                                seq nothing 0 0
+                                  . nothing 0 0
+                                    name n nothing 0 0
+                                    name left nothing 0 0
+                                  seq nothing 0 0
+                                    ref nothing 0 0
+                                      call nothing 0 0
+                                        name Redirlist nothing 0 0
+                                        seq nothing 0 0
+                                          name nil polymorphic type 0 0
+                                    seq nothing 0 0
+                                      name nil polymorphic type 0 0
+                      if nothing 0 0
+                        != nothing 0 0
+                          len nothing 0 0
+                            name wlist nothing 0 0
+                          const (1) int 0 0
+                        seq nothing 0 0
+                          call nothing 0 0
+                            . nothing 0 0
+                              name ctxt nothing 0 0
+                              name fail nothing 0 0
+                            seq nothing 0 0
+                              const bad redir string 0 0
+                              seq nothing 0 0
+                                const sh: single redirection operand required string 0 0
+                    if nothing 0 0
+                      != nothing 0 0
+                        . nothing 0 0
+                          hd nothing 0 0
+                            name wlist nothing 0 0
+                          name cmd nothing 0 0
+                        name nil polymorphic type 0 0
+                      seq nothing 0 0
+                        scope nothing 0 0
+                          seq nothing 0 0
+                            := nothing 0 0
+                              name fd nothing 0 0
+                              call nothing 0 0
+                                name pipecmd nothing 0 0
+                                seq nothing 0 0
+                                  name ctxt nothing 0 0
+            
+typecheck tree: 
+fn(){} fn(ctxt: ref Context, n: ref Node): list of ref Listnode 0 0
+  name subsbuiltin fn(ctxt: ref Context, n: ref Node): list of ref Listnode 0 0
+  seq nothing 0 0
+    if nothing 0 0
+      || nothing 0 0
+        || nothing 0 0
+          || nothing 0 0
+            == nothing 0 0
+              name n nothing 0 0
+              name nil polymorphic type 0 0
+            == nothing 0 0
+              . nothing 0 0
+                name n nothing 0 0
+                name ntype nothing 0 0
+              name n_SEQ nothing 0 0
+          == nothing 0 0
+            . nothing 0 0
+              name n nothing 0 0
+              name ntype nothing 0 0
+            name n_PIPE nothing 0 0
+        == nothing 0 0
+          . nothing 0 0
+            name n nothing 0 0
+            name ntype nothing 0 0
+          name n_NOWAIT nothing 0 0
+      seq nothing 0 0
+        call nothing 0 0
+          . nothing 0 0
+            name ctxt nothing 0 0
+            name fail nothing 0 0
+          seq nothing 0 0
+            const bad $ arg string 0 0
+            seq nothing 0 0
+              const sh: invalid argument to ${} operator string 0 0
+    seq nothing 0 0
+      := nothing 0 0
+        name r nothing 0 0
+        ref nothing 0 0
+          name Redirlist nothing 0 0
+      seq nothing 0 0
+        := nothing 0 0
+          name cmd nothing 0 0
+          call nothing 0 0
+            name glob nothing 0 0
+            seq nothing 0 0
+              call nothing 0 0
+                name glom nothing 0 0
+                seq nothing 0 0
+                  name ctxt nothing 0 0
+                  seq nothing 0 0
+                    name n nothing 0 0
+                    seq nothing 0 0
+                      name r nothing 0 0
+                      seq nothing 0 0
+                        name nil polymorphic type 0 0
+        seq nothing 0 0
+          if nothing 0 0
+            != nothing 0 0
+              . nothing 0 0
+                name r nothing 0 0
+                name r nothing 0 0
+              name nil polymorphic type 0 0
+            seq nothing 0 0
+              call nothing 0 0
+                . nothing 0 0
+                  name ctxt nothing 0 0
+                  name fail nothing 0 0
+                seq nothing 0 0
+                  const bad $ arg string 0 0
+                  seq nothing 0 0
+                    const sh: redirection not allowed in substitution string 0 0
+          seq nothing 0 0
+            = nothing 0 0
+              name r nothing 0 0
+              name nil polymorphic type 0 0
+            seq nothing 0 0
+              if nothing 0 0
+                || nothing 0 0
+                  || nothing 0 0
+                    == nothing 0 0
+                      name cmd nothing 0 0
+                      name nil polymorphic type 0 0
+                    == nothing 0 0
+                      . nothing 0 0
+                        hd nothing 0 0
+                          name cmd nothing 0 0
+                        name word nothing 0 0
+                      name nil polymorphic type 0 0
+                  != nothing 0 0
+                    . nothing 0 0
+                      hd nothing 0 0
+                        name cmd nothing 0 0
+                      name cmd nothing 0 0
+                    name nil polymorphic type 0 0
+                seq nothing 0 0
+                  call nothing 0 0
+                    . nothing 0 0
+                      name ctxt nothing 0 0
+                      name fail nothing 0 0
+                    seq nothing 0 0
+                      const bad $ arg string 0 0
+                      seq nothing 0 0
+                        const sh: bad builtin name string 0 0
+              seq nothing 0 0
+                := nothing 0 0
+                  tuple nothing 0 0
+                    seq nothing 0 0
+                      name nil polymorphic type 0 0
+                      seq nothing 0 0
+                        name bmods nothing 0 0
+                  call nothing 0 0
+                    name findbuiltin nothing 0 0
+                    seq nothing 0 0
+                      . nothing 0 0
+                        . nothi
+typecheck tree: 
+fn(){} fn(nil: ref Context, fd: ref Sys->FD, seps: string): list of ref Listnode 0 0
+  name getbq fn(nil: ref Context, fd: ref Sys->FD, seps: string): list of ref Listnode 0 0
+  seq nothing 0 0
+    := nothing 0 0
+      name buf nothing 0 0
+      array array of byte 0 0
+        -> nothing 0 0
+          name Sys nothing 0 0
+          name ATOMICIO nothing 0 0
+    seq nothing 0 0
+      := nothing 0 0
+        name buflen nothing 0 0
+        const (0) int 0 0
+      seq nothing 0 0
+        for nothing 0 0
+          > nothing 0 0
+            := nothing 0 0
+              name n nothing 0 0
+              call nothing 0 0
+                -> nothing 0 0
+                  name sys nothing 0 0
+                  name read nothing 0 0
+                seq nothing 0 0
+                  name fd nothing 0 0
+                  seq nothing 0 0
+                    slice nothing 0 0
+                      name buf nothing 0 0
+                      seq nothing 0 0
+                        name buflen nothing 0 0
+                        nothing nothing 0 0
+                    seq nothing 0 0
+                      - nothing 0 0
+                        len nothing 0 0
+                          name buf nothing 0 0
+                        name buflen nothing 0 0
+            const (0) int 0 0
+          seq nothing 0 0
+            scope nothing 0 0
+              seq nothing 0 0
+                += nothing 0 0
+                  name buflen nothing 0 0
+                  name n nothing 0 0
+                seq nothing 0 0
+                  if nothing 0 0
+                    == nothing 0 0
+                      name buflen nothing 0 0
+                      len nothing 0 0
+                        name buf nothing 0 0
+                    seq nothing 0 0
+                      scope nothing 0 0
+                        seq nothing 0 0
+                          := nothing 0 0
+                            name nbuf nothing 0 0
+                            array array of byte 0 0
+                              * nothing 0 0
+                                name buflen nothing 0 0
+                                const (2) int 0 0
+                          seq nothing 0 0
+                            = nothing 0 0
+                              slice nothing 0 0
+                                name nbuf nothing 0 0
+                                seq nothing 0 0
+                                  const (0) int 0 0
+                                  nothing nothing 0 0
+                              slice nothing 0 0
+                                name buf nothing 0 0
+                                seq nothing 0 0
+                                  const (0) int 0 0
+                                  nothing nothing 0 0
+                            seq nothing 0 0
+                              = nothing 0 0
+                                name buf nothing 0 0
+                                name nbuf nothing 0 0
+        seq nothing 0 0
+          vardecl list of string 0 0
+            seq nothing 0 0
+          seq nothing 0 0
+            if nothing 0 0
+              != nothing 0 0
+                name seps nothing 0 0
+                name nil polymorphic type 0 0
+              seq nothing 0 0
+                = nothing 0 0
+                  tuple nothing 0 0
+                    seq nothing 0 0
+                      name nil polymorphic type 0 0
+                      seq nothing 0 0
+                        name l nothing 0 0
+                  call nothing 0 0
+                    -> nothing 0 0
+                      name sys nothing 0 0
+                      name tokenize nothing 0 0
+                    seq nothing 0 0
+                      cast string 0 0
+                        slice nothing 0 0
+                          name buf nothing 0 0
+                          seq nothing 0 0
+                            const (0) int 0 0
+                            name buflen nothing 0 0
+                      seq nothing 0 0
+                        name seps nothing 0 0
+                = nothing 0 0
+                  name l nothing 0 0
+                  :: nothing 0 0
+                    
+typecheck tree: 
+fn(){} fn(ctxt: ref Context, cmd: list of ref Listnode, seps: string): (list of ref Listnode, string) 0 0
+  name bq fn(ctxt: ref Context, cmd: list of ref Listnode, seps: string): (list of ref Listnode, string) 0 0
+  seq nothing 0 0
+    := nothing 0 0
+      name fds nothing 0 0
+      array array of ref Sys->FD 0 0
+        const (2) int 0 0
+    seq nothing 0 0
+      if nothing 0 0
+        == nothing 0 0
+          call nothing 0 0
+            -> nothing 0 0
+              name sys nothing 0 0
+              name pipe nothing 0 0
+            seq nothing 0 0
+              name fds nothing 0 0
+          - nothing 0 0
+            const (1) int 0 0
+        seq nothing 0 0
+          call nothing 0 0
+            . nothing 0 0
+              name ctxt nothing 0 0
+              name fail nothing 0 0
+            seq nothing 0 0
+              const no pipe string 0 0
+              seq nothing 0 0
+                call nothing 0 0
+                  -> nothing 0 0
+                    name sys nothing 0 0
+                    name sprint nothing 0 0
+                  seq nothing 0 0
+                    const sh: cannot make pipe: %r string 0 0
+      seq nothing 0 0
+        := nothing 0 0
+          name r nothing 0 0
+          call nothing 0 0
+            name rdir nothing 0 0
+            seq nothing 0 0
+              index nothing 0 0
+                name fds nothing 0 0
+                const (1) int 0 0
+        seq nothing 0 0
+          = nothing 0 0
+            index nothing 0 0
+              name fds nothing 0 0
+              const (1) int 0 0
+            name nil polymorphic type 0 0
+          seq nothing 0 0
+            := nothing 0 0
+              name startchan nothing 0 0
+              chan chan of (int, ref Expropagate) 0 0
+            seq nothing 0 0
+              spawn nothing 0 0
+                call nothing 0 0
+                  name runasync nothing 0 0
+                  seq nothing 0 0
+                    name ctxt nothing 0 0
+                    seq nothing 0 0
+                      const (0) int 0 0
+                      seq nothing 0 0
+                        name cmd nothing 0 0
+                        seq nothing 0 0
+                          name r nothing 0 0
+                          seq nothing 0 0
+                            name startchan nothing 0 0
+              seq nothing 0 0
+                := nothing 0 0
+                  tuple nothing 0 0
+                    seq nothing 0 0
+                      name exepid nothing 0 0
+                      seq nothing 0 0
+                        name exprop nothing 0 0
+                  <- nothing 0 0
+                    name startchan nothing 0 0
+                seq nothing 0 0
+                  = nothing 0 0
+                    name r nothing 0 0
+                    name nil polymorphic type 0 0
+                  seq nothing 0 0
+                    := nothing 0 0
+                      name bqlist nothing 0 0
+                      call nothing 0 0
+                        name getbq nothing 0 0
+                        seq nothing 0 0
+                          name ctxt nothing 0 0
+                          seq nothing 0 0
+                            index nothing 0 0
+                              name fds nothing 0 0
+                              const (0) int 0 0
+                            seq nothing 0 0
+                              name seps nothing 0 0
+                    seq nothing 0 0
+                      call nothing 0 0
+                        name waitfor nothing 0 0
+                        seq nothing 0 0
+                          name ctxt nothing 0 0
+                          seq nothing 0 0
+                            :: nothing 0 0
+                              name exepid nothing 0 0
+                              name nil polymorphic type 0 0
+                      seq nothing 0 0
+                        if nothing 0 0
+                          != nothing 0 0
+                            . nothing 0 0
+                              name exprop nothing 0 0
+                              name name nothing 0 0
+                            name nil polymorphic ty
+typecheck tree: 
+fn(){} fn(fd: ref Sys->FD): ref Redirlist 0 0
+  name rdir fn(fd: ref Sys->FD): ref Redirlist 0 0
+  seq nothing 0 0
+    return nothing 0 0
+      ref nothing 0 0
+        call nothing 0 0
+          name Redirlist nothing 0 0
+          seq nothing 0 0
+            :: nothing 0 0
+              call nothing 0 0
+                name Redirword nothing 0 0
+                seq nothing 0 0
+                  name fd nothing 0 0
+                  seq nothing 0 0
+                    name nil polymorphic type 0 0
+                    seq nothing 0 0
+                      call nothing 0 0
+                        name Redir nothing 0 0
+                        seq nothing 0 0
+                          -> nothing 0 0
+                            name Sys nothing 0 0
+                            name OWRITE nothing 0 0
+                          seq nothing 0 0
+                            const (1) int 0 0
+                            seq nothing 0 0
+                              - nothing 0 0
+                                const (1) int 0 0
+              name nil polymorphic type 0 0
+typecheck tree: 
+fn(){} fn(p1: ref Listnode, p2: ref Listnode): ref Listnode 0 0
+  name concatwords fn(p1: ref Listnode, p2: ref Listnode): ref Listnode 0 0
+  seq nothing 0 0
+    if nothing 0 0
+      && nothing 0 0
+        == nothing 0 0
+          . nothing 0 0
+            name p1 nothing 0 0
+            name word nothing 0 0
+          name nil polymorphic type 0 0
+        != nothing 0 0
+          . nothing 0 0
+            name p1 nothing 0 0
+            name cmd nothing 0 0
+          name nil polymorphic type 0 0
+      seq nothing 0 0
+        = nothing 0 0
+          . nothing 0 0
+            name p1 nothing 0 0
+            name word nothing 0 0
+          call nothing 0 0
+            name cmd2string nothing 0 0
+            seq nothing 0 0
+              . nothing 0 0
+                name p1 nothing 0 0
+                name cmd nothing 0 0
+    seq nothing 0 0
+      if nothing 0 0
+        && nothing 0 0
+          == nothing 0 0
+            . nothing 0 0
+              name p2 nothing 0 0
+              name word nothing 0 0
+            name nil polymorphic type 0 0
+          != nothing 0 0
+            . nothing 0 0
+              name p2 nothing 0 0
+              name cmd nothing 0 0
+            name nil polymorphic type 0 0
+        seq nothing 0 0
+          = nothing 0 0
+            . nothing 0 0
+              name p2 nothing 0 0
+              name word nothing 0 0
+            call nothing 0 0
+              name cmd2string nothing 0 0
+              seq nothing 0 0
+                . nothing 0 0
+                  name p2 nothing 0 0
+                  name cmd nothing 0 0
+      seq nothing 0 0
+        return nothing 0 0
+          ref nothing 0 0
+            call nothing 0 0
+              name Listnode nothing 0 0
+              seq nothing 0 0
+                name nil polymorphic type 0 0
+                seq nothing 0 0
+                  + nothing 0 0
+                    . nothing 0 0
+                      name p1 nothing 0 0
+                      name word nothing 0 0
+                    . nothing 0 0
+                      name p2 nothing 0 0
+                      name word nothing 0 0
+typecheck tree: 
+fn(){} fn(ctxt: ref Context, nl1: list of ref Listnode, nl2: list of ref Listnode): list of ref Listnode 0 0
+  name concat fn(ctxt: ref Context, nl1: list of ref Listnode, nl2: list of ref Listnode): list of ref Listnode 0 0
+  seq nothing 0 0
+    if nothing 0 0
+      || nothing 0 0
+        == nothing 0 0
+          name nl1 nothing 0 0
+          name nil polymorphic type 0 0
+        == nothing 0 0
+          name nl2 nothing 0 0
+          name nil polymorphic type 0 0
+      seq nothing 0 0
+        scope nothing 0 0
+          seq nothing 0 0
+            if nothing 0 0
+              && nothing 0 0
+                == nothing 0 0
+                  name nl1 nothing 0 0
+                  name nil polymorphic type 0 0
+                == nothing 0 0
+                  name nl2 nothing 0 0
+                  name nil polymorphic type 0 0
+              seq nothing 0 0
+                return nothing 0 0
+                  name nil polymorphic type 0 0
+            seq nothing 0 0
+              call nothing 0 0
+                . nothing 0 0
+                  name ctxt nothing 0 0
+                  name fail nothing 0 0
+                seq nothing 0 0
+                  const bad concatenation string 0 0
+                  seq nothing 0 0
+                    const sh: null list in concatenation string 0 0
+    seq nothing 0 0
+      vardecl list of ref Listnode 0 0
+        seq nothing 0 0
+      seq nothing 0 0
+        if nothing 0 0
+          || nothing 0 0
+            == nothing 0 0
+              tl nothing 0 0
+                name nl1 nothing 0 0
+              name nil polymorphic type 0 0
+            == nothing 0 0
+              tl nothing 0 0
+                name nl2 nothing 0 0
+              name nil polymorphic type 0 0
+          seq nothing 0 0
+            scope nothing 0 0
+              seq nothing 0 0
+                := nothing 0 0
+                  name p1 nothing 0 0
+                  name nl1 nothing 0 0
+                seq nothing 0 0
+                  for nothing 0 0
+                    != nothing 0 0
+                      name p1 nothing 0 0
+                      name nil polymorphic type 0 0
+                    seq nothing 0 0
+                      seq nothing 0 0
+                        := nothing 0 0
+                          name p2 nothing 0 0
+                          name nl2 nothing 0 0
+                        for nothing 0 0
+                          != nothing 0 0
+                            name p2 nothing 0 0
+                            name nil polymorphic type 0 0
+                          seq nothing 0 0
+                            = nothing 0 0
+                              name ret nothing 0 0
+                              :: nothing 0 0
+                                call nothing 0 0
+                                  name concatwords nothing 0 0
+                                  seq nothing 0 0
+                                    hd nothing 0 0
+                                      name p1 nothing 0 0
+                                    seq nothing 0 0
+                                      hd nothing 0 0
+                                        name p2 nothing 0 0
+                                name ret nothing 0 0
+                            = nothing 0 0
+                              name p2 nothing 0 0
+                              tl nothing 0 0
+                                name p2 nothing 0 0
+                      = nothing 0 0
+                        name p1 nothing 0 0
+                        tl nothing 0 0
+                          name p1 nothing 0 0
+            scope nothing 0 0
+              seq nothing 0 0
+                if nothing 0 0
+                  != nothing 0 0
+                    len nothing 0 0
+                      name nl1 nothing 0 0
+                    len nothing 0 0
+                      name nl2 nothing 0 0
+                  seq nothing 0 0
+                    call nothing 0 0
+                      . nothing 0 0
+                        name ctxt nothing 0 0
+                        name fail nothing 0 0
+                      seq nothing 0 0
+                        const bad con
+typecheck tree: 
+fn(){} fn(ctxt: ref Context, copyenv: int, argv: list of ref Listnode, redirs: ref Redirlist, startchan: chan of (int, ref Expropagate)) 0 0
+  name runasync fn(ctxt: ref Context, copyenv: int, argv: list of ref Listnode, redirs: ref Redirlist, startchan: chan of (int, ref Expropagate)) 0 0
+  seq nothing 0 0
+    vardecl string 0 0
+      seq nothing 0 0
+    seq nothing 0 0
+      := nothing 0 0
+        name pid nothing 0 0
+        call nothing 0 0
+          -> nothing 0 0
+            name sys nothing 0 0
+            name pctl nothing 0 0
+          seq nothing 0 0
+            -> nothing 0 0
+              name sys nothing 0 0
+              name FORKFD nothing 0 0
+            seq nothing 0 0
+              name nil polymorphic type 0 0
+      seq nothing 0 0
+        if nothing 0 0
+          name DEBUG nothing 0 0
+          seq nothing 0 0
+            call nothing 0 0
+              name debug nothing 0 0
+              seq nothing 0 0
+                call nothing 0 0
+                  name sprint nothing 0 0
+                  seq nothing 0 0
+                    const in async (len redirs: %d) string 0 0
+                    seq nothing 0 0
+                      len nothing 0 0
+                        . nothing 0 0
+                          name redirs nothing 0 0
+                          name r nothing 0 0
+        seq nothing 0 0
+          = nothing 0 0
+            name ctxt nothing 0 0
+            call nothing 0 0
+              . nothing 0 0
+                name ctxt nothing 0 0
+                name copy nothing 0 0
+              seq nothing 0 0
+                name copyenv nothing 0 0
+          seq nothing 0 0
+            := nothing 0 0
+              name exprop nothing 0 0
+              ref nothing 0 0
+                name Expropagate nothing 0 0
+            seq nothing 0 0
+              exstat nothing 0 0
+                scope nothing 0 0
+                  seq nothing 0 0
+                    := nothing 0 0
+                      name newfdl nothing 0 0
+                      call nothing 0 0
+                        name doredirs nothing 0 0
+                        seq nothing 0 0
+                          name ctxt nothing 0 0
+                          seq nothing 0 0
+                            name redirs nothing 0 0
+                    seq nothing 0 0
+                      = nothing 0 0
+                        name redirs nothing 0 0
+                        name nil polymorphic type 0 0
+                      seq nothing 0 0
+                        if nothing 0 0
+                          != nothing 0 0
+                            name newfdl nothing 0 0
+                            name nil polymorphic type 0 0
+                          seq nothing 0 0
+                            call nothing 0 0
+                              -> nothing 0 0
+                                name sys nothing 0 0
+                                name pctl nothing 0 0
+                              seq nothing 0 0
+                                -> nothing 0 0
+                                  name Sys nothing 0 0
+                                  name NEWFD nothing 0 0
+                                seq nothing 0 0
+                                  name newfdl nothing 0 0
+                        seq nothing 0 0
+                          = nothing 0 0
+                            . nothing 0 0
+                              name ctxt nothing 0 0
+                              name waitfd nothing 0 0
+                            call nothing 0 0
+                              name waitfd nothing 0 0
+                          seq nothing 0 0
+                            <-= nothing 0 0
+                              name startchan nothing 0 0
+                              tuple nothing 0 0
+                                seq nothing 0 0
+                                  name pid nothing 0 0
+                                  seq nothing 0 0
+                                    name exprop nothing 0 0
+                            seq nothing 0 0
+                              = nothing 0 0
+                                name startchan nothing 0 0
+             
+typecheck tree: 
+fn(){} fn(ctxt: ref Context, argv: list of ref Listnode, redirs: ref Redirlist, last: int): string 0 0
+  name runsync fn(ctxt: ref Context, argv: list of ref Listnode, redirs: ref Redirlist, last: int): string 0 0
+  seq nothing 0 0
+    if nothing 0 0
+      name DEBUG nothing 0 0
+      seq nothing 0 0
+        call nothing 0 0
+          name debug nothing 0 0
+          seq nothing 0 0
+            call nothing 0 0
+              -> nothing 0 0
+                name sys nothing 0 0
+                name sprint nothing 0 0
+              seq nothing 0 0
+                const in sync (len redirs: %d; last: %d) string 0 0
+                seq nothing 0 0
+                  len nothing 0 0
+                    . nothing 0 0
+                      name redirs nothing 0 0
+                      name r nothing 0 0
+                  seq nothing 0 0
+                    name last nothing 0 0
+    seq nothing 0 0
+      if nothing 0 0
+        && nothing 0 0
+          != nothing 0 0
+            . nothing 0 0
+              name redirs nothing 0 0
+              name r nothing 0 0
+            name nil polymorphic type 0 0
+          ! nothing 0 0
+            name last nothing 0 0
+        seq nothing 0 0
+          scope nothing 0 0
+            seq nothing 0 0
+              := nothing 0 0
+                name startchan nothing 0 0
+                chan chan of (int, ref Expropagate) 0 0
+              seq nothing 0 0
+                spawn nothing 0 0
+                  call nothing 0 0
+                    name runasync nothing 0 0
+                    seq nothing 0 0
+                      name ctxt nothing 0 0
+                      seq nothing 0 0
+                        const (0) int 0 0
+                        seq nothing 0 0
+                          name argv nothing 0 0
+                          seq nothing 0 0
+                            name redirs nothing 0 0
+                            seq nothing 0 0
+                              name startchan nothing 0 0
+                seq nothing 0 0
+                  := nothing 0 0
+                    tuple nothing 0 0
+                      seq nothing 0 0
+                        name pid nothing 0 0
+                        seq nothing 0 0
+                          name exprop nothing 0 0
+                    <- nothing 0 0
+                      name startchan nothing 0 0
+                  seq nothing 0 0
+                    = nothing 0 0
+                      name redirs nothing 0 0
+                      name nil polymorphic type 0 0
+                    seq nothing 0 0
+                      := nothing 0 0
+                        name r nothing 0 0
+                        call nothing 0 0
+                          name waitfor nothing 0 0
+                          seq nothing 0 0
+                            name ctxt nothing 0 0
+                            seq nothing 0 0
+                              :: nothing 0 0
+                                name pid nothing 0 0
+                                name nil polymorphic type 0 0
+                      seq nothing 0 0
+                        if nothing 0 0
+                          != nothing 0 0
+                            . nothing 0 0
+                              name exprop nothing 0 0
+                              name name nothing 0 0
+                            name nil polymorphic type 0 0
+                          seq nothing 0 0
+                            raise nothing 0 0
+                              . nothing 0 0
+                                name exprop nothing 0 0
+                                name name nothing 0 0
+                        seq nothing 0 0
+                          return nothing 0 0
+                            name r nothing 0 0
+          scope nothing 0 0
+            seq nothing 0 0
+              := nothing 0 0
+                name newfdl nothing 0 0
+                call nothing 0 0
+                  name doredirs nothing 0 0
+                  seq nothing 0 0
+                    name ctxt nothing 0 0
+                    seq nothing 0 0
+                      name redirs nothing 0 0
+              seq nothing 0 0
+            
+typecheck tree: 
+fn(){} fn(p: string): int 0 0
+  name absolute fn(p: string): int 0 0
+  seq nothing 0 0
+    if nothing 0 0
+      < nothing 0 0
+        len nothing 0 0
+          name p nothing 0 0
+        const (2) int 0 0
+      seq nothing 0 0
+        return nothing 0 0
+          const (0) int 0 0
+    seq nothing 0 0
+      if nothing 0 0
+        || nothing 0 0
+          == nothing 0 0
+            index nothing 0 0
+              name p nothing 0 0
+              const (0) int 0 0
+            const (47) int 0 0
+          == nothing 0 0
+            index nothing 0 0
+              name p nothing 0 0
+              const (0) int 0 0
+            const (35) int 0 0
+        seq nothing 0 0
+          return nothing 0 0
+            const (1) int 0 0
+      seq nothing 0 0
+        if nothing 0 0
+          || nothing 0 0
+            < nothing 0 0
+              len nothing 0 0
+                name p nothing 0 0
+              const (3) int 0 0
+            != nothing 0 0
+              index nothing 0 0
+                name p nothing 0 0
+                const (0) int 0 0
+              const (46) int 0 0
+          seq nothing 0 0
+            return nothing 0 0
+              const (0) int 0 0
+        seq nothing 0 0
+          if nothing 0 0
+            == nothing 0 0
+              index nothing 0 0
+                name p nothing 0 0
+                const (1) int 0 0
+              const (47) int 0 0
+            seq nothing 0 0
+              return nothing 0 0
+                const (1) int 0 0
+          seq nothing 0 0
+            if nothing 0 0
+              && nothing 0 0
+                == nothing 0 0
+                  index nothing 0 0
+                    name p nothing 0 0
+                    const (1) int 0 0
+                  const (46) int 0 0
+                == nothing 0 0
+                  index nothing 0 0
+                    name p nothing 0 0
+                    const (2) int 0 0
+                  const (47) int 0 0
+              seq nothing 0 0
+                return nothing 0 0
+                  const (1) int 0 0
+            seq nothing 0 0
+              return nothing 0 0
+                const (0) int 0 0
+typecheck tree: 
+fn(){} fn(ctxt: ref Context, args: list of ref Listnode, last: int): string 0 0
+  name runexternal fn(ctxt: ref Context, args: list of ref Listnode, last: int): string 0 0
+  seq nothing 0 0
+    := nothing 0 0
+      name progname nothing 0 0
+      . nothing 0 0
+        hd nothing 0 0
+          name args nothing 0 0
+        name word nothing 0 0
+    seq nothing 0 0
+      := nothing 0 0
+        name disfile nothing 0 0
+        const (0) int 0 0
+      seq nothing 0 0
+        if nothing 0 0
+          && nothing 0 0
+            >= nothing 0 0
+              len nothing 0 0
+                name progname nothing 0 0
+              const (4) int 0 0
+            == nothing 0 0
+              slice nothing 0 0
+                name progname nothing 0 0
+                seq nothing 0 0
+                  - nothing 0 0
+                    len nothing 0 0
+                      name progname nothing 0 0
+                    const (4) int 0 0
+                  nothing nothing 0 0
+              const .dis string 0 0
+          seq nothing 0 0
+            = nothing 0 0
+              name disfile nothing 0 0
+              const (1) int 0 0
+        seq nothing 0 0
+          vardecl list of string 0 0
+            seq nothing 0 0
+          seq nothing 0 0
+            if nothing 0 0
+              call nothing 0 0
+                name absolute nothing 0 0
+                seq nothing 0 0
+                  name progname nothing 0 0
+              seq nothing 0 0
+                = nothing 0 0
+                  name pathlist nothing 0 0
+                  :: nothing 0 0
+                    const  string 0 0
+                    name nil polymorphic type 0 0
+                if nothing 0 0
+                  != nothing 0 0
+                    := nothing 0 0
+                      name pl nothing 0 0
+                      call nothing 0 0
+                        . nothing 0 0
+                          name ctxt nothing 0 0
+                          name get nothing 0 0
+                        seq nothing 0 0
+                          const path string 0 0
+                    name nil polymorphic type 0 0
+                  seq nothing 0 0
+                    = nothing 0 0
+                      name pathlist nothing 0 0
+                      call nothing 0 0
+                        name list2stringlist nothing 0 0
+                        seq nothing 0 0
+                          name pl nothing 0 0
+                    = nothing 0 0
+                      name pathlist nothing 0 0
+                      :: nothing 0 0
+                        const /dis string 0 0
+                        :: nothing 0 0
+                          const . string 0 0
+                          name nil polymorphic type 0 0
+            seq nothing 0 0
+              := nothing 0 0
+                name err nothing 0 0
+                const  string 0 0
+              seq nothing 0 0
+                do nothing 0 0
+                  && nothing 0 0
+                    != nothing 0 0
+                      name pathlist nothing 0 0
+                      name nil polymorphic type 0 0
+                    call nothing 0 0
+                      name nonexistent nothing 0 0
+                      seq nothing 0 0
+                        name err nothing 0 0
+                  scope nothing 0 0
+                    seq nothing 0 0
+                      vardecl string 0 0
+                        seq nothing 0 0
+                      seq nothing 0 0
+                        if nothing 0 0
+                          != nothing 0 0
+                            hd nothing 0 0
+                              name pathlist nothing 0 0
+                            const  string 0 0
+                          seq nothing 0 0
+                            = nothing 0 0
+                              name path nothing 0 0
+                              + nothing 0 0
+                                + nothing 0 0
+                                  hd nothing 0 0
+                                    name pathlist nothing 0 0
+                                  const / string 0 0
+                                name progname nothing 0 0
+ 
+typecheck tree: 
+fn(){} fn(e: string): string 0 0
+  name failurestatus fn(e: string): string 0 0
+  seq nothing 0 0
+    := nothing 0 0
+      name s nothing 0 0
+      slice nothing 0 0
+        name e nothing 0 0
+        seq nothing 0 0
+          const (5) int 0 0
+          nothing nothing 0 0
+    seq nothing 0 0
+      for nothing 0 0
+        && nothing 0 0
+          != nothing 0 0
+            name s nothing 0 0
+            name nil polymorphic type 0 0
+          || nothing 0 0
+            == nothing 0 0
+              index nothing 0 0
+                name s nothing 0 0
+                const (0) int 0 0
+              const (32) int 0 0
+            == nothing 0 0
+              index nothing 0 0
+                name s nothing 0 0
+                const (0) int 0 0
+              const (9) int 0 0
+        seq nothing 0 0
+          = nothing 0 0
+            name s nothing 0 0
+            slice nothing 0 0
+              name s nothing 0 0
+              seq nothing 0 0
+                const (1) int 0 0
+                nothing nothing 0 0
+      seq nothing 0 0
+        if nothing 0 0
+          != nothing 0 0
+            name s nothing 0 0
+            name nil polymorphic type 0 0
+          seq nothing 0 0
+            return nothing 0 0
+              name s nothing 0 0
+        seq nothing 0 0
+          return nothing 0 0
+            const failed string 0 0
+typecheck tree: 
+fn(){} fn(ctxt: ref Context, fd: ref Sys->FD, path: string, argv: list of ref Listnode, last: int): string 0 0
+  name runhashpling fn(ctxt: ref Context, fd: ref Sys->FD, path: string, argv: list of ref Listnode, last: int): string 0 0
+  seq nothing 0 0
+    := nothing 0 0
+      name header nothing 0 0
+      array array of byte 0 0
+        const (1024) int 0 0
+    seq nothing 0 0
+      := nothing 0 0
+        name n nothing 0 0
+        call nothing 0 0
+          -> nothing 0 0
+            name sys nothing 0 0
+            name read nothing 0 0
+          seq nothing 0 0
+            name fd nothing 0 0
+            seq nothing 0 0
+              name header nothing 0 0
+              seq nothing 0 0
+                len nothing 0 0
+                  name header nothing 0 0
+      seq nothing 0 0
+        seq nothing 0 0
+          := nothing 0 0
+            name i nothing 0 0
+            const (0) int 0 0
+          for nothing 0 0
+            < nothing 0 0
+              name i nothing 0 0
+              name n nothing 0 0
+            seq nothing 0 0
+              if nothing 0 0
+                == nothing 0 0
+                  index nothing 0 0
+                    name header nothing 0 0
+                    name i nothing 0 0
+                  cast byte 0 0
+                    const (10) int 0 0
+                seq nothing 0 0
+                  break nothing 0 0
+              ++ nothing 0 0
+                name i nothing 0 0
+        seq nothing 0 0
+          if nothing 0 0
+            || nothing 0 0
+              || nothing 0 0
+                || nothing 0 0
+                  == nothing 0 0
+                    name i nothing 0 0
+                    name n nothing 0 0
+                  < nothing 0 0
+                    name i nothing 0 0
+                    const (3) int 0 0
+                != nothing 0 0
+                  index nothing 0 0
+                    name header nothing 0 0
+                    const (0) int 0 0
+                  cast byte 0 0
+                    const (35) int 0 0
+              != nothing 0 0
+                index nothing 0 0
+                  name header nothing 0 0
+                  const (1) int 0 0
+                cast byte 0 0
+                  const (33) int 0 0
+            seq nothing 0 0
+              scope nothing 0 0
+                seq nothing 0 0
+                  call nothing 0 0
+                    name diagnostic nothing 0 0
+                    seq nothing 0 0
+                      name ctxt nothing 0 0
+                      seq nothing 0 0
+                        + nothing 0 0
+                          const bad script header on  string 0 0
+                          name path nothing 0 0
+                  seq nothing 0 0
+                    return nothing 0 0
+                      const bad header string 0 0
+          seq nothing 0 0
+            := nothing 0 0
+              tuple nothing 0 0
+                seq nothing 0 0
+                  name nil polymorphic type 0 0
+                  seq nothing 0 0
+                    name args nothing 0 0
+              call nothing 0 0
+                -> nothing 0 0
+                  name sys nothing 0 0
+                  name tokenize nothing 0 0
+                seq nothing 0 0
+                  cast string 0 0
+                    slice nothing 0 0
+                      name header nothing 0 0
+                      seq nothing 0 0
+                        const (2) int 0 0
+                        name i nothing 0 0
+                  seq nothing 0 0
+                    const  	 string 0 0
+            seq nothing 0 0
+              if nothing 0 0
+                == nothing 0 0
+                  name args nothing 0 0
+                  name nil polymorphic type 0 0
+                seq nothing 0 0
+                  scope nothing 0 0
+                    seq nothing 0 0
+                      call nothing 0 0
+                        name diagnostic nothing 0 0
+                        seq nothing 0 0
+                          name ctxt nothing 0 0
+                          seq nothing 0 0
+                            + nothing 0 0
+                              con
+typecheck tree: 
+fn(){} fn(ctxt: ref Context, args: list of ref Listnode, last: int): string 0 0
+  name runblock fn(ctxt: ref Context, args: list of ref Listnode, last: int): string 0 0
+  seq nothing 0 0
+    := nothing 0 0
+      name cmd nothing 0 0
+      . nothing 0 0
+        hd nothing 0 0
+          name args nothing 0 0
+        name cmd nothing 0 0
+    seq nothing 0 0
+      if nothing 0 0
+        == nothing 0 0
+          name cmd nothing 0 0
+          name nil polymorphic type 0 0
+        seq nothing 0 0
+          scope nothing 0 0
+            seq nothing 0 0
+              := nothing 0 0
+                name lex nothing 0 0
+                call nothing 0 0
+                  . nothing 0 0
+                    name YYLEX nothing 0 0
+                    name initstring nothing 0 0
+                  seq nothing 0 0
+                    . nothing 0 0
+                      hd nothing 0 0
+                        name args nothing 0 0
+                      name word nothing 0 0
+              seq nothing 0 0
+                vardecl string 0 0
+                  seq nothing 0 0
+                seq nothing 0 0
+                  = nothing 0 0
+                    tuple nothing 0 0
+                      seq nothing 0 0
+                        name cmd nothing 0 0
+                        seq nothing 0 0
+                          name err nothing 0 0
+                    call nothing 0 0
+                      name doparse nothing 0 0
+                      seq nothing 0 0
+                        name lex nothing 0 0
+                        seq nothing 0 0
+                          const  string 0 0
+                          seq nothing 0 0
+                            const (0) int 0 0
+                  seq nothing 0 0
+                    if nothing 0 0
+                      == nothing 0 0
+                        name cmd nothing 0 0
+                        name nil polymorphic type 0 0
+                      seq nothing 0 0
+                        call nothing 0 0
+                          . nothing 0 0
+                            name ctxt nothing 0 0
+                            name fail nothing 0 0
+                          seq nothing 0 0
+                            const parse error string 0 0
+                            seq nothing 0 0
+                              + nothing 0 0
+                                const sh:  string 0 0
+                                name err nothing 0 0
+                    seq nothing 0 0
+                      = nothing 0 0
+                        . nothing 0 0
+                          hd nothing 0 0
+                            name args nothing 0 0
+                          name cmd nothing 0 0
+                        name cmd nothing 0 0
+      seq nothing 0 0
+        call nothing 0 0
+          . nothing 0 0
+            name ctxt nothing 0 0
+            name push nothing 0 0
+        seq nothing 0 0
+          exstat nothing 0 0
+            scope nothing 0 0
+              seq nothing 0 0
+                call nothing 0 0
+                  . nothing 0 0
+                    name ctxt nothing 0 0
+                    name setlocal nothing 0 0
+                  seq nothing 0 0
+                    const 0 string 0 0
+                    seq nothing 0 0
+                      :: nothing 0 0
+                        hd nothing 0 0
+                          name args nothing 0 0
+                        name nil polymorphic type 0 0
+                seq nothing 0 0
+                  call nothing 0 0
+                    . nothing 0 0
+                      name ctxt nothing 0 0
+                      name setlocal nothing 0 0
+                    seq nothing 0 0
+                      const * string 0 0
+                      seq nothing 0 0
+                        tl nothing 0 0
+                          name args nothing 0 0
+                  seq nothing 0 0
+                    if nothing 0 0
+                      && nothing 0 0
+                        != nothing 0 0
+                          name cmd nothing 0 0
+                          name nil polymorphic type 0 0
+                        == nothing 0 0
+                          . no
+typecheck tree: 
+fn(){} fn(ctxt: ref Context, args: list of ref Listnode, lseq: int): (int, string) 0 0
+  name trybuiltin fn(ctxt: ref Context, args: list of ref Listnode, lseq: int): (int, string) 0 0
+  seq nothing 0 0
+    := nothing 0 0
+      tuple nothing 0 0
+        seq nothing 0 0
+          name nil polymorphic type 0 0
+          seq nothing 0 0
+            name bmods nothing 0 0
+      call nothing 0 0
+        name findbuiltin nothing 0 0
+        seq nothing 0 0
+          . nothing 0 0
+            . nothing 0 0
+              name ctxt nothing 0 0
+              name env nothing 0 0
+            name builtins nothing 0 0
+          seq nothing 0 0
+            . nothing 0 0
+              hd nothing 0 0
+                name args nothing 0 0
+              name word nothing 0 0
+    seq nothing 0 0
+      if nothing 0 0
+        == nothing 0 0
+          name bmods nothing 0 0
+          name nil polymorphic type 0 0
+        seq nothing 0 0
+          return nothing 0 0
+            tuple nothing 0 0
+              seq nothing 0 0
+                const (0) int 0 0
+                seq nothing 0 0
+                  name nil polymorphic type 0 0
+      seq nothing 0 0
+        return nothing 0 0
+          tuple nothing 0 0
+            seq nothing 0 0
+              const (1) int 0 0
+              seq nothing 0 0
+                call nothing 0 0
+                  -> nothing 0 0
+                    hd nothing 0 0
+                      name bmods nothing 0 0
+                    name runbuiltin nothing 0 0
+                  seq nothing 0 0
+                    name ctxt nothing 0 0
+                    seq nothing 0 0
+                      name myself nothing 0 0
+                      seq nothing 0 0
+                        name args nothing 0 0
+                        seq nothing 0 0
+                          name lseq nothing 0 0
+typecheck tree: 
+fn(){} fn(ctxt: ref Context): string 0 0
+  name keepfdstr fn(ctxt: ref Context): string 0 0
+  seq nothing 0 0
+    := nothing 0 0
+      name s nothing 0 0
+      const  string 0 0
+    seq nothing 0 0
+      seq nothing 0 0
+        := nothing 0 0
+          name f nothing 0 0
+          . nothing 0 0
+            name ctxt nothing 0 0
+            name keepfds nothing 0 0
+        for nothing 0 0
+          != nothing 0 0
+            name f nothing 0 0
+            name nil polymorphic type 0 0
+          seq nothing 0 0
+            scope nothing 0 0
+              seq nothing 0 0
+                += nothing 0 0
+                  name s nothing 0 0
+                  cast string 0 0
+                    hd nothing 0 0
+                      name f nothing 0 0
+                seq nothing 0 0
+                  if nothing 0 0
+                    != nothing 0 0
+                      tl nothing 0 0
+                        name f nothing 0 0
+                      name nil polymorphic type 0 0
+                    seq nothing 0 0
+                      += nothing 0 0
+                        name s nothing 0 0
+                        const , string 0 0
+            = nothing 0 0
+              name f nothing 0 0
+              tl nothing 0 0
+                name f nothing 0 0
+      seq nothing 0 0
+        return nothing 0 0
+          name s nothing 0 0
+typecheck tree: 
+fn(){} fn(mod: Command, drawcontext: ref Draw->Context, argv: list of string, startchan: chan of int, keepfds: list of int) 0 0
+  name externalexec fn(mod: Command, drawcontext: ref Draw->Context, argv: list of string, startchan: chan of int, keepfds: list of int) 0 0
+  seq nothing 0 0
+    if nothing 0 0
+      name DEBUG nothing 0 0
+      seq nothing 0 0
+        call nothing 0 0
+          name debug nothing 0 0
+          seq nothing 0 0
+            call nothing 0 0
+              name sprint nothing 0 0
+              seq nothing 0 0
+                const externalexec(%s,... [%d args]) string 0 0
+                seq nothing 0 0
+                  hd nothing 0 0
+                    name argv nothing 0 0
+                  seq nothing 0 0
+                    len nothing 0 0
+                      name argv nothing 0 0
+    seq nothing 0 0
+      call nothing 0 0
+        -> nothing 0 0
+          name sys nothing 0 0
+          name pctl nothing 0 0
+        seq nothing 0 0
+          -> nothing 0 0
+            name Sys nothing 0 0
+            name NEWFD nothing 0 0
+          seq nothing 0 0
+            name keepfds nothing 0 0
+      seq nothing 0 0
+        <-= nothing 0 0
+          name startchan nothing 0 0
+          call nothing 0 0
+            -> nothing 0 0
+              name sys nothing 0 0
+              name pctl nothing 0 0
+            seq nothing 0 0
+              const (0) int 0 0
+              seq nothing 0 0
+                name nil polymorphic type 0 0
+        seq nothing 0 0
+          exstat nothing 0 0
+            scope nothing 0 0
+              seq nothing 0 0
+                call nothing 0 0
+                  -> nothing 0 0
+                    name mod nothing 0 0
+                    name init nothing 0 0
+                  seq nothing 0 0
+                    name drawcontext nothing 0 0
+                    seq nothing 0 0
+                      name argv nothing 0 0
+            except nothing 0 0
+              seq nothing 0 0
+                label nothing 0 0
+                  seq nothing 0 0
+                    name EPIPE nothing 0 0
+                  scope nothing 0 0
+                    raise nothing 0 0
+                      + nothing 0 0
+                        const fail: string 0 0
+                        name EPIPE nothing 0 0
+typecheck tree: 
+fn(){} fn(ctxt: ref Context, fd1: int, fd2: int): int 0 0
+  name dup fn(ctxt: ref Context, fd1: int, fd2: int): int 0 0
+  seq nothing 0 0
+    if nothing 0 0
+      == nothing 0 0
+        . nothing 0 0
+          . nothing 0 0
+            name ctxt nothing 0 0
+            name waitfd nothing 0 0
+          name fd nothing 0 0
+        name fd2 nothing 0 0
+      seq nothing 0 0
+        scope nothing 0 0
+          seq nothing 0 0
+            = nothing 0 0
+              . nothing 0 0
+                name ctxt nothing 0 0
+                name waitfd nothing 0 0
+              call nothing 0 0
+                name waitfd nothing 0 0
+            seq nothing 0 0
+              if nothing 0 0
+                == nothing 0 0
+                  . nothing 0 0
+                    . nothing 0 0
+                      name ctxt nothing 0 0
+                      name waitfd nothing 0 0
+                    name fd nothing 0 0
+                  name fd2 nothing 0 0
+                seq nothing 0 0
+                  call nothing 0 0
+                    name panic nothing 0 0
+                    seq nothing 0 0
+                      call nothing 0 0
+                        -> nothing 0 0
+                          name sys nothing 0 0
+                          name sprint nothing 0 0
+                        seq nothing 0 0
+                          const reopen of waitfd gave same fd (%d) string 0 0
+                          seq nothing 0 0
+                            . nothing 0 0
+                              . nothing 0 0
+                                name ctxt nothing 0 0
+                                name waitfd nothing 0 0
+                              name fd nothing 0 0
+    seq nothing 0 0
+      return nothing 0 0
+        call nothing 0 0
+          -> nothing 0 0
+            name sys nothing 0 0
+            name dup nothing 0 0
+          seq nothing 0 0
+            name fd1 nothing 0 0
+            seq nothing 0 0
+              name fd2 nothing 0 0
+typecheck tree: 
+fn(){} fn(ctxt: ref Context, redirs: ref Redirlist): list of int 0 0
+  name doredirs fn(ctxt: ref Context, redirs: ref Redirlist): list of int 0 0
+  seq nothing 0 0
+    if nothing 0 0
+      == nothing 0 0
+        . nothing 0 0
+          name redirs nothing 0 0
+          name r nothing 0 0
+        name nil polymorphic type 0 0
+      seq nothing 0 0
+        return nothing 0 0
+          name nil polymorphic type 0 0
+    seq nothing 0 0
+      := nothing 0 0
+        name keepfds nothing 0 0
+        . nothing 0 0
+          name ctxt nothing 0 0
+          name keepfds nothing 0 0
+      seq nothing 0 0
+        := nothing 0 0
+          name rl nothing 0 0
+          . nothing 0 0
+            name redirs nothing 0 0
+            name r nothing 0 0
+        seq nothing 0 0
+          = nothing 0 0
+            name redirs nothing 0 0
+            name nil polymorphic type 0 0
+          seq nothing 0 0
+            for nothing 0 0
+              != nothing 0 0
+                name rl nothing 0 0
+                name nil polymorphic type 0 0
+              seq nothing 0 0
+                scope nothing 0 0
+                  seq nothing 0 0
+                    := nothing 0 0
+                      tuple nothing 0 0
+                        seq nothing 0 0
+                          name rfd nothing 0 0
+                          seq nothing 0 0
+                            name path nothing 0 0
+                            seq nothing 0 0
+                              tuple nothing 0 0
+                                seq nothing 0 0
+                                  name mode nothing 0 0
+                                  seq nothing 0 0
+                                    name fd1 nothing 0 0
+                                    seq nothing 0 0
+                                      name fd2 nothing 0 0
+                      hd nothing 0 0
+                        name rl nothing 0 0
+                    seq nothing 0 0
+                      if nothing 0 0
+                        && nothing 0 0
+                          == nothing 0 0
+                            name path nothing 0 0
+                            name nil polymorphic type 0 0
+                          == nothing 0 0
+                            name rfd nothing 0 0
+                            name nil polymorphic type 0 0
+                        seq nothing 0 0
+                          scope nothing 0 0
+                            seq nothing 0 0
+                              if nothing 0 0
+                                || nothing 0 0
+                                  == nothing 0 0
+                                    name fd1 nothing 0 0
+                                    - nothing 0 0
+                                      const (1) int 0 0
+                                  == nothing 0 0
+                                    name fd2 nothing 0 0
+                                    - nothing 0 0
+                                      const (1) int 0 0
+                                seq nothing 0 0
+                                  call nothing 0 0
+                                    . nothing 0 0
+                                      name ctxt nothing 0 0
+                                      name fail nothing 0 0
+                                    seq nothing 0 0
+                                      const bad redir string 0 0
+                                      seq nothing 0 0
+                                        const sh: invalid dup string 0 0
+                              seq nothing 0 0
+                                if nothing 0 0
+                                  == nothing 0 0
+                                    call nothing 0 0
+                                      name dup nothing 0 0
+                                      seq nothing 0 0
+                                        name ctxt nothing 0 0
+                                        seq nothing 0 0
+                                          name fd2 nothing 0 0
+                                          seq nothing 0 0
+                                            name fd1 nothing 0 0
+                                
+typecheck tree: 
+fn(){} fn(): ref Sys->FD 0 0
+  name waitfd fn(): ref Sys->FD 0 0
+  seq nothing 0 0
+    := nothing 0 0
+      name wf nothing 0 0
+      + nothing 0 0
+        cast string 0 0
+          call nothing 0 0
+            -> nothing 0 0
+              name sys nothing 0 0
+              name pctl nothing 0 0
+            seq nothing 0 0
+              const (0) int 0 0
+              seq nothing 0 0
+                name nil polymorphic type 0 0
+        const /wait string 0 0
+    seq nothing 0 0
+      := nothing 0 0
+        name waitfd nothing 0 0
+        call nothing 0 0
+          -> nothing 0 0
+            name sys nothing 0 0
+            name open nothing 0 0
+          seq nothing 0 0
+            + nothing 0 0
+              const #p/ string 0 0
+              name wf nothing 0 0
+            seq nothing 0 0
+              -> nothing 0 0
+                name Sys nothing 0 0
+                name OREAD nothing 0 0
+      seq nothing 0 0
+        if nothing 0 0
+          == nothing 0 0
+            name waitfd nothing 0 0
+            name nil polymorphic type 0 0
+          seq nothing 0 0
+            = nothing 0 0
+              name waitfd nothing 0 0
+              call nothing 0 0
+                -> nothing 0 0
+                  name sys nothing 0 0
+                  name open nothing 0 0
+                seq nothing 0 0
+                  + nothing 0 0
+                    const /prog/ string 0 0
+                    name wf nothing 0 0
+                  seq nothing 0 0
+                    -> nothing 0 0
+                      name Sys nothing 0 0
+                      name OREAD nothing 0 0
+        seq nothing 0 0
+          if nothing 0 0
+            == nothing 0 0
+              name waitfd nothing 0 0
+              name nil polymorphic type 0 0
+            seq nothing 0 0
+              call nothing 0 0
+                name panic nothing 0 0
+                seq nothing 0 0
+                  call nothing 0 0
+                    -> nothing 0 0
+                      name sys nothing 0 0
+                      name sprint nothing 0 0
+                    seq nothing 0 0
+                      const cannot open wait file: %r string 0 0
+          seq nothing 0 0
+            return nothing 0 0
+              name waitfd nothing 0 0
+typecheck tree: 
+fn(){} fn(ctxt: ref Context, pids: list of int): string 0 0
+  name waitfor fn(ctxt: ref Context, pids: list of int): string 0 0
+  seq nothing 0 0
+    if nothing 0 0
+      == nothing 0 0
+        name pids nothing 0 0
+        name nil polymorphic type 0 0
+      seq nothing 0 0
+        return nothing 0 0
+          name nil polymorphic type 0 0
+    seq nothing 0 0
+      := nothing 0 0
+        name status nothing 0 0
+        array array of string 0 0
+          len nothing 0 0
+            name pids nothing 0 0
+      seq nothing 0 0
+        := nothing 0 0
+          name wcount nothing 0 0
+          len nothing 0 0
+            name status nothing 0 0
+        seq nothing 0 0
+          := nothing 0 0
+            name buf nothing 0 0
+            array array of byte 0 0
+              -> nothing 0 0
+                name Sys nothing 0 0
+                name WAITLEN nothing 0 0
+          seq nothing 0 0
+            := nothing 0 0
+              name onebad nothing 0 0
+              const (0) int 0 0
+            seq nothing 0 0
+              for nothing 0 0
+                nothing nothing 0 0
+                seq nothing 0 0
+                  scope nothing 0 0
+                    seq nothing 0 0
+                      := nothing 0 0
+                        name n nothing 0 0
+                        call nothing 0 0
+                          -> nothing 0 0
+                            name sys nothing 0 0
+                            name read nothing 0 0
+                          seq nothing 0 0
+                            . nothing 0 0
+                              name ctxt nothing 0 0
+                              name waitfd nothing 0 0
+                            seq nothing 0 0
+                              name buf nothing 0 0
+                              seq nothing 0 0
+                                len nothing 0 0
+                                  name buf nothing 0 0
+                      seq nothing 0 0
+                        if nothing 0 0
+                          < nothing 0 0
+                            name n nothing 0 0
+                            const (0) int 0 0
+                          seq nothing 0 0
+                            call nothing 0 0
+                              name panic nothing 0 0
+                              seq nothing 0 0
+                                call nothing 0 0
+                                  -> nothing 0 0
+                                    name sys nothing 0 0
+                                    name sprint nothing 0 0
+                                  seq nothing 0 0
+                                    const error on wait read: %r string 0 0
+                        seq nothing 0 0
+                          := nothing 0 0
+                            tuple nothing 0 0
+                              seq nothing 0 0
+                                name who nothing 0 0
+                                seq nothing 0 0
+                                  name line nothing 0 0
+                                  seq nothing 0 0
+                                    name s nothing 0 0
+                            call nothing 0 0
+                              name parsewaitstatus nothing 0 0
+                              seq nothing 0 0
+                                name ctxt nothing 0 0
+                                seq nothing 0 0
+                                  cast string 0 0
+                                    slice nothing 0 0
+                                      name buf nothing 0 0
+                                      seq nothing 0 0
+                                        const (0) int 0 0
+                                        name n nothing 0 0
+                          seq nothing 0 0
+                            if nothing 0 0
+                              != nothing 0 0
+                                name s nothing 0 0
+                                name nil polymorphic type 0 0
+                              seq nothing 0 0
+                                scope nothing 0 0
+                                  seq nothing 0 0
+                                    if nothing 0 0
+
+typecheck tree: 
+fn(){} fn(ctxt: ref Context, status: string): (int, string, string) 0 0
+  name parsewaitstatus fn(ctxt: ref Context, status: string): (int, string, string) 0 0
+  seq nothing 0 0
+    := nothing 0 0
+      name i nothing 0 0
+      const (0) int 0 0
+    seq nothing 0 0
+      for nothing 0 0
+        < nothing 0 0
+          name i nothing 0 0
+          len nothing 0 0
+            name status nothing 0 0
+        seq nothing 0 0
+          if nothing 0 0
+            == nothing 0 0
+              index nothing 0 0
+                name status nothing 0 0
+                name i nothing 0 0
+              const (32) int 0 0
+            seq nothing 0 0
+              break nothing 0 0
+          ++ nothing 0 0
+            name i nothing 0 0
+      seq nothing 0 0
+        if nothing 0 0
+          || nothing 0 0
+            == nothing 0 0
+              name i nothing 0 0
+              - nothing 0 0
+                len nothing 0 0
+                  name status nothing 0 0
+                const (1) int 0 0
+            != nothing 0 0
+              index nothing 0 0
+                name status nothing 0 0
+                + nothing 0 0
+                  name i nothing 0 0
+                  const (1) int 0 0
+              const (34) int 0 0
+          seq nothing 0 0
+            call nothing 0 0
+              . nothing 0 0
+                name ctxt nothing 0 0
+                name fail nothing 0 0
+              seq nothing 0 0
+                const bad wait read string 0 0
+                seq nothing 0 0
+                  call nothing 0 0
+                    -> nothing 0 0
+                      name sys nothing 0 0
+                      name sprint nothing 0 0
+                    seq nothing 0 0
+                      const sh: bad exit status '%s' string 0 0
+                      seq nothing 0 0
+                        name status nothing 0 0
+        seq nothing 0 0
+          seq nothing 0 0
+            += nothing 0 0
+              name i nothing 0 0
+              const (2) int 0 0
+            for nothing 0 0
+              < nothing 0 0
+                name i nothing 0 0
+                len nothing 0 0
+                  name status nothing 0 0
+              seq nothing 0 0
+                if nothing 0 0
+                  == nothing 0 0
+                    index nothing 0 0
+                      name status nothing 0 0
+                      name i nothing 0 0
+                    const (34) int 0 0
+                  seq nothing 0 0
+                    break nothing 0 0
+                ++ nothing 0 0
+                  name i nothing 0 0
+          seq nothing 0 0
+            if nothing 0 0
+              || nothing 0 0
+                > nothing 0 0
+                  name i nothing 0 0
+                  - nothing 0 0
+                    len nothing 0 0
+                      name status nothing 0 0
+                    const (2) int 0 0
+                != nothing 0 0
+                  index nothing 0 0
+                    name status nothing 0 0
+                    + nothing 0 0
+                      name i nothing 0 0
+                      const (1) int 0 0
+                  const (58) int 0 0
+              seq nothing 0 0
+                call nothing 0 0
+                  . nothing 0 0
+                    name ctxt nothing 0 0
+                    name fail nothing 0 0
+                  seq nothing 0 0
+                    const bad wait read string 0 0
+                    seq nothing 0 0
+                      call nothing 0 0
+                        -> nothing 0 0
+                          name sys nothing 0 0
+                          name sprint nothing 0 0
+                        seq nothing 0 0
+                          const sh: bad exit status '%s' string 0 0
+                          seq nothing 0 0
+                            name status nothing 0 0
+            seq nothing 0 0
+              return nothing 0 0
+                tuple nothing 0 0
+                  seq nothing 0 0
+                    cast int 0 0
+                      name status nothing 0 0
+                    seq nothing 0 0
+                      name status nothing 0 0
+           
+typecheck tree: 
+fn(){} fn(s: string) 0 0
+  name panic fn(s: string) 0 0
+  seq nothing 0 0
+    call nothing 0 0
+      -> nothing 0 0
+        name sys nothing 0 0
+        name fprint nothing 0 0
+      seq nothing 0 0
+        call nothing 0 0
+          name stderr nothing 0 0
+        seq nothing 0 0
+          const sh panic: %s
+ string 0 0
+          seq nothing 0 0
+            name s nothing 0 0
+    seq nothing 0 0
+      raise nothing 0 0
+        const panic string 0 0
+typecheck tree: 
+fn(){} fn(ctxt: ref Context, s: string) 0 0
+  name diagnostic fn(ctxt: ref Context, s: string) 0 0
+  seq nothing 0 0
+    if nothing 0 0
+      & nothing 0 0
+        call nothing 0 0
+          . nothing 0 0
+            name ctxt nothing 0 0
+            name options nothing 0 0
+        . nothing 0 0
+          name Context nothing 0 0
+          name VERBOSE nothing 0 0
+      seq nothing 0 0
+        call nothing 0 0
+          -> nothing 0 0
+            name sys nothing 0 0
+            name fprint nothing 0 0
+          seq nothing 0 0
+            call nothing 0 0
+              name stderr nothing 0 0
+            seq nothing 0 0
+              const sh: %s
+ string 0 0
+              seq nothing 0 0
+                name s nothing 0 0
+typecheck tree: 
+fn(){} fn(drawcontext: ref Draw->Context): ref Context 0 0
+  . fn(drawcontext: ref Draw->Context): ref Context 0 0
+    name Context Context 0 0
+    name new nothing 0 0
+  seq nothing 0 0
+    call nothing 0 0
+      name initialise nothing 0 0
+    seq nothing 0 0
+      if nothing 0 0
+        != nothing 0 0
+          name env nothing 0 0
+          name nil polymorphic type 0 0
+        seq nothing 0 0
+          call nothing 0 0
+            -> nothing 0 0
+              name env nothing 0 0
+              name clone nothing 0 0
+      seq nothing 0 0
+        := nothing 0 0
+          name ctxt nothing 0 0
+          ref nothing 0 0
+            call nothing 0 0
+              name Context nothing 0 0
+              seq nothing 0 0
+                ref nothing 0 0
+                  call nothing 0 0
+                    name Environment nothing 0 0
+                    seq nothing 0 0
+                      ref nothing 0 0
+                        call nothing 0 0
+                          name Builtins nothing 0 0
+                          seq nothing 0 0
+                            name nil polymorphic type 0 0
+                            seq nothing 0 0
+                              const (0) int 0 0
+                      seq nothing 0 0
+                        ref nothing 0 0
+                          call nothing 0 0
+                            name Builtins nothing 0 0
+                            seq nothing 0 0
+                              name nil polymorphic type 0 0
+                              seq nothing 0 0
+                                const (0) int 0 0
+                        seq nothing 0 0
+                          name nil polymorphic type 0 0
+                          seq nothing 0 0
+                            call nothing 0 0
+                              name newlocalenv nothing 0 0
+                              seq nothing 0 0
+                                name nil polymorphic type 0 0
+                seq nothing 0 0
+                  call nothing 0 0
+                    name waitfd nothing 0 0
+                  seq nothing 0 0
+                    name drawcontext nothing 0 0
+                    seq nothing 0 0
+                      :: nothing 0 0
+                        const (0) int 0 0
+                        :: nothing 0 0
+                          const (1) int 0 0
+                          :: nothing 0 0
+                            const (2) int 0 0
+                            name nil polymorphic type 0 0
+        seq nothing 0 0
+          call nothing 0 0
+            -> nothing 0 0
+              name myselfbuiltin nothing 0 0
+              name initbuiltin nothing 0 0
+            seq nothing 0 0
+              name ctxt nothing 0 0
+              seq nothing 0 0
+                name myself nothing 0 0
+          seq nothing 0 0
+            = nothing 0 0
+              . nothing 0 0
+                . nothing 0 0
+                  . nothing 0 0
+                    name ctxt nothing 0 0
+                    name env nothing 0 0
+                  name localenv nothing 0 0
+                name flags nothing 0 0
+              . nothing 0 0
+                name ctxt nothing 0 0
+                name VERBOSE nothing 0 0
+            seq nothing 0 0
+              seq nothing 0 0
+                := nothing 0 0
+                  name vl nothing 0 0
+                  call nothing 0 0
+                    . nothing 0 0
+                      name ctxt nothing 0 0
+                      name get nothing 0 0
+                    seq nothing 0 0
+                      const autoload string 0 0
+                for nothing 0 0
+                  != nothing 0 0
+                    name vl nothing 0 0
+                    name nil polymorphic type 0 0
+                  seq nothing 0 0
+                    if nothing 0 0
+                      && nothing 0 0
+                        == nothing 0 0
+                          . nothing 0 0
+                            hd nothing 0 0
+                              name vl nothing 0 0
+                            name cmd nothing 0 0
+                          name nil polymorphic type 0 0
+         
+typecheck tree: 
+fn(){} fn(ctxt: self ref Context, copyenv: int): ref Context 0 0
+  . fn(c: self ref Context, copyenv: int): ref Context 0 0
+    name Context Context 0 0
+    name copy nothing 0 0
+  seq nothing 0 0
+    := nothing 0 0
+      name nctxt nothing 0 0
+      ref nothing 0 0
+        call nothing 0 0
+          name Context nothing 0 0
+          seq nothing 0 0
+            . nothing 0 0
+              name ctxt nothing 0 0
+              name env nothing 0 0
+            seq nothing 0 0
+              call nothing 0 0
+                name waitfd nothing 0 0
+              seq nothing 0 0
+                . nothing 0 0
+                  name ctxt nothing 0 0
+                  name drawcontext nothing 0 0
+                seq nothing 0 0
+                  . nothing 0 0
+                    name ctxt nothing 0 0
+                    name keepfds nothing 0 0
+    seq nothing 0 0
+      if nothing 0 0
+        name copyenv nothing 0 0
+        seq nothing 0 0
+          scope nothing 0 0
+            seq nothing 0 0
+              if nothing 0 0
+                != nothing 0 0
+                  name env nothing 0 0
+                  name nil polymorphic type 0 0
+                seq nothing 0 0
+                  call nothing 0 0
+                    -> nothing 0 0
+                      name env nothing 0 0
+                      name clone nothing 0 0
+              seq nothing 0 0
+                = nothing 0 0
+                  . nothing 0 0
+                    name nctxt nothing 0 0
+                    name env nothing 0 0
+                  ref nothing 0 0
+                    call nothing 0 0
+                      name Environment nothing 0 0
+                      seq nothing 0 0
+                        call nothing 0 0
+                          name copybuiltins nothing 0 0
+                          seq nothing 0 0
+                            . nothing 0 0
+                              . nothing 0 0
+                                name ctxt nothing 0 0
+                                name env nothing 0 0
+                              name sbuiltins nothing 0 0
+                        seq nothing 0 0
+                          call nothing 0 0
+                            name copybuiltins nothing 0 0
+                            seq nothing 0 0
+                              . nothing 0 0
+                                . nothing 0 0
+                                  name ctxt nothing 0 0
+                                  name env nothing 0 0
+                                name builtins nothing 0 0
+                          seq nothing 0 0
+                            . nothing 0 0
+                              . nothing 0 0
+                                name ctxt nothing 0 0
+                                name env nothing 0 0
+                              name bmods nothing 0 0
+                            seq nothing 0 0
+                              call nothing 0 0
+                                name copylocalenv nothing 0 0
+                                seq nothing 0 0
+                                  . nothing 0 0
+                                    . nothing 0 0
+                                      name ctxt nothing 0 0
+                                      name env nothing 0 0
+                                    name localenv nothing 0 0
+      seq nothing 0 0
+        return nothing 0 0
+          name nctxt nothing 0 0
+typecheck tree: 
+fn(){} fn(ctxt: self ref Context, name: string, val: list of ref Listnode) 0 0
+  . fn(c: self ref Context, name: string, val: list of ref Listnode) 0 0
+    name Context Context 0 0
+    name set nothing 0 0
+  seq nothing 0 0
+    := nothing 0 0
+      name e nothing 0 0
+      . nothing 0 0
+        . nothing 0 0
+          name ctxt nothing 0 0
+          name env nothing 0 0
+        name localenv nothing 0 0
+    seq nothing 0 0
+      := nothing 0 0
+        name idx nothing 0 0
+        call nothing 0 0
+          name hashfn nothing 0 0
+          seq nothing 0 0
+            name name nothing 0 0
+            seq nothing 0 0
+              len nothing 0 0
+                . nothing 0 0
+                  name e nothing 0 0
+                  name vars nothing 0 0
+      seq nothing 0 0
+        for nothing 0 0
+          nothing nothing 0 0
+          seq nothing 0 0
+            scope nothing 0 0
+              seq nothing 0 0
+                := nothing 0 0
+                  name v nothing 0 0
+                  call nothing 0 0
+                    name hashfind nothing 0 0
+                    seq nothing 0 0
+                      . nothing 0 0
+                        name e nothing 0 0
+                        name vars nothing 0 0
+                      seq nothing 0 0
+                        name idx nothing 0 0
+                        seq nothing 0 0
+                          name name nothing 0 0
+                seq nothing 0 0
+                  if nothing 0 0
+                    == nothing 0 0
+                      name v nothing 0 0
+                      name nil polymorphic type 0 0
+                    seq nothing 0 0
+                      scope nothing 0 0
+                        seq nothing 0 0
+                          if nothing 0 0
+                            == nothing 0 0
+                              . nothing 0 0
+                                name e nothing 0 0
+                                name pushed nothing 0 0
+                              name nil polymorphic type 0 0
+                            seq nothing 0 0
+                              scope nothing 0 0
+                                seq nothing 0 0
+                                  := nothing 0 0
+                                    name flags nothing 0 0
+                                    . nothing 0 0
+                                      name Var nothing 0 0
+                                      name CHANGED nothing 0 0
+                                  seq nothing 0 0
+                                    if nothing 0 0
+                                      call nothing 0 0
+                                        name noexport nothing 0 0
+                                        seq nothing 0 0
+                                          name name nothing 0 0
+                                      seq nothing 0 0
+                                        |= nothing 0 0
+                                          name flags nothing 0 0
+                                          . nothing 0 0
+                                            name Var nothing 0 0
+                                            name NOEXPORT nothing 0 0
+                                    seq nothing 0 0
+                                      call nothing 0 0
+                                        name hashadd nothing 0 0
+                                        seq nothing 0 0
+                                          . nothing 0 0
+                                            name e nothing 0 0
+                                            name vars nothing 0 0
+                                          seq nothing 0 0
+                                            name idx nothing 0 0
+                                            seq nothing 0 0
+                                              ref nothing 0 0
+                                                call nothing 0 0
+                                                  name Var nothing 0 0
+                                                  seq nothing 0 0
+                                                    name name nothing 0 0
+                         
+typecheck tree: 
+fn(){} fn(ctxt: self ref Context, name: string): list of ref Listnode 0 0
+  . fn(c: self ref Context, name: string): list of ref Listnode 0 0
+    name Context Context 0 0
+    name get nothing 0 0
+  seq nothing 0 0
+    if nothing 0 0
+      == nothing 0 0
+        name name nothing 0 0
+        name nil polymorphic type 0 0
+      seq nothing 0 0
+        return nothing 0 0
+          name nil polymorphic type 0 0
+    seq nothing 0 0
+      := nothing 0 0
+        name idx nothing 0 0
+        - nothing 0 0
+          const (1) int 0 0
+      seq nothing 0 0
+        if nothing 0 0
+          && nothing 0 0
+            > nothing 0 0
+              index nothing 0 0
+                name name nothing 0 0
+                const (0) int 0 0
+              const (48) int 0 0
+            <= nothing 0 0
+              index nothing 0 0
+                name name nothing 0 0
+                const (0) int 0 0
+              const (57) int 0 0
+          seq nothing 0 0
+            scope nothing 0 0
+              seq nothing 0 0
+                vardecl int 0 0
+                  seq nothing 0 0
+                seq nothing 0 0
+                  seq nothing 0 0
+                    = nothing 0 0
+                      name i nothing 0 0
+                      const (0) int 0 0
+                    for nothing 0 0
+                      < nothing 0 0
+                        name i nothing 0 0
+                        len nothing 0 0
+                          name name nothing 0 0
+                      seq nothing 0 0
+                        if nothing 0 0
+                          || nothing 0 0
+                            < nothing 0 0
+                              index nothing 0 0
+                                name name nothing 0 0
+                                name i nothing 0 0
+                              const (48) int 0 0
+                            > nothing 0 0
+                              index nothing 0 0
+                                name name nothing 0 0
+                                name i nothing 0 0
+                              const (57) int 0 0
+                          seq nothing 0 0
+                            break nothing 0 0
+                        ++ nothing 0 0
+                          name i nothing 0 0
+                  seq nothing 0 0
+                    if nothing 0 0
+                      >= nothing 0 0
+                        name i nothing 0 0
+                        len nothing 0 0
+                          name name nothing 0 0
+                      seq nothing 0 0
+                        scope nothing 0 0
+                          seq nothing 0 0
+                            = nothing 0 0
+                              name idx nothing 0 0
+                              - nothing 0 0
+                                cast int 0 0
+                                  name name nothing 0 0
+                                const (1) int 0 0
+                            seq nothing 0 0
+                              = nothing 0 0
+                                name name nothing 0 0
+                                const * string 0 0
+        seq nothing 0 0
+          := nothing 0 0
+            name v nothing 0 0
+            call nothing 0 0
+              name varfind nothing 0 0
+              seq nothing 0 0
+                . nothing 0 0
+                  . nothing 0 0
+                    name ctxt nothing 0 0
+                    name env nothing 0 0
+                  name localenv nothing 0 0
+                seq nothing 0 0
+                  name name nothing 0 0
+          seq nothing 0 0
+            if nothing 0 0
+              != nothing 0 0
+                name v nothing 0 0
+                name nil polymorphic type 0 0
+              seq nothing 0 0
+                scope nothing 0 0
+                  seq nothing 0 0
+                    if nothing 0 0
+                      != nothing 0 0
+                        name idx nothing 0 0
+                        - nothing 0 0
+                          const (1) int 0 0
+                      seq nothing 0 0
+                        return nothing 0 0
+                          call n
+typecheck tree: 
+fn(){} fn(ctxt: self ref Context): list of (string, list of ref Listnode) 0 0
+  . fn(c: self ref Context): list of (string, list of ref Listnode) 0 0
+    name Context Context 0 0
+    name envlist nothing 0 0
+  seq nothing 0 0
+    := nothing 0 0
+      name t nothing 0 0
+      array array of list of ref Var 0 0
+        name ENVHASHSIZE nothing 0 0
+    seq nothing 0 0
+      seq nothing 0 0
+        := nothing 0 0
+          name e nothing 0 0
+          . nothing 0 0
+            . nothing 0 0
+              name ctxt nothing 0 0
+              name env nothing 0 0
+            name localenv nothing 0 0
+        for nothing 0 0
+          != nothing 0 0
+            name e nothing 0 0
+            name nil polymorphic type 0 0
+          seq nothing 0 0
+            scope nothing 0 0
+              seq nothing 0 0
+                := nothing 0 0
+                  name i nothing 0 0
+                  const (0) int 0 0
+                seq nothing 0 0
+                  for nothing 0 0
+                    < nothing 0 0
+                      name i nothing 0 0
+                      len nothing 0 0
+                        . nothing 0 0
+                          name e nothing 0 0
+                          name vars nothing 0 0
+                    seq nothing 0 0
+                      scope nothing 0 0
+                        seq nothing 0 0
+                          := nothing 0 0
+                            name vl nothing 0 0
+                            index nothing 0 0
+                              . nothing 0 0
+                                name e nothing 0 0
+                                name vars nothing 0 0
+                              name i nothing 0 0
+                          seq nothing 0 0
+                            for nothing 0 0
+                              != nothing 0 0
+                                name vl nothing 0 0
+                                name nil polymorphic type 0 0
+                              seq nothing 0 0
+                                scope nothing 0 0
+                                  seq nothing 0 0
+                                    := nothing 0 0
+                                      name v nothing 0 0
+                                      hd nothing 0 0
+                                        name vl nothing 0 0
+                                    seq nothing 0 0
+                                      := nothing 0 0
+                                        name idx nothing 0 0
+                                        call nothing 0 0
+                                          name hashfn nothing 0 0
+                                          seq nothing 0 0
+                                            . nothing 0 0
+                                              name v nothing 0 0
+                                              name name nothing 0 0
+                                            seq nothing 0 0
+                                              len nothing 0 0
+                                                . nothing 0 0
+                                                  name e nothing 0 0
+                                                  name vars nothing 0 0
+                                      seq nothing 0 0
+                                        if nothing 0 0
+                                          == nothing 0 0
+                                            call nothing 0 0
+                                              name hashfind nothing 0 0
+                                              seq nothing 0 0
+                                                name t nothing 0 0
+                                                seq nothing 0 0
+                                                  name idx nothing 0 0
+                                                  seq nothing 0 0
+                                                    . nothing 0 0
+                                                      name v nothing 0 0
+                                                      name name nothing 0 0
+                                            name nil polymorphic type 0 0
+                             
+typecheck tree: 
+fn(){} fn(ctxt: self ref Context, name: string, val: list of ref Listnode) 0 0
+  . fn(c: self ref Context, name: string, val: list of ref Listnode) 0 0
+    name Context Context 0 0
+    name setlocal nothing 0 0
+  seq nothing 0 0
+    := nothing 0 0
+      name e nothing 0 0
+      . nothing 0 0
+        . nothing 0 0
+          name ctxt nothing 0 0
+          name env nothing 0 0
+        name localenv nothing 0 0
+    seq nothing 0 0
+      := nothing 0 0
+        name idx nothing 0 0
+        call nothing 0 0
+          name hashfn nothing 0 0
+          seq nothing 0 0
+            name name nothing 0 0
+            seq nothing 0 0
+              len nothing 0 0
+                . nothing 0 0
+                  name e nothing 0 0
+                  name vars nothing 0 0
+      seq nothing 0 0
+        := nothing 0 0
+          name v nothing 0 0
+          call nothing 0 0
+            name hashfind nothing 0 0
+            seq nothing 0 0
+              . nothing 0 0
+                name e nothing 0 0
+                name vars nothing 0 0
+              seq nothing 0 0
+                name idx nothing 0 0
+                seq nothing 0 0
+                  name name nothing 0 0
+        seq nothing 0 0
+          if nothing 0 0
+            == nothing 0 0
+              name v nothing 0 0
+              name nil polymorphic type 0 0
+            seq nothing 0 0
+              scope nothing 0 0
+                seq nothing 0 0
+                  := nothing 0 0
+                    name flags nothing 0 0
+                    . nothing 0 0
+                      name Var nothing 0 0
+                      name CHANGED nothing 0 0
+                  seq nothing 0 0
+                    if nothing 0 0
+                      call nothing 0 0
+                        name noexport nothing 0 0
+                        seq nothing 0 0
+                          name name nothing 0 0
+                      seq nothing 0 0
+                        |= nothing 0 0
+                          name flags nothing 0 0
+                          . nothing 0 0
+                            name Var nothing 0 0
+                            name NOEXPORT nothing 0 0
+                    seq nothing 0 0
+                      call nothing 0 0
+                        name hashadd nothing 0 0
+                        seq nothing 0 0
+                          . nothing 0 0
+                            name e nothing 0 0
+                            name vars nothing 0 0
+                          seq nothing 0 0
+                            name idx nothing 0 0
+                            seq nothing 0 0
+                              ref nothing 0 0
+                                call nothing 0 0
+                                  name Var nothing 0 0
+                                  seq nothing 0 0
+                                    name name nothing 0 0
+                                    seq nothing 0 0
+                                      name val nothing 0 0
+                                      seq nothing 0 0
+                                        name flags nothing 0 0
+              scope nothing 0 0
+                seq nothing 0 0
+                  = nothing 0 0
+                    . nothing 0 0
+                      name v nothing 0 0
+                      name val nothing 0 0
+                    name val nothing 0 0
+                  seq nothing 0 0
+                    |= nothing 0 0
+                      . nothing 0 0
+                        name v nothing 0 0
+                        name flags nothing 0 0
+                      . nothing 0 0
+                        name Var nothing 0 0
+                        name CHANGED nothing 0 0
+typecheck tree: 
+fn(){} fn(ctxt: self ref Context) 0 0
+  . fn(c: self ref Context) 0 0
+    name Context Context 0 0
+    name push nothing 0 0
+  seq nothing 0 0
+    = nothing 0 0
+      . nothing 0 0
+        . nothing 0 0
+          name ctxt nothing 0 0
+          name env nothing 0 0
+        name localenv nothing 0 0
+      call nothing 0 0
+        name newlocalenv nothing 0 0
+        seq nothing 0 0
+          . nothing 0 0
+            . nothing 0 0
+              name ctxt nothing 0 0
+              name env nothing 0 0
+            name localenv nothing 0 0
+typecheck tree: 
+fn(){} fn(ctxt: self ref Context) 0 0
+  . fn(c: self ref Context) 0 0
+    name Context Context 0 0
+    name pop nothing 0 0
+  seq nothing 0 0
+    if nothing 0 0
+      == nothing 0 0
+        . nothing 0 0
+          . nothing 0 0
+            . nothing 0 0
+              name ctxt nothing 0 0
+              name env nothing 0 0
+            name localenv nothing 0 0
+          name pushed nothing 0 0
+        name nil polymorphic type 0 0
+      seq nothing 0 0
+        call nothing 0 0
+          name panic nothing 0 0
+          seq nothing 0 0
+            const unbalanced contexts in shell environment string 0 0
+        scope nothing 0 0
+          seq nothing 0 0
+            := nothing 0 0
+              name oldv nothing 0 0
+              . nothing 0 0
+                . nothing 0 0
+                  . nothing 0 0
+                    name ctxt nothing 0 0
+                    name env nothing 0 0
+                  name localenv nothing 0 0
+                name vars nothing 0 0
+            seq nothing 0 0
+              = nothing 0 0
+                . nothing 0 0
+                  . nothing 0 0
+                    name ctxt nothing 0 0
+                    name env nothing 0 0
+                  name localenv nothing 0 0
+                . nothing 0 0
+                  . nothing 0 0
+                    . nothing 0 0
+                      name ctxt nothing 0 0
+                      name env nothing 0 0
+                    name localenv nothing 0 0
+                  name pushed nothing 0 0
+              seq nothing 0 0
+                seq nothing 0 0
+                  := nothing 0 0
+                    name i nothing 0 0
+                    const (0) int 0 0
+                  for nothing 0 0
+                    < nothing 0 0
+                      name i nothing 0 0
+                      len nothing 0 0
+                        name oldv nothing 0 0
+                    seq nothing 0 0
+                      scope nothing 0 0
+                        seq nothing 0 0
+                          := nothing 0 0
+                            name vl nothing 0 0
+                            index nothing 0 0
+                              name oldv nothing 0 0
+                              name i nothing 0 0
+                          seq nothing 0 0
+                            for nothing 0 0
+                              != nothing 0 0
+                                name vl nothing 0 0
+                                name nil polymorphic type 0 0
+                              seq nothing 0 0
+                                scope nothing 0 0
+                                  seq nothing 0 0
+                                    if nothing 0 0
+                                      != nothing 0 0
+                                        := nothing 0 0
+                                          name v nothing 0 0
+                                          call nothing 0 0
+                                            name varfind nothing 0 0
+                                            seq nothing 0 0
+                                              . nothing 0 0
+                                                . nothing 0 0
+                                                  name ctxt nothing 0 0
+                                                  name env nothing 0 0
+                                                name localenv nothing 0 0
+                                              seq nothing 0 0
+                                                . nothing 0 0
+                                                  hd nothing 0 0
+                                                    name vl nothing 0 0
+                                                  name name nothing 0 0
+                                        name nil polymorphic type 0 0
+                                      seq nothing 0 0
+                                        |= nothing 0 0
+                                          . nothing 0 0
+                                            name v nothing 0 0
+                                            name flags nothing 0 0
+                                          . 
+typecheck tree: 
+fn(){} fn(ctxt: self ref Context, args: list of ref Listnode, last: int): string 0 0
+  . fn(c: self ref Context, args: list of ref Listnode, last: int): string 0 0
+    name Context Context 0 0
+    name run nothing 0 0
+  seq nothing 0 0
+    if nothing 0 0
+      || nothing 0 0
+        == nothing 0 0
+          name args nothing 0 0
+          name nil polymorphic type 0 0
+        && nothing 0 0
+          == nothing 0 0
+            . nothing 0 0
+              hd nothing 0 0
+                name args nothing 0 0
+              name cmd nothing 0 0
+            name nil polymorphic type 0 0
+          == nothing 0 0
+            . nothing 0 0
+              hd nothing 0 0
+                name args nothing 0 0
+              name word nothing 0 0
+            name nil polymorphic type 0 0
+      seq nothing 0 0
+        return nothing 0 0
+          name nil polymorphic type 0 0
+    seq nothing 0 0
+      := nothing 0 0
+        name cmd nothing 0 0
+        hd nothing 0 0
+          name args nothing 0 0
+      seq nothing 0 0
+        if nothing 0 0
+          || nothing 0 0
+            != nothing 0 0
+              . nothing 0 0
+                name cmd nothing 0 0
+                name cmd nothing 0 0
+              name nil polymorphic type 0 0
+            == nothing 0 0
+              index nothing 0 0
+                . nothing 0 0
+                  name cmd nothing 0 0
+                  name word nothing 0 0
+                const (0) int 0 0
+              const (123) int 0 0
+          seq nothing 0 0
+            return nothing 0 0
+              call nothing 0 0
+                name runblock nothing 0 0
+                seq nothing 0 0
+                  name ctxt nothing 0 0
+                  seq nothing 0 0
+                    name args nothing 0 0
+                    seq nothing 0 0
+                      name last nothing 0 0
+        seq nothing 0 0
+          if nothing 0 0
+            & nothing 0 0
+              call nothing 0 0
+                . nothing 0 0
+                  name ctxt nothing 0 0
+                  name options nothing 0 0
+              . nothing 0 0
+                name ctxt nothing 0 0
+                name EXECPRINT nothing 0 0
+            seq nothing 0 0
+              call nothing 0 0
+                -> nothing 0 0
+                  name sys nothing 0 0
+                  name fprint nothing 0 0
+                seq nothing 0 0
+                  call nothing 0 0
+                    name stderr nothing 0 0
+                  seq nothing 0 0
+                    const %s
+ string 0 0
+                    seq nothing 0 0
+                      call nothing 0 0
+                        name quoted nothing 0 0
+                        seq nothing 0 0
+                          name args nothing 0 0
+                          seq nothing 0 0
+                            const (0) int 0 0
+          seq nothing 0 0
+            := nothing 0 0
+              tuple nothing 0 0
+                seq nothing 0 0
+                  name doneit nothing 0 0
+                  seq nothing 0 0
+                    name status nothing 0 0
+              call nothing 0 0
+                name trybuiltin nothing 0 0
+                seq nothing 0 0
+                  name ctxt nothing 0 0
+                  seq nothing 0 0
+                    name args nothing 0 0
+                    seq nothing 0 0
+                      name last nothing 0 0
+            seq nothing 0 0
+              if nothing 0 0
+                ! nothing 0 0
+                  name doneit nothing 0 0
+                seq nothing 0 0
+                  = nothing 0 0
+                    name status nothing 0 0
+                    call nothing 0 0
+                      name runexternal nothing 0 0
+                      seq nothing 0 0
+                        name ctxt nothing 0 0
+                        seq nothing 0 0
+                          name args nothing 0 0
+                          seq nothing 0 0
+                            name last nothing 0 0
+              seq nothing 0 0
+                return nothing 0 0
+                  name status nothing 0 0
+typecheck tree: 
+fn(){} fn(ctxt: self ref Context, name: string, mod: Shellbuiltin) 0 0
+  . fn(c: self ref Context, name: string, mod: Shellbuiltin) 0 0
+    name Context Context 0 0
+    name addmodule nothing 0 0
+  seq nothing 0 0
+    call nothing 0 0
+      -> nothing 0 0
+        name mod nothing 0 0
+        name initbuiltin nothing 0 0
+      seq nothing 0 0
+        name ctxt nothing 0 0
+        seq nothing 0 0
+          name myself nothing 0 0
+    seq nothing 0 0
+      = nothing 0 0
+        . nothing 0 0
+          . nothing 0 0
+            name ctxt nothing 0 0
+            name env nothing 0 0
+          name bmods nothing 0 0
+        :: nothing 0 0
+          tuple nothing 0 0
+            seq nothing 0 0
+              name name nothing 0 0
+              seq nothing 0 0
+                call nothing 0 0
+                  -> nothing 0 0
+                    name mod nothing 0 0
+                    name getself nothing 0 0
+          . nothing 0 0
+            . nothing 0 0
+              name ctxt nothing 0 0
+              name env nothing 0 0
+            name bmods nothing 0 0
+typecheck tree: 
+fn(){} fn(c: self ref Context, name: string, mod: Shellbuiltin) 0 0
+  . fn(c: self ref Context, name: string, mod: Shellbuiltin) 0 0
+    name Context Context 0 0
+    name addbuiltin nothing 0 0
+  seq nothing 0 0
+    call nothing 0 0
+      name addbuiltin nothing 0 0
+      seq nothing 0 0
+        . nothing 0 0
+          . nothing 0 0
+            name c nothing 0 0
+            name env nothing 0 0
+          name builtins nothing 0 0
+        seq nothing 0 0
+          name name nothing 0 0
+          seq nothing 0 0
+            name mod nothing 0 0
+typecheck tree: 
+fn(){} fn(c: self ref Context, name: string, mod: Shellbuiltin) 0 0
+  . fn(c: self ref Context, name: string, mod: Shellbuiltin) 0 0
+    name Context Context 0 0
+    name removebuiltin nothing 0 0
+  seq nothing 0 0
+    call nothing 0 0
+      name removebuiltin nothing 0 0
+      seq nothing 0 0
+        . nothing 0 0
+          . nothing 0 0
+            name c nothing 0 0
+            name env nothing 0 0
+          name builtins nothing 0 0
+        seq nothing 0 0
+          name name nothing 0 0
+          seq nothing 0 0
+            name mod nothing 0 0
+typecheck tree: 
+fn(){} fn(c: self ref Context, name: string, mod: Shellbuiltin) 0 0
+  . fn(c: self ref Context, name: string, mod: Shellbuiltin) 0 0
+    name Context Context 0 0
+    name addsbuiltin nothing 0 0
+  seq nothing 0 0
+    call nothing 0 0
+      name addbuiltin nothing 0 0
+      seq nothing 0 0
+        . nothing 0 0
+          . nothing 0 0
+            name c nothing 0 0
+            name env nothing 0 0
+          name sbuiltins nothing 0 0
+        seq nothing 0 0
+          name name nothing 0 0
+          seq nothing 0 0
+            name mod nothing 0 0
+typecheck tree: 
+fn(){} fn(c: self ref Context, name: string, mod: Shellbuiltin) 0 0
+  . fn(c: self ref Context, name: string, mod: Shellbuiltin) 0 0
+    name Context Context 0 0
+    name removesbuiltin nothing 0 0
+  seq nothing 0 0
+    call nothing 0 0
+      name removebuiltin nothing 0 0
+      seq nothing 0 0
+        . nothing 0 0
+          . nothing 0 0
+            name c nothing 0 0
+            name env nothing 0 0
+          name sbuiltins nothing 0 0
+        seq nothing 0 0
+          name name nothing 0 0
+          seq nothing 0 0
+            name mod nothing 0 0
+typecheck tree: 
+fn(){} fn(e: ref Localenv, name: string): ref Var 0 0
+  name varfind fn(e: ref Localenv, name: string): ref Var 0 0
+  seq nothing 0 0
+    := nothing 0 0
+      name idx nothing 0 0
+      call nothing 0 0
+        name hashfn nothing 0 0
+        seq nothing 0 0
+          name name nothing 0 0
+          seq nothing 0 0
+            len nothing 0 0
+              . nothing 0 0
+                name e nothing 0 0
+                name vars nothing 0 0
+    seq nothing 0 0
+      for nothing 0 0
+        != nothing 0 0
+          name e nothing 0 0
+          name nil polymorphic type 0 0
+        seq nothing 0 0
+          seq nothing 0 0
+            := nothing 0 0
+              name vl nothing 0 0
+              index nothing 0 0
+                . nothing 0 0
+                  name e nothing 0 0
+                  name vars nothing 0 0
+                name idx nothing 0 0
+            for nothing 0 0
+              != nothing 0 0
+                name vl nothing 0 0
+                name nil polymorphic type 0 0
+              seq nothing 0 0
+                if nothing 0 0
+                  == nothing 0 0
+                    . nothing 0 0
+                      hd nothing 0 0
+                        name vl nothing 0 0
+                      name name nothing 0 0
+                    name name nothing 0 0
+                  seq nothing 0 0
+                    return nothing 0 0
+                      hd nothing 0 0
+                        name vl nothing 0 0
+                = nothing 0 0
+                  name vl nothing 0 0
+                  tl nothing 0 0
+                    name vl nothing 0 0
+          = nothing 0 0
+            name e nothing 0 0
+            . nothing 0 0
+              name e nothing 0 0
+              name pushed nothing 0 0
+      seq nothing 0 0
+        return nothing 0 0
+          name nil polymorphic type 0 0
+typecheck tree: 
+fn(){} fn(ctxt: self ref Context, ename: string, err: string) 0 0
+  . fn(c: self ref Context, ename: string, msg: string) 0 0
+    name Context Context 0 0
+    name fail nothing 0 0
+  seq nothing 0 0
+    if nothing 0 0
+      & nothing 0 0
+        call nothing 0 0
+          . nothing 0 0
+            name ctxt nothing 0 0
+            name options nothing 0 0
+        . nothing 0 0
+          name Context nothing 0 0
+          name VERBOSE nothing 0 0
+      seq nothing 0 0
+        call nothing 0 0
+          -> nothing 0 0
+            name sys nothing 0 0
+            name fprint nothing 0 0
+          seq nothing 0 0
+            call nothing 0 0
+              name stderr nothing 0 0
+            seq nothing 0 0
+              const %s
+ string 0 0
+              seq nothing 0 0
+                name err nothing 0 0
+    seq nothing 0 0
+      raise nothing 0 0
+        + nothing 0 0
+          const fail: string 0 0
+          name ename nothing 0 0
+typecheck tree: 
+fn(){} fn(ctxt: self ref Context, flags: int, on: int): int 0 0
+  . fn(c: self ref Context, flags: int, on: int): int 0 0
+    name Context Context 0 0
+    name setoptions nothing 0 0
+  seq nothing 0 0
+    := nothing 0 0
+      name old nothing 0 0
+      . nothing 0 0
+        . nothing 0 0
+          . nothing 0 0
+            name ctxt nothing 0 0
+            name env nothing 0 0
+          name localenv nothing 0 0
+        name flags nothing 0 0
+    seq nothing 0 0
+      if nothing 0 0
+        name on nothing 0 0
+        seq nothing 0 0
+          |= nothing 0 0
+            . nothing 0 0
+              . nothing 0 0
+                . nothing 0 0
+                  name ctxt nothing 0 0
+                  name env nothing 0 0
+                name localenv nothing 0 0
+              name flags nothing 0 0
+            name flags nothing 0 0
+          &= nothing 0 0
+            . nothing 0 0
+              . nothing 0 0
+                . nothing 0 0
+                  name ctxt nothing 0 0
+                  name env nothing 0 0
+                name localenv nothing 0 0
+              name flags nothing 0 0
+            ~ nothing 0 0
+              name flags nothing 0 0
+      seq nothing 0 0
+        return nothing 0 0
+          name old nothing 0 0
+typecheck tree: 
+fn(){} fn(ctxt: self ref Context): int 0 0
+  . fn(c: self ref Context): int 0 0
+    name Context Context 0 0
+    name options nothing 0 0
+  seq nothing 0 0
+    return nothing 0 0
+      . nothing 0 0
+        . nothing 0 0
+          . nothing 0 0
+            name ctxt nothing 0 0
+            name env nothing 0 0
+          name localenv nothing 0 0
+        name flags nothing 0 0
+typecheck tree: 
+fn(){} fn(s: string, n: int): int 0 0
+  name hashfn fn(s: string, n: int): int 0 0
+  seq nothing 0 0
+    := nothing 0 0
+      name h nothing 0 0
+      const (0) int 0 0
+    seq nothing 0 0
+      := nothing 0 0
+        name m nothing 0 0
+        len nothing 0 0
+          name s nothing 0 0
+      seq nothing 0 0
+        seq nothing 0 0
+          := nothing 0 0
+            name i nothing 0 0
+            const (0) int 0 0
+          for nothing 0 0
+            < nothing 0 0
+              name i nothing 0 0
+              name m nothing 0 0
+            seq nothing 0 0
+              scope nothing 0 0
+                seq nothing 0 0
+                  = nothing 0 0
+                    name h nothing 0 0
+                    + nothing 0 0
+                      * nothing 0 0
+                        const (65599) int 0 0
+                        name h nothing 0 0
+                      index nothing 0 0
+                        name s nothing 0 0
+                        name i nothing 0 0
+              ++ nothing 0 0
+                name i nothing 0 0
+        seq nothing 0 0
+          return nothing 0 0
+            % nothing 0 0
+              & nothing 0 0
+                name h nothing 0 0
+                const (2147483647) int 0 0
+              name n nothing 0 0
+typecheck tree: 
+fn(){} fn(ht: array of list of ref Var, idx: int, n: string): ref Var 0 0
+  name hashfind fn(ht: array of list of ref Var, idx: int, n: string): ref Var 0 0
+  seq nothing 0 0
+    := nothing 0 0
+      name ent nothing 0 0
+      index nothing 0 0
+        name ht nothing 0 0
+        name idx nothing 0 0
+    seq nothing 0 0
+      for nothing 0 0
+        != nothing 0 0
+          name ent nothing 0 0
+          name nil polymorphic type 0 0
+        seq nothing 0 0
+          if nothing 0 0
+            == nothing 0 0
+              . nothing 0 0
+                hd nothing 0 0
+                  name ent nothing 0 0
+                name name nothing 0 0
+              name n nothing 0 0
+            seq nothing 0 0
+              return nothing 0 0
+                hd nothing 0 0
+                  name ent nothing 0 0
+          = nothing 0 0
+            name ent nothing 0 0
+            tl nothing 0 0
+              name ent nothing 0 0
+      seq nothing 0 0
+        return nothing 0 0
+          name nil polymorphic type 0 0
+typecheck tree: 
+fn(){} fn(ht: array of list of ref Var, idx: int, v: ref Var) 0 0
+  name hashadd fn(ht: array of list of ref Var, idx: int, v: ref Var) 0 0
+  seq nothing 0 0
+    = nothing 0 0
+      index nothing 0 0
+        name ht nothing 0 0
+        name idx nothing 0 0
+      :: nothing 0 0
+        name v nothing 0 0
+        index nothing 0 0
+          name ht nothing 0 0
+          name idx nothing 0 0
+typecheck tree: 
+fn(){} fn(e: ref Localenv): ref Localenv 0 0
+  name copylocalenv fn(e: ref Localenv): ref Localenv 0 0
+  seq nothing 0 0
+    := nothing 0 0
+      name nvars nothing 0 0
+      array array of list of ref Var 0 0
+        len nothing 0 0
+          . nothing 0 0
+            name e nothing 0 0
+            name vars nothing 0 0
+    seq nothing 0 0
+      := nothing 0 0
+        name flags nothing 0 0
+        . nothing 0 0
+          name e nothing 0 0
+          name flags nothing 0 0
+      seq nothing 0 0
+        for nothing 0 0
+          != nothing 0 0
+            name e nothing 0 0
+            name nil polymorphic type 0 0
+          seq nothing 0 0
+            seq nothing 0 0
+              := nothing 0 0
+                name i nothing 0 0
+                const (0) int 0 0
+              for nothing 0 0
+                < nothing 0 0
+                  name i nothing 0 0
+                  len nothing 0 0
+                    name nvars nothing 0 0
+                seq nothing 0 0
+                  seq nothing 0 0
+                    := nothing 0 0
+                      name vl nothing 0 0
+                      index nothing 0 0
+                        . nothing 0 0
+                          name e nothing 0 0
+                          name vars nothing 0 0
+                        name i nothing 0 0
+                    for nothing 0 0
+                      != nothing 0 0
+                        name vl nothing 0 0
+                        name nil polymorphic type 0 0
+                      seq nothing 0 0
+                        scope nothing 0 0
+                          seq nothing 0 0
+                            := nothing 0 0
+                              name idx nothing 0 0
+                              call nothing 0 0
+                                name hashfn nothing 0 0
+                                seq nothing 0 0
+                                  . nothing 0 0
+                                    hd nothing 0 0
+                                      name vl nothing 0 0
+                                    name name nothing 0 0
+                                  seq nothing 0 0
+                                    len nothing 0 0
+                                      name nvars nothing 0 0
+                            seq nothing 0 0
+                              if nothing 0 0
+                                == nothing 0 0
+                                  call nothing 0 0
+                                    name hashfind nothing 0 0
+                                    seq nothing 0 0
+                                      name nvars nothing 0 0
+                                      seq nothing 0 0
+                                        name idx nothing 0 0
+                                        seq nothing 0 0
+                                          . nothing 0 0
+                                            hd nothing 0 0
+                                              name vl nothing 0 0
+                                            name name nothing 0 0
+                                  name nil polymorphic type 0 0
+                                seq nothing 0 0
+                                  call nothing 0 0
+                                    name hashadd nothing 0 0
+                                    seq nothing 0 0
+                                      name nvars nothing 0 0
+                                      seq nothing 0 0
+                                        name idx nothing 0 0
+                                        seq nothing 0 0
+                                          ref nothing 0 0
+                                            * nothing 0 0
+                                              hd nothing 0 0
+                                                name vl nothing 0 0
+                        = nothing 0 0
+                          name vl nothing 0 0
+                          tl nothing 0 0
+                            name vl nothing 0 0
+                  ++ nothing 0 0
+                    name i nothing 0 0
+            = nothing 0 0
+              name e nothing 0 0
+              . nothing 0 0
+       
+typecheck tree: 
+fn(){} fn(pushed: ref Localenv): ref Localenv 0 0
+  name newlocalenv fn(pushed: ref Localenv): ref Localenv 0 0
+  seq nothing 0 0
+    := nothing 0 0
+      name e nothing 0 0
+      ref nothing 0 0
+        call nothing 0 0
+          name Localenv nothing 0 0
+          seq nothing 0 0
+            array array of list of ref Var 0 0
+              name ENVHASHSIZE nothing 0 0
+            seq nothing 0 0
+              name pushed nothing 0 0
+              seq nothing 0 0
+                const (0) int 0 0
+    seq nothing 0 0
+      if nothing 0 0
+        && nothing 0 0
+          == nothing 0 0
+            name pushed nothing 0 0
+            name nil polymorphic type 0 0
+          != nothing 0 0
+            name env nothing 0 0
+            name nil polymorphic type 0 0
+        seq nothing 0 0
+          scope nothing 0 0
+            seq nothing 0 0
+              := nothing 0 0
+                name vl nothing 0 0
+                call nothing 0 0
+                  -> nothing 0 0
+                    name env nothing 0 0
+                    name getall nothing 0 0
+              seq nothing 0 0
+                for nothing 0 0
+                  != nothing 0 0
+                    name vl nothing 0 0
+                    name nil polymorphic type 0 0
+                  seq nothing 0 0
+                    scope nothing 0 0
+                      seq nothing 0 0
+                        := nothing 0 0
+                          tuple nothing 0 0
+                            seq nothing 0 0
+                              name name nothing 0 0
+                              seq nothing 0 0
+                                name val nothing 0 0
+                          hd nothing 0 0
+                            name vl nothing 0 0
+                        seq nothing 0 0
+                          call nothing 0 0
+                            name hashadd nothing 0 0
+                            seq nothing 0 0
+                              . nothing 0 0
+                                name e nothing 0 0
+                                name vars nothing 0 0
+                              seq nothing 0 0
+                                call nothing 0 0
+                                  name hashfn nothing 0 0
+                                  seq nothing 0 0
+                                    name name nothing 0 0
+                                    seq nothing 0 0
+                                      len nothing 0 0
+                                        . nothing 0 0
+                                          name e nothing 0 0
+                                          name vars nothing 0 0
+                                seq nothing 0 0
+                                  ref nothing 0 0
+                                    call nothing 0 0
+                                      name Var nothing 0 0
+                                      seq nothing 0 0
+                                        name name nothing 0 0
+                                        seq nothing 0 0
+                                          call nothing 0 0
+                                            name envstringtoval nothing 0 0
+                                            seq nothing 0 0
+                                              name val nothing 0 0
+                                          seq nothing 0 0
+                                            const (0) int 0 0
+                    = nothing 0 0
+                      name vl nothing 0 0
+                      tl nothing 0 0
+                        name vl nothing 0 0
+      seq nothing 0 0
+        if nothing 0 0
+          != nothing 0 0
+            name pushed nothing 0 0
+            name nil polymorphic type 0 0
+          seq nothing 0 0
+            = nothing 0 0
+              . nothing 0 0
+                name e nothing 0 0
+                name flags nothing 0 0
+              . nothing 0 0
+                name pushed nothing 0 0
+                name flags nothing 0 0
+        seq nothing 0 0
+          return nothing 0 0
+            name e nothing 0 0
+typecheck tree: 
+fn(){} fn(b: ref Builtins): ref Builtins 0 0
+  name copybuiltins fn(b: ref Builtins): ref Builtins 0 0
+  seq nothing 0 0
+    := nothing 0 0
+      name nb nothing 0 0
+      ref nothing 0 0
+        call nothing 0 0
+          name Builtins nothing 0 0
+          seq nothing 0 0
+            array array of (string, list of Shellbuiltin) 0 0
+              . nothing 0 0
+                name b nothing 0 0
+                name n nothing 0 0
+            seq nothing 0 0
+              . nothing 0 0
+                name b nothing 0 0
+                name n nothing 0 0
+    seq nothing 0 0
+      = nothing 0 0
+        slice nothing 0 0
+          . nothing 0 0
+            name nb nothing 0 0
+            name ba nothing 0 0
+          seq nothing 0 0
+            const (0) int 0 0
+            nothing nothing 0 0
+        slice nothing 0 0
+          . nothing 0 0
+            name b nothing 0 0
+            name ba nothing 0 0
+          seq nothing 0 0
+            const (0) int 0 0
+            . nothing 0 0
+              name b nothing 0 0
+              name n nothing 0 0
+      seq nothing 0 0
+        return nothing 0 0
+          name nb nothing 0 0
+typecheck tree: 
+fn(){} fn(b: ref Builtins, name: string): (int, list of Shellbuiltin) 0 0
+  name findbuiltin fn(b: ref Builtins, name: string): (int, list of Shellbuiltin) 0 0
+  seq nothing 0 0
+    := nothing 0 0
+      name lo nothing 0 0
+      const (0) int 0 0
+    seq nothing 0 0
+      := nothing 0 0
+        name hi nothing 0 0
+        - nothing 0 0
+          . nothing 0 0
+            name b nothing 0 0
+            name n nothing 0 0
+          const (1) int 0 0
+      seq nothing 0 0
+        for nothing 0 0
+          <= nothing 0 0
+            name lo nothing 0 0
+            name hi nothing 0 0
+          seq nothing 0 0
+            scope nothing 0 0
+              seq nothing 0 0
+                := nothing 0 0
+                  name mid nothing 0 0
+                  / nothing 0 0
+                    + nothing 0 0
+                      name lo nothing 0 0
+                      name hi nothing 0 0
+                    const (2) int 0 0
+                seq nothing 0 0
+                  := nothing 0 0
+                    tuple nothing 0 0
+                      seq nothing 0 0
+                        name bname nothing 0 0
+                        seq nothing 0 0
+                          name bmod nothing 0 0
+                    index nothing 0 0
+                      . nothing 0 0
+                        name b nothing 0 0
+                        name ba nothing 0 0
+                      name mid nothing 0 0
+                  seq nothing 0 0
+                    if nothing 0 0
+                      < nothing 0 0
+                        name name nothing 0 0
+                        name bname nothing 0 0
+                      seq nothing 0 0
+                        = nothing 0 0
+                          name hi nothing 0 0
+                          - nothing 0 0
+                            name mid nothing 0 0
+                            const (1) int 0 0
+                        if nothing 0 0
+                          > nothing 0 0
+                            name name nothing 0 0
+                            name bname nothing 0 0
+                          seq nothing 0 0
+                            = nothing 0 0
+                              name lo nothing 0 0
+                              + nothing 0 0
+                                name mid nothing 0 0
+                                const (1) int 0 0
+                            return nothing 0 0
+                              tuple nothing 0 0
+                                seq nothing 0 0
+                                  name mid nothing 0 0
+                                  seq nothing 0 0
+                                    name bmod nothing 0 0
+        seq nothing 0 0
+          return nothing 0 0
+            tuple nothing 0 0
+              seq nothing 0 0
+                name lo nothing 0 0
+                seq nothing 0 0
+                  name nil polymorphic type 0 0
+typecheck tree: 
+fn(){} fn(b: ref Builtins, name: string, mod: Shellbuiltin) 0 0
+  name removebuiltin fn(b: ref Builtins, name: string, mod: Shellbuiltin) 0 0
+  seq nothing 0 0
+    := nothing 0 0
+      tuple nothing 0 0
+        seq nothing 0 0
+          name n nothing 0 0
+          seq nothing 0 0
+            name bmods nothing 0 0
+      call nothing 0 0
+        name findbuiltin nothing 0 0
+        seq nothing 0 0
+          name b nothing 0 0
+          seq nothing 0 0
+            name name nothing 0 0
+    seq nothing 0 0
+      if nothing 0 0
+        == nothing 0 0
+          name bmods nothing 0 0
+          name nil polymorphic type 0 0
+        seq nothing 0 0
+          return nothing 0 0
+      seq nothing 0 0
+        if nothing 0 0
+          == nothing 0 0
+            hd nothing 0 0
+              name bmods nothing 0 0
+            name mod nothing 0 0
+          seq nothing 0 0
+            scope nothing 0 0
+              seq nothing 0 0
+                if nothing 0 0
+                  != nothing 0 0
+                    tl nothing 0 0
+                      name bmods nothing 0 0
+                    name nil polymorphic type 0 0
+                  seq nothing 0 0
+                    = nothing 0 0
+                      index nothing 0 0
+                        . nothing 0 0
+                          name b nothing 0 0
+                          name ba nothing 0 0
+                        name n nothing 0 0
+                      tuple nothing 0 0
+                        seq nothing 0 0
+                          name name nothing 0 0
+                          seq nothing 0 0
+                            tl nothing 0 0
+                              name bmods nothing 0 0
+                    scope nothing 0 0
+                      seq nothing 0 0
+                        = nothing 0 0
+                          slice nothing 0 0
+                            . nothing 0 0
+                              name b nothing 0 0
+                              name ba nothing 0 0
+                            seq nothing 0 0
+                              name n nothing 0 0
+                              nothing nothing 0 0
+                          slice nothing 0 0
+                            . nothing 0 0
+                              name b nothing 0 0
+                              name ba nothing 0 0
+                            seq nothing 0 0
+                              + nothing 0 0
+                                name n nothing 0 0
+                                const (1) int 0 0
+                              . nothing 0 0
+                                name b nothing 0 0
+                                name n nothing 0 0
+                        seq nothing 0 0
+                          = nothing 0 0
+                            index nothing 0 0
+                              . nothing 0 0
+                                name b nothing 0 0
+                                name ba nothing 0 0
+                              -- nothing 0 0
+                                . nothing 0 0
+                                  name b nothing 0 0
+                                  name n nothing 0 0
+                            tuple nothing 0 0
+                              seq nothing 0 0
+                                name nil polymorphic type 0 0
+                                seq nothing 0 0
+                                  name nil polymorphic type 0 0
+typecheck tree: 
+fn(){} fn(b: ref Builtins, name: string, mod: Shellbuiltin) 0 0
+  name addbuiltin fn(b: ref Builtins, name: string, mod: Shellbuiltin) 0 0
+  seq nothing 0 0
+    if nothing 0 0
+      || nothing 0 0
+        == nothing 0 0
+          name mod nothing 0 0
+          name nil polymorphic type 0 0
+        && nothing 0 0
+          == nothing 0 0
+            name name nothing 0 0
+            const builtin string 0 0
+          != nothing 0 0
+            name mod nothing 0 0
+            name myselfbuiltin nothing 0 0
+      seq nothing 0 0
+        return nothing 0 0
+    seq nothing 0 0
+      := nothing 0 0
+        tuple nothing 0 0
+          seq nothing 0 0
+            name n nothing 0 0
+            seq nothing 0 0
+              name bmods nothing 0 0
+        call nothing 0 0
+          name findbuiltin nothing 0 0
+          seq nothing 0 0
+            name b nothing 0 0
+            seq nothing 0 0
+              name name nothing 0 0
+      seq nothing 0 0
+        if nothing 0 0
+          != nothing 0 0
+            name bmods nothing 0 0
+            name nil polymorphic type 0 0
+          seq nothing 0 0
+            scope nothing 0 0
+              seq nothing 0 0
+                if nothing 0 0
+                  == nothing 0 0
+                    hd nothing 0 0
+                      name bmods nothing 0 0
+                    name myselfbuiltin nothing 0 0
+                  seq nothing 0 0
+                    = nothing 0 0
+                      index nothing 0 0
+                        . nothing 0 0
+                          name b nothing 0 0
+                          name ba nothing 0 0
+                        name n nothing 0 0
+                      tuple nothing 0 0
+                        seq nothing 0 0
+                          name name nothing 0 0
+                          seq nothing 0 0
+                            :: nothing 0 0
+                              name mod nothing 0 0
+                              name bmods nothing 0 0
+                    = nothing 0 0
+                      index nothing 0 0
+                        . nothing 0 0
+                          name b nothing 0 0
+                          name ba nothing 0 0
+                        name n nothing 0 0
+                      tuple nothing 0 0
+                        seq nothing 0 0
+                          name name nothing 0 0
+                          seq nothing 0 0
+                            :: nothing 0 0
+                              name mod nothing 0 0
+                              name nil polymorphic type 0 0
+            scope nothing 0 0
+              seq nothing 0 0
+                if nothing 0 0
+                  == nothing 0 0
+                    . nothing 0 0
+                      name b nothing 0 0
+                      name n nothing 0 0
+                    len nothing 0 0
+                      . nothing 0 0
+                        name b nothing 0 0
+                        name ba nothing 0 0
+                  seq nothing 0 0
+                    scope nothing 0 0
+                      seq nothing 0 0
+                        := nothing 0 0
+                          name nb nothing 0 0
+                          array array of (string, list of Shellbuiltin) 0 0
+                            + nothing 0 0
+                              . nothing 0 0
+                                name b nothing 0 0
+                                name n nothing 0 0
+                              const (10) int 0 0
+                        seq nothing 0 0
+                          = nothing 0 0
+                            slice nothing 0 0
+                              name nb nothing 0 0
+                              seq nothing 0 0
+                                const (0) int 0 0
+                                nothing nothing 0 0
+                            slice nothing 0 0
+                              . nothing 0 0
+                                name b nothing 0 0
+                                name ba nothing 0 0
+                              seq nothing 0 0
+                                const (0) int 0 0
+                                . nothing 0 0
+typecheck tree: 
+fn(){} fn(b: ref Builtins, mod: Shellbuiltin) 0 0
+  name removebuiltinmod fn(b: ref Builtins, mod: Shellbuiltin) 0 0
+  seq nothing 0 0
+    := nothing 0 0
+      name j nothing 0 0
+      const (0) int 0 0
+    seq nothing 0 0
+      seq nothing 0 0
+        := nothing 0 0
+          name i nothing 0 0
+          const (0) int 0 0
+        for nothing 0 0
+          < nothing 0 0
+            name i nothing 0 0
+            . nothing 0 0
+              name b nothing 0 0
+              name n nothing 0 0
+          seq nothing 0 0
+            scope nothing 0 0
+              seq nothing 0 0
+                := nothing 0 0
+                  tuple nothing 0 0
+                    seq nothing 0 0
+                      name name nothing 0 0
+                      seq nothing 0 0
+                        name bmods nothing 0 0
+                  index nothing 0 0
+                    . nothing 0 0
+                      name b nothing 0 0
+                      name ba nothing 0 0
+                    name i nothing 0 0
+                seq nothing 0 0
+                  if nothing 0 0
+                    == nothing 0 0
+                      hd nothing 0 0
+                        name bmods nothing 0 0
+                      name mod nothing 0 0
+                    seq nothing 0 0
+                      = nothing 0 0
+                        name bmods nothing 0 0
+                        tl nothing 0 0
+                          name bmods nothing 0 0
+                  seq nothing 0 0
+                    if nothing 0 0
+                      != nothing 0 0
+                        name bmods nothing 0 0
+                        name nil polymorphic type 0 0
+                      seq nothing 0 0
+                        = nothing 0 0
+                          index nothing 0 0
+                            . nothing 0 0
+                              name b nothing 0 0
+                              name ba nothing 0 0
+                            ++ nothing 0 0
+                              name j nothing 0 0
+                          tuple nothing 0 0
+                            seq nothing 0 0
+                              name name nothing 0 0
+                              seq nothing 0 0
+                                name bmods nothing 0 0
+            ++ nothing 0 0
+              name i nothing 0 0
+      seq nothing 0 0
+        = nothing 0 0
+          . nothing 0 0
+            name b nothing 0 0
+            name n nothing 0 0
+          name j nothing 0 0
+        seq nothing 0 0
+          for nothing 0 0
+            < nothing 0 0
+              name j nothing 0 0
+              name i nothing 0 0
+            seq nothing 0 0
+              = nothing 0 0
+                index nothing 0 0
+                  . nothing 0 0
+                    name b nothing 0 0
+                    name ba nothing 0 0
+                  name j nothing 0 0
+                tuple nothing 0 0
+                  seq nothing 0 0
+                    name nil polymorphic type 0 0
+                    seq nothing 0 0
+                      name nil polymorphic type 0 0
+              ++ nothing 0 0
+                name j nothing 0 0
+typecheck tree: 
+fn(){} fn(e: ref Localenv) 0 0
+  name export fn(e: ref Localenv) 0 0
+  seq nothing 0 0
+    if nothing 0 0
+      == nothing 0 0
+        name env nothing 0 0
+        name nil polymorphic type 0 0
+      seq nothing 0 0
+        return nothing 0 0
+    seq nothing 0 0
+      if nothing 0 0
+        != nothing 0 0
+          . nothing 0 0
+            name e nothing 0 0
+            name pushed nothing 0 0
+          name nil polymorphic type 0 0
+        seq nothing 0 0
+          call nothing 0 0
+            name export nothing 0 0
+            seq nothing 0 0
+              . nothing 0 0
+                name e nothing 0 0
+                name pushed nothing 0 0
+      seq nothing 0 0
+        seq nothing 0 0
+          := nothing 0 0
+            name i nothing 0 0
+            const (0) int 0 0
+          for nothing 0 0
+            < nothing 0 0
+              name i nothing 0 0
+              len nothing 0 0
+                . nothing 0 0
+                  name e nothing 0 0
+                  name vars nothing 0 0
+            seq nothing 0 0
+              scope nothing 0 0
+                seq nothing 0 0
+                  := nothing 0 0
+                    name vl nothing 0 0
+                    index nothing 0 0
+                      . nothing 0 0
+                        name e nothing 0 0
+                        name vars nothing 0 0
+                      name i nothing 0 0
+                  seq nothing 0 0
+                    for nothing 0 0
+                      != nothing 0 0
+                        name vl nothing 0 0
+                        name nil polymorphic type 0 0
+                      seq nothing 0 0
+                        scope nothing 0 0
+                          seq nothing 0 0
+                            := nothing 0 0
+                              name v nothing 0 0
+                              hd nothing 0 0
+                                name vl nothing 0 0
+                            seq nothing 0 0
+                              if nothing 0 0
+                                && nothing 0 0
+                                  & nothing 0 0
+                                    . nothing 0 0
+                                      name v nothing 0 0
+                                      name flags nothing 0 0
+                                    . nothing 0 0
+                                      name Var nothing 0 0
+                                      name CHANGED nothing 0 0
+                                  ! nothing 0 0
+                                    & nothing 0 0
+                                      . nothing 0 0
+                                        name v nothing 0 0
+                                        name flags nothing 0 0
+                                      . nothing 0 0
+                                        name Var nothing 0 0
+                                        name NOEXPORT nothing 0 0
+                                seq nothing 0 0
+                                  scope nothing 0 0
+                                    seq nothing 0 0
+                                      call nothing 0 0
+                                        name setenv nothing 0 0
+                                        seq nothing 0 0
+                                          . nothing 0 0
+                                            name v nothing 0 0
+                                            name name nothing 0 0
+                                          seq nothing 0 0
+                                            . nothing 0 0
+                                              name v nothing 0 0
+                                              name val nothing 0 0
+                                      seq nothing 0 0
+                                        &= nothing 0 0
+                                          . nothing 0 0
+                                            name v nothing 0 0
+                                            name flags nothing 0 0
+                                          ~ nothing 0 0
+                                            . nothing 0 0
+                                              name Var 
+typecheck tree: 
+fn(){} fn(name: string): int 0 0
+  name noexport fn(name: string): int 0 0
+  seq nothing 0 0
+    case nothing 0 0
+      name name nothing 0 0
+      seq nothing 0 0
+        label nothing 0 0
+          seq nothing 0 0
+            const 0 string 0 0
+            seq nothing 0 0
+              const * string 0 0
+              seq nothing 0 0
+                const status string 0 0
+          scope nothing 0 0
+            return nothing 0 0
+              const (1) int 0 0
+    seq nothing 0 0
+      return nothing 0 0
+        const (0) int 0 0
+typecheck tree: 
+fn(){} fn(val: list of ref Listnode, k: int): list of ref Listnode 0 0
+  name index fn(val: list of ref Listnode, k: int): list of ref Listnode 0 0
+  seq nothing 0 0
+    for nothing 0 0
+      && nothing 0 0
+        > nothing 0 0
+          name k nothing 0 0
+          const (0) int 0 0
+        != nothing 0 0
+          name val nothing 0 0
+          name nil polymorphic type 0 0
+      seq nothing 0 0
+        = nothing 0 0
+          name val nothing 0 0
+          tl nothing 0 0
+            name val nothing 0 0
+        -- nothing 0 0
+          name k nothing 0 0
+    seq nothing 0 0
+      if nothing 0 0
+        != nothing 0 0
+          name val nothing 0 0
+          name nil polymorphic type 0 0
+        seq nothing 0 0
+          = nothing 0 0
+            name val nothing 0 0
+            :: nothing 0 0
+              hd nothing 0 0
+                name val nothing 0 0
+              name nil polymorphic type 0 0
+      seq nothing 0 0
+        return nothing 0 0
+          name val nothing 0 0
+typecheck tree: 
+fn(){} fn(name: string): list of ref Listnode 0 0
+  name getenv fn(name: string): list of ref Listnode 0 0
+  seq nothing 0 0
+    if nothing 0 0
+      == nothing 0 0
+        name env nothing 0 0
+        name nil polymorphic type 0 0
+      seq nothing 0 0
+        return nothing 0 0
+          name nil polymorphic type 0 0
+    seq nothing 0 0
+      return nothing 0 0
+        call nothing 0 0
+          name envstringtoval nothing 0 0
+          seq nothing 0 0
+            call nothing 0 0
+              -> nothing 0 0
+                name env nothing 0 0
+                name getenv nothing 0 0
+              seq nothing 0 0
+                name name nothing 0 0
+typecheck tree: 
+fn(){} fn(v: string): list of ref Listnode 0 0
+  name envstringtoval fn(v: string): list of ref Listnode 0 0
+  seq nothing 0 0
+    return nothing 0 0
+      call nothing 0 0
+        name stringlist2list nothing 0 0
+        seq nothing 0 0
+          call nothing 0 0
+            -> nothing 0 0
+              name str nothing 0 0
+              name unquoted nothing 0 0
+            seq nothing 0 0
+              name v nothing 0 0
+typecheck tree: 
+fn(){} fn(v: string): list of ref Listnode 0 0
+  name XXXenvstringtoval fn(v: string): list of ref Listnode 0 0
+  seq nothing 0 0
+    if nothing 0 0
+      == nothing 0 0
+        len nothing 0 0
+          name v nothing 0 0
+        const (0) int 0 0
+      seq nothing 0 0
+        return nothing 0 0
+          name nil polymorphic type 0 0
+    seq nothing 0 0
+      := nothing 0 0
+        name start nothing 0 0
+        len nothing 0 0
+          name v nothing 0 0
+      seq nothing 0 0
+        vardecl list of ref Listnode 0 0
+          seq nothing 0 0
+        seq nothing 0 0
+          seq nothing 0 0
+            := nothing 0 0
+              name i nothing 0 0
+              - nothing 0 0
+                name start nothing 0 0
+                const (1) int 0 0
+            for nothing 0 0
+              >= nothing 0 0
+                name i nothing 0 0
+                const (0) int 0 0
+              seq nothing 0 0
+                scope nothing 0 0
+                  seq nothing 0 0
+                    if nothing 0 0
+                      == nothing 0 0
+                        index nothing 0 0
+                          name v nothing 0 0
+                          name i nothing 0 0
+                        name ENVSEP nothing 0 0
+                      seq nothing 0 0
+                        scope nothing 0 0
+                          seq nothing 0 0
+                            = nothing 0 0
+                              name val nothing 0 0
+                              :: nothing 0 0
+                                ref nothing 0 0
+                                  call nothing 0 0
+                                    name Listnode nothing 0 0
+                                    seq nothing 0 0
+                                      name nil polymorphic type 0 0
+                                      seq nothing 0 0
+                                        slice nothing 0 0
+                                          name v nothing 0 0
+                                          seq nothing 0 0
+                                            + nothing 0 0
+                                              name i nothing 0 0
+                                              const (1) int 0 0
+                                            name start nothing 0 0
+                                name val nothing 0 0
+                            seq nothing 0 0
+                              = nothing 0 0
+                                name start nothing 0 0
+                                name i nothing 0 0
+                -- nothing 0 0
+                  name i nothing 0 0
+          seq nothing 0 0
+            return nothing 0 0
+              :: nothing 0 0
+                ref nothing 0 0
+                  call nothing 0 0
+                    name Listnode nothing 0 0
+                    seq nothing 0 0
+                      name nil polymorphic type 0 0
+                      seq nothing 0 0
+                        slice nothing 0 0
+                          name v nothing 0 0
+                          seq nothing 0 0
+                            const (0) int 0 0
+                            name start nothing 0 0
+                name val nothing 0 0
+typecheck tree: 
+fn(){} fn(name: string, val: list of ref Listnode) 0 0
+  name setenv fn(name: string, val: list of ref Listnode) 0 0
+  seq nothing 0 0
+    if nothing 0 0
+      == nothing 0 0
+        name env nothing 0 0
+        name nil polymorphic type 0 0
+      seq nothing 0 0
+        return nothing 0 0
+    seq nothing 0 0
+      call nothing 0 0
+        -> nothing 0 0
+          name env nothing 0 0
+          name setenv nothing 0 0
+        seq nothing 0 0
+          name name nothing 0 0
+          seq nothing 0 0
+            call nothing 0 0
+              name quoted nothing 0 0
+              seq nothing 0 0
+                name val nothing 0 0
+                seq nothing 0 0
+                  const (1) int 0 0
+typecheck tree: 
+fn(){} fn(s: string): int 0 0
+  name containswildchar fn(s: string): int 0 0
+  seq nothing 0 0
+    := nothing 0 0
+      name i nothing 0 0
+      const (0) int 0 0
+    seq nothing 0 0
+      for nothing 0 0
+        < nothing 0 0
+          name i nothing 0 0
+          len nothing 0 0
+            name s nothing 0 0
+        seq nothing 0 0
+          scope nothing 0 0
+            seq nothing 0 0
+              if nothing 0 0
+                && nothing 0 0
+                  == nothing 0 0
+                    index nothing 0 0
+                      name s nothing 0 0
+                      name i nothing 0 0
+                    name GLOB nothing 0 0
+                  < nothing 0 0
+                    name i nothing 0 0
+                    - nothing 0 0
+                      len nothing 0 0
+                        name s nothing 0 0
+                      const (1) int 0 0
+                seq nothing 0 0
+                  scope nothing 0 0
+                    seq nothing 0 0
+                      case nothing 0 0
+                        index nothing 0 0
+                          name s nothing 0 0
+                          + nothing 0 0
+                            name i nothing 0 0
+                            const (1) int 0 0
+                        seq nothing 0 0
+                          label nothing 0 0
+                            seq nothing 0 0
+                              const (42) int 0 0
+                              seq nothing 0 0
+                                const (91) int 0 0
+                                seq nothing 0 0
+                                  const (63) int 0 0
+                                  seq nothing 0 0
+                                    name GLOB nothing 0 0
+                            scope nothing 0 0
+                              return nothing 0 0
+                                const (1) int 0 0
+          ++ nothing 0 0
+            name i nothing 0 0
+      seq nothing 0 0
+        return nothing 0 0
+          const (0) int 0 0
+typecheck tree: 
+fn(){} fn(word: string): string 0 0
+  name patquote fn(word: string): string 0 0
+  seq nothing 0 0
+    := nothing 0 0
+      name outword nothing 0 0
+      const  string 0 0
+    seq nothing 0 0
+      seq nothing 0 0
+        := nothing 0 0
+          name i nothing 0 0
+          const (0) int 0 0
+        for nothing 0 0
+          < nothing 0 0
+            name i nothing 0 0
+            len nothing 0 0
+              name word nothing 0 0
+          seq nothing 0 0
+            scope nothing 0 0
+              seq nothing 0 0
+                case nothing 0 0
+                  index nothing 0 0
+                    name word nothing 0 0
+                    name i nothing 0 0
+                  seq nothing 0 0
+                    label nothing 0 0
+                      seq nothing 0 0
+                        const (91) int 0 0
+                        seq nothing 0 0
+                          const (42) int 0 0
+                          seq nothing 0 0
+                            const (63) int 0 0
+                            seq nothing 0 0
+                              const (92) int 0 0
+                      scope nothing 0 0
+                        = nothing 0 0
+                          index nothing 0 0
+                            name outword nothing 0 0
+                            len nothing 0 0
+                              name outword nothing 0 0
+                          const (92) int 0 0
+                    seq nothing 0 0
+                      label nothing 0 0
+                        seq nothing 0 0
+                          name GLOB nothing 0 0
+                        scope nothing 0 0
+                          seq nothing 0 0
+                            seq nothing 0 0
+                              ++ nothing 0 0
+                                name i nothing 0 0
+                              if nothing 0 0
+                                >= nothing 0 0
+                                  name i nothing 0 0
+                                  len nothing 0 0
+                                    name word nothing 0 0
+                                seq nothing 0 0
+                                  return nothing 0 0
+                                    name outword nothing 0 0
+                            if nothing 0 0
+                              && nothing 0 0
+                                && nothing 0 0
+                                  == nothing 0 0
+                                    index nothing 0 0
+                                      name word nothing 0 0
+                                      name i nothing 0 0
+                                    const (91) int 0 0
+                                  < nothing 0 0
+                                    name i nothing 0 0
+                                    - nothing 0 0
+                                      len nothing 0 0
+                                        name word nothing 0 0
+                                      const (1) int 0 0
+                                == nothing 0 0
+                                  index nothing 0 0
+                                    name word nothing 0 0
+                                    + nothing 0 0
+                                      name i nothing 0 0
+                                      const (1) int 0 0
+                                  const (126) int 0 0
+                              seq nothing 0 0
+                                = nothing 0 0
+                                  index nothing 0 0
+                                    name word nothing 0 0
+                                    + nothing 0 0
+                                      name i nothing 0 0
+                                      const (1) int 0 0
+                                  const (94) int 0 0
+                seq nothing 0 0
+                  = nothing 0 0
+                    index nothing 0 0
+                      name outword nothing 0 0
+                      len nothing 0 0
+                        name outword nothing 0 0
+                    index nothing 0 0
+                      name word nothing 0 0
+                      name i noth
+typecheck tree: 
+fn(){} fn(s: string): string 0 0
+  name deglob fn(s: string): string 0 0
+  seq nothing 0 0
+    := nothing 0 0
+      name j nothing 0 0
+      const (0) int 0 0
+    seq nothing 0 0
+      seq nothing 0 0
+        := nothing 0 0
+          name i nothing 0 0
+          const (0) int 0 0
+        for nothing 0 0
+          < nothing 0 0
+            name i nothing 0 0
+            len nothing 0 0
+              name s nothing 0 0
+          seq nothing 0 0
+            scope nothing 0 0
+              seq nothing 0 0
+                if nothing 0 0
+                  != nothing 0 0
+                    index nothing 0 0
+                      name s nothing 0 0
+                      name i nothing 0 0
+                    name GLOB nothing 0 0
+                  seq nothing 0 0
+                    scope nothing 0 0
+                      seq nothing 0 0
+                        if nothing 0 0
+                          != nothing 0 0
+                            name i nothing 0 0
+                            name j nothing 0 0
+                          seq nothing 0 0
+                            = nothing 0 0
+                              index nothing 0 0
+                                name s nothing 0 0
+                                name j nothing 0 0
+                              index nothing 0 0
+                                name s nothing 0 0
+                                name i nothing 0 0
+                        seq nothing 0 0
+                          ++ nothing 0 0
+                            name j nothing 0 0
+            ++ nothing 0 0
+              name i nothing 0 0
+      seq nothing 0 0
+        if nothing 0 0
+          == nothing 0 0
+            name i nothing 0 0
+            name j nothing 0 0
+          seq nothing 0 0
+            return nothing 0 0
+              name s nothing 0 0
+        seq nothing 0 0
+          return nothing 0 0
+            slice nothing 0 0
+              name s nothing 0 0
+              seq nothing 0 0
+                const (0) int 0 0
+                name j nothing 0 0
+typecheck tree: 
+fn(){} fn(nl: list of ref Listnode): list of ref Listnode 0 0
+  name glob fn(nl: list of ref Listnode): list of ref Listnode 0 0
+  seq nothing 0 0
+    vardecl list of ref Listnode 0 0
+      seq nothing 0 0
+    seq nothing 0 0
+      for nothing 0 0
+        != nothing 0 0
+          name nl nothing 0 0
+          name nil polymorphic type 0 0
+        seq nothing 0 0
+          scope nothing 0 0
+            seq nothing 0 0
+              := nothing 0 0
+                name n nothing 0 0
+                hd nothing 0 0
+                  name nl nothing 0 0
+              seq nothing 0 0
+                if nothing 0 0
+                  call nothing 0 0
+                    name containswildchar nothing 0 0
+                    seq nothing 0 0
+                      . nothing 0 0
+                        name n nothing 0 0
+                        name word nothing 0 0
+                  seq nothing 0 0
+                    scope nothing 0 0
+                      seq nothing 0 0
+                        := nothing 0 0
+                          name qword nothing 0 0
+                          call nothing 0 0
+                            name patquote nothing 0 0
+                            seq nothing 0 0
+                              . nothing 0 0
+                                name n nothing 0 0
+                                name word nothing 0 0
+                        seq nothing 0 0
+                          := nothing 0 0
+                            name files nothing 0 0
+                            call nothing 0 0
+                              -> nothing 0 0
+                                name filepat nothing 0 0
+                                name expand nothing 0 0
+                              seq nothing 0 0
+                                name qword nothing 0 0
+                          seq nothing 0 0
+                            if nothing 0 0
+                              == nothing 0 0
+                                name files nothing 0 0
+                                name nil polymorphic type 0 0
+                              seq nothing 0 0
+                                = nothing 0 0
+                                  name files nothing 0 0
+                                  :: nothing 0 0
+                                    call nothing 0 0
+                                      name deglob nothing 0 0
+                                      seq nothing 0 0
+                                        . nothing 0 0
+                                          name n nothing 0 0
+                                          name word nothing 0 0
+                                    name nil polymorphic type 0 0
+                            seq nothing 0 0
+                              for nothing 0 0
+                                != nothing 0 0
+                                  name files nothing 0 0
+                                  name nil polymorphic type 0 0
+                                seq nothing 0 0
+                                  scope nothing 0 0
+                                    seq nothing 0 0
+                                      = nothing 0 0
+                                        name new nothing 0 0
+                                        :: nothing 0 0
+                                          ref nothing 0 0
+                                            call nothing 0 0
+                                              name Listnode nothing 0 0
+                                              seq nothing 0 0
+                                                name nil polymorphic type 0 0
+                                                seq nothing 0 0
+                                                  hd nothing 0 0
+                                                    name files nothing 0 0
+                                          name new nothing 0 0
+                                      seq nothing 0 0
+                                        = nothing 0 0
+                                          name files nothing 0 0
+                                          tl nothing 0 0
+                                        
+typecheck tree: 
+fn(){} fn(nl: list of ref Listnode): list of string 0 0
+  name list2stringlist fn(nl: list of ref Listnode): list of string 0 0
+  seq nothing 0 0
+    vardecli nothing 0 0
+      vardecl list of string 0 0
+        seq nothing 0 0
+      = nothing 0 0
+        name ret nothing 0 0
+        name nil polymorphic type 0 0
+    seq nothing 0 0
+      for nothing 0 0
+        != nothing 0 0
+          name nl nothing 0 0
+          name nil polymorphic type 0 0
+        seq nothing 0 0
+          scope nothing 0 0
+            seq nothing 0 0
+              vardecl string 0 0
+                seq nothing 0 0
+              seq nothing 0 0
+                := nothing 0 0
+                  name el nothing 0 0
+                  hd nothing 0 0
+                    name nl nothing 0 0
+                seq nothing 0 0
+                  if nothing 0 0
+                    || nothing 0 0
+                      != nothing 0 0
+                        . nothing 0 0
+                          name el nothing 0 0
+                          name word nothing 0 0
+                        name nil polymorphic type 0 0
+                      == nothing 0 0
+                        . nothing 0 0
+                          name el nothing 0 0
+                          name cmd nothing 0 0
+                        name nil polymorphic type 0 0
+                    seq nothing 0 0
+                      = nothing 0 0
+                        name newel nothing 0 0
+                        . nothing 0 0
+                          name el nothing 0 0
+                          name word nothing 0 0
+                      = nothing 0 0
+                        . nothing 0 0
+                          name el nothing 0 0
+                          name word nothing 0 0
+                        = nothing 0 0
+                          name newel nothing 0 0
+                          call nothing 0 0
+                            name cmd2string nothing 0 0
+                            seq nothing 0 0
+                              . nothing 0 0
+                                name el nothing 0 0
+                                name cmd nothing 0 0
+                  seq nothing 0 0
+                    = nothing 0 0
+                      name ret nothing 0 0
+                      :: nothing 0 0
+                        name newel nothing 0 0
+                        name ret nothing 0 0
+                    seq nothing 0 0
+                      = nothing 0 0
+                        name nl nothing 0 0
+                        tl nothing 0 0
+                          name nl nothing 0 0
+      seq nothing 0 0
+        := nothing 0 0
+          name sl nothing 0 0
+          call nothing 0 0
+            name revstringlist nothing 0 0
+            seq nothing 0 0
+              name ret nothing 0 0
+        seq nothing 0 0
+          return nothing 0 0
+            name sl nothing 0 0
+typecheck tree: 
+fn(){} fn(sl: list of string): list of ref Listnode 0 0
+  name stringlist2list fn(sl: list of string): list of ref Listnode 0 0
+  seq nothing 0 0
+    vardecl list of ref Listnode 0 0
+      seq nothing 0 0
+    seq nothing 0 0
+      for nothing 0 0
+        != nothing 0 0
+          name sl nothing 0 0
+          name nil polymorphic type 0 0
+        seq nothing 0 0
+          scope nothing 0 0
+            seq nothing 0 0
+              = nothing 0 0
+                name ret nothing 0 0
+                :: nothing 0 0
+                  ref nothing 0 0
+                    call nothing 0 0
+                      name Listnode nothing 0 0
+                      seq nothing 0 0
+                        name nil polymorphic type 0 0
+                        seq nothing 0 0
+                          hd nothing 0 0
+                            name sl nothing 0 0
+                  name ret nothing 0 0
+              seq nothing 0 0
+                = nothing 0 0
+                  name sl nothing 0 0
+                  tl nothing 0 0
+                    name sl nothing 0 0
+      seq nothing 0 0
+        return nothing 0 0
+          call nothing 0 0
+            name revlist nothing 0 0
+            seq nothing 0 0
+              name ret nothing 0 0
+typecheck tree: 
+fn(){} fn(l: list of string): list of string 0 0
+  name revstringlist fn(l: list of string): list of string 0 0
+  seq nothing 0 0
+    vardecl list of string 0 0
+      seq nothing 0 0
+    seq nothing 0 0
+      for nothing 0 0
+        != nothing 0 0
+          name l nothing 0 0
+          name nil polymorphic type 0 0
+        seq nothing 0 0
+          scope nothing 0 0
+            seq nothing 0 0
+              = nothing 0 0
+                name t nothing 0 0
+                :: nothing 0 0
+                  hd nothing 0 0
+                    name l nothing 0 0
+                  name t nothing 0 0
+              seq nothing 0 0
+                = nothing 0 0
+                  name l nothing 0 0
+                  tl nothing 0 0
+                    name l nothing 0 0
+      seq nothing 0 0
+        return nothing 0 0
+          name t nothing 0 0
+typecheck tree: 
+fn(){} fn(l: list of ref Listnode): list of ref Listnode 0 0
+  name revlist fn(l: list of ref Listnode): list of ref Listnode 0 0
+  seq nothing 0 0
+    vardecl list of ref Listnode 0 0
+      seq nothing 0 0
+    seq nothing 0 0
+      for nothing 0 0
+        != nothing 0 0
+          name l nothing 0 0
+          name nil polymorphic type 0 0
+        seq nothing 0 0
+          scope nothing 0 0
+            seq nothing 0 0
+              = nothing 0 0
+                name t nothing 0 0
+                :: nothing 0 0
+                  hd nothing 0 0
+                    name l nothing 0 0
+                  name t nothing 0 0
+              seq nothing 0 0
+                = nothing 0 0
+                  name l nothing 0 0
+                  tl nothing 0 0
+                    name l nothing 0 0
+      seq nothing 0 0
+        return nothing 0 0
+          name t nothing 0 0
+typecheck tree: 
+fn(){} fn(isassign: int, redir: ref Redir): string 0 0
+  name fdassignstr fn(isassign: int, redir: ref Redir): string 0 0
+  seq nothing 0 0
+    vardecli nothing 0 0
+      vardecl string 0 0
+        seq nothing 0 0
+      = nothing 0 0
+        name l nothing 0 0
+        name nil polymorphic type 0 0
+    seq nothing 0 0
+      if nothing 0 0
+        >= nothing 0 0
+          . nothing 0 0
+            name redir nothing 0 0
+            name fd1 nothing 0 0
+          const (0) int 0 0
+        seq nothing 0 0
+          = nothing 0 0
+            name l nothing 0 0
+            cast string 0 0
+              . nothing 0 0
+                name redir nothing 0 0
+                name fd1 nothing 0 0
+      seq nothing 0 0
+        if nothing 0 0
+          name isassign nothing 0 0
+          seq nothing 0 0
+            scope nothing 0 0
+              seq nothing 0 0
+                vardecli nothing 0 0
+                  vardecl string 0 0
+                    seq nothing 0 0
+                  = nothing 0 0
+                    name r nothing 0 0
+                    name nil polymorphic type 0 0
+                seq nothing 0 0
+                  if nothing 0 0
+                    >= nothing 0 0
+                      . nothing 0 0
+                        name redir nothing 0 0
+                        name fd2 nothing 0 0
+                      const (0) int 0 0
+                    seq nothing 0 0
+                      = nothing 0 0
+                        name r nothing 0 0
+                        cast string 0 0
+                          . nothing 0 0
+                            name redir nothing 0 0
+                            name fd2 nothing 0 0
+                  seq nothing 0 0
+                    return nothing 0 0
+                      + nothing 0 0
+                        + nothing 0 0
+                          + nothing 0 0
+                            + nothing 0 0
+                              const [ string 0 0
+                              name l nothing 0 0
+                            const = string 0 0
+                          name r nothing 0 0
+                        const ] string 0 0
+        seq nothing 0 0
+          return nothing 0 0
+            + nothing 0 0
+              + nothing 0 0
+                const [ string 0 0
+                name l nothing 0 0
+              const ] string 0 0
+typecheck tree: 
+fn(){} fn(rtype: int): string 0 0
+  name redirstr fn(rtype: int): string 0 0
+  seq nothing 0 0
+    case nothing 0 0
+      name rtype nothing 0 0
+      seq nothing 0 0
+        label nothing 0 0
+          seq nothing 0 0
+            * nothing 0 0
+            seq nothing 0 0
+              -> nothing 0 0
+                name Sys nothing 0 0
+                name OREAD nothing 0 0
+          scope nothing 0 0
+            return nothing 0 0
+              const < string 0 0
+        seq nothing 0 0
+          label nothing 0 0
+            seq nothing 0 0
+              -> nothing 0 0
+                name Sys nothing 0 0
+                name OWRITE nothing 0 0
+            scope nothing 0 0
+              return nothing 0 0
+                const > string 0 0
+          seq nothing 0 0
+            label nothing 0 0
+              seq nothing 0 0
+                | nothing 0 0
+                  -> nothing 0 0
+                    name Sys nothing 0 0
+                    name OWRITE nothing 0 0
+                  name OAPPEND nothing 0 0
+              scope nothing 0 0
+                return nothing 0 0
+                  const >> string 0 0
+            seq nothing 0 0
+              label nothing 0 0
+                seq nothing 0 0
+                  -> nothing 0 0
+                    name Sys nothing 0 0
+                    name ORDWR nothing 0 0
+                scope nothing 0 0
+                  return nothing 0 0
+                    const <> string 0 0
+typecheck tree: 
+fn(){} fn(n: ref Node): string 0 0
+  name cmd2string fn(c: ref Node): string 0 0
+  seq nothing 0 0
+    if nothing 0 0
+      == nothing 0 0
+        name n nothing 0 0
+        name nil polymorphic type 0 0
+      seq nothing 0 0
+        return nothing 0 0
+          const  string 0 0
+    seq nothing 0 0
+      vardecl string 0 0
+        seq nothing 0 0
+      seq nothing 0 0
+        case nothing 0 0
+          . nothing 0 0
+            name n nothing 0 0
+            name ntype nothing 0 0
+          seq nothing 0 0
+            label nothing 0 0
+              seq nothing 0 0
+                name n_BLOCK nothing 0 0
+              scope nothing 0 0
+                = nothing 0 0
+                  name s nothing 0 0
+                  + nothing 0 0
+                    + nothing 0 0
+                      const { string 0 0
+                      call nothing 0 0
+                        name cmd2string nothing 0 0
+                        seq nothing 0 0
+                          . nothing 0 0
+                            name n nothing 0 0
+                            name left nothing 0 0
+                    const } string 0 0
+            seq nothing 0 0
+              label nothing 0 0
+                seq nothing 0 0
+                  name n_VAR nothing 0 0
+                scope nothing 0 0
+                  seq nothing 0 0
+                    = nothing 0 0
+                      name s nothing 0 0
+                      + nothing 0 0
+                        const $ string 0 0
+                        call nothing 0 0
+                          name cmd2string nothing 0 0
+                          seq nothing 0 0
+                            . nothing 0 0
+                              name n nothing 0 0
+                              name left nothing 0 0
+                    if nothing 0 0
+                      != nothing 0 0
+                        . nothing 0 0
+                          name n nothing 0 0
+                          name right nothing 0 0
+                        name nil polymorphic type 0 0
+                      seq nothing 0 0
+                        += nothing 0 0
+                          name s nothing 0 0
+                          + nothing 0 0
+                            + nothing 0 0
+                              const ( string 0 0
+                              call nothing 0 0
+                                name cmd2string nothing 0 0
+                                seq nothing 0 0
+                                  . nothing 0 0
+                                    name n nothing 0 0
+                                    name right nothing 0 0
+                            const ) string 0 0
+              seq nothing 0 0
+                label nothing 0 0
+                  seq nothing 0 0
+                    name n_SQUASH nothing 0 0
+                  scope nothing 0 0
+                    = nothing 0 0
+                      name s nothing 0 0
+                      + nothing 0 0
+                        const $" string 0 0
+                        call nothing 0 0
+                          name cmd2string nothing 0 0
+                          seq nothing 0 0
+                            . nothing 0 0
+                              name n nothing 0 0
+                              name left nothing 0 0
+                seq nothing 0 0
+                  label nothing 0 0
+                    seq nothing 0 0
+                      name n_COUNT nothing 0 0
+                    scope nothing 0 0
+                      = nothing 0 0
+                        name s nothing 0 0
+                        + nothing 0 0
+                          const $# string 0 0
+                          call nothing 0 0
+                            name cmd2string nothing 0 0
+                            seq nothing 0 0
+                              . nothing 0 0
+                                name n nothing 0 0
+                                name left nothing 0 0
+                  seq nothing 0 0
+                    label nothing 0 0
+                      seq nothing 0 0
+                        name n_BQ nothing 0 0
+                      scope nothing 0 0
+  
+typecheck tree: 
+fn(){} fn(s: string, glob: int): string 0 0
+  name quote fn(s: string, glob: int): string 0 0
+  seq nothing 0 0
+    := nothing 0 0
+      name needquote nothing 0 0
+      const (0) int 0 0
+    seq nothing 0 0
+      := nothing 0 0
+        name t nothing 0 0
+        const  string 0 0
+      seq nothing 0 0
+        seq nothing 0 0
+          := nothing 0 0
+            name i nothing 0 0
+            const (0) int 0 0
+          for nothing 0 0
+            < nothing 0 0
+              name i nothing 0 0
+              len nothing 0 0
+                name s nothing 0 0
+            seq nothing 0 0
+              scope nothing 0 0
+                seq nothing 0 0
+                  case nothing 0 0
+                    index nothing 0 0
+                      name s nothing 0 0
+                      name i nothing 0 0
+                    seq nothing 0 0
+                      label nothing 0 0
+                        seq nothing 0 0
+                          const (123) int 0 0
+                          seq nothing 0 0
+                            const (125) int 0 0
+                            seq nothing 0 0
+                              const (40) int 0 0
+                              seq nothing 0 0
+                                const (41) int 0 0
+                                seq nothing 0 0
+                                  const (96) int 0 0
+                                  seq nothing 0 0
+                                    const (38) int 0 0
+                                    seq nothing 0 0
+                                      const (59) int 0 0
+                                      seq nothing 0 0
+                                        const (61) int 0 0
+                                        seq nothing 0 0
+                                          const (62) int 0 0
+                                          seq nothing 0 0
+                                            const (60) int 0 0
+                                            seq nothing 0 0
+                                              const (35) int 0 0
+                                              seq nothing 0 0
+                                                const (124) int 0 0
+                                                seq nothing 0 0
+                                                  const (42) int 0 0
+                                                  seq nothing 0 0
+                                                    const (91) int 0 0
+                                                    seq nothing 0 0
+                                                      const (63) int 0 0
+                                                      seq nothing 0 0
+                                                        const (36) int 0 0
+                                                        seq nothing 0 0
+                                                          const (94) int 0 0
+                                                          seq nothing 0 0
+                                                            const (32) int 0 0
+                                                            seq nothing 0 0
+                                                              const (9) int 0 0
+                                                              seq nothing 0 0
+                                                                const (10) int 0 0
+                                                                seq nothing 0 0
+                                                                  const (13) int 0 0
+                        scope nothing 0 0
+                          = nothing 0 0
+                            name needquote nothing 0 0
+                            const (1) int 0 0
+                      seq nothing 0 0
+                        label nothing 0 0
+                          seq nothing 0 0
+                            const (39) int 0 0
+                          scope nothing 0 0
+                            seq nothing 0 0
+                              = nothing 0 0
+                                index nothing 0 0
+                                  name t nothi
+typecheck tree: 
+fn(){} fn(l: list of string, sep: string): string 0 0
+  name squash fn(l: list of string, sep: string): string 0 0
+  seq nothing 0 0
+    if nothing 0 0
+      == nothing 0 0
+        name l nothing 0 0
+        name nil polymorphic type 0 0
+      seq nothing 0 0
+        return nothing 0 0
+          name nil polymorphic type 0 0
+    seq nothing 0 0
+      := nothing 0 0
+        name s nothing 0 0
+        hd nothing 0 0
+          name l nothing 0 0
+      seq nothing 0 0
+        seq nothing 0 0
+          = nothing 0 0
+            name l nothing 0 0
+            tl nothing 0 0
+              name l nothing 0 0
+          for nothing 0 0
+            != nothing 0 0
+              name l nothing 0 0
+              name nil polymorphic type 0 0
+            seq nothing 0 0
+              += nothing 0 0
+                name s nothing 0 0
+                + nothing 0 0
+                  name sep nothing 0 0
+                  hd nothing 0 0
+                    name l nothing 0 0
+              = nothing 0 0
+                name l nothing 0 0
+                tl nothing 0 0
+                  name l nothing 0 0
+        seq nothing 0 0
+          return nothing 0 0
+            name s nothing 0 0
+typecheck tree: 
+fn(){} fn(s: string) 0 0
+  name debug fn(s: string) 0 0
+  seq nothing 0 0
+    if nothing 0 0
+      name DEBUG nothing 0 0
+      seq nothing 0 0
+        call nothing 0 0
+          -> nothing 0 0
+            name sys nothing 0 0
+            name fprint nothing 0 0
+          seq nothing 0 0
+            call nothing 0 0
+              name stderr nothing 0 0
+            seq nothing 0 0
+              const %s
+ string 0 0
+              seq nothing 0 0
+                + nothing 0 0
+                  + nothing 0 0
+                    cast string 0 0
+                      call nothing 0 0
+                        -> nothing 0 0
+                          name sys nothing 0 0
+                          name pctl nothing 0 0
+                        seq nothing 0 0
+                          const (0) int 0 0
+                          seq nothing 0 0
+                            name nil polymorphic type 0 0
+                    const :  string 0 0
+                  name s nothing 0 0
+typecheck tree: 
+fn(){} fn(c: ref Context, nil: Sh): string 0 0
+  name initbuiltin fn(c: ref Context, sh: Sh): string 0 0
+  seq nothing 0 0
+    := nothing 0 0
+      name names nothing 0 0
+      array nothing 0 0
+        nothing nothing 0 0
+        seq nothing 0 0
+          elem nothing 0 0
+            const load string 0 0
+          seq nothing 0 0
+            elem nothing 0 0
+              const unload string 0 0
+            seq nothing 0 0
+              elem nothing 0 0
+                const loaded string 0 0
+              seq nothing 0 0
+                elem nothing 0 0
+                  const builtin string 0 0
+                seq nothing 0 0
+                  elem nothing 0 0
+                    const syncenv string 0 0
+                  seq nothing 0 0
+                    elem nothing 0 0
+                      const whatis string 0 0
+                    seq nothing 0 0
+                      elem nothing 0 0
+                        const run string 0 0
+                      seq nothing 0 0
+                        elem nothing 0 0
+                          const exit string 0 0
+                        seq nothing 0 0
+                          elem nothing 0 0
+                            const @ string 0 0
+    seq nothing 0 0
+      seq nothing 0 0
+        := nothing 0 0
+          name i nothing 0 0
+          const (0) int 0 0
+        for nothing 0 0
+          < nothing 0 0
+            name i nothing 0 0
+            len nothing 0 0
+              name names nothing 0 0
+          seq nothing 0 0
+            call nothing 0 0
+              . nothing 0 0
+                name c nothing 0 0
+                name addbuiltin nothing 0 0
+              seq nothing 0 0
+                index nothing 0 0
+                  name names nothing 0 0
+                  name i nothing 0 0
+                seq nothing 0 0
+                  name myselfbuiltin nothing 0 0
+            ++ nothing 0 0
+              name i nothing 0 0
+      seq nothing 0 0
+        call nothing 0 0
+          . nothing 0 0
+            name c nothing 0 0
+            name addsbuiltin nothing 0 0
+          seq nothing 0 0
+            const loaded string 0 0
+            seq nothing 0 0
+              name myselfbuiltin nothing 0 0
+        seq nothing 0 0
+          call nothing 0 0
+            . nothing 0 0
+              name c nothing 0 0
+              name addsbuiltin nothing 0 0
+            seq nothing 0 0
+              const quote string 0 0
+              seq nothing 0 0
+                name myselfbuiltin nothing 0 0
+          seq nothing 0 0
+            call nothing 0 0
+              . nothing 0 0
+                name c nothing 0 0
+                name addsbuiltin nothing 0 0
+              seq nothing 0 0
+                const bquote string 0 0
+                seq nothing 0 0
+                  name myselfbuiltin nothing 0 0
+            seq nothing 0 0
+              call nothing 0 0
+                . nothing 0 0
+                  name c nothing 0 0
+                  name addsbuiltin nothing 0 0
+                seq nothing 0 0
+                  const unquote string 0 0
+                  seq nothing 0 0
+                    name myselfbuiltin nothing 0 0
+              seq nothing 0 0
+                call nothing 0 0
+                  . nothing 0 0
+                    name c nothing 0 0
+                    name addsbuiltin nothing 0 0
+                  seq nothing 0 0
+                    const builtin string 0 0
+                    seq nothing 0 0
+                      name myselfbuiltin nothing 0 0
+                seq nothing 0 0
+                  return nothing 0 0
+                    name nil polymorphic type 0 0
+typecheck tree: 
+fn(){} fn(nil: ref Context, nil: Sh, nil: string, nil: int): string 0 0
+  name whatis fn(nil: ref Context, nil: Sh, nil: string, nil: int): string 0 0
+  seq nothing 0 0
+    return nothing 0 0
+      name nil polymorphic type 0 0
+typecheck tree: 
+fn(){} fn(ctxt: ref Context, nil: Sh, argv: list of ref Listnode): list of ref Listnode 0 0
+  name runsbuiltin fn(c: ref Context, sh: Sh, cmd: list of ref Listnode): list of ref Listnode 0 0
+  seq nothing 0 0
+    case nothing 0 0
+      . nothing 0 0
+        hd nothing 0 0
+          name argv nothing 0 0
+        name word nothing 0 0
+      seq nothing 0 0
+        label nothing 0 0
+          seq nothing 0 0
+            const loaded string 0 0
+          scope nothing 0 0
+            return nothing 0 0
+              call nothing 0 0
+                name sbuiltin_loaded nothing 0 0
+                seq nothing 0 0
+                  name ctxt nothing 0 0
+                  seq nothing 0 0
+                    name argv nothing 0 0
+        seq nothing 0 0
+          label nothing 0 0
+            seq nothing 0 0
+              const bquote string 0 0
+            scope nothing 0 0
+              return nothing 0 0
+                call nothing 0 0
+                  name sbuiltin_quote nothing 0 0
+                  seq nothing 0 0
+                    name ctxt nothing 0 0
+                    seq nothing 0 0
+                      name argv nothing 0 0
+                      seq nothing 0 0
+                        const (0) int 0 0
+          seq nothing 0 0
+            label nothing 0 0
+              seq nothing 0 0
+                const quote string 0 0
+              scope nothing 0 0
+                return nothing 0 0
+                  call nothing 0 0
+                    name sbuiltin_quote nothing 0 0
+                    seq nothing 0 0
+                      name ctxt nothing 0 0
+                      seq nothing 0 0
+                        name argv nothing 0 0
+                        seq nothing 0 0
+                          const (1) int 0 0
+            seq nothing 0 0
+              label nothing 0 0
+                seq nothing 0 0
+                  const unquote string 0 0
+                scope nothing 0 0
+                  return nothing 0 0
+                    call nothing 0 0
+                      name sbuiltin_unquote nothing 0 0
+                      seq nothing 0 0
+                        name ctxt nothing 0 0
+                        seq nothing 0 0
+                          name argv nothing 0 0
+              seq nothing 0 0
+                label nothing 0 0
+                  seq nothing 0 0
+                    const builtin string 0 0
+                  scope nothing 0 0
+                    return nothing 0 0
+                      call nothing 0 0
+                        name sbuiltin_builtin nothing 0 0
+                        seq nothing 0 0
+                          name ctxt nothing 0 0
+                          seq nothing 0 0
+                            name argv nothing 0 0
+    seq nothing 0 0
+      return nothing 0 0
+        name nil polymorphic type 0 0
+typecheck tree: 
+fn(){} fn(ctxt: ref Context, nil: Sh, args: list of ref Listnode, lseq: int): string 0 0
+  name runbuiltin fn(c: ref Context, sh: Sh, cmd: list of ref Listnode, last: int): string 0 0
+  seq nothing 0 0
+    := nothing 0 0
+      name status nothing 0 0
+      const  string 0 0
+    seq nothing 0 0
+      := nothing 0 0
+        name name nothing 0 0
+        . nothing 0 0
+          hd nothing 0 0
+            name args nothing 0 0
+          name word nothing 0 0
+      seq nothing 0 0
+        case nothing 0 0
+          name name nothing 0 0
+          seq nothing 0 0
+            label nothing 0 0
+              seq nothing 0 0
+                const load string 0 0
+              scope nothing 0 0
+                = nothing 0 0
+                  name status nothing 0 0
+                  call nothing 0 0
+                    name builtin_load nothing 0 0
+                    seq nothing 0 0
+                      name ctxt nothing 0 0
+                      seq nothing 0 0
+                        name args nothing 0 0
+                        seq nothing 0 0
+                          name lseq nothing 0 0
+            seq nothing 0 0
+              label nothing 0 0
+                seq nothing 0 0
+                  const loaded string 0 0
+                scope nothing 0 0
+                  = nothing 0 0
+                    name status nothing 0 0
+                    call nothing 0 0
+                      name builtin_loaded nothing 0 0
+                      seq nothing 0 0
+                        name ctxt nothing 0 0
+                        seq nothing 0 0
+                          name args nothing 0 0
+                          seq nothing 0 0
+                            name lseq nothing 0 0
+              seq nothing 0 0
+                label nothing 0 0
+                  seq nothing 0 0
+                    const unload string 0 0
+                  scope nothing 0 0
+                    = nothing 0 0
+                      name status nothing 0 0
+                      call nothing 0 0
+                        name builtin_unload nothing 0 0
+                        seq nothing 0 0
+                          name ctxt nothing 0 0
+                          seq nothing 0 0
+                            name args nothing 0 0
+                            seq nothing 0 0
+                              name lseq nothing 0 0
+                seq nothing 0 0
+                  label nothing 0 0
+                    seq nothing 0 0
+                      const builtin string 0 0
+                    scope nothing 0 0
+                      = nothing 0 0
+                        name status nothing 0 0
+                        call nothing 0 0
+                          name builtin_builtin nothing 0 0
+                          seq nothing 0 0
+                            name ctxt nothing 0 0
+                            seq nothing 0 0
+                              name args nothing 0 0
+                              seq nothing 0 0
+                                name lseq nothing 0 0
+                  seq nothing 0 0
+                    label nothing 0 0
+                      seq nothing 0 0
+                        const whatis string 0 0
+                      scope nothing 0 0
+                        = nothing 0 0
+                          name status nothing 0 0
+                          call nothing 0 0
+                            name builtin_whatis nothing 0 0
+                            seq nothing 0 0
+                              name ctxt nothing 0 0
+                              seq nothing 0 0
+                                name args nothing 0 0
+                                seq nothing 0 0
+                                  name lseq nothing 0 0
+                    seq nothing 0 0
+                      label nothing 0 0
+                        seq nothing 0 0
+                          const run string 0 0
+                        scope nothing 0 0
+                          = nothing 0 0
+                            name status nothing 0 0
+                            call nothing 0 0
+                              name builtin_run nothing 0 0
+            
+typecheck tree: 
+fn(){} fn(ctxt: ref Context, nil: list of ref Listnode): list of ref Listnode 0 0
+  name sbuiltin_loaded fn(ctxt: ref Context, nil: list of ref Listnode): list of ref Listnode 0 0
+  seq nothing 0 0
+    vardecl list of ref Listnode 0 0
+      seq nothing 0 0
+    seq nothing 0 0
+      seq nothing 0 0
+        := nothing 0 0
+          name bl nothing 0 0
+          . nothing 0 0
+            . nothing 0 0
+              name ctxt nothing 0 0
+              name env nothing 0 0
+            name bmods nothing 0 0
+        for nothing 0 0
+          != nothing 0 0
+            name bl nothing 0 0
+            name nil polymorphic type 0 0
+          seq nothing 0 0
+            scope nothing 0 0
+              seq nothing 0 0
+                := nothing 0 0
+                  tuple nothing 0 0
+                    seq nothing 0 0
+                      name name nothing 0 0
+                      seq nothing 0 0
+                        name nil polymorphic type 0 0
+                  hd nothing 0 0
+                    name bl nothing 0 0
+                seq nothing 0 0
+                  = nothing 0 0
+                    name v nothing 0 0
+                    :: nothing 0 0
+                      ref nothing 0 0
+                        call nothing 0 0
+                          name Listnode nothing 0 0
+                          seq nothing 0 0
+                            name nil polymorphic type 0 0
+                            seq nothing 0 0
+                              name name nothing 0 0
+                      name v nothing 0 0
+            = nothing 0 0
+              name bl nothing 0 0
+              tl nothing 0 0
+                name bl nothing 0 0
+      seq nothing 0 0
+        return nothing 0 0
+          name v nothing 0 0
+typecheck tree: 
+fn(){} fn(nil: ref Context, argv: list of ref Listnode, quoteblocks: int): list of ref Listnode 0 0
+  name sbuiltin_quote fn(nil: ref Context, argv: list of ref Listnode, quoteblocks: int): list of ref Listnode 0 0
+  seq nothing 0 0
+    return nothing 0 0
+      :: nothing 0 0
+        ref nothing 0 0
+          call nothing 0 0
+            name Listnode nothing 0 0
+            seq nothing 0 0
+              name nil polymorphic type 0 0
+              seq nothing 0 0
+                call nothing 0 0
+                  name quoted nothing 0 0
+                  seq nothing 0 0
+                    tl nothing 0 0
+                      name argv nothing 0 0
+                    seq nothing 0 0
+                      name quoteblocks nothing 0 0
+        name nil polymorphic type 0 0
+typecheck tree: 
+fn(){} fn(ctxt: ref Context, args: list of ref Listnode): list of ref Listnode 0 0
+  name sbuiltin_builtin fn(ctxt: ref Context, args: list of ref Listnode): list of ref Listnode 0 0
+  seq nothing 0 0
+    if nothing 0 0
+      || nothing 0 0
+        == nothing 0 0
+          name args nothing 0 0
+          name nil polymorphic type 0 0
+        == nothing 0 0
+          tl nothing 0 0
+            name args nothing 0 0
+          name nil polymorphic type 0 0
+      seq nothing 0 0
+        call nothing 0 0
+          name builtinusage nothing 0 0
+          seq nothing 0 0
+            name ctxt nothing 0 0
+            seq nothing 0 0
+              const builtin command [args ...] string 0 0
+    seq nothing 0 0
+      := nothing 0 0
+        name name nothing 0 0
+        . nothing 0 0
+          hd nothing 0 0
+            tl nothing 0 0
+              name args nothing 0 0
+          name word nothing 0 0
+      seq nothing 0 0
+        := nothing 0 0
+          tuple nothing 0 0
+            seq nothing 0 0
+              name nil polymorphic type 0 0
+              seq nothing 0 0
+                name mods nothing 0 0
+          call nothing 0 0
+            name findbuiltin nothing 0 0
+            seq nothing 0 0
+              . nothing 0 0
+                . nothing 0 0
+                  name ctxt nothing 0 0
+                  name env nothing 0 0
+                name sbuiltins nothing 0 0
+              seq nothing 0 0
+                name name nothing 0 0
+        seq nothing 0 0
+          for nothing 0 0
+            != nothing 0 0
+              name mods nothing 0 0
+              name nil polymorphic type 0 0
+            seq nothing 0 0
+              if nothing 0 0
+                == nothing 0 0
+                  hd nothing 0 0
+                    name mods nothing 0 0
+                  name myselfbuiltin nothing 0 0
+                seq nothing 0 0
+                  return nothing 0 0
+                    call nothing 0 0
+                      -> nothing 0 0
+                        hd nothing 0 0
+                          name mods nothing 0 0
+                        name runsbuiltin nothing 0 0
+                      seq nothing 0 0
+                        name ctxt nothing 0 0
+                        seq nothing 0 0
+                          name myself nothing 0 0
+                          seq nothing 0 0
+                            tl nothing 0 0
+                              name args nothing 0 0
+              = nothing 0 0
+                name mods nothing 0 0
+                tl nothing 0 0
+                  name mods nothing 0 0
+          seq nothing 0 0
+            call nothing 0 0
+              . nothing 0 0
+                name ctxt nothing 0 0
+                name fail nothing 0 0
+              seq nothing 0 0
+                const builtin not found string 0 0
+                seq nothing 0 0
+                  call nothing 0 0
+                    -> nothing 0 0
+                      name sys nothing 0 0
+                      name sprint nothing 0 0
+                    seq nothing 0 0
+                      const sh: builtin %s not found string 0 0
+                      seq nothing 0 0
+                        name name nothing 0 0
+            seq nothing 0 0
+              return nothing 0 0
+                name nil polymorphic type 0 0
+typecheck tree: 
+fn(){} fn(ctxt: ref Context, argv: list of ref Listnode): list of ref Listnode 0 0
+  name sbuiltin_unquote fn(ctxt: ref Context, argv: list of ref Listnode): list of ref Listnode 0 0
+  seq nothing 0 0
+    = nothing 0 0
+      name argv nothing 0 0
+      tl nothing 0 0
+        name argv nothing 0 0
+    seq nothing 0 0
+      if nothing 0 0
+        || nothing 0 0
+          == nothing 0 0
+            name argv nothing 0 0
+            name nil polymorphic type 0 0
+          != nothing 0 0
+            tl nothing 0 0
+              name argv nothing 0 0
+            name nil polymorphic type 0 0
+        seq nothing 0 0
+          call nothing 0 0
+            name builtinusage nothing 0 0
+            seq nothing 0 0
+              name ctxt nothing 0 0
+              seq nothing 0 0
+                const unquote arg string 0 0
+      seq nothing 0 0
+        := nothing 0 0
+          name arg nothing 0 0
+          . nothing 0 0
+            hd nothing 0 0
+              name argv nothing 0 0
+            name word nothing 0 0
+        seq nothing 0 0
+          if nothing 0 0
+            && nothing 0 0
+              == nothing 0 0
+                name arg nothing 0 0
+                name nil polymorphic type 0 0
+              != nothing 0 0
+                . nothing 0 0
+                  hd nothing 0 0
+                    name argv nothing 0 0
+                  name cmd nothing 0 0
+                name nil polymorphic type 0 0
+            seq nothing 0 0
+              = nothing 0 0
+                name arg nothing 0 0
+                call nothing 0 0
+                  name cmd2string nothing 0 0
+                  seq nothing 0 0
+                    . nothing 0 0
+                      hd nothing 0 0
+                        name argv nothing 0 0
+                      name cmd nothing 0 0
+          seq nothing 0 0
+            return nothing 0 0
+              call nothing 0 0
+                name stringlist2list nothing 0 0
+                seq nothing 0 0
+                  call nothing 0 0
+                    -> nothing 0 0
+                      name str nothing 0 0
+                      name unquoted nothing 0 0
+                    seq nothing 0 0
+                      name arg nothing 0 0
+typecheck tree: 
+fn(){} fn(): Shellbuiltin 0 0
+  name getself fn(): Shellbuiltin 0 0
+  seq nothing 0 0
+    return nothing 0 0
+      name myselfbuiltin nothing 0 0
+typecheck tree: 
+fn(){} fn(ctxt: ref Context, s: string) 0 0
+  name builtinusage fn(ctxt: ref Context, s: string) 0 0
+  seq nothing 0 0
+    call nothing 0 0
+      . nothing 0 0
+        name ctxt nothing 0 0
+        name fail nothing 0 0
+      seq nothing 0 0
+        const usage string 0 0
+        seq nothing 0 0
+          + nothing 0 0
+            const sh: usage:  string 0 0
+            name s nothing 0 0
+typecheck tree: 
+fn(){} fn(nil: ref Context, nil: list of ref Listnode, nil: int): string 0 0
+  name builtin_exit fn(nil: ref Context, nil: list of ref Listnode, nil: int): string 0 0
+  seq nothing 0 0
+    exit nothing 0 0
+typecheck tree: 
+fn(){} fn(ctxt: ref Context, args: list of ref Listnode, nil: int): string 0 0
+  name builtin_subsh fn(ctxt: ref Context, args: list of ref Listnode, nil: int): string 0 0
+  seq nothing 0 0
+    if nothing 0 0
+      == nothing 0 0
+        tl nothing 0 0
+          name args nothing 0 0
+        name nil polymorphic type 0 0
+      seq nothing 0 0
+        return nothing 0 0
+          name nil polymorphic type 0 0
+    seq nothing 0 0
+      := nothing 0 0
+        name startchan nothing 0 0
+        chan chan of (int, ref Expropagate) 0 0
+      seq nothing 0 0
+        spawn nothing 0 0
+          call nothing 0 0
+            name runasync nothing 0 0
+            seq nothing 0 0
+              name ctxt nothing 0 0
+              seq nothing 0 0
+                const (0) int 0 0
+                seq nothing 0 0
+                  tl nothing 0 0
+                    name args nothing 0 0
+                  seq nothing 0 0
+                    ref nothing 0 0
+                      name Redirlist nothing 0 0
+                    seq nothing 0 0
+                      name startchan nothing 0 0
+        seq nothing 0 0
+          := nothing 0 0
+            tuple nothing 0 0
+              seq nothing 0 0
+                name exepid nothing 0 0
+                seq nothing 0 0
+                  name exprop nothing 0 0
+            <- nothing 0 0
+              name startchan nothing 0 0
+          seq nothing 0 0
+            := nothing 0 0
+              name status nothing 0 0
+              call nothing 0 0
+                name waitfor nothing 0 0
+                seq nothing 0 0
+                  name ctxt nothing 0 0
+                  seq nothing 0 0
+                    :: nothing 0 0
+                      name exepid nothing 0 0
+                      name nil polymorphic type 0 0
+            seq nothing 0 0
+              if nothing 0 0
+                != nothing 0 0
+                  . nothing 0 0
+                    name exprop nothing 0 0
+                    name name nothing 0 0
+                  name nil polymorphic type 0 0
+                seq nothing 0 0
+                  raise nothing 0 0
+                    . nothing 0 0
+                      name exprop nothing 0 0
+                      name name nothing 0 0
+              seq nothing 0 0
+                return nothing 0 0
+                  name status nothing 0 0
+typecheck tree: 
+fn(){} fn(ctxt: ref Context, nil: list of ref Listnode, nil: int): string 0 0
+  name builtin_loaded fn(ctxt: ref Context, nil: list of ref Listnode, nil: int): string 0 0
+  seq nothing 0 0
+    := nothing 0 0
+      name b nothing 0 0
+      . nothing 0 0
+        . nothing 0 0
+          name ctxt nothing 0 0
+          name env nothing 0 0
+        name builtins nothing 0 0
+    seq nothing 0 0
+      seq nothing 0 0
+        := nothing 0 0
+          name i nothing 0 0
+          const (0) int 0 0
+        for nothing 0 0
+          < nothing 0 0
+            name i nothing 0 0
+            . nothing 0 0
+              name b nothing 0 0
+              name n nothing 0 0
+          seq nothing 0 0
+            scope nothing 0 0
+              seq nothing 0 0
+                := nothing 0 0
+                  tuple nothing 0 0
+                    seq nothing 0 0
+                      name name nothing 0 0
+                      seq nothing 0 0
+                        name bmods nothing 0 0
+                  index nothing 0 0
+                    . nothing 0 0
+                      name b nothing 0 0
+                      name ba nothing 0 0
+                    name i nothing 0 0
+                seq nothing 0 0
+                  call nothing 0 0
+                    -> nothing 0 0
+                      name sys nothing 0 0
+                      name print nothing 0 0
+                    seq nothing 0 0
+                      const %s	%s
+ string 0 0
+                      seq nothing 0 0
+                        name name nothing 0 0
+                        seq nothing 0 0
+                          call nothing 0 0
+                            name modname nothing 0 0
+                            seq nothing 0 0
+                              name ctxt nothing 0 0
+                              seq nothing 0 0
+                                hd nothing 0 0
+                                  name bmods nothing 0 0
+            ++ nothing 0 0
+              name i nothing 0 0
+      seq nothing 0 0
+        = nothing 0 0
+          name b nothing 0 0
+          . nothing 0 0
+            . nothing 0 0
+              name ctxt nothing 0 0
+              name env nothing 0 0
+            name sbuiltins nothing 0 0
+        seq nothing 0 0
+          seq nothing 0 0
+            = nothing 0 0
+              name i nothing 0 0
+              const (0) int 0 0
+            for nothing 0 0
+              < nothing 0 0
+                name i nothing 0 0
+                . nothing 0 0
+                  name b nothing 0 0
+                  name n nothing 0 0
+              seq nothing 0 0
+                scope nothing 0 0
+                  seq nothing 0 0
+                    := nothing 0 0
+                      tuple nothing 0 0
+                        seq nothing 0 0
+                          name name nothing 0 0
+                          seq nothing 0 0
+                            name bmods nothing 0 0
+                      index nothing 0 0
+                        . nothing 0 0
+                          name b nothing 0 0
+                          name ba nothing 0 0
+                        name i nothing 0 0
+                    seq nothing 0 0
+                      call nothing 0 0
+                        -> nothing 0 0
+                          name sys nothing 0 0
+                          name print nothing 0 0
+                        seq nothing 0 0
+                          const ${%s}	%s
+ string 0 0
+                          seq nothing 0 0
+                            name name nothing 0 0
+                            seq nothing 0 0
+                              call nothing 0 0
+                                name modname nothing 0 0
+                                seq nothing 0 0
+                                  name ctxt nothing 0 0
+                                  seq nothing 0 0
+                                    hd nothing 0 0
+                                      name bmods nothing 0 0
+                ++ nothing 0 0
+                  name i nothing 0 0
+          seq nothing 0 0
+            return nothing 0 0
+              name nil polymorphic type 0 0
+typecheck tree: 
+fn(){} fn(ctxt: ref Context, args: list of ref Listnode, nil: int): string 0 0
+  name builtin_load fn(ctxt: ref Context, args: list of ref Listnode, nil: int): string 0 0
+  seq nothing 0 0
+    if nothing 0 0
+      || nothing 0 0
+        == nothing 0 0
+          tl nothing 0 0
+            name args nothing 0 0
+          name nil polymorphic type 0 0
+        == nothing 0 0
+          . nothing 0 0
+            hd nothing 0 0
+              tl nothing 0 0
+                name args nothing 0 0
+            name word nothing 0 0
+          name nil polymorphic type 0 0
+      seq nothing 0 0
+        call nothing 0 0
+          name builtinusage nothing 0 0
+          seq nothing 0 0
+            name ctxt nothing 0 0
+            seq nothing 0 0
+              const load path... string 0 0
+    seq nothing 0 0
+      = nothing 0 0
+        name args nothing 0 0
+        tl nothing 0 0
+          name args nothing 0 0
+      seq nothing 0 0
+        if nothing 0 0
+          == nothing 0 0
+            name args nothing 0 0
+            name nil polymorphic type 0 0
+          seq nothing 0 0
+            call nothing 0 0
+              name builtinusage nothing 0 0
+              seq nothing 0 0
+                name ctxt nothing 0 0
+                seq nothing 0 0
+                  const load path... string 0 0
+        seq nothing 0 0
+          for nothing 0 0
+            != nothing 0 0
+              name args nothing 0 0
+              name nil polymorphic type 0 0
+            seq nothing 0 0
+              scope nothing 0 0
+                seq nothing 0 0
+                  := nothing 0 0
+                    name s nothing 0 0
+                    call nothing 0 0
+                      name loadmodule nothing 0 0
+                      seq nothing 0 0
+                        name ctxt nothing 0 0
+                        seq nothing 0 0
+                          . nothing 0 0
+                            hd nothing 0 0
+                              name args nothing 0 0
+                            name word nothing 0 0
+                  seq nothing 0 0
+                    if nothing 0 0
+                      != nothing 0 0
+                        name s nothing 0 0
+                        name nil polymorphic type 0 0
+                      seq nothing 0 0
+                        raise nothing 0 0
+                          + nothing 0 0
+                            const fail: string 0 0
+                            name s nothing 0 0
+              = nothing 0 0
+                name args nothing 0 0
+                tl nothing 0 0
+                  name args nothing 0 0
+          seq nothing 0 0
+            return nothing 0 0
+              name nil polymorphic type 0 0
+typecheck tree: 
+fn(){} fn(ctxt: ref Context, args: list of ref Listnode, nil: int): string 0 0
+  name builtin_unload fn(ctxt: ref Context, args: list of ref Listnode, nil: int): string 0 0
+  seq nothing 0 0
+    if nothing 0 0
+      == nothing 0 0
+        tl nothing 0 0
+          name args nothing 0 0
+        name nil polymorphic type 0 0
+      seq nothing 0 0
+        call nothing 0 0
+          name builtinusage nothing 0 0
+          seq nothing 0 0
+            name ctxt nothing 0 0
+            seq nothing 0 0
+              const unload path... string 0 0
+    seq nothing 0 0
+      := nothing 0 0
+        name status nothing 0 0
+        const  string 0 0
+      seq nothing 0 0
+        seq nothing 0 0
+          = nothing 0 0
+            name args nothing 0 0
+            tl nothing 0 0
+              name args nothing 0 0
+          for nothing 0 0
+            != nothing 0 0
+              name args nothing 0 0
+              name nil polymorphic type 0 0
+            seq nothing 0 0
+              if nothing 0 0
+                != nothing 0 0
+                  := nothing 0 0
+                    name s nothing 0 0
+                    call nothing 0 0
+                      name unloadmodule nothing 0 0
+                      seq nothing 0 0
+                        name ctxt nothing 0 0
+                        seq nothing 0 0
+                          . nothing 0 0
+                            hd nothing 0 0
+                              name args nothing 0 0
+                            name word nothing 0 0
+                  name nil polymorphic type 0 0
+                seq nothing 0 0
+                  = nothing 0 0
+                    name status nothing 0 0
+                    name s nothing 0 0
+              = nothing 0 0
+                name args nothing 0 0
+                tl nothing 0 0
+                  name args nothing 0 0
+        seq nothing 0 0
+          return nothing 0 0
+            name status nothing 0 0
+typecheck tree: 
+fn(){} fn(ctxt: ref Context, args: list of ref Listnode, nil: int): string 0 0
+  name builtin_run fn(ctxt: ref Context, args: list of ref Listnode, nil: int): string 0 0
+  seq nothing 0 0
+    if nothing 0 0
+      || nothing 0 0
+        == nothing 0 0
+          tl nothing 0 0
+            name args nothing 0 0
+          name nil polymorphic type 0 0
+        == nothing 0 0
+          . nothing 0 0
+            hd nothing 0 0
+              tl nothing 0 0
+                name args nothing 0 0
+            name word nothing 0 0
+          name nil polymorphic type 0 0
+      seq nothing 0 0
+        call nothing 0 0
+          name builtinusage nothing 0 0
+          seq nothing 0 0
+            name ctxt nothing 0 0
+            seq nothing 0 0
+              const run path string 0 0
+    seq nothing 0 0
+      call nothing 0 0
+        . nothing 0 0
+          name ctxt nothing 0 0
+          name push nothing 0 0
+      seq nothing 0 0
+        exstat nothing 0 0
+          scope nothing 0 0
+            seq nothing 0 0
+              call nothing 0 0
+                . nothing 0 0
+                  name ctxt nothing 0 0
+                  name setoptions nothing 0 0
+                seq nothing 0 0
+                  . nothing 0 0
+                    name ctxt nothing 0 0
+                    name INTERACTIVE nothing 0 0
+                  seq nothing 0 0
+                    const (0) int 0 0
+              seq nothing 0 0
+                call nothing 0 0
+                  name runscript nothing 0 0
+                  seq nothing 0 0
+                    name ctxt nothing 0 0
+                    seq nothing 0 0
+                      . nothing 0 0
+                        hd nothing 0 0
+                          tl nothing 0 0
+                            name args nothing 0 0
+                        name word nothing 0 0
+                      seq nothing 0 0
+                        tl nothing 0 0
+                          tl nothing 0 0
+                            name args nothing 0 0
+                        seq nothing 0 0
+                          const (1) int 0 0
+                seq nothing 0 0
+                  call nothing 0 0
+                    . nothing 0 0
+                      name ctxt nothing 0 0
+                      name pop nothing 0 0
+                  seq nothing 0 0
+                    return nothing 0 0
+                      name nil polymorphic type 0 0
+          except nothing 0 0
+            name e nothing 0 0
+            seq nothing 0 0
+              label nothing 0 0
+                seq nothing 0 0
+                  const fail:* string 0 0
+                scope nothing 0 0
+                  seq nothing 0 0
+                    call nothing 0 0
+                      . nothing 0 0
+                        name ctxt nothing 0 0
+                        name pop nothing 0 0
+                    return nothing 0 0
+                      call nothing 0 0
+                        name failurestatus nothing 0 0
+                        seq nothing 0 0
+                          name e nothing 0 0
+typecheck tree: 
+fn(){} fn(ctxt: ref Context, args: list of ref Listnode, nil: int): string 0 0
+  name builtin_whatis fn(ctxt: ref Context, args: list of ref Listnode, nil: int): string 0 0
+  seq nothing 0 0
+    if nothing 0 0
+      < nothing 0 0
+        len nothing 0 0
+          name args nothing 0 0
+        const (2) int 0 0
+      seq nothing 0 0
+        call nothing 0 0
+          name builtinusage nothing 0 0
+          seq nothing 0 0
+            name ctxt nothing 0 0
+            seq nothing 0 0
+              const whatis name ... string 0 0
+    seq nothing 0 0
+      := nothing 0 0
+        name err nothing 0 0
+        const  string 0 0
+      seq nothing 0 0
+        seq nothing 0 0
+          = nothing 0 0
+            name args nothing 0 0
+            tl nothing 0 0
+              name args nothing 0 0
+          for nothing 0 0
+            != nothing 0 0
+              name args nothing 0 0
+              name nil polymorphic type 0 0
+            seq nothing 0 0
+              if nothing 0 0
+                != nothing 0 0
+                  := nothing 0 0
+                    name e nothing 0 0
+                    call nothing 0 0
+                      name whatisit nothing 0 0
+                      seq nothing 0 0
+                        name ctxt nothing 0 0
+                        seq nothing 0 0
+                          hd nothing 0 0
+                            name args nothing 0 0
+                  name nil polymorphic type 0 0
+                seq nothing 0 0
+                  = nothing 0 0
+                    name err nothing 0 0
+                    name e nothing 0 0
+              = nothing 0 0
+                name args nothing 0 0
+                tl nothing 0 0
+                  name args nothing 0 0
+        seq nothing 0 0
+          return nothing 0 0
+            name err nothing 0 0
+typecheck tree: 
+fn(){} fn(ctxt: ref Context, el: ref Listnode): string 0 0
+  name whatisit fn(ctxt: ref Context, el: ref Listnode): string 0 0
+  seq nothing 0 0
+    if nothing 0 0
+      != nothing 0 0
+        . nothing 0 0
+          name el nothing 0 0
+          name cmd nothing 0 0
+        name nil polymorphic type 0 0
+      seq nothing 0 0
+        scope nothing 0 0
+          seq nothing 0 0
+            call nothing 0 0
+              -> nothing 0 0
+                name sys nothing 0 0
+                name print nothing 0 0
+              seq nothing 0 0
+                const %s
+ string 0 0
+                seq nothing 0 0
+                  call nothing 0 0
+                    name cmd2string nothing 0 0
+                    seq nothing 0 0
+                      . nothing 0 0
+                        name el nothing 0 0
+                        name cmd nothing 0 0
+            seq nothing 0 0
+              return nothing 0 0
+                name nil polymorphic type 0 0
+    seq nothing 0 0
+      := nothing 0 0
+        name found nothing 0 0
+        const (0) int 0 0
+      seq nothing 0 0
+        := nothing 0 0
+          name name nothing 0 0
+          . nothing 0 0
+            name el nothing 0 0
+            name word nothing 0 0
+        seq nothing 0 0
+          if nothing 0 0
+            && nothing 0 0
+              != nothing 0 0
+                name name nothing 0 0
+                name nil polymorphic type 0 0
+              == nothing 0 0
+                index nothing 0 0
+                  name name nothing 0 0
+                  const (0) int 0 0
+                const (123) int 0 0
+            seq nothing 0 0
+              scope nothing 0 0
+                seq nothing 0 0
+                  call nothing 0 0
+                    -> nothing 0 0
+                      name sys nothing 0 0
+                      name print nothing 0 0
+                    seq nothing 0 0
+                      const %s
+ string 0 0
+                      seq nothing 0 0
+                        name name nothing 0 0
+                  seq nothing 0 0
+                    return nothing 0 0
+                      name nil polymorphic type 0 0
+                    seq nothing 0 0
+                      nothing nothing 0 0
+          seq nothing 0 0
+            if nothing 0 0
+              == nothing 0 0
+                name name nothing 0 0
+                name nil polymorphic type 0 0
+              seq nothing 0 0
+                return nothing 0 0
+                  name nil polymorphic type 0 0
+            seq nothing 0 0
+              vardecl string 0 0
+                seq nothing 0 0
+              seq nothing 0 0
+                := nothing 0 0
+                  name val nothing 0 0
+                  call nothing 0 0
+                    . nothing 0 0
+                      name ctxt nothing 0 0
+                      name get nothing 0 0
+                    seq nothing 0 0
+                      name name nothing 0 0
+                seq nothing 0 0
+                  if nothing 0 0
+                    != nothing 0 0
+                      name val nothing 0 0
+                      name nil polymorphic type 0 0
+                    seq nothing 0 0
+                      scope nothing 0 0
+                        seq nothing 0 0
+                          ++ nothing 0 0
+                            name found nothing 0 0
+                          seq nothing 0 0
+                            += nothing 0 0
+                              name w nothing 0 0
+                              call nothing 0 0
+                                -> nothing 0 0
+                                  name sys nothing 0 0
+                                  name sprint nothing 0 0
+                                seq nothing 0 0
+                                  const %s=%s
+ string 0 0
+                                  seq nothing 0 0
+                                    call nothing 0 0
+                                      name quote nothing 0 0
+                                      seq nothing 0 0
+                                        name name nothing 0 0
+                                        seq not
+typecheck tree: 
+fn(){} fn(ctxt: ref Context, args: list of ref Listnode, last: int): string 0 0
+  name builtin_builtin fn(ctxt: ref Context, args: list of ref Listnode, last: int): string 0 0
+  seq nothing 0 0
+    if nothing 0 0
+      < nothing 0 0
+        len nothing 0 0
+          name args nothing 0 0
+        const (2) int 0 0
+      seq nothing 0 0
+        call nothing 0 0
+          name builtinusage nothing 0 0
+          seq nothing 0 0
+            name ctxt nothing 0 0
+            seq nothing 0 0
+              const builtin command [args ...] string 0 0
+    seq nothing 0 0
+      := nothing 0 0
+        name name nothing 0 0
+        . nothing 0 0
+          hd nothing 0 0
+            tl nothing 0 0
+              name args nothing 0 0
+          name word nothing 0 0
+      seq nothing 0 0
+        if nothing 0 0
+          || nothing 0 0
+            == nothing 0 0
+              name name nothing 0 0
+              name nil polymorphic type 0 0
+            == nothing 0 0
+              index nothing 0 0
+                name name nothing 0 0
+                const (0) int 0 0
+              const (123) int 0 0
+          seq nothing 0 0
+            scope nothing 0 0
+              seq nothing 0 0
+                call nothing 0 0
+                  name diagnostic nothing 0 0
+                  seq nothing 0 0
+                    name ctxt nothing 0 0
+                    seq nothing 0 0
+                      + nothing 0 0
+                        name name nothing 0 0
+                        const  not found string 0 0
+                seq nothing 0 0
+                  return nothing 0 0
+                    const not found string 0 0
+        seq nothing 0 0
+          := nothing 0 0
+            tuple nothing 0 0
+              seq nothing 0 0
+                name nil polymorphic type 0 0
+                seq nothing 0 0
+                  name mods nothing 0 0
+            call nothing 0 0
+              name findbuiltin nothing 0 0
+              seq nothing 0 0
+                . nothing 0 0
+                  . nothing 0 0
+                    name ctxt nothing 0 0
+                    name env nothing 0 0
+                  name builtins nothing 0 0
+                seq nothing 0 0
+                  name name nothing 0 0
+          seq nothing 0 0
+            for nothing 0 0
+              != nothing 0 0
+                name mods nothing 0 0
+                name nil polymorphic type 0 0
+              seq nothing 0 0
+                if nothing 0 0
+                  == nothing 0 0
+                    hd nothing 0 0
+                      name mods nothing 0 0
+                    name myselfbuiltin nothing 0 0
+                  seq nothing 0 0
+                    return nothing 0 0
+                      call nothing 0 0
+                        -> nothing 0 0
+                          hd nothing 0 0
+                            name mods nothing 0 0
+                          name runbuiltin nothing 0 0
+                        seq nothing 0 0
+                          name ctxt nothing 0 0
+                          seq nothing 0 0
+                            name myself nothing 0 0
+                            seq nothing 0 0
+                              tl nothing 0 0
+                                name args nothing 0 0
+                              seq nothing 0 0
+                                name last nothing 0 0
+                = nothing 0 0
+                  name mods nothing 0 0
+                  tl nothing 0 0
+                    name mods nothing 0 0
+            seq nothing 0 0
+              if nothing 0 0
+                & nothing 0 0
+                  call nothing 0 0
+                    . nothing 0 0
+                      name ctxt nothing 0 0
+                      name options nothing 0 0
+                  . nothing 0 0
+                    name ctxt nothing 0 0
+                    name EXECPRINT nothing 0 0
+                seq nothing 0 0
+                  call nothing 0 0
+                    -> nothing 0 0
+                      name sys nothing 0 0
+                      name fprint nothing 0 0
+                    seq nothing 0 0
+                      
+typecheck tree: 
+fn(){} fn(ctxt: ref Context, mod: Shellbuiltin): string 0 0
+  name modname fn(ctxt: ref Context, mod: Shellbuiltin): string 0 0
+  seq nothing 0 0
+    := nothing 0 0
+      name ml nothing 0 0
+      . nothing 0 0
+        . nothing 0 0
+          name ctxt nothing 0 0
+          name env nothing 0 0
+        name bmods nothing 0 0
+    seq nothing 0 0
+      for nothing 0 0
+        != nothing 0 0
+          name ml nothing 0 0
+          name nil polymorphic type 0 0
+        seq nothing 0 0
+          scope nothing 0 0
+            seq nothing 0 0
+              := nothing 0 0
+                tuple nothing 0 0
+                  seq nothing 0 0
+                    name bname nothing 0 0
+                    seq nothing 0 0
+                      name bmod nothing 0 0
+                hd nothing 0 0
+                  name ml nothing 0 0
+              seq nothing 0 0
+                if nothing 0 0
+                  == nothing 0 0
+                    name bmod nothing 0 0
+                    name mod nothing 0 0
+                  seq nothing 0 0
+                    return nothing 0 0
+                      name bname nothing 0 0
+          = nothing 0 0
+            name ml nothing 0 0
+            tl nothing 0 0
+              name ml nothing 0 0
+      seq nothing 0 0
+        return nothing 0 0
+          const builtin string 0 0
+typecheck tree: 
+fn(){} fn(ctxt: ref Context, name: string): string 0 0
+  name loadmodule fn(ctxt: ref Context, name: string): string 0 0
+  seq nothing 0 0
+    := nothing 0 0
+      name bl nothing 0 0
+      . nothing 0 0
+        . nothing 0 0
+          name ctxt nothing 0 0
+          name env nothing 0 0
+        name bmods nothing 0 0
+    seq nothing 0 0
+      for nothing 0 0
+        != nothing 0 0
+          name bl nothing 0 0
+          name nil polymorphic type 0 0
+        seq nothing 0 0
+          scope nothing 0 0
+            seq nothing 0 0
+              := nothing 0 0
+                tuple nothing 0 0
+                  seq nothing 0 0
+                    name bname nothing 0 0
+                    seq nothing 0 0
+                      name nil polymorphic type 0 0
+                hd nothing 0 0
+                  name bl nothing 0 0
+              seq nothing 0 0
+                if nothing 0 0
+                  == nothing 0 0
+                    name bname nothing 0 0
+                    name name nothing 0 0
+                  seq nothing 0 0
+                    return nothing 0 0
+                      name nil polymorphic type 0 0
+          = nothing 0 0
+            name bl nothing 0 0
+            tl nothing 0 0
+              name bl nothing 0 0
+      seq nothing 0 0
+        := nothing 0 0
+          name path nothing 0 0
+          name name nothing 0 0
+        seq nothing 0 0
+          if nothing 0 0
+            || nothing 0 0
+              < nothing 0 0
+                len nothing 0 0
+                  name path nothing 0 0
+                const (4) int 0 0
+              != nothing 0 0
+                slice nothing 0 0
+                  name path nothing 0 0
+                  seq nothing 0 0
+                    - nothing 0 0
+                      len nothing 0 0
+                        name path nothing 0 0
+                      const (4) int 0 0
+                    nothing nothing 0 0
+                const .dis string 0 0
+            seq nothing 0 0
+              += nothing 0 0
+                name path nothing 0 0
+                const .dis string 0 0
+          seq nothing 0 0
+            if nothing 0 0
+              && nothing 0 0
+                != nothing 0 0
+                  index nothing 0 0
+                    name path nothing 0 0
+                    const (0) int 0 0
+                  const (47) int 0 0
+                != nothing 0 0
+                  slice nothing 0 0
+                    name path nothing 0 0
+                    seq nothing 0 0
+                      const (0) int 0 0
+                      const (2) int 0 0
+                  const ./ string 0 0
+              seq nothing 0 0
+                = nothing 0 0
+                  name path nothing 0 0
+                  + nothing 0 0
+                    + nothing 0 0
+                      name BUILTINPATH nothing 0 0
+                      const / string 0 0
+                    name path nothing 0 0
+            seq nothing 0 0
+              := nothing 0 0
+                name mod nothing 0 0
+                load Shellbuiltin 0 0
+                  name path nothing 0 0
+              seq nothing 0 0
+                if nothing 0 0
+                  == nothing 0 0
+                    name mod nothing 0 0
+                    name nil polymorphic type 0 0
+                  seq nothing 0 0
+                    scope nothing 0 0
+                      seq nothing 0 0
+                        call nothing 0 0
+                          name diagnostic nothing 0 0
+                          seq nothing 0 0
+                            name ctxt nothing 0 0
+                            seq nothing 0 0
+                              call nothing 0 0
+                                -> nothing 0 0
+                                  name sys nothing 0 0
+                                  name sprint nothing 0 0
+                                seq nothing 0 0
+                                  const load: cannot load %s: %r string 0 0
+                                  seq nothing 0 0
+                                    name path nothing 0 0
+                        seq nothing 0 0
+          
+typecheck tree: 
+fn(){} fn(ctxt: ref Context, name: string): string 0 0
+  name unloadmodule fn(ctxt: ref Context, name: string): string 0 0
+  seq nothing 0 0
+    vardecl list of (string, Shellbuiltin) 0 0
+      seq nothing 0 0
+    seq nothing 0 0
+      vardecl Shellbuiltin 0 0
+        seq nothing 0 0
+      seq nothing 0 0
+        seq nothing 0 0
+          := nothing 0 0
+            name cl nothing 0 0
+            . nothing 0 0
+              . nothing 0 0
+                name ctxt nothing 0 0
+                name env nothing 0 0
+              name bmods nothing 0 0
+          for nothing 0 0
+            != nothing 0 0
+              name cl nothing 0 0
+              name nil polymorphic type 0 0
+            seq nothing 0 0
+              scope nothing 0 0
+                seq nothing 0 0
+                  := nothing 0 0
+                    tuple nothing 0 0
+                      seq nothing 0 0
+                        name bname nothing 0 0
+                        seq nothing 0 0
+                          name bmod nothing 0 0
+                    hd nothing 0 0
+                      name cl nothing 0 0
+                  seq nothing 0 0
+                    if nothing 0 0
+                      == nothing 0 0
+                        name bname nothing 0 0
+                        name name nothing 0 0
+                      seq nothing 0 0
+                        = nothing 0 0
+                          name mod nothing 0 0
+                          name bmod nothing 0 0
+                        = nothing 0 0
+                          name bl nothing 0 0
+                          :: nothing 0 0
+                            hd nothing 0 0
+                              name cl nothing 0 0
+                            name bl nothing 0 0
+              = nothing 0 0
+                name cl nothing 0 0
+                tl nothing 0 0
+                  name cl nothing 0 0
+        seq nothing 0 0
+          if nothing 0 0
+            == nothing 0 0
+              name mod nothing 0 0
+              name nil polymorphic type 0 0
+            seq nothing 0 0
+              scope nothing 0 0
+                seq nothing 0 0
+                  call nothing 0 0
+                    name diagnostic nothing 0 0
+                    seq nothing 0 0
+                      name ctxt nothing 0 0
+                      seq nothing 0 0
+                        call nothing 0 0
+                          -> nothing 0 0
+                            name sys nothing 0 0
+                            name sprint nothing 0 0
+                          seq nothing 0 0
+                            const module %s not found string 0 0
+                            seq nothing 0 0
+                              name name nothing 0 0
+                  seq nothing 0 0
+                    return nothing 0 0
+                      const not found string 0 0
+          seq nothing 0 0
+            seq nothing 0 0
+              = nothing 0 0
+                . nothing 0 0
+                  . nothing 0 0
+                    name ctxt nothing 0 0
+                    name env nothing 0 0
+                  name bmods nothing 0 0
+                name nil polymorphic type 0 0
+              for nothing 0 0
+                != nothing 0 0
+                  name bl nothing 0 0
+                  name nil polymorphic type 0 0
+                seq nothing 0 0
+                  = nothing 0 0
+                    . nothing 0 0
+                      . nothing 0 0
+                        name ctxt nothing 0 0
+                        name env nothing 0 0
+                      name bmods nothing 0 0
+                    :: nothing 0 0
+                      hd nothing 0 0
+                        name bl nothing 0 0
+                      . nothing 0 0
+                        . nothing 0 0
+                          name ctxt nothing 0 0
+                          name env nothing 0 0
+                        name bmods nothing 0 0
+                  = nothing 0 0
+                    name bl nothing 0 0
+                    tl nothing 0 0
+                      name bl nothing 0 0
+            seq nothing 0 0
+              call nothing 0 0
+
+typecheck tree: 
+fn(){} fn(s: (int, Sys->Dir), mode: int): int 0 0
+  name executable fn(s: (int, Sys->Dir), mode: int): int 0 0
+  seq nothing 0 0
+    := nothing 0 0
+      tuple nothing 0 0
+        seq nothing 0 0
+          name ok nothing 0 0
+          seq nothing 0 0
+            name info nothing 0 0
+      name s nothing 0 0
+    seq nothing 0 0
+      return nothing 0 0
+        && nothing 0 0
+          && nothing 0 0
+            != nothing 0 0
+              name ok nothing 0 0
+              - nothing 0 0
+                const (1) int 0 0
+            == nothing 0 0
+              & nothing 0 0
+                . nothing 0 0
+                  name info nothing 0 0
+                  name mode nothing 0 0
+                -> nothing 0 0
+                  name Sys nothing 0 0
+                  name DMDIR nothing 0 0
+              const (0) int 0 0
+          != nothing 0 0
+            & nothing 0 0
+              . nothing 0 0
+                name info nothing 0 0
+                name mode nothing 0 0
+              name mode nothing 0 0
+            const (0) int 0 0
+typecheck tree: 
+fn(){} fn(val: list of ref Listnode, quoteblocks: int): string 0 0
+  name quoted fn(val: list of ref Listnode, quoteblocks: int): string 0 0
+  seq nothing 0 0
+    := nothing 0 0
+      name s nothing 0 0
+      const  string 0 0
+    seq nothing 0 0
+      for nothing 0 0
+        != nothing 0 0
+          name val nothing 0 0
+          name nil polymorphic type 0 0
+        seq nothing 0 0
+          scope nothing 0 0
+            seq nothing 0 0
+              := nothing 0 0
+                name el nothing 0 0
+                hd nothing 0 0
+                  name val nothing 0 0
+              seq nothing 0 0
+                if nothing 0 0
+                  || nothing 0 0
+                    == nothing 0 0
+                      . nothing 0 0
+                        name el nothing 0 0
+                        name cmd nothing 0 0
+                      name nil polymorphic type 0 0
+                    && nothing 0 0
+                      name quoteblocks nothing 0 0
+                      != nothing 0 0
+                        . nothing 0 0
+                          name el nothing 0 0
+                          name word nothing 0 0
+                        name nil polymorphic type 0 0
+                  seq nothing 0 0
+                    += nothing 0 0
+                      name s nothing 0 0
+                      call nothing 0 0
+                        name quote nothing 0 0
+                        seq nothing 0 0
+                          . nothing 0 0
+                            name el nothing 0 0
+                            name word nothing 0 0
+                          seq nothing 0 0
+                            const (0) int 0 0
+                    scope nothing 0 0
+                      seq nothing 0 0
+                        := nothing 0 0
+                          name cmd nothing 0 0
+                          call nothing 0 0
+                            name cmd2string nothing 0 0
+                            seq nothing 0 0
+                              . nothing 0 0
+                                name el nothing 0 0
+                                name cmd nothing 0 0
+                        seq nothing 0 0
+                          if nothing 0 0
+                            name quoteblocks nothing 0 0
+                            seq nothing 0 0
+                              = nothing 0 0
+                                name cmd nothing 0 0
+                                call nothing 0 0
+                                  name quote nothing 0 0
+                                  seq nothing 0 0
+                                    name cmd nothing 0 0
+                                    seq nothing 0 0
+                                      const (0) int 0 0
+                          seq nothing 0 0
+                            += nothing 0 0
+                              name s nothing 0 0
+                              name cmd nothing 0 0
+                seq nothing 0 0
+                  if nothing 0 0
+                    != nothing 0 0
+                      tl nothing 0 0
+                        name val nothing 0 0
+                      name nil polymorphic type 0 0
+                    seq nothing 0 0
+                      = nothing 0 0
+                        index nothing 0 0
+                          name s nothing 0 0
+                          len nothing 0 0
+                            name s nothing 0 0
+                        const (32) int 0 0
+          = nothing 0 0
+            name val nothing 0 0
+            tl nothing 0 0
+              name val nothing 0 0
+      seq nothing 0 0
+        return nothing 0 0
+          name s nothing 0 0
+typecheck tree: 
+fn(){} fn(ctxt: ref Context, val: string): string 0 0
+  name setstatus fn(ctxt: ref Context, val: string): string 0 0
+  seq nothing 0 0
+    call nothing 0 0
+      . nothing 0 0
+        name ctxt nothing 0 0
+        name setlocal nothing 0 0
+      seq nothing 0 0
+        const status string 0 0
+        seq nothing 0 0
+          :: nothing 0 0
+            ref nothing 0 0
+              call nothing 0 0
+                name Listnode nothing 0 0
+                seq nothing 0 0
+                  name nil polymorphic type 0 0
+                  seq nothing 0 0
+                    name val nothing 0 0
+            name nil polymorphic type 0 0
+    seq nothing 0 0
+      return nothing 0 0
+        name val nothing 0 0
+typecheck tree: 
+fn(){} fn(l: ref YYLEX, prompt: string, showline: int): (ref Node, string) 0 0
+  name doparse fn(l: ref YYLEX, prompt: string, showline: int): (ref Node, string) 0 0
+  seq nothing 0 0
+    = nothing 0 0
+      . nothing 0 0
+        name l nothing 0 0
+        name prompt nothing 0 0
+      name prompt nothing 0 0
+    seq nothing 0 0
+      = nothing 0 0
+        . nothing 0 0
+          name l nothing 0 0
+          name err nothing 0 0
+        name nil polymorphic type 0 0
+      seq nothing 0 0
+        = nothing 0 0
+          . nothing 0 0
+            . nothing 0 0
+              name l nothing 0 0
+              name lval nothing 0 0
+            name node nothing 0 0
+          name nil polymorphic type 0 0
+        seq nothing 0 0
+          call nothing 0 0
+            name yyparse nothing 0 0
+            seq nothing 0 0
+              name l nothing 0 0
+          seq nothing 0 0
+            = nothing 0 0
+              . nothing 0 0
+                name l nothing 0 0
+                name lastnl nothing 0 0
+              const (0) int 0 0
+            seq nothing 0 0
+              if nothing 0 0
+                != nothing 0 0
+                  . nothing 0 0
+                    name l nothing 0 0
+                    name err nothing 0 0
+                  name nil polymorphic type 0 0
+                seq nothing 0 0
+                  scope nothing 0 0
+                    seq nothing 0 0
+                      vardecl string 0 0
+                        seq nothing 0 0
+                      seq nothing 0 0
+                        if nothing 0 0
+                          == nothing 0 0
+                            . nothing 0 0
+                              name l nothing 0 0
+                              name err nothing 0 0
+                            name nil polymorphic type 0 0
+                          seq nothing 0 0
+                            = nothing 0 0
+                              . nothing 0 0
+                                name l nothing 0 0
+                                name err nothing 0 0
+                              const unknown error string 0 0
+                        seq nothing 0 0
+                          if nothing 0 0
+                            && nothing 0 0
+                              > nothing 0 0
+                                . nothing 0 0
+                                  name l nothing 0 0
+                                  name errline nothing 0 0
+                                const (0) int 0 0
+                              name showline nothing 0 0
+                            seq nothing 0 0
+                              = nothing 0 0
+                                name s nothing 0 0
+                                call nothing 0 0
+                                  -> nothing 0 0
+                                    name sys nothing 0 0
+                                    name sprint nothing 0 0
+                                  seq nothing 0 0
+                                    const %s:%d: %s string 0 0
+                                    seq nothing 0 0
+                                      . nothing 0 0
+                                        name l nothing 0 0
+                                        name path nothing 0 0
+                                      seq nothing 0 0
+                                        . nothing 0 0
+                                          name l nothing 0 0
+                                          name errline nothing 0 0
+                                        seq nothing 0 0
+                                          . nothing 0 0
+                                            name l nothing 0 0
+                                            name err nothing 0 0
+                              = nothing 0 0
+                                name s nothing 0 0
+                                + nothing 0 0
+                                  + nothing 0 0
+                                    . nothing 0 0
+                                      name l nothing 0 0
+                                      name path nothing 0 0
+                                    const : parse 
+typecheck tree: 
+fn(){} fn(s: string): ref YYLEX 0 0
+  . fn(s: string): ref YYLEX 0 0
+    name YYLEX YYLEX 0 0
+    name initstring nothing 0 0
+  seq nothing 0 0
+    := nothing 0 0
+      name ret nothing 0 0
+      ref nothing 0 0
+        name blanklex nothing 0 0
+    seq nothing 0 0
+      = nothing 0 0
+        . nothing 0 0
+          name ret nothing 0 0
+          name s nothing 0 0
+        name s nothing 0 0
+      seq nothing 0 0
+        = nothing 0 0
+          . nothing 0 0
+            name ret nothing 0 0
+            name path nothing 0 0
+          const internal string 0 0
+        seq nothing 0 0
+          = nothing 0 0
+            . nothing 0 0
+              name ret nothing 0 0
+              name strpos nothing 0 0
+            const (0) int 0 0
+          seq nothing 0 0
+            return nothing 0 0
+              name ret nothing 0 0
+typecheck tree: 
+fn(){} fn(fd: ref Sys->FD, path: string): ref YYLEX 0 0
+  . fn(fd: ref Sys->FD, path: string): ref YYLEX 0 0
+    name YYLEX YYLEX 0 0
+    name initfile nothing 0 0
+  seq nothing 0 0
+    := nothing 0 0
+      name lex nothing 0 0
+      ref nothing 0 0
+        name blanklex nothing 0 0
+    seq nothing 0 0
+      = nothing 0 0
+        . nothing 0 0
+          name lex nothing 0 0
+          name f nothing 0 0
+        call nothing 0 0
+          -> nothing 0 0
+            name bufio nothing 0 0
+            name fopen nothing 0 0
+          seq nothing 0 0
+            name fd nothing 0 0
+            seq nothing 0 0
+              -> nothing 0 0
+                name bufio nothing 0 0
+                name OREAD nothing 0 0
+      seq nothing 0 0
+        = nothing 0 0
+          . nothing 0 0
+            name lex nothing 0 0
+            name path nothing 0 0
+          name path nothing 0 0
+        seq nothing 0 0
+          = nothing 0 0
+            . nothing 0 0
+              name lex nothing 0 0
+              name cbuf nothing 0 0
+            array array of int 0 0
+              const (2) int 0 0
+          seq nothing 0 0
+            = nothing 0 0
+              . nothing 0 0
+                name lex nothing 0 0
+                name linenum nothing 0 0
+              const (1) int 0 0
+            seq nothing 0 0
+              = nothing 0 0
+                . nothing 0 0
+                  name lex nothing 0 0
+                  name prompt nothing 0 0
+                const  string 0 0
+              seq nothing 0 0
+                return nothing 0 0
+                  name lex nothing 0 0
+typecheck tree: 
+fn(){} fn(l: self ref YYLEX, s: string) 0 0
+  . fn(l: self ref YYLEX, err: string) 0 0
+    name YYLEX YYLEX 0 0
+    name error nothing 0 0
+  seq nothing 0 0
+    if nothing 0 0
+      == nothing 0 0
+        . nothing 0 0
+          name l nothing 0 0
+          name err nothing 0 0
+        name nil polymorphic type 0 0
+      seq nothing 0 0
+        scope nothing 0 0
+          seq nothing 0 0
+            = nothing 0 0
+              . nothing 0 0
+                name l nothing 0 0
+                name err nothing 0 0
+              name s nothing 0 0
+            seq nothing 0 0
+              = nothing 0 0
+                . nothing 0 0
+                  name l nothing 0 0
+                  name errline nothing 0 0
+                . nothing 0 0
+                  name l nothing 0 0
+                  name linenum nothing 0 0
+typecheck tree: 
+fn(){} fn(l: self ref YYLEX): int 0 0
+  . fn(l: self ref YYLEX): int 0 0
+    name YYLEX YYLEX 0 0
+    name lex nothing 0 0
+  seq nothing 0 0
+    := nothing 0 0
+      name endword nothing 0 0
+      const (0) int 0 0
+    seq nothing 0 0
+      := nothing 0 0
+        name wasdollar nothing 0 0
+        const (0) int 0 0
+      seq nothing 0 0
+        := nothing 0 0
+          name tok nothing 0 0
+          name NOTOKEN nothing 0 0
+        seq nothing 0 0
+          for nothing 0 0
+            == nothing 0 0
+              name tok nothing 0 0
+              name NOTOKEN nothing 0 0
+            seq nothing 0 0
+              scope nothing 0 0
+                seq nothing 0 0
+                  case nothing 0 0
+                    := nothing 0 0
+                      name c nothing 0 0
+                      call nothing 0 0
+                        . nothing 0 0
+                          name l nothing 0 0
+                          name getc nothing 0 0
+                    seq nothing 0 0
+                      label nothing 0 0
+                        seq nothing 0 0
+                          . nothing 0 0
+                            name l nothing 0 0
+                            name EOF nothing 0 0
+                        scope nothing 0 0
+                          = nothing 0 0
+                            name tok nothing 0 0
+                            name END nothing 0 0
+                      seq nothing 0 0
+                        label nothing 0 0
+                          seq nothing 0 0
+                            const (10) int 0 0
+                          scope nothing 0 0
+                            = nothing 0 0
+                              name tok nothing 0 0
+                              const (10) int 0 0
+                        seq nothing 0 0
+                          label nothing 0 0
+                            seq nothing 0 0
+                              const (13) int 0 0
+                              seq nothing 0 0
+                                const (9) int 0 0
+                                seq nothing 0 0
+                                  const (32) int 0 0
+                            scope nothing 0 0
+                              nothing nothing 0 0
+                          seq nothing 0 0
+                            label nothing 0 0
+                              seq nothing 0 0
+                                const (35) int 0 0
+                              scope nothing 0 0
+                                seq nothing 0 0
+                                  for nothing 0 0
+                                    && nothing 0 0
+                                      != nothing 0 0
+                                        = nothing 0 0
+                                          name c nothing 0 0
+                                          call nothing 0 0
+                                            . nothing 0 0
+                                              name l nothing 0 0
+                                              name getc nothing 0 0
+                                        const (10) int 0 0
+                                      != nothing 0 0
+                                        name c nothing 0 0
+                                        . nothing 0 0
+                                          name l nothing 0 0
+                                          name EOF nothing 0 0
+                                    seq nothing 0 0
+                                      nothing nothing 0 0
+                                  call nothing 0 0
+                                    . nothing 0 0
+                                      name l nothing 0 0
+                                      name ungetc nothing 0 0
+                            seq nothing 0 0
+                              label nothing 0 0
+                                seq nothing 0 0
+                                  const (59) int 0 0
+                                scope nothing 0 0
+                                  = nothing 0 0
+                                    name tok nothing 0 0
+                                    const (59) int 0 0
+   
+typecheck tree: 
+fn(){} fn(t: int): string 0 0
+  name tokstr fn(t: int): string 0 0
+  seq nothing 0 0
+    vardecl string 0 0
+      seq nothing 0 0
+    seq nothing 0 0
+      case nothing 0 0
+        name t nothing 0 0
+        seq nothing 0 0
+          label nothing 0 0
+            seq nothing 0 0
+              const (10) int 0 0
+            scope nothing 0 0
+              = nothing 0 0
+                name s nothing 0 0
+                const '\n' string 0 0
+          seq nothing 0 0
+            label nothing 0 0
+              seq nothing 0 0
+                range nothing 0 0
+                  const (33) int 0 0
+                  const (127) int 0 0
+              scope nothing 0 0
+                = nothing 0 0
+                  name s nothing 0 0
+                  call nothing 0 0
+                    name sprint nothing 0 0
+                    seq nothing 0 0
+                      const '%c' string 0 0
+                      seq nothing 0 0
+                        name t nothing 0 0
+            seq nothing 0 0
+              label nothing 0 0
+                seq nothing 0 0
+                  name DUP nothing 0 0
+                scope nothing 0 0
+                  = nothing 0 0
+                    name s nothing 0 0
+                    const DUP string 0 0
+              seq nothing 0 0
+                label nothing 0 0
+                  seq nothing 0 0
+                    name REDIR nothing 0 0
+                  scope nothing 0 0
+                    = nothing 0 0
+                      name s nothing 0 0
+                      const REDIR string 0 0
+                seq nothing 0 0
+                  label nothing 0 0
+                    seq nothing 0 0
+                      name WORD nothing 0 0
+                    scope nothing 0 0
+                      = nothing 0 0
+                        name s nothing 0 0
+                        const WORD string 0 0
+                  seq nothing 0 0
+                    label nothing 0 0
+                      seq nothing 0 0
+                        name OP nothing 0 0
+                      scope nothing 0 0
+                        = nothing 0 0
+                          name s nothing 0 0
+                          const OP string 0 0
+                    seq nothing 0 0
+                      label nothing 0 0
+                        seq nothing 0 0
+                          name END nothing 0 0
+                        scope nothing 0 0
+                          = nothing 0 0
+                            name s nothing 0 0
+                            const END string 0 0
+                      seq nothing 0 0
+                        label nothing 0 0
+                          seq nothing 0 0
+                            name ERROR nothing 0 0
+                          scope nothing 0 0
+                            = nothing 0 0
+                              name s nothing 0 0
+                              const ERROR string 0 0
+                        seq nothing 0 0
+                          label nothing 0 0
+                            seq nothing 0 0
+                              * nothing 0 0
+                            scope nothing 0 0
+                              = nothing 0 0
+                                name s nothing 0 0
+                                + nothing 0 0
+                                  + nothing 0 0
+                                    const <unknowntok string 0 0
+                                    cast string 0 0
+                                      name t nothing 0 0
+                                  const > string 0 0
+      seq nothing 0 0
+        return nothing 0 0
+          name s nothing 0 0
+typecheck tree: 
+fn(){} fn(lex: self ref YYLEX) 0 0
+  . fn(l: self ref YYLEX) 0 0
+    name YYLEX YYLEX 0 0
+    name ungetc nothing 0 0
+  seq nothing 0 0
+    -- nothing 0 0
+      . nothing 0 0
+        name lex nothing 0 0
+        name strpos nothing 0 0
+    seq nothing 0 0
+      if nothing 0 0
+        != nothing 0 0
+          . nothing 0 0
+            name lex nothing 0 0
+            name f nothing 0 0
+          name nil polymorphic type 0 0
+        seq nothing 0 0
+          scope nothing 0 0
+            seq nothing 0 0
+              ++ nothing 0 0
+                . nothing 0 0
+                  name lex nothing 0 0
+                  name ncbuf nothing 0 0
+              seq nothing 0 0
+                if nothing 0 0
+                  < nothing 0 0
+                    . nothing 0 0
+                      name lex nothing 0 0
+                      name strpos nothing 0 0
+                    const (0) int 0 0
+                  seq nothing 0 0
+                    = nothing 0 0
+                      . nothing 0 0
+                        name lex nothing 0 0
+                        name strpos nothing 0 0
+                      - nothing 0 0
+                        len nothing 0 0
+                          . nothing 0 0
+                            name lex nothing 0 0
+                            name cbuf nothing 0 0
+                        const (1) int 0 0
+typecheck tree: 
+fn(){} fn(lex: self ref YYLEX): int 0 0
+  . fn(l: self ref YYLEX): int 0 0
+    name YYLEX YYLEX 0 0
+    name getc nothing 0 0
+  seq nothing 0 0
+    if nothing 0 0
+      . nothing 0 0
+        name lex nothing 0 0
+        name eof nothing 0 0
+      seq nothing 0 0
+        return nothing 0 0
+          . nothing 0 0
+            name lex nothing 0 0
+            name EOF nothing 0 0
+    seq nothing 0 0
+      vardecl int 0 0
+        seq nothing 0 0
+      seq nothing 0 0
+        if nothing 0 0
+          != nothing 0 0
+            . nothing 0 0
+              name lex nothing 0 0
+              name f nothing 0 0
+            name nil polymorphic type 0 0
+          seq nothing 0 0
+            scope nothing 0 0
+              seq nothing 0 0
+                if nothing 0 0
+                  > nothing 0 0
+                    . nothing 0 0
+                      name lex nothing 0 0
+                      name ncbuf nothing 0 0
+                    const (0) int 0 0
+                  seq nothing 0 0
+                    scope nothing 0 0
+                      seq nothing 0 0
+                        = nothing 0 0
+                          name c nothing 0 0
+                          index nothing 0 0
+                            . nothing 0 0
+                              name lex nothing 0 0
+                              name cbuf nothing 0 0
+                            ++ nothing 0 0
+                              . nothing 0 0
+                                name lex nothing 0 0
+                                name strpos nothing 0 0
+                        seq nothing 0 0
+                          if nothing 0 0
+                            >= nothing 0 0
+                              . nothing 0 0
+                                name lex nothing 0 0
+                                name strpos nothing 0 0
+                              len nothing 0 0
+                                . nothing 0 0
+                                  name lex nothing 0 0
+                                  name cbuf nothing 0 0
+                            seq nothing 0 0
+                              = nothing 0 0
+                                . nothing 0 0
+                                  name lex nothing 0 0
+                                  name strpos nothing 0 0
+                                const (0) int 0 0
+                          seq nothing 0 0
+                            -- nothing 0 0
+                              . nothing 0 0
+                                name lex nothing 0 0
+                                name ncbuf nothing 0 0
+                    scope nothing 0 0
+                      seq nothing 0 0
+                        if nothing 0 0
+                          && nothing 0 0
+                            . nothing 0 0
+                              name lex nothing 0 0
+                              name lastnl nothing 0 0
+                            != nothing 0 0
+                              . nothing 0 0
+                                name lex nothing 0 0
+                                name prompt nothing 0 0
+                              name nil polymorphic type 0 0
+                          seq nothing 0 0
+                            call nothing 0 0
+                              -> nothing 0 0
+                                name sys nothing 0 0
+                                name fprint nothing 0 0
+                              seq nothing 0 0
+                                call nothing 0 0
+                                  name stderr nothing 0 0
+                                seq nothing 0 0
+                                  const %s string 0 0
+                                  seq nothing 0 0
+                                    . nothing 0 0
+                                      name lex nothing 0 0
+                                      name prompt nothing 0 0
+                        seq nothing 0 0
+                          = nothing 0 0
+                            name c nothing 0 0
+                            call nothing 0 0
+                              -> nothing 0 0
+                                name bufio nothi
+typecheck tree: 
+fn(){} fn(lex: ref YYLEX): int 0 0
+  name readnum fn(lex: ref YYLEX): int 0 0
+  seq nothing 0 0
+    := nothing 0 0
+      name sum nothing 0 0
+      := nothing 0 0
+        name nc nothing 0 0
+        const (0) int 0 0
+    seq nothing 0 0
+      for nothing 0 0
+        && nothing 0 0
+          >= nothing 0 0
+            := nothing 0 0
+              name c nothing 0 0
+              call nothing 0 0
+                . nothing 0 0
+                  name lex nothing 0 0
+                  name getc nothing 0 0
+            const (48) int 0 0
+          <= nothing 0 0
+            name c nothing 0 0
+            const (57) int 0 0
+        seq nothing 0 0
+          scope nothing 0 0
+            seq nothing 0 0
+              = nothing 0 0
+                name sum nothing 0 0
+                + nothing 0 0
+                  * nothing 0 0
+                    name sum nothing 0 0
+                    const (10) int 0 0
+                  - nothing 0 0
+                    name c nothing 0 0
+                    const (48) int 0 0
+              seq nothing 0 0
+                ++ nothing 0 0
+                  name nc nothing 0 0
+      seq nothing 0 0
+        call nothing 0 0
+          . nothing 0 0
+            name lex nothing 0 0
+            name ungetc nothing 0 0
+        seq nothing 0 0
+          if nothing 0 0
+            == nothing 0 0
+              name nc nothing 0 0
+              const (0) int 0 0
+            seq nothing 0 0
+              return nothing 0 0
+                - nothing 0 0
+                  const (1) int 0 0
+          seq nothing 0 0
+            return nothing 0 0
+              name sum nothing 0 0
+typecheck tree: 
+fn(){} fn(lex: ref YYLEX): (int, ref Redir) 0 0
+  name readfdassign fn(lex: ref YYLEX): (int, ref Redir) 0 0
+  seq nothing 0 0
+    := nothing 0 0
+      name n1 nothing 0 0
+      call nothing 0 0
+        name readnum nothing 0 0
+        seq nothing 0 0
+          name lex nothing 0 0
+    seq nothing 0 0
+      if nothing 0 0
+        != nothing 0 0
+          := nothing 0 0
+            name c nothing 0 0
+            call nothing 0 0
+              . nothing 0 0
+                name lex nothing 0 0
+                name getc nothing 0 0
+          const (61) int 0 0
+        seq nothing 0 0
+          scope nothing 0 0
+            seq nothing 0 0
+              if nothing 0 0
+                == nothing 0 0
+                  name c nothing 0 0
+                  const (93) int 0 0
+                seq nothing 0 0
+                  return nothing 0 0
+                    tuple nothing 0 0
+                      seq nothing 0 0
+                        name REDIR nothing 0 0
+                        seq nothing 0 0
+                          ref nothing 0 0
+                            call nothing 0 0
+                              name Redir nothing 0 0
+                              seq nothing 0 0
+                                - nothing 0 0
+                                  const (1) int 0 0
+                                seq nothing 0 0
+                                  name n1 nothing 0 0
+                                  seq nothing 0 0
+                                    - nothing 0 0
+                                      const (1) int 0 0
+              seq nothing 0 0
+                return nothing 0 0
+                  tuple nothing 0 0
+                    seq nothing 0 0
+                      name ERROR nothing 0 0
+                      seq nothing 0 0
+                        name nil polymorphic type 0 0
+      seq nothing 0 0
+        := nothing 0 0
+          name n2 nothing 0 0
+          call nothing 0 0
+            name readnum nothing 0 0
+            seq nothing 0 0
+              name lex nothing 0 0
+        seq nothing 0 0
+          if nothing 0 0
+            != nothing 0 0
+              call nothing 0 0
+                . nothing 0 0
+                  name lex nothing 0 0
+                  name getc nothing 0 0
+              const (93) int 0 0
+            seq nothing 0 0
+              return nothing 0 0
+                tuple nothing 0 0
+                  seq nothing 0 0
+                    name ERROR nothing 0 0
+                    seq nothing 0 0
+                      name nil polymorphic type 0 0
+          seq nothing 0 0
+            return nothing 0 0
+              tuple nothing 0 0
+                seq nothing 0 0
+                  name DUP nothing 0 0
+                  seq nothing 0 0
+                    ref nothing 0 0
+                      call nothing 0 0
+                        name Redir nothing 0 0
+                        seq nothing 0 0
+                          - nothing 0 0
+                            const (1) int 0 0
+                          seq nothing 0 0
+                            name n1 nothing 0 0
+                            seq nothing 0 0
+                              name n2 nothing 0 0
+typecheck tree: 
+fn(){} fn(left: ref Node, right: ref Node): ref Node 0 0
+  name mkseq fn(left: ref Node, right: ref Node): ref Node 0 0
+  seq nothing 0 0
+    if nothing 0 0
+      && nothing 0 0
+        != nothing 0 0
+          name left nothing 0 0
+          name nil polymorphic type 0 0
+        != nothing 0 0
+          name right nothing 0 0
+          name nil polymorphic type 0 0
+      seq nothing 0 0
+        return nothing 0 0
+          call nothing 0 0
+            name mk nothing 0 0
+            seq nothing 0 0
+              name n_SEQ nothing 0 0
+              seq nothing 0 0
+                name left nothing 0 0
+                seq nothing 0 0
+                  name right nothing 0 0
+        if nothing 0 0
+          == nothing 0 0
+            name left nothing 0 0
+            name nil polymorphic type 0 0
+          seq nothing 0 0
+            return nothing 0 0
+              name right nothing 0 0
+    seq nothing 0 0
+      return nothing 0 0
+        name left nothing 0 0
+typecheck tree: 
+fn(){} fn(ntype: int, left: ref Node, right: ref Node): ref Node 0 0
+  name mk fn(ntype: int, left: ref Node, right: ref Node): ref Node 0 0
+  seq nothing 0 0
+    return nothing 0 0
+      ref nothing 0 0
+        call nothing 0 0
+          name Node nothing 0 0
+          seq nothing 0 0
+            name ntype nothing 0 0
+            seq nothing 0 0
+              name left nothing 0 0
+              seq nothing 0 0
+                name right nothing 0 0
+                seq nothing 0 0
+                  name nil polymorphic type 0 0
+                  seq nothing 0 0
+                    name nil polymorphic type 0 0
+typecheck tree: 
+fn(){} fn(): ref Sys->FD 0 0
+  name stderr fn(): ref Sys->FD 0 0
+  seq nothing 0 0
+    return nothing 0 0
+      call nothing 0 0
+        -> nothing 0 0
+          name sys nothing 0 0
+          name fildes nothing 0 0
+        seq nothing 0 0
+          const (2) int 0 0
+typecheck tree: 
+fn(){} fn(yyc: int): string 0 0
+  name yytokname fn(yyc: int): string 0 0
+  seq nothing 0 0
+    if nothing 0 0
+      && nothing 0 0
+        && nothing 0 0
+          > nothing 0 0
+            name yyc nothing 0 0
+            const (0) int 0 0
+          <= nothing 0 0
+            name yyc nothing 0 0
+            len nothing 0 0
+              name yytoknames nothing 0 0
+        != nothing 0 0
+          index nothing 0 0
+            name yytoknames nothing 0 0
+            - nothing 0 0
+              name yyc nothing 0 0
+              const (1) int 0 0
+          name nil polymorphic type 0 0
+      seq nothing 0 0
+        return nothing 0 0
+          index nothing 0 0
+            name yytoknames nothing 0 0
+            - nothing 0 0
+              name yyc nothing 0 0
+              const (1) int 0 0
+    seq nothing 0 0
+      return nothing 0 0
+        + nothing 0 0
+          + nothing 0 0
+            const < string 0 0
+            cast string 0 0
+              name yyc nothing 0 0
+          const > string 0 0
+typecheck tree: 
+fn(){} fn(yys: int): string 0 0
+  name yystatname fn(yys: int): string 0 0
+  seq nothing 0 0
+    if nothing 0 0
+      && nothing 0 0
+        && nothing 0 0
+          >= nothing 0 0
+            name yys nothing 0 0
+            const (0) int 0 0
+          < nothing 0 0
+            name yys nothing 0 0
+            len nothing 0 0
+              name yystates nothing 0 0
+        != nothing 0 0
+          index nothing 0 0
+            name yystates nothing 0 0
+            name yys nothing 0 0
+          name nil polymorphic type 0 0
+      seq nothing 0 0
+        return nothing 0 0
+          index nothing 0 0
+            name yystates nothing 0 0
+            name yys nothing 0 0
+    seq nothing 0 0
+      return nothing 0 0
+        + nothing 0 0
+          + nothing 0 0
+            const < string 0 0
+            cast string 0 0
+              name yys nothing 0 0
+          const >
+ string 0 0
+typecheck tree: 
+fn(){} fn(yylex: ref YYLEX): int 0 0
+  name yylex1 fn(yylex: ref YYLEX): int 0 0
+  seq nothing 0 0
+    vardecl int 0 0
+      seq nothing 0 0
+    seq nothing 0 0
+      := nothing 0 0
+        name yychar nothing 0 0
+        call nothing 0 0
+          . nothing 0 0
+            name yylex nothing 0 0
+            name lex nothing 0 0
+      seq nothing 0 0
+        if nothing 0 0
+          <= nothing 0 0
+            name yychar nothing 0 0
+            const (0) int 0 0
+          seq nothing 0 0
+            = nothing 0 0
+              name c nothing 0 0
+              index nothing 0 0
+                name yytok1 nothing 0 0
+                const (0) int 0 0
+            if nothing 0 0
+              < nothing 0 0
+                name yychar nothing 0 0
+                len nothing 0 0
+                  name yytok1 nothing 0 0
+              seq nothing 0 0
+                = nothing 0 0
+                  name c nothing 0 0
+                  index nothing 0 0
+                    name yytok1 nothing 0 0
+                    name yychar nothing 0 0
+                if nothing 0 0
+                  && nothing 0 0
+                    >= nothing 0 0
+                      name yychar nothing 0 0
+                      name YYPRIVATE nothing 0 0
+                    < nothing 0 0
+                      name yychar nothing 0 0
+                      + nothing 0 0
+                        name YYPRIVATE nothing 0 0
+                        len nothing 0 0
+                          name yytok2 nothing 0 0
+                  seq nothing 0 0
+                    = nothing 0 0
+                      name c nothing 0 0
+                      index nothing 0 0
+                        name yytok2 nothing 0 0
+                        - nothing 0 0
+                          name yychar nothing 0 0
+                          name YYPRIVATE nothing 0 0
+                    scope nothing 0 0
+                      seq nothing 0 0
+                        := nothing 0 0
+                          name n nothing 0 0
+                          len nothing 0 0
+                            name yytok3 nothing 0 0
+                        seq nothing 0 0
+                          = nothing 0 0
+                            name c nothing 0 0
+                            const (0) int 0 0
+                          seq nothing 0 0
+                            seq nothing 0 0
+                              := nothing 0 0
+                                name i nothing 0 0
+                                const (0) int 0 0
+                              for nothing 0 0
+                                < nothing 0 0
+                                  name i nothing 0 0
+                                  name n nothing 0 0
+                                seq nothing 0 0
+                                  scope nothing 0 0
+                                    seq nothing 0 0
+                                      if nothing 0 0
+                                        == nothing 0 0
+                                          index nothing 0 0
+                                            name yytok3 nothing 0 0
+                                            + nothing 0 0
+                                              name i nothing 0 0
+                                              const (0) int 0 0
+                                          name yychar nothing 0 0
+                                        seq nothing 0 0
+                                          scope nothing 0 0
+                                            seq nothing 0 0
+                                              = nothing 0 0
+                                                name c nothing 0 0
+                                                index nothing 0 0
+                                                  name yytok3 nothing 0 0
+                                                  + nothing 0 0
+                                                    name i nothing 0 0
+                                                    const (1) int 0 0
+                                              seq nothing 0 0
+                                                b
+typecheck tree: 
+fn(){} fn(yylex: ref YYLEX): int 0 0
+  name yyparse fn(yylex: ref YYLEX): int 0 0
+  seq nothing 0 0
+    if nothing 0 0
+      && nothing 0 0
+        >= nothing 0 0
+          name yydebug nothing 0 0
+          const (1) int 0 0
+        == nothing 0 0
+          name yysys nothing 0 0
+          name nil polymorphic type 0 0
+      seq nothing 0 0
+        scope nothing 0 0
+          seq nothing 0 0
+            = nothing 0 0
+              name yysys nothing 0 0
+              load YYSys 0 0
+                const $Sys string 0 0
+            seq nothing 0 0
+              = nothing 0 0
+                name yystderr nothing 0 0
+                call nothing 0 0
+                  -> nothing 0 0
+                    name yysys nothing 0 0
+                    name fildes nothing 0 0
+                  seq nothing 0 0
+                    const (2) int 0 0
+    seq nothing 0 0
+      := nothing 0 0
+        name yys nothing 0 0
+        array array of YYS 0 0
+          name YYMAXDEPTH nothing 0 0
+      seq nothing 0 0
+        vardecl YYSTYPE 0 0
+          seq nothing 0 0
+        seq nothing 0 0
+          := nothing 0 0
+            name yystate nothing 0 0
+            const (0) int 0 0
+          seq nothing 0 0
+            := nothing 0 0
+              name yychar nothing 0 0
+              - nothing 0 0
+                const (1) int 0 0
+            seq nothing 0 0
+              := nothing 0 0
+                name yynerrs nothing 0 0
+                const (0) int 0 0
+              seq nothing 0 0
+                := nothing 0 0
+                  name yyerrflag nothing 0 0
+                  const (0) int 0 0
+                seq nothing 0 0
+                  := nothing 0 0
+                    name yyp nothing 0 0
+                    - nothing 0 0
+                      const (1) int 0 0
+                  seq nothing 0 0
+                    := nothing 0 0
+                      name yyn nothing 0 0
+                      const (0) int 0 0
+                    seq nothing 0 0
+                      for nothing 0 0
+                        nothing nothing 0 0
+                        seq nothing 0 0
+                          scope nothing 0 0
+                            seq nothing 0 0
+                              if nothing 0 0
+                                >= nothing 0 0
+                                  name yydebug nothing 0 0
+                                  const (4) int 0 0
+                                seq nothing 0 0
+                                  call nothing 0 0
+                                    -> nothing 0 0
+                                      name yysys nothing 0 0
+                                      name fprint nothing 0 0
+                                    seq nothing 0 0
+                                      name yystderr nothing 0 0
+                                      seq nothing 0 0
+                                        const char %s in %s string 0 0
+                                        seq nothing 0 0
+                                          call nothing 0 0
+                                            name yytokname nothing 0 0
+                                            seq nothing 0 0
+                                              name yychar nothing 0 0
+                                          seq nothing 0 0
+                                            call nothing 0 0
+                                              name yystatname nothing 0 0
+                                              seq nothing 0 0
+                                                name yystate nothing 0 0
+                              seq nothing 0 0
+                                ++ nothing 0 0
+                                  name yyp nothing 0 0
+                                seq nothing 0 0
+                                  if nothing 0 0
+                                    >= nothing 0 0
+                                      name yyp nothing 0 0
+                                      len nothing 0 0
+                                        name yys nothing 0 0
+                                    seq nothing 0 0
+                          
+fncom: usage 2 417ba8
+ecom: 
+used int 10 2
+  call int 10 2
+    -> fn(fd: ref Sys->FD, s: string, *): int 12 1
+      name sys Sys 1 0
+      name fprint nothing 11 1
+    seq no type 10 2
+      call ref Sys->FD 10 2
+        -> fn(fd: int): ref Sys->FD 12 1
+          name sys Sys 1 0
+          name fildes nothing 11 1
+        seq no type 10 1
+          const (2) int 6 0
+      seq no type 10 1
+        const usage: sh [-ilexn] [-c command] [file [arg...]]
+ string 1 0
+ecom: 
+call int 10 2
+  -> fn(fd: ref Sys->FD, s: string, *): int 12 1
+    name sys Sys 1 0
+    name fprint nothing 11 1
+  seq no type 10 2
+    call ref Sys->FD 10 2
+      -> fn(fd: int): ref Sys->FD 12 1
+        name sys Sys 1 0
+        name fildes nothing 11 1
+      seq no type 10 1
+        const (2) int 6 0
+    seq no type 10 1
+      const usage: sh [-ilexn] [-c command] [file [arg...]]
+ string 1 0
+ecom to: 
+name .t0 int 0 0
+generate desc for Sys->fprint
+descmap offset 0
+descmap fd type ref Sys->FD offset 64 (d->offset=64 start=0) returns 64
+descmap s type string offset 72 (d->offset=72 start=0) returns 72
+generate desc for big
+generate desc for big
+	desc	$-1,8,""
+ecom: 
+call ref Sys->FD 10 2
+  -> fn(fd: int): ref Sys->FD 12 1
+    name sys Sys 1 0
+    name fildes nothing 11 1
+  seq no type 10 1
+    const (2) int 6 0
+ecom to: 
+name .t2 ref Sys->FD 0 0
+generate desc for big
+ecom: 
+const (2) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b3 big 0 0
+    const (64) int 6 0
+ecom: 
+name .t2 ref Sys->FD 0 0
+ecom to: 
+* ref Sys->FD 8 0
+  + int 15 0
+    name .b1 big 0 0
+    const (64) int 6 0
+ecom: 
+= ref Sys->FD 10 1
+  name .t2 ref Sys->FD 0 0
+  name nil ref Sys->FD 1 0
+ecom: 
+name nil ref Sys->FD 1 0
+ecom to: 
+name .t2 ref Sys->FD 0 0
+ecom: 
+const usage: sh [-ilexn] [-c command] [file [arg...]]
+ string 1 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b1 big 0 0
+    const (72) int 6 0
+ecom: 
+raise nothing 10 1
+  const fail:usage string 1 0
+fn: usage
+64: local .t0 int ref 1
+72: local .b1 big ref 1
+80: local .b3 big ref 1
+88: local .t2 ref Sys->FD ref 1
+generate desc for usage
+descmap offset 0
+descmap .t0 type int offset 64 (d->offset=64 start=0) returns -1
+descmap .b1 type big offset 72 (d->offset=72 start=0) returns -1
+descmap .b3 type big offset 80 (d->offset=80 start=0) returns -1
+descmap .t2 type ref Sys->FD offset 88 (d->offset=88 start=0) returns 88
+fncom: badmodule 6 417c68
+ecom: 
+used int 10 2
+  call int 10 2
+    -> fn(fd: ref Sys->FD, s: string, nil: string, *): int 12 1
+      name sys Sys 1 0
+      name fprint nothing 11 1
+    seq no type 10 2
+      call ref Sys->FD 10 2
+        -> fn(fd: int): ref Sys->FD 12 1
+          name sys Sys 1 0
+          name fildes nothing 11 1
+        seq no type 10 1
+          const (2) int 6 0
+      seq no type 10 1
+        const sh: cannot load %s: %r
+ string 1 0
+        seq no type 10 1
+          name path string 0 0
+ecom: 
+call int 10 2
+  -> fn(fd: ref Sys->FD, s: string, nil: string, *): int 12 1
+    name sys Sys 1 0
+    name fprint nothing 11 1
+  seq no type 10 2
+    call ref Sys->FD 10 2
+      -> fn(fd: int): ref Sys->FD 12 1
+        name sys Sys 1 0
+        name fildes nothing 11 1
+      seq no type 10 1
+        const (2) int 6 0
+    seq no type 10 1
+      const sh: cannot load %s: %r
+ string 1 0
+      seq no type 10 1
+        name path string 0 0
+ecom to: 
+name .t4 int 0 0
+generate desc for Sys->fprint
+descmap offset 0
+descmap fd type ref Sys->FD offset 64 (d->offset=64 start=0) returns 64
+descmap s type string offset 72 (d->offset=72 start=0) returns 72
+descmap type string offset 80 returns 80
+generate desc for big
+ecom: 
+call ref Sys->FD 10 2
+  -> fn(fd: int): ref Sys->FD 12 1
+    name sys Sys 1 0
+    name fildes nothing 11 1
+  seq no type 10 1
+    const (2) int 6 0
+ecom to: 
+name .t6 ref Sys->FD 0 0
+generate desc for big
+ecom: 
+const (2) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b7 big 0 0
+    const (64) int 6 0
+ecom: 
+name .t6 ref Sys->FD 0 0
+ecom to: 
+* ref Sys->FD 8 0
+  + int 15 0
+    name .b5 big 0 0
+    const (64) int 6 0
+ecom: 
+= ref Sys->FD 10 1
+  name .t6 ref Sys->FD 0 0
+  name nil ref Sys->FD 1 0
+ecom: 
+name nil ref Sys->FD 1 0
+ecom to: 
+name .t6 ref Sys->FD 0 0
+ecom: 
+const sh: cannot load %s: %r
+ string 1 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b5 big 0 0
+    const (72) int 6 0
+ecom: 
+name path string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b5 big 0 0
+    const (80) int 6 0
+ecom: 
+raise nothing 10 1
+  const fail:bad module string 1 0
+fn: badmodule
+64: argument path string ref 1
+72: local .t4 int ref 1
+80: local .b5 big ref 1
+88: local .b7 big ref 1
+96: local .t6 ref Sys->FD ref 1
+generate desc for badmodule
+descmap offset 0
+descmap path type string offset 64 (d->offset=64 start=0) returns 64
+descmap .t4 type int offset 72 (d->offset=72 start=0) returns -1
+descmap .b5 type big offset 80 (d->offset=80 start=0) returns -1
+descmap .b7 type big offset 88 (d->offset=88 start=0) returns -1
+descmap .t6 type ref Sys->FD offset 96 (d->offset=96 start=0) returns 96
+fncom: initialise 7 4b6b60
+ecom: 
+= Sys 10 1
+  name sys Sys 1 0
+  load Sys 10 1
+    const $Sys string 1 0
+    name .m.Sys Sys 17 1
+ecom: 
+load Sys 10 1
+  const $Sys string 1 0
+  name .m.Sys Sys 17 1
+ecom to: 
+name sys Sys 1 0
+ecom: 
+= Filepat 10 1
+  name filepat Filepat 1 0
+  load Filepat 10 1
+    const /dis/lib/filepat.dis string 1 0
+    name .m.Filepat Filepat 17 1
+ecom: 
+load Filepat 10 1
+  const /dis/lib/filepat.dis string 1 0
+  name .m.Filepat Filepat 17 1
+ecom to: 
+name filepat Filepat 1 0
+ecom: 
+call no type 10 2
+  name badmodule fn(path: string) 11 1
+  seq no type 10 1
+    const /dis/lib/filepat.dis string 1 0
+generate desc for big
+ecom: 
+const /dis/lib/filepat.dis string 1 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b9 big 0 0
+    const (64) int 6 0
+ecom: 
+= String 10 1
+  name str String 1 0
+  load String 10 1
+    const /dis/lib/string.dis string 1 0
+    name .m.String String 17 1
+ecom: 
+load String 10 1
+  const /dis/lib/string.dis string 1 0
+  name .m.String String 17 1
+ecom to: 
+name str String 1 0
+ecom: 
+call no type 10 2
+  name badmodule fn(path: string) 11 1
+  seq no type 10 1
+    const /dis/lib/string.dis string 1 0
+generate desc for big
+ecom: 
+const /dis/lib/string.dis string 1 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b9 big 0 0
+    const (64) int 6 0
+ecom: 
+= Bufio 10 1
+  name bufio Bufio 1 0
+  load Bufio 10 1
+    const /dis/lib/bufio.dis string 1 0
+    name .m.Bufio Bufio 17 1
+ecom: 
+load Bufio 10 1
+  const /dis/lib/bufio.dis string 1 0
+  name .m.Bufio Bufio 17 1
+ecom to: 
+name bufio Bufio 1 0
+ecom: 
+call no type 10 2
+  name badmodule fn(path: string) 11 1
+  seq no type 10 1
+    const /dis/lib/bufio.dis string 1 0
+generate desc for big
+ecom: 
+const /dis/lib/bufio.dis string 1 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b9 big 0 0
+    const (64) int 6 0
+ecom: 
+= Sh 10 1
+  name myself Sh 1 0
+  load Sh 10 1
+    const $self string 1 0
+    name .m.Sh Sh 17 1
+ecom: 
+load Sh 10 1
+  const $self string 1 0
+  name .m.Sh Sh 17 1
+ecom to: 
+name myself Sh 1 0
+ecom: 
+call no type 10 2
+  name badmodule fn(path: string) 11 1
+  seq no type 10 1
+    const $self(Sh) string 1 0
+generate desc for big
+ecom: 
+const $self(Sh) string 1 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b9 big 0 0
+    const (64) int 6 0
+ecom: 
+= Shellbuiltin 10 1
+  name myselfbuiltin Shellbuiltin 1 0
+  load Shellbuiltin 10 1
+    const $self string 1 0
+    name .m.Shellbuiltin Shellbuiltin 17 1
+ecom: 
+load Shellbuiltin 10 1
+  const $self string 1 0
+  name .m.Shellbuiltin Shellbuiltin 17 1
+ecom to: 
+name myselfbuiltin Shellbuiltin 1 0
+ecom: 
+call no type 10 2
+  name badmodule fn(path: string) 11 1
+  seq no type 10 1
+    const $self(Shellbuiltin) string 1 0
+generate desc for big
+ecom: 
+const $self(Shellbuiltin) string 1 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b9 big 0 0
+    const (64) int 6 0
+ecom: 
+= Env 10 1
+  name env Env 1 0
+  load Env 10 1
+    const /dis/lib/env.dis string 1 0
+    name .m.Env Env 17 1
+ecom: 
+load Env 10 1
+  const /dis/lib/env.dis string 1 0
+  name .m.Env Env 17 1
+ecom to: 
+name env Env 1 0
+fn: initialise
+64: local .t8 int ref 1
+72: local .b9 big ref 5
+generate desc for initialise
+descmap offset 0
+descmap .t8 type int offset 64 (d->offset=64 start=0) returns -1
+descmap .b9 type big offset 72 (d->offset=72 start=0) returns -1
+fncom: init 2 4b6d80
+ecom: 
+call no type 10 1
+  name initialise fn() 11 1
+generate desc for big
+ecom: 
+= Options 10 1
+  name opts Options 0 0
+  name blankopts Options 1 0
+ecom: 
+name blankopts Options 1 0
+ecom to: 
+name opts Options 0 0
+generate desc for Options
+descmap adt offset 0
+descmap offset 0
+descmap lflag type int offset 0 (d->offset=0 start=0) returns -1
+descmap nflag type int offset 4 (d->offset=4 start=0) returns -1
+descmap ctxtflags type int offset 8 (d->offset=8 start=0) returns -1
+descmap carg type string offset 16 (d->offset=16 start=0) returns 16
+generate desc for Options
+	desc	$-1,24,"20"
+eacom: 
+inds int 10 1
+  hd string 10 1
+    name argv list of string 0 0
+  const (0) int 6 0
+ecom: 
+inds int 10 1
+  hd string 10 1
+    name argv list of string 0 0
+  const (0) int 6 0
+ecom to: 
+name .t11 int 0 0
+eacom: 
+hd string 10 1
+  name argv list of string 0 0
+ecom: 
+hd string 10 1
+  name argv list of string 0 0
+ecom to: 
+name .t12 string 0 0
+ecom: 
+= string 10 1
+  name .t12 string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name .t12 string 0 0
+ecom: 
+++ int 10 1
+  * int 0 0
+    adr int 13 1
+      name opts Options 0 0
+  const (1) int 6 0
+ecom: 
+= list of string 10 1
+  name argv list of string 0 0
+  tl list of string 10 1
+    name argv list of string 0 0
+ecom: 
+tl list of string 10 1
+  name argv list of string 0 0
+ecom to: 
+name argv list of string 0 0
+ecom: 
+= int 10 1
+  name interactive int 0 0
+  const (0) int 6 0
+ecom: 
+const (0) int 6 0
+ecom to: 
+name interactive int 0 0
+eacom: 
+hd string 10 1
+  name argv list of string 0 0
+ecom: 
+hd string 10 1
+  name argv list of string 0 0
+ecom to: 
+name .t12 string 0 0
+ecom: 
+= string 10 1
+  name .t12 string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name .t12 string 0 0
+eacom: 
+inds int 10 1
+  hd string 10 1
+    name argv list of string 0 0
+  const (0) int 6 0
+ecom: 
+inds int 10 1
+  hd string 10 1
+    name argv list of string 0 0
+  const (0) int 6 0
+ecom to: 
+name .t11 int 0 0
+eacom: 
+hd string 10 1
+  name argv list of string 0 0
+ecom: 
+hd string 10 1
+  name argv list of string 0 0
+ecom to: 
+name .t12 string 0 0
+ecom: 
+= string 10 1
+  name .t12 string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name .t12 string 0 0
+ecom: 
+= int 10 1
+  name i int 0 0
+  const (1) int 6 0
+ecom: 
+const (1) int 6 0
+ecom to: 
+name i int 0 0
+eacom: 
+len int 10 1
+  hd string 10 1
+    name argv list of string 0 0
+ecom: 
+len int 10 1
+  hd string 10 1
+    name argv list of string 0 0
+ecom to: 
+name .t11 int 0 0
+eacom: 
+hd string 10 1
+  name argv list of string 0 0
+ecom: 
+hd string 10 1
+  name argv list of string 0 0
+ecom to: 
+name .t12 string 0 0
+ecom: 
+= string 10 1
+  name .t12 string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name .t12 string 0 0
+ecom: 
+= int 10 1
+  name c int 0 0
+  inds int 10 1
+    hd string 10 1
+      name argv list of string 0 0
+    name i int 0 0
+ecom: 
+inds int 10 1
+  hd string 10 1
+    name argv list of string 0 0
+  name i int 0 0
+ecom to: 
+name c int 0 0
+eacom: 
+hd string 10 1
+  name argv list of string 0 0
+ecom: 
+hd string 10 1
+  name argv list of string 0 0
+ecom to: 
+name .t12 string 0 0
+ecom: 
+= string 10 1
+  name .t12 string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name .t12 string 0 0
+ecom: 
+= int 10 1
+  name interactive int 0 0
+  const INTERACTIVE (1) int 6 0
+ecom: 
+const INTERACTIVE (1) int 6 0
+ecom to: 
+name interactive int 0 0
+ecom: 
+++ int 10 1
+  * int 0 0
+    adr int 13 1
+      name opts Options 0 0
+  const (1) int 6 0
+ecom: 
+++ int 10 1
+  * int 0 0
+    + int 13 1
+      adr int 13 1
+        name opts Options 0 0
+      const nflag (4) int 6 0
+  const (1) int 6 0
+ecom: 
+|= int 10 1
+  * int 0 0
+    + int 13 1
+      adr int 13 1
+        name opts Options 0 0
+      const ctxtflags (8) int 6 0
+  const ERROREXIT (8) int 6 0
+ecom: 
+|= int 10 1
+  * int 0 0
+    + int 13 1
+      adr int 13 1
+        name opts Options 0 0
+      const ctxtflags (8) int 6 0
+  const EXECPRINT (4) int 6 0
+eacom: 
+- int 10 1
+  len int 10 1
+    hd string 10 1
+      name argv list of string 0 0
+  const (1) int 6 0
+ecom: 
+- int 10 1
+  len int 10 1
+    hd string 10 1
+      name argv list of string 0 0
+  const (1) int 6 0
+ecom to: 
+name .t11 int 0 0
+ecom: 
+len int 10 1
+  hd string 10 1
+    name argv list of string 0 0
+ecom to: 
+name .t11 int 0 0
+eacom: 
+hd string 10 1
+  name argv list of string 0 0
+ecom: 
+hd string 10 1
+  name argv list of string 0 0
+ecom to: 
+name .t12 string 0 0
+ecom: 
+= string 10 1
+  name .t12 string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name .t12 string 0 0
+ecom: 
+= string 10 2
+  name arg string 0 0
+  slice string 10 2
+    hd string 10 1
+      name argv list of string 0 0
+    seq no type 10 2
+      + int 15 1
+        name i int 0 0
+        const (1) int 6 0
+      nothing no type 10 1
+ecom: 
+slice string 10 2
+  hd string 10 1
+    name argv list of string 0 0
+  seq no type 10 2
+    + int 15 1
+      name i int 0 0
+      const (1) int 6 0
+    nothing no type 10 1
+ecom to: 
+name arg string 0 0
+eacom: 
+hd string 10 1
+  name argv list of string 0 0
+ecom: 
+hd string 10 1
+  name argv list of string 0 0
+ecom to: 
+name .t12 string 0 0
+ecom: 
+len int 10 1
+  name .t12 string 0 0
+ecom to: 
+name .t11 int 0 0
+eacom: 
++ int 15 1
+  name i int 0 0
+  const (1) int 6 0
+ecom: 
++ int 15 1
+  name i int 0 0
+  const (1) int 6 0
+ecom to: 
+name .t13 int 0 0
+ecom: 
+name .t12 string 0 0
+ecom to: 
+name arg string 0 0
+ecom: 
+= string 10 1
+  name .t12 string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name .t12 string 0 0
+eacom: 
+tl list of string 10 1
+  name argv list of string 0 0
+ecom: 
+tl list of string 10 1
+  name argv list of string 0 0
+ecom to: 
+name .t12 list of string 0 0
+ecom: 
+= list of string 10 1
+  name .t12 list of string 0 0
+  name nil list of string 1 0
+ecom: 
+name nil list of string 1 0
+ecom to: 
+name .t12 list of string 0 0
+eacom: 
+hd string 10 1
+  tl list of string 10 1
+    name argv list of string 0 0
+ecom: 
+hd string 10 1
+  tl list of string 10 1
+    name argv list of string 0 0
+ecom to: 
+name .t12 string 0 0
+eacom: 
+tl list of string 10 1
+  name argv list of string 0 0
+ecom: 
+tl list of string 10 1
+  name argv list of string 0 0
+ecom to: 
+name .t12 list of string 0 0
+ecom: 
+= string 10 1
+  name .t12 string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name .t12 string 0 0
+ecom: 
+call no type 10 1
+  name usage fn() 11 1
+generate desc for big
+ecom: 
+= string 10 1
+  name arg string 0 0
+  hd string 10 1
+    tl list of string 10 1
+      name argv list of string 0 0
+ecom: 
+hd string 10 1
+  tl list of string 10 1
+    name argv list of string 0 0
+ecom to: 
+name arg string 0 0
+eacom: 
+tl list of string 10 1
+  name argv list of string 0 0
+ecom: 
+tl list of string 10 1
+  name argv list of string 0 0
+ecom to: 
+name .t12 list of string 0 0
+ecom: 
+= list of string 10 1
+  name .t12 list of string 0 0
+  name nil list of string 1 0
+ecom: 
+name nil list of string 1 0
+ecom to: 
+name .t12 list of string 0 0
+ecom: 
+= list of string 10 1
+  name argv list of string 0 0
+  tl list of string 10 1
+    name argv list of string 0 0
+ecom: 
+tl list of string 10 1
+  name argv list of string 0 0
+ecom to: 
+name argv list of string 0 0
+ecom: 
+= list of string 10 1
+  name argv list of string 0 0
+  tl list of string 10 1
+    name argv list of string 0 0
+ecom: 
+tl list of string 10 1
+  name argv list of string 0 0
+ecom to: 
+name argv list of string 0 0
+ecom: 
+= string 10 1
+  * string 0 0
+    + int 13 1
+      adr int 13 1
+        name opts Options 0 0
+      const carg (16) int 6 0
+  name arg string 0 0
+ecom: 
+name arg string 0 0
+ecom to: 
+* string 0 0
+  + int 13 1
+    adr int 13 1
+      name opts Options 0 0
+    const carg (16) int 6 0
+ecom: 
+= string 10 1
+  name arg string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name arg string 0 0
+ecom: 
+= string 10 1
+  name arg string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name arg string 0 0
+ecom: 
+++ int 10 1
+  name i int 0 0
+  const (1) int 6 0
+ecom: 
+= list of string 10 1
+  name argv list of string 0 0
+  tl list of string 10 1
+    name argv list of string 0 0
+ecom: 
+tl list of string 10 1
+  name argv list of string 0 0
+ecom to: 
+name argv list of string 0 0
+ecom: 
+used int 10 2
+  call int 10 2
+    -> fn(flags: int, movefd: list of int): int 12 1
+      name sys Sys 1 0
+      name pctl nothing 11 1
+    seq no type 10 1
+      const FORKFD (2) int 6 0
+      seq no type 10 1
+        name nil list of int 1 0
+ecom: 
+call int 10 2
+  -> fn(flags: int, movefd: list of int): int 12 1
+    name sys Sys 1 0
+    name pctl nothing 11 1
+  seq no type 10 1
+    const FORKFD (2) int 6 0
+    seq no type 10 1
+      name nil list of int 1 0
+ecom to: 
+name .t13 int 0 0
+generate desc for big
+ecom: 
+const FORKFD (2) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b10 big 0 0
+    const (64) int 6 0
+ecom: 
+name nil list of int 1 0
+ecom to: 
+* list of int 8 0
+  + int 15 0
+    name .b10 big 0 0
+    const (72) int 6 0
+ecom: 
+used int 10 2
+  call int 10 2
+    -> fn(flags: int, movefd: list of int): int 12 1
+      name sys Sys 1 0
+      name pctl nothing 11 1
+    seq no type 10 1
+      const FORKNS (8) int 6 0
+      seq no type 10 1
+        name nil list of int 1 0
+ecom: 
+call int 10 2
+  -> fn(flags: int, movefd: list of int): int 12 1
+    name sys Sys 1 0
+    name pctl nothing 11 1
+  seq no type 10 1
+    const FORKNS (8) int 6 0
+    seq no type 10 1
+      name nil list of int 1 0
+ecom to: 
+name .t13 int 0 0
+generate desc for big
+ecom: 
+const FORKNS (8) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b10 big 0 0
+    const (64) int 6 0
+ecom: 
+name nil list of int 1 0
+ecom to: 
+* list of int 8 0
+  + int 15 0
+    name .b10 big 0 0
+    const (72) int 6 0
+ecom: 
+= ref Context 10 2
+  name ctxt ref Context 0 0
+  call ref Context 10 2
+    name new fn(drawcontext: ref Draw->Context): ref Context 11 1
+    seq no type 10 1
+      name drawcontext ref Draw->Context 0 0
+ecom: 
+call ref Context 10 2
+  name new fn(drawcontext: ref Draw->Context): ref Context 11 1
+  seq no type 10 1
+    name drawcontext ref Draw->Context 0 0
+ecom to: 
+name ctxt ref Context 0 0
+generate desc for big
+ecom: 
+name drawcontext ref Draw->Context 0 0
+ecom to: 
+* ref Draw->Context 8 0
+  + int 15 0
+    name .b10 big 0 0
+    const (64) int 6 0
+ecom: 
+used int 10 2
+  call int 10 2
+    name setoptions fn(ctxt: self ref Context, flags: int, on: int): int 11 1
+    seq nothing 10 1
+      name ctxt ref Context 0 0
+      seq no type 10 1
+        * int 0 0
+          + int 13 1
+            adr int 13 1
+              name opts Options 0 0
+            const ctxtflags (8) int 6 0
+        seq no type 10 1
+          const (1) int 6 0
+ecom: 
+call int 10 2
+  name setoptions fn(ctxt: self ref Context, flags: int, on: int): int 11 1
+  seq nothing 10 1
+    name ctxt ref Context 0 0
+    seq no type 10 1
+      * int 0 0
+        + int 13 1
+          adr int 13 1
+            name opts Options 0 0
+          const ctxtflags (8) int 6 0
+      seq no type 10 1
+        const (1) int 6 0
+ecom to: 
+name .t13 int 0 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b10 big 0 0
+    const (64) int 6 0
+ecom: 
+* int 0 0
+  + int 13 1
+    adr int 13 1
+      name opts Options 0 0
+    const ctxtflags (8) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b10 big 0 0
+    const (72) int 6 0
+ecom: 
+const (1) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b10 big 0 0
+    const (76) int 6 0
+ecom: 
+call no type 10 2
+  name runscript fn(ctxt: ref Context, path: string, args: list of ref Listnode, reporterr: int) 11 1
+  seq no type 10 1
+    name ctxt ref Context 0 0
+    seq no type 10 1
+      const /lib/sh/profile string 1 0
+      seq no type 10 1
+        name nil list of ref Listnode 1 0
+        seq no type 10 1
+          const (0) int 6 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b10 big 0 0
+    const (64) int 6 0
+ecom: 
+const /lib/sh/profile string 1 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b10 big 0 0
+    const (72) int 6 0
+ecom: 
+name nil list of ref Listnode 1 0
+ecom to: 
+* list of ref Listnode 8 0
+  + int 15 0
+    name .b10 big 0 0
+    const (80) int 6 0
+ecom: 
+const (0) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b10 big 0 0
+    const (88) int 6 0
+ecom: 
+= string 10 2
+  name status string 0 0
+  call string 10 2
+    name run fn(ctxt: self ref Context, args: list of ref Listnode, last: int): string 11 1
+    seq nothing 10 2
+      name ctxt ref Context 0 0
+      seq no type 10 2
+        call list of ref Listnode 10 2
+          name stringlist2list fn(sl: list of string): list of ref Listnode 11 1
+          seq no type 10 1
+            :: list of string 10 1
+              + string 10 1
+                + string 10 1
+                  const { string 1 0
+                  * string 0 0
+                    + int 13 1
+                      adr int 13 1
+                        name opts Options 0 0
+                      const carg (16) int 6 0
+                const } string 1 0
+              name argv list of string 0 0
+        seq no type 10 1
+          ! int 10 1
+            name interactive int 0 0
+ecom: 
+call string 10 2
+  name run fn(ctxt: self ref Context, args: list of ref Listnode, last: int): string 11 1
+  seq nothing 10 2
+    name ctxt ref Context 0 0
+    seq no type 10 2
+      call list of ref Listnode 10 2
+        name stringlist2list fn(sl: list of string): list of ref Listnode 11 1
+        seq no type 10 1
+          :: list of string 10 1
+            + string 10 1
+              + string 10 1
+                const { string 1 0
+                * string 0 0
+                  + int 13 1
+                    adr int 13 1
+                      name opts Options 0 0
+                    const carg (16) int 6 0
+              const } string 1 0
+            name argv list of string 0 0
+      seq no type 10 1
+        ! int 10 1
+          name interactive int 0 0
+ecom to: 
+name status string 0 0
+generate desc for big
+ecom: 
+call list of ref Listnode 10 2
+  name stringlist2list fn(sl: list of string): list of ref Listnode 11 1
+  seq no type 10 1
+    :: list of string 10 1
+      + string 10 1
+        + string 10 1
+          const { string 1 0
+          * string 0 0
+            + int 13 1
+              adr int 13 1
+                name opts Options 0 0
+              const carg (16) int 6 0
+        const } string 1 0
+      name argv list of string 0 0
+ecom to: 
+name .t12 list of ref Listnode 0 0
+generate desc for big
+ecom: 
+:: list of string 10 1
+  + string 10 1
+    + string 10 1
+      const { string 1 0
+      * string 0 0
+        + int 13 1
+          adr int 13 1
+            name opts Options 0 0
+          const carg (16) int 6 0
+    const } string 1 0
+  name argv list of string 0 0
+ecom to: 
+* list of string 8 0
+  + int 15 0
+    name .b14 big 0 0
+    const (64) int 6 0
+eacom: 
++ string 10 1
+  + string 10 1
+    const { string 1 0
+    * string 0 0
+      + int 13 1
+        adr int 13 1
+          name opts Options 0 0
+        const carg (16) int 6 0
+  const } string 1 0
+ecom: 
++ string 10 1
+  + string 10 1
+    const { string 1 0
+    * string 0 0
+      + int 13 1
+        adr int 13 1
+          name opts Options 0 0
+        const carg (16) int 6 0
+  const } string 1 0
+ecom to: 
+name .t15 string 0 0
+ecom: 
++ string 10 1
+  const { string 1 0
+  * string 0 0
+    + int 13 1
+      adr int 13 1
+        name opts Options 0 0
+      const carg (16) int 6 0
+ecom to: 
+name .t15 string 0 0
+ecom: 
+name argv list of string 0 0
+ecom to: 
+name .t16 list of string 0 0
+ecom: 
+= string 10 1
+  name .t15 string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name .t15 string 0 0
+ecom: 
+= list of string 10 1
+  name .t16 list of string 0 0
+  name nil list of string 1 0
+ecom: 
+name nil list of string 1 0
+ecom to: 
+name .t16 list of string 0 0
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b10 big 0 0
+    const (64) int 6 0
+ecom: 
+name .t12 list of ref Listnode 0 0
+ecom to: 
+* list of ref Listnode 8 0
+  + int 15 0
+    name .b10 big 0 0
+    const (72) int 6 0
+ecom: 
+= list of ref Listnode 10 1
+  name .t12 list of ref Listnode 0 0
+  name nil list of ref Listnode 1 0
+ecom: 
+name nil list of ref Listnode 1 0
+ecom to: 
+name .t12 list of ref Listnode 0 0
+ecom: 
+! int 10 1
+  name interactive int 0 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b10 big 0 0
+    const (80) int 6 0
+ecom: 
+raise nothing 10 1
+  + string 10 1
+    const fail: string 1 0
+    name status string 0 0
+eacom: 
++ string 10 1
+  const fail: string 1 0
+  name status string 0 0
+ecom: 
++ string 10 1
+  const fail: string 1 0
+  name status string 0 0
+ecom to: 
+name .t16 string 0 0
+ecom: 
+= string 10 1
+  name .t16 string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name .t16 string 0 0
+ecom: 
+used string 10 2
+  call string 10 2
+    name setstatus fn(ctxt: ref Context, val: string): string 11 1
+    seq no type 10 1
+      name ctxt ref Context 0 0
+      seq no type 10 1
+        name status string 0 0
+ecom: 
+call string 10 2
+  name setstatus fn(ctxt: ref Context, val: string): string 11 1
+  seq no type 10 1
+    name ctxt ref Context 0 0
+    seq no type 10 1
+      name status string 0 0
+ecom to: 
+name .t16 string 0 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b14 big 0 0
+    const (64) int 6 0
+ecom: 
+name status string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b14 big 0 0
+    const (72) int 6 0
+ecom: 
+= string 10 1
+  name .t16 string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name .t16 string 0 0
+ecom: 
+= string 10 1
+  name status string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name status string 0 0
+eacom: 
+call int 10 2
+  name isconsole fn(fd: ref Sys->FD): int 11 1
+  seq no type 10 2
+    call ref Sys->FD 10 2
+      -> fn(fd: int): ref Sys->FD 12 1
+        name sys Sys 1 0
+        name fildes nothing 11 1
+      seq no type 10 1
+        const (0) int 6 0
+ecom: 
+call int 10 2
+  name isconsole fn(fd: ref Sys->FD): int 11 1
+  seq no type 10 2
+    call ref Sys->FD 10 2
+      -> fn(fd: int): ref Sys->FD 12 1
+        name sys Sys 1 0
+        name fildes nothing 11 1
+      seq no type 10 1
+        const (0) int 6 0
+ecom to: 
+name .t13 int 0 0
+generate desc for big
+ecom: 
+call ref Sys->FD 10 2
+  -> fn(fd: int): ref Sys->FD 12 1
+    name sys Sys 1 0
+    name fildes nothing 11 1
+  seq no type 10 1
+    const (0) int 6 0
+ecom to: 
+name .t16 ref Sys->FD 0 0
+generate desc for big
+ecom: 
+const (0) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b10 big 0 0
+    const (64) int 6 0
+ecom: 
+name .t16 ref Sys->FD 0 0
+ecom to: 
+* ref Sys->FD 8 0
+  + int 15 0
+    name .b14 big 0 0
+    const (64) int 6 0
+ecom: 
+= ref Sys->FD 10 1
+  name .t16 ref Sys->FD 0 0
+  name nil ref Sys->FD 1 0
+ecom: 
+name nil ref Sys->FD 1 0
+ecom to: 
+name .t16 ref Sys->FD 0 0
+ecom: 
+|= int 10 1
+  name interactive int 0 0
+  const INTERACTIVE (1) int 6 0
+ecom: 
+used int 10 2
+  call int 10 2
+    name setoptions fn(ctxt: self ref Context, flags: int, on: int): int 11 1
+    seq nothing 10 1
+      name ctxt ref Context 0 0
+      seq no type 10 1
+        name interactive int 0 0
+        seq no type 10 1
+          const (1) int 6 0
+ecom: 
+call int 10 2
+  name setoptions fn(ctxt: self ref Context, flags: int, on: int): int 11 1
+  seq nothing 10 1
+    name ctxt ref Context 0 0
+    seq no type 10 1
+      name interactive int 0 0
+      seq no type 10 1
+        const (1) int 6 0
+ecom to: 
+name .t13 int 0 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b14 big 0 0
+    const (64) int 6 0
+ecom: 
+name interactive int 0 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b14 big 0 0
+    const (72) int 6 0
+ecom: 
+const (1) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b14 big 0 0
+    const (76) int 6 0
+ecom: 
+call no type 10 2
+  name runfile fn(ctxt: ref Context, fd: ref Sys->FD, path: string, args: list of ref Listnode) 11 1
+  seq no type 10 2
+    name ctxt ref Context 0 0
+    seq no type 10 2
+      call ref Sys->FD 10 2
+        -> fn(fd: int): ref Sys->FD 12 1
+          name sys Sys 1 0
+          name fildes nothing 11 1
+        seq no type 10 1
+          const (0) int 6 0
+      seq no type 10 1
+        const stdin string 1 0
+        seq no type 10 1
+          name nil list of ref Listnode 1 0
+generate desc for big
+ecom: 
+call ref Sys->FD 10 2
+  -> fn(fd: int): ref Sys->FD 12 1
+    name sys Sys 1 0
+    name fildes nothing 11 1
+  seq no type 10 1
+    const (0) int 6 0
+ecom to: 
+name .t16 ref Sys->FD 0 0
+generate desc for big
+ecom: 
+const (0) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b10 big 0 0
+    const (64) int 6 0
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b14 big 0 0
+    const (64) int 6 0
+ecom: 
+name .t16 ref Sys->FD 0 0
+ecom to: 
+* ref Sys->FD 8 0
+  + int 15 0
+    name .b14 big 0 0
+    const (72) int 6 0
+ecom: 
+= ref Sys->FD 10 1
+  name .t16 ref Sys->FD 0 0
+  name nil ref Sys->FD 1 0
+ecom: 
+name nil ref Sys->FD 1 0
+ecom to: 
+name .t16 ref Sys->FD 0 0
+ecom: 
+const stdin string 1 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b14 big 0 0
+    const (80) int 6 0
+ecom: 
+name nil list of ref Listnode 1 0
+ecom to: 
+* list of ref Listnode 8 0
+  + int 15 0
+    name .b14 big 0 0
+    const (88) int 6 0
+ecom: 
+used int 10 2
+  call int 10 2
+    name setoptions fn(ctxt: self ref Context, flags: int, on: int): int 11 1
+    seq nothing 10 1
+      name ctxt ref Context 0 0
+      seq no type 10 1
+        name interactive int 0 0
+        seq no type 10 1
+          const (1) int 6 0
+ecom: 
+call int 10 2
+  name setoptions fn(ctxt: self ref Context, flags: int, on: int): int 11 1
+  seq nothing 10 1
+    name ctxt ref Context 0 0
+    seq no type 10 1
+      name interactive int 0 0
+      seq no type 10 1
+        const (1) int 6 0
+ecom to: 
+name .t13 int 0 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b14 big 0 0
+    const (64) int 6 0
+ecom: 
+name interactive int 0 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b14 big 0 0
+    const (72) int 6 0
+ecom: 
+const (1) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b14 big 0 0
+    const (76) int 6 0
+ecom: 
+call no type 10 2
+  name runscript fn(ctxt: ref Context, path: string, args: list of ref Listnode, reporterr: int) 11 1
+  seq no type 10 2
+    name ctxt ref Context 0 0
+    seq no type 10 2
+      hd string 10 1
+        name argv list of string 0 0
+      seq no type 10 2
+        call list of ref Listnode 10 2
+          name stringlist2list fn(sl: list of string): list of ref Listnode 11 1
+          seq no type 10 1
+            tl list of string 10 1
+              name argv list of string 0 0
+        seq no type 10 1
+          const (1) int 6 0
+generate desc for big
+ecom: 
+call list of ref Listnode 10 2
+  name stringlist2list fn(sl: list of string): list of ref Listnode 11 1
+  seq no type 10 1
+    tl list of string 10 1
+      name argv list of string 0 0
+ecom to: 
+name .t16 list of ref Listnode 0 0
+generate desc for big
+ecom: 
+tl list of string 10 1
+  name argv list of string 0 0
+ecom to: 
+* list of string 8 0
+  + int 15 0
+    name .b10 big 0 0
+    const (64) int 6 0
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b14 big 0 0
+    const (64) int 6 0
+ecom: 
+hd string 10 1
+  name argv list of string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b14 big 0 0
+    const (72) int 6 0
+ecom: 
+name .t16 list of ref Listnode 0 0
+ecom to: 
+* list of ref Listnode 8 0
+  + int 15 0
+    name .b14 big 0 0
+    const (80) int 6 0
+ecom: 
+= list of ref Listnode 10 1
+  name .t16 list of ref Listnode 0 0
+  name nil list of ref Listnode 1 0
+ecom: 
+name nil list of ref Listnode 1 0
+ecom to: 
+name .t16 list of ref Listnode 0 0
+ecom: 
+const (1) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b14 big 0 0
+    const (88) int 6 0
+fn: init
+64: argument drawcontext ref Draw->Context ref 1
+72: argument argv list of string ref 24
+80: local interactive int ref 7
+84: local i int ref 6
+88: local c int ref 2
+92: local .t11 int ref 1
+96: local .t13 int ref 1
+104: local opts Options ref 12
+128: local .b10 big ref 11
+136: local ctxt ref Context ref 10
+144: local .b14 big ref 7
+152: local status string ref 4
+160: local arg string ref 3
+168: local .t12 string ref 1
+176: local .t15 string ref 1
+184: local .t16 list of string ref 1
+generate desc for init
+descmap offset 0
+descmap drawcontext type ref Draw->Context offset 64 (d->offset=64 start=0) returns 64
+descmap argv type list of string offset 72 (d->offset=72 start=0) returns 72
+descmap interactive type int offset 80 (d->offset=80 start=0) returns -1
+descmap i type int offset 84 (d->offset=84 start=0) returns -1
+descmap c type int offset 88 (d->offset=88 start=0) returns -1
+descmap .t11 type int offset 92 (d->offset=92 start=0) returns -1
+descmap .t13 type int offset 96 (d->offset=96 start=0) returns -1
+descmap adt offset 104
+descmap offset 104
+descmap lflag type int offset 104 (d->offset=0 start=104) returns -1
+descmap nflag type int offset 108 (d->offset=4 start=104) returns -1
+descmap ctxtflags type int offset 112 (d->offset=8 start=104) returns -1
+descmap carg type string offset 120 (d->offset=16 start=104) returns 120
+descmap opts type Options offset 104 (d->offset=104 start=0) returns 120
+descmap .b10 type big offset 128 (d->offset=128 start=0) returns -1
+descmap ctxt type ref Context offset 136 (d->offset=136 start=0) returns 136
+descmap .b14 type big offset 144 (d->offset=144 start=0) returns -1
+descmap status type string offset 152 (d->offset=152 start=0) returns 152
+descmap arg type string offset 160 (d->offset=160 start=0) returns 160
+descmap .t12 type string offset 168 (d->offset=168 start=0) returns 168
+descmap .t15 type string offset 176 (d->offset=176 start=0) returns 176
+descmap .t16 type list of string offset 184 (d->offset=184 start=0) returns 184
+fncom: parse 3 4b8580
+ecom: 
+call no type 10 1
+  name initialise fn() 11 1
+generate desc for big
+ecom: 
+= ref YYLEX 10 2
+  name lex ref YYLEX 0 0
+  call ref YYLEX 10 2
+    name initstring fn(s: string): ref YYLEX 11 1
+    seq no type 10 1
+      name s string 0 0
+ecom: 
+call ref YYLEX 10 2
+  name initstring fn(s: string): ref YYLEX 11 1
+  seq no type 10 1
+    name s string 0 0
+ecom to: 
+name lex ref YYLEX 0 0
+generate desc for big
+ecom: 
+name s string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b17 big 0 0
+    const (64) int 6 0
+ecom: 
+call (ref Node, string) 10 2
+  name doparse fn(l: ref YYLEX, prompt: string, showline: int): (ref Node, string) 11 1
+  seq no type 10 1
+    name lex ref YYLEX 0 0
+    seq no type 10 1
+      const  string 1 0
+      seq no type 10 1
+        const (0) int 6 0
+ecom to: 
+* (ref Node, string) 8 0
+  name .ret int 0 0
+generate desc for big
+ecom: 
+name lex ref YYLEX 0 0
+ecom to: 
+* ref YYLEX 8 0
+  + int 15 0
+    name .b17 big 0 0
+    const (64) int 6 0
+ecom: 
+const  string 1 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b17 big 0 0
+    const (72) int 6 0
+ecom: 
+const (0) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b17 big 0 0
+    const (80) int 6 0
+fn: parse
+64: argument s string ref 1
+72: local .b17 big ref 3
+80: local lex ref YYLEX ref 2
+generate desc for parse
+descmap offset 0
+descmap s type string offset 64 (d->offset=64 start=0) returns 64
+descmap .b17 type big offset 72 (d->offset=72 start=0) returns -1
+descmap lex type ref YYLEX offset 80 (d->offset=80 start=0) returns 80
+fncom: system 2 4b74e0
+ecom: 
+call no type 10 1
+  name initialise fn() 11 1
+generate desc for big
+ecom: 
+= (ref Node, string) 10 2
+  tuple (ref Node, string) 10 1
+    seq nothing 10 1
+      name n ref Node 0 0
+      seq nothing 10 1
+        name err string 0 0
+  call (ref Node, string) 10 2
+    name parse fn(s: string): (ref Node, string) 11 1
+    seq no type 10 1
+      name cmd string 0 0
+ecom: 
+call (ref Node, string) 10 2
+  name parse fn(s: string): (ref Node, string) 11 1
+  seq no type 10 1
+    name cmd string 0 0
+ecom to: 
+name n (ref Node, string) 0 0
+generate desc for big
+ecom: 
+name cmd string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b18 big 0 0
+    const (64) int 6 0
+ecom: 
+name err string 0 0
+ecom to: 
+* string 8 0
+  name .ret int 0 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* polymorphic type 8 0
+  name .ret int 0 0
+ecom: 
+call string 10 3
+  name run fn(ctxt: self ref Context, args: list of ref Listnode, last: int): string 11 1
+  seq nothing 10 3
+    call ref Context 10 2
+      name new fn(drawcontext: ref Draw->Context): ref Context 11 1
+      seq no type 10 1
+        name drawctxt ref Draw->Context 0 0
+    seq no type 10 2
+      :: list of ref Listnode 10 1
+        ref ref Listnode 10 1
+          tuple Listnode 10 1
+            seq no type 10 1
+              name n ref Node 0 0
+              seq no type 10 1
+                name nil polymorphic type 1 0
+        name nil polymorphic type 1 0
+      seq no type 10 1
+        const (0) int 6 0
+ecom to: 
+* string 8 0
+  name .ret int 0 0
+generate desc for big
+ecom: 
+call ref Context 10 2
+  name new fn(drawcontext: ref Draw->Context): ref Context 11 1
+  seq no type 10 1
+    name drawctxt ref Draw->Context 0 0
+ecom to: 
+name .t19 ref Context 0 0
+generate desc for big
+ecom: 
+name drawctxt ref Draw->Context 0 0
+ecom to: 
+* ref Draw->Context 8 0
+  + int 15 0
+    name .b20 big 0 0
+    const (64) int 6 0
+ecom: 
+name .t19 ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b18 big 0 0
+    const (64) int 6 0
+ecom: 
+= ref Context 10 1
+  name .t19 ref Context 0 0
+  name nil ref Context 1 0
+ecom: 
+name nil ref Context 1 0
+ecom to: 
+name .t19 ref Context 0 0
+ecom: 
+:: list of ref Listnode 10 1
+  ref ref Listnode 10 1
+    tuple Listnode 10 1
+      seq no type 10 1
+        name n ref Node 0 0
+        seq no type 10 1
+          name nil polymorphic type 1 0
+  name nil polymorphic type 1 0
+ecom to: 
+* list of ref Listnode 8 0
+  + int 15 0
+    name .b18 big 0 0
+    const (72) int 6 0
+eacom: 
+ref ref Listnode 10 1
+  tuple Listnode 10 1
+    seq no type 10 1
+      name n ref Node 0 0
+      seq no type 10 1
+        name nil polymorphic type 1 0
+ecom: 
+ref ref Listnode 10 1
+  tuple Listnode 10 1
+    seq no type 10 1
+      name n ref Node 0 0
+      seq no type 10 1
+        name nil polymorphic type 1 0
+ecom to: 
+name .t19 ref Listnode 0 0
+generate desc for Listnode
+descmap adt offset 0
+descmap offset 0
+descmap cmd type ref Node offset 0 (d->offset=0 start=0) returns 0
+descmap word type string offset 8 (d->offset=8 start=0) returns 8
+generate desc for Listnode
+	desc	$-1,16,"c0"
+ecom: 
+tuple Listnode 10 1
+  seq no type 10 1
+    name n ref Node 0 0
+    seq no type 10 1
+      name nil polymorphic type 1 0
+ecom to: 
+* Listnode 8 0
+  name .t19 ref Listnode 0 0
+ecom: 
+name n ref Node 0 0
+ecom to: 
+* ref Node 8 0
+  + int 15 1
+    adr int 15 1
+      * Listnode 8 0
+        name .t19 ref Listnode 0 0
+    const (0) int 6 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* string 8 0
+  + int 15 1
+    adr int 15 1
+      * Listnode 8 0
+        name .t19 ref Listnode 0 0
+    const (8) int 6 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+name .t21 list of ref Listnode 0 0
+ecom: 
+= ref Listnode 10 1
+  name .t19 ref Listnode 0 0
+  name nil ref Listnode 1 0
+ecom: 
+name nil ref Listnode 1 0
+ecom to: 
+name .t19 ref Listnode 0 0
+ecom: 
+= list of ref Listnode 10 1
+  name .t21 list of ref Listnode 0 0
+  name nil list of ref Listnode 1 0
+ecom: 
+name nil list of ref Listnode 1 0
+ecom to: 
+name .t21 list of ref Listnode 0 0
+ecom: 
+const (0) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b18 big 0 0
+    const (80) int 6 0
+ecom: 
+= ref Node 10 1
+  * ref Node 0 0
+    adr int 13 1
+      name n (ref Node, string) 0 0
+  name nil ref Node 1 0
+ecom: 
+name nil ref Node 1 0
+ecom to: 
+* ref Node 0 0
+  adr int 13 1
+    name n (ref Node, string) 0 0
+ecom: 
+= string 10 1
+  * string 0 0
+    + int 13 1
+      adr int 13 1
+        name n (ref Node, string) 0 0
+      const t1 (8) int 6 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+* string 0 0
+  + int 13 1
+    adr int 13 1
+      name n (ref Node, string) 0 0
+    const t1 (8) int 6 0
+ecom: 
+= string 10 1
+  name err string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name err string 0 0
+ecom: 
+call string 10 2
+  name failurestatus fn(e: string): string 11 1
+  seq no type 10 1
+    name e string 0 0
+ecom to: 
+* string 8 0
+  name .ret int 0 0
+generate desc for big
+ecom: 
+name e string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b20 big 0 0
+    const (64) int 6 0
+fn: system
+64: argument drawctxt ref Draw->Context ref 1
+72: argument cmd string ref 1
+80: local e ref exception ref 2
+88: local .b18 big ref 3
+96: local n ref Node ref 3
+104: local err string ref 3
+112: local .b20 big ref 2
+120: local .t19 ref Context ref 1
+128: local .t21 list of ref Listnode ref 1
+generate desc for system
+descmap offset 0
+descmap drawctxt type ref Draw->Context offset 64 (d->offset=64 start=0) returns 64
+descmap cmd type string offset 72 (d->offset=72 start=0) returns 72
+descmap e type ref exception offset 80 (d->offset=80 start=0) returns 80
+descmap .b18 type big offset 88 (d->offset=88 start=0) returns -1
+descmap n type ref Node offset 96 (d->offset=96 start=0) returns 96
+descmap err type string offset 104 (d->offset=104 start=0) returns 104
+descmap .b20 type big offset 112 (d->offset=112 start=0) returns -1
+descmap .t19 type ref Context offset 120 (d->offset=120 start=0) returns 120
+descmap .t21 type list of ref Listnode offset 128 (d->offset=128 start=0) returns 128
+generate desc for e
+descmap offset 0
+descmap n type ref Node offset 96 (d->offset=96 start=0) returns 96
+descmap err type string offset 104 (d->offset=104 start=0) returns 104
+fncom: run 2 4b7d80
+ecom: 
+call no type 10 1
+  name initialise fn() 11 1
+generate desc for big
+ecom: 
+call string 10 3
+  name run fn(ctxt: self ref Context, args: list of ref Listnode, last: int): string 11 1
+  seq nothing 10 3
+    call ref Context 10 2
+      name new fn(drawcontext: ref Draw->Context): ref Context 11 1
+      seq no type 10 1
+        name drawctxt ref Draw->Context 0 0
+    seq no type 10 2
+      call list of ref Listnode 10 2
+        name stringlist2list fn(sl: list of string): list of ref Listnode 11 1
+        seq no type 10 1
+          name argv list of string 0 0
+      seq no type 10 1
+        const (0) int 6 0
+ecom to: 
+* string 8 0
+  name .ret int 0 0
+generate desc for big
+ecom: 
+call ref Context 10 2
+  name new fn(drawcontext: ref Draw->Context): ref Context 11 1
+  seq no type 10 1
+    name drawctxt ref Draw->Context 0 0
+ecom to: 
+name .t23 ref Context 0 0
+generate desc for big
+ecom: 
+name drawctxt ref Draw->Context 0 0
+ecom to: 
+* ref Draw->Context 8 0
+  + int 15 0
+    name .b24 big 0 0
+    const (64) int 6 0
+ecom: 
+call list of ref Listnode 10 2
+  name stringlist2list fn(sl: list of string): list of ref Listnode 11 1
+  seq no type 10 1
+    name argv list of string 0 0
+ecom to: 
+name .t25 list of ref Listnode 0 0
+generate desc for big
+ecom: 
+name argv list of string 0 0
+ecom to: 
+* list of string 8 0
+  + int 15 0
+    name .b24 big 0 0
+    const (64) int 6 0
+ecom: 
+name .t23 ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b22 big 0 0
+    const (64) int 6 0
+ecom: 
+= ref Context 10 1
+  name .t23 ref Context 0 0
+  name nil ref Context 1 0
+ecom: 
+name nil ref Context 1 0
+ecom to: 
+name .t23 ref Context 0 0
+ecom: 
+name .t25 list of ref Listnode 0 0
+ecom to: 
+* list of ref Listnode 8 0
+  + int 15 0
+    name .b22 big 0 0
+    const (72) int 6 0
+ecom: 
+= list of ref Listnode 10 1
+  name .t25 list of ref Listnode 0 0
+  name nil list of ref Listnode 1 0
+ecom: 
+name nil list of ref Listnode 1 0
+ecom to: 
+name .t25 list of ref Listnode 0 0
+ecom: 
+const (0) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b22 big 0 0
+    const (80) int 6 0
+ecom: 
+call string 10 2
+  name failurestatus fn(e: string): string 11 1
+  seq no type 10 1
+    name e string 0 0
+ecom to: 
+* string 8 0
+  name .ret int 0 0
+generate desc for big
+ecom: 
+name e string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b24 big 0 0
+    const (64) int 6 0
+fn: run
+64: argument drawctxt ref Draw->Context ref 1
+72: argument argv list of string ref 1
+80: local e ref exception ref 2
+88: local .b24 big ref 3
+96: local .b22 big ref 2
+104: local .t23 ref Context ref 1
+112: local .t25 list of ref Listnode ref 1
+generate desc for run
+descmap offset 0
+descmap drawctxt type ref Draw->Context offset 64 (d->offset=64 start=0) returns 64
+descmap argv type list of string offset 72 (d->offset=72 start=0) returns 72
+descmap e type ref exception offset 80 (d->offset=80 start=0) returns 80
+descmap .b24 type big offset 88 (d->offset=88 start=0) returns -1
+descmap .b22 type big offset 96 (d->offset=96 start=0) returns -1
+descmap .t23 type ref Context offset 104 (d->offset=104 start=0) returns 104
+descmap .t25 type list of ref Listnode offset 112 (d->offset=112 start=0) returns 112
+fncom: isconsole 2 417d28
+ecom: 
+= (int, Sys->Dir) 10 2
+  tuple (int, Sys->Dir) 10 1
+    seq nothing 10 1
+      name ok1 int 0 0
+      seq nothing 10 1
+        name d1 Sys->Dir 0 0
+  call (int, Sys->Dir) 10 2
+    -> fn(fd: ref Sys->FD): (int, Sys->Dir) 12 1
+      name sys Sys 1 0
+      name fstat nothing 11 1
+    seq no type 10 1
+      name fd ref Sys->FD 0 0
+ecom: 
+call (int, Sys->Dir) 10 2
+  -> fn(fd: ref Sys->FD): (int, Sys->Dir) 12 1
+    name sys Sys 1 0
+    name fstat nothing 11 1
+  seq no type 10 1
+    name fd ref Sys->FD 0 0
+ecom to: 
+name ok1 (int, Sys->Dir) 0 0
+generate desc for big
+ecom: 
+name fd ref Sys->FD 0 0
+ecom to: 
+* ref Sys->FD 8 0
+  + int 15 0
+    name .b26 big 0 0
+    const (64) int 6 0
+ecom: 
+= (int, Sys->Dir) 10 2
+  tuple (int, Sys->Dir) 10 1
+    seq nothing 10 1
+      name ok2 int 0 0
+      seq nothing 10 1
+        name d2 Sys->Dir 0 0
+  call (int, Sys->Dir) 10 2
+    -> fn(s: string): (int, Sys->Dir) 12 1
+      name sys Sys 1 0
+      name stat nothing 11 1
+    seq no type 10 1
+      const /dev/cons string 1 0
+ecom: 
+call (int, Sys->Dir) 10 2
+  -> fn(s: string): (int, Sys->Dir) 12 1
+    name sys Sys 1 0
+    name stat nothing 11 1
+  seq no type 10 1
+    const /dev/cons string 1 0
+ecom to: 
+name ok2 (int, Sys->Dir) 0 0
+generate desc for big
+ecom: 
+const /dev/cons string 1 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b26 big 0 0
+    const (64) int 6 0
+ecom: 
+const (0) int 6 0
+ecom to: 
+* int 8 0
+  name .ret int 0 0
+ecom: 
+&& int 10 2
+  == int 10 1
+    * int 0 0
+      + int 13 1
+        adr int 13 1
+          name d1 Sys->Dir 0 0
+        const dtype (72) int 6 0
+    * int 0 0
+      + int 13 1
+        adr int 13 1
+          name d2 Sys->Dir 0 0
+        const dtype (72) int 6 0
+  == int 10 1
+    * big 0 0
+      + int 13 1
+        adr int 13 1
+          name d1 Sys->Dir 0 0
+        const (32) int 6 0
+    * big 0 0
+      + int 13 1
+        adr int 13 1
+          name d2 Sys->Dir 0 0
+        const (32) int 6 0
+ecom to: 
+* int 8 0
+  name .ret int 0 0
+fn: isconsole
+64: argument fd ref Sys->FD ref 1
+72: local ok1 int ref 2
+80: local d1 Sys->Dir ref 3
+160: local ok2 int ref 2
+168: local d2 Sys->Dir ref 3
+248: local .b26 big ref 2
+generate desc for isconsole
+descmap offset 0
+descmap fd type ref Sys->FD offset 64 (d->offset=64 start=0) returns 64
+descmap ok1 type int offset 72 (d->offset=72 start=0) returns -1
+descmap adt offset 80
+descmap offset 80
+descmap name type string offset 80 (d->offset=0 start=80) returns 80
+descmap uid type string offset 88 (d->offset=8 start=80) returns 88
+descmap gid type string offset 96 (d->offset=16 start=80) returns 96
+descmap muid type string offset 104 (d->offset=24 start=80) returns 104
+descmap adt offset 112
+descmap offset 112
+descmap path type big offset 112 (d->offset=0 start=112) returns -1
+descmap vers type int offset 120 (d->offset=8 start=112) returns -1
+descmap qtype type int offset 124 (d->offset=12 start=112) returns -1
+descmap qid type Sys->Qid offset 112 (d->offset=32 start=80) returns -1
+descmap mode type int offset 128 (d->offset=48 start=80) returns -1
+descmap atime type int offset 132 (d->offset=52 start=80) returns -1
+descmap mtime type int offset 136 (d->offset=56 start=80) returns -1
+descmap length type big offset 144 (d->offset=64 start=80) returns -1
+descmap dtype type int offset 152 (d->offset=72 start=80) returns -1
+descmap dev type int offset 156 (d->offset=76 start=80) returns -1
+descmap d1 type Sys->Dir offset 80 (d->offset=80 start=0) returns 104
+descmap ok2 type int offset 160 (d->offset=160 start=0) returns -1
+descmap adt offset 168
+descmap offset 168
+descmap name type string offset 168 (d->offset=0 start=168) returns 168
+descmap uid type string offset 176 (d->offset=8 start=168) returns 176
+descmap gid type string offset 184 (d->offset=16 start=168) returns 184
+descmap muid type string offset 192 (d->offset=24 start=168) returns 192
+descmap adt offset 200
+descmap offset 200
+descmap path type big offset 200 (d->offset=0 start=200) returns -1
+descmap vers type int offset 208 (d->offset=8 start=200) returns -1
+descmap qtype type int offset 212 (d->offset=12 start=200) returns -1
+descmap qid type Sys->Qid offset 200 (d->offset=32 start=168) returns -1
+descmap mode type int offset 216 (d->offset=48 start=168) returns -1
+descmap atime type int offset 220 (d->offset=52 start=168) returns -1
+descmap mtime type int offset 224 (d->offset=56 start=168) returns -1
+descmap length type big offset 232 (d->offset=64 start=168) returns -1
+descmap dtype type int offset 240 (d->offset=72 start=168) returns -1
+descmap dev type int offset 244 (d->offset=76 start=168) returns -1
+descmap d2 type Sys->Dir offset 168 (d->offset=168 start=0) returns 192
+descmap .b26 type big offset 248 (d->offset=248 start=0) returns -1
+fncom: runscript 4 417de8
+ecom: 
+= ref Sys->FD 10 2
+  name fd ref Sys->FD 0 0
+  call ref Sys->FD 10 2
+    -> fn(s: string, mode: int): ref Sys->FD 12 1
+      name sys Sys 1 0
+      name open nothing 11 1
+    seq no type 10 1
+      name path string 0 0
+      seq no type 10 1
+        const OREAD (0) int 6 0
+ecom: 
+call ref Sys->FD 10 2
+  -> fn(s: string, mode: int): ref Sys->FD 12 1
+    name sys Sys 1 0
+    name open nothing 11 1
+  seq no type 10 1
+    name path string 0 0
+    seq no type 10 1
+      const OREAD (0) int 6 0
+ecom to: 
+name fd ref Sys->FD 0 0
+generate desc for big
+ecom: 
+name path string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b27 big 0 0
+    const (64) int 6 0
+ecom: 
+const OREAD (0) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b27 big 0 0
+    const (72) int 6 0
+ecom: 
+call no type 10 2
+  name runfile fn(ctxt: ref Context, fd: ref Sys->FD, path: string, args: list of ref Listnode) 11 1
+  seq no type 10 1
+    name ctxt ref Context 0 0
+    seq no type 10 1
+      name fd ref Sys->FD 0 0
+      seq no type 10 1
+        name path string 0 0
+        seq no type 10 1
+          name args list of ref Listnode 0 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b27 big 0 0
+    const (64) int 6 0
+ecom: 
+name fd ref Sys->FD 0 0
+ecom to: 
+* ref Sys->FD 8 0
+  + int 15 0
+    name .b27 big 0 0
+    const (72) int 6 0
+ecom: 
+name path string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b27 big 0 0
+    const (80) int 6 0
+ecom: 
+name args list of ref Listnode 0 0
+ecom to: 
+* list of ref Listnode 8 0
+  + int 15 0
+    name .b27 big 0 0
+    const (88) int 6 0
+ecom: 
+call no type 10 2
+  name fail fn(ctxt: self ref Context, ename: string, err: string) 11 1
+  seq nothing 10 2
+    name ctxt ref Context 0 0
+    seq no type 10 2
+      const bad script path string 1 0
+      seq no type 10 2
+        call string 10 2
+          -> fn(s: string, nil: string, *): string 12 1
+            name sys Sys 1 0
+            name sprint nothing 11 1
+          seq no type 10 1
+            const sh: cannot open %s: %r string 1 0
+            seq no type 10 1
+              name path string 0 0
+generate desc for big
+ecom: 
+call string 10 2
+  -> fn(s: string, nil: string, *): string 12 1
+    name sys Sys 1 0
+    name sprint nothing 11 1
+  seq no type 10 1
+    const sh: cannot open %s: %r string 1 0
+    seq no type 10 1
+      name path string 0 0
+ecom to: 
+name .t28 string 0 0
+generate desc for Sys->sprint
+descmap offset 0
+descmap s type string offset 64 (d->offset=64 start=0) returns 64
+descmap type string offset 72 returns 72
+generate desc for big
+ecom: 
+const sh: cannot open %s: %r string 1 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b29 big 0 0
+    const (64) int 6 0
+ecom: 
+name path string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b29 big 0 0
+    const (72) int 6 0
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b27 big 0 0
+    const (64) int 6 0
+ecom: 
+const bad script path string 1 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b27 big 0 0
+    const (72) int 6 0
+ecom: 
+name .t28 string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b27 big 0 0
+    const (80) int 6 0
+ecom: 
+= string 10 1
+  name .t28 string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name .t28 string 0 0
+ecom: 
+= ref Sys->FD 10 1
+  name fd ref Sys->FD 0 0
+  name nil ref Sys->FD 1 0
+ecom: 
+name nil ref Sys->FD 1 0
+ecom to: 
+name fd ref Sys->FD 0 0
+ecom: 
+raise nothing 10 1
+  name .ex0 exception 0 0
+fn: runscript
+64: argument ctxt ref Context ref 2
+72: argument path string ref 3
+80: argument args list of ref Listnode ref 1
+88: argument reporterr int ref 2
+92: local .ex0 ref exception ref 1
+96: local .b27 big ref 3
+104: local fd ref Sys->FD ref 3
+112: local .b29 big ref 1
+120: local .t28 string ref 1
+generate desc for runscript
+descmap offset 0
+descmap ctxt type ref Context offset 64 (d->offset=64 start=0) returns 64
+descmap path type string offset 72 (d->offset=72 start=0) returns 72
+descmap args type list of ref Listnode offset 80 (d->offset=80 start=0) returns 80
+descmap reporterr type int offset 88 (d->offset=88 start=0) returns -1
+descmap .ex0 type ref exception offset 92 (d->offset=92 start=0) returns 96
+descmap .b27 type big offset 96 (d->offset=96 start=0) returns -1
+descmap fd type ref Sys->FD offset 104 (d->offset=104 start=0) returns 104
+descmap .b29 type big offset 112 (d->offset=112 start=0) returns -1
+descmap .t28 type string offset 120 (d->offset=120 start=0) returns 120
+generate desc for .ex0
+descmap offset 0
+descmap fd type ref Sys->FD offset 104 (d->offset=104 start=0) returns 104
+fncom: runfile 3 417ea8
+ecom: 
+call no type 10 2
+  name push fn(ctxt: self ref Context) 11 1
+  seq nothing 10 1
+    name ctxt ref Context 0 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b30 big 0 0
+    const (64) int 6 0
+ecom: 
+call no type 10 2
+  name setlocal fn(ctxt: self ref Context, name: string, val: list of ref Listnode) 11 1
+  seq nothing 10 2
+    name ctxt ref Context 0 0
+    seq no type 10 2
+      const 0 string 1 0
+      seq no type 10 2
+        call list of ref Listnode 10 2
+          name stringlist2list fn(sl: list of string): list of ref Listnode 11 1
+          seq no type 10 1
+            :: list of string 10 1
+              name path string 0 0
+              name nil polymorphic type 1 0
+generate desc for big
+ecom: 
+call list of ref Listnode 10 2
+  name stringlist2list fn(sl: list of string): list of ref Listnode 11 1
+  seq no type 10 1
+    :: list of string 10 1
+      name path string 0 0
+      name nil polymorphic type 1 0
+ecom to: 
+name .t31 list of ref Listnode 0 0
+generate desc for big
+ecom: 
+:: list of string 10 1
+  name path string 0 0
+  name nil polymorphic type 1 0
+ecom to: 
+* list of string 8 0
+  + int 15 0
+    name .b32 big 0 0
+    const (64) int 6 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+name .t33 list of string 0 0
+ecom: 
+= list of string 10 1
+  name .t33 list of string 0 0
+  name nil list of string 1 0
+ecom: 
+name nil list of string 1 0
+ecom to: 
+name .t33 list of string 0 0
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b30 big 0 0
+    const (64) int 6 0
+ecom: 
+const 0 string 1 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b30 big 0 0
+    const (72) int 6 0
+ecom: 
+name .t31 list of ref Listnode 0 0
+ecom to: 
+* list of ref Listnode 8 0
+  + int 15 0
+    name .b30 big 0 0
+    const (80) int 6 0
+ecom: 
+= list of ref Listnode 10 1
+  name .t31 list of ref Listnode 0 0
+  name nil list of ref Listnode 1 0
+ecom: 
+name nil list of ref Listnode 1 0
+ecom to: 
+name .t31 list of ref Listnode 0 0
+ecom: 
+call no type 10 2
+  name setlocal fn(ctxt: self ref Context, name: string, val: list of ref Listnode) 11 1
+  seq nothing 10 1
+    name ctxt ref Context 0 0
+    seq no type 10 1
+      const * string 1 0
+      seq no type 10 1
+        name args list of ref Listnode 0 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b32 big 0 0
+    const (64) int 6 0
+ecom: 
+const * string 1 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b32 big 0 0
+    const (72) int 6 0
+ecom: 
+name args list of ref Listnode 0 0
+ecom to: 
+* list of ref Listnode 8 0
+  + int 15 0
+    name .b32 big 0 0
+    const (80) int 6 0
+ecom: 
+= ref YYLEX 10 2
+  name lex ref YYLEX 0 0
+  call ref YYLEX 10 2
+    name initfile fn(fd: ref Sys->FD, path: string): ref YYLEX 11 1
+    seq no type 10 1
+      name fd ref Sys->FD 0 0
+      seq no type 10 1
+        name path string 0 0
+ecom: 
+call ref YYLEX 10 2
+  name initfile fn(fd: ref Sys->FD, path: string): ref YYLEX 11 1
+  seq no type 10 1
+    name fd ref Sys->FD 0 0
+    seq no type 10 1
+      name path string 0 0
+ecom to: 
+name lex ref YYLEX 0 0
+generate desc for big
+ecom: 
+name fd ref Sys->FD 0 0
+ecom to: 
+* ref Sys->FD 8 0
+  + int 15 0
+    name .b32 big 0 0
+    const (64) int 6 0
+ecom: 
+name path string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b32 big 0 0
+    const (72) int 6 0
+ecom: 
+= list of string 10 1
+  name prompt list of string 0 0
+    name lex ref YYLEX 0 0
+  :: list of string 10 1
+    const  string 1 0
+    :: list of string 10 1
+      const  string 1 0
+      name nil polymorphic type 1 0
+ecom: 
+:: list of string 10 1
+  const  string 1 0
+  :: list of string 10 1
+    const  string 1 0
+    name nil polymorphic type 1 0
+ecom to: 
+name prompt list of string 0 0
+  name lex ref YYLEX 0 0
+ecom: 
+:: list of string 10 1
+  const  string 1 0
+  name nil polymorphic type 1 0
+ecom to: 
+name .t33 list of string 0 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+name .t33 list of string 0 0
+ecom: 
+= list of string 10 1
+  name .t33 list of string 0 0
+  name nil list of string 1 0
+ecom: 
+name nil list of string 1 0
+ecom to: 
+name .t33 list of string 0 0
+ecom: 
+= int 10 1
+  name interactive int 0 0
+  & int 10 1
+    * int 10 1
+      + int 10 1
+        * ref Localenv 10 1
+          + int 10 1
+            * ref Environment 8 0
+              name ctxt ref Context 0 0
+            const localenv (24) int 6 0
+        const flags (16) int 6 0
+    const INTERACTIVE (1) int 6 0
+ecom: 
+& int 10 1
+  * int 10 1
+    + int 10 1
+      * ref Localenv 10 1
+        + int 10 1
+          * ref Environment 8 0
+            name ctxt ref Context 0 0
+          const localenv (24) int 6 0
+      const flags (16) int 6 0
+  const INTERACTIVE (1) int 6 0
+ecom to: 
+name interactive int 0 0
+eacom: 
+* int 10 1
+  + int 10 1
+    * ref Localenv 10 1
+      + int 10 1
+        * ref Environment 8 0
+          name ctxt ref Context 0 0
+        const localenv (24) int 6 0
+    const flags (16) int 6 0
+ecom: 
+* ref Localenv 10 1
+  + int 10 1
+    * ref Environment 8 0
+      name ctxt ref Context 0 0
+    const localenv (24) int 6 0
+ecom to: 
+name .t33 ref Localenv 0 0
+eacom: 
+* ref Localenv 10 1
+  + int 10 1
+    * ref Environment 8 0
+      name ctxt ref Context 0 0
+    const localenv (24) int 6 0
+ecom: 
+* ref Environment 8 0
+  name ctxt ref Context 0 0
+ecom to: 
+name .t33 ref Environment 0 0
+ecom: 
+= ref Localenv 10 1
+  name .t33 ref Localenv 0 0
+  name nil ref Localenv 1 0
+ecom: 
+name nil ref Localenv 1 0
+ecom to: 
+name .t33 ref Localenv 0 0
+ecom: 
+= list of string 10 2
+  name prompt list of string 0 0
+  call list of string 10 2
+    name list2stringlist fn(nl: list of ref Listnode): list of string 11 1
+    seq no type 10 2
+      call list of ref Listnode 10 2
+        name get fn(ctxt: self ref Context, name: string): list of ref Listnode 11 1
+        seq nothing 10 1
+          name ctxt ref Context 0 0
+          seq no type 10 1
+            const prompt string 1 0
+ecom: 
+call list of string 10 2
+  name list2stringlist fn(nl: list of ref Listnode): list of string 11 1
+  seq no type 10 2
+    call list of ref Listnode 10 2
+      name get fn(ctxt: self ref Context, name: string): list of ref Listnode 11 1
+      seq nothing 10 1
+        name ctxt ref Context 0 0
+        seq no type 10 1
+          const prompt string 1 0
+ecom to: 
+name prompt list of string 0 0
+generate desc for big
+ecom: 
+call list of ref Listnode 10 2
+  name get fn(ctxt: self ref Context, name: string): list of ref Listnode 11 1
+  seq nothing 10 1
+    name ctxt ref Context 0 0
+    seq no type 10 1
+      const prompt string 1 0
+ecom to: 
+name .t33 list of ref Listnode 0 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b30 big 0 0
+    const (64) int 6 0
+ecom: 
+const prompt string 1 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b30 big 0 0
+    const (72) int 6 0
+ecom: 
+name .t33 list of ref Listnode 0 0
+ecom to: 
+* list of ref Listnode 8 0
+  + int 15 0
+    name .b32 big 0 0
+    const (64) int 6 0
+ecom: 
+= list of ref Listnode 10 1
+  name .t33 list of ref Listnode 0 0
+  name nil list of ref Listnode 1 0
+ecom: 
+name nil list of ref Listnode 1 0
+ecom to: 
+name .t33 list of ref Listnode 0 0
+ecom: 
+= list of string 10 1
+  name prompt list of string 0 0
+  :: list of string 10 1
+    const ;  string 1 0
+    :: list of string 10 1
+      const  string 1 0
+      name nil polymorphic type 1 0
+ecom: 
+:: list of string 10 1
+  const ;  string 1 0
+  :: list of string 10 1
+    const  string 1 0
+    name nil polymorphic type 1 0
+ecom to: 
+name prompt list of string 0 0
+ecom: 
+:: list of string 10 1
+  const  string 1 0
+  name nil polymorphic type 1 0
+ecom to: 
+name .t33 list of string 0 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+name .t33 list of string 0 0
+ecom: 
+= list of string 10 1
+  name .t33 list of string 0 0
+  name nil list of string 1 0
+ecom: 
+name nil list of string 1 0
+ecom to: 
+name .t33 list of string 0 0
+ecom: 
+used int 10 2
+  call int 10 2
+    -> fn(fd: ref Sys->FD, s: string, nil: string, *): int 12 1
+      name sys Sys 1 0
+      name fprint nothing 11 1
+    seq no type 10 2
+      call ref Sys->FD 10 2
+        -> fn(fd: int): ref Sys->FD 12 1
+          name sys Sys 1 0
+          name fildes nothing 11 1
+        seq no type 10 1
+          const (2) int 6 0
+      seq no type 10 1
+        const %s string 1 0
+        seq no type 10 1
+          hd string 10 1
+            name prompt list of string 0 0
+ecom: 
+call int 10 2
+  -> fn(fd: ref Sys->FD, s: string, nil: string, *): int 12 1
+    name sys Sys 1 0
+    name fprint nothing 11 1
+  seq no type 10 2
+    call ref Sys->FD 10 2
+      -> fn(fd: int): ref Sys->FD 12 1
+        name sys Sys 1 0
+        name fildes nothing 11 1
+      seq no type 10 1
+        const (2) int 6 0
+    seq no type 10 1
+      const %s string 1 0
+      seq no type 10 1
+        hd string 10 1
+          name prompt list of string 0 0
+ecom to: 
+name .t34 int 0 0
+generate desc for Sys->fprint
+descmap offset 0
+descmap fd type ref Sys->FD offset 64 (d->offset=64 start=0) returns 64
+descmap s type string offset 72 (d->offset=72 start=0) returns 72
+descmap type string offset 80 returns 80
+generate desc for big
+ecom: 
+call ref Sys->FD 10 2
+  -> fn(fd: int): ref Sys->FD 12 1
+    name sys Sys 1 0
+    name fildes nothing 11 1
+  seq no type 10 1
+    const (2) int 6 0
+ecom to: 
+name .t33 ref Sys->FD 0 0
+generate desc for big
+ecom: 
+const (2) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b30 big 0 0
+    const (64) int 6 0
+ecom: 
+name .t33 ref Sys->FD 0 0
+ecom to: 
+* ref Sys->FD 8 0
+  + int 15 0
+    name .b32 big 0 0
+    const (64) int 6 0
+ecom: 
+= ref Sys->FD 10 1
+  name .t33 ref Sys->FD 0 0
+  name nil ref Sys->FD 1 0
+ecom: 
+name nil ref Sys->FD 1 0
+ecom to: 
+name .t33 ref Sys->FD 0 0
+ecom: 
+const %s string 1 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b32 big 0 0
+    const (72) int 6 0
+ecom: 
+hd string 10 1
+  name prompt list of string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b32 big 0 0
+    const (80) int 6 0
+eacom: 
+tl list of string 10 1
+  name prompt list of string 0 0
+ecom: 
+tl list of string 10 1
+  name prompt list of string 0 0
+ecom to: 
+name .t33 list of string 0 0
+ecom: 
+= list of string 10 1
+  name .t33 list of string 0 0
+  name nil list of string 1 0
+ecom: 
+name nil list of string 1 0
+ecom to: 
+name .t33 list of string 0 0
+ecom: 
+= list of string 10 2
+  name prompt list of string 0 0
+  :: list of string 10 2
+    hd string 10 1
+      name prompt list of string 0 0
+    :: list of string 10 1
+      const  string 1 0
+      name nil polymorphic type 1 0
+ecom: 
+:: list of string 10 2
+  hd string 10 1
+    name prompt list of string 0 0
+  :: list of string 10 1
+    const  string 1 0
+    name nil polymorphic type 1 0
+ecom to: 
+name prompt list of string 0 0
+eacom: 
+hd string 10 1
+  name prompt list of string 0 0
+ecom: 
+hd string 10 1
+  name prompt list of string 0 0
+ecom to: 
+name .t33 string 0 0
+ecom: 
+:: list of string 10 1
+  const  string 1 0
+  name nil polymorphic type 1 0
+ecom to: 
+name .t31 list of string 0 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+name .t31 list of string 0 0
+ecom: 
+= string 10 1
+  name .t33 string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name .t33 string 0 0
+ecom: 
+= list of string 10 1
+  name .t31 list of string 0 0
+  name nil list of string 1 0
+ecom: 
+name nil list of string 1 0
+ecom to: 
+name .t31 list of string 0 0
+ecom: 
+= (ref Node, string) 10 2
+  tuple (ref Node, string) 10 1
+    seq nothing 10 1
+      name n ref Node 0 0
+      seq nothing 10 1
+        name err string 0 0
+  call (ref Node, string) 10 2
+    name doparse fn(l: ref YYLEX, prompt: string, showline: int): (ref Node, string) 11 1
+    seq no type 10 2
+      name lex ref YYLEX 0 0
+      seq no type 10 2
+        hd string 10 1
+          tl list of string 10 1
+            name prompt list of string 0 0
+        seq no type 10 1
+          ! int 10 1
+            name interactive int 0 0
+ecom: 
+call (ref Node, string) 10 2
+  name doparse fn(l: ref YYLEX, prompt: string, showline: int): (ref Node, string) 11 1
+  seq no type 10 2
+    name lex ref YYLEX 0 0
+    seq no type 10 2
+      hd string 10 1
+        tl list of string 10 1
+          name prompt list of string 0 0
+      seq no type 10 1
+        ! int 10 1
+          name interactive int 0 0
+ecom to: 
+name n (ref Node, string) 0 0
+generate desc for big
+ecom: 
+name lex ref YYLEX 0 0
+ecom to: 
+* ref YYLEX 8 0
+  + int 15 0
+    name .b32 big 0 0
+    const (64) int 6 0
+ecom: 
+hd string 10 1
+  tl list of string 10 1
+    name prompt list of string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b32 big 0 0
+    const (72) int 6 0
+eacom: 
+tl list of string 10 1
+  name prompt list of string 0 0
+ecom: 
+tl list of string 10 1
+  name prompt list of string 0 0
+ecom to: 
+name .t33 list of string 0 0
+ecom: 
+= list of string 10 1
+  name .t33 list of string 0 0
+  name nil list of string 1 0
+ecom: 
+name nil list of string 1 0
+ecom to: 
+name .t33 list of string 0 0
+ecom: 
+! int 10 1
+  name interactive int 0 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b32 big 0 0
+    const (80) int 6 0
+ecom: 
+used int 10 2
+  call int 10 2
+    -> fn(fd: ref Sys->FD, s: string, nil: string, *): int 12 1
+      name sys Sys 1 0
+      name fprint nothing 11 1
+    seq no type 10 2
+      call ref Sys->FD 10 2
+        -> fn(fd: int): ref Sys->FD 12 1
+          name sys Sys 1 0
+          name fildes nothing 11 1
+        seq no type 10 1
+          const (2) int 6 0
+      seq no type 10 1
+        const sh: %s
+ string 1 0
+        seq no type 10 1
+          name err string 0 0
+ecom: 
+call int 10 2
+  -> fn(fd: ref Sys->FD, s: string, nil: string, *): int 12 1
+    name sys Sys 1 0
+    name fprint nothing 11 1
+  seq no type 10 2
+    call ref Sys->FD 10 2
+      -> fn(fd: int): ref Sys->FD 12 1
+        name sys Sys 1 0
+        name fildes nothing 11 1
+      seq no type 10 1
+        const (2) int 6 0
+    seq no type 10 1
+      const sh: %s
+ string 1 0
+      seq no type 10 1
+        name err string 0 0
+ecom to: 
+name .t34 int 0 0
+generate desc for Sys->fprint
+descmap offset 0
+descmap fd type ref Sys->FD offset 64 (d->offset=64 start=0) returns 64
+descmap s type string offset 72 (d->offset=72 start=0) returns 72
+descmap type string offset 80 returns 80
+generate desc for big
+ecom: 
+call ref Sys->FD 10 2
+  -> fn(fd: int): ref Sys->FD 12 1
+    name sys Sys 1 0
+    name fildes nothing 11 1
+  seq no type 10 1
+    const (2) int 6 0
+ecom to: 
+name .t33 ref Sys->FD 0 0
+generate desc for big
+ecom: 
+const (2) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b30 big 0 0
+    const (64) int 6 0
+ecom: 
+name .t33 ref Sys->FD 0 0
+ecom to: 
+* ref Sys->FD 8 0
+  + int 15 0
+    name .b32 big 0 0
+    const (64) int 6 0
+ecom: 
+= ref Sys->FD 10 1
+  name .t33 ref Sys->FD 0 0
+  name nil ref Sys->FD 1 0
+ecom: 
+name nil ref Sys->FD 1 0
+ecom to: 
+name .t33 ref Sys->FD 0 0
+ecom: 
+const sh: %s
+ string 1 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b32 big 0 0
+    const (72) int 6 0
+ecom: 
+name err string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b32 big 0 0
+    const (80) int 6 0
+ecom: 
+raise nothing 10 1
+  const fail:parse error string 1 0
+ecom: 
+= string 10 2
+  name laststatus string 0 0
+  call string 10 2
+    name walk fn(ctxt: ref Context, n: ref Node, last: int): string 11 1
+    seq no type 10 1
+      name ctxt ref Context 0 0
+      seq no type 10 1
+        name n ref Node 0 0
+        seq no type 10 1
+          const (0) int 6 0
+ecom: 
+call string 10 2
+  name walk fn(ctxt: ref Context, n: ref Node, last: int): string 11 1
+  seq no type 10 1
+    name ctxt ref Context 0 0
+    seq no type 10 1
+      name n ref Node 0 0
+      seq no type 10 1
+        const (0) int 6 0
+ecom to: 
+name laststatus string 0 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b32 big 0 0
+    const (64) int 6 0
+ecom: 
+name n ref Node 0 0
+ecom to: 
+* ref Node 8 0
+  + int 15 0
+    name .b32 big 0 0
+    const (72) int 6 0
+ecom: 
+const (0) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b32 big 0 0
+    const (80) int 6 0
+ecom: 
+= string 10 2
+  name laststatus string 0 0
+  call string 10 2
+    name failurestatus fn(e: string): string 11 1
+    seq no type 10 1
+      name e2 string 0 0
+ecom: 
+call string 10 2
+  name failurestatus fn(e: string): string 11 1
+  seq no type 10 1
+    name e2 string 0 0
+ecom to: 
+name laststatus string 0 0
+generate desc for big
+ecom: 
+name e2 string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b32 big 0 0
+    const (64) int 6 0
+ecom: 
+= string 10 2
+  name laststatus string 0 0
+  call string 10 2
+    name walk fn(ctxt: ref Context, n: ref Node, last: int): string 11 1
+    seq no type 10 1
+      name ctxt ref Context 0 0
+      seq no type 10 1
+        name n ref Node 0 0
+        seq no type 10 1
+          const (0) int 6 0
+ecom: 
+call string 10 2
+  name walk fn(ctxt: ref Context, n: ref Node, last: int): string 11 1
+  seq no type 10 1
+    name ctxt ref Context 0 0
+    seq no type 10 1
+      name n ref Node 0 0
+      seq no type 10 1
+        const (0) int 6 0
+ecom to: 
+name laststatus string 0 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b32 big 0 0
+    const (64) int 6 0
+ecom: 
+name n ref Node 0 0
+ecom to: 
+* ref Node 8 0
+  + int 15 0
+    name .b32 big 0 0
+    const (72) int 6 0
+ecom: 
+const (0) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b32 big 0 0
+    const (80) int 6 0
+ecom: 
+used string 10 2
+  call string 10 2
+    name setstatus fn(ctxt: ref Context, val: string): string 11 1
+    seq no type 10 1
+      name ctxt ref Context 0 0
+      seq no type 10 1
+        name laststatus string 0 0
+ecom: 
+call string 10 2
+  name setstatus fn(ctxt: ref Context, val: string): string 11 1
+  seq no type 10 1
+    name ctxt ref Context 0 0
+    seq no type 10 1
+      name laststatus string 0 0
+ecom to: 
+name .t33 string 0 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b32 big 0 0
+    const (64) int 6 0
+ecom: 
+name laststatus string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b32 big 0 0
+    const (72) int 6 0
+ecom: 
+= string 10 1
+  name .t33 string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name .t33 string 0 0
+eacom: 
+& int 10 1
+  * int 10 1
+    + int 10 1
+      * ref Localenv 10 1
+        + int 10 1
+          * ref Environment 8 0
+            name ctxt ref Context 0 0
+          const localenv (24) int 6 0
+      const flags (16) int 6 0
+  const ERROREXIT (8) int 6 0
+ecom: 
+& int 10 1
+  * int 10 1
+    + int 10 1
+      * ref Localenv 10 1
+        + int 10 1
+          * ref Environment 8 0
+            name ctxt ref Context 0 0
+          const localenv (24) int 6 0
+      const flags (16) int 6 0
+  const ERROREXIT (8) int 6 0
+ecom to: 
+name .t34 int 0 0
+eacom: 
+* int 10 1
+  + int 10 1
+    * ref Localenv 10 1
+      + int 10 1
+        * ref Environment 8 0
+          name ctxt ref Context 0 0
+        const localenv (24) int 6 0
+    const flags (16) int 6 0
+ecom: 
+* ref Localenv 10 1
+  + int 10 1
+    * ref Environment 8 0
+      name ctxt ref Context 0 0
+    const localenv (24) int 6 0
+ecom to: 
+name .t33 ref Localenv 0 0
+eacom: 
+* ref Localenv 10 1
+  + int 10 1
+    * ref Environment 8 0
+      name ctxt ref Context 0 0
+    const localenv (24) int 6 0
+ecom: 
+* ref Environment 8 0
+  name ctxt ref Context 0 0
+ecom to: 
+name .t33 ref Environment 0 0
+ecom: 
+= ref Localenv 10 1
+  name .t33 ref Localenv 0 0
+  name nil ref Localenv 1 0
+ecom: 
+name nil ref Localenv 1 0
+ecom to: 
+name .t33 ref Localenv 0 0
+ecom: 
+= ref Node 10 1
+  * ref Node 0 0
+    adr int 13 1
+      name n (ref Node, string) 0 0
+  name nil ref Node 1 0
+ecom: 
+name nil ref Node 1 0
+ecom to: 
+* ref Node 0 0
+  adr int 13 1
+    name n (ref Node, string) 0 0
+ecom: 
+= string 10 1
+  * string 0 0
+    + int 13 1
+      adr int 13 1
+        name n (ref Node, string) 0 0
+      const t1 (8) int 6 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+* string 0 0
+  + int 13 1
+    adr int 13 1
+      name n (ref Node, string) 0 0
+    const t1 (8) int 6 0
+ecom: 
+= string 10 1
+  name err string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name err string 0 0
+ecom: 
+= ref Node 10 1
+  * ref Node 0 0
+    adr int 13 1
+      name n (ref Node, string) 0 0
+  name nil ref Node 1 0
+ecom: 
+name nil ref Node 1 0
+ecom to: 
+* ref Node 0 0
+  adr int 13 1
+    name n (ref Node, string) 0 0
+ecom: 
+= string 10 1
+  * string 0 0
+    + int 13 1
+      adr int 13 1
+        name n (ref Node, string) 0 0
+      const t1 (8) int 6 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+* string 0 0
+  + int 13 1
+    adr int 13 1
+      name n (ref Node, string) 0 0
+    const t1 (8) int 6 0
+ecom: 
+= string 10 1
+  name err string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name err string 0 0
+ecom: 
+raise nothing 10 1
+  + string 10 1
+    const fail: string 1 0
+    name laststatus string 0 0
+eacom: 
++ string 10 1
+  const fail: string 1 0
+  name laststatus string 0 0
+ecom: 
++ string 10 1
+  const fail: string 1 0
+  name laststatus string 0 0
+ecom to: 
+name .t33 string 0 0
+ecom: 
+= string 10 1
+  name .t33 string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name .t33 string 0 0
+ecom: 
+call no type 10 2
+  name pop fn(ctxt: self ref Context) 11 1
+  seq nothing 10 1
+    name ctxt ref Context 0 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b32 big 0 0
+    const (64) int 6 0
+ecom: 
+= string 10 1
+  name laststatus string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name laststatus string 0 0
+ecom: 
+= list of string 10 1
+  name prompt list of string 0 0
+  name nil list of string 1 0
+ecom: 
+name nil list of string 1 0
+ecom to: 
+name prompt list of string 0 0
+ecom: 
+= ref YYLEX 10 1
+  name lex ref YYLEX 0 0
+  name nil ref YYLEX 1 0
+ecom: 
+name nil ref YYLEX 1 0
+ecom to: 
+name lex ref YYLEX 0 0
+ecom: 
+call no type 10 2
+  name pop fn(ctxt: self ref Context) 11 1
+  seq nothing 10 1
+    name ctxt ref Context 0 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b32 big 0 0
+    const (64) int 6 0
+ecom: 
+raise nothing 10 1
+  name .ex1 exception 0 0
+fn: runfile
+64: argument ctxt ref Context ref 15
+72: argument fd ref Sys->FD ref 1
+80: argument path string ref 2
+88: argument args list of ref Listnode ref 1
+96: local interactive int ref 5
+100: local e2 ref exception ref 2
+104: local .ex1 ref exception ref 1
+108: local .t34 int ref 1
+112: local .b32 big ref 13
+120: local prompt list of string ref 9
+128: local laststatus string ref 7
+136: local .b30 big ref 5
+144: local n ref Node ref 4
+152: local err string ref 3
+160: local lex ref YYLEX ref 3
+168: local .t31 list of ref Listnode ref 1
+176: local .t33 list of string ref 1
+generate desc for runfile
+descmap offset 0
+descmap ctxt type ref Context offset 64 (d->offset=64 start=0) returns 64
+descmap fd type ref Sys->FD offset 72 (d->offset=72 start=0) returns 72
+descmap path type string offset 80 (d->offset=80 start=0) returns 80
+descmap args type list of ref Listnode offset 88 (d->offset=88 start=0) returns 88
+descmap interactive type int offset 96 (d->offset=96 start=0) returns -1
+descmap e2 type ref exception offset 100 (d->offset=100 start=0) returns 104
+descmap .ex1 type ref exception offset 104 (d->offset=104 start=0) returns 104
+descmap .t34 type int offset 108 (d->offset=108 start=0) returns -1
+descmap .b32 type big offset 112 (d->offset=112 start=0) returns -1
+descmap prompt type list of string offset 120 (d->offset=120 start=0) returns 120
+descmap laststatus type string offset 128 (d->offset=128 start=0) returns 128
+descmap .b30 type big offset 136 (d->offset=136 start=0) returns -1
+descmap n type ref Node offset 144 (d->offset=144 start=0) returns 144
+descmap err type string offset 152 (d->offset=152 start=0) returns 152
+descmap lex type ref YYLEX offset 160 (d->offset=160 start=0) returns 160
+descmap .t31 type list of ref Listnode offset 168 (d->offset=168 start=0) returns 168
+descmap .t33 type list of string offset 176 (d->offset=176 start=0) returns 176
+generate desc for .ex1
+descmap offset 0
+descmap n type ref Node offset 144 (d->offset=144 start=0) returns 144
+descmap err type string offset 152 (d->offset=152 start=0) returns 152
+descmap laststatus type string offset 128 (d->offset=128 start=0) returns 128
+descmap prompt type list of string offset 120 (d->offset=120 start=0) returns 120
+descmap lex type ref YYLEX offset 160 (d->offset=160 start=0) returns 160
+fncom: nonexistent 5 417f68
+ecom: 
+= array of string 10 2
+  name errs array of string 0 0
+  array array of string 10 2
+    const (2) int 6 0
+    seq array initializers 10 2
+      elem string 10 1
+        seq nothing 10 1
+          const (0) int 6 0
+        const does not exist string 1 0
+      seq no type 10 1
+        elem string 10 1
+          seq nothing 10 1
+            const (1) int 6 0
+          const directory entry not found string 1 0
+ecom: 
+array array of string 10 2
+  const (2) int 6 0
+  seq array initializers 10 2
+    elem string 10 1
+      seq nothing 10 1
+        const (0) int 6 0
+      const does not exist string 1 0
+    seq no type 10 1
+      elem string 10 1
+        seq nothing 10 1
+          const (1) int 6 0
+        const directory entry not found string 1 0
+ecom to: 
+name errs array of string 0 0
+generate desc for string
+generate desc for string
+	desc	$-1,8,"80"
+generate desc for big
+ecom: 
+indx big 10 0
+  name errs array of string 0 0
+  const (0) int 6 0
+ecom to: 
+name .b35 big 0 0
+ecom: 
+const does not exist string 1 0
+ecom to: 
+* string 8 0
+  name .b35 big 0 0
+ecom: 
+indx big 10 0
+  name errs array of string 0 0
+  const (1) int 6 0
+ecom to: 
+name .b35 big 0 0
+ecom: 
+const directory entry not found string 1 0
+ecom to: 
+* string 8 0
+  name .b35 big 0 0
+ecom: 
+= int 10 1
+  name i int 0 0
+  const (0) int 6 0
+ecom: 
+const (0) int 6 0
+ecom to: 
+name i int 0 0
+eacom: 
+len int 10 1
+  name errs array of string 0 0
+ecom: 
+len int 10 1
+  name errs array of string 0 0
+ecom to: 
+name .t36 int 0 0
+ecom: 
+= int 10 1
+  name j int 0 0
+  len int 10 1
+    * string 10 1
+      indx big 10 1
+        name errs array of string 0 0
+        name i int 0 0
+ecom: 
+len int 10 1
+  * string 10 1
+    indx big 10 1
+      name errs array of string 0 0
+      name i int 0 0
+ecom to: 
+name j int 0 0
+eacom: 
+* string 10 1
+  indx big 10 1
+    name errs array of string 0 0
+    name i int 0 0
+generate desc for big
+ecom: 
+indx big 10 1
+  name errs array of string 0 0
+  name i int 0 0
+ecom to: 
+name .b35 big 0 0
+eacom: 
+len int 10 1
+  name e string 0 0
+ecom: 
+len int 10 1
+  name e string 0 0
+ecom to: 
+name .t36 int 0 0
+eacom: 
+slice string 10 2
+  name e string 0 0
+  seq no type 10 2
+    - int 10 1
+      len int 10 1
+        name e string 0 0
+      name j int 0 0
+    nothing no type 10 1
+ecom: 
+slice string 10 2
+  name e string 0 0
+  seq no type 10 2
+    - int 10 1
+      len int 10 1
+        name e string 0 0
+      name j int 0 0
+    nothing no type 10 1
+ecom to: 
+name .t37 string 0 0
+ecom: 
+len int 10 1
+  name e string 0 0
+ecom to: 
+name .t36 int 0 0
+eacom: 
+- int 10 1
+  len int 10 1
+    name e string 0 0
+  name j int 0 0
+ecom: 
+- int 10 1
+  len int 10 1
+    name e string 0 0
+  name j int 0 0
+ecom to: 
+name .t38 int 0 0
+ecom: 
+len int 10 1
+  name e string 0 0
+ecom to: 
+name .t38 int 0 0
+ecom: 
+name e string 0 0
+ecom to: 
+name .t37 string 0 0
+ecom: 
+* string 10 1
+  indx big 10 1
+    name errs array of string 0 0
+    name i int 0 0
+ecom to: 
+name .t39 string 0 0
+eacom: 
+* string 10 1
+  indx big 10 1
+    name errs array of string 0 0
+    name i int 0 0
+generate desc for big
+ecom: 
+indx big 10 1
+  name errs array of string 0 0
+  name i int 0 0
+ecom to: 
+name .b35 big 0 0
+ecom: 
+= string 10 1
+  name .t37 string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name .t37 string 0 0
+ecom: 
+= string 10 1
+  name .t39 string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name .t39 string 0 0
+ecom: 
+const (1) int 6 0
+ecom to: 
+* int 8 0
+  name .ret int 0 0
+ecom: 
+++ int 10 1
+  name i int 0 0
+  const (1) int 6 0
+ecom: 
+const (0) int 6 0
+ecom to: 
+* int 8 0
+  name .ret int 0 0
+fn: nonexistent
+64: argument e string ref 3
+72: local i int ref 5
+76: local j int ref 3
+80: local .t36 int ref 1
+84: local .t38 int ref 1
+88: local errs array of string ref 4
+96: local .b35 big ref 3
+104: local .t37 string ref 1
+112: local .t39 string ref 1
+generate desc for nonexistent
+descmap offset 0
+descmap e type string offset 64 (d->offset=64 start=0) returns 64
+descmap i type int offset 72 (d->offset=72 start=0) returns -1
+descmap j type int offset 76 (d->offset=76 start=0) returns -1
+descmap .t36 type int offset 80 (d->offset=80 start=0) returns -1
+descmap .t38 type int offset 84 (d->offset=84 start=0) returns -1
+descmap errs type array of string offset 88 (d->offset=88 start=0) returns 88
+descmap .b35 type big offset 96 (d->offset=96 start=0) returns -1
+descmap .t37 type string offset 104 (d->offset=104 start=0) returns 104
+descmap .t39 type string offset 112 (d->offset=112 start=0) returns 112
+fncom: pipe2cmd 2 418028
+fncom: walk 5 4180e8
+ecom: 
+= string 10 2
+  name status string 0 0
+  call string 10 2
+    name walk fn(ctxt: ref Context, n: ref Node, last: int): string 11 1
+    seq no type 10 1
+      name ctxt ref Context 0 0
+      seq no type 10 1
+        * ref Node 8 0
+          + int 15 1
+            name n ref Node 0 0
+            const left (8) int 6 0
+        seq no type 10 1
+          const (0) int 6 0
+ecom: 
+call string 10 2
+  name walk fn(ctxt: ref Context, n: ref Node, last: int): string 11 1
+  seq no type 10 1
+    name ctxt ref Context 0 0
+    seq no type 10 1
+      * ref Node 8 0
+        + int 15 1
+          name n ref Node 0 0
+          const left (8) int 6 0
+      seq no type 10 1
+        const (0) int 6 0
+ecom to: 
+name status string 0 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b40 big 0 0
+    const (64) int 6 0
+ecom: 
+* ref Node 8 0
+  + int 15 1
+    name n ref Node 0 0
+    const left (8) int 6 0
+ecom to: 
+* ref Node 8 0
+  + int 15 0
+    name .b40 big 0 0
+    const (72) int 6 0
+ecom: 
+const (0) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b40 big 0 0
+    const (80) int 6 0
+eacom: 
+& int 10 1
+  * int 10 1
+    + int 10 1
+      * ref Localenv 10 1
+        + int 10 1
+          * ref Environment 8 0
+            name ctxt ref Context 0 0
+          const localenv (24) int 6 0
+      const flags (16) int 6 0
+  const ERROREXIT (8) int 6 0
+ecom: 
+& int 10 1
+  * int 10 1
+    + int 10 1
+      * ref Localenv 10 1
+        + int 10 1
+          * ref Environment 8 0
+            name ctxt ref Context 0 0
+          const localenv (24) int 6 0
+      const flags (16) int 6 0
+  const ERROREXIT (8) int 6 0
+ecom to: 
+name .t41 int 0 0
+eacom: 
+* int 10 1
+  + int 10 1
+    * ref Localenv 10 1
+      + int 10 1
+        * ref Environment 8 0
+          name ctxt ref Context 0 0
+        const localenv (24) int 6 0
+    const flags (16) int 6 0
+ecom: 
+* ref Localenv 10 1
+  + int 10 1
+    * ref Environment 8 0
+      name ctxt ref Context 0 0
+    const localenv (24) int 6 0
+ecom to: 
+name .t42 ref Localenv 0 0
+eacom: 
+* ref Localenv 10 1
+  + int 10 1
+    * ref Environment 8 0
+      name ctxt ref Context 0 0
+    const localenv (24) int 6 0
+ecom: 
+* ref Environment 8 0
+  name ctxt ref Context 0 0
+ecom to: 
+name .t42 ref Environment 0 0
+ecom: 
+= ref Localenv 10 1
+  name .t42 ref Localenv 0 0
+  name nil ref Localenv 1 0
+ecom: 
+name nil ref Localenv 1 0
+ecom to: 
+name .t42 ref Localenv 0 0
+ecom: 
+raise nothing 10 1
+  + string 10 1
+    const fail: string 1 0
+    name status string 0 0
+eacom: 
++ string 10 1
+  const fail: string 1 0
+  name status string 0 0
+ecom: 
++ string 10 1
+  const fail: string 1 0
+  name status string 0 0
+ecom to: 
+name .t42 string 0 0
+ecom: 
+= string 10 1
+  name .t42 string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name .t42 string 0 0
+ecom: 
+used string 10 2
+  call string 10 2
+    name setstatus fn(ctxt: ref Context, val: string): string 11 1
+    seq no type 10 1
+      name ctxt ref Context 0 0
+      seq no type 10 1
+        name status string 0 0
+ecom: 
+call string 10 2
+  name setstatus fn(ctxt: ref Context, val: string): string 11 1
+  seq no type 10 1
+    name ctxt ref Context 0 0
+    seq no type 10 1
+      name status string 0 0
+ecom to: 
+name .t42 string 0 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b40 big 0 0
+    const (64) int 6 0
+ecom: 
+name status string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b40 big 0 0
+    const (72) int 6 0
+ecom: 
+= string 10 1
+  name .t42 string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name .t42 string 0 0
+ecom: 
+= ref Node 10 1
+  name n ref Node 0 0
+  * ref Node 8 0
+    + int 15 1
+      name n ref Node 0 0
+      const right (16) int 6 0
+ecom: 
+* ref Node 8 0
+  + int 15 1
+    name n ref Node 0 0
+    const right (16) int 6 0
+ecom to: 
+name n ref Node 0 0
+ecom: 
+= string 10 1
+  name status string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name status string 0 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* polymorphic type 8 0
+  name .ret int 0 0
+ecom: 
+call string 10 2
+  name waitfor fn(ctxt: ref Context, pids: list of int): string 11 1
+  seq no type 10 2
+    name ctxt ref Context 0 0
+    seq no type 10 2
+      call list of int 10 2
+        name walkpipeline fn(ctxt: ref Context, n: ref Node, wrpipe: ref Sys->FD, wfdno: int): list of int 11 1
+        seq no type 10 1
+          name ctxt ref Context 0 0
+          seq no type 10 1
+            name n ref Node 0 0
+            seq no type 10 1
+              name nil ref Sys->FD 1 0
+              seq no type 10 1
+                const (-1) int 6 0
+ecom to: 
+* string 8 0
+  name .ret int 0 0
+generate desc for big
+ecom: 
+call list of int 10 2
+  name walkpipeline fn(ctxt: ref Context, n: ref Node, wrpipe: ref Sys->FD, wfdno: int): list of int 11 1
+  seq no type 10 1
+    name ctxt ref Context 0 0
+    seq no type 10 1
+      name n ref Node 0 0
+      seq no type 10 1
+        name nil ref Sys->FD 1 0
+        seq no type 10 1
+          const (-1) int 6 0
+ecom to: 
+name .t42 list of int 0 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b43 big 0 0
+    const (64) int 6 0
+ecom: 
+name n ref Node 0 0
+ecom to: 
+* ref Node 8 0
+  + int 15 0
+    name .b43 big 0 0
+    const (72) int 6 0
+ecom: 
+name nil ref Sys->FD 1 0
+ecom to: 
+* ref Sys->FD 8 0
+  + int 15 0
+    name .b43 big 0 0
+    const (80) int 6 0
+ecom: 
+const (-1) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b43 big 0 0
+    const (88) int 6 0
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b40 big 0 0
+    const (64) int 6 0
+ecom: 
+name .t42 list of int 0 0
+ecom to: 
+* list of int 8 0
+  + int 15 0
+    name .b40 big 0 0
+    const (72) int 6 0
+ecom: 
+= list of int 10 1
+  name .t42 list of int 0 0
+  name nil list of int 1 0
+ecom: 
+name nil list of int 1 0
+ecom to: 
+name .t42 list of int 0 0
+ecom: 
+used list of ref Listnode 10 2
+  call list of ref Listnode 10 2
+    name assign fn(ctxt: ref Context, n: ref Node): list of ref Listnode 11 1
+    seq no type 10 1
+      name ctxt ref Context 0 0
+      seq no type 10 1
+        name n ref Node 0 0
+ecom: 
+call list of ref Listnode 10 2
+  name assign fn(ctxt: ref Context, n: ref Node): list of ref Listnode 11 1
+  seq no type 10 1
+    name ctxt ref Context 0 0
+    seq no type 10 1
+      name n ref Node 0 0
+ecom to: 
+name .t42 list of ref Listnode 0 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b43 big 0 0
+    const (64) int 6 0
+ecom: 
+name n ref Node 0 0
+ecom to: 
+* ref Node 8 0
+  + int 15 0
+    name .b43 big 0 0
+    const (72) int 6 0
+ecom: 
+= list of ref Listnode 10 1
+  name .t42 list of ref Listnode 0 0
+  name nil list of ref Listnode 1 0
+ecom: 
+name nil list of ref Listnode 1 0
+ecom to: 
+name .t42 list of ref Listnode 0 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* polymorphic type 8 0
+  name .ret int 0 0
+ecom: 
+= int 10 1
+  name bg int 0 0
+  const (0) int 6 0
+ecom: 
+const (0) int 6 0
+ecom to: 
+name bg int 0 0
+ecom: 
+= int 10 1
+  name bg int 0 0
+  const (1) int 6 0
+ecom: 
+const (1) int 6 0
+ecom to: 
+name bg int 0 0
+ecom: 
+= ref Node 10 3
+  name n ref Node 0 0
+  if ref Node 10 3
+    || int 10 2
+      == int 10 1
+        * ref Node 8 0
+          + int 15 1
+            name n ref Node 0 0
+            const left (8) int 6 0
+        name nil ref Node 1 0
+      != int 10 1
+        * int 10 1
+          * ref Node 8 0
+            + int 15 1
+              name n ref Node 0 0
+              const left (8) int 6 0
+        const n_PIPE (9) int 6 0
+    seq ref Node 10 2
+      * ref Node 8 0
+        + int 15 1
+          name n ref Node 0 0
+          const left (8) int 6 0
+      ref ref Node 10 2
+        tuple Node 10 2
+          seq no type 10 2
+            const n_ADJ (10) int 6 0
+            seq no type 10 2
+              ref ref Node 10 1
+                tuple Node 10 1
+                  seq no type 10 1
+                    const n_BLOCK (0) int 6 0
+                    seq no type 10 1
+                      * ref Node 8 0
+                        + int 15 1
+                          name n ref Node 0 0
+                          const left (8) int 6 0
+                      seq no type 10 1
+                        name nil ref Node 1 0
+                        seq no type 10 1
+                          name nil polymorphic type 1 0
+                          seq no type 10 1
+                            name nil polymorphic type 1 0
+              seq no type 10 2
+                ref ref Node 10 2
+                  tuple Node 10 2
+                    seq no type 10 2
+                      const n_VAR (1) int 6 0
+                      seq no type 10 2
+                        ref ref Node 10 1
+                          tuple Node 10 1
+                            seq no type 10 1
+                              const n_WORD (11) int 6 0
+                              seq no type 10 1
+                                name nil polymorphic type 1 0
+                                seq no type 10 1
+                                  name nil polymorphic type 1 0
+                                  seq no type 10 1
+                                    const * string 1 0
+                                    seq no type 10 1
+                                      name nil polymorphic type 1 0
+                        seq no type 10 1
+                          name nil ref Node 1 0
+                          seq no type 10 1
+                            name nil polymorphic type 1 0
+                            seq no type 10 1
+                              name nil polymorphic type 1 0
+                seq no type 10 1
+                  name nil polymorphic type 1 0
+                  seq no type 10 1
+                    name nil polymorphic type 1 0
+ecom: 
+if ref Node 10 3
+  || int 10 2
+    == int 10 1
+      * ref Node 8 0
+        + int 15 1
+          name n ref Node 0 0
+          const left (8) int 6 0
+      name nil ref Node 1 0
+    != int 10 1
+      * int 10 1
+        * ref Node 8 0
+          + int 15 1
+            name n ref Node 0 0
+            const left (8) int 6 0
+      const n_PIPE (9) int 6 0
+  seq ref Node 10 2
+    * ref Node 8 0
+      + int 15 1
+        name n ref Node 0 0
+        const left (8) int 6 0
+    ref ref Node 10 2
+      tuple Node 10 2
+        seq no type 10 2
+          const n_ADJ (10) int 6 0
+          seq no type 10 2
+            ref ref Node 10 1
+              tuple Node 10 1
+                seq no type 10 1
+                  const n_BLOCK (0) int 6 0
+                  seq no type 10 1
+                    * ref Node 8 0
+                      + int 15 1
+                        name n ref Node 0 0
+                        const left (8) int 6 0
+                    seq no type 10 1
+                      name nil ref Node 1 0
+                      seq no type 10 1
+                        name nil polymorphic type 1 0
+                        seq no type 10 1
+                          name nil polymorphic type 1 0
+            seq no type 10 2
+              ref ref Node 10 2
+                tuple Node 10 2
+                  seq no type 10 2
+                    const n_VAR (1) int 6 0
+                    seq no type 10 2
+                      ref ref Node 10 1
+                        tuple Node 10 1
+                          seq no type 10 1
+                            const n_WORD (11) int 6 0
+                            seq no type 10 1
+                              name nil polymorphic type 1 0
+                              seq no type 10 1
+                                name nil polymorphic type 1 0
+                                seq no type 10 1
+                                  const * string 1 0
+                                  seq no type 10 1
+                                    name nil polymorphic type 1 0
+                      seq no type 10 1
+                        name nil ref Node 1 0
+                        seq no type 10 1
+                          name nil polymorphic type 1 0
+                          seq no type 10 1
+                            name nil polymorphic type 1 0
+              seq no type 10 1
+                name nil polymorphic type 1 0
+                seq no type 10 1
+                  name nil polymorphic type 1 0
+ecom to: 
+name n ref Node 0 0
+eacom: 
+* int 10 1
+  * ref Node 8 0
+    + int 15 1
+      name n ref Node 0 0
+      const left (8) int 6 0
+ecom: 
+* ref Node 8 0
+  + int 15 1
+    name n ref Node 0 0
+    const left (8) int 6 0
+ecom to: 
+name .t42 ref Node 0 0
+ecom: 
+= ref Node 10 1
+  name .t42 ref Node 0 0
+  name nil ref Node 1 0
+ecom: 
+name nil ref Node 1 0
+ecom to: 
+name .t42 ref Node 0 0
+ecom: 
+* ref Node 8 0
+  + int 15 1
+    name n ref Node 0 0
+    const left (8) int 6 0
+ecom to: 
+name n ref Node 0 0
+ecom: 
+ref ref Node 10 2
+  tuple Node 10 2
+    seq no type 10 2
+      const n_ADJ (10) int 6 0
+      seq no type 10 2
+        ref ref Node 10 1
+          tuple Node 10 1
+            seq no type 10 1
+              const n_BLOCK (0) int 6 0
+              seq no type 10 1
+                * ref Node 8 0
+                  + int 15 1
+                    name n ref Node 0 0
+                    const left (8) int 6 0
+                seq no type 10 1
+                  name nil ref Node 1 0
+                  seq no type 10 1
+                    name nil polymorphic type 1 0
+                    seq no type 10 1
+                      name nil polymorphic type 1 0
+        seq no type 10 2
+          ref ref Node 10 2
+            tuple Node 10 2
+              seq no type 10 2
+                const n_VAR (1) int 6 0
+                seq no type 10 2
+                  ref ref Node 10 1
+                    tuple Node 10 1
+                      seq no type 10 1
+                        const n_WORD (11) int 6 0
+                        seq no type 10 1
+                          name nil polymorphic type 1 0
+                          seq no type 10 1
+                            name nil polymorphic type 1 0
+                            seq no type 10 1
+                              const * string 1 0
+                              seq no type 10 1
+                                name nil polymorphic type 1 0
+                  seq no type 10 1
+                    name nil ref Node 1 0
+                    seq no type 10 1
+                      name nil polymorphic type 1 0
+                      seq no type 10 1
+                        name nil polymorphic type 1 0
+          seq no type 10 1
+            name nil polymorphic type 1 0
+            seq no type 10 1
+              name nil polymorphic type 1 0
+ecom to: 
+name n ref Node 0 0
+generate desc for Node
+descmap adt offset 0
+descmap offset 0
+descmap ntype type int offset 0 (d->offset=0 start=0) returns -1
+descmap left type ref Node offset 8 (d->offset=8 start=0) returns 8
+descmap right type ref Node offset 16 (d->offset=16 start=0) returns 16
+descmap word type string offset 24 (d->offset=24 start=0) returns 24
+descmap redir type ref Redir offset 32 (d->offset=32 start=0) returns 32
+generate desc for Node
+	desc	$-1,40,"78"
+ecom: 
+tuple Node 10 2
+  seq no type 10 2
+    const n_ADJ (10) int 6 0
+    seq no type 10 2
+      ref ref Node 10 1
+        tuple Node 10 1
+          seq no type 10 1
+            const n_BLOCK (0) int 6 0
+            seq no type 10 1
+              * ref Node 8 0
+                + int 15 1
+                  name n ref Node 0 0
+                  const left (8) int 6 0
+              seq no type 10 1
+                name nil ref Node 1 0
+                seq no type 10 1
+                  name nil polymorphic type 1 0
+                  seq no type 10 1
+                    name nil polymorphic type 1 0
+      seq no type 10 2
+        ref ref Node 10 2
+          tuple Node 10 2
+            seq no type 10 2
+              const n_VAR (1) int 6 0
+              seq no type 10 2
+                ref ref Node 10 1
+                  tuple Node 10 1
+                    seq no type 10 1
+                      const n_WORD (11) int 6 0
+                      seq no type 10 1
+                        name nil polymorphic type 1 0
+                        seq no type 10 1
+                          name nil polymorphic type 1 0
+                          seq no type 10 1
+                            const * string 1 0
+                            seq no type 10 1
+                              name nil polymorphic type 1 0
+                seq no type 10 1
+                  name nil ref Node 1 0
+                  seq no type 10 1
+                    name nil polymorphic type 1 0
+                    seq no type 10 1
+                      name nil polymorphic type 1 0
+        seq no type 10 1
+          name nil polymorphic type 1 0
+          seq no type 10 1
+            name nil polymorphic type 1 0
+ecom to: 
+* Node 8 0
+  name .t42 ref Node 0 0
+ecom: 
+const n_ADJ (10) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .t42 ref Node 0 0
+    const (0) int 6 0
+ecom: 
+ref ref Node 10 1
+  tuple Node 10 1
+    seq no type 10 1
+      const n_BLOCK (0) int 6 0
+      seq no type 10 1
+        * ref Node 8 0
+          + int 15 1
+            name n ref Node 0 0
+            const left (8) int 6 0
+        seq no type 10 1
+          name nil ref Node 1 0
+          seq no type 10 1
+            name nil polymorphic type 1 0
+            seq no type 10 1
+              name nil polymorphic type 1 0
+ecom to: 
+* ref Node 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .t42 ref Node 0 0
+    const (8) int 6 0
+generate desc for Node
+ecom: 
+tuple Node 10 1
+  seq no type 10 1
+    const n_BLOCK (0) int 6 0
+    seq no type 10 1
+      * ref Node 8 0
+        + int 15 1
+          name n ref Node 0 0
+          const left (8) int 6 0
+      seq no type 10 1
+        name nil ref Node 1 0
+        seq no type 10 1
+          name nil polymorphic type 1 0
+          seq no type 10 1
+            name nil polymorphic type 1 0
+ecom to: 
+* Node 8 0
+  name .t44 ref Node 0 0
+ecom: 
+const n_BLOCK (0) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .t44 ref Node 0 0
+    const (0) int 6 0
+ecom: 
+* ref Node 8 0
+  + int 15 1
+    name n ref Node 0 0
+    const left (8) int 6 0
+ecom to: 
+* ref Node 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .t44 ref Node 0 0
+    const (8) int 6 0
+ecom: 
+name nil ref Node 1 0
+ecom to: 
+* ref Node 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .t44 ref Node 0 0
+    const (16) int 6 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* string 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .t44 ref Node 0 0
+    const (24) int 6 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* ref Redir 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .t44 ref Node 0 0
+    const (32) int 6 0
+ecom: 
+= ref Node 10 1
+  name .t44 ref Node 0 0
+  name nil ref Node 1 0
+ecom: 
+name nil ref Node 1 0
+ecom to: 
+name .t44 ref Node 0 0
+ecom: 
+ref ref Node 10 2
+  tuple Node 10 2
+    seq no type 10 2
+      const n_VAR (1) int 6 0
+      seq no type 10 2
+        ref ref Node 10 1
+          tuple Node 10 1
+            seq no type 10 1
+              const n_WORD (11) int 6 0
+              seq no type 10 1
+                name nil polymorphic type 1 0
+                seq no type 10 1
+                  name nil polymorphic type 1 0
+                  seq no type 10 1
+                    const * string 1 0
+                    seq no type 10 1
+                      name nil polymorphic type 1 0
+        seq no type 10 1
+          name nil ref Node 1 0
+          seq no type 10 1
+            name nil polymorphic type 1 0
+            seq no type 10 1
+              name nil polymorphic type 1 0
+ecom to: 
+* ref Node 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .t42 ref Node 0 0
+    const (16) int 6 0
+generate desc for Node
+ecom: 
+tuple Node 10 2
+  seq no type 10 2
+    const n_VAR (1) int 6 0
+    seq no type 10 2
+      ref ref Node 10 1
+        tuple Node 10 1
+          seq no type 10 1
+            const n_WORD (11) int 6 0
+            seq no type 10 1
+              name nil polymorphic type 1 0
+              seq no type 10 1
+                name nil polymorphic type 1 0
+                seq no type 10 1
+                  const * string 1 0
+                  seq no type 10 1
+                    name nil polymorphic type 1 0
+      seq no type 10 1
+        name nil ref Node 1 0
+        seq no type 10 1
+          name nil polymorphic type 1 0
+          seq no type 10 1
+            name nil polymorphic type 1 0
+ecom to: 
+* Node 8 0
+  name .t44 ref Node 0 0
+ecom: 
+const n_VAR (1) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .t44 ref Node 0 0
+    const (0) int 6 0
+ecom: 
+ref ref Node 10 1
+  tuple Node 10 1
+    seq no type 10 1
+      const n_WORD (11) int 6 0
+      seq no type 10 1
+        name nil polymorphic type 1 0
+        seq no type 10 1
+          name nil polymorphic type 1 0
+          seq no type 10 1
+            const * string 1 0
+            seq no type 10 1
+              name nil polymorphic type 1 0
+ecom to: 
+* ref Node 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .t44 ref Node 0 0
+    const (8) int 6 0
+generate desc for Node
+ecom: 
+tuple Node 10 1
+  seq no type 10 1
+    const n_WORD (11) int 6 0
+    seq no type 10 1
+      name nil polymorphic type 1 0
+      seq no type 10 1
+        name nil polymorphic type 1 0
+        seq no type 10 1
+          const * string 1 0
+          seq no type 10 1
+            name nil polymorphic type 1 0
+ecom to: 
+* Node 8 0
+  name .t45 ref Node 0 0
+ecom: 
+const n_WORD (11) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .t45 ref Node 0 0
+    const (0) int 6 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* ref Node 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .t45 ref Node 0 0
+    const (8) int 6 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* ref Node 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .t45 ref Node 0 0
+    const (16) int 6 0
+ecom: 
+const * string 1 0
+ecom to: 
+* string 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .t45 ref Node 0 0
+    const (24) int 6 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* ref Redir 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .t45 ref Node 0 0
+    const (32) int 6 0
+ecom: 
+= ref Node 10 1
+  name .t45 ref Node 0 0
+  name nil ref Node 1 0
+ecom: 
+name nil ref Node 1 0
+ecom to: 
+name .t45 ref Node 0 0
+ecom: 
+name nil ref Node 1 0
+ecom to: 
+* ref Node 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .t44 ref Node 0 0
+    const (16) int 6 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* string 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .t44 ref Node 0 0
+    const (24) int 6 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* ref Redir 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .t44 ref Node 0 0
+    const (32) int 6 0
+ecom: 
+= ref Node 10 1
+  name .t44 ref Node 0 0
+  name nil ref Node 1 0
+ecom: 
+name nil ref Node 1 0
+ecom to: 
+name .t44 ref Node 0 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* string 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .t42 ref Node 0 0
+    const (24) int 6 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* ref Redir 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .t42 ref Node 0 0
+    const (32) int 6 0
+ecom: 
+= ref Node 10 1
+  name .t42 ref Node 0 0
+  name nil ref Node 1 0
+ecom: 
+name nil ref Node 1 0
+ecom to: 
+name .t42 ref Node 0 0
+ecom: 
+= ref Redirlist 10 1
+  name redirs ref Redirlist 0 0
+  ref ref Redirlist 10 1
+    tuple Redirlist 10 1
+      seq no type 10 1
+        name nil polymorphic type 1 0
+ecom: 
+ref ref Redirlist 10 1
+  tuple Redirlist 10 1
+    seq no type 10 1
+      name nil polymorphic type 1 0
+ecom to: 
+name redirs ref Redirlist 0 0
+generate desc for Redirlist
+descmap adt offset 0
+descmap offset 0
+descmap r type list of Redirword offset 0 (d->offset=0 start=0) returns 0
+generate desc for Redirlist
+	desc	$-1,8,"80"
+ecom: 
+tuple Redirlist 10 1
+  seq no type 10 1
+    name nil polymorphic type 1 0
+ecom to: 
+* Redirlist 8 0
+  name .t45 ref Redirlist 0 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* list of Redirword 8 0
+  + int 15 1
+    adr int 15 1
+      * Redirlist 8 0
+        name .t45 ref Redirlist 0 0
+    const (0) int 6 0
+ecom: 
+= ref Redirlist 10 1
+  name .t45 ref Redirlist 0 0
+  name nil ref Redirlist 1 0
+ecom: 
+name nil ref Redirlist 1 0
+ecom to: 
+name .t45 ref Redirlist 0 0
+ecom: 
+= list of ref Listnode 10 2
+  name line list of ref Listnode 0 0
+    name redirs ref Redirlist 0 0
+  call list of ref Listnode 10 2
+    name glob fn(nl: list of ref Listnode): list of ref Listnode 11 1
+    seq no type 10 2
+      call list of ref Listnode 10 2
+        name glom fn(ctxt: ref Context, n: ref Node, redirs: ref Redirlist, onto: list of ref Listnode): list of ref Listnode 11 1
+        seq no type 10 1
+          name ctxt ref Context 0 0
+          seq no type 10 1
+            name n ref Node 0 0
+            seq no type 10 1
+              name redirs ref Redirlist 0 0
+              seq no type 10 1
+                name nil list of ref Listnode 1 0
+ecom: 
+call list of ref Listnode 10 2
+  name glob fn(nl: list of ref Listnode): list of ref Listnode 11 1
+  seq no type 10 2
+    call list of ref Listnode 10 2
+      name glom fn(ctxt: ref Context, n: ref Node, redirs: ref Redirlist, onto: list of ref Listnode): list of ref Listnode 11 1
+      seq no type 10 1
+        name ctxt ref Context 0 0
+        seq no type 10 1
+          name n ref Node 0 0
+          seq no type 10 1
+            name redirs ref Redirlist 0 0
+            seq no type 10 1
+              name nil list of ref Listnode 1 0
+ecom to: 
+name line list of ref Listnode 0 0
+  name redirs ref Redirlist 0 0
+generate desc for big
+ecom: 
+call list of ref Listnode 10 2
+  name glom fn(ctxt: ref Context, n: ref Node, redirs: ref Redirlist, onto: list of ref Listnode): list of ref Listnode 11 1
+  seq no type 10 1
+    name ctxt ref Context 0 0
+    seq no type 10 1
+      name n ref Node 0 0
+      seq no type 10 1
+        name redirs ref Redirlist 0 0
+        seq no type 10 1
+          name nil list of ref Listnode 1 0
+ecom to: 
+name .t45 list of ref Listnode 0 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b40 big 0 0
+    const (64) int 6 0
+ecom: 
+name n ref Node 0 0
+ecom to: 
+* ref Node 8 0
+  + int 15 0
+    name .b40 big 0 0
+    const (72) int 6 0
+ecom: 
+name redirs ref Redirlist 0 0
+ecom to: 
+* ref Redirlist 8 0
+  + int 15 0
+    name .b40 big 0 0
+    const (80) int 6 0
+ecom: 
+name nil list of ref Listnode 1 0
+ecom to: 
+* list of ref Listnode 8 0
+  + int 15 0
+    name .b40 big 0 0
+    const (88) int 6 0
+ecom: 
+name .t45 list of ref Listnode 0 0
+ecom to: 
+* list of ref Listnode 8 0
+  + int 15 0
+    name .b43 big 0 0
+    const (64) int 6 0
+ecom: 
+= list of ref Listnode 10 1
+  name .t45 list of ref Listnode 0 0
+  name nil list of ref Listnode 1 0
+ecom: 
+name nil list of ref Listnode 1 0
+ecom to: 
+name .t45 list of ref Listnode 0 0
+ecom: 
+= chan of (int, ref Expropagate) 10 1
+  name startchan chan of (int, ref Expropagate) 0 0
+  chan chan of (int, ref Expropagate) 10 1
+    const (0) int 6 0
+ecom: 
+chan chan of (int, ref Expropagate) 10 1
+  const (0) int 6 0
+ecom to: 
+name startchan chan of (int, ref Expropagate) 0 0
+generate desc for (int, ref Expropagate)
+descmap adt offset 0
+descmap offset 0
+descmap t0 type int offset 0 (d->offset=0 start=0) returns -1
+descmap t1 type ref Expropagate offset 8 (d->offset=8 start=0) returns 8
+generate desc for (int, ref Expropagate)
+	desc	$-1,16,"40"
+ecom: 
+spawn nothing 10 2
+  call no type 10 2
+    name runasync fn(ctxt: ref Context, copyenv: int, argv: list of ref Listnode, redirs: ref Redirlist, startchan: chan of (int, ref Expropagate)) 11 1
+    seq no type 10 1
+      name ctxt ref Context 0 0
+      seq no type 10 1
+        const (1) int 6 0
+        seq no type 10 1
+          name line list of ref Listnode 0 0
+          seq no type 10 1
+            name redirs ref Redirlist 0 0
+            seq no type 10 1
+              name startchan chan of (int, ref Expropagate) 0 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b43 big 0 0
+    const (64) int 6 0
+ecom: 
+const (1) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b43 big 0 0
+    const (72) int 6 0
+ecom: 
+name line list of ref Listnode 0 0
+ecom to: 
+* list of ref Listnode 8 0
+  + int 15 0
+    name .b43 big 0 0
+    const (80) int 6 0
+ecom: 
+name redirs ref Redirlist 0 0
+ecom to: 
+* ref Redirlist 8 0
+  + int 15 0
+    name .b43 big 0 0
+    const (88) int 6 0
+ecom: 
+name startchan chan of (int, ref Expropagate) 0 0
+ecom to: 
+* chan of (int, ref Expropagate) 8 0
+  + int 15 0
+    name .b43 big 0 0
+    const (96) int 6 0
+ecom: 
+= (int, ref Expropagate) 10 2
+  tuple (int, ref Expropagate) 10 1
+    seq nothing 10 1
+      name pid int 0 0
+      seq nothing 10 1
+        name nil polymorphic type 1 0
+    name startchan chan of (int, ref Expropagate) 0 0
+  <- (int, ref Expropagate) 10 1
+    name startchan chan of (int, ref Expropagate) 0 0
+generate desc for (int, ref Expropagate)
+ecom: 
+<- (int, ref Expropagate) 10 1
+  name startchan chan of (int, ref Expropagate) 0 0
+ecom to: 
+name .b46 (int, ref Expropagate) 0 0
+ecom: 
+= ref Expropagate 10 1
+  * ref Expropagate 0 0
+    + int 13 1
+      adr int 13 1
+        name .b46 (int, ref Expropagate) 0 0
+      const t1 (8) int 6 0
+  name nil ref Expropagate 1 0
+ecom: 
+name nil ref Expropagate 1 0
+ecom to: 
+* ref Expropagate 0 0
+  + int 13 1
+    adr int 13 1
+      name .b46 (int, ref Expropagate) 0 0
+    const t1 (8) int 6 0
+ecom: 
+= ref Redirlist 10 1
+  name redirs ref Redirlist 0 0
+  name nil polymorphic type 1 0
+ecom: 
+name nil ref Redirlist 1 0
+ecom to: 
+name redirs ref Redirlist 0 0
+ecom: 
+call no type 10 2
+  name set fn(ctxt: self ref Context, name: string, val: list of ref Listnode) 11 1
+  seq nothing 10 1
+    name ctxt ref Context 0 0
+    seq no type 10 1
+      const apid string 1 0
+      seq no type 10 1
+        :: list of ref Listnode 10 1
+          ref ref Listnode 10 1
+            tuple Listnode 10 1
+              seq no type 10 1
+                name nil polymorphic type 1 0
+                seq no type 10 1
+                  cast string 10 1
+                    name pid int 0 0
+          name nil polymorphic type 1 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b43 big 0 0
+    const (64) int 6 0
+ecom: 
+const apid string 1 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b43 big 0 0
+    const (72) int 6 0
+ecom: 
+:: list of ref Listnode 10 1
+  ref ref Listnode 10 1
+    tuple Listnode 10 1
+      seq no type 10 1
+        name nil polymorphic type 1 0
+        seq no type 10 1
+          cast string 10 1
+            name pid int 0 0
+  name nil polymorphic type 1 0
+ecom to: 
+* list of ref Listnode 8 0
+  + int 15 0
+    name .b43 big 0 0
+    const (80) int 6 0
+eacom: 
+ref ref Listnode 10 1
+  tuple Listnode 10 1
+    seq no type 10 1
+      name nil polymorphic type 1 0
+      seq no type 10 1
+        cast string 10 1
+          name pid int 0 0
+ecom: 
+ref ref Listnode 10 1
+  tuple Listnode 10 1
+    seq no type 10 1
+      name nil polymorphic type 1 0
+      seq no type 10 1
+        cast string 10 1
+          name pid int 0 0
+ecom to: 
+name .t45 ref Listnode 0 0
+generate desc for Listnode
+ecom: 
+tuple Listnode 10 1
+  seq no type 10 1
+    name nil polymorphic type 1 0
+    seq no type 10 1
+      cast string 10 1
+        name pid int 0 0
+ecom to: 
+* Listnode 8 0
+  name .t45 ref Listnode 0 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* ref Node 8 0
+  + int 15 1
+    adr int 15 1
+      * Listnode 8 0
+        name .t45 ref Listnode 0 0
+    const (0) int 6 0
+ecom: 
+cast string 10 1
+  name pid int 0 0
+ecom to: 
+* string 8 0
+  + int 15 1
+    adr int 15 1
+      * Listnode 8 0
+        name .t45 ref Listnode 0 0
+    const (8) int 6 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+name .t44 list of ref Listnode 0 0
+ecom: 
+= ref Listnode 10 1
+  name .t45 ref Listnode 0 0
+  name nil ref Listnode 1 0
+ecom: 
+name nil ref Listnode 1 0
+ecom to: 
+name .t45 ref Listnode 0 0
+ecom: 
+= list of ref Listnode 10 1
+  name .t44 list of ref Listnode 0 0
+  name nil list of ref Listnode 1 0
+ecom: 
+name nil list of ref Listnode 1 0
+ecom to: 
+name .t44 list of ref Listnode 0 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* polymorphic type 8 0
+  name .ret int 0 0
+ecom: 
+= chan of (int, ref Expropagate) 10 1
+  name startchan chan of (int, ref Expropagate) 0 0
+  name nil chan of (int, ref Expropagate) 1 0
+ecom: 
+name nil chan of (int, ref Expropagate) 1 0
+ecom to: 
+name startchan chan of (int, ref Expropagate) 0 0
+ecom: 
+call string 10 2
+  name runsync fn(ctxt: ref Context, argv: list of ref Listnode, redirs: ref Redirlist, last: int): string 11 1
+  seq no type 10 1
+    name ctxt ref Context 0 0
+    seq no type 10 1
+      name line list of ref Listnode 0 0
+      seq no type 10 1
+        name redirs ref Redirlist 0 0
+        seq no type 10 1
+          name last int 0 0
+ecom to: 
+* string 8 0
+  name .ret int 0 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b43 big 0 0
+    const (64) int 6 0
+ecom: 
+name line list of ref Listnode 0 0
+ecom to: 
+* list of ref Listnode 8 0
+  + int 15 0
+    name .b43 big 0 0
+    const (72) int 6 0
+ecom: 
+name redirs ref Redirlist 0 0
+ecom to: 
+* ref Redirlist 8 0
+  + int 15 0
+    name .b43 big 0 0
+    const (80) int 6 0
+ecom: 
+name last int 0 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b43 big 0 0
+    const (88) int 6 0
+ecom: 
+= list of ref Listnode 10 1
+  name line list of ref Listnode 0 0
+  name nil list of ref Listnode 1 0
+ecom: 
+name nil list of ref Listnode 1 0
+ecom to: 
+name line list of ref Listnode 0 0
+ecom: 
+= ref Redirlist 10 1
+  name redirs ref Redirlist 0 0
+  name nil ref Redirlist 1 0
+ecom: 
+name nil ref Redirlist 1 0
+ecom to: 
+name redirs ref Redirlist 0 0
+fn: walk
+64: argument ctxt ref Context ref 11
+72: argument n ref Node ref 14
+80: argument last int ref 1
+84: local bg int ref 3
+88: local pid int ref 3
+92: local .t41 int ref 1
+96: local .b43 big ref 6
+104: local redirs ref Redirlist ref 5
+112: local .b40 big ref 4
+120: local status string ref 4
+128: local line list of ref Listnode ref 3
+136: local startchan chan of (int, ref Expropagate) ref 3
+144: local .t42 ref Localenv ref 1
+152: local .t44 ref Node ref 1
+160: local .t45 ref Node ref 1
+168: local .b46 (int, ref Expropagate) ref 1
+generate desc for walk
+descmap offset 0
+descmap ctxt type ref Context offset 64 (d->offset=64 start=0) returns 64
+descmap n type ref Node offset 72 (d->offset=72 start=0) returns 72
+descmap last type int offset 80 (d->offset=80 start=0) returns -1
+descmap bg type int offset 84 (d->offset=84 start=0) returns -1
+descmap pid type int offset 88 (d->offset=88 start=0) returns -1
+descmap .t41 type int offset 92 (d->offset=92 start=0) returns -1
+descmap .b43 type big offset 96 (d->offset=96 start=0) returns -1
+descmap redirs type ref Redirlist offset 104 (d->offset=104 start=0) returns 104
+descmap .b40 type big offset 112 (d->offset=112 start=0) returns -1
+descmap status type string offset 120 (d->offset=120 start=0) returns 120
+descmap line type list of ref Listnode offset 128 (d->offset=128 start=0) returns 128
+descmap startchan type chan of (int, ref Expropagate) offset 136 (d->offset=136 start=0) returns 136
+descmap .t42 type ref Localenv offset 144 (d->offset=144 start=0) returns 144
+descmap .t44 type ref Node offset 152 (d->offset=152 start=0) returns 152
+descmap .t45 type ref Node offset 160 (d->offset=160 start=0) returns 160
+descmap adt offset 168
+descmap offset 168
+descmap t0 type int offset 168 (d->offset=0 start=168) returns -1
+descmap t1 type ref Expropagate offset 176 (d->offset=8 start=168) returns 176
+descmap .b46 type (int, ref Expropagate) offset 168 (d->offset=168 start=0) returns 176
+fncom: assign 3 4181a8
+ecom: 
+= ref Redirlist 10 1
+  name redirs ref Redirlist 0 0
+  ref ref Redirlist 10 1
+    name Redirlist Redirlist 10 1
+ecom: 
+ref ref Redirlist 10 1
+  name Redirlist Redirlist 10 1
+ecom to: 
+name redirs ref Redirlist 0 0
+generate desc for Redirlist
+eacom: 
+* int 10 1
+  * ref Node 8 0
+    + int 15 1
+      name n ref Node 0 0
+      const right (16) int 6 0
+ecom: 
+* ref Node 8 0
+  + int 15 1
+    name n ref Node 0 0
+    const right (16) int 6 0
+ecom to: 
+name .t47 ref Node 0 0
+ecom: 
+= ref Node 10 1
+  name .t47 ref Node 0 0
+  name nil ref Node 1 0
+ecom: 
+name nil ref Node 1 0
+ecom to: 
+name .t47 ref Node 0 0
+eacom: 
+* int 10 1
+  * ref Node 8 0
+    + int 15 1
+      name n ref Node 0 0
+      const right (16) int 6 0
+ecom: 
+* ref Node 8 0
+  + int 15 1
+    name n ref Node 0 0
+    const right (16) int 6 0
+ecom to: 
+name .t47 ref Node 0 0
+ecom: 
+= ref Node 10 1
+  name .t47 ref Node 0 0
+  name nil ref Node 1 0
+ecom: 
+name nil ref Node 1 0
+ecom to: 
+name .t47 ref Node 0 0
+ecom: 
+= list of ref Listnode 10 2
+  name val list of ref Listnode 0 0
+  call list of ref Listnode 10 2
+    name assign fn(ctxt: ref Context, n: ref Node): list of ref Listnode 11 1
+    seq no type 10 1
+      name ctxt ref Context 0 0
+      seq no type 10 1
+        * ref Node 8 0
+          + int 15 1
+            name n ref Node 0 0
+            const right (16) int 6 0
+ecom: 
+call list of ref Listnode 10 2
+  name assign fn(ctxt: ref Context, n: ref Node): list of ref Listnode 11 1
+  seq no type 10 1
+    name ctxt ref Context 0 0
+    seq no type 10 1
+      * ref Node 8 0
+        + int 15 1
+          name n ref Node 0 0
+          const right (16) int 6 0
+ecom to: 
+name val list of ref Listnode 0 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b48 big 0 0
+    const (64) int 6 0
+ecom: 
+* ref Node 8 0
+  + int 15 1
+    name n ref Node 0 0
+    const right (16) int 6 0
+ecom to: 
+* ref Node 8 0
+  + int 15 0
+    name .b48 big 0 0
+    const (72) int 6 0
+ecom: 
+= list of ref Listnode 10 2
+  name val list of ref Listnode 0 0
+  call list of ref Listnode 10 2
+    name glob fn(nl: list of ref Listnode): list of ref Listnode 11 1
+    seq no type 10 2
+      call list of ref Listnode 10 2
+        name glom fn(ctxt: ref Context, n: ref Node, redirs: ref Redirlist, onto: list of ref Listnode): list of ref Listnode 11 1
+        seq no type 10 1
+          name ctxt ref Context 0 0
+          seq no type 10 1
+            * ref Node 8 0
+              + int 15 1
+                name n ref Node 0 0
+                const right (16) int 6 0
+            seq no type 10 1
+              name redirs ref Redirlist 0 0
+              seq no type 10 1
+                name nil list of ref Listnode 1 0
+ecom: 
+call list of ref Listnode 10 2
+  name glob fn(nl: list of ref Listnode): list of ref Listnode 11 1
+  seq no type 10 2
+    call list of ref Listnode 10 2
+      name glom fn(ctxt: ref Context, n: ref Node, redirs: ref Redirlist, onto: list of ref Listnode): list of ref Listnode 11 1
+      seq no type 10 1
+        name ctxt ref Context 0 0
+        seq no type 10 1
+          * ref Node 8 0
+            + int 15 1
+              name n ref Node 0 0
+              const right (16) int 6 0
+          seq no type 10 1
+            name redirs ref Redirlist 0 0
+            seq no type 10 1
+              name nil list of ref Listnode 1 0
+ecom to: 
+name val list of ref Listnode 0 0
+generate desc for big
+ecom: 
+call list of ref Listnode 10 2
+  name glom fn(ctxt: ref Context, n: ref Node, redirs: ref Redirlist, onto: list of ref Listnode): list of ref Listnode 11 1
+  seq no type 10 1
+    name ctxt ref Context 0 0
+    seq no type 10 1
+      * ref Node 8 0
+        + int 15 1
+          name n ref Node 0 0
+          const right (16) int 6 0
+      seq no type 10 1
+        name redirs ref Redirlist 0 0
+        seq no type 10 1
+          name nil list of ref Listnode 1 0
+ecom to: 
+name .t47 list of ref Listnode 0 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b49 big 0 0
+    const (64) int 6 0
+ecom: 
+* ref Node 8 0
+  + int 15 1
+    name n ref Node 0 0
+    const right (16) int 6 0
+ecom to: 
+* ref Node 8 0
+  + int 15 0
+    name .b49 big 0 0
+    const (72) int 6 0
+ecom: 
+name redirs ref Redirlist 0 0
+ecom to: 
+* ref Redirlist 8 0
+  + int 15 0
+    name .b49 big 0 0
+    const (80) int 6 0
+ecom: 
+name nil list of ref Listnode 1 0
+ecom to: 
+* list of ref Listnode 8 0
+  + int 15 0
+    name .b49 big 0 0
+    const (88) int 6 0
+ecom: 
+name .t47 list of ref Listnode 0 0
+ecom to: 
+* list of ref Listnode 8 0
+  + int 15 0
+    name .b48 big 0 0
+    const (64) int 6 0
+ecom: 
+= list of ref Listnode 10 1
+  name .t47 list of ref Listnode 0 0
+  name nil list of ref Listnode 1 0
+ecom: 
+name nil list of ref Listnode 1 0
+ecom to: 
+name .t47 list of ref Listnode 0 0
+ecom: 
+= list of ref Listnode 10 2
+  name vars list of ref Listnode 0 0
+  call list of ref Listnode 10 2
+    name glom fn(ctxt: ref Context, n: ref Node, redirs: ref Redirlist, onto: list of ref Listnode): list of ref Listnode 11 1
+    seq no type 10 1
+      name ctxt ref Context 0 0
+      seq no type 10 1
+        * ref Node 8 0
+          + int 15 1
+            name n ref Node 0 0
+            const left (8) int 6 0
+        seq no type 10 1
+          name redirs ref Redirlist 0 0
+          seq no type 10 1
+            name nil list of ref Listnode 1 0
+ecom: 
+call list of ref Listnode 10 2
+  name glom fn(ctxt: ref Context, n: ref Node, redirs: ref Redirlist, onto: list of ref Listnode): list of ref Listnode 11 1
+  seq no type 10 1
+    name ctxt ref Context 0 0
+    seq no type 10 1
+      * ref Node 8 0
+        + int 15 1
+          name n ref Node 0 0
+          const left (8) int 6 0
+      seq no type 10 1
+        name redirs ref Redirlist 0 0
+        seq no type 10 1
+          name nil list of ref Listnode 1 0
+ecom to: 
+name vars list of ref Listnode 0 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b49 big 0 0
+    const (64) int 6 0
+ecom: 
+* ref Node 8 0
+  + int 15 1
+    name n ref Node 0 0
+    const left (8) int 6 0
+ecom to: 
+* ref Node 8 0
+  + int 15 0
+    name .b49 big 0 0
+    const (72) int 6 0
+ecom: 
+name redirs ref Redirlist 0 0
+ecom to: 
+* ref Redirlist 8 0
+  + int 15 0
+    name .b49 big 0 0
+    const (80) int 6 0
+ecom: 
+name nil list of ref Listnode 1 0
+ecom to: 
+* list of ref Listnode 8 0
+  + int 15 0
+    name .b49 big 0 0
+    const (88) int 6 0
+ecom: 
+call no type 10 2
+  name fail fn(ctxt: self ref Context, ename: string, err: string) 11 1
+  seq nothing 10 1
+    name ctxt ref Context 0 0
+    seq no type 10 1
+      const bad assign string 1 0
+      seq no type 10 1
+        const sh: nil variable name string 1 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b49 big 0 0
+    const (64) int 6 0
+ecom: 
+const bad assign string 1 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b49 big 0 0
+    const (72) int 6 0
+ecom: 
+const sh: nil variable name string 1 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b49 big 0 0
+    const (80) int 6 0
+ecom: 
+call no type 10 2
+  name fail fn(ctxt: self ref Context, ename: string, err: string) 11 1
+  seq nothing 10 1
+    name ctxt ref Context 0 0
+    seq no type 10 1
+      const bad assign string 1 0
+      seq no type 10 1
+        const sh: redirections not allowed in assignment string 1 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b49 big 0 0
+    const (64) int 6 0
+ecom: 
+const bad assign string 1 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b49 big 0 0
+    const (72) int 6 0
+ecom: 
+const sh: redirections not allowed in assignment string 1 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b49 big 0 0
+    const (80) int 6 0
+ecom: 
+= list of ref Listnode 10 1
+  name tval list of ref Listnode 0 0
+  name val list of ref Listnode 0 0
+ecom: 
+name val list of ref Listnode 0 0
+ecom to: 
+name tval list of ref Listnode 0 0
+ecom: 
+= string 10 2
+  name vname string 0 0
+  call string 10 2
+    name deglob fn(s: string): string 11 1
+    seq no type 10 1
+      * string 10 1
+        + int 10 1
+          hd ref Listnode 10 1
+            name vars list of ref Listnode 0 0
+          const word (8) int 6 0
+ecom: 
+call string 10 2
+  name deglob fn(s: string): string 11 1
+  seq no type 10 1
+    * string 10 1
+      + int 10 1
+        hd ref Listnode 10 1
+          name vars list of ref Listnode 0 0
+        const word (8) int 6 0
+ecom to: 
+name vname string 0 0
+generate desc for big
+ecom: 
+* string 10 1
+  + int 10 1
+    hd ref Listnode 10 1
+      name vars list of ref Listnode 0 0
+    const word (8) int 6 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b49 big 0 0
+    const (64) int 6 0
+eacom: 
+* string 10 1
+  + int 10 1
+    hd ref Listnode 10 1
+      name vars list of ref Listnode 0 0
+    const word (8) int 6 0
+ecom: 
+hd ref Listnode 10 1
+  name vars list of ref Listnode 0 0
+ecom to: 
+name .t47 ref Listnode 0 0
+ecom: 
+= ref Listnode 10 1
+  name .t47 ref Listnode 0 0
+  name nil ref Listnode 1 0
+ecom: 
+name nil ref Listnode 1 0
+ecom to: 
+name .t47 ref Listnode 0 0
+ecom: 
+call no type 10 2
+  name fail fn(ctxt: self ref Context, ename: string, err: string) 11 1
+  seq nothing 10 1
+    name ctxt ref Context 0 0
+    seq no type 10 1
+      const bad assign string 1 0
+      seq no type 10 1
+        const sh: bad variable name string 1 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b49 big 0 0
+    const (64) int 6 0
+ecom: 
+const bad assign string 1 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b49 big 0 0
+    const (72) int 6 0
+ecom: 
+const sh: bad variable name string 1 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b49 big 0 0
+    const (80) int 6 0
+ecom: 
+= list of ref Listnode 10 1
+  name v list of ref Listnode 0 0
+  name nil polymorphic type 1 0
+ecom: 
+name nil list of ref Listnode 1 0
+ecom to: 
+name v list of ref Listnode 0 0
+eacom: 
+tl list of ref Listnode 10 1
+  name vars list of ref Listnode 0 0
+ecom: 
+tl list of ref Listnode 10 1
+  name vars list of ref Listnode 0 0
+ecom to: 
+name .t47 list of ref Listnode 0 0
+ecom: 
+= list of ref Listnode 10 1
+  name .t47 list of ref Listnode 0 0
+  name nil list of ref Listnode 1 0
+ecom: 
+name nil list of ref Listnode 1 0
+ecom to: 
+name .t47 list of ref Listnode 0 0
+ecom: 
+= list of ref Listnode 10 1
+  name v list of ref Listnode 0 0
+  name tval list of ref Listnode 0 0
+ecom: 
+name tval list of ref Listnode 0 0
+ecom to: 
+name v list of ref Listnode 0 0
+ecom: 
+= list of ref Listnode 10 1
+  name v list of ref Listnode 0 0
+  :: list of ref Listnode 10 1
+    hd ref Listnode 10 1
+      name tval list of ref Listnode 0 0
+    name nil polymorphic type 1 0
+ecom: 
+:: list of ref Listnode 10 1
+  hd ref Listnode 10 1
+    name tval list of ref Listnode 0 0
+  name nil polymorphic type 1 0
+ecom to: 
+name v list of ref Listnode 0 0
+eacom: 
+hd ref Listnode 10 1
+  name tval list of ref Listnode 0 0
+ecom: 
+hd ref Listnode 10 1
+  name tval list of ref Listnode 0 0
+ecom to: 
+name .t47 ref Listnode 0 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+name .t50 list of ref Listnode 0 0
+ecom: 
+= ref Listnode 10 1
+  name .t47 ref Listnode 0 0
+  name nil ref Listnode 1 0
+ecom: 
+name nil ref Listnode 1 0
+ecom to: 
+name .t47 ref Listnode 0 0
+ecom: 
+= list of ref Listnode 10 1
+  name .t50 list of ref Listnode 0 0
+  name nil list of ref Listnode 1 0
+ecom: 
+name nil list of ref Listnode 1 0
+ecom to: 
+name .t50 list of ref Listnode 0 0
+ecom: 
+call no type 10 2
+  name set fn(ctxt: self ref Context, name: string, val: list of ref Listnode) 11 1
+  seq nothing 10 1
+    name ctxt ref Context 0 0
+    seq no type 10 1
+      name vname string 0 0
+      seq no type 10 1
+        name v list of ref Listnode 0 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b49 big 0 0
+    const (64) int 6 0
+ecom: 
+name vname string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b49 big 0 0
+    const (72) int 6 0
+ecom: 
+name v list of ref Listnode 0 0
+ecom to: 
+* list of ref Listnode 8 0
+  + int 15 0
+    name .b49 big 0 0
+    const (80) int 6 0
+ecom: 
+call no type 10 2
+  name setlocal fn(ctxt: self ref Context, name: string, val: list of ref Listnode) 11 1
+  seq nothing 10 1
+    name ctxt ref Context 0 0
+    seq no type 10 1
+      name vname string 0 0
+      seq no type 10 1
+        name v list of ref Listnode 0 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b49 big 0 0
+    const (64) int 6 0
+ecom: 
+name vname string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b49 big 0 0
+    const (72) int 6 0
+ecom: 
+name v list of ref Listnode 0 0
+ecom to: 
+* list of ref Listnode 8 0
+  + int 15 0
+    name .b49 big 0 0
+    const (80) int 6 0
+ecom: 
+= list of ref Listnode 10 1
+  name tval list of ref Listnode 0 0
+  tl list of ref Listnode 10 1
+    name tval list of ref Listnode 0 0
+ecom: 
+tl list of ref Listnode 10 1
+  name tval list of ref Listnode 0 0
+ecom to: 
+name tval list of ref Listnode 0 0
+ecom: 
+= list of ref Listnode 10 1
+  name v list of ref Listnode 0 0
+  name nil list of ref Listnode 1 0
+ecom: 
+name nil list of ref Listnode 1 0
+ecom to: 
+name v list of ref Listnode 0 0
+ecom: 
+= string 10 1
+  name vname string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name vname string 0 0
+ecom: 
+= list of ref Listnode 10 1
+  name vars list of ref Listnode 0 0
+  tl list of ref Listnode 10 1
+    name vars list of ref Listnode 0 0
+ecom: 
+tl list of ref Listnode 10 1
+  name vars list of ref Listnode 0 0
+ecom to: 
+name vars list of ref Listnode 0 0
+ecom: 
+name val list of ref Listnode 0 0
+ecom to: 
+* list of ref Listnode 8 0
+  name .ret int 0 0
+fn: assign
+64: argument ctxt ref Context ref 8
+72: argument n ref Node ref 7
+80: local .b49 big ref 8
+88: local tval list of ref Listnode ref 7
+96: local vars list of ref Listnode ref 7
+104: local v list of ref Listnode ref 5
+112: local redirs ref Redirlist ref 4
+120: local val list of ref Listnode ref 4
+128: local vname string ref 4
+136: local .b48 big ref 2
+144: local .t47 ref Node ref 1
+152: local .t50 list of ref Listnode ref 1
+generate desc for assign
+descmap offset 0
+descmap ctxt type ref Context offset 64 (d->offset=64 start=0) returns 64
+descmap n type ref Node offset 72 (d->offset=72 start=0) returns 72
+descmap .b49 type big offset 80 (d->offset=80 start=0) returns -1
+descmap tval type list of ref Listnode offset 88 (d->offset=88 start=0) returns 88
+descmap vars type list of ref Listnode offset 96 (d->offset=96 start=0) returns 96
+descmap v type list of ref Listnode offset 104 (d->offset=104 start=0) returns 104
+descmap redirs type ref Redirlist offset 112 (d->offset=112 start=0) returns 112
+descmap val type list of ref Listnode offset 120 (d->offset=120 start=0) returns 120
+descmap vname type string offset 128 (d->offset=128 start=0) returns 128
+descmap .b48 type big offset 136 (d->offset=136 start=0) returns -1
+descmap .t47 type ref Node offset 144 (d->offset=144 start=0) returns 144
+descmap .t50 type list of ref Listnode offset 152 (d->offset=152 start=0) returns 152
+fncom: walkpipeline 3 418268
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* polymorphic type 8 0
+  name .ret int 0 0
+ecom: 
+= array of ref Sys->FD 10 1
+  name fds array of ref Sys->FD 0 0
+  array array of ref Sys->FD 10 1
+    const (2) int 6 0
+ecom: 
+array array of ref Sys->FD 10 1
+  const (2) int 6 0
+ecom to: 
+name fds array of ref Sys->FD 0 0
+generate desc for ref Sys->FD
+generate desc for ref Sys->FD
+	desc	$-1,8,"80"
+ecom: 
+= int 10 1
+  name rfdno int 0 0
+  const (-1) int 6 0
+ecom: 
+const (-1) int 6 0
+ecom to: 
+name rfdno int 0 0
+eacom: 
+call int 10 2
+  -> fn(fds: array of ref Sys->FD): int 12 1
+    name sys Sys 1 0
+    name pipe nothing 11 1
+  seq no type 10 1
+    name fds array of ref Sys->FD 0 0
+ecom: 
+call int 10 2
+  -> fn(fds: array of ref Sys->FD): int 12 1
+    name sys Sys 1 0
+    name pipe nothing 11 1
+  seq no type 10 1
+    name fds array of ref Sys->FD 0 0
+ecom to: 
+name .t51 int 0 0
+generate desc for big
+ecom: 
+name fds array of ref Sys->FD 0 0
+ecom to: 
+* array of ref Sys->FD 8 0
+  + int 15 0
+    name .b52 big 0 0
+    const (64) int 6 0
+ecom: 
+call no type 10 2
+  name fail fn(ctxt: self ref Context, ename: string, err: string) 11 1
+  seq nothing 10 2
+    name ctxt ref Context 0 0
+    seq no type 10 2
+      const no pipe string 1 0
+      seq no type 10 2
+        call string 10 2
+          -> fn(s: string, *): string 12 1
+            name sys Sys 1 0
+            name sprint nothing 11 1
+          seq no type 10 1
+            const sh: cannot make pipe: %r string 1 0
+generate desc for big
+ecom: 
+call string 10 2
+  -> fn(s: string, *): string 12 1
+    name sys Sys 1 0
+    name sprint nothing 11 1
+  seq no type 10 1
+    const sh: cannot make pipe: %r string 1 0
+ecom to: 
+name .t53 string 0 0
+generate desc for Sys->sprint
+descmap offset 0
+descmap s type string offset 64 (d->offset=64 start=0) returns 64
+generate desc for big
+ecom: 
+const sh: cannot make pipe: %r string 1 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b54 big 0 0
+    const (64) int 6 0
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b52 big 0 0
+    const (64) int 6 0
+ecom: 
+const no pipe string 1 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b52 big 0 0
+    const (72) int 6 0
+ecom: 
+name .t53 string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b52 big 0 0
+    const (80) int 6 0
+ecom: 
+= string 10 1
+  name .t53 string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name .t53 string 0 0
+ecom: 
+= int 10 1
+  name nwfdno int 0 0
+  const (-1) int 6 0
+ecom: 
+const (-1) int 6 0
+ecom to: 
+name nwfdno int 0 0
+ecom: 
+= (int, int) 10 2
+  tuple (int, int) 10 1
+    seq nothing 10 1
+      name fd1 int 0 0
+      seq nothing 10 1
+        name fd2 int 0 0
+  tuple (int, int) 10 2
+    seq no type 10 2
+      * int 10 1
+        + int 10 1
+          * ref Redir 8 0
+            + int 15 1
+              name n ref Node 0 0
+              const redir (32) int 6 0
+          const fd2 (8) int 6 0
+      seq no type 10 1
+        * int 10 1
+          + int 10 1
+            * ref Redir 8 0
+              + int 15 1
+                name n ref Node 0 0
+                const redir (32) int 6 0
+            const fd1 (4) int 6 0
+ecom: 
+tuple (int, int) 10 2
+  seq no type 10 2
+    * int 10 1
+      + int 10 1
+        * ref Redir 8 0
+          + int 15 1
+            name n ref Node 0 0
+            const redir (32) int 6 0
+        const fd2 (8) int 6 0
+    seq no type 10 1
+      * int 10 1
+        + int 10 1
+          * ref Redir 8 0
+            + int 15 1
+              name n ref Node 0 0
+              const redir (32) int 6 0
+          const fd1 (4) int 6 0
+ecom to: 
+name fd1 (int, int) 0 0
+ecom: 
+* int 10 1
+  + int 10 1
+    * ref Redir 8 0
+      + int 15 1
+        name n ref Node 0 0
+        const redir (32) int 6 0
+    const fd2 (8) int 6 0
+ecom to: 
+* int 0 0
+  + int 13 1
+    adr int 13 1
+      name fd1 (int, int) 0 0
+    const (0) int 6 0
+eacom: 
+* int 10 1
+  + int 10 1
+    * ref Redir 8 0
+      + int 15 1
+        name n ref Node 0 0
+        const redir (32) int 6 0
+    const fd2 (8) int 6 0
+ecom: 
+* ref Redir 8 0
+  + int 15 1
+    name n ref Node 0 0
+    const redir (32) int 6 0
+ecom to: 
+name .t53 ref Redir 0 0
+ecom: 
+= ref Redir 10 1
+  name .t53 ref Redir 0 0
+  name nil ref Redir 1 0
+ecom: 
+name nil ref Redir 1 0
+ecom to: 
+name .t53 ref Redir 0 0
+ecom: 
+* int 10 1
+  + int 10 1
+    * ref Redir 8 0
+      + int 15 1
+        name n ref Node 0 0
+        const redir (32) int 6 0
+    const fd1 (4) int 6 0
+ecom to: 
+* int 0 0
+  + int 13 1
+    adr int 13 1
+      name fd1 (int, int) 0 0
+    const (4) int 6 0
+eacom: 
+* int 10 1
+  + int 10 1
+    * ref Redir 8 0
+      + int 15 1
+        name n ref Node 0 0
+        const redir (32) int 6 0
+    const fd1 (4) int 6 0
+ecom: 
+* ref Redir 8 0
+  + int 15 1
+    name n ref Node 0 0
+    const redir (32) int 6 0
+ecom to: 
+name .t53 ref Redir 0 0
+ecom: 
+= ref Redir 10 1
+  name .t53 ref Redir 0 0
+  name nil ref Redir 1 0
+ecom: 
+name nil ref Redir 1 0
+ecom to: 
+name .t53 ref Redir 0 0
+ecom: 
+= (int, int) 10 2
+  tuple (int, int) 10 1
+    seq no type 10 1
+      name fd1 int 0 0
+      seq no type 10 1
+        name fd2 int 0 0
+  tuple (int, int) 10 1
+    seq no type 10 1
+      name fd2 int 0 0
+      seq no type 10 1
+        name fd1 int 0 0
+generate desc for (int, int)
+descmap adt offset 0
+descmap offset 0
+descmap t0 type int offset 0 (d->offset=0 start=0) returns -1
+descmap t1 type int offset 4 (d->offset=4 start=0) returns -1
+generate desc for (int, int)
+	desc	$-1,8,""
+ecom: 
+tuple (int, int) 10 1
+  seq no type 10 1
+    name fd2 int 0 0
+    seq no type 10 1
+      name fd1 int 0 0
+ecom to: 
+name .b55 (int, int) 0 0
+ecom: 
+name fd2 int 0 0
+ecom to: 
+* int 0 0
+  + int 13 1
+    adr int 13 1
+      name .b55 (int, int) 0 0
+    const (0) int 6 0
+ecom: 
+name fd1 int 0 0
+ecom to: 
+* int 0 0
+  + int 13 1
+    adr int 13 1
+      name .b55 (int, int) 0 0
+    const (4) int 6 0
+ecom: 
+= (int, int) 10 2
+  tuple (int, int) 10 1
+    seq no type 10 1
+      name nwfdno int 0 0
+      seq no type 10 1
+        name rfdno int 0 0
+  tuple (int, int) 10 1
+    seq no type 10 1
+      name fd2 int 0 0
+      seq no type 10 1
+        name fd1 int 0 0
+ecom: 
+= int 10 1
+  name nwfdno int 0 0
+  name fd2 int 0 0
+ecom: 
+name fd2 int 0 0
+ecom to: 
+name nwfdno int 0 0
+ecom: 
+= int 10 1
+  name rfdno int 0 0
+  name fd1 int 0 0
+ecom: 
+name fd1 int 0 0
+ecom to: 
+name rfdno int 0 0
+ecom: 
+= list of int 10 2
+  name pids list of int 0 0
+  call list of int 10 2
+    name walkpipeline fn(ctxt: ref Context, n: ref Node, wrpipe: ref Sys->FD, wfdno: int): list of int 11 1
+    seq no type 10 2
+      name ctxt ref Context 0 0
+      seq no type 10 2
+        * ref Node 8 0
+          + int 15 1
+            name n ref Node 0 0
+            const left (8) int 6 0
+        seq no type 10 2
+          * ref Sys->FD 10 1
+            indx big 10 1
+              name fds array of ref Sys->FD 0 0
+              const (1) int 6 0
+          seq no type 10 1
+            name nwfdno int 0 0
+ecom: 
+call list of int 10 2
+  name walkpipeline fn(ctxt: ref Context, n: ref Node, wrpipe: ref Sys->FD, wfdno: int): list of int 11 1
+  seq no type 10 2
+    name ctxt ref Context 0 0
+    seq no type 10 2
+      * ref Node 8 0
+        + int 15 1
+          name n ref Node 0 0
+          const left (8) int 6 0
+      seq no type 10 2
+        * ref Sys->FD 10 1
+          indx big 10 1
+            name fds array of ref Sys->FD 0 0
+            const (1) int 6 0
+        seq no type 10 1
+          name nwfdno int 0 0
+ecom to: 
+name pids list of int 0 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b54 big 0 0
+    const (64) int 6 0
+ecom: 
+* ref Node 8 0
+  + int 15 1
+    name n ref Node 0 0
+    const left (8) int 6 0
+ecom to: 
+* ref Node 8 0
+  + int 15 0
+    name .b54 big 0 0
+    const (72) int 6 0
+ecom: 
+* ref Sys->FD 10 1
+  indx big 10 1
+    name fds array of ref Sys->FD 0 0
+    const (1) int 6 0
+ecom to: 
+* ref Sys->FD 8 0
+  + int 15 0
+    name .b54 big 0 0
+    const (80) int 6 0
+eacom: 
+* ref Sys->FD 10 1
+  indx big 10 1
+    name fds array of ref Sys->FD 0 0
+    const (1) int 6 0
+generate desc for big
+ecom: 
+indx big 10 1
+  name fds array of ref Sys->FD 0 0
+  const (1) int 6 0
+ecom to: 
+name .b52 big 0 0
+ecom: 
+name nwfdno int 0 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b54 big 0 0
+    const (88) int 6 0
+ecom: 
+= ref Sys->FD 10 1
+  * ref Sys->FD 10 1
+    indx big 10 1
+      name fds array of ref Sys->FD 0 0
+      const (1) int 6 0
+  name nil polymorphic type 1 0
+eacom: 
+* ref Sys->FD 10 1
+  indx big 10 1
+    name fds array of ref Sys->FD 0 0
+    const (1) int 6 0
+generate desc for big
+ecom: 
+indx big 10 1
+  name fds array of ref Sys->FD 0 0
+  const (1) int 6 0
+ecom to: 
+name .b54 big 0 0
+ecom: 
+name nil ref Sys->FD 1 0
+ecom to: 
+* ref Sys->FD 8 1
+  name .b54 big 0 0
+ecom: 
+= ref Node 10 1
+  name n ref Node 0 0
+  * ref Node 8 0
+    + int 15 1
+      name n ref Node 0 0
+      const right (16) int 6 0
+ecom: 
+* ref Node 8 0
+  + int 15 1
+    name n ref Node 0 0
+    const right (16) int 6 0
+ecom to: 
+name n ref Node 0 0
+ecom: 
+= ref Redirlist 10 1
+  name r ref Redirlist 0 0
+  ref ref Redirlist 10 1
+    tuple Redirlist 10 1
+      seq no type 10 1
+        name nil polymorphic type 1 0
+ecom: 
+ref ref Redirlist 10 1
+  tuple Redirlist 10 1
+    seq no type 10 1
+      name nil polymorphic type 1 0
+ecom to: 
+name r ref Redirlist 0 0
+generate desc for Redirlist
+ecom: 
+tuple Redirlist 10 1
+  seq no type 10 1
+    name nil polymorphic type 1 0
+ecom to: 
+* Redirlist 8 0
+  name .t53 ref Redirlist 0 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* list of Redirword 8 0
+  + int 15 1
+    adr int 15 1
+      * Redirlist 8 0
+        name .t53 ref Redirlist 0 0
+    const (0) int 6 0
+ecom: 
+= ref Redirlist 10 1
+  name .t53 ref Redirlist 0 0
+  name nil ref Redirlist 1 0
+ecom: 
+name nil ref Redirlist 1 0
+ecom to: 
+name .t53 ref Redirlist 0 0
+ecom: 
+= list of ref Listnode 10 2
+  name rlist list of ref Listnode 0 0
+  call list of ref Listnode 10 2
+    name glob fn(nl: list of ref Listnode): list of ref Listnode 11 1
+    seq no type 10 2
+      call list of ref Listnode 10 2
+        name glom fn(ctxt: ref Context, n: ref Node, redirs: ref Redirlist, onto: list of ref Listnode): list of ref Listnode 11 1
+        seq no type 10 1
+          name ctxt ref Context 0 0
+          seq no type 10 1
+            name n ref Node 0 0
+            seq no type 10 1
+              name r ref Redirlist 0 0
+              seq no type 10 1
+                name nil list of ref Listnode 1 0
+ecom: 
+call list of ref Listnode 10 2
+  name glob fn(nl: list of ref Listnode): list of ref Listnode 11 1
+  seq no type 10 2
+    call list of ref Listnode 10 2
+      name glom fn(ctxt: ref Context, n: ref Node, redirs: ref Redirlist, onto: list of ref Listnode): list of ref Listnode 11 1
+      seq no type 10 1
+        name ctxt ref Context 0 0
+        seq no type 10 1
+          name n ref Node 0 0
+          seq no type 10 1
+            name r ref Redirlist 0 0
+            seq no type 10 1
+              name nil list of ref Listnode 1 0
+ecom to: 
+name rlist list of ref Listnode 0 0
+generate desc for big
+ecom: 
+call list of ref Listnode 10 2
+  name glom fn(ctxt: ref Context, n: ref Node, redirs: ref Redirlist, onto: list of ref Listnode): list of ref Listnode 11 1
+  seq no type 10 1
+    name ctxt ref Context 0 0
+    seq no type 10 1
+      name n ref Node 0 0
+      seq no type 10 1
+        name r ref Redirlist 0 0
+        seq no type 10 1
+          name nil list of ref Listnode 1 0
+ecom to: 
+name .t53 list of ref Listnode 0 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b52 big 0 0
+    const (64) int 6 0
+ecom: 
+name n ref Node 0 0
+ecom to: 
+* ref Node 8 0
+  + int 15 0
+    name .b52 big 0 0
+    const (72) int 6 0
+ecom: 
+name r ref Redirlist 0 0
+ecom to: 
+* ref Redirlist 8 0
+  + int 15 0
+    name .b52 big 0 0
+    const (80) int 6 0
+ecom: 
+name nil list of ref Listnode 1 0
+ecom to: 
+* list of ref Listnode 8 0
+  + int 15 0
+    name .b52 big 0 0
+    const (88) int 6 0
+ecom: 
+name .t53 list of ref Listnode 0 0
+ecom to: 
+* list of ref Listnode 8 0
+  + int 15 0
+    name .b54 big 0 0
+    const (64) int 6 0
+ecom: 
+= list of ref Listnode 10 1
+  name .t53 list of ref Listnode 0 0
+  name nil list of ref Listnode 1 0
+ecom: 
+name nil list of ref Listnode 1 0
+ecom to: 
+name .t53 list of ref Listnode 0 0
+eacom: 
+* ref Sys->FD 10 1
+  indx big 10 1
+    name fds array of ref Sys->FD 0 0
+    const (0) int 6 0
+generate desc for big
+ecom: 
+indx big 10 1
+  name fds array of ref Sys->FD 0 0
+  const (0) int 6 0
+ecom to: 
+name .b54 big 0 0
+ecom: 
+= int 10 1
+  name rfdno int 0 0
+  const (0) int 6 0
+ecom: 
+const (0) int 6 0
+ecom to: 
+name rfdno int 0 0
+ecom: 
+= list of Redirword 10 2
+  * list of Redirword 8 0
+    name r ref Redirlist 0 0
+  :: list of Redirword 10 2
+    tuple Redirword 10 2
+      seq no type 10 2
+        * ref Sys->FD 10 1
+          indx big 10 1
+            name fds array of ref Sys->FD 0 0
+            const (0) int 6 0
+        seq no type 10 1
+          name nil polymorphic type 1 0
+          seq no type 10 1
+            tuple Redir 10 1
+              seq no type 10 1
+                const OREAD (0) int 6 0
+                seq no type 10 1
+                  name rfdno int 0 0
+                  seq no type 10 1
+                    const (-1) int 6 0
+    * list of Redirword 8 0
+      name r ref Redirlist 0 0
+ecom: 
+:: list of Redirword 10 2
+  tuple Redirword 10 2
+    seq no type 10 2
+      * ref Sys->FD 10 1
+        indx big 10 1
+          name fds array of ref Sys->FD 0 0
+          const (0) int 6 0
+      seq no type 10 1
+        name nil polymorphic type 1 0
+        seq no type 10 1
+          tuple Redir 10 1
+            seq no type 10 1
+              const OREAD (0) int 6 0
+              seq no type 10 1
+                name rfdno int 0 0
+                seq no type 10 1
+                  const (-1) int 6 0
+  * list of Redirword 8 0
+    name r ref Redirlist 0 0
+ecom to: 
+* list of Redirword 8 0
+  name r ref Redirlist 0 0
+eacom: 
+tuple Redirword 10 2
+  seq no type 10 2
+    * ref Sys->FD 10 1
+      indx big 10 1
+        name fds array of ref Sys->FD 0 0
+        const (0) int 6 0
+    seq no type 10 1
+      name nil polymorphic type 1 0
+      seq no type 10 1
+        tuple Redir 10 1
+          seq no type 10 1
+            const OREAD (0) int 6 0
+            seq no type 10 1
+              name rfdno int 0 0
+              seq no type 10 1
+                const (-1) int 6 0
+generate desc for Redirword
+descmap adt offset 0
+descmap offset 0
+descmap fd type ref Sys->FD offset 0 (d->offset=0 start=0) returns 0
+descmap w type string offset 8 (d->offset=8 start=0) returns 8
+descmap adt offset 16
+descmap offset 16
+descmap rtype type int offset 16 (d->offset=0 start=16) returns -1
+descmap fd1 type int offset 20 (d->offset=4 start=16) returns -1
+descmap fd2 type int offset 24 (d->offset=8 start=16) returns -1
+descmap r type Redir offset 16 (d->offset=16 start=0) returns -1
+generate desc for Redirword
+	desc	$-1,32,"c0"
+ecom: 
+tuple Redirword 10 2
+  seq no type 10 2
+    * ref Sys->FD 10 1
+      indx big 10 1
+        name fds array of ref Sys->FD 0 0
+        const (0) int 6 0
+    seq no type 10 1
+      name nil polymorphic type 1 0
+      seq no type 10 1
+        tuple Redir 10 1
+          seq no type 10 1
+            const OREAD (0) int 6 0
+            seq no type 10 1
+              name rfdno int 0 0
+              seq no type 10 1
+                const (-1) int 6 0
+ecom to: 
+name .b56 Redirword 0 0
+ecom: 
+* ref Sys->FD 10 1
+  indx big 10 1
+    name fds array of ref Sys->FD 0 0
+    const (0) int 6 0
+ecom to: 
+* ref Sys->FD 0 0
+  + int 13 1
+    adr int 13 1
+      name .b56 Redirword 0 0
+    const (0) int 6 0
+eacom: 
+* ref Sys->FD 10 1
+  indx big 10 1
+    name fds array of ref Sys->FD 0 0
+    const (0) int 6 0
+generate desc for big
+ecom: 
+indx big 10 1
+  name fds array of ref Sys->FD 0 0
+  const (0) int 6 0
+ecom to: 
+name .b54 big 0 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* string 0 0
+  + int 13 1
+    adr int 13 1
+      name .b56 Redirword 0 0
+    const (8) int 6 0
+ecom: 
+tuple Redir 10 1
+  seq no type 10 1
+    const OREAD (0) int 6 0
+    seq no type 10 1
+      name rfdno int 0 0
+      seq no type 10 1
+        const (-1) int 6 0
+ecom to: 
+* Redir 0 0
+  + int 13 1
+    adr int 13 1
+      name .b56 Redirword 0 0
+    const (16) int 6 0
+ecom: 
+const OREAD (0) int 6 0
+ecom to: 
+* int 0 0
+  + int 13 1
+    adr int 13 1
+      * Redir 0 0
+        + int 13 1
+          adr int 13 1
+            name .b56 Redirword 0 0
+          const (16) int 6 0
+    const (0) int 6 0
+ecom: 
+name rfdno int 0 0
+ecom to: 
+* int 0 0
+  + int 13 1
+    adr int 13 1
+      * Redir 0 0
+        + int 13 1
+          adr int 13 1
+            name .b56 Redirword 0 0
+          const (16) int 6 0
+    const (4) int 6 0
+ecom: 
+const (-1) int 6 0
+ecom to: 
+* int 0 0
+  + int 13 1
+    adr int 13 1
+      * Redir 0 0
+        + int 13 1
+          adr int 13 1
+            name .b56 Redirword 0 0
+          const (16) int 6 0
+    const (8) int 6 0
+generate desc for Redirword
+ecom: 
+= ref Sys->FD 10 1
+  * ref Sys->FD 0 0
+    adr int 13 1
+      name .b56 Redirword 0 0
+  name nil ref Sys->FD 1 0
+ecom: 
+name nil ref Sys->FD 1 0
+ecom to: 
+* ref Sys->FD 0 0
+  adr int 13 1
+    name .b56 Redirword 0 0
+ecom: 
+= string 10 1
+  * string 0 0
+    + int 13 1
+      adr int 13 1
+        name .b56 Redirword 0 0
+      const w (8) int 6 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+* string 0 0
+  + int 13 1
+    adr int 13 1
+      name .b56 Redirword 0 0
+    const w (8) int 6 0
+ecom: 
+= int 10 1
+  name wfdno int 0 0
+  const (1) int 6 0
+ecom: 
+const (1) int 6 0
+ecom to: 
+name wfdno int 0 0
+ecom: 
+= list of Redirword 10 1
+  * list of Redirword 8 0
+    name r ref Redirlist 0 0
+  :: list of Redirword 10 1
+    tuple Redirword 10 1
+      seq no type 10 1
+        name wrpipe ref Sys->FD 0 0
+        seq no type 10 1
+          name nil polymorphic type 1 0
+          seq no type 10 1
+            tuple Redir 10 1
+              seq no type 10 1
+                const OWRITE (1) int 6 0
+                seq no type 10 1
+                  name wfdno int 0 0
+                  seq no type 10 1
+                    const (-1) int 6 0
+    * list of Redirword 8 0
+      name r ref Redirlist 0 0
+ecom: 
+:: list of Redirword 10 1
+  tuple Redirword 10 1
+    seq no type 10 1
+      name wrpipe ref Sys->FD 0 0
+      seq no type 10 1
+        name nil polymorphic type 1 0
+        seq no type 10 1
+          tuple Redir 10 1
+            seq no type 10 1
+              const OWRITE (1) int 6 0
+              seq no type 10 1
+                name wfdno int 0 0
+                seq no type 10 1
+                  const (-1) int 6 0
+  * list of Redirword 8 0
+    name r ref Redirlist 0 0
+ecom to: 
+* list of Redirword 8 0
+  name r ref Redirlist 0 0
+eacom: 
+tuple Redirword 10 1
+  seq no type 10 1
+    name wrpipe ref Sys->FD 0 0
+    seq no type 10 1
+      name nil polymorphic type 1 0
+      seq no type 10 1
+        tuple Redir 10 1
+          seq no type 10 1
+            const OWRITE (1) int 6 0
+            seq no type 10 1
+              name wfdno int 0 0
+              seq no type 10 1
+                const (-1) int 6 0
+generate desc for Redirword
+ecom: 
+tuple Redirword 10 1
+  seq no type 10 1
+    name wrpipe ref Sys->FD 0 0
+    seq no type 10 1
+      name nil polymorphic type 1 0
+      seq no type 10 1
+        tuple Redir 10 1
+          seq no type 10 1
+            const OWRITE (1) int 6 0
+            seq no type 10 1
+              name wfdno int 0 0
+              seq no type 10 1
+                const (-1) int 6 0
+ecom to: 
+name .b56 Redirword 0 0
+ecom: 
+name wrpipe ref Sys->FD 0 0
+ecom to: 
+* ref Sys->FD 0 0
+  + int 13 1
+    adr int 13 1
+      name .b56 Redirword 0 0
+    const (0) int 6 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* string 0 0
+  + int 13 1
+    adr int 13 1
+      name .b56 Redirword 0 0
+    const (8) int 6 0
+ecom: 
+tuple Redir 10 1
+  seq no type 10 1
+    const OWRITE (1) int 6 0
+    seq no type 10 1
+      name wfdno int 0 0
+      seq no type 10 1
+        const (-1) int 6 0
+ecom to: 
+* Redir 0 0
+  + int 13 1
+    adr int 13 1
+      name .b56 Redirword 0 0
+    const (16) int 6 0
+ecom: 
+const OWRITE (1) int 6 0
+ecom to: 
+* int 0 0
+  + int 13 1
+    adr int 13 1
+      * Redir 0 0
+        + int 13 1
+          adr int 13 1
+            name .b56 Redirword 0 0
+          const (16) int 6 0
+    const (0) int 6 0
+ecom: 
+name wfdno int 0 0
+ecom to: 
+* int 0 0
+  + int 13 1
+    adr int 13 1
+      * Redir 0 0
+        + int 13 1
+          adr int 13 1
+            name .b56 Redirword 0 0
+          const (16) int 6 0
+    const (4) int 6 0
+ecom: 
+const (-1) int 6 0
+ecom to: 
+* int 0 0
+  + int 13 1
+    adr int 13 1
+      * Redir 0 0
+        + int 13 1
+          adr int 13 1
+            name .b56 Redirword 0 0
+          const (16) int 6 0
+    const (8) int 6 0
+generate desc for Redirword
+ecom: 
+= ref Sys->FD 10 1
+  * ref Sys->FD 0 0
+    adr int 13 1
+      name .b56 Redirword 0 0
+  name nil ref Sys->FD 1 0
+ecom: 
+name nil ref Sys->FD 1 0
+ecom to: 
+* ref Sys->FD 0 0
+  adr int 13 1
+    name .b56 Redirword 0 0
+ecom: 
+= string 10 1
+  * string 0 0
+    + int 13 1
+      adr int 13 1
+        name .b56 Redirword 0 0
+      const w (8) int 6 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+* string 0 0
+  + int 13 1
+    adr int 13 1
+      name .b56 Redirword 0 0
+    const w (8) int 6 0
+ecom: 
+= chan of (int, ref Expropagate) 10 1
+  name startchan chan of (int, ref Expropagate) 0 0
+  chan chan of (int, ref Expropagate) 10 1
+    const (0) int 6 0
+ecom: 
+chan chan of (int, ref Expropagate) 10 1
+  const (0) int 6 0
+ecom to: 
+name startchan chan of (int, ref Expropagate) 0 0
+generate desc for (int, ref Expropagate)
+descmap adt offset 0
+descmap offset 0
+descmap t0 type int offset 0 (d->offset=0 start=0) returns -1
+descmap t1 type ref Expropagate offset 8 (d->offset=8 start=0) returns 8
+generate desc for (int, ref Expropagate)
+	desc	$-1,16,"40"
+ecom: 
+spawn nothing 10 2
+  call no type 10 2
+    name runasync fn(ctxt: ref Context, copyenv: int, argv: list of ref Listnode, redirs: ref Redirlist, startchan: chan of (int, ref Expropagate)) 11 1
+    seq no type 10 1
+      name ctxt ref Context 0 0
+      seq no type 10 1
+        const (1) int 6 0
+        seq no type 10 1
+          name rlist list of ref Listnode 0 0
+          seq no type 10 1
+            name r ref Redirlist 0 0
+            seq no type 10 1
+              name startchan chan of (int, ref Expropagate) 0 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b54 big 0 0
+    const (64) int 6 0
+ecom: 
+const (1) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b54 big 0 0
+    const (72) int 6 0
+ecom: 
+name rlist list of ref Listnode 0 0
+ecom to: 
+* list of ref Listnode 8 0
+  + int 15 0
+    name .b54 big 0 0
+    const (80) int 6 0
+ecom: 
+name r ref Redirlist 0 0
+ecom to: 
+* ref Redirlist 8 0
+  + int 15 0
+    name .b54 big 0 0
+    const (88) int 6 0
+ecom: 
+name startchan chan of (int, ref Expropagate) 0 0
+ecom to: 
+* chan of (int, ref Expropagate) 8 0
+  + int 15 0
+    name .b54 big 0 0
+    const (96) int 6 0
+ecom: 
+= (int, ref Expropagate) 10 2
+  tuple (int, ref Expropagate) 10 1
+    seq nothing 10 1
+      name pid int 0 0
+      seq nothing 10 1
+        name nil polymorphic type 1 0
+  <- (int, ref Expropagate) 10 1
+    name startchan chan of (int, ref Expropagate) 0 0
+generate desc for (int, ref Expropagate)
+ecom: 
+<- (int, ref Expropagate) 10 1
+  name startchan chan of (int, ref Expropagate) 0 0
+ecom to: 
+name .b57 (int, ref Expropagate) 0 0
+ecom: 
+= ref Expropagate 10 1
+  * ref Expropagate 0 0
+    + int 13 1
+      adr int 13 1
+        name .b57 (int, ref Expropagate) 0 0
+      const t1 (8) int 6 0
+  name nil ref Expropagate 1 0
+ecom: 
+name nil ref Expropagate 1 0
+ecom to: 
+* ref Expropagate 0 0
+  + int 13 1
+    adr int 13 1
+      name .b57 (int, ref Expropagate) 0 0
+    const t1 (8) int 6 0
+ecom: 
+:: list of int 10 1
+  name pid int 0 0
+  name pids list of int 0 0
+ecom to: 
+* list of int 8 0
+  name .ret int 0 0
+ecom: 
+name pids list of int 0 0
+ecom to: 
+name .t53 list of int 0 0
+ecom: 
+= list of int 10 1
+  name .t53 list of int 0 0
+  name nil list of int 1 0
+ecom: 
+name nil list of int 1 0
+ecom to: 
+name .t53 list of int 0 0
+fn: walkpipeline
+64: argument ctxt ref Context ref 4
+72: argument n ref Node ref 9
+80: argument wrpipe ref Sys->FD ref 2
+88: argument wfdno int ref 3
+92: local rfdno int ref 5
+96: local fd1 int ref 4
+100: local fd2 int ref 5
+104: local nwfdno int ref 3
+108: local .t51 int ref 1
+112: local .b54 big ref 7
+120: local r ref Redirlist ref 7
+128: local fds array of ref Sys->FD ref 6
+136: local .b52 big ref 4
+144: local startchan chan of (int, ref Expropagate) ref 3
+152: local pids list of int ref 2
+160: local rlist list of ref Listnode ref 2
+168: local .b56 Redirword ref 2
+200: local .b55 (int, int) ref 1
+208: local .t53 string ref 1
+216: local .b57 (int, ref Expropagate) ref 1
+104: local pid int ref 3
+generate desc for walkpipeline
+descmap offset 0
+descmap ctxt type ref Context offset 64 (d->offset=64 start=0) returns 64
+descmap n type ref Node offset 72 (d->offset=72 start=0) returns 72
+descmap wrpipe type ref Sys->FD offset 80 (d->offset=80 start=0) returns 80
+descmap wfdno type int offset 88 (d->offset=88 start=0) returns -1
+descmap rfdno type int offset 92 (d->offset=92 start=0) returns -1
+descmap fd1 type int offset 96 (d->offset=96 start=0) returns -1
+descmap fd2 type int offset 100 (d->offset=100 start=0) returns -1
+descmap nwfdno type int offset 104 (d->offset=104 start=0) returns -1
+descmap .t51 type int offset 108 (d->offset=108 start=0) returns -1
+descmap .b54 type big offset 112 (d->offset=112 start=0) returns -1
+descmap r type ref Redirlist offset 120 (d->offset=120 start=0) returns 120
+descmap fds type array of ref Sys->FD offset 128 (d->offset=128 start=0) returns 128
+descmap .b52 type big offset 136 (d->offset=136 start=0) returns -1
+descmap startchan type chan of (int, ref Expropagate) offset 144 (d->offset=144 start=0) returns 144
+descmap pids type list of int offset 152 (d->offset=152 start=0) returns 152
+descmap rlist type list of ref Listnode offset 160 (d->offset=160 start=0) returns 160
+descmap adt offset 168
+descmap offset 168
+descmap fd type ref Sys->FD offset 168 (d->offset=0 start=168) returns 168
+descmap w type string offset 176 (d->offset=8 start=168) returns 176
+descmap adt offset 184
+descmap offset 184
+descmap rtype type int offset 184 (d->offset=0 start=184) returns -1
+descmap fd1 type int offset 188 (d->offset=4 start=184) returns -1
+descmap fd2 type int offset 192 (d->offset=8 start=184) returns -1
+descmap r type Redir offset 184 (d->offset=16 start=168) returns -1
+descmap .b56 type Redirword offset 168 (d->offset=168 start=0) returns 176
+descmap adt offset 200
+descmap offset 200
+descmap t0 type int offset 200 (d->offset=0 start=200) returns -1
+descmap t1 type int offset 204 (d->offset=4 start=200) returns -1
+descmap .b55 type (int, int) offset 200 (d->offset=200 start=0) returns -1
+descmap .t53 type string offset 208 (d->offset=208 start=0) returns 208
+descmap adt offset 216
+descmap offset 216
+descmap t0 type int offset 216 (d->offset=0 start=216) returns -1
+descmap t1 type ref Expropagate offset 224 (d->offset=8 start=216) returns 224
+descmap .b57 type (int, ref Expropagate) offset 216 (d->offset=216 start=0) returns 224
+fncom: makeredir 1 418328
+fncom: glom 14 4183e8
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* polymorphic type 8 0
+  name .ret int 0 0
+ecom: 
+call list of ref Listnode 10 2
+  name listjoin fn(left: list of ref Listnode, right: list of ref Listnode): list of ref Listnode 11 1
+  seq no type 10 2
+    call list of ref Listnode 10 2
+      name glomoperation fn(ctxt: ref Context, n: ref Node, redirs: ref Redirlist): list of ref Listnode 11 1
+      seq no type 10 1
+        name ctxt ref Context 0 0
+        seq no type 10 1
+          name n ref Node 0 0
+          seq no type 10 1
+            name redirs ref Redirlist 0 0
+    seq no type 10 1
+      name onto list of ref Listnode 0 0
+ecom to: 
+* list of ref Listnode 8 0
+  name .ret int 0 0
+generate desc for big
+ecom: 
+call list of ref Listnode 10 2
+  name glomoperation fn(ctxt: ref Context, n: ref Node, redirs: ref Redirlist): list of ref Listnode 11 1
+  seq no type 10 1
+    name ctxt ref Context 0 0
+    seq no type 10 1
+      name n ref Node 0 0
+      seq no type 10 1
+        name redirs ref Redirlist 0 0
+ecom to: 
+name .t59 list of ref Listnode 0 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b60 big 0 0
+    const (64) int 6 0
+ecom: 
+name n ref Node 0 0
+ecom to: 
+* ref Node 8 0
+  + int 15 0
+    name .b60 big 0 0
+    const (72) int 6 0
+ecom: 
+name redirs ref Redirlist 0 0
+ecom to: 
+* ref Redirlist 8 0
+  + int 15 0
+    name .b60 big 0 0
+    const (80) int 6 0
+ecom: 
+name .t59 list of ref Listnode 0 0
+ecom to: 
+* list of ref Listnode 8 0
+  + int 15 0
+    name .b58 big 0 0
+    const (64) int 6 0
+ecom: 
+= list of ref Listnode 10 1
+  name .t59 list of ref Listnode 0 0
+  name nil list of ref Listnode 1 0
+ecom: 
+name nil list of ref Listnode 1 0
+ecom to: 
+name .t59 list of ref Listnode 0 0
+ecom: 
+name onto list of ref Listnode 0 0
+ecom to: 
+* list of ref Listnode 8 0
+  + int 15 0
+    name .b58 big 0 0
+    const (72) int 6 0
+ecom: 
+= list of ref Listnode 10 2
+  name nlist list of ref Listnode 0 0
+  call list of ref Listnode 10 2
+    name glom fn(ctxt: ref Context, n: ref Node, redirs: ref Redirlist, onto: list of ref Listnode): list of ref Listnode 11 1
+    seq no type 10 1
+      name ctxt ref Context 0 0
+      seq no type 10 1
+        * ref Node 8 0
+          + int 15 1
+            name n ref Node 0 0
+            const right (16) int 6 0
+        seq no type 10 1
+          name redirs ref Redirlist 0 0
+          seq no type 10 1
+            name onto list of ref Listnode 0 0
+ecom: 
+call list of ref Listnode 10 2
+  name glom fn(ctxt: ref Context, n: ref Node, redirs: ref Redirlist, onto: list of ref Listnode): list of ref Listnode 11 1
+  seq no type 10 1
+    name ctxt ref Context 0 0
+    seq no type 10 1
+      * ref Node 8 0
+        + int 15 1
+          name n ref Node 0 0
+          const right (16) int 6 0
+      seq no type 10 1
+        name redirs ref Redirlist 0 0
+        seq no type 10 1
+          name onto list of ref Listnode 0 0
+ecom to: 
+name nlist list of ref Listnode 0 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b60 big 0 0
+    const (64) int 6 0
+ecom: 
+* ref Node 8 0
+  + int 15 1
+    name n ref Node 0 0
+    const right (16) int 6 0
+ecom to: 
+* ref Node 8 0
+  + int 15 0
+    name .b60 big 0 0
+    const (72) int 6 0
+ecom: 
+name redirs ref Redirlist 0 0
+ecom to: 
+* ref Redirlist 8 0
+  + int 15 0
+    name .b60 big 0 0
+    const (80) int 6 0
+ecom: 
+name onto list of ref Listnode 0 0
+ecom to: 
+* list of ref Listnode 8 0
+  + int 15 0
+    name .b60 big 0 0
+    const (88) int 6 0
+eacom: 
+* int 10 1
+  * ref Node 8 0
+    + int 15 1
+      name n ref Node 0 0
+      const left (8) int 6 0
+ecom: 
+* ref Node 8 0
+  + int 15 1
+    name n ref Node 0 0
+    const left (8) int 6 0
+ecom to: 
+name .t59 ref Node 0 0
+ecom: 
+= ref Node 10 1
+  name .t59 ref Node 0 0
+  name nil ref Node 1 0
+ecom: 
+name nil ref Node 1 0
+ecom to: 
+name .t59 ref Node 0 0
+ecom: 
+= list of ref Listnode 10 2
+  name nlist list of ref Listnode 0 0
+  call list of ref Listnode 10 2
+    name listjoin fn(left: list of ref Listnode, right: list of ref Listnode): list of ref Listnode 11 1
+    seq no type 10 2
+      call list of ref Listnode 10 2
+        name glomoperation fn(ctxt: ref Context, n: ref Node, redirs: ref Redirlist): list of ref Listnode 11 1
+        seq no type 10 1
+          name ctxt ref Context 0 0
+          seq no type 10 1
+            * ref Node 8 0
+              + int 15 1
+                name n ref Node 0 0
+                const left (8) int 6 0
+            seq no type 10 1
+              name redirs ref Redirlist 0 0
+      seq no type 10 1
+        name nlist list of ref Listnode 0 0
+ecom: 
+call list of ref Listnode 10 2
+  name listjoin fn(left: list of ref Listnode, right: list of ref Listnode): list of ref Listnode 11 1
+  seq no type 10 2
+    call list of ref Listnode 10 2
+      name glomoperation fn(ctxt: ref Context, n: ref Node, redirs: ref Redirlist): list of ref Listnode 11 1
+      seq no type 10 1
+        name ctxt ref Context 0 0
+        seq no type 10 1
+          * ref Node 8 0
+            + int 15 1
+              name n ref Node 0 0
+              const left (8) int 6 0
+          seq no type 10 1
+            name redirs ref Redirlist 0 0
+    seq no type 10 1
+      name nlist list of ref Listnode 0 0
+ecom to: 
+name nlist list of ref Listnode 0 0
+generate desc for big
+ecom: 
+call list of ref Listnode 10 2
+  name glomoperation fn(ctxt: ref Context, n: ref Node, redirs: ref Redirlist): list of ref Listnode 11 1
+  seq no type 10 1
+    name ctxt ref Context 0 0
+    seq no type 10 1
+      * ref Node 8 0
+        + int 15 1
+          name n ref Node 0 0
+          const left (8) int 6 0
+      seq no type 10 1
+        name redirs ref Redirlist 0 0
+ecom to: 
+name .t59 list of ref Listnode 0 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b58 big 0 0
+    const (64) int 6 0
+ecom: 
+* ref Node 8 0
+  + int 15 1
+    name n ref Node 0 0
+    const left (8) int 6 0
+ecom to: 
+* ref Node 8 0
+  + int 15 0
+    name .b58 big 0 0
+    const (72) int 6 0
+ecom: 
+name redirs ref Redirlist 0 0
+ecom to: 
+* ref Redirlist 8 0
+  + int 15 0
+    name .b58 big 0 0
+    const (80) int 6 0
+ecom: 
+name .t59 list of ref Listnode 0 0
+ecom to: 
+* list of ref Listnode 8 0
+  + int 15 0
+    name .b60 big 0 0
+    const (64) int 6 0
+ecom: 
+= list of ref Listnode 10 1
+  name .t59 list of ref Listnode 0 0
+  name nil list of ref Listnode 1 0
+ecom: 
+name nil list of ref Listnode 1 0
+ecom to: 
+name .t59 list of ref Listnode 0 0
+ecom: 
+name nlist list of ref Listnode 0 0
+ecom to: 
+* list of ref Listnode 8 0
+  + int 15 0
+    name .b60 big 0 0
+    const (72) int 6 0
+ecom: 
+= list of ref Listnode 10 2
+  name nlist list of ref Listnode 0 0
+  call list of ref Listnode 10 2
+    name glom fn(ctxt: ref Context, n: ref Node, redirs: ref Redirlist, onto: list of ref Listnode): list of ref Listnode 11 1
+    seq no type 10 1
+      name ctxt ref Context 0 0
+      seq no type 10 1
+        * ref Node 8 0
+          + int 15 1
+            name n ref Node 0 0
+            const left (8) int 6 0
+        seq no type 10 1
+          name redirs ref Redirlist 0 0
+          seq no type 10 1
+            name nlist list of ref Listnode 0 0
+ecom: 
+call list of ref Listnode 10 2
+  name glom fn(ctxt: ref Context, n: ref Node, redirs: ref Redirlist, onto: list of ref Listnode): list of ref Listnode 11 1
+  seq no type 10 1
+    name ctxt ref Context 0 0
+    seq no type 10 1
+      * ref Node 8 0
+        + int 15 1
+          name n ref Node 0 0
+          const left (8) int 6 0
+      seq no type 10 1
+        name redirs ref Redirlist 0 0
+        seq no type 10 1
+          name nlist list of ref Listnode 0 0
+ecom to: 
+name nlist list of ref Listnode 0 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b60 big 0 0
+    const (64) int 6 0
+ecom: 
+* ref Node 8 0
+  + int 15 1
+    name n ref Node 0 0
+    const left (8) int 6 0
+ecom to: 
+* ref Node 8 0
+  + int 15 0
+    name .b60 big 0 0
+    const (72) int 6 0
+ecom: 
+name redirs ref Redirlist 0 0
+ecom to: 
+* ref Redirlist 8 0
+  + int 15 0
+    name .b60 big 0 0
+    const (80) int 6 0
+ecom: 
+name nlist list of ref Listnode 0 0
+ecom to: 
+* list of ref Listnode 8 0
+  + int 15 0
+    name .b60 big 0 0
+    const (88) int 6 0
+ecom: 
+name nlist list of ref Listnode 0 0
+ecom to: 
+* list of ref Listnode 8 0
+  name .ret int 0 0
+fn: glom
+64: argument ctxt ref Context ref 4
+72: argument n ref Node ref 7
+80: argument redirs ref Redirlist ref 4
+88: argument onto list of ref Listnode ref 2
+96: local nlist list of ref Listnode ref 6
+104: local .b60 big ref 4
+112: local .b58 big ref 2
+120: local .t59 list of ref Listnode ref 1
+generate desc for glom
+descmap offset 0
+descmap ctxt type ref Context offset 64 (d->offset=64 start=0) returns 64
+descmap n type ref Node offset 72 (d->offset=72 start=0) returns 72
+descmap redirs type ref Redirlist offset 80 (d->offset=80 start=0) returns 80
+descmap onto type list of ref Listnode offset 88 (d->offset=88 start=0) returns 88
+descmap nlist type list of ref Listnode offset 96 (d->offset=96 start=0) returns 96
+descmap .b60 type big offset 104 (d->offset=104 start=0) returns -1
+descmap .b58 type big offset 112 (d->offset=112 start=0) returns -1
+descmap .t59 type list of ref Listnode offset 120 (d->offset=120 start=0) returns 120
+fncom: listjoin 3 4184a8
+ecom: 
+= list of ref Listnode 10 1
+  name l list of ref Listnode 0 0
+  :: list of ref Listnode 10 1
+    hd ref Listnode 10 1
+      name left list of ref Listnode 0 0
+    name l list of ref Listnode 0 0
+ecom: 
+:: list of ref Listnode 10 1
+  hd ref Listnode 10 1
+    name left list of ref Listnode 0 0
+  name l list of ref Listnode 0 0
+ecom to: 
+name l list of ref Listnode 0 0
+eacom: 
+hd ref Listnode 10 1
+  name left list of ref Listnode 0 0
+ecom: 
+hd ref Listnode 10 1
+  name left list of ref Listnode 0 0
+ecom to: 
+name .t61 ref Listnode 0 0
+ecom: 
+= ref Listnode 10 1
+  name .t61 ref Listnode 0 0
+  name nil ref Listnode 1 0
+ecom: 
+name nil ref Listnode 1 0
+ecom to: 
+name .t61 ref Listnode 0 0
+ecom: 
+= list of ref Listnode 10 1
+  name left list of ref Listnode 0 0
+  tl list of ref Listnode 10 1
+    name left list of ref Listnode 0 0
+ecom: 
+tl list of ref Listnode 10 1
+  name left list of ref Listnode 0 0
+ecom to: 
+name left list of ref Listnode 0 0
+ecom: 
+= list of ref Listnode 10 1
+  name right list of ref Listnode 0 0
+  :: list of ref Listnode 10 1
+    hd ref Listnode 10 1
+      name l list of ref Listnode 0 0
+    name right list of ref Listnode 0 0
+ecom: 
+:: list of ref Listnode 10 1
+  hd ref Listnode 10 1
+    name l list of ref Listnode 0 0
+  name right list of ref Listnode 0 0
+ecom to: 
+name right list of ref Listnode 0 0
+eacom: 
+hd ref Listnode 10 1
+  name l list of ref Listnode 0 0
+ecom: 
+hd ref Listnode 10 1
+  name l list of ref Listnode 0 0
+ecom to: 
+name .t61 ref Listnode 0 0
+ecom: 
+= ref Listnode 10 1
+  name .t61 ref Listnode 0 0
+  name nil ref Listnode 1 0
+ecom: 
+name nil ref Listnode 1 0
+ecom to: 
+name .t61 ref Listnode 0 0
+ecom: 
+= list of ref Listnode 10 1
+  name l list of ref Listnode 0 0
+  tl list of ref Listnode 10 1
+    name l list of ref Listnode 0 0
+ecom: 
+tl list of ref Listnode 10 1
+  name l list of ref Listnode 0 0
+ecom to: 
+name l list of ref Listnode 0 0
+ecom: 
+name right list of ref Listnode 0 0
+ecom to: 
+* list of ref Listnode 8 0
+  name .ret int 0 0
+fn: listjoin
+64: argument left list of ref Listnode ref 4
+72: argument right list of ref Listnode ref 3
+80: local l list of ref Listnode ref 6
+88: local .t61 ref Listnode ref 1
+generate desc for listjoin
+descmap offset 0
+descmap left type list of ref Listnode offset 64 (d->offset=64 start=0) returns 64
+descmap right type list of ref Listnode offset 72 (d->offset=72 start=0) returns 72
+descmap l type list of ref Listnode offset 80 (d->offset=80 start=0) returns 80
+descmap .t61 type ref Listnode offset 88 (d->offset=88 start=0) returns 88
+fncom: pipecmd 2 418568
+eacom: 
+& int 10 1
+  * int 8 0
+    name redir ref Redir 0 0
+  const OAPPEND (524288) int 6 0
+ecom: 
+& int 10 1
+  * int 8 0
+    name redir ref Redir 0 0
+  const OAPPEND (524288) int 6 0
+ecom to: 
+name .t62 int 0 0
+ecom: 
+call no type 10 2
+  name fail fn(ctxt: self ref Context, ename: string, err: string) 11 1
+  seq nothing 10 1
+    name ctxt ref Context 0 0
+    seq no type 10 1
+      const bad redir string 1 0
+      seq no type 10 1
+        const sh: bad redirection string 1 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b63 big 0 0
+    const (64) int 6 0
+ecom: 
+const bad redir string 1 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b63 big 0 0
+    const (72) int 6 0
+ecom: 
+const sh: bad redirection string 1 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b63 big 0 0
+    const (80) int 6 0
+ecom: 
+= Redir 10 1
+  name r Redir 0 0
+  * Redir 8 0
+    name redir ref Redir 0 0
+ecom: 
+* Redir 8 0
+  name redir ref Redir 0 0
+ecom to: 
+name r Redir 0 0
+generate desc for Redir
+descmap adt offset 0
+descmap offset 0
+descmap rtype type int offset 0 (d->offset=0 start=0) returns -1
+descmap fd1 type int offset 4 (d->offset=4 start=0) returns -1
+descmap fd2 type int offset 8 (d->offset=8 start=0) returns -1
+generate desc for Redir
+	desc	$-1,12,""
+ecom: 
+= int 10 1
+  * int 0 0
+    adr int 13 1
+      name r Redir 0 0
+  const OWRITE (1) int 6 0
+ecom: 
+const OWRITE (1) int 6 0
+ecom to: 
+* int 0 0
+  adr int 13 1
+    name r Redir 0 0
+ecom: 
+= int 10 1
+  * int 0 0
+    adr int 13 1
+      name r Redir 0 0
+  const OREAD (0) int 6 0
+ecom: 
+const OREAD (0) int 6 0
+ecom to: 
+* int 0 0
+  adr int 13 1
+    name r Redir 0 0
+ecom: 
+= array of ref Sys->FD 10 1
+  name p array of ref Sys->FD 0 0
+  array array of ref Sys->FD 10 1
+    const (2) int 6 0
+ecom: 
+array array of ref Sys->FD 10 1
+  const (2) int 6 0
+ecom to: 
+name p array of ref Sys->FD 0 0
+generate desc for ref Sys->FD
+generate desc for ref Sys->FD
+	desc	$-1,8,"80"
+eacom: 
+call int 10 2
+  -> fn(fds: array of ref Sys->FD): int 12 1
+    name sys Sys 1 0
+    name pipe nothing 11 1
+  seq no type 10 1
+    name p array of ref Sys->FD 0 0
+ecom: 
+call int 10 2
+  -> fn(fds: array of ref Sys->FD): int 12 1
+    name sys Sys 1 0
+    name pipe nothing 11 1
+  seq no type 10 1
+    name p array of ref Sys->FD 0 0
+ecom to: 
+name .t62 int 0 0
+generate desc for big
+ecom: 
+name p array of ref Sys->FD 0 0
+ecom to: 
+* array of ref Sys->FD 8 0
+  + int 15 0
+    name .b63 big 0 0
+    const (64) int 6 0
+ecom: 
+call no type 10 2
+  name fail fn(ctxt: self ref Context, ename: string, err: string) 11 1
+  seq nothing 10 2
+    name ctxt ref Context 0 0
+    seq no type 10 2
+      const no pipe string 1 0
+      seq no type 10 2
+        call string 10 2
+          -> fn(s: string, *): string 12 1
+            name sys Sys 1 0
+            name sprint nothing 11 1
+          seq no type 10 1
+            const sh: cannot make pipe: %r string 1 0
+generate desc for big
+ecom: 
+call string 10 2
+  -> fn(s: string, *): string 12 1
+    name sys Sys 1 0
+    name sprint nothing 11 1
+  seq no type 10 1
+    const sh: cannot make pipe: %r string 1 0
+ecom to: 
+name .t64 string 0 0
+generate desc for Sys->sprint
+descmap offset 0
+descmap s type string offset 64 (d->offset=64 start=0) returns 64
+generate desc for big
+ecom: 
+const sh: cannot make pipe: %r string 1 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b65 big 0 0
+    const (64) int 6 0
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b63 big 0 0
+    const (64) int 6 0
+ecom: 
+const no pipe string 1 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b63 big 0 0
+    const (72) int 6 0
+ecom: 
+name .t64 string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b63 big 0 0
+    const (80) int 6 0
+ecom: 
+= string 10 1
+  name .t64 string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name .t64 string 0 0
+ecom: 
+= chan of (int, ref Expropagate) 10 1
+  name startchan chan of (int, ref Expropagate) 0 0
+  chan chan of (int, ref Expropagate) 10 1
+    const (0) int 6 0
+ecom: 
+chan chan of (int, ref Expropagate) 10 1
+  const (0) int 6 0
+ecom to: 
+name startchan chan of (int, ref Expropagate) 0 0
+generate desc for (int, ref Expropagate)
+descmap adt offset 0
+descmap offset 0
+descmap t0 type int offset 0 (d->offset=0 start=0) returns -1
+descmap t1 type ref Expropagate offset 8 (d->offset=8 start=0) returns 8
+generate desc for (int, ref Expropagate)
+	desc	$-1,16,"40"
+ecom: 
+spawn nothing 10 2
+  call no type 10 2
+    name runasync fn(ctxt: ref Context, copyenv: int, argv: list of ref Listnode, redirs: ref Redirlist, startchan: chan of (int, ref Expropagate)) 11 1
+    seq no type 10 2
+      name ctxt ref Context 0 0
+      seq no type 10 2
+        const (1) int 6 0
+        seq no type 10 2
+          name cmd list of ref Listnode 0 0
+          seq no type 10 2
+            ref ref Redirlist 10 2
+              tuple Redirlist 10 2
+                seq no type 10 2
+                  :: list of (ref Sys->FD, polymorphic type, Redir) 10 2
+                    tuple (ref Sys->FD, polymorphic type, Redir) 10 2
+                      seq no type 10 2
+                        * ref Sys->FD 10 1
+                          indx big 10 1
+                            name p array of ref Sys->FD 0 0
+                            const (1) int 6 0
+                        seq no type 10 1
+                          name nil polymorphic type 1 0
+                          seq no type 10 1
+                            name r Redir 0 0
+                    name nil polymorphic type 1 0
+            seq no type 10 1
+              name startchan chan of (int, ref Expropagate) 0 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b65 big 0 0
+    const (64) int 6 0
+ecom: 
+const (1) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b65 big 0 0
+    const (72) int 6 0
+ecom: 
+name cmd list of ref Listnode 0 0
+ecom to: 
+* list of ref Listnode 8 0
+  + int 15 0
+    name .b65 big 0 0
+    const (80) int 6 0
+ecom: 
+ref ref Redirlist 10 2
+  tuple Redirlist 10 2
+    seq no type 10 2
+      :: list of (ref Sys->FD, polymorphic type, Redir) 10 2
+        tuple (ref Sys->FD, polymorphic type, Redir) 10 2
+          seq no type 10 2
+            * ref Sys->FD 10 1
+              indx big 10 1
+                name p array of ref Sys->FD 0 0
+                const (1) int 6 0
+            seq no type 10 1
+              name nil polymorphic type 1 0
+              seq no type 10 1
+                name r Redir 0 0
+        name nil polymorphic type 1 0
+ecom to: 
+* ref Redirlist 8 0
+  + int 15 0
+    name .b65 big 0 0
+    const (88) int 6 0
+generate desc for Redirlist
+ecom: 
+tuple Redirlist 10 2
+  seq no type 10 2
+    :: list of (ref Sys->FD, polymorphic type, Redir) 10 2
+      tuple (ref Sys->FD, polymorphic type, Redir) 10 2
+        seq no type 10 2
+          * ref Sys->FD 10 1
+            indx big 10 1
+              name p array of ref Sys->FD 0 0
+              const (1) int 6 0
+          seq no type 10 1
+            name nil polymorphic type 1 0
+            seq no type 10 1
+              name r Redir 0 0
+      name nil polymorphic type 1 0
+ecom to: 
+* Redirlist 8 0
+  name .t64 ref Redirlist 0 0
+ecom: 
+:: list of (ref Sys->FD, polymorphic type, Redir) 10 2
+  tuple (ref Sys->FD, polymorphic type, Redir) 10 2
+    seq no type 10 2
+      * ref Sys->FD 10 1
+        indx big 10 1
+          name p array of ref Sys->FD 0 0
+          const (1) int 6 0
+      seq no type 10 1
+        name nil polymorphic type 1 0
+        seq no type 10 1
+          name r Redir 0 0
+  name nil polymorphic type 1 0
+ecom to: 
+* list of Redirword 8 0
+  + int 15 1
+    adr int 15 1
+      * Redirlist 8 0
+        name .t64 ref Redirlist 0 0
+    const (0) int 6 0
+eacom: 
+tuple (ref Sys->FD, polymorphic type, Redir) 10 2
+  seq no type 10 2
+    * ref Sys->FD 10 1
+      indx big 10 1
+        name p array of ref Sys->FD 0 0
+        const (1) int 6 0
+    seq no type 10 1
+      name nil polymorphic type 1 0
+      seq no type 10 1
+        name r Redir 0 0
+generate desc for (ref Sys->FD, polymorphic type, Redir)
+descmap adt offset 0
+descmap offset 0
+descmap t0 type ref Sys->FD offset 0 (d->offset=0 start=0) returns 0
+descmap t1 type polymorphic type offset 8 (d->offset=8 start=0) returns 8
+descmap adt offset 16
+descmap offset 16
+descmap rtype type int offset 16 (d->offset=0 start=16) returns -1
+descmap fd1 type int offset 20 (d->offset=4 start=16) returns -1
+descmap fd2 type int offset 24 (d->offset=8 start=16) returns -1
+descmap t2 type Redir offset 16 (d->offset=16 start=0) returns -1
+generate desc for (ref Sys->FD, polymorphic type, Redir)
+	desc	$-1,32,"c0"
+ecom: 
+tuple (ref Sys->FD, polymorphic type, Redir) 10 2
+  seq no type 10 2
+    * ref Sys->FD 10 1
+      indx big 10 1
+        name p array of ref Sys->FD 0 0
+        const (1) int 6 0
+    seq no type 10 1
+      name nil polymorphic type 1 0
+      seq no type 10 1
+        name r Redir 0 0
+ecom to: 
+name .b66 (ref Sys->FD, polymorphic type, Redir) 0 0
+ecom: 
+* ref Sys->FD 10 1
+  indx big 10 1
+    name p array of ref Sys->FD 0 0
+    const (1) int 6 0
+ecom to: 
+* ref Sys->FD 0 0
+  + int 13 1
+    adr int 13 1
+      name .b66 (ref Sys->FD, polymorphic type, Redir) 0 0
+    const (0) int 6 0
+eacom: 
+* ref Sys->FD 10 1
+  indx big 10 1
+    name p array of ref Sys->FD 0 0
+    const (1) int 6 0
+generate desc for big
+ecom: 
+indx big 10 1
+  name p array of ref Sys->FD 0 0
+  const (1) int 6 0
+ecom to: 
+name .b63 big 0 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* polymorphic type 0 0
+  + int 13 1
+    adr int 13 1
+      name .b66 (ref Sys->FD, polymorphic type, Redir) 0 0
+    const (8) int 6 0
+ecom: 
+name r Redir 0 0
+ecom to: 
+* Redir 0 0
+  + int 13 1
+    adr int 13 1
+      name .b66 (ref Sys->FD, polymorphic type, Redir) 0 0
+    const (16) int 6 0
+generate desc for Redir
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+name .t67 list of (ref Sys->FD, polymorphic type, Redir) 0 0
+generate desc for (ref Sys->FD, polymorphic type, Redir)
+ecom: 
+= ref Sys->FD 10 1
+  * ref Sys->FD 0 0
+    adr int 13 1
+      name .b66 (ref Sys->FD, polymorphic type, Redir) 0 0
+  name nil ref Sys->FD 1 0
+ecom: 
+name nil ref Sys->FD 1 0
+ecom to: 
+* ref Sys->FD 0 0
+  adr int 13 1
+    name .b66 (ref Sys->FD, polymorphic type, Redir) 0 0
+ecom: 
+= polymorphic type 10 1
+  * polymorphic type 0 0
+    + int 13 1
+      adr int 13 1
+        name .b66 (ref Sys->FD, polymorphic type, Redir) 0 0
+      const t1 (8) int 6 0
+  name nil polymorphic type 1 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* polymorphic type 0 0
+  + int 13 1
+    adr int 13 1
+      name .b66 (ref Sys->FD, polymorphic type, Redir) 0 0
+    const t1 (8) int 6 0
+ecom: 
+= list of (ref Sys->FD, polymorphic type, Redir) 10 1
+  name .t67 list of (ref Sys->FD, polymorphic type, Redir) 0 0
+  name nil list of (ref Sys->FD, polymorphic type, Redir) 1 0
+ecom: 
+name nil list of (ref Sys->FD, polymorphic type, Redir) 1 0
+ecom to: 
+name .t67 list of (ref Sys->FD, polymorphic type, Redir) 0 0
+ecom: 
+= ref Redirlist 10 1
+  name .t64 ref Redirlist 0 0
+  name nil ref Redirlist 1 0
+ecom: 
+name nil ref Redirlist 1 0
+ecom to: 
+name .t64 ref Redirlist 0 0
+ecom: 
+name startchan chan of (int, ref Expropagate) 0 0
+ecom to: 
+* chan of (int, ref Expropagate) 8 0
+  + int 15 0
+    name .b65 big 0 0
+    const (96) int 6 0
+ecom: 
+= ref Sys->FD 10 1
+  * ref Sys->FD 10 1
+    indx big 10 1
+      name p array of ref Sys->FD 0 0
+      const (1) int 6 0
+  name nil polymorphic type 1 0
+eacom: 
+* ref Sys->FD 10 1
+  indx big 10 1
+    name p array of ref Sys->FD 0 0
+    const (1) int 6 0
+generate desc for big
+ecom: 
+indx big 10 1
+  name p array of ref Sys->FD 0 0
+  const (1) int 6 0
+ecom to: 
+name .b65 big 0 0
+ecom: 
+name nil ref Sys->FD 1 0
+ecom to: 
+* ref Sys->FD 8 1
+  name .b65 big 0 0
+ecom: 
+<- (int, ref Expropagate) 10 1
+  name startchan chan of (int, ref Expropagate) 0 0
+generate desc for (int, ref Expropagate)
+ecom: 
+<- (int, ref Expropagate) 10 1
+  name startchan chan of (int, ref Expropagate) 0 0
+ecom to: 
+name .b68 (int, ref Expropagate) 0 0
+ecom: 
+= ref Expropagate 10 1
+  * ref Expropagate 0 0
+    + int 13 1
+      adr int 13 1
+        name .b68 (int, ref Expropagate) 0 0
+      const t1 (8) int 6 0
+  name nil ref Expropagate 1 0
+ecom: 
+name nil ref Expropagate 1 0
+ecom to: 
+* ref Expropagate 0 0
+  + int 13 1
+    adr int 13 1
+      name .b68 (int, ref Expropagate) 0 0
+    const t1 (8) int 6 0
+ecom: 
+* ref Sys->FD 10 1
+  indx big 10 1
+    name p array of ref Sys->FD 0 0
+    const (0) int 6 0
+ecom to: 
+* ref Sys->FD 8 0
+  name .ret int 0 0
+eacom: 
+* ref Sys->FD 10 1
+  indx big 10 1
+    name p array of ref Sys->FD 0 0
+    const (0) int 6 0
+generate desc for big
+ecom: 
+indx big 10 1
+  name p array of ref Sys->FD 0 0
+  const (0) int 6 0
+ecom to: 
+name .b65 big 0 0
+fn: pipecmd
+64: argument ctxt ref Context ref 3
+72: argument cmd list of ref Listnode ref 1
+80: argument redir ref Redir ref 4
+88: local .t62 int ref 1
+96: local p array of ref Sys->FD ref 5
+104: local .b63 big ref 4
+112: local .b65 big ref 4
+120: local r Redir ref 4
+136: local startchan chan of (int, ref Expropagate) ref 3
+144: local .t64 string ref 1
+152: local .t67 list of (ref Sys->FD, polymorphic type, Redir) ref 1
+160: local .b68 (int, ref Expropagate) ref 1
+176: local .b66 (ref Sys->FD, polymorphic type, Redir) ref 1
+generate desc for pipecmd
+descmap offset 0
+descmap ctxt type ref Context offset 64 (d->offset=64 start=0) returns 64
+descmap cmd type list of ref Listnode offset 72 (d->offset=72 start=0) returns 72
+descmap redir type ref Redir offset 80 (d->offset=80 start=0) returns 80
+descmap .t62 type int offset 88 (d->offset=88 start=0) returns -1
+descmap p type array of ref Sys->FD offset 96 (d->offset=96 start=0) returns 96
+descmap .b63 type big offset 104 (d->offset=104 start=0) returns -1
+descmap .b65 type big offset 112 (d->offset=112 start=0) returns -1
+descmap adt offset 120
+descmap offset 120
+descmap rtype type int offset 120 (d->offset=0 start=120) returns -1
+descmap fd1 type int offset 124 (d->offset=4 start=120) returns -1
+descmap fd2 type int offset 128 (d->offset=8 start=120) returns -1
+descmap r type Redir offset 120 (d->offset=120 start=0) returns -1
+descmap startchan type chan of (int, ref Expropagate) offset 136 (d->offset=136 start=0) returns 136
+descmap .t64 type string offset 144 (d->offset=144 start=0) returns 144
+descmap .t67 type list of (ref Sys->FD, polymorphic type, Redir) offset 152 (d->offset=152 start=0) returns 152
+descmap adt offset 160
+descmap offset 160
+descmap t0 type int offset 160 (d->offset=0 start=160) returns -1
+descmap t1 type ref Expropagate offset 168 (d->offset=8 start=160) returns 168
+descmap .b68 type (int, ref Expropagate) offset 160 (d->offset=160 start=0) returns 168
+descmap adt offset 176
+descmap offset 176
+descmap t0 type ref Sys->FD offset 176 (d->offset=0 start=176) returns 176
+descmap t1 type polymorphic type offset 184 (d->offset=8 start=176) returns 184
+descmap adt offset 192
+descmap offset 192
+descmap rtype type int offset 192 (d->offset=0 start=192) returns -1
+descmap fd1 type int offset 196 (d->offset=4 start=192) returns -1
+descmap fd2 type int offset 200 (d->offset=8 start=192) returns -1
+descmap t2 type Redir offset 192 (d->offset=16 start=176) returns -1
+descmap .b66 type (ref Sys->FD, polymorphic type, Redir) offset 176 (d->offset=176 start=0) returns 184
+fncom: glomoperation 3 418628
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* polymorphic type 8 0
+  name .ret int 0 0
+ecom: 
+= list of ref Listnode 10 1
+  name nlist list of ref Listnode 0 0
+  :: list of ref Listnode 10 1
+    ref ref Listnode 10 1
+      tuple Listnode 10 1
+        seq no type 10 1
+          name nil polymorphic type 1 0
+          seq no type 10 1
+            * string 8 0
+              + int 15 1
+                name n ref Node 0 0
+                const word (24) int 6 0
+    name nil polymorphic type 1 0
+ecom: 
+:: list of ref Listnode 10 1
+  ref ref Listnode 10 1
+    tuple Listnode 10 1
+      seq no type 10 1
+        name nil polymorphic type 1 0
+        seq no type 10 1
+          * string 8 0
+            + int 15 1
+              name n ref Node 0 0
+              const word (24) int 6 0
+  name nil polymorphic type 1 0
+ecom to: 
+name nlist list of ref Listnode 0 0
+eacom: 
+ref ref Listnode 10 1
+  tuple Listnode 10 1
+    seq no type 10 1
+      name nil polymorphic type 1 0
+      seq no type 10 1
+        * string 8 0
+          + int 15 1
+            name n ref Node 0 0
+            const word (24) int 6 0
+ecom: 
+ref ref Listnode 10 1
+  tuple Listnode 10 1
+    seq no type 10 1
+      name nil polymorphic type 1 0
+      seq no type 10 1
+        * string 8 0
+          + int 15 1
+            name n ref Node 0 0
+            const word (24) int 6 0
+ecom to: 
+name .t69 ref Listnode 0 0
+generate desc for Listnode
+ecom: 
+tuple Listnode 10 1
+  seq no type 10 1
+    name nil polymorphic type 1 0
+    seq no type 10 1
+      * string 8 0
+        + int 15 1
+          name n ref Node 0 0
+          const word (24) int 6 0
+ecom to: 
+* Listnode 8 0
+  name .t69 ref Listnode 0 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* ref Node 8 0
+  + int 15 1
+    adr int 15 1
+      * Listnode 8 0
+        name .t69 ref Listnode 0 0
+    const (0) int 6 0
+ecom: 
+* string 8 0
+  + int 15 1
+    name n ref Node 0 0
+    const word (24) int 6 0
+ecom to: 
+* string 8 0
+  + int 15 1
+    adr int 15 1
+      * Listnode 8 0
+        name .t69 ref Listnode 0 0
+    const (8) int 6 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+name .t70 list of ref Listnode 0 0
+ecom: 
+= ref Listnode 10 1
+  name .t69 ref Listnode 0 0
+  name nil ref Listnode 1 0
+ecom: 
+name nil ref Listnode 1 0
+ecom to: 
+name .t69 ref Listnode 0 0
+ecom: 
+= list of ref Listnode 10 1
+  name .t70 list of ref Listnode 0 0
+  name nil list of ref Listnode 1 0
+ecom: 
+name nil list of ref Listnode 1 0
+ecom to: 
+name .t70 list of ref Listnode 0 0
+ecom: 
+= list of ref Listnode 10 2
+  name wlist list of ref Listnode 0 0
+  call list of ref Listnode 10 2
+    name glob fn(nl: list of ref Listnode): list of ref Listnode 11 1
+    seq no type 10 2
+      call list of ref Listnode 10 2
+        name glom fn(ctxt: ref Context, n: ref Node, redirs: ref Redirlist, onto: list of ref Listnode): list of ref Listnode 11 1
+        seq no type 10 2
+          name ctxt ref Context 0 0
+          seq no type 10 2
+            * ref Node 8 0
+              + int 15 1
+                name n ref Node 0 0
+                const left (8) int 6 0
+            seq no type 10 2
+              ref ref Redirlist 10 1
+                tuple Redirlist 10 1
+                  seq no type 10 1
+                    name nil polymorphic type 1 0
+              seq no type 10 1
+                name nil list of ref Listnode 1 0
+ecom: 
+call list of ref Listnode 10 2
+  name glob fn(nl: list of ref Listnode): list of ref Listnode 11 1
+  seq no type 10 2
+    call list of ref Listnode 10 2
+      name glom fn(ctxt: ref Context, n: ref Node, redirs: ref Redirlist, onto: list of ref Listnode): list of ref Listnode 11 1
+      seq no type 10 2
+        name ctxt ref Context 0 0
+        seq no type 10 2
+          * ref Node 8 0
+            + int 15 1
+              name n ref Node 0 0
+              const left (8) int 6 0
+          seq no type 10 2
+            ref ref Redirlist 10 1
+              tuple Redirlist 10 1
+                seq no type 10 1
+                  name nil polymorphic type 1 0
+            seq no type 10 1
+              name nil list of ref Listnode 1 0
+ecom to: 
+name wlist list of ref Listnode 0 0
+generate desc for big
+ecom: 
+call list of ref Listnode 10 2
+  name glom fn(ctxt: ref Context, n: ref Node, redirs: ref Redirlist, onto: list of ref Listnode): list of ref Listnode 11 1
+  seq no type 10 2
+    name ctxt ref Context 0 0
+    seq no type 10 2
+      * ref Node 8 0
+        + int 15 1
+          name n ref Node 0 0
+          const left (8) int 6 0
+      seq no type 10 2
+        ref ref Redirlist 10 1
+          tuple Redirlist 10 1
+            seq no type 10 1
+              name nil polymorphic type 1 0
+        seq no type 10 1
+          name nil list of ref Listnode 1 0
+ecom to: 
+name .t70 list of ref Listnode 0 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b72 big 0 0
+    const (64) int 6 0
+ecom: 
+* ref Node 8 0
+  + int 15 1
+    name n ref Node 0 0
+    const left (8) int 6 0
+ecom to: 
+* ref Node 8 0
+  + int 15 0
+    name .b72 big 0 0
+    const (72) int 6 0
+ecom: 
+ref ref Redirlist 10 1
+  tuple Redirlist 10 1
+    seq no type 10 1
+      name nil polymorphic type 1 0
+ecom to: 
+* ref Redirlist 8 0
+  + int 15 0
+    name .b72 big 0 0
+    const (80) int 6 0
+generate desc for Redirlist
+ecom: 
+tuple Redirlist 10 1
+  seq no type 10 1
+    name nil polymorphic type 1 0
+ecom to: 
+* Redirlist 8 0
+  name .t69 ref Redirlist 0 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* list of Redirword 8 0
+  + int 15 1
+    adr int 15 1
+      * Redirlist 8 0
+        name .t69 ref Redirlist 0 0
+    const (0) int 6 0
+ecom: 
+= ref Redirlist 10 1
+  name .t69 ref Redirlist 0 0
+  name nil ref Redirlist 1 0
+ecom: 
+name nil ref Redirlist 1 0
+ecom to: 
+name .t69 ref Redirlist 0 0
+ecom: 
+name nil list of ref Listnode 1 0
+ecom to: 
+* list of ref Listnode 8 0
+  + int 15 0
+    name .b72 big 0 0
+    const (88) int 6 0
+ecom: 
+name .t70 list of ref Listnode 0 0
+ecom to: 
+* list of ref Listnode 8 0
+  + int 15 0
+    name .b71 big 0 0
+    const (64) int 6 0
+ecom: 
+= list of ref Listnode 10 1
+  name .t70 list of ref Listnode 0 0
+  name nil list of ref Listnode 1 0
+ecom: 
+name nil list of ref Listnode 1 0
+ecom to: 
+name .t70 list of ref Listnode 0 0
+eacom: 
+len int 10 1
+  name wlist list of ref Listnode 0 0
+ecom: 
+len int 10 1
+  name wlist list of ref Listnode 0 0
+ecom to: 
+name .t73 int 0 0
+ecom: 
+call no type 10 2
+  name fail fn(ctxt: self ref Context, ename: string, err: string) 11 1
+  seq nothing 10 1
+    name ctxt ref Context 0 0
+    seq no type 10 1
+      const bad redir string 1 0
+      seq no type 10 1
+        const sh: single redirection operand required string 1 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b72 big 0 0
+    const (64) int 6 0
+ecom: 
+const bad redir string 1 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b72 big 0 0
+    const (72) int 6 0
+ecom: 
+const sh: single redirection operand required string 1 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b72 big 0 0
+    const (80) int 6 0
+eacom: 
+* ref Node 10 1
+  hd ref Listnode 10 1
+    name wlist list of ref Listnode 0 0
+ecom: 
+hd ref Listnode 10 1
+  name wlist list of ref Listnode 0 0
+ecom to: 
+name .t70 ref Listnode 0 0
+ecom: 
+= ref Listnode 10 1
+  name .t70 ref Listnode 0 0
+  name nil ref Listnode 1 0
+ecom: 
+name nil ref Listnode 1 0
+ecom to: 
+name .t70 ref Listnode 0 0
+ecom: 
+= ref Sys->FD 10 2
+  name fd ref Sys->FD 0 0
+  call ref Sys->FD 10 2
+    name pipecmd fn(ctxt: ref Context, cmd: list of ref Listnode, redir: ref Redir): ref Sys->FD 11 1
+    seq no type 10 1
+      name ctxt ref Context 0 0
+      seq no type 10 1
+        name wlist list of ref Listnode 0 0
+        seq no type 10 1
+          * ref Redir 8 0
+            + int 15 1
+              name n ref Node 0 0
+              const redir (32) int 6 0
+ecom: 
+call ref Sys->FD 10 2
+  name pipecmd fn(ctxt: ref Context, cmd: list of ref Listnode, redir: ref Redir): ref Sys->FD 11 1
+  seq no type 10 1
+    name ctxt ref Context 0 0
+    seq no type 10 1
+      name wlist list of ref Listnode 0 0
+      seq no type 10 1
+        * ref Redir 8 0
+          + int 15 1
+            name n ref Node 0 0
+            const redir (32) int 6 0
+ecom to: 
+name fd ref Sys->FD 0 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b72 big 0 0
+    const (64) int 6 0
+ecom: 
+name wlist list of ref Listnode 0 0
+ecom to: 
+* list of ref Listnode 8 0
+  + int 15 0
+    name .b72 big 0 0
+    const (72) int 6 0
+ecom: 
+* ref Redir 8 0
+  + int 15 1
+    name n ref Node 0 0
+    const redir (32) int 6 0
+ecom to: 
+* ref Redir 8 0
+  + int 15 0
+    name .b72 big 0 0
+    const (80) int 6 0
+ecom: 
+= list of Redirword 10 2
+  * list of Redirword 8 0
+    name redirs ref Redirlist 0 0
+  :: list of Redirword 10 2
+    tuple Redirword 10 2
+      seq no type 10 2
+        name fd ref Sys->FD 0 0
+        seq no type 10 2
+          name nil polymorphic type 1 0
+          seq no type 10 2
+            tuple (int, int, int) 10 2
+              seq no type 10 2
+                * int 10 1
+                  * ref Redir 8 0
+                    + int 15 1
+                      name n ref Node 0 0
+                      const redir (32) int 6 0
+                seq no type 10 1
+                  * int 8 0
+                    name fd ref Sys->FD 0 0
+                  seq no type 10 1
+                    const (-1) int 6 0
+    * list of Redirword 8 0
+      name redirs ref Redirlist 0 0
+ecom: 
+:: list of Redirword 10 2
+  tuple Redirword 10 2
+    seq no type 10 2
+      name fd ref Sys->FD 0 0
+      seq no type 10 2
+        name nil polymorphic type 1 0
+        seq no type 10 2
+          tuple (int, int, int) 10 2
+            seq no type 10 2
+              * int 10 1
+                * ref Redir 8 0
+                  + int 15 1
+                    name n ref Node 0 0
+                    const redir (32) int 6 0
+              seq no type 10 1
+                * int 8 0
+                  name fd ref Sys->FD 0 0
+                seq no type 10 1
+                  const (-1) int 6 0
+  * list of Redirword 8 0
+    name redirs ref Redirlist 0 0
+ecom to: 
+* list of Redirword 8 0
+  name redirs ref Redirlist 0 0
+eacom: 
+tuple Redirword 10 2
+  seq no type 10 2
+    name fd ref Sys->FD 0 0
+    seq no type 10 2
+      name nil polymorphic type 1 0
+      seq no type 10 2
+        tuple (int, int, int) 10 2
+          seq no type 10 2
+            * int 10 1
+              * ref Redir 8 0
+                + int 15 1
+                  name n ref Node 0 0
+                  const redir (32) int 6 0
+            seq no type 10 1
+              * int 8 0
+                name fd ref Sys->FD 0 0
+              seq no type 10 1
+                const (-1) int 6 0
+generate desc for Redirword
+ecom: 
+tuple Redirword 10 2
+  seq no type 10 2
+    name fd ref Sys->FD 0 0
+    seq no type 10 2
+      name nil polymorphic type 1 0
+      seq no type 10 2
+        tuple (int, int, int) 10 2
+          seq no type 10 2
+            * int 10 1
+              * ref Redir 8 0
+                + int 15 1
+                  name n ref Node 0 0
+                  const redir (32) int 6 0
+            seq no type 10 1
+              * int 8 0
+                name fd ref Sys->FD 0 0
+              seq no type 10 1
+                const (-1) int 6 0
+ecom to: 
+name .b74 Redirword 0 0
+ecom: 
+name fd ref Sys->FD 0 0
+ecom to: 
+* ref Sys->FD 0 0
+  + int 13 1
+    adr int 13 1
+      name .b74 Redirword 0 0
+    const (0) int 6 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* string 0 0
+  + int 13 1
+    adr int 13 1
+      name .b74 Redirword 0 0
+    const (8) int 6 0
+ecom: 
+tuple (int, int, int) 10 2
+  seq no type 10 2
+    * int 10 1
+      * ref Redir 8 0
+        + int 15 1
+          name n ref Node 0 0
+          const redir (32) int 6 0
+    seq no type 10 1
+      * int 8 0
+        name fd ref Sys->FD 0 0
+      seq no type 10 1
+        const (-1) int 6 0
+ecom to: 
+* Redir 0 0
+  + int 13 1
+    adr int 13 1
+      name .b74 Redirword 0 0
+    const (16) int 6 0
+ecom: 
+* int 10 1
+  * ref Redir 8 0
+    + int 15 1
+      name n ref Node 0 0
+      const redir (32) int 6 0
+ecom to: 
+* int 0 0
+  + int 13 1
+    adr int 13 1
+      * Redir 0 0
+        + int 13 1
+          adr int 13 1
+            name .b74 Redirword 0 0
+          const (16) int 6 0
+    const (0) int 6 0
+eacom: 
+* int 10 1
+  * ref Redir 8 0
+    + int 15 1
+      name n ref Node 0 0
+      const redir (32) int 6 0
+ecom: 
+* ref Redir 8 0
+  + int 15 1
+    name n ref Node 0 0
+    const redir (32) int 6 0
+ecom to: 
+name .t70 ref Redir 0 0
+ecom: 
+= ref Redir 10 1
+  name .t70 ref Redir 0 0
+  name nil ref Redir 1 0
+ecom: 
+name nil ref Redir 1 0
+ecom to: 
+name .t70 ref Redir 0 0
+ecom: 
+* int 8 0
+  name fd ref Sys->FD 0 0
+ecom to: 
+* int 0 0
+  + int 13 1
+    adr int 13 1
+      * Redir 0 0
+        + int 13 1
+          adr int 13 1
+            name .b74 Redirword 0 0
+          const (16) int 6 0
+    const (4) int 6 0
+ecom: 
+const (-1) int 6 0
+ecom to: 
+* int 0 0
+  + int 13 1
+    adr int 13 1
+      * Redir 0 0
+        + int 13 1
+          adr int 13 1
+            name .b74 Redirword 0 0
+          const (16) int 6 0
+    const (8) int 6 0
+generate desc for Redirword
+ecom: 
+= ref Sys->FD 10 1
+  * ref Sys->FD 0 0
+    adr int 13 1
+      name .b74 Redirword 0 0
+  name nil ref Sys->FD 1 0
+ecom: 
+name nil ref Sys->FD 1 0
+ecom to: 
+* ref Sys->FD 0 0
+  adr int 13 1
+    name .b74 Redirword 0 0
+ecom: 
+= string 10 1
+  * string 0 0
+    + int 13 1
+      adr int 13 1
+        name .b74 Redirword 0 0
+      const w (8) int 6 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+* string 0 0
+  + int 13 1
+    adr int 13 1
+      name .b74 Redirword 0 0
+    const w (8) int 6 0
+ecom: 
+= list of ref Listnode 10 1
+  name nlist list of ref Listnode 0 0
+  :: list of ref Listnode 10 1
+    ref ref Listnode 10 1
+      tuple Listnode 10 1
+        seq no type 10 1
+          name nil polymorphic type 1 0
+          seq no type 10 1
+            + string 10 1
+              const /fd/ string 1 0
+              cast string 10 1
+                * int 8 0
+                  name fd ref Sys->FD 0 0
+    name nil polymorphic type 1 0
+ecom: 
+:: list of ref Listnode 10 1
+  ref ref Listnode 10 1
+    tuple Listnode 10 1
+      seq no type 10 1
+        name nil polymorphic type 1 0
+        seq no type 10 1
+          + string 10 1
+            const /fd/ string 1 0
+            cast string 10 1
+              * int 8 0
+                name fd ref Sys->FD 0 0
+  name nil polymorphic type 1 0
+ecom to: 
+name nlist list of ref Listnode 0 0
+eacom: 
+ref ref Listnode 10 1
+  tuple Listnode 10 1
+    seq no type 10 1
+      name nil polymorphic type 1 0
+      seq no type 10 1
+        + string 10 1
+          const /fd/ string 1 0
+          cast string 10 1
+            * int 8 0
+              name fd ref Sys->FD 0 0
+ecom: 
+ref ref Listnode 10 1
+  tuple Listnode 10 1
+    seq no type 10 1
+      name nil polymorphic type 1 0
+      seq no type 10 1
+        + string 10 1
+          const /fd/ string 1 0
+          cast string 10 1
+            * int 8 0
+              name fd ref Sys->FD 0 0
+ecom to: 
+name .t70 ref Listnode 0 0
+generate desc for Listnode
+ecom: 
+tuple Listnode 10 1
+  seq no type 10 1
+    name nil polymorphic type 1 0
+    seq no type 10 1
+      + string 10 1
+        const /fd/ string 1 0
+        cast string 10 1
+          * int 8 0
+            name fd ref Sys->FD 0 0
+ecom to: 
+* Listnode 8 0
+  name .t70 ref Listnode 0 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* ref Node 8 0
+  + int 15 1
+    adr int 15 1
+      * Listnode 8 0
+        name .t70 ref Listnode 0 0
+    const (0) int 6 0
+ecom: 
++ string 10 1
+  const /fd/ string 1 0
+  cast string 10 1
+    * int 8 0
+      name fd ref Sys->FD 0 0
+ecom to: 
+* string 8 0
+  + int 15 1
+    adr int 15 1
+      * Listnode 8 0
+        name .t70 ref Listnode 0 0
+    const (8) int 6 0
+eacom: 
+cast string 10 1
+  * int 8 0
+    name fd ref Sys->FD 0 0
+ecom: 
+cast string 10 1
+  * int 8 0
+    name fd ref Sys->FD 0 0
+ecom to: 
+name .t69 string 0 0
+ecom: 
+= string 10 1
+  name .t69 string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name .t69 string 0 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+name .t69 list of ref Listnode 0 0
+ecom: 
+= ref Listnode 10 1
+  name .t70 ref Listnode 0 0
+  name nil ref Listnode 1 0
+ecom: 
+name nil ref Listnode 1 0
+ecom to: 
+name .t70 ref Listnode 0 0
+ecom: 
+= list of ref Listnode 10 1
+  name .t69 list of ref Listnode 0 0
+  name nil list of ref Listnode 1 0
+ecom: 
+name nil list of ref Listnode 1 0
+ecom to: 
+name .t69 list of ref Listnode 0 0
+ecom: 
+= ref Sys->FD 10 1
+  name fd ref Sys->FD 0 0
+  name nil ref Sys->FD 1 0
+ecom: 
+name nil ref Sys->FD 1 0
+ecom to: 
+name fd ref Sys->FD 0 0
+ecom: 
+= list of Redirword 10 2
+  * list of Redirword 8 0
+    name redirs ref Redirlist 0 0
+  :: list of Redirword 10 2
+    tuple Redirword 10 2
+      seq no type 10 2
+        name nil polymorphic type 1 0
+        seq no type 10 2
+          * string 10 1
+            + int 10 1
+              hd ref Listnode 10 1
+                name wlist list of ref Listnode 0 0
+              const word (8) int 6 0
+          seq no type 10 1
+            * Redir 10 1
+              * ref Redir 8 0
+                + int 15 1
+                  name n ref Node 0 0
+                  const redir (32) int 6 0
+    * list of Redirword 8 0
+      name redirs ref Redirlist 0 0
+ecom: 
+:: list of Redirword 10 2
+  tuple Redirword 10 2
+    seq no type 10 2
+      name nil polymorphic type 1 0
+      seq no type 10 2
+        * string 10 1
+          + int 10 1
+            hd ref Listnode 10 1
+              name wlist list of ref Listnode 0 0
+            const word (8) int 6 0
+        seq no type 10 1
+          * Redir 10 1
+            * ref Redir 8 0
+              + int 15 1
+                name n ref Node 0 0
+                const redir (32) int 6 0
+  * list of Redirword 8 0
+    name redirs ref Redirlist 0 0
+ecom to: 
+* list of Redirword 8 0
+  name redirs ref Redirlist 0 0
+eacom: 
+tuple Redirword 10 2
+  seq no type 10 2
+    name nil polymorphic type 1 0
+    seq no type 10 2
+      * string 10 1
+        + int 10 1
+          hd ref Listnode 10 1
+            name wlist list of ref Listnode 0 0
+          const word (8) int 6 0
+      seq no type 10 1
+        * Redir 10 1
+          * ref Redir 8 0
+            + int 15 1
+              name n ref Node 0 0
+              const redir (32) int 6 0
+generate desc for Redirword
+ecom: 
+tuple Redirword 10 2
+  seq no type 10 2
+    name nil polymorphic type 1 0
+    seq no type 10 2
+      * string 10 1
+        + int 10 1
+          hd ref Listnode 10 1
+            name wlist list of ref Listnode 0 0
+          const word (8) int 6 0
+      seq no type 10 1
+        * Redir 10 1
+          * ref Redir 8 0
+            + int 15 1
+              name n ref Node 0 0
+              const redir (32) int 6 0
+ecom to: 
+name .b74 Redirword 0 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* ref Sys->FD 0 0
+  + int 13 1
+    adr int 13 1
+      name .b74 Redirword 0 0
+    const (0) int 6 0
+ecom: 
+* string 10 1
+  + int 10 1
+    hd ref Listnode 10 1
+      name wlist list of ref Listnode 0 0
+    const word (8) int 6 0
+ecom to: 
+* string 0 0
+  + int 13 1
+    adr int 13 1
+      name .b74 Redirword 0 0
+    const (8) int 6 0
+eacom: 
+* string 10 1
+  + int 10 1
+    hd ref Listnode 10 1
+      name wlist list of ref Listnode 0 0
+    const word (8) int 6 0
+ecom: 
+hd ref Listnode 10 1
+  name wlist list of ref Listnode 0 0
+ecom to: 
+name .t70 ref Listnode 0 0
+ecom: 
+= ref Listnode 10 1
+  name .t70 ref Listnode 0 0
+  name nil ref Listnode 1 0
+ecom: 
+name nil ref Listnode 1 0
+ecom to: 
+name .t70 ref Listnode 0 0
+ecom: 
+* Redir 10 1
+  * ref Redir 8 0
+    + int 15 1
+      name n ref Node 0 0
+      const redir (32) int 6 0
+ecom to: 
+* Redir 0 0
+  + int 13 1
+    adr int 13 1
+      name .b74 Redirword 0 0
+    const (16) int 6 0
+eacom: 
+* Redir 10 1
+  * ref Redir 8 0
+    + int 15 1
+      name n ref Node 0 0
+      const redir (32) int 6 0
+ecom: 
+* ref Redir 8 0
+  + int 15 1
+    name n ref Node 0 0
+    const redir (32) int 6 0
+ecom to: 
+name .t70 ref Redir 0 0
+generate desc for Redir
+ecom: 
+= ref Redir 10 1
+  name .t70 ref Redir 0 0
+  name nil ref Redir 1 0
+ecom: 
+name nil ref Redir 1 0
+ecom to: 
+name .t70 ref Redir 0 0
+generate desc for Redirword
+ecom: 
+= ref Sys->FD 10 1
+  * ref Sys->FD 0 0
+    adr int 13 1
+      name .b74 Redirword 0 0
+  name nil ref Sys->FD 1 0
+ecom: 
+name nil ref Sys->FD 1 0
+ecom to: 
+* ref Sys->FD 0 0
+  adr int 13 1
+    name .b74 Redirword 0 0
+ecom: 
+= string 10 1
+  * string 0 0
+    + int 13 1
+      adr int 13 1
+        name .b74 Redirword 0 0
+      const w (8) int 6 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+* string 0 0
+  + int 13 1
+    adr int 13 1
+      name .b74 Redirword 0 0
+    const w (8) int 6 0
+ecom: 
+= list of ref Listnode 10 1
+  name wlist list of ref Listnode 0 0
+  name nil list of ref Listnode 1 0
+ecom: 
+name nil list of ref Listnode 1 0
+ecom to: 
+name wlist list of ref Listnode 0 0
+ecom: 
+= list of Redirword 10 1
+  * list of Redirword 8 0
+    name redirs ref Redirlist 0 0
+  :: list of Redirword 10 1
+    tuple Redirword 10 1
+      seq no type 10 1
+        name nil polymorphic type 1 0
+        seq no type 10 1
+          const  string 1 0
+          seq no type 10 1
+            * Redir 10 1
+              * ref Redir 8 0
+                + int 15 1
+                  name n ref Node 0 0
+                  const redir (32) int 6 0
+    * list of Redirword 8 0
+      name redirs ref Redirlist 0 0
+ecom: 
+:: list of Redirword 10 1
+  tuple Redirword 10 1
+    seq no type 10 1
+      name nil polymorphic type 1 0
+      seq no type 10 1
+        const  string 1 0
+        seq no type 10 1
+          * Redir 10 1
+            * ref Redir 8 0
+              + int 15 1
+                name n ref Node 0 0
+                const redir (32) int 6 0
+  * list of Redirword 8 0
+    name redirs ref Redirlist 0 0
+ecom to: 
+* list of Redirword 8 0
+  name redirs ref Redirlist 0 0
+eacom: 
+tuple Redirword 10 1
+  seq no type 10 1
+    name nil polymorphic type 1 0
+    seq no type 10 1
+      const  string 1 0
+      seq no type 10 1
+        * Redir 10 1
+          * ref Redir 8 0
+            + int 15 1
+              name n ref Node 0 0
+              const redir (32) int 6 0
+generate desc for Redirword
+ecom: 
+tuple Redirword 10 1
+  seq no type 10 1
+    name nil polymorphic type 1 0
+    seq no type 10 1
+      const  string 1 0
+      seq no type 10 1
+        * Redir 10 1
+          * ref Redir 8 0
+            + int 15 1
+              name n ref Node 0 0
+              const redir (32) int 6 0
+ecom to: 
+name .b74 Redirword 0 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* ref Sys->FD 0 0
+  + int 13 1
+    adr int 13 1
+      name .b74 Redirword 0 0
+    const (0) int 6 0
+ecom: 
+const  string 1 0
+ecom to: 
+* string 0 0
+  + int 13 1
+    adr int 13 1
+      name .b74 Redirword 0 0
+    const (8) int 6 0
+ecom: 
+* Redir 10 1
+  * ref Redir 8 0
+    + int 15 1
+      name n ref Node 0 0
+      const redir (32) int 6 0
+ecom to: 
+* Redir 0 0
+  + int 13 1
+    adr int 13 1
+      name .b74 Redirword 0 0
+    const (16) int 6 0
+eacom: 
+* Redir 10 1
+  * ref Redir 8 0
+    + int 15 1
+      name n ref Node 0 0
+      const redir (32) int 6 0
+ecom: 
+* ref Redir 8 0
+  + int 15 1
+    name n ref Node 0 0
+    const redir (32) int 6 0
+ecom to: 
+name .t70 ref Redir 0 0
+generate desc for Redir
+ecom: 
+= ref Redir 10 1
+  name .t70 ref Redir 0 0
+  name nil ref Redir 1 0
+ecom: 
+name nil ref Redir 1 0
+ecom to: 
+name .t70 ref Redir 0 0
+generate desc for Redirword
+ecom: 
+= ref Sys->FD 10 1
+  * ref Sys->FD 0 0
+    adr int 13 1
+      name .b74 Redirword 0 0
+  name nil ref Sys->FD 1 0
+ecom: 
+name nil ref Sys->FD 1 0
+ecom to: 
+* ref Sys->FD 0 0
+  adr int 13 1
+    name .b74 Redirword 0 0
+ecom: 
+= string 10 1
+  * string 0 0
+    + int 13 1
+      adr int 13 1
+        name .b74 Redirword 0 0
+      const w (8) int 6 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+* string 0 0
+  + int 13 1
+    adr int 13 1
+      name .b74 Redirword 0 0
+    const w (8) int 6 0
+ecom: 
+= list of ref Listnode 10 2
+  name nlist list of ref Listnode 0 0
+  call list of ref Listnode 10 2
+    name glom fn(ctxt: ref Context, n: ref Node, redirs: ref Redirlist, onto: list of ref Listnode): list of ref Listnode 11 1
+    seq no type 10 1
+      name ctxt ref Context 0 0
+      seq no type 10 1
+        * ref Node 8 0
+          + int 15 1
+            name n ref Node 0 0
+            const left (8) int 6 0
+        seq no type 10 1
+          name redirs ref Redirlist 0 0
+          seq no type 10 1
+            name nil list of ref Listnode 1 0
+ecom: 
+call list of ref Listnode 10 2
+  name glom fn(ctxt: ref Context, n: ref Node, redirs: ref Redirlist, onto: list of ref Listnode): list of ref Listnode 11 1
+  seq no type 10 1
+    name ctxt ref Context 0 0
+    seq no type 10 1
+      * ref Node 8 0
+        + int 15 1
+          name n ref Node 0 0
+          const left (8) int 6 0
+      seq no type 10 1
+        name redirs ref Redirlist 0 0
+        seq no type 10 1
+          name nil list of ref Listnode 1 0
+ecom to: 
+name nlist list of ref Listnode 0 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b72 big 0 0
+    const (64) int 6 0
+ecom: 
+* ref Node 8 0
+  + int 15 1
+    name n ref Node 0 0
+    const left (8) int 6 0
+ecom to: 
+* ref Node 8 0
+  + int 15 0
+    name .b72 big 0 0
+    const (72) int 6 0
+ecom: 
+name redirs ref Redirlist 0 0
+ecom to: 
+* ref Redirlist 8 0
+  + int 15 0
+    name .b72 big 0 0
+    const (80) int 6 0
+ecom: 
+name nil list of ref Listnode 1 0
+ecom to: 
+* list of ref Listnode 8 0
+  + int 15 0
+    name .b72 big 0 0
+    const (88) int 6 0
+ecom: 
+= list of ref Listnode 10 3
+  name nlist list of ref Listnode 0 0
+  call list of ref Listnode 10 3
+    name concat fn(ctxt: ref Context, nl1: list of ref Listnode, nl2: list of ref Listnode): list of ref Listnode 11 1
+    seq no type 10 3
+      name ctxt ref Context 0 0
+      seq no type 10 3
+        call list of ref Listnode 10 2
+          name glom fn(ctxt: ref Context, n: ref Node, redirs: ref Redirlist, onto: list of ref Listnode): list of ref Listnode 11 1
+          seq no type 10 1
+            name ctxt ref Context 0 0
+            seq no type 10 1
+              * ref Node 8 0
+                + int 15 1
+                  name n ref Node 0 0
+                  const left (8) int 6 0
+              seq no type 10 1
+                name redirs ref Redirlist 0 0
+                seq no type 10 1
+                  name nil list of ref Listnode 1 0
+        seq no type 10 2
+          call list of ref Listnode 10 2
+            name glom fn(ctxt: ref Context, n: ref Node, redirs: ref Redirlist, onto: list of ref Listnode): list of ref Listnode 11 1
+            seq no type 10 1
+              name ctxt ref Context 0 0
+              seq no type 10 1
+                * ref Node 8 0
+                  + int 15 1
+                    name n ref Node 0 0
+                    const right (16) int 6 0
+                seq no type 10 1
+                  name redirs ref Redirlist 0 0
+                  seq no type 10 1
+                    name nil list of ref Listnode 1 0
+ecom: 
+call list of ref Listnode 10 3
+  name concat fn(ctxt: ref Context, nl1: list of ref Listnode, nl2: list of ref Listnode): list of ref Listnode 11 1
+  seq no type 10 3
+    name ctxt ref Context 0 0
+    seq no type 10 3
+      call list of ref Listnode 10 2
+        name glom fn(ctxt: ref Context, n: ref Node, redirs: ref Redirlist, onto: list of ref Listnode): list of ref Listnode 11 1
+        seq no type 10 1
+          name ctxt ref Context 0 0
+          seq no type 10 1
+            * ref Node 8 0
+              + int 15 1
+                name n ref Node 0 0
+                const left (8) int 6 0
+            seq no type 10 1
+              name redirs ref Redirlist 0 0
+              seq no type 10 1
+                name nil list of ref Listnode 1 0
+      seq no type 10 2
+        call list of ref Listnode 10 2
+          name glom fn(ctxt: ref Context, n: ref Node, redirs: ref Redirlist, onto: list of ref Listnode): list of ref Listnode 11 1
+          seq no type 10 1
+            name ctxt ref Context 0 0
+            seq no type 10 1
+              * ref Node 8 0
+                + int 15 1
+                  name n ref Node 0 0
+                  const right (16) int 6 0
+              seq no type 10 1
+                name redirs ref Redirlist 0 0
+                seq no type 10 1
+                  name nil list of ref Listnode 1 0
+ecom to: 
+name nlist list of ref Listnode 0 0
+generate desc for big
+ecom: 
+call list of ref Listnode 10 2
+  name glom fn(ctxt: ref Context, n: ref Node, redirs: ref Redirlist, onto: list of ref Listnode): list of ref Listnode 11 1
+  seq no type 10 1
+    name ctxt ref Context 0 0
+    seq no type 10 1
+      * ref Node 8 0
+        + int 15 1
+          name n ref Node 0 0
+          const left (8) int 6 0
+      seq no type 10 1
+        name redirs ref Redirlist 0 0
+        seq no type 10 1
+          name nil list of ref Listnode 1 0
+ecom to: 
+name .t70 list of ref Listnode 0 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b71 big 0 0
+    const (64) int 6 0
+ecom: 
+* ref Node 8 0
+  + int 15 1
+    name n ref Node 0 0
+    const left (8) int 6 0
+ecom to: 
+* ref Node 8 0
+  + int 15 0
+    name .b71 big 0 0
+    const (72) int 6 0
+ecom: 
+name redirs ref Redirlist 0 0
+ecom to: 
+* ref Redirlist 8 0
+  + int 15 0
+    name .b71 big 0 0
+    const (80) int 6 0
+ecom: 
+name nil list of ref Listnode 1 0
+ecom to: 
+* list of ref Listnode 8 0
+  + int 15 0
+    name .b71 big 0 0
+    const (88) int 6 0
+ecom: 
+call list of ref Listnode 10 2
+  name glom fn(ctxt: ref Context, n: ref Node, redirs: ref Redirlist, onto: list of ref Listnode): list of ref Listnode 11 1
+  seq no type 10 1
+    name ctxt ref Context 0 0
+    seq no type 10 1
+      * ref Node 8 0
+        + int 15 1
+          name n ref Node 0 0
+          const right (16) int 6 0
+      seq no type 10 1
+        name redirs ref Redirlist 0 0
+        seq no type 10 1
+          name nil list of ref Listnode 1 0
+ecom to: 
+name .t69 list of ref Listnode 0 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b71 big 0 0
+    const (64) int 6 0
+ecom: 
+* ref Node 8 0
+  + int 15 1
+    name n ref Node 0 0
+    const right (16) int 6 0
+ecom to: 
+* ref Node 8 0
+  + int 15 0
+    name .b71 big 0 0
+    const (72) int 6 0
+ecom: 
+name redirs ref Redirlist 0 0
+ecom to: 
+* ref Redirlist 8 0
+  + int 15 0
+    name .b71 big 0 0
+    const (80) int 6 0
+ecom: 
+name nil list of ref Listnode 1 0
+ecom to: 
+* list of ref Listnode 8 0
+  + int 15 0
+    name .b71 big 0 0
+    const (88) int 6 0
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b72 big 0 0
+    const (64) int 6 0
+ecom: 
+name .t70 list of ref Listnode 0 0
+ecom to: 
+* list of ref Listnode 8 0
+  + int 15 0
+    name .b72 big 0 0
+    const (72) int 6 0
+ecom: 
+= list of ref Listnode 10 1
+  name .t70 list of ref Listnode 0 0
+  name nil list of ref Listnode 1 0
+ecom: 
+name nil list of ref Listnode 1 0
+ecom to: 
+name .t70 list of ref Listnode 0 0
+ecom: 
+name .t69 list of ref Listnode 0 0
+ecom to: 
+* list of ref Listnode 8 0
+  + int 15 0
+    name .b72 big 0 0
+    const (80) int 6 0
+ecom: 
+= list of ref Listnode 10 1
+  name .t69 list of ref Listnode 0 0
+  name nil list of ref Listnode 1 0
+ecom: 
+name nil list of ref Listnode 1 0
+ecom to: 
+name .t69 list of ref Listnode 0 0
+ecom: 
+= list of ref Listnode 10 2
+  name arg list of ref Listnode 0 0
+  call list of ref Listnode 10 2
+    name glom fn(ctxt: ref Context, n: ref Node, redirs: ref Redirlist, onto: list of ref Listnode): list of ref Listnode 11 1
+    seq no type 10 2
+      name ctxt ref Context 0 0
+      seq no type 10 2
+        * ref Node 8 0
+          + int 15 1
+            name n ref Node 0 0
+            const left (8) int 6 0
+        seq no type 10 2
+          ref ref Redirlist 10 1
+            tuple Redirlist 10 1
+              seq no type 10 1
+                name nil polymorphic type 1 0
+          seq no type 10 1
+            name nil list of ref Listnode 1 0
+ecom: 
+call list of ref Listnode 10 2
+  name glom fn(ctxt: ref Context, n: ref Node, redirs: ref Redirlist, onto: list of ref Listnode): list of ref Listnode 11 1
+  seq no type 10 2
+    name ctxt ref Context 0 0
+    seq no type 10 2
+      * ref Node 8 0
+        + int 15 1
+          name n ref Node 0 0
+          const left (8) int 6 0
+      seq no type 10 2
+        ref ref Redirlist 10 1
+          tuple Redirlist 10 1
+            seq no type 10 1
+              name nil polymorphic type 1 0
+        seq no type 10 1
+          name nil list of ref Listnode 1 0
+ecom to: 
+name arg list of ref Listnode 0 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b72 big 0 0
+    const (64) int 6 0
+ecom: 
+* ref Node 8 0
+  + int 15 1
+    name n ref Node 0 0
+    const left (8) int 6 0
+ecom to: 
+* ref Node 8 0
+  + int 15 0
+    name .b72 big 0 0
+    const (72) int 6 0
+ecom: 
+ref ref Redirlist 10 1
+  tuple Redirlist 10 1
+    seq no type 10 1
+      name nil polymorphic type 1 0
+ecom to: 
+* ref Redirlist 8 0
+  + int 15 0
+    name .b72 big 0 0
+    const (80) int 6 0
+generate desc for Redirlist
+ecom: 
+tuple Redirlist 10 1
+  seq no type 10 1
+    name nil polymorphic type 1 0
+ecom to: 
+* Redirlist 8 0
+  name .t70 ref Redirlist 0 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* list of Redirword 8 0
+  + int 15 1
+    adr int 15 1
+      * Redirlist 8 0
+        name .t70 ref Redirlist 0 0
+    const (0) int 6 0
+ecom: 
+= ref Redirlist 10 1
+  name .t70 ref Redirlist 0 0
+  name nil ref Redirlist 1 0
+ecom: 
+name nil ref Redirlist 1 0
+ecom to: 
+name .t70 ref Redirlist 0 0
+ecom: 
+name nil list of ref Listnode 1 0
+ecom to: 
+* list of ref Listnode 8 0
+  + int 15 0
+    name .b72 big 0 0
+    const (88) int 6 0
+eacom: 
+len int 10 1
+  name arg list of ref Listnode 0 0
+ecom: 
+len int 10 1
+  name arg list of ref Listnode 0 0
+ecom to: 
+name .t73 int 0 0
+eacom: 
+* ref Node 10 1
+  hd ref Listnode 10 1
+    name arg list of ref Listnode 0 0
+ecom: 
+hd ref Listnode 10 1
+  name arg list of ref Listnode 0 0
+ecom to: 
+name .t70 ref Listnode 0 0
+ecom: 
+= ref Listnode 10 1
+  name .t70 ref Listnode 0 0
+  name nil ref Listnode 1 0
+ecom: 
+name nil ref Listnode 1 0
+ecom to: 
+name .t70 ref Listnode 0 0
+ecom: 
+= list of ref Listnode 10 2
+  name nlist list of ref Listnode 0 0
+  call list of ref Listnode 10 2
+    name subsbuiltin fn(ctxt: ref Context, n: ref Node): list of ref Listnode 11 1
+    seq no type 10 1
+      name ctxt ref Context 0 0
+      seq no type 10 1
+        * ref Node 10 1
+          + int 10 1
+            * ref Node 10 1
+              hd ref Listnode 10 1
+                name arg list of ref Listnode 0 0
+            const left (8) int 6 0
+ecom: 
+call list of ref Listnode 10 2
+  name subsbuiltin fn(ctxt: ref Context, n: ref Node): list of ref Listnode 11 1
+  seq no type 10 1
+    name ctxt ref Context 0 0
+    seq no type 10 1
+      * ref Node 10 1
+        + int 10 1
+          * ref Node 10 1
+            hd ref Listnode 10 1
+              name arg list of ref Listnode 0 0
+          const left (8) int 6 0
+ecom to: 
+name nlist list of ref Listnode 0 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b72 big 0 0
+    const (64) int 6 0
+ecom: 
+* ref Node 10 1
+  + int 10 1
+    * ref Node 10 1
+      hd ref Listnode 10 1
+        name arg list of ref Listnode 0 0
+    const left (8) int 6 0
+ecom to: 
+* ref Node 8 0
+  + int 15 0
+    name .b72 big 0 0
+    const (72) int 6 0
+eacom: 
+* ref Node 10 1
+  + int 10 1
+    * ref Node 10 1
+      hd ref Listnode 10 1
+        name arg list of ref Listnode 0 0
+    const left (8) int 6 0
+ecom: 
+* ref Node 10 1
+  hd ref Listnode 10 1
+    name arg list of ref Listnode 0 0
+ecom to: 
+name .t70 ref Node 0 0
+eacom: 
+* ref Node 10 1
+  hd ref Listnode 10 1
+    name arg list of ref Listnode 0 0
+ecom: 
+hd ref Listnode 10 1
+  name arg list of ref Listnode 0 0
+ecom to: 
+name .t70 ref Listnode 0 0
+ecom: 
+= ref Node 10 1
+  name .t70 ref Node 0 0
+  name nil ref Node 1 0
+ecom: 
+name nil ref Node 1 0
+ecom to: 
+name .t70 ref Node 0 0
+eacom: 
+len int 10 1
+  name arg list of ref Listnode 0 0
+ecom: 
+len int 10 1
+  name arg list of ref Listnode 0 0
+ecom to: 
+name .t73 int 0 0
+eacom: 
+* string 10 1
+  + int 10 1
+    hd ref Listnode 10 1
+      name arg list of ref Listnode 0 0
+    const word (8) int 6 0
+ecom: 
+hd ref Listnode 10 1
+  name arg list of ref Listnode 0 0
+ecom to: 
+name .t70 ref Listnode 0 0
+ecom: 
+= ref Listnode 10 1
+  name .t70 ref Listnode 0 0
+  name nil ref Listnode 1 0
+ecom: 
+name nil ref Listnode 1 0
+ecom to: 
+name .t70 ref Listnode 0 0
+ecom: 
+call no type 10 2
+  name fail fn(ctxt: self ref Context, ename: string, err: string) 11 1
+  seq nothing 10 1
+    name ctxt ref Context 0 0
+    seq no type 10 1
+      const bad $ arg string 1 0
+      seq no type 10 1
+        const sh: bad variable name string 1 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b72 big 0 0
+    const (64) int 6 0
+ecom: 
+const bad $ arg string 1 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b72 big 0 0
+    const (72) int 6 0
+ecom: 
+const sh: bad variable name string 1 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b72 big 0 0
+    const (80) int 6 0
+ecom: 
+= list of ref Listnode 10 2
+  name nlist list of ref Listnode 0 0
+  call list of ref Listnode 10 2
+    name get fn(ctxt: self ref Context, name: string): list of ref Listnode 11 1
+    seq nothing 10 2
+      name ctxt ref Context 0 0
+      seq no type 10 2
+        call string 10 2
+          name deglob fn(s: string): string 11 1
+          seq no type 10 1
+            * string 10 1
+              + int 10 1
+                hd ref Listnode 10 1
+                  name arg list of ref Listnode 0 0
+                const word (8) int 6 0
+ecom: 
+call list of ref Listnode 10 2
+  name get fn(ctxt: self ref Context, name: string): list of ref Listnode 11 1
+  seq nothing 10 2
+    name ctxt ref Context 0 0
+    seq no type 10 2
+      call string 10 2
+        name deglob fn(s: string): string 11 1
+        seq no type 10 1
+          * string 10 1
+            + int 10 1
+              hd ref Listnode 10 1
+                name arg list of ref Listnode 0 0
+              const word (8) int 6 0
+ecom to: 
+name nlist list of ref Listnode 0 0
+generate desc for big
+ecom: 
+call string 10 2
+  name deglob fn(s: string): string 11 1
+  seq no type 10 1
+    * string 10 1
+      + int 10 1
+        hd ref Listnode 10 1
+          name arg list of ref Listnode 0 0
+        const word (8) int 6 0
+ecom to: 
+name .t70 string 0 0
+generate desc for big
+ecom: 
+* string 10 1
+  + int 10 1
+    hd ref Listnode 10 1
+      name arg list of ref Listnode 0 0
+    const word (8) int 6 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b71 big 0 0
+    const (64) int 6 0
+eacom: 
+* string 10 1
+  + int 10 1
+    hd ref Listnode 10 1
+      name arg list of ref Listnode 0 0
+    const word (8) int 6 0
+ecom: 
+hd ref Listnode 10 1
+  name arg list of ref Listnode 0 0
+ecom to: 
+name .t69 ref Listnode 0 0
+ecom: 
+= ref Listnode 10 1
+  name .t69 ref Listnode 0 0
+  name nil ref Listnode 1 0
+ecom: 
+name nil ref Listnode 1 0
+ecom to: 
+name .t69 ref Listnode 0 0
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b72 big 0 0
+    const (64) int 6 0
+ecom: 
+name .t70 string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b72 big 0 0
+    const (72) int 6 0
+ecom: 
+= string 10 1
+  name .t70 string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name .t70 string 0 0
+ecom: 
+= list of ref Listnode 10 1
+  name nlist list of ref Listnode 0 0
+  :: list of ref Listnode 10 1
+    ref ref Listnode 10 1
+      tuple Listnode 10 1
+        seq no type 10 1
+          name nil polymorphic type 1 0
+          seq no type 10 1
+            cast string 10 1
+              len int 10 1
+                name nlist list of ref Listnode 0 0
+    name nil polymorphic type 1 0
+ecom: 
+:: list of ref Listnode 10 1
+  ref ref Listnode 10 1
+    tuple Listnode 10 1
+      seq no type 10 1
+        name nil polymorphic type 1 0
+        seq no type 10 1
+          cast string 10 1
+            len int 10 1
+              name nlist list of ref Listnode 0 0
+  name nil polymorphic type 1 0
+ecom to: 
+name nlist list of ref Listnode 0 0
+eacom: 
+ref ref Listnode 10 1
+  tuple Listnode 10 1
+    seq no type 10 1
+      name nil polymorphic type 1 0
+      seq no type 10 1
+        cast string 10 1
+          len int 10 1
+            name nlist list of ref Listnode 0 0
+ecom: 
+ref ref Listnode 10 1
+  tuple Listnode 10 1
+    seq no type 10 1
+      name nil polymorphic type 1 0
+      seq no type 10 1
+        cast string 10 1
+          len int 10 1
+            name nlist list of ref Listnode 0 0
+ecom to: 
+name .t70 ref Listnode 0 0
+generate desc for Listnode
+ecom: 
+tuple Listnode 10 1
+  seq no type 10 1
+    name nil polymorphic type 1 0
+    seq no type 10 1
+      cast string 10 1
+        len int 10 1
+          name nlist list of ref Listnode 0 0
+ecom to: 
+* Listnode 8 0
+  name .t70 ref Listnode 0 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* ref Node 8 0
+  + int 15 1
+    adr int 15 1
+      * Listnode 8 0
+        name .t70 ref Listnode 0 0
+    const (0) int 6 0
+ecom: 
+cast string 10 1
+  len int 10 1
+    name nlist list of ref Listnode 0 0
+ecom to: 
+* string 8 0
+  + int 15 1
+    adr int 15 1
+      * Listnode 8 0
+        name .t70 ref Listnode 0 0
+    const (8) int 6 0
+eacom: 
+len int 10 1
+  name nlist list of ref Listnode 0 0
+ecom: 
+len int 10 1
+  name nlist list of ref Listnode 0 0
+ecom to: 
+name .t73 int 0 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+name .t69 list of ref Listnode 0 0
+ecom: 
+= ref Listnode 10 1
+  name .t70 ref Listnode 0 0
+  name nil ref Listnode 1 0
+ecom: 
+name nil ref Listnode 1 0
+ecom to: 
+name .t70 ref Listnode 0 0
+ecom: 
+= list of ref Listnode 10 1
+  name .t69 list of ref Listnode 0 0
+  name nil list of ref Listnode 1 0
+ecom: 
+name nil list of ref Listnode 1 0
+ecom to: 
+name .t69 list of ref Listnode 0 0
+ecom: 
+= list of ref Listnode 10 2
+  name nlist list of ref Listnode 0 0
+  :: list of ref Listnode 10 2
+    ref ref Listnode 10 2
+      tuple Listnode 10 2
+        seq no type 10 2
+          name nil polymorphic type 1 0
+          seq no type 10 2
+            call string 10 2
+              name squash fn(l: list of string, sep: string): string 11 1
+              seq no type 10 2
+                call list of string 10 2
+                  name list2stringlist fn(nl: list of ref Listnode): list of string 11 1
+                  seq no type 10 1
+                    name nlist list of ref Listnode 0 0
+                seq no type 10 1
+                  const   string 1 0
+    name nil polymorphic type 1 0
+ecom: 
+:: list of ref Listnode 10 2
+  ref ref Listnode 10 2
+    tuple Listnode 10 2
+      seq no type 10 2
+        name nil polymorphic type 1 0
+        seq no type 10 2
+          call string 10 2
+            name squash fn(l: list of string, sep: string): string 11 1
+            seq no type 10 2
+              call list of string 10 2
+                name list2stringlist fn(nl: list of ref Listnode): list of string 11 1
+                seq no type 10 1
+                  name nlist list of ref Listnode 0 0
+              seq no type 10 1
+                const   string 1 0
+  name nil polymorphic type 1 0
+ecom to: 
+name nlist list of ref Listnode 0 0
+eacom: 
+ref ref Listnode 10 2
+  tuple Listnode 10 2
+    seq no type 10 2
+      name nil polymorphic type 1 0
+      seq no type 10 2
+        call string 10 2
+          name squash fn(l: list of string, sep: string): string 11 1
+          seq no type 10 2
+            call list of string 10 2
+              name list2stringlist fn(nl: list of ref Listnode): list of string 11 1
+              seq no type 10 1
+                name nlist list of ref Listnode 0 0
+            seq no type 10 1
+              const   string 1 0
+ecom: 
+ref ref Listnode 10 2
+  tuple Listnode 10 2
+    seq no type 10 2
+      name nil polymorphic type 1 0
+      seq no type 10 2
+        call string 10 2
+          name squash fn(l: list of string, sep: string): string 11 1
+          seq no type 10 2
+            call list of string 10 2
+              name list2stringlist fn(nl: list of ref Listnode): list of string 11 1
+              seq no type 10 1
+                name nlist list of ref Listnode 0 0
+            seq no type 10 1
+              const   string 1 0
+ecom to: 
+name .t70 ref Listnode 0 0
+generate desc for Listnode
+ecom: 
+tuple Listnode 10 2
+  seq no type 10 2
+    name nil polymorphic type 1 0
+    seq no type 10 2
+      call string 10 2
+        name squash fn(l: list of string, sep: string): string 11 1
+        seq no type 10 2
+          call list of string 10 2
+            name list2stringlist fn(nl: list of ref Listnode): list of string 11 1
+            seq no type 10 1
+              name nlist list of ref Listnode 0 0
+          seq no type 10 1
+            const   string 1 0
+ecom to: 
+* Listnode 8 0
+  name .t70 ref Listnode 0 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* ref Node 8 0
+  + int 15 1
+    adr int 15 1
+      * Listnode 8 0
+        name .t70 ref Listnode 0 0
+    const (0) int 6 0
+ecom: 
+call string 10 2
+  name squash fn(l: list of string, sep: string): string 11 1
+  seq no type 10 2
+    call list of string 10 2
+      name list2stringlist fn(nl: list of ref Listnode): list of string 11 1
+      seq no type 10 1
+        name nlist list of ref Listnode 0 0
+    seq no type 10 1
+      const   string 1 0
+ecom to: 
+* string 8 0
+  + int 15 1
+    adr int 15 1
+      * Listnode 8 0
+        name .t70 ref Listnode 0 0
+    const (8) int 6 0
+generate desc for big
+ecom: 
+call list of string 10 2
+  name list2stringlist fn(nl: list of ref Listnode): list of string 11 1
+  seq no type 10 1
+    name nlist list of ref Listnode 0 0
+ecom to: 
+name .t69 list of string 0 0
+generate desc for big
+ecom: 
+name nlist list of ref Listnode 0 0
+ecom to: 
+* list of ref Listnode 8 0
+  + int 15 0
+    name .b71 big 0 0
+    const (64) int 6 0
+ecom: 
+name .t69 list of string 0 0
+ecom to: 
+* list of string 8 0
+  + int 15 0
+    name .b72 big 0 0
+    const (64) int 6 0
+ecom: 
+= list of string 10 1
+  name .t69 list of string 0 0
+  name nil list of string 1 0
+ecom: 
+name nil list of string 1 0
+ecom to: 
+name .t69 list of string 0 0
+ecom: 
+const   string 1 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b72 big 0 0
+    const (72) int 6 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+name .t69 list of ref Listnode 0 0
+ecom: 
+= ref Listnode 10 1
+  name .t70 ref Listnode 0 0
+  name nil ref Listnode 1 0
+ecom: 
+name nil ref Listnode 1 0
+ecom to: 
+name .t70 ref Listnode 0 0
+ecom: 
+= list of ref Listnode 10 1
+  name .t69 list of ref Listnode 0 0
+  name nil list of ref Listnode 1 0
+ecom: 
+name nil list of ref Listnode 1 0
+ecom to: 
+name .t69 list of ref Listnode 0 0
+ecom: 
+= list of ref Listnode 10 1
+  name arg list of ref Listnode 0 0
+  name nil list of ref Listnode 1 0
+ecom: 
+name nil list of ref Listnode 1 0
+ecom to: 
+name arg list of ref Listnode 0 0
+ecom: 
+= list of ref Listnode 10 2
+  name arg list of ref Listnode 0 0
+  call list of ref Listnode 10 2
+    name glom fn(ctxt: ref Context, n: ref Node, redirs: ref Redirlist, onto: list of ref Listnode): list of ref Listnode 11 1
+    seq no type 10 2
+      name ctxt ref Context 0 0
+      seq no type 10 2
+        * ref Node 8 0
+          + int 15 1
+            name n ref Node 0 0
+            const left (8) int 6 0
+        seq no type 10 2
+          ref ref Redirlist 10 1
+            tuple Redirlist 10 1
+              seq no type 10 1
+                name nil polymorphic type 1 0
+          seq no type 10 1
+            name nil list of ref Listnode 1 0
+ecom: 
+call list of ref Listnode 10 2
+  name glom fn(ctxt: ref Context, n: ref Node, redirs: ref Redirlist, onto: list of ref Listnode): list of ref Listnode 11 1
+  seq no type 10 2
+    name ctxt ref Context 0 0
+    seq no type 10 2
+      * ref Node 8 0
+        + int 15 1
+          name n ref Node 0 0
+          const left (8) int 6 0
+      seq no type 10 2
+        ref ref Redirlist 10 1
+          tuple Redirlist 10 1
+            seq no type 10 1
+              name nil polymorphic type 1 0
+        seq no type 10 1
+          name nil list of ref Listnode 1 0
+ecom to: 
+name arg list of ref Listnode 0 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b72 big 0 0
+    const (64) int 6 0
+ecom: 
+* ref Node 8 0
+  + int 15 1
+    name n ref Node 0 0
+    const left (8) int 6 0
+ecom to: 
+* ref Node 8 0
+  + int 15 0
+    name .b72 big 0 0
+    const (72) int 6 0
+ecom: 
+ref ref Redirlist 10 1
+  tuple Redirlist 10 1
+    seq no type 10 1
+      name nil polymorphic type 1 0
+ecom to: 
+* ref Redirlist 8 0
+  + int 15 0
+    name .b72 big 0 0
+    const (80) int 6 0
+generate desc for Redirlist
+ecom: 
+tuple Redirlist 10 1
+  seq no type 10 1
+    name nil polymorphic type 1 0
+ecom to: 
+* Redirlist 8 0
+  name .t70 ref Redirlist 0 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* list of Redirword 8 0
+  + int 15 1
+    adr int 15 1
+      * Redirlist 8 0
+        name .t70 ref Redirlist 0 0
+    const (0) int 6 0
+ecom: 
+= ref Redirlist 10 1
+  name .t70 ref Redirlist 0 0
+  name nil ref Redirlist 1 0
+ecom: 
+name nil ref Redirlist 1 0
+ecom to: 
+name .t70 ref Redirlist 0 0
+ecom: 
+name nil list of ref Listnode 1 0
+ecom to: 
+* list of ref Listnode 8 0
+  + int 15 0
+    name .b72 big 0 0
+    const (88) int 6 0
+ecom: 
+= string 10 1
+  name seps string 0 0
+    name arg list of ref Listnode 0 0
+  const  string 1 0
+ecom: 
+const  string 1 0
+ecom to: 
+name seps string 0 0
+  name arg list of ref Listnode 0 0
+ecom: 
+= string 10 2
+  name seps string 0 0
+  call string 10 2
+    name squash fn(l: list of string, sep: string): string 11 1
+    seq no type 10 2
+      call list of string 10 2
+        name list2stringlist fn(nl: list of ref Listnode): list of string 11 1
+        seq no type 10 2
+          call list of ref Listnode 10 2
+            name get fn(ctxt: self ref Context, name: string): list of ref Listnode 11 1
+            seq nothing 10 1
+              name ctxt ref Context 0 0
+              seq no type 10 1
+                const ifs string 1 0
+      seq no type 10 1
+        const  string 1 0
+ecom: 
+call string 10 2
+  name squash fn(l: list of string, sep: string): string 11 1
+  seq no type 10 2
+    call list of string 10 2
+      name list2stringlist fn(nl: list of ref Listnode): list of string 11 1
+      seq no type 10 2
+        call list of ref Listnode 10 2
+          name get fn(ctxt: self ref Context, name: string): list of ref Listnode 11 1
+          seq nothing 10 1
+            name ctxt ref Context 0 0
+            seq no type 10 1
+              const ifs string 1 0
+    seq no type 10 1
+      const  string 1 0
+ecom to: 
+name seps string 0 0
+generate desc for big
+ecom: 
+call list of string 10 2
+  name list2stringlist fn(nl: list of ref Listnode): list of string 11 1
+  seq no type 10 2
+    call list of ref Listnode 10 2
+      name get fn(ctxt: self ref Context, name: string): list of ref Listnode 11 1
+      seq nothing 10 1
+        name ctxt ref Context 0 0
+        seq no type 10 1
+          const ifs string 1 0
+ecom to: 
+name .t70 list of string 0 0
+generate desc for big
+ecom: 
+call list of ref Listnode 10 2
+  name get fn(ctxt: self ref Context, name: string): list of ref Listnode 11 1
+  seq nothing 10 1
+    name ctxt ref Context 0 0
+    seq no type 10 1
+      const ifs string 1 0
+ecom to: 
+name .t69 list of ref Listnode 0 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b75 big 0 0
+    const (64) int 6 0
+ecom: 
+const ifs string 1 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b75 big 0 0
+    const (72) int 6 0
+ecom: 
+name .t69 list of ref Listnode 0 0
+ecom to: 
+* list of ref Listnode 8 0
+  + int 15 0
+    name .b71 big 0 0
+    const (64) int 6 0
+ecom: 
+= list of ref Listnode 10 1
+  name .t69 list of ref Listnode 0 0
+  name nil list of ref Listnode 1 0
+ecom: 
+name nil list of ref Listnode 1 0
+ecom to: 
+name .t69 list of ref Listnode 0 0
+ecom: 
+name .t70 list of string 0 0
+ecom to: 
+* list of string 8 0
+  + int 15 0
+    name .b72 big 0 0
+    const (64) int 6 0
+ecom: 
+= list of string 10 1
+  name .t70 list of string 0 0
+  name nil list of string 1 0
+ecom: 
+name nil list of string 1 0
+ecom to: 
+name .t70 list of string 0 0
+ecom: 
+const  string 1 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b72 big 0 0
+    const (72) int 6 0
+ecom: 
+= string 10 1
+  name seps string 0 0
+  const  	
+
 string 1 0
+ecom: 
+const  	
+
 string 1 0
+ecom to: 
+name seps string 0 0
+ecom: 
+= (list of ref Listnode, string) 10 2
+  tuple (list of ref Listnode, string) 10 1
+    seq no type 10 1
+      name nlist list of ref Listnode 0 0
+      seq no type 10 1
+        name nil polymorphic type 1 0
+  call (list of ref Listnode, string) 10 2
+    name bq fn(ctxt: ref Context, cmd: list of ref Listnode, seps: string): (list of ref Listnode, string) 11 1
+    seq no type 10 2
+      name ctxt ref Context 0 0
+      seq no type 10 2
+        call list of ref Listnode 10 2
+          name glob fn(nl: list of ref Listnode): list of ref Listnode 11 1
+          seq no type 10 1
+            name arg list of ref Listnode 0 0
+        seq no type 10 1
+          name seps string 0 0
+generate desc for (list of ref Listnode, string)
+descmap adt offset 0
+descmap offset 0
+descmap t0 type list of ref Listnode offset 0 (d->offset=0 start=0) returns 0
+descmap t1 type string offset 8 (d->offset=8 start=0) returns 8
+generate desc for (list of ref Listnode, string)
+	desc	$-1,16,"c0"
+ecom: 
+call (list of ref Listnode, string) 10 2
+  name bq fn(ctxt: ref Context, cmd: list of ref Listnode, seps: string): (list of ref Listnode, string) 11 1
+  seq no type 10 2
+    name ctxt ref Context 0 0
+    seq no type 10 2
+      call list of ref Listnode 10 2
+        name glob fn(nl: list of ref Listnode): list of ref Listnode 11 1
+        seq no type 10 1
+          name arg list of ref Listnode 0 0
+      seq no type 10 1
+        name seps string 0 0
+ecom to: 
+name .b76 (list of ref Listnode, string) 0 0
+generate desc for big
+ecom: 
+call list of ref Listnode 10 2
+  name glob fn(nl: list of ref Listnode): list of ref Listnode 11 1
+  seq no type 10 1
+    name arg list of ref Listnode 0 0
+ecom to: 
+name .t70 list of ref Listnode 0 0
+generate desc for big
+ecom: 
+name arg list of ref Listnode 0 0
+ecom to: 
+* list of ref Listnode 8 0
+  + int 15 0
+    name .b72 big 0 0
+    const (64) int 6 0
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b75 big 0 0
+    const (64) int 6 0
+ecom: 
+name .t70 list of ref Listnode 0 0
+ecom to: 
+* list of ref Listnode 8 0
+  + int 15 0
+    name .b75 big 0 0
+    const (72) int 6 0
+ecom: 
+= list of ref Listnode 10 1
+  name .t70 list of ref Listnode 0 0
+  name nil list of ref Listnode 1 0
+ecom: 
+name nil list of ref Listnode 1 0
+ecom to: 
+name .t70 list of ref Listnode 0 0
+ecom: 
+name seps string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b75 big 0 0
+    const (80) int 6 0
+ecom: 
+= list of ref Listnode 10 1
+  * list of ref Listnode 0 0
+    adr int 13 1
+      name .b76 (list of ref Listnode, string) 0 0
+  name nil list of ref Listnode 1 0
+ecom: 
+name nil list of ref Listnode 1 0
+ecom to: 
+* list of ref Listnode 0 0
+  adr int 13 1
+    name .b76 (list of ref Listnode, string) 0 0
+ecom: 
+= string 10 1
+  * string 0 0
+    + int 13 1
+      adr int 13 1
+        name .b76 (list of ref Listnode, string) 0 0
+      const t1 (8) int 6 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+* string 0 0
+  + int 13 1
+    adr int 13 1
+      name .b76 (list of ref Listnode, string) 0 0
+    const t1 (8) int 6 0
+ecom: 
+= string 10 1
+  name seps string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name seps string 0 0
+ecom: 
+= list of ref Listnode 10 1
+  name arg list of ref Listnode 0 0
+  name nil list of ref Listnode 1 0
+ecom: 
+name nil list of ref Listnode 1 0
+ecom to: 
+name arg list of ref Listnode 0 0
+ecom: 
+= list of ref Listnode 10 1
+  name nlist list of ref Listnode 0 0
+  :: list of ref Listnode 10 1
+    ref ref Listnode 10 1
+      tuple Listnode 10 1
+        seq no type 10 1
+          name n ref Node 0 0
+          seq no type 10 1
+            const  string 1 0
+    name nil polymorphic type 1 0
+ecom: 
+:: list of ref Listnode 10 1
+  ref ref Listnode 10 1
+    tuple Listnode 10 1
+      seq no type 10 1
+        name n ref Node 0 0
+        seq no type 10 1
+          const  string 1 0
+  name nil polymorphic type 1 0
+ecom to: 
+name nlist list of ref Listnode 0 0
+eacom: 
+ref ref Listnode 10 1
+  tuple Listnode 10 1
+    seq no type 10 1
+      name n ref Node 0 0
+      seq no type 10 1
+        const  string 1 0
+ecom: 
+ref ref Listnode 10 1
+  tuple Listnode 10 1
+    seq no type 10 1
+      name n ref Node 0 0
+      seq no type 10 1
+        const  string 1 0
+ecom to: 
+name .t70 ref Listnode 0 0
+generate desc for Listnode
+ecom: 
+tuple Listnode 10 1
+  seq no type 10 1
+    name n ref Node 0 0
+    seq no type 10 1
+      const  string 1 0
+ecom to: 
+* Listnode 8 0
+  name .t70 ref Listnode 0 0
+ecom: 
+name n ref Node 0 0
+ecom to: 
+* ref Node 8 0
+  + int 15 1
+    adr int 15 1
+      * Listnode 8 0
+        name .t70 ref Listnode 0 0
+    const (0) int 6 0
+ecom: 
+const  string 1 0
+ecom to: 
+* string 8 0
+  + int 15 1
+    adr int 15 1
+      * Listnode 8 0
+        name .t70 ref Listnode 0 0
+    const (8) int 6 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+name .t69 list of ref Listnode 0 0
+ecom: 
+= ref Listnode 10 1
+  name .t70 ref Listnode 0 0
+  name nil ref Listnode 1 0
+ecom: 
+name nil ref Listnode 1 0
+ecom to: 
+name .t70 ref Listnode 0 0
+ecom: 
+= list of ref Listnode 10 1
+  name .t69 list of ref Listnode 0 0
+  name nil list of ref Listnode 1 0
+ecom: 
+name nil list of ref Listnode 1 0
+ecom to: 
+name .t69 list of ref Listnode 0 0
+ecom: 
+call no type 10 2
+  name fail fn(ctxt: self ref Context, ename: string, err: string) 11 1
+  seq nothing 10 1
+    name ctxt ref Context 0 0
+    seq no type 10 1
+      const bad assign string 1 0
+      seq no type 10 1
+        const sh: assignment in invalid context string 1 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b75 big 0 0
+    const (64) int 6 0
+ecom: 
+const bad assign string 1 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b75 big 0 0
+    const (72) int 6 0
+ecom: 
+const sh: assignment in invalid context string 1 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b75 big 0 0
+    const (80) int 6 0
+ecom: 
+call no type 10 2
+  name panic fn(s: string) 11 1
+  seq no type 10 1
+    + string 10 1
+      + string 10 1
+        const bad node type  string 1 0
+        cast string 10 1
+          * int 8 0
+            name n ref Node 0 0
+      const  in glomop string 1 0
+generate desc for big
+ecom: 
++ string 10 1
+  + string 10 1
+    const bad node type  string 1 0
+    cast string 10 1
+      * int 8 0
+        name n ref Node 0 0
+  const  in glomop string 1 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b75 big 0 0
+    const (64) int 6 0
+ecom: 
++ string 10 1
+  const bad node type  string 1 0
+  cast string 10 1
+    * int 8 0
+      name n ref Node 0 0
+ecom to: 
+name .t70 string 0 0
+eacom: 
+cast string 10 1
+  * int 8 0
+    name n ref Node 0 0
+ecom: 
+cast string 10 1
+  * int 8 0
+    name n ref Node 0 0
+ecom to: 
+name .t70 string 0 0
+ecom: 
+= string 10 1
+  name .t70 string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name .t70 string 0 0
+ecom: 
+name nlist list of ref Listnode 0 0
+ecom to: 
+* list of ref Listnode 8 0
+  name .ret int 0 0
+fn: glomoperation
+64: argument ctxt ref Context ref 15
+72: argument n ref Node ref 17
+80: argument redirs ref Redirlist ref 9
+88: local .t73 int ref 1
+96: local .b72 big ref 13
+104: local nlist list of ref Listnode ref 13
+112: local arg list of ref Listnode ref 7
+120: local .b71 big ref 6
+128: local seps string ref 5
+136: local wlist list of ref Listnode ref 5
+144: local .b75 big ref 4
+152: local fd ref Sys->FD ref 4
+160: local .b74 Redirword ref 3
+192: local arg list of ref Listnode ref 2
+200: local .t69 ref Listnode ref 1
+208: local .t70 list of ref Listnode ref 1
+216: local .b76 (list of ref Listnode, string) ref 1
+generate desc for glomoperation
+descmap offset 0
+descmap ctxt type ref Context offset 64 (d->offset=64 start=0) returns 64
+descmap n type ref Node offset 72 (d->offset=72 start=0) returns 72
+descmap redirs type ref Redirlist offset 80 (d->offset=80 start=0) returns 80
+descmap .t73 type int offset 88 (d->offset=88 start=0) returns -1
+descmap .b72 type big offset 96 (d->offset=96 start=0) returns -1
+descmap nlist type list of ref Listnode offset 104 (d->offset=104 start=0) returns 104
+descmap arg type list of ref Listnode offset 112 (d->offset=112 start=0) returns 112
+descmap .b71 type big offset 120 (d->offset=120 start=0) returns -1
+descmap seps type string offset 128 (d->offset=128 start=0) returns 128
+descmap wlist type list of ref Listnode offset 136 (d->offset=136 start=0) returns 136
+descmap .b75 type big offset 144 (d->offset=144 start=0) returns -1
+descmap fd type ref Sys->FD offset 152 (d->offset=152 start=0) returns 152
+descmap adt offset 160
+descmap offset 160
+descmap fd type ref Sys->FD offset 160 (d->offset=0 start=160) returns 160
+descmap w type string offset 168 (d->offset=8 start=160) returns 168
+descmap adt offset 176
+descmap offset 176
+descmap rtype type int offset 176 (d->offset=0 start=176) returns -1
+descmap fd1 type int offset 180 (d->offset=4 start=176) returns -1
+descmap fd2 type int offset 184 (d->offset=8 start=176) returns -1
+descmap r type Redir offset 176 (d->offset=16 start=160) returns -1
+descmap .b74 type Redirword offset 160 (d->offset=160 start=0) returns 168
+descmap arg type list of ref Listnode offset 192 (d->offset=192 start=0) returns 192
+descmap .t69 type ref Listnode offset 200 (d->offset=200 start=0) returns 200
+descmap .t70 type list of ref Listnode offset 208 (d->offset=208 start=0) returns 208
+descmap adt offset 216
+descmap offset 216
+descmap t0 type list of ref Listnode offset 216 (d->offset=0 start=216) returns 216
+descmap t1 type string offset 224 (d->offset=8 start=216) returns 224
+descmap .b76 type (list of ref Listnode, string) offset 216 (d->offset=216 start=0) returns 224
+fncom: subsbuiltin 2 4186e8
+ecom: 
+call no type 10 2
+  name fail fn(ctxt: self ref Context, ename: string, err: string) 11 1
+  seq nothing 10 1
+    name ctxt ref Context 0 0
+    seq no type 10 1
+      const bad $ arg string 1 0
+      seq no type 10 1
+        const sh: invalid argument to ${} operator string 1 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b77 big 0 0
+    const (64) int 6 0
+ecom: 
+const bad $ arg string 1 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b77 big 0 0
+    const (72) int 6 0
+ecom: 
+const sh: invalid argument to ${} operator string 1 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b77 big 0 0
+    const (80) int 6 0
+ecom: 
+= ref Redirlist 10 1
+  name r ref Redirlist 0 0
+  ref ref Redirlist 10 1
+    name Redirlist Redirlist 10 1
+ecom: 
+ref ref Redirlist 10 1
+  name Redirlist Redirlist 10 1
+ecom to: 
+name r ref Redirlist 0 0
+generate desc for Redirlist
+ecom: 
+= list of ref Listnode 10 2
+  name cmd list of ref Listnode 0 0
+  call list of ref Listnode 10 2
+    name glob fn(nl: list of ref Listnode): list of ref Listnode 11 1
+    seq no type 10 2
+      call list of ref Listnode 10 2
+        name glom fn(ctxt: ref Context, n: ref Node, redirs: ref Redirlist, onto: list of ref Listnode): list of ref Listnode 11 1
+        seq no type 10 1
+          name ctxt ref Context 0 0
+          seq no type 10 1
+            name n ref Node 0 0
+            seq no type 10 1
+              name r ref Redirlist 0 0
+              seq no type 10 1
+                name nil list of ref Listnode 1 0
+ecom: 
+call list of ref Listnode 10 2
+  name glob fn(nl: list of ref Listnode): list of ref Listnode 11 1
+  seq no type 10 2
+    call list of ref Listnode 10 2
+      name glom fn(ctxt: ref Context, n: ref Node, redirs: ref Redirlist, onto: list of ref Listnode): list of ref Listnode 11 1
+      seq no type 10 1
+        name ctxt ref Context 0 0
+        seq no type 10 1
+          name n ref Node 0 0
+          seq no type 10 1
+            name r ref Redirlist 0 0
+            seq no type 10 1
+              name nil list of ref Listnode 1 0
+ecom to: 
+name cmd list of ref Listnode 0 0
+generate desc for big
+ecom: 
+call list of ref Listnode 10 2
+  name glom fn(ctxt: ref Context, n: ref Node, redirs: ref Redirlist, onto: list of ref Listnode): list of ref Listnode 11 1
+  seq no type 10 1
+    name ctxt ref Context 0 0
+    seq no type 10 1
+      name n ref Node 0 0
+      seq no type 10 1
+        name r ref Redirlist 0 0
+        seq no type 10 1
+          name nil list of ref Listnode 1 0
+ecom to: 
+name .t78 list of ref Listnode 0 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b79 big 0 0
+    const (64) int 6 0
+ecom: 
+name n ref Node 0 0
+ecom to: 
+* ref Node 8 0
+  + int 15 0
+    name .b79 big 0 0
+    const (72) int 6 0
+ecom: 
+name r ref Redirlist 0 0
+ecom to: 
+* ref Redirlist 8 0
+  + int 15 0
+    name .b79 big 0 0
+    const (80) int 6 0
+ecom: 
+name nil list of ref Listnode 1 0
+ecom to: 
+* list of ref Listnode 8 0
+  + int 15 0
+    name .b79 big 0 0
+    const (88) int 6 0
+ecom: 
+name .t78 list of ref Listnode 0 0
+ecom to: 
+* list of ref Listnode 8 0
+  + int 15 0
+    name .b77 big 0 0
+    const (64) int 6 0
+ecom: 
+= list of ref Listnode 10 1
+  name .t78 list of ref Listnode 0 0
+  name nil list of ref Listnode 1 0
+ecom: 
+name nil list of ref Listnode 1 0
+ecom to: 
+name .t78 list of ref Listnode 0 0
+ecom: 
+call no type 10 2
+  name fail fn(ctxt: self ref Context, ename: string, err: string) 11 1
+  seq nothing 10 1
+    name ctxt ref Context 0 0
+    seq no type 10 1
+      const bad $ arg string 1 0
+      seq no type 10 1
+        const sh: redirection not allowed in substitution string 1 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b79 big 0 0
+    const (64) int 6 0
+ecom: 
+const bad $ arg string 1 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b79 big 0 0
+    const (72) int 6 0
+ecom: 
+const sh: redirection not allowed in substitution string 1 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b79 big 0 0
+    const (80) int 6 0
+ecom: 
+= ref Redirlist 10 1
+  name r ref Redirlist 0 0
+  name nil polymorphic type 1 0
+ecom: 
+name nil ref Redirlist 1 0
+ecom to: 
+name r ref Redirlist 0 0
+eacom: 
+* string 10 1
+  + int 10 1
+    hd ref Listnode 10 1
+      name cmd list of ref Listnode 0 0
+    const word (8) int 6 0
+ecom: 
+hd ref Listnode 10 1
+  name cmd list of ref Listnode 0 0
+ecom to: 
+name .t78 ref Listnode 0 0
+ecom: 
+= ref Listnode 10 1
+  name .t78 ref Listnode 0 0
+  name nil ref Listnode 1 0
+ecom: 
+name nil ref Listnode 1 0
+ecom to: 
+name .t78 ref Listnode 0 0
+eacom: 
+* ref Node 10 1
+  hd ref Listnode 10 1
+    name cmd list of ref Listnode 0 0
+ecom: 
+hd ref Listnode 10 1
+  name cmd list of ref Listnode 0 0
+ecom to: 
+name .t78 ref Listnode 0 0
+ecom: 
+= ref Listnode 10 1
+  name .t78 ref Listnode 0 0
+  name nil ref Listnode 1 0
+ecom: 
+name nil ref Listnode 1 0
+ecom to: 
+name .t78 ref Listnode 0 0
+ecom: 
+call no type 10 2
+  name fail fn(ctxt: self ref Context, ename: string, err: string) 11 1
+  seq nothing 10 1
+    name ctxt ref Context 0 0
+    seq no type 10 1
+      const bad $ arg string 1 0
+      seq no type 10 1
+        const sh: bad builtin name string 1 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b79 big 0 0
+    const (64) int 6 0
+ecom: 
+const bad $ arg string 1 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b79 big 0 0
+    const (72) int 6 0
+ecom: 
+const sh: bad builtin name string 1 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b79 big 0 0
+    const (80) int 6 0
+ecom: 
+= (int, list of Shellbuiltin) 10 2
+  tuple (int, list of Shellbuiltin) 10 1
+    seq nothing 10 1
+      name nil polymorphic type 1 0
+      seq nothing 10 1
+        name bmods list of Shellbuiltin 0 0
+  call (int, list of Shellbuiltin) 10 2
+    name findbuiltin fn(b: ref Builtins, name: string): (int, list of Shellbuiltin) 11 1
+    seq no type 10 2
+      * ref Builtins 10 1
+        * ref Environment 8 0
+          name ctxt ref Context 0 0
+      seq no type 10 1
+        * string 10 1
+          + int 10 1
+            hd ref Listnode 10 1
+              name cmd list of ref Listnode 0 0
+            const word (8) int 6 0
+generate desc for (int, list of Shellbuiltin)
+descmap adt offset 0
+descmap offset 0
+descmap t0 type int offset 0 (d->offset=0 start=0) returns -1
+descmap t1 type list of Shellbuiltin offset 8 (d->offset=8 start=0) returns 8
+generate desc for (int, list of Shellbuiltin)
+	desc	$-1,16,"40"
+ecom: 
+call (int, list of Shellbuiltin) 10 2
+  name findbuiltin fn(b: ref Builtins, name: string): (int, list of Shellbuiltin) 11 1
+  seq no type 10 2
+    * ref Builtins 10 1
+      * ref Environment 8 0
+        name ctxt ref Context 0 0
+    seq no type 10 1
+      * string 10 1
+        + int 10 1
+          hd ref Listnode 10 1
+            name cmd list of ref Listnode 0 0
+          const word (8) int 6 0
+ecom to: 
+name .b80 (int, list of Shellbuiltin) 0 0
+generate desc for big
+ecom: 
+* ref Builtins 10 1
+  * ref Environment 8 0
+    name ctxt ref Context 0 0
+ecom to: 
+* ref Builtins 8 0
+  + int 15 0
+    name .b79 big 0 0
+    const (64) int 6 0
+eacom: 
+* ref Builtins 10 1
+  * ref Environment 8 0
+    name ctxt ref Context 0 0
+ecom: 
+* ref Environment 8 0
+  name ctxt ref Context 0 0
+ecom to: 
+name .t78 ref Environment 0 0
+ecom: 
+= ref Environment 10 1
+  name .t78 ref Environment 0 0
+  name nil ref Environment 1 0
+ecom: 
+name nil ref Environment 1 0
+ecom to: 
+name .t78 ref Environment 0 0
+ecom: 
+* string 10 1
+  + int 10 1
+    hd ref Listnode 10 1
+      name cmd list of ref Listnode 0 0
+    const word (8) int 6 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b79 big 0 0
+    const (72) int 6 0
+eacom: 
+* string 10 1
+  + int 10 1
+    hd ref Listnode 10 1
+      name cmd list of ref Listnode 0 0
+    const word (8) int 6 0
+ecom: 
+hd ref Listnode 10 1
+  name cmd list of ref Listnode 0 0
+ecom to: 
+name .t78 ref Listnode 0 0
+ecom: 
+= ref Listnode 10 1
+  name .t78 ref Listnode 0 0
+  name nil ref Listnode 1 0
+ecom: 
+name nil ref Listnode 1 0
+ecom to: 
+name .t78 ref Listnode 0 0
+ecom: 
+= list of Shellbuiltin 10 1
+  * list of Shellbuiltin 0 0
+    + int 13 1
+      adr int 13 1
+        name .b80 (int, list of Shellbuiltin) 0 0
+      const t1 (8) int 6 0
+  name nil list of Shellbuiltin 1 0
+ecom: 
+name nil list of Shellbuiltin 1 0
+ecom to: 
+* list of Shellbuiltin 0 0
+  + int 13 1
+    adr int 13 1
+      name .b80 (int, list of Shellbuiltin) 0 0
+    const t1 (8) int 6 0
+ecom: 
+call no type 10 2
+  name fail fn(ctxt: self ref Context, ename: string, err: string) 11 1
+  seq nothing 10 2
+    name ctxt ref Context 0 0
+    seq no type 10 2
+      const builtin not found string 1 0
+      seq no type 10 2
+        call string 10 2
+          -> fn(s: string, nil: string, *): string 12 1
+            name sys Sys 1 0
+            name sprint nothing 11 1
+          seq no type 10 1
+            const sh: builtin %s not found string 1 0
+            seq no type 10 1
+              * string 10 1
+                + int 10 1
+                  hd ref Listnode 10 1
+                    name cmd list of ref Listnode 0 0
+                  const word (8) int 6 0
+generate desc for big
+ecom: 
+call string 10 2
+  -> fn(s: string, nil: string, *): string 12 1
+    name sys Sys 1 0
+    name sprint nothing 11 1
+  seq no type 10 1
+    const sh: builtin %s not found string 1 0
+    seq no type 10 1
+      * string 10 1
+        + int 10 1
+          hd ref Listnode 10 1
+            name cmd list of ref Listnode 0 0
+          const word (8) int 6 0
+ecom to: 
+name .t78 string 0 0
+generate desc for Sys->sprint
+descmap offset 0
+descmap s type string offset 64 (d->offset=64 start=0) returns 64
+descmap type string offset 72 returns 72
+generate desc for big
+ecom: 
+const sh: builtin %s not found string 1 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b77 big 0 0
+    const (64) int 6 0
+ecom: 
+* string 10 1
+  + int 10 1
+    hd ref Listnode 10 1
+      name cmd list of ref Listnode 0 0
+    const word (8) int 6 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b77 big 0 0
+    const (72) int 6 0
+eacom: 
+* string 10 1
+  + int 10 1
+    hd ref Listnode 10 1
+      name cmd list of ref Listnode 0 0
+    const word (8) int 6 0
+ecom: 
+hd ref Listnode 10 1
+  name cmd list of ref Listnode 0 0
+ecom to: 
+name .t81 ref Listnode 0 0
+ecom: 
+= ref Listnode 10 1
+  name .t81 ref Listnode 0 0
+  name nil ref Listnode 1 0
+ecom: 
+name nil ref Listnode 1 0
+ecom to: 
+name .t81 ref Listnode 0 0
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b79 big 0 0
+    const (64) int 6 0
+ecom: 
+const builtin not found string 1 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b79 big 0 0
+    const (72) int 6 0
+ecom: 
+name .t78 string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b79 big 0 0
+    const (80) int 6 0
+ecom: 
+= string 10 1
+  name .t78 string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name .t78 string 0 0
+ecom: 
+call list of ref Listnode 10 2
+  -> fn(c: ref Context, sh: Sh, cmd: list of ref Listnode): list of ref Listnode 12 2
+    hd Shellbuiltin 10 1
+      name bmods list of Shellbuiltin 0 0
+    name runsbuiltin nothing 11 1
+  seq no type 10 1
+    name ctxt ref Context 0 0
+    seq no type 10 1
+      name myself Sh 1 0
+      seq no type 10 1
+        name cmd list of ref Listnode 0 0
+ecom to: 
+* list of ref Listnode 8 0
+  name .ret int 0 0
+generate desc for big
+eacom: 
+hd Shellbuiltin 10 1
+  name bmods list of Shellbuiltin 0 0
+ecom: 
+hd Shellbuiltin 10 1
+  name bmods list of Shellbuiltin 0 0
+ecom to: 
+name .t81 Shellbuiltin 0 0
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b79 big 0 0
+    const (64) int 6 0
+ecom: 
+name myself Sh 1 0
+ecom to: 
+* Sh 8 0
+  + int 15 0
+    name .b79 big 0 0
+    const (72) int 6 0
+ecom: 
+name cmd list of ref Listnode 0 0
+ecom to: 
+* list of ref Listnode 8 0
+  + int 15 0
+    name .b79 big 0 0
+    const (80) int 6 0
+ecom: 
+= Shellbuiltin 10 1
+  name .t81 Shellbuiltin 0 0
+  name nil Shellbuiltin 1 0
+ecom: 
+name nil Shellbuiltin 1 0
+ecom to: 
+name .t81 Shellbuiltin 0 0
+fn: subsbuiltin
+64: argument ctxt ref Context ref 7
+72: argument n ref Node ref 5
+80: local cmd list of ref Listnode ref 7
+88: local .b79 big ref 6
+96: local r ref Redirlist ref 4
+104: local .b77 big ref 3
+112: local bmods list of Shellbuiltin ref 3
+120: local .t78 list of ref Listnode ref 1
+128: local .t81 ref Listnode ref 1
+136: local .b80 (int, list of Shellbuiltin) ref 1
+generate desc for subsbuiltin
+descmap offset 0
+descmap ctxt type ref Context offset 64 (d->offset=64 start=0) returns 64
+descmap n type ref Node offset 72 (d->offset=72 start=0) returns 72
+descmap cmd type list of ref Listnode offset 80 (d->offset=80 start=0) returns 80
+descmap .b79 type big offset 88 (d->offset=88 start=0) returns -1
+descmap r type ref Redirlist offset 96 (d->offset=96 start=0) returns 96
+descmap .b77 type big offset 104 (d->offset=104 start=0) returns -1
+descmap bmods type list of Shellbuiltin offset 112 (d->offset=112 start=0) returns 112
+descmap .t78 type list of ref Listnode offset 120 (d->offset=120 start=0) returns 120
+descmap .t81 type ref Listnode offset 128 (d->offset=128 start=0) returns 128
+descmap adt offset 136
+descmap offset 136
+descmap t0 type int offset 136 (d->offset=0 start=136) returns -1
+descmap t1 type list of Shellbuiltin offset 144 (d->offset=8 start=136) returns 144
+descmap .b80 type (int, list of Shellbuiltin) offset 136 (d->offset=136 start=0) returns 144
+fncom: getbq 2 4187a8
+ecom: 
+= array of byte 10 1
+  name buf array of byte 0 0
+  array array of byte 10 1
+    const ATOMICIO (8192) int 6 0
+ecom: 
+array array of byte 10 1
+  const ATOMICIO (8192) int 6 0
+ecom to: 
+name buf array of byte 0 0
+generate desc for byte
+generate desc for byte
+	desc	$-1,1,""
+ecom: 
+= int 10 1
+  name buflen int 0 0
+  const (0) int 6 0
+ecom: 
+const (0) int 6 0
+ecom to: 
+name buflen int 0 0
+eacom: 
+= int 10 2
+  name n int 0 0
+  call int 10 2
+    -> fn(fd: ref Sys->FD, buf: array of byte, n: int): int 12 1
+      name sys Sys 1 0
+      name read nothing 11 1
+    seq no type 10 2
+      name fd ref Sys->FD 0 0
+      seq no type 10 2
+        slice array of byte 10 1
+          name buf array of byte 0 0
+          seq no type 10 1
+            name buflen int 0 0
+            nothing no type 10 1
+        seq no type 10 1
+          - int 10 1
+            len int 10 1
+              name buf array of byte 0 0
+            name buflen int 0 0
+ecom: 
+= int 10 2
+  name n int 0 0
+  call int 10 2
+    -> fn(fd: ref Sys->FD, buf: array of byte, n: int): int 12 1
+      name sys Sys 1 0
+      name read nothing 11 1
+    seq no type 10 2
+      name fd ref Sys->FD 0 0
+      seq no type 10 2
+        slice array of byte 10 1
+          name buf array of byte 0 0
+          seq no type 10 1
+            name buflen int 0 0
+            nothing no type 10 1
+        seq no type 10 1
+          - int 10 1
+            len int 10 1
+              name buf array of byte 0 0
+            name buflen int 0 0
+ecom to: 
+name .t82 int 0 0
+ecom: 
+call int 10 2
+  -> fn(fd: ref Sys->FD, buf: array of byte, n: int): int 12 1
+    name sys Sys 1 0
+    name read nothing 11 1
+  seq no type 10 2
+    name fd ref Sys->FD 0 0
+    seq no type 10 2
+      slice array of byte 10 1
+        name buf array of byte 0 0
+        seq no type 10 1
+          name buflen int 0 0
+          nothing no type 10 1
+      seq no type 10 1
+        - int 10 1
+          len int 10 1
+            name buf array of byte 0 0
+          name buflen int 0 0
+ecom to: 
+name n int 0 0
+generate desc for big
+ecom: 
+name fd ref Sys->FD 0 0
+ecom to: 
+* ref Sys->FD 8 0
+  + int 15 0
+    name .b83 big 0 0
+    const (64) int 6 0
+ecom: 
+slice array of byte 10 1
+  name buf array of byte 0 0
+  seq no type 10 1
+    name buflen int 0 0
+    nothing no type 10 1
+ecom to: 
+* array of byte 8 0
+  + int 15 0
+    name .b83 big 0 0
+    const (72) int 6 0
+ecom: 
+len int 10 1
+  name buf array of byte 0 0
+ecom to: 
+name .t84 int 0 0
+ecom: 
+name buf array of byte 0 0
+ecom to: 
+* array of byte 8 0
+  + int 15 0
+    name .b83 big 0 0
+    const (72) int 6 0
+ecom: 
+- int 10 1
+  len int 10 1
+    name buf array of byte 0 0
+  name buflen int 0 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b83 big 0 0
+    const (80) int 6 0
+ecom: 
+len int 10 1
+  name buf array of byte 0 0
+ecom to: 
+name .t84 int 0 0
+ecom: 
++= int 10 1
+  name buflen int 0 0
+  name n int 0 0
+eacom: 
+len int 10 1
+  name buf array of byte 0 0
+ecom: 
+len int 10 1
+  name buf array of byte 0 0
+ecom to: 
+name .t84 int 0 0
+ecom: 
+= array of byte 10 1
+  name nbuf array of byte 0 0
+  array array of byte 10 1
+    * int 10 1
+      name buflen int 0 0
+      const (2) int 6 0
+ecom: 
+array array of byte 10 1
+  * int 10 1
+    name buflen int 0 0
+    const (2) int 6 0
+ecom to: 
+name nbuf array of byte 0 0
+eacom: 
+* int 10 1
+  name buflen int 0 0
+  const (2) int 6 0
+ecom: 
+* int 10 1
+  name buflen int 0 0
+  const (2) int 6 0
+ecom to: 
+name .t84 int 0 0
+generate desc for byte
+ecom: 
+= array of byte 10 2
+  slice array of byte 10 1
+    name nbuf array of byte 0 0
+    seq no type 10 1
+      const (0) int 6 0
+      nothing no type 10 1
+  slice array of byte 10 1
+    name buf array of byte 0 0
+    seq no type 10 1
+      const (0) int 6 0
+      nothing no type 10 1
+eacom: 
+slice array of byte 10 1
+  name buf array of byte 0 0
+  seq no type 10 1
+    const (0) int 6 0
+    nothing no type 10 1
+ecom: 
+slice array of byte 10 1
+  name buf array of byte 0 0
+  seq no type 10 1
+    const (0) int 6 0
+    nothing no type 10 1
+ecom to: 
+name .t85 array of byte 0 0
+ecom: 
+len int 10 1
+  name buf array of byte 0 0
+ecom to: 
+name .t84 int 0 0
+ecom: 
+name buf array of byte 0 0
+ecom to: 
+name .t85 array of byte 0 0
+ecom: 
+= array of byte 10 1
+  name .t85 array of byte 0 0
+  name nil array of byte 1 0
+ecom: 
+name nil array of byte 1 0
+ecom to: 
+name .t85 array of byte 0 0
+ecom: 
+= array of byte 10 1
+  name buf array of byte 0 0
+  name nbuf array of byte 0 0
+ecom: 
+name nbuf array of byte 0 0
+ecom to: 
+name buf array of byte 0 0
+ecom: 
+= array of byte 10 1
+  name nbuf array of byte 0 0
+  name nil array of byte 1 0
+ecom: 
+name nil array of byte 1 0
+ecom to: 
+name nbuf array of byte 0 0
+ecom: 
+= (int, list of string) 10 2
+  tuple (int, list of string) 10 1
+    seq no type 10 1
+      name nil polymorphic type 1 0
+      seq no type 10 1
+        name l list of string 0 0
+  call (int, list of string) 10 2
+    -> fn(s: string, delim: string): (int, list of string) 12 1
+      name sys Sys 1 0
+      name tokenize nothing 11 1
+    seq no type 10 2
+      cast string 10 1
+        slice array of byte 10 1
+          name buf array of byte 0 0
+          seq no type 10 1
+            const (0) int 6 0
+            name buflen int 0 0
+      seq no type 10 1
+        name seps string 0 0
+generate desc for (int, list of string)
+descmap adt offset 0
+descmap offset 0
+descmap t0 type int offset 0 (d->offset=0 start=0) returns -1
+descmap t1 type list of string offset 8 (d->offset=8 start=0) returns 8
+generate desc for (int, list of string)
+	desc	$-1,16,"40"
+ecom: 
+call (int, list of string) 10 2
+  -> fn(s: string, delim: string): (int, list of string) 12 1
+    name sys Sys 1 0
+    name tokenize nothing 11 1
+  seq no type 10 2
+    cast string 10 1
+      slice array of byte 10 1
+        name buf array of byte 0 0
+        seq no type 10 1
+          const (0) int 6 0
+          name buflen int 0 0
+    seq no type 10 1
+      name seps string 0 0
+ecom to: 
+name .b86 (int, list of string) 0 0
+generate desc for big
+ecom: 
+cast string 10 1
+  slice array of byte 10 1
+    name buf array of byte 0 0
+    seq no type 10 1
+      const (0) int 6 0
+      name buflen int 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b83 big 0 0
+    const (64) int 6 0
+eacom: 
+slice array of byte 10 1
+  name buf array of byte 0 0
+  seq no type 10 1
+    const (0) int 6 0
+    name buflen int 0 0
+ecom: 
+slice array of byte 10 1
+  name buf array of byte 0 0
+  seq no type 10 1
+    const (0) int 6 0
+    name buflen int 0 0
+ecom to: 
+name .t85 array of byte 0 0
+ecom: 
+name buf array of byte 0 0
+ecom to: 
+name .t85 array of byte 0 0
+ecom: 
+= array of byte 10 1
+  name .t85 array of byte 0 0
+  name nil array of byte 1 0
+ecom: 
+name nil array of byte 1 0
+ecom to: 
+name .t85 array of byte 0 0
+ecom: 
+name seps string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b83 big 0 0
+    const (72) int 6 0
+ecom: 
+= list of string 10 1
+  * list of string 0 0
+    + int 13 1
+      adr int 13 1
+        name .b86 (int, list of string) 0 0
+      const t1 (8) int 6 0
+  name nil list of string 1 0
+ecom: 
+name nil list of string 1 0
+ecom to: 
+* list of string 0 0
+  + int 13 1
+    adr int 13 1
+      name .b86 (int, list of string) 0 0
+    const t1 (8) int 6 0
+ecom: 
+= list of string 10 1
+  name l list of string 0 0
+  :: list of string 10 1
+    cast string 10 1
+      slice array of byte 10 1
+        name buf array of byte 0 0
+        seq no type 10 1
+          const (0) int 6 0
+          name buflen int 0 0
+    name nil polymorphic type 1 0
+ecom: 
+:: list of string 10 1
+  cast string 10 1
+    slice array of byte 10 1
+      name buf array of byte 0 0
+      seq no type 10 1
+        const (0) int 6 0
+        name buflen int 0 0
+  name nil polymorphic type 1 0
+ecom to: 
+name l list of string 0 0
+eacom: 
+cast string 10 1
+  slice array of byte 10 1
+    name buf array of byte 0 0
+    seq no type 10 1
+      const (0) int 6 0
+      name buflen int 0 0
+ecom: 
+cast string 10 1
+  slice array of byte 10 1
+    name buf array of byte 0 0
+    seq no type 10 1
+      const (0) int 6 0
+      name buflen int 0 0
+ecom to: 
+name .t85 string 0 0
+eacom: 
+slice array of byte 10 1
+  name buf array of byte 0 0
+  seq no type 10 1
+    const (0) int 6 0
+    name buflen int 0 0
+ecom: 
+slice array of byte 10 1
+  name buf array of byte 0 0
+  seq no type 10 1
+    const (0) int 6 0
+    name buflen int 0 0
+ecom to: 
+name .t85 array of byte 0 0
+ecom: 
+name buf array of byte 0 0
+ecom to: 
+name .t85 array of byte 0 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+name .t87 list of string 0 0
+ecom: 
+= string 10 1
+  name .t85 string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name .t85 string 0 0
+ecom: 
+= list of string 10 1
+  name .t87 list of string 0 0
+  name nil list of string 1 0
+ecom: 
+name nil list of string 1 0
+ecom to: 
+name .t87 list of string 0 0
+ecom: 
+= array of byte 10 1
+  name buf array of byte 0 0
+  name nil polymorphic type 1 0
+ecom: 
+name nil array of byte 1 0
+ecom to: 
+name buf array of byte 0 0
+ecom: 
+call list of ref Listnode 10 2
+  name stringlist2list fn(sl: list of string): list of ref Listnode 11 1
+  seq no type 10 1
+    name l list of string 0 0
+ecom to: 
+* list of ref Listnode 8 0
+  name .ret int 0 0
+generate desc for big
+ecom: 
+name l list of string 0 0
+ecom to: 
+* list of string 8 0
+  + int 15 0
+    name .b83 big 0 0
+    const (64) int 6 0
+fn: getbq
+64: argument <nil> ref Context ref 0
+72: argument fd ref Sys->FD ref 1
+80: argument seps string ref 2
+88: local buflen int ref 8
+92: local n int ref 2
+96: local .t82 int ref 1
+100: local .t84 int ref 1
+104: local buf array of byte ref 9
+112: local .b83 big ref 3
+120: local l list of string ref 3
+128: local nbuf array of byte ref 3
+136: local .t85 array of byte ref 1
+144: local .t87 list of string ref 1
+152: local .b86 (int, list of string) ref 1
+generate desc for getbq
+descmap offset 0
+descmap type ref Context offset 64 returns 64
+descmap fd type ref Sys->FD offset 72 (d->offset=72 start=0) returns 72
+descmap seps type string offset 80 (d->offset=80 start=0) returns 80
+descmap buflen type int offset 88 (d->offset=88 start=0) returns -1
+descmap n type int offset 92 (d->offset=92 start=0) returns -1
+descmap .t82 type int offset 96 (d->offset=96 start=0) returns -1
+descmap .t84 type int offset 100 (d->offset=100 start=0) returns -1
+descmap buf type array of byte offset 104 (d->offset=104 start=0) returns 104
+descmap .b83 type big offset 112 (d->offset=112 start=0) returns -1
+descmap l type list of string offset 120 (d->offset=120 start=0) returns 120
+descmap nbuf type array of byte offset 128 (d->offset=128 start=0) returns 128
+descmap .t85 type array of byte offset 136 (d->offset=136 start=0) returns 136
+descmap .t87 type list of string offset 144 (d->offset=144 start=0) returns 144
+descmap adt offset 152
+descmap offset 152
+descmap t0 type int offset 152 (d->offset=0 start=152) returns -1
+descmap t1 type list of string offset 160 (d->offset=8 start=152) returns 160
+descmap .b86 type (int, list of string) offset 152 (d->offset=152 start=0) returns 160
+fncom: bq 2 418868
+ecom: 
+= array of ref Sys->FD 10 1
+  name fds array of ref Sys->FD 0 0
+  array array of ref Sys->FD 10 1
+    const (2) int 6 0
+ecom: 
+array array of ref Sys->FD 10 1
+  const (2) int 6 0
+ecom to: 
+name fds array of ref Sys->FD 0 0
+generate desc for ref Sys->FD
+generate desc for ref Sys->FD
+	desc	$-1,8,"80"
+eacom: 
+call int 10 2
+  -> fn(fds: array of ref Sys->FD): int 12 1
+    name sys Sys 1 0
+    name pipe nothing 11 1
+  seq no type 10 1
+    name fds array of ref Sys->FD 0 0
+ecom: 
+call int 10 2
+  -> fn(fds: array of ref Sys->FD): int 12 1
+    name sys Sys 1 0
+    name pipe nothing 11 1
+  seq no type 10 1
+    name fds array of ref Sys->FD 0 0
+ecom to: 
+name .t88 int 0 0
+generate desc for big
+ecom: 
+name fds array of ref Sys->FD 0 0
+ecom to: 
+* array of ref Sys->FD 8 0
+  + int 15 0
+    name .b89 big 0 0
+    const (64) int 6 0
+ecom: 
+call no type 10 2
+  name fail fn(ctxt: self ref Context, ename: string, err: string) 11 1
+  seq nothing 10 2
+    name ctxt ref Context 0 0
+    seq no type 10 2
+      const no pipe string 1 0
+      seq no type 10 2
+        call string 10 2
+          -> fn(s: string, *): string 12 1
+            name sys Sys 1 0
+            name sprint nothing 11 1
+          seq no type 10 1
+            const sh: cannot make pipe: %r string 1 0
+generate desc for big
+ecom: 
+call string 10 2
+  -> fn(s: string, *): string 12 1
+    name sys Sys 1 0
+    name sprint nothing 11 1
+  seq no type 10 1
+    const sh: cannot make pipe: %r string 1 0
+ecom to: 
+name .t90 string 0 0
+generate desc for Sys->sprint
+descmap offset 0
+descmap s type string offset 64 (d->offset=64 start=0) returns 64
+generate desc for big
+ecom: 
+const sh: cannot make pipe: %r string 1 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b91 big 0 0
+    const (64) int 6 0
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b89 big 0 0
+    const (64) int 6 0
+ecom: 
+const no pipe string 1 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b89 big 0 0
+    const (72) int 6 0
+ecom: 
+name .t90 string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b89 big 0 0
+    const (80) int 6 0
+ecom: 
+= string 10 1
+  name .t90 string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name .t90 string 0 0
+ecom: 
+= ref Redirlist 10 2
+  name r ref Redirlist 0 0
+  ref ref Redirlist 10 2
+    tuple Redirlist 10 2
+      seq no type 10 2
+        :: list of Redirword 10 2
+          tuple Redirword 10 2
+            seq no type 10 2
+              * ref Sys->FD 10 1
+                indx big 10 1
+                  name fds array of ref Sys->FD 0 0
+                  const (1) int 6 0
+              seq no type 10 1
+                name nil polymorphic type 1 0
+                seq no type 10 1
+                  tuple Redir 10 1
+                    seq no type 10 1
+                      const OWRITE (1) int 6 0
+                      seq no type 10 1
+                        const (1) int 6 0
+                        seq no type 10 1
+                          const (-1) int 6 0
+          name nil polymorphic type 1 0
+ecom: 
+ref ref Redirlist 10 2
+  tuple Redirlist 10 2
+    seq no type 10 2
+      :: list of Redirword 10 2
+        tuple Redirword 10 2
+          seq no type 10 2
+            * ref Sys->FD 10 1
+              indx big 10 1
+                name fds array of ref Sys->FD 0 0
+                const (1) int 6 0
+            seq no type 10 1
+              name nil polymorphic type 1 0
+              seq no type 10 1
+                tuple Redir 10 1
+                  seq no type 10 1
+                    const OWRITE (1) int 6 0
+                    seq no type 10 1
+                      const (1) int 6 0
+                      seq no type 10 1
+                        const (-1) int 6 0
+        name nil polymorphic type 1 0
+ecom to: 
+name r ref Redirlist 0 0
+generate desc for Redirlist
+ecom: 
+tuple Redirlist 10 2
+  seq no type 10 2
+    :: list of Redirword 10 2
+      tuple Redirword 10 2
+        seq no type 10 2
+          * ref Sys->FD 10 1
+            indx big 10 1
+              name fds array of ref Sys->FD 0 0
+              const (1) int 6 0
+          seq no type 10 1
+            name nil polymorphic type 1 0
+            seq no type 10 1
+              tuple Redir 10 1
+                seq no type 10 1
+                  const OWRITE (1) int 6 0
+                  seq no type 10 1
+                    const (1) int 6 0
+                    seq no type 10 1
+                      const (-1) int 6 0
+      name nil polymorphic type 1 0
+ecom to: 
+* Redirlist 8 0
+  name .t90 ref Redirlist 0 0
+ecom: 
+:: list of Redirword 10 2
+  tuple Redirword 10 2
+    seq no type 10 2
+      * ref Sys->FD 10 1
+        indx big 10 1
+          name fds array of ref Sys->FD 0 0
+          const (1) int 6 0
+      seq no type 10 1
+        name nil polymorphic type 1 0
+        seq no type 10 1
+          tuple Redir 10 1
+            seq no type 10 1
+              const OWRITE (1) int 6 0
+              seq no type 10 1
+                const (1) int 6 0
+                seq no type 10 1
+                  const (-1) int 6 0
+  name nil polymorphic type 1 0
+ecom to: 
+* list of Redirword 8 0
+  + int 15 1
+    adr int 15 1
+      * Redirlist 8 0
+        name .t90 ref Redirlist 0 0
+    const (0) int 6 0
+eacom: 
+tuple Redirword 10 2
+  seq no type 10 2
+    * ref Sys->FD 10 1
+      indx big 10 1
+        name fds array of ref Sys->FD 0 0
+        const (1) int 6 0
+    seq no type 10 1
+      name nil polymorphic type 1 0
+      seq no type 10 1
+        tuple Redir 10 1
+          seq no type 10 1
+            const OWRITE (1) int 6 0
+            seq no type 10 1
+              const (1) int 6 0
+              seq no type 10 1
+                const (-1) int 6 0
+generate desc for Redirword
+ecom: 
+tuple Redirword 10 2
+  seq no type 10 2
+    * ref Sys->FD 10 1
+      indx big 10 1
+        name fds array of ref Sys->FD 0 0
+        const (1) int 6 0
+    seq no type 10 1
+      name nil polymorphic type 1 0
+      seq no type 10 1
+        tuple Redir 10 1
+          seq no type 10 1
+            const OWRITE (1) int 6 0
+            seq no type 10 1
+              const (1) int 6 0
+              seq no type 10 1
+                const (-1) int 6 0
+ecom to: 
+name .b92 Redirword 0 0
+ecom: 
+* ref Sys->FD 10 1
+  indx big 10 1
+    name fds array of ref Sys->FD 0 0
+    const (1) int 6 0
+ecom to: 
+* ref Sys->FD 0 0
+  + int 13 1
+    adr int 13 1
+      name .b92 Redirword 0 0
+    const (0) int 6 0
+eacom: 
+* ref Sys->FD 10 1
+  indx big 10 1
+    name fds array of ref Sys->FD 0 0
+    const (1) int 6 0
+generate desc for big
+ecom: 
+indx big 10 1
+  name fds array of ref Sys->FD 0 0
+  const (1) int 6 0
+ecom to: 
+name .b91 big 0 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* string 0 0
+  + int 13 1
+    adr int 13 1
+      name .b92 Redirword 0 0
+    const (8) int 6 0
+ecom: 
+tuple Redir 10 1
+  seq no type 10 1
+    const OWRITE (1) int 6 0
+    seq no type 10 1
+      const (1) int 6 0
+      seq no type 10 1
+        const (-1) int 6 0
+ecom to: 
+* Redir 0 0
+  + int 13 1
+    adr int 13 1
+      name .b92 Redirword 0 0
+    const (16) int 6 0
+ecom: 
+const OWRITE (1) int 6 0
+ecom to: 
+* int 0 0
+  + int 13 1
+    adr int 13 1
+      * Redir 0 0
+        + int 13 1
+          adr int 13 1
+            name .b92 Redirword 0 0
+          const (16) int 6 0
+    const (0) int 6 0
+ecom: 
+const (1) int 6 0
+ecom to: 
+* int 0 0
+  + int 13 1
+    adr int 13 1
+      * Redir 0 0
+        + int 13 1
+          adr int 13 1
+            name .b92 Redirword 0 0
+          const (16) int 6 0
+    const (4) int 6 0
+ecom: 
+const (-1) int 6 0
+ecom to: 
+* int 0 0
+  + int 13 1
+    adr int 13 1
+      * Redir 0 0
+        + int 13 1
+          adr int 13 1
+            name .b92 Redirword 0 0
+          const (16) int 6 0
+    const (8) int 6 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+name .t93 list of Redirword 0 0
+generate desc for Redirword
+ecom: 
+= ref Sys->FD 10 1
+  * ref Sys->FD 0 0
+    adr int 13 1
+      name .b92 Redirword 0 0
+  name nil ref Sys->FD 1 0
+ecom: 
+name nil ref Sys->FD 1 0
+ecom to: 
+* ref Sys->FD 0 0
+  adr int 13 1
+    name .b92 Redirword 0 0
+ecom: 
+= string 10 1
+  * string 0 0
+    + int 13 1
+      adr int 13 1
+        name .b92 Redirword 0 0
+      const w (8) int 6 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+* string 0 0
+  + int 13 1
+    adr int 13 1
+      name .b92 Redirword 0 0
+    const w (8) int 6 0
+ecom: 
+= list of Redirword 10 1
+  name .t93 list of Redirword 0 0
+  name nil list of Redirword 1 0
+ecom: 
+name nil list of Redirword 1 0
+ecom to: 
+name .t93 list of Redirword 0 0
+ecom: 
+= ref Redirlist 10 1
+  name .t90 ref Redirlist 0 0
+  name nil ref Redirlist 1 0
+ecom: 
+name nil ref Redirlist 1 0
+ecom to: 
+name .t90 ref Redirlist 0 0
+ecom: 
+= ref Sys->FD 10 1
+  * ref Sys->FD 10 1
+    indx big 10 1
+      name fds array of ref Sys->FD 0 0
+      const (1) int 6 0
+  name nil polymorphic type 1 0
+eacom: 
+* ref Sys->FD 10 1
+  indx big 10 1
+    name fds array of ref Sys->FD 0 0
+    const (1) int 6 0
+generate desc for big
+ecom: 
+indx big 10 1
+  name fds array of ref Sys->FD 0 0
+  const (1) int 6 0
+ecom to: 
+name .b91 big 0 0
+ecom: 
+name nil ref Sys->FD 1 0
+ecom to: 
+* ref Sys->FD 8 1
+  name .b91 big 0 0
+ecom: 
+= chan of (int, ref Expropagate) 10 1
+  name startchan chan of (int, ref Expropagate) 0 0
+  chan chan of (int, ref Expropagate) 10 1
+    const (0) int 6 0
+ecom: 
+chan chan of (int, ref Expropagate) 10 1
+  const (0) int 6 0
+ecom to: 
+name startchan chan of (int, ref Expropagate) 0 0
+generate desc for (int, ref Expropagate)
+descmap adt offset 0
+descmap offset 0
+descmap t0 type int offset 0 (d->offset=0 start=0) returns -1
+descmap t1 type ref Expropagate offset 8 (d->offset=8 start=0) returns 8
+generate desc for (int, ref Expropagate)
+	desc	$-1,16,"40"
+ecom: 
+spawn nothing 10 2
+  call no type 10 2
+    name runasync fn(ctxt: ref Context, copyenv: int, argv: list of ref Listnode, redirs: ref Redirlist, startchan: chan of (int, ref Expropagate)) 11 1
+    seq no type 10 1
+      name ctxt ref Context 0 0
+      seq no type 10 1
+        const (0) int 6 0
+        seq no type 10 1
+          name cmd list of ref Listnode 0 0
+          seq no type 10 1
+            name r ref Redirlist 0 0
+            seq no type 10 1
+              name startchan chan of (int, ref Expropagate) 0 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b91 big 0 0
+    const (64) int 6 0
+ecom: 
+const (0) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b91 big 0 0
+    const (72) int 6 0
+ecom: 
+name cmd list of ref Listnode 0 0
+ecom to: 
+* list of ref Listnode 8 0
+  + int 15 0
+    name .b91 big 0 0
+    const (80) int 6 0
+ecom: 
+name r ref Redirlist 0 0
+ecom to: 
+* ref Redirlist 8 0
+  + int 15 0
+    name .b91 big 0 0
+    const (88) int 6 0
+ecom: 
+name startchan chan of (int, ref Expropagate) 0 0
+ecom to: 
+* chan of (int, ref Expropagate) 8 0
+  + int 15 0
+    name .b91 big 0 0
+    const (96) int 6 0
+ecom: 
+= (int, ref Expropagate) 10 2
+  tuple (int, ref Expropagate) 10 1
+    seq nothing 10 1
+      name exepid int 0 0
+      seq nothing 10 1
+        name exprop ref Expropagate 0 0
+  <- (int, ref Expropagate) 10 1
+    name startchan chan of (int, ref Expropagate) 0 0
+ecom: 
+<- (int, ref Expropagate) 10 1
+  name startchan chan of (int, ref Expropagate) 0 0
+ecom to: 
+name exepid (int, ref Expropagate) 0 0
+ecom: 
+= ref Redirlist 10 1
+  name r ref Redirlist 0 0
+  name nil polymorphic type 1 0
+ecom: 
+name nil ref Redirlist 1 0
+ecom to: 
+name r ref Redirlist 0 0
+ecom: 
+= list of ref Listnode 10 2
+  name bqlist list of ref Listnode 0 0
+  call list of ref Listnode 10 2
+    name getbq fn(nil: ref Context, fd: ref Sys->FD, seps: string): list of ref Listnode 11 1
+    seq no type 10 2
+      name ctxt ref Context 0 0
+      seq no type 10 2
+        * ref Sys->FD 10 1
+          indx big 10 1
+            name fds array of ref Sys->FD 0 0
+            const (0) int 6 0
+        seq no type 10 1
+          name seps string 0 0
+ecom: 
+call list of ref Listnode 10 2
+  name getbq fn(nil: ref Context, fd: ref Sys->FD, seps: string): list of ref Listnode 11 1
+  seq no type 10 2
+    name ctxt ref Context 0 0
+    seq no type 10 2
+      * ref Sys->FD 10 1
+        indx big 10 1
+          name fds array of ref Sys->FD 0 0
+          const (0) int 6 0
+      seq no type 10 1
+        name seps string 0 0
+ecom to: 
+name bqlist list of ref Listnode 0 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b91 big 0 0
+    const (64) int 6 0
+ecom: 
+* ref Sys->FD 10 1
+  indx big 10 1
+    name fds array of ref Sys->FD 0 0
+    const (0) int 6 0
+ecom to: 
+* ref Sys->FD 8 0
+  + int 15 0
+    name .b91 big 0 0
+    const (72) int 6 0
+eacom: 
+* ref Sys->FD 10 1
+  indx big 10 1
+    name fds array of ref Sys->FD 0 0
+    const (0) int 6 0
+generate desc for big
+ecom: 
+indx big 10 1
+  name fds array of ref Sys->FD 0 0
+  const (0) int 6 0
+ecom to: 
+name .b89 big 0 0
+ecom: 
+name seps string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b91 big 0 0
+    const (80) int 6 0
+ecom: 
+used string 10 2
+  call string 10 2
+    name waitfor fn(ctxt: ref Context, pids: list of int): string 11 1
+    seq no type 10 1
+      name ctxt ref Context 0 0
+      seq no type 10 1
+        :: list of int 10 1
+          name exepid int 0 0
+          name nil polymorphic type 1 0
+ecom: 
+call string 10 2
+  name waitfor fn(ctxt: ref Context, pids: list of int): string 11 1
+  seq no type 10 1
+    name ctxt ref Context 0 0
+    seq no type 10 1
+      :: list of int 10 1
+        name exepid int 0 0
+        name nil polymorphic type 1 0
+ecom to: 
+name .t93 string 0 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b91 big 0 0
+    const (64) int 6 0
+ecom: 
+:: list of int 10 1
+  name exepid int 0 0
+  name nil polymorphic type 1 0
+ecom to: 
+* list of int 8 0
+  + int 15 0
+    name .b91 big 0 0
+    const (72) int 6 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+name .t90 list of int 0 0
+ecom: 
+= list of int 10 1
+  name .t90 list of int 0 0
+  name nil list of int 1 0
+ecom: 
+name nil list of int 1 0
+ecom to: 
+name .t90 list of int 0 0
+ecom: 
+= string 10 1
+  name .t93 string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name .t93 string 0 0
+ecom: 
+raise nothing 10 1
+  * string 8 0
+    name exprop ref Expropagate 0 0
+ecom: 
+tuple (list of ref Listnode, polymorphic type) 10 1
+  seq no type 10 1
+    name bqlist list of ref Listnode 0 0
+    seq no type 10 1
+      name nil polymorphic type 1 0
+ecom to: 
+* (list of ref Listnode, polymorphic type) 8 0
+  name .ret int 0 0
+ecom: 
+name bqlist list of ref Listnode 0 0
+ecom to: 
+* list of ref Listnode 8 0
+  + int 15 1
+    adr int 15 1
+      * (list of ref Listnode, polymorphic type) 8 0
+        name .ret int 0 0
+    const (0) int 6 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* polymorphic type 8 0
+  + int 15 1
+    adr int 15 1
+      * (list of ref Listnode, polymorphic type) 8 0
+        name .ret int 0 0
+    const (8) int 6 0
+fn: bq
+64: argument ctxt ref Context ref 4
+72: argument cmd list of ref Listnode ref 1
+80: argument seps string ref 1
+88: local exepid int ref 2
+96: local exprop ref Expropagate ref 3
+104: local .t88 int ref 1
+112: local .b91 big ref 6
+120: local fds array of ref Sys->FD ref 5
+128: local .b89 big ref 3
+136: local r ref Redirlist ref 3
+144: local startchan chan of (int, ref Expropagate) ref 3
+152: local bqlist list of ref Listnode ref 2
+160: local .t90 string ref 1
+168: local .t93 list of Redirword ref 1
+176: local .b92 Redirword ref 1
+generate desc for bq
+descmap offset 0
+descmap ctxt type ref Context offset 64 (d->offset=64 start=0) returns 64
+descmap cmd type list of ref Listnode offset 72 (d->offset=72 start=0) returns 72
+descmap seps type string offset 80 (d->offset=80 start=0) returns 80
+descmap exepid type int offset 88 (d->offset=88 start=0) returns -1
+descmap exprop type ref Expropagate offset 96 (d->offset=96 start=0) returns 96
+descmap .t88 type int offset 104 (d->offset=104 start=0) returns -1
+descmap .b91 type big offset 112 (d->offset=112 start=0) returns -1
+descmap fds type array of ref Sys->FD offset 120 (d->offset=120 start=0) returns 120
+descmap .b89 type big offset 128 (d->offset=128 start=0) returns -1
+descmap r type ref Redirlist offset 136 (d->offset=136 start=0) returns 136
+descmap startchan type chan of (int, ref Expropagate) offset 144 (d->offset=144 start=0) returns 144
+descmap bqlist type list of ref Listnode offset 152 (d->offset=152 start=0) returns 152
+descmap .t90 type string offset 160 (d->offset=160 start=0) returns 160
+descmap .t93 type list of Redirword offset 168 (d->offset=168 start=0) returns 168
+descmap adt offset 176
+descmap offset 176
+descmap fd type ref Sys->FD offset 176 (d->offset=0 start=176) returns 176
+descmap w type string offset 184 (d->offset=8 start=176) returns 184
+descmap adt offset 192
+descmap offset 192
+descmap rtype type int offset 192 (d->offset=0 start=192) returns -1
+descmap fd1 type int offset 196 (d->offset=4 start=192) returns -1
+descmap fd2 type int offset 200 (d->offset=8 start=192) returns -1
+descmap r type Redir offset 192 (d->offset=16 start=176) returns -1
+descmap .b92 type Redirword offset 176 (d->offset=176 start=0) returns 184
+fncom: rdir 2 418928
+fncom: concatwords 3 4189e8
+ecom: 
+= string 10 2
+  * string 8 0
+    + int 15 1
+      name p1 ref Listnode 0 0
+      const word (8) int 6 0
+  call string 10 2
+    name cmd2string fn(n: ref Node): string 11 1
+    seq no type 10 1
+      * ref Node 8 0
+        name p1 ref Listnode 0 0
+ecom: 
+call string 10 2
+  name cmd2string fn(n: ref Node): string 11 1
+  seq no type 10 1
+    * ref Node 8 0
+      name p1 ref Listnode 0 0
+ecom to: 
+* string 8 0
+  + int 15 1
+    name p1 ref Listnode 0 0
+    const word (8) int 6 0
+generate desc for big
+ecom: 
+* ref Node 8 0
+  name p1 ref Listnode 0 0
+ecom to: 
+* ref Node 8 0
+  + int 15 0
+    name .b94 big 0 0
+    const (64) int 6 0
+ecom: 
+= string 10 2
+  * string 8 0
+    + int 15 1
+      name p2 ref Listnode 0 0
+      const word (8) int 6 0
+  call string 10 2
+    name cmd2string fn(n: ref Node): string 11 1
+    seq no type 10 1
+      * ref Node 8 0
+        name p2 ref Listnode 0 0
+ecom: 
+call string 10 2
+  name cmd2string fn(n: ref Node): string 11 1
+  seq no type 10 1
+    * ref Node 8 0
+      name p2 ref Listnode 0 0
+ecom to: 
+* string 8 0
+  + int 15 1
+    name p2 ref Listnode 0 0
+    const word (8) int 6 0
+generate desc for big
+ecom: 
+* ref Node 8 0
+  name p2 ref Listnode 0 0
+ecom to: 
+* ref Node 8 0
+  + int 15 0
+    name .b94 big 0 0
+    const (64) int 6 0
+ecom: 
+ref ref Listnode 10 1
+  tuple Listnode 10 1
+    seq no type 10 1
+      name nil polymorphic type 1 0
+      seq no type 10 1
+        + string 10 1
+          * string 8 0
+            + int 15 1
+              name p1 ref Listnode 0 0
+              const word (8) int 6 0
+          * string 8 0
+            + int 15 1
+              name p2 ref Listnode 0 0
+              const word (8) int 6 0
+ecom to: 
+* ref Listnode 8 0
+  name .ret int 0 0
+generate desc for Listnode
+ecom: 
+tuple Listnode 10 1
+  seq no type 10 1
+    name nil polymorphic type 1 0
+    seq no type 10 1
+      + string 10 1
+        * string 8 0
+          + int 15 1
+            name p1 ref Listnode 0 0
+            const word (8) int 6 0
+        * string 8 0
+          + int 15 1
+            name p2 ref Listnode 0 0
+            const word (8) int 6 0
+ecom to: 
+* Listnode 8 0
+  name .t95 ref Listnode 0 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* ref Node 8 0
+  + int 15 1
+    adr int 15 1
+      * Listnode 8 0
+        name .t95 ref Listnode 0 0
+    const (0) int 6 0
+ecom: 
++ string 10 1
+  * string 8 0
+    + int 15 1
+      name p1 ref Listnode 0 0
+      const word (8) int 6 0
+  * string 8 0
+    + int 15 1
+      name p2 ref Listnode 0 0
+      const word (8) int 6 0
+ecom to: 
+* string 8 0
+  + int 15 1
+    adr int 15 1
+      * Listnode 8 0
+        name .t95 ref Listnode 0 0
+    const (8) int 6 0
+ecom: 
+* string 8 0
+  + int 15 1
+    name p1 ref Listnode 0 0
+    const word (8) int 6 0
+ecom to: 
+name .t96 string 0 0
+ecom: 
+= string 10 1
+  name .t96 string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name .t96 string 0 0
+ecom: 
+= ref Listnode 10 1
+  name .t95 ref Listnode 0 0
+  name nil ref Listnode 1 0
+ecom: 
+name nil ref Listnode 1 0
+ecom to: 
+name .t95 ref Listnode 0 0
+fn: concatwords
+64: argument p1 ref Listnode ref 5
+72: argument p2 ref Listnode ref 5
+80: local .b94 big ref 2
+88: local .t95 ref Listnode ref 1
+96: local .t96 string ref 1
+generate desc for concatwords
+descmap offset 0
+descmap p1 type ref Listnode offset 64 (d->offset=64 start=0) returns 64
+descmap p2 type ref Listnode offset 72 (d->offset=72 start=0) returns 72
+descmap .b94 type big offset 80 (d->offset=80 start=0) returns -1
+descmap .t95 type ref Listnode offset 88 (d->offset=88 start=0) returns 88
+descmap .t96 type string offset 96 (d->offset=96 start=0) returns 96
+fncom: concat 2 418aa8
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* polymorphic type 8 0
+  name .ret int 0 0
+ecom: 
+call no type 10 2
+  name fail fn(ctxt: self ref Context, ename: string, err: string) 11 1
+  seq nothing 10 1
+    name ctxt ref Context 0 0
+    seq no type 10 1
+      const bad concatenation string 1 0
+      seq no type 10 1
+        const sh: null list in concatenation string 1 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b97 big 0 0
+    const (64) int 6 0
+ecom: 
+const bad concatenation string 1 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b97 big 0 0
+    const (72) int 6 0
+ecom: 
+const sh: null list in concatenation string 1 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b97 big 0 0
+    const (80) int 6 0
+eacom: 
+tl list of ref Listnode 10 1
+  name nl1 list of ref Listnode 0 0
+ecom: 
+tl list of ref Listnode 10 1
+  name nl1 list of ref Listnode 0 0
+ecom to: 
+name .t98 list of ref Listnode 0 0
+ecom: 
+= list of ref Listnode 10 1
+  name .t98 list of ref Listnode 0 0
+  name nil list of ref Listnode 1 0
+ecom: 
+name nil list of ref Listnode 1 0
+ecom to: 
+name .t98 list of ref Listnode 0 0
+eacom: 
+tl list of ref Listnode 10 1
+  name nl2 list of ref Listnode 0 0
+ecom: 
+tl list of ref Listnode 10 1
+  name nl2 list of ref Listnode 0 0
+ecom to: 
+name .t98 list of ref Listnode 0 0
+ecom: 
+= list of ref Listnode 10 1
+  name .t98 list of ref Listnode 0 0
+  name nil list of ref Listnode 1 0
+ecom: 
+name nil list of ref Listnode 1 0
+ecom to: 
+name .t98 list of ref Listnode 0 0
+ecom: 
+= list of ref Listnode 10 1
+  name p1 list of ref Listnode 0 0
+  name nl1 list of ref Listnode 0 0
+ecom: 
+name nl1 list of ref Listnode 0 0
+ecom to: 
+name p1 list of ref Listnode 0 0
+ecom: 
+= list of ref Listnode 10 1
+  name p2 list of ref Listnode 0 0
+    name p1 list of ref Listnode 0 0
+  name nl2 list of ref Listnode 0 0
+ecom: 
+name nl2 list of ref Listnode 0 0
+ecom to: 
+name p2 list of ref Listnode 0 0
+  name p1 list of ref Listnode 0 0
+ecom: 
+= list of ref Listnode 10 2
+  name ret list of ref Listnode 0 0
+  :: list of ref Listnode 10 2
+    call ref Listnode 10 2
+      name concatwords fn(p1: ref Listnode, p2: ref Listnode): ref Listnode 11 1
+      seq no type 10 2
+        hd ref Listnode 10 1
+          name p1 list of ref Listnode 0 0
+        seq no type 10 1
+          hd ref Listnode 10 1
+            name p2 list of ref Listnode 0 0
+    name ret list of ref Listnode 0 0
+ecom: 
+:: list of ref Listnode 10 2
+  call ref Listnode 10 2
+    name concatwords fn(p1: ref Listnode, p2: ref Listnode): ref Listnode 11 1
+    seq no type 10 2
+      hd ref Listnode 10 1
+        name p1 list of ref Listnode 0 0
+      seq no type 10 1
+        hd ref Listnode 10 1
+          name p2 list of ref Listnode 0 0
+  name ret list of ref Listnode 0 0
+ecom to: 
+name ret list of ref Listnode 0 0
+eacom: 
+call ref Listnode 10 2
+  name concatwords fn(p1: ref Listnode, p2: ref Listnode): ref Listnode 11 1
+  seq no type 10 2
+    hd ref Listnode 10 1
+      name p1 list of ref Listnode 0 0
+    seq no type 10 1
+      hd ref Listnode 10 1
+        name p2 list of ref Listnode 0 0
+ecom: 
+call ref Listnode 10 2
+  name concatwords fn(p1: ref Listnode, p2: ref Listnode): ref Listnode 11 1
+  seq no type 10 2
+    hd ref Listnode 10 1
+      name p1 list of ref Listnode 0 0
+    seq no type 10 1
+      hd ref Listnode 10 1
+        name p2 list of ref Listnode 0 0
+ecom to: 
+name .t98 ref Listnode 0 0
+generate desc for big
+ecom: 
+hd ref Listnode 10 1
+  name p1 list of ref Listnode 0 0
+ecom to: 
+* ref Listnode 8 0
+  + int 15 0
+    name .b97 big 0 0
+    const (64) int 6 0
+ecom: 
+hd ref Listnode 10 1
+  name p2 list of ref Listnode 0 0
+ecom to: 
+* ref Listnode 8 0
+  + int 15 0
+    name .b97 big 0 0
+    const (72) int 6 0
+ecom: 
+= ref Listnode 10 1
+  name .t98 ref Listnode 0 0
+  name nil ref Listnode 1 0
+ecom: 
+name nil ref Listnode 1 0
+ecom to: 
+name .t98 ref Listnode 0 0
+ecom: 
+= list of ref Listnode 10 1
+  name p2 list of ref Listnode 0 0
+  tl list of ref Listnode 10 1
+    name p2 list of ref Listnode 0 0
+ecom: 
+tl list of ref Listnode 10 1
+  name p2 list of ref Listnode 0 0
+ecom to: 
+name p2 list of ref Listnode 0 0
+ecom: 
+= list of ref Listnode 10 1
+  name p1 list of ref Listnode 0 0
+  tl list of ref Listnode 10 1
+    name p1 list of ref Listnode 0 0
+ecom: 
+tl list of ref Listnode 10 1
+  name p1 list of ref Listnode 0 0
+ecom to: 
+name p1 list of ref Listnode 0 0
+ecom: 
+= list of ref Listnode 10 1
+  name p2 list of ref Listnode 0 0
+  name nil list of ref Listnode 1 0
+ecom: 
+name nil list of ref Listnode 1 0
+ecom to: 
+name p2 list of ref Listnode 0 0
+ecom: 
+= list of ref Listnode 10 1
+  name p1 list of ref Listnode 0 0
+  name nil list of ref Listnode 1 0
+ecom: 
+name nil list of ref Listnode 1 0
+ecom to: 
+name p1 list of ref Listnode 0 0
+ecom: 
+len int 10 1
+  name nl2 list of ref Listnode 0 0
+ecom to: 
+name .t99 int 0 0
+eacom: 
+len int 10 1
+  name nl1 list of ref Listnode 0 0
+ecom: 
+len int 10 1
+  name nl1 list of ref Listnode 0 0
+ecom to: 
+name .t100 int 0 0
+ecom: 
+call no type 10 2
+  name fail fn(ctxt: self ref Context, ename: string, err: string) 11 1
+  seq nothing 10 1
+    name ctxt ref Context 0 0
+    seq no type 10 1
+      const bad concatenation string 1 0
+      seq no type 10 1
+        const sh: lists of differing sizes can't be concatenated string 1 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b97 big 0 0
+    const (64) int 6 0
+ecom: 
+const bad concatenation string 1 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b97 big 0 0
+    const (72) int 6 0
+ecom: 
+const sh: lists of differing sizes can't be concatenated string 1 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b97 big 0 0
+    const (80) int 6 0
+ecom: 
+= list of ref Listnode 10 2
+  name ret list of ref Listnode 0 0
+  :: list of ref Listnode 10 2
+    call ref Listnode 10 2
+      name concatwords fn(p1: ref Listnode, p2: ref Listnode): ref Listnode 11 1
+      seq no type 10 2
+        hd ref Listnode 10 1
+          name nl1 list of ref Listnode 0 0
+        seq no type 10 1
+          hd ref Listnode 10 1
+            name nl2 list of ref Listnode 0 0
+    name ret list of ref Listnode 0 0
+ecom: 
+:: list of ref Listnode 10 2
+  call ref Listnode 10 2
+    name concatwords fn(p1: ref Listnode, p2: ref Listnode): ref Listnode 11 1
+    seq no type 10 2
+      hd ref Listnode 10 1
+        name nl1 list of ref Listnode 0 0
+      seq no type 10 1
+        hd ref Listnode 10 1
+          name nl2 list of ref Listnode 0 0
+  name ret list of ref Listnode 0 0
+ecom to: 
+name ret list of ref Listnode 0 0
+eacom: 
+call ref Listnode 10 2
+  name concatwords fn(p1: ref Listnode, p2: ref Listnode): ref Listnode 11 1
+  seq no type 10 2
+    hd ref Listnode 10 1
+      name nl1 list of ref Listnode 0 0
+    seq no type 10 1
+      hd ref Listnode 10 1
+        name nl2 list of ref Listnode 0 0
+ecom: 
+call ref Listnode 10 2
+  name concatwords fn(p1: ref Listnode, p2: ref Listnode): ref Listnode 11 1
+  seq no type 10 2
+    hd ref Listnode 10 1
+      name nl1 list of ref Listnode 0 0
+    seq no type 10 1
+      hd ref Listnode 10 1
+        name nl2 list of ref Listnode 0 0
+ecom to: 
+name .t98 ref Listnode 0 0
+generate desc for big
+ecom: 
+hd ref Listnode 10 1
+  name nl1 list of ref Listnode 0 0
+ecom to: 
+* ref Listnode 8 0
+  + int 15 0
+    name .b97 big 0 0
+    const (64) int 6 0
+ecom: 
+hd ref Listnode 10 1
+  name nl2 list of ref Listnode 0 0
+ecom to: 
+* ref Listnode 8 0
+  + int 15 0
+    name .b97 big 0 0
+    const (72) int 6 0
+ecom: 
+= ref Listnode 10 1
+  name .t98 ref Listnode 0 0
+  name nil ref Listnode 1 0
+ecom: 
+name nil ref Listnode 1 0
+ecom to: 
+name .t98 ref Listnode 0 0
+ecom: 
+= (list of ref Listnode, list of ref Listnode) 10 2
+  tuple (list of ref Listnode, list of ref Listnode) 10 1
+    seq no type 10 1
+      name nl1 list of ref Listnode 0 0
+      seq no type 10 1
+        name nl2 list of ref Listnode 0 0
+  tuple (list of ref Listnode, list of ref Listnode) 10 2
+    seq no type 10 2
+      tl list of ref Listnode 10 1
+        name nl1 list of ref Listnode 0 0
+      seq no type 10 1
+        tl list of ref Listnode 10 1
+          name nl2 list of ref Listnode 0 0
+generate desc for (list of ref Listnode, list of ref Listnode)
+descmap adt offset 0
+descmap offset 0
+descmap t0 type list of ref Listnode offset 0 (d->offset=0 start=0) returns 0
+descmap t1 type list of ref Listnode offset 8 (d->offset=8 start=0) returns 8
+generate desc for (list of ref Listnode, list of ref Listnode)
+	desc	$-1,16,"c0"
+ecom: 
+tuple (list of ref Listnode, list of ref Listnode) 10 2
+  seq no type 10 2
+    tl list of ref Listnode 10 1
+      name nl1 list of ref Listnode 0 0
+    seq no type 10 1
+      tl list of ref Listnode 10 1
+        name nl2 list of ref Listnode 0 0
+ecom to: 
+name .b101 (list of ref Listnode, list of ref Listnode) 0 0
+ecom: 
+tl list of ref Listnode 10 1
+  name nl1 list of ref Listnode 0 0
+ecom to: 
+* list of ref Listnode 0 0
+  + int 13 1
+    adr int 13 1
+      name .b101 (list of ref Listnode, list of ref Listnode) 0 0
+    const (0) int 6 0
+ecom: 
+tl list of ref Listnode 10 1
+  name nl2 list of ref Listnode 0 0
+ecom to: 
+* list of ref Listnode 0 0
+  + int 13 1
+    adr int 13 1
+      name .b101 (list of ref Listnode, list of ref Listnode) 0 0
+    const (8) int 6 0
+ecom: 
+= list of ref Listnode 10 1
+  * list of ref Listnode 0 0
+    adr int 13 1
+      name .b101 (list of ref Listnode, list of ref Listnode) 0 0
+  name nil list of ref Listnode 1 0
+ecom: 
+name nil list of ref Listnode 1 0
+ecom to: 
+* list of ref Listnode 0 0
+  adr int 13 1
+    name .b101 (list of ref Listnode, list of ref Listnode) 0 0
+ecom: 
+= list of ref Listnode 10 1
+  * list of ref Listnode 0 0
+    + int 13 1
+      adr int 13 1
+        name .b101 (list of ref Listnode, list of ref Listnode) 0 0
+      const t1 (8) int 6 0
+  name nil list of ref Listnode 1 0
+ecom: 
+name nil list of ref Listnode 1 0
+ecom to: 
+* list of ref Listnode 0 0
+  + int 13 1
+    adr int 13 1
+      name .b101 (list of ref Listnode, list of ref Listnode) 0 0
+    const t1 (8) int 6 0
+ecom: 
+call list of ref Listnode 10 2
+  name revlist fn(l: list of ref Listnode): list of ref Listnode 11 1
+  seq no type 10 1
+    name ret list of ref Listnode 0 0
+ecom to: 
+* list of ref Listnode 8 0
+  name .ret int 0 0
+generate desc for big
+ecom: 
+name ret list of ref Listnode 0 0
+ecom to: 
+* list of ref Listnode 8 0
+  + int 15 0
+    name .b97 big 0 0
+    const (64) int 6 0
+fn: concat
+64: argument ctxt ref Context ref 2
+72: argument nl1 list of ref Listnode ref 9
+80: argument nl2 list of ref Listnode ref 8
+88: local .t100 int ref 1
+92: local .t99 int ref 1
+96: local .b97 big ref 5
+104: local p1 list of ref Listnode ref 5
+112: local p2 list of ref Listnode ref 5
+120: local ret list of ref Listnode ref 5
+128: local .t98 list of ref Listnode ref 1
+136: local .b101 (list of ref Listnode, list of ref Listnode) ref 1
+generate desc for concat
+descmap offset 0
+descmap ctxt type ref Context offset 64 (d->offset=64 start=0) returns 64
+descmap nl1 type list of ref Listnode offset 72 (d->offset=72 start=0) returns 72
+descmap nl2 type list of ref Listnode offset 80 (d->offset=80 start=0) returns 80
+descmap .t100 type int offset 88 (d->offset=88 start=0) returns -1
+descmap .t99 type int offset 92 (d->offset=92 start=0) returns -1
+descmap .b97 type big offset 96 (d->offset=96 start=0) returns -1
+descmap p1 type list of ref Listnode offset 104 (d->offset=104 start=0) returns 104
+descmap p2 type list of ref Listnode offset 112 (d->offset=112 start=0) returns 112
+descmap ret type list of ref Listnode offset 120 (d->offset=120 start=0) returns 120
+descmap .t98 type list of ref Listnode offset 128 (d->offset=128 start=0) returns 128
+descmap adt offset 136
+descmap offset 136
+descmap t0 type list of ref Listnode offset 136 (d->offset=0 start=136) returns 136
+descmap t1 type list of ref Listnode offset 144 (d->offset=8 start=136) returns 144
+descmap .b101 type (list of ref Listnode, list of ref Listnode) offset 136 (d->offset=136 start=0) returns 144
+fncom: runasync 7 418b68
+ecom: 
+= int 10 2
+  name pid int 0 0
+  call int 10 2
+    -> fn(flags: int, movefd: list of int): int 12 1
+      name sys Sys 1 0
+      name pctl nothing 11 1
+    seq no type 10 1
+      const FORKFD (2) int 6 0
+      seq no type 10 1
+        name nil list of int 1 0
+ecom: 
+call int 10 2
+  -> fn(flags: int, movefd: list of int): int 12 1
+    name sys Sys 1 0
+    name pctl nothing 11 1
+  seq no type 10 1
+    const FORKFD (2) int 6 0
+    seq no type 10 1
+      name nil list of int 1 0
+ecom to: 
+name pid int 0 0
+generate desc for big
+ecom: 
+const FORKFD (2) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b102 big 0 0
+    const (64) int 6 0
+ecom: 
+name nil list of int 1 0
+ecom to: 
+* list of int 8 0
+  + int 15 0
+    name .b102 big 0 0
+    const (72) int 6 0
+ecom: 
+= ref Context 10 2
+  name ctxt ref Context 0 0
+  call ref Context 10 2
+    name copy fn(ctxt: self ref Context, copyenv: int): ref Context 11 1
+    seq nothing 10 1
+      name ctxt ref Context 0 0
+      seq no type 10 1
+        name copyenv int 0 0
+ecom: 
+call ref Context 10 2
+  name copy fn(ctxt: self ref Context, copyenv: int): ref Context 11 1
+  seq nothing 10 1
+    name ctxt ref Context 0 0
+    seq no type 10 1
+      name copyenv int 0 0
+ecom to: 
+name ctxt ref Context 0 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b102 big 0 0
+    const (64) int 6 0
+ecom: 
+name copyenv int 0 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b102 big 0 0
+    const (72) int 6 0
+ecom: 
+= ref Expropagate 10 1
+  name exprop ref Expropagate 0 0
+  ref ref Expropagate 10 1
+    name Expropagate Expropagate 10 1
+ecom: 
+ref ref Expropagate 10 1
+  name Expropagate Expropagate 10 1
+ecom to: 
+name exprop ref Expropagate 0 0
+generate desc for Expropagate
+descmap adt offset 0
+descmap offset 0
+descmap name type string offset 0 (d->offset=0 start=0) returns 0
+generate desc for Expropagate
+	desc	$-1,8,"80"
+ecom: 
+= list of int 10 2
+  name newfdl list of int 0 0
+  call list of int 10 2
+    name doredirs fn(ctxt: ref Context, redirs: ref Redirlist): list of int 11 1
+    seq no type 10 1
+      name ctxt ref Context 0 0
+      seq no type 10 1
+        name redirs ref Redirlist 0 0
+ecom: 
+call list of int 10 2
+  name doredirs fn(ctxt: ref Context, redirs: ref Redirlist): list of int 11 1
+  seq no type 10 1
+    name ctxt ref Context 0 0
+    seq no type 10 1
+      name redirs ref Redirlist 0 0
+ecom to: 
+name newfdl list of int 0 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b102 big 0 0
+    const (64) int 6 0
+ecom: 
+name redirs ref Redirlist 0 0
+ecom to: 
+* ref Redirlist 8 0
+  + int 15 0
+    name .b102 big 0 0
+    const (72) int 6 0
+ecom: 
+= ref Redirlist 10 1
+  name redirs ref Redirlist 0 0
+  name nil polymorphic type 1 0
+ecom: 
+name nil ref Redirlist 1 0
+ecom to: 
+name redirs ref Redirlist 0 0
+ecom: 
+used int 10 2
+  call int 10 2
+    -> fn(flags: int, movefd: list of int): int 12 1
+      name sys Sys 1 0
+      name pctl nothing 11 1
+    seq no type 10 1
+      const NEWFD (1) int 6 0
+      seq no type 10 1
+        name newfdl list of int 0 0
+ecom: 
+call int 10 2
+  -> fn(flags: int, movefd: list of int): int 12 1
+    name sys Sys 1 0
+    name pctl nothing 11 1
+  seq no type 10 1
+    const NEWFD (1) int 6 0
+    seq no type 10 1
+      name newfdl list of int 0 0
+ecom to: 
+name .t103 int 0 0
+generate desc for big
+ecom: 
+const NEWFD (1) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b102 big 0 0
+    const (64) int 6 0
+ecom: 
+name newfdl list of int 0 0
+ecom to: 
+* list of int 8 0
+  + int 15 0
+    name .b102 big 0 0
+    const (72) int 6 0
+ecom: 
+= ref Sys->FD 10 1
+  * ref Sys->FD 8 0
+    + int 15 1
+      name ctxt ref Context 0 0
+      const waitfd (8) int 6 0
+  call ref Sys->FD 10 1
+    name waitfd fn(): ref Sys->FD 11 1
+ecom: 
+call ref Sys->FD 10 1
+  name waitfd fn(): ref Sys->FD 11 1
+ecom to: 
+* ref Sys->FD 8 0
+  + int 15 1
+    name ctxt ref Context 0 0
+    const waitfd (8) int 6 0
+generate desc for big
+ecom: 
+<-= (int, ref Expropagate) 10 1
+  name startchan chan of (int, ref Expropagate) 0 0
+  tuple (int, ref Expropagate) 10 1
+    seq no type 10 1
+      name pid int 0 0
+      seq no type 10 1
+        name exprop ref Expropagate 0 0
+eacom: 
+tuple (int, ref Expropagate) 10 1
+  seq no type 10 1
+    name pid int 0 0
+    seq no type 10 1
+      name exprop ref Expropagate 0 0
+generate desc for (int, ref Expropagate)
+descmap adt offset 0
+descmap offset 0
+descmap t0 type int offset 0 (d->offset=0 start=0) returns -1
+descmap t1 type ref Expropagate offset 8 (d->offset=8 start=0) returns 8
+generate desc for (int, ref Expropagate)
+	desc	$-1,16,"40"
+ecom: 
+tuple (int, ref Expropagate) 10 1
+  seq no type 10 1
+    name pid int 0 0
+    seq no type 10 1
+      name exprop ref Expropagate 0 0
+ecom to: 
+name .b104 (int, ref Expropagate) 0 0
+ecom: 
+name pid int 0 0
+ecom to: 
+* int 0 0
+  + int 13 1
+    adr int 13 1
+      name .b104 (int, ref Expropagate) 0 0
+    const (0) int 6 0
+ecom: 
+name exprop ref Expropagate 0 0
+ecom to: 
+* ref Expropagate 0 0
+  + int 13 1
+    adr int 13 1
+      name .b104 (int, ref Expropagate) 0 0
+    const (8) int 6 0
+ecom: 
+= ref Expropagate 10 1
+  * ref Expropagate 0 0
+    + int 13 1
+      adr int 13 1
+        name .b104 (int, ref Expropagate) 0 0
+      const t1 (8) int 6 0
+  name nil ref Expropagate 1 0
+ecom: 
+name nil ref Expropagate 1 0
+ecom to: 
+* ref Expropagate 0 0
+  + int 13 1
+    adr int 13 1
+      name .b104 (int, ref Expropagate) 0 0
+    const t1 (8) int 6 0
+ecom: 
+= chan of (int, ref Expropagate) 10 1
+  name startchan chan of (int, ref Expropagate) 0 0
+  name nil polymorphic type 1 0
+ecom: 
+name nil chan of (int, ref Expropagate) 1 0
+ecom to: 
+name startchan chan of (int, ref Expropagate) 0 0
+ecom: 
+= string 10 2
+  name status string 0 0
+  call string 10 2
+    name run fn(ctxt: self ref Context, args: list of ref Listnode, last: int): string 11 1
+    seq nothing 10 1
+      name ctxt ref Context 0 0
+      seq no type 10 1
+        name argv list of ref Listnode 0 0
+        seq no type 10 1
+          name copyenv int 0 0
+ecom: 
+call string 10 2
+  name run fn(ctxt: self ref Context, args: list of ref Listnode, last: int): string 11 1
+  seq nothing 10 1
+    name ctxt ref Context 0 0
+    seq no type 10 1
+      name argv list of ref Listnode 0 0
+      seq no type 10 1
+        name copyenv int 0 0
+ecom to: 
+name status string 0 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b102 big 0 0
+    const (64) int 6 0
+ecom: 
+name argv list of ref Listnode 0 0
+ecom to: 
+* list of ref Listnode 8 0
+  + int 15 0
+    name .b102 big 0 0
+    const (72) int 6 0
+ecom: 
+name copyenv int 0 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b102 big 0 0
+    const (80) int 6 0
+ecom: 
+= list of int 10 1
+  name newfdl list of int 0 0
+  name nil list of int 1 0
+ecom: 
+name nil list of int 1 0
+ecom to: 
+name newfdl list of int 0 0
+ecom: 
+= string 10 1
+  * string 8 0
+    name exprop ref Expropagate 0 0
+  name e string 0 0
+ecom: 
+name e string 0 0
+ecom to: 
+* string 8 0
+  name exprop ref Expropagate 0 0
+ecom: 
+<-= (int, ref Expropagate) 10 1
+  name startchan chan of (int, ref Expropagate) 0 0
+  tuple (int, ref Expropagate) 10 1
+    seq no type 10 1
+      name pid int 0 0
+      seq no type 10 1
+        name exprop ref Expropagate 0 0
+eacom: 
+tuple (int, ref Expropagate) 10 1
+  seq no type 10 1
+    name pid int 0 0
+    seq no type 10 1
+      name exprop ref Expropagate 0 0
+generate desc for (int, ref Expropagate)
+descmap adt offset 0
+descmap offset 0
+descmap t0 type int offset 0 (d->offset=0 start=0) returns -1
+descmap t1 type ref Expropagate offset 8 (d->offset=8 start=0) returns 8
+generate desc for (int, ref Expropagate)
+	desc	$-1,16,"40"
+ecom: 
+tuple (int, ref Expropagate) 10 1
+  seq no type 10 1
+    name pid int 0 0
+    seq no type 10 1
+      name exprop ref Expropagate 0 0
+ecom to: 
+name .b104 (int, ref Expropagate) 0 0
+ecom: 
+name pid int 0 0
+ecom to: 
+* int 0 0
+  + int 13 1
+    adr int 13 1
+      name .b104 (int, ref Expropagate) 0 0
+    const (0) int 6 0
+ecom: 
+name exprop ref Expropagate 0 0
+ecom to: 
+* ref Expropagate 0 0
+  + int 13 1
+    adr int 13 1
+      name .b104 (int, ref Expropagate) 0 0
+    const (8) int 6 0
+ecom: 
+= ref Expropagate 10 1
+  * ref Expropagate 0 0
+    + int 13 1
+      adr int 13 1
+        name .b104 (int, ref Expropagate) 0 0
+      const t1 (8) int 6 0
+  name nil ref Expropagate 1 0
+ecom: 
+name nil ref Expropagate 1 0
+ecom to: 
+* ref Expropagate 0 0
+  + int 13 1
+    adr int 13 1
+      name .b104 (int, ref Expropagate) 0 0
+    const t1 (8) int 6 0
+ecom: 
+raise nothing 10 1
+  name e string 0 0
+ecom: 
+raise nothing 10 1
+  + string 10 1
+    const fail: string 1 0
+    name status string 0 0
+eacom: 
++ string 10 1
+  const fail: string 1 0
+  name status string 0 0
+ecom: 
++ string 10 1
+  const fail: string 1 0
+  name status string 0 0
+ecom to: 
+name .t105 string 0 0
+ecom: 
+= string 10 1
+  name .t105 string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name .t105 string 0 0
+fn: runasync
+64: argument ctxt ref Context ref 5
+72: argument copyenv int ref 2
+80: argument argv list of ref Listnode ref 1
+88: argument redirs ref Redirlist ref 3
+96: argument startchan chan of (int, ref Expropagate) ref 4
+104: local e ref exception ref 3
+108: local pid int ref 3
+112: local .t103 int ref 1
+120: local .b102 big ref 6
+128: local exprop ref Expropagate ref 4
+136: local newfdl list of int ref 3
+144: local status string ref 3
+152: local .b104 (int, ref Expropagate) ref 2
+168: local .t105 string ref 1
+generate desc for runasync
+descmap offset 0
+descmap ctxt type ref Context offset 64 (d->offset=64 start=0) returns 64
+descmap copyenv type int offset 72 (d->offset=72 start=0) returns -1
+descmap argv type list of ref Listnode offset 80 (d->offset=80 start=0) returns 80
+descmap redirs type ref Redirlist offset 88 (d->offset=88 start=0) returns 88
+descmap startchan type chan of (int, ref Expropagate) offset 96 (d->offset=96 start=0) returns 96
+descmap e type ref exception offset 104 (d->offset=104 start=0) returns 104
+descmap pid type int offset 108 (d->offset=108 start=0) returns -1
+descmap .t103 type int offset 112 (d->offset=112 start=0) returns -1
+descmap .b102 type big offset 120 (d->offset=120 start=0) returns -1
+descmap exprop type ref Expropagate offset 128 (d->offset=128 start=0) returns 128
+descmap newfdl type list of int offset 136 (d->offset=136 start=0) returns 136
+descmap status type string offset 144 (d->offset=144 start=0) returns 144
+descmap adt offset 152
+descmap offset 152
+descmap t0 type int offset 152 (d->offset=0 start=152) returns -1
+descmap t1 type ref Expropagate offset 160 (d->offset=8 start=152) returns 160
+descmap .b104 type (int, ref Expropagate) offset 152 (d->offset=152 start=0) returns 160
+descmap .t105 type string offset 168 (d->offset=168 start=0) returns 168
+generate desc for e
+descmap offset 0
+descmap newfdl type list of int offset 136 (d->offset=136 start=0) returns 136
+fncom: runsync 2 418c28
+ecom: 
+= chan of (int, ref Expropagate) 10 1
+  name startchan chan of (int, ref Expropagate) 0 0
+  chan chan of (int, ref Expropagate) 10 1
+    const (0) int 6 0
+ecom: 
+chan chan of (int, ref Expropagate) 10 1
+  const (0) int 6 0
+ecom to: 
+name startchan chan of (int, ref Expropagate) 0 0
+generate desc for (int, ref Expropagate)
+descmap adt offset 0
+descmap offset 0
+descmap t0 type int offset 0 (d->offset=0 start=0) returns -1
+descmap t1 type ref Expropagate offset 8 (d->offset=8 start=0) returns 8
+generate desc for (int, ref Expropagate)
+	desc	$-1,16,"40"
+ecom: 
+spawn nothing 10 2
+  call no type 10 2
+    name runasync fn(ctxt: ref Context, copyenv: int, argv: list of ref Listnode, redirs: ref Redirlist, startchan: chan of (int, ref Expropagate)) 11 1
+    seq no type 10 1
+      name ctxt ref Context 0 0
+      seq no type 10 1
+        const (0) int 6 0
+        seq no type 10 1
+          name argv list of ref Listnode 0 0
+          seq no type 10 1
+            name redirs ref Redirlist 0 0
+            seq no type 10 1
+              name startchan chan of (int, ref Expropagate) 0 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b106 big 0 0
+    const (64) int 6 0
+ecom: 
+const (0) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b106 big 0 0
+    const (72) int 6 0
+ecom: 
+name argv list of ref Listnode 0 0
+ecom to: 
+* list of ref Listnode 8 0
+  + int 15 0
+    name .b106 big 0 0
+    const (80) int 6 0
+ecom: 
+name redirs ref Redirlist 0 0
+ecom to: 
+* ref Redirlist 8 0
+  + int 15 0
+    name .b106 big 0 0
+    const (88) int 6 0
+ecom: 
+name startchan chan of (int, ref Expropagate) 0 0
+ecom to: 
+* chan of (int, ref Expropagate) 8 0
+  + int 15 0
+    name .b106 big 0 0
+    const (96) int 6 0
+ecom: 
+= (int, ref Expropagate) 10 2
+  tuple (int, ref Expropagate) 10 1
+    seq nothing 10 1
+      name pid int 0 0
+      seq nothing 10 1
+        name exprop ref Expropagate 0 0
+    name startchan chan of (int, ref Expropagate) 0 0
+  <- (int, ref Expropagate) 10 1
+    name startchan chan of (int, ref Expropagate) 0 0
+generate desc for (int, ref Expropagate)
+ecom: 
+<- (int, ref Expropagate) 10 1
+  name startchan chan of (int, ref Expropagate) 0 0
+ecom to: 
+name .b107 (int, ref Expropagate) 0 0
+ecom: 
+= ref Expropagate 10 1
+  * ref Expropagate 0 0
+    + int 13 1
+      adr int 13 1
+        name .b107 (int, ref Expropagate) 0 0
+      const t1 (8) int 6 0
+  name nil ref Expropagate 1 0
+ecom: 
+name nil ref Expropagate 1 0
+ecom to: 
+* ref Expropagate 0 0
+  + int 13 1
+    adr int 13 1
+      name .b107 (int, ref Expropagate) 0 0
+    const t1 (8) int 6 0
+ecom: 
+= ref Redirlist 10 1
+  name redirs ref Redirlist 0 0
+  name nil polymorphic type 1 0
+ecom: 
+name nil ref Redirlist 1 0
+ecom to: 
+name redirs ref Redirlist 0 0
+ecom: 
+= string 10 2
+  name r string 0 0
+    tuple (int, ref Expropagate) 10 1
+      seq nothing 10 1
+        name pid int 0 0
+        seq nothing 10 1
+          name exprop ref Expropagate 0 0
+      name startchan chan of (int, ref Expropagate) 0 0
+  call string 10 2
+    name waitfor fn(ctxt: ref Context, pids: list of int): string 11 1
+    seq no type 10 1
+      name ctxt ref Context 0 0
+      seq no type 10 1
+        :: list of int 10 1
+          name pid int 0 0
+          name nil polymorphic type 1 0
+ecom: 
+call string 10 2
+  name waitfor fn(ctxt: ref Context, pids: list of int): string 11 1
+  seq no type 10 1
+    name ctxt ref Context 0 0
+    seq no type 10 1
+      :: list of int 10 1
+        name pid int 0 0
+        name nil polymorphic type 1 0
+ecom to: 
+name r string 0 0
+  tuple (int, ref Expropagate) 10 1
+    seq nothing 10 1
+      name pid int 0 0
+      seq nothing 10 1
+        name exprop ref Expropagate 0 0
+    name startchan chan of (int, ref Expropagate) 0 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b106 big 0 0
+    const (64) int 6 0
+ecom: 
+:: list of int 10 1
+  name pid int 0 0
+  name nil polymorphic type 1 0
+ecom to: 
+* list of int 8 0
+  + int 15 0
+    name .b106 big 0 0
+    const (72) int 6 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+name .t108 list of int 0 0
+ecom: 
+= list of int 10 1
+  name .t108 list of int 0 0
+  name nil list of int 1 0
+ecom: 
+name nil list of int 1 0
+ecom to: 
+name .t108 list of int 0 0
+ecom: 
+raise nothing 10 1
+  * string 8 0
+    name exprop ref Expropagate 0 0
+ecom: 
+name r string 0 0
+ecom to: 
+* string 8 0
+  name .ret int 0 0
+ecom: 
+= string 10 1
+  name r string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name r string 0 0
+ecom: 
+= ref Expropagate 10 1
+  name exprop ref Expropagate 0 0
+  name nil ref Expropagate 1 0
+ecom: 
+name nil ref Expropagate 1 0
+ecom to: 
+name exprop ref Expropagate 0 0
+ecom: 
+= chan of (int, ref Expropagate) 10 1
+  name startchan chan of (int, ref Expropagate) 0 0
+  name nil chan of (int, ref Expropagate) 1 0
+ecom: 
+name nil chan of (int, ref Expropagate) 1 0
+ecom to: 
+name startchan chan of (int, ref Expropagate) 0 0
+ecom: 
+= list of int 10 2
+  name newfdl list of int 0 0
+  call list of int 10 2
+    name doredirs fn(ctxt: ref Context, redirs: ref Redirlist): list of int 11 1
+    seq no type 10 1
+      name ctxt ref Context 0 0
+      seq no type 10 1
+        name redirs ref Redirlist 0 0
+ecom: 
+call list of int 10 2
+  name doredirs fn(ctxt: ref Context, redirs: ref Redirlist): list of int 11 1
+  seq no type 10 1
+    name ctxt ref Context 0 0
+    seq no type 10 1
+      name redirs ref Redirlist 0 0
+ecom to: 
+name newfdl list of int 0 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b106 big 0 0
+    const (64) int 6 0
+ecom: 
+name redirs ref Redirlist 0 0
+ecom to: 
+* ref Redirlist 8 0
+  + int 15 0
+    name .b106 big 0 0
+    const (72) int 6 0
+ecom: 
+= ref Redirlist 10 1
+  name redirs ref Redirlist 0 0
+  name nil polymorphic type 1 0
+ecom: 
+name nil ref Redirlist 1 0
+ecom to: 
+name redirs ref Redirlist 0 0
+ecom: 
+used int 10 2
+  call int 10 2
+    -> fn(flags: int, movefd: list of int): int 12 1
+      name sys Sys 1 0
+      name pctl nothing 11 1
+    seq no type 10 1
+      const NEWFD (1) int 6 0
+      seq no type 10 1
+        name newfdl list of int 0 0
+ecom: 
+call int 10 2
+  -> fn(flags: int, movefd: list of int): int 12 1
+    name sys Sys 1 0
+    name pctl nothing 11 1
+  seq no type 10 1
+    const NEWFD (1) int 6 0
+    seq no type 10 1
+      name newfdl list of int 0 0
+ecom to: 
+name .t109 int 0 0
+generate desc for big
+ecom: 
+const NEWFD (1) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b106 big 0 0
+    const (64) int 6 0
+ecom: 
+name newfdl list of int 0 0
+ecom to: 
+* list of int 8 0
+  + int 15 0
+    name .b106 big 0 0
+    const (72) int 6 0
+ecom: 
+call string 10 2
+  name run fn(ctxt: self ref Context, args: list of ref Listnode, last: int): string 11 1
+  seq nothing 10 1
+    name ctxt ref Context 0 0
+    seq no type 10 1
+      name argv list of ref Listnode 0 0
+      seq no type 10 1
+        name last int 0 0
+ecom to: 
+* string 8 0
+  name .ret int 0 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b106 big 0 0
+    const (64) int 6 0
+ecom: 
+name argv list of ref Listnode 0 0
+ecom to: 
+* list of ref Listnode 8 0
+  + int 15 0
+    name .b106 big 0 0
+    const (72) int 6 0
+ecom: 
+name last int 0 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b106 big 0 0
+    const (80) int 6 0
+ecom: 
+= list of int 10 1
+  name newfdl list of int 0 0
+  name nil list of int 1 0
+ecom: 
+name nil list of int 1 0
+ecom to: 
+name newfdl list of int 0 0
+fn: runsync
+64: argument ctxt ref Context ref 4
+72: argument argv list of ref Listnode ref 2
+80: argument redirs ref Redirlist ref 6
+88: argument last int ref 3
+96: local pid int ref 2
+104: local exprop ref Expropagate ref 3
+112: local .t109 int ref 1
+120: local .b106 big ref 5
+128: local newfdl list of int ref 3
+136: local startchan chan of (int, ref Expropagate) ref 3
+144: local r string ref 2
+152: local .t108 list of int ref 1
+160: local .b107 (int, ref Expropagate) ref 1
+generate desc for runsync
+descmap offset 0
+descmap ctxt type ref Context offset 64 (d->offset=64 start=0) returns 64
+descmap argv type list of ref Listnode offset 72 (d->offset=72 start=0) returns 72
+descmap redirs type ref Redirlist offset 80 (d->offset=80 start=0) returns 80
+descmap last type int offset 88 (d->offset=88 start=0) returns -1
+descmap pid type int offset 96 (d->offset=96 start=0) returns -1
+descmap exprop type ref Expropagate offset 104 (d->offset=104 start=0) returns 104
+descmap .t109 type int offset 112 (d->offset=112 start=0) returns -1
+descmap .b106 type big offset 120 (d->offset=120 start=0) returns -1
+descmap newfdl type list of int offset 128 (d->offset=128 start=0) returns 128
+descmap startchan type chan of (int, ref Expropagate) offset 136 (d->offset=136 start=0) returns 136
+descmap r type string offset 144 (d->offset=144 start=0) returns 144
+descmap .t108 type list of int offset 152 (d->offset=152 start=0) returns 152
+descmap adt offset 160
+descmap offset 160
+descmap t0 type int offset 160 (d->offset=0 start=160) returns -1
+descmap t1 type ref Expropagate offset 168 (d->offset=8 start=160) returns 168
+descmap .b107 type (int, ref Expropagate) offset 160 (d->offset=160 start=0) returns 168
+fncom: absolute 2 418ce8
+eacom: 
+len int 10 1
+  name p string 0 0
+ecom: 
+len int 10 1
+  name p string 0 0
+ecom to: 
+name .t110 int 0 0
+ecom: 
+const (0) int 6 0
+ecom to: 
+* int 8 0
+  name .ret int 0 0
+eacom: 
+inds int 10 1
+  name p string 0 0
+  const (0) int 6 0
+ecom: 
+inds int 10 1
+  name p string 0 0
+  const (0) int 6 0
+ecom to: 
+name .t110 int 0 0
+eacom: 
+inds int 10 1
+  name p string 0 0
+  const (0) int 6 0
+ecom: 
+inds int 10 1
+  name p string 0 0
+  const (0) int 6 0
+ecom to: 
+name .t110 int 0 0
+ecom: 
+const (1) int 6 0
+ecom to: 
+* int 8 0
+  name .ret int 0 0
+eacom: 
+len int 10 1
+  name p string 0 0
+ecom: 
+len int 10 1
+  name p string 0 0
+ecom to: 
+name .t110 int 0 0
+eacom: 
+inds int 10 1
+  name p string 0 0
+  const (0) int 6 0
+ecom: 
+inds int 10 1
+  name p string 0 0
+  const (0) int 6 0
+ecom to: 
+name .t110 int 0 0
+ecom: 
+const (0) int 6 0
+ecom to: 
+* int 8 0
+  name .ret int 0 0
+eacom: 
+inds int 10 1
+  name p string 0 0
+  const (1) int 6 0
+ecom: 
+inds int 10 1
+  name p string 0 0
+  const (1) int 6 0
+ecom to: 
+name .t110 int 0 0
+ecom: 
+const (1) int 6 0
+ecom to: 
+* int 8 0
+  name .ret int 0 0
+eacom: 
+inds int 10 1
+  name p string 0 0
+  const (1) int 6 0
+ecom: 
+inds int 10 1
+  name p string 0 0
+  const (1) int 6 0
+ecom to: 
+name .t110 int 0 0
+eacom: 
+inds int 10 1
+  name p string 0 0
+  const (2) int 6 0
+ecom: 
+inds int 10 1
+  name p string 0 0
+  const (2) int 6 0
+ecom to: 
+name .t110 int 0 0
+ecom: 
+const (1) int 6 0
+ecom to: 
+* int 8 0
+  name .ret int 0 0
+ecom: 
+const (0) int 6 0
+ecom to: 
+* int 8 0
+  name .ret int 0 0
+fn: absolute
+64: argument p string ref 8
+72: local .t110 int ref 1
+generate desc for absolute
+descmap offset 0
+descmap p type string offset 64 (d->offset=64 start=0) returns 64
+descmap .t110 type int offset 72 (d->offset=72 start=0) returns -1
+fncom: runexternal 4 418da8
+ecom: 
+= string 10 1
+  name progname string 0 0
+  * string 10 1
+    + int 10 1
+      hd ref Listnode 10 1
+        name args list of ref Listnode 0 0
+      const word (8) int 6 0
+ecom: 
+* string 10 1
+  + int 10 1
+    hd ref Listnode 10 1
+      name args list of ref Listnode 0 0
+    const word (8) int 6 0
+ecom to: 
+name progname string 0 0
+eacom: 
+* string 10 1
+  + int 10 1
+    hd ref Listnode 10 1
+      name args list of ref Listnode 0 0
+    const word (8) int 6 0
+ecom: 
+hd ref Listnode 10 1
+  name args list of ref Listnode 0 0
+ecom to: 
+name .t111 ref Listnode 0 0
+ecom: 
+= ref Listnode 10 1
+  name .t111 ref Listnode 0 0
+  name nil ref Listnode 1 0
+ecom: 
+name nil ref Listnode 1 0
+ecom to: 
+name .t111 ref Listnode 0 0
+ecom: 
+= int 10 1
+  name disfile int 0 0
+  const (0) int 6 0
+ecom: 
+const (0) int 6 0
+ecom to: 
+name disfile int 0 0
+eacom: 
+len int 10 1
+  name progname string 0 0
+ecom: 
+len int 10 1
+  name progname string 0 0
+ecom to: 
+name .t112 int 0 0
+eacom: 
+slice string 10 2
+  name progname string 0 0
+  seq no type 10 2
+    - int 10 1
+      len int 10 1
+        name progname string 0 0
+      const (4) int 6 0
+    nothing no type 10 1
+ecom: 
+slice string 10 2
+  name progname string 0 0
+  seq no type 10 2
+    - int 10 1
+      len int 10 1
+        name progname string 0 0
+      const (4) int 6 0
+    nothing no type 10 1
+ecom to: 
+name .t111 string 0 0
+ecom: 
+len int 10 1
+  name progname string 0 0
+ecom to: 
+name .t112 int 0 0
+eacom: 
+- int 10 1
+  len int 10 1
+    name progname string 0 0
+  const (4) int 6 0
+ecom: 
+- int 10 1
+  len int 10 1
+    name progname string 0 0
+  const (4) int 6 0
+ecom to: 
+name .t113 int 0 0
+ecom: 
+len int 10 1
+  name progname string 0 0
+ecom to: 
+name .t113 int 0 0
+ecom: 
+name progname string 0 0
+ecom to: 
+name .t111 string 0 0
+ecom: 
+= string 10 1
+  name .t111 string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name .t111 string 0 0
+ecom: 
+= int 10 1
+  name disfile int 0 0
+  const (1) int 6 0
+ecom: 
+const (1) int 6 0
+ecom to: 
+name disfile int 0 0
+eacom: 
+call int 10 2
+  name absolute fn(p: string): int 11 1
+  seq no type 10 1
+    name progname string 0 0
+ecom: 
+call int 10 2
+  name absolute fn(p: string): int 11 1
+  seq no type 10 1
+    name progname string 0 0
+ecom to: 
+name .t113 int 0 0
+generate desc for big
+ecom: 
+name progname string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b114 big 0 0
+    const (64) int 6 0
+ecom: 
+= list of string 10 1
+  name pathlist list of string 0 0
+  :: list of string 10 1
+    const  string 1 0
+    name nil polymorphic type 1 0
+ecom: 
+:: list of string 10 1
+  const  string 1 0
+  name nil polymorphic type 1 0
+ecom to: 
+name pathlist list of string 0 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+name .t111 list of string 0 0
+ecom: 
+= list of string 10 1
+  name .t111 list of string 0 0
+  name nil list of string 1 0
+ecom: 
+name nil list of string 1 0
+ecom to: 
+name .t111 list of string 0 0
+eacom: 
+= list of ref Listnode 10 2
+  name pl list of ref Listnode 0 0
+  call list of ref Listnode 10 2
+    name get fn(ctxt: self ref Context, name: string): list of ref Listnode 11 1
+    seq nothing 10 1
+      name ctxt ref Context 0 0
+      seq no type 10 1
+        const path string 1 0
+ecom: 
+= list of ref Listnode 10 2
+  name pl list of ref Listnode 0 0
+  call list of ref Listnode 10 2
+    name get fn(ctxt: self ref Context, name: string): list of ref Listnode 11 1
+    seq nothing 10 1
+      name ctxt ref Context 0 0
+      seq no type 10 1
+        const path string 1 0
+ecom to: 
+name .t111 list of ref Listnode 0 0
+ecom: 
+call list of ref Listnode 10 2
+  name get fn(ctxt: self ref Context, name: string): list of ref Listnode 11 1
+  seq nothing 10 1
+    name ctxt ref Context 0 0
+    seq no type 10 1
+      const path string 1 0
+ecom to: 
+name pl list of ref Listnode 0 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b114 big 0 0
+    const (64) int 6 0
+ecom: 
+const path string 1 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b114 big 0 0
+    const (72) int 6 0
+ecom: 
+= list of ref Listnode 10 1
+  name .t111 list of ref Listnode 0 0
+  name nil list of ref Listnode 1 0
+ecom: 
+name nil list of ref Listnode 1 0
+ecom to: 
+name .t111 list of ref Listnode 0 0
+ecom: 
+= list of string 10 2
+  name pathlist list of string 0 0
+  call list of string 10 2
+    name list2stringlist fn(nl: list of ref Listnode): list of string 11 1
+    seq no type 10 1
+      name pl list of ref Listnode 0 0
+ecom: 
+call list of string 10 2
+  name list2stringlist fn(nl: list of ref Listnode): list of string 11 1
+  seq no type 10 1
+    name pl list of ref Listnode 0 0
+ecom to: 
+name pathlist list of string 0 0
+generate desc for big
+ecom: 
+name pl list of ref Listnode 0 0
+ecom to: 
+* list of ref Listnode 8 0
+  + int 15 0
+    name .b114 big 0 0
+    const (64) int 6 0
+ecom: 
+= list of string 10 1
+  name pathlist list of string 0 0
+  :: list of string 10 1
+    const /dis string 1 0
+    :: list of string 10 1
+      const . string 1 0
+      name nil polymorphic type 1 0
+ecom: 
+:: list of string 10 1
+  const /dis string 1 0
+  :: list of string 10 1
+    const . string 1 0
+    name nil polymorphic type 1 0
+ecom to: 
+name pathlist list of string 0 0
+ecom: 
+:: list of string 10 1
+  const . string 1 0
+  name nil polymorphic type 1 0
+ecom to: 
+name .t111 list of string 0 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+name .t111 list of string 0 0
+ecom: 
+= list of string 10 1
+  name .t111 list of string 0 0
+  name nil list of string 1 0
+ecom: 
+name nil list of string 1 0
+ecom to: 
+name .t111 list of string 0 0
+ecom: 
+= string 10 1
+  name err string 0 0
+  const  string 1 0
+ecom: 
+const  string 1 0
+ecom to: 
+name err string 0 0
+eacom: 
+hd string 10 1
+  name pathlist list of string 0 0
+ecom: 
+hd string 10 1
+  name pathlist list of string 0 0
+ecom to: 
+name .t111 string 0 0
+ecom: 
+= string 10 1
+  name .t111 string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name .t111 string 0 0
+ecom: 
+= string 10 1
+  name path string 0 0
+  + string 10 1
+    + string 10 1
+      hd string 10 1
+        name pathlist list of string 0 0
+      const / string 1 0
+    name progname string 0 0
+ecom: 
++ string 10 1
+  + string 10 1
+    hd string 10 1
+      name pathlist list of string 0 0
+    const / string 1 0
+  name progname string 0 0
+ecom to: 
+name path string 0 0
+ecom: 
++ string 10 1
+  hd string 10 1
+    name pathlist list of string 0 0
+  const / string 1 0
+ecom to: 
+name .t111 string 0 0
+ecom: 
+hd string 10 1
+  name pathlist list of string 0 0
+ecom to: 
+name .t111 string 0 0
+ecom: 
+= string 10 1
+  name .t111 string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name .t111 string 0 0
+ecom: 
+= string 10 1
+  name path string 0 0
+  name progname string 0 0
+ecom: 
+name progname string 0 0
+ecom to: 
+name path string 0 0
+ecom: 
+= string 10 1
+  name npath string 0 0
+    vardecl string 10 1
+      seq nothing 10 1
+  name path string 0 0
+ecom: 
+name path string 0 0
+ecom to: 
+name npath string 0 0
+  vardecl string 10 1
+    seq nothing 10 1
+ecom: 
++= string 10 1
+  name npath string 0 0
+  const .dis string 1 0
+ecom: 
+= Command 10 1
+  name mod Command 0 0
+    name npath string 0 0
+      vardecl string 10 1
+        seq nothing 10 1
+  load Command 10 1
+    name npath string 0 0
+    name .m.Command Command 17 1
+ecom: 
+load Command 10 1
+  name npath string 0 0
+  name .m.Command Command 17 1
+ecom to: 
+name mod Command 0 0
+  name npath string 0 0
+    vardecl string 10 1
+      seq nothing 10 1
+ecom: 
+= list of string 10 2
+  name argv list of string 0 0
+  call list of string 10 2
+    name list2stringlist fn(nl: list of ref Listnode): list of string 11 1
+    seq no type 10 1
+      name args list of ref Listnode 0 0
+ecom: 
+call list of string 10 2
+  name list2stringlist fn(nl: list of ref Listnode): list of string 11 1
+  seq no type 10 1
+    name args list of ref Listnode 0 0
+ecom to: 
+name argv list of string 0 0
+generate desc for big
+ecom: 
+name args list of ref Listnode 0 0
+ecom to: 
+* list of ref Listnode 8 0
+  + int 15 0
+    name .b114 big 0 0
+    const (64) int 6 0
+ecom: 
+call no type 10 2
+  name export fn(e: ref Localenv) 11 1
+  seq no type 10 1
+    * ref Localenv 10 1
+      + int 10 1
+        * ref Environment 8 0
+          name ctxt ref Context 0 0
+        const localenv (24) int 6 0
+generate desc for big
+ecom: 
+* ref Localenv 10 1
+  + int 10 1
+    * ref Environment 8 0
+      name ctxt ref Context 0 0
+    const localenv (24) int 6 0
+ecom to: 
+* ref Localenv 8 0
+  + int 15 0
+    name .b114 big 0 0
+    const (64) int 6 0
+eacom: 
+* ref Localenv 10 1
+  + int 10 1
+    * ref Environment 8 0
+      name ctxt ref Context 0 0
+    const localenv (24) int 6 0
+ecom: 
+* ref Environment 8 0
+  name ctxt ref Context 0 0
+ecom to: 
+name .t111 ref Environment 0 0
+ecom: 
+= ref Environment 10 1
+  name .t111 ref Environment 0 0
+  name nil ref Environment 1 0
+ecom: 
+name nil ref Environment 1 0
+ecom to: 
+name .t111 ref Environment 0 0
+ecom: 
+used int 10 2
+  call int 10 2
+    -> fn(flags: int, movefd: list of int): int 12 1
+      name sys Sys 1 0
+      name pctl nothing 11 1
+    seq no type 10 1
+      const NEWFD (1) int 6 0
+      seq no type 10 1
+        * list of int 8 0
+          + int 15 1
+            name ctxt ref Context 0 0
+            const keepfds (24) int 6 0
+ecom: 
+call int 10 2
+  -> fn(flags: int, movefd: list of int): int 12 1
+    name sys Sys 1 0
+    name pctl nothing 11 1
+  seq no type 10 1
+    const NEWFD (1) int 6 0
+    seq no type 10 1
+      * list of int 8 0
+        + int 15 1
+          name ctxt ref Context 0 0
+          const keepfds (24) int 6 0
+ecom to: 
+name .t113 int 0 0
+generate desc for big
+ecom: 
+const NEWFD (1) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b114 big 0 0
+    const (64) int 6 0
+ecom: 
+* list of int 8 0
+  + int 15 1
+    name ctxt ref Context 0 0
+    const keepfds (24) int 6 0
+ecom to: 
+* list of int 8 0
+  + int 15 0
+    name .b114 big 0 0
+    const (72) int 6 0
+ecom: 
+call no type 10 2
+  -> fn(ctxt: ref Draw->Context, argv: list of string) 12 1
+    name mod Command 0 0
+    name init nothing 11 1
+  seq no type 10 1
+    * ref Draw->Context 8 0
+      + int 15 1
+        name ctxt ref Context 0 0
+        const drawcontext (16) int 6 0
+    seq no type 10 1
+      name argv list of string 0 0
+generate desc for big
+ecom: 
+* ref Draw->Context 8 0
+  + int 15 1
+    name ctxt ref Context 0 0
+    const drawcontext (16) int 6 0
+ecom to: 
+* ref Draw->Context 8 0
+  + int 15 0
+    name .b114 big 0 0
+    const (64) int 6 0
+ecom: 
+name argv list of string 0 0
+ecom to: 
+* list of string 8 0
+  + int 15 0
+    name .b114 big 0 0
+    const (72) int 6 0
+ecom: 
+const write on closed pipe string 1 0
+ecom to: 
+* string 8 0
+  name .ret int 0 0
+ecom: 
+call string 10 2
+  name failurestatus fn(e: string): string 11 1
+  seq no type 10 1
+    name e string 0 0
+ecom to: 
+* string 8 0
+  name .ret int 0 0
+generate desc for big
+ecom: 
+name e string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b114 big 0 0
+    const (64) int 6 0
+ecom: 
+= chan of int 10 1
+  name extstart chan of int 0 0
+    name argv list of string 0 0
+  chan chan of int 10 1
+    const (0) int 6 0
+ecom: 
+chan chan of int 10 1
+  const (0) int 6 0
+ecom to: 
+name extstart chan of int 0 0
+  name argv list of string 0 0
+ecom: 
+spawn nothing 10 2
+  call no type 10 2
+    name externalexec fn(mod: Command, drawcontext: ref Draw->Context, argv: list of string, startchan: chan of int, keepfds: list of int) 11 1
+    seq no type 10 1
+      name mod Command 0 0
+      seq no type 10 1
+        * ref Draw->Context 8 0
+          + int 15 1
+            name ctxt ref Context 0 0
+            const drawcontext (16) int 6 0
+        seq no type 10 1
+          name argv list of string 0 0
+          seq no type 10 1
+            name extstart chan of int 0 0
+            seq no type 10 1
+              * list of int 8 0
+                + int 15 1
+                  name ctxt ref Context 0 0
+                  const keepfds (24) int 6 0
+generate desc for big
+ecom: 
+name mod Command 0 0
+ecom to: 
+* Command 8 0
+  + int 15 0
+    name .b114 big 0 0
+    const (64) int 6 0
+ecom: 
+* ref Draw->Context 8 0
+  + int 15 1
+    name ctxt ref Context 0 0
+    const drawcontext (16) int 6 0
+ecom to: 
+* ref Draw->Context 8 0
+  + int 15 0
+    name .b114 big 0 0
+    const (72) int 6 0
+ecom: 
+name argv list of string 0 0
+ecom to: 
+* list of string 8 0
+  + int 15 0
+    name .b114 big 0 0
+    const (80) int 6 0
+ecom: 
+name extstart chan of int 0 0
+ecom to: 
+* chan of int 8 0
+  + int 15 0
+    name .b114 big 0 0
+    const (88) int 6 0
+ecom: 
+* list of int 8 0
+  + int 15 1
+    name ctxt ref Context 0 0
+    const keepfds (24) int 6 0
+ecom to: 
+* list of int 8 0
+  + int 15 0
+    name .b114 big 0 0
+    const (96) int 6 0
+ecom: 
+= int 10 1
+  name pid int 0 0
+  <- int 10 1
+    name extstart chan of int 0 0
+ecom: 
+<- int 10 1
+  name extstart chan of int 0 0
+ecom to: 
+name pid int 0 0
+ecom: 
+call string 10 2
+  name waitfor fn(ctxt: ref Context, pids: list of int): string 11 1
+  seq no type 10 1
+    name ctxt ref Context 0 0
+    seq no type 10 1
+      :: list of int 10 1
+        name pid int 0 0
+        name nil polymorphic type 1 0
+ecom to: 
+* string 8 0
+  name .ret int 0 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b114 big 0 0
+    const (64) int 6 0
+ecom: 
+:: list of int 10 1
+  name pid int 0 0
+  name nil polymorphic type 1 0
+ecom to: 
+* list of int 8 0
+  + int 15 0
+    name .b114 big 0 0
+    const (72) int 6 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+name .t111 list of int 0 0
+ecom: 
+= list of int 10 1
+  name .t111 list of int 0 0
+  name nil list of int 1 0
+ecom: 
+name nil list of int 1 0
+ecom to: 
+name .t111 list of int 0 0
+ecom: 
+= chan of int 10 1
+  name extstart chan of int 0 0
+  name nil chan of int 1 0
+ecom: 
+name nil chan of int 1 0
+ecom to: 
+name extstart chan of int 0 0
+ecom: 
+= list of string 10 1
+  name argv list of string 0 0
+  name nil list of string 1 0
+ecom: 
+name nil list of string 1 0
+ecom to: 
+name argv list of string 0 0
+ecom: 
+= string 10 2
+  name err string 0 0
+  call string 10 2
+    -> fn(s: string, *): string 12 1
+      name sys Sys 1 0
+      name sprint nothing 11 1
+    seq no type 10 1
+      const %r string 1 0
+ecom: 
+call string 10 2
+  -> fn(s: string, *): string 12 1
+    name sys Sys 1 0
+    name sprint nothing 11 1
+  seq no type 10 1
+    const %r string 1 0
+ecom to: 
+name err string 0 0
+generate desc for Sys->sprint
+descmap offset 0
+descmap s type string offset 64 (d->offset=64 start=0) returns 64
+generate desc for big
+ecom: 
+const %r string 1 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b114 big 0 0
+    const (64) int 6 0
+eacom: 
+call int 10 2
+  name nonexistent fn(e: string): int 11 1
+  seq no type 10 1
+    name err string 0 0
+ecom: 
+call int 10 2
+  name nonexistent fn(e: string): int 11 1
+  seq no type 10 1
+    name err string 0 0
+ecom to: 
+name .t113 int 0 0
+generate desc for big
+ecom: 
+name err string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b114 big 0 0
+    const (64) int 6 0
+eacom: 
+= ref Sys->FD 10 2
+  name fd ref Sys->FD 0 0
+  call ref Sys->FD 10 2
+    -> fn(s: string, mode: int): ref Sys->FD 12 1
+      name sys Sys 1 0
+      name open nothing 11 1
+    seq no type 10 1
+      name path string 0 0
+      seq no type 10 1
+        const OREAD (0) int 6 0
+ecom: 
+= ref Sys->FD 10 2
+  name fd ref Sys->FD 0 0
+  call ref Sys->FD 10 2
+    -> fn(s: string, mode: int): ref Sys->FD 12 1
+      name sys Sys 1 0
+      name open nothing 11 1
+    seq no type 10 1
+      name path string 0 0
+      seq no type 10 1
+        const OREAD (0) int 6 0
+ecom to: 
+name .t111 ref Sys->FD 0 0
+ecom: 
+call ref Sys->FD 10 2
+  -> fn(s: string, mode: int): ref Sys->FD 12 1
+    name sys Sys 1 0
+    name open nothing 11 1
+  seq no type 10 1
+    name path string 0 0
+    seq no type 10 1
+      const OREAD (0) int 6 0
+ecom to: 
+name fd ref Sys->FD 0 0
+generate desc for big
+ecom: 
+name path string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b114 big 0 0
+    const (64) int 6 0
+ecom: 
+const OREAD (0) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b114 big 0 0
+    const (72) int 6 0
+ecom: 
+= ref Sys->FD 10 1
+  name .t111 ref Sys->FD 0 0
+  name nil ref Sys->FD 1 0
+ecom: 
+name nil ref Sys->FD 1 0
+ecom to: 
+name .t111 ref Sys->FD 0 0
+ecom: 
+= (int, Sys->Dir) 10 2
+  tuple (int, Sys->Dir) 10 1
+    seq nothing 10 1
+      name ok int 0 0
+      seq nothing 10 1
+        name info Sys->Dir 0 0
+  call (int, Sys->Dir) 10 2
+    -> fn(fd: ref Sys->FD): (int, Sys->Dir) 12 1
+      name sys Sys 1 0
+      name fstat nothing 11 1
+    seq no type 10 1
+      name fd ref Sys->FD 0 0
+ecom: 
+call (int, Sys->Dir) 10 2
+  -> fn(fd: ref Sys->FD): (int, Sys->Dir) 12 1
+    name sys Sys 1 0
+    name fstat nothing 11 1
+  seq no type 10 1
+    name fd ref Sys->FD 0 0
+ecom to: 
+name ok (int, Sys->Dir) 0 0
+generate desc for big
+ecom: 
+name fd ref Sys->FD 0 0
+ecom to: 
+* ref Sys->FD 8 0
+  + int 15 0
+    name .b114 big 0 0
+    const (64) int 6 0
+eacom: 
+& int 10 1
+  * int 0 0
+    + int 13 1
+      adr int 13 1
+        name info Sys->Dir 0 0
+      const mode (48) int 6 0
+  const .i.80000000 (-2147483648) int 1 0
+ecom: 
+& int 10 1
+  * int 0 0
+    + int 13 1
+      adr int 13 1
+        name info Sys->Dir 0 0
+      const mode (48) int 6 0
+  const .i.80000000 (-2147483648) int 1 0
+ecom to: 
+name .t113 int 0 0
+eacom: 
+& int 10 1
+  * int 0 0
+    + int 13 1
+      adr int 13 1
+        name info Sys->Dir 0 0
+      const mode (48) int 6 0
+  const (73) int 6 0
+ecom: 
+& int 10 1
+  * int 0 0
+    + int 13 1
+      adr int 13 1
+        name info Sys->Dir 0 0
+      const mode (48) int 6 0
+  const (73) int 6 0
+ecom to: 
+name .t113 int 0 0
+ecom: 
+call string 10 2
+  name runhashpling fn(ctxt: ref Context, fd: ref Sys->FD, path: string, argv: list of ref Listnode, last: int): string 11 1
+  seq no type 10 2
+    name ctxt ref Context 0 0
+    seq no type 10 2
+      name fd ref Sys->FD 0 0
+      seq no type 10 2
+        name path string 0 0
+        seq no type 10 2
+          tl list of ref Listnode 10 1
+            name args list of ref Listnode 0 0
+          seq no type 10 1
+            name last int 0 0
+ecom to: 
+* string 8 0
+  name .ret int 0 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b114 big 0 0
+    const (64) int 6 0
+ecom: 
+name fd ref Sys->FD 0 0
+ecom to: 
+* ref Sys->FD 8 0
+  + int 15 0
+    name .b114 big 0 0
+    const (72) int 6 0
+ecom: 
+name path string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b114 big 0 0
+    const (80) int 6 0
+ecom: 
+tl list of ref Listnode 10 1
+  name args list of ref Listnode 0 0
+ecom to: 
+* list of ref Listnode 8 0
+  + int 15 0
+    name .b114 big 0 0
+    const (88) int 6 0
+ecom: 
+name last int 0 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b114 big 0 0
+    const (96) int 6 0
+ecom: 
+= string 10 1
+  * string 0 0
+    + int 13 1
+      adr int 13 1
+        name ok (int, Sys->Dir) 0 0
+      const (8) int 6 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+* string 0 0
+  + int 13 1
+    adr int 13 1
+      name ok (int, Sys->Dir) 0 0
+    const (8) int 6 0
+ecom: 
+= string 10 1
+  * string 0 0
+    + int 13 1
+      adr int 13 1
+        name ok (int, Sys->Dir) 0 0
+      const (16) int 6 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+* string 0 0
+  + int 13 1
+    adr int 13 1
+      name ok (int, Sys->Dir) 0 0
+    const (16) int 6 0
+ecom: 
+= string 10 1
+  * string 0 0
+    + int 13 1
+      adr int 13 1
+        name ok (int, Sys->Dir) 0 0
+      const (24) int 6 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+* string 0 0
+  + int 13 1
+    adr int 13 1
+      name ok (int, Sys->Dir) 0 0
+    const (24) int 6 0
+ecom: 
+= string 10 1
+  * string 0 0
+    + int 13 1
+      adr int 13 1
+        name ok (int, Sys->Dir) 0 0
+      const (32) int 6 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+* string 0 0
+  + int 13 1
+    adr int 13 1
+      name ok (int, Sys->Dir) 0 0
+    const (32) int 6 0
+ecom: 
+= string 10 1
+  * string 0 0
+    adr int 13 1
+      name info Sys->Dir 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+* string 0 0
+  adr int 13 1
+    name info Sys->Dir 0 0
+ecom: 
+= string 10 1
+  * string 0 0
+    + int 13 1
+      adr int 13 1
+        name info Sys->Dir 0 0
+      const uid (8) int 6 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+* string 0 0
+  + int 13 1
+    adr int 13 1
+      name info Sys->Dir 0 0
+    const uid (8) int 6 0
+ecom: 
+= string 10 1
+  * string 0 0
+    + int 13 1
+      adr int 13 1
+        name info Sys->Dir 0 0
+      const gid (16) int 6 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+* string 0 0
+  + int 13 1
+    adr int 13 1
+      name info Sys->Dir 0 0
+    const gid (16) int 6 0
+ecom: 
+= string 10 1
+  * string 0 0
+    + int 13 1
+      adr int 13 1
+        name info Sys->Dir 0 0
+      const muid (24) int 6 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+* string 0 0
+  + int 13 1
+    adr int 13 1
+      name info Sys->Dir 0 0
+    const muid (24) int 6 0
+ecom: 
+= string 10 2
+  name err string 0 0
+  call string 10 2
+    -> fn(s: string, *): string 12 1
+      name sys Sys 1 0
+      name sprint nothing 11 1
+    seq no type 10 1
+      const %r string 1 0
+ecom: 
+call string 10 2
+  -> fn(s: string, *): string 12 1
+    name sys Sys 1 0
+    name sprint nothing 11 1
+  seq no type 10 1
+    const %r string 1 0
+ecom to: 
+name err string 0 0
+generate desc for Sys->sprint
+descmap offset 0
+descmap s type string offset 64 (d->offset=64 start=0) returns 64
+generate desc for big
+ecom: 
+const %r string 1 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b114 big 0 0
+    const (64) int 6 0
+ecom: 
+= ref Sys->FD 10 1
+  name fd ref Sys->FD 0 0
+  name nil ref Sys->FD 1 0
+ecom: 
+name nil ref Sys->FD 1 0
+ecom to: 
+name fd ref Sys->FD 0 0
+ecom: 
+= list of string 10 1
+  name pathlist list of string 0 0
+  tl list of string 10 1
+    name pathlist list of string 0 0
+ecom: 
+tl list of string 10 1
+  name pathlist list of string 0 0
+ecom to: 
+name pathlist list of string 0 0
+ecom: 
+= Command 10 1
+  name mod Command 0 0
+  name nil Command 1 0
+ecom: 
+name nil Command 1 0
+ecom to: 
+name mod Command 0 0
+ecom: 
+= string 10 1
+  name npath string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name npath string 0 0
+ecom: 
+= string 10 1
+  name path string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name path string 0 0
+eacom: 
+call int 10 2
+  name nonexistent fn(e: string): int 11 1
+  seq no type 10 1
+    name err string 0 0
+ecom: 
+call int 10 2
+  name nonexistent fn(e: string): int 11 1
+  seq no type 10 1
+    name err string 0 0
+ecom to: 
+name .t113 int 0 0
+generate desc for big
+ecom: 
+name err string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b114 big 0 0
+    const (64) int 6 0
+ecom: 
+call no type 10 2
+  name diagnostic fn(ctxt: ref Context, s: string) 11 1
+  seq no type 10 2
+    name ctxt ref Context 0 0
+    seq no type 10 2
+      call string 10 2
+        -> fn(s: string, nil: string, nil: string, *): string 12 1
+          name sys Sys 1 0
+          name sprint nothing 11 1
+        seq no type 10 1
+          const %s: %s string 1 0
+          seq no type 10 1
+            name progname string 0 0
+            seq no type 10 1
+              name err string 0 0
+generate desc for big
+ecom: 
+call string 10 2
+  -> fn(s: string, nil: string, nil: string, *): string 12 1
+    name sys Sys 1 0
+    name sprint nothing 11 1
+  seq no type 10 1
+    const %s: %s string 1 0
+    seq no type 10 1
+      name progname string 0 0
+      seq no type 10 1
+        name err string 0 0
+ecom to: 
+name .t111 string 0 0
+generate desc for Sys->sprint
+descmap offset 0
+descmap s type string offset 64 (d->offset=64 start=0) returns 64
+descmap type string offset 72 returns 72
+descmap type string offset 80 returns 80
+generate desc for big
+ecom: 
+const %s: %s string 1 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b115 big 0 0
+    const (64) int 6 0
+ecom: 
+name progname string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b115 big 0 0
+    const (72) int 6 0
+ecom: 
+name err string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b115 big 0 0
+    const (80) int 6 0
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b114 big 0 0
+    const (64) int 6 0
+ecom: 
+name .t111 string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b114 big 0 0
+    const (72) int 6 0
+ecom: 
+= string 10 1
+  name .t111 string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name .t111 string 0 0
+ecom: 
+name err string 0 0
+ecom to: 
+* string 8 0
+  name .ret int 0 0
+fn: runexternal
+64: argument ctxt ref Context ref 9
+72: argument args list of ref Listnode ref 3
+80: argument last int ref 2
+84: local disfile int ref 4
+88: local pid int ref 3
+92: local e ref exception ref 2
+96: local ok int ref 2
+104: local info Sys->Dir ref 3
+184: local .t112 int ref 1
+188: local .t113 int ref 1
+192: local .b114 big ref 18
+200: local pathlist list of string ref 8
+208: local progname string ref 8
+216: local err string ref 7
+224: local path string ref 5
+232: local mod Command ref 4
+240: local argv list of string ref 3
+248: local extstart chan of int ref 3
+256: local fd ref Sys->FD ref 3
+264: local npath string ref 3
+272: local pl list of ref Listnode ref 2
+280: local .b115 big ref 1
+288: local .t111 ref Listnode ref 1
+generate desc for runexternal
+descmap offset 0
+descmap ctxt type ref Context offset 64 (d->offset=64 start=0) returns 64
+descmap args type list of ref Listnode offset 72 (d->offset=72 start=0) returns 72
+descmap last type int offset 80 (d->offset=80 start=0) returns -1
+descmap disfile type int offset 84 (d->offset=84 start=0) returns -1
+descmap pid type int offset 88 (d->offset=88 start=0) returns -1
+descmap e type ref exception offset 92 (d->offset=92 start=0) returns 96
+descmap ok type int offset 96 (d->offset=96 start=0) returns -1
+descmap adt offset 104
+descmap offset 104
+descmap name type string offset 104 (d->offset=0 start=104) returns 104
+descmap uid type string offset 112 (d->offset=8 start=104) returns 112
+descmap gid type string offset 120 (d->offset=16 start=104) returns 120
+descmap muid type string offset 128 (d->offset=24 start=104) returns 128
+descmap adt offset 136
+descmap offset 136
+descmap path type big offset 136 (d->offset=0 start=136) returns -1
+descmap vers type int offset 144 (d->offset=8 start=136) returns -1
+descmap qtype type int offset 148 (d->offset=12 start=136) returns -1
+descmap qid type Sys->Qid offset 136 (d->offset=32 start=104) returns -1
+descmap mode type int offset 152 (d->offset=48 start=104) returns -1
+descmap atime type int offset 156 (d->offset=52 start=104) returns -1
+descmap mtime type int offset 160 (d->offset=56 start=104) returns -1
+descmap length type big offset 168 (d->offset=64 start=104) returns -1
+descmap dtype type int offset 176 (d->offset=72 start=104) returns -1
+descmap dev type int offset 180 (d->offset=76 start=104) returns -1
+descmap info type Sys->Dir offset 104 (d->offset=104 start=0) returns 128
+descmap .t112 type int offset 184 (d->offset=184 start=0) returns -1
+descmap .t113 type int offset 188 (d->offset=188 start=0) returns -1
+descmap .b114 type big offset 192 (d->offset=192 start=0) returns -1
+descmap pathlist type list of string offset 200 (d->offset=200 start=0) returns 200
+descmap progname type string offset 208 (d->offset=208 start=0) returns 208
+descmap err type string offset 216 (d->offset=216 start=0) returns 216
+descmap path type string offset 224 (d->offset=224 start=0) returns 224
+descmap mod type Command offset 232 (d->offset=232 start=0) returns 232
+descmap argv type list of string offset 240 (d->offset=240 start=0) returns 240
+descmap extstart type chan of int offset 248 (d->offset=248 start=0) returns 248
+descmap fd type ref Sys->FD offset 256 (d->offset=256 start=0) returns 256
+descmap npath type string offset 264 (d->offset=264 start=0) returns 264
+descmap pl type list of ref Listnode offset 272 (d->offset=272 start=0) returns 272
+descmap .b115 type big offset 280 (d->offset=280 start=0) returns -1
+descmap .t111 type ref Listnode offset 288 (d->offset=288 start=0) returns 288
+fncom: failurestatus 7 418e68
+ecom: 
+= string 10 1
+  name s string 0 0
+  slice string 10 1
+    name e string 0 0
+    seq no type 10 1
+      const (5) int 6 0
+      nothing no type 10 1
+ecom: 
+slice string 10 1
+  name e string 0 0
+  seq no type 10 1
+    const (5) int 6 0
+    nothing no type 10 1
+ecom to: 
+name s string 0 0
+ecom: 
+len int 10 1
+  name e string 0 0
+ecom to: 
+name .t116 int 0 0
+ecom: 
+name e string 0 0
+ecom to: 
+name s string 0 0
+eacom: 
+inds int 10 1
+  name s string 0 0
+  const (0) int 6 0
+ecom: 
+inds int 10 1
+  name s string 0 0
+  const (0) int 6 0
+ecom to: 
+name .t116 int 0 0
+eacom: 
+inds int 10 1
+  name s string 0 0
+  const (0) int 6 0
+ecom: 
+inds int 10 1
+  name s string 0 0
+  const (0) int 6 0
+ecom to: 
+name .t116 int 0 0
+ecom: 
+= string 10 1
+  name s string 0 0
+  slice string 10 1
+    name s string 0 0
+    seq no type 10 1
+      const (1) int 6 0
+      nothing no type 10 1
+ecom: 
+slice string 10 1
+  name s string 0 0
+  seq no type 10 1
+    const (1) int 6 0
+    nothing no type 10 1
+ecom to: 
+name s string 0 0
+ecom: 
+len int 10 1
+  name s string 0 0
+ecom to: 
+name .t116 int 0 0
+ecom: 
+name s string 0 0
+ecom to: 
+* string 8 0
+  name .ret int 0 0
+ecom: 
+const failed string 1 0
+ecom to: 
+* string 8 0
+  name .ret int 0 0
+fn: failurestatus
+64: argument e string ref 1
+72: local .t116 int ref 1
+80: local s string ref 8
+generate desc for failurestatus
+descmap offset 0
+descmap e type string offset 64 (d->offset=64 start=0) returns 64
+descmap .t116 type int offset 72 (d->offset=72 start=0) returns -1
+descmap s type string offset 80 (d->offset=80 start=0) returns 80
+fncom: runhashpling 2 418f28
+ecom: 
+= array of byte 10 1
+  name header array of byte 0 0
+  array array of byte 10 1
+    const (1024) int 6 0
+ecom: 
+array array of byte 10 1
+  const (1024) int 6 0
+ecom to: 
+name header array of byte 0 0
+generate desc for byte
+ecom: 
+= int 10 2
+  name n int 0 0
+  call int 10 2
+    -> fn(fd: ref Sys->FD, buf: array of byte, n: int): int 12 1
+      name sys Sys 1 0
+      name read nothing 11 1
+    seq no type 10 1
+      name fd ref Sys->FD 0 0
+      seq no type 10 1
+        name header array of byte 0 0
+        seq no type 10 1
+          len int 10 1
+            name header array of byte 0 0
+ecom: 
+call int 10 2
+  -> fn(fd: ref Sys->FD, buf: array of byte, n: int): int 12 1
+    name sys Sys 1 0
+    name read nothing 11 1
+  seq no type 10 1
+    name fd ref Sys->FD 0 0
+    seq no type 10 1
+      name header array of byte 0 0
+      seq no type 10 1
+        len int 10 1
+          name header array of byte 0 0
+ecom to: 
+name n int 0 0
+generate desc for big
+ecom: 
+name fd ref Sys->FD 0 0
+ecom to: 
+* ref Sys->FD 8 0
+  + int 15 0
+    name .b117 big 0 0
+    const (64) int 6 0
+ecom: 
+name header array of byte 0 0
+ecom to: 
+* array of byte 8 0
+  + int 15 0
+    name .b117 big 0 0
+    const (72) int 6 0
+ecom: 
+len int 10 1
+  name header array of byte 0 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b117 big 0 0
+    const (80) int 6 0
+ecom: 
+= int 10 1
+  name i int 0 0
+  const (0) int 6 0
+ecom: 
+const (0) int 6 0
+ecom to: 
+name i int 0 0
+eacom: 
+* byte 10 1
+  indx big 10 1
+    name header array of byte 0 0
+    name i int 0 0
+generate desc for big
+ecom: 
+indx big 10 1
+  name header array of byte 0 0
+  name i int 0 0
+ecom to: 
+name .b117 big 0 0
+ecom: 
+++ int 10 1
+  name i int 0 0
+  const (1) int 6 0
+eacom: 
+* byte 10 1
+  indx big 10 1
+    name header array of byte 0 0
+    const (0) int 6 0
+generate desc for big
+ecom: 
+indx big 10 1
+  name header array of byte 0 0
+  const (0) int 6 0
+ecom to: 
+name .b117 big 0 0
+eacom: 
+* byte 10 1
+  indx big 10 1
+    name header array of byte 0 0
+    const (1) int 6 0
+generate desc for big
+ecom: 
+indx big 10 1
+  name header array of byte 0 0
+  const (1) int 6 0
+ecom to: 
+name .b117 big 0 0
+ecom: 
+call no type 10 2
+  name diagnostic fn(ctxt: ref Context, s: string) 11 1
+  seq no type 10 1
+    name ctxt ref Context 0 0
+    seq no type 10 1
+      + string 10 1
+        const bad script header on  string 1 0
+        name path string 0 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b117 big 0 0
+    const (64) int 6 0
+ecom: 
++ string 10 1
+  const bad script header on  string 1 0
+  name path string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b117 big 0 0
+    const (72) int 6 0
+ecom: 
+const bad header string 1 0
+ecom to: 
+* string 8 0
+  name .ret int 0 0
+ecom: 
+= (int, list of string) 10 2
+  tuple (int, list of string) 10 1
+    seq nothing 10 1
+      name nil polymorphic type 1 0
+      seq nothing 10 1
+        name args list of string 0 0
+  call (int, list of string) 10 2
+    -> fn(s: string, delim: string): (int, list of string) 12 1
+      name sys Sys 1 0
+      name tokenize nothing 11 1
+    seq no type 10 2
+      cast string 10 1
+        slice array of byte 10 1
+          name header array of byte 0 0
+          seq no type 10 1
+            const (2) int 6 0
+            name i int 0 0
+      seq no type 10 1
+        const  	 string 1 0
+generate desc for (int, list of string)
+ecom: 
+call (int, list of string) 10 2
+  -> fn(s: string, delim: string): (int, list of string) 12 1
+    name sys Sys 1 0
+    name tokenize nothing 11 1
+  seq no type 10 2
+    cast string 10 1
+      slice array of byte 10 1
+        name header array of byte 0 0
+        seq no type 10 1
+          const (2) int 6 0
+          name i int 0 0
+    seq no type 10 1
+      const  	 string 1 0
+ecom to: 
+name .b118 (int, list of string) 0 0
+generate desc for big
+ecom: 
+cast string 10 1
+  slice array of byte 10 1
+    name header array of byte 0 0
+    seq no type 10 1
+      const (2) int 6 0
+      name i int 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b117 big 0 0
+    const (64) int 6 0
+eacom: 
+slice array of byte 10 1
+  name header array of byte 0 0
+  seq no type 10 1
+    const (2) int 6 0
+    name i int 0 0
+ecom: 
+slice array of byte 10 1
+  name header array of byte 0 0
+  seq no type 10 1
+    const (2) int 6 0
+    name i int 0 0
+ecom to: 
+name .t119 array of byte 0 0
+ecom: 
+name header array of byte 0 0
+ecom to: 
+name .t119 array of byte 0 0
+ecom: 
+= array of byte 10 1
+  name .t119 array of byte 0 0
+  name nil array of byte 1 0
+ecom: 
+name nil array of byte 1 0
+ecom to: 
+name .t119 array of byte 0 0
+ecom: 
+const  	 string 1 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b117 big 0 0
+    const (72) int 6 0
+ecom: 
+= list of string 10 1
+  * list of string 0 0
+    + int 13 1
+      adr int 13 1
+        name .b118 (int, list of string) 0 0
+      const t1 (8) int 6 0
+  name nil list of string 1 0
+ecom: 
+name nil list of string 1 0
+ecom to: 
+* list of string 0 0
+  + int 13 1
+    adr int 13 1
+      name .b118 (int, list of string) 0 0
+    const t1 (8) int 6 0
+ecom: 
+call no type 10 2
+  name diagnostic fn(ctxt: ref Context, s: string) 11 1
+  seq no type 10 1
+    name ctxt ref Context 0 0
+    seq no type 10 1
+      + string 10 1
+        const empty header on  string 1 0
+        name path string 0 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b117 big 0 0
+    const (64) int 6 0
+ecom: 
++ string 10 1
+  const empty header on  string 1 0
+  name path string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b117 big 0 0
+    const (72) int 6 0
+ecom: 
+const bad header string 1 0
+ecom to: 
+* string 8 0
+  name .ret int 0 0
+ecom: 
+= array of byte 10 1
+  name header array of byte 0 0
+  name nil polymorphic type 1 0
+ecom: 
+name nil array of byte 1 0
+ecom to: 
+name header array of byte 0 0
+ecom: 
+= ref Sys->FD 10 1
+  name fd ref Sys->FD 0 0
+  name nil polymorphic type 1 0
+ecom: 
+name nil ref Sys->FD 1 0
+ecom to: 
+name fd ref Sys->FD 0 0
+ecom: 
+= list of ref Listnode 10 1
+  name nargs list of ref Listnode 0 0
+  :: list of ref Listnode 10 1
+    ref ref Listnode 10 1
+      tuple Listnode 10 1
+        seq no type 10 1
+          name nil polymorphic type 1 0
+          seq no type 10 1
+            hd string 10 1
+              name args list of string 0 0
+    name nargs list of ref Listnode 0 0
+ecom: 
+:: list of ref Listnode 10 1
+  ref ref Listnode 10 1
+    tuple Listnode 10 1
+      seq no type 10 1
+        name nil polymorphic type 1 0
+        seq no type 10 1
+          hd string 10 1
+            name args list of string 0 0
+  name nargs list of ref Listnode 0 0
+ecom to: 
+name nargs list of ref Listnode 0 0
+eacom: 
+ref ref Listnode 10 1
+  tuple Listnode 10 1
+    seq no type 10 1
+      name nil polymorphic type 1 0
+      seq no type 10 1
+        hd string 10 1
+          name args list of string 0 0
+ecom: 
+ref ref Listnode 10 1
+  tuple Listnode 10 1
+    seq no type 10 1
+      name nil polymorphic type 1 0
+      seq no type 10 1
+        hd string 10 1
+          name args list of string 0 0
+ecom to: 
+name .t119 ref Listnode 0 0
+generate desc for Listnode
+ecom: 
+tuple Listnode 10 1
+  seq no type 10 1
+    name nil polymorphic type 1 0
+    seq no type 10 1
+      hd string 10 1
+        name args list of string 0 0
+ecom to: 
+* Listnode 8 0
+  name .t119 ref Listnode 0 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* ref Node 8 0
+  + int 15 1
+    adr int 15 1
+      * Listnode 8 0
+        name .t119 ref Listnode 0 0
+    const (0) int 6 0
+ecom: 
+hd string 10 1
+  name args list of string 0 0
+ecom to: 
+* string 8 0
+  + int 15 1
+    adr int 15 1
+      * Listnode 8 0
+        name .t119 ref Listnode 0 0
+    const (8) int 6 0
+ecom: 
+= ref Listnode 10 1
+  name .t119 ref Listnode 0 0
+  name nil ref Listnode 1 0
+ecom: 
+name nil ref Listnode 1 0
+ecom to: 
+name .t119 ref Listnode 0 0
+ecom: 
+= list of string 10 1
+  name args list of string 0 0
+  tl list of string 10 1
+    name args list of string 0 0
+ecom: 
+tl list of string 10 1
+  name args list of string 0 0
+ecom to: 
+name args list of string 0 0
+ecom: 
+= list of ref Listnode 10 1
+  name nargs list of ref Listnode 0 0
+  :: list of ref Listnode 10 1
+    ref ref Listnode 10 1
+      tuple Listnode 10 1
+        seq no type 10 1
+          name nil polymorphic type 1 0
+          seq no type 10 1
+            name path string 0 0
+    name nargs list of ref Listnode 0 0
+ecom: 
+:: list of ref Listnode 10 1
+  ref ref Listnode 10 1
+    tuple Listnode 10 1
+      seq no type 10 1
+        name nil polymorphic type 1 0
+        seq no type 10 1
+          name path string 0 0
+  name nargs list of ref Listnode 0 0
+ecom to: 
+name nargs list of ref Listnode 0 0
+eacom: 
+ref ref Listnode 10 1
+  tuple Listnode 10 1
+    seq no type 10 1
+      name nil polymorphic type 1 0
+      seq no type 10 1
+        name path string 0 0
+ecom: 
+ref ref Listnode 10 1
+  tuple Listnode 10 1
+    seq no type 10 1
+      name nil polymorphic type 1 0
+      seq no type 10 1
+        name path string 0 0
+ecom to: 
+name .t119 ref Listnode 0 0
+generate desc for Listnode
+ecom: 
+tuple Listnode 10 1
+  seq no type 10 1
+    name nil polymorphic type 1 0
+    seq no type 10 1
+      name path string 0 0
+ecom to: 
+* Listnode 8 0
+  name .t119 ref Listnode 0 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* ref Node 8 0
+  + int 15 1
+    adr int 15 1
+      * Listnode 8 0
+        name .t119 ref Listnode 0 0
+    const (0) int 6 0
+ecom: 
+name path string 0 0
+ecom to: 
+* string 8 0
+  + int 15 1
+    adr int 15 1
+      * Listnode 8 0
+        name .t119 ref Listnode 0 0
+    const (8) int 6 0
+ecom: 
+= ref Listnode 10 1
+  name .t119 ref Listnode 0 0
+  name nil ref Listnode 1 0
+ecom: 
+name nil ref Listnode 1 0
+ecom to: 
+name .t119 ref Listnode 0 0
+ecom: 
+= list of ref Listnode 10 1
+  name nargs list of ref Listnode 0 0
+  :: list of ref Listnode 10 1
+    hd ref Listnode 10 1
+      name argv list of ref Listnode 0 0
+    name nargs list of ref Listnode 0 0
+ecom: 
+:: list of ref Listnode 10 1
+  hd ref Listnode 10 1
+    name argv list of ref Listnode 0 0
+  name nargs list of ref Listnode 0 0
+ecom to: 
+name nargs list of ref Listnode 0 0
+eacom: 
+hd ref Listnode 10 1
+  name argv list of ref Listnode 0 0
+ecom: 
+hd ref Listnode 10 1
+  name argv list of ref Listnode 0 0
+ecom to: 
+name .t119 ref Listnode 0 0
+ecom: 
+= ref Listnode 10 1
+  name .t119 ref Listnode 0 0
+  name nil ref Listnode 1 0
+ecom: 
+name nil ref Listnode 1 0
+ecom to: 
+name .t119 ref Listnode 0 0
+ecom: 
+= list of ref Listnode 10 1
+  name argv list of ref Listnode 0 0
+  tl list of ref Listnode 10 1
+    name argv list of ref Listnode 0 0
+ecom: 
+tl list of ref Listnode 10 1
+  name argv list of ref Listnode 0 0
+ecom to: 
+name argv list of ref Listnode 0 0
+ecom: 
+call string 10 2
+  name runexternal fn(ctxt: ref Context, args: list of ref Listnode, last: int): string 11 1
+  seq no type 10 2
+    name ctxt ref Context 0 0
+    seq no type 10 2
+      call list of ref Listnode 10 2
+        name revlist fn(l: list of ref Listnode): list of ref Listnode 11 1
+        seq no type 10 1
+          name nargs list of ref Listnode 0 0
+      seq no type 10 1
+        name last int 0 0
+ecom to: 
+* string 8 0
+  name .ret int 0 0
+generate desc for big
+ecom: 
+call list of ref Listnode 10 2
+  name revlist fn(l: list of ref Listnode): list of ref Listnode 11 1
+  seq no type 10 1
+    name nargs list of ref Listnode 0 0
+ecom to: 
+name .t119 list of ref Listnode 0 0
+generate desc for big
+ecom: 
+name nargs list of ref Listnode 0 0
+ecom to: 
+* list of ref Listnode 8 0
+  + int 15 0
+    name .b120 big 0 0
+    const (64) int 6 0
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b117 big 0 0
+    const (64) int 6 0
+ecom: 
+name .t119 list of ref Listnode 0 0
+ecom to: 
+* list of ref Listnode 8 0
+  + int 15 0
+    name .b117 big 0 0
+    const (72) int 6 0
+ecom: 
+= list of ref Listnode 10 1
+  name .t119 list of ref Listnode 0 0
+  name nil list of ref Listnode 1 0
+ecom: 
+name nil list of ref Listnode 1 0
+ecom to: 
+name .t119 list of ref Listnode 0 0
+ecom: 
+name last int 0 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b117 big 0 0
+    const (80) int 6 0
+fn: runhashpling
+64: argument ctxt ref Context ref 3
+72: argument fd ref Sys->FD ref 2
+80: argument path string ref 3
+88: argument argv list of ref Listnode ref 4
+96: argument last int ref 1
+100: local i int ref 7
+104: local n int ref 3
+112: local .b117 big ref 8
+120: local header array of byte ref 8
+128: local nargs list of ref Listnode ref 7
+136: local args list of string ref 6
+144: local .b120 big ref 1
+152: local .t119 array of byte ref 1
+160: local .b118 (int, list of string) ref 1
+generate desc for runhashpling
+descmap offset 0
+descmap ctxt type ref Context offset 64 (d->offset=64 start=0) returns 64
+descmap fd type ref Sys->FD offset 72 (d->offset=72 start=0) returns 72
+descmap path type string offset 80 (d->offset=80 start=0) returns 80
+descmap argv type list of ref Listnode offset 88 (d->offset=88 start=0) returns 88
+descmap last type int offset 96 (d->offset=96 start=0) returns -1
+descmap i type int offset 100 (d->offset=100 start=0) returns -1
+descmap n type int offset 104 (d->offset=104 start=0) returns -1
+descmap .b117 type big offset 112 (d->offset=112 start=0) returns -1
+descmap header type array of byte offset 120 (d->offset=120 start=0) returns 120
+descmap nargs type list of ref Listnode offset 128 (d->offset=128 start=0) returns 128
+descmap args type list of string offset 136 (d->offset=136 start=0) returns 136
+descmap .b120 type big offset 144 (d->offset=144 start=0) returns -1
+descmap .t119 type array of byte offset 152 (d->offset=152 start=0) returns 152
+descmap adt offset 160
+descmap offset 160
+descmap t0 type int offset 160 (d->offset=0 start=160) returns -1
+descmap t1 type list of string offset 168 (d->offset=8 start=160) returns 168
+descmap .b118 type (int, list of string) offset 160 (d->offset=160 start=0) returns 168
+fncom: runblock 2 418fe8
+ecom: 
+= ref Node 10 1
+  name cmd ref Node 0 0
+  * ref Node 10 1
+    hd ref Listnode 10 1
+      name args list of ref Listnode 0 0
+ecom: 
+* ref Node 10 1
+  hd ref Listnode 10 1
+    name args list of ref Listnode 0 0
+ecom to: 
+name cmd ref Node 0 0
+eacom: 
+* ref Node 10 1
+  hd ref Listnode 10 1
+    name args list of ref Listnode 0 0
+ecom: 
+hd ref Listnode 10 1
+  name args list of ref Listnode 0 0
+ecom to: 
+name .t121 ref Listnode 0 0
+ecom: 
+= ref Listnode 10 1
+  name .t121 ref Listnode 0 0
+  name nil ref Listnode 1 0
+ecom: 
+name nil ref Listnode 1 0
+ecom to: 
+name .t121 ref Listnode 0 0
+ecom: 
+= ref YYLEX 10 2
+  name lex ref YYLEX 0 0
+  call ref YYLEX 10 2
+    name initstring fn(s: string): ref YYLEX 11 1
+    seq no type 10 1
+      * string 10 1
+        + int 10 1
+          hd ref Listnode 10 1
+            name args list of ref Listnode 0 0
+          const word (8) int 6 0
+ecom: 
+call ref YYLEX 10 2
+  name initstring fn(s: string): ref YYLEX 11 1
+  seq no type 10 1
+    * string 10 1
+      + int 10 1
+        hd ref Listnode 10 1
+          name args list of ref Listnode 0 0
+        const word (8) int 6 0
+ecom to: 
+name lex ref YYLEX 0 0
+generate desc for big
+ecom: 
+* string 10 1
+  + int 10 1
+    hd ref Listnode 10 1
+      name args list of ref Listnode 0 0
+    const word (8) int 6 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b122 big 0 0
+    const (64) int 6 0
+eacom: 
+* string 10 1
+  + int 10 1
+    hd ref Listnode 10 1
+      name args list of ref Listnode 0 0
+    const word (8) int 6 0
+ecom: 
+hd ref Listnode 10 1
+  name args list of ref Listnode 0 0
+ecom to: 
+name .t121 ref Listnode 0 0
+ecom: 
+= ref Listnode 10 1
+  name .t121 ref Listnode 0 0
+  name nil ref Listnode 1 0
+ecom: 
+name nil ref Listnode 1 0
+ecom to: 
+name .t121 ref Listnode 0 0
+ecom: 
+= (ref Node, string) 10 2
+  tuple (ref Node, string) 10 1
+    seq no type 10 1
+      name cmd ref Node 0 0
+      seq no type 10 1
+        name err string 0 0
+  call (ref Node, string) 10 2
+    name doparse fn(l: ref YYLEX, prompt: string, showline: int): (ref Node, string) 11 1
+    seq no type 10 1
+      name lex ref YYLEX 0 0
+      seq no type 10 1
+        const  string 1 0
+        seq no type 10 1
+          const (0) int 6 0
+generate desc for (ref Node, string)
+descmap adt offset 0
+descmap offset 0
+descmap t0 type ref Node offset 0 (d->offset=0 start=0) returns 0
+descmap t1 type string offset 8 (d->offset=8 start=0) returns 8
+generate desc for (ref Node, string)
+	desc	$-1,16,"c0"
+ecom: 
+call (ref Node, string) 10 2
+  name doparse fn(l: ref YYLEX, prompt: string, showline: int): (ref Node, string) 11 1
+  seq no type 10 1
+    name lex ref YYLEX 0 0
+    seq no type 10 1
+      const  string 1 0
+      seq no type 10 1
+        const (0) int 6 0
+ecom to: 
+name .b123 (ref Node, string) 0 0
+generate desc for big
+ecom: 
+name lex ref YYLEX 0 0
+ecom to: 
+* ref YYLEX 8 0
+  + int 15 0
+    name .b122 big 0 0
+    const (64) int 6 0
+ecom: 
+const  string 1 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b122 big 0 0
+    const (72) int 6 0
+ecom: 
+const (0) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b122 big 0 0
+    const (80) int 6 0
+ecom: 
+= ref Node 10 1
+  * ref Node 0 0
+    adr int 13 1
+      name .b123 (ref Node, string) 0 0
+  name nil ref Node 1 0
+ecom: 
+name nil ref Node 1 0
+ecom to: 
+* ref Node 0 0
+  adr int 13 1
+    name .b123 (ref Node, string) 0 0
+ecom: 
+= string 10 1
+  * string 0 0
+    + int 13 1
+      adr int 13 1
+        name .b123 (ref Node, string) 0 0
+      const t1 (8) int 6 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+* string 0 0
+  + int 13 1
+    adr int 13 1
+      name .b123 (ref Node, string) 0 0
+    const t1 (8) int 6 0
+ecom: 
+call no type 10 2
+  name fail fn(ctxt: self ref Context, ename: string, err: string) 11 1
+  seq nothing 10 1
+    name ctxt ref Context 0 0
+    seq no type 10 1
+      const parse error string 1 0
+      seq no type 10 1
+        + string 10 1
+          const sh:  string 1 0
+          name err string 0 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b122 big 0 0
+    const (64) int 6 0
+ecom: 
+const parse error string 1 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b122 big 0 0
+    const (72) int 6 0
+ecom: 
++ string 10 1
+  const sh:  string 1 0
+  name err string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b122 big 0 0
+    const (80) int 6 0
+ecom: 
+= ref Node 10 1
+  * ref Node 10 1
+    hd ref Listnode 10 1
+      name args list of ref Listnode 0 0
+  name cmd ref Node 0 0
+eacom: 
+* ref Node 10 1
+  hd ref Listnode 10 1
+    name args list of ref Listnode 0 0
+ecom: 
+hd ref Listnode 10 1
+  name args list of ref Listnode 0 0
+ecom to: 
+name .t121 ref Listnode 0 0
+ecom: 
+name cmd ref Node 0 0
+ecom to: 
+* ref Node 8 1
+  name .t121 ref Listnode 0 0
+ecom: 
+= ref Listnode 10 1
+  name .t121 ref Listnode 0 0
+  name nil ref Listnode 1 0
+ecom: 
+name nil ref Listnode 1 0
+ecom to: 
+name .t121 ref Listnode 0 0
+ecom: 
+= string 10 1
+  name err string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name err string 0 0
+ecom: 
+= ref YYLEX 10 1
+  name lex ref YYLEX 0 0
+  name nil ref YYLEX 1 0
+ecom: 
+name nil ref YYLEX 1 0
+ecom to: 
+name lex ref YYLEX 0 0
+ecom: 
+call no type 10 2
+  name push fn(ctxt: self ref Context) 11 1
+  seq nothing 10 1
+    name ctxt ref Context 0 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b122 big 0 0
+    const (64) int 6 0
+ecom: 
+call no type 10 2
+  name setlocal fn(ctxt: self ref Context, name: string, val: list of ref Listnode) 11 1
+  seq nothing 10 1
+    name ctxt ref Context 0 0
+    seq no type 10 1
+      const 0 string 1 0
+      seq no type 10 1
+        :: list of ref Listnode 10 1
+          hd ref Listnode 10 1
+            name args list of ref Listnode 0 0
+          name nil polymorphic type 1 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b122 big 0 0
+    const (64) int 6 0
+ecom: 
+const 0 string 1 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b122 big 0 0
+    const (72) int 6 0
+ecom: 
+:: list of ref Listnode 10 1
+  hd ref Listnode 10 1
+    name args list of ref Listnode 0 0
+  name nil polymorphic type 1 0
+ecom to: 
+* list of ref Listnode 8 0
+  + int 15 0
+    name .b122 big 0 0
+    const (80) int 6 0
+eacom: 
+hd ref Listnode 10 1
+  name args list of ref Listnode 0 0
+ecom: 
+hd ref Listnode 10 1
+  name args list of ref Listnode 0 0
+ecom to: 
+name .t121 ref Listnode 0 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+name .t124 list of ref Listnode 0 0
+ecom: 
+= ref Listnode 10 1
+  name .t121 ref Listnode 0 0
+  name nil ref Listnode 1 0
+ecom: 
+name nil ref Listnode 1 0
+ecom to: 
+name .t121 ref Listnode 0 0
+ecom: 
+= list of ref Listnode 10 1
+  name .t124 list of ref Listnode 0 0
+  name nil list of ref Listnode 1 0
+ecom: 
+name nil list of ref Listnode 1 0
+ecom to: 
+name .t124 list of ref Listnode 0 0
+ecom: 
+call no type 10 2
+  name setlocal fn(ctxt: self ref Context, name: string, val: list of ref Listnode) 11 1
+  seq nothing 10 1
+    name ctxt ref Context 0 0
+    seq no type 10 1
+      const * string 1 0
+      seq no type 10 1
+        tl list of ref Listnode 10 1
+          name args list of ref Listnode 0 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b122 big 0 0
+    const (64) int 6 0
+ecom: 
+const * string 1 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b122 big 0 0
+    const (72) int 6 0
+ecom: 
+tl list of ref Listnode 10 1
+  name args list of ref Listnode 0 0
+ecom to: 
+* list of ref Listnode 8 0
+  + int 15 0
+    name .b122 big 0 0
+    const (80) int 6 0
+ecom: 
+= ref Node 10 1
+  name cmd ref Node 0 0
+  * ref Node 8 0
+    + int 15 1
+      name cmd ref Node 0 0
+      const left (8) int 6 0
+ecom: 
+* ref Node 8 0
+  + int 15 1
+    name cmd ref Node 0 0
+    const left (8) int 6 0
+ecom to: 
+name cmd ref Node 0 0
+ecom: 
+= string 10 2
+  name status string 0 0
+  call string 10 2
+    name walk fn(ctxt: ref Context, n: ref Node, last: int): string 11 1
+    seq no type 10 1
+      name ctxt ref Context 0 0
+      seq no type 10 1
+        name cmd ref Node 0 0
+        seq no type 10 1
+          name last int 0 0
+ecom: 
+call string 10 2
+  name walk fn(ctxt: ref Context, n: ref Node, last: int): string 11 1
+  seq no type 10 1
+    name ctxt ref Context 0 0
+    seq no type 10 1
+      name cmd ref Node 0 0
+      seq no type 10 1
+        name last int 0 0
+ecom to: 
+name status string 0 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b122 big 0 0
+    const (64) int 6 0
+ecom: 
+name cmd ref Node 0 0
+ecom to: 
+* ref Node 8 0
+  + int 15 0
+    name .b122 big 0 0
+    const (72) int 6 0
+ecom: 
+name last int 0 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b122 big 0 0
+    const (80) int 6 0
+ecom: 
+call no type 10 2
+  name pop fn(ctxt: self ref Context) 11 1
+  seq nothing 10 1
+    name ctxt ref Context 0 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b122 big 0 0
+    const (64) int 6 0
+ecom: 
+name status string 0 0
+ecom to: 
+* string 8 0
+  name .ret int 0 0
+ecom: 
+= string 10 1
+  name status string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name status string 0 0
+ecom: 
+call no type 10 2
+  name pop fn(ctxt: self ref Context) 11 1
+  seq nothing 10 1
+    name ctxt ref Context 0 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b122 big 0 0
+    const (64) int 6 0
+ecom: 
+raise nothing 10 1
+  name .ex2 exception 0 0
+fn: runblock
+64: argument ctxt ref Context ref 7
+72: argument args list of ref Listnode ref 5
+80: argument last int ref 1
+84: local .ex2 ref exception ref 1
+88: local cmd ref Node ref 10
+96: local .b122 big ref 9
+104: local err string ref 2
+112: local lex ref YYLEX ref 2
+120: local status string ref 2
+128: local .t121 ref Listnode ref 1
+136: local .t124 list of ref Listnode ref 1
+144: local .b123 (ref Node, string) ref 1
+generate desc for runblock
+descmap offset 0
+descmap ctxt type ref Context offset 64 (d->offset=64 start=0) returns 64
+descmap args type list of ref Listnode offset 72 (d->offset=72 start=0) returns 72
+descmap last type int offset 80 (d->offset=80 start=0) returns -1
+descmap .ex2 type ref exception offset 84 (d->offset=84 start=0) returns 88
+descmap cmd type ref Node offset 88 (d->offset=88 start=0) returns 88
+descmap .b122 type big offset 96 (d->offset=96 start=0) returns -1
+descmap err type string offset 104 (d->offset=104 start=0) returns 104
+descmap lex type ref YYLEX offset 112 (d->offset=112 start=0) returns 112
+descmap status type string offset 120 (d->offset=120 start=0) returns 120
+descmap .t121 type ref Listnode offset 128 (d->offset=128 start=0) returns 128
+descmap .t124 type list of ref Listnode offset 136 (d->offset=136 start=0) returns 136
+descmap adt offset 144
+descmap offset 144
+descmap t0 type ref Node offset 144 (d->offset=0 start=144) returns 144
+descmap t1 type string offset 152 (d->offset=8 start=144) returns 152
+descmap .b123 type (ref Node, string) offset 144 (d->offset=144 start=0) returns 152
+generate desc for .ex2
+descmap offset 0
+descmap status type string offset 120 (d->offset=120 start=0) returns 120
+fncom: trybuiltin 2 4190a8
+ecom: 
+= (int, list of Shellbuiltin) 10 2
+  tuple (int, list of Shellbuiltin) 10 1
+    seq nothing 10 1
+      name nil polymorphic type 1 0
+      seq nothing 10 1
+        name bmods list of Shellbuiltin 0 0
+  call (int, list of Shellbuiltin) 10 2
+    name findbuiltin fn(b: ref Builtins, name: string): (int, list of Shellbuiltin) 11 1
+    seq no type 10 2
+      * ref Builtins 10 1
+        + int 10 1
+          * ref Environment 8 0
+            name ctxt ref Context 0 0
+          const builtins (8) int 6 0
+      seq no type 10 1
+        * string 10 1
+          + int 10 1
+            hd ref Listnode 10 1
+              name args list of ref Listnode 0 0
+            const word (8) int 6 0
+generate desc for (int, list of Shellbuiltin)
+ecom: 
+call (int, list of Shellbuiltin) 10 2
+  name findbuiltin fn(b: ref Builtins, name: string): (int, list of Shellbuiltin) 11 1
+  seq no type 10 2
+    * ref Builtins 10 1
+      + int 10 1
+        * ref Environment 8 0
+          name ctxt ref Context 0 0
+        const builtins (8) int 6 0
+    seq no type 10 1
+      * string 10 1
+        + int 10 1
+          hd ref Listnode 10 1
+            name args list of ref Listnode 0 0
+          const word (8) int 6 0
+ecom to: 
+name .b125 (int, list of Shellbuiltin) 0 0
+generate desc for big
+ecom: 
+* ref Builtins 10 1
+  + int 10 1
+    * ref Environment 8 0
+      name ctxt ref Context 0 0
+    const builtins (8) int 6 0
+ecom to: 
+* ref Builtins 8 0
+  + int 15 0
+    name .b126 big 0 0
+    const (64) int 6 0
+eacom: 
+* ref Builtins 10 1
+  + int 10 1
+    * ref Environment 8 0
+      name ctxt ref Context 0 0
+    const builtins (8) int 6 0
+ecom: 
+* ref Environment 8 0
+  name ctxt ref Context 0 0
+ecom to: 
+name .t127 ref Environment 0 0
+ecom: 
+= ref Environment 10 1
+  name .t127 ref Environment 0 0
+  name nil ref Environment 1 0
+ecom: 
+name nil ref Environment 1 0
+ecom to: 
+name .t127 ref Environment 0 0
+ecom: 
+* string 10 1
+  + int 10 1
+    hd ref Listnode 10 1
+      name args list of ref Listnode 0 0
+    const word (8) int 6 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b126 big 0 0
+    const (72) int 6 0
+eacom: 
+* string 10 1
+  + int 10 1
+    hd ref Listnode 10 1
+      name args list of ref Listnode 0 0
+    const word (8) int 6 0
+ecom: 
+hd ref Listnode 10 1
+  name args list of ref Listnode 0 0
+ecom to: 
+name .t127 ref Listnode 0 0
+ecom: 
+= ref Listnode 10 1
+  name .t127 ref Listnode 0 0
+  name nil ref Listnode 1 0
+ecom: 
+name nil ref Listnode 1 0
+ecom to: 
+name .t127 ref Listnode 0 0
+ecom: 
+= list of Shellbuiltin 10 1
+  * list of Shellbuiltin 0 0
+    + int 13 1
+      adr int 13 1
+        name .b125 (int, list of Shellbuiltin) 0 0
+      const t1 (8) int 6 0
+  name nil list of Shellbuiltin 1 0
+ecom: 
+name nil list of Shellbuiltin 1 0
+ecom to: 
+* list of Shellbuiltin 0 0
+  + int 13 1
+    adr int 13 1
+      name .b125 (int, list of Shellbuiltin) 0 0
+    const t1 (8) int 6 0
+ecom: 
+tuple (int, polymorphic type) 10 1
+  seq no type 10 1
+    const (0) int 6 0
+    seq no type 10 1
+      name nil polymorphic type 1 0
+ecom to: 
+* (int, polymorphic type) 8 0
+  name .ret int 0 0
+ecom: 
+const (0) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 1
+    adr int 15 1
+      * (int, polymorphic type) 8 0
+        name .ret int 0 0
+    const (0) int 6 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* polymorphic type 8 0
+  + int 15 1
+    adr int 15 1
+      * (int, polymorphic type) 8 0
+        name .ret int 0 0
+    const (8) int 6 0
+ecom: 
+tuple (int, string) 10 2
+  seq no type 10 2
+    const (1) int 6 0
+    seq no type 10 2
+      call string 10 2
+        -> fn(c: ref Context, sh: Sh, cmd: list of ref Listnode, last: int): string 12 2
+          hd Shellbuiltin 10 1
+            name bmods list of Shellbuiltin 0 0
+          name runbuiltin nothing 11 1
+        seq no type 10 1
+          name ctxt ref Context 0 0
+          seq no type 10 1
+            name myself Sh 1 0
+            seq no type 10 1
+              name args list of ref Listnode 0 0
+              seq no type 10 1
+                name lseq int 0 0
+ecom to: 
+* (int, string) 8 0
+  name .ret int 0 0
+ecom: 
+const (1) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 1
+    adr int 15 1
+      * (int, string) 8 0
+        name .ret int 0 0
+    const (0) int 6 0
+ecom: 
+call string 10 2
+  -> fn(c: ref Context, sh: Sh, cmd: list of ref Listnode, last: int): string 12 2
+    hd Shellbuiltin 10 1
+      name bmods list of Shellbuiltin 0 0
+    name runbuiltin nothing 11 1
+  seq no type 10 1
+    name ctxt ref Context 0 0
+    seq no type 10 1
+      name myself Sh 1 0
+      seq no type 10 1
+        name args list of ref Listnode 0 0
+        seq no type 10 1
+          name lseq int 0 0
+ecom to: 
+* string 8 0
+  + int 15 1
+    adr int 15 1
+      * (int, string) 8 0
+        name .ret int 0 0
+    const (8) int 6 0
+generate desc for big
+eacom: 
+hd Shellbuiltin 10 1
+  name bmods list of Shellbuiltin 0 0
+ecom: 
+hd Shellbuiltin 10 1
+  name bmods list of Shellbuiltin 0 0
+ecom to: 
+name .t127 Shellbuiltin 0 0
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b126 big 0 0
+    const (64) int 6 0
+ecom: 
+name myself Sh 1 0
+ecom to: 
+* Sh 8 0
+  + int 15 0
+    name .b126 big 0 0
+    const (72) int 6 0
+ecom: 
+name args list of ref Listnode 0 0
+ecom to: 
+* list of ref Listnode 8 0
+  + int 15 0
+    name .b126 big 0 0
+    const (80) int 6 0
+ecom: 
+name lseq int 0 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b126 big 0 0
+    const (88) int 6 0
+ecom: 
+= Shellbuiltin 10 1
+  name .t127 Shellbuiltin 0 0
+  name nil Shellbuiltin 1 0
+ecom: 
+name nil Shellbuiltin 1 0
+ecom to: 
+name .t127 Shellbuiltin 0 0
+fn: trybuiltin
+64: argument ctxt ref Context ref 2
+72: argument args list of ref Listnode ref 2
+80: argument lseq int ref 1
+88: local bmods list of Shellbuiltin ref 3
+96: local .b126 big ref 2
+104: local .t127 ref Environment ref 1
+112: local .b125 (int, list of Shellbuiltin) ref 1
+generate desc for trybuiltin
+descmap offset 0
+descmap ctxt type ref Context offset 64 (d->offset=64 start=0) returns 64
+descmap args type list of ref Listnode offset 72 (d->offset=72 start=0) returns 72
+descmap lseq type int offset 80 (d->offset=80 start=0) returns -1
+descmap bmods type list of Shellbuiltin offset 88 (d->offset=88 start=0) returns 88
+descmap .b126 type big offset 96 (d->offset=96 start=0) returns -1
+descmap .t127 type ref Environment offset 104 (d->offset=104 start=0) returns 104
+descmap adt offset 112
+descmap offset 112
+descmap t0 type int offset 112 (d->offset=0 start=112) returns -1
+descmap t1 type list of Shellbuiltin offset 120 (d->offset=8 start=112) returns 120
+descmap .b125 type (int, list of Shellbuiltin) offset 112 (d->offset=112 start=0) returns 120
+fncom: keepfdstr 1 419168
+fncom: externalexec 2 419228
+ecom: 
+used int 10 2
+  call int 10 2
+    -> fn(flags: int, movefd: list of int): int 12 1
+      name sys Sys 1 0
+      name pctl nothing 11 1
+    seq no type 10 1
+      const NEWFD (1) int 6 0
+      seq no type 10 1
+        name keepfds list of int 0 0
+ecom: 
+call int 10 2
+  -> fn(flags: int, movefd: list of int): int 12 1
+    name sys Sys 1 0
+    name pctl nothing 11 1
+  seq no type 10 1
+    const NEWFD (1) int 6 0
+    seq no type 10 1
+      name keepfds list of int 0 0
+ecom to: 
+name .t128 int 0 0
+generate desc for big
+ecom: 
+const NEWFD (1) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b129 big 0 0
+    const (64) int 6 0
+ecom: 
+name keepfds list of int 0 0
+ecom to: 
+* list of int 8 0
+  + int 15 0
+    name .b129 big 0 0
+    const (72) int 6 0
+ecom: 
+<-= int 10 2
+  name startchan chan of int 0 0
+  call int 10 2
+    -> fn(flags: int, movefd: list of int): int 12 1
+      name sys Sys 1 0
+      name pctl nothing 11 1
+    seq no type 10 1
+      const (0) int 6 0
+      seq no type 10 1
+        name nil list of int 1 0
+eacom: 
+call int 10 2
+  -> fn(flags: int, movefd: list of int): int 12 1
+    name sys Sys 1 0
+    name pctl nothing 11 1
+  seq no type 10 1
+    const (0) int 6 0
+    seq no type 10 1
+      name nil list of int 1 0
+ecom: 
+call int 10 2
+  -> fn(flags: int, movefd: list of int): int 12 1
+    name sys Sys 1 0
+    name pctl nothing 11 1
+  seq no type 10 1
+    const (0) int 6 0
+    seq no type 10 1
+      name nil list of int 1 0
+ecom to: 
+name .t128 int 0 0
+generate desc for big
+ecom: 
+const (0) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b129 big 0 0
+    const (64) int 6 0
+ecom: 
+name nil list of int 1 0
+ecom to: 
+* list of int 8 0
+  + int 15 0
+    name .b129 big 0 0
+    const (72) int 6 0
+ecom: 
+call no type 10 2
+  -> fn(ctxt: ref Draw->Context, argv: list of string) 12 1
+    name mod Command 0 0
+    name init nothing 11 1
+  seq no type 10 1
+    name drawcontext ref Draw->Context 0 0
+    seq no type 10 1
+      name argv list of string 0 0
+generate desc for big
+ecom: 
+name drawcontext ref Draw->Context 0 0
+ecom to: 
+* ref Draw->Context 8 0
+  + int 15 0
+    name .b129 big 0 0
+    const (64) int 6 0
+ecom: 
+name argv list of string 0 0
+ecom to: 
+* list of string 8 0
+  + int 15 0
+    name .b129 big 0 0
+    const (72) int 6 0
+ecom: 
+raise nothing 10 1
+  const fail:write on closed pipe string 1 0
+fn: externalexec
+64: argument mod Command ref 1
+72: argument drawcontext ref Draw->Context ref 1
+80: argument argv list of string ref 3
+88: argument startchan chan of int ref 1
+96: argument keepfds list of int ref 1
+104: local .ex3 ref exception ref 1
+108: local .t128 int ref 1
+112: local .b129 big ref 3
+generate desc for externalexec
+descmap offset 0
+descmap mod type Command offset 64 (d->offset=64 start=0) returns 64
+descmap drawcontext type ref Draw->Context offset 72 (d->offset=72 start=0) returns 72
+descmap argv type list of string offset 80 (d->offset=80 start=0) returns 80
+descmap startchan type chan of int offset 88 (d->offset=88 start=0) returns 88
+descmap keepfds type list of int offset 96 (d->offset=96 start=0) returns 96
+descmap .ex3 type ref exception offset 104 (d->offset=104 start=0) returns 104
+descmap .t128 type int offset 108 (d->offset=108 start=0) returns -1
+descmap .b129 type big offset 112 (d->offset=112 start=0) returns -1
+fncom: dup 3 4192e8
+eacom: 
+* int 10 1
+  * ref Sys->FD 8 0
+    + int 15 1
+      name ctxt ref Context 0 0
+      const waitfd (8) int 6 0
+ecom: 
+* ref Sys->FD 8 0
+  + int 15 1
+    name ctxt ref Context 0 0
+    const waitfd (8) int 6 0
+ecom to: 
+name .t130 ref Sys->FD 0 0
+ecom: 
+= ref Sys->FD 10 1
+  name .t130 ref Sys->FD 0 0
+  name nil ref Sys->FD 1 0
+ecom: 
+name nil ref Sys->FD 1 0
+ecom to: 
+name .t130 ref Sys->FD 0 0
+ecom: 
+= ref Sys->FD 10 1
+  * ref Sys->FD 8 0
+    + int 15 1
+      name ctxt ref Context 0 0
+      const waitfd (8) int 6 0
+  call ref Sys->FD 10 1
+    name waitfd fn(): ref Sys->FD 11 1
+ecom: 
+call ref Sys->FD 10 1
+  name waitfd fn(): ref Sys->FD 11 1
+ecom to: 
+* ref Sys->FD 8 0
+  + int 15 1
+    name ctxt ref Context 0 0
+    const waitfd (8) int 6 0
+generate desc for big
+eacom: 
+* int 10 1
+  * ref Sys->FD 8 0
+    + int 15 1
+      name ctxt ref Context 0 0
+      const waitfd (8) int 6 0
+ecom: 
+* ref Sys->FD 8 0
+  + int 15 1
+    name ctxt ref Context 0 0
+    const waitfd (8) int 6 0
+ecom to: 
+name .t130 ref Sys->FD 0 0
+ecom: 
+= ref Sys->FD 10 1
+  name .t130 ref Sys->FD 0 0
+  name nil ref Sys->FD 1 0
+ecom: 
+name nil ref Sys->FD 1 0
+ecom to: 
+name .t130 ref Sys->FD 0 0
+ecom: 
+call no type 10 2
+  name panic fn(s: string) 11 1
+  seq no type 10 2
+    call string 10 2
+      -> fn(s: string, nil: int, *): string 12 1
+        name sys Sys 1 0
+        name sprint nothing 11 1
+      seq no type 10 1
+        const reopen of waitfd gave same fd (%d) string 1 0
+        seq no type 10 1
+          * int 10 1
+            * ref Sys->FD 8 0
+              + int 15 1
+                name ctxt ref Context 0 0
+                const waitfd (8) int 6 0
+generate desc for big
+ecom: 
+call string 10 2
+  -> fn(s: string, nil: int, *): string 12 1
+    name sys Sys 1 0
+    name sprint nothing 11 1
+  seq no type 10 1
+    const reopen of waitfd gave same fd (%d) string 1 0
+    seq no type 10 1
+      * int 10 1
+        * ref Sys->FD 8 0
+          + int 15 1
+            name ctxt ref Context 0 0
+            const waitfd (8) int 6 0
+ecom to: 
+name .t130 string 0 0
+generate desc for Sys->sprint
+descmap offset 0
+descmap s type string offset 64 (d->offset=64 start=0) returns 64
+descmap type int offset 72 returns -1
+generate desc for big
+ecom: 
+const reopen of waitfd gave same fd (%d) string 1 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b132 big 0 0
+    const (64) int 6 0
+ecom: 
+* int 10 1
+  * ref Sys->FD 8 0
+    + int 15 1
+      name ctxt ref Context 0 0
+      const waitfd (8) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b132 big 0 0
+    const (72) int 6 0
+eacom: 
+* int 10 1
+  * ref Sys->FD 8 0
+    + int 15 1
+      name ctxt ref Context 0 0
+      const waitfd (8) int 6 0
+ecom: 
+* ref Sys->FD 8 0
+  + int 15 1
+    name ctxt ref Context 0 0
+    const waitfd (8) int 6 0
+ecom to: 
+name .t133 ref Sys->FD 0 0
+ecom: 
+= ref Sys->FD 10 1
+  name .t133 ref Sys->FD 0 0
+  name nil ref Sys->FD 1 0
+ecom: 
+name nil ref Sys->FD 1 0
+ecom to: 
+name .t133 ref Sys->FD 0 0
+ecom: 
+name .t130 string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b131 big 0 0
+    const (64) int 6 0
+ecom: 
+= string 10 1
+  name .t130 string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name .t130 string 0 0
+ecom: 
+call int 10 2
+  -> fn(old: int, new: int): int 12 1
+    name sys Sys 1 0
+    name dup nothing 11 1
+  seq no type 10 1
+    name fd1 int 0 0
+    seq no type 10 1
+      name fd2 int 0 0
+ecom to: 
+* int 8 0
+  name .ret int 0 0
+generate desc for big
+ecom: 
+name fd1 int 0 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b132 big 0 0
+    const (64) int 6 0
+ecom: 
+name fd2 int 0 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b132 big 0 0
+    const (68) int 6 0
+fn: dup
+64: argument ctxt ref Context ref 4
+72: argument fd1 int ref 1
+76: argument fd2 int ref 3
+80: local .b131 big ref 2
+88: local .b132 big ref 2
+96: local .t130 ref Sys->FD ref 1
+104: local .t133 ref Sys->FD ref 1
+generate desc for dup
+descmap offset 0
+descmap ctxt type ref Context offset 64 (d->offset=64 start=0) returns 64
+descmap fd1 type int offset 72 (d->offset=72 start=0) returns -1
+descmap fd2 type int offset 76 (d->offset=76 start=0) returns -1
+descmap .b131 type big offset 80 (d->offset=80 start=0) returns -1
+descmap .b132 type big offset 88 (d->offset=88 start=0) returns -1
+descmap .t130 type ref Sys->FD offset 96 (d->offset=96 start=0) returns 96
+descmap .t133 type ref Sys->FD offset 104 (d->offset=104 start=0) returns 104
+fncom: doredirs 3 4193a8
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* polymorphic type 8 0
+  name .ret int 0 0
+ecom: 
+= list of int 10 1
+  name keepfds list of int 0 0
+  * list of int 8 0
+    + int 15 1
+      name ctxt ref Context 0 0
+      const keepfds (24) int 6 0
+ecom: 
+* list of int 8 0
+  + int 15 1
+    name ctxt ref Context 0 0
+    const keepfds (24) int 6 0
+ecom to: 
+name keepfds list of int 0 0
+ecom: 
+= list of Redirword 10 1
+  name rl list of Redirword 0 0
+  * list of Redirword 8 0
+    name redirs ref Redirlist 0 0
+ecom: 
+* list of Redirword 8 0
+  name redirs ref Redirlist 0 0
+ecom to: 
+name rl list of Redirword 0 0
+ecom: 
+= ref Redirlist 10 1
+  name redirs ref Redirlist 0 0
+  name nil polymorphic type 1 0
+ecom: 
+name nil ref Redirlist 1 0
+ecom to: 
+name redirs ref Redirlist 0 0
+ecom: 
+= Redirword 10 2
+  tuple Redirword 10 1
+    seq nothing 10 1
+      name rfd ref Sys->FD 0 0
+      seq nothing 10 1
+        name path string 0 0
+        seq nothing 10 1
+          tuple Redir 10 1
+            seq nothing 10 1
+              name mode int 0 0
+              seq nothing 10 1
+                name fd1 int 0 0
+                seq nothing 10 1
+                  name fd2 int 0 0
+  hd Redirword 10 1
+    name rl list of Redirword 0 0
+ecom: 
+hd Redirword 10 1
+  name rl list of Redirword 0 0
+ecom to: 
+name rfd Redirword 0 0
+generate desc for Redirword
+ecom: 
+call no type 10 2
+  name fail fn(ctxt: self ref Context, ename: string, err: string) 11 1
+  seq nothing 10 1
+    name ctxt ref Context 0 0
+    seq no type 10 1
+      const bad redir string 1 0
+      seq no type 10 1
+        const sh: invalid dup string 1 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b134 big 0 0
+    const (64) int 6 0
+ecom: 
+const bad redir string 1 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b134 big 0 0
+    const (72) int 6 0
+ecom: 
+const sh: invalid dup string 1 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b134 big 0 0
+    const (80) int 6 0
+eacom: 
+call int 10 2
+  name dup fn(ctxt: ref Context, fd1: int, fd2: int): int 11 1
+  seq no type 10 1
+    name ctxt ref Context 0 0
+    seq no type 10 1
+      name fd2 int 0 0
+      seq no type 10 1
+        name fd1 int 0 0
+ecom: 
+call int 10 2
+  name dup fn(ctxt: ref Context, fd1: int, fd2: int): int 11 1
+  seq no type 10 1
+    name ctxt ref Context 0 0
+    seq no type 10 1
+      name fd2 int 0 0
+      seq no type 10 1
+        name fd1 int 0 0
+ecom to: 
+name .t135 int 0 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b134 big 0 0
+    const (64) int 6 0
+ecom: 
+name fd2 int 0 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b134 big 0 0
+    const (72) int 6 0
+ecom: 
+name fd1 int 0 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b134 big 0 0
+    const (76) int 6 0
+ecom: 
+call no type 10 2
+  name fail fn(ctxt: self ref Context, ename: string, err: string) 11 1
+  seq nothing 10 2
+    name ctxt ref Context 0 0
+    seq no type 10 2
+      const bad redir string 1 0
+      seq no type 10 2
+        call string 10 2
+          -> fn(s: string, *): string 12 1
+            name sys Sys 1 0
+            name sprint nothing 11 1
+          seq no type 10 1
+            const sh: cannot dup: %r string 1 0
+generate desc for big
+ecom: 
+call string 10 2
+  -> fn(s: string, *): string 12 1
+    name sys Sys 1 0
+    name sprint nothing 11 1
+  seq no type 10 1
+    const sh: cannot dup: %r string 1 0
+ecom to: 
+name .t136 string 0 0
+generate desc for Sys->sprint
+descmap offset 0
+descmap s type string offset 64 (d->offset=64 start=0) returns 64
+generate desc for big
+ecom: 
+const sh: cannot dup: %r string 1 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b137 big 0 0
+    const (64) int 6 0
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b134 big 0 0
+    const (64) int 6 0
+ecom: 
+const bad redir string 1 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b134 big 0 0
+    const (72) int 6 0
+ecom: 
+name .t136 string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b134 big 0 0
+    const (80) int 6 0
+ecom: 
+= string 10 1
+  name .t136 string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name .t136 string 0 0
+ecom: 
+= list of int 10 1
+  name keepfds list of int 0 0
+  :: list of int 10 1
+    name fd1 int 0 0
+    name keepfds list of int 0 0
+ecom: 
+:: list of int 10 1
+  name fd1 int 0 0
+  name keepfds list of int 0 0
+ecom to: 
+name keepfds list of int 0 0
+ecom: 
+= ref Sys->FD 10 1
+  * ref Sys->FD 0 0
+    adr int 13 1
+      name rfd Redirword 0 0
+  name nil ref Sys->FD 1 0
+ecom: 
+name nil ref Sys->FD 1 0
+ecom to: 
+* ref Sys->FD 0 0
+  adr int 13 1
+    name rfd Redirword 0 0
+ecom: 
+= string 10 1
+  * string 0 0
+    + int 13 1
+      adr int 13 1
+        name rfd Redirword 0 0
+      const w (8) int 6 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+* string 0 0
+  + int 13 1
+    adr int 13 1
+      name rfd Redirword 0 0
+    const w (8) int 6 0
+ecom: 
+= string 10 1
+  name path string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name path string 0 0
+eacom: 
+& int 10 1
+  name mode int 0 0
+  const OMASK (7) int 6 0
+ecom: 
+& int 10 1
+  name mode int 0 0
+  const OMASK (7) int 6 0
+ecom to: 
+name .t135 int 0 0
+ecom: 
+= int 10 1
+  name fd1 int 0 0
+  const (1) int 6 0
+ecom: 
+const (1) int 6 0
+ecom to: 
+name fd1 int 0 0
+ecom: 
+= int 10 1
+  name fd1 int 0 0
+  const (0) int 6 0
+ecom: 
+const (0) int 6 0
+ecom to: 
+name fd1 int 0 0
+ecom: 
+= (int, int) 10 2
+  tuple (int, int) 10 1
+    seq nothing 10 1
+      name append int 0 0
+      seq nothing 10 1
+        name omode int 0 0
+  tuple (int, int) 10 2
+    seq no type 10 2
+      & int 10 1
+        name mode int 0 0
+        const OAPPEND (524288) int 6 0
+      seq no type 10 1
+        & int 10 1
+          name mode int 0 0
+          const (-524289) int 6 0
+ecom: 
+tuple (int, int) 10 2
+  seq no type 10 2
+    & int 10 1
+      name mode int 0 0
+      const OAPPEND (524288) int 6 0
+    seq no type 10 1
+      & int 10 1
+        name mode int 0 0
+        const (-524289) int 6 0
+ecom to: 
+name append (int, int) 0 0
+ecom: 
+& int 10 1
+  name mode int 0 0
+  const OAPPEND (524288) int 6 0
+ecom to: 
+* int 0 0
+  + int 13 1
+    adr int 13 1
+      name append (int, int) 0 0
+    const (0) int 6 0
+ecom: 
+& int 10 1
+  name mode int 0 0
+  const (-524289) int 6 0
+ecom to: 
+* int 0 0
+  + int 13 1
+    adr int 13 1
+      name append (int, int) 0 0
+    const (4) int 6 0
+ecom: 
+= string 10 1
+  name err string 0 0
+  const  string 1 0
+ecom: 
+const  string 1 0
+ecom to: 
+name err string 0 0
+ecom: 
+= ref Sys->FD 10 2
+  name rfd ref Sys->FD 0 0
+  call ref Sys->FD 10 2
+    -> fn(s: string, mode: int): ref Sys->FD 12 1
+      name sys Sys 1 0
+      name open nothing 11 1
+    seq no type 10 1
+      name path string 0 0
+      seq no type 10 1
+        name omode int 0 0
+ecom: 
+call ref Sys->FD 10 2
+  -> fn(s: string, mode: int): ref Sys->FD 12 1
+    name sys Sys 1 0
+    name open nothing 11 1
+  seq no type 10 1
+    name path string 0 0
+    seq no type 10 1
+      name omode int 0 0
+ecom to: 
+name rfd ref Sys->FD 0 0
+generate desc for big
+ecom: 
+name path string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b137 big 0 0
+    const (64) int 6 0
+ecom: 
+name omode int 0 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b137 big 0 0
+    const (72) int 6 0
+ecom: 
+= ref Sys->FD 10 2
+  name rfd ref Sys->FD 0 0
+  call ref Sys->FD 10 2
+    -> fn(s: string, mode: int): ref Sys->FD 12 1
+      name sys Sys 1 0
+      name open nothing 11 1
+    seq no type 10 1
+      name path string 0 0
+      seq no type 10 1
+        name omode int 0 0
+ecom: 
+call ref Sys->FD 10 2
+  -> fn(s: string, mode: int): ref Sys->FD 12 1
+    name sys Sys 1 0
+    name open nothing 11 1
+  seq no type 10 1
+    name path string 0 0
+    seq no type 10 1
+      name omode int 0 0
+ecom to: 
+name rfd ref Sys->FD 0 0
+generate desc for big
+ecom: 
+name path string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b137 big 0 0
+    const (64) int 6 0
+ecom: 
+name omode int 0 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b137 big 0 0
+    const (72) int 6 0
+ecom: 
+= string 10 2
+  name err string 0 0
+  call string 10 2
+    -> fn(s: string, *): string 12 1
+      name sys Sys 1 0
+      name sprint fn(s: string, *): string 11 1
+    seq no type 10 1
+      const %r string 1 0
+ecom: 
+call string 10 2
+  -> fn(s: string, *): string 12 1
+    name sys Sys 1 0
+    name sprint fn(s: string, *): string 11 1
+  seq no type 10 1
+    const %r string 1 0
+ecom to: 
+name err string 0 0
+generate desc for Sys->sprint
+descmap offset 0
+descmap s type string offset 64 (d->offset=64 start=0) returns 64
+generate desc for big
+ecom: 
+const %r string 1 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b137 big 0 0
+    const (64) int 6 0
+eacom: 
+call int 10 2
+  name nonexistent fn(e: string): int 11 1
+  seq no type 10 1
+    name err string 0 0
+ecom: 
+call int 10 2
+  name nonexistent fn(e: string): int 11 1
+  seq no type 10 1
+    name err string 0 0
+ecom to: 
+name .t135 int 0 0
+generate desc for big
+ecom: 
+name err string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b137 big 0 0
+    const (64) int 6 0
+ecom: 
+= ref Sys->FD 10 2
+  name rfd ref Sys->FD 0 0
+  call ref Sys->FD 10 2
+    -> fn(s: string, mode: int, perm: int): ref Sys->FD 12 1
+      name sys Sys 1 0
+      name create nothing 11 1
+    seq no type 10 1
+      name path string 0 0
+      seq no type 10 1
+        name omode int 0 0
+        seq no type 10 1
+          const (438) int 6 0
+ecom: 
+call ref Sys->FD 10 2
+  -> fn(s: string, mode: int, perm: int): ref Sys->FD 12 1
+    name sys Sys 1 0
+    name create nothing 11 1
+  seq no type 10 1
+    name path string 0 0
+    seq no type 10 1
+      name omode int 0 0
+      seq no type 10 1
+        const (438) int 6 0
+ecom to: 
+name rfd ref Sys->FD 0 0
+generate desc for big
+ecom: 
+name path string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b137 big 0 0
+    const (64) int 6 0
+ecom: 
+name omode int 0 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b137 big 0 0
+    const (72) int 6 0
+ecom: 
+const (438) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b137 big 0 0
+    const (76) int 6 0
+ecom: 
+= string 10 1
+  name err string 0 0
+  name nil polymorphic type 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name err string 0 0
+ecom: 
+= ref Sys->FD 10 2
+  name rfd ref Sys->FD 0 0
+  call ref Sys->FD 10 2
+    -> fn(s: string, mode: int, perm: int): ref Sys->FD 12 1
+      name sys Sys 1 0
+      name create nothing 11 1
+    seq no type 10 1
+      name path string 0 0
+      seq no type 10 1
+        name omode int 0 0
+        seq no type 10 1
+          const (438) int 6 0
+ecom: 
+call ref Sys->FD 10 2
+  -> fn(s: string, mode: int, perm: int): ref Sys->FD 12 1
+    name sys Sys 1 0
+    name create nothing 11 1
+  seq no type 10 1
+    name path string 0 0
+    seq no type 10 1
+      name omode int 0 0
+      seq no type 10 1
+        const (438) int 6 0
+ecom to: 
+name rfd ref Sys->FD 0 0
+generate desc for big
+ecom: 
+name path string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b137 big 0 0
+    const (64) int 6 0
+ecom: 
+name omode int 0 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b137 big 0 0
+    const (72) int 6 0
+ecom: 
+const (438) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b137 big 0 0
+    const (76) int 6 0
+ecom: 
+= string 10 2
+  name err string 0 0
+  call string 10 2
+    -> fn(s: string, *): string 12 1
+      name sys Sys 1 0
+      name sprint fn(s: string, *): string 11 1
+    seq no type 10 1
+      const %r string 1 0
+ecom: 
+call string 10 2
+  -> fn(s: string, *): string 12 1
+    name sys Sys 1 0
+    name sprint fn(s: string, *): string 11 1
+  seq no type 10 1
+    const %r string 1 0
+ecom to: 
+name err string 0 0
+generate desc for Sys->sprint
+descmap offset 0
+descmap s type string offset 64 (d->offset=64 start=0) returns 64
+generate desc for big
+ecom: 
+const %r string 1 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b137 big 0 0
+    const (64) int 6 0
+ecom: 
+= ref Sys->FD 10 2
+  name rfd ref Sys->FD 0 0
+  call ref Sys->FD 10 2
+    -> fn(s: string, mode: int): ref Sys->FD 12 1
+      name sys Sys 1 0
+      name open nothing 11 1
+    seq no type 10 1
+      name path string 0 0
+      seq no type 10 1
+        name omode int 0 0
+ecom: 
+call ref Sys->FD 10 2
+  -> fn(s: string, mode: int): ref Sys->FD 12 1
+    name sys Sys 1 0
+    name open nothing 11 1
+  seq no type 10 1
+    name path string 0 0
+    seq no type 10 1
+      name omode int 0 0
+ecom to: 
+name rfd ref Sys->FD 0 0
+generate desc for big
+ecom: 
+name path string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b137 big 0 0
+    const (64) int 6 0
+ecom: 
+name omode int 0 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b137 big 0 0
+    const (72) int 6 0
+ecom: 
+= string 10 2
+  name nerr string 0 0
+  call string 10 2
+    -> fn(s: string, *): string 12 1
+      name sys Sys 1 0
+      name sprint fn(s: string, *): string 11 1
+    seq no type 10 1
+      const %r string 1 0
+ecom: 
+call string 10 2
+  -> fn(s: string, *): string 12 1
+    name sys Sys 1 0
+    name sprint fn(s: string, *): string 11 1
+  seq no type 10 1
+    const %r string 1 0
+ecom to: 
+name nerr string 0 0
+generate desc for Sys->sprint
+descmap offset 0
+descmap s type string offset 64 (d->offset=64 start=0) returns 64
+generate desc for big
+ecom: 
+const %r string 1 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b137 big 0 0
+    const (64) int 6 0
+eacom: 
+call int 10 2
+  name nonexistent fn(e: string): int 11 1
+  seq no type 10 1
+    name nerr string 0 0
+ecom: 
+call int 10 2
+  name nonexistent fn(e: string): int 11 1
+  seq no type 10 1
+    name nerr string 0 0
+ecom to: 
+name .t135 int 0 0
+generate desc for big
+ecom: 
+name nerr string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b137 big 0 0
+    const (64) int 6 0
+ecom: 
+= string 10 1
+  name err string 0 0
+  name nerr string 0 0
+ecom: 
+name nerr string 0 0
+ecom to: 
+name err string 0 0
+ecom: 
+= string 10 1
+  name nerr string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name nerr string 0 0
+ecom: 
+= string 10 2
+  name err string 0 0
+  call string 10 2
+    -> fn(s: string, *): string 12 1
+      name sys Sys 1 0
+      name sprint fn(s: string, *): string 11 1
+    seq no type 10 1
+      const %r string 1 0
+ecom: 
+call string 10 2
+  -> fn(s: string, *): string 12 1
+    name sys Sys 1 0
+    name sprint fn(s: string, *): string 11 1
+  seq no type 10 1
+    const %r string 1 0
+ecom to: 
+name err string 0 0
+generate desc for Sys->sprint
+descmap offset 0
+descmap s type string offset 64 (d->offset=64 start=0) returns 64
+generate desc for big
+ecom: 
+const %r string 1 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b137 big 0 0
+    const (64) int 6 0
+ecom: 
+call no type 10 2
+  name fail fn(ctxt: self ref Context, ename: string, err: string) 11 1
+  seq nothing 10 2
+    name ctxt ref Context 0 0
+    seq no type 10 2
+      const bad redir string 1 0
+      seq no type 10 2
+        call string 10 2
+          -> fn(s: string, nil: string, nil: string, *): string 12 1
+            name sys Sys 1 0
+            name sprint nothing 11 1
+          seq no type 10 1
+            const sh: cannot open %s: %s string 1 0
+            seq no type 10 1
+              name path string 0 0
+              seq no type 10 1
+                name err string 0 0
+generate desc for big
+ecom: 
+call string 10 2
+  -> fn(s: string, nil: string, nil: string, *): string 12 1
+    name sys Sys 1 0
+    name sprint nothing 11 1
+  seq no type 10 1
+    const sh: cannot open %s: %s string 1 0
+    seq no type 10 1
+      name path string 0 0
+      seq no type 10 1
+        name err string 0 0
+ecom to: 
+name .t136 string 0 0
+generate desc for Sys->sprint
+descmap offset 0
+descmap s type string offset 64 (d->offset=64 start=0) returns 64
+descmap type string offset 72 returns 72
+descmap type string offset 80 returns 80
+generate desc for big
+ecom: 
+const sh: cannot open %s: %s string 1 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b134 big 0 0
+    const (64) int 6 0
+ecom: 
+name path string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b134 big 0 0
+    const (72) int 6 0
+ecom: 
+name err string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b134 big 0 0
+    const (80) int 6 0
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b137 big 0 0
+    const (64) int 6 0
+ecom: 
+const bad redir string 1 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b137 big 0 0
+    const (72) int 6 0
+ecom: 
+name .t136 string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b137 big 0 0
+    const (80) int 6 0
+ecom: 
+= string 10 1
+  name .t136 string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name .t136 string 0 0
+ecom: 
+used big 10 2
+  call big 10 2
+    -> fn(fd: ref Sys->FD, off: big, start: int): big 12 1
+      name sys Sys 1 0
+      name seek nothing 11 1
+    seq no type 10 1
+      name rfd ref Sys->FD 0 0
+      seq no type 10 1
+        const .B.00000000.       0 (0) big 1 0
+        seq no type 10 1
+          const SEEKEND (2) int 6 0
+generate desc for big
+ecom: 
+call big 10 2
+  -> fn(fd: ref Sys->FD, off: big, start: int): big 12 1
+    name sys Sys 1 0
+    name seek nothing 11 1
+  seq no type 10 1
+    name rfd ref Sys->FD 0 0
+    seq no type 10 1
+      const .B.00000000.       0 (0) big 1 0
+      seq no type 10 1
+        const SEEKEND (2) int 6 0
+ecom to: 
+name .b137 big 0 0
+generate desc for big
+ecom: 
+name rfd ref Sys->FD 0 0
+ecom to: 
+* ref Sys->FD 8 0
+  + int 15 0
+    name .b134 big 0 0
+    const (64) int 6 0
+ecom: 
+const .B.00000000.       0 (0) big 1 0
+ecom to: 
+* big 8 0
+  + int 15 0
+    name .b134 big 0 0
+    const (72) int 6 0
+ecom: 
+const SEEKEND (2) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b134 big 0 0
+    const (80) int 6 0
+ecom: 
+= string 10 1
+  name err string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name err string 0 0
+ecom: 
+used int 10 2
+  call int 10 2
+    name dup fn(ctxt: ref Context, fd1: int, fd2: int): int 11 1
+    seq no type 10 1
+      name ctxt ref Context 0 0
+      seq no type 10 1
+        * int 8 0
+          name rfd ref Sys->FD 0 0
+        seq no type 10 1
+          name fd1 int 0 0
+ecom: 
+call int 10 2
+  name dup fn(ctxt: ref Context, fd1: int, fd2: int): int 11 1
+  seq no type 10 1
+    name ctxt ref Context 0 0
+    seq no type 10 1
+      * int 8 0
+        name rfd ref Sys->FD 0 0
+      seq no type 10 1
+        name fd1 int 0 0
+ecom to: 
+name .t135 int 0 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b137 big 0 0
+    const (64) int 6 0
+ecom: 
+* int 8 0
+  name rfd ref Sys->FD 0 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b137 big 0 0
+    const (72) int 6 0
+ecom: 
+name fd1 int 0 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b137 big 0 0
+    const (76) int 6 0
+ecom: 
+= list of int 10 1
+  name keepfds list of int 0 0
+  :: list of int 10 1
+    name fd1 int 0 0
+    name keepfds list of int 0 0
+ecom: 
+:: list of int 10 1
+  name fd1 int 0 0
+  name keepfds list of int 0 0
+ecom to: 
+name keepfds list of int 0 0
+ecom: 
+= ref Sys->FD 10 1
+  * ref Sys->FD 0 0
+    adr int 13 1
+      name rfd Redirword 0 0
+  name nil ref Sys->FD 1 0
+ecom: 
+name nil ref Sys->FD 1 0
+ecom to: 
+* ref Sys->FD 0 0
+  adr int 13 1
+    name rfd Redirword 0 0
+ecom: 
+= string 10 1
+  * string 0 0
+    + int 13 1
+      adr int 13 1
+        name rfd Redirword 0 0
+      const w (8) int 6 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+* string 0 0
+  + int 13 1
+    adr int 13 1
+      name rfd Redirword 0 0
+    const w (8) int 6 0
+ecom: 
+= string 10 1
+  name path string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name path string 0 0
+ecom: 
+= list of Redirword 10 1
+  name rl list of Redirword 0 0
+  tl list of Redirword 10 1
+    name rl list of Redirword 0 0
+ecom: 
+tl list of Redirword 10 1
+  name rl list of Redirword 0 0
+ecom to: 
+name rl list of Redirword 0 0
+ecom: 
+= list of int 10 1
+  * list of int 8 0
+    + int 15 1
+      name ctxt ref Context 0 0
+      const keepfds (24) int 6 0
+  name keepfds list of int 0 0
+ecom: 
+name keepfds list of int 0 0
+ecom to: 
+* list of int 8 0
+  + int 15 1
+    name ctxt ref Context 0 0
+    const keepfds (24) int 6 0
+ecom: 
+:: list of int 10 1
+  * int 10 1
+    * ref Sys->FD 8 0
+      + int 15 1
+        name ctxt ref Context 0 0
+        const waitfd (8) int 6 0
+  name keepfds list of int 0 0
+ecom to: 
+* list of int 8 0
+  name .ret int 0 0
+eacom: 
+* int 10 1
+  * ref Sys->FD 8 0
+    + int 15 1
+      name ctxt ref Context 0 0
+      const waitfd (8) int 6 0
+ecom: 
+* ref Sys->FD 8 0
+  + int 15 1
+    name ctxt ref Context 0 0
+    const waitfd (8) int 6 0
+ecom to: 
+name .t136 ref Sys->FD 0 0
+ecom: 
+name keepfds list of int 0 0
+ecom to: 
+name .t138 list of int 0 0
+ecom: 
+= ref Sys->FD 10 1
+  name .t136 ref Sys->FD 0 0
+  name nil ref Sys->FD 1 0
+ecom: 
+name nil ref Sys->FD 1 0
+ecom to: 
+name .t136 ref Sys->FD 0 0
+ecom: 
+= list of int 10 1
+  name .t138 list of int 0 0
+  name nil list of int 1 0
+ecom: 
+name nil list of int 1 0
+ecom to: 
+name .t138 list of int 0 0
+fn: doredirs
+64: argument ctxt ref Context ref 8
+72: argument redirs ref Redirlist ref 3
+80: local append int ref 2
+84: local omode int ref 6
+88: local .t135 int ref 1
+96: local .b137 big ref 15
+104: local rfd ref Sys->FD ref 13
+112: local path string ref 8
+120: local mode int ref 5
+124: local fd1 int ref 9
+128: local fd2 int ref 3
+136: local err string ref 10
+144: local keepfds list of int ref 7
+152: local .b134 big ref 5
+160: local rl list of Redirword ref 5
+168: local nerr string ref 3
+176: local .t136 string ref 1
+184: local .t138 list of int ref 1
+generate desc for doredirs
+descmap offset 0
+descmap ctxt type ref Context offset 64 (d->offset=64 start=0) returns 64
+descmap redirs type ref Redirlist offset 72 (d->offset=72 start=0) returns 72
+descmap append type int offset 80 (d->offset=80 start=0) returns -1
+descmap omode type int offset 84 (d->offset=84 start=0) returns -1
+descmap .t135 type int offset 88 (d->offset=88 start=0) returns -1
+descmap .b137 type big offset 96 (d->offset=96 start=0) returns -1
+descmap rfd type ref Sys->FD offset 104 (d->offset=104 start=0) returns 104
+descmap path type string offset 112 (d->offset=112 start=0) returns 112
+descmap mode type int offset 120 (d->offset=120 start=0) returns -1
+descmap fd1 type int offset 124 (d->offset=124 start=0) returns -1
+descmap fd2 type int offset 128 (d->offset=128 start=0) returns -1
+descmap err type string offset 136 (d->offset=136 start=0) returns 136
+descmap keepfds type list of int offset 144 (d->offset=144 start=0) returns 144
+descmap .b134 type big offset 152 (d->offset=152 start=0) returns -1
+descmap rl type list of Redirword offset 160 (d->offset=160 start=0) returns 160
+descmap nerr type string offset 168 (d->offset=168 start=0) returns 168
+descmap .t136 type string offset 176 (d->offset=176 start=0) returns 176
+descmap .t138 type list of int offset 184 (d->offset=184 start=0) returns 184
+fncom: waitfd 5 419468
+ecom: 
+= string 10 2
+  name wf string 0 0
+  + string 10 2
+    cast string 10 2
+      call int 10 2
+        -> fn(flags: int, movefd: list of int): int 12 1
+          name sys Sys 1 0
+          name pctl nothing 11 1
+        seq no type 10 1
+          const (0) int 6 0
+          seq no type 10 1
+            name nil list of int 1 0
+    const /wait string 1 0
+ecom: 
++ string 10 2
+  cast string 10 2
+    call int 10 2
+      -> fn(flags: int, movefd: list of int): int 12 1
+        name sys Sys 1 0
+        name pctl nothing 11 1
+      seq no type 10 1
+        const (0) int 6 0
+        seq no type 10 1
+          name nil list of int 1 0
+  const /wait string 1 0
+ecom to: 
+name wf string 0 0
+ecom: 
+cast string 10 2
+  call int 10 2
+    -> fn(flags: int, movefd: list of int): int 12 1
+      name sys Sys 1 0
+      name pctl nothing 11 1
+    seq no type 10 1
+      const (0) int 6 0
+      seq no type 10 1
+        name nil list of int 1 0
+ecom to: 
+name .t139 string 0 0
+eacom: 
+call int 10 2
+  -> fn(flags: int, movefd: list of int): int 12 1
+    name sys Sys 1 0
+    name pctl nothing 11 1
+  seq no type 10 1
+    const (0) int 6 0
+    seq no type 10 1
+      name nil list of int 1 0
+ecom: 
+call int 10 2
+  -> fn(flags: int, movefd: list of int): int 12 1
+    name sys Sys 1 0
+    name pctl nothing 11 1
+  seq no type 10 1
+    const (0) int 6 0
+    seq no type 10 1
+      name nil list of int 1 0
+ecom to: 
+name .t140 int 0 0
+generate desc for big
+ecom: 
+const (0) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b141 big 0 0
+    const (64) int 6 0
+ecom: 
+name nil list of int 1 0
+ecom to: 
+* list of int 8 0
+  + int 15 0
+    name .b141 big 0 0
+    const (72) int 6 0
+ecom: 
+= string 10 1
+  name .t139 string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name .t139 string 0 0
+ecom: 
+= ref Sys->FD 10 2
+  name waitfd ref Sys->FD 0 0
+  call ref Sys->FD 10 2
+    -> fn(s: string, mode: int): ref Sys->FD 12 1
+      name sys Sys 1 0
+      name open nothing 11 1
+    seq no type 10 2
+      + string 10 1
+        const #p/ string 1 0
+        name wf string 0 0
+      seq no type 10 1
+        const OREAD (0) int 6 0
+ecom: 
+call ref Sys->FD 10 2
+  -> fn(s: string, mode: int): ref Sys->FD 12 1
+    name sys Sys 1 0
+    name open nothing 11 1
+  seq no type 10 2
+    + string 10 1
+      const #p/ string 1 0
+      name wf string 0 0
+    seq no type 10 1
+      const OREAD (0) int 6 0
+ecom to: 
+name waitfd ref Sys->FD 0 0
+generate desc for big
+ecom: 
++ string 10 1
+  const #p/ string 1 0
+  name wf string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b141 big 0 0
+    const (64) int 6 0
+ecom: 
+const OREAD (0) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b141 big 0 0
+    const (72) int 6 0
+ecom: 
+= ref Sys->FD 10 2
+  name waitfd ref Sys->FD 0 0
+  call ref Sys->FD 10 2
+    -> fn(s: string, mode: int): ref Sys->FD 12 1
+      name sys Sys 1 0
+      name open nothing 11 1
+    seq no type 10 2
+      + string 10 1
+        const /prog/ string 1 0
+        name wf string 0 0
+      seq no type 10 1
+        const OREAD (0) int 6 0
+ecom: 
+call ref Sys->FD 10 2
+  -> fn(s: string, mode: int): ref Sys->FD 12 1
+    name sys Sys 1 0
+    name open nothing 11 1
+  seq no type 10 2
+    + string 10 1
+      const /prog/ string 1 0
+      name wf string 0 0
+    seq no type 10 1
+      const OREAD (0) int 6 0
+ecom to: 
+name waitfd ref Sys->FD 0 0
+generate desc for big
+ecom: 
++ string 10 1
+  const /prog/ string 1 0
+  name wf string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b141 big 0 0
+    const (64) int 6 0
+ecom: 
+const OREAD (0) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b141 big 0 0
+    const (72) int 6 0
+ecom: 
+call no type 10 2
+  name panic fn(s: string) 11 1
+  seq no type 10 2
+    call string 10 2
+      -> fn(s: string, *): string 12 1
+        name sys Sys 1 0
+        name sprint nothing 11 1
+      seq no type 10 1
+        const cannot open wait file: %r string 1 0
+generate desc for big
+ecom: 
+call string 10 2
+  -> fn(s: string, *): string 12 1
+    name sys Sys 1 0
+    name sprint nothing 11 1
+  seq no type 10 1
+    const cannot open wait file: %r string 1 0
+ecom to: 
+name .t139 string 0 0
+generate desc for Sys->sprint
+descmap offset 0
+descmap s type string offset 64 (d->offset=64 start=0) returns 64
+generate desc for big
+ecom: 
+const cannot open wait file: %r string 1 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b142 big 0 0
+    const (64) int 6 0
+ecom: 
+name .t139 string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b141 big 0 0
+    const (64) int 6 0
+ecom: 
+= string 10 1
+  name .t139 string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name .t139 string 0 0
+ecom: 
+name waitfd ref Sys->FD 0 0
+ecom to: 
+* ref Sys->FD 8 0
+  name .ret int 0 0
+fn: waitfd
+64: local .t140 int ref 1
+72: local waitfd ref Sys->FD ref 5
+80: local .b141 big ref 4
+88: local wf string ref 3
+96: local .b142 big ref 1
+104: local .t139 string ref 1
+generate desc for waitfd
+descmap offset 0
+descmap .t140 type int offset 64 (d->offset=64 start=0) returns -1
+descmap waitfd type ref Sys->FD offset 72 (d->offset=72 start=0) returns 72
+descmap .b141 type big offset 80 (d->offset=80 start=0) returns -1
+descmap wf type string offset 88 (d->offset=88 start=0) returns 88
+descmap .b142 type big offset 96 (d->offset=96 start=0) returns -1
+descmap .t139 type string offset 104 (d->offset=104 start=0) returns 104
+fncom: waitfor 6 419528
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* polymorphic type 8 0
+  name .ret int 0 0
+ecom: 
+= array of string 10 1
+  name status array of string 0 0
+  array array of string 10 1
+    len int 10 1
+      name pids list of int 0 0
+ecom: 
+array array of string 10 1
+  len int 10 1
+    name pids list of int 0 0
+ecom to: 
+name status array of string 0 0
+eacom: 
+len int 10 1
+  name pids list of int 0 0
+ecom: 
+len int 10 1
+  name pids list of int 0 0
+ecom to: 
+name .t143 int 0 0
+generate desc for string
+ecom: 
+= int 10 1
+  name wcount int 0 0
+  len int 10 1
+    name status array of string 0 0
+ecom: 
+len int 10 1
+  name status array of string 0 0
+ecom to: 
+name wcount int 0 0
+ecom: 
+= array of byte 10 1
+  name buf array of byte 0 0
+  array array of byte 10 1
+    const WAITLEN (192) int 6 0
+ecom: 
+array array of byte 10 1
+  const WAITLEN (192) int 6 0
+ecom to: 
+name buf array of byte 0 0
+generate desc for byte
+ecom: 
+= int 10 1
+  name onebad int 0 0
+  const (0) int 6 0
+ecom: 
+const (0) int 6 0
+ecom to: 
+name onebad int 0 0
+ecom: 
+= int 10 2
+  name n int 0 0
+  call int 10 2
+    -> fn(fd: ref Sys->FD, buf: array of byte, n: int): int 12 1
+      name sys Sys 1 0
+      name read nothing 11 1
+    seq no type 10 1
+      * ref Sys->FD 8 0
+        + int 15 1
+          name ctxt ref Context 0 0
+          const waitfd (8) int 6 0
+      seq no type 10 1
+        name buf array of byte 0 0
+        seq no type 10 1
+          len int 10 1
+            name buf array of byte 0 0
+ecom: 
+call int 10 2
+  -> fn(fd: ref Sys->FD, buf: array of byte, n: int): int 12 1
+    name sys Sys 1 0
+    name read nothing 11 1
+  seq no type 10 1
+    * ref Sys->FD 8 0
+      + int 15 1
+        name ctxt ref Context 0 0
+        const waitfd (8) int 6 0
+    seq no type 10 1
+      name buf array of byte 0 0
+      seq no type 10 1
+        len int 10 1
+          name buf array of byte 0 0
+ecom to: 
+name n int 0 0
+generate desc for big
+ecom: 
+* ref Sys->FD 8 0
+  + int 15 1
+    name ctxt ref Context 0 0
+    const waitfd (8) int 6 0
+ecom to: 
+* ref Sys->FD 8 0
+  + int 15 0
+    name .b144 big 0 0
+    const (64) int 6 0
+ecom: 
+name buf array of byte 0 0
+ecom to: 
+* array of byte 8 0
+  + int 15 0
+    name .b144 big 0 0
+    const (72) int 6 0
+ecom: 
+len int 10 1
+  name buf array of byte 0 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b144 big 0 0
+    const (80) int 6 0
+ecom: 
+call no type 10 2
+  name panic fn(s: string) 11 1
+  seq no type 10 2
+    call string 10 2
+      -> fn(s: string, *): string 12 1
+        name sys Sys 1 0
+        name sprint nothing 11 1
+      seq no type 10 1
+        const error on wait read: %r string 1 0
+generate desc for big
+ecom: 
+call string 10 2
+  -> fn(s: string, *): string 12 1
+    name sys Sys 1 0
+    name sprint nothing 11 1
+  seq no type 10 1
+    const error on wait read: %r string 1 0
+ecom to: 
+name .t145 string 0 0
+generate desc for Sys->sprint
+descmap offset 0
+descmap s type string offset 64 (d->offset=64 start=0) returns 64
+generate desc for big
+ecom: 
+const error on wait read: %r string 1 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b146 big 0 0
+    const (64) int 6 0
+ecom: 
+name .t145 string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b144 big 0 0
+    const (64) int 6 0
+ecom: 
+= string 10 1
+  name .t145 string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name .t145 string 0 0
+ecom: 
+= (int, string, string) 10 2
+  tuple (int, string, string) 10 1
+    seq nothing 10 1
+      name who int 0 0
+      seq nothing 10 1
+        name line string 0 0
+        seq nothing 10 1
+          name s string 0 0
+  call (int, string, string) 10 2
+    name parsewaitstatus fn(ctxt: ref Context, status: string): (int, string, string) 11 1
+    seq no type 10 1
+      name ctxt ref Context 0 0
+      seq no type 10 1
+        cast string 10 1
+          slice array of byte 10 1
+            name buf array of byte 0 0
+            seq no type 10 1
+              const (0) int 6 0
+              name n int 0 0
+ecom: 
+call (int, string, string) 10 2
+  name parsewaitstatus fn(ctxt: ref Context, status: string): (int, string, string) 11 1
+  seq no type 10 1
+    name ctxt ref Context 0 0
+    seq no type 10 1
+      cast string 10 1
+        slice array of byte 10 1
+          name buf array of byte 0 0
+          seq no type 10 1
+            const (0) int 6 0
+            name n int 0 0
+ecom to: 
+name who (int, string, string) 0 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b146 big 0 0
+    const (64) int 6 0
+ecom: 
+cast string 10 1
+  slice array of byte 10 1
+    name buf array of byte 0 0
+    seq no type 10 1
+      const (0) int 6 0
+      name n int 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b146 big 0 0
+    const (72) int 6 0
+eacom: 
+slice array of byte 10 1
+  name buf array of byte 0 0
+  seq no type 10 1
+    const (0) int 6 0
+    name n int 0 0
+ecom: 
+slice array of byte 10 1
+  name buf array of byte 0 0
+  seq no type 10 1
+    const (0) int 6 0
+    name n int 0 0
+ecom to: 
+name .t145 array of byte 0 0
+ecom: 
+name buf array of byte 0 0
+ecom to: 
+name .t145 array of byte 0 0
+ecom: 
+= array of byte 10 1
+  name .t145 array of byte 0 0
+  name nil array of byte 1 0
+ecom: 
+name nil array of byte 1 0
+ecom to: 
+name .t145 array of byte 0 0
+eacom: 
+len int 10 1
+  name s string 0 0
+ecom: 
+len int 10 1
+  name s string 0 0
+ecom to: 
+name .t143 int 0 0
+eacom: 
+slice string 10 1
+  name s string 0 0
+  seq no type 10 1
+    const (0) int 6 0
+    const (5) int 6 0
+ecom: 
+slice string 10 1
+  name s string 0 0
+  seq no type 10 1
+    const (0) int 6 0
+    const (5) int 6 0
+ecom to: 
+name .t145 string 0 0
+ecom: 
+name s string 0 0
+ecom to: 
+name .t145 string 0 0
+ecom: 
+= string 10 1
+  name .t145 string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name .t145 string 0 0
+ecom: 
+= string 10 2
+  name s string 0 0
+  call string 10 2
+    name failurestatus fn(e: string): string 11 1
+    seq no type 10 1
+      name s string 0 0
+ecom: 
+call string 10 2
+  name failurestatus fn(e: string): string 11 1
+  seq no type 10 1
+    name s string 0 0
+ecom to: 
+name s string 0 0
+generate desc for big
+ecom: 
+name s string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b146 big 0 0
+    const (64) int 6 0
+ecom: 
+call no type 10 2
+  name diagnostic fn(ctxt: ref Context, s: string) 11 1
+  seq no type 10 1
+    name ctxt ref Context 0 0
+    seq no type 10 1
+      name line string 0 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b146 big 0 0
+    const (64) int 6 0
+ecom: 
+name line string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b146 big 0 0
+    const (72) int 6 0
+ecom: 
+= (int, list of int) 10 2
+  tuple (int, list of int) 10 2
+    seq nothing 10 1
+      name i int 0 0
+      seq nothing 10 1
+        name pl list of int 0 0
+    tuple (int, string, string) 10 1
+      seq nothing 10 1
+        name who (int, string, string) 0 0
+        seq nothing 10 1
+          name line string 0 0
+          seq nothing 10 1
+            name s string 0 0
+  tuple (int, list of int) 10 1
+    seq no type 10 1
+      const (0) int 6 0
+      seq no type 10 1
+        name pids list of int 0 0
+ecom: 
+tuple (int, list of int) 10 1
+  seq no type 10 1
+    const (0) int 6 0
+    seq no type 10 1
+      name pids list of int 0 0
+ecom to: 
+name i (int, list of int) 0 0
+ecom: 
+const (0) int 6 0
+ecom to: 
+* int 0 0
+  + int 13 1
+    adr int 13 1
+      name i (int, list of int) 0 0
+    const (0) int 6 0
+ecom: 
+name pids list of int 0 0
+ecom to: 
+* list of int 0 0
+  + int 13 1
+    adr int 13 1
+      name i (int, list of int) 0 0
+    const (8) int 6 0
+eacom: 
+hd int 10 1
+  name pl list of int 0 0
+ecom: 
+hd int 10 1
+  name pl list of int 0 0
+ecom to: 
+name .t143 int 0 0
+ecom: 
+= (int, list of int) 10 2
+  tuple (int, list of int) 10 1
+    seq no type 10 1
+      name i int 0 0
+      seq no type 10 1
+        name pl list of int 0 0
+  tuple (int, list of int) 10 2
+    seq no type 10 2
+      + int 15 1
+        name i int 0 0
+        const (1) int 6 0
+      seq no type 10 1
+        tl list of int 10 1
+          name pl list of int 0 0
+generate desc for (int, list of int)
+descmap adt offset 0
+descmap offset 0
+descmap t0 type int offset 0 (d->offset=0 start=0) returns -1
+descmap t1 type list of int offset 8 (d->offset=8 start=0) returns 8
+generate desc for (int, list of int)
+	desc	$-1,16,"40"
+ecom: 
+tuple (int, list of int) 10 2
+  seq no type 10 2
+    + int 15 1
+      name i int 0 0
+      const (1) int 6 0
+    seq no type 10 1
+      tl list of int 10 1
+        name pl list of int 0 0
+ecom to: 
+name .b147 (int, list of int) 0 0
+ecom: 
++ int 15 1
+  name i int 0 0
+  const (1) int 6 0
+ecom to: 
+* int 0 0
+  + int 13 1
+    adr int 13 1
+      name .b147 (int, list of int) 0 0
+    const (0) int 6 0
+ecom: 
+tl list of int 10 1
+  name pl list of int 0 0
+ecom to: 
+* list of int 0 0
+  + int 13 1
+    adr int 13 1
+      name .b147 (int, list of int) 0 0
+    const (8) int 6 0
+ecom: 
+= list of int 10 1
+  * list of int 0 0
+    + int 13 1
+      adr int 13 1
+        name .b147 (int, list of int) 0 0
+      const t1 (8) int 6 0
+  name nil list of int 1 0
+ecom: 
+name nil list of int 1 0
+ecom to: 
+* list of int 0 0
+  + int 13 1
+    adr int 13 1
+      name .b147 (int, list of int) 0 0
+    const t1 (8) int 6 0
+eacom: 
+len int 10 1
+  name status array of string 0 0
+ecom: 
+len int 10 1
+  name status array of string 0 0
+ecom to: 
+name .t143 int 0 0
+eacom: 
+* string 10 1
+  indx big 10 1
+    name status array of string 0 0
+    name i int 0 0
+generate desc for big
+ecom: 
+indx big 10 1
+  name status array of string 0 0
+  name i int 0 0
+ecom to: 
+name .b146 big 0 0
+ecom: 
++= int 10 1
+  name onebad int 0 0
+  != int 10 1
+    name s string 0 0
+    name nil string 1 0
+eacom: 
+!= int 10 1
+  name s string 0 0
+  name nil string 1 0
+ecom: 
+!= int 10 1
+  name s string 0 0
+  name nil string 1 0
+ecom to: 
+name .t143 int 0 0
+ecom: 
+= string 10 1
+  * string 10 1
+    indx big 10 1
+      name status array of string 0 0
+      name i int 0 0
+  name s string 0 0
+eacom: 
+* string 10 1
+  indx big 10 1
+    name status array of string 0 0
+    name i int 0 0
+generate desc for big
+ecom: 
+indx big 10 1
+  name status array of string 0 0
+  name i int 0 0
+ecom to: 
+name .b146 big 0 0
+ecom: 
+name s string 0 0
+ecom to: 
+* string 8 1
+  name .b146 big 0 0
+eacom: 
+-- int 10 1
+  name wcount int 0 0
+  const (1) int 6 0
+ecom: 
+-- int 10 1
+  name wcount int 0 0
+  const (1) int 6 0
+ecom to: 
+name .t143 int 0 0
+ecom: 
+= list of int 10 1
+  * list of int 0 0
+    + int 13 1
+      adr int 13 1
+        name i (int, list of int) 0 0
+      const t1 (8) int 6 0
+  name nil list of int 1 0
+ecom: 
+name nil list of int 1 0
+ecom to: 
+* list of int 0 0
+  + int 13 1
+    adr int 13 1
+      name i (int, list of int) 0 0
+    const t1 (8) int 6 0
+ecom: 
+= list of int 10 1
+  name pl list of int 0 0
+  name nil list of int 1 0
+ecom: 
+name nil list of int 1 0
+ecom to: 
+name pl list of int 0 0
+ecom: 
+= string 10 1
+  * string 0 0
+    + int 13 1
+      adr int 13 1
+        name who (int, string, string) 0 0
+      const t1 (8) int 6 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+* string 0 0
+  + int 13 1
+    adr int 13 1
+      name who (int, string, string) 0 0
+    const t1 (8) int 6 0
+ecom: 
+= string 10 1
+  * string 0 0
+    + int 13 1
+      adr int 13 1
+        name who (int, string, string) 0 0
+      const t2 (16) int 6 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+* string 0 0
+  + int 13 1
+    adr int 13 1
+      name who (int, string, string) 0 0
+    const t2 (16) int 6 0
+ecom: 
+= string 10 1
+  name line string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name line string 0 0
+ecom: 
+= string 10 1
+  name s string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name s string 0 0
+ecom: 
+= list of int 10 1
+  * list of int 0 0
+    + int 13 1
+      adr int 13 1
+        name i (int, list of int) 0 0
+      const t1 (8) int 6 0
+  name nil list of int 1 0
+ecom: 
+name nil list of int 1 0
+ecom to: 
+* list of int 0 0
+  + int 13 1
+    adr int 13 1
+      name i (int, list of int) 0 0
+    const t1 (8) int 6 0
+ecom: 
+= list of int 10 1
+  name pl list of int 0 0
+  name nil list of int 1 0
+ecom: 
+name nil list of int 1 0
+ecom to: 
+name pl list of int 0 0
+ecom: 
+= string 10 1
+  * string 0 0
+    + int 13 1
+      adr int 13 1
+        name who (int, string, string) 0 0
+      const t1 (8) int 6 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+* string 0 0
+  + int 13 1
+    adr int 13 1
+      name who (int, string, string) 0 0
+    const t1 (8) int 6 0
+ecom: 
+= string 10 1
+  * string 0 0
+    + int 13 1
+      adr int 13 1
+        name who (int, string, string) 0 0
+      const t2 (16) int 6 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+* string 0 0
+  + int 13 1
+    adr int 13 1
+      name who (int, string, string) 0 0
+    const t2 (16) int 6 0
+ecom: 
+= string 10 1
+  name line string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name line string 0 0
+ecom: 
+= string 10 1
+  name s string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name s string 0 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* polymorphic type 8 0
+  name .ret int 0 0
+ecom: 
+= string 10 1
+  name r string 0 0
+  * string 10 1
+    indx big 10 1
+      name status array of string 0 0
+      - int 10 1
+        len int 10 1
+          name status array of string 0 0
+        const (1) int 6 0
+ecom: 
+* string 10 1
+  indx big 10 1
+    name status array of string 0 0
+    - int 10 1
+      len int 10 1
+        name status array of string 0 0
+      const (1) int 6 0
+ecom to: 
+name r string 0 0
+eacom: 
+* string 10 1
+  indx big 10 1
+    name status array of string 0 0
+    - int 10 1
+      len int 10 1
+        name status array of string 0 0
+      const (1) int 6 0
+generate desc for big
+ecom: 
+indx big 10 1
+  name status array of string 0 0
+  - int 10 1
+    len int 10 1
+      name status array of string 0 0
+    const (1) int 6 0
+ecom to: 
+name .b146 big 0 0
+eacom: 
+- int 10 1
+  len int 10 1
+    name status array of string 0 0
+  const (1) int 6 0
+ecom: 
+- int 10 1
+  len int 10 1
+    name status array of string 0 0
+  const (1) int 6 0
+ecom to: 
+name .t143 int 0 0
+ecom: 
+len int 10 1
+  name status array of string 0 0
+ecom to: 
+name .t143 int 0 0
+ecom: 
+= int 10 1
+  name i int 0 0
+  - int 10 1
+    len int 10 1
+      name status array of string 0 0
+    const (2) int 6 0
+ecom: 
+- int 10 1
+  len int 10 1
+    name status array of string 0 0
+  const (2) int 6 0
+ecom to: 
+name i int 0 0
+ecom: 
+len int 10 1
+  name status array of string 0 0
+ecom to: 
+name .t143 int 0 0
+ecom: 
++= string 10 1
+  name r string 0 0
+  + string 10 1
+    const | string 1 0
+    * string 10 1
+      indx big 10 1
+        name status array of string 0 0
+        name i int 0 0
+eacom: 
++ string 10 1
+  const | string 1 0
+  * string 10 1
+    indx big 10 1
+      name status array of string 0 0
+      name i int 0 0
+ecom: 
++ string 10 1
+  const | string 1 0
+  * string 10 1
+    indx big 10 1
+      name status array of string 0 0
+      name i int 0 0
+ecom to: 
+name .t145 string 0 0
+eacom: 
+* string 10 1
+  indx big 10 1
+    name status array of string 0 0
+    name i int 0 0
+generate desc for big
+ecom: 
+indx big 10 1
+  name status array of string 0 0
+  name i int 0 0
+ecom to: 
+name .b146 big 0 0
+ecom: 
+= string 10 1
+  name .t145 string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name .t145 string 0 0
+ecom: 
+-- int 10 1
+  name i int 0 0
+  const (1) int 6 0
+ecom: 
+name r string 0 0
+ecom to: 
+* string 8 0
+  name .ret int 0 0
+fn: waitfor
+64: argument ctxt ref Context ref 3
+72: argument pids list of int ref 3
+80: local i int ref 6
+88: local pl list of int ref 5
+96: local n int ref 3
+100: local onebad int ref 3
+104: local wcount int ref 2
+112: local who int ref 2
+120: local line string ref 2
+128: local s string ref 9
+136: local .t143 int ref 1
+144: local status array of string ref 9
+152: local .b146 big ref 8
+160: local buf array of byte ref 4
+168: local r string ref 3
+176: local .b144 big ref 2
+184: local .t145 string ref 1
+192: local .b147 (int, list of int) ref 1
+96: local i int ref 4
+generate desc for waitfor
+descmap offset 0
+descmap ctxt type ref Context offset 64 (d->offset=64 start=0) returns 64
+descmap pids type list of int offset 72 (d->offset=72 start=0) returns 72
+descmap i type int offset 80 (d->offset=80 start=0) returns -1
+descmap pl type list of int offset 88 (d->offset=88 start=0) returns 88
+descmap n type int offset 96 (d->offset=96 start=0) returns -1
+descmap onebad type int offset 100 (d->offset=100 start=0) returns -1
+descmap wcount type int offset 104 (d->offset=104 start=0) returns -1
+descmap who type int offset 112 (d->offset=112 start=0) returns -1
+descmap line type string offset 120 (d->offset=120 start=0) returns 120
+descmap s type string offset 128 (d->offset=128 start=0) returns 128
+descmap .t143 type int offset 136 (d->offset=136 start=0) returns -1
+descmap status type array of string offset 144 (d->offset=144 start=0) returns 144
+descmap .b146 type big offset 152 (d->offset=152 start=0) returns -1
+descmap buf type array of byte offset 160 (d->offset=160 start=0) returns 160
+descmap r type string offset 168 (d->offset=168 start=0) returns 168
+descmap .b144 type big offset 176 (d->offset=176 start=0) returns -1
+descmap .t145 type string offset 184 (d->offset=184 start=0) returns 184
+descmap adt offset 192
+descmap offset 192
+descmap t0 type int offset 192 (d->offset=0 start=192) returns -1
+descmap t1 type list of int offset 200 (d->offset=8 start=192) returns 200
+descmap .b147 type (int, list of int) offset 192 (d->offset=192 start=0) returns 200
+fncom: parsewaitstatus 2 4195e8
+ecom: 
+= int 10 1
+  name i int 0 0
+  const (0) int 6 0
+ecom: 
+const (0) int 6 0
+ecom to: 
+name i int 0 0
+eacom: 
+len int 10 1
+  name status string 0 0
+ecom: 
+len int 10 1
+  name status string 0 0
+ecom to: 
+name .t148 int 0 0
+eacom: 
+inds int 10 1
+  name status string 0 0
+  name i int 0 0
+ecom: 
+inds int 10 1
+  name status string 0 0
+  name i int 0 0
+ecom to: 
+name .t148 int 0 0
+ecom: 
+++ int 10 1
+  name i int 0 0
+  const (1) int 6 0
+eacom: 
+- int 10 1
+  len int 10 1
+    name status string 0 0
+  const (1) int 6 0
+ecom: 
+- int 10 1
+  len int 10 1
+    name status string 0 0
+  const (1) int 6 0
+ecom to: 
+name .t148 int 0 0
+ecom: 
+len int 10 1
+  name status string 0 0
+ecom to: 
+name .t148 int 0 0
+eacom: 
+inds int 10 1
+  name status string 0 0
+  + int 15 1
+    name i int 0 0
+    const (1) int 6 0
+ecom: 
+inds int 10 1
+  name status string 0 0
+  + int 15 1
+    name i int 0 0
+    const (1) int 6 0
+ecom to: 
+name .t148 int 0 0
+ecom: 
++ int 15 1
+  name i int 0 0
+  const (1) int 6 0
+ecom to: 
+name .t149 int 0 0
+ecom: 
+call no type 10 2
+  name fail fn(ctxt: self ref Context, ename: string, err: string) 11 1
+  seq nothing 10 2
+    name ctxt ref Context 0 0
+    seq no type 10 2
+      const bad wait read string 1 0
+      seq no type 10 2
+        call string 10 2
+          -> fn(s: string, nil: string, *): string 12 1
+            name sys Sys 1 0
+            name sprint nothing 11 1
+          seq no type 10 1
+            const sh: bad exit status '%s' string 1 0
+            seq no type 10 1
+              name status string 0 0
+generate desc for big
+ecom: 
+call string 10 2
+  -> fn(s: string, nil: string, *): string 12 1
+    name sys Sys 1 0
+    name sprint nothing 11 1
+  seq no type 10 1
+    const sh: bad exit status '%s' string 1 0
+    seq no type 10 1
+      name status string 0 0
+ecom to: 
+name .t151 string 0 0
+generate desc for Sys->sprint
+descmap offset 0
+descmap s type string offset 64 (d->offset=64 start=0) returns 64
+descmap type string offset 72 returns 72
+generate desc for big
+ecom: 
+const sh: bad exit status '%s' string 1 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b152 big 0 0
+    const (64) int 6 0
+ecom: 
+name status string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b152 big 0 0
+    const (72) int 6 0
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b150 big 0 0
+    const (64) int 6 0
+ecom: 
+const bad wait read string 1 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b150 big 0 0
+    const (72) int 6 0
+ecom: 
+name .t151 string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b150 big 0 0
+    const (80) int 6 0
+ecom: 
+= string 10 1
+  name .t151 string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name .t151 string 0 0
+ecom: 
++= int 10 1
+  name i int 0 0
+  const (2) int 6 0
+eacom: 
+len int 10 1
+  name status string 0 0
+ecom: 
+len int 10 1
+  name status string 0 0
+ecom to: 
+name .t149 int 0 0
+eacom: 
+inds int 10 1
+  name status string 0 0
+  name i int 0 0
+ecom: 
+inds int 10 1
+  name status string 0 0
+  name i int 0 0
+ecom to: 
+name .t149 int 0 0
+ecom: 
+++ int 10 1
+  name i int 0 0
+  const (1) int 6 0
+eacom: 
+- int 10 1
+  len int 10 1
+    name status string 0 0
+  const (2) int 6 0
+ecom: 
+- int 10 1
+  len int 10 1
+    name status string 0 0
+  const (2) int 6 0
+ecom to: 
+name .t149 int 0 0
+ecom: 
+len int 10 1
+  name status string 0 0
+ecom to: 
+name .t149 int 0 0
+eacom: 
+inds int 10 1
+  name status string 0 0
+  + int 15 1
+    name i int 0 0
+    const (1) int 6 0
+ecom: 
+inds int 10 1
+  name status string 0 0
+  + int 15 1
+    name i int 0 0
+    const (1) int 6 0
+ecom to: 
+name .t149 int 0 0
+ecom: 
++ int 15 1
+  name i int 0 0
+  const (1) int 6 0
+ecom to: 
+name .t148 int 0 0
+ecom: 
+call no type 10 2
+  name fail fn(ctxt: self ref Context, ename: string, err: string) 11 1
+  seq nothing 10 2
+    name ctxt ref Context 0 0
+    seq no type 10 2
+      const bad wait read string 1 0
+      seq no type 10 2
+        call string 10 2
+          -> fn(s: string, nil: string, *): string 12 1
+            name sys Sys 1 0
+            name sprint nothing 11 1
+          seq no type 10 1
+            const sh: bad exit status '%s' string 1 0
+            seq no type 10 1
+              name status string 0 0
+generate desc for big
+ecom: 
+call string 10 2
+  -> fn(s: string, nil: string, *): string 12 1
+    name sys Sys 1 0
+    name sprint nothing 11 1
+  seq no type 10 1
+    const sh: bad exit status '%s' string 1 0
+    seq no type 10 1
+      name status string 0 0
+ecom to: 
+name .t151 string 0 0
+generate desc for Sys->sprint
+descmap offset 0
+descmap s type string offset 64 (d->offset=64 start=0) returns 64
+descmap type string offset 72 returns 72
+generate desc for big
+ecom: 
+const sh: bad exit status '%s' string 1 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b150 big 0 0
+    const (64) int 6 0
+ecom: 
+name status string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b150 big 0 0
+    const (72) int 6 0
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b152 big 0 0
+    const (64) int 6 0
+ecom: 
+const bad wait read string 1 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b152 big 0 0
+    const (72) int 6 0
+ecom: 
+name .t151 string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b152 big 0 0
+    const (80) int 6 0
+ecom: 
+= string 10 1
+  name .t151 string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name .t151 string 0 0
+ecom: 
+tuple (int, string, string) 10 2
+  seq no type 10 2
+    cast int 10 1
+      name status string 0 0
+    seq no type 10 2
+      name status string 0 0
+      seq no type 10 2
+        slice string 10 2
+          name status string 0 0
+          seq no type 10 2
+            + int 15 1
+              name i int 0 0
+              const (2) int 6 0
+            nothing no type 10 1
+ecom to: 
+* (int, string, string) 8 0
+  name .ret int 0 0
+ecom: 
+cast int 10 1
+  name status string 0 0
+ecom to: 
+* int 8 0
+  + int 15 1
+    adr int 15 1
+      * (int, string, string) 8 0
+        name .ret int 0 0
+    const (0) int 6 0
+ecom: 
+name status string 0 0
+ecom to: 
+* string 8 0
+  + int 15 1
+    adr int 15 1
+      * (int, string, string) 8 0
+        name .ret int 0 0
+    const (8) int 6 0
+ecom: 
+slice string 10 2
+  name status string 0 0
+  seq no type 10 2
+    + int 15 1
+      name i int 0 0
+      const (2) int 6 0
+    nothing no type 10 1
+ecom to: 
+* string 8 0
+  + int 15 1
+    adr int 15 1
+      * (int, string, string) 8 0
+        name .ret int 0 0
+    const (16) int 6 0
+ecom: 
+len int 10 1
+  name status string 0 0
+ecom to: 
+name .t149 int 0 0
+eacom: 
++ int 15 1
+  name i int 0 0
+  const (2) int 6 0
+ecom: 
++ int 15 1
+  name i int 0 0
+  const (2) int 6 0
+ecom to: 
+name .t148 int 0 0
+ecom: 
+name status string 0 0
+ecom to: 
+* string 8 0
+  + int 15 1
+    adr int 15 1
+      * (int, string, string) 8 0
+        name .ret int 0 0
+    const (16) int 6 0
+fn: parsewaitstatus
+64: argument ctxt ref Context ref 2
+72: argument status string ref 13
+80: local i int ref 13
+84: local .t148 int ref 1
+88: local .t149 int ref 1
+96: local .b150 big ref 2
+104: local .b152 big ref 2
+112: local .t151 string ref 1
+generate desc for parsewaitstatus
+descmap offset 0
+descmap ctxt type ref Context offset 64 (d->offset=64 start=0) returns 64
+descmap status type string offset 72 (d->offset=72 start=0) returns 72
+descmap i type int offset 80 (d->offset=80 start=0) returns -1
+descmap .t148 type int offset 84 (d->offset=84 start=0) returns -1
+descmap .t149 type int offset 88 (d->offset=88 start=0) returns -1
+descmap .b150 type big offset 96 (d->offset=96 start=0) returns -1
+descmap .b152 type big offset 104 (d->offset=104 start=0) returns -1
+descmap .t151 type string offset 112 (d->offset=112 start=0) returns 112
+fncom: panic 6 4196a8
+ecom: 
+used int 10 2
+  call int 10 2
+    -> fn(fd: ref Sys->FD, s: string, nil: string, *): int 12 1
+      name sys Sys 1 0
+      name fprint nothing 11 1
+    seq no type 10 2
+      call ref Sys->FD 10 2
+        -> fn(fd: int): ref Sys->FD 12 1
+          name sys Sys 1 0
+          name fildes nothing 11 1
+        seq no type 10 1
+          const (2) int 6 0
+      seq no type 10 1
+        const sh panic: %s
+ string 1 0
+        seq no type 10 1
+          name s string 0 0
+ecom: 
+call int 10 2
+  -> fn(fd: ref Sys->FD, s: string, nil: string, *): int 12 1
+    name sys Sys 1 0
+    name fprint nothing 11 1
+  seq no type 10 2
+    call ref Sys->FD 10 2
+      -> fn(fd: int): ref Sys->FD 12 1
+        name sys Sys 1 0
+        name fildes nothing 11 1
+      seq no type 10 1
+        const (2) int 6 0
+    seq no type 10 1
+      const sh panic: %s
+ string 1 0
+      seq no type 10 1
+        name s string 0 0
+ecom to: 
+name .t153 int 0 0
+generate desc for Sys->fprint
+descmap offset 0
+descmap fd type ref Sys->FD offset 64 (d->offset=64 start=0) returns 64
+descmap s type string offset 72 (d->offset=72 start=0) returns 72
+descmap type string offset 80 returns 80
+generate desc for big
+ecom: 
+call ref Sys->FD 10 2
+  -> fn(fd: int): ref Sys->FD 12 1
+    name sys Sys 1 0
+    name fildes nothing 11 1
+  seq no type 10 1
+    const (2) int 6 0
+ecom to: 
+name .t155 ref Sys->FD 0 0
+generate desc for big
+ecom: 
+const (2) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b156 big 0 0
+    const (64) int 6 0
+ecom: 
+name .t155 ref Sys->FD 0 0
+ecom to: 
+* ref Sys->FD 8 0
+  + int 15 0
+    name .b154 big 0 0
+    const (64) int 6 0
+ecom: 
+= ref Sys->FD 10 1
+  name .t155 ref Sys->FD 0 0
+  name nil ref Sys->FD 1 0
+ecom: 
+name nil ref Sys->FD 1 0
+ecom to: 
+name .t155 ref Sys->FD 0 0
+ecom: 
+const sh panic: %s
+ string 1 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b154 big 0 0
+    const (72) int 6 0
+ecom: 
+name s string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b154 big 0 0
+    const (80) int 6 0
+ecom: 
+raise nothing 10 1
+  const panic string 1 0
+fn: panic
+64: argument s string ref 1
+72: local .t153 int ref 1
+80: local .b154 big ref 1
+88: local .b156 big ref 1
+96: local .t155 ref Sys->FD ref 1
+generate desc for panic
+descmap offset 0
+descmap s type string offset 64 (d->offset=64 start=0) returns 64
+descmap .t153 type int offset 72 (d->offset=72 start=0) returns -1
+descmap .b154 type big offset 80 (d->offset=80 start=0) returns -1
+descmap .b156 type big offset 88 (d->offset=88 start=0) returns -1
+descmap .t155 type ref Sys->FD offset 96 (d->offset=96 start=0) returns 96
+fncom: diagnostic 9 419768
+eacom: 
+& int 10 1
+  * int 10 1
+    + int 10 1
+      * ref Localenv 10 1
+        + int 10 1
+          * ref Environment 8 0
+            name ctxt ref Context 0 0
+          const localenv (24) int 6 0
+      const flags (16) int 6 0
+  const VERBOSE (2) int 6 0
+ecom: 
+& int 10 1
+  * int 10 1
+    + int 10 1
+      * ref Localenv 10 1
+        + int 10 1
+          * ref Environment 8 0
+            name ctxt ref Context 0 0
+          const localenv (24) int 6 0
+      const flags (16) int 6 0
+  const VERBOSE (2) int 6 0
+ecom to: 
+name .t157 int 0 0
+eacom: 
+* int 10 1
+  + int 10 1
+    * ref Localenv 10 1
+      + int 10 1
+        * ref Environment 8 0
+          name ctxt ref Context 0 0
+        const localenv (24) int 6 0
+    const flags (16) int 6 0
+ecom: 
+* ref Localenv 10 1
+  + int 10 1
+    * ref Environment 8 0
+      name ctxt ref Context 0 0
+    const localenv (24) int 6 0
+ecom to: 
+name .t158 ref Localenv 0 0
+eacom: 
+* ref Localenv 10 1
+  + int 10 1
+    * ref Environment 8 0
+      name ctxt ref Context 0 0
+    const localenv (24) int 6 0
+ecom: 
+* ref Environment 8 0
+  name ctxt ref Context 0 0
+ecom to: 
+name .t158 ref Environment 0 0
+ecom: 
+= ref Localenv 10 1
+  name .t158 ref Localenv 0 0
+  name nil ref Localenv 1 0
+ecom: 
+name nil ref Localenv 1 0
+ecom to: 
+name .t158 ref Localenv 0 0
+ecom: 
+used int 10 2
+  call int 10 2
+    -> fn(fd: ref Sys->FD, s: string, nil: string, *): int 12 1
+      name sys Sys 1 0
+      name fprint nothing 11 1
+    seq no type 10 2
+      call ref Sys->FD 10 2
+        -> fn(fd: int): ref Sys->FD 12 1
+          name sys Sys 1 0
+          name fildes nothing 11 1
+        seq no type 10 1
+          const (2) int 6 0
+      seq no type 10 1
+        const sh: %s
+ string 1 0
+        seq no type 10 1
+          name s string 0 0
+ecom: 
+call int 10 2
+  -> fn(fd: ref Sys->FD, s: string, nil: string, *): int 12 1
+    name sys Sys 1 0
+    name fprint nothing 11 1
+  seq no type 10 2
+    call ref Sys->FD 10 2
+      -> fn(fd: int): ref Sys->FD 12 1
+        name sys Sys 1 0
+        name fildes nothing 11 1
+      seq no type 10 1
+        const (2) int 6 0
+    seq no type 10 1
+      const sh: %s
+ string 1 0
+      seq no type 10 1
+        name s string 0 0
+ecom to: 
+name .t157 int 0 0
+generate desc for Sys->fprint
+descmap offset 0
+descmap fd type ref Sys->FD offset 64 (d->offset=64 start=0) returns 64
+descmap s type string offset 72 (d->offset=72 start=0) returns 72
+descmap type string offset 80 returns 80
+generate desc for big
+ecom: 
+call ref Sys->FD 10 2
+  -> fn(fd: int): ref Sys->FD 12 1
+    name sys Sys 1 0
+    name fildes nothing 11 1
+  seq no type 10 1
+    const (2) int 6 0
+ecom to: 
+name .t158 ref Sys->FD 0 0
+generate desc for big
+ecom: 
+const (2) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b160 big 0 0
+    const (64) int 6 0
+ecom: 
+name .t158 ref Sys->FD 0 0
+ecom to: 
+* ref Sys->FD 8 0
+  + int 15 0
+    name .b159 big 0 0
+    const (64) int 6 0
+ecom: 
+= ref Sys->FD 10 1
+  name .t158 ref Sys->FD 0 0
+  name nil ref Sys->FD 1 0
+ecom: 
+name nil ref Sys->FD 1 0
+ecom to: 
+name .t158 ref Sys->FD 0 0
+ecom: 
+const sh: %s
+ string 1 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b159 big 0 0
+    const (72) int 6 0
+ecom: 
+name s string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b159 big 0 0
+    const (80) int 6 0
+fn: diagnostic
+64: argument ctxt ref Context ref 1
+72: argument s string ref 1
+80: local .t157 int ref 1
+88: local .b159 big ref 1
+96: local .b160 big ref 1
+104: local .t158 ref Localenv ref 1
+generate desc for diagnostic
+descmap offset 0
+descmap ctxt type ref Context offset 64 (d->offset=64 start=0) returns 64
+descmap s type string offset 72 (d->offset=72 start=0) returns 72
+descmap .t157 type int offset 80 (d->offset=80 start=0) returns -1
+descmap .b159 type big offset 88 (d->offset=88 start=0) returns -1
+descmap .b160 type big offset 96 (d->offset=96 start=0) returns -1
+descmap .t158 type ref Localenv offset 104 (d->offset=104 start=0) returns 104
+fncom: new 5 4b9480
+ecom: 
+call no type 10 1
+  name initialise fn() 11 1
+generate desc for big
+ecom: 
+used int 10 1
+  call int 10 1
+    -> fn(): int 12 1
+      name env Env 1 0
+      name clone nothing 11 1
+ecom: 
+call int 10 1
+  -> fn(): int 12 1
+    name env Env 1 0
+    name clone nothing 11 1
+ecom to: 
+name .t162 int 0 0
+generate desc for big
+ecom: 
+= ref Context 10 3
+  name ctxt ref Context 0 0
+  ref ref Context 10 3
+    tuple Context 10 3
+      seq no type 10 3
+        ref ref Environment 10 2
+          tuple Environment 10 2
+            seq no type 10 2
+              ref ref Builtins 10 1
+                tuple Builtins 10 1
+                  seq no type 10 1
+                    name nil polymorphic type 1 0
+                    seq no type 10 1
+                      const (0) int 6 0
+              seq no type 10 2
+                ref ref Builtins 10 1
+                  tuple Builtins 10 1
+                    seq no type 10 1
+                      name nil polymorphic type 1 0
+                      seq no type 10 1
+                        const (0) int 6 0
+                seq no type 10 2
+                  name nil polymorphic type 1 0
+                  seq no type 10 2
+                    call ref Localenv 10 2
+                      name newlocalenv fn(pushed: ref Localenv): ref Localenv 11 1
+                      seq no type 10 1
+                        name nil ref Localenv 1 0
+        seq no type 10 2
+          call ref Sys->FD 10 1
+            name waitfd fn(): ref Sys->FD 11 1
+          seq no type 10 1
+            name drawcontext ref Draw->Context 0 0
+            seq no type 10 1
+              :: list of int 10 1
+                const (0) int 6 0
+                :: list of int 10 1
+                  const (1) int 6 0
+                  :: list of int 10 1
+                    const (2) int 6 0
+                    name nil polymorphic type 1 0
+ecom: 
+ref ref Context 10 3
+  tuple Context 10 3
+    seq no type 10 3
+      ref ref Environment 10 2
+        tuple Environment 10 2
+          seq no type 10 2
+            ref ref Builtins 10 1
+              tuple Builtins 10 1
+                seq no type 10 1
+                  name nil polymorphic type 1 0
+                  seq no type 10 1
+                    const (0) int 6 0
+            seq no type 10 2
+              ref ref Builtins 10 1
+                tuple Builtins 10 1
+                  seq no type 10 1
+                    name nil polymorphic type 1 0
+                    seq no type 10 1
+                      const (0) int 6 0
+              seq no type 10 2
+                name nil polymorphic type 1 0
+                seq no type 10 2
+                  call ref Localenv 10 2
+                    name newlocalenv fn(pushed: ref Localenv): ref Localenv 11 1
+                    seq no type 10 1
+                      name nil ref Localenv 1 0
+      seq no type 10 2
+        call ref Sys->FD 10 1
+          name waitfd fn(): ref Sys->FD 11 1
+        seq no type 10 1
+          name drawcontext ref Draw->Context 0 0
+          seq no type 10 1
+            :: list of int 10 1
+              const (0) int 6 0
+              :: list of int 10 1
+                const (1) int 6 0
+                :: list of int 10 1
+                  const (2) int 6 0
+                  name nil polymorphic type 1 0
+ecom to: 
+name ctxt ref Context 0 0
+generate desc for Context
+descmap adt offset 0
+descmap offset 0
+descmap env type ref Environment offset 0 (d->offset=0 start=0) returns 0
+descmap waitfd type ref Sys->FD offset 8 (d->offset=8 start=0) returns 8
+descmap drawcontext type ref Draw->Context offset 16 (d->offset=16 start=0) returns 16
+descmap keepfds type list of int offset 24 (d->offset=24 start=0) returns 24
+generate desc for Context
+	desc	$-1,32,"f0"
+ecom: 
+tuple Context 10 3
+  seq no type 10 3
+    ref ref Environment 10 2
+      tuple Environment 10 2
+        seq no type 10 2
+          ref ref Builtins 10 1
+            tuple Builtins 10 1
+              seq no type 10 1
+                name nil polymorphic type 1 0
+                seq no type 10 1
+                  const (0) int 6 0
+          seq no type 10 2
+            ref ref Builtins 10 1
+              tuple Builtins 10 1
+                seq no type 10 1
+                  name nil polymorphic type 1 0
+                  seq no type 10 1
+                    const (0) int 6 0
+            seq no type 10 2
+              name nil polymorphic type 1 0
+              seq no type 10 2
+                call ref Localenv 10 2
+                  name newlocalenv fn(pushed: ref Localenv): ref Localenv 11 1
+                  seq no type 10 1
+                    name nil ref Localenv 1 0
+    seq no type 10 2
+      call ref Sys->FD 10 1
+        name waitfd fn(): ref Sys->FD 11 1
+      seq no type 10 1
+        name drawcontext ref Draw->Context 0 0
+        seq no type 10 1
+          :: list of int 10 1
+            const (0) int 6 0
+            :: list of int 10 1
+              const (1) int 6 0
+              :: list of int 10 1
+                const (2) int 6 0
+                name nil polymorphic type 1 0
+ecom to: 
+* Context 8 0
+  name .t163 ref Context 0 0
+ecom: 
+ref ref Environment 10 2
+  tuple Environment 10 2
+    seq no type 10 2
+      ref ref Builtins 10 1
+        tuple Builtins 10 1
+          seq no type 10 1
+            name nil polymorphic type 1 0
+            seq no type 10 1
+              const (0) int 6 0
+      seq no type 10 2
+        ref ref Builtins 10 1
+          tuple Builtins 10 1
+            seq no type 10 1
+              name nil polymorphic type 1 0
+              seq no type 10 1
+                const (0) int 6 0
+        seq no type 10 2
+          name nil polymorphic type 1 0
+          seq no type 10 2
+            call ref Localenv 10 2
+              name newlocalenv fn(pushed: ref Localenv): ref Localenv 11 1
+              seq no type 10 1
+                name nil ref Localenv 1 0
+ecom to: 
+* ref Environment 8 0
+  + int 15 1
+    adr int 15 1
+      * Context 8 0
+        name .t163 ref Context 0 0
+    const (0) int 6 0
+generate desc for Environment
+descmap adt offset 0
+descmap offset 0
+descmap sbuiltins type ref Builtins offset 0 (d->offset=0 start=0) returns 0
+descmap builtins type ref Builtins offset 8 (d->offset=8 start=0) returns 8
+descmap bmods type list of (string, Shellbuiltin) offset 16 (d->offset=16 start=0) returns 16
+descmap localenv type ref Localenv offset 24 (d->offset=24 start=0) returns 24
+generate desc for Environment
+	desc	$-1,32,"f0"
+ecom: 
+tuple Environment 10 2
+  seq no type 10 2
+    ref ref Builtins 10 1
+      tuple Builtins 10 1
+        seq no type 10 1
+          name nil polymorphic type 1 0
+          seq no type 10 1
+            const (0) int 6 0
+    seq no type 10 2
+      ref ref Builtins 10 1
+        tuple Builtins 10 1
+          seq no type 10 1
+            name nil polymorphic type 1 0
+            seq no type 10 1
+              const (0) int 6 0
+      seq no type 10 2
+        name nil polymorphic type 1 0
+        seq no type 10 2
+          call ref Localenv 10 2
+            name newlocalenv fn(pushed: ref Localenv): ref Localenv 11 1
+            seq no type 10 1
+              name nil ref Localenv 1 0
+ecom to: 
+* Environment 8 0
+  name .t164 ref Environment 0 0
+ecom: 
+ref ref Builtins 10 1
+  tuple Builtins 10 1
+    seq no type 10 1
+      name nil polymorphic type 1 0
+      seq no type 10 1
+        const (0) int 6 0
+ecom to: 
+* ref Builtins 8 0
+  + int 15 1
+    adr int 15 1
+      * Environment 8 0
+        name .t164 ref Environment 0 0
+    const (0) int 6 0
+generate desc for Builtins
+descmap adt offset 0
+descmap offset 0
+descmap ba type array of (string, list of Shellbuiltin) offset 0 (d->offset=0 start=0) returns 0
+descmap n type int offset 8 (d->offset=8 start=0) returns -1
+generate desc for Builtins
+	desc	$-1,16,"80"
+ecom: 
+tuple Builtins 10 1
+  seq no type 10 1
+    name nil polymorphic type 1 0
+    seq no type 10 1
+      const (0) int 6 0
+ecom to: 
+* Builtins 8 0
+  name .t165 ref Builtins 0 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* array of (string, list of Shellbuiltin) 8 0
+  + int 15 1
+    adr int 15 1
+      * Builtins 8 0
+        name .t165 ref Builtins 0 0
+    const (0) int 6 0
+ecom: 
+const (0) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 1
+    adr int 15 1
+      * Builtins 8 0
+        name .t165 ref Builtins 0 0
+    const (8) int 6 0
+ecom: 
+= ref Builtins 10 1
+  name .t165 ref Builtins 0 0
+  name nil ref Builtins 1 0
+ecom: 
+name nil ref Builtins 1 0
+ecom to: 
+name .t165 ref Builtins 0 0
+ecom: 
+ref ref Builtins 10 1
+  tuple Builtins 10 1
+    seq no type 10 1
+      name nil polymorphic type 1 0
+      seq no type 10 1
+        const (0) int 6 0
+ecom to: 
+* ref Builtins 8 0
+  + int 15 1
+    adr int 15 1
+      * Environment 8 0
+        name .t164 ref Environment 0 0
+    const (8) int 6 0
+generate desc for Builtins
+ecom: 
+tuple Builtins 10 1
+  seq no type 10 1
+    name nil polymorphic type 1 0
+    seq no type 10 1
+      const (0) int 6 0
+ecom to: 
+* Builtins 8 0
+  name .t165 ref Builtins 0 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* array of (string, list of Shellbuiltin) 8 0
+  + int 15 1
+    adr int 15 1
+      * Builtins 8 0
+        name .t165 ref Builtins 0 0
+    const (0) int 6 0
+ecom: 
+const (0) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 1
+    adr int 15 1
+      * Builtins 8 0
+        name .t165 ref Builtins 0 0
+    const (8) int 6 0
+ecom: 
+= ref Builtins 10 1
+  name .t165 ref Builtins 0 0
+  name nil ref Builtins 1 0
+ecom: 
+name nil ref Builtins 1 0
+ecom to: 
+name .t165 ref Builtins 0 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* list of (string, Shellbuiltin) 8 0
+  + int 15 1
+    adr int 15 1
+      * Environment 8 0
+        name .t164 ref Environment 0 0
+    const (16) int 6 0
+ecom: 
+call ref Localenv 10 2
+  name newlocalenv fn(pushed: ref Localenv): ref Localenv 11 1
+  seq no type 10 1
+    name nil ref Localenv 1 0
+ecom to: 
+* ref Localenv 8 0
+  + int 15 1
+    adr int 15 1
+      * Environment 8 0
+        name .t164 ref Environment 0 0
+    const (24) int 6 0
+generate desc for big
+ecom: 
+name nil ref Localenv 1 0
+ecom to: 
+* ref Localenv 8 0
+  + int 15 0
+    name .b161 big 0 0
+    const (64) int 6 0
+ecom: 
+= ref Environment 10 1
+  name .t164 ref Environment 0 0
+  name nil ref Environment 1 0
+ecom: 
+name nil ref Environment 1 0
+ecom to: 
+name .t164 ref Environment 0 0
+ecom: 
+call ref Sys->FD 10 1
+  name waitfd fn(): ref Sys->FD 11 1
+ecom to: 
+* ref Sys->FD 8 0
+  + int 15 1
+    adr int 15 1
+      * Context 8 0
+        name .t163 ref Context 0 0
+    const (8) int 6 0
+generate desc for big
+ecom: 
+name drawcontext ref Draw->Context 0 0
+ecom to: 
+* ref Draw->Context 8 0
+  + int 15 1
+    adr int 15 1
+      * Context 8 0
+        name .t163 ref Context 0 0
+    const (16) int 6 0
+ecom: 
+:: list of int 10 1
+  const (0) int 6 0
+  :: list of int 10 1
+    const (1) int 6 0
+    :: list of int 10 1
+      const (2) int 6 0
+      name nil polymorphic type 1 0
+ecom to: 
+* list of int 8 0
+  + int 15 1
+    adr int 15 1
+      * Context 8 0
+        name .t163 ref Context 0 0
+    const (24) int 6 0
+ecom: 
+:: list of int 10 1
+  const (1) int 6 0
+  :: list of int 10 1
+    const (2) int 6 0
+    name nil polymorphic type 1 0
+ecom to: 
+name .t165 list of int 0 0
+ecom: 
+:: list of int 10 1
+  const (2) int 6 0
+  name nil polymorphic type 1 0
+ecom to: 
+name .t165 list of int 0 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+name .t165 list of int 0 0
+ecom: 
+= list of int 10 1
+  name .t165 list of int 0 0
+  name nil list of int 1 0
+ecom: 
+name nil list of int 1 0
+ecom to: 
+name .t165 list of int 0 0
+ecom: 
+= ref Context 10 1
+  name .t163 ref Context 0 0
+  name nil ref Context 1 0
+ecom: 
+name nil ref Context 1 0
+ecom to: 
+name .t163 ref Context 0 0
+ecom: 
+used string 10 2
+  call string 10 2
+    -> fn(c: ref Context, sh: Sh): string 12 1
+      name myselfbuiltin Shellbuiltin 1 0
+      name initbuiltin nothing 11 1
+    seq no type 10 1
+      name ctxt ref Context 0 0
+      seq no type 10 1
+        name myself Sh 1 0
+ecom: 
+call string 10 2
+  -> fn(c: ref Context, sh: Sh): string 12 1
+    name myselfbuiltin Shellbuiltin 1 0
+    name initbuiltin nothing 11 1
+  seq no type 10 1
+    name ctxt ref Context 0 0
+    seq no type 10 1
+      name myself Sh 1 0
+ecom to: 
+name .t165 string 0 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b161 big 0 0
+    const (64) int 6 0
+ecom: 
+name myself Sh 1 0
+ecom to: 
+* Sh 8 0
+  + int 15 0
+    name .b161 big 0 0
+    const (72) int 6 0
+ecom: 
+= string 10 1
+  name .t165 string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name .t165 string 0 0
+ecom: 
+= int 10 1
+  * int 10 1
+    + int 10 1
+      * ref Localenv 10 1
+        + int 10 1
+          * ref Environment 8 0
+            name ctxt ref Context 0 0
+          const localenv (24) int 6 0
+      const flags (16) int 6 0
+  const VERBOSE (2) int 6 0
+eacom: 
+* int 10 1
+  + int 10 1
+    * ref Localenv 10 1
+      + int 10 1
+        * ref Environment 8 0
+          name ctxt ref Context 0 0
+        const localenv (24) int 6 0
+    const flags (16) int 6 0
+ecom: 
+* ref Localenv 10 1
+  + int 10 1
+    * ref Environment 8 0
+      name ctxt ref Context 0 0
+    const localenv (24) int 6 0
+ecom to: 
+name .t165 ref Localenv 0 0
+eacom: 
+* ref Localenv 10 1
+  + int 10 1
+    * ref Environment 8 0
+      name ctxt ref Context 0 0
+    const localenv (24) int 6 0
+ecom: 
+* ref Environment 8 0
+  name ctxt ref Context 0 0
+ecom to: 
+name .t165 ref Environment 0 0
+ecom: 
+const VERBOSE (2) int 6 0
+ecom to: 
+* int 8 1
+  + int 15 1
+    name .t165 ref Localenv 0 0
+    const flags (16) int 6 0
+ecom: 
+= ref Localenv 10 1
+  name .t165 ref Localenv 0 0
+  name nil ref Localenv 1 0
+ecom: 
+name nil ref Localenv 1 0
+ecom to: 
+name .t165 ref Localenv 0 0
+ecom: 
+= list of ref Listnode 10 2
+  name vl list of ref Listnode 0 0
+  call list of ref Listnode 10 2
+    name get fn(ctxt: self ref Context, name: string): list of ref Listnode 11 1
+    seq nothing 10 1
+      name ctxt ref Context 0 0
+      seq no type 10 1
+        const autoload string 1 0
+ecom: 
+call list of ref Listnode 10 2
+  name get fn(ctxt: self ref Context, name: string): list of ref Listnode 11 1
+  seq nothing 10 1
+    name ctxt ref Context 0 0
+    seq no type 10 1
+      const autoload string 1 0
+ecom to: 
+name vl list of ref Listnode 0 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b161 big 0 0
+    const (64) int 6 0
+ecom: 
+const autoload string 1 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b161 big 0 0
+    const (72) int 6 0
+eacom: 
+* ref Node 10 1
+  hd ref Listnode 10 1
+    name vl list of ref Listnode 0 0
+ecom: 
+hd ref Listnode 10 1
+  name vl list of ref Listnode 0 0
+ecom to: 
+name .t165 ref Listnode 0 0
+ecom: 
+= ref Listnode 10 1
+  name .t165 ref Listnode 0 0
+  name nil ref Listnode 1 0
+ecom: 
+name nil ref Listnode 1 0
+ecom to: 
+name .t165 ref Listnode 0 0
+eacom: 
+* string 10 1
+  + int 10 1
+    hd ref Listnode 10 1
+      name vl list of ref Listnode 0 0
+    const word (8) int 6 0
+ecom: 
+hd ref Listnode 10 1
+  name vl list of ref Listnode 0 0
+ecom to: 
+name .t165 ref Listnode 0 0
+ecom: 
+= ref Listnode 10 1
+  name .t165 ref Listnode 0 0
+  name nil ref Listnode 1 0
+ecom: 
+name nil ref Listnode 1 0
+ecom to: 
+name .t165 ref Listnode 0 0
+ecom: 
+used string 10 2
+  call string 10 2
+    name loadmodule fn(ctxt: ref Context, name: string): string 11 1
+    seq no type 10 1
+      name ctxt ref Context 0 0
+      seq no type 10 1
+        * string 10 1
+          + int 10 1
+            hd ref Listnode 10 1
+              name vl list of ref Listnode 0 0
+            const word (8) int 6 0
+ecom: 
+call string 10 2
+  name loadmodule fn(ctxt: ref Context, name: string): string 11 1
+  seq no type 10 1
+    name ctxt ref Context 0 0
+    seq no type 10 1
+      * string 10 1
+        + int 10 1
+          hd ref Listnode 10 1
+            name vl list of ref Listnode 0 0
+          const word (8) int 6 0
+ecom to: 
+name .t165 string 0 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b161 big 0 0
+    const (64) int 6 0
+ecom: 
+* string 10 1
+  + int 10 1
+    hd ref Listnode 10 1
+      name vl list of ref Listnode 0 0
+    const word (8) int 6 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b161 big 0 0
+    const (72) int 6 0
+eacom: 
+* string 10 1
+  + int 10 1
+    hd ref Listnode 10 1
+      name vl list of ref Listnode 0 0
+    const word (8) int 6 0
+ecom: 
+hd ref Listnode 10 1
+  name vl list of ref Listnode 0 0
+ecom to: 
+name .t164 ref Listnode 0 0
+ecom: 
+= ref Listnode 10 1
+  name .t164 ref Listnode 0 0
+  name nil ref Listnode 1 0
+ecom: 
+name nil ref Listnode 1 0
+ecom to: 
+name .t164 ref Listnode 0 0
+ecom: 
+= string 10 1
+  name .t165 string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name .t165 string 0 0
+ecom: 
+= list of ref Listnode 10 1
+  name vl list of ref Listnode 0 0
+  tl list of ref Listnode 10 1
+    name vl list of ref Listnode 0 0
+ecom: 
+tl list of ref Listnode 10 1
+  name vl list of ref Listnode 0 0
+ecom to: 
+name vl list of ref Listnode 0 0
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  name .ret int 0 0
+fn: new
+64: argument drawcontext ref Draw->Context ref 1
+72: local .t162 int ref 1
+80: local .b161 big ref 7
+88: local ctxt ref Context ref 7
+96: local vl list of ref Listnode ref 7
+104: local .t163 ref Context ref 1
+112: local .t164 ref Environment ref 1
+120: local .t165 ref Builtins ref 1
+generate desc for Context.new
+descmap offset 0
+descmap drawcontext type ref Draw->Context offset 64 (d->offset=64 start=0) returns 64
+descmap .t162 type int offset 72 (d->offset=72 start=0) returns -1
+descmap .b161 type big offset 80 (d->offset=80 start=0) returns -1
+descmap ctxt type ref Context offset 88 (d->offset=88 start=0) returns 88
+descmap vl type list of ref Listnode offset 96 (d->offset=96 start=0) returns 96
+descmap .t163 type ref Context offset 104 (d->offset=104 start=0) returns 104
+descmap .t164 type ref Environment offset 112 (d->offset=112 start=0) returns 112
+descmap .t165 type ref Builtins offset 120 (d->offset=120 start=0) returns 120
+fncom: copy 3 4bc9d0
+ecom: 
+= ref Context 10 2
+  name nctxt ref Context 0 0
+  ref ref Context 10 2
+    tuple Context 10 2
+      seq no type 10 2
+        * ref Environment 8 0
+          name ctxt ref Context 0 0
+        seq no type 10 2
+          call ref Sys->FD 10 1
+            name waitfd fn(): ref Sys->FD 11 1
+          seq no type 10 1
+            * ref Draw->Context 8 0
+              + int 15 1
+                name ctxt ref Context 0 0
+                const drawcontext (16) int 6 0
+            seq no type 10 1
+              * list of int 8 0
+                + int 15 1
+                  name ctxt ref Context 0 0
+                  const keepfds (24) int 6 0
+ecom: 
+ref ref Context 10 2
+  tuple Context 10 2
+    seq no type 10 2
+      * ref Environment 8 0
+        name ctxt ref Context 0 0
+      seq no type 10 2
+        call ref Sys->FD 10 1
+          name waitfd fn(): ref Sys->FD 11 1
+        seq no type 10 1
+          * ref Draw->Context 8 0
+            + int 15 1
+              name ctxt ref Context 0 0
+              const drawcontext (16) int 6 0
+          seq no type 10 1
+            * list of int 8 0
+              + int 15 1
+                name ctxt ref Context 0 0
+                const keepfds (24) int 6 0
+ecom to: 
+name nctxt ref Context 0 0
+generate desc for Context
+ecom: 
+tuple Context 10 2
+  seq no type 10 2
+    * ref Environment 8 0
+      name ctxt ref Context 0 0
+    seq no type 10 2
+      call ref Sys->FD 10 1
+        name waitfd fn(): ref Sys->FD 11 1
+      seq no type 10 1
+        * ref Draw->Context 8 0
+          + int 15 1
+            name ctxt ref Context 0 0
+            const drawcontext (16) int 6 0
+        seq no type 10 1
+          * list of int 8 0
+            + int 15 1
+              name ctxt ref Context 0 0
+              const keepfds (24) int 6 0
+ecom to: 
+* Context 8 0
+  name .t166 ref Context 0 0
+ecom: 
+* ref Environment 8 0
+  name ctxt ref Context 0 0
+ecom to: 
+* ref Environment 8 0
+  + int 15 1
+    adr int 15 1
+      * Context 8 0
+        name .t166 ref Context 0 0
+    const (0) int 6 0
+ecom: 
+call ref Sys->FD 10 1
+  name waitfd fn(): ref Sys->FD 11 1
+ecom to: 
+* ref Sys->FD 8 0
+  + int 15 1
+    adr int 15 1
+      * Context 8 0
+        name .t166 ref Context 0 0
+    const (8) int 6 0
+generate desc for big
+ecom: 
+* ref Draw->Context 8 0
+  + int 15 1
+    name ctxt ref Context 0 0
+    const drawcontext (16) int 6 0
+ecom to: 
+* ref Draw->Context 8 0
+  + int 15 1
+    adr int 15 1
+      * Context 8 0
+        name .t166 ref Context 0 0
+    const (16) int 6 0
+ecom: 
+* list of int 8 0
+  + int 15 1
+    name ctxt ref Context 0 0
+    const keepfds (24) int 6 0
+ecom to: 
+* list of int 8 0
+  + int 15 1
+    adr int 15 1
+      * Context 8 0
+        name .t166 ref Context 0 0
+    const (24) int 6 0
+ecom: 
+= ref Context 10 1
+  name .t166 ref Context 0 0
+  name nil ref Context 1 0
+ecom: 
+name nil ref Context 1 0
+ecom to: 
+name .t166 ref Context 0 0
+ecom: 
+used int 10 1
+  call int 10 1
+    -> fn(): int 12 1
+      name env Env 1 0
+      name clone nothing 11 1
+ecom: 
+call int 10 1
+  -> fn(): int 12 1
+    name env Env 1 0
+    name clone nothing 11 1
+ecom to: 
+name .t168 int 0 0
+generate desc for big
+ecom: 
+= ref Environment 10 3
+  * ref Environment 8 0
+    name nctxt ref Context 0 0
+  ref ref Environment 10 3
+    tuple Environment 10 3
+      seq no type 10 3
+        call ref Builtins 10 2
+          name copybuiltins fn(b: ref Builtins): ref Builtins 11 1
+          seq no type 10 1
+            * ref Builtins 10 1
+              * ref Environment 8 0
+                name ctxt ref Context 0 0
+        seq no type 10 3
+          call ref Builtins 10 2
+            name copybuiltins fn(b: ref Builtins): ref Builtins 11 1
+            seq no type 10 1
+              * ref Builtins 10 1
+                + int 10 1
+                  * ref Environment 8 0
+                    name ctxt ref Context 0 0
+                  const builtins (8) int 6 0
+          seq no type 10 2
+            * list of (string, Shellbuiltin) 10 1
+              + int 10 1
+                * ref Environment 8 0
+                  name ctxt ref Context 0 0
+                const bmods (16) int 6 0
+            seq no type 10 2
+              call ref Localenv 10 2
+                name copylocalenv fn(e: ref Localenv): ref Localenv 11 1
+                seq no type 10 1
+                  * ref Localenv 10 1
+                    + int 10 1
+                      * ref Environment 8 0
+                        name ctxt ref Context 0 0
+                      const localenv (24) int 6 0
+ecom: 
+ref ref Environment 10 3
+  tuple Environment 10 3
+    seq no type 10 3
+      call ref Builtins 10 2
+        name copybuiltins fn(b: ref Builtins): ref Builtins 11 1
+        seq no type 10 1
+          * ref Builtins 10 1
+            * ref Environment 8 0
+              name ctxt ref Context 0 0
+      seq no type 10 3
+        call ref Builtins 10 2
+          name copybuiltins fn(b: ref Builtins): ref Builtins 11 1
+          seq no type 10 1
+            * ref Builtins 10 1
+              + int 10 1
+                * ref Environment 8 0
+                  name ctxt ref Context 0 0
+                const builtins (8) int 6 0
+        seq no type 10 2
+          * list of (string, Shellbuiltin) 10 1
+            + int 10 1
+              * ref Environment 8 0
+                name ctxt ref Context 0 0
+              const bmods (16) int 6 0
+          seq no type 10 2
+            call ref Localenv 10 2
+              name copylocalenv fn(e: ref Localenv): ref Localenv 11 1
+              seq no type 10 1
+                * ref Localenv 10 1
+                  + int 10 1
+                    * ref Environment 8 0
+                      name ctxt ref Context 0 0
+                    const localenv (24) int 6 0
+ecom to: 
+* ref Environment 8 0
+  name nctxt ref Context 0 0
+generate desc for Environment
+ecom: 
+tuple Environment 10 3
+  seq no type 10 3
+    call ref Builtins 10 2
+      name copybuiltins fn(b: ref Builtins): ref Builtins 11 1
+      seq no type 10 1
+        * ref Builtins 10 1
+          * ref Environment 8 0
+            name ctxt ref Context 0 0
+    seq no type 10 3
+      call ref Builtins 10 2
+        name copybuiltins fn(b: ref Builtins): ref Builtins 11 1
+        seq no type 10 1
+          * ref Builtins 10 1
+            + int 10 1
+              * ref Environment 8 0
+                name ctxt ref Context 0 0
+              const builtins (8) int 6 0
+      seq no type 10 2
+        * list of (string, Shellbuiltin) 10 1
+          + int 10 1
+            * ref Environment 8 0
+              name ctxt ref Context 0 0
+            const bmods (16) int 6 0
+        seq no type 10 2
+          call ref Localenv 10 2
+            name copylocalenv fn(e: ref Localenv): ref Localenv 11 1
+            seq no type 10 1
+              * ref Localenv 10 1
+                + int 10 1
+                  * ref Environment 8 0
+                    name ctxt ref Context 0 0
+                  const localenv (24) int 6 0
+ecom to: 
+* Environment 8 0
+  name .t166 ref Environment 0 0
+ecom: 
+call ref Builtins 10 2
+  name copybuiltins fn(b: ref Builtins): ref Builtins 11 1
+  seq no type 10 1
+    * ref Builtins 10 1
+      * ref Environment 8 0
+        name ctxt ref Context 0 0
+ecom to: 
+* ref Builtins 8 0
+  + int 15 1
+    adr int 15 1
+      * Environment 8 0
+        name .t166 ref Environment 0 0
+    const (0) int 6 0
+generate desc for big
+ecom: 
+* ref Builtins 10 1
+  * ref Environment 8 0
+    name ctxt ref Context 0 0
+ecom to: 
+* ref Builtins 8 0
+  + int 15 0
+    name .b167 big 0 0
+    const (64) int 6 0
+eacom: 
+* ref Builtins 10 1
+  * ref Environment 8 0
+    name ctxt ref Context 0 0
+ecom: 
+* ref Environment 8 0
+  name ctxt ref Context 0 0
+ecom to: 
+name .t169 ref Environment 0 0
+ecom: 
+= ref Environment 10 1
+  name .t169 ref Environment 0 0
+  name nil ref Environment 1 0
+ecom: 
+name nil ref Environment 1 0
+ecom to: 
+name .t169 ref Environment 0 0
+ecom: 
+call ref Builtins 10 2
+  name copybuiltins fn(b: ref Builtins): ref Builtins 11 1
+  seq no type 10 1
+    * ref Builtins 10 1
+      + int 10 1
+        * ref Environment 8 0
+          name ctxt ref Context 0 0
+        const builtins (8) int 6 0
+ecom to: 
+* ref Builtins 8 0
+  + int 15 1
+    adr int 15 1
+      * Environment 8 0
+        name .t166 ref Environment 0 0
+    const (8) int 6 0
+generate desc for big
+ecom: 
+* ref Builtins 10 1
+  + int 10 1
+    * ref Environment 8 0
+      name ctxt ref Context 0 0
+    const builtins (8) int 6 0
+ecom to: 
+* ref Builtins 8 0
+  + int 15 0
+    name .b167 big 0 0
+    const (64) int 6 0
+eacom: 
+* ref Builtins 10 1
+  + int 10 1
+    * ref Environment 8 0
+      name ctxt ref Context 0 0
+    const builtins (8) int 6 0
+ecom: 
+* ref Environment 8 0
+  name ctxt ref Context 0 0
+ecom to: 
+name .t169 ref Environment 0 0
+ecom: 
+= ref Environment 10 1
+  name .t169 ref Environment 0 0
+  name nil ref Environment 1 0
+ecom: 
+name nil ref Environment 1 0
+ecom to: 
+name .t169 ref Environment 0 0
+ecom: 
+* list of (string, Shellbuiltin) 10 1
+  + int 10 1
+    * ref Environment 8 0
+      name ctxt ref Context 0 0
+    const bmods (16) int 6 0
+ecom to: 
+* list of (string, Shellbuiltin) 8 0
+  + int 15 1
+    adr int 15 1
+      * Environment 8 0
+        name .t166 ref Environment 0 0
+    const (16) int 6 0
+eacom: 
+* list of (string, Shellbuiltin) 10 1
+  + int 10 1
+    * ref Environment 8 0
+      name ctxt ref Context 0 0
+    const bmods (16) int 6 0
+ecom: 
+* ref Environment 8 0
+  name ctxt ref Context 0 0
+ecom to: 
+name .t169 ref Environment 0 0
+ecom: 
+= ref Environment 10 1
+  name .t169 ref Environment 0 0
+  name nil ref Environment 1 0
+ecom: 
+name nil ref Environment 1 0
+ecom to: 
+name .t169 ref Environment 0 0
+ecom: 
+call ref Localenv 10 2
+  name copylocalenv fn(e: ref Localenv): ref Localenv 11 1
+  seq no type 10 1
+    * ref Localenv 10 1
+      + int 10 1
+        * ref Environment 8 0
+          name ctxt ref Context 0 0
+        const localenv (24) int 6 0
+ecom to: 
+* ref Localenv 8 0
+  + int 15 1
+    adr int 15 1
+      * Environment 8 0
+        name .t166 ref Environment 0 0
+    const (24) int 6 0
+generate desc for big
+ecom: 
+* ref Localenv 10 1
+  + int 10 1
+    * ref Environment 8 0
+      name ctxt ref Context 0 0
+    const localenv (24) int 6 0
+ecom to: 
+* ref Localenv 8 0
+  + int 15 0
+    name .b167 big 0 0
+    const (64) int 6 0
+eacom: 
+* ref Localenv 10 1
+  + int 10 1
+    * ref Environment 8 0
+      name ctxt ref Context 0 0
+    const localenv (24) int 6 0
+ecom: 
+* ref Environment 8 0
+  name ctxt ref Context 0 0
+ecom to: 
+name .t169 ref Environment 0 0
+ecom: 
+= ref Environment 10 1
+  name .t169 ref Environment 0 0
+  name nil ref Environment 1 0
+ecom: 
+name nil ref Environment 1 0
+ecom to: 
+name .t169 ref Environment 0 0
+ecom: 
+= ref Environment 10 1
+  name .t166 ref Environment 0 0
+  name nil ref Environment 1 0
+ecom: 
+name nil ref Environment 1 0
+ecom to: 
+name .t166 ref Environment 0 0
+ecom: 
+name nctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  name .ret int 0 0
+fn: copy
+64: argument ctxt ref Context ref 7
+72: argument copyenv int ref 1
+76: local .t168 int ref 1
+80: local .b167 big ref 5
+88: local nctxt ref Context ref 3
+96: local .t166 ref Context ref 1
+104: local .t169 ref Environment ref 1
+generate desc for Context.copy
+descmap offset 0
+descmap ctxt type ref Context offset 64 (d->offset=64 start=0) returns 64
+descmap copyenv type int offset 72 (d->offset=72 start=0) returns -1
+descmap .t168 type int offset 76 (d->offset=76 start=0) returns -1
+descmap .b167 type big offset 80 (d->offset=80 start=0) returns -1
+descmap nctxt type ref Context offset 88 (d->offset=88 start=0) returns 88
+descmap .t166 type ref Context offset 96 (d->offset=96 start=0) returns 96
+descmap .t169 type ref Environment offset 104 (d->offset=104 start=0) returns 104
+fncom: set 5 4ba4c0
+ecom: 
+= ref Localenv 10 1
+  name e ref Localenv 0 0
+  * ref Localenv 10 1
+    + int 10 1
+      * ref Environment 8 0
+        name ctxt ref Context 0 0
+      const localenv (24) int 6 0
+ecom: 
+* ref Localenv 10 1
+  + int 10 1
+    * ref Environment 8 0
+      name ctxt ref Context 0 0
+    const localenv (24) int 6 0
+ecom to: 
+name e ref Localenv 0 0
+eacom: 
+* ref Localenv 10 1
+  + int 10 1
+    * ref Environment 8 0
+      name ctxt ref Context 0 0
+    const localenv (24) int 6 0
+ecom: 
+* ref Environment 8 0
+  name ctxt ref Context 0 0
+ecom to: 
+name .t170 ref Environment 0 0
+ecom: 
+= ref Environment 10 1
+  name .t170 ref Environment 0 0
+  name nil ref Environment 1 0
+ecom: 
+name nil ref Environment 1 0
+ecom to: 
+name .t170 ref Environment 0 0
+ecom: 
+= int 10 2
+  name idx int 0 0
+  call int 10 2
+    name hashfn fn(s: string, n: int): int 11 1
+    seq no type 10 1
+      name name string 0 0
+      seq no type 10 1
+        len int 10 1
+          * array of list of ref Var 8 0
+            name e ref Localenv 0 0
+ecom: 
+call int 10 2
+  name hashfn fn(s: string, n: int): int 11 1
+  seq no type 10 1
+    name name string 0 0
+    seq no type 10 1
+      len int 10 1
+        * array of list of ref Var 8 0
+          name e ref Localenv 0 0
+ecom to: 
+name idx int 0 0
+generate desc for big
+ecom: 
+name name string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b171 big 0 0
+    const (64) int 6 0
+ecom: 
+len int 10 1
+  * array of list of ref Var 8 0
+    name e ref Localenv 0 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b171 big 0 0
+    const (72) int 6 0
+ecom: 
+= ref Var 10 2
+  name v ref Var 0 0
+  call ref Var 10 2
+    name hashfind fn(ht: array of list of ref Var, idx: int, n: string): ref Var 11 1
+    seq no type 10 1
+      * array of list of ref Var 8 0
+        name e ref Localenv 0 0
+      seq no type 10 1
+        name idx int 0 0
+        seq no type 10 1
+          name name string 0 0
+ecom: 
+call ref Var 10 2
+  name hashfind fn(ht: array of list of ref Var, idx: int, n: string): ref Var 11 1
+  seq no type 10 1
+    * array of list of ref Var 8 0
+      name e ref Localenv 0 0
+    seq no type 10 1
+      name idx int 0 0
+      seq no type 10 1
+        name name string 0 0
+ecom to: 
+name v ref Var 0 0
+generate desc for big
+ecom: 
+* array of list of ref Var 8 0
+  name e ref Localenv 0 0
+ecom to: 
+* array of list of ref Var 8 0
+  + int 15 0
+    name .b171 big 0 0
+    const (64) int 6 0
+ecom: 
+name idx int 0 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b171 big 0 0
+    const (72) int 6 0
+ecom: 
+name name string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b171 big 0 0
+    const (80) int 6 0
+ecom: 
+= int 10 1
+  name flags int 0 0
+  const CHANGED (1) int 6 0
+ecom: 
+const CHANGED (1) int 6 0
+ecom to: 
+name flags int 0 0
+eacom: 
+call int 10 2
+  name noexport fn(name: string): int 11 1
+  seq no type 10 1
+    name name string 0 0
+ecom: 
+call int 10 2
+  name noexport fn(name: string): int 11 1
+  seq no type 10 1
+    name name string 0 0
+ecom to: 
+name .t172 int 0 0
+generate desc for big
+ecom: 
+name name string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b171 big 0 0
+    const (64) int 6 0
+ecom: 
+|= int 10 1
+  name flags int 0 0
+  const NOEXPORT (2) int 6 0
+ecom: 
+call no type 10 2
+  name hashadd fn(ht: array of list of ref Var, idx: int, v: ref Var) 11 1
+  seq no type 10 1
+    * array of list of ref Var 8 0
+      name e ref Localenv 0 0
+    seq no type 10 1
+      name idx int 0 0
+      seq no type 10 1
+        ref ref Var 10 1
+          tuple Var 10 1
+            seq no type 10 1
+              name name string 0 0
+              seq no type 10 1
+                name val list of ref Listnode 0 0
+                seq no type 10 1
+                  name flags int 0 0
+generate desc for big
+ecom: 
+* array of list of ref Var 8 0
+  name e ref Localenv 0 0
+ecom to: 
+* array of list of ref Var 8 0
+  + int 15 0
+    name .b171 big 0 0
+    const (64) int 6 0
+ecom: 
+name idx int 0 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b171 big 0 0
+    const (72) int 6 0
+ecom: 
+ref ref Var 10 1
+  tuple Var 10 1
+    seq no type 10 1
+      name name string 0 0
+      seq no type 10 1
+        name val list of ref Listnode 0 0
+        seq no type 10 1
+          name flags int 0 0
+ecom to: 
+* ref Var 8 0
+  + int 15 0
+    name .b171 big 0 0
+    const (80) int 6 0
+generate desc for Var
+descmap adt offset 0
+descmap offset 0
+descmap name type string offset 0 (d->offset=0 start=0) returns 0
+descmap val type list of ref Listnode offset 8 (d->offset=8 start=0) returns 8
+descmap flags type int offset 16 (d->offset=16 start=0) returns -1
+generate desc for Var
+	desc	$-1,24,"c0"
+ecom: 
+tuple Var 10 1
+  seq no type 10 1
+    name name string 0 0
+    seq no type 10 1
+      name val list of ref Listnode 0 0
+      seq no type 10 1
+        name flags int 0 0
+ecom to: 
+* Var 8 0
+  name .t170 ref Var 0 0
+ecom: 
+name name string 0 0
+ecom to: 
+* string 8 0
+  + int 15 1
+    adr int 15 1
+      * Var 8 0
+        name .t170 ref Var 0 0
+    const (0) int 6 0
+ecom: 
+name val list of ref Listnode 0 0
+ecom to: 
+* list of ref Listnode 8 0
+  + int 15 1
+    adr int 15 1
+      * Var 8 0
+        name .t170 ref Var 0 0
+    const (8) int 6 0
+ecom: 
+name flags int 0 0
+ecom to: 
+* int 8 0
+  + int 15 1
+    adr int 15 1
+      * Var 8 0
+        name .t170 ref Var 0 0
+    const (16) int 6 0
+ecom: 
+= ref Var 10 1
+  name .t170 ref Var 0 0
+  name nil ref Var 1 0
+ecom: 
+name nil ref Var 1 0
+ecom to: 
+name .t170 ref Var 0 0
+ecom: 
+= list of ref Listnode 10 1
+  * list of ref Listnode 8 0
+    + int 15 1
+      name v ref Var 0 0
+      const val (8) int 6 0
+  name val list of ref Listnode 0 0
+ecom: 
+name val list of ref Listnode 0 0
+ecom to: 
+* list of ref Listnode 8 0
+  + int 15 1
+    name v ref Var 0 0
+    const val (8) int 6 0
+ecom: 
+|= int 10 1
+  * int 8 0
+    + int 15 1
+      name v ref Var 0 0
+      const flags (16) int 6 0
+  const CHANGED (1) int 6 0
+ecom: 
+= ref Localenv 10 1
+  name e ref Localenv 0 0
+  * ref Localenv 8 0
+    + int 15 1
+      name e ref Localenv 0 0
+      const pushed (8) int 6 0
+ecom: 
+* ref Localenv 8 0
+  + int 15 1
+    name e ref Localenv 0 0
+    const pushed (8) int 6 0
+ecom to: 
+name e ref Localenv 0 0
+ecom: 
+= ref Var 10 1
+  name v ref Var 0 0
+  name nil ref Var 1 0
+ecom: 
+name nil ref Var 1 0
+ecom to: 
+name v ref Var 0 0
+fn: set
+64: argument ctxt ref Context ref 1
+72: argument name string ref 4
+80: argument val list of ref Listnode ref 2
+88: local flags int ref 3
+92: local idx int ref 3
+96: local .t172 int ref 1
+104: local e ref Localenv ref 7
+112: local .b171 big ref 4
+120: local v ref Var ref 4
+128: local .t170 ref Environment ref 1
+generate desc for Context.set
+descmap offset 0
+descmap ctxt type ref Context offset 64 (d->offset=64 start=0) returns 64
+descmap name type string offset 72 (d->offset=72 start=0) returns 72
+descmap val type list of ref Listnode offset 80 (d->offset=80 start=0) returns 80
+descmap flags type int offset 88 (d->offset=88 start=0) returns -1
+descmap idx type int offset 92 (d->offset=92 start=0) returns -1
+descmap .t172 type int offset 96 (d->offset=96 start=0) returns -1
+descmap e type ref Localenv offset 104 (d->offset=104 start=0) returns 104
+descmap .b171 type big offset 112 (d->offset=112 start=0) returns -1
+descmap v type ref Var offset 120 (d->offset=120 start=0) returns 120
+descmap .t170 type ref Environment offset 128 (d->offset=128 start=0) returns 128
+fncom: get 9 4b9b60
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* polymorphic type 8 0
+  name .ret int 0 0
+ecom: 
+= int 10 1
+  name idx int 0 0
+  const (-1) int 6 0
+ecom: 
+const (-1) int 6 0
+ecom to: 
+name idx int 0 0
+eacom: 
+inds int 10 1
+  name name string 0 0
+  const (0) int 6 0
+ecom: 
+inds int 10 1
+  name name string 0 0
+  const (0) int 6 0
+ecom to: 
+name .t173 int 0 0
+eacom: 
+inds int 10 1
+  name name string 0 0
+  const (0) int 6 0
+ecom: 
+inds int 10 1
+  name name string 0 0
+  const (0) int 6 0
+ecom to: 
+name .t173 int 0 0
+ecom: 
+= int 10 1
+  name i int 0 0
+  const (0) int 6 0
+ecom: 
+const (0) int 6 0
+ecom to: 
+name i int 0 0
+eacom: 
+len int 10 1
+  name name string 0 0
+ecom: 
+len int 10 1
+  name name string 0 0
+ecom to: 
+name .t173 int 0 0
+eacom: 
+inds int 10 1
+  name name string 0 0
+  name i int 0 0
+ecom: 
+inds int 10 1
+  name name string 0 0
+  name i int 0 0
+ecom to: 
+name .t173 int 0 0
+eacom: 
+inds int 10 1
+  name name string 0 0
+  name i int 0 0
+ecom: 
+inds int 10 1
+  name name string 0 0
+  name i int 0 0
+ecom to: 
+name .t173 int 0 0
+ecom: 
+++ int 10 1
+  name i int 0 0
+  const (1) int 6 0
+eacom: 
+len int 10 1
+  name name string 0 0
+ecom: 
+len int 10 1
+  name name string 0 0
+ecom to: 
+name .t173 int 0 0
+ecom: 
+= int 10 1
+  name idx int 0 0
+  - int 10 1
+    cast int 10 1
+      name name string 0 0
+    const (1) int 6 0
+ecom: 
+- int 10 1
+  cast int 10 1
+    name name string 0 0
+  const (1) int 6 0
+ecom to: 
+name idx int 0 0
+ecom: 
+cast int 10 1
+  name name string 0 0
+ecom to: 
+name .t173 int 0 0
+ecom: 
+= string 10 1
+  name name string 0 0
+  const * string 1 0
+ecom: 
+const * string 1 0
+ecom to: 
+name name string 0 0
+ecom: 
+= ref Var 10 2
+  name v ref Var 0 0
+  call ref Var 10 2
+    name varfind fn(e: ref Localenv, name: string): ref Var 11 1
+    seq no type 10 2
+      * ref Localenv 10 1
+        + int 10 1
+          * ref Environment 8 0
+            name ctxt ref Context 0 0
+          const localenv (24) int 6 0
+      seq no type 10 1
+        name name string 0 0
+ecom: 
+call ref Var 10 2
+  name varfind fn(e: ref Localenv, name: string): ref Var 11 1
+  seq no type 10 2
+    * ref Localenv 10 1
+      + int 10 1
+        * ref Environment 8 0
+          name ctxt ref Context 0 0
+        const localenv (24) int 6 0
+    seq no type 10 1
+      name name string 0 0
+ecom to: 
+name v ref Var 0 0
+generate desc for big
+ecom: 
+* ref Localenv 10 1
+  + int 10 1
+    * ref Environment 8 0
+      name ctxt ref Context 0 0
+    const localenv (24) int 6 0
+ecom to: 
+* ref Localenv 8 0
+  + int 15 0
+    name .b174 big 0 0
+    const (64) int 6 0
+eacom: 
+* ref Localenv 10 1
+  + int 10 1
+    * ref Environment 8 0
+      name ctxt ref Context 0 0
+    const localenv (24) int 6 0
+ecom: 
+* ref Environment 8 0
+  name ctxt ref Context 0 0
+ecom to: 
+name .t175 ref Environment 0 0
+ecom: 
+= ref Environment 10 1
+  name .t175 ref Environment 0 0
+  name nil ref Environment 1 0
+ecom: 
+name nil ref Environment 1 0
+ecom to: 
+name .t175 ref Environment 0 0
+ecom: 
+name name string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b174 big 0 0
+    const (72) int 6 0
+ecom: 
+call list of ref Listnode 10 2
+  name index fn(val: list of ref Listnode, k: int): list of ref Listnode 11 1
+  seq no type 10 1
+    * list of ref Listnode 8 0
+      + int 15 1
+        name v ref Var 0 0
+        const val (8) int 6 0
+    seq no type 10 1
+      name idx int 0 0
+ecom to: 
+* list of ref Listnode 8 0
+  name .ret int 0 0
+generate desc for big
+ecom: 
+* list of ref Listnode 8 0
+  + int 15 1
+    name v ref Var 0 0
+    const val (8) int 6 0
+ecom to: 
+* list of ref Listnode 8 0
+  + int 15 0
+    name .b174 big 0 0
+    const (64) int 6 0
+ecom: 
+name idx int 0 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b174 big 0 0
+    const (72) int 6 0
+ecom: 
+* list of ref Listnode 8 0
+  + int 15 1
+    name v ref Var 0 0
+    const val (8) int 6 0
+ecom to: 
+* list of ref Listnode 8 0
+  name .ret int 0 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* polymorphic type 8 0
+  name .ret int 0 0
+fn: get
+64: argument ctxt ref Context ref 1
+72: argument name string ref 10
+80: local i int ref 6
+84: local idx int ref 4
+88: local .t173 int ref 1
+96: local v ref Var ref 4
+104: local .b174 big ref 2
+112: local .t175 ref Environment ref 1
+generate desc for Context.get
+descmap offset 0
+descmap ctxt type ref Context offset 64 (d->offset=64 start=0) returns 64
+descmap name type string offset 72 (d->offset=72 start=0) returns 72
+descmap i type int offset 80 (d->offset=80 start=0) returns -1
+descmap idx type int offset 84 (d->offset=84 start=0) returns -1
+descmap .t173 type int offset 88 (d->offset=88 start=0) returns -1
+descmap v type ref Var offset 96 (d->offset=96 start=0) returns 96
+descmap .b174 type big offset 104 (d->offset=104 start=0) returns -1
+descmap .t175 type ref Environment offset 112 (d->offset=112 start=0) returns 112
+fncom: envlist 2 4bb650
+ecom: 
+= array of list of ref Var 10 1
+  name t array of list of ref Var 0 0
+  array array of list of ref Var 10 1
+    const ENVHASHSIZE (7) int 6 0
+ecom: 
+array array of list of ref Var 10 1
+  const ENVHASHSIZE (7) int 6 0
+ecom to: 
+name t array of list of ref Var 0 0
+generate desc for list of ref Var
+generate desc for list of ref Var
+	desc	$-1,8,"80"
+ecom: 
+= ref Localenv 10 1
+  name e ref Localenv 0 0
+  * ref Localenv 10 1
+    + int 10 1
+      * ref Environment 8 0
+        name ctxt ref Context 0 0
+      const localenv (24) int 6 0
+ecom: 
+* ref Localenv 10 1
+  + int 10 1
+    * ref Environment 8 0
+      name ctxt ref Context 0 0
+    const localenv (24) int 6 0
+ecom to: 
+name e ref Localenv 0 0
+eacom: 
+* ref Localenv 10 1
+  + int 10 1
+    * ref Environment 8 0
+      name ctxt ref Context 0 0
+    const localenv (24) int 6 0
+ecom: 
+* ref Environment 8 0
+  name ctxt ref Context 0 0
+ecom to: 
+name .t176 ref Environment 0 0
+ecom: 
+= ref Environment 10 1
+  name .t176 ref Environment 0 0
+  name nil ref Environment 1 0
+ecom: 
+name nil ref Environment 1 0
+ecom to: 
+name .t176 ref Environment 0 0
+ecom: 
+= int 10 1
+  name i int 0 0
+  const (0) int 6 0
+ecom: 
+const (0) int 6 0
+ecom to: 
+name i int 0 0
+eacom: 
+len int 10 1
+  * array of list of ref Var 8 0
+    name e ref Localenv 0 0
+ecom: 
+len int 10 1
+  * array of list of ref Var 8 0
+    name e ref Localenv 0 0
+ecom to: 
+name .t177 int 0 0
+ecom: 
+= list of ref Var 10 1
+  name vl list of ref Var 0 0
+  * list of ref Var 10 1
+    indx big 10 1
+      * array of list of ref Var 8 0
+        name e ref Localenv 0 0
+      name i int 0 0
+ecom: 
+* list of ref Var 10 1
+  indx big 10 1
+    * array of list of ref Var 8 0
+      name e ref Localenv 0 0
+    name i int 0 0
+ecom to: 
+name vl list of ref Var 0 0
+eacom: 
+* list of ref Var 10 1
+  indx big 10 1
+    * array of list of ref Var 8 0
+      name e ref Localenv 0 0
+    name i int 0 0
+generate desc for big
+ecom: 
+indx big 10 1
+  * array of list of ref Var 8 0
+    name e ref Localenv 0 0
+  name i int 0 0
+ecom to: 
+name .b178 big 0 0
+ecom: 
+= ref Var 10 1
+  name v ref Var 0 0
+  hd ref Var 10 1
+    name vl list of ref Var 0 0
+ecom: 
+hd ref Var 10 1
+  name vl list of ref Var 0 0
+ecom to: 
+name v ref Var 0 0
+ecom: 
+= int 10 2
+  name idx int 0 0
+  call int 10 2
+    name hashfn fn(s: string, n: int): int 11 1
+    seq no type 10 1
+      * string 8 0
+        name v ref Var 0 0
+      seq no type 10 1
+        len int 10 1
+          * array of list of ref Var 8 0
+            name e ref Localenv 0 0
+ecom: 
+call int 10 2
+  name hashfn fn(s: string, n: int): int 11 1
+  seq no type 10 1
+    * string 8 0
+      name v ref Var 0 0
+    seq no type 10 1
+      len int 10 1
+        * array of list of ref Var 8 0
+          name e ref Localenv 0 0
+ecom to: 
+name idx int 0 0
+generate desc for big
+ecom: 
+* string 8 0
+  name v ref Var 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b178 big 0 0
+    const (64) int 6 0
+ecom: 
+len int 10 1
+  * array of list of ref Var 8 0
+    name e ref Localenv 0 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b178 big 0 0
+    const (72) int 6 0
+eacom: 
+call ref Var 10 2
+  name hashfind fn(ht: array of list of ref Var, idx: int, n: string): ref Var 11 1
+  seq no type 10 1
+    name t array of list of ref Var 0 0
+    seq no type 10 1
+      name idx int 0 0
+      seq no type 10 1
+        * string 8 0
+          name v ref Var 0 0
+ecom: 
+call ref Var 10 2
+  name hashfind fn(ht: array of list of ref Var, idx: int, n: string): ref Var 11 1
+  seq no type 10 1
+    name t array of list of ref Var 0 0
+    seq no type 10 1
+      name idx int 0 0
+      seq no type 10 1
+        * string 8 0
+          name v ref Var 0 0
+ecom to: 
+name .t176 ref Var 0 0
+generate desc for big
+ecom: 
+name t array of list of ref Var 0 0
+ecom to: 
+* array of list of ref Var 8 0
+  + int 15 0
+    name .b178 big 0 0
+    const (64) int 6 0
+ecom: 
+name idx int 0 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b178 big 0 0
+    const (72) int 6 0
+ecom: 
+* string 8 0
+  name v ref Var 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b178 big 0 0
+    const (80) int 6 0
+ecom: 
+= ref Var 10 1
+  name .t176 ref Var 0 0
+  name nil ref Var 1 0
+ecom: 
+name nil ref Var 1 0
+ecom to: 
+name .t176 ref Var 0 0
+ecom: 
+call no type 10 2
+  name hashadd fn(ht: array of list of ref Var, idx: int, v: ref Var) 11 1
+  seq no type 10 1
+    name t array of list of ref Var 0 0
+    seq no type 10 1
+      name idx int 0 0
+      seq no type 10 1
+        name v ref Var 0 0
+generate desc for big
+ecom: 
+name t array of list of ref Var 0 0
+ecom to: 
+* array of list of ref Var 8 0
+  + int 15 0
+    name .b178 big 0 0
+    const (64) int 6 0
+ecom: 
+name idx int 0 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b178 big 0 0
+    const (72) int 6 0
+ecom: 
+name v ref Var 0 0
+ecom to: 
+* ref Var 8 0
+  + int 15 0
+    name .b178 big 0 0
+    const (80) int 6 0
+ecom: 
+= ref Var 10 1
+  name v ref Var 0 0
+  name nil ref Var 1 0
+ecom: 
+name nil ref Var 1 0
+ecom to: 
+name v ref Var 0 0
+ecom: 
+= list of ref Var 10 1
+  name vl list of ref Var 0 0
+  tl list of ref Var 10 1
+    name vl list of ref Var 0 0
+ecom: 
+tl list of ref Var 10 1
+  name vl list of ref Var 0 0
+ecom to: 
+name vl list of ref Var 0 0
+ecom: 
+= list of ref Var 10 1
+  name vl list of ref Var 0 0
+  name nil list of ref Var 1 0
+ecom: 
+name nil list of ref Var 1 0
+ecom to: 
+name vl list of ref Var 0 0
+ecom: 
+++ int 10 1
+  name i int 0 0
+  const (1) int 6 0
+ecom: 
+= ref Localenv 10 1
+  name e ref Localenv 0 0
+  * ref Localenv 8 0
+    + int 15 1
+      name e ref Localenv 0 0
+      const pushed (8) int 6 0
+ecom: 
+* ref Localenv 8 0
+  + int 15 1
+    name e ref Localenv 0 0
+    const pushed (8) int 6 0
+ecom to: 
+name e ref Localenv 0 0
+ecom: 
+= int 10 1
+  name i int 0 0
+  const (0) int 6 0
+ecom: 
+const (0) int 6 0
+ecom to: 
+name i int 0 0
+ecom: 
+= list of ref Var 10 1
+  name vl list of ref Var 0 0
+  * list of ref Var 10 1
+    indx big 10 1
+      name t array of list of ref Var 0 0
+      name i int 0 0
+ecom: 
+* list of ref Var 10 1
+  indx big 10 1
+    name t array of list of ref Var 0 0
+    name i int 0 0
+ecom to: 
+name vl list of ref Var 0 0
+eacom: 
+* list of ref Var 10 1
+  indx big 10 1
+    name t array of list of ref Var 0 0
+    name i int 0 0
+generate desc for big
+ecom: 
+indx big 10 1
+  name t array of list of ref Var 0 0
+  name i int 0 0
+ecom to: 
+name .b178 big 0 0
+ecom: 
+= ref Var 10 1
+  name v ref Var 0 0
+  hd ref Var 10 1
+    name vl list of ref Var 0 0
+ecom: 
+hd ref Var 10 1
+  name vl list of ref Var 0 0
+ecom to: 
+name v ref Var 0 0
+ecom: 
+= list of (string, list of ref Listnode) 10 1
+  name l list of (string, list of ref Listnode) 0 0
+  :: list of (string, list of ref Listnode) 10 1
+    tuple (string, list of ref Listnode) 10 1
+      seq no type 10 1
+        * string 8 0
+          name v ref Var 0 0
+        seq no type 10 1
+          * list of ref Listnode 8 0
+            + int 15 1
+              name v ref Var 0 0
+              const val (8) int 6 0
+    name l list of (string, list of ref Listnode) 0 0
+ecom: 
+:: list of (string, list of ref Listnode) 10 1
+  tuple (string, list of ref Listnode) 10 1
+    seq no type 10 1
+      * string 8 0
+        name v ref Var 0 0
+      seq no type 10 1
+        * list of ref Listnode 8 0
+          + int 15 1
+            name v ref Var 0 0
+            const val (8) int 6 0
+  name l list of (string, list of ref Listnode) 0 0
+ecom to: 
+name l list of (string, list of ref Listnode) 0 0
+eacom: 
+tuple (string, list of ref Listnode) 10 1
+  seq no type 10 1
+    * string 8 0
+      name v ref Var 0 0
+    seq no type 10 1
+      * list of ref Listnode 8 0
+        + int 15 1
+          name v ref Var 0 0
+          const val (8) int 6 0
+generate desc for (string, list of ref Listnode)
+descmap adt offset 0
+descmap offset 0
+descmap t0 type string offset 0 (d->offset=0 start=0) returns 0
+descmap t1 type list of ref Listnode offset 8 (d->offset=8 start=0) returns 8
+generate desc for (string, list of ref Listnode)
+	desc	$-1,16,"c0"
+ecom: 
+tuple (string, list of ref Listnode) 10 1
+  seq no type 10 1
+    * string 8 0
+      name v ref Var 0 0
+    seq no type 10 1
+      * list of ref Listnode 8 0
+        + int 15 1
+          name v ref Var 0 0
+          const val (8) int 6 0
+ecom to: 
+name .b179 (string, list of ref Listnode) 0 0
+ecom: 
+* string 8 0
+  name v ref Var 0 0
+ecom to: 
+* string 0 0
+  + int 13 1
+    adr int 13 1
+      name .b179 (string, list of ref Listnode) 0 0
+    const (0) int 6 0
+ecom: 
+* list of ref Listnode 8 0
+  + int 15 1
+    name v ref Var 0 0
+    const val (8) int 6 0
+ecom to: 
+* list of ref Listnode 0 0
+  + int 13 1
+    adr int 13 1
+      name .b179 (string, list of ref Listnode) 0 0
+    const (8) int 6 0
+generate desc for (string, list of ref Listnode)
+ecom: 
+= string 10 1
+  * string 0 0
+    adr int 13 1
+      name .b179 (string, list of ref Listnode) 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+* string 0 0
+  adr int 13 1
+    name .b179 (string, list of ref Listnode) 0 0
+ecom: 
+= list of ref Listnode 10 1
+  * list of ref Listnode 0 0
+    + int 13 1
+      adr int 13 1
+        name .b179 (string, list of ref Listnode) 0 0
+      const t1 (8) int 6 0
+  name nil list of ref Listnode 1 0
+ecom: 
+name nil list of ref Listnode 1 0
+ecom to: 
+* list of ref Listnode 0 0
+  + int 13 1
+    adr int 13 1
+      name .b179 (string, list of ref Listnode) 0 0
+    const t1 (8) int 6 0
+ecom: 
+= ref Var 10 1
+  name v ref Var 0 0
+  name nil ref Var 1 0
+ecom: 
+name nil ref Var 1 0
+ecom to: 
+name v ref Var 0 0
+ecom: 
+= list of ref Var 10 1
+  name vl list of ref Var 0 0
+  tl list of ref Var 10 1
+    name vl list of ref Var 0 0
+ecom: 
+tl list of ref Var 10 1
+  name vl list of ref Var 0 0
+ecom to: 
+name vl list of ref Var 0 0
+ecom: 
+= list of ref Var 10 1
+  name vl list of ref Var 0 0
+  name nil list of ref Var 1 0
+ecom: 
+name nil list of ref Var 1 0
+ecom to: 
+name vl list of ref Var 0 0
+ecom: 
+++ int 10 1
+  name i int 0 0
+  const (1) int 6 0
+ecom: 
+name l list of (string, list of ref Listnode) 0 0
+ecom to: 
+* list of (string, list of ref Listnode) 8 0
+  name .ret int 0 0
+fn: envlist
+64: argument ctxt ref Context ref 1
+72: local i int ref 4
+76: local idx int ref 3
+80: local .t177 int ref 1
+88: local e ref Localenv ref 7
+96: local .b178 big ref 5
+104: local vl list of ref Var ref 5
+112: local vl list of ref Var ref 5
+120: local t array of list of ref Var ref 4
+128: local v ref Var ref 4
+136: local l list of (string, list of ref Listnode) ref 3
+144: local v ref Var ref 3
+152: local .t176 ref Environment ref 1
+160: local .b179 (string, list of ref Listnode) ref 1
+76: local i int ref 4
+generate desc for Context.envlist
+descmap offset 0
+descmap ctxt type ref Context offset 64 (d->offset=64 start=0) returns 64
+descmap i type int offset 72 (d->offset=72 start=0) returns -1
+descmap idx type int offset 76 (d->offset=76 start=0) returns -1
+descmap .t177 type int offset 80 (d->offset=80 start=0) returns -1
+descmap e type ref Localenv offset 88 (d->offset=88 start=0) returns 88
+descmap .b178 type big offset 96 (d->offset=96 start=0) returns -1
+descmap vl type list of ref Var offset 104 (d->offset=104 start=0) returns 104
+descmap vl type list of ref Var offset 112 (d->offset=112 start=0) returns 112
+descmap t type array of list of ref Var offset 120 (d->offset=120 start=0) returns 120
+descmap v type ref Var offset 128 (d->offset=128 start=0) returns 128
+descmap l type list of (string, list of ref Listnode) offset 136 (d->offset=136 start=0) returns 136
+descmap v type ref Var offset 144 (d->offset=144 start=0) returns 144
+descmap .t176 type ref Environment offset 152 (d->offset=152 start=0) returns 152
+descmap adt offset 160
+descmap offset 160
+descmap t0 type string offset 160 (d->offset=0 start=160) returns 160
+descmap t1 type list of ref Listnode offset 168 (d->offset=8 start=160) returns 168
+descmap .b179 type (string, list of ref Listnode) offset 160 (d->offset=160 start=0) returns 168
+fncom: setlocal 8 4bad90
+ecom: 
+= ref Localenv 10 1
+  name e ref Localenv 0 0
+  * ref Localenv 10 1
+    + int 10 1
+      * ref Environment 8 0
+        name ctxt ref Context 0 0
+      const localenv (24) int 6 0
+ecom: 
+* ref Localenv 10 1
+  + int 10 1
+    * ref Environment 8 0
+      name ctxt ref Context 0 0
+    const localenv (24) int 6 0
+ecom to: 
+name e ref Localenv 0 0
+eacom: 
+* ref Localenv 10 1
+  + int 10 1
+    * ref Environment 8 0
+      name ctxt ref Context 0 0
+    const localenv (24) int 6 0
+ecom: 
+* ref Environment 8 0
+  name ctxt ref Context 0 0
+ecom to: 
+name .t180 ref Environment 0 0
+ecom: 
+= ref Environment 10 1
+  name .t180 ref Environment 0 0
+  name nil ref Environment 1 0
+ecom: 
+name nil ref Environment 1 0
+ecom to: 
+name .t180 ref Environment 0 0
+ecom: 
+= int 10 2
+  name idx int 0 0
+  call int 10 2
+    name hashfn fn(s: string, n: int): int 11 1
+    seq no type 10 1
+      name name string 0 0
+      seq no type 10 1
+        len int 10 1
+          * array of list of ref Var 8 0
+            name e ref Localenv 0 0
+ecom: 
+call int 10 2
+  name hashfn fn(s: string, n: int): int 11 1
+  seq no type 10 1
+    name name string 0 0
+    seq no type 10 1
+      len int 10 1
+        * array of list of ref Var 8 0
+          name e ref Localenv 0 0
+ecom to: 
+name idx int 0 0
+generate desc for big
+ecom: 
+name name string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b181 big 0 0
+    const (64) int 6 0
+ecom: 
+len int 10 1
+  * array of list of ref Var 8 0
+    name e ref Localenv 0 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b181 big 0 0
+    const (72) int 6 0
+ecom: 
+= ref Var 10 2
+  name v ref Var 0 0
+  call ref Var 10 2
+    name hashfind fn(ht: array of list of ref Var, idx: int, n: string): ref Var 11 1
+    seq no type 10 1
+      * array of list of ref Var 8 0
+        name e ref Localenv 0 0
+      seq no type 10 1
+        name idx int 0 0
+        seq no type 10 1
+          name name string 0 0
+ecom: 
+call ref Var 10 2
+  name hashfind fn(ht: array of list of ref Var, idx: int, n: string): ref Var 11 1
+  seq no type 10 1
+    * array of list of ref Var 8 0
+      name e ref Localenv 0 0
+    seq no type 10 1
+      name idx int 0 0
+      seq no type 10 1
+        name name string 0 0
+ecom to: 
+name v ref Var 0 0
+generate desc for big
+ecom: 
+* array of list of ref Var 8 0
+  name e ref Localenv 0 0
+ecom to: 
+* array of list of ref Var 8 0
+  + int 15 0
+    name .b181 big 0 0
+    const (64) int 6 0
+ecom: 
+name idx int 0 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b181 big 0 0
+    const (72) int 6 0
+ecom: 
+name name string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b181 big 0 0
+    const (80) int 6 0
+ecom: 
+= int 10 1
+  name flags int 0 0
+  const CHANGED (1) int 6 0
+ecom: 
+const CHANGED (1) int 6 0
+ecom to: 
+name flags int 0 0
+eacom: 
+call int 10 2
+  name noexport fn(name: string): int 11 1
+  seq no type 10 1
+    name name string 0 0
+ecom: 
+call int 10 2
+  name noexport fn(name: string): int 11 1
+  seq no type 10 1
+    name name string 0 0
+ecom to: 
+name .t182 int 0 0
+generate desc for big
+ecom: 
+name name string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b181 big 0 0
+    const (64) int 6 0
+ecom: 
+|= int 10 1
+  name flags int 0 0
+  const NOEXPORT (2) int 6 0
+ecom: 
+call no type 10 2
+  name hashadd fn(ht: array of list of ref Var, idx: int, v: ref Var) 11 1
+  seq no type 10 1
+    * array of list of ref Var 8 0
+      name e ref Localenv 0 0
+    seq no type 10 1
+      name idx int 0 0
+      seq no type 10 1
+        ref ref Var 10 1
+          tuple Var 10 1
+            seq no type 10 1
+              name name string 0 0
+              seq no type 10 1
+                name val list of ref Listnode 0 0
+                seq no type 10 1
+                  name flags int 0 0
+generate desc for big
+ecom: 
+* array of list of ref Var 8 0
+  name e ref Localenv 0 0
+ecom to: 
+* array of list of ref Var 8 0
+  + int 15 0
+    name .b181 big 0 0
+    const (64) int 6 0
+ecom: 
+name idx int 0 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b181 big 0 0
+    const (72) int 6 0
+ecom: 
+ref ref Var 10 1
+  tuple Var 10 1
+    seq no type 10 1
+      name name string 0 0
+      seq no type 10 1
+        name val list of ref Listnode 0 0
+        seq no type 10 1
+          name flags int 0 0
+ecom to: 
+* ref Var 8 0
+  + int 15 0
+    name .b181 big 0 0
+    const (80) int 6 0
+generate desc for Var
+ecom: 
+tuple Var 10 1
+  seq no type 10 1
+    name name string 0 0
+    seq no type 10 1
+      name val list of ref Listnode 0 0
+      seq no type 10 1
+        name flags int 0 0
+ecom to: 
+* Var 8 0
+  name .t180 ref Var 0 0
+ecom: 
+name name string 0 0
+ecom to: 
+* string 8 0
+  + int 15 1
+    adr int 15 1
+      * Var 8 0
+        name .t180 ref Var 0 0
+    const (0) int 6 0
+ecom: 
+name val list of ref Listnode 0 0
+ecom to: 
+* list of ref Listnode 8 0
+  + int 15 1
+    adr int 15 1
+      * Var 8 0
+        name .t180 ref Var 0 0
+    const (8) int 6 0
+ecom: 
+name flags int 0 0
+ecom to: 
+* int 8 0
+  + int 15 1
+    adr int 15 1
+      * Var 8 0
+        name .t180 ref Var 0 0
+    const (16) int 6 0
+ecom: 
+= ref Var 10 1
+  name .t180 ref Var 0 0
+  name nil ref Var 1 0
+ecom: 
+name nil ref Var 1 0
+ecom to: 
+name .t180 ref Var 0 0
+ecom: 
+= list of ref Listnode 10 1
+  * list of ref Listnode 8 0
+    + int 15 1
+      name v ref Var 0 0
+      const val (8) int 6 0
+  name val list of ref Listnode 0 0
+ecom: 
+name val list of ref Listnode 0 0
+ecom to: 
+* list of ref Listnode 8 0
+  + int 15 1
+    name v ref Var 0 0
+    const val (8) int 6 0
+ecom: 
+|= int 10 1
+  * int 8 0
+    + int 15 1
+      name v ref Var 0 0
+      const flags (16) int 6 0
+  const CHANGED (1) int 6 0
+fn: setlocal
+64: argument ctxt ref Context ref 1
+72: argument name string ref 4
+80: argument val list of ref Listnode ref 2
+88: local flags int ref 3
+92: local idx int ref 3
+96: local .t182 int ref 1
+104: local .b181 big ref 4
+112: local e ref Localenv ref 4
+120: local v ref Var ref 4
+128: local .t180 ref Environment ref 1
+generate desc for Context.setlocal
+descmap offset 0
+descmap ctxt type ref Context offset 64 (d->offset=64 start=0) returns 64
+descmap name type string offset 72 (d->offset=72 start=0) returns 72
+descmap val type list of ref Listnode offset 80 (d->offset=80 start=0) returns 80
+descmap flags type int offset 88 (d->offset=88 start=0) returns -1
+descmap idx type int offset 92 (d->offset=92 start=0) returns -1
+descmap .t182 type int offset 96 (d->offset=96 start=0) returns -1
+descmap .b181 type big offset 104 (d->offset=104 start=0) returns -1
+descmap e type ref Localenv offset 112 (d->offset=112 start=0) returns 112
+descmap v type ref Var offset 120 (d->offset=120 start=0) returns 120
+descmap .t180 type ref Environment offset 128 (d->offset=128 start=0) returns 128
+fncom: push 5 4bc050
+ecom: 
+= ref Localenv 10 2
+  * ref Localenv 10 1
+    + int 10 1
+      * ref Environment 8 0
+        name ctxt ref Context 0 0
+      const localenv (24) int 6 0
+  call ref Localenv 10 2
+    name newlocalenv fn(pushed: ref Localenv): ref Localenv 11 1
+    seq no type 10 1
+      * ref Localenv 10 1
+        + int 10 1
+          * ref Environment 8 0
+            name ctxt ref Context 0 0
+          const localenv (24) int 6 0
+eacom: 
+* ref Localenv 10 1
+  + int 10 1
+    * ref Environment 8 0
+      name ctxt ref Context 0 0
+    const localenv (24) int 6 0
+ecom: 
+* ref Environment 8 0
+  name ctxt ref Context 0 0
+ecom to: 
+name .t183 ref Environment 0 0
+ecom: 
+call ref Localenv 10 2
+  name newlocalenv fn(pushed: ref Localenv): ref Localenv 11 1
+  seq no type 10 1
+    * ref Localenv 10 1
+      + int 10 1
+        * ref Environment 8 0
+          name ctxt ref Context 0 0
+        const localenv (24) int 6 0
+ecom to: 
+* ref Localenv 8 1
+  + int 15 1
+    name .t183 ref Environment 0 0
+    const localenv (24) int 6 0
+generate desc for big
+ecom: 
+* ref Localenv 10 1
+  + int 10 1
+    * ref Environment 8 0
+      name ctxt ref Context 0 0
+    const localenv (24) int 6 0
+ecom to: 
+* ref Localenv 8 0
+  + int 15 0
+    name .b184 big 0 0
+    const (64) int 6 0
+eacom: 
+* ref Localenv 10 1
+  + int 10 1
+    * ref Environment 8 0
+      name ctxt ref Context 0 0
+    const localenv (24) int 6 0
+ecom: 
+* ref Environment 8 0
+  name ctxt ref Context 0 0
+ecom to: 
+name .t185 ref Environment 0 0
+ecom: 
+= ref Environment 10 1
+  name .t185 ref Environment 0 0
+  name nil ref Environment 1 0
+ecom: 
+name nil ref Environment 1 0
+ecom to: 
+name .t185 ref Environment 0 0
+ecom: 
+= ref Environment 10 1
+  name .t183 ref Environment 0 0
+  name nil ref Environment 1 0
+ecom: 
+name nil ref Environment 1 0
+ecom to: 
+name .t183 ref Environment 0 0
+fn: push
+64: argument ctxt ref Context ref 2
+72: local .b184 big ref 1
+80: local .t183 ref Environment ref 1
+88: local .t185 ref Environment ref 1
+generate desc for Context.push
+descmap offset 0
+descmap ctxt type ref Context offset 64 (d->offset=64 start=0) returns 64
+descmap .b184 type big offset 72 (d->offset=72 start=0) returns -1
+descmap .t183 type ref Environment offset 80 (d->offset=80 start=0) returns 80
+descmap .t185 type ref Environment offset 88 (d->offset=88 start=0) returns 88
+fncom: pop 8 4bc510
+eacom: 
+* ref Localenv 10 1
+  + int 10 1
+    * ref Localenv 10 1
+      + int 10 1
+        * ref Environment 8 0
+          name ctxt ref Context 0 0
+        const localenv (24) int 6 0
+    const pushed (8) int 6 0
+ecom: 
+* ref Localenv 10 1
+  + int 10 1
+    * ref Environment 8 0
+      name ctxt ref Context 0 0
+    const localenv (24) int 6 0
+ecom to: 
+name .t186 ref Localenv 0 0
+eacom: 
+* ref Localenv 10 1
+  + int 10 1
+    * ref Environment 8 0
+      name ctxt ref Context 0 0
+    const localenv (24) int 6 0
+ecom: 
+* ref Environment 8 0
+  name ctxt ref Context 0 0
+ecom to: 
+name .t186 ref Environment 0 0
+ecom: 
+= ref Localenv 10 1
+  name .t186 ref Localenv 0 0
+  name nil ref Localenv 1 0
+ecom: 
+name nil ref Localenv 1 0
+ecom to: 
+name .t186 ref Localenv 0 0
+ecom: 
+call no type 10 2
+  name panic fn(s: string) 11 1
+  seq no type 10 1
+    const unbalanced contexts in shell environment string 1 0
+generate desc for big
+ecom: 
+const unbalanced contexts in shell environment string 1 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b187 big 0 0
+    const (64) int 6 0
+ecom: 
+= array of list of ref Var 10 1
+  name oldv array of list of ref Var 0 0
+  * array of list of ref Var 10 1
+    * ref Localenv 10 1
+      + int 10 1
+        * ref Environment 8 0
+          name ctxt ref Context 0 0
+        const localenv (24) int 6 0
+ecom: 
+* array of list of ref Var 10 1
+  * ref Localenv 10 1
+    + int 10 1
+      * ref Environment 8 0
+        name ctxt ref Context 0 0
+      const localenv (24) int 6 0
+ecom to: 
+name oldv array of list of ref Var 0 0
+eacom: 
+* array of list of ref Var 10 1
+  * ref Localenv 10 1
+    + int 10 1
+      * ref Environment 8 0
+        name ctxt ref Context 0 0
+      const localenv (24) int 6 0
+ecom: 
+* ref Localenv 10 1
+  + int 10 1
+    * ref Environment 8 0
+      name ctxt ref Context 0 0
+    const localenv (24) int 6 0
+ecom to: 
+name .t186 ref Localenv 0 0
+eacom: 
+* ref Localenv 10 1
+  + int 10 1
+    * ref Environment 8 0
+      name ctxt ref Context 0 0
+    const localenv (24) int 6 0
+ecom: 
+* ref Environment 8 0
+  name ctxt ref Context 0 0
+ecom to: 
+name .t186 ref Environment 0 0
+ecom: 
+= ref Localenv 10 1
+  name .t186 ref Localenv 0 0
+  name nil ref Localenv 1 0
+ecom: 
+name nil ref Localenv 1 0
+ecom to: 
+name .t186 ref Localenv 0 0
+ecom: 
+= ref Localenv 10 2
+  * ref Localenv 10 1
+    + int 10 1
+      * ref Environment 8 0
+        name ctxt ref Context 0 0
+      const localenv (24) int 6 0
+  * ref Localenv 10 1
+    + int 10 1
+      * ref Localenv 10 1
+        + int 10 1
+          * ref Environment 8 0
+            name ctxt ref Context 0 0
+          const localenv (24) int 6 0
+      const pushed (8) int 6 0
+eacom: 
+* ref Localenv 10 1
+  + int 10 1
+    * ref Environment 8 0
+      name ctxt ref Context 0 0
+    const localenv (24) int 6 0
+ecom: 
+* ref Environment 8 0
+  name ctxt ref Context 0 0
+ecom to: 
+name .t186 ref Environment 0 0
+ecom: 
+* ref Localenv 10 1
+  + int 10 1
+    * ref Localenv 10 1
+      + int 10 1
+        * ref Environment 8 0
+          name ctxt ref Context 0 0
+        const localenv (24) int 6 0
+    const pushed (8) int 6 0
+ecom to: 
+* ref Localenv 8 1
+  + int 15 1
+    name .t186 ref Environment 0 0
+    const localenv (24) int 6 0
+eacom: 
+* ref Localenv 10 1
+  + int 10 1
+    * ref Localenv 10 1
+      + int 10 1
+        * ref Environment 8 0
+          name ctxt ref Context 0 0
+        const localenv (24) int 6 0
+    const pushed (8) int 6 0
+ecom: 
+* ref Localenv 10 1
+  + int 10 1
+    * ref Environment 8 0
+      name ctxt ref Context 0 0
+    const localenv (24) int 6 0
+ecom to: 
+name .t188 ref Localenv 0 0
+eacom: 
+* ref Localenv 10 1
+  + int 10 1
+    * ref Environment 8 0
+      name ctxt ref Context 0 0
+    const localenv (24) int 6 0
+ecom: 
+* ref Environment 8 0
+  name ctxt ref Context 0 0
+ecom to: 
+name .t188 ref Environment 0 0
+ecom: 
+= ref Localenv 10 1
+  name .t188 ref Localenv 0 0
+  name nil ref Localenv 1 0
+ecom: 
+name nil ref Localenv 1 0
+ecom to: 
+name .t188 ref Localenv 0 0
+ecom: 
+= ref Environment 10 1
+  name .t186 ref Environment 0 0
+  name nil ref Environment 1 0
+ecom: 
+name nil ref Environment 1 0
+ecom to: 
+name .t186 ref Environment 0 0
+ecom: 
+= int 10 1
+  name i int 0 0
+  const (0) int 6 0
+ecom: 
+const (0) int 6 0
+ecom to: 
+name i int 0 0
+eacom: 
+len int 10 1
+  name oldv array of list of ref Var 0 0
+ecom: 
+len int 10 1
+  name oldv array of list of ref Var 0 0
+ecom to: 
+name .t189 int 0 0
+ecom: 
+= list of ref Var 10 1
+  name vl list of ref Var 0 0
+  * list of ref Var 10 1
+    indx big 10 1
+      name oldv array of list of ref Var 0 0
+      name i int 0 0
+ecom: 
+* list of ref Var 10 1
+  indx big 10 1
+    name oldv array of list of ref Var 0 0
+    name i int 0 0
+ecom to: 
+name vl list of ref Var 0 0
+eacom: 
+* list of ref Var 10 1
+  indx big 10 1
+    name oldv array of list of ref Var 0 0
+    name i int 0 0
+generate desc for big
+ecom: 
+indx big 10 1
+  name oldv array of list of ref Var 0 0
+  name i int 0 0
+ecom to: 
+name .b187 big 0 0
+eacom: 
+= ref Var 10 2
+  name v ref Var 0 0
+  call ref Var 10 2
+    name varfind fn(e: ref Localenv, name: string): ref Var 11 1
+    seq no type 10 2
+      * ref Localenv 10 1
+        + int 10 1
+          * ref Environment 8 0
+            name ctxt ref Context 0 0
+          const localenv (24) int 6 0
+      seq no type 10 1
+        * string 10 1
+          hd ref Var 10 1
+            name vl list of ref Var 0 0
+ecom: 
+= ref Var 10 2
+  name v ref Var 0 0
+  call ref Var 10 2
+    name varfind fn(e: ref Localenv, name: string): ref Var 11 1
+    seq no type 10 2
+      * ref Localenv 10 1
+        + int 10 1
+          * ref Environment 8 0
+            name ctxt ref Context 0 0
+          const localenv (24) int 6 0
+      seq no type 10 1
+        * string 10 1
+          hd ref Var 10 1
+            name vl list of ref Var 0 0
+ecom to: 
+name .t188 ref Var 0 0
+ecom: 
+call ref Var 10 2
+  name varfind fn(e: ref Localenv, name: string): ref Var 11 1
+  seq no type 10 2
+    * ref Localenv 10 1
+      + int 10 1
+        * ref Environment 8 0
+          name ctxt ref Context 0 0
+        const localenv (24) int 6 0
+    seq no type 10 1
+      * string 10 1
+        hd ref Var 10 1
+          name vl list of ref Var 0 0
+ecom to: 
+name v ref Var 0 0
+generate desc for big
+ecom: 
+* ref Localenv 10 1
+  + int 10 1
+    * ref Environment 8 0
+      name ctxt ref Context 0 0
+    const localenv (24) int 6 0
+ecom to: 
+* ref Localenv 8 0
+  + int 15 0
+    name .b187 big 0 0
+    const (64) int 6 0
+eacom: 
+* ref Localenv 10 1
+  + int 10 1
+    * ref Environment 8 0
+      name ctxt ref Context 0 0
+    const localenv (24) int 6 0
+ecom: 
+* ref Environment 8 0
+  name ctxt ref Context 0 0
+ecom to: 
+name .t186 ref Environment 0 0
+ecom: 
+= ref Environment 10 1
+  name .t186 ref Environment 0 0
+  name nil ref Environment 1 0
+ecom: 
+name nil ref Environment 1 0
+ecom to: 
+name .t186 ref Environment 0 0
+ecom: 
+* string 10 1
+  hd ref Var 10 1
+    name vl list of ref Var 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b187 big 0 0
+    const (72) int 6 0
+eacom: 
+* string 10 1
+  hd ref Var 10 1
+    name vl list of ref Var 0 0
+ecom: 
+hd ref Var 10 1
+  name vl list of ref Var 0 0
+ecom to: 
+name .t186 ref Var 0 0
+ecom: 
+= ref Var 10 1
+  name .t186 ref Var 0 0
+  name nil ref Var 1 0
+ecom: 
+name nil ref Var 1 0
+ecom to: 
+name .t186 ref Var 0 0
+ecom: 
+= ref Var 10 1
+  name .t188 ref Var 0 0
+  name nil ref Var 1 0
+ecom: 
+name nil ref Var 1 0
+ecom to: 
+name .t188 ref Var 0 0
+ecom: 
+|= int 10 1
+  * int 8 0
+    + int 15 1
+      name v ref Var 0 0
+      const flags (16) int 6 0
+  const CHANGED (1) int 6 0
+ecom: 
+call no type 10 2
+  name set fn(ctxt: self ref Context, name: string, val: list of ref Listnode) 11 1
+  seq nothing 10 2
+    name ctxt ref Context 0 0
+    seq no type 10 2
+      * string 10 1
+        hd ref Var 10 1
+          name vl list of ref Var 0 0
+      seq no type 10 1
+        name nil list of ref Listnode 1 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b187 big 0 0
+    const (64) int 6 0
+ecom: 
+* string 10 1
+  hd ref Var 10 1
+    name vl list of ref Var 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b187 big 0 0
+    const (72) int 6 0
+eacom: 
+* string 10 1
+  hd ref Var 10 1
+    name vl list of ref Var 0 0
+ecom: 
+hd ref Var 10 1
+  name vl list of ref Var 0 0
+ecom to: 
+name .t188 ref Var 0 0
+ecom: 
+= ref Var 10 1
+  name .t188 ref Var 0 0
+  name nil ref Var 1 0
+ecom: 
+name nil ref Var 1 0
+ecom to: 
+name .t188 ref Var 0 0
+ecom: 
+name nil list of ref Listnode 1 0
+ecom to: 
+* list of ref Listnode 8 0
+  + int 15 0
+    name .b187 big 0 0
+    const (80) int 6 0
+ecom: 
+= ref Var 10 1
+  name v ref Var 0 0
+  name nil ref Var 1 0
+ecom: 
+name nil ref Var 1 0
+ecom to: 
+name v ref Var 0 0
+ecom: 
+= list of ref Var 10 1
+  name vl list of ref Var 0 0
+  tl list of ref Var 10 1
+    name vl list of ref Var 0 0
+ecom: 
+tl list of ref Var 10 1
+  name vl list of ref Var 0 0
+ecom to: 
+name vl list of ref Var 0 0
+ecom: 
+= list of ref Var 10 1
+  name vl list of ref Var 0 0
+  name nil list of ref Var 1 0
+ecom: 
+name nil list of ref Var 1 0
+ecom to: 
+name vl list of ref Var 0 0
+ecom: 
+++ int 10 1
+  name i int 0 0
+  const (1) int 6 0
+ecom: 
+= array of list of ref Var 10 1
+  name oldv array of list of ref Var 0 0
+  name nil array of list of ref Var 1 0
+ecom: 
+name nil array of list of ref Var 1 0
+ecom to: 
+name oldv array of list of ref Var 0 0
+fn: pop
+64: argument ctxt ref Context ref 6
+72: local i int ref 4
+76: local .t189 int ref 1
+80: local vl list of ref Var ref 6
+88: local .b187 big ref 4
+96: local oldv array of list of ref Var ref 3
+104: local v ref Var ref 2
+112: local .t186 ref Localenv ref 1
+120: local .t188 ref Localenv ref 1
+generate desc for Context.pop
+descmap offset 0
+descmap ctxt type ref Context offset 64 (d->offset=64 start=0) returns 64
+descmap i type int offset 72 (d->offset=72 start=0) returns -1
+descmap .t189 type int offset 76 (d->offset=76 start=0) returns -1
+descmap vl type list of ref Var offset 80 (d->offset=80 start=0) returns 80
+descmap .b187 type big offset 88 (d->offset=88 start=0) returns -1
+descmap oldv type array of list of ref Var offset 96 (d->offset=96 start=0) returns 96
+descmap v type ref Var offset 104 (d->offset=104 start=0) returns 104
+descmap .t186 type ref Localenv offset 112 (d->offset=112 start=0) returns 112
+descmap .t188 type ref Localenv offset 120 (d->offset=120 start=0) returns 120
+fncom: run 7 4bd140
+eacom: 
+* ref Node 10 1
+  hd ref Listnode 10 1
+    name args list of ref Listnode 0 0
+ecom: 
+hd ref Listnode 10 1
+  name args list of ref Listnode 0 0
+ecom to: 
+name .t190 ref Listnode 0 0
+ecom: 
+= ref Listnode 10 1
+  name .t190 ref Listnode 0 0
+  name nil ref Listnode 1 0
+ecom: 
+name nil ref Listnode 1 0
+ecom to: 
+name .t190 ref Listnode 0 0
+eacom: 
+* string 10 1
+  + int 10 1
+    hd ref Listnode 10 1
+      name args list of ref Listnode 0 0
+    const word (8) int 6 0
+ecom: 
+hd ref Listnode 10 1
+  name args list of ref Listnode 0 0
+ecom to: 
+name .t190 ref Listnode 0 0
+ecom: 
+= ref Listnode 10 1
+  name .t190 ref Listnode 0 0
+  name nil ref Listnode 1 0
+ecom: 
+name nil ref Listnode 1 0
+ecom to: 
+name .t190 ref Listnode 0 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* polymorphic type 8 0
+  name .ret int 0 0
+ecom: 
+= ref Listnode 10 1
+  name cmd ref Listnode 0 0
+  hd ref Listnode 10 1
+    name args list of ref Listnode 0 0
+ecom: 
+hd ref Listnode 10 1
+  name args list of ref Listnode 0 0
+ecom to: 
+name cmd ref Listnode 0 0
+eacom: 
+inds int 10 1
+  * string 8 0
+    + int 15 1
+      name cmd ref Listnode 0 0
+      const word (8) int 6 0
+  const (0) int 6 0
+ecom: 
+inds int 10 1
+  * string 8 0
+    + int 15 1
+      name cmd ref Listnode 0 0
+      const word (8) int 6 0
+  const (0) int 6 0
+ecom to: 
+name .t191 int 0 0
+ecom: 
+call string 10 2
+  name runblock fn(ctxt: ref Context, args: list of ref Listnode, last: int): string 11 1
+  seq no type 10 1
+    name ctxt ref Context 0 0
+    seq no type 10 1
+      name args list of ref Listnode 0 0
+      seq no type 10 1
+        name last int 0 0
+ecom to: 
+* string 8 0
+  name .ret int 0 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b192 big 0 0
+    const (64) int 6 0
+ecom: 
+name args list of ref Listnode 0 0
+ecom to: 
+* list of ref Listnode 8 0
+  + int 15 0
+    name .b192 big 0 0
+    const (72) int 6 0
+ecom: 
+name last int 0 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b192 big 0 0
+    const (80) int 6 0
+eacom: 
+& int 10 1
+  * int 10 1
+    + int 10 1
+      * ref Localenv 10 1
+        + int 10 1
+          * ref Environment 8 0
+            name ctxt ref Context 0 0
+          const localenv (24) int 6 0
+      const flags (16) int 6 0
+  const EXECPRINT (4) int 6 0
+ecom: 
+& int 10 1
+  * int 10 1
+    + int 10 1
+      * ref Localenv 10 1
+        + int 10 1
+          * ref Environment 8 0
+            name ctxt ref Context 0 0
+          const localenv (24) int 6 0
+      const flags (16) int 6 0
+  const EXECPRINT (4) int 6 0
+ecom to: 
+name .t191 int 0 0
+eacom: 
+* int 10 1
+  + int 10 1
+    * ref Localenv 10 1
+      + int 10 1
+        * ref Environment 8 0
+          name ctxt ref Context 0 0
+        const localenv (24) int 6 0
+    const flags (16) int 6 0
+ecom: 
+* ref Localenv 10 1
+  + int 10 1
+    * ref Environment 8 0
+      name ctxt ref Context 0 0
+    const localenv (24) int 6 0
+ecom to: 
+name .t190 ref Localenv 0 0
+eacom: 
+* ref Localenv 10 1
+  + int 10 1
+    * ref Environment 8 0
+      name ctxt ref Context 0 0
+    const localenv (24) int 6 0
+ecom: 
+* ref Environment 8 0
+  name ctxt ref Context 0 0
+ecom to: 
+name .t190 ref Environment 0 0
+ecom: 
+= ref Localenv 10 1
+  name .t190 ref Localenv 0 0
+  name nil ref Localenv 1 0
+ecom: 
+name nil ref Localenv 1 0
+ecom to: 
+name .t190 ref Localenv 0 0
+ecom: 
+used int 10 3
+  call int 10 3
+    -> fn(fd: ref Sys->FD, s: string, nil: string, *): int 12 1
+      name sys Sys 1 0
+      name fprint nothing 11 1
+    seq no type 10 3
+      call ref Sys->FD 10 2
+        -> fn(fd: int): ref Sys->FD 12 1
+          name sys Sys 1 0
+          name fildes nothing 11 1
+        seq no type 10 1
+          const (2) int 6 0
+      seq no type 10 2
+        const %s
+ string 1 0
+        seq no type 10 2
+          call string 10 2
+            name quoted fn(val: list of ref Listnode, quoteblocks: int): string 11 1
+            seq no type 10 1
+              name args list of ref Listnode 0 0
+              seq no type 10 1
+                const (0) int 6 0
+ecom: 
+call int 10 3
+  -> fn(fd: ref Sys->FD, s: string, nil: string, *): int 12 1
+    name sys Sys 1 0
+    name fprint nothing 11 1
+  seq no type 10 3
+    call ref Sys->FD 10 2
+      -> fn(fd: int): ref Sys->FD 12 1
+        name sys Sys 1 0
+        name fildes nothing 11 1
+      seq no type 10 1
+        const (2) int 6 0
+    seq no type 10 2
+      const %s
+ string 1 0
+      seq no type 10 2
+        call string 10 2
+          name quoted fn(val: list of ref Listnode, quoteblocks: int): string 11 1
+          seq no type 10 1
+            name args list of ref Listnode 0 0
+            seq no type 10 1
+              const (0) int 6 0
+ecom to: 
+name .t191 int 0 0
+generate desc for Sys->fprint
+descmap offset 0
+descmap fd type ref Sys->FD offset 64 (d->offset=64 start=0) returns 64
+descmap s type string offset 72 (d->offset=72 start=0) returns 72
+descmap type string offset 80 returns 80
+generate desc for big
+ecom: 
+call ref Sys->FD 10 2
+  -> fn(fd: int): ref Sys->FD 12 1
+    name sys Sys 1 0
+    name fildes nothing 11 1
+  seq no type 10 1
+    const (2) int 6 0
+ecom to: 
+name .t190 ref Sys->FD 0 0
+generate desc for big
+ecom: 
+const (2) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b193 big 0 0
+    const (64) int 6 0
+ecom: 
+call string 10 2
+  name quoted fn(val: list of ref Listnode, quoteblocks: int): string 11 1
+  seq no type 10 1
+    name args list of ref Listnode 0 0
+    seq no type 10 1
+      const (0) int 6 0
+ecom to: 
+name .t194 string 0 0
+generate desc for big
+ecom: 
+name args list of ref Listnode 0 0
+ecom to: 
+* list of ref Listnode 8 0
+  + int 15 0
+    name .b193 big 0 0
+    const (64) int 6 0
+ecom: 
+const (0) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b193 big 0 0
+    const (72) int 6 0
+ecom: 
+name .t190 ref Sys->FD 0 0
+ecom to: 
+* ref Sys->FD 8 0
+  + int 15 0
+    name .b192 big 0 0
+    const (64) int 6 0
+ecom: 
+= ref Sys->FD 10 1
+  name .t190 ref Sys->FD 0 0
+  name nil ref Sys->FD 1 0
+ecom: 
+name nil ref Sys->FD 1 0
+ecom to: 
+name .t190 ref Sys->FD 0 0
+ecom: 
+const %s
+ string 1 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b192 big 0 0
+    const (72) int 6 0
+ecom: 
+name .t194 string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b192 big 0 0
+    const (80) int 6 0
+ecom: 
+= string 10 1
+  name .t194 string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name .t194 string 0 0
+ecom: 
+= (int, string) 10 2
+  tuple (int, string) 10 1
+    seq nothing 10 1
+      name doneit int 0 0
+      seq nothing 10 1
+        name status string 0 0
+  call (int, string) 10 2
+    name trybuiltin fn(ctxt: ref Context, args: list of ref Listnode, lseq: int): (int, string) 11 1
+    seq no type 10 1
+      name ctxt ref Context 0 0
+      seq no type 10 1
+        name args list of ref Listnode 0 0
+        seq no type 10 1
+          name last int 0 0
+ecom: 
+call (int, string) 10 2
+  name trybuiltin fn(ctxt: ref Context, args: list of ref Listnode, lseq: int): (int, string) 11 1
+  seq no type 10 1
+    name ctxt ref Context 0 0
+    seq no type 10 1
+      name args list of ref Listnode 0 0
+      seq no type 10 1
+        name last int 0 0
+ecom to: 
+name doneit (int, string) 0 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b193 big 0 0
+    const (64) int 6 0
+ecom: 
+name args list of ref Listnode 0 0
+ecom to: 
+* list of ref Listnode 8 0
+  + int 15 0
+    name .b193 big 0 0
+    const (72) int 6 0
+ecom: 
+name last int 0 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b193 big 0 0
+    const (80) int 6 0
+ecom: 
+= string 10 2
+  name status string 0 0
+  call string 10 2
+    name runexternal fn(ctxt: ref Context, args: list of ref Listnode, last: int): string 11 1
+    seq no type 10 1
+      name ctxt ref Context 0 0
+      seq no type 10 1
+        name args list of ref Listnode 0 0
+        seq no type 10 1
+          name last int 0 0
+ecom: 
+call string 10 2
+  name runexternal fn(ctxt: ref Context, args: list of ref Listnode, last: int): string 11 1
+  seq no type 10 1
+    name ctxt ref Context 0 0
+    seq no type 10 1
+      name args list of ref Listnode 0 0
+      seq no type 10 1
+        name last int 0 0
+ecom to: 
+name status string 0 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b193 big 0 0
+    const (64) int 6 0
+ecom: 
+name args list of ref Listnode 0 0
+ecom to: 
+* list of ref Listnode 8 0
+  + int 15 0
+    name .b193 big 0 0
+    const (72) int 6 0
+ecom: 
+name last int 0 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b193 big 0 0
+    const (80) int 6 0
+ecom: 
+name status string 0 0
+ecom to: 
+* string 8 0
+  name .ret int 0 0
+fn: run
+64: argument ctxt ref Context ref 5
+72: argument args list of ref Listnode ref 8
+80: argument last int ref 3
+88: local doneit int ref 2
+96: local status string ref 3
+104: local .t191 int ref 1
+112: local .b193 big ref 4
+120: local cmd ref Listnode ref 3
+128: local .b192 big ref 2
+136: local .t190 ref Listnode ref 1
+144: local .t194 string ref 1
+generate desc for Context.run
+descmap offset 0
+descmap ctxt type ref Context offset 64 (d->offset=64 start=0) returns 64
+descmap args type list of ref Listnode offset 72 (d->offset=72 start=0) returns 72
+descmap last type int offset 80 (d->offset=80 start=0) returns -1
+descmap doneit type int offset 88 (d->offset=88 start=0) returns -1
+descmap status type string offset 96 (d->offset=96 start=0) returns 96
+descmap .t191 type int offset 104 (d->offset=104 start=0) returns -1
+descmap .b193 type big offset 112 (d->offset=112 start=0) returns -1
+descmap cmd type ref Listnode offset 120 (d->offset=120 start=0) returns 120
+descmap .b192 type big offset 128 (d->offset=128 start=0) returns -1
+descmap .t190 type ref Listnode offset 136 (d->offset=136 start=0) returns 136
+descmap .t194 type string offset 144 (d->offset=144 start=0) returns 144
+fncom: addmodule 2 4bdb40
+ecom: 
+used string 10 2
+  call string 10 2
+    -> fn(c: ref Context, sh: Sh): string 12 1
+      name mod Shellbuiltin 0 0
+      name initbuiltin nothing 11 1
+    seq no type 10 1
+      name ctxt ref Context 0 0
+      seq no type 10 1
+        name myself Sh 1 0
+ecom: 
+call string 10 2
+  -> fn(c: ref Context, sh: Sh): string 12 1
+    name mod Shellbuiltin 0 0
+    name initbuiltin nothing 11 1
+  seq no type 10 1
+    name ctxt ref Context 0 0
+    seq no type 10 1
+      name myself Sh 1 0
+ecom to: 
+name .t195 string 0 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b196 big 0 0
+    const (64) int 6 0
+ecom: 
+name myself Sh 1 0
+ecom to: 
+* Sh 8 0
+  + int 15 0
+    name .b196 big 0 0
+    const (72) int 6 0
+ecom: 
+= string 10 1
+  name .t195 string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name .t195 string 0 0
+ecom: 
+= list of (string, Shellbuiltin) 10 2
+  * list of (string, Shellbuiltin) 10 1
+    + int 10 1
+      * ref Environment 8 0
+        name ctxt ref Context 0 0
+      const bmods (16) int 6 0
+  :: list of (string, Shellbuiltin) 10 2
+    tuple (string, Shellbuiltin) 10 1
+      seq no type 10 1
+        name name string 0 0
+        seq no type 10 1
+          call Shellbuiltin 10 1
+            -> fn(): Shellbuiltin 12 1
+              name mod Shellbuiltin 0 0
+              name getself nothing 11 1
+    * list of (string, Shellbuiltin) 10 1
+      + int 10 1
+        * ref Environment 8 0
+          name ctxt ref Context 0 0
+        const bmods (16) int 6 0
+eacom: 
+* list of (string, Shellbuiltin) 10 1
+  + int 10 1
+    * ref Environment 8 0
+      name ctxt ref Context 0 0
+    const bmods (16) int 6 0
+ecom: 
+* ref Environment 8 0
+  name ctxt ref Context 0 0
+ecom to: 
+name .t195 ref Environment 0 0
+ecom: 
+:: list of (string, Shellbuiltin) 10 2
+  tuple (string, Shellbuiltin) 10 1
+    seq no type 10 1
+      name name string 0 0
+      seq no type 10 1
+        call Shellbuiltin 10 1
+          -> fn(): Shellbuiltin 12 1
+            name mod Shellbuiltin 0 0
+            name getself nothing 11 1
+  * list of (string, Shellbuiltin) 10 1
+    + int 10 1
+      * ref Environment 8 0
+        name ctxt ref Context 0 0
+      const bmods (16) int 6 0
+ecom to: 
+* list of (string, Shellbuiltin) 8 1
+  + int 15 1
+    name .t195 ref Environment 0 0
+    const bmods (16) int 6 0
+eacom: 
+tuple (string, Shellbuiltin) 10 1
+  seq no type 10 1
+    name name string 0 0
+    seq no type 10 1
+      call Shellbuiltin 10 1
+        -> fn(): Shellbuiltin 12 1
+          name mod Shellbuiltin 0 0
+          name getself nothing 11 1
+generate desc for (string, Shellbuiltin)
+descmap adt offset 0
+descmap offset 0
+descmap t0 type string offset 0 (d->offset=0 start=0) returns 0
+descmap t1 type Shellbuiltin offset 8 (d->offset=8 start=0) returns 8
+generate desc for (string, Shellbuiltin)
+	desc	$-1,16,"c0"
+ecom: 
+tuple (string, Shellbuiltin) 10 1
+  seq no type 10 1
+    name name string 0 0
+    seq no type 10 1
+      call Shellbuiltin 10 1
+        -> fn(): Shellbuiltin 12 1
+          name mod Shellbuiltin 0 0
+          name getself nothing 11 1
+ecom to: 
+name .b197 (string, Shellbuiltin) 0 0
+ecom: 
+name name string 0 0
+ecom to: 
+* string 0 0
+  + int 13 1
+    adr int 13 1
+      name .b197 (string, Shellbuiltin) 0 0
+    const (0) int 6 0
+ecom: 
+call Shellbuiltin 10 1
+  -> fn(): Shellbuiltin 12 1
+    name mod Shellbuiltin 0 0
+    name getself nothing 11 1
+ecom to: 
+* Shellbuiltin 0 0
+  + int 13 1
+    adr int 13 1
+      name .b197 (string, Shellbuiltin) 0 0
+    const (8) int 6 0
+generate desc for big
+ecom: 
+* list of (string, Shellbuiltin) 10 1
+  + int 10 1
+    * ref Environment 8 0
+      name ctxt ref Context 0 0
+    const bmods (16) int 6 0
+ecom to: 
+name .t198 list of (string, Shellbuiltin) 0 0
+eacom: 
+* list of (string, Shellbuiltin) 10 1
+  + int 10 1
+    * ref Environment 8 0
+      name ctxt ref Context 0 0
+    const bmods (16) int 6 0
+ecom: 
+* ref Environment 8 0
+  name ctxt ref Context 0 0
+ecom to: 
+name .t198 ref Environment 0 0
+generate desc for (string, Shellbuiltin)
+ecom: 
+= string 10 1
+  * string 0 0
+    adr int 13 1
+      name .b197 (string, Shellbuiltin) 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+* string 0 0
+  adr int 13 1
+    name .b197 (string, Shellbuiltin) 0 0
+ecom: 
+= Shellbuiltin 10 1
+  * Shellbuiltin 0 0
+    + int 13 1
+      adr int 13 1
+        name .b197 (string, Shellbuiltin) 0 0
+      const t1 (8) int 6 0
+  name nil Shellbuiltin 1 0
+ecom: 
+name nil Shellbuiltin 1 0
+ecom to: 
+* Shellbuiltin 0 0
+  + int 13 1
+    adr int 13 1
+      name .b197 (string, Shellbuiltin) 0 0
+    const t1 (8) int 6 0
+ecom: 
+= list of (string, Shellbuiltin) 10 1
+  name .t198 list of (string, Shellbuiltin) 0 0
+  name nil list of (string, Shellbuiltin) 1 0
+ecom: 
+name nil list of (string, Shellbuiltin) 1 0
+ecom to: 
+name .t198 list of (string, Shellbuiltin) 0 0
+ecom: 
+= ref Environment 10 1
+  name .t195 ref Environment 0 0
+  name nil ref Environment 1 0
+ecom: 
+name nil ref Environment 1 0
+ecom to: 
+name .t195 ref Environment 0 0
+fn: addmodule
+64: argument ctxt ref Context ref 3
+72: argument name string ref 1
+80: argument mod Shellbuiltin ref 2
+88: local .b196 big ref 2
+96: local .t195 string ref 1
+104: local .t198 list of (string, Shellbuiltin) ref 1
+112: local .b197 (string, Shellbuiltin) ref 1
+generate desc for Context.addmodule
+descmap offset 0
+descmap ctxt type ref Context offset 64 (d->offset=64 start=0) returns 64
+descmap name type string offset 72 (d->offset=72 start=0) returns 72
+descmap mod type Shellbuiltin offset 80 (d->offset=80 start=0) returns 80
+descmap .b196 type big offset 88 (d->offset=88 start=0) returns -1
+descmap .t195 type string offset 96 (d->offset=96 start=0) returns 96
+descmap .t198 type list of (string, Shellbuiltin) offset 104 (d->offset=104 start=0) returns 104
+descmap adt offset 112
+descmap offset 112
+descmap t0 type string offset 112 (d->offset=0 start=112) returns 112
+descmap t1 type Shellbuiltin offset 120 (d->offset=8 start=112) returns 120
+descmap .b197 type (string, Shellbuiltin) offset 112 (d->offset=112 start=0) returns 120
+fncom: addbuiltin 3 4be4c0
+ecom: 
+call no type 10 2
+  name addbuiltin fn(b: ref Builtins, name: string, mod: Shellbuiltin) 11 1
+  seq no type 10 2
+    * ref Builtins 10 1
+      + int 10 1
+        * ref Environment 8 0
+          name c ref Context 0 0
+        const builtins (8) int 6 0
+    seq no type 10 1
+      name name string 0 0
+      seq no type 10 1
+        name mod Shellbuiltin 0 0
+generate desc for big
+ecom: 
+* ref Builtins 10 1
+  + int 10 1
+    * ref Environment 8 0
+      name c ref Context 0 0
+    const builtins (8) int 6 0
+ecom to: 
+* ref Builtins 8 0
+  + int 15 0
+    name .b199 big 0 0
+    const (64) int 6 0
+eacom: 
+* ref Builtins 10 1
+  + int 10 1
+    * ref Environment 8 0
+      name c ref Context 0 0
+    const builtins (8) int 6 0
+ecom: 
+* ref Environment 8 0
+  name c ref Context 0 0
+ecom to: 
+name .t200 ref Environment 0 0
+ecom: 
+= ref Environment 10 1
+  name .t200 ref Environment 0 0
+  name nil ref Environment 1 0
+ecom: 
+name nil ref Environment 1 0
+ecom to: 
+name .t200 ref Environment 0 0
+ecom: 
+name name string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b199 big 0 0
+    const (72) int 6 0
+ecom: 
+name mod Shellbuiltin 0 0
+ecom to: 
+* Shellbuiltin 8 0
+  + int 15 0
+    name .b199 big 0 0
+    const (80) int 6 0
+fn: addbuiltin
+64: argument c ref Context ref 1
+72: argument name string ref 1
+80: argument mod Shellbuiltin ref 1
+88: local .b199 big ref 1
+96: local .t200 ref Environment ref 1
+generate desc for Context.addbuiltin
+descmap offset 0
+descmap c type ref Context offset 64 (d->offset=64 start=0) returns 64
+descmap name type string offset 72 (d->offset=72 start=0) returns 72
+descmap mod type Shellbuiltin offset 80 (d->offset=80 start=0) returns 80
+descmap .b199 type big offset 88 (d->offset=88 start=0) returns -1
+descmap .t200 type ref Environment offset 96 (d->offset=96 start=0) returns 96
+fncom: removebuiltin 2 4bec50
+ecom: 
+call no type 10 2
+  name removebuiltin fn(b: ref Builtins, name: string, mod: Shellbuiltin) 11 1
+  seq no type 10 2
+    * ref Builtins 10 1
+      + int 10 1
+        * ref Environment 8 0
+          name c ref Context 0 0
+        const builtins (8) int 6 0
+    seq no type 10 1
+      name name string 0 0
+      seq no type 10 1
+        name mod Shellbuiltin 0 0
+generate desc for big
+ecom: 
+* ref Builtins 10 1
+  + int 10 1
+    * ref Environment 8 0
+      name c ref Context 0 0
+    const builtins (8) int 6 0
+ecom to: 
+* ref Builtins 8 0
+  + int 15 0
+    name .b201 big 0 0
+    const (64) int 6 0
+eacom: 
+* ref Builtins 10 1
+  + int 10 1
+    * ref Environment 8 0
+      name c ref Context 0 0
+    const builtins (8) int 6 0
+ecom: 
+* ref Environment 8 0
+  name c ref Context 0 0
+ecom to: 
+name .t202 ref Environment 0 0
+ecom: 
+= ref Environment 10 1
+  name .t202 ref Environment 0 0
+  name nil ref Environment 1 0
+ecom: 
+name nil ref Environment 1 0
+ecom to: 
+name .t202 ref Environment 0 0
+ecom: 
+name name string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b201 big 0 0
+    const (72) int 6 0
+ecom: 
+name mod Shellbuiltin 0 0
+ecom to: 
+* Shellbuiltin 8 0
+  + int 15 0
+    name .b201 big 0 0
+    const (80) int 6 0
+fn: removebuiltin
+64: argument c ref Context ref 1
+72: argument name string ref 1
+80: argument mod Shellbuiltin ref 1
+88: local .b201 big ref 1
+96: local .t202 ref Environment ref 1
+generate desc for Context.removebuiltin
+descmap offset 0
+descmap c type ref Context offset 64 (d->offset=64 start=0) returns 64
+descmap name type string offset 72 (d->offset=72 start=0) returns 72
+descmap mod type Shellbuiltin offset 80 (d->offset=80 start=0) returns 80
+descmap .b201 type big offset 88 (d->offset=88 start=0) returns -1
+descmap .t202 type ref Environment offset 96 (d->offset=96 start=0) returns 96
+fncom: addsbuiltin 7 4bf3d0
+ecom: 
+call no type 10 2
+  name addbuiltin fn(b: ref Builtins, name: string, mod: Shellbuiltin) 11 1
+  seq no type 10 2
+    * ref Builtins 10 1
+      * ref Environment 8 0
+        name c ref Context 0 0
+    seq no type 10 1
+      name name string 0 0
+      seq no type 10 1
+        name mod Shellbuiltin 0 0
+generate desc for big
+ecom: 
+* ref Builtins 10 1
+  * ref Environment 8 0
+    name c ref Context 0 0
+ecom to: 
+* ref Builtins 8 0
+  + int 15 0
+    name .b203 big 0 0
+    const (64) int 6 0
+eacom: 
+* ref Builtins 10 1
+  * ref Environment 8 0
+    name c ref Context 0 0
+ecom: 
+* ref Environment 8 0
+  name c ref Context 0 0
+ecom to: 
+name .t204 ref Environment 0 0
+ecom: 
+= ref Environment 10 1
+  name .t204 ref Environment 0 0
+  name nil ref Environment 1 0
+ecom: 
+name nil ref Environment 1 0
+ecom to: 
+name .t204 ref Environment 0 0
+ecom: 
+name name string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b203 big 0 0
+    const (72) int 6 0
+ecom: 
+name mod Shellbuiltin 0 0
+ecom to: 
+* Shellbuiltin 8 0
+  + int 15 0
+    name .b203 big 0 0
+    const (80) int 6 0
+fn: addsbuiltin
+64: argument c ref Context ref 1
+72: argument name string ref 1
+80: argument mod Shellbuiltin ref 1
+88: local .b203 big ref 1
+96: local .t204 ref Environment ref 1
+generate desc for Context.addsbuiltin
+descmap offset 0
+descmap c type ref Context offset 64 (d->offset=64 start=0) returns 64
+descmap name type string offset 72 (d->offset=72 start=0) returns 72
+descmap mod type Shellbuiltin offset 80 (d->offset=80 start=0) returns 80
+descmap .b203 type big offset 88 (d->offset=88 start=0) returns -1
+descmap .t204 type ref Environment offset 96 (d->offset=96 start=0) returns 96
+fncom: removesbuiltin 2 4bfb58
+ecom: 
+call no type 10 2
+  name removebuiltin fn(b: ref Builtins, name: string, mod: Shellbuiltin) 11 1
+  seq no type 10 2
+    * ref Builtins 10 1
+      * ref Environment 8 0
+        name c ref Context 0 0
+    seq no type 10 1
+      name name string 0 0
+      seq no type 10 1
+        name mod Shellbuiltin 0 0
+generate desc for big
+ecom: 
+* ref Builtins 10 1
+  * ref Environment 8 0
+    name c ref Context 0 0
+ecom to: 
+* ref Builtins 8 0
+  + int 15 0
+    name .b205 big 0 0
+    const (64) int 6 0
+eacom: 
+* ref Builtins 10 1
+  * ref Environment 8 0
+    name c ref Context 0 0
+ecom: 
+* ref Environment 8 0
+  name c ref Context 0 0
+ecom to: 
+name .t206 ref Environment 0 0
+ecom: 
+= ref Environment 10 1
+  name .t206 ref Environment 0 0
+  name nil ref Environment 1 0
+ecom: 
+name nil ref Environment 1 0
+ecom to: 
+name .t206 ref Environment 0 0
+ecom: 
+name name string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b205 big 0 0
+    const (72) int 6 0
+ecom: 
+name mod Shellbuiltin 0 0
+ecom to: 
+* Shellbuiltin 8 0
+  + int 15 0
+    name .b205 big 0 0
+    const (80) int 6 0
+fn: removesbuiltin
+64: argument c ref Context ref 1
+72: argument name string ref 1
+80: argument mod Shellbuiltin ref 1
+88: local .b205 big ref 1
+96: local .t206 ref Environment ref 1
+generate desc for Context.removesbuiltin
+descmap offset 0
+descmap c type ref Context offset 64 (d->offset=64 start=0) returns 64
+descmap name type string offset 72 (d->offset=72 start=0) returns 72
+descmap mod type Shellbuiltin offset 80 (d->offset=80 start=0) returns 80
+descmap .b205 type big offset 88 (d->offset=88 start=0) returns -1
+descmap .t206 type ref Environment offset 96 (d->offset=96 start=0) returns 96
+fncom: varfind 3 419828
+ecom: 
+= int 10 2
+  name idx int 0 0
+  call int 10 2
+    name hashfn fn(s: string, n: int): int 11 1
+    seq no type 10 1
+      name name string 0 0
+      seq no type 10 1
+        len int 10 1
+          * array of list of ref Var 8 0
+            name e ref Localenv 0 0
+ecom: 
+call int 10 2
+  name hashfn fn(s: string, n: int): int 11 1
+  seq no type 10 1
+    name name string 0 0
+    seq no type 10 1
+      len int 10 1
+        * array of list of ref Var 8 0
+          name e ref Localenv 0 0
+ecom to: 
+name idx int 0 0
+generate desc for big
+ecom: 
+name name string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b207 big 0 0
+    const (64) int 6 0
+ecom: 
+len int 10 1
+  * array of list of ref Var 8 0
+    name e ref Localenv 0 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b207 big 0 0
+    const (72) int 6 0
+ecom: 
+= list of ref Var 10 1
+  name vl list of ref Var 0 0
+  * list of ref Var 10 1
+    indx big 10 1
+      * array of list of ref Var 8 0
+        name e ref Localenv 0 0
+      name idx int 0 0
+ecom: 
+* list of ref Var 10 1
+  indx big 10 1
+    * array of list of ref Var 8 0
+      name e ref Localenv 0 0
+    name idx int 0 0
+ecom to: 
+name vl list of ref Var 0 0
+eacom: 
+* list of ref Var 10 1
+  indx big 10 1
+    * array of list of ref Var 8 0
+      name e ref Localenv 0 0
+    name idx int 0 0
+generate desc for big
+ecom: 
+indx big 10 1
+  * array of list of ref Var 8 0
+    name e ref Localenv 0 0
+  name idx int 0 0
+ecom to: 
+name .b207 big 0 0
+eacom: 
+* string 10 1
+  hd ref Var 10 1
+    name vl list of ref Var 0 0
+ecom: 
+hd ref Var 10 1
+  name vl list of ref Var 0 0
+ecom to: 
+name .t208 ref Var 0 0
+ecom: 
+= ref Var 10 1
+  name .t208 ref Var 0 0
+  name nil ref Var 1 0
+ecom: 
+name nil ref Var 1 0
+ecom to: 
+name .t208 ref Var 0 0
+ecom: 
+hd ref Var 10 1
+  name vl list of ref Var 0 0
+ecom to: 
+* ref Var 8 0
+  name .ret int 0 0
+ecom: 
+= list of ref Var 10 1
+  name vl list of ref Var 0 0
+  tl list of ref Var 10 1
+    name vl list of ref Var 0 0
+ecom: 
+tl list of ref Var 10 1
+  name vl list of ref Var 0 0
+ecom to: 
+name vl list of ref Var 0 0
+ecom: 
+= ref Localenv 10 1
+  name e ref Localenv 0 0
+  * ref Localenv 8 0
+    + int 15 1
+      name e ref Localenv 0 0
+      const pushed (8) int 6 0
+ecom: 
+* ref Localenv 8 0
+  + int 15 1
+    name e ref Localenv 0 0
+    const pushed (8) int 6 0
+ecom to: 
+name e ref Localenv 0 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* polymorphic type 8 0
+  name .ret int 0 0
+fn: varfind
+64: argument e ref Localenv ref 5
+72: argument name string ref 2
+80: local idx int ref 2
+88: local vl list of ref Var ref 6
+96: local .b207 big ref 2
+104: local .t208 ref Var ref 1
+generate desc for varfind
+descmap offset 0
+descmap e type ref Localenv offset 64 (d->offset=64 start=0) returns 64
+descmap name type string offset 72 (d->offset=72 start=0) returns 72
+descmap idx type int offset 80 (d->offset=80 start=0) returns -1
+descmap vl type list of ref Var offset 88 (d->offset=88 start=0) returns 88
+descmap .b207 type big offset 96 (d->offset=96 start=0) returns -1
+descmap .t208 type ref Var offset 104 (d->offset=104 start=0) returns 104
+fncom: fail 27 4c02d8
+eacom: 
+& int 10 1
+  * int 10 1
+    + int 10 1
+      * ref Localenv 10 1
+        + int 10 1
+          * ref Environment 8 0
+            name ctxt ref Context 0 0
+          const localenv (24) int 6 0
+      const flags (16) int 6 0
+  const VERBOSE (2) int 6 0
+ecom: 
+& int 10 1
+  * int 10 1
+    + int 10 1
+      * ref Localenv 10 1
+        + int 10 1
+          * ref Environment 8 0
+            name ctxt ref Context 0 0
+          const localenv (24) int 6 0
+      const flags (16) int 6 0
+  const VERBOSE (2) int 6 0
+ecom to: 
+name .t209 int 0 0
+eacom: 
+* int 10 1
+  + int 10 1
+    * ref Localenv 10 1
+      + int 10 1
+        * ref Environment 8 0
+          name ctxt ref Context 0 0
+        const localenv (24) int 6 0
+    const flags (16) int 6 0
+ecom: 
+* ref Localenv 10 1
+  + int 10 1
+    * ref Environment 8 0
+      name ctxt ref Context 0 0
+    const localenv (24) int 6 0
+ecom to: 
+name .t210 ref Localenv 0 0
+eacom: 
+* ref Localenv 10 1
+  + int 10 1
+    * ref Environment 8 0
+      name ctxt ref Context 0 0
+    const localenv (24) int 6 0
+ecom: 
+* ref Environment 8 0
+  name ctxt ref Context 0 0
+ecom to: 
+name .t210 ref Environment 0 0
+ecom: 
+= ref Localenv 10 1
+  name .t210 ref Localenv 0 0
+  name nil ref Localenv 1 0
+ecom: 
+name nil ref Localenv 1 0
+ecom to: 
+name .t210 ref Localenv 0 0
+ecom: 
+used int 10 2
+  call int 10 2
+    -> fn(fd: ref Sys->FD, s: string, nil: string, *): int 12 1
+      name sys Sys 1 0
+      name fprint nothing 11 1
+    seq no type 10 2
+      call ref Sys->FD 10 2
+        -> fn(fd: int): ref Sys->FD 12 1
+          name sys Sys 1 0
+          name fildes nothing 11 1
+        seq no type 10 1
+          const (2) int 6 0
+      seq no type 10 1
+        const %s
+ string 1 0
+        seq no type 10 1
+          name err string 0 0
+ecom: 
+call int 10 2
+  -> fn(fd: ref Sys->FD, s: string, nil: string, *): int 12 1
+    name sys Sys 1 0
+    name fprint nothing 11 1
+  seq no type 10 2
+    call ref Sys->FD 10 2
+      -> fn(fd: int): ref Sys->FD 12 1
+        name sys Sys 1 0
+        name fildes nothing 11 1
+      seq no type 10 1
+        const (2) int 6 0
+    seq no type 10 1
+      const %s
+ string 1 0
+      seq no type 10 1
+        name err string 0 0
+ecom to: 
+name .t209 int 0 0
+generate desc for Sys->fprint
+descmap offset 0
+descmap fd type ref Sys->FD offset 64 (d->offset=64 start=0) returns 64
+descmap s type string offset 72 (d->offset=72 start=0) returns 72
+descmap type string offset 80 returns 80
+generate desc for big
+ecom: 
+call ref Sys->FD 10 2
+  -> fn(fd: int): ref Sys->FD 12 1
+    name sys Sys 1 0
+    name fildes nothing 11 1
+  seq no type 10 1
+    const (2) int 6 0
+ecom to: 
+name .t210 ref Sys->FD 0 0
+generate desc for big
+ecom: 
+const (2) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b212 big 0 0
+    const (64) int 6 0
+ecom: 
+name .t210 ref Sys->FD 0 0
+ecom to: 
+* ref Sys->FD 8 0
+  + int 15 0
+    name .b211 big 0 0
+    const (64) int 6 0
+ecom: 
+= ref Sys->FD 10 1
+  name .t210 ref Sys->FD 0 0
+  name nil ref Sys->FD 1 0
+ecom: 
+name nil ref Sys->FD 1 0
+ecom to: 
+name .t210 ref Sys->FD 0 0
+ecom: 
+const %s
+ string 1 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b211 big 0 0
+    const (72) int 6 0
+ecom: 
+name err string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b211 big 0 0
+    const (80) int 6 0
+ecom: 
+raise nothing 10 1
+  + string 10 1
+    const fail: string 1 0
+    name ename string 0 0
+eacom: 
++ string 10 1
+  const fail: string 1 0
+  name ename string 0 0
+ecom: 
++ string 10 1
+  const fail: string 1 0
+  name ename string 0 0
+ecom to: 
+name .t210 string 0 0
+ecom: 
+= string 10 1
+  name .t210 string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name .t210 string 0 0
+fn: fail
+64: argument ctxt ref Context ref 1
+72: argument ename string ref 1
+80: argument err string ref 1
+88: local .t209 int ref 1
+96: local .b211 big ref 1
+104: local .b212 big ref 1
+112: local .t210 ref Localenv ref 1
+generate desc for Context.fail
+descmap offset 0
+descmap ctxt type ref Context offset 64 (d->offset=64 start=0) returns 64
+descmap ename type string offset 72 (d->offset=72 start=0) returns 72
+descmap err type string offset 80 (d->offset=80 start=0) returns 80
+descmap .t209 type int offset 88 (d->offset=88 start=0) returns -1
+descmap .b211 type big offset 96 (d->offset=96 start=0) returns -1
+descmap .b212 type big offset 104 (d->offset=104 start=0) returns -1
+descmap .t210 type ref Localenv offset 112 (d->offset=112 start=0) returns 112
+fncom: setoptions 6 4c1058
+ecom: 
+= int 10 1
+  name old int 0 0
+  * int 10 1
+    + int 10 1
+      * ref Localenv 10 1
+        + int 10 1
+          * ref Environment 8 0
+            name ctxt ref Context 0 0
+          const localenv (24) int 6 0
+      const flags (16) int 6 0
+ecom: 
+* int 10 1
+  + int 10 1
+    * ref Localenv 10 1
+      + int 10 1
+        * ref Environment 8 0
+          name ctxt ref Context 0 0
+        const localenv (24) int 6 0
+    const flags (16) int 6 0
+ecom to: 
+name old int 0 0
+eacom: 
+* int 10 1
+  + int 10 1
+    * ref Localenv 10 1
+      + int 10 1
+        * ref Environment 8 0
+          name ctxt ref Context 0 0
+        const localenv (24) int 6 0
+    const flags (16) int 6 0
+ecom: 
+* ref Localenv 10 1
+  + int 10 1
+    * ref Environment 8 0
+      name ctxt ref Context 0 0
+    const localenv (24) int 6 0
+ecom to: 
+name .t213 ref Localenv 0 0
+eacom: 
+* ref Localenv 10 1
+  + int 10 1
+    * ref Environment 8 0
+      name ctxt ref Context 0 0
+    const localenv (24) int 6 0
+ecom: 
+* ref Environment 8 0
+  name ctxt ref Context 0 0
+ecom to: 
+name .t213 ref Environment 0 0
+ecom: 
+= ref Localenv 10 1
+  name .t213 ref Localenv 0 0
+  name nil ref Localenv 1 0
+ecom: 
+name nil ref Localenv 1 0
+ecom to: 
+name .t213 ref Localenv 0 0
+ecom: 
+|= int 10 1
+  * int 10 1
+    + int 10 1
+      * ref Localenv 10 1
+        + int 10 1
+          * ref Environment 8 0
+            name ctxt ref Context 0 0
+          const localenv (24) int 6 0
+      const flags (16) int 6 0
+  name flags int 0 0
+eacom: 
+* int 10 1
+  + int 10 1
+    * ref Localenv 10 1
+      + int 10 1
+        * ref Environment 8 0
+          name ctxt ref Context 0 0
+        const localenv (24) int 6 0
+    const flags (16) int 6 0
+ecom: 
+* ref Localenv 10 1
+  + int 10 1
+    * ref Environment 8 0
+      name ctxt ref Context 0 0
+    const localenv (24) int 6 0
+ecom to: 
+name .t213 ref Localenv 0 0
+eacom: 
+* ref Localenv 10 1
+  + int 10 1
+    * ref Environment 8 0
+      name ctxt ref Context 0 0
+    const localenv (24) int 6 0
+ecom: 
+* ref Environment 8 0
+  name ctxt ref Context 0 0
+ecom to: 
+name .t213 ref Environment 0 0
+ecom: 
+= ref Localenv 10 1
+  name .t213 ref Localenv 0 0
+  name nil ref Localenv 1 0
+ecom: 
+name nil ref Localenv 1 0
+ecom to: 
+name .t213 ref Localenv 0 0
+ecom: 
+&= int 10 2
+  * int 10 1
+    + int 10 1
+      * ref Localenv 10 1
+        + int 10 1
+          * ref Environment 8 0
+            name ctxt ref Context 0 0
+          const localenv (24) int 6 0
+      const flags (16) int 6 0
+  ^ int 10 1
+    name flags int 0 0
+    const (-1) int 6 0
+eacom: 
+* int 10 1
+  + int 10 1
+    * ref Localenv 10 1
+      + int 10 1
+        * ref Environment 8 0
+          name ctxt ref Context 0 0
+        const localenv (24) int 6 0
+    const flags (16) int 6 0
+ecom: 
+* ref Localenv 10 1
+  + int 10 1
+    * ref Environment 8 0
+      name ctxt ref Context 0 0
+    const localenv (24) int 6 0
+ecom to: 
+name .t213 ref Localenv 0 0
+eacom: 
+* ref Localenv 10 1
+  + int 10 1
+    * ref Environment 8 0
+      name ctxt ref Context 0 0
+    const localenv (24) int 6 0
+ecom: 
+* ref Environment 8 0
+  name ctxt ref Context 0 0
+ecom to: 
+name .t213 ref Environment 0 0
+eacom: 
+^ int 10 1
+  name flags int 0 0
+  const (-1) int 6 0
+ecom: 
+^ int 10 1
+  name flags int 0 0
+  const (-1) int 6 0
+ecom to: 
+name .t214 int 0 0
+ecom: 
+= ref Localenv 10 1
+  name .t213 ref Localenv 0 0
+  name nil ref Localenv 1 0
+ecom: 
+name nil ref Localenv 1 0
+ecom to: 
+name .t213 ref Localenv 0 0
+ecom: 
+name old int 0 0
+ecom to: 
+* int 8 0
+  name .ret int 0 0
+fn: setoptions
+64: argument ctxt ref Context ref 3
+72: argument flags int ref 2
+76: argument on int ref 1
+80: local old int ref 2
+84: local .t214 int ref 1
+88: local .t213 ref Localenv ref 1
+generate desc for Context.setoptions
+descmap offset 0
+descmap ctxt type ref Context offset 64 (d->offset=64 start=0) returns 64
+descmap flags type int offset 72 (d->offset=72 start=0) returns -1
+descmap on type int offset 76 (d->offset=76 start=0) returns -1
+descmap old type int offset 80 (d->offset=80 start=0) returns -1
+descmap .t214 type int offset 84 (d->offset=84 start=0) returns -1
+descmap .t213 type ref Localenv offset 88 (d->offset=88 start=0) returns 88
+fncom: options 10 4c0af8
+ecom: 
+* int 10 1
+  + int 10 1
+    * ref Localenv 10 1
+      + int 10 1
+        * ref Environment 8 0
+          name ctxt ref Context 0 0
+        const localenv (24) int 6 0
+    const flags (16) int 6 0
+ecom to: 
+* int 8 0
+  name .ret int 0 0
+eacom: 
+* int 10 1
+  + int 10 1
+    * ref Localenv 10 1
+      + int 10 1
+        * ref Environment 8 0
+          name ctxt ref Context 0 0
+        const localenv (24) int 6 0
+    const flags (16) int 6 0
+ecom: 
+* ref Localenv 10 1
+  + int 10 1
+    * ref Environment 8 0
+      name ctxt ref Context 0 0
+    const localenv (24) int 6 0
+ecom to: 
+name .t215 ref Localenv 0 0
+eacom: 
+* ref Localenv 10 1
+  + int 10 1
+    * ref Environment 8 0
+      name ctxt ref Context 0 0
+    const localenv (24) int 6 0
+ecom: 
+* ref Environment 8 0
+  name ctxt ref Context 0 0
+ecom to: 
+name .t215 ref Environment 0 0
+ecom: 
+= ref Localenv 10 1
+  name .t215 ref Localenv 0 0
+  name nil ref Localenv 1 0
+ecom: 
+name nil ref Localenv 1 0
+ecom to: 
+name .t215 ref Localenv 0 0
+fn: options
+64: argument ctxt ref Context ref 1
+72: local .t215 ref Localenv ref 1
+generate desc for Context.options
+descmap offset 0
+descmap ctxt type ref Context offset 64 (d->offset=64 start=0) returns 64
+descmap .t215 type ref Localenv offset 72 (d->offset=72 start=0) returns 72
+fncom: hashfn 7 4198e8
+ecom: 
+= int 10 1
+  name h int 0 0
+  const (0) int 6 0
+ecom: 
+const (0) int 6 0
+ecom to: 
+name h int 0 0
+ecom: 
+= int 10 1
+  name m int 0 0
+  len int 10 1
+    name s string 0 0
+ecom: 
+len int 10 1
+  name s string 0 0
+ecom to: 
+name m int 0 0
+ecom: 
+= int 10 1
+  name i int 0 0
+  const (0) int 6 0
+ecom: 
+const (0) int 6 0
+ecom to: 
+name i int 0 0
+ecom: 
+= int 10 2
+  name h int 0 0
+  + int 10 2
+    * int 10 1
+      name h int 0 0
+      const (65599) int 6 0
+    inds int 10 1
+      name s string 0 0
+      name i int 0 0
+ecom: 
++ int 10 2
+  * int 10 1
+    name h int 0 0
+    const (65599) int 6 0
+  inds int 10 1
+    name s string 0 0
+    name i int 0 0
+ecom to: 
+name h int 0 0
+ecom: 
+* int 10 1
+  name h int 0 0
+  const (65599) int 6 0
+ecom to: 
+name .t216 int 0 0
+eacom: 
+inds int 10 1
+  name s string 0 0
+  name i int 0 0
+ecom: 
+inds int 10 1
+  name s string 0 0
+  name i int 0 0
+ecom to: 
+name .t217 int 0 0
+ecom: 
+++ int 10 1
+  name i int 0 0
+  const (1) int 6 0
+ecom: 
+% int 10 1
+  & int 10 1
+    name h int 0 0
+    const .i.7fffffff (2147483647) int 1 0
+  name n int 0 0
+ecom to: 
+* int 8 0
+  name .ret int 0 0
+ecom: 
+& int 10 1
+  name h int 0 0
+  const .i.7fffffff (2147483647) int 1 0
+ecom to: 
+name .t217 int 0 0
+fn: hashfn
+64: argument s string ref 2
+72: argument n int ref 1
+76: local h int ref 4
+80: local i int ref 4
+84: local m int ref 2
+88: local .t216 int ref 1
+92: local .t217 int ref 1
+generate desc for hashfn
+descmap offset 0
+descmap s type string offset 64 (d->offset=64 start=0) returns 64
+descmap n type int offset 72 (d->offset=72 start=0) returns -1
+descmap h type int offset 76 (d->offset=76 start=0) returns -1
+descmap i type int offset 80 (d->offset=80 start=0) returns -1
+descmap m type int offset 84 (d->offset=84 start=0) returns -1
+descmap .t216 type int offset 88 (d->offset=88 start=0) returns -1
+descmap .t217 type int offset 92 (d->offset=92 start=0) returns -1
+fncom: hashfind 5 4199a8
+ecom: 
+= list of ref Var 10 1
+  name ent list of ref Var 0 0
+  * list of ref Var 10 1
+    indx big 10 1
+      name ht array of list of ref Var 0 0
+      name idx int 0 0
+ecom: 
+* list of ref Var 10 1
+  indx big 10 1
+    name ht array of list of ref Var 0 0
+    name idx int 0 0
+ecom to: 
+name ent list of ref Var 0 0
+eacom: 
+* list of ref Var 10 1
+  indx big 10 1
+    name ht array of list of ref Var 0 0
+    name idx int 0 0
+generate desc for big
+ecom: 
+indx big 10 1
+  name ht array of list of ref Var 0 0
+  name idx int 0 0
+ecom to: 
+name .b218 big 0 0
+eacom: 
+* string 10 1
+  hd ref Var 10 1
+    name ent list of ref Var 0 0
+ecom: 
+hd ref Var 10 1
+  name ent list of ref Var 0 0
+ecom to: 
+name .t219 ref Var 0 0
+ecom: 
+= ref Var 10 1
+  name .t219 ref Var 0 0
+  name nil ref Var 1 0
+ecom: 
+name nil ref Var 1 0
+ecom to: 
+name .t219 ref Var 0 0
+ecom: 
+hd ref Var 10 1
+  name ent list of ref Var 0 0
+ecom to: 
+* ref Var 8 0
+  name .ret int 0 0
+ecom: 
+= list of ref Var 10 1
+  name ent list of ref Var 0 0
+  tl list of ref Var 10 1
+    name ent list of ref Var 0 0
+ecom: 
+tl list of ref Var 10 1
+  name ent list of ref Var 0 0
+ecom to: 
+name ent list of ref Var 0 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* polymorphic type 8 0
+  name .ret int 0 0
+fn: hashfind
+64: argument ht array of list of ref Var ref 1
+72: argument idx int ref 1
+80: argument n string ref 1
+88: local ent list of ref Var ref 6
+96: local .b218 big ref 1
+104: local .t219 ref Var ref 1
+generate desc for hashfind
+descmap offset 0
+descmap ht type array of list of ref Var offset 64 (d->offset=64 start=0) returns 64
+descmap idx type int offset 72 (d->offset=72 start=0) returns -1
+descmap n type string offset 80 (d->offset=80 start=0) returns 80
+descmap ent type list of ref Var offset 88 (d->offset=88 start=0) returns 88
+descmap .b218 type big offset 96 (d->offset=96 start=0) returns -1
+descmap .t219 type ref Var offset 104 (d->offset=104 start=0) returns 104
+fncom: hashadd 6 419a68
+ecom: 
+= list of ref Var 10 2
+  * list of ref Var 10 1
+    indx big 10 1
+      name ht array of list of ref Var 0 0
+      name idx int 0 0
+  :: list of ref Var 10 1
+    name v ref Var 0 0
+    * list of ref Var 10 1
+      indx big 10 1
+        name ht array of list of ref Var 0 0
+        name idx int 0 0
+eacom: 
+* list of ref Var 10 1
+  indx big 10 1
+    name ht array of list of ref Var 0 0
+    name idx int 0 0
+generate desc for big
+ecom: 
+indx big 10 1
+  name ht array of list of ref Var 0 0
+  name idx int 0 0
+ecom to: 
+name .b220 big 0 0
+ecom: 
+:: list of ref Var 10 1
+  name v ref Var 0 0
+  * list of ref Var 10 1
+    indx big 10 1
+      name ht array of list of ref Var 0 0
+      name idx int 0 0
+ecom to: 
+* list of ref Var 8 1
+  name .b220 big 0 0
+ecom: 
+* list of ref Var 10 1
+  indx big 10 1
+    name ht array of list of ref Var 0 0
+    name idx int 0 0
+ecom to: 
+name .t221 list of ref Var 0 0
+eacom: 
+* list of ref Var 10 1
+  indx big 10 1
+    name ht array of list of ref Var 0 0
+    name idx int 0 0
+generate desc for big
+ecom: 
+indx big 10 1
+  name ht array of list of ref Var 0 0
+  name idx int 0 0
+ecom to: 
+name .b222 big 0 0
+ecom: 
+= list of ref Var 10 1
+  name .t221 list of ref Var 0 0
+  name nil list of ref Var 1 0
+ecom: 
+name nil list of ref Var 1 0
+ecom to: 
+name .t221 list of ref Var 0 0
+fn: hashadd
+64: argument ht array of list of ref Var ref 2
+72: argument idx int ref 2
+80: argument v ref Var ref 1
+88: local .b220 big ref 1
+96: local .b222 big ref 1
+104: local .t221 list of ref Var ref 1
+generate desc for hashadd
+descmap offset 0
+descmap ht type array of list of ref Var offset 64 (d->offset=64 start=0) returns 64
+descmap idx type int offset 72 (d->offset=72 start=0) returns -1
+descmap v type ref Var offset 80 (d->offset=80 start=0) returns 80
+descmap .b220 type big offset 88 (d->offset=88 start=0) returns -1
+descmap .b222 type big offset 96 (d->offset=96 start=0) returns -1
+descmap .t221 type list of ref Var offset 104 (d->offset=104 start=0) returns 104
+fncom: copylocalenv 2 419b28
+ecom: 
+= array of list of ref Var 10 1
+  name nvars array of list of ref Var 0 0
+  array array of list of ref Var 10 1
+    len int 10 1
+      * array of list of ref Var 8 0
+        name e ref Localenv 0 0
+ecom: 
+array array of list of ref Var 10 1
+  len int 10 1
+    * array of list of ref Var 8 0
+      name e ref Localenv 0 0
+ecom to: 
+name nvars array of list of ref Var 0 0
+eacom: 
+len int 10 1
+  * array of list of ref Var 8 0
+    name e ref Localenv 0 0
+ecom: 
+len int 10 1
+  * array of list of ref Var 8 0
+    name e ref Localenv 0 0
+ecom to: 
+name .t223 int 0 0
+generate desc for list of ref Var
+generate desc for list of ref Var
+	desc	$-1,8,"80"
+ecom: 
+= int 10 1
+  name flags int 0 0
+  * int 8 0
+    + int 15 1
+      name e ref Localenv 0 0
+      const flags (16) int 6 0
+ecom: 
+* int 8 0
+  + int 15 1
+    name e ref Localenv 0 0
+    const flags (16) int 6 0
+ecom to: 
+name flags int 0 0
+ecom: 
+= int 10 1
+  name i int 0 0
+  const (0) int 6 0
+ecom: 
+const (0) int 6 0
+ecom to: 
+name i int 0 0
+eacom: 
+len int 10 1
+  name nvars array of list of ref Var 0 0
+ecom: 
+len int 10 1
+  name nvars array of list of ref Var 0 0
+ecom to: 
+name .t223 int 0 0
+ecom: 
+= list of ref Var 10 1
+  name vl list of ref Var 0 0
+  * list of ref Var 10 1
+    indx big 10 1
+      * array of list of ref Var 8 0
+        name e ref Localenv 0 0
+      name i int 0 0
+ecom: 
+* list of ref Var 10 1
+  indx big 10 1
+    * array of list of ref Var 8 0
+      name e ref Localenv 0 0
+    name i int 0 0
+ecom to: 
+name vl list of ref Var 0 0
+eacom: 
+* list of ref Var 10 1
+  indx big 10 1
+    * array of list of ref Var 8 0
+      name e ref Localenv 0 0
+    name i int 0 0
+generate desc for big
+ecom: 
+indx big 10 1
+  * array of list of ref Var 8 0
+    name e ref Localenv 0 0
+  name i int 0 0
+ecom to: 
+name .b224 big 0 0
+ecom: 
+= int 10 2
+  name idx int 0 0
+  call int 10 2
+    name hashfn fn(s: string, n: int): int 11 1
+    seq no type 10 2
+      * string 10 1
+        hd ref Var 10 1
+          name vl list of ref Var 0 0
+      seq no type 10 1
+        len int 10 1
+          name nvars array of list of ref Var 0 0
+ecom: 
+call int 10 2
+  name hashfn fn(s: string, n: int): int 11 1
+  seq no type 10 2
+    * string 10 1
+      hd ref Var 10 1
+        name vl list of ref Var 0 0
+    seq no type 10 1
+      len int 10 1
+        name nvars array of list of ref Var 0 0
+ecom to: 
+name idx int 0 0
+generate desc for big
+ecom: 
+* string 10 1
+  hd ref Var 10 1
+    name vl list of ref Var 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b224 big 0 0
+    const (64) int 6 0
+eacom: 
+* string 10 1
+  hd ref Var 10 1
+    name vl list of ref Var 0 0
+ecom: 
+hd ref Var 10 1
+  name vl list of ref Var 0 0
+ecom to: 
+name .t225 ref Var 0 0
+ecom: 
+= ref Var 10 1
+  name .t225 ref Var 0 0
+  name nil ref Var 1 0
+ecom: 
+name nil ref Var 1 0
+ecom to: 
+name .t225 ref Var 0 0
+ecom: 
+len int 10 1
+  name nvars array of list of ref Var 0 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b224 big 0 0
+    const (72) int 6 0
+eacom: 
+call ref Var 10 2
+  name hashfind fn(ht: array of list of ref Var, idx: int, n: string): ref Var 11 1
+  seq no type 10 1
+    name nvars array of list of ref Var 0 0
+    seq no type 10 1
+      name idx int 0 0
+      seq no type 10 1
+        * string 10 1
+          hd ref Var 10 1
+            name vl list of ref Var 0 0
+ecom: 
+call ref Var 10 2
+  name hashfind fn(ht: array of list of ref Var, idx: int, n: string): ref Var 11 1
+  seq no type 10 1
+    name nvars array of list of ref Var 0 0
+    seq no type 10 1
+      name idx int 0 0
+      seq no type 10 1
+        * string 10 1
+          hd ref Var 10 1
+            name vl list of ref Var 0 0
+ecom to: 
+name .t225 ref Var 0 0
+generate desc for big
+ecom: 
+name nvars array of list of ref Var 0 0
+ecom to: 
+* array of list of ref Var 8 0
+  + int 15 0
+    name .b224 big 0 0
+    const (64) int 6 0
+ecom: 
+name idx int 0 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b224 big 0 0
+    const (72) int 6 0
+ecom: 
+* string 10 1
+  hd ref Var 10 1
+    name vl list of ref Var 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b224 big 0 0
+    const (80) int 6 0
+eacom: 
+* string 10 1
+  hd ref Var 10 1
+    name vl list of ref Var 0 0
+ecom: 
+hd ref Var 10 1
+  name vl list of ref Var 0 0
+ecom to: 
+name .t226 ref Var 0 0
+ecom: 
+= ref Var 10 1
+  name .t226 ref Var 0 0
+  name nil ref Var 1 0
+ecom: 
+name nil ref Var 1 0
+ecom to: 
+name .t226 ref Var 0 0
+ecom: 
+= ref Var 10 1
+  name .t225 ref Var 0 0
+  name nil ref Var 1 0
+ecom: 
+name nil ref Var 1 0
+ecom to: 
+name .t225 ref Var 0 0
+ecom: 
+call no type 10 2
+  name hashadd fn(ht: array of list of ref Var, idx: int, v: ref Var) 11 1
+  seq no type 10 1
+    name nvars array of list of ref Var 0 0
+    seq no type 10 1
+      name idx int 0 0
+      seq no type 10 1
+        ref ref Var 10 1
+          * Var 10 1
+            hd ref Var 10 1
+              name vl list of ref Var 0 0
+generate desc for big
+ecom: 
+name nvars array of list of ref Var 0 0
+ecom to: 
+* array of list of ref Var 8 0
+  + int 15 0
+    name .b224 big 0 0
+    const (64) int 6 0
+ecom: 
+name idx int 0 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b224 big 0 0
+    const (72) int 6 0
+ecom: 
+ref ref Var 10 1
+  * Var 10 1
+    hd ref Var 10 1
+      name vl list of ref Var 0 0
+ecom to: 
+* ref Var 8 0
+  + int 15 0
+    name .b224 big 0 0
+    const (80) int 6 0
+generate desc for Var
+ecom: 
+* Var 10 1
+  hd ref Var 10 1
+    name vl list of ref Var 0 0
+ecom to: 
+* Var 8 0
+  name .t226 ref Var 0 0
+eacom: 
+* Var 10 1
+  hd ref Var 10 1
+    name vl list of ref Var 0 0
+ecom: 
+hd ref Var 10 1
+  name vl list of ref Var 0 0
+ecom to: 
+name .t225 ref Var 0 0
+generate desc for Var
+ecom: 
+= ref Var 10 1
+  name .t225 ref Var 0 0
+  name nil ref Var 1 0
+ecom: 
+name nil ref Var 1 0
+ecom to: 
+name .t225 ref Var 0 0
+ecom: 
+= ref Var 10 1
+  name .t226 ref Var 0 0
+  name nil ref Var 1 0
+ecom: 
+name nil ref Var 1 0
+ecom to: 
+name .t226 ref Var 0 0
+ecom: 
+= list of ref Var 10 1
+  name vl list of ref Var 0 0
+  tl list of ref Var 10 1
+    name vl list of ref Var 0 0
+ecom: 
+tl list of ref Var 10 1
+  name vl list of ref Var 0 0
+ecom to: 
+name vl list of ref Var 0 0
+ecom: 
+++ int 10 1
+  name i int 0 0
+  const (1) int 6 0
+ecom: 
+= ref Localenv 10 1
+  name e ref Localenv 0 0
+  * ref Localenv 8 0
+    + int 15 1
+      name e ref Localenv 0 0
+      const pushed (8) int 6 0
+ecom: 
+* ref Localenv 8 0
+  + int 15 1
+    name e ref Localenv 0 0
+    const pushed (8) int 6 0
+ecom to: 
+name e ref Localenv 0 0
+ecom: 
+ref ref Localenv 10 1
+  tuple Localenv 10 1
+    seq no type 10 1
+      name nvars array of list of ref Var 0 0
+      seq no type 10 1
+        name nil polymorphic type 1 0
+        seq no type 10 1
+          name flags int 0 0
+ecom to: 
+* ref Localenv 8 0
+  name .ret int 0 0
+generate desc for Localenv
+descmap adt offset 0
+descmap offset 0
+descmap vars type array of list of ref Var offset 0 (d->offset=0 start=0) returns 0
+descmap pushed type ref Localenv offset 8 (d->offset=8 start=0) returns 8
+descmap flags type int offset 16 (d->offset=16 start=0) returns -1
+generate desc for Localenv
+	desc	$-1,24,"c0"
+ecom: 
+tuple Localenv 10 1
+  seq no type 10 1
+    name nvars array of list of ref Var 0 0
+    seq no type 10 1
+      name nil polymorphic type 1 0
+      seq no type 10 1
+        name flags int 0 0
+ecom to: 
+* Localenv 8 0
+  name .t226 ref Localenv 0 0
+ecom: 
+name nvars array of list of ref Var 0 0
+ecom to: 
+* array of list of ref Var 8 0
+  + int 15 1
+    adr int 15 1
+      * Localenv 8 0
+        name .t226 ref Localenv 0 0
+    const (0) int 6 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* ref Localenv 8 0
+  + int 15 1
+    adr int 15 1
+      * Localenv 8 0
+        name .t226 ref Localenv 0 0
+    const (8) int 6 0
+ecom: 
+name flags int 0 0
+ecom to: 
+* int 8 0
+  + int 15 1
+    adr int 15 1
+      * Localenv 8 0
+        name .t226 ref Localenv 0 0
+    const (16) int 6 0
+ecom: 
+= ref Localenv 10 1
+  name .t226 ref Localenv 0 0
+  name nil ref Localenv 1 0
+ecom: 
+name nil ref Localenv 1 0
+ecom to: 
+name .t226 ref Localenv 0 0
+fn: copylocalenv
+64: argument e ref Localenv ref 6
+72: local i int ref 4
+76: local idx int ref 3
+80: local flags int ref 2
+84: local .t223 int ref 1
+88: local vl list of ref Var ref 7
+96: local nvars array of list of ref Var ref 6
+104: local .b224 big ref 4
+112: local .t225 ref Var ref 1
+120: local .t226 ref Var ref 1
+generate desc for copylocalenv
+descmap offset 0
+descmap e type ref Localenv offset 64 (d->offset=64 start=0) returns 64
+descmap i type int offset 72 (d->offset=72 start=0) returns -1
+descmap idx type int offset 76 (d->offset=76 start=0) returns -1
+descmap flags type int offset 80 (d->offset=80 start=0) returns -1
+descmap .t223 type int offset 84 (d->offset=84 start=0) returns -1
+descmap vl type list of ref Var offset 88 (d->offset=88 start=0) returns 88
+descmap nvars type array of list of ref Var offset 96 (d->offset=96 start=0) returns 96
+descmap .b224 type big offset 104 (d->offset=104 start=0) returns -1
+descmap .t225 type ref Var offset 112 (d->offset=112 start=0) returns 112
+descmap .t226 type ref Var offset 120 (d->offset=120 start=0) returns 120
+fncom: newlocalenv 3 419be8
+ecom: 
+= ref Localenv 10 2
+  name e ref Localenv 0 0
+  ref ref Localenv 10 2
+    tuple Localenv 10 2
+      seq no type 10 2
+        array array of list of ref Var 10 1
+          const ENVHASHSIZE (7) int 6 0
+        seq no type 10 1
+          name pushed ref Localenv 0 0
+          seq no type 10 1
+            const (0) int 6 0
+ecom: 
+ref ref Localenv 10 2
+  tuple Localenv 10 2
+    seq no type 10 2
+      array array of list of ref Var 10 1
+        const ENVHASHSIZE (7) int 6 0
+      seq no type 10 1
+        name pushed ref Localenv 0 0
+        seq no type 10 1
+          const (0) int 6 0
+ecom to: 
+name e ref Localenv 0 0
+generate desc for Localenv
+ecom: 
+tuple Localenv 10 2
+  seq no type 10 2
+    array array of list of ref Var 10 1
+      const ENVHASHSIZE (7) int 6 0
+    seq no type 10 1
+      name pushed ref Localenv 0 0
+      seq no type 10 1
+        const (0) int 6 0
+ecom to: 
+* Localenv 8 0
+  name .t227 ref Localenv 0 0
+ecom: 
+array array of list of ref Var 10 1
+  const ENVHASHSIZE (7) int 6 0
+ecom to: 
+* array of list of ref Var 8 0
+  + int 15 1
+    adr int 15 1
+      * Localenv 8 0
+        name .t227 ref Localenv 0 0
+    const (0) int 6 0
+generate desc for list of ref Var
+generate desc for list of ref Var
+	desc	$-1,8,"80"
+ecom: 
+name pushed ref Localenv 0 0
+ecom to: 
+* ref Localenv 8 0
+  + int 15 1
+    adr int 15 1
+      * Localenv 8 0
+        name .t227 ref Localenv 0 0
+    const (8) int 6 0
+ecom: 
+const (0) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 1
+    adr int 15 1
+      * Localenv 8 0
+        name .t227 ref Localenv 0 0
+    const (16) int 6 0
+ecom: 
+= ref Localenv 10 1
+  name .t227 ref Localenv 0 0
+  name nil ref Localenv 1 0
+ecom: 
+name nil ref Localenv 1 0
+ecom to: 
+name .t227 ref Localenv 0 0
+ecom: 
+= list of (string, string) 10 1
+  name vl list of (string, string) 0 0
+  call list of (string, string) 10 1
+    -> fn(): list of (string, string) 12 1
+      name env Env 1 0
+      name getall nothing 11 1
+ecom: 
+call list of (string, string) 10 1
+  -> fn(): list of (string, string) 12 1
+    name env Env 1 0
+    name getall nothing 11 1
+ecom to: 
+name vl list of (string, string) 0 0
+generate desc for big
+ecom: 
+= (string, string) 10 2
+  tuple (string, string) 10 1
+    seq nothing 10 1
+      name name string 0 0
+      seq nothing 10 1
+        name val string 0 0
+  hd (string, string) 10 1
+    name vl list of (string, string) 0 0
+ecom: 
+hd (string, string) 10 1
+  name vl list of (string, string) 0 0
+ecom to: 
+name name (string, string) 0 0
+generate desc for (string, string)
+descmap adt offset 0
+descmap offset 0
+descmap t0 type string offset 0 (d->offset=0 start=0) returns 0
+descmap t1 type string offset 8 (d->offset=8 start=0) returns 8
+generate desc for (string, string)
+	desc	$-1,16,"c0"
+ecom: 
+call no type 10 3
+  name hashadd fn(ht: array of list of ref Var, idx: int, v: ref Var) 11 1
+  seq no type 10 3
+    * array of list of ref Var 8 0
+      name e ref Localenv 0 0
+    seq no type 10 3
+      call int 10 2
+        name hashfn fn(s: string, n: int): int 11 1
+        seq no type 10 1
+          name name string 0 0
+          seq no type 10 1
+            len int 10 1
+              * array of list of ref Var 8 0
+                name e ref Localenv 0 0
+      seq no type 10 2
+        ref ref Var 10 2
+          tuple Var 10 2
+            seq no type 10 2
+              name name string 0 0
+              seq no type 10 2
+                call list of ref Listnode 10 2
+                  name stringlist2list fn(sl: list of string): list of ref Listnode 11 1
+                  seq no type 10 2
+                    call list of string 10 2
+                      -> fn(args: string): list of string 12 1
+                        name str String 1 0
+                        name unquoted nothing 11 1
+                      seq no type 10 1
+                        name val string 0 0
+                seq no type 10 1
+                  const (0) int 6 0
+generate desc for big
+ecom: 
+call int 10 2
+  name hashfn fn(s: string, n: int): int 11 1
+  seq no type 10 1
+    name name string 0 0
+    seq no type 10 1
+      len int 10 1
+        * array of list of ref Var 8 0
+          name e ref Localenv 0 0
+ecom to: 
+name .t229 int 0 0
+generate desc for big
+ecom: 
+name name string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b230 big 0 0
+    const (64) int 6 0
+ecom: 
+len int 10 1
+  * array of list of ref Var 8 0
+    name e ref Localenv 0 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b230 big 0 0
+    const (72) int 6 0
+ecom: 
+ref ref Var 10 2
+  tuple Var 10 2
+    seq no type 10 2
+      name name string 0 0
+      seq no type 10 2
+        call list of ref Listnode 10 2
+          name stringlist2list fn(sl: list of string): list of ref Listnode 11 1
+          seq no type 10 2
+            call list of string 10 2
+              -> fn(args: string): list of string 12 1
+                name str String 1 0
+                name unquoted nothing 11 1
+              seq no type 10 1
+                name val string 0 0
+        seq no type 10 1
+          const (0) int 6 0
+ecom to: 
+name .t227 ref Var 0 0
+generate desc for Var
+ecom: 
+tuple Var 10 2
+  seq no type 10 2
+    name name string 0 0
+    seq no type 10 2
+      call list of ref Listnode 10 2
+        name stringlist2list fn(sl: list of string): list of ref Listnode 11 1
+        seq no type 10 2
+          call list of string 10 2
+            -> fn(args: string): list of string 12 1
+              name str String 1 0
+              name unquoted nothing 11 1
+            seq no type 10 1
+              name val string 0 0
+      seq no type 10 1
+        const (0) int 6 0
+ecom to: 
+* Var 8 0
+  name .t227 ref Var 0 0
+ecom: 
+name name string 0 0
+ecom to: 
+* string 8 0
+  + int 15 1
+    adr int 15 1
+      * Var 8 0
+        name .t227 ref Var 0 0
+    const (0) int 6 0
+ecom: 
+call list of ref Listnode 10 2
+  name stringlist2list fn(sl: list of string): list of ref Listnode 11 1
+  seq no type 10 2
+    call list of string 10 2
+      -> fn(args: string): list of string 12 1
+        name str String 1 0
+        name unquoted nothing 11 1
+      seq no type 10 1
+        name val string 0 0
+ecom to: 
+* list of ref Listnode 8 0
+  + int 15 1
+    adr int 15 1
+      * Var 8 0
+        name .t227 ref Var 0 0
+    const (8) int 6 0
+generate desc for big
+ecom: 
+call list of string 10 2
+  -> fn(args: string): list of string 12 1
+    name str String 1 0
+    name unquoted nothing 11 1
+  seq no type 10 1
+    name val string 0 0
+ecom to: 
+name .t231 list of string 0 0
+generate desc for big
+ecom: 
+name val string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b232 big 0 0
+    const (64) int 6 0
+ecom: 
+name .t231 list of string 0 0
+ecom to: 
+* list of string 8 0
+  + int 15 0
+    name .b230 big 0 0
+    const (64) int 6 0
+ecom: 
+= list of string 10 1
+  name .t231 list of string 0 0
+  name nil list of string 1 0
+ecom: 
+name nil list of string 1 0
+ecom to: 
+name .t231 list of string 0 0
+ecom: 
+const (0) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 1
+    adr int 15 1
+      * Var 8 0
+        name .t227 ref Var 0 0
+    const (16) int 6 0
+ecom: 
+* array of list of ref Var 8 0
+  name e ref Localenv 0 0
+ecom to: 
+* array of list of ref Var 8 0
+  + int 15 0
+    name .b228 big 0 0
+    const (64) int 6 0
+ecom: 
+name .t229 int 0 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b228 big 0 0
+    const (72) int 6 0
+ecom: 
+name .t227 ref Var 0 0
+ecom to: 
+* ref Var 8 0
+  + int 15 0
+    name .b228 big 0 0
+    const (80) int 6 0
+ecom: 
+= ref Var 10 1
+  name .t227 ref Var 0 0
+  name nil ref Var 1 0
+ecom: 
+name nil ref Var 1 0
+ecom to: 
+name .t227 ref Var 0 0
+ecom: 
+= string 10 1
+  * string 0 0
+    adr int 13 1
+      name name (string, string) 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+* string 0 0
+  adr int 13 1
+    name name (string, string) 0 0
+ecom: 
+= string 10 1
+  * string 0 0
+    + int 13 1
+      adr int 13 1
+        name name (string, string) 0 0
+      const t1 (8) int 6 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+* string 0 0
+  + int 13 1
+    adr int 13 1
+      name name (string, string) 0 0
+    const t1 (8) int 6 0
+ecom: 
+= string 10 1
+  name val string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name val string 0 0
+ecom: 
+= list of (string, string) 10 1
+  name vl list of (string, string) 0 0
+  tl list of (string, string) 10 1
+    name vl list of (string, string) 0 0
+ecom: 
+tl list of (string, string) 10 1
+  name vl list of (string, string) 0 0
+ecom to: 
+name vl list of (string, string) 0 0
+ecom: 
+= list of (string, string) 10 1
+  name vl list of (string, string) 0 0
+  name nil list of (string, string) 1 0
+ecom: 
+name nil list of (string, string) 1 0
+ecom to: 
+name vl list of (string, string) 0 0
+ecom: 
+= int 10 1
+  * int 8 0
+    + int 15 1
+      name e ref Localenv 0 0
+      const flags (16) int 6 0
+  * int 8 0
+    + int 15 1
+      name pushed ref Localenv 0 0
+      const flags (16) int 6 0
+ecom: 
+* int 8 0
+  + int 15 1
+    name pushed ref Localenv 0 0
+    const flags (16) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 1
+    name e ref Localenv 0 0
+    const flags (16) int 6 0
+ecom: 
+name e ref Localenv 0 0
+ecom to: 
+* ref Localenv 8 0
+  name .ret int 0 0
+fn: newlocalenv
+64: argument pushed ref Localenv ref 4
+72: local .t229 int ref 1
+80: local e ref Localenv ref 5
+88: local vl list of (string, string) ref 5
+96: local name string ref 3
+104: local val string ref 2
+112: local .b228 big ref 2
+120: local .b230 big ref 2
+128: local .b232 big ref 1
+136: local .t227 ref Localenv ref 1
+144: local .t231 list of string ref 1
+generate desc for newlocalenv
+descmap offset 0
+descmap pushed type ref Localenv offset 64 (d->offset=64 start=0) returns 64
+descmap .t229 type int offset 72 (d->offset=72 start=0) returns -1
+descmap e type ref Localenv offset 80 (d->offset=80 start=0) returns 80
+descmap vl type list of (string, string) offset 88 (d->offset=88 start=0) returns 88
+descmap name type string offset 96 (d->offset=96 start=0) returns 96
+descmap val type string offset 104 (d->offset=104 start=0) returns 104
+descmap .b228 type big offset 112 (d->offset=112 start=0) returns -1
+descmap .b230 type big offset 120 (d->offset=120 start=0) returns -1
+descmap .b232 type big offset 128 (d->offset=128 start=0) returns -1
+descmap .t227 type ref Localenv offset 136 (d->offset=136 start=0) returns 136
+descmap .t231 type list of string offset 144 (d->offset=144 start=0) returns 144
+fncom: copybuiltins 3 419ca8
+ecom: 
+= ref Builtins 10 2
+  name nb ref Builtins 0 0
+  ref ref Builtins 10 2
+    tuple Builtins 10 2
+      seq no type 10 2
+        array array of (string, list of Shellbuiltin) 10 1
+          * int 8 0
+            + int 15 1
+              name b ref Builtins 0 0
+              const n (8) int 6 0
+        seq no type 10 1
+          * int 8 0
+            + int 15 1
+              name b ref Builtins 0 0
+              const n (8) int 6 0
+ecom: 
+ref ref Builtins 10 2
+  tuple Builtins 10 2
+    seq no type 10 2
+      array array of (string, list of Shellbuiltin) 10 1
+        * int 8 0
+          + int 15 1
+            name b ref Builtins 0 0
+            const n (8) int 6 0
+      seq no type 10 1
+        * int 8 0
+          + int 15 1
+            name b ref Builtins 0 0
+            const n (8) int 6 0
+ecom to: 
+name nb ref Builtins 0 0
+generate desc for Builtins
+ecom: 
+tuple Builtins 10 2
+  seq no type 10 2
+    array array of (string, list of Shellbuiltin) 10 1
+      * int 8 0
+        + int 15 1
+          name b ref Builtins 0 0
+          const n (8) int 6 0
+    seq no type 10 1
+      * int 8 0
+        + int 15 1
+          name b ref Builtins 0 0
+          const n (8) int 6 0
+ecom to: 
+* Builtins 8 0
+  name .t233 ref Builtins 0 0
+ecom: 
+array array of (string, list of Shellbuiltin) 10 1
+  * int 8 0
+    + int 15 1
+      name b ref Builtins 0 0
+      const n (8) int 6 0
+ecom to: 
+* array of (string, list of Shellbuiltin) 8 0
+  + int 15 1
+    adr int 15 1
+      * Builtins 8 0
+        name .t233 ref Builtins 0 0
+    const (0) int 6 0
+generate desc for (string, list of Shellbuiltin)
+descmap adt offset 0
+descmap offset 0
+descmap t0 type string offset 0 (d->offset=0 start=0) returns 0
+descmap t1 type list of Shellbuiltin offset 8 (d->offset=8 start=0) returns 8
+generate desc for (string, list of Shellbuiltin)
+	desc	$-1,16,"c0"
+ecom: 
+* int 8 0
+  + int 15 1
+    name b ref Builtins 0 0
+    const n (8) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 1
+    adr int 15 1
+      * Builtins 8 0
+        name .t233 ref Builtins 0 0
+    const (8) int 6 0
+ecom: 
+= ref Builtins 10 1
+  name .t233 ref Builtins 0 0
+  name nil ref Builtins 1 0
+ecom: 
+name nil ref Builtins 1 0
+ecom to: 
+name .t233 ref Builtins 0 0
+ecom: 
+= array of (string, list of Shellbuiltin) 10 2
+  slice array of (string, list of Shellbuiltin) 10 1
+    * array of (string, list of Shellbuiltin) 8 0
+      name nb ref Builtins 0 0
+    seq no type 10 1
+      const (0) int 6 0
+      nothing no type 10 1
+  slice array of (string, list of Shellbuiltin) 10 1
+    * array of (string, list of Shellbuiltin) 8 0
+      name b ref Builtins 0 0
+    seq no type 10 1
+      const (0) int 6 0
+      * int 8 0
+        + int 15 1
+          name b ref Builtins 0 0
+          const n (8) int 6 0
+eacom: 
+slice array of (string, list of Shellbuiltin) 10 1
+  * array of (string, list of Shellbuiltin) 8 0
+    name b ref Builtins 0 0
+  seq no type 10 1
+    const (0) int 6 0
+    * int 8 0
+      + int 15 1
+        name b ref Builtins 0 0
+        const n (8) int 6 0
+ecom: 
+slice array of (string, list of Shellbuiltin) 10 1
+  * array of (string, list of Shellbuiltin) 8 0
+    name b ref Builtins 0 0
+  seq no type 10 1
+    const (0) int 6 0
+    * int 8 0
+      + int 15 1
+        name b ref Builtins 0 0
+        const n (8) int 6 0
+ecom to: 
+name .t233 array of (string, list of Shellbuiltin) 0 0
+ecom: 
+* int 8 0
+  + int 15 1
+    name b ref Builtins 0 0
+    const n (8) int 6 0
+ecom to: 
+name .t234 int 0 0
+ecom: 
+* array of (string, list of Shellbuiltin) 8 0
+  name b ref Builtins 0 0
+ecom to: 
+name .t233 array of (string, list of Shellbuiltin) 0 0
+ecom: 
+= array of (string, list of Shellbuiltin) 10 1
+  name .t233 array of (string, list of Shellbuiltin) 0 0
+  name nil array of (string, list of Shellbuiltin) 1 0
+ecom: 
+name nil array of (string, list of Shellbuiltin) 1 0
+ecom to: 
+name .t233 array of (string, list of Shellbuiltin) 0 0
+ecom: 
+name nb ref Builtins 0 0
+ecom to: 
+* ref Builtins 8 0
+  name .ret int 0 0
+fn: copybuiltins
+64: argument b ref Builtins ref 4
+72: local .t234 int ref 1
+80: local nb ref Builtins ref 3
+88: local .t233 ref Builtins ref 1
+generate desc for copybuiltins
+descmap offset 0
+descmap b type ref Builtins offset 64 (d->offset=64 start=0) returns 64
+descmap .t234 type int offset 72 (d->offset=72 start=0) returns -1
+descmap nb type ref Builtins offset 80 (d->offset=80 start=0) returns 80
+descmap .t233 type ref Builtins offset 88 (d->offset=88 start=0) returns 88
+fncom: findbuiltin 9 419d68
+ecom: 
+= int 10 1
+  name lo int 0 0
+  const (0) int 6 0
+ecom: 
+const (0) int 6 0
+ecom to: 
+name lo int 0 0
+ecom: 
+= int 10 1
+  name hi int 0 0
+  - int 10 1
+    * int 8 0
+      + int 15 1
+        name b ref Builtins 0 0
+        const n (8) int 6 0
+    const (1) int 6 0
+ecom: 
+- int 10 1
+  * int 8 0
+    + int 15 1
+      name b ref Builtins 0 0
+      const n (8) int 6 0
+  const (1) int 6 0
+ecom to: 
+name hi int 0 0
+ecom: 
+* int 8 0
+  + int 15 1
+    name b ref Builtins 0 0
+    const n (8) int 6 0
+ecom to: 
+name .t235 int 0 0
+ecom: 
+= int 10 1
+  name mid int 0 0
+  / int 10 1
+    + int 10 1
+      name lo int 0 0
+      name hi int 0 0
+    const (2) int 6 0
+ecom: 
+/ int 10 1
+  + int 10 1
+    name lo int 0 0
+    name hi int 0 0
+  const (2) int 6 0
+ecom to: 
+name mid int 0 0
+ecom: 
++ int 10 1
+  name lo int 0 0
+  name hi int 0 0
+ecom to: 
+name .t235 int 0 0
+ecom: 
+= (string, list of Shellbuiltin) 10 2
+  tuple (string, list of Shellbuiltin) 10 1
+    seq nothing 10 1
+      name bname string 0 0
+      seq nothing 10 1
+        name bmod list of Shellbuiltin 0 0
+  * (string, list of Shellbuiltin) 10 1
+    indx big 10 1
+      * array of (string, list of Shellbuiltin) 8 0
+        name b ref Builtins 0 0
+      name mid int 0 0
+ecom: 
+* (string, list of Shellbuiltin) 10 1
+  indx big 10 1
+    * array of (string, list of Shellbuiltin) 8 0
+      name b ref Builtins 0 0
+    name mid int 0 0
+ecom to: 
+name bname (string, list of Shellbuiltin) 0 0
+eacom: 
+* (string, list of Shellbuiltin) 10 1
+  indx big 10 1
+    * array of (string, list of Shellbuiltin) 8 0
+      name b ref Builtins 0 0
+    name mid int 0 0
+generate desc for big
+ecom: 
+indx big 10 1
+  * array of (string, list of Shellbuiltin) 8 0
+    name b ref Builtins 0 0
+  name mid int 0 0
+ecom to: 
+name .b236 big 0 0
+generate desc for (string, list of Shellbuiltin)
+descmap adt offset 0
+descmap offset 0
+descmap t0 type string offset 0 (d->offset=0 start=0) returns 0
+descmap t1 type list of Shellbuiltin offset 8 (d->offset=8 start=0) returns 8
+generate desc for (string, list of Shellbuiltin)
+	desc	$-1,16,"c0"
+ecom: 
+= int 10 1
+  name hi int 0 0
+  - int 10 1
+    name mid int 0 0
+    const (1) int 6 0
+ecom: 
+- int 10 1
+  name mid int 0 0
+  const (1) int 6 0
+ecom to: 
+name hi int 0 0
+ecom: 
+= int 10 1
+  name lo int 0 0
+  + int 15 1
+    name mid int 0 0
+    const (1) int 6 0
+ecom: 
++ int 15 1
+  name mid int 0 0
+  const (1) int 6 0
+ecom to: 
+name lo int 0 0
+ecom: 
+tuple (int, list of Shellbuiltin) 10 1
+  seq no type 10 1
+    name mid int 0 0
+    seq no type 10 1
+      name bmod list of Shellbuiltin 0 0
+ecom to: 
+* (int, list of Shellbuiltin) 8 0
+  name .ret int 0 0
+ecom: 
+name mid int 0 0
+ecom to: 
+* int 8 0
+  + int 15 1
+    adr int 15 1
+      * (int, list of Shellbuiltin) 8 0
+        name .ret int 0 0
+    const (0) int 6 0
+ecom: 
+name bmod list of Shellbuiltin 0 0
+ecom to: 
+* list of Shellbuiltin 8 0
+  + int 15 1
+    adr int 15 1
+      * (int, list of Shellbuiltin) 8 0
+        name .ret int 0 0
+    const (8) int 6 0
+ecom: 
+= string 10 1
+  * string 0 0
+    adr int 13 1
+      name bname (string, list of Shellbuiltin) 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+* string 0 0
+  adr int 13 1
+    name bname (string, list of Shellbuiltin) 0 0
+ecom: 
+= list of Shellbuiltin 10 1
+  * list of Shellbuiltin 0 0
+    + int 13 1
+      adr int 13 1
+        name bname (string, list of Shellbuiltin) 0 0
+      const t1 (8) int 6 0
+  name nil list of Shellbuiltin 1 0
+ecom: 
+name nil list of Shellbuiltin 1 0
+ecom to: 
+* list of Shellbuiltin 0 0
+  + int 13 1
+    adr int 13 1
+      name bname (string, list of Shellbuiltin) 0 0
+    const t1 (8) int 6 0
+ecom: 
+= list of Shellbuiltin 10 1
+  name bmod list of Shellbuiltin 0 0
+  name nil list of Shellbuiltin 1 0
+ecom: 
+name nil list of Shellbuiltin 1 0
+ecom to: 
+name bmod list of Shellbuiltin 0 0
+ecom: 
+tuple (int, polymorphic type) 10 1
+  seq no type 10 1
+    name lo int 0 0
+    seq no type 10 1
+      name nil polymorphic type 1 0
+ecom to: 
+* (int, polymorphic type) 8 0
+  name .ret int 0 0
+ecom: 
+name lo int 0 0
+ecom to: 
+* int 8 0
+  + int 15 1
+    adr int 15 1
+      * (int, polymorphic type) 8 0
+        name .ret int 0 0
+    const (0) int 6 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* polymorphic type 8 0
+  + int 15 1
+    adr int 15 1
+      * (int, polymorphic type) 8 0
+        name .ret int 0 0
+    const (8) int 6 0
+fn: findbuiltin
+64: argument b ref Builtins ref 2
+72: argument name string ref 2
+80: local lo int ref 5
+84: local mid int ref 5
+88: local hi int ref 4
+92: local .t235 int ref 1
+96: local bname string ref 3
+104: local bmod list of Shellbuiltin ref 2
+112: local .b236 big ref 1
+generate desc for findbuiltin
+descmap offset 0
+descmap b type ref Builtins offset 64 (d->offset=64 start=0) returns 64
+descmap name type string offset 72 (d->offset=72 start=0) returns 72
+descmap lo type int offset 80 (d->offset=80 start=0) returns -1
+descmap mid type int offset 84 (d->offset=84 start=0) returns -1
+descmap hi type int offset 88 (d->offset=88 start=0) returns -1
+descmap .t235 type int offset 92 (d->offset=92 start=0) returns -1
+descmap bname type string offset 96 (d->offset=96 start=0) returns 96
+descmap bmod type list of Shellbuiltin offset 104 (d->offset=104 start=0) returns 104
+descmap .b236 type big offset 112 (d->offset=112 start=0) returns -1
+fncom: removebuiltin 3 419e28
+ecom: 
+= (int, list of Shellbuiltin) 10 2
+  tuple (int, list of Shellbuiltin) 10 1
+    seq nothing 10 1
+      name n int 0 0
+      seq nothing 10 1
+        name bmods list of Shellbuiltin 0 0
+  call (int, list of Shellbuiltin) 10 2
+    name findbuiltin fn(b: ref Builtins, name: string): (int, list of Shellbuiltin) 11 1
+    seq no type 10 1
+      name b ref Builtins 0 0
+      seq no type 10 1
+        name name string 0 0
+ecom: 
+call (int, list of Shellbuiltin) 10 2
+  name findbuiltin fn(b: ref Builtins, name: string): (int, list of Shellbuiltin) 11 1
+  seq no type 10 1
+    name b ref Builtins 0 0
+    seq no type 10 1
+      name name string 0 0
+ecom to: 
+name n (int, list of Shellbuiltin) 0 0
+generate desc for big
+ecom: 
+name b ref Builtins 0 0
+ecom to: 
+* ref Builtins 8 0
+  + int 15 0
+    name .b237 big 0 0
+    const (64) int 6 0
+ecom: 
+name name string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b237 big 0 0
+    const (72) int 6 0
+eacom: 
+hd Shellbuiltin 10 1
+  name bmods list of Shellbuiltin 0 0
+ecom: 
+hd Shellbuiltin 10 1
+  name bmods list of Shellbuiltin 0 0
+ecom to: 
+name .t238 Shellbuiltin 0 0
+ecom: 
+= Shellbuiltin 10 1
+  name .t238 Shellbuiltin 0 0
+  name nil Shellbuiltin 1 0
+ecom: 
+name nil Shellbuiltin 1 0
+ecom to: 
+name .t238 Shellbuiltin 0 0
+eacom: 
+tl list of Shellbuiltin 10 1
+  name bmods list of Shellbuiltin 0 0
+ecom: 
+tl list of Shellbuiltin 10 1
+  name bmods list of Shellbuiltin 0 0
+ecom to: 
+name .t238 list of Shellbuiltin 0 0
+ecom: 
+= list of Shellbuiltin 10 1
+  name .t238 list of Shellbuiltin 0 0
+  name nil list of Shellbuiltin 1 0
+ecom: 
+name nil list of Shellbuiltin 1 0
+ecom to: 
+name .t238 list of Shellbuiltin 0 0
+ecom: 
+= (string, list of Shellbuiltin) 10 2
+  * (string, list of Shellbuiltin) 10 1
+    indx big 10 1
+      * array of (string, list of Shellbuiltin) 8 0
+        name b ref Builtins 0 0
+      name n int 0 0
+  tuple (string, list of Shellbuiltin) 10 1
+    seq no type 10 1
+      name name string 0 0
+      seq no type 10 1
+        tl list of Shellbuiltin 10 1
+          name bmods list of Shellbuiltin 0 0
+generate desc for (string, list of Shellbuiltin)
+descmap adt offset 0
+descmap offset 0
+descmap t0 type string offset 0 (d->offset=0 start=0) returns 0
+descmap t1 type list of Shellbuiltin offset 8 (d->offset=8 start=0) returns 8
+generate desc for (string, list of Shellbuiltin)
+	desc	$-1,16,"c0"
+ecom: 
+tuple (string, list of Shellbuiltin) 10 1
+  seq no type 10 1
+    name name string 0 0
+    seq no type 10 1
+      tl list of Shellbuiltin 10 1
+        name bmods list of Shellbuiltin 0 0
+ecom to: 
+name .b239 (string, list of Shellbuiltin) 0 0
+ecom: 
+name name string 0 0
+ecom to: 
+* string 0 0
+  + int 13 1
+    adr int 13 1
+      name .b239 (string, list of Shellbuiltin) 0 0
+    const (0) int 6 0
+ecom: 
+tl list of Shellbuiltin 10 1
+  name bmods list of Shellbuiltin 0 0
+ecom to: 
+* list of Shellbuiltin 0 0
+  + int 13 1
+    adr int 13 1
+      name .b239 (string, list of Shellbuiltin) 0 0
+    const (8) int 6 0
+eacom: 
+* (string, list of Shellbuiltin) 10 1
+  indx big 10 1
+    * array of (string, list of Shellbuiltin) 8 0
+      name b ref Builtins 0 0
+    name n int 0 0
+generate desc for big
+ecom: 
+indx big 10 1
+  * array of (string, list of Shellbuiltin) 8 0
+    name b ref Builtins 0 0
+  name n int 0 0
+ecom to: 
+name .b237 big 0 0
+ecom: 
+name .b239 (string, list of Shellbuiltin) 0 0
+ecom to: 
+* (string, list of Shellbuiltin) 8 1
+  name .b237 big 0 0
+generate desc for (string, list of Shellbuiltin)
+ecom: 
+= string 10 1
+  * string 0 0
+    adr int 13 1
+      name .b239 (string, list of Shellbuiltin) 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+* string 0 0
+  adr int 13 1
+    name .b239 (string, list of Shellbuiltin) 0 0
+ecom: 
+= list of Shellbuiltin 10 1
+  * list of Shellbuiltin 0 0
+    + int 13 1
+      adr int 13 1
+        name .b239 (string, list of Shellbuiltin) 0 0
+      const t1 (8) int 6 0
+  name nil list of Shellbuiltin 1 0
+ecom: 
+name nil list of Shellbuiltin 1 0
+ecom to: 
+* list of Shellbuiltin 0 0
+  + int 13 1
+    adr int 13 1
+      name .b239 (string, list of Shellbuiltin) 0 0
+    const t1 (8) int 6 0
+ecom: 
+= array of (string, list of Shellbuiltin) 10 2
+  slice array of (string, list of Shellbuiltin) 10 1
+    * array of (string, list of Shellbuiltin) 8 0
+      name b ref Builtins 0 0
+    seq no type 10 1
+      name n int 0 0
+      nothing no type 10 1
+  slice array of (string, list of Shellbuiltin) 10 1
+    * array of (string, list of Shellbuiltin) 8 0
+      name b ref Builtins 0 0
+    seq no type 10 1
+      + int 15 1
+        name n int 0 0
+        const (1) int 6 0
+      * int 8 0
+        + int 15 1
+          name b ref Builtins 0 0
+          const n (8) int 6 0
+eacom: 
+slice array of (string, list of Shellbuiltin) 10 1
+  * array of (string, list of Shellbuiltin) 8 0
+    name b ref Builtins 0 0
+  seq no type 10 1
+    + int 15 1
+      name n int 0 0
+      const (1) int 6 0
+    * int 8 0
+      + int 15 1
+        name b ref Builtins 0 0
+        const n (8) int 6 0
+ecom: 
+slice array of (string, list of Shellbuiltin) 10 1
+  * array of (string, list of Shellbuiltin) 8 0
+    name b ref Builtins 0 0
+  seq no type 10 1
+    + int 15 1
+      name n int 0 0
+      const (1) int 6 0
+    * int 8 0
+      + int 15 1
+        name b ref Builtins 0 0
+        const n (8) int 6 0
+ecom to: 
+name .t238 array of (string, list of Shellbuiltin) 0 0
+eacom: 
++ int 15 1
+  name n int 0 0
+  const (1) int 6 0
+ecom: 
++ int 15 1
+  name n int 0 0
+  const (1) int 6 0
+ecom to: 
+name .t240 int 0 0
+ecom: 
+* int 8 0
+  + int 15 1
+    name b ref Builtins 0 0
+    const n (8) int 6 0
+ecom to: 
+name .t241 int 0 0
+ecom: 
+* array of (string, list of Shellbuiltin) 8 0
+  name b ref Builtins 0 0
+ecom to: 
+name .t238 array of (string, list of Shellbuiltin) 0 0
+ecom: 
+= array of (string, list of Shellbuiltin) 10 1
+  name .t238 array of (string, list of Shellbuiltin) 0 0
+  name nil array of (string, list of Shellbuiltin) 1 0
+ecom: 
+name nil array of (string, list of Shellbuiltin) 1 0
+ecom to: 
+name .t238 array of (string, list of Shellbuiltin) 0 0
+ecom: 
+= (polymorphic type, polymorphic type) 10 2
+  * (polymorphic type, polymorphic type) 10 1
+    indx big 10 1
+      * array of (string, list of Shellbuiltin) 8 0
+        name b ref Builtins 0 0
+      -= int 10 1
+        * int 8 0
+          + int 15 1
+            name b ref Builtins 0 0
+            const n (8) int 6 0
+        const (1) int 6 0
+  tuple (polymorphic type, polymorphic type) 10 1
+    seq no type 10 1
+      name nil polymorphic type 1 0
+      seq no type 10 1
+        name nil polymorphic type 1 0
+generate desc for (polymorphic type, polymorphic type)
+descmap adt offset 0
+descmap offset 0
+descmap t0 type polymorphic type offset 0 (d->offset=0 start=0) returns 0
+descmap t1 type polymorphic type offset 8 (d->offset=8 start=0) returns 8
+generate desc for (polymorphic type, polymorphic type)
+	desc	$-1,16,"c0"
+ecom: 
+tuple (polymorphic type, polymorphic type) 10 1
+  seq no type 10 1
+    name nil polymorphic type 1 0
+    seq no type 10 1
+      name nil polymorphic type 1 0
+ecom to: 
+name .b239 (polymorphic type, polymorphic type) 0 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* polymorphic type 0 0
+  + int 13 1
+    adr int 13 1
+      name .b239 (polymorphic type, polymorphic type) 0 0
+    const (0) int 6 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* polymorphic type 0 0
+  + int 13 1
+    adr int 13 1
+      name .b239 (polymorphic type, polymorphic type) 0 0
+    const (8) int 6 0
+eacom: 
+* (polymorphic type, polymorphic type) 10 1
+  indx big 10 1
+    * array of (string, list of Shellbuiltin) 8 0
+      name b ref Builtins 0 0
+    -= int 10 1
+      * int 8 0
+        + int 15 1
+          name b ref Builtins 0 0
+          const n (8) int 6 0
+      const (1) int 6 0
+generate desc for big
+ecom: 
+indx big 10 1
+  * array of (string, list of Shellbuiltin) 8 0
+    name b ref Builtins 0 0
+  -= int 10 1
+    * int 8 0
+      + int 15 1
+        name b ref Builtins 0 0
+        const n (8) int 6 0
+    const (1) int 6 0
+ecom to: 
+name .b237 big 0 0
+eacom: 
+-= int 10 1
+  * int 8 0
+    + int 15 1
+      name b ref Builtins 0 0
+      const n (8) int 6 0
+  const (1) int 6 0
+ecom: 
+-= int 10 1
+  * int 8 0
+    + int 15 1
+      name b ref Builtins 0 0
+      const n (8) int 6 0
+  const (1) int 6 0
+ecom to: 
+name .t241 int 0 0
+ecom: 
+name .b239 (polymorphic type, polymorphic type) 0 0
+ecom to: 
+* (polymorphic type, polymorphic type) 8 1
+  name .b237 big 0 0
+generate desc for (polymorphic type, polymorphic type)
+ecom: 
+= polymorphic type 10 1
+  * polymorphic type 0 0
+    adr int 13 1
+      name .b239 (polymorphic type, polymorphic type) 0 0
+  name nil polymorphic type 1 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* polymorphic type 0 0
+  adr int 13 1
+    name .b239 (polymorphic type, polymorphic type) 0 0
+ecom: 
+= polymorphic type 10 1
+  * polymorphic type 0 0
+    + int 13 1
+      adr int 13 1
+        name .b239 (polymorphic type, polymorphic type) 0 0
+      const t1 (8) int 6 0
+  name nil polymorphic type 1 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* polymorphic type 0 0
+  + int 13 1
+    adr int 13 1
+      name .b239 (polymorphic type, polymorphic type) 0 0
+    const t1 (8) int 6 0
+fn: removebuiltin
+64: argument b ref Builtins ref 7
+72: argument name string ref 2
+80: argument mod Shellbuiltin ref 1
+88: local n int ref 4
+96: local bmods list of Shellbuiltin ref 5
+104: local .t240 int ref 1
+108: local .t241 int ref 1
+112: local .b237 big ref 3
+120: local .b239 (string, list of Shellbuiltin) ref 2
+136: local .t238 Shellbuiltin ref 1
+generate desc for removebuiltin
+descmap offset 0
+descmap b type ref Builtins offset 64 (d->offset=64 start=0) returns 64
+descmap name type string offset 72 (d->offset=72 start=0) returns 72
+descmap mod type Shellbuiltin offset 80 (d->offset=80 start=0) returns 80
+descmap n type int offset 88 (d->offset=88 start=0) returns -1
+descmap bmods type list of Shellbuiltin offset 96 (d->offset=96 start=0) returns 96
+descmap .t240 type int offset 104 (d->offset=104 start=0) returns -1
+descmap .t241 type int offset 108 (d->offset=108 start=0) returns -1
+descmap .b237 type big offset 112 (d->offset=112 start=0) returns -1
+descmap adt offset 120
+descmap offset 120
+descmap t0 type string offset 120 (d->offset=0 start=120) returns 120
+descmap t1 type list of Shellbuiltin offset 128 (d->offset=8 start=120) returns 128
+descmap .b239 type (string, list of Shellbuiltin) offset 120 (d->offset=120 start=0) returns 128
+descmap .t238 type Shellbuiltin offset 136 (d->offset=136 start=0) returns 136
+fncom: addbuiltin 3 419ee8
+ecom: 
+= (int, list of Shellbuiltin) 10 2
+  tuple (int, list of Shellbuiltin) 10 1
+    seq nothing 10 1
+      name n int 0 0
+      seq nothing 10 1
+        name bmods list of Shellbuiltin 0 0
+  call (int, list of Shellbuiltin) 10 2
+    name findbuiltin fn(b: ref Builtins, name: string): (int, list of Shellbuiltin) 11 1
+    seq no type 10 1
+      name b ref Builtins 0 0
+      seq no type 10 1
+        name name string 0 0
+ecom: 
+call (int, list of Shellbuiltin) 10 2
+  name findbuiltin fn(b: ref Builtins, name: string): (int, list of Shellbuiltin) 11 1
+  seq no type 10 1
+    name b ref Builtins 0 0
+    seq no type 10 1
+      name name string 0 0
+ecom to: 
+name n (int, list of Shellbuiltin) 0 0
+generate desc for big
+ecom: 
+name b ref Builtins 0 0
+ecom to: 
+* ref Builtins 8 0
+  + int 15 0
+    name .b242 big 0 0
+    const (64) int 6 0
+ecom: 
+name name string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b242 big 0 0
+    const (72) int 6 0
+eacom: 
+hd Shellbuiltin 10 1
+  name bmods list of Shellbuiltin 0 0
+ecom: 
+hd Shellbuiltin 10 1
+  name bmods list of Shellbuiltin 0 0
+ecom to: 
+name .t243 Shellbuiltin 0 0
+ecom: 
+= Shellbuiltin 10 1
+  name .t243 Shellbuiltin 0 0
+  name nil Shellbuiltin 1 0
+ecom: 
+name nil Shellbuiltin 1 0
+ecom to: 
+name .t243 Shellbuiltin 0 0
+ecom: 
+= (string, list of Shellbuiltin) 10 2
+  * (string, list of Shellbuiltin) 10 1
+    indx big 10 1
+      * array of (string, list of Shellbuiltin) 8 0
+        name b ref Builtins 0 0
+      name n int 0 0
+  tuple (string, list of Shellbuiltin) 10 1
+    seq no type 10 1
+      name name string 0 0
+      seq no type 10 1
+        :: list of Shellbuiltin 10 1
+          name mod Shellbuiltin 0 0
+          name bmods list of Shellbuiltin 0 0
+generate desc for (string, list of Shellbuiltin)
+descmap adt offset 0
+descmap offset 0
+descmap t0 type string offset 0 (d->offset=0 start=0) returns 0
+descmap t1 type list of Shellbuiltin offset 8 (d->offset=8 start=0) returns 8
+generate desc for (string, list of Shellbuiltin)
+	desc	$-1,16,"c0"
+ecom: 
+tuple (string, list of Shellbuiltin) 10 1
+  seq no type 10 1
+    name name string 0 0
+    seq no type 10 1
+      :: list of Shellbuiltin 10 1
+        name mod Shellbuiltin 0 0
+        name bmods list of Shellbuiltin 0 0
+ecom to: 
+name .b244 (string, list of Shellbuiltin) 0 0
+ecom: 
+name name string 0 0
+ecom to: 
+* string 0 0
+  + int 13 1
+    adr int 13 1
+      name .b244 (string, list of Shellbuiltin) 0 0
+    const (0) int 6 0
+ecom: 
+:: list of Shellbuiltin 10 1
+  name mod Shellbuiltin 0 0
+  name bmods list of Shellbuiltin 0 0
+ecom to: 
+* list of Shellbuiltin 0 0
+  + int 13 1
+    adr int 13 1
+      name .b244 (string, list of Shellbuiltin) 0 0
+    const (8) int 6 0
+ecom: 
+name bmods list of Shellbuiltin 0 0
+ecom to: 
+name .t243 list of Shellbuiltin 0 0
+ecom: 
+= list of Shellbuiltin 10 1
+  name .t243 list of Shellbuiltin 0 0
+  name nil list of Shellbuiltin 1 0
+ecom: 
+name nil list of Shellbuiltin 1 0
+ecom to: 
+name .t243 list of Shellbuiltin 0 0
+eacom: 
+* (string, list of Shellbuiltin) 10 1
+  indx big 10 1
+    * array of (string, list of Shellbuiltin) 8 0
+      name b ref Builtins 0 0
+    name n int 0 0
+generate desc for big
+ecom: 
+indx big 10 1
+  * array of (string, list of Shellbuiltin) 8 0
+    name b ref Builtins 0 0
+  name n int 0 0
+ecom to: 
+name .b242 big 0 0
+ecom: 
+name .b244 (string, list of Shellbuiltin) 0 0
+ecom to: 
+* (string, list of Shellbuiltin) 8 1
+  name .b242 big 0 0
+generate desc for (string, list of Shellbuiltin)
+ecom: 
+= string 10 1
+  * string 0 0
+    adr int 13 1
+      name .b244 (string, list of Shellbuiltin) 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+* string 0 0
+  adr int 13 1
+    name .b244 (string, list of Shellbuiltin) 0 0
+ecom: 
+= list of Shellbuiltin 10 1
+  * list of Shellbuiltin 0 0
+    + int 13 1
+      adr int 13 1
+        name .b244 (string, list of Shellbuiltin) 0 0
+      const t1 (8) int 6 0
+  name nil list of Shellbuiltin 1 0
+ecom: 
+name nil list of Shellbuiltin 1 0
+ecom to: 
+* list of Shellbuiltin 0 0
+  + int 13 1
+    adr int 13 1
+      name .b244 (string, list of Shellbuiltin) 0 0
+    const t1 (8) int 6 0
+ecom: 
+= (string, list of Shellbuiltin) 10 2
+  * (string, list of Shellbuiltin) 10 1
+    indx big 10 1
+      * array of (string, list of Shellbuiltin) 8 0
+        name b ref Builtins 0 0
+      name n int 0 0
+  tuple (string, list of Shellbuiltin) 10 1
+    seq no type 10 1
+      name name string 0 0
+      seq no type 10 1
+        :: list of Shellbuiltin 10 1
+          name mod Shellbuiltin 0 0
+          name nil polymorphic type 1 0
+generate desc for (string, list of Shellbuiltin)
+descmap adt offset 0
+descmap offset 0
+descmap t0 type string offset 0 (d->offset=0 start=0) returns 0
+descmap t1 type list of Shellbuiltin offset 8 (d->offset=8 start=0) returns 8
+generate desc for (string, list of Shellbuiltin)
+	desc	$-1,16,"c0"
+ecom: 
+tuple (string, list of Shellbuiltin) 10 1
+  seq no type 10 1
+    name name string 0 0
+    seq no type 10 1
+      :: list of Shellbuiltin 10 1
+        name mod Shellbuiltin 0 0
+        name nil polymorphic type 1 0
+ecom to: 
+name .b244 (string, list of Shellbuiltin) 0 0
+ecom: 
+name name string 0 0
+ecom to: 
+* string 0 0
+  + int 13 1
+    adr int 13 1
+      name .b244 (string, list of Shellbuiltin) 0 0
+    const (0) int 6 0
+ecom: 
+:: list of Shellbuiltin 10 1
+  name mod Shellbuiltin 0 0
+  name nil polymorphic type 1 0
+ecom to: 
+* list of Shellbuiltin 0 0
+  + int 13 1
+    adr int 13 1
+      name .b244 (string, list of Shellbuiltin) 0 0
+    const (8) int 6 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+name .t243 list of Shellbuiltin 0 0
+ecom: 
+= list of Shellbuiltin 10 1
+  name .t243 list of Shellbuiltin 0 0
+  name nil list of Shellbuiltin 1 0
+ecom: 
+name nil list of Shellbuiltin 1 0
+ecom to: 
+name .t243 list of Shellbuiltin 0 0
+eacom: 
+* (string, list of Shellbuiltin) 10 1
+  indx big 10 1
+    * array of (string, list of Shellbuiltin) 8 0
+      name b ref Builtins 0 0
+    name n int 0 0
+generate desc for big
+ecom: 
+indx big 10 1
+  * array of (string, list of Shellbuiltin) 8 0
+    name b ref Builtins 0 0
+  name n int 0 0
+ecom to: 
+name .b242 big 0 0
+ecom: 
+name .b244 (string, list of Shellbuiltin) 0 0
+ecom to: 
+* (string, list of Shellbuiltin) 8 1
+  name .b242 big 0 0
+generate desc for (string, list of Shellbuiltin)
+ecom: 
+= string 10 1
+  * string 0 0
+    adr int 13 1
+      name .b244 (string, list of Shellbuiltin) 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+* string 0 0
+  adr int 13 1
+    name .b244 (string, list of Shellbuiltin) 0 0
+ecom: 
+= list of Shellbuiltin 10 1
+  * list of Shellbuiltin 0 0
+    + int 13 1
+      adr int 13 1
+        name .b244 (string, list of Shellbuiltin) 0 0
+      const t1 (8) int 6 0
+  name nil list of Shellbuiltin 1 0
+ecom: 
+name nil list of Shellbuiltin 1 0
+ecom to: 
+* list of Shellbuiltin 0 0
+  + int 13 1
+    adr int 13 1
+      name .b244 (string, list of Shellbuiltin) 0 0
+    const t1 (8) int 6 0
+eacom: 
+len int 10 1
+  * array of (string, list of Shellbuiltin) 8 0
+    name b ref Builtins 0 0
+ecom: 
+len int 10 1
+  * array of (string, list of Shellbuiltin) 8 0
+    name b ref Builtins 0 0
+ecom to: 
+name .t245 int 0 0
+ecom: 
+* int 8 0
+  + int 15 1
+    name b ref Builtins 0 0
+    const n (8) int 6 0
+ecom to: 
+name .t246 int 0 0
+ecom: 
+= array of (string, list of Shellbuiltin) 10 1
+  name nb array of (string, list of Shellbuiltin) 0 0
+  array array of (string, list of Shellbuiltin) 10 1
+    + int 10 1
+      * int 8 0
+        + int 15 1
+          name b ref Builtins 0 0
+          const n (8) int 6 0
+      const (10) int 6 0
+ecom: 
+array array of (string, list of Shellbuiltin) 10 1
+  + int 10 1
+    * int 8 0
+      + int 15 1
+        name b ref Builtins 0 0
+        const n (8) int 6 0
+    const (10) int 6 0
+ecom to: 
+name nb array of (string, list of Shellbuiltin) 0 0
+eacom: 
++ int 10 1
+  * int 8 0
+    + int 15 1
+      name b ref Builtins 0 0
+      const n (8) int 6 0
+  const (10) int 6 0
+ecom: 
++ int 10 1
+  * int 8 0
+    + int 15 1
+      name b ref Builtins 0 0
+      const n (8) int 6 0
+  const (10) int 6 0
+ecom to: 
+name .t246 int 0 0
+generate desc for (string, list of Shellbuiltin)
+descmap adt offset 0
+descmap offset 0
+descmap t0 type string offset 0 (d->offset=0 start=0) returns 0
+descmap t1 type list of Shellbuiltin offset 8 (d->offset=8 start=0) returns 8
+generate desc for (string, list of Shellbuiltin)
+	desc	$-1,16,"c0"
+ecom: 
+= array of (string, list of Shellbuiltin) 10 2
+  slice array of (string, list of Shellbuiltin) 10 1
+    name nb array of (string, list of Shellbuiltin) 0 0
+    seq no type 10 1
+      const (0) int 6 0
+      nothing no type 10 1
+  slice array of (string, list of Shellbuiltin) 10 1
+    * array of (string, list of Shellbuiltin) 8 0
+      name b ref Builtins 0 0
+    seq no type 10 1
+      const (0) int 6 0
+      * int 8 0
+        + int 15 1
+          name b ref Builtins 0 0
+          const n (8) int 6 0
+eacom: 
+slice array of (string, list of Shellbuiltin) 10 1
+  * array of (string, list of Shellbuiltin) 8 0
+    name b ref Builtins 0 0
+  seq no type 10 1
+    const (0) int 6 0
+    * int 8 0
+      + int 15 1
+        name b ref Builtins 0 0
+        const n (8) int 6 0
+ecom: 
+slice array of (string, list of Shellbuiltin) 10 1
+  * array of (string, list of Shellbuiltin) 8 0
+    name b ref Builtins 0 0
+  seq no type 10 1
+    const (0) int 6 0
+    * int 8 0
+      + int 15 1
+        name b ref Builtins 0 0
+        const n (8) int 6 0
+ecom to: 
+name .t243 array of (string, list of Shellbuiltin) 0 0
+ecom: 
+* int 8 0
+  + int 15 1
+    name b ref Builtins 0 0
+    const n (8) int 6 0
+ecom to: 
+name .t246 int 0 0
+ecom: 
+* array of (string, list of Shellbuiltin) 8 0
+  name b ref Builtins 0 0
+ecom to: 
+name .t243 array of (string, list of Shellbuiltin) 0 0
+ecom: 
+= array of (string, list of Shellbuiltin) 10 1
+  name .t243 array of (string, list of Shellbuiltin) 0 0
+  name nil array of (string, list of Shellbuiltin) 1 0
+ecom: 
+name nil array of (string, list of Shellbuiltin) 1 0
+ecom to: 
+name .t243 array of (string, list of Shellbuiltin) 0 0
+ecom: 
+= array of (string, list of Shellbuiltin) 10 1
+  * array of (string, list of Shellbuiltin) 8 0
+    name b ref Builtins 0 0
+  name nb array of (string, list of Shellbuiltin) 0 0
+ecom: 
+name nb array of (string, list of Shellbuiltin) 0 0
+ecom to: 
+* array of (string, list of Shellbuiltin) 8 0
+  name b ref Builtins 0 0
+ecom: 
+= array of (string, list of Shellbuiltin) 10 1
+  name nb array of (string, list of Shellbuiltin) 0 0
+  name nil array of (string, list of Shellbuiltin) 1 0
+ecom: 
+name nil array of (string, list of Shellbuiltin) 1 0
+ecom to: 
+name nb array of (string, list of Shellbuiltin) 0 0
+ecom: 
+= array of (string, list of Shellbuiltin) 10 2
+  slice array of (string, list of Shellbuiltin) 10 2
+    * array of (string, list of Shellbuiltin) 8 0
+      name b ref Builtins 0 0
+    seq no type 10 2
+      + int 15 1
+        name n int 0 0
+        const (1) int 6 0
+      nothing no type 10 1
+  slice array of (string, list of Shellbuiltin) 10 1
+    * array of (string, list of Shellbuiltin) 8 0
+      name b ref Builtins 0 0
+    seq no type 10 1
+      name n int 0 0
+      * int 8 0
+        + int 15 1
+          name b ref Builtins 0 0
+          const n (8) int 6 0
+ecom: 
++ int 15 1
+  name n int 0 0
+  const (1) int 6 0
+ecom to: 
+name .t246 int 0 0
+eacom: 
+slice array of (string, list of Shellbuiltin) 10 1
+  * array of (string, list of Shellbuiltin) 8 0
+    name b ref Builtins 0 0
+  seq no type 10 1
+    name n int 0 0
+    * int 8 0
+      + int 15 1
+        name b ref Builtins 0 0
+        const n (8) int 6 0
+ecom: 
+slice array of (string, list of Shellbuiltin) 10 1
+  * array of (string, list of Shellbuiltin) 8 0
+    name b ref Builtins 0 0
+  seq no type 10 1
+    name n int 0 0
+    * int 8 0
+      + int 15 1
+        name b ref Builtins 0 0
+        const n (8) int 6 0
+ecom to: 
+name .t243 array of (string, list of Shellbuiltin) 0 0
+ecom: 
+* int 8 0
+  + int 15 1
+    name b ref Builtins 0 0
+    const n (8) int 6 0
+ecom to: 
+name .t245 int 0 0
+ecom: 
+* array of (string, list of Shellbuiltin) 8 0
+  name b ref Builtins 0 0
+ecom to: 
+name .t243 array of (string, list of Shellbuiltin) 0 0
+ecom: 
+= array of (string, list of Shellbuiltin) 10 1
+  name .t243 array of (string, list of Shellbuiltin) 0 0
+  name nil array of (string, list of Shellbuiltin) 1 0
+ecom: 
+name nil array of (string, list of Shellbuiltin) 1 0
+ecom to: 
+name .t243 array of (string, list of Shellbuiltin) 0 0
+ecom: 
+= (string, list of Shellbuiltin) 10 2
+  * (string, list of Shellbuiltin) 10 1
+    indx big 10 1
+      * array of (string, list of Shellbuiltin) 8 0
+        name b ref Builtins 0 0
+      name n int 0 0
+  tuple (string, list of Shellbuiltin) 10 1
+    seq no type 10 1
+      name name string 0 0
+      seq no type 10 1
+        :: list of Shellbuiltin 10 1
+          name mod Shellbuiltin 0 0
+          name nil polymorphic type 1 0
+generate desc for (string, list of Shellbuiltin)
+descmap adt offset 0
+descmap offset 0
+descmap t0 type string offset 0 (d->offset=0 start=0) returns 0
+descmap t1 type list of Shellbuiltin offset 8 (d->offset=8 start=0) returns 8
+generate desc for (string, list of Shellbuiltin)
+	desc	$-1,16,"c0"
+ecom: 
+tuple (string, list of Shellbuiltin) 10 1
+  seq no type 10 1
+    name name string 0 0
+    seq no type 10 1
+      :: list of Shellbuiltin 10 1
+        name mod Shellbuiltin 0 0
+        name nil polymorphic type 1 0
+ecom to: 
+name .b244 (string, list of Shellbuiltin) 0 0
+ecom: 
+name name string 0 0
+ecom to: 
+* string 0 0
+  + int 13 1
+    adr int 13 1
+      name .b244 (string, list of Shellbuiltin) 0 0
+    const (0) int 6 0
+ecom: 
+:: list of Shellbuiltin 10 1
+  name mod Shellbuiltin 0 0
+  name nil polymorphic type 1 0
+ecom to: 
+* list of Shellbuiltin 0 0
+  + int 13 1
+    adr int 13 1
+      name .b244 (string, list of Shellbuiltin) 0 0
+    const (8) int 6 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+name .t243 list of Shellbuiltin 0 0
+ecom: 
+= list of Shellbuiltin 10 1
+  name .t243 list of Shellbuiltin 0 0
+  name nil list of Shellbuiltin 1 0
+ecom: 
+name nil list of Shellbuiltin 1 0
+ecom to: 
+name .t243 list of Shellbuiltin 0 0
+eacom: 
+* (string, list of Shellbuiltin) 10 1
+  indx big 10 1
+    * array of (string, list of Shellbuiltin) 8 0
+      name b ref Builtins 0 0
+    name n int 0 0
+generate desc for big
+ecom: 
+indx big 10 1
+  * array of (string, list of Shellbuiltin) 8 0
+    name b ref Builtins 0 0
+  name n int 0 0
+ecom to: 
+name .b242 big 0 0
+ecom: 
+name .b244 (string, list of Shellbuiltin) 0 0
+ecom to: 
+* (string, list of Shellbuiltin) 8 1
+  name .b242 big 0 0
+generate desc for (string, list of Shellbuiltin)
+ecom: 
+= string 10 1
+  * string 0 0
+    adr int 13 1
+      name .b244 (string, list of Shellbuiltin) 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+* string 0 0
+  adr int 13 1
+    name .b244 (string, list of Shellbuiltin) 0 0
+ecom: 
+= list of Shellbuiltin 10 1
+  * list of Shellbuiltin 0 0
+    + int 13 1
+      adr int 13 1
+        name .b244 (string, list of Shellbuiltin) 0 0
+      const t1 (8) int 6 0
+  name nil list of Shellbuiltin 1 0
+ecom: 
+name nil list of Shellbuiltin 1 0
+ecom to: 
+* list of Shellbuiltin 0 0
+  + int 13 1
+    adr int 13 1
+      name .b244 (string, list of Shellbuiltin) 0 0
+    const t1 (8) int 6 0
+ecom: 
+++ int 10 1
+  * int 8 0
+    + int 15 1
+      name b ref Builtins 0 0
+      const n (8) int 6 0
+  const (1) int 6 0
+fn: addbuiltin
+64: argument b ref Builtins ref 14
+72: argument name string ref 5
+80: argument mod Shellbuiltin ref 5
+88: local n int ref 6
+96: local bmods list of Shellbuiltin ref 4
+104: local .t245 int ref 1
+108: local .t246 int ref 1
+112: local .b242 big ref 4
+120: local nb array of (string, list of Shellbuiltin) ref 3
+128: local .b244 (string, list of Shellbuiltin) ref 3
+144: local .t243 Shellbuiltin ref 1
+generate desc for addbuiltin
+descmap offset 0
+descmap b type ref Builtins offset 64 (d->offset=64 start=0) returns 64
+descmap name type string offset 72 (d->offset=72 start=0) returns 72
+descmap mod type Shellbuiltin offset 80 (d->offset=80 start=0) returns 80
+descmap n type int offset 88 (d->offset=88 start=0) returns -1
+descmap bmods type list of Shellbuiltin offset 96 (d->offset=96 start=0) returns 96
+descmap .t245 type int offset 104 (d->offset=104 start=0) returns -1
+descmap .t246 type int offset 108 (d->offset=108 start=0) returns -1
+descmap .b242 type big offset 112 (d->offset=112 start=0) returns -1
+descmap nb type array of (string, list of Shellbuiltin) offset 120 (d->offset=120 start=0) returns 120
+descmap adt offset 128
+descmap offset 128
+descmap t0 type string offset 128 (d->offset=0 start=128) returns 128
+descmap t1 type list of Shellbuiltin offset 136 (d->offset=8 start=128) returns 136
+descmap .b244 type (string, list of Shellbuiltin) offset 128 (d->offset=128 start=0) returns 136
+descmap .t243 type Shellbuiltin offset 144 (d->offset=144 start=0) returns 144
+fncom: removebuiltinmod 3 419fa8
+ecom: 
+= int 10 1
+  name j int 0 0
+  const (0) int 6 0
+ecom: 
+const (0) int 6 0
+ecom to: 
+name j int 0 0
+ecom: 
+= int 10 1
+  name i int 0 0
+  const (0) int 6 0
+ecom: 
+const (0) int 6 0
+ecom to: 
+name i int 0 0
+ecom: 
+= (string, list of Shellbuiltin) 10 2
+  tuple (string, list of Shellbuiltin) 10 1
+    seq nothing 10 1
+      name name string 0 0
+      seq nothing 10 1
+        name bmods list of Shellbuiltin 0 0
+  * (string, list of Shellbuiltin) 10 1
+    indx big 10 1
+      * array of (string, list of Shellbuiltin) 8 0
+        name b ref Builtins 0 0
+      name i int 0 0
+ecom: 
+* (string, list of Shellbuiltin) 10 1
+  indx big 10 1
+    * array of (string, list of Shellbuiltin) 8 0
+      name b ref Builtins 0 0
+    name i int 0 0
+ecom to: 
+name name (string, list of Shellbuiltin) 0 0
+eacom: 
+* (string, list of Shellbuiltin) 10 1
+  indx big 10 1
+    * array of (string, list of Shellbuiltin) 8 0
+      name b ref Builtins 0 0
+    name i int 0 0
+generate desc for big
+ecom: 
+indx big 10 1
+  * array of (string, list of Shellbuiltin) 8 0
+    name b ref Builtins 0 0
+  name i int 0 0
+ecom to: 
+name .b247 big 0 0
+generate desc for (string, list of Shellbuiltin)
+eacom: 
+hd Shellbuiltin 10 1
+  name bmods list of Shellbuiltin 0 0
+ecom: 
+hd Shellbuiltin 10 1
+  name bmods list of Shellbuiltin 0 0
+ecom to: 
+name .t248 Shellbuiltin 0 0
+ecom: 
+= Shellbuiltin 10 1
+  name .t248 Shellbuiltin 0 0
+  name nil Shellbuiltin 1 0
+ecom: 
+name nil Shellbuiltin 1 0
+ecom to: 
+name .t248 Shellbuiltin 0 0
+ecom: 
+= list of Shellbuiltin 10 1
+  name bmods list of Shellbuiltin 0 0
+  tl list of Shellbuiltin 10 1
+    name bmods list of Shellbuiltin 0 0
+ecom: 
+tl list of Shellbuiltin 10 1
+  name bmods list of Shellbuiltin 0 0
+ecom to: 
+name bmods list of Shellbuiltin 0 0
+ecom: 
+= (string, list of Shellbuiltin) 10 2
+  * (string, list of Shellbuiltin) 10 1
+    indx big 10 1
+      * array of (string, list of Shellbuiltin) 8 0
+        name b ref Builtins 0 0
+      ++ int 10 1
+        name j int 0 0
+        const (1) int 6 0
+  tuple (string, list of Shellbuiltin) 10 1
+    seq no type 10 1
+      name name string 0 0
+      seq no type 10 1
+        name bmods list of Shellbuiltin 0 0
+eacom: 
+* (string, list of Shellbuiltin) 10 1
+  indx big 10 1
+    * array of (string, list of Shellbuiltin) 8 0
+      name b ref Builtins 0 0
+    ++ int 10 1
+      name j int 0 0
+      const (1) int 6 0
+generate desc for big
+ecom: 
+indx big 10 1
+  * array of (string, list of Shellbuiltin) 8 0
+    name b ref Builtins 0 0
+  ++ int 10 1
+    name j int 0 0
+    const (1) int 6 0
+ecom to: 
+name .b247 big 0 0
+eacom: 
+++ int 10 1
+  name j int 0 0
+  const (1) int 6 0
+ecom: 
+++ int 10 1
+  name j int 0 0
+  const (1) int 6 0
+ecom to: 
+name .t249 int 0 0
+ecom: 
+name name (string, list of Shellbuiltin) 0 0
+ecom to: 
+* (string, list of Shellbuiltin) 8 1
+  name .b247 big 0 0
+generate desc for (string, list of Shellbuiltin)
+descmap adt offset 0
+descmap offset 0
+descmap t0 type string offset 0 (d->offset=0 start=0) returns 0
+descmap t1 type list of Shellbuiltin offset 8 (d->offset=8 start=0) returns 8
+generate desc for (string, list of Shellbuiltin)
+	desc	$-1,16,"c0"
+ecom: 
+= string 10 1
+  * string 0 0
+    adr int 13 1
+      name name (string, list of Shellbuiltin) 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+* string 0 0
+  adr int 13 1
+    name name (string, list of Shellbuiltin) 0 0
+ecom: 
+= list of Shellbuiltin 10 1
+  * list of Shellbuiltin 0 0
+    + int 13 1
+      adr int 13 1
+        name name (string, list of Shellbuiltin) 0 0
+      const t1 (8) int 6 0
+  name nil list of Shellbuiltin 1 0
+ecom: 
+name nil list of Shellbuiltin 1 0
+ecom to: 
+* list of Shellbuiltin 0 0
+  + int 13 1
+    adr int 13 1
+      name name (string, list of Shellbuiltin) 0 0
+    const t1 (8) int 6 0
+ecom: 
+= list of Shellbuiltin 10 1
+  name bmods list of Shellbuiltin 0 0
+  name nil list of Shellbuiltin 1 0
+ecom: 
+name nil list of Shellbuiltin 1 0
+ecom to: 
+name bmods list of Shellbuiltin 0 0
+ecom: 
+++ int 10 1
+  name i int 0 0
+  const (1) int 6 0
+ecom: 
+= int 10 1
+  * int 8 0
+    + int 15 1
+      name b ref Builtins 0 0
+      const n (8) int 6 0
+  name j int 0 0
+ecom: 
+name j int 0 0
+ecom to: 
+* int 8 0
+  + int 15 1
+    name b ref Builtins 0 0
+    const n (8) int 6 0
+ecom: 
+= (polymorphic type, polymorphic type) 10 2
+  * (polymorphic type, polymorphic type) 10 1
+    indx big 10 1
+      * array of (string, list of Shellbuiltin) 8 0
+        name b ref Builtins 0 0
+      name j int 0 0
+  tuple (polymorphic type, polymorphic type) 10 1
+    seq no type 10 1
+      name nil polymorphic type 1 0
+      seq no type 10 1
+        name nil polymorphic type 1 0
+generate desc for (polymorphic type, polymorphic type)
+descmap adt offset 0
+descmap offset 0
+descmap t0 type polymorphic type offset 0 (d->offset=0 start=0) returns 0
+descmap t1 type polymorphic type offset 8 (d->offset=8 start=0) returns 8
+generate desc for (polymorphic type, polymorphic type)
+	desc	$-1,16,"c0"
+ecom: 
+tuple (polymorphic type, polymorphic type) 10 1
+  seq no type 10 1
+    name nil polymorphic type 1 0
+    seq no type 10 1
+      name nil polymorphic type 1 0
+ecom to: 
+name .b250 (polymorphic type, polymorphic type) 0 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* polymorphic type 0 0
+  + int 13 1
+    adr int 13 1
+      name .b250 (polymorphic type, polymorphic type) 0 0
+    const (0) int 6 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* polymorphic type 0 0
+  + int 13 1
+    adr int 13 1
+      name .b250 (polymorphic type, polymorphic type) 0 0
+    const (8) int 6 0
+eacom: 
+* (polymorphic type, polymorphic type) 10 1
+  indx big 10 1
+    * array of (string, list of Shellbuiltin) 8 0
+      name b ref Builtins 0 0
+    name j int 0 0
+generate desc for big
+ecom: 
+indx big 10 1
+  * array of (string, list of Shellbuiltin) 8 0
+    name b ref Builtins 0 0
+  name j int 0 0
+ecom to: 
+name .b247 big 0 0
+ecom: 
+name .b250 (polymorphic type, polymorphic type) 0 0
+ecom to: 
+* (polymorphic type, polymorphic type) 8 1
+  name .b247 big 0 0
+generate desc for (polymorphic type, polymorphic type)
+ecom: 
+= polymorphic type 10 1
+  * polymorphic type 0 0
+    adr int 13 1
+      name .b250 (polymorphic type, polymorphic type) 0 0
+  name nil polymorphic type 1 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* polymorphic type 0 0
+  adr int 13 1
+    name .b250 (polymorphic type, polymorphic type) 0 0
+ecom: 
+= polymorphic type 10 1
+  * polymorphic type 0 0
+    + int 13 1
+      adr int 13 1
+        name .b250 (polymorphic type, polymorphic type) 0 0
+      const t1 (8) int 6 0
+  name nil polymorphic type 1 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* polymorphic type 0 0
+  + int 13 1
+    adr int 13 1
+      name .b250 (polymorphic type, polymorphic type) 0 0
+    const t1 (8) int 6 0
+ecom: 
+++ int 10 1
+  name j int 0 0
+  const (1) int 6 0
+fn: removebuiltinmod
+64: argument b ref Builtins ref 5
+72: argument mod Shellbuiltin ref 1
+80: local j int ref 6
+84: local i int ref 5
+88: local .t249 int ref 1
+96: local .b247 big ref 3
+104: local name string ref 2
+112: local bmods list of Shellbuiltin ref 6
+120: local .t248 Shellbuiltin ref 1
+128: local .b250 (polymorphic type, polymorphic type) ref 1
+generate desc for removebuiltinmod
+descmap offset 0
+descmap b type ref Builtins offset 64 (d->offset=64 start=0) returns 64
+descmap mod type Shellbuiltin offset 72 (d->offset=72 start=0) returns 72
+descmap j type int offset 80 (d->offset=80 start=0) returns -1
+descmap i type int offset 84 (d->offset=84 start=0) returns -1
+descmap .t249 type int offset 88 (d->offset=88 start=0) returns -1
+descmap .b247 type big offset 96 (d->offset=96 start=0) returns -1
+descmap name type string offset 104 (d->offset=104 start=0) returns 104
+descmap bmods type list of Shellbuiltin offset 112 (d->offset=112 start=0) returns 112
+descmap .t248 type Shellbuiltin offset 120 (d->offset=120 start=0) returns 120
+descmap adt offset 128
+descmap offset 128
+descmap t0 type polymorphic type offset 128 (d->offset=0 start=128) returns 128
+descmap t1 type polymorphic type offset 136 (d->offset=8 start=128) returns 136
+descmap .b250 type (polymorphic type, polymorphic type) offset 128 (d->offset=128 start=0) returns 136
+fncom: export 4 6e80d0
+ecom: 
+call no type 10 2
+  name export fn(e: ref Localenv) 11 1
+  seq no type 10 1
+    * ref Localenv 8 0
+      + int 15 1
+        name e ref Localenv 0 0
+        const pushed (8) int 6 0
+generate desc for big
+ecom: 
+* ref Localenv 8 0
+  + int 15 1
+    name e ref Localenv 0 0
+    const pushed (8) int 6 0
+ecom to: 
+* ref Localenv 8 0
+  + int 15 0
+    name .b251 big 0 0
+    const (64) int 6 0
+ecom: 
+= int 10 1
+  name i int 0 0
+  const (0) int 6 0
+ecom: 
+const (0) int 6 0
+ecom to: 
+name i int 0 0
+eacom: 
+len int 10 1
+  * array of list of ref Var 8 0
+    name e ref Localenv 0 0
+ecom: 
+len int 10 1
+  * array of list of ref Var 8 0
+    name e ref Localenv 0 0
+ecom to: 
+name .t252 int 0 0
+ecom: 
+= list of ref Var 10 1
+  name vl list of ref Var 0 0
+  * list of ref Var 10 1
+    indx big 10 1
+      * array of list of ref Var 8 0
+        name e ref Localenv 0 0
+      name i int 0 0
+ecom: 
+* list of ref Var 10 1
+  indx big 10 1
+    * array of list of ref Var 8 0
+      name e ref Localenv 0 0
+    name i int 0 0
+ecom to: 
+name vl list of ref Var 0 0
+eacom: 
+* list of ref Var 10 1
+  indx big 10 1
+    * array of list of ref Var 8 0
+      name e ref Localenv 0 0
+    name i int 0 0
+generate desc for big
+ecom: 
+indx big 10 1
+  * array of list of ref Var 8 0
+    name e ref Localenv 0 0
+  name i int 0 0
+ecom to: 
+name .b251 big 0 0
+ecom: 
+= ref Var 10 1
+  name v ref Var 0 0
+  hd ref Var 10 1
+    name vl list of ref Var 0 0
+ecom: 
+hd ref Var 10 1
+  name vl list of ref Var 0 0
+ecom to: 
+name v ref Var 0 0
+eacom: 
+& int 10 1
+  * int 8 0
+    + int 15 1
+      name v ref Var 0 0
+      const flags (16) int 6 0
+  const CHANGED (1) int 6 0
+ecom: 
+& int 10 1
+  * int 8 0
+    + int 15 1
+      name v ref Var 0 0
+      const flags (16) int 6 0
+  const CHANGED (1) int 6 0
+ecom to: 
+name .t252 int 0 0
+eacom: 
+& int 10 1
+  * int 8 0
+    + int 15 1
+      name v ref Var 0 0
+      const flags (16) int 6 0
+  const NOEXPORT (2) int 6 0
+ecom: 
+& int 10 1
+  * int 8 0
+    + int 15 1
+      name v ref Var 0 0
+      const flags (16) int 6 0
+  const NOEXPORT (2) int 6 0
+ecom to: 
+name .t252 int 0 0
+ecom: 
+call no type 10 2
+  name setenv fn(name: string, val: list of ref Listnode) 11 1
+  seq no type 10 1
+    * string 8 0
+      name v ref Var 0 0
+    seq no type 10 1
+      * list of ref Listnode 8 0
+        + int 15 1
+          name v ref Var 0 0
+          const val (8) int 6 0
+generate desc for big
+ecom: 
+* string 8 0
+  name v ref Var 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b251 big 0 0
+    const (64) int 6 0
+ecom: 
+* list of ref Listnode 8 0
+  + int 15 1
+    name v ref Var 0 0
+    const val (8) int 6 0
+ecom to: 
+* list of ref Listnode 8 0
+  + int 15 0
+    name .b251 big 0 0
+    const (72) int 6 0
+ecom: 
+&= int 10 1
+  * int 8 0
+    + int 15 1
+      name v ref Var 0 0
+      const flags (16) int 6 0
+  const (-2) int 6 0
+ecom: 
+= ref Var 10 1
+  name v ref Var 0 0
+  name nil ref Var 1 0
+ecom: 
+name nil ref Var 1 0
+ecom to: 
+name v ref Var 0 0
+ecom: 
+= list of ref Var 10 1
+  name vl list of ref Var 0 0
+  tl list of ref Var 10 1
+    name vl list of ref Var 0 0
+ecom: 
+tl list of ref Var 10 1
+  name vl list of ref Var 0 0
+ecom to: 
+name vl list of ref Var 0 0
+ecom: 
+= list of ref Var 10 1
+  name vl list of ref Var 0 0
+  name nil list of ref Var 1 0
+ecom: 
+name nil list of ref Var 1 0
+ecom to: 
+name vl list of ref Var 0 0
+ecom: 
+++ int 10 1
+  name i int 0 0
+  const (1) int 6 0
+fn: export
+64: argument e ref Localenv ref 4
+72: local i int ref 4
+76: local .t252 int ref 1
+80: local v ref Var ref 6
+88: local vl list of ref Var ref 5
+96: local .b251 big ref 3
+generate desc for export
+descmap offset 0
+descmap e type ref Localenv offset 64 (d->offset=64 start=0) returns 64
+descmap i type int offset 72 (d->offset=72 start=0) returns -1
+descmap .t252 type int offset 76 (d->offset=76 start=0) returns -1
+descmap v type ref Var offset 80 (d->offset=80 start=0) returns 80
+descmap vl type list of ref Var offset 88 (d->offset=88 start=0) returns 88
+descmap .b251 type big offset 96 (d->offset=96 start=0) returns -1
+fncom: noexport 3 6e8190
+ecom: 
+const (1) int 6 0
+ecom to: 
+* int 8 0
+  name .ret int 0 0
+ecom: 
+const (0) int 6 0
+ecom to: 
+* int 8 0
+  name .ret int 0 0
+fn: noexport
+64: argument name string ref 1
+generate desc for noexport
+descmap offset 0
+descmap name type string offset 64 (d->offset=64 start=0) returns 64
+fncom: index 2 6e8250
+ecom: 
+= list of ref Listnode 10 1
+  name val list of ref Listnode 0 0
+  tl list of ref Listnode 10 1
+    name val list of ref Listnode 0 0
+ecom: 
+tl list of ref Listnode 10 1
+  name val list of ref Listnode 0 0
+ecom to: 
+name val list of ref Listnode 0 0
+ecom: 
+-- int 10 1
+  name k int 0 0
+  const (1) int 6 0
+ecom: 
+= list of ref Listnode 10 1
+  name val list of ref Listnode 0 0
+  :: list of ref Listnode 10 1
+    hd ref Listnode 10 1
+      name val list of ref Listnode 0 0
+    name nil polymorphic type 1 0
+ecom: 
+:: list of ref Listnode 10 1
+  hd ref Listnode 10 1
+    name val list of ref Listnode 0 0
+  name nil polymorphic type 1 0
+ecom to: 
+name val list of ref Listnode 0 0
+eacom: 
+hd ref Listnode 10 1
+  name val list of ref Listnode 0 0
+ecom: 
+hd ref Listnode 10 1
+  name val list of ref Listnode 0 0
+ecom to: 
+name .t253 ref Listnode 0 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+name .t254 list of ref Listnode 0 0
+ecom: 
+= ref Listnode 10 1
+  name .t253 ref Listnode 0 0
+  name nil ref Listnode 1 0
+ecom: 
+name nil ref Listnode 1 0
+ecom to: 
+name .t253 ref Listnode 0 0
+ecom: 
+= list of ref Listnode 10 1
+  name .t254 list of ref Listnode 0 0
+  name nil list of ref Listnode 1 0
+ecom: 
+name nil list of ref Listnode 1 0
+ecom to: 
+name .t254 list of ref Listnode 0 0
+ecom: 
+name val list of ref Listnode 0 0
+ecom to: 
+* list of ref Listnode 8 0
+  name .ret int 0 0
+fn: index
+64: argument val list of ref Listnode ref 7
+72: argument k int ref 2
+80: local .t253 ref Listnode ref 1
+88: local .t254 list of ref Listnode ref 1
+generate desc for index
+descmap offset 0
+descmap val type list of ref Listnode offset 64 (d->offset=64 start=0) returns 64
+descmap k type int offset 72 (d->offset=72 start=0) returns -1
+descmap .t253 type ref Listnode offset 80 (d->offset=80 start=0) returns 80
+descmap .t254 type list of ref Listnode offset 88 (d->offset=88 start=0) returns 88
+fncom: getenv 1 6e8310
+fncom: envstringtoval 3 6e83d0
+fncom: XXXenvstringtoval 1 6e8490
+fncom: setenv 2 6e8550
+ecom: 
+used int 10 2
+  call int 10 2
+    -> fn(var: string, val: string): int 12 1
+      name env Env 1 0
+      name setenv nothing 11 1
+    seq no type 10 2
+      name name string 0 0
+      seq no type 10 2
+        call string 10 2
+          name quoted fn(val: list of ref Listnode, quoteblocks: int): string 11 1
+          seq no type 10 1
+            name val list of ref Listnode 0 0
+            seq no type 10 1
+              const (1) int 6 0
+ecom: 
+call int 10 2
+  -> fn(var: string, val: string): int 12 1
+    name env Env 1 0
+    name setenv nothing 11 1
+  seq no type 10 2
+    name name string 0 0
+    seq no type 10 2
+      call string 10 2
+        name quoted fn(val: list of ref Listnode, quoteblocks: int): string 11 1
+        seq no type 10 1
+          name val list of ref Listnode 0 0
+          seq no type 10 1
+            const (1) int 6 0
+ecom to: 
+name .t255 int 0 0
+generate desc for big
+ecom: 
+call string 10 2
+  name quoted fn(val: list of ref Listnode, quoteblocks: int): string 11 1
+  seq no type 10 1
+    name val list of ref Listnode 0 0
+    seq no type 10 1
+      const (1) int 6 0
+ecom to: 
+name .t257 string 0 0
+generate desc for big
+ecom: 
+name val list of ref Listnode 0 0
+ecom to: 
+* list of ref Listnode 8 0
+  + int 15 0
+    name .b258 big 0 0
+    const (64) int 6 0
+ecom: 
+const (1) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b258 big 0 0
+    const (72) int 6 0
+ecom: 
+name name string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b256 big 0 0
+    const (64) int 6 0
+ecom: 
+name .t257 string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b256 big 0 0
+    const (72) int 6 0
+ecom: 
+= string 10 1
+  name .t257 string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name .t257 string 0 0
+fn: setenv
+64: argument name string ref 1
+72: argument val list of ref Listnode ref 1
+80: local .t255 int ref 1
+88: local .b256 big ref 1
+96: local .b258 big ref 1
+104: local .t257 string ref 1
+generate desc for setenv
+descmap offset 0
+descmap name type string offset 64 (d->offset=64 start=0) returns 64
+descmap val type list of ref Listnode offset 72 (d->offset=72 start=0) returns 72
+descmap .t255 type int offset 80 (d->offset=80 start=0) returns -1
+descmap .b256 type big offset 88 (d->offset=88 start=0) returns -1
+descmap .b258 type big offset 96 (d->offset=96 start=0) returns -1
+descmap .t257 type string offset 104 (d->offset=104 start=0) returns 104
+fncom: containswildchar 2 6e8610
+ecom: 
+= int 10 1
+  name i int 0 0
+  const (0) int 6 0
+ecom: 
+const (0) int 6 0
+ecom to: 
+name i int 0 0
+eacom: 
+len int 10 1
+  name s string 0 0
+ecom: 
+len int 10 1
+  name s string 0 0
+ecom to: 
+name .t259 int 0 0
+eacom: 
+inds int 10 1
+  name s string 0 0
+  name i int 0 0
+ecom: 
+inds int 10 1
+  name s string 0 0
+  name i int 0 0
+ecom to: 
+name .t259 int 0 0
+eacom: 
+- int 10 1
+  len int 10 1
+    name s string 0 0
+  const (1) int 6 0
+ecom: 
+- int 10 1
+  len int 10 1
+    name s string 0 0
+  const (1) int 6 0
+ecom to: 
+name .t259 int 0 0
+ecom: 
+len int 10 1
+  name s string 0 0
+ecom to: 
+name .t259 int 0 0
+eacom: 
+inds int 10 1
+  name s string 0 0
+  + int 15 1
+    name i int 0 0
+    const (1) int 6 0
+ecom: 
+inds int 10 1
+  name s string 0 0
+  + int 15 1
+    name i int 0 0
+    const (1) int 6 0
+ecom to: 
+name .t259 int 0 0
+ecom: 
++ int 15 1
+  name i int 0 0
+  const (1) int 6 0
+ecom to: 
+name .t260 int 0 0
+ecom: 
+const (1) int 6 0
+ecom to: 
+* int 8 0
+  name .ret int 0 0
+ecom: 
+++ int 10 1
+  name i int 0 0
+  const (1) int 6 0
+ecom: 
+const (0) int 6 0
+ecom to: 
+* int 8 0
+  name .ret int 0 0
+fn: containswildchar
+64: argument s string ref 4
+72: local i int ref 6
+76: local .t259 int ref 1
+80: local .t260 int ref 1
+generate desc for containswildchar
+descmap offset 0
+descmap s type string offset 64 (d->offset=64 start=0) returns 64
+descmap i type int offset 72 (d->offset=72 start=0) returns -1
+descmap .t259 type int offset 76 (d->offset=76 start=0) returns -1
+descmap .t260 type int offset 80 (d->offset=80 start=0) returns -1
+fncom: patquote 2 6e86d0
+ecom: 
+= string 10 1
+  name outword string 0 0
+  const  string 1 0
+ecom: 
+const  string 1 0
+ecom to: 
+name outword string 0 0
+ecom: 
+= int 10 1
+  name i int 0 0
+  const (0) int 6 0
+ecom: 
+const (0) int 6 0
+ecom to: 
+name i int 0 0
+eacom: 
+len int 10 1
+  name word string 0 0
+ecom: 
+len int 10 1
+  name word string 0 0
+ecom to: 
+name .t261 int 0 0
+eacom: 
+inds int 10 1
+  name word string 0 0
+  name i int 0 0
+ecom: 
+inds int 10 1
+  name word string 0 0
+  name i int 0 0
+ecom to: 
+name .t261 int 0 0
+ecom: 
+= int 10 1
+  inds int 10 1
+    name outword string 0 0
+    len int 10 1
+      name outword string 0 0
+  const (92) int 6 0
+ecom: 
+len int 10 1
+  name outword string 0 0
+ecom to: 
+name .t261 int 0 0
+ecom: 
+++ int 10 1
+  name i int 0 0
+  const (1) int 6 0
+eacom: 
+len int 10 1
+  name word string 0 0
+ecom: 
+len int 10 1
+  name word string 0 0
+ecom to: 
+name .t261 int 0 0
+ecom: 
+name outword string 0 0
+ecom to: 
+* string 8 0
+  name .ret int 0 0
+eacom: 
+inds int 10 1
+  name word string 0 0
+  name i int 0 0
+ecom: 
+inds int 10 1
+  name word string 0 0
+  name i int 0 0
+ecom to: 
+name .t261 int 0 0
+eacom: 
+- int 10 1
+  len int 10 1
+    name word string 0 0
+  const (1) int 6 0
+ecom: 
+- int 10 1
+  len int 10 1
+    name word string 0 0
+  const (1) int 6 0
+ecom to: 
+name .t261 int 0 0
+ecom: 
+len int 10 1
+  name word string 0 0
+ecom to: 
+name .t261 int 0 0
+eacom: 
+inds int 10 1
+  name word string 0 0
+  + int 15 1
+    name i int 0 0
+    const (1) int 6 0
+ecom: 
+inds int 10 1
+  name word string 0 0
+  + int 15 1
+    name i int 0 0
+    const (1) int 6 0
+ecom to: 
+name .t261 int 0 0
+ecom: 
++ int 15 1
+  name i int 0 0
+  const (1) int 6 0
+ecom to: 
+name .t262 int 0 0
+ecom: 
+= int 10 1
+  inds int 10 1
+    name word string 0 0
+    + int 15 1
+      name i int 0 0
+      const (1) int 6 0
+  const (94) int 6 0
+ecom: 
++ int 15 1
+  name i int 0 0
+  const (1) int 6 0
+ecom to: 
+name .t262 int 0 0
+ecom: 
+= int 10 2
+  inds int 10 1
+    name outword string 0 0
+    len int 10 1
+      name outword string 0 0
+  inds int 10 1
+    name word string 0 0
+    name i int 0 0
+ecom: 
+len int 10 1
+  name outword string 0 0
+ecom to: 
+name .t262 int 0 0
+eacom: 
+inds int 10 1
+  name word string 0 0
+  name i int 0 0
+ecom: 
+inds int 10 1
+  name word string 0 0
+  name i int 0 0
+ecom to: 
+name .t261 int 0 0
+ecom: 
+++ int 10 1
+  name i int 0 0
+  const (1) int 6 0
+ecom: 
+name outword string 0 0
+ecom to: 
+* string 8 0
+  name .ret int 0 0
+fn: patquote
+64: argument word string ref 8
+72: local i int ref 11
+76: local .t261 int ref 1
+80: local .t262 int ref 1
+88: local outword string ref 7
+generate desc for patquote
+descmap offset 0
+descmap word type string offset 64 (d->offset=64 start=0) returns 64
+descmap i type int offset 72 (d->offset=72 start=0) returns -1
+descmap .t261 type int offset 76 (d->offset=76 start=0) returns -1
+descmap .t262 type int offset 80 (d->offset=80 start=0) returns -1
+descmap outword type string offset 88 (d->offset=88 start=0) returns 88
+fncom: deglob 4 6e8790
+ecom: 
+= int 10 1
+  name j int 0 0
+  const (0) int 6 0
+ecom: 
+const (0) int 6 0
+ecom to: 
+name j int 0 0
+ecom: 
+= int 10 1
+  name i int 0 0
+  const (0) int 6 0
+ecom: 
+const (0) int 6 0
+ecom to: 
+name i int 0 0
+eacom: 
+len int 10 1
+  name s string 0 0
+ecom: 
+len int 10 1
+  name s string 0 0
+ecom to: 
+name .t263 int 0 0
+eacom: 
+inds int 10 1
+  name s string 0 0
+  name i int 0 0
+ecom: 
+inds int 10 1
+  name s string 0 0
+  name i int 0 0
+ecom to: 
+name .t263 int 0 0
+ecom: 
+= int 10 2
+  inds int 10 1
+    name s string 0 0
+    name j int 0 0
+  inds int 10 1
+    name s string 0 0
+    name i int 0 0
+eacom: 
+inds int 10 1
+  name s string 0 0
+  name i int 0 0
+ecom: 
+inds int 10 1
+  name s string 0 0
+  name i int 0 0
+ecom to: 
+name .t263 int 0 0
+ecom: 
+++ int 10 1
+  name j int 0 0
+  const (1) int 6 0
+ecom: 
+++ int 10 1
+  name i int 0 0
+  const (1) int 6 0
+ecom: 
+name s string 0 0
+ecom to: 
+* string 8 0
+  name .ret int 0 0
+ecom: 
+slice string 10 1
+  name s string 0 0
+  seq no type 10 1
+    const (0) int 6 0
+    name j int 0 0
+ecom to: 
+* string 8 0
+  name .ret int 0 0
+ecom: 
+name s string 0 0
+ecom to: 
+* string 8 0
+  name .ret int 0 0
+fn: deglob
+64: argument s string ref 6
+72: local i int ref 7
+76: local j int ref 6
+80: local .t263 int ref 1
+generate desc for deglob
+descmap offset 0
+descmap s type string offset 64 (d->offset=64 start=0) returns 64
+descmap i type int offset 72 (d->offset=72 start=0) returns -1
+descmap j type int offset 76 (d->offset=76 start=0) returns -1
+descmap .t263 type int offset 80 (d->offset=80 start=0) returns -1
+fncom: glob 7 6e8850
+ecom: 
+= ref Listnode 10 1
+  name n ref Listnode 0 0
+  hd ref Listnode 10 1
+    name nl list of ref Listnode 0 0
+ecom: 
+hd ref Listnode 10 1
+  name nl list of ref Listnode 0 0
+ecom to: 
+name n ref Listnode 0 0
+eacom: 
+call int 10 2
+  name containswildchar fn(s: string): int 11 1
+  seq no type 10 1
+    * string 8 0
+      + int 15 1
+        name n ref Listnode 0 0
+        const word (8) int 6 0
+ecom: 
+call int 10 2
+  name containswildchar fn(s: string): int 11 1
+  seq no type 10 1
+    * string 8 0
+      + int 15 1
+        name n ref Listnode 0 0
+        const word (8) int 6 0
+ecom to: 
+name .t264 int 0 0
+generate desc for big
+ecom: 
+* string 8 0
+  + int 15 1
+    name n ref Listnode 0 0
+    const word (8) int 6 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b265 big 0 0
+    const (64) int 6 0
+ecom: 
+= string 10 2
+  name qword string 0 0
+  call string 10 2
+    name patquote fn(word: string): string 11 1
+    seq no type 10 1
+      * string 8 0
+        + int 15 1
+          name n ref Listnode 0 0
+          const word (8) int 6 0
+ecom: 
+call string 10 2
+  name patquote fn(word: string): string 11 1
+  seq no type 10 1
+    * string 8 0
+      + int 15 1
+        name n ref Listnode 0 0
+        const word (8) int 6 0
+ecom to: 
+name qword string 0 0
+generate desc for big
+ecom: 
+* string 8 0
+  + int 15 1
+    name n ref Listnode 0 0
+    const word (8) int 6 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b265 big 0 0
+    const (64) int 6 0
+ecom: 
+= list of string 10 2
+  name files list of string 0 0
+    name qword string 0 0
+  call list of string 10 2
+    -> fn(pat: string): list of string 12 1
+      name filepat Filepat 1 0
+      name expand nothing 11 1
+    seq no type 10 1
+      name qword string 0 0
+ecom: 
+call list of string 10 2
+  -> fn(pat: string): list of string 12 1
+    name filepat Filepat 1 0
+    name expand nothing 11 1
+  seq no type 10 1
+    name qword string 0 0
+ecom to: 
+name files list of string 0 0
+  name qword string 0 0
+generate desc for big
+ecom: 
+name qword string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b265 big 0 0
+    const (64) int 6 0
+ecom: 
+= list of string 10 2
+  name files list of string 0 0
+  :: list of string 10 2
+    call string 10 2
+      name deglob fn(s: string): string 11 1
+      seq no type 10 1
+        * string 8 0
+          + int 15 1
+            name n ref Listnode 0 0
+            const word (8) int 6 0
+    name nil polymorphic type 1 0
+ecom: 
+:: list of string 10 2
+  call string 10 2
+    name deglob fn(s: string): string 11 1
+    seq no type 10 1
+      * string 8 0
+        + int 15 1
+          name n ref Listnode 0 0
+          const word (8) int 6 0
+  name nil polymorphic type 1 0
+ecom to: 
+name files list of string 0 0
+eacom: 
+call string 10 2
+  name deglob fn(s: string): string 11 1
+  seq no type 10 1
+    * string 8 0
+      + int 15 1
+        name n ref Listnode 0 0
+        const word (8) int 6 0
+ecom: 
+call string 10 2
+  name deglob fn(s: string): string 11 1
+  seq no type 10 1
+    * string 8 0
+      + int 15 1
+        name n ref Listnode 0 0
+        const word (8) int 6 0
+ecom to: 
+name .t266 string 0 0
+generate desc for big
+ecom: 
+* string 8 0
+  + int 15 1
+    name n ref Listnode 0 0
+    const word (8) int 6 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b265 big 0 0
+    const (64) int 6 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+name .t267 list of string 0 0
+ecom: 
+= string 10 1
+  name .t266 string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name .t266 string 0 0
+ecom: 
+= list of string 10 1
+  name .t267 list of string 0 0
+  name nil list of string 1 0
+ecom: 
+name nil list of string 1 0
+ecom to: 
+name .t267 list of string 0 0
+ecom: 
+= list of ref Listnode 10 1
+  name new list of ref Listnode 0 0
+  :: list of ref Listnode 10 1
+    ref ref Listnode 10 1
+      tuple Listnode 10 1
+        seq no type 10 1
+          name nil polymorphic type 1 0
+          seq no type 10 1
+            hd string 10 1
+              name files list of string 0 0
+    name new list of ref Listnode 0 0
+ecom: 
+:: list of ref Listnode 10 1
+  ref ref Listnode 10 1
+    tuple Listnode 10 1
+      seq no type 10 1
+        name nil polymorphic type 1 0
+        seq no type 10 1
+          hd string 10 1
+            name files list of string 0 0
+  name new list of ref Listnode 0 0
+ecom to: 
+name new list of ref Listnode 0 0
+eacom: 
+ref ref Listnode 10 1
+  tuple Listnode 10 1
+    seq no type 10 1
+      name nil polymorphic type 1 0
+      seq no type 10 1
+        hd string 10 1
+          name files list of string 0 0
+ecom: 
+ref ref Listnode 10 1
+  tuple Listnode 10 1
+    seq no type 10 1
+      name nil polymorphic type 1 0
+      seq no type 10 1
+        hd string 10 1
+          name files list of string 0 0
+ecom to: 
+name .t267 ref Listnode 0 0
+generate desc for Listnode
+ecom: 
+tuple Listnode 10 1
+  seq no type 10 1
+    name nil polymorphic type 1 0
+    seq no type 10 1
+      hd string 10 1
+        name files list of string 0 0
+ecom to: 
+* Listnode 8 0
+  name .t267 ref Listnode 0 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* ref Node 8 0
+  + int 15 1
+    adr int 15 1
+      * Listnode 8 0
+        name .t267 ref Listnode 0 0
+    const (0) int 6 0
+ecom: 
+hd string 10 1
+  name files list of string 0 0
+ecom to: 
+* string 8 0
+  + int 15 1
+    adr int 15 1
+      * Listnode 8 0
+        name .t267 ref Listnode 0 0
+    const (8) int 6 0
+ecom: 
+= ref Listnode 10 1
+  name .t267 ref Listnode 0 0
+  name nil ref Listnode 1 0
+ecom: 
+name nil ref Listnode 1 0
+ecom to: 
+name .t267 ref Listnode 0 0
+ecom: 
+= list of string 10 1
+  name files list of string 0 0
+  tl list of string 10 1
+    name files list of string 0 0
+ecom: 
+tl list of string 10 1
+  name files list of string 0 0
+ecom to: 
+name files list of string 0 0
+ecom: 
+= list of string 10 1
+  name files list of string 0 0
+  name nil list of string 1 0
+ecom: 
+name nil list of string 1 0
+ecom to: 
+name files list of string 0 0
+ecom: 
+= string 10 1
+  name qword string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name qword string 0 0
+ecom: 
+= list of ref Listnode 10 1
+  name new list of ref Listnode 0 0
+  :: list of ref Listnode 10 1
+    name n ref Listnode 0 0
+    name new list of ref Listnode 0 0
+ecom: 
+:: list of ref Listnode 10 1
+  name n ref Listnode 0 0
+  name new list of ref Listnode 0 0
+ecom to: 
+name new list of ref Listnode 0 0
+ecom: 
+= list of ref Listnode 10 1
+  name nl list of ref Listnode 0 0
+  tl list of ref Listnode 10 1
+    name nl list of ref Listnode 0 0
+ecom: 
+tl list of ref Listnode 10 1
+  name nl list of ref Listnode 0 0
+ecom to: 
+name nl list of ref Listnode 0 0
+ecom: 
+= ref Listnode 10 1
+  name n ref Listnode 0 0
+  name nil ref Listnode 1 0
+ecom: 
+name nil ref Listnode 1 0
+ecom to: 
+name n ref Listnode 0 0
+ecom: 
+= list of ref Listnode 10 2
+  name ret list of ref Listnode 0 0
+  call list of ref Listnode 10 2
+    name revlist fn(l: list of ref Listnode): list of ref Listnode 11 1
+    seq no type 10 1
+      name new list of ref Listnode 0 0
+ecom: 
+call list of ref Listnode 10 2
+  name revlist fn(l: list of ref Listnode): list of ref Listnode 11 1
+  seq no type 10 1
+    name new list of ref Listnode 0 0
+ecom to: 
+name ret list of ref Listnode 0 0
+generate desc for big
+ecom: 
+name new list of ref Listnode 0 0
+ecom to: 
+* list of ref Listnode 8 0
+  + int 15 0
+    name .b265 big 0 0
+    const (64) int 6 0
+ecom: 
+name ret list of ref Listnode 0 0
+ecom to: 
+* list of ref Listnode 8 0
+  name .ret int 0 0
+fn: glob
+64: argument nl list of ref Listnode ref 4
+72: local .t264 int ref 1
+80: local files list of string ref 7
+88: local .b265 big ref 5
+96: local n ref Listnode ref 5
+104: local new list of ref Listnode ref 5
+112: local qword string ref 2
+120: local ret list of ref Listnode ref 2
+128: local .t266 string ref 1
+136: local .t267 list of string ref 1
+generate desc for glob
+descmap offset 0
+descmap nl type list of ref Listnode offset 64 (d->offset=64 start=0) returns 64
+descmap .t264 type int offset 72 (d->offset=72 start=0) returns -1
+descmap files type list of string offset 80 (d->offset=80 start=0) returns 80
+descmap .b265 type big offset 88 (d->offset=88 start=0) returns -1
+descmap n type ref Listnode offset 96 (d->offset=96 start=0) returns 96
+descmap new type list of ref Listnode offset 104 (d->offset=104 start=0) returns 104
+descmap qword type string offset 112 (d->offset=112 start=0) returns 112
+descmap ret type list of ref Listnode offset 120 (d->offset=120 start=0) returns 120
+descmap .t266 type string offset 128 (d->offset=128 start=0) returns 128
+descmap .t267 type list of string offset 136 (d->offset=136 start=0) returns 136
+fncom: list2stringlist 8 4c3048
+ecom: 
+= list of string 10 1
+  name ret list of string 0 0
+  name nil polymorphic type 1 0
+ecom: 
+name nil list of string 1 0
+ecom to: 
+name ret list of string 0 0
+ecom: 
+= ref Listnode 10 1
+  name el ref Listnode 0 0
+    vardecl string 10 1
+      seq nothing 10 1
+  hd ref Listnode 10 1
+    name nl list of ref Listnode 0 0
+ecom: 
+hd ref Listnode 10 1
+  name nl list of ref Listnode 0 0
+ecom to: 
+name el ref Listnode 0 0
+  vardecl string 10 1
+    seq nothing 10 1
+ecom: 
+= string 10 1
+  name newel string 0 0
+  * string 8 0
+    + int 15 1
+      name el ref Listnode 0 0
+      const word (8) int 6 0
+ecom: 
+* string 8 0
+  + int 15 1
+    name el ref Listnode 0 0
+    const word (8) int 6 0
+ecom to: 
+name newel string 0 0
+ecom: 
+= string 10 2
+  * string 8 0
+    + int 15 1
+      name el ref Listnode 0 0
+      const word (8) int 6 0
+  = string 10 2
+    name newel string 0 0
+    call string 10 2
+      name cmd2string fn(n: ref Node): string 11 1
+      seq no type 10 1
+        * ref Node 8 0
+          name el ref Listnode 0 0
+ecom: 
+= string 10 2
+  name newel string 0 0
+  call string 10 2
+    name cmd2string fn(n: ref Node): string 11 1
+    seq no type 10 1
+      * ref Node 8 0
+        name el ref Listnode 0 0
+ecom to: 
+* string 8 0
+  + int 15 1
+    name el ref Listnode 0 0
+    const word (8) int 6 0
+ecom: 
+call string 10 2
+  name cmd2string fn(n: ref Node): string 11 1
+  seq no type 10 1
+    * ref Node 8 0
+      name el ref Listnode 0 0
+ecom to: 
+name newel string 0 0
+generate desc for big
+ecom: 
+* ref Node 8 0
+  name el ref Listnode 0 0
+ecom to: 
+* ref Node 8 0
+  + int 15 0
+    name .b268 big 0 0
+    const (64) int 6 0
+ecom: 
+= list of string 10 1
+  name ret list of string 0 0
+  :: list of string 10 1
+    name newel string 0 0
+    name ret list of string 0 0
+ecom: 
+:: list of string 10 1
+  name newel string 0 0
+  name ret list of string 0 0
+ecom to: 
+name ret list of string 0 0
+ecom: 
+= list of ref Listnode 10 1
+  name nl list of ref Listnode 0 0
+  tl list of ref Listnode 10 1
+    name nl list of ref Listnode 0 0
+ecom: 
+tl list of ref Listnode 10 1
+  name nl list of ref Listnode 0 0
+ecom to: 
+name nl list of ref Listnode 0 0
+ecom: 
+= ref Listnode 10 1
+  name el ref Listnode 0 0
+  name nil ref Listnode 1 0
+ecom: 
+name nil ref Listnode 1 0
+ecom to: 
+name el ref Listnode 0 0
+ecom: 
+= string 10 1
+  name newel string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name newel string 0 0
+ecom: 
+= list of string 10 2
+  name sl list of string 0 0
+  call list of string 10 2
+    name revstringlist fn(l: list of string): list of string 11 1
+    seq no type 10 1
+      name ret list of string 0 0
+ecom: 
+call list of string 10 2
+  name revstringlist fn(l: list of string): list of string 11 1
+  seq no type 10 1
+    name ret list of string 0 0
+ecom to: 
+name sl list of string 0 0
+generate desc for big
+ecom: 
+name ret list of string 0 0
+ecom to: 
+* list of string 8 0
+  + int 15 0
+    name .b268 big 0 0
+    const (64) int 6 0
+ecom: 
+name sl list of string 0 0
+ecom to: 
+* list of string 8 0
+  name .ret int 0 0
+fn: list2stringlist
+64: argument nl list of ref Listnode ref 4
+72: local el ref Listnode ref 6
+80: local ret list of string ref 4
+88: local newel string ref 3
+96: local .b268 big ref 2
+104: local sl list of string ref 2
+generate desc for list2stringlist
+descmap offset 0
+descmap nl type list of ref Listnode offset 64 (d->offset=64 start=0) returns 64
+descmap el type ref Listnode offset 72 (d->offset=72 start=0) returns 72
+descmap ret type list of string offset 80 (d->offset=80 start=0) returns 80
+descmap newel type string offset 88 (d->offset=88 start=0) returns 88
+descmap .b268 type big offset 96 (d->offset=96 start=0) returns -1
+descmap sl type list of string offset 104 (d->offset=104 start=0) returns 104
+fncom: stringlist2list 9 4c3788
+ecom: 
+= list of ref Listnode 10 1
+  name ret list of ref Listnode 0 0
+  :: list of ref Listnode 10 1
+    ref ref Listnode 10 1
+      tuple Listnode 10 1
+        seq no type 10 1
+          name nil polymorphic type 1 0
+          seq no type 10 1
+            hd string 10 1
+              name sl list of string 0 0
+    name ret list of ref Listnode 0 0
+ecom: 
+:: list of ref Listnode 10 1
+  ref ref Listnode 10 1
+    tuple Listnode 10 1
+      seq no type 10 1
+        name nil polymorphic type 1 0
+        seq no type 10 1
+          hd string 10 1
+            name sl list of string 0 0
+  name ret list of ref Listnode 0 0
+ecom to: 
+name ret list of ref Listnode 0 0
+eacom: 
+ref ref Listnode 10 1
+  tuple Listnode 10 1
+    seq no type 10 1
+      name nil polymorphic type 1 0
+      seq no type 10 1
+        hd string 10 1
+          name sl list of string 0 0
+ecom: 
+ref ref Listnode 10 1
+  tuple Listnode 10 1
+    seq no type 10 1
+      name nil polymorphic type 1 0
+      seq no type 10 1
+        hd string 10 1
+          name sl list of string 0 0
+ecom to: 
+name .t269 ref Listnode 0 0
+generate desc for Listnode
+ecom: 
+tuple Listnode 10 1
+  seq no type 10 1
+    name nil polymorphic type 1 0
+    seq no type 10 1
+      hd string 10 1
+        name sl list of string 0 0
+ecom to: 
+* Listnode 8 0
+  name .t269 ref Listnode 0 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* ref Node 8 0
+  + int 15 1
+    adr int 15 1
+      * Listnode 8 0
+        name .t269 ref Listnode 0 0
+    const (0) int 6 0
+ecom: 
+hd string 10 1
+  name sl list of string 0 0
+ecom to: 
+* string 8 0
+  + int 15 1
+    adr int 15 1
+      * Listnode 8 0
+        name .t269 ref Listnode 0 0
+    const (8) int 6 0
+ecom: 
+= ref Listnode 10 1
+  name .t269 ref Listnode 0 0
+  name nil ref Listnode 1 0
+ecom: 
+name nil ref Listnode 1 0
+ecom to: 
+name .t269 ref Listnode 0 0
+ecom: 
+= list of string 10 1
+  name sl list of string 0 0
+  tl list of string 10 1
+    name sl list of string 0 0
+ecom: 
+tl list of string 10 1
+  name sl list of string 0 0
+ecom to: 
+name sl list of string 0 0
+ecom: 
+call list of ref Listnode 10 2
+  name revlist fn(l: list of ref Listnode): list of ref Listnode 11 1
+  seq no type 10 1
+    name ret list of ref Listnode 0 0
+ecom to: 
+* list of ref Listnode 8 0
+  name .ret int 0 0
+generate desc for big
+ecom: 
+name ret list of ref Listnode 0 0
+ecom to: 
+* list of ref Listnode 8 0
+  + int 15 0
+    name .b270 big 0 0
+    const (64) int 6 0
+fn: stringlist2list
+64: argument sl list of string ref 4
+72: local ret list of ref Listnode ref 3
+80: local .b270 big ref 1
+88: local .t269 ref Listnode ref 1
+generate desc for stringlist2list
+descmap offset 0
+descmap sl type list of string offset 64 (d->offset=64 start=0) returns 64
+descmap ret type list of ref Listnode offset 72 (d->offset=72 start=0) returns 72
+descmap .b270 type big offset 80 (d->offset=80 start=0) returns -1
+descmap .t269 type ref Listnode offset 88 (d->offset=88 start=0) returns 88
+fncom: revstringlist 2 6e8910
+ecom: 
+= list of string 10 1
+  name t list of string 0 0
+  :: list of string 10 1
+    hd string 10 1
+      name l list of string 0 0
+    name t list of string 0 0
+ecom: 
+:: list of string 10 1
+  hd string 10 1
+    name l list of string 0 0
+  name t list of string 0 0
+ecom to: 
+name t list of string 0 0
+eacom: 
+hd string 10 1
+  name l list of string 0 0
+ecom: 
+hd string 10 1
+  name l list of string 0 0
+ecom to: 
+name .t271 string 0 0
+ecom: 
+= string 10 1
+  name .t271 string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name .t271 string 0 0
+ecom: 
+= list of string 10 1
+  name l list of string 0 0
+  tl list of string 10 1
+    name l list of string 0 0
+ecom: 
+tl list of string 10 1
+  name l list of string 0 0
+ecom to: 
+name l list of string 0 0
+ecom: 
+name t list of string 0 0
+ecom to: 
+* list of string 8 0
+  name .ret int 0 0
+fn: revstringlist
+64: argument l list of string ref 4
+72: local t list of string ref 3
+80: local .t271 string ref 1
+generate desc for revstringlist
+descmap offset 0
+descmap l type list of string offset 64 (d->offset=64 start=0) returns 64
+descmap t type list of string offset 72 (d->offset=72 start=0) returns 72
+descmap .t271 type string offset 80 (d->offset=80 start=0) returns 80
+fncom: revlist 5 6e89d0
+ecom: 
+= list of ref Listnode 10 1
+  name t list of ref Listnode 0 0
+  :: list of ref Listnode 10 1
+    hd ref Listnode 10 1
+      name l list of ref Listnode 0 0
+    name t list of ref Listnode 0 0
+ecom: 
+:: list of ref Listnode 10 1
+  hd ref Listnode 10 1
+    name l list of ref Listnode 0 0
+  name t list of ref Listnode 0 0
+ecom to: 
+name t list of ref Listnode 0 0
+eacom: 
+hd ref Listnode 10 1
+  name l list of ref Listnode 0 0
+ecom: 
+hd ref Listnode 10 1
+  name l list of ref Listnode 0 0
+ecom to: 
+name .t272 ref Listnode 0 0
+ecom: 
+= ref Listnode 10 1
+  name .t272 ref Listnode 0 0
+  name nil ref Listnode 1 0
+ecom: 
+name nil ref Listnode 1 0
+ecom to: 
+name .t272 ref Listnode 0 0
+ecom: 
+= list of ref Listnode 10 1
+  name l list of ref Listnode 0 0
+  tl list of ref Listnode 10 1
+    name l list of ref Listnode 0 0
+ecom: 
+tl list of ref Listnode 10 1
+  name l list of ref Listnode 0 0
+ecom to: 
+name l list of ref Listnode 0 0
+ecom: 
+name t list of ref Listnode 0 0
+ecom to: 
+* list of ref Listnode 8 0
+  name .ret int 0 0
+fn: revlist
+64: argument l list of ref Listnode ref 4
+72: local t list of ref Listnode ref 3
+80: local .t272 ref Listnode ref 1
+generate desc for revlist
+descmap offset 0
+descmap l type list of ref Listnode offset 64 (d->offset=64 start=0) returns 64
+descmap t type list of ref Listnode offset 72 (d->offset=72 start=0) returns 72
+descmap .t272 type ref Listnode offset 80 (d->offset=80 start=0) returns 80
+fncom: fdassignstr 4 6e8a90
+ecom: 
+= string 10 1
+  name l string 0 0
+  name nil polymorphic type 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name l string 0 0
+ecom: 
+= string 10 1
+  name l string 0 0
+  cast string 10 1
+    * int 8 0
+      + int 15 1
+        name redir ref Redir 0 0
+        const fd1 (4) int 6 0
+ecom: 
+cast string 10 1
+  * int 8 0
+    + int 15 1
+      name redir ref Redir 0 0
+      const fd1 (4) int 6 0
+ecom to: 
+name l string 0 0
+ecom: 
+= string 10 1
+  name r string 0 0
+  name nil polymorphic type 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name r string 0 0
+ecom: 
+= string 10 1
+  name r string 0 0
+  cast string 10 1
+    * int 8 0
+      + int 15 1
+        name redir ref Redir 0 0
+        const fd2 (8) int 6 0
+ecom: 
+cast string 10 1
+  * int 8 0
+    + int 15 1
+      name redir ref Redir 0 0
+      const fd2 (8) int 6 0
+ecom to: 
+name r string 0 0
+ecom: 
++ string 10 1
+  + string 10 1
+    + string 10 1
+      + string 10 1
+        const [ string 1 0
+        name l string 0 0
+      const = string 1 0
+    name r string 0 0
+  const ] string 1 0
+ecom to: 
+* string 8 0
+  name .ret int 0 0
+ecom: 
++ string 10 1
+  + string 10 1
+    + string 10 1
+      const [ string 1 0
+      name l string 0 0
+    const = string 1 0
+  name r string 0 0
+ecom to: 
+name .t273 string 0 0
+ecom: 
++ string 10 1
+  + string 10 1
+    const [ string 1 0
+    name l string 0 0
+  const = string 1 0
+ecom to: 
+name .t273 string 0 0
+ecom: 
++ string 10 1
+  const [ string 1 0
+  name l string 0 0
+ecom to: 
+name .t273 string 0 0
+ecom: 
+= string 10 1
+  name .t273 string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name .t273 string 0 0
+ecom: 
+= string 10 1
+  name r string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name r string 0 0
+ecom: 
++ string 10 1
+  + string 10 1
+    const [ string 1 0
+    name l string 0 0
+  const ] string 1 0
+ecom to: 
+* string 8 0
+  name .ret int 0 0
+ecom: 
++ string 10 1
+  const [ string 1 0
+  name l string 0 0
+ecom to: 
+name .t273 string 0 0
+ecom: 
+= string 10 1
+  name .t273 string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name .t273 string 0 0
+fn: fdassignstr
+64: argument isassign int ref 1
+72: argument redir ref Redir ref 4
+80: local l string ref 4
+88: local r string ref 3
+96: local .t273 string ref 1
+generate desc for fdassignstr
+descmap offset 0
+descmap isassign type int offset 64 (d->offset=64 start=0) returns -1
+descmap redir type ref Redir offset 72 (d->offset=72 start=0) returns 72
+descmap l type string offset 80 (d->offset=80 start=0) returns 80
+descmap r type string offset 88 (d->offset=88 start=0) returns 88
+descmap .t273 type string offset 96 (d->offset=96 start=0) returns 96
+fncom: redirstr 3 6e8b50
+ecom: 
+const < string 1 0
+ecom to: 
+* string 8 0
+  name .ret int 0 0
+ecom: 
+const > string 1 0
+ecom to: 
+* string 8 0
+  name .ret int 0 0
+ecom: 
+const >> string 1 0
+ecom to: 
+* string 8 0
+  name .ret int 0 0
+ecom: 
+const <> string 1 0
+ecom to: 
+* string 8 0
+  name .ret int 0 0
+fn: redirstr
+64: argument rtype int ref 1
+generate desc for redirstr
+descmap offset 0
+descmap rtype type int offset 64 (d->offset=64 start=0) returns -1
+fncom: cmd2string 31 4b8f00
+ecom: 
+const  string 1 0
+ecom to: 
+* string 8 0
+  name .ret int 0 0
+ecom: 
+= string 10 2
+  name s string 0 0
+  + string 10 2
+    + string 10 2
+      const { string 1 0
+      call string 10 2
+        name cmd2string fn(n: ref Node): string 11 1
+        seq no type 10 1
+          * ref Node 8 0
+            + int 15 1
+              name n ref Node 0 0
+              const left (8) int 6 0
+    const } string 1 0
+ecom: 
++ string 10 2
+  + string 10 2
+    const { string 1 0
+    call string 10 2
+      name cmd2string fn(n: ref Node): string 11 1
+      seq no type 10 1
+        * ref Node 8 0
+          + int 15 1
+            name n ref Node 0 0
+            const left (8) int 6 0
+  const } string 1 0
+ecom to: 
+name s string 0 0
+ecom: 
++ string 10 2
+  const { string 1 0
+  call string 10 2
+    name cmd2string fn(n: ref Node): string 11 1
+    seq no type 10 1
+      * ref Node 8 0
+        + int 15 1
+          name n ref Node 0 0
+          const left (8) int 6 0
+ecom to: 
+name .t274 string 0 0
+eacom: 
+call string 10 2
+  name cmd2string fn(n: ref Node): string 11 1
+  seq no type 10 1
+    * ref Node 8 0
+      + int 15 1
+        name n ref Node 0 0
+        const left (8) int 6 0
+ecom: 
+call string 10 2
+  name cmd2string fn(n: ref Node): string 11 1
+  seq no type 10 1
+    * ref Node 8 0
+      + int 15 1
+        name n ref Node 0 0
+        const left (8) int 6 0
+ecom to: 
+name .t274 string 0 0
+generate desc for big
+ecom: 
+* ref Node 8 0
+  + int 15 1
+    name n ref Node 0 0
+    const left (8) int 6 0
+ecom to: 
+* ref Node 8 0
+  + int 15 0
+    name .b275 big 0 0
+    const (64) int 6 0
+ecom: 
+= string 10 1
+  name .t274 string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name .t274 string 0 0
+ecom: 
+= string 10 2
+  name s string 0 0
+  + string 10 2
+    const $ string 1 0
+    call string 10 2
+      name cmd2string fn(n: ref Node): string 11 1
+      seq no type 10 1
+        * ref Node 8 0
+          + int 15 1
+            name n ref Node 0 0
+            const left (8) int 6 0
+ecom: 
++ string 10 2
+  const $ string 1 0
+  call string 10 2
+    name cmd2string fn(n: ref Node): string 11 1
+    seq no type 10 1
+      * ref Node 8 0
+        + int 15 1
+          name n ref Node 0 0
+          const left (8) int 6 0
+ecom to: 
+name s string 0 0
+eacom: 
+call string 10 2
+  name cmd2string fn(n: ref Node): string 11 1
+  seq no type 10 1
+    * ref Node 8 0
+      + int 15 1
+        name n ref Node 0 0
+        const left (8) int 6 0
+ecom: 
+call string 10 2
+  name cmd2string fn(n: ref Node): string 11 1
+  seq no type 10 1
+    * ref Node 8 0
+      + int 15 1
+        name n ref Node 0 0
+        const left (8) int 6 0
+ecom to: 
+name .t274 string 0 0
+generate desc for big
+ecom: 
+* ref Node 8 0
+  + int 15 1
+    name n ref Node 0 0
+    const left (8) int 6 0
+ecom to: 
+* ref Node 8 0
+  + int 15 0
+    name .b275 big 0 0
+    const (64) int 6 0
+ecom: 
+= string 10 1
+  name .t274 string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name .t274 string 0 0
+ecom: 
++= string 10 2
+  name s string 0 0
+  + string 10 2
+    + string 10 2
+      const ( string 1 0
+      call string 10 2
+        name cmd2string fn(n: ref Node): string 11 1
+        seq no type 10 1
+          * ref Node 8 0
+            + int 15 1
+              name n ref Node 0 0
+              const right (16) int 6 0
+    const ) string 1 0
+eacom: 
++ string 10 2
+  + string 10 2
+    const ( string 1 0
+    call string 10 2
+      name cmd2string fn(n: ref Node): string 11 1
+      seq no type 10 1
+        * ref Node 8 0
+          + int 15 1
+            name n ref Node 0 0
+            const right (16) int 6 0
+  const ) string 1 0
+ecom: 
++ string 10 2
+  + string 10 2
+    const ( string 1 0
+    call string 10 2
+      name cmd2string fn(n: ref Node): string 11 1
+      seq no type 10 1
+        * ref Node 8 0
+          + int 15 1
+            name n ref Node 0 0
+            const right (16) int 6 0
+  const ) string 1 0
+ecom to: 
+name .t274 string 0 0
+ecom: 
++ string 10 2
+  const ( string 1 0
+  call string 10 2
+    name cmd2string fn(n: ref Node): string 11 1
+    seq no type 10 1
+      * ref Node 8 0
+        + int 15 1
+          name n ref Node 0 0
+          const right (16) int 6 0
+ecom to: 
+name .t274 string 0 0
+eacom: 
+call string 10 2
+  name cmd2string fn(n: ref Node): string 11 1
+  seq no type 10 1
+    * ref Node 8 0
+      + int 15 1
+        name n ref Node 0 0
+        const right (16) int 6 0
+ecom: 
+call string 10 2
+  name cmd2string fn(n: ref Node): string 11 1
+  seq no type 10 1
+    * ref Node 8 0
+      + int 15 1
+        name n ref Node 0 0
+        const right (16) int 6 0
+ecom to: 
+name .t274 string 0 0
+generate desc for big
+ecom: 
+* ref Node 8 0
+  + int 15 1
+    name n ref Node 0 0
+    const right (16) int 6 0
+ecom to: 
+* ref Node 8 0
+  + int 15 0
+    name .b275 big 0 0
+    const (64) int 6 0
+ecom: 
+= string 10 1
+  name .t274 string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name .t274 string 0 0
+ecom: 
+= string 10 2
+  name s string 0 0
+  + string 10 2
+    const $" string 1 0
+    call string 10 2
+      name cmd2string fn(n: ref Node): string 11 1
+      seq no type 10 1
+        * ref Node 8 0
+          + int 15 1
+            name n ref Node 0 0
+            const left (8) int 6 0
+ecom: 
++ string 10 2
+  const $" string 1 0
+  call string 10 2
+    name cmd2string fn(n: ref Node): string 11 1
+    seq no type 10 1
+      * ref Node 8 0
+        + int 15 1
+          name n ref Node 0 0
+          const left (8) int 6 0
+ecom to: 
+name s string 0 0
+eacom: 
+call string 10 2
+  name cmd2string fn(n: ref Node): string 11 1
+  seq no type 10 1
+    * ref Node 8 0
+      + int 15 1
+        name n ref Node 0 0
+        const left (8) int 6 0
+ecom: 
+call string 10 2
+  name cmd2string fn(n: ref Node): string 11 1
+  seq no type 10 1
+    * ref Node 8 0
+      + int 15 1
+        name n ref Node 0 0
+        const left (8) int 6 0
+ecom to: 
+name .t274 string 0 0
+generate desc for big
+ecom: 
+* ref Node 8 0
+  + int 15 1
+    name n ref Node 0 0
+    const left (8) int 6 0
+ecom to: 
+* ref Node 8 0
+  + int 15 0
+    name .b275 big 0 0
+    const (64) int 6 0
+ecom: 
+= string 10 1
+  name .t274 string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name .t274 string 0 0
+ecom: 
+= string 10 2
+  name s string 0 0
+  + string 10 2
+    const $# string 1 0
+    call string 10 2
+      name cmd2string fn(n: ref Node): string 11 1
+      seq no type 10 1
+        * ref Node 8 0
+          + int 15 1
+            name n ref Node 0 0
+            const left (8) int 6 0
+ecom: 
++ string 10 2
+  const $# string 1 0
+  call string 10 2
+    name cmd2string fn(n: ref Node): string 11 1
+    seq no type 10 1
+      * ref Node 8 0
+        + int 15 1
+          name n ref Node 0 0
+          const left (8) int 6 0
+ecom to: 
+name s string 0 0
+eacom: 
+call string 10 2
+  name cmd2string fn(n: ref Node): string 11 1
+  seq no type 10 1
+    * ref Node 8 0
+      + int 15 1
+        name n ref Node 0 0
+        const left (8) int 6 0
+ecom: 
+call string 10 2
+  name cmd2string fn(n: ref Node): string 11 1
+  seq no type 10 1
+    * ref Node 8 0
+      + int 15 1
+        name n ref Node 0 0
+        const left (8) int 6 0
+ecom to: 
+name .t274 string 0 0
+generate desc for big
+ecom: 
+* ref Node 8 0
+  + int 15 1
+    name n ref Node 0 0
+    const left (8) int 6 0
+ecom to: 
+* ref Node 8 0
+  + int 15 0
+    name .b275 big 0 0
+    const (64) int 6 0
+ecom: 
+= string 10 1
+  name .t274 string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name .t274 string 0 0
+ecom: 
+= string 10 2
+  name s string 0 0
+  + string 10 2
+    const ` string 1 0
+    call string 10 2
+      name cmd2string fn(n: ref Node): string 11 1
+      seq no type 10 1
+        * ref Node 8 0
+          + int 15 1
+            name n ref Node 0 0
+            const left (8) int 6 0
+ecom: 
++ string 10 2
+  const ` string 1 0
+  call string 10 2
+    name cmd2string fn(n: ref Node): string 11 1
+    seq no type 10 1
+      * ref Node 8 0
+        + int 15 1
+          name n ref Node 0 0
+          const left (8) int 6 0
+ecom to: 
+name s string 0 0
+eacom: 
+call string 10 2
+  name cmd2string fn(n: ref Node): string 11 1
+  seq no type 10 1
+    * ref Node 8 0
+      + int 15 1
+        name n ref Node 0 0
+        const left (8) int 6 0
+ecom: 
+call string 10 2
+  name cmd2string fn(n: ref Node): string 11 1
+  seq no type 10 1
+    * ref Node 8 0
+      + int 15 1
+        name n ref Node 0 0
+        const left (8) int 6 0
+ecom to: 
+name .t274 string 0 0
+generate desc for big
+ecom: 
+* ref Node 8 0
+  + int 15 1
+    name n ref Node 0 0
+    const left (8) int 6 0
+ecom to: 
+* ref Node 8 0
+  + int 15 0
+    name .b275 big 0 0
+    const (64) int 6 0
+ecom: 
+= string 10 1
+  name .t274 string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name .t274 string 0 0
+ecom: 
+= string 10 2
+  name s string 0 0
+  + string 10 2
+    const " string 1 0
+    call string 10 2
+      name cmd2string fn(n: ref Node): string 11 1
+      seq no type 10 1
+        * ref Node 8 0
+          + int 15 1
+            name n ref Node 0 0
+            const left (8) int 6 0
+ecom: 
++ string 10 2
+  const " string 1 0
+  call string 10 2
+    name cmd2string fn(n: ref Node): string 11 1
+    seq no type 10 1
+      * ref Node 8 0
+        + int 15 1
+          name n ref Node 0 0
+          const left (8) int 6 0
+ecom to: 
+name s string 0 0
+eacom: 
+call string 10 2
+  name cmd2string fn(n: ref Node): string 11 1
+  seq no type 10 1
+    * ref Node 8 0
+      + int 15 1
+        name n ref Node 0 0
+        const left (8) int 6 0
+ecom: 
+call string 10 2
+  name cmd2string fn(n: ref Node): string 11 1
+  seq no type 10 1
+    * ref Node 8 0
+      + int 15 1
+        name n ref Node 0 0
+        const left (8) int 6 0
+ecom to: 
+name .t274 string 0 0
+generate desc for big
+ecom: 
+* ref Node 8 0
+  + int 15 1
+    name n ref Node 0 0
+    const left (8) int 6 0
+ecom to: 
+* ref Node 8 0
+  + int 15 0
+    name .b275 big 0 0
+    const (64) int 6 0
+ecom: 
+= string 10 1
+  name .t274 string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name .t274 string 0 0
+ecom: 
+= string 10 2
+  name s string 0 0
+  call string 10 2
+    name redirstr fn(rtype: int): string 11 1
+    seq no type 10 1
+      * int 10 1
+        * ref Redir 8 0
+          + int 15 1
+            name n ref Node 0 0
+            const redir (32) int 6 0
+ecom: 
+call string 10 2
+  name redirstr fn(rtype: int): string 11 1
+  seq no type 10 1
+    * int 10 1
+      * ref Redir 8 0
+        + int 15 1
+          name n ref Node 0 0
+          const redir (32) int 6 0
+ecom to: 
+name s string 0 0
+generate desc for big
+ecom: 
+* int 10 1
+  * ref Redir 8 0
+    + int 15 1
+      name n ref Node 0 0
+      const redir (32) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b275 big 0 0
+    const (64) int 6 0
+eacom: 
+* int 10 1
+  * ref Redir 8 0
+    + int 15 1
+      name n ref Node 0 0
+      const redir (32) int 6 0
+ecom: 
+* ref Redir 8 0
+  + int 15 1
+    name n ref Node 0 0
+    const redir (32) int 6 0
+ecom to: 
+name .t274 ref Redir 0 0
+ecom: 
+= ref Redir 10 1
+  name .t274 ref Redir 0 0
+  name nil ref Redir 1 0
+ecom: 
+name nil ref Redir 1 0
+ecom to: 
+name .t274 ref Redir 0 0
+eacom: 
+* int 10 1
+  + int 10 1
+    * ref Redir 8 0
+      + int 15 1
+        name n ref Node 0 0
+        const redir (32) int 6 0
+    const fd1 (4) int 6 0
+ecom: 
+* ref Redir 8 0
+  + int 15 1
+    name n ref Node 0 0
+    const redir (32) int 6 0
+ecom to: 
+name .t274 ref Redir 0 0
+ecom: 
+= ref Redir 10 1
+  name .t274 ref Redir 0 0
+  name nil ref Redir 1 0
+ecom: 
+name nil ref Redir 1 0
+ecom to: 
+name .t274 ref Redir 0 0
+ecom: 
++= string 10 2
+  name s string 0 0
+  call string 10 2
+    name fdassignstr fn(isassign: int, redir: ref Redir): string 11 1
+    seq no type 10 1
+      const (0) int 6 0
+      seq no type 10 1
+        * ref Redir 8 0
+          + int 15 1
+            name n ref Node 0 0
+            const redir (32) int 6 0
+eacom: 
+call string 10 2
+  name fdassignstr fn(isassign: int, redir: ref Redir): string 11 1
+  seq no type 10 1
+    const (0) int 6 0
+    seq no type 10 1
+      * ref Redir 8 0
+        + int 15 1
+          name n ref Node 0 0
+          const redir (32) int 6 0
+ecom: 
+call string 10 2
+  name fdassignstr fn(isassign: int, redir: ref Redir): string 11 1
+  seq no type 10 1
+    const (0) int 6 0
+    seq no type 10 1
+      * ref Redir 8 0
+        + int 15 1
+          name n ref Node 0 0
+          const redir (32) int 6 0
+ecom to: 
+name .t274 string 0 0
+generate desc for big
+ecom: 
+const (0) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b275 big 0 0
+    const (64) int 6 0
+ecom: 
+* ref Redir 8 0
+  + int 15 1
+    name n ref Node 0 0
+    const redir (32) int 6 0
+ecom to: 
+* ref Redir 8 0
+  + int 15 0
+    name .b275 big 0 0
+    const (72) int 6 0
+ecom: 
+= string 10 1
+  name .t274 string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name .t274 string 0 0
+ecom: 
++= string 10 2
+  name s string 0 0
+  call string 10 2
+    name cmd2string fn(n: ref Node): string 11 1
+    seq no type 10 1
+      * ref Node 8 0
+        + int 15 1
+          name n ref Node 0 0
+          const left (8) int 6 0
+eacom: 
+call string 10 2
+  name cmd2string fn(n: ref Node): string 11 1
+  seq no type 10 1
+    * ref Node 8 0
+      + int 15 1
+        name n ref Node 0 0
+        const left (8) int 6 0
+ecom: 
+call string 10 2
+  name cmd2string fn(n: ref Node): string 11 1
+  seq no type 10 1
+    * ref Node 8 0
+      + int 15 1
+        name n ref Node 0 0
+        const left (8) int 6 0
+ecom to: 
+name .t274 string 0 0
+generate desc for big
+ecom: 
+* ref Node 8 0
+  + int 15 1
+    name n ref Node 0 0
+    const left (8) int 6 0
+ecom to: 
+* ref Node 8 0
+  + int 15 0
+    name .b275 big 0 0
+    const (64) int 6 0
+ecom: 
+= string 10 1
+  name .t274 string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name .t274 string 0 0
+ecom: 
+= string 10 3
+  name s string 0 0
+  + string 10 3
+    call string 10 2
+      name redirstr fn(rtype: int): string 11 1
+      seq no type 10 1
+        * int 10 1
+          * ref Redir 8 0
+            + int 15 1
+              name n ref Node 0 0
+              const redir (32) int 6 0
+    call string 10 2
+      name fdassignstr fn(isassign: int, redir: ref Redir): string 11 1
+      seq no type 10 1
+        const (1) int 6 0
+        seq no type 10 1
+          * ref Redir 8 0
+            + int 15 1
+              name n ref Node 0 0
+              const redir (32) int 6 0
+ecom: 
++ string 10 3
+  call string 10 2
+    name redirstr fn(rtype: int): string 11 1
+    seq no type 10 1
+      * int 10 1
+        * ref Redir 8 0
+          + int 15 1
+            name n ref Node 0 0
+            const redir (32) int 6 0
+  call string 10 2
+    name fdassignstr fn(isassign: int, redir: ref Redir): string 11 1
+    seq no type 10 1
+      const (1) int 6 0
+      seq no type 10 1
+        * ref Redir 8 0
+          + int 15 1
+            name n ref Node 0 0
+            const redir (32) int 6 0
+ecom to: 
+name s string 0 0
+ecom: 
+call string 10 2
+  name redirstr fn(rtype: int): string 11 1
+  seq no type 10 1
+    * int 10 1
+      * ref Redir 8 0
+        + int 15 1
+          name n ref Node 0 0
+          const redir (32) int 6 0
+ecom to: 
+name .t274 string 0 0
+generate desc for big
+ecom: 
+* int 10 1
+  * ref Redir 8 0
+    + int 15 1
+      name n ref Node 0 0
+      const redir (32) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b275 big 0 0
+    const (64) int 6 0
+eacom: 
+* int 10 1
+  * ref Redir 8 0
+    + int 15 1
+      name n ref Node 0 0
+      const redir (32) int 6 0
+ecom: 
+* ref Redir 8 0
+  + int 15 1
+    name n ref Node 0 0
+    const redir (32) int 6 0
+ecom to: 
+name .t276 ref Redir 0 0
+ecom: 
+= ref Redir 10 1
+  name .t276 ref Redir 0 0
+  name nil ref Redir 1 0
+ecom: 
+name nil ref Redir 1 0
+ecom to: 
+name .t276 ref Redir 0 0
+eacom: 
+call string 10 2
+  name fdassignstr fn(isassign: int, redir: ref Redir): string 11 1
+  seq no type 10 1
+    const (1) int 6 0
+    seq no type 10 1
+      * ref Redir 8 0
+        + int 15 1
+          name n ref Node 0 0
+          const redir (32) int 6 0
+ecom: 
+call string 10 2
+  name fdassignstr fn(isassign: int, redir: ref Redir): string 11 1
+  seq no type 10 1
+    const (1) int 6 0
+    seq no type 10 1
+      * ref Redir 8 0
+        + int 15 1
+          name n ref Node 0 0
+          const redir (32) int 6 0
+ecom to: 
+name .t276 string 0 0
+generate desc for big
+ecom: 
+const (1) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b275 big 0 0
+    const (64) int 6 0
+ecom: 
+* ref Redir 8 0
+  + int 15 1
+    name n ref Node 0 0
+    const redir (32) int 6 0
+ecom to: 
+* ref Redir 8 0
+  + int 15 0
+    name .b275 big 0 0
+    const (72) int 6 0
+ecom: 
+= string 10 1
+  name .t274 string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name .t274 string 0 0
+ecom: 
+= string 10 1
+  name .t276 string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name .t276 string 0 0
+ecom: 
+= string 10 2
+  name s string 0 0
+  + string 10 2
+    + string 10 2
+      const ( string 1 0
+      call string 10 2
+        name cmd2string fn(n: ref Node): string 11 1
+        seq no type 10 1
+          * ref Node 8 0
+            + int 15 1
+              name n ref Node 0 0
+              const left (8) int 6 0
+    const ) string 1 0
+ecom: 
++ string 10 2
+  + string 10 2
+    const ( string 1 0
+    call string 10 2
+      name cmd2string fn(n: ref Node): string 11 1
+      seq no type 10 1
+        * ref Node 8 0
+          + int 15 1
+            name n ref Node 0 0
+            const left (8) int 6 0
+  const ) string 1 0
+ecom to: 
+name s string 0 0
+ecom: 
++ string 10 2
+  const ( string 1 0
+  call string 10 2
+    name cmd2string fn(n: ref Node): string 11 1
+    seq no type 10 1
+      * ref Node 8 0
+        + int 15 1
+          name n ref Node 0 0
+          const left (8) int 6 0
+ecom to: 
+name .t276 string 0 0
+eacom: 
+call string 10 2
+  name cmd2string fn(n: ref Node): string 11 1
+  seq no type 10 1
+    * ref Node 8 0
+      + int 15 1
+        name n ref Node 0 0
+        const left (8) int 6 0
+ecom: 
+call string 10 2
+  name cmd2string fn(n: ref Node): string 11 1
+  seq no type 10 1
+    * ref Node 8 0
+      + int 15 1
+        name n ref Node 0 0
+        const left (8) int 6 0
+ecom to: 
+name .t276 string 0 0
+generate desc for big
+ecom: 
+* ref Node 8 0
+  + int 15 1
+    name n ref Node 0 0
+    const left (8) int 6 0
+ecom to: 
+* ref Node 8 0
+  + int 15 0
+    name .b275 big 0 0
+    const (64) int 6 0
+ecom: 
+= string 10 1
+  name .t276 string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name .t276 string 0 0
+ecom: 
+= string 10 3
+  name s string 0 0
+  + string 10 3
+    + string 10 2
+      call string 10 2
+        name cmd2string fn(n: ref Node): string 11 1
+        seq no type 10 1
+          * ref Node 8 0
+            + int 15 1
+              name n ref Node 0 0
+              const left (8) int 6 0
+      const ; string 1 0
+    call string 10 2
+      name cmd2string fn(n: ref Node): string 11 1
+      seq no type 10 1
+        * ref Node 8 0
+          + int 15 1
+            name n ref Node 0 0
+            const right (16) int 6 0
+ecom: 
++ string 10 3
+  + string 10 2
+    call string 10 2
+      name cmd2string fn(n: ref Node): string 11 1
+      seq no type 10 1
+        * ref Node 8 0
+          + int 15 1
+            name n ref Node 0 0
+            const left (8) int 6 0
+    const ; string 1 0
+  call string 10 2
+    name cmd2string fn(n: ref Node): string 11 1
+    seq no type 10 1
+      * ref Node 8 0
+        + int 15 1
+          name n ref Node 0 0
+          const right (16) int 6 0
+ecom to: 
+name s string 0 0
+ecom: 
++ string 10 2
+  call string 10 2
+    name cmd2string fn(n: ref Node): string 11 1
+    seq no type 10 1
+      * ref Node 8 0
+        + int 15 1
+          name n ref Node 0 0
+          const left (8) int 6 0
+  const ; string 1 0
+ecom to: 
+name .t276 string 0 0
+ecom: 
+call string 10 2
+  name cmd2string fn(n: ref Node): string 11 1
+  seq no type 10 1
+    * ref Node 8 0
+      + int 15 1
+        name n ref Node 0 0
+        const left (8) int 6 0
+ecom to: 
+name .t276 string 0 0
+generate desc for big
+ecom: 
+* ref Node 8 0
+  + int 15 1
+    name n ref Node 0 0
+    const left (8) int 6 0
+ecom to: 
+* ref Node 8 0
+  + int 15 0
+    name .b275 big 0 0
+    const (64) int 6 0
+eacom: 
+call string 10 2
+  name cmd2string fn(n: ref Node): string 11 1
+  seq no type 10 1
+    * ref Node 8 0
+      + int 15 1
+        name n ref Node 0 0
+        const right (16) int 6 0
+ecom: 
+call string 10 2
+  name cmd2string fn(n: ref Node): string 11 1
+  seq no type 10 1
+    * ref Node 8 0
+      + int 15 1
+        name n ref Node 0 0
+        const right (16) int 6 0
+ecom to: 
+name .t274 string 0 0
+generate desc for big
+ecom: 
+* ref Node 8 0
+  + int 15 1
+    name n ref Node 0 0
+    const right (16) int 6 0
+ecom to: 
+* ref Node 8 0
+  + int 15 0
+    name .b275 big 0 0
+    const (64) int 6 0
+ecom: 
+= string 10 1
+  name .t276 string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name .t276 string 0 0
+ecom: 
+= string 10 1
+  name .t274 string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name .t274 string 0 0
+ecom: 
+= string 10 2
+  name s string 0 0
+  + string 10 2
+    call string 10 2
+      name cmd2string fn(n: ref Node): string 11 1
+      seq no type 10 1
+        * ref Node 8 0
+          + int 15 1
+            name n ref Node 0 0
+            const left (8) int 6 0
+    const & string 1 0
+ecom: 
++ string 10 2
+  call string 10 2
+    name cmd2string fn(n: ref Node): string 11 1
+    seq no type 10 1
+      * ref Node 8 0
+        + int 15 1
+          name n ref Node 0 0
+          const left (8) int 6 0
+  const & string 1 0
+ecom to: 
+name s string 0 0
+ecom: 
+call string 10 2
+  name cmd2string fn(n: ref Node): string 11 1
+  seq no type 10 1
+    * ref Node 8 0
+      + int 15 1
+        name n ref Node 0 0
+        const left (8) int 6 0
+ecom to: 
+name .t276 string 0 0
+generate desc for big
+ecom: 
+* ref Node 8 0
+  + int 15 1
+    name n ref Node 0 0
+    const left (8) int 6 0
+ecom to: 
+* ref Node 8 0
+  + int 15 0
+    name .b275 big 0 0
+    const (64) int 6 0
+ecom: 
+= string 10 1
+  name .t276 string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name .t276 string 0 0
+ecom: 
+= string 10 3
+  name s string 0 0
+  + string 10 3
+    + string 10 2
+      call string 10 2
+        name cmd2string fn(n: ref Node): string 11 1
+        seq no type 10 1
+          * ref Node 8 0
+            + int 15 1
+              name n ref Node 0 0
+              const left (8) int 6 0
+      const ^ string 1 0
+    call string 10 2
+      name cmd2string fn(n: ref Node): string 11 1
+      seq no type 10 1
+        * ref Node 8 0
+          + int 15 1
+            name n ref Node 0 0
+            const right (16) int 6 0
+ecom: 
++ string 10 3
+  + string 10 2
+    call string 10 2
+      name cmd2string fn(n: ref Node): string 11 1
+      seq no type 10 1
+        * ref Node 8 0
+          + int 15 1
+            name n ref Node 0 0
+            const left (8) int 6 0
+    const ^ string 1 0
+  call string 10 2
+    name cmd2string fn(n: ref Node): string 11 1
+    seq no type 10 1
+      * ref Node 8 0
+        + int 15 1
+          name n ref Node 0 0
+          const right (16) int 6 0
+ecom to: 
+name s string 0 0
+ecom: 
++ string 10 2
+  call string 10 2
+    name cmd2string fn(n: ref Node): string 11 1
+    seq no type 10 1
+      * ref Node 8 0
+        + int 15 1
+          name n ref Node 0 0
+          const left (8) int 6 0
+  const ^ string 1 0
+ecom to: 
+name .t276 string 0 0
+ecom: 
+call string 10 2
+  name cmd2string fn(n: ref Node): string 11 1
+  seq no type 10 1
+    * ref Node 8 0
+      + int 15 1
+        name n ref Node 0 0
+        const left (8) int 6 0
+ecom to: 
+name .t276 string 0 0
+generate desc for big
+ecom: 
+* ref Node 8 0
+  + int 15 1
+    name n ref Node 0 0
+    const left (8) int 6 0
+ecom to: 
+* ref Node 8 0
+  + int 15 0
+    name .b275 big 0 0
+    const (64) int 6 0
+eacom: 
+call string 10 2
+  name cmd2string fn(n: ref Node): string 11 1
+  seq no type 10 1
+    * ref Node 8 0
+      + int 15 1
+        name n ref Node 0 0
+        const right (16) int 6 0
+ecom: 
+call string 10 2
+  name cmd2string fn(n: ref Node): string 11 1
+  seq no type 10 1
+    * ref Node 8 0
+      + int 15 1
+        name n ref Node 0 0
+        const right (16) int 6 0
+ecom to: 
+name .t274 string 0 0
+generate desc for big
+ecom: 
+* ref Node 8 0
+  + int 15 1
+    name n ref Node 0 0
+    const right (16) int 6 0
+ecom to: 
+* ref Node 8 0
+  + int 15 0
+    name .b275 big 0 0
+    const (64) int 6 0
+ecom: 
+= string 10 1
+  name .t276 string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name .t276 string 0 0
+ecom: 
+= string 10 1
+  name .t274 string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name .t274 string 0 0
+ecom: 
+= string 10 2
+  name s string 0 0
+  + string 10 2
+    call string 10 2
+      name cmd2string fn(n: ref Node): string 11 1
+      seq no type 10 1
+        * ref Node 8 0
+          + int 15 1
+            name n ref Node 0 0
+            const left (8) int 6 0
+    const | string 1 0
+ecom: 
++ string 10 2
+  call string 10 2
+    name cmd2string fn(n: ref Node): string 11 1
+    seq no type 10 1
+      * ref Node 8 0
+        + int 15 1
+          name n ref Node 0 0
+          const left (8) int 6 0
+  const | string 1 0
+ecom to: 
+name s string 0 0
+ecom: 
+call string 10 2
+  name cmd2string fn(n: ref Node): string 11 1
+  seq no type 10 1
+    * ref Node 8 0
+      + int 15 1
+        name n ref Node 0 0
+        const left (8) int 6 0
+ecom to: 
+name .t276 string 0 0
+generate desc for big
+ecom: 
+* ref Node 8 0
+  + int 15 1
+    name n ref Node 0 0
+    const left (8) int 6 0
+ecom to: 
+* ref Node 8 0
+  + int 15 0
+    name .b275 big 0 0
+    const (64) int 6 0
+ecom: 
+= string 10 1
+  name .t276 string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name .t276 string 0 0
+eacom: 
+* int 10 1
+  + int 10 1
+    * ref Redir 8 0
+      + int 15 1
+        name n ref Node 0 0
+        const redir (32) int 6 0
+    const fd1 (4) int 6 0
+ecom: 
+* ref Redir 8 0
+  + int 15 1
+    name n ref Node 0 0
+    const redir (32) int 6 0
+ecom to: 
+name .t276 ref Redir 0 0
+ecom: 
+= ref Redir 10 1
+  name .t276 ref Redir 0 0
+  name nil ref Redir 1 0
+ecom: 
+name nil ref Redir 1 0
+ecom to: 
+name .t276 ref Redir 0 0
+eacom: 
+* int 10 1
+  + int 10 1
+    * ref Redir 8 0
+      + int 15 1
+        name n ref Node 0 0
+        const redir (32) int 6 0
+    const fd2 (8) int 6 0
+ecom: 
+* ref Redir 8 0
+  + int 15 1
+    name n ref Node 0 0
+    const redir (32) int 6 0
+ecom to: 
+name .t276 ref Redir 0 0
+ecom: 
+= ref Redir 10 1
+  name .t276 ref Redir 0 0
+  name nil ref Redir 1 0
+ecom: 
+name nil ref Redir 1 0
+ecom to: 
+name .t276 ref Redir 0 0
+ecom: 
++= string 10 2
+  name s string 0 0
+  call string 10 2
+    name fdassignstr fn(isassign: int, redir: ref Redir): string 11 1
+    seq no type 10 2
+      != int 10 1
+        * int 10 1
+          + int 10 1
+            * ref Redir 8 0
+              + int 15 1
+                name n ref Node 0 0
+                const redir (32) int 6 0
+            const fd2 (8) int 6 0
+        const (-1) int 6 0
+      seq no type 10 1
+        * ref Redir 8 0
+          + int 15 1
+            name n ref Node 0 0
+            const redir (32) int 6 0
+eacom: 
+call string 10 2
+  name fdassignstr fn(isassign: int, redir: ref Redir): string 11 1
+  seq no type 10 2
+    != int 10 1
+      * int 10 1
+        + int 10 1
+          * ref Redir 8 0
+            + int 15 1
+              name n ref Node 0 0
+              const redir (32) int 6 0
+          const fd2 (8) int 6 0
+      const (-1) int 6 0
+    seq no type 10 1
+      * ref Redir 8 0
+        + int 15 1
+          name n ref Node 0 0
+          const redir (32) int 6 0
+ecom: 
+call string 10 2
+  name fdassignstr fn(isassign: int, redir: ref Redir): string 11 1
+  seq no type 10 2
+    != int 10 1
+      * int 10 1
+        + int 10 1
+          * ref Redir 8 0
+            + int 15 1
+              name n ref Node 0 0
+              const redir (32) int 6 0
+          const fd2 (8) int 6 0
+      const (-1) int 6 0
+    seq no type 10 1
+      * ref Redir 8 0
+        + int 15 1
+          name n ref Node 0 0
+          const redir (32) int 6 0
+ecom to: 
+name .t276 string 0 0
+generate desc for big
+ecom: 
+!= int 10 1
+  * int 10 1
+    + int 10 1
+      * ref Redir 8 0
+        + int 15 1
+          name n ref Node 0 0
+          const redir (32) int 6 0
+      const fd2 (8) int 6 0
+  const (-1) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b275 big 0 0
+    const (64) int 6 0
+eacom: 
+* int 10 1
+  + int 10 1
+    * ref Redir 8 0
+      + int 15 1
+        name n ref Node 0 0
+        const redir (32) int 6 0
+    const fd2 (8) int 6 0
+ecom: 
+* ref Redir 8 0
+  + int 15 1
+    name n ref Node 0 0
+    const redir (32) int 6 0
+ecom to: 
+name .t274 ref Redir 0 0
+ecom: 
+= ref Redir 10 1
+  name .t274 ref Redir 0 0
+  name nil ref Redir 1 0
+ecom: 
+name nil ref Redir 1 0
+ecom to: 
+name .t274 ref Redir 0 0
+ecom: 
+* ref Redir 8 0
+  + int 15 1
+    name n ref Node 0 0
+    const redir (32) int 6 0
+ecom to: 
+* ref Redir 8 0
+  + int 15 0
+    name .b275 big 0 0
+    const (72) int 6 0
+ecom: 
+= string 10 1
+  name .t276 string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name .t276 string 0 0
+ecom: 
++= string 10 2
+  name s string 0 0
+  call string 10 2
+    name cmd2string fn(n: ref Node): string 11 1
+    seq no type 10 1
+      * ref Node 8 0
+        + int 15 1
+          name n ref Node 0 0
+          const right (16) int 6 0
+eacom: 
+call string 10 2
+  name cmd2string fn(n: ref Node): string 11 1
+  seq no type 10 1
+    * ref Node 8 0
+      + int 15 1
+        name n ref Node 0 0
+        const right (16) int 6 0
+ecom: 
+call string 10 2
+  name cmd2string fn(n: ref Node): string 11 1
+  seq no type 10 1
+    * ref Node 8 0
+      + int 15 1
+        name n ref Node 0 0
+        const right (16) int 6 0
+ecom to: 
+name .t276 string 0 0
+generate desc for big
+ecom: 
+* ref Node 8 0
+  + int 15 1
+    name n ref Node 0 0
+    const right (16) int 6 0
+ecom to: 
+* ref Node 8 0
+  + int 15 0
+    name .b275 big 0 0
+    const (64) int 6 0
+ecom: 
+= string 10 1
+  name .t276 string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name .t276 string 0 0
+ecom: 
+= string 10 3
+  name s string 0 0
+  + string 10 3
+    + string 10 2
+      call string 10 2
+        name cmd2string fn(n: ref Node): string 11 1
+        seq no type 10 1
+          * ref Node 8 0
+            + int 15 1
+              name n ref Node 0 0
+              const left (8) int 6 0
+      const = string 1 0
+    call string 10 2
+      name cmd2string fn(n: ref Node): string 11 1
+      seq no type 10 1
+        * ref Node 8 0
+          + int 15 1
+            name n ref Node 0 0
+            const right (16) int 6 0
+ecom: 
++ string 10 3
+  + string 10 2
+    call string 10 2
+      name cmd2string fn(n: ref Node): string 11 1
+      seq no type 10 1
+        * ref Node 8 0
+          + int 15 1
+            name n ref Node 0 0
+            const left (8) int 6 0
+    const = string 1 0
+  call string 10 2
+    name cmd2string fn(n: ref Node): string 11 1
+    seq no type 10 1
+      * ref Node 8 0
+        + int 15 1
+          name n ref Node 0 0
+          const right (16) int 6 0
+ecom to: 
+name s string 0 0
+ecom: 
++ string 10 2
+  call string 10 2
+    name cmd2string fn(n: ref Node): string 11 1
+    seq no type 10 1
+      * ref Node 8 0
+        + int 15 1
+          name n ref Node 0 0
+          const left (8) int 6 0
+  const = string 1 0
+ecom to: 
+name .t276 string 0 0
+ecom: 
+call string 10 2
+  name cmd2string fn(n: ref Node): string 11 1
+  seq no type 10 1
+    * ref Node 8 0
+      + int 15 1
+        name n ref Node 0 0
+        const left (8) int 6 0
+ecom to: 
+name .t276 string 0 0
+generate desc for big
+ecom: 
+* ref Node 8 0
+  + int 15 1
+    name n ref Node 0 0
+    const left (8) int 6 0
+ecom to: 
+* ref Node 8 0
+  + int 15 0
+    name .b275 big 0 0
+    const (64) int 6 0
+eacom: 
+call string 10 2
+  name cmd2string fn(n: ref Node): string 11 1
+  seq no type 10 1
+    * ref Node 8 0
+      + int 15 1
+        name n ref Node 0 0
+        const right (16) int 6 0
+ecom: 
+call string 10 2
+  name cmd2string fn(n: ref Node): string 11 1
+  seq no type 10 1
+    * ref Node 8 0
+      + int 15 1
+        name n ref Node 0 0
+        const right (16) int 6 0
+ecom to: 
+name .t274 string 0 0
+generate desc for big
+ecom: 
+* ref Node 8 0
+  + int 15 1
+    name n ref Node 0 0
+    const right (16) int 6 0
+ecom to: 
+* ref Node 8 0
+  + int 15 0
+    name .b275 big 0 0
+    const (64) int 6 0
+ecom: 
+= string 10 1
+  name .t276 string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name .t276 string 0 0
+ecom: 
+= string 10 1
+  name .t274 string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name .t274 string 0 0
+ecom: 
+= string 10 3
+  name s string 0 0
+  + string 10 3
+    + string 10 2
+      call string 10 2
+        name cmd2string fn(n: ref Node): string 11 1
+        seq no type 10 1
+          * ref Node 8 0
+            + int 15 1
+              name n ref Node 0 0
+              const left (8) int 6 0
+      const := string 1 0
+    call string 10 2
+      name cmd2string fn(n: ref Node): string 11 1
+      seq no type 10 1
+        * ref Node 8 0
+          + int 15 1
+            name n ref Node 0 0
+            const right (16) int 6 0
+ecom: 
++ string 10 3
+  + string 10 2
+    call string 10 2
+      name cmd2string fn(n: ref Node): string 11 1
+      seq no type 10 1
+        * ref Node 8 0
+          + int 15 1
+            name n ref Node 0 0
+            const left (8) int 6 0
+    const := string 1 0
+  call string 10 2
+    name cmd2string fn(n: ref Node): string 11 1
+    seq no type 10 1
+      * ref Node 8 0
+        + int 15 1
+          name n ref Node 0 0
+          const right (16) int 6 0
+ecom to: 
+name s string 0 0
+ecom: 
++ string 10 2
+  call string 10 2
+    name cmd2string fn(n: ref Node): string 11 1
+    seq no type 10 1
+      * ref Node 8 0
+        + int 15 1
+          name n ref Node 0 0
+          const left (8) int 6 0
+  const := string 1 0
+ecom to: 
+name .t276 string 0 0
+ecom: 
+call string 10 2
+  name cmd2string fn(n: ref Node): string 11 1
+  seq no type 10 1
+    * ref Node 8 0
+      + int 15 1
+        name n ref Node 0 0
+        const left (8) int 6 0
+ecom to: 
+name .t276 string 0 0
+generate desc for big
+ecom: 
+* ref Node 8 0
+  + int 15 1
+    name n ref Node 0 0
+    const left (8) int 6 0
+ecom to: 
+* ref Node 8 0
+  + int 15 0
+    name .b275 big 0 0
+    const (64) int 6 0
+eacom: 
+call string 10 2
+  name cmd2string fn(n: ref Node): string 11 1
+  seq no type 10 1
+    * ref Node 8 0
+      + int 15 1
+        name n ref Node 0 0
+        const right (16) int 6 0
+ecom: 
+call string 10 2
+  name cmd2string fn(n: ref Node): string 11 1
+  seq no type 10 1
+    * ref Node 8 0
+      + int 15 1
+        name n ref Node 0 0
+        const right (16) int 6 0
+ecom to: 
+name .t274 string 0 0
+generate desc for big
+ecom: 
+* ref Node 8 0
+  + int 15 1
+    name n ref Node 0 0
+    const right (16) int 6 0
+ecom to: 
+* ref Node 8 0
+  + int 15 0
+    name .b275 big 0 0
+    const (64) int 6 0
+ecom: 
+= string 10 1
+  name .t276 string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name .t276 string 0 0
+ecom: 
+= string 10 1
+  name .t274 string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name .t274 string 0 0
+ecom: 
+= string 10 3
+  name s string 0 0
+  + string 10 3
+    + string 10 2
+      call string 10 2
+        name cmd2string fn(n: ref Node): string 11 1
+        seq no type 10 1
+          * ref Node 8 0
+            + int 15 1
+              name n ref Node 0 0
+              const left (8) int 6 0
+      const   string 1 0
+    call string 10 2
+      name cmd2string fn(n: ref Node): string 11 1
+      seq no type 10 1
+        * ref Node 8 0
+          + int 15 1
+            name n ref Node 0 0
+            const right (16) int 6 0
+ecom: 
++ string 10 3
+  + string 10 2
+    call string 10 2
+      name cmd2string fn(n: ref Node): string 11 1
+      seq no type 10 1
+        * ref Node 8 0
+          + int 15 1
+            name n ref Node 0 0
+            const left (8) int 6 0
+    const   string 1 0
+  call string 10 2
+    name cmd2string fn(n: ref Node): string 11 1
+    seq no type 10 1
+      * ref Node 8 0
+        + int 15 1
+          name n ref Node 0 0
+          const right (16) int 6 0
+ecom to: 
+name s string 0 0
+ecom: 
++ string 10 2
+  call string 10 2
+    name cmd2string fn(n: ref Node): string 11 1
+    seq no type 10 1
+      * ref Node 8 0
+        + int 15 1
+          name n ref Node 0 0
+          const left (8) int 6 0
+  const   string 1 0
+ecom to: 
+name .t276 string 0 0
+ecom: 
+call string 10 2
+  name cmd2string fn(n: ref Node): string 11 1
+  seq no type 10 1
+    * ref Node 8 0
+      + int 15 1
+        name n ref Node 0 0
+        const left (8) int 6 0
+ecom to: 
+name .t276 string 0 0
+generate desc for big
+ecom: 
+* ref Node 8 0
+  + int 15 1
+    name n ref Node 0 0
+    const left (8) int 6 0
+ecom to: 
+* ref Node 8 0
+  + int 15 0
+    name .b275 big 0 0
+    const (64) int 6 0
+eacom: 
+call string 10 2
+  name cmd2string fn(n: ref Node): string 11 1
+  seq no type 10 1
+    * ref Node 8 0
+      + int 15 1
+        name n ref Node 0 0
+        const right (16) int 6 0
+ecom: 
+call string 10 2
+  name cmd2string fn(n: ref Node): string 11 1
+  seq no type 10 1
+    * ref Node 8 0
+      + int 15 1
+        name n ref Node 0 0
+        const right (16) int 6 0
+ecom to: 
+name .t274 string 0 0
+generate desc for big
+ecom: 
+* ref Node 8 0
+  + int 15 1
+    name n ref Node 0 0
+    const right (16) int 6 0
+ecom to: 
+* ref Node 8 0
+  + int 15 0
+    name .b275 big 0 0
+    const (64) int 6 0
+ecom: 
+= string 10 1
+  name .t276 string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name .t276 string 0 0
+ecom: 
+= string 10 1
+  name .t274 string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name .t274 string 0 0
+ecom: 
+= string 10 2
+  name s string 0 0
+  call string 10 2
+    name quote fn(s: string, glob: int): string 11 1
+    seq no type 10 1
+      * string 8 0
+        + int 15 1
+          name n ref Node 0 0
+          const word (24) int 6 0
+      seq no type 10 1
+        const (1) int 6 0
+ecom: 
+call string 10 2
+  name quote fn(s: string, glob: int): string 11 1
+  seq no type 10 1
+    * string 8 0
+      + int 15 1
+        name n ref Node 0 0
+        const word (24) int 6 0
+    seq no type 10 1
+      const (1) int 6 0
+ecom to: 
+name s string 0 0
+generate desc for big
+ecom: 
+* string 8 0
+  + int 15 1
+    name n ref Node 0 0
+    const word (24) int 6 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b275 big 0 0
+    const (64) int 6 0
+ecom: 
+const (1) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b275 big 0 0
+    const (72) int 6 0
+ecom: 
+= string 10 2
+  name s string 0 0
+  call string 10 2
+    -> fn(s: string, nil: int, *): string 12 1
+      name sys Sys 1 0
+      name sprint nothing 11 1
+    seq no type 10 1
+      const unknown%d string 1 0
+      seq no type 10 1
+        * int 8 0
+          name n ref Node 0 0
+ecom: 
+call string 10 2
+  -> fn(s: string, nil: int, *): string 12 1
+    name sys Sys 1 0
+    name sprint nothing 11 1
+  seq no type 10 1
+    const unknown%d string 1 0
+    seq no type 10 1
+      * int 8 0
+        name n ref Node 0 0
+ecom to: 
+name s string 0 0
+generate desc for Sys->sprint
+descmap offset 0
+descmap s type string offset 64 (d->offset=64 start=0) returns 64
+descmap type int offset 72 returns -1
+generate desc for big
+ecom: 
+const unknown%d string 1 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b275 big 0 0
+    const (64) int 6 0
+ecom: 
+* int 8 0
+  name n ref Node 0 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b275 big 0 0
+    const (72) int 6 0
+ecom: 
+name s string 0 0
+ecom to: 
+* string 8 0
+  name .ret int 0 0
+fn: cmd2string
+64: argument n ref Node ref 37
+72: local .b275 big ref 29
+80: local s string ref 24
+88: local .t274 string ref 1
+96: local .t276 ref Redir ref 1
+generate desc for cmd2string
+descmap offset 0
+descmap n type ref Node offset 64 (d->offset=64 start=0) returns 64
+descmap .b275 type big offset 72 (d->offset=72 start=0) returns -1
+descmap s type string offset 80 (d->offset=80 start=0) returns 80
+descmap .t274 type string offset 88 (d->offset=88 start=0) returns 88
+descmap .t276 type ref Redir offset 96 (d->offset=96 start=0) returns 96
+fncom: quote 5 6e8c10
+ecom: 
+= int 10 1
+  name needquote int 0 0
+  const (0) int 6 0
+ecom: 
+const (0) int 6 0
+ecom to: 
+name needquote int 0 0
+ecom: 
+= string 10 1
+  name t string 0 0
+  const  string 1 0
+ecom: 
+const  string 1 0
+ecom to: 
+name t string 0 0
+ecom: 
+= int 10 1
+  name i int 0 0
+  const (0) int 6 0
+ecom: 
+const (0) int 6 0
+ecom to: 
+name i int 0 0
+eacom: 
+len int 10 1
+  name s string 0 0
+ecom: 
+len int 10 1
+  name s string 0 0
+ecom to: 
+name .t277 int 0 0
+eacom: 
+inds int 10 1
+  name s string 0 0
+  name i int 0 0
+ecom: 
+inds int 10 1
+  name s string 0 0
+  name i int 0 0
+ecom to: 
+name .t277 int 0 0
+ecom: 
+= int 10 1
+  name needquote int 0 0
+  const (1) int 6 0
+ecom: 
+const (1) int 6 0
+ecom to: 
+name needquote int 0 0
+ecom: 
+= int 10 1
+  inds int 10 1
+    name t string 0 0
+    len int 10 1
+      name t string 0 0
+  const (39) int 6 0
+ecom: 
+len int 10 1
+  name t string 0 0
+ecom to: 
+name .t277 int 0 0
+ecom: 
+= int 10 1
+  name needquote int 0 0
+  const (1) int 6 0
+ecom: 
+const (1) int 6 0
+ecom to: 
+name needquote int 0 0
+eacom: 
+- int 10 1
+  len int 10 1
+    name s string 0 0
+  const (1) int 6 0
+ecom: 
+- int 10 1
+  len int 10 1
+    name s string 0 0
+  const (1) int 6 0
+ecom to: 
+name .t277 int 0 0
+ecom: 
+len int 10 1
+  name s string 0 0
+ecom to: 
+name .t277 int 0 0
+ecom: 
+++ int 10 1
+  name i int 0 0
+  const (1) int 6 0
+ecom: 
+= int 10 2
+  inds int 10 1
+    name t string 0 0
+    len int 10 1
+      name t string 0 0
+  inds int 10 1
+    name s string 0 0
+    name i int 0 0
+ecom: 
+len int 10 1
+  name t string 0 0
+ecom to: 
+name .t277 int 0 0
+eacom: 
+inds int 10 1
+  name s string 0 0
+  name i int 0 0
+ecom: 
+inds int 10 1
+  name s string 0 0
+  name i int 0 0
+ecom to: 
+name .t278 int 0 0
+ecom: 
+++ int 10 1
+  name i int 0 0
+  const (1) int 6 0
+ecom: 
+= string 10 1
+  name t string 0 0
+  + string 10 1
+    + string 10 1
+      const ' string 1 0
+      name t string 0 0
+    const ' string 1 0
+ecom: 
++ string 10 1
+  + string 10 1
+    const ' string 1 0
+    name t string 0 0
+  const ' string 1 0
+ecom to: 
+name t string 0 0
+ecom: 
++ string 10 1
+  const ' string 1 0
+  name t string 0 0
+ecom to: 
+name .t279 string 0 0
+ecom: 
+= string 10 1
+  name .t279 string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name .t279 string 0 0
+ecom: 
+name t string 0 0
+ecom to: 
+* string 8 0
+  name .ret int 0 0
+fn: quote
+64: argument s string ref 4
+72: argument glob int ref 1
+76: local i int ref 7
+80: local needquote int ref 4
+84: local .t277 int ref 1
+88: local .t278 int ref 1
+96: local t string ref 9
+104: local .t279 string ref 1
+generate desc for quote
+descmap offset 0
+descmap s type string offset 64 (d->offset=64 start=0) returns 64
+descmap glob type int offset 72 (d->offset=72 start=0) returns -1
+descmap i type int offset 76 (d->offset=76 start=0) returns -1
+descmap needquote type int offset 80 (d->offset=80 start=0) returns -1
+descmap .t277 type int offset 84 (d->offset=84 start=0) returns -1
+descmap .t278 type int offset 88 (d->offset=88 start=0) returns -1
+descmap t type string offset 96 (d->offset=96 start=0) returns 96
+descmap .t279 type string offset 104 (d->offset=104 start=0) returns 104
+fncom: squash 3 6e8cd0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* polymorphic type 8 0
+  name .ret int 0 0
+ecom: 
+= string 10 1
+  name s string 0 0
+  hd string 10 1
+    name l list of string 0 0
+ecom: 
+hd string 10 1
+  name l list of string 0 0
+ecom to: 
+name s string 0 0
+ecom: 
+= list of string 10 1
+  name l list of string 0 0
+  tl list of string 10 1
+    name l list of string 0 0
+ecom: 
+tl list of string 10 1
+  name l list of string 0 0
+ecom to: 
+name l list of string 0 0
+ecom: 
++= string 10 1
+  name s string 0 0
+  + string 10 1
+    name sep string 0 0
+    hd string 10 1
+      name l list of string 0 0
+eacom: 
++ string 10 1
+  name sep string 0 0
+  hd string 10 1
+    name l list of string 0 0
+ecom: 
++ string 10 1
+  name sep string 0 0
+  hd string 10 1
+    name l list of string 0 0
+ecom to: 
+name .t280 string 0 0
+eacom: 
+hd string 10 1
+  name l list of string 0 0
+ecom: 
+hd string 10 1
+  name l list of string 0 0
+ecom to: 
+name .t280 string 0 0
+ecom: 
+= string 10 1
+  name .t280 string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name .t280 string 0 0
+ecom: 
+= list of string 10 1
+  name l list of string 0 0
+  tl list of string 10 1
+    name l list of string 0 0
+ecom: 
+tl list of string 10 1
+  name l list of string 0 0
+ecom to: 
+name l list of string 0 0
+ecom: 
+name s string 0 0
+ecom to: 
+* string 8 0
+  name .ret int 0 0
+fn: squash
+64: argument l list of string ref 8
+72: argument sep string ref 1
+80: local s string ref 3
+88: local .t280 string ref 1
+generate desc for squash
+descmap offset 0
+descmap l type list of string offset 64 (d->offset=64 start=0) returns 64
+descmap sep type string offset 72 (d->offset=72 start=0) returns 72
+descmap s type string offset 80 (d->offset=80 start=0) returns 80
+descmap .t280 type string offset 88 (d->offset=88 start=0) returns 88
+fncom: debug 9 6e8d90
+fn: debug
+64: argument s string ref 1
+generate desc for debug
+descmap offset 0
+descmap s type string offset 64 (d->offset=64 start=0) returns 64
+fncom: initbuiltin 2 4c4628
+ecom: 
+= array of string 10 2
+  name names array of string 0 0
+  array array of string 10 2
+    const (9) int 6 0
+    seq array initializers 10 2
+      elem string 10 1
+        seq nothing 10 1
+          const (0) int 6 0
+        const load string 1 0
+      seq no type 10 2
+        elem string 10 1
+          seq nothing 10 1
+            const (1) int 6 0
+          const unload string 1 0
+        seq no type 10 2
+          elem string 10 1
+            seq nothing 10 1
+              const (2) int 6 0
+            const loaded string 1 0
+          seq no type 10 2
+            elem string 10 1
+              seq nothing 10 1
+                const (3) int 6 0
+              const builtin string 1 0
+            seq no type 10 2
+              elem string 10 1
+                seq nothing 10 1
+                  const (4) int 6 0
+                const syncenv string 1 0
+              seq no type 10 2
+                elem string 10 1
+                  seq nothing 10 1
+                    const (5) int 6 0
+                  const whatis string 1 0
+                seq no type 10 2
+                  elem string 10 1
+                    seq nothing 10 1
+                      const (6) int 6 0
+                    const run string 1 0
+                  seq no type 10 2
+                    elem string 10 1
+                      seq nothing 10 1
+                        const (7) int 6 0
+                      const exit string 1 0
+                    seq no type 10 1
+                      elem string 10 1
+                        seq nothing 10 1
+                          const (8) int 6 0
+                        const @ string 1 0
+ecom: 
+array array of string 10 2
+  const (9) int 6 0
+  seq array initializers 10 2
+    elem string 10 1
+      seq nothing 10 1
+        const (0) int 6 0
+      const load string 1 0
+    seq no type 10 2
+      elem string 10 1
+        seq nothing 10 1
+          const (1) int 6 0
+        const unload string 1 0
+      seq no type 10 2
+        elem string 10 1
+          seq nothing 10 1
+            const (2) int 6 0
+          const loaded string 1 0
+        seq no type 10 2
+          elem string 10 1
+            seq nothing 10 1
+              const (3) int 6 0
+            const builtin string 1 0
+          seq no type 10 2
+            elem string 10 1
+              seq nothing 10 1
+                const (4) int 6 0
+              const syncenv string 1 0
+            seq no type 10 2
+              elem string 10 1
+                seq nothing 10 1
+                  const (5) int 6 0
+                const whatis string 1 0
+              seq no type 10 2
+                elem string 10 1
+                  seq nothing 10 1
+                    const (6) int 6 0
+                  const run string 1 0
+                seq no type 10 2
+                  elem string 10 1
+                    seq nothing 10 1
+                      const (7) int 6 0
+                    const exit string 1 0
+                  seq no type 10 1
+                    elem string 10 1
+                      seq nothing 10 1
+                        const (8) int 6 0
+                      const @ string 1 0
+ecom to: 
+name names array of string 0 0
+generate desc for string
+generate desc for big
+ecom: 
+indx big 10 0
+  name names array of string 0 0
+  const (0) int 6 0
+ecom to: 
+name .b281 big 0 0
+ecom: 
+const load string 1 0
+ecom to: 
+* string 8 0
+  name .b281 big 0 0
+ecom: 
+indx big 10 0
+  name names array of string 0 0
+  const (1) int 6 0
+ecom to: 
+name .b281 big 0 0
+ecom: 
+const unload string 1 0
+ecom to: 
+* string 8 0
+  name .b281 big 0 0
+ecom: 
+indx big 10 0
+  name names array of string 0 0
+  const (2) int 6 0
+ecom to: 
+name .b281 big 0 0
+ecom: 
+const loaded string 1 0
+ecom to: 
+* string 8 0
+  name .b281 big 0 0
+ecom: 
+indx big 10 0
+  name names array of string 0 0
+  const (3) int 6 0
+ecom to: 
+name .b281 big 0 0
+ecom: 
+const builtin string 1 0
+ecom to: 
+* string 8 0
+  name .b281 big 0 0
+ecom: 
+indx big 10 0
+  name names array of string 0 0
+  const (4) int 6 0
+ecom to: 
+name .b281 big 0 0
+ecom: 
+const syncenv string 1 0
+ecom to: 
+* string 8 0
+  name .b281 big 0 0
+ecom: 
+indx big 10 0
+  name names array of string 0 0
+  const (5) int 6 0
+ecom to: 
+name .b281 big 0 0
+ecom: 
+const whatis string 1 0
+ecom to: 
+* string 8 0
+  name .b281 big 0 0
+ecom: 
+indx big 10 0
+  name names array of string 0 0
+  const (6) int 6 0
+ecom to: 
+name .b281 big 0 0
+ecom: 
+const run string 1 0
+ecom to: 
+* string 8 0
+  name .b281 big 0 0
+ecom: 
+indx big 10 0
+  name names array of string 0 0
+  const (7) int 6 0
+ecom to: 
+name .b281 big 0 0
+ecom: 
+const exit string 1 0
+ecom to: 
+* string 8 0
+  name .b281 big 0 0
+ecom: 
+indx big 10 0
+  name names array of string 0 0
+  const (8) int 6 0
+ecom to: 
+name .b281 big 0 0
+ecom: 
+const @ string 1 0
+ecom to: 
+* string 8 0
+  name .b281 big 0 0
+ecom: 
+= int 10 1
+  name i int 0 0
+  const (0) int 6 0
+ecom: 
+const (0) int 6 0
+ecom to: 
+name i int 0 0
+eacom: 
+len int 10 1
+  name names array of string 0 0
+ecom: 
+len int 10 1
+  name names array of string 0 0
+ecom to: 
+name .t282 int 0 0
+ecom: 
+call no type 10 2
+  name addbuiltin fn(c: self ref Context, name: string, mod: Shellbuiltin) 11 1
+  seq nothing 10 2
+    name c ref Context 0 0
+    seq no type 10 2
+      * string 10 1
+        indx big 10 1
+          name names array of string 0 0
+          name i int 0 0
+      seq no type 10 1
+        name myselfbuiltin Shellbuiltin 1 0
+generate desc for big
+ecom: 
+name c ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b281 big 0 0
+    const (64) int 6 0
+ecom: 
+* string 10 1
+  indx big 10 1
+    name names array of string 0 0
+    name i int 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b281 big 0 0
+    const (72) int 6 0
+eacom: 
+* string 10 1
+  indx big 10 1
+    name names array of string 0 0
+    name i int 0 0
+generate desc for big
+ecom: 
+indx big 10 1
+  name names array of string 0 0
+  name i int 0 0
+ecom to: 
+name .b283 big 0 0
+ecom: 
+name myselfbuiltin Shellbuiltin 1 0
+ecom to: 
+* Shellbuiltin 8 0
+  + int 15 0
+    name .b281 big 0 0
+    const (80) int 6 0
+ecom: 
+++ int 10 1
+  name i int 0 0
+  const (1) int 6 0
+ecom: 
+call no type 10 2
+  name addsbuiltin fn(c: self ref Context, name: string, mod: Shellbuiltin) 11 1
+  seq nothing 10 1
+    name c ref Context 0 0
+    seq no type 10 1
+      const loaded string 1 0
+      seq no type 10 1
+        name myselfbuiltin Shellbuiltin 1 0
+generate desc for big
+ecom: 
+name c ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b283 big 0 0
+    const (64) int 6 0
+ecom: 
+const loaded string 1 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b283 big 0 0
+    const (72) int 6 0
+ecom: 
+name myselfbuiltin Shellbuiltin 1 0
+ecom to: 
+* Shellbuiltin 8 0
+  + int 15 0
+    name .b283 big 0 0
+    const (80) int 6 0
+ecom: 
+call no type 10 2
+  name addsbuiltin fn(c: self ref Context, name: string, mod: Shellbuiltin) 11 1
+  seq nothing 10 1
+    name c ref Context 0 0
+    seq no type 10 1
+      const quote string 1 0
+      seq no type 10 1
+        name myselfbuiltin Shellbuiltin 1 0
+generate desc for big
+ecom: 
+name c ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b283 big 0 0
+    const (64) int 6 0
+ecom: 
+const quote string 1 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b283 big 0 0
+    const (72) int 6 0
+ecom: 
+name myselfbuiltin Shellbuiltin 1 0
+ecom to: 
+* Shellbuiltin 8 0
+  + int 15 0
+    name .b283 big 0 0
+    const (80) int 6 0
+ecom: 
+call no type 10 2
+  name addsbuiltin fn(c: self ref Context, name: string, mod: Shellbuiltin) 11 1
+  seq nothing 10 1
+    name c ref Context 0 0
+    seq no type 10 1
+      const bquote string 1 0
+      seq no type 10 1
+        name myselfbuiltin Shellbuiltin 1 0
+generate desc for big
+ecom: 
+name c ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b283 big 0 0
+    const (64) int 6 0
+ecom: 
+const bquote string 1 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b283 big 0 0
+    const (72) int 6 0
+ecom: 
+name myselfbuiltin Shellbuiltin 1 0
+ecom to: 
+* Shellbuiltin 8 0
+  + int 15 0
+    name .b283 big 0 0
+    const (80) int 6 0
+ecom: 
+call no type 10 2
+  name addsbuiltin fn(c: self ref Context, name: string, mod: Shellbuiltin) 11 1
+  seq nothing 10 1
+    name c ref Context 0 0
+    seq no type 10 1
+      const unquote string 1 0
+      seq no type 10 1
+        name myselfbuiltin Shellbuiltin 1 0
+generate desc for big
+ecom: 
+name c ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b283 big 0 0
+    const (64) int 6 0
+ecom: 
+const unquote string 1 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b283 big 0 0
+    const (72) int 6 0
+ecom: 
+name myselfbuiltin Shellbuiltin 1 0
+ecom to: 
+* Shellbuiltin 8 0
+  + int 15 0
+    name .b283 big 0 0
+    const (80) int 6 0
+ecom: 
+call no type 10 2
+  name addsbuiltin fn(c: self ref Context, name: string, mod: Shellbuiltin) 11 1
+  seq nothing 10 1
+    name c ref Context 0 0
+    seq no type 10 1
+      const builtin string 1 0
+      seq no type 10 1
+        name myselfbuiltin Shellbuiltin 1 0
+generate desc for big
+ecom: 
+name c ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b283 big 0 0
+    const (64) int 6 0
+ecom: 
+const builtin string 1 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b283 big 0 0
+    const (72) int 6 0
+ecom: 
+name myselfbuiltin Shellbuiltin 1 0
+ecom to: 
+* Shellbuiltin 8 0
+  + int 15 0
+    name .b283 big 0 0
+    const (80) int 6 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* polymorphic type 8 0
+  name .ret int 0 0
+fn: initbuiltin
+64: argument c ref Context ref 6
+72: argument <nil> Sh ref 0
+80: local i int ref 4
+84: local .t282 int ref 1
+88: local .b283 big ref 6
+96: local names array of string ref 3
+104: local .b281 big ref 2
+generate desc for initbuiltin
+descmap offset 0
+descmap c type ref Context offset 64 (d->offset=64 start=0) returns 64
+descmap type Sh offset 72 returns 72
+descmap i type int offset 80 (d->offset=80 start=0) returns -1
+descmap .t282 type int offset 84 (d->offset=84 start=0) returns -1
+descmap .b283 type big offset 88 (d->offset=88 start=0) returns -1
+descmap names type array of string offset 96 (d->offset=96 start=0) returns 96
+descmap .b281 type big offset 104 (d->offset=104 start=0) returns -1
+fncom: whatis 2 4c4e48
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* polymorphic type 8 0
+  name .ret int 0 0
+fn: whatis
+64: argument <nil> ref Context ref 0
+72: argument <nil> Sh ref 0
+80: argument <nil> string ref 0
+88: argument <nil> int ref 0
+generate desc for whatis
+descmap offset 0
+descmap type ref Context offset 64 returns 64
+descmap type Sh offset 72 returns 72
+descmap type string offset 80 returns 80
+descmap type int offset 88 returns -1
+fncom: runsbuiltin 2 4c6328
+eacom: 
+* string 10 1
+  + int 10 1
+    hd ref Listnode 10 1
+      name argv list of ref Listnode 0 0
+    const word (8) int 6 0
+ecom: 
+hd ref Listnode 10 1
+  name argv list of ref Listnode 0 0
+ecom to: 
+name .t284 ref Listnode 0 0
+ecom: 
+= ref Listnode 10 1
+  name .t284 ref Listnode 0 0
+  name nil ref Listnode 1 0
+ecom: 
+name nil ref Listnode 1 0
+ecom to: 
+name .t284 ref Listnode 0 0
+ecom: 
+call list of ref Listnode 10 2
+  name sbuiltin_loaded fn(ctxt: ref Context, nil: list of ref Listnode): list of ref Listnode 11 1
+  seq no type 10 1
+    name ctxt ref Context 0 0
+    seq no type 10 1
+      name argv list of ref Listnode 0 0
+ecom to: 
+* list of ref Listnode 8 0
+  name .ret int 0 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b285 big 0 0
+    const (64) int 6 0
+ecom: 
+name argv list of ref Listnode 0 0
+ecom to: 
+* list of ref Listnode 8 0
+  + int 15 0
+    name .b285 big 0 0
+    const (72) int 6 0
+ecom: 
+:: list of ref Listnode 10 2
+  ref ref Listnode 10 2
+    tuple Listnode 10 2
+      seq no type 10 2
+        name nil polymorphic type 1 0
+        seq no type 10 2
+          call string 10 2
+            name quoted fn(val: list of ref Listnode, quoteblocks: int): string 11 1
+            seq no type 10 2
+              tl list of ref Listnode 10 1
+                name argv list of ref Listnode 0 0
+              seq no type 10 1
+                const (0) int 6 0
+  name nil polymorphic type 1 0
+ecom to: 
+* list of ref Listnode 8 0
+  name .ret int 0 0
+eacom: 
+ref ref Listnode 10 2
+  tuple Listnode 10 2
+    seq no type 10 2
+      name nil polymorphic type 1 0
+      seq no type 10 2
+        call string 10 2
+          name quoted fn(val: list of ref Listnode, quoteblocks: int): string 11 1
+          seq no type 10 2
+            tl list of ref Listnode 10 1
+              name argv list of ref Listnode 0 0
+            seq no type 10 1
+              const (0) int 6 0
+ecom: 
+ref ref Listnode 10 2
+  tuple Listnode 10 2
+    seq no type 10 2
+      name nil polymorphic type 1 0
+      seq no type 10 2
+        call string 10 2
+          name quoted fn(val: list of ref Listnode, quoteblocks: int): string 11 1
+          seq no type 10 2
+            tl list of ref Listnode 10 1
+              name argv list of ref Listnode 0 0
+            seq no type 10 1
+              const (0) int 6 0
+ecom to: 
+name .t284 ref Listnode 0 0
+generate desc for Listnode
+ecom: 
+tuple Listnode 10 2
+  seq no type 10 2
+    name nil polymorphic type 1 0
+    seq no type 10 2
+      call string 10 2
+        name quoted fn(val: list of ref Listnode, quoteblocks: int): string 11 1
+        seq no type 10 2
+          tl list of ref Listnode 10 1
+            name argv list of ref Listnode 0 0
+          seq no type 10 1
+            const (0) int 6 0
+ecom to: 
+* Listnode 8 0
+  name .t284 ref Listnode 0 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* ref Node 8 0
+  + int 15 1
+    adr int 15 1
+      * Listnode 8 0
+        name .t284 ref Listnode 0 0
+    const (0) int 6 0
+ecom: 
+call string 10 2
+  name quoted fn(val: list of ref Listnode, quoteblocks: int): string 11 1
+  seq no type 10 2
+    tl list of ref Listnode 10 1
+      name argv list of ref Listnode 0 0
+    seq no type 10 1
+      const (0) int 6 0
+ecom to: 
+* string 8 0
+  + int 15 1
+    adr int 15 1
+      * Listnode 8 0
+        name .t284 ref Listnode 0 0
+    const (8) int 6 0
+generate desc for big
+ecom: 
+tl list of ref Listnode 10 1
+  name argv list of ref Listnode 0 0
+ecom to: 
+* list of ref Listnode 8 0
+  + int 15 0
+    name .b285 big 0 0
+    const (64) int 6 0
+ecom: 
+const (0) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b285 big 0 0
+    const (72) int 6 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+name .t286 list of ref Listnode 0 0
+ecom: 
+= ref Listnode 10 1
+  name .t284 ref Listnode 0 0
+  name nil ref Listnode 1 0
+ecom: 
+name nil ref Listnode 1 0
+ecom to: 
+name .t284 ref Listnode 0 0
+ecom: 
+= list of ref Listnode 10 1
+  name .t286 list of ref Listnode 0 0
+  name nil list of ref Listnode 1 0
+ecom: 
+name nil list of ref Listnode 1 0
+ecom to: 
+name .t286 list of ref Listnode 0 0
+ecom: 
+:: list of ref Listnode 10 2
+  ref ref Listnode 10 2
+    tuple Listnode 10 2
+      seq no type 10 2
+        name nil polymorphic type 1 0
+        seq no type 10 2
+          call string 10 2
+            name quoted fn(val: list of ref Listnode, quoteblocks: int): string 11 1
+            seq no type 10 2
+              tl list of ref Listnode 10 1
+                name argv list of ref Listnode 0 0
+              seq no type 10 1
+                const (1) int 6 0
+  name nil polymorphic type 1 0
+ecom to: 
+* list of ref Listnode 8 0
+  name .ret int 0 0
+eacom: 
+ref ref Listnode 10 2
+  tuple Listnode 10 2
+    seq no type 10 2
+      name nil polymorphic type 1 0
+      seq no type 10 2
+        call string 10 2
+          name quoted fn(val: list of ref Listnode, quoteblocks: int): string 11 1
+          seq no type 10 2
+            tl list of ref Listnode 10 1
+              name argv list of ref Listnode 0 0
+            seq no type 10 1
+              const (1) int 6 0
+ecom: 
+ref ref Listnode 10 2
+  tuple Listnode 10 2
+    seq no type 10 2
+      name nil polymorphic type 1 0
+      seq no type 10 2
+        call string 10 2
+          name quoted fn(val: list of ref Listnode, quoteblocks: int): string 11 1
+          seq no type 10 2
+            tl list of ref Listnode 10 1
+              name argv list of ref Listnode 0 0
+            seq no type 10 1
+              const (1) int 6 0
+ecom to: 
+name .t286 ref Listnode 0 0
+generate desc for Listnode
+ecom: 
+tuple Listnode 10 2
+  seq no type 10 2
+    name nil polymorphic type 1 0
+    seq no type 10 2
+      call string 10 2
+        name quoted fn(val: list of ref Listnode, quoteblocks: int): string 11 1
+        seq no type 10 2
+          tl list of ref Listnode 10 1
+            name argv list of ref Listnode 0 0
+          seq no type 10 1
+            const (1) int 6 0
+ecom to: 
+* Listnode 8 0
+  name .t286 ref Listnode 0 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* ref Node 8 0
+  + int 15 1
+    adr int 15 1
+      * Listnode 8 0
+        name .t286 ref Listnode 0 0
+    const (0) int 6 0
+ecom: 
+call string 10 2
+  name quoted fn(val: list of ref Listnode, quoteblocks: int): string 11 1
+  seq no type 10 2
+    tl list of ref Listnode 10 1
+      name argv list of ref Listnode 0 0
+    seq no type 10 1
+      const (1) int 6 0
+ecom to: 
+* string 8 0
+  + int 15 1
+    adr int 15 1
+      * Listnode 8 0
+        name .t286 ref Listnode 0 0
+    const (8) int 6 0
+generate desc for big
+ecom: 
+tl list of ref Listnode 10 1
+  name argv list of ref Listnode 0 0
+ecom to: 
+* list of ref Listnode 8 0
+  + int 15 0
+    name .b285 big 0 0
+    const (64) int 6 0
+ecom: 
+const (1) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b285 big 0 0
+    const (72) int 6 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+name .t284 list of ref Listnode 0 0
+ecom: 
+= ref Listnode 10 1
+  name .t286 ref Listnode 0 0
+  name nil ref Listnode 1 0
+ecom: 
+name nil ref Listnode 1 0
+ecom to: 
+name .t286 ref Listnode 0 0
+ecom: 
+= list of ref Listnode 10 1
+  name .t284 list of ref Listnode 0 0
+  name nil list of ref Listnode 1 0
+ecom: 
+name nil list of ref Listnode 1 0
+ecom to: 
+name .t284 list of ref Listnode 0 0
+ecom: 
+call list of ref Listnode 10 2
+  name sbuiltin_unquote fn(ctxt: ref Context, argv: list of ref Listnode): list of ref Listnode 11 1
+  seq no type 10 1
+    name ctxt ref Context 0 0
+    seq no type 10 1
+      name argv list of ref Listnode 0 0
+ecom to: 
+* list of ref Listnode 8 0
+  name .ret int 0 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b285 big 0 0
+    const (64) int 6 0
+ecom: 
+name argv list of ref Listnode 0 0
+ecom to: 
+* list of ref Listnode 8 0
+  + int 15 0
+    name .b285 big 0 0
+    const (72) int 6 0
+ecom: 
+call list of ref Listnode 10 2
+  name sbuiltin_builtin fn(ctxt: ref Context, args: list of ref Listnode): list of ref Listnode 11 1
+  seq no type 10 1
+    name ctxt ref Context 0 0
+    seq no type 10 1
+      name argv list of ref Listnode 0 0
+ecom to: 
+* list of ref Listnode 8 0
+  name .ret int 0 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b285 big 0 0
+    const (64) int 6 0
+ecom: 
+name argv list of ref Listnode 0 0
+ecom to: 
+* list of ref Listnode 8 0
+  + int 15 0
+    name .b285 big 0 0
+    const (72) int 6 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* polymorphic type 8 0
+  name .ret int 0 0
+fn: runsbuiltin
+64: argument ctxt ref Context ref 5
+72: argument <nil> Sh ref 0
+80: argument argv list of ref Listnode ref 6
+88: local .b285 big ref 5
+96: local .t284 ref Listnode ref 1
+104: local .t286 list of ref Listnode ref 1
+generate desc for runsbuiltin
+descmap offset 0
+descmap ctxt type ref Context offset 64 (d->offset=64 start=0) returns 64
+descmap type Sh offset 72 returns 72
+descmap argv type list of ref Listnode offset 80 (d->offset=80 start=0) returns 80
+descmap .b285 type big offset 88 (d->offset=88 start=0) returns -1
+descmap .t284 type ref Listnode offset 96 (d->offset=96 start=0) returns 96
+descmap .t286 type list of ref Listnode offset 104 (d->offset=104 start=0) returns 104
+fncom: runbuiltin 2 4c5868
+ecom: 
+= string 10 1
+  name status string 0 0
+  const  string 1 0
+ecom: 
+const  string 1 0
+ecom to: 
+name status string 0 0
+ecom: 
+= string 10 1
+  name name string 0 0
+  * string 10 1
+    + int 10 1
+      hd ref Listnode 10 1
+        name args list of ref Listnode 0 0
+      const word (8) int 6 0
+ecom: 
+* string 10 1
+  + int 10 1
+    hd ref Listnode 10 1
+      name args list of ref Listnode 0 0
+    const word (8) int 6 0
+ecom to: 
+name name string 0 0
+eacom: 
+* string 10 1
+  + int 10 1
+    hd ref Listnode 10 1
+      name args list of ref Listnode 0 0
+    const word (8) int 6 0
+ecom: 
+hd ref Listnode 10 1
+  name args list of ref Listnode 0 0
+ecom to: 
+name .t287 ref Listnode 0 0
+ecom: 
+= ref Listnode 10 1
+  name .t287 ref Listnode 0 0
+  name nil ref Listnode 1 0
+ecom: 
+name nil ref Listnode 1 0
+ecom to: 
+name .t287 ref Listnode 0 0
+ecom: 
+= string 10 2
+  name status string 0 0
+  call string 10 2
+    name builtin_load fn(ctxt: ref Context, args: list of ref Listnode, nil: int): string 11 1
+    seq no type 10 1
+      name ctxt ref Context 0 0
+      seq no type 10 1
+        name args list of ref Listnode 0 0
+        seq no type 10 1
+          name lseq int 0 0
+ecom: 
+call string 10 2
+  name builtin_load fn(ctxt: ref Context, args: list of ref Listnode, nil: int): string 11 1
+  seq no type 10 1
+    name ctxt ref Context 0 0
+    seq no type 10 1
+      name args list of ref Listnode 0 0
+      seq no type 10 1
+        name lseq int 0 0
+ecom to: 
+name status string 0 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b288 big 0 0
+    const (64) int 6 0
+ecom: 
+name args list of ref Listnode 0 0
+ecom to: 
+* list of ref Listnode 8 0
+  + int 15 0
+    name .b288 big 0 0
+    const (72) int 6 0
+ecom: 
+name lseq int 0 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b288 big 0 0
+    const (80) int 6 0
+ecom: 
+= string 10 2
+  name status string 0 0
+  call string 10 2
+    name builtin_loaded fn(ctxt: ref Context, nil: list of ref Listnode, nil: int): string 11 1
+    seq no type 10 1
+      name ctxt ref Context 0 0
+      seq no type 10 1
+        name args list of ref Listnode 0 0
+        seq no type 10 1
+          name lseq int 0 0
+ecom: 
+call string 10 2
+  name builtin_loaded fn(ctxt: ref Context, nil: list of ref Listnode, nil: int): string 11 1
+  seq no type 10 1
+    name ctxt ref Context 0 0
+    seq no type 10 1
+      name args list of ref Listnode 0 0
+      seq no type 10 1
+        name lseq int 0 0
+ecom to: 
+name status string 0 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b288 big 0 0
+    const (64) int 6 0
+ecom: 
+name args list of ref Listnode 0 0
+ecom to: 
+* list of ref Listnode 8 0
+  + int 15 0
+    name .b288 big 0 0
+    const (72) int 6 0
+ecom: 
+name lseq int 0 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b288 big 0 0
+    const (80) int 6 0
+ecom: 
+= string 10 2
+  name status string 0 0
+  call string 10 2
+    name builtin_unload fn(ctxt: ref Context, args: list of ref Listnode, nil: int): string 11 1
+    seq no type 10 1
+      name ctxt ref Context 0 0
+      seq no type 10 1
+        name args list of ref Listnode 0 0
+        seq no type 10 1
+          name lseq int 0 0
+ecom: 
+call string 10 2
+  name builtin_unload fn(ctxt: ref Context, args: list of ref Listnode, nil: int): string 11 1
+  seq no type 10 1
+    name ctxt ref Context 0 0
+    seq no type 10 1
+      name args list of ref Listnode 0 0
+      seq no type 10 1
+        name lseq int 0 0
+ecom to: 
+name status string 0 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b288 big 0 0
+    const (64) int 6 0
+ecom: 
+name args list of ref Listnode 0 0
+ecom to: 
+* list of ref Listnode 8 0
+  + int 15 0
+    name .b288 big 0 0
+    const (72) int 6 0
+ecom: 
+name lseq int 0 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b288 big 0 0
+    const (80) int 6 0
+ecom: 
+= string 10 2
+  name status string 0 0
+  call string 10 2
+    name builtin_builtin fn(ctxt: ref Context, args: list of ref Listnode, last: int): string 11 1
+    seq no type 10 1
+      name ctxt ref Context 0 0
+      seq no type 10 1
+        name args list of ref Listnode 0 0
+        seq no type 10 1
+          name lseq int 0 0
+ecom: 
+call string 10 2
+  name builtin_builtin fn(ctxt: ref Context, args: list of ref Listnode, last: int): string 11 1
+  seq no type 10 1
+    name ctxt ref Context 0 0
+    seq no type 10 1
+      name args list of ref Listnode 0 0
+      seq no type 10 1
+        name lseq int 0 0
+ecom to: 
+name status string 0 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b288 big 0 0
+    const (64) int 6 0
+ecom: 
+name args list of ref Listnode 0 0
+ecom to: 
+* list of ref Listnode 8 0
+  + int 15 0
+    name .b288 big 0 0
+    const (72) int 6 0
+ecom: 
+name lseq int 0 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b288 big 0 0
+    const (80) int 6 0
+ecom: 
+= string 10 2
+  name status string 0 0
+  call string 10 2
+    name builtin_whatis fn(ctxt: ref Context, args: list of ref Listnode, nil: int): string 11 1
+    seq no type 10 1
+      name ctxt ref Context 0 0
+      seq no type 10 1
+        name args list of ref Listnode 0 0
+        seq no type 10 1
+          name lseq int 0 0
+ecom: 
+call string 10 2
+  name builtin_whatis fn(ctxt: ref Context, args: list of ref Listnode, nil: int): string 11 1
+  seq no type 10 1
+    name ctxt ref Context 0 0
+    seq no type 10 1
+      name args list of ref Listnode 0 0
+      seq no type 10 1
+        name lseq int 0 0
+ecom to: 
+name status string 0 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b288 big 0 0
+    const (64) int 6 0
+ecom: 
+name args list of ref Listnode 0 0
+ecom to: 
+* list of ref Listnode 8 0
+  + int 15 0
+    name .b288 big 0 0
+    const (72) int 6 0
+ecom: 
+name lseq int 0 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b288 big 0 0
+    const (80) int 6 0
+ecom: 
+= string 10 2
+  name status string 0 0
+  call string 10 2
+    name builtin_run fn(ctxt: ref Context, args: list of ref Listnode, nil: int): string 11 1
+    seq no type 10 1
+      name ctxt ref Context 0 0
+      seq no type 10 1
+        name args list of ref Listnode 0 0
+        seq no type 10 1
+          name lseq int 0 0
+ecom: 
+call string 10 2
+  name builtin_run fn(ctxt: ref Context, args: list of ref Listnode, nil: int): string 11 1
+  seq no type 10 1
+    name ctxt ref Context 0 0
+    seq no type 10 1
+      name args list of ref Listnode 0 0
+      seq no type 10 1
+        name lseq int 0 0
+ecom to: 
+name status string 0 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b288 big 0 0
+    const (64) int 6 0
+ecom: 
+name args list of ref Listnode 0 0
+ecom to: 
+* list of ref Listnode 8 0
+  + int 15 0
+    name .b288 big 0 0
+    const (72) int 6 0
+ecom: 
+name lseq int 0 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b288 big 0 0
+    const (80) int 6 0
+ecom: 
+= string 10 2
+  name status string 0 0
+  call string 10 2
+    name builtin_exit fn(nil: ref Context, nil: list of ref Listnode, nil: int): string 11 1
+    seq no type 10 1
+      name ctxt ref Context 0 0
+      seq no type 10 1
+        name args list of ref Listnode 0 0
+        seq no type 10 1
+          name lseq int 0 0
+ecom: 
+call string 10 2
+  name builtin_exit fn(nil: ref Context, nil: list of ref Listnode, nil: int): string 11 1
+  seq no type 10 1
+    name ctxt ref Context 0 0
+    seq no type 10 1
+      name args list of ref Listnode 0 0
+      seq no type 10 1
+        name lseq int 0 0
+ecom to: 
+name status string 0 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b288 big 0 0
+    const (64) int 6 0
+ecom: 
+name args list of ref Listnode 0 0
+ecom to: 
+* list of ref Listnode 8 0
+  + int 15 0
+    name .b288 big 0 0
+    const (72) int 6 0
+ecom: 
+name lseq int 0 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b288 big 0 0
+    const (80) int 6 0
+ecom: 
+call no type 10 2
+  name export fn(e: ref Localenv) 11 1
+  seq no type 10 1
+    * ref Localenv 10 1
+      + int 10 1
+        * ref Environment 8 0
+          name ctxt ref Context 0 0
+        const localenv (24) int 6 0
+generate desc for big
+ecom: 
+* ref Localenv 10 1
+  + int 10 1
+    * ref Environment 8 0
+      name ctxt ref Context 0 0
+    const localenv (24) int 6 0
+ecom to: 
+* ref Localenv 8 0
+  + int 15 0
+    name .b288 big 0 0
+    const (64) int 6 0
+eacom: 
+* ref Localenv 10 1
+  + int 10 1
+    * ref Environment 8 0
+      name ctxt ref Context 0 0
+    const localenv (24) int 6 0
+ecom: 
+* ref Environment 8 0
+  name ctxt ref Context 0 0
+ecom to: 
+name .t287 ref Environment 0 0
+ecom: 
+= ref Environment 10 1
+  name .t287 ref Environment 0 0
+  name nil ref Environment 1 0
+ecom: 
+name nil ref Environment 1 0
+ecom to: 
+name .t287 ref Environment 0 0
+ecom: 
+= string 10 2
+  name status string 0 0
+  call string 10 2
+    name builtin_subsh fn(ctxt: ref Context, args: list of ref Listnode, nil: int): string 11 1
+    seq no type 10 1
+      name ctxt ref Context 0 0
+      seq no type 10 1
+        name args list of ref Listnode 0 0
+        seq no type 10 1
+          name lseq int 0 0
+ecom: 
+call string 10 2
+  name builtin_subsh fn(ctxt: ref Context, args: list of ref Listnode, nil: int): string 11 1
+  seq no type 10 1
+    name ctxt ref Context 0 0
+    seq no type 10 1
+      name args list of ref Listnode 0 0
+      seq no type 10 1
+        name lseq int 0 0
+ecom to: 
+name status string 0 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b288 big 0 0
+    const (64) int 6 0
+ecom: 
+name args list of ref Listnode 0 0
+ecom to: 
+* list of ref Listnode 8 0
+  + int 15 0
+    name .b288 big 0 0
+    const (72) int 6 0
+ecom: 
+name lseq int 0 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b288 big 0 0
+    const (80) int 6 0
+ecom: 
+name status string 0 0
+ecom to: 
+* string 8 0
+  name .ret int 0 0
+fn: runbuiltin
+64: argument ctxt ref Context ref 9
+72: argument <nil> Sh ref 0
+80: argument args list of ref Listnode ref 9
+88: argument lseq int ref 8
+96: local status string ref 10
+104: local .b288 big ref 9
+112: local name string ref 2
+120: local .t287 ref Listnode ref 1
+generate desc for runbuiltin
+descmap offset 0
+descmap ctxt type ref Context offset 64 (d->offset=64 start=0) returns 64
+descmap type Sh offset 72 returns 72
+descmap args type list of ref Listnode offset 80 (d->offset=80 start=0) returns 80
+descmap lseq type int offset 88 (d->offset=88 start=0) returns -1
+descmap status type string offset 96 (d->offset=96 start=0) returns 96
+descmap .b288 type big offset 104 (d->offset=104 start=0) returns -1
+descmap name type string offset 112 (d->offset=112 start=0) returns 112
+descmap .t287 type ref Listnode offset 120 (d->offset=120 start=0) returns 120
+fncom: sbuiltin_loaded 2 6e8e50
+ecom: 
+= list of (string, Shellbuiltin) 10 1
+  name bl list of (string, Shellbuiltin) 0 0
+  * list of (string, Shellbuiltin) 10 1
+    + int 10 1
+      * ref Environment 8 0
+        name ctxt ref Context 0 0
+      const bmods (16) int 6 0
+ecom: 
+* list of (string, Shellbuiltin) 10 1
+  + int 10 1
+    * ref Environment 8 0
+      name ctxt ref Context 0 0
+    const bmods (16) int 6 0
+ecom to: 
+name bl list of (string, Shellbuiltin) 0 0
+eacom: 
+* list of (string, Shellbuiltin) 10 1
+  + int 10 1
+    * ref Environment 8 0
+      name ctxt ref Context 0 0
+    const bmods (16) int 6 0
+ecom: 
+* ref Environment 8 0
+  name ctxt ref Context 0 0
+ecom to: 
+name .t289 ref Environment 0 0
+ecom: 
+= ref Environment 10 1
+  name .t289 ref Environment 0 0
+  name nil ref Environment 1 0
+ecom: 
+name nil ref Environment 1 0
+ecom to: 
+name .t289 ref Environment 0 0
+ecom: 
+= (string, Shellbuiltin) 10 2
+  tuple (string, Shellbuiltin) 10 1
+    seq nothing 10 1
+      name name string 0 0
+      seq nothing 10 1
+        name nil polymorphic type 1 0
+  hd (string, Shellbuiltin) 10 1
+    name bl list of (string, Shellbuiltin) 0 0
+generate desc for (string, Shellbuiltin)
+descmap adt offset 0
+descmap offset 0
+descmap t0 type string offset 0 (d->offset=0 start=0) returns 0
+descmap t1 type Shellbuiltin offset 8 (d->offset=8 start=0) returns 8
+generate desc for (string, Shellbuiltin)
+	desc	$-1,16,"c0"
+ecom: 
+hd (string, Shellbuiltin) 10 1
+  name bl list of (string, Shellbuiltin) 0 0
+ecom to: 
+name .b290 (string, Shellbuiltin) 0 0
+generate desc for (string, Shellbuiltin)
+ecom: 
+= string 10 1
+  * string 0 0
+    adr int 13 1
+      name .b290 (string, Shellbuiltin) 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+* string 0 0
+  adr int 13 1
+    name .b290 (string, Shellbuiltin) 0 0
+ecom: 
+= Shellbuiltin 10 1
+  * Shellbuiltin 0 0
+    + int 13 1
+      adr int 13 1
+        name .b290 (string, Shellbuiltin) 0 0
+      const t1 (8) int 6 0
+  name nil Shellbuiltin 1 0
+ecom: 
+name nil Shellbuiltin 1 0
+ecom to: 
+* Shellbuiltin 0 0
+  + int 13 1
+    adr int 13 1
+      name .b290 (string, Shellbuiltin) 0 0
+    const t1 (8) int 6 0
+ecom: 
+= list of ref Listnode 10 1
+  name v list of ref Listnode 0 0
+  :: list of ref Listnode 10 1
+    ref ref Listnode 10 1
+      tuple Listnode 10 1
+        seq no type 10 1
+          name nil polymorphic type 1 0
+          seq no type 10 1
+            name name string 0 0
+    name v list of ref Listnode 0 0
+ecom: 
+:: list of ref Listnode 10 1
+  ref ref Listnode 10 1
+    tuple Listnode 10 1
+      seq no type 10 1
+        name nil polymorphic type 1 0
+        seq no type 10 1
+          name name string 0 0
+  name v list of ref Listnode 0 0
+ecom to: 
+name v list of ref Listnode 0 0
+eacom: 
+ref ref Listnode 10 1
+  tuple Listnode 10 1
+    seq no type 10 1
+      name nil polymorphic type 1 0
+      seq no type 10 1
+        name name string 0 0
+ecom: 
+ref ref Listnode 10 1
+  tuple Listnode 10 1
+    seq no type 10 1
+      name nil polymorphic type 1 0
+      seq no type 10 1
+        name name string 0 0
+ecom to: 
+name .t289 ref Listnode 0 0
+generate desc for Listnode
+ecom: 
+tuple Listnode 10 1
+  seq no type 10 1
+    name nil polymorphic type 1 0
+    seq no type 10 1
+      name name string 0 0
+ecom to: 
+* Listnode 8 0
+  name .t289 ref Listnode 0 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* ref Node 8 0
+  + int 15 1
+    adr int 15 1
+      * Listnode 8 0
+        name .t289 ref Listnode 0 0
+    const (0) int 6 0
+ecom: 
+name name string 0 0
+ecom to: 
+* string 8 0
+  + int 15 1
+    adr int 15 1
+      * Listnode 8 0
+        name .t289 ref Listnode 0 0
+    const (8) int 6 0
+ecom: 
+= ref Listnode 10 1
+  name .t289 ref Listnode 0 0
+  name nil ref Listnode 1 0
+ecom: 
+name nil ref Listnode 1 0
+ecom to: 
+name .t289 ref Listnode 0 0
+ecom: 
+= string 10 1
+  name name string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name name string 0 0
+ecom: 
+= list of (string, Shellbuiltin) 10 1
+  name bl list of (string, Shellbuiltin) 0 0
+  tl list of (string, Shellbuiltin) 10 1
+    name bl list of (string, Shellbuiltin) 0 0
+ecom: 
+tl list of (string, Shellbuiltin) 10 1
+  name bl list of (string, Shellbuiltin) 0 0
+ecom to: 
+name bl list of (string, Shellbuiltin) 0 0
+ecom: 
+name v list of ref Listnode 0 0
+ecom to: 
+* list of ref Listnode 8 0
+  name .ret int 0 0
+fn: sbuiltin_loaded
+64: argument ctxt ref Context ref 1
+72: argument <nil> list of ref Listnode ref 0
+80: local bl list of (string, Shellbuiltin) ref 5
+88: local v list of ref Listnode ref 3
+96: local name string ref 2
+104: local .t289 ref Environment ref 1
+112: local .b290 (string, Shellbuiltin) ref 1
+generate desc for sbuiltin_loaded
+descmap offset 0
+descmap ctxt type ref Context offset 64 (d->offset=64 start=0) returns 64
+descmap type list of ref Listnode offset 72 returns 72
+descmap bl type list of (string, Shellbuiltin) offset 80 (d->offset=80 start=0) returns 80
+descmap v type list of ref Listnode offset 88 (d->offset=88 start=0) returns 88
+descmap name type string offset 96 (d->offset=96 start=0) returns 96
+descmap .t289 type ref Environment offset 104 (d->offset=104 start=0) returns 104
+descmap adt offset 112
+descmap offset 112
+descmap t0 type string offset 112 (d->offset=0 start=112) returns 112
+descmap t1 type Shellbuiltin offset 120 (d->offset=8 start=112) returns 120
+descmap .b290 type (string, Shellbuiltin) offset 112 (d->offset=112 start=0) returns 120
+fncom: sbuiltin_quote 3 6e8f10
+fncom: sbuiltin_builtin 2 6e8fd0
+eacom: 
+tl list of ref Listnode 10 1
+  name args list of ref Listnode 0 0
+ecom: 
+tl list of ref Listnode 10 1
+  name args list of ref Listnode 0 0
+ecom to: 
+name .t291 list of ref Listnode 0 0
+ecom: 
+= list of ref Listnode 10 1
+  name .t291 list of ref Listnode 0 0
+  name nil list of ref Listnode 1 0
+ecom: 
+name nil list of ref Listnode 1 0
+ecom to: 
+name .t291 list of ref Listnode 0 0
+ecom: 
+call no type 10 2
+  name builtinusage fn(ctxt: ref Context, s: string) 11 1
+  seq no type 10 1
+    name ctxt ref Context 0 0
+    seq no type 10 1
+      const builtin command [args ...] string 1 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b292 big 0 0
+    const (64) int 6 0
+ecom: 
+const builtin command [args ...] string 1 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b292 big 0 0
+    const (72) int 6 0
+ecom: 
+= string 10 1
+  name name string 0 0
+  * string 10 1
+    + int 10 1
+      hd ref Listnode 10 1
+        tl list of ref Listnode 10 1
+          name args list of ref Listnode 0 0
+      const word (8) int 6 0
+ecom: 
+* string 10 1
+  + int 10 1
+    hd ref Listnode 10 1
+      tl list of ref Listnode 10 1
+        name args list of ref Listnode 0 0
+    const word (8) int 6 0
+ecom to: 
+name name string 0 0
+eacom: 
+* string 10 1
+  + int 10 1
+    hd ref Listnode 10 1
+      tl list of ref Listnode 10 1
+        name args list of ref Listnode 0 0
+    const word (8) int 6 0
+ecom: 
+hd ref Listnode 10 1
+  tl list of ref Listnode 10 1
+    name args list of ref Listnode 0 0
+ecom to: 
+name .t291 ref Listnode 0 0
+eacom: 
+tl list of ref Listnode 10 1
+  name args list of ref Listnode 0 0
+ecom: 
+tl list of ref Listnode 10 1
+  name args list of ref Listnode 0 0
+ecom to: 
+name .t291 list of ref Listnode 0 0
+ecom: 
+= ref Listnode 10 1
+  name .t291 ref Listnode 0 0
+  name nil ref Listnode 1 0
+ecom: 
+name nil ref Listnode 1 0
+ecom to: 
+name .t291 ref Listnode 0 0
+ecom: 
+= (int, list of Shellbuiltin) 10 2
+  tuple (int, list of Shellbuiltin) 10 1
+    seq nothing 10 1
+      name nil polymorphic type 1 0
+      seq nothing 10 1
+        name mods list of Shellbuiltin 0 0
+  call (int, list of Shellbuiltin) 10 2
+    name findbuiltin fn(b: ref Builtins, name: string): (int, list of Shellbuiltin) 11 1
+    seq no type 10 2
+      * ref Builtins 10 1
+        * ref Environment 8 0
+          name ctxt ref Context 0 0
+      seq no type 10 1
+        name name string 0 0
+generate desc for (int, list of Shellbuiltin)
+ecom: 
+call (int, list of Shellbuiltin) 10 2
+  name findbuiltin fn(b: ref Builtins, name: string): (int, list of Shellbuiltin) 11 1
+  seq no type 10 2
+    * ref Builtins 10 1
+      * ref Environment 8 0
+        name ctxt ref Context 0 0
+    seq no type 10 1
+      name name string 0 0
+ecom to: 
+name .b293 (int, list of Shellbuiltin) 0 0
+generate desc for big
+ecom: 
+* ref Builtins 10 1
+  * ref Environment 8 0
+    name ctxt ref Context 0 0
+ecom to: 
+* ref Builtins 8 0
+  + int 15 0
+    name .b292 big 0 0
+    const (64) int 6 0
+eacom: 
+* ref Builtins 10 1
+  * ref Environment 8 0
+    name ctxt ref Context 0 0
+ecom: 
+* ref Environment 8 0
+  name ctxt ref Context 0 0
+ecom to: 
+name .t291 ref Environment 0 0
+ecom: 
+= ref Environment 10 1
+  name .t291 ref Environment 0 0
+  name nil ref Environment 1 0
+ecom: 
+name nil ref Environment 1 0
+ecom to: 
+name .t291 ref Environment 0 0
+ecom: 
+name name string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b292 big 0 0
+    const (72) int 6 0
+ecom: 
+= list of Shellbuiltin 10 1
+  * list of Shellbuiltin 0 0
+    + int 13 1
+      adr int 13 1
+        name .b293 (int, list of Shellbuiltin) 0 0
+      const t1 (8) int 6 0
+  name nil list of Shellbuiltin 1 0
+ecom: 
+name nil list of Shellbuiltin 1 0
+ecom to: 
+* list of Shellbuiltin 0 0
+  + int 13 1
+    adr int 13 1
+      name .b293 (int, list of Shellbuiltin) 0 0
+    const t1 (8) int 6 0
+eacom: 
+hd Shellbuiltin 10 1
+  name mods list of Shellbuiltin 0 0
+ecom: 
+hd Shellbuiltin 10 1
+  name mods list of Shellbuiltin 0 0
+ecom to: 
+name .t291 Shellbuiltin 0 0
+ecom: 
+= Shellbuiltin 10 1
+  name .t291 Shellbuiltin 0 0
+  name nil Shellbuiltin 1 0
+ecom: 
+name nil Shellbuiltin 1 0
+ecom to: 
+name .t291 Shellbuiltin 0 0
+ecom: 
+call list of ref Listnode 10 2
+  -> fn(c: ref Context, sh: Sh, cmd: list of ref Listnode): list of ref Listnode 12 2
+    hd Shellbuiltin 10 1
+      name mods list of Shellbuiltin 0 0
+    name runsbuiltin nothing 11 1
+  seq no type 10 1
+    name ctxt ref Context 0 0
+    seq no type 10 1
+      name myself Sh 1 0
+      seq no type 10 1
+        tl list of ref Listnode 10 1
+          name args list of ref Listnode 0 0
+ecom to: 
+* list of ref Listnode 8 0
+  name .ret int 0 0
+generate desc for big
+eacom: 
+hd Shellbuiltin 10 1
+  name mods list of Shellbuiltin 0 0
+ecom: 
+hd Shellbuiltin 10 1
+  name mods list of Shellbuiltin 0 0
+ecom to: 
+name .t291 Shellbuiltin 0 0
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b292 big 0 0
+    const (64) int 6 0
+ecom: 
+name myself Sh 1 0
+ecom to: 
+* Sh 8 0
+  + int 15 0
+    name .b292 big 0 0
+    const (72) int 6 0
+ecom: 
+tl list of ref Listnode 10 1
+  name args list of ref Listnode 0 0
+ecom to: 
+* list of ref Listnode 8 0
+  + int 15 0
+    name .b292 big 0 0
+    const (80) int 6 0
+ecom: 
+= Shellbuiltin 10 1
+  name .t291 Shellbuiltin 0 0
+  name nil Shellbuiltin 1 0
+ecom: 
+name nil Shellbuiltin 1 0
+ecom to: 
+name .t291 Shellbuiltin 0 0
+ecom: 
+= list of Shellbuiltin 10 1
+  name mods list of Shellbuiltin 0 0
+  tl list of Shellbuiltin 10 1
+    name mods list of Shellbuiltin 0 0
+ecom: 
+tl list of Shellbuiltin 10 1
+  name mods list of Shellbuiltin 0 0
+ecom to: 
+name mods list of Shellbuiltin 0 0
+ecom: 
+call no type 10 2
+  name fail fn(ctxt: self ref Context, ename: string, err: string) 11 1
+  seq nothing 10 2
+    name ctxt ref Context 0 0
+    seq no type 10 2
+      const builtin not found string 1 0
+      seq no type 10 2
+        call string 10 2
+          -> fn(s: string, nil: string, *): string 12 1
+            name sys Sys 1 0
+            name sprint nothing 11 1
+          seq no type 10 1
+            const sh: builtin %s not found string 1 0
+            seq no type 10 1
+              name name string 0 0
+generate desc for big
+ecom: 
+call string 10 2
+  -> fn(s: string, nil: string, *): string 12 1
+    name sys Sys 1 0
+    name sprint nothing 11 1
+  seq no type 10 1
+    const sh: builtin %s not found string 1 0
+    seq no type 10 1
+      name name string 0 0
+ecom to: 
+name .t291 string 0 0
+generate desc for Sys->sprint
+descmap offset 0
+descmap s type string offset 64 (d->offset=64 start=0) returns 64
+descmap type string offset 72 returns 72
+generate desc for big
+ecom: 
+const sh: builtin %s not found string 1 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b294 big 0 0
+    const (64) int 6 0
+ecom: 
+name name string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b294 big 0 0
+    const (72) int 6 0
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b292 big 0 0
+    const (64) int 6 0
+ecom: 
+const builtin not found string 1 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b292 big 0 0
+    const (72) int 6 0
+ecom: 
+name .t291 string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b292 big 0 0
+    const (80) int 6 0
+ecom: 
+= string 10 1
+  name .t291 string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name .t291 string 0 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* polymorphic type 8 0
+  name .ret int 0 0
+fn: sbuiltin_builtin
+64: argument ctxt ref Context ref 4
+72: argument args list of ref Listnode ref 4
+80: local mods list of Shellbuiltin ref 6
+88: local .b292 big ref 4
+96: local name string ref 3
+104: local .b294 big ref 1
+112: local .t291 list of ref Listnode ref 1
+120: local .b293 (int, list of Shellbuiltin) ref 1
+generate desc for sbuiltin_builtin
+descmap offset 0
+descmap ctxt type ref Context offset 64 (d->offset=64 start=0) returns 64
+descmap args type list of ref Listnode offset 72 (d->offset=72 start=0) returns 72
+descmap mods type list of Shellbuiltin offset 80 (d->offset=80 start=0) returns 80
+descmap .b292 type big offset 88 (d->offset=88 start=0) returns -1
+descmap name type string offset 96 (d->offset=96 start=0) returns 96
+descmap .b294 type big offset 104 (d->offset=104 start=0) returns -1
+descmap .t291 type list of ref Listnode offset 112 (d->offset=112 start=0) returns 112
+descmap adt offset 120
+descmap offset 120
+descmap t0 type int offset 120 (d->offset=0 start=120) returns -1
+descmap t1 type list of Shellbuiltin offset 128 (d->offset=8 start=120) returns 128
+descmap .b293 type (int, list of Shellbuiltin) offset 120 (d->offset=120 start=0) returns 128
+fncom: sbuiltin_unquote 2 6e9090
+ecom: 
+= list of ref Listnode 10 1
+  name argv list of ref Listnode 0 0
+  tl list of ref Listnode 10 1
+    name argv list of ref Listnode 0 0
+ecom: 
+tl list of ref Listnode 10 1
+  name argv list of ref Listnode 0 0
+ecom to: 
+name argv list of ref Listnode 0 0
+eacom: 
+tl list of ref Listnode 10 1
+  name argv list of ref Listnode 0 0
+ecom: 
+tl list of ref Listnode 10 1
+  name argv list of ref Listnode 0 0
+ecom to: 
+name .t295 list of ref Listnode 0 0
+ecom: 
+= list of ref Listnode 10 1
+  name .t295 list of ref Listnode 0 0
+  name nil list of ref Listnode 1 0
+ecom: 
+name nil list of ref Listnode 1 0
+ecom to: 
+name .t295 list of ref Listnode 0 0
+ecom: 
+call no type 10 2
+  name builtinusage fn(ctxt: ref Context, s: string) 11 1
+  seq no type 10 1
+    name ctxt ref Context 0 0
+    seq no type 10 1
+      const unquote arg string 1 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b296 big 0 0
+    const (64) int 6 0
+ecom: 
+const unquote arg string 1 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b296 big 0 0
+    const (72) int 6 0
+ecom: 
+= string 10 1
+  name arg string 0 0
+  * string 10 1
+    + int 10 1
+      hd ref Listnode 10 1
+        name argv list of ref Listnode 0 0
+      const word (8) int 6 0
+ecom: 
+* string 10 1
+  + int 10 1
+    hd ref Listnode 10 1
+      name argv list of ref Listnode 0 0
+    const word (8) int 6 0
+ecom to: 
+name arg string 0 0
+eacom: 
+* string 10 1
+  + int 10 1
+    hd ref Listnode 10 1
+      name argv list of ref Listnode 0 0
+    const word (8) int 6 0
+ecom: 
+hd ref Listnode 10 1
+  name argv list of ref Listnode 0 0
+ecom to: 
+name .t295 ref Listnode 0 0
+ecom: 
+= ref Listnode 10 1
+  name .t295 ref Listnode 0 0
+  name nil ref Listnode 1 0
+ecom: 
+name nil ref Listnode 1 0
+ecom to: 
+name .t295 ref Listnode 0 0
+eacom: 
+* ref Node 10 1
+  hd ref Listnode 10 1
+    name argv list of ref Listnode 0 0
+ecom: 
+hd ref Listnode 10 1
+  name argv list of ref Listnode 0 0
+ecom to: 
+name .t295 ref Listnode 0 0
+ecom: 
+= ref Listnode 10 1
+  name .t295 ref Listnode 0 0
+  name nil ref Listnode 1 0
+ecom: 
+name nil ref Listnode 1 0
+ecom to: 
+name .t295 ref Listnode 0 0
+ecom: 
+= string 10 2
+  name arg string 0 0
+  call string 10 2
+    name cmd2string fn(n: ref Node): string 11 1
+    seq no type 10 1
+      * ref Node 10 1
+        hd ref Listnode 10 1
+          name argv list of ref Listnode 0 0
+ecom: 
+call string 10 2
+  name cmd2string fn(n: ref Node): string 11 1
+  seq no type 10 1
+    * ref Node 10 1
+      hd ref Listnode 10 1
+        name argv list of ref Listnode 0 0
+ecom to: 
+name arg string 0 0
+generate desc for big
+ecom: 
+* ref Node 10 1
+  hd ref Listnode 10 1
+    name argv list of ref Listnode 0 0
+ecom to: 
+* ref Node 8 0
+  + int 15 0
+    name .b296 big 0 0
+    const (64) int 6 0
+eacom: 
+* ref Node 10 1
+  hd ref Listnode 10 1
+    name argv list of ref Listnode 0 0
+ecom: 
+hd ref Listnode 10 1
+  name argv list of ref Listnode 0 0
+ecom to: 
+name .t295 ref Listnode 0 0
+ecom: 
+= ref Listnode 10 1
+  name .t295 ref Listnode 0 0
+  name nil ref Listnode 1 0
+ecom: 
+name nil ref Listnode 1 0
+ecom to: 
+name .t295 ref Listnode 0 0
+ecom: 
+call list of ref Listnode 10 2
+  name stringlist2list fn(sl: list of string): list of ref Listnode 11 1
+  seq no type 10 2
+    call list of string 10 2
+      -> fn(args: string): list of string 12 1
+        name str String 1 0
+        name unquoted nothing 11 1
+      seq no type 10 1
+        name arg string 0 0
+ecom to: 
+* list of ref Listnode 8 0
+  name .ret int 0 0
+generate desc for big
+ecom: 
+call list of string 10 2
+  -> fn(args: string): list of string 12 1
+    name str String 1 0
+    name unquoted nothing 11 1
+  seq no type 10 1
+    name arg string 0 0
+ecom to: 
+name .t295 list of string 0 0
+generate desc for big
+ecom: 
+name arg string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b297 big 0 0
+    const (64) int 6 0
+ecom: 
+name .t295 list of string 0 0
+ecom to: 
+* list of string 8 0
+  + int 15 0
+    name .b296 big 0 0
+    const (64) int 6 0
+ecom: 
+= list of string 10 1
+  name .t295 list of string 0 0
+  name nil list of string 1 0
+ecom: 
+name nil list of string 1 0
+ecom to: 
+name .t295 list of string 0 0
+fn: sbuiltin_unquote
+64: argument ctxt ref Context ref 1
+72: argument argv list of ref Listnode ref 7
+80: local arg string ref 4
+88: local .b296 big ref 3
+96: local .b297 big ref 1
+104: local .t295 list of ref Listnode ref 1
+generate desc for sbuiltin_unquote
+descmap offset 0
+descmap ctxt type ref Context offset 64 (d->offset=64 start=0) returns 64
+descmap argv type list of ref Listnode offset 72 (d->offset=72 start=0) returns 72
+descmap arg type string offset 80 (d->offset=80 start=0) returns 80
+descmap .b296 type big offset 88 (d->offset=88 start=0) returns -1
+descmap .b297 type big offset 96 (d->offset=96 start=0) returns -1
+descmap .t295 type list of ref Listnode offset 104 (d->offset=104 start=0) returns 104
+fncom: getself 2 4c6dc8
+ecom: 
+name myselfbuiltin Shellbuiltin 1 0
+ecom to: 
+* Shellbuiltin 8 0
+  name .ret int 0 0
+fn: getself
+generate desc for getself
+descmap offset 0
+fncom: builtinusage 9 6e9150
+ecom: 
+call no type 10 2
+  name fail fn(ctxt: self ref Context, ename: string, err: string) 11 1
+  seq nothing 10 1
+    name ctxt ref Context 0 0
+    seq no type 10 1
+      const usage string 1 0
+      seq no type 10 1
+        + string 10 1
+          const sh: usage:  string 1 0
+          name s string 0 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b298 big 0 0
+    const (64) int 6 0
+ecom: 
+const usage string 1 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b298 big 0 0
+    const (72) int 6 0
+ecom: 
++ string 10 1
+  const sh: usage:  string 1 0
+  name s string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b298 big 0 0
+    const (80) int 6 0
+fn: builtinusage
+64: argument ctxt ref Context ref 1
+72: argument s string ref 1
+80: local .b298 big ref 1
+generate desc for builtinusage
+descmap offset 0
+descmap ctxt type ref Context offset 64 (d->offset=64 start=0) returns 64
+descmap s type string offset 72 (d->offset=72 start=0) returns 72
+descmap .b298 type big offset 80 (d->offset=80 start=0) returns -1
+fncom: builtin_exit 2 6e9210
+fn: builtin_exit
+64: argument <nil> ref Context ref 0
+72: argument <nil> list of ref Listnode ref 0
+80: argument <nil> int ref 0
+generate desc for builtin_exit
+descmap offset 0
+descmap type ref Context offset 64 returns 64
+descmap type list of ref Listnode offset 72 returns 72
+descmap type int offset 80 returns -1
+fncom: builtin_subsh 2 6e92d0
+eacom: 
+tl list of ref Listnode 10 1
+  name args list of ref Listnode 0 0
+ecom: 
+tl list of ref Listnode 10 1
+  name args list of ref Listnode 0 0
+ecom to: 
+name .t299 list of ref Listnode 0 0
+ecom: 
+= list of ref Listnode 10 1
+  name .t299 list of ref Listnode 0 0
+  name nil list of ref Listnode 1 0
+ecom: 
+name nil list of ref Listnode 1 0
+ecom to: 
+name .t299 list of ref Listnode 0 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* polymorphic type 8 0
+  name .ret int 0 0
+ecom: 
+= chan of (int, ref Expropagate) 10 1
+  name startchan chan of (int, ref Expropagate) 0 0
+  chan chan of (int, ref Expropagate) 10 1
+    const (0) int 6 0
+ecom: 
+chan chan of (int, ref Expropagate) 10 1
+  const (0) int 6 0
+ecom to: 
+name startchan chan of (int, ref Expropagate) 0 0
+generate desc for (int, ref Expropagate)
+descmap adt offset 0
+descmap offset 0
+descmap t0 type int offset 0 (d->offset=0 start=0) returns -1
+descmap t1 type ref Expropagate offset 8 (d->offset=8 start=0) returns 8
+generate desc for (int, ref Expropagate)
+	desc	$-1,16,"40"
+ecom: 
+spawn nothing 10 2
+  call no type 10 2
+    name runasync fn(ctxt: ref Context, copyenv: int, argv: list of ref Listnode, redirs: ref Redirlist, startchan: chan of (int, ref Expropagate)) 11 1
+    seq no type 10 2
+      name ctxt ref Context 0 0
+      seq no type 10 2
+        const (0) int 6 0
+        seq no type 10 2
+          tl list of ref Listnode 10 1
+            name args list of ref Listnode 0 0
+          seq no type 10 2
+            ref ref Redirlist 10 1
+              name Redirlist Redirlist 10 1
+            seq no type 10 1
+              name startchan chan of (int, ref Expropagate) 0 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b300 big 0 0
+    const (64) int 6 0
+ecom: 
+const (0) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b300 big 0 0
+    const (72) int 6 0
+ecom: 
+tl list of ref Listnode 10 1
+  name args list of ref Listnode 0 0
+ecom to: 
+* list of ref Listnode 8 0
+  + int 15 0
+    name .b300 big 0 0
+    const (80) int 6 0
+ecom: 
+ref ref Redirlist 10 1
+  name Redirlist Redirlist 10 1
+ecom to: 
+* ref Redirlist 8 0
+  + int 15 0
+    name .b300 big 0 0
+    const (88) int 6 0
+generate desc for Redirlist
+ecom: 
+name startchan chan of (int, ref Expropagate) 0 0
+ecom to: 
+* chan of (int, ref Expropagate) 8 0
+  + int 15 0
+    name .b300 big 0 0
+    const (96) int 6 0
+ecom: 
+= (int, ref Expropagate) 10 2
+  tuple (int, ref Expropagate) 10 1
+    seq nothing 10 1
+      name exepid int 0 0
+      seq nothing 10 1
+        name exprop ref Expropagate 0 0
+  <- (int, ref Expropagate) 10 1
+    name startchan chan of (int, ref Expropagate) 0 0
+ecom: 
+<- (int, ref Expropagate) 10 1
+  name startchan chan of (int, ref Expropagate) 0 0
+ecom to: 
+name exepid (int, ref Expropagate) 0 0
+ecom: 
+= string 10 2
+  name status string 0 0
+  call string 10 2
+    name waitfor fn(ctxt: ref Context, pids: list of int): string 11 1
+    seq no type 10 1
+      name ctxt ref Context 0 0
+      seq no type 10 1
+        :: list of int 10 1
+          name exepid int 0 0
+          name nil polymorphic type 1 0
+ecom: 
+call string 10 2
+  name waitfor fn(ctxt: ref Context, pids: list of int): string 11 1
+  seq no type 10 1
+    name ctxt ref Context 0 0
+    seq no type 10 1
+      :: list of int 10 1
+        name exepid int 0 0
+        name nil polymorphic type 1 0
+ecom to: 
+name status string 0 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b300 big 0 0
+    const (64) int 6 0
+ecom: 
+:: list of int 10 1
+  name exepid int 0 0
+  name nil polymorphic type 1 0
+ecom to: 
+* list of int 8 0
+  + int 15 0
+    name .b300 big 0 0
+    const (72) int 6 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+name .t299 list of int 0 0
+ecom: 
+= list of int 10 1
+  name .t299 list of int 0 0
+  name nil list of int 1 0
+ecom: 
+name nil list of int 1 0
+ecom to: 
+name .t299 list of int 0 0
+ecom: 
+raise nothing 10 1
+  * string 8 0
+    name exprop ref Expropagate 0 0
+ecom: 
+name status string 0 0
+ecom to: 
+* string 8 0
+  name .ret int 0 0
+fn: builtin_subsh
+64: argument ctxt ref Context ref 2
+72: argument args list of ref Listnode ref 2
+80: argument <nil> int ref 0
+88: local exepid int ref 2
+96: local exprop ref Expropagate ref 3
+104: local startchan chan of (int, ref Expropagate) ref 3
+112: local .b300 big ref 2
+120: local status string ref 2
+128: local .t299 list of ref Listnode ref 1
+generate desc for builtin_subsh
+descmap offset 0
+descmap ctxt type ref Context offset 64 (d->offset=64 start=0) returns 64
+descmap args type list of ref Listnode offset 72 (d->offset=72 start=0) returns 72
+descmap type int offset 80 returns -1
+descmap exepid type int offset 88 (d->offset=88 start=0) returns -1
+descmap exprop type ref Expropagate offset 96 (d->offset=96 start=0) returns 96
+descmap startchan type chan of (int, ref Expropagate) offset 104 (d->offset=104 start=0) returns 104
+descmap .b300 type big offset 112 (d->offset=112 start=0) returns -1
+descmap status type string offset 120 (d->offset=120 start=0) returns 120
+descmap .t299 type list of ref Listnode offset 128 (d->offset=128 start=0) returns 128
+fncom: builtin_loaded 2 6e9390
+ecom: 
+= ref Builtins 10 1
+  name b ref Builtins 0 0
+  * ref Builtins 10 1
+    + int 10 1
+      * ref Environment 8 0
+        name ctxt ref Context 0 0
+      const builtins (8) int 6 0
+ecom: 
+* ref Builtins 10 1
+  + int 10 1
+    * ref Environment 8 0
+      name ctxt ref Context 0 0
+    const builtins (8) int 6 0
+ecom to: 
+name b ref Builtins 0 0
+eacom: 
+* ref Builtins 10 1
+  + int 10 1
+    * ref Environment 8 0
+      name ctxt ref Context 0 0
+    const builtins (8) int 6 0
+ecom: 
+* ref Environment 8 0
+  name ctxt ref Context 0 0
+ecom to: 
+name .t301 ref Environment 0 0
+ecom: 
+= ref Environment 10 1
+  name .t301 ref Environment 0 0
+  name nil ref Environment 1 0
+ecom: 
+name nil ref Environment 1 0
+ecom to: 
+name .t301 ref Environment 0 0
+ecom: 
+= int 10 1
+  name i int 0 0
+  const (0) int 6 0
+ecom: 
+const (0) int 6 0
+ecom to: 
+name i int 0 0
+ecom: 
+= (string, list of Shellbuiltin) 10 2
+  tuple (string, list of Shellbuiltin) 10 1
+    seq nothing 10 1
+      name name string 0 0
+      seq nothing 10 1
+        name bmods list of Shellbuiltin 0 0
+  * (string, list of Shellbuiltin) 10 1
+    indx big 10 1
+      * array of (string, list of Shellbuiltin) 8 0
+        name b ref Builtins 0 0
+      name i int 0 0
+ecom: 
+* (string, list of Shellbuiltin) 10 1
+  indx big 10 1
+    * array of (string, list of Shellbuiltin) 8 0
+      name b ref Builtins 0 0
+    name i int 0 0
+ecom to: 
+name name (string, list of Shellbuiltin) 0 0
+eacom: 
+* (string, list of Shellbuiltin) 10 1
+  indx big 10 1
+    * array of (string, list of Shellbuiltin) 8 0
+      name b ref Builtins 0 0
+    name i int 0 0
+generate desc for big
+ecom: 
+indx big 10 1
+  * array of (string, list of Shellbuiltin) 8 0
+    name b ref Builtins 0 0
+  name i int 0 0
+ecom to: 
+name .b302 big 0 0
+generate desc for (string, list of Shellbuiltin)
+ecom: 
+used int 10 2
+  call int 10 2
+    -> fn(s: string, nil: string, nil: string, *): int 12 1
+      name sys Sys 1 0
+      name print nothing 11 1
+    seq no type 10 2
+      const %s	%s
+ string 1 0
+      seq no type 10 2
+        name name string 0 0
+        seq no type 10 2
+          call string 10 2
+            name modname fn(ctxt: ref Context, mod: Shellbuiltin): string 11 1
+            seq no type 10 1
+              name ctxt ref Context 0 0
+              seq no type 10 1
+                hd Shellbuiltin 10 1
+                  name bmods list of Shellbuiltin 0 0
+ecom: 
+call int 10 2
+  -> fn(s: string, nil: string, nil: string, *): int 12 1
+    name sys Sys 1 0
+    name print nothing 11 1
+  seq no type 10 2
+    const %s	%s
+ string 1 0
+    seq no type 10 2
+      name name string 0 0
+      seq no type 10 2
+        call string 10 2
+          name modname fn(ctxt: ref Context, mod: Shellbuiltin): string 11 1
+          seq no type 10 1
+            name ctxt ref Context 0 0
+            seq no type 10 1
+              hd Shellbuiltin 10 1
+                name bmods list of Shellbuiltin 0 0
+ecom to: 
+name .t303 int 0 0
+generate desc for Sys->print
+descmap offset 0
+descmap s type string offset 64 (d->offset=64 start=0) returns 64
+descmap type string offset 72 returns 72
+descmap type string offset 80 returns 80
+generate desc for big
+ecom: 
+call string 10 2
+  name modname fn(ctxt: ref Context, mod: Shellbuiltin): string 11 1
+  seq no type 10 1
+    name ctxt ref Context 0 0
+    seq no type 10 1
+      hd Shellbuiltin 10 1
+        name bmods list of Shellbuiltin 0 0
+ecom to: 
+name .t301 string 0 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b304 big 0 0
+    const (64) int 6 0
+ecom: 
+hd Shellbuiltin 10 1
+  name bmods list of Shellbuiltin 0 0
+ecom to: 
+* Shellbuiltin 8 0
+  + int 15 0
+    name .b304 big 0 0
+    const (72) int 6 0
+ecom: 
+const %s	%s
+ string 1 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b302 big 0 0
+    const (64) int 6 0
+ecom: 
+name name string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b302 big 0 0
+    const (72) int 6 0
+ecom: 
+name .t301 string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b302 big 0 0
+    const (80) int 6 0
+ecom: 
+= string 10 1
+  name .t301 string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name .t301 string 0 0
+ecom: 
+= string 10 1
+  * string 0 0
+    adr int 13 1
+      name name (string, list of Shellbuiltin) 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+* string 0 0
+  adr int 13 1
+    name name (string, list of Shellbuiltin) 0 0
+ecom: 
+= list of Shellbuiltin 10 1
+  * list of Shellbuiltin 0 0
+    + int 13 1
+      adr int 13 1
+        name name (string, list of Shellbuiltin) 0 0
+      const t1 (8) int 6 0
+  name nil list of Shellbuiltin 1 0
+ecom: 
+name nil list of Shellbuiltin 1 0
+ecom to: 
+* list of Shellbuiltin 0 0
+  + int 13 1
+    adr int 13 1
+      name name (string, list of Shellbuiltin) 0 0
+    const t1 (8) int 6 0
+ecom: 
+= list of Shellbuiltin 10 1
+  name bmods list of Shellbuiltin 0 0
+  name nil list of Shellbuiltin 1 0
+ecom: 
+name nil list of Shellbuiltin 1 0
+ecom to: 
+name bmods list of Shellbuiltin 0 0
+ecom: 
+++ int 10 1
+  name i int 0 0
+  const (1) int 6 0
+ecom: 
+= ref Builtins 10 1
+  name b ref Builtins 0 0
+  * ref Builtins 10 1
+    * ref Environment 8 0
+      name ctxt ref Context 0 0
+ecom: 
+* ref Builtins 10 1
+  * ref Environment 8 0
+    name ctxt ref Context 0 0
+ecom to: 
+name b ref Builtins 0 0
+eacom: 
+* ref Builtins 10 1
+  * ref Environment 8 0
+    name ctxt ref Context 0 0
+ecom: 
+* ref Environment 8 0
+  name ctxt ref Context 0 0
+ecom to: 
+name .t301 ref Environment 0 0
+ecom: 
+= ref Environment 10 1
+  name .t301 ref Environment 0 0
+  name nil ref Environment 1 0
+ecom: 
+name nil ref Environment 1 0
+ecom to: 
+name .t301 ref Environment 0 0
+ecom: 
+= int 10 1
+  name i int 0 0
+  const (0) int 6 0
+ecom: 
+const (0) int 6 0
+ecom to: 
+name i int 0 0
+ecom: 
+= (string, list of Shellbuiltin) 10 2
+  tuple (string, list of Shellbuiltin) 10 1
+    seq nothing 10 1
+      name name string 0 0
+      seq nothing 10 1
+        name bmods list of Shellbuiltin 0 0
+  * (string, list of Shellbuiltin) 10 1
+    indx big 10 1
+      * array of (string, list of Shellbuiltin) 8 0
+        name b ref Builtins 0 0
+      name i int 0 0
+ecom: 
+* (string, list of Shellbuiltin) 10 1
+  indx big 10 1
+    * array of (string, list of Shellbuiltin) 8 0
+      name b ref Builtins 0 0
+    name i int 0 0
+ecom to: 
+name name (string, list of Shellbuiltin) 0 0
+eacom: 
+* (string, list of Shellbuiltin) 10 1
+  indx big 10 1
+    * array of (string, list of Shellbuiltin) 8 0
+      name b ref Builtins 0 0
+    name i int 0 0
+generate desc for big
+ecom: 
+indx big 10 1
+  * array of (string, list of Shellbuiltin) 8 0
+    name b ref Builtins 0 0
+  name i int 0 0
+ecom to: 
+name .b304 big 0 0
+generate desc for (string, list of Shellbuiltin)
+ecom: 
+used int 10 2
+  call int 10 2
+    -> fn(s: string, nil: string, nil: string, *): int 12 1
+      name sys Sys 1 0
+      name print nothing 11 1
+    seq no type 10 2
+      const ${%s}	%s
+ string 1 0
+      seq no type 10 2
+        name name string 0 0
+        seq no type 10 2
+          call string 10 2
+            name modname fn(ctxt: ref Context, mod: Shellbuiltin): string 11 1
+            seq no type 10 1
+              name ctxt ref Context 0 0
+              seq no type 10 1
+                hd Shellbuiltin 10 1
+                  name bmods list of Shellbuiltin 0 0
+ecom: 
+call int 10 2
+  -> fn(s: string, nil: string, nil: string, *): int 12 1
+    name sys Sys 1 0
+    name print nothing 11 1
+  seq no type 10 2
+    const ${%s}	%s
+ string 1 0
+    seq no type 10 2
+      name name string 0 0
+      seq no type 10 2
+        call string 10 2
+          name modname fn(ctxt: ref Context, mod: Shellbuiltin): string 11 1
+          seq no type 10 1
+            name ctxt ref Context 0 0
+            seq no type 10 1
+              hd Shellbuiltin 10 1
+                name bmods list of Shellbuiltin 0 0
+ecom to: 
+name .t303 int 0 0
+generate desc for Sys->print
+descmap offset 0
+descmap s type string offset 64 (d->offset=64 start=0) returns 64
+descmap type string offset 72 returns 72
+descmap type string offset 80 returns 80
+generate desc for big
+ecom: 
+call string 10 2
+  name modname fn(ctxt: ref Context, mod: Shellbuiltin): string 11 1
+  seq no type 10 1
+    name ctxt ref Context 0 0
+    seq no type 10 1
+      hd Shellbuiltin 10 1
+        name bmods list of Shellbuiltin 0 0
+ecom to: 
+name .t301 string 0 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b302 big 0 0
+    const (64) int 6 0
+ecom: 
+hd Shellbuiltin 10 1
+  name bmods list of Shellbuiltin 0 0
+ecom to: 
+* Shellbuiltin 8 0
+  + int 15 0
+    name .b302 big 0 0
+    const (72) int 6 0
+ecom: 
+const ${%s}	%s
+ string 1 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b304 big 0 0
+    const (64) int 6 0
+ecom: 
+name name string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b304 big 0 0
+    const (72) int 6 0
+ecom: 
+name .t301 string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b304 big 0 0
+    const (80) int 6 0
+ecom: 
+= string 10 1
+  name .t301 string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name .t301 string 0 0
+ecom: 
+= string 10 1
+  * string 0 0
+    adr int 13 1
+      name name (string, list of Shellbuiltin) 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+* string 0 0
+  adr int 13 1
+    name name (string, list of Shellbuiltin) 0 0
+ecom: 
+= list of Shellbuiltin 10 1
+  * list of Shellbuiltin 0 0
+    + int 13 1
+      adr int 13 1
+        name name (string, list of Shellbuiltin) 0 0
+      const t1 (8) int 6 0
+  name nil list of Shellbuiltin 1 0
+ecom: 
+name nil list of Shellbuiltin 1 0
+ecom to: 
+* list of Shellbuiltin 0 0
+  + int 13 1
+    adr int 13 1
+      name name (string, list of Shellbuiltin) 0 0
+    const t1 (8) int 6 0
+ecom: 
+= list of Shellbuiltin 10 1
+  name bmods list of Shellbuiltin 0 0
+  name nil list of Shellbuiltin 1 0
+ecom: 
+name nil list of Shellbuiltin 1 0
+ecom to: 
+name bmods list of Shellbuiltin 0 0
+ecom: 
+++ int 10 1
+  name i int 0 0
+  const (1) int 6 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* polymorphic type 8 0
+  name .ret int 0 0
+fn: builtin_loaded
+64: argument ctxt ref Context ref 4
+72: argument <nil> list of ref Listnode ref 0
+80: argument <nil> int ref 0
+84: local i int ref 8
+88: local .t303 int ref 1
+96: local b ref Builtins ref 6
+104: local .b302 big ref 3
+112: local .b304 big ref 3
+120: local name string ref 2
+128: local bmods list of Shellbuiltin ref 2
+136: local name string ref 2
+144: local bmods list of Shellbuiltin ref 2
+152: local .t301 ref Environment ref 1
+generate desc for builtin_loaded
+descmap offset 0
+descmap ctxt type ref Context offset 64 (d->offset=64 start=0) returns 64
+descmap type list of ref Listnode offset 72 returns 72
+descmap type int offset 80 returns -1
+descmap i type int offset 84 (d->offset=84 start=0) returns -1
+descmap .t303 type int offset 88 (d->offset=88 start=0) returns -1
+descmap b type ref Builtins offset 96 (d->offset=96 start=0) returns 96
+descmap .b302 type big offset 104 (d->offset=104 start=0) returns -1
+descmap .b304 type big offset 112 (d->offset=112 start=0) returns -1
+descmap name type string offset 120 (d->offset=120 start=0) returns 120
+descmap bmods type list of Shellbuiltin offset 128 (d->offset=128 start=0) returns 128
+descmap name type string offset 136 (d->offset=136 start=0) returns 136
+descmap bmods type list of Shellbuiltin offset 144 (d->offset=144 start=0) returns 144
+descmap .t301 type ref Environment offset 152 (d->offset=152 start=0) returns 152
+fncom: builtin_load 2 6e9450
+eacom: 
+tl list of ref Listnode 10 1
+  name args list of ref Listnode 0 0
+ecom: 
+tl list of ref Listnode 10 1
+  name args list of ref Listnode 0 0
+ecom to: 
+name .t305 list of ref Listnode 0 0
+ecom: 
+= list of ref Listnode 10 1
+  name .t305 list of ref Listnode 0 0
+  name nil list of ref Listnode 1 0
+ecom: 
+name nil list of ref Listnode 1 0
+ecom to: 
+name .t305 list of ref Listnode 0 0
+eacom: 
+* string 10 1
+  + int 10 1
+    hd ref Listnode 10 1
+      tl list of ref Listnode 10 1
+        name args list of ref Listnode 0 0
+    const word (8) int 6 0
+ecom: 
+hd ref Listnode 10 1
+  tl list of ref Listnode 10 1
+    name args list of ref Listnode 0 0
+ecom to: 
+name .t305 ref Listnode 0 0
+eacom: 
+tl list of ref Listnode 10 1
+  name args list of ref Listnode 0 0
+ecom: 
+tl list of ref Listnode 10 1
+  name args list of ref Listnode 0 0
+ecom to: 
+name .t305 list of ref Listnode 0 0
+ecom: 
+= ref Listnode 10 1
+  name .t305 ref Listnode 0 0
+  name nil ref Listnode 1 0
+ecom: 
+name nil ref Listnode 1 0
+ecom to: 
+name .t305 ref Listnode 0 0
+ecom: 
+call no type 10 2
+  name builtinusage fn(ctxt: ref Context, s: string) 11 1
+  seq no type 10 1
+    name ctxt ref Context 0 0
+    seq no type 10 1
+      const load path... string 1 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b306 big 0 0
+    const (64) int 6 0
+ecom: 
+const load path... string 1 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b306 big 0 0
+    const (72) int 6 0
+ecom: 
+= list of ref Listnode 10 1
+  name args list of ref Listnode 0 0
+  tl list of ref Listnode 10 1
+    name args list of ref Listnode 0 0
+ecom: 
+tl list of ref Listnode 10 1
+  name args list of ref Listnode 0 0
+ecom to: 
+name args list of ref Listnode 0 0
+ecom: 
+call no type 10 2
+  name builtinusage fn(ctxt: ref Context, s: string) 11 1
+  seq no type 10 1
+    name ctxt ref Context 0 0
+    seq no type 10 1
+      const load path... string 1 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b306 big 0 0
+    const (64) int 6 0
+ecom: 
+const load path... string 1 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b306 big 0 0
+    const (72) int 6 0
+ecom: 
+= string 10 2
+  name s string 0 0
+  call string 10 2
+    name loadmodule fn(ctxt: ref Context, name: string): string 11 1
+    seq no type 10 1
+      name ctxt ref Context 0 0
+      seq no type 10 1
+        * string 10 1
+          + int 10 1
+            hd ref Listnode 10 1
+              name args list of ref Listnode 0 0
+            const word (8) int 6 0
+ecom: 
+call string 10 2
+  name loadmodule fn(ctxt: ref Context, name: string): string 11 1
+  seq no type 10 1
+    name ctxt ref Context 0 0
+    seq no type 10 1
+      * string 10 1
+        + int 10 1
+          hd ref Listnode 10 1
+            name args list of ref Listnode 0 0
+          const word (8) int 6 0
+ecom to: 
+name s string 0 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b306 big 0 0
+    const (64) int 6 0
+ecom: 
+* string 10 1
+  + int 10 1
+    hd ref Listnode 10 1
+      name args list of ref Listnode 0 0
+    const word (8) int 6 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b306 big 0 0
+    const (72) int 6 0
+eacom: 
+* string 10 1
+  + int 10 1
+    hd ref Listnode 10 1
+      name args list of ref Listnode 0 0
+    const word (8) int 6 0
+ecom: 
+hd ref Listnode 10 1
+  name args list of ref Listnode 0 0
+ecom to: 
+name .t305 ref Listnode 0 0
+ecom: 
+= ref Listnode 10 1
+  name .t305 ref Listnode 0 0
+  name nil ref Listnode 1 0
+ecom: 
+name nil ref Listnode 1 0
+ecom to: 
+name .t305 ref Listnode 0 0
+ecom: 
+raise nothing 10 1
+  + string 10 1
+    const fail: string 1 0
+    name s string 0 0
+eacom: 
++ string 10 1
+  const fail: string 1 0
+  name s string 0 0
+ecom: 
++ string 10 1
+  const fail: string 1 0
+  name s string 0 0
+ecom to: 
+name .t305 string 0 0
+ecom: 
+= string 10 1
+  name .t305 string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name .t305 string 0 0
+ecom: 
+= string 10 1
+  name s string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name s string 0 0
+ecom: 
+= list of ref Listnode 10 1
+  name args list of ref Listnode 0 0
+  tl list of ref Listnode 10 1
+    name args list of ref Listnode 0 0
+ecom: 
+tl list of ref Listnode 10 1
+  name args list of ref Listnode 0 0
+ecom to: 
+name args list of ref Listnode 0 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* polymorphic type 8 0
+  name .ret int 0 0
+fn: builtin_load
+64: argument ctxt ref Context ref 3
+72: argument args list of ref Listnode ref 9
+80: argument <nil> int ref 0
+88: local .b306 big ref 3
+96: local s string ref 3
+104: local .t305 list of ref Listnode ref 1
+generate desc for builtin_load
+descmap offset 0
+descmap ctxt type ref Context offset 64 (d->offset=64 start=0) returns 64
+descmap args type list of ref Listnode offset 72 (d->offset=72 start=0) returns 72
+descmap type int offset 80 returns -1
+descmap .b306 type big offset 88 (d->offset=88 start=0) returns -1
+descmap s type string offset 96 (d->offset=96 start=0) returns 96
+descmap .t305 type list of ref Listnode offset 104 (d->offset=104 start=0) returns 104
+fncom: builtin_unload 2 6e9510
+eacom: 
+tl list of ref Listnode 10 1
+  name args list of ref Listnode 0 0
+ecom: 
+tl list of ref Listnode 10 1
+  name args list of ref Listnode 0 0
+ecom to: 
+name .t307 list of ref Listnode 0 0
+ecom: 
+= list of ref Listnode 10 1
+  name .t307 list of ref Listnode 0 0
+  name nil list of ref Listnode 1 0
+ecom: 
+name nil list of ref Listnode 1 0
+ecom to: 
+name .t307 list of ref Listnode 0 0
+ecom: 
+call no type 10 2
+  name builtinusage fn(ctxt: ref Context, s: string) 11 1
+  seq no type 10 1
+    name ctxt ref Context 0 0
+    seq no type 10 1
+      const unload path... string 1 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b308 big 0 0
+    const (64) int 6 0
+ecom: 
+const unload path... string 1 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b308 big 0 0
+    const (72) int 6 0
+ecom: 
+= string 10 1
+  name status string 0 0
+  const  string 1 0
+ecom: 
+const  string 1 0
+ecom to: 
+name status string 0 0
+ecom: 
+= list of ref Listnode 10 1
+  name args list of ref Listnode 0 0
+  tl list of ref Listnode 10 1
+    name args list of ref Listnode 0 0
+ecom: 
+tl list of ref Listnode 10 1
+  name args list of ref Listnode 0 0
+ecom to: 
+name args list of ref Listnode 0 0
+eacom: 
+= string 10 2
+  name s string 0 0
+  call string 10 2
+    name unloadmodule fn(ctxt: ref Context, name: string): string 11 1
+    seq no type 10 1
+      name ctxt ref Context 0 0
+      seq no type 10 1
+        * string 10 1
+          + int 10 1
+            hd ref Listnode 10 1
+              name args list of ref Listnode 0 0
+            const word (8) int 6 0
+ecom: 
+= string 10 2
+  name s string 0 0
+  call string 10 2
+    name unloadmodule fn(ctxt: ref Context, name: string): string 11 1
+    seq no type 10 1
+      name ctxt ref Context 0 0
+      seq no type 10 1
+        * string 10 1
+          + int 10 1
+            hd ref Listnode 10 1
+              name args list of ref Listnode 0 0
+            const word (8) int 6 0
+ecom to: 
+name .t307 string 0 0
+ecom: 
+call string 10 2
+  name unloadmodule fn(ctxt: ref Context, name: string): string 11 1
+  seq no type 10 1
+    name ctxt ref Context 0 0
+    seq no type 10 1
+      * string 10 1
+        + int 10 1
+          hd ref Listnode 10 1
+            name args list of ref Listnode 0 0
+          const word (8) int 6 0
+ecom to: 
+name s string 0 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b308 big 0 0
+    const (64) int 6 0
+ecom: 
+* string 10 1
+  + int 10 1
+    hd ref Listnode 10 1
+      name args list of ref Listnode 0 0
+    const word (8) int 6 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b308 big 0 0
+    const (72) int 6 0
+eacom: 
+* string 10 1
+  + int 10 1
+    hd ref Listnode 10 1
+      name args list of ref Listnode 0 0
+    const word (8) int 6 0
+ecom: 
+hd ref Listnode 10 1
+  name args list of ref Listnode 0 0
+ecom to: 
+name .t309 ref Listnode 0 0
+ecom: 
+= ref Listnode 10 1
+  name .t309 ref Listnode 0 0
+  name nil ref Listnode 1 0
+ecom: 
+name nil ref Listnode 1 0
+ecom to: 
+name .t309 ref Listnode 0 0
+ecom: 
+= string 10 1
+  name .t307 string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name .t307 string 0 0
+ecom: 
+= string 10 1
+  name status string 0 0
+  name s string 0 0
+ecom: 
+name s string 0 0
+ecom to: 
+name status string 0 0
+ecom: 
+= list of ref Listnode 10 1
+  name args list of ref Listnode 0 0
+  tl list of ref Listnode 10 1
+    name args list of ref Listnode 0 0
+ecom: 
+tl list of ref Listnode 10 1
+  name args list of ref Listnode 0 0
+ecom to: 
+name args list of ref Listnode 0 0
+ecom: 
+name status string 0 0
+ecom to: 
+* string 8 0
+  name .ret int 0 0
+fn: builtin_unload
+64: argument ctxt ref Context ref 2
+72: argument args list of ref Listnode ref 7
+80: argument <nil> int ref 0
+88: local status string ref 3
+96: local .b308 big ref 2
+104: local s string ref 2
+112: local .t307 list of ref Listnode ref 1
+120: local .t309 ref Listnode ref 1
+generate desc for builtin_unload
+descmap offset 0
+descmap ctxt type ref Context offset 64 (d->offset=64 start=0) returns 64
+descmap args type list of ref Listnode offset 72 (d->offset=72 start=0) returns 72
+descmap type int offset 80 returns -1
+descmap status type string offset 88 (d->offset=88 start=0) returns 88
+descmap .b308 type big offset 96 (d->offset=96 start=0) returns -1
+descmap s type string offset 104 (d->offset=104 start=0) returns 104
+descmap .t307 type list of ref Listnode offset 112 (d->offset=112 start=0) returns 112
+descmap .t309 type ref Listnode offset 120 (d->offset=120 start=0) returns 120
+fncom: builtin_run 2 6e95d0
+eacom: 
+tl list of ref Listnode 10 1
+  name args list of ref Listnode 0 0
+ecom: 
+tl list of ref Listnode 10 1
+  name args list of ref Listnode 0 0
+ecom to: 
+name .t310 list of ref Listnode 0 0
+ecom: 
+= list of ref Listnode 10 1
+  name .t310 list of ref Listnode 0 0
+  name nil list of ref Listnode 1 0
+ecom: 
+name nil list of ref Listnode 1 0
+ecom to: 
+name .t310 list of ref Listnode 0 0
+eacom: 
+* string 10 1
+  + int 10 1
+    hd ref Listnode 10 1
+      tl list of ref Listnode 10 1
+        name args list of ref Listnode 0 0
+    const word (8) int 6 0
+ecom: 
+hd ref Listnode 10 1
+  tl list of ref Listnode 10 1
+    name args list of ref Listnode 0 0
+ecom to: 
+name .t310 ref Listnode 0 0
+eacom: 
+tl list of ref Listnode 10 1
+  name args list of ref Listnode 0 0
+ecom: 
+tl list of ref Listnode 10 1
+  name args list of ref Listnode 0 0
+ecom to: 
+name .t310 list of ref Listnode 0 0
+ecom: 
+= ref Listnode 10 1
+  name .t310 ref Listnode 0 0
+  name nil ref Listnode 1 0
+ecom: 
+name nil ref Listnode 1 0
+ecom to: 
+name .t310 ref Listnode 0 0
+ecom: 
+call no type 10 2
+  name builtinusage fn(ctxt: ref Context, s: string) 11 1
+  seq no type 10 1
+    name ctxt ref Context 0 0
+    seq no type 10 1
+      const run path string 1 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b311 big 0 0
+    const (64) int 6 0
+ecom: 
+const run path string 1 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b311 big 0 0
+    const (72) int 6 0
+ecom: 
+call no type 10 2
+  name push fn(ctxt: self ref Context) 11 1
+  seq nothing 10 1
+    name ctxt ref Context 0 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b311 big 0 0
+    const (64) int 6 0
+ecom: 
+used int 10 2
+  call int 10 2
+    name setoptions fn(ctxt: self ref Context, flags: int, on: int): int 11 1
+    seq nothing 10 1
+      name ctxt ref Context 0 0
+      seq no type 10 1
+        const INTERACTIVE (1) int 6 0
+        seq no type 10 1
+          const (0) int 6 0
+ecom: 
+call int 10 2
+  name setoptions fn(ctxt: self ref Context, flags: int, on: int): int 11 1
+  seq nothing 10 1
+    name ctxt ref Context 0 0
+    seq no type 10 1
+      const INTERACTIVE (1) int 6 0
+      seq no type 10 1
+        const (0) int 6 0
+ecom to: 
+name .t312 int 0 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b311 big 0 0
+    const (64) int 6 0
+ecom: 
+const INTERACTIVE (1) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b311 big 0 0
+    const (72) int 6 0
+ecom: 
+const (0) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b311 big 0 0
+    const (76) int 6 0
+ecom: 
+call no type 10 2
+  name runscript fn(ctxt: ref Context, path: string, args: list of ref Listnode, reporterr: int) 11 1
+  seq no type 10 2
+    name ctxt ref Context 0 0
+    seq no type 10 2
+      * string 10 1
+        + int 10 1
+          hd ref Listnode 10 1
+            tl list of ref Listnode 10 1
+              name args list of ref Listnode 0 0
+          const word (8) int 6 0
+      seq no type 10 2
+        tl list of ref Listnode 10 1
+          tl list of ref Listnode 10 1
+            name args list of ref Listnode 0 0
+        seq no type 10 1
+          const (1) int 6 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b311 big 0 0
+    const (64) int 6 0
+ecom: 
+* string 10 1
+  + int 10 1
+    hd ref Listnode 10 1
+      tl list of ref Listnode 10 1
+        name args list of ref Listnode 0 0
+    const word (8) int 6 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b311 big 0 0
+    const (72) int 6 0
+eacom: 
+* string 10 1
+  + int 10 1
+    hd ref Listnode 10 1
+      tl list of ref Listnode 10 1
+        name args list of ref Listnode 0 0
+    const word (8) int 6 0
+ecom: 
+hd ref Listnode 10 1
+  tl list of ref Listnode 10 1
+    name args list of ref Listnode 0 0
+ecom to: 
+name .t310 ref Listnode 0 0
+eacom: 
+tl list of ref Listnode 10 1
+  name args list of ref Listnode 0 0
+ecom: 
+tl list of ref Listnode 10 1
+  name args list of ref Listnode 0 0
+ecom to: 
+name .t310 list of ref Listnode 0 0
+ecom: 
+= ref Listnode 10 1
+  name .t310 ref Listnode 0 0
+  name nil ref Listnode 1 0
+ecom: 
+name nil ref Listnode 1 0
+ecom to: 
+name .t310 ref Listnode 0 0
+ecom: 
+tl list of ref Listnode 10 1
+  tl list of ref Listnode 10 1
+    name args list of ref Listnode 0 0
+ecom to: 
+* list of ref Listnode 8 0
+  + int 15 0
+    name .b311 big 0 0
+    const (80) int 6 0
+eacom: 
+tl list of ref Listnode 10 1
+  name args list of ref Listnode 0 0
+ecom: 
+tl list of ref Listnode 10 1
+  name args list of ref Listnode 0 0
+ecom to: 
+name .t310 list of ref Listnode 0 0
+ecom: 
+= list of ref Listnode 10 1
+  name .t310 list of ref Listnode 0 0
+  name nil list of ref Listnode 1 0
+ecom: 
+name nil list of ref Listnode 1 0
+ecom to: 
+name .t310 list of ref Listnode 0 0
+ecom: 
+const (1) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b311 big 0 0
+    const (88) int 6 0
+ecom: 
+call no type 10 2
+  name pop fn(ctxt: self ref Context) 11 1
+  seq nothing 10 1
+    name ctxt ref Context 0 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b311 big 0 0
+    const (64) int 6 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* polymorphic type 8 0
+  name .ret int 0 0
+ecom: 
+call no type 10 2
+  name pop fn(ctxt: self ref Context) 11 1
+  seq nothing 10 1
+    name ctxt ref Context 0 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b311 big 0 0
+    const (64) int 6 0
+ecom: 
+call string 10 2
+  name failurestatus fn(e: string): string 11 1
+  seq no type 10 1
+    name e string 0 0
+ecom to: 
+* string 8 0
+  name .ret int 0 0
+generate desc for big
+ecom: 
+name e string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b311 big 0 0
+    const (64) int 6 0
+fn: builtin_run
+64: argument ctxt ref Context ref 7
+72: argument args list of ref Listnode ref 4
+80: argument <nil> int ref 0
+84: local e ref exception ref 2
+88: local .t312 int ref 1
+96: local .b311 big ref 7
+104: local .t310 list of ref Listnode ref 1
+generate desc for builtin_run
+descmap offset 0
+descmap ctxt type ref Context offset 64 (d->offset=64 start=0) returns 64
+descmap args type list of ref Listnode offset 72 (d->offset=72 start=0) returns 72
+descmap type int offset 80 returns -1
+descmap e type ref exception offset 84 (d->offset=84 start=0) returns 88
+descmap .t312 type int offset 88 (d->offset=88 start=0) returns -1
+descmap .b311 type big offset 96 (d->offset=96 start=0) returns -1
+descmap .t310 type list of ref Listnode offset 104 (d->offset=104 start=0) returns 104
+fncom: builtin_whatis 2 6e9690
+eacom: 
+len int 10 1
+  name args list of ref Listnode 0 0
+ecom: 
+len int 10 1
+  name args list of ref Listnode 0 0
+ecom to: 
+name .t313 int 0 0
+ecom: 
+call no type 10 2
+  name builtinusage fn(ctxt: ref Context, s: string) 11 1
+  seq no type 10 1
+    name ctxt ref Context 0 0
+    seq no type 10 1
+      const whatis name ... string 1 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b314 big 0 0
+    const (64) int 6 0
+ecom: 
+const whatis name ... string 1 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b314 big 0 0
+    const (72) int 6 0
+ecom: 
+= string 10 1
+  name err string 0 0
+  const  string 1 0
+ecom: 
+const  string 1 0
+ecom to: 
+name err string 0 0
+ecom: 
+= list of ref Listnode 10 1
+  name args list of ref Listnode 0 0
+  tl list of ref Listnode 10 1
+    name args list of ref Listnode 0 0
+ecom: 
+tl list of ref Listnode 10 1
+  name args list of ref Listnode 0 0
+ecom to: 
+name args list of ref Listnode 0 0
+eacom: 
+= string 10 2
+  name e string 0 0
+  call string 10 2
+    name whatisit fn(ctxt: ref Context, el: ref Listnode): string 11 1
+    seq no type 10 1
+      name ctxt ref Context 0 0
+      seq no type 10 1
+        hd ref Listnode 10 1
+          name args list of ref Listnode 0 0
+ecom: 
+= string 10 2
+  name e string 0 0
+  call string 10 2
+    name whatisit fn(ctxt: ref Context, el: ref Listnode): string 11 1
+    seq no type 10 1
+      name ctxt ref Context 0 0
+      seq no type 10 1
+        hd ref Listnode 10 1
+          name args list of ref Listnode 0 0
+ecom to: 
+name .t315 string 0 0
+ecom: 
+call string 10 2
+  name whatisit fn(ctxt: ref Context, el: ref Listnode): string 11 1
+  seq no type 10 1
+    name ctxt ref Context 0 0
+    seq no type 10 1
+      hd ref Listnode 10 1
+        name args list of ref Listnode 0 0
+ecom to: 
+name e string 0 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b314 big 0 0
+    const (64) int 6 0
+ecom: 
+hd ref Listnode 10 1
+  name args list of ref Listnode 0 0
+ecom to: 
+* ref Listnode 8 0
+  + int 15 0
+    name .b314 big 0 0
+    const (72) int 6 0
+ecom: 
+= string 10 1
+  name .t315 string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name .t315 string 0 0
+ecom: 
+= string 10 1
+  name err string 0 0
+  name e string 0 0
+ecom: 
+name e string 0 0
+ecom to: 
+name err string 0 0
+ecom: 
+= list of ref Listnode 10 1
+  name args list of ref Listnode 0 0
+  tl list of ref Listnode 10 1
+    name args list of ref Listnode 0 0
+ecom: 
+tl list of ref Listnode 10 1
+  name args list of ref Listnode 0 0
+ecom to: 
+name args list of ref Listnode 0 0
+ecom: 
+name err string 0 0
+ecom to: 
+* string 8 0
+  name .ret int 0 0
+fn: builtin_whatis
+64: argument ctxt ref Context ref 2
+72: argument args list of ref Listnode ref 7
+80: argument <nil> int ref 0
+84: local .t313 int ref 1
+88: local err string ref 3
+96: local .b314 big ref 2
+104: local e string ref 2
+112: local .t315 string ref 1
+generate desc for builtin_whatis
+descmap offset 0
+descmap ctxt type ref Context offset 64 (d->offset=64 start=0) returns 64
+descmap args type list of ref Listnode offset 72 (d->offset=72 start=0) returns 72
+descmap type int offset 80 returns -1
+descmap .t313 type int offset 84 (d->offset=84 start=0) returns -1
+descmap err type string offset 88 (d->offset=88 start=0) returns 88
+descmap .b314 type big offset 96 (d->offset=96 start=0) returns -1
+descmap e type string offset 104 (d->offset=104 start=0) returns 104
+descmap .t315 type string offset 112 (d->offset=112 start=0) returns 112
+fncom: whatisit 2 6e9750
+ecom: 
+used int 10 2
+  call int 10 2
+    -> fn(s: string, nil: string, *): int 12 1
+      name sys Sys 1 0
+      name print nothing 11 1
+    seq no type 10 2
+      const %s
+ string 1 0
+      seq no type 10 2
+        call string 10 2
+          name cmd2string fn(n: ref Node): string 11 1
+          seq no type 10 1
+            * ref Node 8 0
+              name el ref Listnode 0 0
+ecom: 
+call int 10 2
+  -> fn(s: string, nil: string, *): int 12 1
+    name sys Sys 1 0
+    name print nothing 11 1
+  seq no type 10 2
+    const %s
+ string 1 0
+    seq no type 10 2
+      call string 10 2
+        name cmd2string fn(n: ref Node): string 11 1
+        seq no type 10 1
+          * ref Node 8 0
+            name el ref Listnode 0 0
+ecom to: 
+name .t316 int 0 0
+generate desc for Sys->print
+descmap offset 0
+descmap s type string offset 64 (d->offset=64 start=0) returns 64
+descmap type string offset 72 returns 72
+generate desc for big
+ecom: 
+call string 10 2
+  name cmd2string fn(n: ref Node): string 11 1
+  seq no type 10 1
+    * ref Node 8 0
+      name el ref Listnode 0 0
+ecom to: 
+name .t318 string 0 0
+generate desc for big
+ecom: 
+* ref Node 8 0
+  name el ref Listnode 0 0
+ecom to: 
+* ref Node 8 0
+  + int 15 0
+    name .b319 big 0 0
+    const (64) int 6 0
+ecom: 
+const %s
+ string 1 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b317 big 0 0
+    const (64) int 6 0
+ecom: 
+name .t318 string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b317 big 0 0
+    const (72) int 6 0
+ecom: 
+= string 10 1
+  name .t318 string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name .t318 string 0 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* polymorphic type 8 0
+  name .ret int 0 0
+ecom: 
+= int 10 1
+  name found int 0 0
+  const (0) int 6 0
+ecom: 
+const (0) int 6 0
+ecom to: 
+name found int 0 0
+ecom: 
+= string 10 1
+  name name string 0 0
+  * string 8 0
+    + int 15 1
+      name el ref Listnode 0 0
+      const word (8) int 6 0
+ecom: 
+* string 8 0
+  + int 15 1
+    name el ref Listnode 0 0
+    const word (8) int 6 0
+ecom to: 
+name name string 0 0
+eacom: 
+inds int 10 1
+  name name string 0 0
+  const (0) int 6 0
+ecom: 
+inds int 10 1
+  name name string 0 0
+  const (0) int 6 0
+ecom to: 
+name .t316 int 0 0
+ecom: 
+used int 10 2
+  call int 10 2
+    -> fn(s: string, nil: string, *): int 12 1
+      name sys Sys 1 0
+      name print nothing 11 1
+    seq no type 10 1
+      const %s
+ string 1 0
+      seq no type 10 1
+        name name string 0 0
+ecom: 
+call int 10 2
+  -> fn(s: string, nil: string, *): int 12 1
+    name sys Sys 1 0
+    name print nothing 11 1
+  seq no type 10 1
+    const %s
+ string 1 0
+    seq no type 10 1
+      name name string 0 0
+ecom to: 
+name .t316 int 0 0
+generate desc for Sys->print
+descmap offset 0
+descmap s type string offset 64 (d->offset=64 start=0) returns 64
+descmap type string offset 72 returns 72
+generate desc for big
+ecom: 
+const %s
+ string 1 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b319 big 0 0
+    const (64) int 6 0
+ecom: 
+name name string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b319 big 0 0
+    const (72) int 6 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* polymorphic type 8 0
+  name .ret int 0 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* polymorphic type 8 0
+  name .ret int 0 0
+ecom: 
+= list of ref Listnode 10 2
+  name val list of ref Listnode 0 0
+  call list of ref Listnode 10 2
+    name get fn(ctxt: self ref Context, name: string): list of ref Listnode 11 1
+    seq nothing 10 1
+      name ctxt ref Context 0 0
+      seq no type 10 1
+        name name string 0 0
+ecom: 
+call list of ref Listnode 10 2
+  name get fn(ctxt: self ref Context, name: string): list of ref Listnode 11 1
+  seq nothing 10 1
+    name ctxt ref Context 0 0
+    seq no type 10 1
+      name name string 0 0
+ecom to: 
+name val list of ref Listnode 0 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b319 big 0 0
+    const (64) int 6 0
+ecom: 
+name name string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b319 big 0 0
+    const (72) int 6 0
+ecom: 
+++ int 10 1
+  name found int 0 0
+  const (1) int 6 0
+ecom: 
++= string 10 3
+  name w string 0 0
+  call string 10 3
+    -> fn(s: string, nil: string, nil: string, *): string 12 1
+      name sys Sys 1 0
+      name sprint nothing 11 1
+    seq no type 10 3
+      const %s=%s
+ string 1 0
+      seq no type 10 3
+        call string 10 2
+          name quote fn(s: string, glob: int): string 11 1
+          seq no type 10 1
+            name name string 0 0
+            seq no type 10 1
+              const (0) int 6 0
+        seq no type 10 2
+          call string 10 2
+            name quoted fn(val: list of ref Listnode, quoteblocks: int): string 11 1
+            seq no type 10 1
+              name val list of ref Listnode 0 0
+              seq no type 10 1
+                const (0) int 6 0
+eacom: 
+call string 10 3
+  -> fn(s: string, nil: string, nil: string, *): string 12 1
+    name sys Sys 1 0
+    name sprint nothing 11 1
+  seq no type 10 3
+    const %s=%s
+ string 1 0
+    seq no type 10 3
+      call string 10 2
+        name quote fn(s: string, glob: int): string 11 1
+        seq no type 10 1
+          name name string 0 0
+          seq no type 10 1
+            const (0) int 6 0
+      seq no type 10 2
+        call string 10 2
+          name quoted fn(val: list of ref Listnode, quoteblocks: int): string 11 1
+          seq no type 10 1
+            name val list of ref Listnode 0 0
+            seq no type 10 1
+              const (0) int 6 0
+ecom: 
+call string 10 3
+  -> fn(s: string, nil: string, nil: string, *): string 12 1
+    name sys Sys 1 0
+    name sprint nothing 11 1
+  seq no type 10 3
+    const %s=%s
+ string 1 0
+    seq no type 10 3
+      call string 10 2
+        name quote fn(s: string, glob: int): string 11 1
+        seq no type 10 1
+          name name string 0 0
+          seq no type 10 1
+            const (0) int 6 0
+      seq no type 10 2
+        call string 10 2
+          name quoted fn(val: list of ref Listnode, quoteblocks: int): string 11 1
+          seq no type 10 1
+            name val list of ref Listnode 0 0
+            seq no type 10 1
+              const (0) int 6 0
+ecom to: 
+name .t318 string 0 0
+generate desc for Sys->sprint
+descmap offset 0
+descmap s type string offset 64 (d->offset=64 start=0) returns 64
+descmap type string offset 72 returns 72
+descmap type string offset 80 returns 80
+generate desc for big
+ecom: 
+call string 10 2
+  name quote fn(s: string, glob: int): string 11 1
+  seq no type 10 1
+    name name string 0 0
+    seq no type 10 1
+      const (0) int 6 0
+ecom to: 
+name .t320 string 0 0
+generate desc for big
+ecom: 
+name name string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b317 big 0 0
+    const (64) int 6 0
+ecom: 
+const (0) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b317 big 0 0
+    const (72) int 6 0
+ecom: 
+call string 10 2
+  name quoted fn(val: list of ref Listnode, quoteblocks: int): string 11 1
+  seq no type 10 1
+    name val list of ref Listnode 0 0
+    seq no type 10 1
+      const (0) int 6 0
+ecom to: 
+name .t321 string 0 0
+generate desc for big
+ecom: 
+name val list of ref Listnode 0 0
+ecom to: 
+* list of ref Listnode 8 0
+  + int 15 0
+    name .b317 big 0 0
+    const (64) int 6 0
+ecom: 
+const (0) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b317 big 0 0
+    const (72) int 6 0
+ecom: 
+const %s=%s
+ string 1 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b319 big 0 0
+    const (64) int 6 0
+ecom: 
+name .t320 string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b319 big 0 0
+    const (72) int 6 0
+ecom: 
+= string 10 1
+  name .t320 string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name .t320 string 0 0
+ecom: 
+name .t321 string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b319 big 0 0
+    const (80) int 6 0
+ecom: 
+= string 10 1
+  name .t321 string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name .t321 string 0 0
+ecom: 
+= string 10 1
+  name .t318 string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name .t318 string 0 0
+ecom: 
+= (int, list of Shellbuiltin) 10 2
+  tuple (int, list of Shellbuiltin) 10 1
+    seq nothing 10 1
+      name nil polymorphic type 1 0
+      seq nothing 10 1
+        name mods list of Shellbuiltin 0 0
+  call (int, list of Shellbuiltin) 10 2
+    name findbuiltin fn(b: ref Builtins, name: string): (int, list of Shellbuiltin) 11 1
+    seq no type 10 2
+      * ref Builtins 10 1
+        * ref Environment 8 0
+          name ctxt ref Context 0 0
+      seq no type 10 1
+        name name string 0 0
+generate desc for (int, list of Shellbuiltin)
+ecom: 
+call (int, list of Shellbuiltin) 10 2
+  name findbuiltin fn(b: ref Builtins, name: string): (int, list of Shellbuiltin) 11 1
+  seq no type 10 2
+    * ref Builtins 10 1
+      * ref Environment 8 0
+        name ctxt ref Context 0 0
+    seq no type 10 1
+      name name string 0 0
+ecom to: 
+name .b322 (int, list of Shellbuiltin) 0 0
+generate desc for big
+ecom: 
+* ref Builtins 10 1
+  * ref Environment 8 0
+    name ctxt ref Context 0 0
+ecom to: 
+* ref Builtins 8 0
+  + int 15 0
+    name .b319 big 0 0
+    const (64) int 6 0
+eacom: 
+* ref Builtins 10 1
+  * ref Environment 8 0
+    name ctxt ref Context 0 0
+ecom: 
+* ref Environment 8 0
+  name ctxt ref Context 0 0
+ecom to: 
+name .t321 ref Environment 0 0
+ecom: 
+= ref Environment 10 1
+  name .t321 ref Environment 0 0
+  name nil ref Environment 1 0
+ecom: 
+name nil ref Environment 1 0
+ecom to: 
+name .t321 ref Environment 0 0
+ecom: 
+name name string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b319 big 0 0
+    const (72) int 6 0
+ecom: 
+= list of Shellbuiltin 10 1
+  * list of Shellbuiltin 0 0
+    + int 13 1
+      adr int 13 1
+        name .b322 (int, list of Shellbuiltin) 0 0
+      const t1 (8) int 6 0
+  name nil list of Shellbuiltin 1 0
+ecom: 
+name nil list of Shellbuiltin 1 0
+ecom to: 
+* list of Shellbuiltin 0 0
+  + int 13 1
+    adr int 13 1
+      name .b322 (int, list of Shellbuiltin) 0 0
+    const t1 (8) int 6 0
+ecom: 
+= Shellbuiltin 10 1
+  name mod Shellbuiltin 0 0
+  hd Shellbuiltin 10 1
+    name mods list of Shellbuiltin 0 0
+ecom: 
+hd Shellbuiltin 10 1
+  name mods list of Shellbuiltin 0 0
+ecom to: 
+name mod Shellbuiltin 0 0
+ecom: 
++= string 10 1
+  name w string 0 0
+  + string 10 1
+    + string 10 1
+      const ${builtin  string 1 0
+      name name string 0 0
+    const }
+ string 1 0
+eacom: 
++ string 10 1
+  + string 10 1
+    const ${builtin  string 1 0
+    name name string 0 0
+  const }
+ string 1 0
+ecom: 
++ string 10 1
+  + string 10 1
+    const ${builtin  string 1 0
+    name name string 0 0
+  const }
+ string 1 0
+ecom to: 
+name .t321 string 0 0
+ecom: 
++ string 10 1
+  const ${builtin  string 1 0
+  name name string 0 0
+ecom to: 
+name .t321 string 0 0
+ecom: 
+= string 10 1
+  name .t321 string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name .t321 string 0 0
+ecom: 
+= string 10 2
+  name mw string 0 0
+  call string 10 2
+    -> fn(c: ref Context, sh: Sh, name: string, wtype: int): string 12 1
+      name mod Shellbuiltin 0 0
+      name whatis nothing 11 1
+    seq no type 10 1
+      name ctxt ref Context 0 0
+      seq no type 10 1
+        name myself Sh 1 0
+        seq no type 10 1
+          name name string 0 0
+          seq no type 10 1
+            const SBUILTIN (1) int 6 0
+ecom: 
+call string 10 2
+  -> fn(c: ref Context, sh: Sh, name: string, wtype: int): string 12 1
+    name mod Shellbuiltin 0 0
+    name whatis nothing 11 1
+  seq no type 10 1
+    name ctxt ref Context 0 0
+    seq no type 10 1
+      name myself Sh 1 0
+      seq no type 10 1
+        name name string 0 0
+        seq no type 10 1
+          const SBUILTIN (1) int 6 0
+ecom to: 
+name mw string 0 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b319 big 0 0
+    const (64) int 6 0
+ecom: 
+name myself Sh 1 0
+ecom to: 
+* Sh 8 0
+  + int 15 0
+    name .b319 big 0 0
+    const (72) int 6 0
+ecom: 
+name name string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b319 big 0 0
+    const (80) int 6 0
+ecom: 
+const SBUILTIN (1) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b319 big 0 0
+    const (88) int 6 0
+ecom: 
+= string 10 1
+  name mw string 0 0
+  + string 10 1
+    + string 10 1
+      const ${ string 1 0
+      name name string 0 0
+    const } string 1 0
+ecom: 
++ string 10 1
+  + string 10 1
+    const ${ string 1 0
+    name name string 0 0
+  const } string 1 0
+ecom to: 
+name mw string 0 0
+ecom: 
++ string 10 1
+  const ${ string 1 0
+  name name string 0 0
+ecom to: 
+name .t321 string 0 0
+ecom: 
+= string 10 1
+  name .t321 string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name .t321 string 0 0
+ecom: 
++= string 10 2
+  name w string 0 0
+  + string 10 2
+    + string 10 2
+      + string 10 2
+        + string 10 2
+          const load  string 1 0
+          call string 10 2
+            name modname fn(ctxt: ref Context, mod: Shellbuiltin): string 11 1
+            seq no type 10 1
+              name ctxt ref Context 0 0
+              seq no type 10 1
+                name mod Shellbuiltin 0 0
+        const ;  string 1 0
+      name mw string 0 0
+    const 
+ string 1 0
+eacom: 
++ string 10 2
+  + string 10 2
+    + string 10 2
+      + string 10 2
+        const load  string 1 0
+        call string 10 2
+          name modname fn(ctxt: ref Context, mod: Shellbuiltin): string 11 1
+          seq no type 10 1
+            name ctxt ref Context 0 0
+            seq no type 10 1
+              name mod Shellbuiltin 0 0
+      const ;  string 1 0
+    name mw string 0 0
+  const 
+ string 1 0
+ecom: 
++ string 10 2
+  + string 10 2
+    + string 10 2
+      + string 10 2
+        const load  string 1 0
+        call string 10 2
+          name modname fn(ctxt: ref Context, mod: Shellbuiltin): string 11 1
+          seq no type 10 1
+            name ctxt ref Context 0 0
+            seq no type 10 1
+              name mod Shellbuiltin 0 0
+      const ;  string 1 0
+    name mw string 0 0
+  const 
+ string 1 0
+ecom to: 
+name .t321 string 0 0
+ecom: 
++ string 10 2
+  + string 10 2
+    + string 10 2
+      const load  string 1 0
+      call string 10 2
+        name modname fn(ctxt: ref Context, mod: Shellbuiltin): string 11 1
+        seq no type 10 1
+          name ctxt ref Context 0 0
+          seq no type 10 1
+            name mod Shellbuiltin 0 0
+    const ;  string 1 0
+  name mw string 0 0
+ecom to: 
+name .t321 string 0 0
+ecom: 
++ string 10 2
+  + string 10 2
+    const load  string 1 0
+    call string 10 2
+      name modname fn(ctxt: ref Context, mod: Shellbuiltin): string 11 1
+      seq no type 10 1
+        name ctxt ref Context 0 0
+        seq no type 10 1
+          name mod Shellbuiltin 0 0
+  const ;  string 1 0
+ecom to: 
+name .t321 string 0 0
+ecom: 
++ string 10 2
+  const load  string 1 0
+  call string 10 2
+    name modname fn(ctxt: ref Context, mod: Shellbuiltin): string 11 1
+    seq no type 10 1
+      name ctxt ref Context 0 0
+      seq no type 10 1
+        name mod Shellbuiltin 0 0
+ecom to: 
+name .t321 string 0 0
+eacom: 
+call string 10 2
+  name modname fn(ctxt: ref Context, mod: Shellbuiltin): string 11 1
+  seq no type 10 1
+    name ctxt ref Context 0 0
+    seq no type 10 1
+      name mod Shellbuiltin 0 0
+ecom: 
+call string 10 2
+  name modname fn(ctxt: ref Context, mod: Shellbuiltin): string 11 1
+  seq no type 10 1
+    name ctxt ref Context 0 0
+    seq no type 10 1
+      name mod Shellbuiltin 0 0
+ecom to: 
+name .t321 string 0 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b319 big 0 0
+    const (64) int 6 0
+ecom: 
+name mod Shellbuiltin 0 0
+ecom to: 
+* Shellbuiltin 8 0
+  + int 15 0
+    name .b319 big 0 0
+    const (72) int 6 0
+ecom: 
+= string 10 1
+  name .t321 string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name .t321 string 0 0
+ecom: 
+= string 10 1
+  name mw string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name mw string 0 0
+ecom: 
+++ int 10 1
+  name found int 0 0
+  const (1) int 6 0
+ecom: 
+= Shellbuiltin 10 1
+  name mod Shellbuiltin 0 0
+  name nil Shellbuiltin 1 0
+ecom: 
+name nil Shellbuiltin 1 0
+ecom to: 
+name mod Shellbuiltin 0 0
+ecom: 
+= (int, list of Shellbuiltin) 10 2
+  tuple (int, list of Shellbuiltin) 10 1
+    seq no type 10 1
+      name nil polymorphic type 1 0
+      seq no type 10 1
+        name mods list of Shellbuiltin 0 0
+  call (int, list of Shellbuiltin) 10 2
+    name findbuiltin fn(b: ref Builtins, name: string): (int, list of Shellbuiltin) 11 1
+    seq no type 10 2
+      * ref Builtins 10 1
+        + int 10 1
+          * ref Environment 8 0
+            name ctxt ref Context 0 0
+          const builtins (8) int 6 0
+      seq no type 10 1
+        name name string 0 0
+generate desc for (int, list of Shellbuiltin)
+ecom: 
+call (int, list of Shellbuiltin) 10 2
+  name findbuiltin fn(b: ref Builtins, name: string): (int, list of Shellbuiltin) 11 1
+  seq no type 10 2
+    * ref Builtins 10 1
+      + int 10 1
+        * ref Environment 8 0
+          name ctxt ref Context 0 0
+        const builtins (8) int 6 0
+    seq no type 10 1
+      name name string 0 0
+ecom to: 
+name .b322 (int, list of Shellbuiltin) 0 0
+generate desc for big
+ecom: 
+* ref Builtins 10 1
+  + int 10 1
+    * ref Environment 8 0
+      name ctxt ref Context 0 0
+    const builtins (8) int 6 0
+ecom to: 
+* ref Builtins 8 0
+  + int 15 0
+    name .b319 big 0 0
+    const (64) int 6 0
+eacom: 
+* ref Builtins 10 1
+  + int 10 1
+    * ref Environment 8 0
+      name ctxt ref Context 0 0
+    const builtins (8) int 6 0
+ecom: 
+* ref Environment 8 0
+  name ctxt ref Context 0 0
+ecom to: 
+name .t321 ref Environment 0 0
+ecom: 
+= ref Environment 10 1
+  name .t321 ref Environment 0 0
+  name nil ref Environment 1 0
+ecom: 
+name nil ref Environment 1 0
+ecom to: 
+name .t321 ref Environment 0 0
+ecom: 
+name name string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b319 big 0 0
+    const (72) int 6 0
+ecom: 
+= list of Shellbuiltin 10 1
+  * list of Shellbuiltin 0 0
+    + int 13 1
+      adr int 13 1
+        name .b322 (int, list of Shellbuiltin) 0 0
+      const t1 (8) int 6 0
+  name nil list of Shellbuiltin 1 0
+ecom: 
+name nil list of Shellbuiltin 1 0
+ecom to: 
+* list of Shellbuiltin 0 0
+  + int 13 1
+    adr int 13 1
+      name .b322 (int, list of Shellbuiltin) 0 0
+    const t1 (8) int 6 0
+ecom: 
+= Shellbuiltin 10 1
+  name mod Shellbuiltin 0 0
+  hd Shellbuiltin 10 1
+    name mods list of Shellbuiltin 0 0
+ecom: 
+hd Shellbuiltin 10 1
+  name mods list of Shellbuiltin 0 0
+ecom to: 
+name mod Shellbuiltin 0 0
+ecom: 
+used int 10 2
+  call int 10 2
+    -> fn(s: string, nil: string, *): int 12 1
+      name sys Sys 1 0
+      name print nothing 11 1
+    seq no type 10 1
+      const builtin %s
+ string 1 0
+      seq no type 10 1
+        name name string 0 0
+ecom: 
+call int 10 2
+  -> fn(s: string, nil: string, *): int 12 1
+    name sys Sys 1 0
+    name print nothing 11 1
+  seq no type 10 1
+    const builtin %s
+ string 1 0
+    seq no type 10 1
+      name name string 0 0
+ecom to: 
+name .t316 int 0 0
+generate desc for Sys->print
+descmap offset 0
+descmap s type string offset 64 (d->offset=64 start=0) returns 64
+descmap type string offset 72 returns 72
+generate desc for big
+ecom: 
+const builtin %s
+ string 1 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b319 big 0 0
+    const (64) int 6 0
+ecom: 
+name name string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b319 big 0 0
+    const (72) int 6 0
+ecom: 
+= string 10 2
+  name mw string 0 0
+  call string 10 2
+    -> fn(c: ref Context, sh: Sh, name: string, wtype: int): string 12 1
+      name mod Shellbuiltin 0 0
+      name whatis nothing 11 1
+    seq no type 10 1
+      name ctxt ref Context 0 0
+      seq no type 10 1
+        name myself Sh 1 0
+        seq no type 10 1
+          name name string 0 0
+          seq no type 10 1
+            const BUILTIN (0) int 6 0
+ecom: 
+call string 10 2
+  -> fn(c: ref Context, sh: Sh, name: string, wtype: int): string 12 1
+    name mod Shellbuiltin 0 0
+    name whatis nothing 11 1
+  seq no type 10 1
+    name ctxt ref Context 0 0
+    seq no type 10 1
+      name myself Sh 1 0
+      seq no type 10 1
+        name name string 0 0
+        seq no type 10 1
+          const BUILTIN (0) int 6 0
+ecom to: 
+name mw string 0 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b319 big 0 0
+    const (64) int 6 0
+ecom: 
+name myself Sh 1 0
+ecom to: 
+* Sh 8 0
+  + int 15 0
+    name .b319 big 0 0
+    const (72) int 6 0
+ecom: 
+name name string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b319 big 0 0
+    const (80) int 6 0
+ecom: 
+const BUILTIN (0) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b319 big 0 0
+    const (88) int 6 0
+ecom: 
+= string 10 1
+  name mw string 0 0
+  name name string 0 0
+ecom: 
+name name string 0 0
+ecom to: 
+name mw string 0 0
+ecom: 
++= string 10 2
+  name w string 0 0
+  + string 10 2
+    + string 10 2
+      + string 10 2
+        + string 10 2
+          const load  string 1 0
+          call string 10 2
+            name modname fn(ctxt: ref Context, mod: Shellbuiltin): string 11 1
+            seq no type 10 1
+              name ctxt ref Context 0 0
+              seq no type 10 1
+                name mod Shellbuiltin 0 0
+        const ;  string 1 0
+      name mw string 0 0
+    const 
+ string 1 0
+eacom: 
++ string 10 2
+  + string 10 2
+    + string 10 2
+      + string 10 2
+        const load  string 1 0
+        call string 10 2
+          name modname fn(ctxt: ref Context, mod: Shellbuiltin): string 11 1
+          seq no type 10 1
+            name ctxt ref Context 0 0
+            seq no type 10 1
+              name mod Shellbuiltin 0 0
+      const ;  string 1 0
+    name mw string 0 0
+  const 
+ string 1 0
+ecom: 
++ string 10 2
+  + string 10 2
+    + string 10 2
+      + string 10 2
+        const load  string 1 0
+        call string 10 2
+          name modname fn(ctxt: ref Context, mod: Shellbuiltin): string 11 1
+          seq no type 10 1
+            name ctxt ref Context 0 0
+            seq no type 10 1
+              name mod Shellbuiltin 0 0
+      const ;  string 1 0
+    name mw string 0 0
+  const 
+ string 1 0
+ecom to: 
+name .t321 string 0 0
+ecom: 
++ string 10 2
+  + string 10 2
+    + string 10 2
+      const load  string 1 0
+      call string 10 2
+        name modname fn(ctxt: ref Context, mod: Shellbuiltin): string 11 1
+        seq no type 10 1
+          name ctxt ref Context 0 0
+          seq no type 10 1
+            name mod Shellbuiltin 0 0
+    const ;  string 1 0
+  name mw string 0 0
+ecom to: 
+name .t321 string 0 0
+ecom: 
++ string 10 2
+  + string 10 2
+    const load  string 1 0
+    call string 10 2
+      name modname fn(ctxt: ref Context, mod: Shellbuiltin): string 11 1
+      seq no type 10 1
+        name ctxt ref Context 0 0
+        seq no type 10 1
+          name mod Shellbuiltin 0 0
+  const ;  string 1 0
+ecom to: 
+name .t321 string 0 0
+ecom: 
++ string 10 2
+  const load  string 1 0
+  call string 10 2
+    name modname fn(ctxt: ref Context, mod: Shellbuiltin): string 11 1
+    seq no type 10 1
+      name ctxt ref Context 0 0
+      seq no type 10 1
+        name mod Shellbuiltin 0 0
+ecom to: 
+name .t321 string 0 0
+eacom: 
+call string 10 2
+  name modname fn(ctxt: ref Context, mod: Shellbuiltin): string 11 1
+  seq no type 10 1
+    name ctxt ref Context 0 0
+    seq no type 10 1
+      name mod Shellbuiltin 0 0
+ecom: 
+call string 10 2
+  name modname fn(ctxt: ref Context, mod: Shellbuiltin): string 11 1
+  seq no type 10 1
+    name ctxt ref Context 0 0
+    seq no type 10 1
+      name mod Shellbuiltin 0 0
+ecom to: 
+name .t321 string 0 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b319 big 0 0
+    const (64) int 6 0
+ecom: 
+name mod Shellbuiltin 0 0
+ecom to: 
+* Shellbuiltin 8 0
+  + int 15 0
+    name .b319 big 0 0
+    const (72) int 6 0
+ecom: 
+= string 10 1
+  name .t321 string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name .t321 string 0 0
+ecom: 
+= string 10 1
+  name mw string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name mw string 0 0
+ecom: 
+++ int 10 1
+  name found int 0 0
+  const (1) int 6 0
+ecom: 
+= Shellbuiltin 10 1
+  name mod Shellbuiltin 0 0
+  name nil Shellbuiltin 1 0
+ecom: 
+name nil Shellbuiltin 1 0
+ecom to: 
+name mod Shellbuiltin 0 0
+ecom: 
+= int 10 1
+  name disfile int 0 0
+  const (0) int 6 0
+ecom: 
+const (0) int 6 0
+ecom to: 
+name disfile int 0 0
+eacom: 
+len int 10 1
+  name name string 0 0
+ecom: 
+len int 10 1
+  name name string 0 0
+ecom to: 
+name .t316 int 0 0
+eacom: 
+slice string 10 2
+  name name string 0 0
+  seq no type 10 2
+    - int 10 1
+      len int 10 1
+        name name string 0 0
+      const (4) int 6 0
+    nothing no type 10 1
+ecom: 
+slice string 10 2
+  name name string 0 0
+  seq no type 10 2
+    - int 10 1
+      len int 10 1
+        name name string 0 0
+      const (4) int 6 0
+    nothing no type 10 1
+ecom to: 
+name .t321 string 0 0
+ecom: 
+len int 10 1
+  name name string 0 0
+ecom to: 
+name .t316 int 0 0
+eacom: 
+- int 10 1
+  len int 10 1
+    name name string 0 0
+  const (4) int 6 0
+ecom: 
+- int 10 1
+  len int 10 1
+    name name string 0 0
+  const (4) int 6 0
+ecom to: 
+name .t323 int 0 0
+ecom: 
+len int 10 1
+  name name string 0 0
+ecom to: 
+name .t323 int 0 0
+ecom: 
+name name string 0 0
+ecom to: 
+name .t321 string 0 0
+ecom: 
+= string 10 1
+  name .t321 string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name .t321 string 0 0
+ecom: 
+= int 10 1
+  name disfile int 0 0
+  const (1) int 6 0
+ecom: 
+const (1) int 6 0
+ecom to: 
+name disfile int 0 0
+eacom: 
+len int 10 1
+  name name string 0 0
+ecom: 
+len int 10 1
+  name name string 0 0
+ecom to: 
+name .t323 int 0 0
+eacom: 
+inds int 10 1
+  name name string 0 0
+  const (0) int 6 0
+ecom: 
+inds int 10 1
+  name name string 0 0
+  const (0) int 6 0
+ecom to: 
+name .t323 int 0 0
+eacom: 
+slice string 10 1
+  name name string 0 0
+  seq no type 10 1
+    const (0) int 6 0
+    const (2) int 6 0
+ecom: 
+slice string 10 1
+  name name string 0 0
+  seq no type 10 1
+    const (0) int 6 0
+    const (2) int 6 0
+ecom to: 
+name .t321 string 0 0
+ecom: 
+name name string 0 0
+ecom to: 
+name .t321 string 0 0
+ecom: 
+= string 10 1
+  name .t321 string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name .t321 string 0 0
+ecom: 
+= list of string 10 1
+  name pathlist list of string 0 0
+  :: list of string 10 1
+    const  string 1 0
+    name nil polymorphic type 1 0
+ecom: 
+:: list of string 10 1
+  const  string 1 0
+  name nil polymorphic type 1 0
+ecom to: 
+name pathlist list of string 0 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+name .t321 list of string 0 0
+ecom: 
+= list of string 10 1
+  name .t321 list of string 0 0
+  name nil list of string 1 0
+ecom: 
+name nil list of string 1 0
+ecom to: 
+name .t321 list of string 0 0
+eacom: 
+= list of ref Listnode 10 2
+  name pl list of ref Listnode 0 0
+    vardecl list of string 10 1
+      seq nothing 10 1
+  call list of ref Listnode 10 2
+    name get fn(ctxt: self ref Context, name: string): list of ref Listnode 11 1
+    seq nothing 10 1
+      name ctxt ref Context 0 0
+      seq no type 10 1
+        const path string 1 0
+ecom: 
+= list of ref Listnode 10 2
+  name pl list of ref Listnode 0 0
+    vardecl list of string 10 1
+      seq nothing 10 1
+  call list of ref Listnode 10 2
+    name get fn(ctxt: self ref Context, name: string): list of ref Listnode 11 1
+    seq nothing 10 1
+      name ctxt ref Context 0 0
+      seq no type 10 1
+        const path string 1 0
+ecom to: 
+name .t321 list of ref Listnode 0 0
+ecom: 
+call list of ref Listnode 10 2
+  name get fn(ctxt: self ref Context, name: string): list of ref Listnode 11 1
+  seq nothing 10 1
+    name ctxt ref Context 0 0
+    seq no type 10 1
+      const path string 1 0
+ecom to: 
+name pl list of ref Listnode 0 0
+  vardecl list of string 10 1
+    seq nothing 10 1
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b319 big 0 0
+    const (64) int 6 0
+ecom: 
+const path string 1 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b319 big 0 0
+    const (72) int 6 0
+ecom: 
+= list of ref Listnode 10 1
+  name .t321 list of ref Listnode 0 0
+  name nil list of ref Listnode 1 0
+ecom: 
+name nil list of ref Listnode 1 0
+ecom to: 
+name .t321 list of ref Listnode 0 0
+ecom: 
+= list of string 10 2
+  name pathlist list of string 0 0
+  call list of string 10 2
+    name list2stringlist fn(nl: list of ref Listnode): list of string 11 1
+    seq no type 10 1
+      name pl list of ref Listnode 0 0
+ecom: 
+call list of string 10 2
+  name list2stringlist fn(nl: list of ref Listnode): list of string 11 1
+  seq no type 10 1
+    name pl list of ref Listnode 0 0
+ecom to: 
+name pathlist list of string 0 0
+generate desc for big
+ecom: 
+name pl list of ref Listnode 0 0
+ecom to: 
+* list of ref Listnode 8 0
+  + int 15 0
+    name .b319 big 0 0
+    const (64) int 6 0
+ecom: 
+= list of string 10 1
+  name pathlist list of string 0 0
+  :: list of string 10 1
+    const /dis string 1 0
+    :: list of string 10 1
+      const . string 1 0
+      name nil polymorphic type 1 0
+ecom: 
+:: list of string 10 1
+  const /dis string 1 0
+  :: list of string 10 1
+    const . string 1 0
+    name nil polymorphic type 1 0
+ecom to: 
+name pathlist list of string 0 0
+ecom: 
+:: list of string 10 1
+  const . string 1 0
+  name nil polymorphic type 1 0
+ecom to: 
+name .t321 list of string 0 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+name .t321 list of string 0 0
+ecom: 
+= list of string 10 1
+  name .t321 list of string 0 0
+  name nil list of string 1 0
+ecom: 
+name nil list of string 1 0
+ecom to: 
+name .t321 list of string 0 0
+ecom: 
+= string 10 1
+  name foundpath string 0 0
+    name pl list of ref Listnode 0 0
+      vardecl list of string 10 1
+        seq nothing 10 1
+  const  string 1 0
+ecom: 
+const  string 1 0
+ecom to: 
+name foundpath string 0 0
+  name pl list of ref Listnode 0 0
+    vardecl list of string 10 1
+      seq nothing 10 1
+eacom: 
+hd string 10 1
+  name pathlist list of string 0 0
+ecom: 
+hd string 10 1
+  name pathlist list of string 0 0
+ecom to: 
+name .t321 string 0 0
+ecom: 
+= string 10 1
+  name .t321 string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name .t321 string 0 0
+ecom: 
+= string 10 1
+  name path string 0 0
+  + string 10 1
+    + string 10 1
+      hd string 10 1
+        name pathlist list of string 0 0
+      const / string 1 0
+    name name string 0 0
+ecom: 
++ string 10 1
+  + string 10 1
+    hd string 10 1
+      name pathlist list of string 0 0
+    const / string 1 0
+  name name string 0 0
+ecom to: 
+name path string 0 0
+ecom: 
++ string 10 1
+  hd string 10 1
+    name pathlist list of string 0 0
+  const / string 1 0
+ecom to: 
+name .t321 string 0 0
+ecom: 
+hd string 10 1
+  name pathlist list of string 0 0
+ecom to: 
+name .t321 string 0 0
+ecom: 
+= string 10 1
+  name .t321 string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name .t321 string 0 0
+ecom: 
+= string 10 1
+  name path string 0 0
+  name name string 0 0
+ecom: 
+name name string 0 0
+ecom to: 
+name path string 0 0
+eacom: 
+= ref Sys->FD 10 2
+  name fd ref Sys->FD 0 0
+    vardecl string 10 1
+      seq nothing 10 1
+  call ref Sys->FD 10 2
+    -> fn(s: string, mode: int): ref Sys->FD 12 1
+      name sys Sys 1 0
+      name open nothing 11 1
+    seq no type 10 1
+      name path string 0 0
+      seq no type 10 1
+        const OREAD (0) int 6 0
+ecom: 
+= ref Sys->FD 10 2
+  name fd ref Sys->FD 0 0
+    vardecl string 10 1
+      seq nothing 10 1
+  call ref Sys->FD 10 2
+    -> fn(s: string, mode: int): ref Sys->FD 12 1
+      name sys Sys 1 0
+      name open nothing 11 1
+    seq no type 10 1
+      name path string 0 0
+      seq no type 10 1
+        const OREAD (0) int 6 0
+ecom to: 
+name .t321 ref Sys->FD 0 0
+ecom: 
+call ref Sys->FD 10 2
+  -> fn(s: string, mode: int): ref Sys->FD 12 1
+    name sys Sys 1 0
+    name open nothing 11 1
+  seq no type 10 1
+    name path string 0 0
+    seq no type 10 1
+      const OREAD (0) int 6 0
+ecom to: 
+name fd ref Sys->FD 0 0
+  vardecl string 10 1
+    seq nothing 10 1
+generate desc for big
+ecom: 
+name path string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b319 big 0 0
+    const (64) int 6 0
+ecom: 
+const OREAD (0) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b319 big 0 0
+    const (72) int 6 0
+ecom: 
+= ref Sys->FD 10 1
+  name .t321 ref Sys->FD 0 0
+  name nil ref Sys->FD 1 0
+ecom: 
+name nil ref Sys->FD 1 0
+ecom to: 
+name .t321 ref Sys->FD 0 0
+eacom: 
+call int 10 2
+  name executable fn(s: (int, Sys->Dir), mode: int): int 11 1
+  seq no type 10 2
+    call (int, Sys->Dir) 10 2
+      -> fn(fd: ref Sys->FD): (int, Sys->Dir) 12 1
+        name sys Sys 1 0
+        name fstat nothing 11 1
+      seq no type 10 1
+        name fd ref Sys->FD 0 0
+    seq no type 10 1
+      const (73) int 6 0
+ecom: 
+call int 10 2
+  name executable fn(s: (int, Sys->Dir), mode: int): int 11 1
+  seq no type 10 2
+    call (int, Sys->Dir) 10 2
+      -> fn(fd: ref Sys->FD): (int, Sys->Dir) 12 1
+        name sys Sys 1 0
+        name fstat nothing 11 1
+      seq no type 10 1
+        name fd ref Sys->FD 0 0
+    seq no type 10 1
+      const (73) int 6 0
+ecom to: 
+name .t323 int 0 0
+generate desc for big
+generate desc for (int, Sys->Dir)
+descmap adt offset 0
+descmap offset 0
+descmap t0 type int offset 0 (d->offset=0 start=0) returns -1
+descmap adt offset 8
+descmap offset 8
+descmap name type string offset 8 (d->offset=0 start=8) returns 8
+descmap uid type string offset 16 (d->offset=8 start=8) returns 16
+descmap gid type string offset 24 (d->offset=16 start=8) returns 24
+descmap muid type string offset 32 (d->offset=24 start=8) returns 32
+descmap adt offset 40
+descmap offset 40
+descmap path type big offset 40 (d->offset=0 start=40) returns -1
+descmap vers type int offset 48 (d->offset=8 start=40) returns -1
+descmap qtype type int offset 52 (d->offset=12 start=40) returns -1
+descmap qid type Sys->Qid offset 40 (d->offset=32 start=8) returns -1
+descmap mode type int offset 56 (d->offset=48 start=8) returns -1
+descmap atime type int offset 60 (d->offset=52 start=8) returns -1
+descmap mtime type int offset 64 (d->offset=56 start=8) returns -1
+descmap length type big offset 72 (d->offset=64 start=8) returns -1
+descmap dtype type int offset 80 (d->offset=72 start=8) returns -1
+descmap dev type int offset 84 (d->offset=76 start=8) returns -1
+descmap t1 type Sys->Dir offset 8 (d->offset=8 start=0) returns 32
+generate desc for (int, Sys->Dir)
+	desc	$-1,88,"78"
+ecom: 
+call (int, Sys->Dir) 10 2
+  -> fn(fd: ref Sys->FD): (int, Sys->Dir) 12 1
+    name sys Sys 1 0
+    name fstat nothing 11 1
+  seq no type 10 1
+    name fd ref Sys->FD 0 0
+ecom to: 
+name .b324 (int, Sys->Dir) 0 0
+generate desc for big
+ecom: 
+name fd ref Sys->FD 0 0
+ecom to: 
+* ref Sys->FD 8 0
+  + int 15 0
+    name .b317 big 0 0
+    const (64) int 6 0
+ecom: 
+name .b324 (int, Sys->Dir) 0 0
+ecom to: 
+* (int, Sys->Dir) 8 0
+  + int 15 0
+    name .b319 big 0 0
+    const (64) int 6 0
+generate desc for (int, Sys->Dir)
+ecom: 
+= string 10 1
+  * string 0 0
+    + int 13 1
+      adr int 13 1
+        name .b324 (int, Sys->Dir) 0 0
+      const (8) int 6 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+* string 0 0
+  + int 13 1
+    adr int 13 1
+      name .b324 (int, Sys->Dir) 0 0
+    const (8) int 6 0
+ecom: 
+= string 10 1
+  * string 0 0
+    + int 13 1
+      adr int 13 1
+        name .b324 (int, Sys->Dir) 0 0
+      const (16) int 6 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+* string 0 0
+  + int 13 1
+    adr int 13 1
+      name .b324 (int, Sys->Dir) 0 0
+    const (16) int 6 0
+ecom: 
+= string 10 1
+  * string 0 0
+    + int 13 1
+      adr int 13 1
+        name .b324 (int, Sys->Dir) 0 0
+      const (24) int 6 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+* string 0 0
+  + int 13 1
+    adr int 13 1
+      name .b324 (int, Sys->Dir) 0 0
+    const (24) int 6 0
+ecom: 
+= string 10 1
+  * string 0 0
+    + int 13 1
+      adr int 13 1
+        name .b324 (int, Sys->Dir) 0 0
+      const (32) int 6 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+* string 0 0
+  + int 13 1
+    adr int 13 1
+      name .b324 (int, Sys->Dir) 0 0
+    const (32) int 6 0
+ecom: 
+const (73) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b319 big 0 0
+    const (152) int 6 0
+ecom: 
+= string 10 1
+  name foundpath string 0 0
+  name path string 0 0
+ecom: 
+name path string 0 0
+ecom to: 
+name foundpath string 0 0
+ecom: 
+= ref Sys->FD 10 1
+  name fd ref Sys->FD 0 0
+  name nil ref Sys->FD 1 0
+ecom: 
+name nil ref Sys->FD 1 0
+ecom to: 
+name fd ref Sys->FD 0 0
+ecom: 
+= string 10 1
+  name path string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name path string 0 0
+ecom: 
++= string 10 1
+  name path string 0 0
+  const .dis string 1 0
+eacom: 
+call int 10 2
+  name executable fn(s: (int, Sys->Dir), mode: int): int 11 1
+  seq no type 10 2
+    call (int, Sys->Dir) 10 2
+      -> fn(s: string): (int, Sys->Dir) 12 1
+        name sys Sys 1 0
+        name stat nothing 11 1
+      seq no type 10 1
+        name path string 0 0
+    seq no type 10 1
+      const (292) int 6 0
+ecom: 
+call int 10 2
+  name executable fn(s: (int, Sys->Dir), mode: int): int 11 1
+  seq no type 10 2
+    call (int, Sys->Dir) 10 2
+      -> fn(s: string): (int, Sys->Dir) 12 1
+        name sys Sys 1 0
+        name stat nothing 11 1
+      seq no type 10 1
+        name path string 0 0
+    seq no type 10 1
+      const (292) int 6 0
+ecom to: 
+name .t323 int 0 0
+generate desc for big
+generate desc for (int, Sys->Dir)
+descmap adt offset 0
+descmap offset 0
+descmap t0 type int offset 0 (d->offset=0 start=0) returns -1
+descmap adt offset 8
+descmap offset 8
+descmap name type string offset 8 (d->offset=0 start=8) returns 8
+descmap uid type string offset 16 (d->offset=8 start=8) returns 16
+descmap gid type string offset 24 (d->offset=16 start=8) returns 24
+descmap muid type string offset 32 (d->offset=24 start=8) returns 32
+descmap adt offset 40
+descmap offset 40
+descmap path type big offset 40 (d->offset=0 start=40) returns -1
+descmap vers type int offset 48 (d->offset=8 start=40) returns -1
+descmap qtype type int offset 52 (d->offset=12 start=40) returns -1
+descmap qid type Sys->Qid offset 40 (d->offset=32 start=8) returns -1
+descmap mode type int offset 56 (d->offset=48 start=8) returns -1
+descmap atime type int offset 60 (d->offset=52 start=8) returns -1
+descmap mtime type int offset 64 (d->offset=56 start=8) returns -1
+descmap length type big offset 72 (d->offset=64 start=8) returns -1
+descmap dtype type int offset 80 (d->offset=72 start=8) returns -1
+descmap dev type int offset 84 (d->offset=76 start=8) returns -1
+descmap t1 type Sys->Dir offset 8 (d->offset=8 start=0) returns 32
+generate desc for (int, Sys->Dir)
+	desc	$-1,88,"78"
+ecom: 
+call (int, Sys->Dir) 10 2
+  -> fn(s: string): (int, Sys->Dir) 12 1
+    name sys Sys 1 0
+    name stat nothing 11 1
+  seq no type 10 1
+    name path string 0 0
+ecom to: 
+name .b324 (int, Sys->Dir) 0 0
+generate desc for big
+ecom: 
+name path string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b317 big 0 0
+    const (64) int 6 0
+ecom: 
+name .b324 (int, Sys->Dir) 0 0
+ecom to: 
+* (int, Sys->Dir) 8 0
+  + int 15 0
+    name .b319 big 0 0
+    const (64) int 6 0
+generate desc for (int, Sys->Dir)
+ecom: 
+= string 10 1
+  * string 0 0
+    + int 13 1
+      adr int 13 1
+        name .b324 (int, Sys->Dir) 0 0
+      const (8) int 6 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+* string 0 0
+  + int 13 1
+    adr int 13 1
+      name .b324 (int, Sys->Dir) 0 0
+    const (8) int 6 0
+ecom: 
+= string 10 1
+  * string 0 0
+    + int 13 1
+      adr int 13 1
+        name .b324 (int, Sys->Dir) 0 0
+      const (16) int 6 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+* string 0 0
+  + int 13 1
+    adr int 13 1
+      name .b324 (int, Sys->Dir) 0 0
+    const (16) int 6 0
+ecom: 
+= string 10 1
+  * string 0 0
+    + int 13 1
+      adr int 13 1
+        name .b324 (int, Sys->Dir) 0 0
+      const (24) int 6 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+* string 0 0
+  + int 13 1
+    adr int 13 1
+      name .b324 (int, Sys->Dir) 0 0
+    const (24) int 6 0
+ecom: 
+= string 10 1
+  * string 0 0
+    + int 13 1
+      adr int 13 1
+        name .b324 (int, Sys->Dir) 0 0
+      const (32) int 6 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+* string 0 0
+  + int 13 1
+    adr int 13 1
+      name .b324 (int, Sys->Dir) 0 0
+    const (32) int 6 0
+ecom: 
+const (292) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b319 big 0 0
+    const (152) int 6 0
+ecom: 
+= string 10 1
+  name foundpath string 0 0
+  name path string 0 0
+ecom: 
+name path string 0 0
+ecom to: 
+name foundpath string 0 0
+ecom: 
+= ref Sys->FD 10 1
+  name fd ref Sys->FD 0 0
+  name nil ref Sys->FD 1 0
+ecom: 
+name nil ref Sys->FD 1 0
+ecom to: 
+name fd ref Sys->FD 0 0
+ecom: 
+= string 10 1
+  name path string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name path string 0 0
+ecom: 
+= list of string 10 1
+  name pathlist list of string 0 0
+  tl list of string 10 1
+    name pathlist list of string 0 0
+ecom: 
+tl list of string 10 1
+  name pathlist list of string 0 0
+ecom to: 
+name pathlist list of string 0 0
+ecom: 
+= ref Sys->FD 10 1
+  name fd ref Sys->FD 0 0
+  name nil ref Sys->FD 1 0
+ecom: 
+name nil ref Sys->FD 1 0
+ecom to: 
+name fd ref Sys->FD 0 0
+ecom: 
+= string 10 1
+  name path string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name path string 0 0
+ecom: 
++= string 10 1
+  name w string 0 0
+  + string 10 1
+    name foundpath string 0 0
+    const 
+ string 1 0
+eacom: 
++ string 10 1
+  name foundpath string 0 0
+  const 
+ string 1 0
+ecom: 
++ string 10 1
+  name foundpath string 0 0
+  const 
+ string 1 0
+ecom to: 
+name .t321 string 0 0
+ecom: 
+= string 10 1
+  name .t321 string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name .t321 string 0 0
+ecom: 
+= string 10 1
+  name foundpath string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name foundpath string 0 0
+ecom: 
+= list of ref Listnode 10 1
+  name pl list of ref Listnode 0 0
+  name nil list of ref Listnode 1 0
+ecom: 
+name nil list of ref Listnode 1 0
+ecom to: 
+name pl list of ref Listnode 0 0
+ecom: 
+= list of string 10 1
+  name pathlist list of string 0 0
+  name nil list of string 1 0
+ecom: 
+name nil list of string 1 0
+ecom to: 
+name pathlist list of string 0 0
+ecom: 
+= list of (string, Shellbuiltin) 10 1
+  name bmods list of (string, Shellbuiltin) 0 0
+  * list of (string, Shellbuiltin) 10 1
+    + int 10 1
+      * ref Environment 8 0
+        name ctxt ref Context 0 0
+      const bmods (16) int 6 0
+ecom: 
+* list of (string, Shellbuiltin) 10 1
+  + int 10 1
+    * ref Environment 8 0
+      name ctxt ref Context 0 0
+    const bmods (16) int 6 0
+ecom to: 
+name bmods list of (string, Shellbuiltin) 0 0
+eacom: 
+* list of (string, Shellbuiltin) 10 1
+  + int 10 1
+    * ref Environment 8 0
+      name ctxt ref Context 0 0
+    const bmods (16) int 6 0
+ecom: 
+* ref Environment 8 0
+  name ctxt ref Context 0 0
+ecom to: 
+name .t321 ref Environment 0 0
+ecom: 
+= ref Environment 10 1
+  name .t321 ref Environment 0 0
+  name nil ref Environment 1 0
+ecom: 
+name nil ref Environment 1 0
+ecom to: 
+name .t321 ref Environment 0 0
+ecom: 
+= (string, Shellbuiltin) 10 2
+  tuple (string, Shellbuiltin) 10 1
+    seq nothing 10 1
+      name modname string 0 0
+      seq nothing 10 1
+        name mod Shellbuiltin 0 0
+  hd (string, Shellbuiltin) 10 1
+    name bmods list of (string, Shellbuiltin) 0 0
+ecom: 
+hd (string, Shellbuiltin) 10 1
+  name bmods list of (string, Shellbuiltin) 0 0
+ecom to: 
+name modname (string, Shellbuiltin) 0 0
+generate desc for (string, Shellbuiltin)
+eacom: 
+= string 10 2
+  name mw string 0 0
+    tuple (string, Shellbuiltin) 10 1
+      seq nothing 10 1
+        name modname (string, Shellbuiltin) 0 0
+        seq nothing 10 1
+          name mod Shellbuiltin 0 0
+  call string 10 2
+    -> fn(c: ref Context, sh: Sh, name: string, wtype: int): string 12 1
+      name mod Shellbuiltin 0 0
+      name whatis nothing 11 1
+    seq no type 10 1
+      name ctxt ref Context 0 0
+      seq no type 10 1
+        name myself Sh 1 0
+        seq no type 10 1
+          name name string 0 0
+          seq no type 10 1
+            const OTHER (2) int 6 0
+ecom: 
+= string 10 2
+  name mw string 0 0
+    tuple (string, Shellbuiltin) 10 1
+      seq nothing 10 1
+        name modname (string, Shellbuiltin) 0 0
+        seq nothing 10 1
+          name mod Shellbuiltin 0 0
+  call string 10 2
+    -> fn(c: ref Context, sh: Sh, name: string, wtype: int): string 12 1
+      name mod Shellbuiltin 0 0
+      name whatis nothing 11 1
+    seq no type 10 1
+      name ctxt ref Context 0 0
+      seq no type 10 1
+        name myself Sh 1 0
+        seq no type 10 1
+          name name string 0 0
+          seq no type 10 1
+            const OTHER (2) int 6 0
+ecom to: 
+name .t321 string 0 0
+ecom: 
+call string 10 2
+  -> fn(c: ref Context, sh: Sh, name: string, wtype: int): string 12 1
+    name mod Shellbuiltin 0 0
+    name whatis nothing 11 1
+  seq no type 10 1
+    name ctxt ref Context 0 0
+    seq no type 10 1
+      name myself Sh 1 0
+      seq no type 10 1
+        name name string 0 0
+        seq no type 10 1
+          const OTHER (2) int 6 0
+ecom to: 
+name mw string 0 0
+  tuple (string, Shellbuiltin) 10 1
+    seq nothing 10 1
+      name modname (string, Shellbuiltin) 0 0
+      seq nothing 10 1
+        name mod Shellbuiltin 0 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b319 big 0 0
+    const (64) int 6 0
+ecom: 
+name myself Sh 1 0
+ecom to: 
+* Sh 8 0
+  + int 15 0
+    name .b319 big 0 0
+    const (72) int 6 0
+ecom: 
+name name string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b319 big 0 0
+    const (80) int 6 0
+ecom: 
+const OTHER (2) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b319 big 0 0
+    const (88) int 6 0
+ecom: 
+= string 10 1
+  name .t321 string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name .t321 string 0 0
+ecom: 
++= string 10 1
+  name w string 0 0
+  + string 10 1
+    + string 10 1
+      + string 10 1
+        + string 10 1
+          const load  string 1 0
+          name modname string 0 0
+        const ;  string 1 0
+      name mw string 0 0
+    const 
+ string 1 0
+eacom: 
++ string 10 1
+  + string 10 1
+    + string 10 1
+      + string 10 1
+        const load  string 1 0
+        name modname string 0 0
+      const ;  string 1 0
+    name mw string 0 0
+  const 
+ string 1 0
+ecom: 
++ string 10 1
+  + string 10 1
+    + string 10 1
+      + string 10 1
+        const load  string 1 0
+        name modname string 0 0
+      const ;  string 1 0
+    name mw string 0 0
+  const 
+ string 1 0
+ecom to: 
+name .t321 string 0 0
+ecom: 
++ string 10 1
+  + string 10 1
+    + string 10 1
+      const load  string 1 0
+      name modname string 0 0
+    const ;  string 1 0
+  name mw string 0 0
+ecom to: 
+name .t321 string 0 0
+ecom: 
++ string 10 1
+  + string 10 1
+    const load  string 1 0
+    name modname string 0 0
+  const ;  string 1 0
+ecom to: 
+name .t321 string 0 0
+ecom: 
++ string 10 1
+  const load  string 1 0
+  name modname string 0 0
+ecom to: 
+name .t321 string 0 0
+ecom: 
+= string 10 1
+  name .t321 string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name .t321 string 0 0
+ecom: 
+= string 10 1
+  name mw string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name mw string 0 0
+ecom: 
+= string 10 1
+  * string 0 0
+    adr int 13 1
+      name modname (string, Shellbuiltin) 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+* string 0 0
+  adr int 13 1
+    name modname (string, Shellbuiltin) 0 0
+ecom: 
+= Shellbuiltin 10 1
+  * Shellbuiltin 0 0
+    + int 13 1
+      adr int 13 1
+        name modname (string, Shellbuiltin) 0 0
+      const t1 (8) int 6 0
+  name nil Shellbuiltin 1 0
+ecom: 
+name nil Shellbuiltin 1 0
+ecom to: 
+* Shellbuiltin 0 0
+  + int 13 1
+    adr int 13 1
+      name modname (string, Shellbuiltin) 0 0
+    const t1 (8) int 6 0
+ecom: 
+= Shellbuiltin 10 1
+  name mod Shellbuiltin 0 0
+  name nil Shellbuiltin 1 0
+ecom: 
+name nil Shellbuiltin 1 0
+ecom to: 
+name mod Shellbuiltin 0 0
+ecom: 
+= list of (string, Shellbuiltin) 10 1
+  name bmods list of (string, Shellbuiltin) 0 0
+  tl list of (string, Shellbuiltin) 10 1
+    name bmods list of (string, Shellbuiltin) 0 0
+ecom: 
+tl list of (string, Shellbuiltin) 10 1
+  name bmods list of (string, Shellbuiltin) 0 0
+ecom to: 
+name bmods list of (string, Shellbuiltin) 0 0
+ecom: 
+used int 10 2
+  call int 10 2
+    -> fn(fd: ref Sys->FD, s: string, nil: string, *): int 12 1
+      name sys Sys 1 0
+      name fprint nothing 11 1
+    seq no type 10 2
+      call ref Sys->FD 10 2
+        -> fn(fd: int): ref Sys->FD 12 1
+          name sys Sys 1 0
+          name fildes nothing 11 1
+        seq no type 10 1
+          const (2) int 6 0
+      seq no type 10 1
+        const %s: not found
+ string 1 0
+        seq no type 10 1
+          name name string 0 0
+ecom: 
+call int 10 2
+  -> fn(fd: ref Sys->FD, s: string, nil: string, *): int 12 1
+    name sys Sys 1 0
+    name fprint nothing 11 1
+  seq no type 10 2
+    call ref Sys->FD 10 2
+      -> fn(fd: int): ref Sys->FD 12 1
+        name sys Sys 1 0
+        name fildes nothing 11 1
+      seq no type 10 1
+        const (2) int 6 0
+    seq no type 10 1
+      const %s: not found
+ string 1 0
+      seq no type 10 1
+        name name string 0 0
+ecom to: 
+name .t323 int 0 0
+generate desc for Sys->fprint
+descmap offset 0
+descmap fd type ref Sys->FD offset 64 (d->offset=64 start=0) returns 64
+descmap s type string offset 72 (d->offset=72 start=0) returns 72
+descmap type string offset 80 returns 80
+generate desc for big
+ecom: 
+call ref Sys->FD 10 2
+  -> fn(fd: int): ref Sys->FD 12 1
+    name sys Sys 1 0
+    name fildes nothing 11 1
+  seq no type 10 1
+    const (2) int 6 0
+ecom to: 
+name .t321 ref Sys->FD 0 0
+generate desc for big
+ecom: 
+const (2) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b317 big 0 0
+    const (64) int 6 0
+ecom: 
+name .t321 ref Sys->FD 0 0
+ecom to: 
+* ref Sys->FD 8 0
+  + int 15 0
+    name .b319 big 0 0
+    const (64) int 6 0
+ecom: 
+= ref Sys->FD 10 1
+  name .t321 ref Sys->FD 0 0
+  name nil ref Sys->FD 1 0
+ecom: 
+name nil ref Sys->FD 1 0
+ecom to: 
+name .t321 ref Sys->FD 0 0
+ecom: 
+const %s: not found
+ string 1 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b319 big 0 0
+    const (72) int 6 0
+ecom: 
+name name string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b319 big 0 0
+    const (80) int 6 0
+ecom: 
+const not found string 1 0
+ecom to: 
+* string 8 0
+  name .ret int 0 0
+ecom: 
+used int 10 2
+  call int 10 2
+    -> fn(s: string, nil: string, *): int 12 1
+      name sys Sys 1 0
+      name print nothing 11 1
+    seq no type 10 1
+      const %s string 1 0
+      seq no type 10 1
+        name w string 0 0
+ecom: 
+call int 10 2
+  -> fn(s: string, nil: string, *): int 12 1
+    name sys Sys 1 0
+    name print nothing 11 1
+  seq no type 10 1
+    const %s string 1 0
+    seq no type 10 1
+      name w string 0 0
+ecom to: 
+name .t323 int 0 0
+generate desc for Sys->print
+descmap offset 0
+descmap s type string offset 64 (d->offset=64 start=0) returns 64
+descmap type string offset 72 returns 72
+generate desc for big
+ecom: 
+const %s string 1 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b319 big 0 0
+    const (64) int 6 0
+ecom: 
+name w string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b319 big 0 0
+    const (72) int 6 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* polymorphic type 8 0
+  name .ret int 0 0
+fn: whatisit
+64: argument ctxt ref Context ref 10
+72: argument el ref Listnode ref 3
+80: local disfile int ref 4
+84: local found int ref 4
+88: local .t316 int ref 1
+92: local .t323 int ref 1
+96: local name string ref 25
+104: local .b319 big ref 19
+112: local pathlist list of string ref 8
+120: local w string ref 8
+128: local path string ref 7
+136: local .b317 big ref 6
+144: local mods list of Shellbuiltin ref 6
+152: local bmods list of (string, Shellbuiltin) ref 5
+160: local foundpath string ref 5
+168: local mod Shellbuiltin ref 4
+176: local mod Shellbuiltin ref 4
+184: local mw string ref 4
+192: local mw string ref 4
+200: local val list of ref Listnode ref 3
+208: local fd ref Sys->FD ref 2
+216: local modname string ref 2
+224: local mod Shellbuiltin ref 2
+232: local mw string ref 2
+240: local pl list of ref Listnode ref 2
+248: local .b322 (int, list of Shellbuiltin) ref 2
+264: local .b324 (int, Sys->Dir) ref 2
+352: local .t318 string ref 1
+360: local .t320 string ref 1
+368: local .t321 string ref 1
+generate desc for whatisit
+descmap offset 0
+descmap ctxt type ref Context offset 64 (d->offset=64 start=0) returns 64
+descmap el type ref Listnode offset 72 (d->offset=72 start=0) returns 72
+descmap disfile type int offset 80 (d->offset=80 start=0) returns -1
+descmap found type int offset 84 (d->offset=84 start=0) returns -1
+descmap .t316 type int offset 88 (d->offset=88 start=0) returns -1
+descmap .t323 type int offset 92 (d->offset=92 start=0) returns -1
+descmap name type string offset 96 (d->offset=96 start=0) returns 96
+descmap .b319 type big offset 104 (d->offset=104 start=0) returns -1
+descmap pathlist type list of string offset 112 (d->offset=112 start=0) returns 112
+descmap w type string offset 120 (d->offset=120 start=0) returns 120
+descmap path type string offset 128 (d->offset=128 start=0) returns 128
+descmap .b317 type big offset 136 (d->offset=136 start=0) returns -1
+descmap mods type list of Shellbuiltin offset 144 (d->offset=144 start=0) returns 144
+descmap bmods type list of (string, Shellbuiltin) offset 152 (d->offset=152 start=0) returns 152
+descmap foundpath type string offset 160 (d->offset=160 start=0) returns 160
+descmap mod type Shellbuiltin offset 168 (d->offset=168 start=0) returns 168
+descmap mod type Shellbuiltin offset 176 (d->offset=176 start=0) returns 176
+descmap mw type string offset 184 (d->offset=184 start=0) returns 184
+descmap mw type string offset 192 (d->offset=192 start=0) returns 192
+descmap val type list of ref Listnode offset 200 (d->offset=200 start=0) returns 200
+descmap fd type ref Sys->FD offset 208 (d->offset=208 start=0) returns 208
+descmap modname type string offset 216 (d->offset=216 start=0) returns 216
+descmap mod type Shellbuiltin offset 224 (d->offset=224 start=0) returns 224
+descmap mw type string offset 232 (d->offset=232 start=0) returns 232
+descmap pl type list of ref Listnode offset 240 (d->offset=240 start=0) returns 240
+descmap adt offset 248
+descmap offset 248
+descmap t0 type int offset 248 (d->offset=0 start=248) returns -1
+descmap t1 type list of Shellbuiltin offset 256 (d->offset=8 start=248) returns 256
+descmap .b322 type (int, list of Shellbuiltin) offset 248 (d->offset=248 start=0) returns 256
+descmap adt offset 264
+descmap offset 264
+descmap t0 type int offset 264 (d->offset=0 start=264) returns -1
+descmap adt offset 272
+descmap offset 272
+descmap name type string offset 272 (d->offset=0 start=272) returns 272
+descmap uid type string offset 280 (d->offset=8 start=272) returns 280
+descmap gid type string offset 288 (d->offset=16 start=272) returns 288
+descmap muid type string offset 296 (d->offset=24 start=272) returns 296
+descmap adt offset 304
+descmap offset 304
+descmap path type big offset 304 (d->offset=0 start=304) returns -1
+descmap vers type int offset 312 (d->offset=8 start=304) returns -1
+descmap qtype type int offset 316 (d->offset=12 start=304) returns -1
+descmap qid type Sys->Qid offset 304 (d->offset=32 start=272) returns -1
+descmap mode type int offset 320 (d->offset=48 start=272) returns -1
+descmap atime type int offset 324 (d->offset=52 start=272) returns -1
+descmap mtime type int offset 328 (d->offset=56 start=272) returns -1
+descmap length type big offset 336 (d->offset=64 start=272) returns -1
+descmap dtype type int offset 344 (d->offset=72 start=272) returns -1
+descmap dev type int offset 348 (d->offset=76 start=272) returns -1
+descmap t1 type Sys->Dir offset 272 (d->offset=8 start=264) returns 296
+descmap .b324 type (int, Sys->Dir) offset 264 (d->offset=264 start=0) returns 296
+descmap .t318 type string offset 352 (d->offset=352 start=0) returns 352
+descmap .t320 type string offset 360 (d->offset=360 start=0) returns 360
+descmap .t321 type string offset 368 (d->offset=368 start=0) returns 368
+fncom: builtin_builtin 2 6e9810
+eacom: 
+len int 10 1
+  name args list of ref Listnode 0 0
+ecom: 
+len int 10 1
+  name args list of ref Listnode 0 0
+ecom to: 
+name .t325 int 0 0
+ecom: 
+call no type 10 2
+  name builtinusage fn(ctxt: ref Context, s: string) 11 1
+  seq no type 10 1
+    name ctxt ref Context 0 0
+    seq no type 10 1
+      const builtin command [args ...] string 1 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b326 big 0 0
+    const (64) int 6 0
+ecom: 
+const builtin command [args ...] string 1 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b326 big 0 0
+    const (72) int 6 0
+ecom: 
+= string 10 1
+  name name string 0 0
+  * string 10 1
+    + int 10 1
+      hd ref Listnode 10 1
+        tl list of ref Listnode 10 1
+          name args list of ref Listnode 0 0
+      const word (8) int 6 0
+ecom: 
+* string 10 1
+  + int 10 1
+    hd ref Listnode 10 1
+      tl list of ref Listnode 10 1
+        name args list of ref Listnode 0 0
+    const word (8) int 6 0
+ecom to: 
+name name string 0 0
+eacom: 
+* string 10 1
+  + int 10 1
+    hd ref Listnode 10 1
+      tl list of ref Listnode 10 1
+        name args list of ref Listnode 0 0
+    const word (8) int 6 0
+ecom: 
+hd ref Listnode 10 1
+  tl list of ref Listnode 10 1
+    name args list of ref Listnode 0 0
+ecom to: 
+name .t327 ref Listnode 0 0
+eacom: 
+tl list of ref Listnode 10 1
+  name args list of ref Listnode 0 0
+ecom: 
+tl list of ref Listnode 10 1
+  name args list of ref Listnode 0 0
+ecom to: 
+name .t327 list of ref Listnode 0 0
+ecom: 
+= ref Listnode 10 1
+  name .t327 ref Listnode 0 0
+  name nil ref Listnode 1 0
+ecom: 
+name nil ref Listnode 1 0
+ecom to: 
+name .t327 ref Listnode 0 0
+eacom: 
+inds int 10 1
+  name name string 0 0
+  const (0) int 6 0
+ecom: 
+inds int 10 1
+  name name string 0 0
+  const (0) int 6 0
+ecom to: 
+name .t325 int 0 0
+ecom: 
+call no type 10 2
+  name diagnostic fn(ctxt: ref Context, s: string) 11 1
+  seq no type 10 1
+    name ctxt ref Context 0 0
+    seq no type 10 1
+      + string 10 1
+        name name string 0 0
+        const  not found string 1 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b326 big 0 0
+    const (64) int 6 0
+ecom: 
++ string 10 1
+  name name string 0 0
+  const  not found string 1 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b326 big 0 0
+    const (72) int 6 0
+ecom: 
+const not found string 1 0
+ecom to: 
+* string 8 0
+  name .ret int 0 0
+ecom: 
+= (int, list of Shellbuiltin) 10 2
+  tuple (int, list of Shellbuiltin) 10 1
+    seq nothing 10 1
+      name nil polymorphic type 1 0
+      seq nothing 10 1
+        name mods list of Shellbuiltin 0 0
+  call (int, list of Shellbuiltin) 10 2
+    name findbuiltin fn(b: ref Builtins, name: string): (int, list of Shellbuiltin) 11 1
+    seq no type 10 2
+      * ref Builtins 10 1
+        + int 10 1
+          * ref Environment 8 0
+            name ctxt ref Context 0 0
+          const builtins (8) int 6 0
+      seq no type 10 1
+        name name string 0 0
+generate desc for (int, list of Shellbuiltin)
+ecom: 
+call (int, list of Shellbuiltin) 10 2
+  name findbuiltin fn(b: ref Builtins, name: string): (int, list of Shellbuiltin) 11 1
+  seq no type 10 2
+    * ref Builtins 10 1
+      + int 10 1
+        * ref Environment 8 0
+          name ctxt ref Context 0 0
+        const builtins (8) int 6 0
+    seq no type 10 1
+      name name string 0 0
+ecom to: 
+name .b328 (int, list of Shellbuiltin) 0 0
+generate desc for big
+ecom: 
+* ref Builtins 10 1
+  + int 10 1
+    * ref Environment 8 0
+      name ctxt ref Context 0 0
+    const builtins (8) int 6 0
+ecom to: 
+* ref Builtins 8 0
+  + int 15 0
+    name .b326 big 0 0
+    const (64) int 6 0
+eacom: 
+* ref Builtins 10 1
+  + int 10 1
+    * ref Environment 8 0
+      name ctxt ref Context 0 0
+    const builtins (8) int 6 0
+ecom: 
+* ref Environment 8 0
+  name ctxt ref Context 0 0
+ecom to: 
+name .t327 ref Environment 0 0
+ecom: 
+= ref Environment 10 1
+  name .t327 ref Environment 0 0
+  name nil ref Environment 1 0
+ecom: 
+name nil ref Environment 1 0
+ecom to: 
+name .t327 ref Environment 0 0
+ecom: 
+name name string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b326 big 0 0
+    const (72) int 6 0
+ecom: 
+= list of Shellbuiltin 10 1
+  * list of Shellbuiltin 0 0
+    + int 13 1
+      adr int 13 1
+        name .b328 (int, list of Shellbuiltin) 0 0
+      const t1 (8) int 6 0
+  name nil list of Shellbuiltin 1 0
+ecom: 
+name nil list of Shellbuiltin 1 0
+ecom to: 
+* list of Shellbuiltin 0 0
+  + int 13 1
+    adr int 13 1
+      name .b328 (int, list of Shellbuiltin) 0 0
+    const t1 (8) int 6 0
+eacom: 
+hd Shellbuiltin 10 1
+  name mods list of Shellbuiltin 0 0
+ecom: 
+hd Shellbuiltin 10 1
+  name mods list of Shellbuiltin 0 0
+ecom to: 
+name .t327 Shellbuiltin 0 0
+ecom: 
+= Shellbuiltin 10 1
+  name .t327 Shellbuiltin 0 0
+  name nil Shellbuiltin 1 0
+ecom: 
+name nil Shellbuiltin 1 0
+ecom to: 
+name .t327 Shellbuiltin 0 0
+ecom: 
+call string 10 3
+  -> fn(c: ref Context, sh: Sh, cmd: list of ref Listnode, last: int): string 12 2
+    hd Shellbuiltin 10 1
+      name mods list of Shellbuiltin 0 0
+    name runbuiltin nothing 11 1
+  seq no type 10 2
+    name ctxt ref Context 0 0
+    seq no type 10 2
+      name myself Sh 1 0
+      seq no type 10 2
+        tl list of ref Listnode 10 1
+          name args list of ref Listnode 0 0
+        seq no type 10 1
+          name last int 0 0
+ecom to: 
+* string 8 0
+  name .ret int 0 0
+generate desc for big
+eacom: 
+hd Shellbuiltin 10 1
+  name mods list of Shellbuiltin 0 0
+ecom: 
+hd Shellbuiltin 10 1
+  name mods list of Shellbuiltin 0 0
+ecom to: 
+name .t327 Shellbuiltin 0 0
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b326 big 0 0
+    const (64) int 6 0
+ecom: 
+name myself Sh 1 0
+ecom to: 
+* Sh 8 0
+  + int 15 0
+    name .b326 big 0 0
+    const (72) int 6 0
+ecom: 
+tl list of ref Listnode 10 1
+  name args list of ref Listnode 0 0
+ecom to: 
+* list of ref Listnode 8 0
+  + int 15 0
+    name .b326 big 0 0
+    const (80) int 6 0
+ecom: 
+name last int 0 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b326 big 0 0
+    const (88) int 6 0
+ecom: 
+= Shellbuiltin 10 1
+  name .t327 Shellbuiltin 0 0
+  name nil Shellbuiltin 1 0
+ecom: 
+name nil Shellbuiltin 1 0
+ecom to: 
+name .t327 Shellbuiltin 0 0
+ecom: 
+= list of Shellbuiltin 10 1
+  name mods list of Shellbuiltin 0 0
+  tl list of Shellbuiltin 10 1
+    name mods list of Shellbuiltin 0 0
+ecom: 
+tl list of Shellbuiltin 10 1
+  name mods list of Shellbuiltin 0 0
+ecom to: 
+name mods list of Shellbuiltin 0 0
+eacom: 
+& int 10 1
+  * int 10 1
+    + int 10 1
+      * ref Localenv 10 1
+        + int 10 1
+          * ref Environment 8 0
+            name ctxt ref Context 0 0
+          const localenv (24) int 6 0
+      const flags (16) int 6 0
+  const EXECPRINT (4) int 6 0
+ecom: 
+& int 10 1
+  * int 10 1
+    + int 10 1
+      * ref Localenv 10 1
+        + int 10 1
+          * ref Environment 8 0
+            name ctxt ref Context 0 0
+          const localenv (24) int 6 0
+      const flags (16) int 6 0
+  const EXECPRINT (4) int 6 0
+ecom to: 
+name .t325 int 0 0
+eacom: 
+* int 10 1
+  + int 10 1
+    * ref Localenv 10 1
+      + int 10 1
+        * ref Environment 8 0
+          name ctxt ref Context 0 0
+        const localenv (24) int 6 0
+    const flags (16) int 6 0
+ecom: 
+* ref Localenv 10 1
+  + int 10 1
+    * ref Environment 8 0
+      name ctxt ref Context 0 0
+    const localenv (24) int 6 0
+ecom to: 
+name .t327 ref Localenv 0 0
+eacom: 
+* ref Localenv 10 1
+  + int 10 1
+    * ref Environment 8 0
+      name ctxt ref Context 0 0
+    const localenv (24) int 6 0
+ecom: 
+* ref Environment 8 0
+  name ctxt ref Context 0 0
+ecom to: 
+name .t327 ref Environment 0 0
+ecom: 
+= ref Localenv 10 1
+  name .t327 ref Localenv 0 0
+  name nil ref Localenv 1 0
+ecom: 
+name nil ref Localenv 1 0
+ecom to: 
+name .t327 ref Localenv 0 0
+ecom: 
+used int 10 3
+  call int 10 3
+    -> fn(fd: ref Sys->FD, s: string, nil: string, *): int 12 1
+      name sys Sys 1 0
+      name fprint nothing 11 1
+    seq no type 10 3
+      call ref Sys->FD 10 2
+        -> fn(fd: int): ref Sys->FD 12 1
+          name sys Sys 1 0
+          name fildes nothing 11 1
+        seq no type 10 1
+          const (2) int 6 0
+      seq no type 10 2
+        const %s
+ string 1 0
+        seq no type 10 2
+          call string 10 2
+            name quoted fn(val: list of ref Listnode, quoteblocks: int): string 11 1
+            seq no type 10 2
+              tl list of ref Listnode 10 1
+                name args list of ref Listnode 0 0
+              seq no type 10 1
+                const (0) int 6 0
+ecom: 
+call int 10 3
+  -> fn(fd: ref Sys->FD, s: string, nil: string, *): int 12 1
+    name sys Sys 1 0
+    name fprint nothing 11 1
+  seq no type 10 3
+    call ref Sys->FD 10 2
+      -> fn(fd: int): ref Sys->FD 12 1
+        name sys Sys 1 0
+        name fildes nothing 11 1
+      seq no type 10 1
+        const (2) int 6 0
+    seq no type 10 2
+      const %s
+ string 1 0
+      seq no type 10 2
+        call string 10 2
+          name quoted fn(val: list of ref Listnode, quoteblocks: int): string 11 1
+          seq no type 10 2
+            tl list of ref Listnode 10 1
+              name args list of ref Listnode 0 0
+            seq no type 10 1
+              const (0) int 6 0
+ecom to: 
+name .t325 int 0 0
+generate desc for Sys->fprint
+descmap offset 0
+descmap fd type ref Sys->FD offset 64 (d->offset=64 start=0) returns 64
+descmap s type string offset 72 (d->offset=72 start=0) returns 72
+descmap type string offset 80 returns 80
+generate desc for big
+ecom: 
+call ref Sys->FD 10 2
+  -> fn(fd: int): ref Sys->FD 12 1
+    name sys Sys 1 0
+    name fildes nothing 11 1
+  seq no type 10 1
+    const (2) int 6 0
+ecom to: 
+name .t327 ref Sys->FD 0 0
+generate desc for big
+ecom: 
+const (2) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b329 big 0 0
+    const (64) int 6 0
+ecom: 
+call string 10 2
+  name quoted fn(val: list of ref Listnode, quoteblocks: int): string 11 1
+  seq no type 10 2
+    tl list of ref Listnode 10 1
+      name args list of ref Listnode 0 0
+    seq no type 10 1
+      const (0) int 6 0
+ecom to: 
+name .t330 string 0 0
+generate desc for big
+ecom: 
+tl list of ref Listnode 10 1
+  name args list of ref Listnode 0 0
+ecom to: 
+* list of ref Listnode 8 0
+  + int 15 0
+    name .b329 big 0 0
+    const (64) int 6 0
+ecom: 
+const (0) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b329 big 0 0
+    const (72) int 6 0
+ecom: 
+name .t327 ref Sys->FD 0 0
+ecom to: 
+* ref Sys->FD 8 0
+  + int 15 0
+    name .b326 big 0 0
+    const (64) int 6 0
+ecom: 
+= ref Sys->FD 10 1
+  name .t327 ref Sys->FD 0 0
+  name nil ref Sys->FD 1 0
+ecom: 
+name nil ref Sys->FD 1 0
+ecom to: 
+name .t327 ref Sys->FD 0 0
+ecom: 
+const %s
+ string 1 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b326 big 0 0
+    const (72) int 6 0
+ecom: 
+name .t330 string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b326 big 0 0
+    const (80) int 6 0
+ecom: 
+= string 10 1
+  name .t330 string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name .t330 string 0 0
+ecom: 
+call string 10 2
+  name runexternal fn(ctxt: ref Context, args: list of ref Listnode, last: int): string 11 1
+  seq no type 10 2
+    name ctxt ref Context 0 0
+    seq no type 10 2
+      tl list of ref Listnode 10 1
+        name args list of ref Listnode 0 0
+      seq no type 10 1
+        name last int 0 0
+ecom to: 
+* string 8 0
+  name .ret int 0 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b329 big 0 0
+    const (64) int 6 0
+ecom: 
+tl list of ref Listnode 10 1
+  name args list of ref Listnode 0 0
+ecom to: 
+* list of ref Listnode 8 0
+  + int 15 0
+    name .b329 big 0 0
+    const (72) int 6 0
+ecom: 
+name last int 0 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b329 big 0 0
+    const (80) int 6 0
+fn: builtin_builtin
+64: argument ctxt ref Context ref 7
+72: argument args list of ref Listnode ref 5
+80: argument last int ref 2
+84: local .t325 int ref 1
+88: local mods list of Shellbuiltin ref 6
+96: local .b326 big ref 5
+104: local name string ref 5
+112: local .b329 big ref 3
+120: local .t327 ref Listnode ref 1
+128: local .t330 string ref 1
+136: local .b328 (int, list of Shellbuiltin) ref 1
+generate desc for builtin_builtin
+descmap offset 0
+descmap ctxt type ref Context offset 64 (d->offset=64 start=0) returns 64
+descmap args type list of ref Listnode offset 72 (d->offset=72 start=0) returns 72
+descmap last type int offset 80 (d->offset=80 start=0) returns -1
+descmap .t325 type int offset 84 (d->offset=84 start=0) returns -1
+descmap mods type list of Shellbuiltin offset 88 (d->offset=88 start=0) returns 88
+descmap .b326 type big offset 96 (d->offset=96 start=0) returns -1
+descmap name type string offset 104 (d->offset=104 start=0) returns 104
+descmap .b329 type big offset 112 (d->offset=112 start=0) returns -1
+descmap .t327 type ref Listnode offset 120 (d->offset=120 start=0) returns 120
+descmap .t330 type string offset 128 (d->offset=128 start=0) returns 128
+descmap adt offset 136
+descmap offset 136
+descmap t0 type int offset 136 (d->offset=0 start=136) returns -1
+descmap t1 type list of Shellbuiltin offset 144 (d->offset=8 start=136) returns 144
+descmap .b328 type (int, list of Shellbuiltin) offset 136 (d->offset=136 start=0) returns 144
+fncom: modname 5 6e98d0
+ecom: 
+= list of (string, Shellbuiltin) 10 1
+  name ml list of (string, Shellbuiltin) 0 0
+  * list of (string, Shellbuiltin) 10 1
+    + int 10 1
+      * ref Environment 8 0
+        name ctxt ref Context 0 0
+      const bmods (16) int 6 0
+ecom: 
+* list of (string, Shellbuiltin) 10 1
+  + int 10 1
+    * ref Environment 8 0
+      name ctxt ref Context 0 0
+    const bmods (16) int 6 0
+ecom to: 
+name ml list of (string, Shellbuiltin) 0 0
+eacom: 
+* list of (string, Shellbuiltin) 10 1
+  + int 10 1
+    * ref Environment 8 0
+      name ctxt ref Context 0 0
+    const bmods (16) int 6 0
+ecom: 
+* ref Environment 8 0
+  name ctxt ref Context 0 0
+ecom to: 
+name .t331 ref Environment 0 0
+ecom: 
+= ref Environment 10 1
+  name .t331 ref Environment 0 0
+  name nil ref Environment 1 0
+ecom: 
+name nil ref Environment 1 0
+ecom to: 
+name .t331 ref Environment 0 0
+ecom: 
+= (string, Shellbuiltin) 10 2
+  tuple (string, Shellbuiltin) 10 1
+    seq nothing 10 1
+      name bname string 0 0
+      seq nothing 10 1
+        name bmod Shellbuiltin 0 0
+  hd (string, Shellbuiltin) 10 1
+    name ml list of (string, Shellbuiltin) 0 0
+ecom: 
+hd (string, Shellbuiltin) 10 1
+  name ml list of (string, Shellbuiltin) 0 0
+ecom to: 
+name bname (string, Shellbuiltin) 0 0
+generate desc for (string, Shellbuiltin)
+ecom: 
+name bname string 0 0
+ecom to: 
+* string 8 0
+  name .ret int 0 0
+ecom: 
+= string 10 1
+  * string 0 0
+    adr int 13 1
+      name bname (string, Shellbuiltin) 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+* string 0 0
+  adr int 13 1
+    name bname (string, Shellbuiltin) 0 0
+ecom: 
+= Shellbuiltin 10 1
+  * Shellbuiltin 0 0
+    + int 13 1
+      adr int 13 1
+        name bname (string, Shellbuiltin) 0 0
+      const t1 (8) int 6 0
+  name nil Shellbuiltin 1 0
+ecom: 
+name nil Shellbuiltin 1 0
+ecom to: 
+* Shellbuiltin 0 0
+  + int 13 1
+    adr int 13 1
+      name bname (string, Shellbuiltin) 0 0
+    const t1 (8) int 6 0
+ecom: 
+= Shellbuiltin 10 1
+  name bmod Shellbuiltin 0 0
+  name nil Shellbuiltin 1 0
+ecom: 
+name nil Shellbuiltin 1 0
+ecom to: 
+name bmod Shellbuiltin 0 0
+ecom: 
+= list of (string, Shellbuiltin) 10 1
+  name ml list of (string, Shellbuiltin) 0 0
+  tl list of (string, Shellbuiltin) 10 1
+    name ml list of (string, Shellbuiltin) 0 0
+ecom: 
+tl list of (string, Shellbuiltin) 10 1
+  name ml list of (string, Shellbuiltin) 0 0
+ecom to: 
+name ml list of (string, Shellbuiltin) 0 0
+ecom: 
+const builtin string 1 0
+ecom to: 
+* string 8 0
+  name .ret int 0 0
+fn: modname
+64: argument ctxt ref Context ref 1
+72: argument mod Shellbuiltin ref 1
+80: local ml list of (string, Shellbuiltin) ref 5
+88: local bname string ref 2
+96: local bmod Shellbuiltin ref 2
+104: local .t331 ref Environment ref 1
+generate desc for modname
+descmap offset 0
+descmap ctxt type ref Context offset 64 (d->offset=64 start=0) returns 64
+descmap mod type Shellbuiltin offset 72 (d->offset=72 start=0) returns 72
+descmap ml type list of (string, Shellbuiltin) offset 80 (d->offset=80 start=0) returns 80
+descmap bname type string offset 88 (d->offset=88 start=0) returns 88
+descmap bmod type Shellbuiltin offset 96 (d->offset=96 start=0) returns 96
+descmap .t331 type ref Environment offset 104 (d->offset=104 start=0) returns 104
+fncom: loadmodule 3 6e9990
+ecom: 
+= list of (string, Shellbuiltin) 10 1
+  name bl list of (string, Shellbuiltin) 0 0
+  * list of (string, Shellbuiltin) 10 1
+    + int 10 1
+      * ref Environment 8 0
+        name ctxt ref Context 0 0
+      const bmods (16) int 6 0
+ecom: 
+* list of (string, Shellbuiltin) 10 1
+  + int 10 1
+    * ref Environment 8 0
+      name ctxt ref Context 0 0
+    const bmods (16) int 6 0
+ecom to: 
+name bl list of (string, Shellbuiltin) 0 0
+eacom: 
+* list of (string, Shellbuiltin) 10 1
+  + int 10 1
+    * ref Environment 8 0
+      name ctxt ref Context 0 0
+    const bmods (16) int 6 0
+ecom: 
+* ref Environment 8 0
+  name ctxt ref Context 0 0
+ecom to: 
+name .t332 ref Environment 0 0
+ecom: 
+= ref Environment 10 1
+  name .t332 ref Environment 0 0
+  name nil ref Environment 1 0
+ecom: 
+name nil ref Environment 1 0
+ecom to: 
+name .t332 ref Environment 0 0
+ecom: 
+= (string, Shellbuiltin) 10 2
+  tuple (string, Shellbuiltin) 10 1
+    seq nothing 10 1
+      name bname string 0 0
+      seq nothing 10 1
+        name nil polymorphic type 1 0
+  hd (string, Shellbuiltin) 10 1
+    name bl list of (string, Shellbuiltin) 0 0
+generate desc for (string, Shellbuiltin)
+ecom: 
+hd (string, Shellbuiltin) 10 1
+  name bl list of (string, Shellbuiltin) 0 0
+ecom to: 
+name .b333 (string, Shellbuiltin) 0 0
+generate desc for (string, Shellbuiltin)
+ecom: 
+= string 10 1
+  * string 0 0
+    adr int 13 1
+      name .b333 (string, Shellbuiltin) 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+* string 0 0
+  adr int 13 1
+    name .b333 (string, Shellbuiltin) 0 0
+ecom: 
+= Shellbuiltin 10 1
+  * Shellbuiltin 0 0
+    + int 13 1
+      adr int 13 1
+        name .b333 (string, Shellbuiltin) 0 0
+      const t1 (8) int 6 0
+  name nil Shellbuiltin 1 0
+ecom: 
+name nil Shellbuiltin 1 0
+ecom to: 
+* Shellbuiltin 0 0
+  + int 13 1
+    adr int 13 1
+      name .b333 (string, Shellbuiltin) 0 0
+    const t1 (8) int 6 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* polymorphic type 8 0
+  name .ret int 0 0
+ecom: 
+= string 10 1
+  name bname string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name bname string 0 0
+ecom: 
+= list of (string, Shellbuiltin) 10 1
+  name bl list of (string, Shellbuiltin) 0 0
+  tl list of (string, Shellbuiltin) 10 1
+    name bl list of (string, Shellbuiltin) 0 0
+ecom: 
+tl list of (string, Shellbuiltin) 10 1
+  name bl list of (string, Shellbuiltin) 0 0
+ecom to: 
+name bl list of (string, Shellbuiltin) 0 0
+ecom: 
+= string 10 1
+  name path string 0 0
+  name name string 0 0
+ecom: 
+name name string 0 0
+ecom to: 
+name path string 0 0
+eacom: 
+len int 10 1
+  name path string 0 0
+ecom: 
+len int 10 1
+  name path string 0 0
+ecom to: 
+name .t334 int 0 0
+eacom: 
+slice string 10 2
+  name path string 0 0
+  seq no type 10 2
+    - int 10 1
+      len int 10 1
+        name path string 0 0
+      const (4) int 6 0
+    nothing no type 10 1
+ecom: 
+slice string 10 2
+  name path string 0 0
+  seq no type 10 2
+    - int 10 1
+      len int 10 1
+        name path string 0 0
+      const (4) int 6 0
+    nothing no type 10 1
+ecom to: 
+name .t332 string 0 0
+ecom: 
+len int 10 1
+  name path string 0 0
+ecom to: 
+name .t334 int 0 0
+eacom: 
+- int 10 1
+  len int 10 1
+    name path string 0 0
+  const (4) int 6 0
+ecom: 
+- int 10 1
+  len int 10 1
+    name path string 0 0
+  const (4) int 6 0
+ecom to: 
+name .t335 int 0 0
+ecom: 
+len int 10 1
+  name path string 0 0
+ecom to: 
+name .t335 int 0 0
+ecom: 
+name path string 0 0
+ecom to: 
+name .t332 string 0 0
+ecom: 
+= string 10 1
+  name .t332 string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name .t332 string 0 0
+ecom: 
++= string 10 1
+  name path string 0 0
+  const .dis string 1 0
+eacom: 
+inds int 10 1
+  name path string 0 0
+  const (0) int 6 0
+ecom: 
+inds int 10 1
+  name path string 0 0
+  const (0) int 6 0
+ecom to: 
+name .t335 int 0 0
+eacom: 
+slice string 10 1
+  name path string 0 0
+  seq no type 10 1
+    const (0) int 6 0
+    const (2) int 6 0
+ecom: 
+slice string 10 1
+  name path string 0 0
+  seq no type 10 1
+    const (0) int 6 0
+    const (2) int 6 0
+ecom to: 
+name .t332 string 0 0
+ecom: 
+name path string 0 0
+ecom to: 
+name .t332 string 0 0
+ecom: 
+= string 10 1
+  name .t332 string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name .t332 string 0 0
+ecom: 
+= string 10 1
+  name path string 0 0
+  + string 10 1
+    const /dis/sh/ string 1 0
+    name path string 0 0
+ecom: 
++ string 10 1
+  const /dis/sh/ string 1 0
+  name path string 0 0
+ecom to: 
+name path string 0 0
+ecom: 
+= Shellbuiltin 10 1
+  name mod Shellbuiltin 0 0
+  load Shellbuiltin 10 1
+    name path string 0 0
+    name .m.Shellbuiltin Shellbuiltin 17 1
+ecom: 
+load Shellbuiltin 10 1
+  name path string 0 0
+  name .m.Shellbuiltin Shellbuiltin 17 1
+ecom to: 
+name mod Shellbuiltin 0 0
+ecom: 
+call no type 10 2
+  name diagnostic fn(ctxt: ref Context, s: string) 11 1
+  seq no type 10 2
+    name ctxt ref Context 0 0
+    seq no type 10 2
+      call string 10 2
+        -> fn(s: string, nil: string, *): string 12 1
+          name sys Sys 1 0
+          name sprint nothing 11 1
+        seq no type 10 1
+          const load: cannot load %s: %r string 1 0
+          seq no type 10 1
+            name path string 0 0
+generate desc for big
+ecom: 
+call string 10 2
+  -> fn(s: string, nil: string, *): string 12 1
+    name sys Sys 1 0
+    name sprint nothing 11 1
+  seq no type 10 1
+    const load: cannot load %s: %r string 1 0
+    seq no type 10 1
+      name path string 0 0
+ecom to: 
+name .t332 string 0 0
+generate desc for Sys->sprint
+descmap offset 0
+descmap s type string offset 64 (d->offset=64 start=0) returns 64
+descmap type string offset 72 returns 72
+generate desc for big
+ecom: 
+const load: cannot load %s: %r string 1 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b337 big 0 0
+    const (64) int 6 0
+ecom: 
+name path string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b337 big 0 0
+    const (72) int 6 0
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b336 big 0 0
+    const (64) int 6 0
+ecom: 
+name .t332 string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b336 big 0 0
+    const (72) int 6 0
+ecom: 
+= string 10 1
+  name .t332 string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name .t332 string 0 0
+ecom: 
+const bad module string 1 0
+ecom to: 
+* string 8 0
+  name .ret int 0 0
+ecom: 
+= string 10 2
+  name s string 0 0
+  call string 10 2
+    -> fn(c: ref Context, sh: Sh): string 12 1
+      name mod Shellbuiltin 0 0
+      name initbuiltin nothing 11 1
+    seq no type 10 1
+      name ctxt ref Context 0 0
+      seq no type 10 1
+        name myself Sh 1 0
+ecom: 
+call string 10 2
+  -> fn(c: ref Context, sh: Sh): string 12 1
+    name mod Shellbuiltin 0 0
+    name initbuiltin nothing 11 1
+  seq no type 10 1
+    name ctxt ref Context 0 0
+    seq no type 10 1
+      name myself Sh 1 0
+ecom to: 
+name s string 0 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b337 big 0 0
+    const (64) int 6 0
+ecom: 
+name myself Sh 1 0
+ecom to: 
+* Sh 8 0
+  + int 15 0
+    name .b337 big 0 0
+    const (72) int 6 0
+ecom: 
+= list of (string, Shellbuiltin) 10 2
+  * list of (string, Shellbuiltin) 10 1
+    + int 10 1
+      * ref Environment 8 0
+        name ctxt ref Context 0 0
+      const bmods (16) int 6 0
+  :: list of (string, Shellbuiltin) 10 2
+    tuple (string, Shellbuiltin) 10 1
+      seq no type 10 1
+        name name string 0 0
+        seq no type 10 1
+          call Shellbuiltin 10 1
+            -> fn(): Shellbuiltin 12 1
+              name mod Shellbuiltin 0 0
+              name getself nothing 11 1
+    * list of (string, Shellbuiltin) 10 1
+      + int 10 1
+        * ref Environment 8 0
+          name ctxt ref Context 0 0
+        const bmods (16) int 6 0
+eacom: 
+* list of (string, Shellbuiltin) 10 1
+  + int 10 1
+    * ref Environment 8 0
+      name ctxt ref Context 0 0
+    const bmods (16) int 6 0
+ecom: 
+* ref Environment 8 0
+  name ctxt ref Context 0 0
+ecom to: 
+name .t332 ref Environment 0 0
+ecom: 
+:: list of (string, Shellbuiltin) 10 2
+  tuple (string, Shellbuiltin) 10 1
+    seq no type 10 1
+      name name string 0 0
+      seq no type 10 1
+        call Shellbuiltin 10 1
+          -> fn(): Shellbuiltin 12 1
+            name mod Shellbuiltin 0 0
+            name getself nothing 11 1
+  * list of (string, Shellbuiltin) 10 1
+    + int 10 1
+      * ref Environment 8 0
+        name ctxt ref Context 0 0
+      const bmods (16) int 6 0
+ecom to: 
+* list of (string, Shellbuiltin) 8 1
+  + int 15 1
+    name .t332 ref Environment 0 0
+    const bmods (16) int 6 0
+eacom: 
+tuple (string, Shellbuiltin) 10 1
+  seq no type 10 1
+    name name string 0 0
+    seq no type 10 1
+      call Shellbuiltin 10 1
+        -> fn(): Shellbuiltin 12 1
+          name mod Shellbuiltin 0 0
+          name getself nothing 11 1
+generate desc for (string, Shellbuiltin)
+descmap adt offset 0
+descmap offset 0
+descmap t0 type string offset 0 (d->offset=0 start=0) returns 0
+descmap t1 type Shellbuiltin offset 8 (d->offset=8 start=0) returns 8
+generate desc for (string, Shellbuiltin)
+	desc	$-1,16,"c0"
+ecom: 
+tuple (string, Shellbuiltin) 10 1
+  seq no type 10 1
+    name name string 0 0
+    seq no type 10 1
+      call Shellbuiltin 10 1
+        -> fn(): Shellbuiltin 12 1
+          name mod Shellbuiltin 0 0
+          name getself nothing 11 1
+ecom to: 
+name .b333 (string, Shellbuiltin) 0 0
+ecom: 
+name name string 0 0
+ecom to: 
+* string 0 0
+  + int 13 1
+    adr int 13 1
+      name .b333 (string, Shellbuiltin) 0 0
+    const (0) int 6 0
+ecom: 
+call Shellbuiltin 10 1
+  -> fn(): Shellbuiltin 12 1
+    name mod Shellbuiltin 0 0
+    name getself nothing 11 1
+ecom to: 
+* Shellbuiltin 0 0
+  + int 13 1
+    adr int 13 1
+      name .b333 (string, Shellbuiltin) 0 0
+    const (8) int 6 0
+generate desc for big
+ecom: 
+* list of (string, Shellbuiltin) 10 1
+  + int 10 1
+    * ref Environment 8 0
+      name ctxt ref Context 0 0
+    const bmods (16) int 6 0
+ecom to: 
+name .t338 list of (string, Shellbuiltin) 0 0
+eacom: 
+* list of (string, Shellbuiltin) 10 1
+  + int 10 1
+    * ref Environment 8 0
+      name ctxt ref Context 0 0
+    const bmods (16) int 6 0
+ecom: 
+* ref Environment 8 0
+  name ctxt ref Context 0 0
+ecom to: 
+name .t338 ref Environment 0 0
+generate desc for (string, Shellbuiltin)
+ecom: 
+= string 10 1
+  * string 0 0
+    adr int 13 1
+      name .b333 (string, Shellbuiltin) 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+* string 0 0
+  adr int 13 1
+    name .b333 (string, Shellbuiltin) 0 0
+ecom: 
+= Shellbuiltin 10 1
+  * Shellbuiltin 0 0
+    + int 13 1
+      adr int 13 1
+        name .b333 (string, Shellbuiltin) 0 0
+      const t1 (8) int 6 0
+  name nil Shellbuiltin 1 0
+ecom: 
+name nil Shellbuiltin 1 0
+ecom to: 
+* Shellbuiltin 0 0
+  + int 13 1
+    adr int 13 1
+      name .b333 (string, Shellbuiltin) 0 0
+    const t1 (8) int 6 0
+ecom: 
+= list of (string, Shellbuiltin) 10 1
+  name .t338 list of (string, Shellbuiltin) 0 0
+  name nil list of (string, Shellbuiltin) 1 0
+ecom: 
+name nil list of (string, Shellbuiltin) 1 0
+ecom to: 
+name .t338 list of (string, Shellbuiltin) 0 0
+ecom: 
+= ref Environment 10 1
+  name .t332 ref Environment 0 0
+  name nil ref Environment 1 0
+ecom: 
+name nil ref Environment 1 0
+ecom to: 
+name .t332 ref Environment 0 0
+ecom: 
+used string 10 2
+  call string 10 2
+    name unloadmodule fn(ctxt: ref Context, name: string): string 11 1
+    seq no type 10 1
+      name ctxt ref Context 0 0
+      seq no type 10 1
+        name name string 0 0
+ecom: 
+call string 10 2
+  name unloadmodule fn(ctxt: ref Context, name: string): string 11 1
+  seq no type 10 1
+    name ctxt ref Context 0 0
+    seq no type 10 1
+      name name string 0 0
+ecom to: 
+name .t338 string 0 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b337 big 0 0
+    const (64) int 6 0
+ecom: 
+name name string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b337 big 0 0
+    const (72) int 6 0
+ecom: 
+= string 10 1
+  name .t338 string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name .t338 string 0 0
+ecom: 
+call no type 10 2
+  name diagnostic fn(ctxt: ref Context, s: string) 11 1
+  seq no type 10 1
+    name ctxt ref Context 0 0
+    seq no type 10 1
+      + string 10 1
+        const load: module init failed:  string 1 0
+        name s string 0 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b337 big 0 0
+    const (64) int 6 0
+ecom: 
++ string 10 1
+  const load: module init failed:  string 1 0
+  name s string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b337 big 0 0
+    const (72) int 6 0
+ecom: 
+name s string 0 0
+ecom to: 
+* string 8 0
+  name .ret int 0 0
+fn: loadmodule
+64: argument ctxt ref Context ref 7
+72: argument name string ref 4
+80: local .t334 int ref 1
+84: local .t335 int ref 1
+88: local path string ref 11
+96: local .b337 big ref 5
+104: local bl list of (string, Shellbuiltin) ref 5
+112: local mod Shellbuiltin ref 4
+120: local s string ref 4
+128: local bname string ref 2
+136: local .b333 (string, Shellbuiltin) ref 2
+152: local .b336 big ref 1
+160: local .t332 ref Environment ref 1
+168: local .t338 list of (string, Shellbuiltin) ref 1
+generate desc for loadmodule
+descmap offset 0
+descmap ctxt type ref Context offset 64 (d->offset=64 start=0) returns 64
+descmap name type string offset 72 (d->offset=72 start=0) returns 72
+descmap .t334 type int offset 80 (d->offset=80 start=0) returns -1
+descmap .t335 type int offset 84 (d->offset=84 start=0) returns -1
+descmap path type string offset 88 (d->offset=88 start=0) returns 88
+descmap .b337 type big offset 96 (d->offset=96 start=0) returns -1
+descmap bl type list of (string, Shellbuiltin) offset 104 (d->offset=104 start=0) returns 104
+descmap mod type Shellbuiltin offset 112 (d->offset=112 start=0) returns 112
+descmap s type string offset 120 (d->offset=120 start=0) returns 120
+descmap bname type string offset 128 (d->offset=128 start=0) returns 128
+descmap adt offset 136
+descmap offset 136
+descmap t0 type string offset 136 (d->offset=0 start=136) returns 136
+descmap t1 type Shellbuiltin offset 144 (d->offset=8 start=136) returns 144
+descmap .b333 type (string, Shellbuiltin) offset 136 (d->offset=136 start=0) returns 144
+descmap .b336 type big offset 152 (d->offset=152 start=0) returns -1
+descmap .t332 type ref Environment offset 160 (d->offset=160 start=0) returns 160
+descmap .t338 type list of (string, Shellbuiltin) offset 168 (d->offset=168 start=0) returns 168
+fncom: unloadmodule 3 6e9a50
+ecom: 
+= list of (string, Shellbuiltin) 10 1
+  name cl list of (string, Shellbuiltin) 0 0
+  * list of (string, Shellbuiltin) 10 1
+    + int 10 1
+      * ref Environment 8 0
+        name ctxt ref Context 0 0
+      const bmods (16) int 6 0
+ecom: 
+* list of (string, Shellbuiltin) 10 1
+  + int 10 1
+    * ref Environment 8 0
+      name ctxt ref Context 0 0
+    const bmods (16) int 6 0
+ecom to: 
+name cl list of (string, Shellbuiltin) 0 0
+eacom: 
+* list of (string, Shellbuiltin) 10 1
+  + int 10 1
+    * ref Environment 8 0
+      name ctxt ref Context 0 0
+    const bmods (16) int 6 0
+ecom: 
+* ref Environment 8 0
+  name ctxt ref Context 0 0
+ecom to: 
+name .t339 ref Environment 0 0
+ecom: 
+= ref Environment 10 1
+  name .t339 ref Environment 0 0
+  name nil ref Environment 1 0
+ecom: 
+name nil ref Environment 1 0
+ecom to: 
+name .t339 ref Environment 0 0
+ecom: 
+= (string, Shellbuiltin) 10 2
+  tuple (string, Shellbuiltin) 10 1
+    seq nothing 10 1
+      name bname string 0 0
+      seq nothing 10 1
+        name bmod Shellbuiltin 0 0
+  hd (string, Shellbuiltin) 10 1
+    name cl list of (string, Shellbuiltin) 0 0
+ecom: 
+hd (string, Shellbuiltin) 10 1
+  name cl list of (string, Shellbuiltin) 0 0
+ecom to: 
+name bname (string, Shellbuiltin) 0 0
+generate desc for (string, Shellbuiltin)
+ecom: 
+= Shellbuiltin 10 1
+  name mod Shellbuiltin 0 0
+  name bmod Shellbuiltin 0 0
+ecom: 
+name bmod Shellbuiltin 0 0
+ecom to: 
+name mod Shellbuiltin 0 0
+ecom: 
+= list of (string, Shellbuiltin) 10 1
+  name bl list of (string, Shellbuiltin) 0 0
+  :: list of (string, Shellbuiltin) 10 1
+    hd (string, Shellbuiltin) 10 1
+      name cl list of (string, Shellbuiltin) 0 0
+    name bl list of (string, Shellbuiltin) 0 0
+ecom: 
+:: list of (string, Shellbuiltin) 10 1
+  hd (string, Shellbuiltin) 10 1
+    name cl list of (string, Shellbuiltin) 0 0
+  name bl list of (string, Shellbuiltin) 0 0
+ecom to: 
+name bl list of (string, Shellbuiltin) 0 0
+eacom: 
+hd (string, Shellbuiltin) 10 1
+  name cl list of (string, Shellbuiltin) 0 0
+generate desc for (string, Shellbuiltin)
+ecom: 
+hd (string, Shellbuiltin) 10 1
+  name cl list of (string, Shellbuiltin) 0 0
+ecom to: 
+name .b340 (string, Shellbuiltin) 0 0
+generate desc for (string, Shellbuiltin)
+generate desc for (string, Shellbuiltin)
+ecom: 
+= string 10 1
+  * string 0 0
+    adr int 13 1
+      name .b340 (string, Shellbuiltin) 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+* string 0 0
+  adr int 13 1
+    name .b340 (string, Shellbuiltin) 0 0
+ecom: 
+= Shellbuiltin 10 1
+  * Shellbuiltin 0 0
+    + int 13 1
+      adr int 13 1
+        name .b340 (string, Shellbuiltin) 0 0
+      const t1 (8) int 6 0
+  name nil Shellbuiltin 1 0
+ecom: 
+name nil Shellbuiltin 1 0
+ecom to: 
+* Shellbuiltin 0 0
+  + int 13 1
+    adr int 13 1
+      name .b340 (string, Shellbuiltin) 0 0
+    const t1 (8) int 6 0
+ecom: 
+= string 10 1
+  * string 0 0
+    adr int 13 1
+      name bname (string, Shellbuiltin) 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+* string 0 0
+  adr int 13 1
+    name bname (string, Shellbuiltin) 0 0
+ecom: 
+= Shellbuiltin 10 1
+  * Shellbuiltin 0 0
+    + int 13 1
+      adr int 13 1
+        name bname (string, Shellbuiltin) 0 0
+      const t1 (8) int 6 0
+  name nil Shellbuiltin 1 0
+ecom: 
+name nil Shellbuiltin 1 0
+ecom to: 
+* Shellbuiltin 0 0
+  + int 13 1
+    adr int 13 1
+      name bname (string, Shellbuiltin) 0 0
+    const t1 (8) int 6 0
+ecom: 
+= Shellbuiltin 10 1
+  name bmod Shellbuiltin 0 0
+  name nil Shellbuiltin 1 0
+ecom: 
+name nil Shellbuiltin 1 0
+ecom to: 
+name bmod Shellbuiltin 0 0
+ecom: 
+= list of (string, Shellbuiltin) 10 1
+  name cl list of (string, Shellbuiltin) 0 0
+  tl list of (string, Shellbuiltin) 10 1
+    name cl list of (string, Shellbuiltin) 0 0
+ecom: 
+tl list of (string, Shellbuiltin) 10 1
+  name cl list of (string, Shellbuiltin) 0 0
+ecom to: 
+name cl list of (string, Shellbuiltin) 0 0
+ecom: 
+call no type 10 2
+  name diagnostic fn(ctxt: ref Context, s: string) 11 1
+  seq no type 10 2
+    name ctxt ref Context 0 0
+    seq no type 10 2
+      call string 10 2
+        -> fn(s: string, nil: string, *): string 12 1
+          name sys Sys 1 0
+          name sprint nothing 11 1
+        seq no type 10 1
+          const module %s not found string 1 0
+          seq no type 10 1
+            name name string 0 0
+generate desc for big
+ecom: 
+call string 10 2
+  -> fn(s: string, nil: string, *): string 12 1
+    name sys Sys 1 0
+    name sprint nothing 11 1
+  seq no type 10 1
+    const module %s not found string 1 0
+    seq no type 10 1
+      name name string 0 0
+ecom to: 
+name .t339 string 0 0
+generate desc for Sys->sprint
+descmap offset 0
+descmap s type string offset 64 (d->offset=64 start=0) returns 64
+descmap type string offset 72 returns 72
+generate desc for big
+ecom: 
+const module %s not found string 1 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b342 big 0 0
+    const (64) int 6 0
+ecom: 
+name name string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b342 big 0 0
+    const (72) int 6 0
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b341 big 0 0
+    const (64) int 6 0
+ecom: 
+name .t339 string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b341 big 0 0
+    const (72) int 6 0
+ecom: 
+= string 10 1
+  name .t339 string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name .t339 string 0 0
+ecom: 
+const not found string 1 0
+ecom to: 
+* string 8 0
+  name .ret int 0 0
+ecom: 
+= list of (string, Shellbuiltin) 10 1
+  * list of (string, Shellbuiltin) 10 1
+    + int 10 1
+      * ref Environment 8 0
+        name ctxt ref Context 0 0
+      const bmods (16) int 6 0
+  name nil polymorphic type 1 0
+eacom: 
+* list of (string, Shellbuiltin) 10 1
+  + int 10 1
+    * ref Environment 8 0
+      name ctxt ref Context 0 0
+    const bmods (16) int 6 0
+ecom: 
+* ref Environment 8 0
+  name ctxt ref Context 0 0
+ecom to: 
+name .t339 ref Environment 0 0
+ecom: 
+name nil list of (string, Shellbuiltin) 1 0
+ecom to: 
+* list of (string, Shellbuiltin) 8 1
+  + int 15 1
+    name .t339 ref Environment 0 0
+    const bmods (16) int 6 0
+ecom: 
+= ref Environment 10 1
+  name .t339 ref Environment 0 0
+  name nil ref Environment 1 0
+ecom: 
+name nil ref Environment 1 0
+ecom to: 
+name .t339 ref Environment 0 0
+ecom: 
+= list of (string, Shellbuiltin) 10 2
+  * list of (string, Shellbuiltin) 10 1
+    + int 10 1
+      * ref Environment 8 0
+        name ctxt ref Context 0 0
+      const bmods (16) int 6 0
+  :: list of (string, Shellbuiltin) 10 2
+    hd (string, Shellbuiltin) 10 1
+      name bl list of (string, Shellbuiltin) 0 0
+    * list of (string, Shellbuiltin) 10 1
+      + int 10 1
+        * ref Environment 8 0
+          name ctxt ref Context 0 0
+        const bmods (16) int 6 0
+eacom: 
+* list of (string, Shellbuiltin) 10 1
+  + int 10 1
+    * ref Environment 8 0
+      name ctxt ref Context 0 0
+    const bmods (16) int 6 0
+ecom: 
+* ref Environment 8 0
+  name ctxt ref Context 0 0
+ecom to: 
+name .t339 ref Environment 0 0
+ecom: 
+:: list of (string, Shellbuiltin) 10 2
+  hd (string, Shellbuiltin) 10 1
+    name bl list of (string, Shellbuiltin) 0 0
+  * list of (string, Shellbuiltin) 10 1
+    + int 10 1
+      * ref Environment 8 0
+        name ctxt ref Context 0 0
+      const bmods (16) int 6 0
+ecom to: 
+* list of (string, Shellbuiltin) 8 1
+  + int 15 1
+    name .t339 ref Environment 0 0
+    const bmods (16) int 6 0
+eacom: 
+hd (string, Shellbuiltin) 10 1
+  name bl list of (string, Shellbuiltin) 0 0
+generate desc for (string, Shellbuiltin)
+descmap adt offset 0
+descmap offset 0
+descmap t0 type string offset 0 (d->offset=0 start=0) returns 0
+descmap t1 type Shellbuiltin offset 8 (d->offset=8 start=0) returns 8
+generate desc for (string, Shellbuiltin)
+	desc	$-1,16,"c0"
+ecom: 
+hd (string, Shellbuiltin) 10 1
+  name bl list of (string, Shellbuiltin) 0 0
+ecom to: 
+name .b340 (string, Shellbuiltin) 0 0
+generate desc for (string, Shellbuiltin)
+ecom: 
+* list of (string, Shellbuiltin) 10 1
+  + int 10 1
+    * ref Environment 8 0
+      name ctxt ref Context 0 0
+    const bmods (16) int 6 0
+ecom to: 
+name .t343 list of (string, Shellbuiltin) 0 0
+eacom: 
+* list of (string, Shellbuiltin) 10 1
+  + int 10 1
+    * ref Environment 8 0
+      name ctxt ref Context 0 0
+    const bmods (16) int 6 0
+ecom: 
+* ref Environment 8 0
+  name ctxt ref Context 0 0
+ecom to: 
+name .t343 ref Environment 0 0
+generate desc for (string, Shellbuiltin)
+ecom: 
+= string 10 1
+  * string 0 0
+    adr int 13 1
+      name .b340 (string, Shellbuiltin) 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+* string 0 0
+  adr int 13 1
+    name .b340 (string, Shellbuiltin) 0 0
+ecom: 
+= Shellbuiltin 10 1
+  * Shellbuiltin 0 0
+    + int 13 1
+      adr int 13 1
+        name .b340 (string, Shellbuiltin) 0 0
+      const t1 (8) int 6 0
+  name nil Shellbuiltin 1 0
+ecom: 
+name nil Shellbuiltin 1 0
+ecom to: 
+* Shellbuiltin 0 0
+  + int 13 1
+    adr int 13 1
+      name .b340 (string, Shellbuiltin) 0 0
+    const t1 (8) int 6 0
+ecom: 
+= list of (string, Shellbuiltin) 10 1
+  name .t343 list of (string, Shellbuiltin) 0 0
+  name nil list of (string, Shellbuiltin) 1 0
+ecom: 
+name nil list of (string, Shellbuiltin) 1 0
+ecom to: 
+name .t343 list of (string, Shellbuiltin) 0 0
+ecom: 
+= ref Environment 10 1
+  name .t339 ref Environment 0 0
+  name nil ref Environment 1 0
+ecom: 
+name nil ref Environment 1 0
+ecom to: 
+name .t339 ref Environment 0 0
+ecom: 
+= list of (string, Shellbuiltin) 10 1
+  name bl list of (string, Shellbuiltin) 0 0
+  tl list of (string, Shellbuiltin) 10 1
+    name bl list of (string, Shellbuiltin) 0 0
+ecom: 
+tl list of (string, Shellbuiltin) 10 1
+  name bl list of (string, Shellbuiltin) 0 0
+ecom to: 
+name bl list of (string, Shellbuiltin) 0 0
+ecom: 
+call no type 10 2
+  name removebuiltinmod fn(b: ref Builtins, mod: Shellbuiltin) 11 1
+  seq no type 10 2
+    * ref Builtins 10 1
+      + int 10 1
+        * ref Environment 8 0
+          name ctxt ref Context 0 0
+        const builtins (8) int 6 0
+    seq no type 10 1
+      name mod Shellbuiltin 0 0
+generate desc for big
+ecom: 
+* ref Builtins 10 1
+  + int 10 1
+    * ref Environment 8 0
+      name ctxt ref Context 0 0
+    const builtins (8) int 6 0
+ecom to: 
+* ref Builtins 8 0
+  + int 15 0
+    name .b342 big 0 0
+    const (64) int 6 0
+eacom: 
+* ref Builtins 10 1
+  + int 10 1
+    * ref Environment 8 0
+      name ctxt ref Context 0 0
+    const builtins (8) int 6 0
+ecom: 
+* ref Environment 8 0
+  name ctxt ref Context 0 0
+ecom to: 
+name .t343 ref Environment 0 0
+ecom: 
+= ref Environment 10 1
+  name .t343 ref Environment 0 0
+  name nil ref Environment 1 0
+ecom: 
+name nil ref Environment 1 0
+ecom to: 
+name .t343 ref Environment 0 0
+ecom: 
+name mod Shellbuiltin 0 0
+ecom to: 
+* Shellbuiltin 8 0
+  + int 15 0
+    name .b342 big 0 0
+    const (72) int 6 0
+ecom: 
+call no type 10 2
+  name removebuiltinmod fn(b: ref Builtins, mod: Shellbuiltin) 11 1
+  seq no type 10 2
+    * ref Builtins 10 1
+      * ref Environment 8 0
+        name ctxt ref Context 0 0
+    seq no type 10 1
+      name mod Shellbuiltin 0 0
+generate desc for big
+ecom: 
+* ref Builtins 10 1
+  * ref Environment 8 0
+    name ctxt ref Context 0 0
+ecom to: 
+* ref Builtins 8 0
+  + int 15 0
+    name .b342 big 0 0
+    const (64) int 6 0
+eacom: 
+* ref Builtins 10 1
+  * ref Environment 8 0
+    name ctxt ref Context 0 0
+ecom: 
+* ref Environment 8 0
+  name ctxt ref Context 0 0
+ecom to: 
+name .t343 ref Environment 0 0
+ecom: 
+= ref Environment 10 1
+  name .t343 ref Environment 0 0
+  name nil ref Environment 1 0
+ecom: 
+name nil ref Environment 1 0
+ecom to: 
+name .t343 ref Environment 0 0
+ecom: 
+name mod Shellbuiltin 0 0
+ecom to: 
+* Shellbuiltin 8 0
+  + int 15 0
+    name .b342 big 0 0
+    const (72) int 6 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* polymorphic type 8 0
+  name .ret int 0 0
+fn: unloadmodule
+64: argument ctxt ref Context ref 7
+72: argument name string ref 2
+80: local bl list of (string, Shellbuiltin) ref 6
+88: local cl list of (string, Shellbuiltin) ref 6
+96: local mod Shellbuiltin ref 4
+104: local .b342 big ref 3
+112: local bname string ref 2
+120: local bmod Shellbuiltin ref 2
+128: local .b340 (string, Shellbuiltin) ref 2
+144: local .b341 big ref 1
+152: local .t339 ref Environment ref 1
+160: local .t343 list of (string, Shellbuiltin) ref 1
+generate desc for unloadmodule
+descmap offset 0
+descmap ctxt type ref Context offset 64 (d->offset=64 start=0) returns 64
+descmap name type string offset 72 (d->offset=72 start=0) returns 72
+descmap bl type list of (string, Shellbuiltin) offset 80 (d->offset=80 start=0) returns 80
+descmap cl type list of (string, Shellbuiltin) offset 88 (d->offset=88 start=0) returns 88
+descmap mod type Shellbuiltin offset 96 (d->offset=96 start=0) returns 96
+descmap .b342 type big offset 104 (d->offset=104 start=0) returns -1
+descmap bname type string offset 112 (d->offset=112 start=0) returns 112
+descmap bmod type Shellbuiltin offset 120 (d->offset=120 start=0) returns 120
+descmap adt offset 128
+descmap offset 128
+descmap t0 type string offset 128 (d->offset=0 start=128) returns 128
+descmap t1 type Shellbuiltin offset 136 (d->offset=8 start=128) returns 136
+descmap .b340 type (string, Shellbuiltin) offset 128 (d->offset=128 start=0) returns 136
+descmap .b341 type big offset 144 (d->offset=144 start=0) returns -1
+descmap .t339 type ref Environment offset 152 (d->offset=152 start=0) returns 152
+descmap .t343 type list of (string, Shellbuiltin) offset 160 (d->offset=160 start=0) returns 160
+fncom: executable 3 6e9b10
+ecom: 
+= (int, Sys->Dir) 10 1
+  tuple (int, Sys->Dir) 10 1
+    seq nothing 10 1
+      name ok int 0 0
+      seq nothing 10 1
+        name info Sys->Dir 0 0
+  name s (int, Sys->Dir) 0 0
+ecom: 
+name s (int, Sys->Dir) 0 0
+ecom to: 
+name ok (int, Sys->Dir) 0 0
+generate desc for (int, Sys->Dir)
+descmap adt offset 0
+descmap offset 0
+descmap t0 type int offset 0 (d->offset=0 start=0) returns -1
+descmap adt offset 8
+descmap offset 8
+descmap name type string offset 8 (d->offset=0 start=8) returns 8
+descmap uid type string offset 16 (d->offset=8 start=8) returns 16
+descmap gid type string offset 24 (d->offset=16 start=8) returns 24
+descmap muid type string offset 32 (d->offset=24 start=8) returns 32
+descmap adt offset 40
+descmap offset 40
+descmap path type big offset 40 (d->offset=0 start=40) returns -1
+descmap vers type int offset 48 (d->offset=8 start=40) returns -1
+descmap qtype type int offset 52 (d->offset=12 start=40) returns -1
+descmap qid type Sys->Qid offset 40 (d->offset=32 start=8) returns -1
+descmap mode type int offset 56 (d->offset=48 start=8) returns -1
+descmap atime type int offset 60 (d->offset=52 start=8) returns -1
+descmap mtime type int offset 64 (d->offset=56 start=8) returns -1
+descmap length type big offset 72 (d->offset=64 start=8) returns -1
+descmap dtype type int offset 80 (d->offset=72 start=8) returns -1
+descmap dev type int offset 84 (d->offset=76 start=8) returns -1
+descmap t1 type Sys->Dir offset 8 (d->offset=8 start=0) returns 32
+generate desc for (int, Sys->Dir)
+	desc	$-1,88,"78"
+ecom: 
+&& int 10 2
+  && int 10 2
+    != int 10 1
+      name ok int 0 0
+      const (-1) int 6 0
+    == int 10 1
+      & int 10 1
+        * int 0 0
+          + int 13 1
+            adr int 13 1
+              name info Sys->Dir 0 0
+            const mode (48) int 6 0
+        const .i.80000000 (-2147483648) int 1 0
+      const (0) int 6 0
+  != int 10 1
+    & int 10 1
+      * int 0 0
+        + int 13 1
+          adr int 13 1
+            name info Sys->Dir 0 0
+          const mode (48) int 6 0
+      name mode int 0 0
+    const (0) int 6 0
+ecom to: 
+* int 8 0
+  name .ret int 0 0
+eacom: 
+& int 10 1
+  * int 0 0
+    + int 13 1
+      adr int 13 1
+        name info Sys->Dir 0 0
+      const mode (48) int 6 0
+  const .i.80000000 (-2147483648) int 1 0
+ecom: 
+& int 10 1
+  * int 0 0
+    + int 13 1
+      adr int 13 1
+        name info Sys->Dir 0 0
+      const mode (48) int 6 0
+  const .i.80000000 (-2147483648) int 1 0
+ecom to: 
+name .t344 int 0 0
+eacom: 
+& int 10 1
+  * int 0 0
+    + int 13 1
+      adr int 13 1
+        name info Sys->Dir 0 0
+      const mode (48) int 6 0
+  name mode int 0 0
+ecom: 
+& int 10 1
+  * int 0 0
+    + int 13 1
+      adr int 13 1
+        name info Sys->Dir 0 0
+      const mode (48) int 6 0
+  name mode int 0 0
+ecom to: 
+name .t344 int 0 0
+fn: executable
+64: argument s (int, Sys->Dir) ref 1
+152: argument mode int ref 1
+160: local ok int ref 2
+168: local info Sys->Dir ref 3
+248: local .t344 int ref 1
+generate desc for executable
+descmap offset 0
+descmap adt offset 64
+descmap offset 64
+descmap t0 type int offset 64 (d->offset=0 start=64) returns -1
+descmap adt offset 72
+descmap offset 72
+descmap name type string offset 72 (d->offset=0 start=72) returns 72
+descmap uid type string offset 80 (d->offset=8 start=72) returns 80
+descmap gid type string offset 88 (d->offset=16 start=72) returns 88
+descmap muid type string offset 96 (d->offset=24 start=72) returns 96
+descmap adt offset 104
+descmap offset 104
+descmap path type big offset 104 (d->offset=0 start=104) returns -1
+descmap vers type int offset 112 (d->offset=8 start=104) returns -1
+descmap qtype type int offset 116 (d->offset=12 start=104) returns -1
+descmap qid type Sys->Qid offset 104 (d->offset=32 start=72) returns -1
+descmap mode type int offset 120 (d->offset=48 start=72) returns -1
+descmap atime type int offset 124 (d->offset=52 start=72) returns -1
+descmap mtime type int offset 128 (d->offset=56 start=72) returns -1
+descmap length type big offset 136 (d->offset=64 start=72) returns -1
+descmap dtype type int offset 144 (d->offset=72 start=72) returns -1
+descmap dev type int offset 148 (d->offset=76 start=72) returns -1
+descmap t1 type Sys->Dir offset 72 (d->offset=8 start=64) returns 96
+descmap s type (int, Sys->Dir) offset 64 (d->offset=64 start=0) returns 96
+descmap mode type int offset 152 (d->offset=152 start=0) returns -1
+descmap ok type int offset 160 (d->offset=160 start=0) returns -1
+descmap adt offset 168
+descmap offset 168
+descmap name type string offset 168 (d->offset=0 start=168) returns 168
+descmap uid type string offset 176 (d->offset=8 start=168) returns 176
+descmap gid type string offset 184 (d->offset=16 start=168) returns 184
+descmap muid type string offset 192 (d->offset=24 start=168) returns 192
+descmap adt offset 200
+descmap offset 200
+descmap path type big offset 200 (d->offset=0 start=200) returns -1
+descmap vers type int offset 208 (d->offset=8 start=200) returns -1
+descmap qtype type int offset 212 (d->offset=12 start=200) returns -1
+descmap qid type Sys->Qid offset 200 (d->offset=32 start=168) returns -1
+descmap mode type int offset 216 (d->offset=48 start=168) returns -1
+descmap atime type int offset 220 (d->offset=52 start=168) returns -1
+descmap mtime type int offset 224 (d->offset=56 start=168) returns -1
+descmap length type big offset 232 (d->offset=64 start=168) returns -1
+descmap dtype type int offset 240 (d->offset=72 start=168) returns -1
+descmap dev type int offset 244 (d->offset=76 start=168) returns -1
+descmap info type Sys->Dir offset 168 (d->offset=168 start=0) returns 192
+descmap .t344 type int offset 248 (d->offset=248 start=0) returns -1
+fncom: quoted 7 4c3e28
+ecom: 
+= string 10 1
+  name s string 0 0
+  const  string 1 0
+ecom: 
+const  string 1 0
+ecom to: 
+name s string 0 0
+ecom: 
+= ref Listnode 10 1
+  name el ref Listnode 0 0
+  hd ref Listnode 10 1
+    name val list of ref Listnode 0 0
+ecom: 
+hd ref Listnode 10 1
+  name val list of ref Listnode 0 0
+ecom to: 
+name el ref Listnode 0 0
+ecom: 
++= string 10 2
+  name s string 0 0
+  call string 10 2
+    name quote fn(s: string, glob: int): string 11 1
+    seq no type 10 1
+      * string 8 0
+        + int 15 1
+          name el ref Listnode 0 0
+          const word (8) int 6 0
+      seq no type 10 1
+        const (0) int 6 0
+eacom: 
+call string 10 2
+  name quote fn(s: string, glob: int): string 11 1
+  seq no type 10 1
+    * string 8 0
+      + int 15 1
+        name el ref Listnode 0 0
+        const word (8) int 6 0
+    seq no type 10 1
+      const (0) int 6 0
+ecom: 
+call string 10 2
+  name quote fn(s: string, glob: int): string 11 1
+  seq no type 10 1
+    * string 8 0
+      + int 15 1
+        name el ref Listnode 0 0
+        const word (8) int 6 0
+    seq no type 10 1
+      const (0) int 6 0
+ecom to: 
+name .t345 string 0 0
+generate desc for big
+ecom: 
+* string 8 0
+  + int 15 1
+    name el ref Listnode 0 0
+    const word (8) int 6 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b346 big 0 0
+    const (64) int 6 0
+ecom: 
+const (0) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b346 big 0 0
+    const (72) int 6 0
+ecom: 
+= string 10 1
+  name .t345 string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name .t345 string 0 0
+ecom: 
+= string 10 2
+  name cmd string 0 0
+  call string 10 2
+    name cmd2string fn(n: ref Node): string 11 1
+    seq no type 10 1
+      * ref Node 8 0
+        name el ref Listnode 0 0
+ecom: 
+call string 10 2
+  name cmd2string fn(n: ref Node): string 11 1
+  seq no type 10 1
+    * ref Node 8 0
+      name el ref Listnode 0 0
+ecom to: 
+name cmd string 0 0
+generate desc for big
+ecom: 
+* ref Node 8 0
+  name el ref Listnode 0 0
+ecom to: 
+* ref Node 8 0
+  + int 15 0
+    name .b346 big 0 0
+    const (64) int 6 0
+ecom: 
+= string 10 2
+  name cmd string 0 0
+  call string 10 2
+    name quote fn(s: string, glob: int): string 11 1
+    seq no type 10 1
+      name cmd string 0 0
+      seq no type 10 1
+        const (0) int 6 0
+ecom: 
+call string 10 2
+  name quote fn(s: string, glob: int): string 11 1
+  seq no type 10 1
+    name cmd string 0 0
+    seq no type 10 1
+      const (0) int 6 0
+ecom to: 
+name cmd string 0 0
+generate desc for big
+ecom: 
+name cmd string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b346 big 0 0
+    const (64) int 6 0
+ecom: 
+const (0) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b346 big 0 0
+    const (72) int 6 0
+ecom: 
++= string 10 1
+  name s string 0 0
+  name cmd string 0 0
+ecom: 
+= string 10 1
+  name cmd string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name cmd string 0 0
+eacom: 
+tl list of ref Listnode 10 1
+  name val list of ref Listnode 0 0
+ecom: 
+tl list of ref Listnode 10 1
+  name val list of ref Listnode 0 0
+ecom to: 
+name .t345 list of ref Listnode 0 0
+ecom: 
+= list of ref Listnode 10 1
+  name .t345 list of ref Listnode 0 0
+  name nil list of ref Listnode 1 0
+ecom: 
+name nil list of ref Listnode 1 0
+ecom to: 
+name .t345 list of ref Listnode 0 0
+ecom: 
+= int 10 1
+  inds int 10 1
+    name s string 0 0
+    len int 10 1
+      name s string 0 0
+  const (32) int 6 0
+ecom: 
+len int 10 1
+  name s string 0 0
+ecom to: 
+name .t347 int 0 0
+ecom: 
+= ref Listnode 10 1
+  name el ref Listnode 0 0
+  name nil ref Listnode 1 0
+ecom: 
+name nil ref Listnode 1 0
+ecom to: 
+name el ref Listnode 0 0
+ecom: 
+= list of ref Listnode 10 1
+  name val list of ref Listnode 0 0
+  tl list of ref Listnode 10 1
+    name val list of ref Listnode 0 0
+ecom: 
+tl list of ref Listnode 10 1
+  name val list of ref Listnode 0 0
+ecom to: 
+name val list of ref Listnode 0 0
+ecom: 
+name s string 0 0
+ecom to: 
+* string 8 0
+  name .ret int 0 0
+fn: quoted
+64: argument val list of ref Listnode ref 5
+72: argument quoteblocks int ref 2
+76: local .t347 int ref 1
+80: local s string ref 6
+88: local el ref Listnode ref 5
+96: local cmd string ref 4
+104: local .b346 big ref 3
+112: local .t345 string ref 1
+generate desc for quoted
+descmap offset 0
+descmap val type list of ref Listnode offset 64 (d->offset=64 start=0) returns 64
+descmap quoteblocks type int offset 72 (d->offset=72 start=0) returns -1
+descmap .t347 type int offset 76 (d->offset=76 start=0) returns -1
+descmap s type string offset 80 (d->offset=80 start=0) returns 80
+descmap el type ref Listnode offset 88 (d->offset=88 start=0) returns 88
+descmap cmd type string offset 96 (d->offset=96 start=0) returns 96
+descmap .b346 type big offset 104 (d->offset=104 start=0) returns -1
+descmap .t345 type string offset 112 (d->offset=112 start=0) returns 112
+fncom: setstatus 4 6e9bd0
+ecom: 
+call no type 10 2
+  name setlocal fn(ctxt: self ref Context, name: string, val: list of ref Listnode) 11 1
+  seq nothing 10 1
+    name ctxt ref Context 0 0
+    seq no type 10 1
+      const status string 1 0
+      seq no type 10 1
+        :: list of ref Listnode 10 1
+          ref ref Listnode 10 1
+            tuple Listnode 10 1
+              seq no type 10 1
+                name nil polymorphic type 1 0
+                seq no type 10 1
+                  name val string 0 0
+          name nil polymorphic type 1 0
+generate desc for big
+ecom: 
+name ctxt ref Context 0 0
+ecom to: 
+* ref Context 8 0
+  + int 15 0
+    name .b348 big 0 0
+    const (64) int 6 0
+ecom: 
+const status string 1 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b348 big 0 0
+    const (72) int 6 0
+ecom: 
+:: list of ref Listnode 10 1
+  ref ref Listnode 10 1
+    tuple Listnode 10 1
+      seq no type 10 1
+        name nil polymorphic type 1 0
+        seq no type 10 1
+          name val string 0 0
+  name nil polymorphic type 1 0
+ecom to: 
+* list of ref Listnode 8 0
+  + int 15 0
+    name .b348 big 0 0
+    const (80) int 6 0
+eacom: 
+ref ref Listnode 10 1
+  tuple Listnode 10 1
+    seq no type 10 1
+      name nil polymorphic type 1 0
+      seq no type 10 1
+        name val string 0 0
+ecom: 
+ref ref Listnode 10 1
+  tuple Listnode 10 1
+    seq no type 10 1
+      name nil polymorphic type 1 0
+      seq no type 10 1
+        name val string 0 0
+ecom to: 
+name .t349 ref Listnode 0 0
+generate desc for Listnode
+ecom: 
+tuple Listnode 10 1
+  seq no type 10 1
+    name nil polymorphic type 1 0
+    seq no type 10 1
+      name val string 0 0
+ecom to: 
+* Listnode 8 0
+  name .t349 ref Listnode 0 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* ref Node 8 0
+  + int 15 1
+    adr int 15 1
+      * Listnode 8 0
+        name .t349 ref Listnode 0 0
+    const (0) int 6 0
+ecom: 
+name val string 0 0
+ecom to: 
+* string 8 0
+  + int 15 1
+    adr int 15 1
+      * Listnode 8 0
+        name .t349 ref Listnode 0 0
+    const (8) int 6 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+name .t350 list of ref Listnode 0 0
+ecom: 
+= ref Listnode 10 1
+  name .t349 ref Listnode 0 0
+  name nil ref Listnode 1 0
+ecom: 
+name nil ref Listnode 1 0
+ecom to: 
+name .t349 ref Listnode 0 0
+ecom: 
+= list of ref Listnode 10 1
+  name .t350 list of ref Listnode 0 0
+  name nil list of ref Listnode 1 0
+ecom: 
+name nil list of ref Listnode 1 0
+ecom to: 
+name .t350 list of ref Listnode 0 0
+ecom: 
+name val string 0 0
+ecom to: 
+* string 8 0
+  name .ret int 0 0
+fn: setstatus
+64: argument ctxt ref Context ref 1
+72: argument val string ref 2
+80: local .b348 big ref 1
+88: local .t349 ref Listnode ref 1
+96: local .t350 list of ref Listnode ref 1
+generate desc for setstatus
+descmap offset 0
+descmap ctxt type ref Context offset 64 (d->offset=64 start=0) returns 64
+descmap val type string offset 72 (d->offset=72 start=0) returns 72
+descmap .b348 type big offset 80 (d->offset=80 start=0) returns -1
+descmap .t349 type ref Listnode offset 88 (d->offset=88 start=0) returns 88
+descmap .t350 type list of ref Listnode offset 96 (d->offset=96 start=0) returns 96
+fncom: doparse 4 6e9c90
+ecom: 
+= string 10 1
+  * string 8 0
+    + int 15 1
+      name l ref YYLEX 0 0
+      const prompt (112) int 6 0
+  name prompt string 0 0
+ecom: 
+name prompt string 0 0
+ecom to: 
+* string 8 0
+  + int 15 1
+    name l ref YYLEX 0 0
+    const prompt (112) int 6 0
+ecom: 
+= string 10 1
+  * string 8 0
+    + int 15 1
+      name l ref YYLEX 0 0
+      const err (32) int 6 0
+  name nil polymorphic type 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+* string 8 0
+  + int 15 1
+    name l ref YYLEX 0 0
+    const err (32) int 6 0
+ecom: 
+= ref Node 10 1
+  * ref Node 8 0
+    name l ref YYLEX 0 0
+  name nil polymorphic type 1 0
+ecom: 
+name nil ref Node 1 0
+ecom to: 
+* ref Node 8 0
+  name l ref YYLEX 0 0
+ecom: 
+used int 10 2
+  call int 10 2
+    name yyparse fn(yylex: ref YYLEX): int 11 1
+    seq no type 10 1
+      name l ref YYLEX 0 0
+ecom: 
+call int 10 2
+  name yyparse fn(yylex: ref YYLEX): int 11 1
+  seq no type 10 1
+    name l ref YYLEX 0 0
+ecom to: 
+name .t351 int 0 0
+generate desc for big
+ecom: 
+name l ref YYLEX 0 0
+ecom to: 
+* ref YYLEX 8 0
+  + int 15 0
+    name .b352 big 0 0
+    const (64) int 6 0
+ecom: 
+= int 10 1
+  * int 8 0
+    + int 15 1
+      name l ref YYLEX 0 0
+      const lastnl (120) int 6 0
+  const (0) int 6 0
+ecom: 
+const (0) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 1
+    name l ref YYLEX 0 0
+    const lastnl (120) int 6 0
+ecom: 
+= string 10 1
+  * string 8 0
+    + int 15 1
+      name l ref YYLEX 0 0
+      const err (32) int 6 0
+  const unknown error string 1 0
+ecom: 
+const unknown error string 1 0
+ecom to: 
+* string 8 0
+  + int 15 1
+    name l ref YYLEX 0 0
+    const err (32) int 6 0
+ecom: 
+= string 10 2
+  name s string 0 0
+  call string 10 2
+    -> fn(s: string, nil: string, nil: int, nil: string, *): string 12 1
+      name sys Sys 1 0
+      name sprint nothing 11 1
+    seq no type 10 1
+      const %s:%d: %s string 1 0
+      seq no type 10 1
+        * string 8 0
+          + int 15 1
+            name l ref YYLEX 0 0
+            const path (48) int 6 0
+        seq no type 10 1
+          * int 8 0
+            + int 15 1
+              name l ref YYLEX 0 0
+              const errline (40) int 6 0
+          seq no type 10 1
+            * string 8 0
+              + int 15 1
+                name l ref YYLEX 0 0
+                const err (32) int 6 0
+ecom: 
+call string 10 2
+  -> fn(s: string, nil: string, nil: int, nil: string, *): string 12 1
+    name sys Sys 1 0
+    name sprint nothing 11 1
+  seq no type 10 1
+    const %s:%d: %s string 1 0
+    seq no type 10 1
+      * string 8 0
+        + int 15 1
+          name l ref YYLEX 0 0
+          const path (48) int 6 0
+      seq no type 10 1
+        * int 8 0
+          + int 15 1
+            name l ref YYLEX 0 0
+            const errline (40) int 6 0
+        seq no type 10 1
+          * string 8 0
+            + int 15 1
+              name l ref YYLEX 0 0
+              const err (32) int 6 0
+ecom to: 
+name s string 0 0
+generate desc for Sys->sprint
+descmap offset 0
+descmap s type string offset 64 (d->offset=64 start=0) returns 64
+descmap type string offset 72 returns 72
+descmap type int offset 80 returns -1
+descmap type string offset 88 returns 88
+generate desc for big
+ecom: 
+const %s:%d: %s string 1 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b352 big 0 0
+    const (64) int 6 0
+ecom: 
+* string 8 0
+  + int 15 1
+    name l ref YYLEX 0 0
+    const path (48) int 6 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b352 big 0 0
+    const (72) int 6 0
+ecom: 
+* int 8 0
+  + int 15 1
+    name l ref YYLEX 0 0
+    const errline (40) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b352 big 0 0
+    const (80) int 6 0
+ecom: 
+* string 8 0
+  + int 15 1
+    name l ref YYLEX 0 0
+    const err (32) int 6 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b352 big 0 0
+    const (88) int 6 0
+ecom: 
+= string 10 1
+  name s string 0 0
+  + string 10 1
+    + string 10 1
+      * string 8 0
+        + int 15 1
+          name l ref YYLEX 0 0
+          const path (48) int 6 0
+      const : parse error:  string 1 0
+    * string 8 0
+      + int 15 1
+        name l ref YYLEX 0 0
+        const err (32) int 6 0
+ecom: 
++ string 10 1
+  + string 10 1
+    * string 8 0
+      + int 15 1
+        name l ref YYLEX 0 0
+        const path (48) int 6 0
+    const : parse error:  string 1 0
+  * string 8 0
+    + int 15 1
+      name l ref YYLEX 0 0
+      const err (32) int 6 0
+ecom to: 
+name s string 0 0
+ecom: 
++ string 10 1
+  * string 8 0
+    + int 15 1
+      name l ref YYLEX 0 0
+      const path (48) int 6 0
+  const : parse error:  string 1 0
+ecom to: 
+name .t353 string 0 0
+ecom: 
+* string 8 0
+  + int 15 1
+    name l ref YYLEX 0 0
+    const path (48) int 6 0
+ecom to: 
+name .t353 string 0 0
+ecom: 
+= string 10 1
+  name .t353 string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name .t353 string 0 0
+ecom: 
+tuple (polymorphic type, string) 10 1
+  seq no type 10 1
+    name nil polymorphic type 1 0
+    seq no type 10 1
+      name s string 0 0
+ecom to: 
+* (polymorphic type, string) 8 0
+  name .ret int 0 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* polymorphic type 8 0
+  + int 15 1
+    adr int 15 1
+      * (polymorphic type, string) 8 0
+        name .ret int 0 0
+    const (0) int 6 0
+ecom: 
+name s string 0 0
+ecom to: 
+* string 8 0
+  + int 15 1
+    adr int 15 1
+      * (polymorphic type, string) 8 0
+        name .ret int 0 0
+    const (8) int 6 0
+ecom: 
+= string 10 1
+  name s string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name s string 0 0
+ecom: 
+tuple (ref Node, polymorphic type) 10 1
+  seq no type 10 1
+    * ref Node 8 0
+      name l ref YYLEX 0 0
+    seq no type 10 1
+      name nil polymorphic type 1 0
+ecom to: 
+* (ref Node, polymorphic type) 8 0
+  name .ret int 0 0
+ecom: 
+* ref Node 8 0
+  name l ref YYLEX 0 0
+ecom to: 
+* ref Node 8 0
+  + int 15 1
+    adr int 15 1
+      * (ref Node, polymorphic type) 8 0
+        name .ret int 0 0
+    const (0) int 6 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* polymorphic type 8 0
+  + int 15 1
+    adr int 15 1
+      * (ref Node, polymorphic type) 8 0
+        name .ret int 0 0
+    const (8) int 6 0
+fn: doparse
+64: argument l ref YYLEX ref 15
+72: argument prompt string ref 1
+80: argument showline int ref 1
+84: local .t351 int ref 1
+88: local s string ref 3
+96: local .b352 big ref 2
+104: local .t353 string ref 1
+generate desc for doparse
+descmap offset 0
+descmap l type ref YYLEX offset 64 (d->offset=64 start=0) returns 64
+descmap prompt type string offset 72 (d->offset=72 start=0) returns 72
+descmap showline type int offset 80 (d->offset=80 start=0) returns -1
+descmap .t351 type int offset 84 (d->offset=84 start=0) returns -1
+descmap s type string offset 88 (d->offset=88 start=0) returns 88
+descmap .b352 type big offset 96 (d->offset=96 start=0) returns -1
+descmap .t353 type string offset 104 (d->offset=104 start=0) returns 104
+fncom: initstring 3 4d3e10
+ecom: 
+= ref YYLEX 10 1
+  name ret ref YYLEX 0 0
+  ref ref YYLEX 10 1
+    name blanklex YYLEX 1 0
+ecom: 
+ref ref YYLEX 10 1
+  name blanklex YYLEX 1 0
+ecom to: 
+name ret ref YYLEX 0 0
+generate desc for YYLEX
+descmap adt offset 0
+descmap offset 0
+descmap adt offset 0
+descmap offset 0
+descmap node type ref Node offset 0 (d->offset=0 start=0) returns 0
+descmap word type string offset 8 (d->offset=8 start=0) returns 8
+descmap redir type ref Redir offset 16 (d->offset=16 start=0) returns 16
+descmap optype type int offset 24 (d->offset=24 start=0) returns -1
+descmap lval type YYSTYPE offset 0 (d->offset=0 start=0) returns 16
+descmap err type string offset 32 (d->offset=32 start=0) returns 32
+descmap errline type int offset 40 (d->offset=40 start=0) returns -1
+descmap path type string offset 48 (d->offset=48 start=0) returns 48
+descmap wasdollar type int offset 56 (d->offset=56 start=0) returns -1
+descmap atendword type int offset 60 (d->offset=60 start=0) returns -1
+descmap eof type int offset 64 (d->offset=64 start=0) returns -1
+descmap cbuf type array of int offset 72 (d->offset=72 start=0) returns 72
+descmap ncbuf type int offset 80 (d->offset=80 start=0) returns -1
+descmap f type ref Bufio->Iobuf offset 88 (d->offset=88 start=0) returns 88
+descmap s type string offset 96 (d->offset=96 start=0) returns 96
+descmap strpos type int offset 104 (d->offset=104 start=0) returns -1
+descmap linenum type int offset 108 (d->offset=108 start=0) returns -1
+descmap prompt type string offset 112 (d->offset=112 start=0) returns 112
+descmap lastnl type int offset 120 (d->offset=120 start=0) returns -1
+generate desc for YYLEX
+	desc	$-1,128,"ea5a"
+ecom: 
+name blanklex YYLEX 1 0
+ecom to: 
+* YYLEX 8 0
+  name .t354 ref YYLEX 0 0
+generate desc for YYLEX
+ecom: 
+= ref YYLEX 10 1
+  name .t354 ref YYLEX 0 0
+  name nil ref YYLEX 1 0
+ecom: 
+name nil ref YYLEX 1 0
+ecom to: 
+name .t354 ref YYLEX 0 0
+ecom: 
+= string 10 1
+  * string 8 0
+    + int 15 1
+      name ret ref YYLEX 0 0
+      const s (96) int 6 0
+  name s string 0 0
+ecom: 
+name s string 0 0
+ecom to: 
+* string 8 0
+  + int 15 1
+    name ret ref YYLEX 0 0
+    const s (96) int 6 0
+ecom: 
+= string 10 1
+  * string 8 0
+    + int 15 1
+      name ret ref YYLEX 0 0
+      const path (48) int 6 0
+  const internal string 1 0
+ecom: 
+const internal string 1 0
+ecom to: 
+* string 8 0
+  + int 15 1
+    name ret ref YYLEX 0 0
+    const path (48) int 6 0
+ecom: 
+= int 10 1
+  * int 8 0
+    + int 15 1
+      name ret ref YYLEX 0 0
+      const strpos (104) int 6 0
+  const (0) int 6 0
+ecom: 
+const (0) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 1
+    name ret ref YYLEX 0 0
+    const strpos (104) int 6 0
+ecom: 
+name ret ref YYLEX 0 0
+ecom to: 
+* ref YYLEX 8 0
+  name .ret int 0 0
+fn: initstring
+64: argument s string ref 1
+72: local ret ref YYLEX ref 5
+80: local .t354 ref YYLEX ref 1
+generate desc for YYLEX.initstring
+descmap offset 0
+descmap s type string offset 64 (d->offset=64 start=0) returns 64
+descmap ret type ref YYLEX offset 72 (d->offset=72 start=0) returns 72
+descmap .t354 type ref YYLEX offset 80 (d->offset=80 start=0) returns 80
+fncom: initfile 2 4d4430
+ecom: 
+= ref YYLEX 10 1
+  name lex ref YYLEX 0 0
+  ref ref YYLEX 10 1
+    name blanklex YYLEX 1 0
+ecom: 
+ref ref YYLEX 10 1
+  name blanklex YYLEX 1 0
+ecom to: 
+name lex ref YYLEX 0 0
+generate desc for YYLEX
+ecom: 
+name blanklex YYLEX 1 0
+ecom to: 
+* YYLEX 8 0
+  name .t355 ref YYLEX 0 0
+generate desc for YYLEX
+ecom: 
+= ref YYLEX 10 1
+  name .t355 ref YYLEX 0 0
+  name nil ref YYLEX 1 0
+ecom: 
+name nil ref YYLEX 1 0
+ecom to: 
+name .t355 ref YYLEX 0 0
+ecom: 
+= ref Bufio->Iobuf 10 2
+  * ref Bufio->Iobuf 8 0
+    + int 15 1
+      name lex ref YYLEX 0 0
+      const f (88) int 6 0
+  call ref Bufio->Iobuf 10 2
+    -> fn(fd: ref Sys->FD, mode: int): ref Bufio->Iobuf 12 1
+      name bufio Bufio 1 0
+      name fopen nothing 11 1
+    seq no type 10 1
+      name fd ref Sys->FD 0 0
+      seq no type 10 1
+        const OREAD (0) int 6 0
+ecom: 
+call ref Bufio->Iobuf 10 2
+  -> fn(fd: ref Sys->FD, mode: int): ref Bufio->Iobuf 12 1
+    name bufio Bufio 1 0
+    name fopen nothing 11 1
+  seq no type 10 1
+    name fd ref Sys->FD 0 0
+    seq no type 10 1
+      const OREAD (0) int 6 0
+ecom to: 
+* ref Bufio->Iobuf 8 0
+  + int 15 1
+    name lex ref YYLEX 0 0
+    const f (88) int 6 0
+generate desc for big
+ecom: 
+name fd ref Sys->FD 0 0
+ecom to: 
+* ref Sys->FD 8 0
+  + int 15 0
+    name .b356 big 0 0
+    const (64) int 6 0
+ecom: 
+const OREAD (0) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b356 big 0 0
+    const (72) int 6 0
+ecom: 
+= string 10 1
+  * string 8 0
+    + int 15 1
+      name lex ref YYLEX 0 0
+      const path (48) int 6 0
+  name path string 0 0
+ecom: 
+name path string 0 0
+ecom to: 
+* string 8 0
+  + int 15 1
+    name lex ref YYLEX 0 0
+    const path (48) int 6 0
+ecom: 
+= array of int 10 1
+  * array of int 8 0
+    + int 15 1
+      name lex ref YYLEX 0 0
+      const cbuf (72) int 6 0
+  array array of int 10 1
+    const (2) int 6 0
+ecom: 
+array array of int 10 1
+  const (2) int 6 0
+ecom to: 
+* array of int 8 0
+  + int 15 1
+    name lex ref YYLEX 0 0
+    const cbuf (72) int 6 0
+generate desc for int
+ecom: 
+= int 10 1
+  * int 8 0
+    + int 15 1
+      name lex ref YYLEX 0 0
+      const linenum (108) int 6 0
+  const (1) int 6 0
+ecom: 
+const (1) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 1
+    name lex ref YYLEX 0 0
+    const linenum (108) int 6 0
+ecom: 
+= string 10 1
+  * string 8 0
+    + int 15 1
+      name lex ref YYLEX 0 0
+      const prompt (112) int 6 0
+  const  string 1 0
+ecom: 
+const  string 1 0
+ecom to: 
+* string 8 0
+  + int 15 1
+    name lex ref YYLEX 0 0
+    const prompt (112) int 6 0
+ecom: 
+name lex ref YYLEX 0 0
+ecom to: 
+* ref YYLEX 8 0
+  name .ret int 0 0
+fn: initfile
+64: argument fd ref Sys->FD ref 1
+72: argument path string ref 1
+80: local lex ref YYLEX ref 7
+88: local .b356 big ref 1
+96: local .t355 ref YYLEX ref 1
+generate desc for YYLEX.initfile
+descmap offset 0
+descmap fd type ref Sys->FD offset 64 (d->offset=64 start=0) returns 64
+descmap path type string offset 72 (d->offset=72 start=0) returns 72
+descmap lex type ref YYLEX offset 80 (d->offset=80 start=0) returns 80
+descmap .b356 type big offset 88 (d->offset=88 start=0) returns -1
+descmap .t355 type ref YYLEX offset 96 (d->offset=96 start=0) returns 96
+fncom: error 2 4d51a0
+ecom: 
+= string 10 1
+  * string 8 0
+    + int 15 1
+      name l ref YYLEX 0 0
+      const err (32) int 6 0
+  name s string 0 0
+ecom: 
+name s string 0 0
+ecom to: 
+* string 8 0
+  + int 15 1
+    name l ref YYLEX 0 0
+    const err (32) int 6 0
+ecom: 
+= int 10 1
+  * int 8 0
+    + int 15 1
+      name l ref YYLEX 0 0
+      const errline (40) int 6 0
+  * int 8 0
+    + int 15 1
+      name l ref YYLEX 0 0
+      const linenum (108) int 6 0
+ecom: 
+* int 8 0
+  + int 15 1
+    name l ref YYLEX 0 0
+    const linenum (108) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 1
+    name l ref YYLEX 0 0
+    const errline (40) int 6 0
+fn: error
+64: argument l ref YYLEX ref 4
+72: argument s string ref 1
+generate desc for YYLEX.error
+descmap offset 0
+descmap l type ref YYLEX offset 64 (d->offset=64 start=0) returns 64
+descmap s type string offset 72 (d->offset=72 start=0) returns 72
+fncom: lex 2 4d4c30
+ecom: 
+= int 10 1
+  name endword int 0 0
+  const (0) int 6 0
+ecom: 
+const (0) int 6 0
+ecom to: 
+name endword int 0 0
+ecom: 
+= int 10 1
+  name wasdollar int 0 0
+  const (0) int 6 0
+ecom: 
+const (0) int 6 0
+ecom to: 
+name wasdollar int 0 0
+ecom: 
+= int 10 1
+  name tok int 0 0
+  const NOTOKEN (-1) int 6 0
+ecom: 
+const NOTOKEN (-1) int 6 0
+ecom to: 
+name tok int 0 0
+eacom: 
+= int 10 2
+  name c int 0 0
+  call int 10 2
+    name getc fn(lex: self ref YYLEX): int 11 1
+    seq nothing 10 1
+      name l ref YYLEX 0 0
+ecom: 
+= int 10 2
+  name c int 0 0
+  call int 10 2
+    name getc fn(lex: self ref YYLEX): int 11 1
+    seq nothing 10 1
+      name l ref YYLEX 0 0
+ecom to: 
+name .t357 int 0 0
+ecom: 
+call int 10 2
+  name getc fn(lex: self ref YYLEX): int 11 1
+  seq nothing 10 1
+    name l ref YYLEX 0 0
+ecom to: 
+name c int 0 0
+generate desc for big
+ecom: 
+name l ref YYLEX 0 0
+ecom to: 
+* ref YYLEX 8 0
+  + int 15 0
+    name .b358 big 0 0
+    const (64) int 6 0
+ecom: 
+= int 10 1
+  name tok int 0 0
+  const END (57350) int 6 0
+ecom: 
+const END (57350) int 6 0
+ecom to: 
+name tok int 0 0
+ecom: 
+= int 10 1
+  name tok int 0 0
+  const (10) int 6 0
+ecom: 
+const (10) int 6 0
+ecom to: 
+name tok int 0 0
+eacom: 
+= int 10 2
+  name c int 0 0
+  call int 10 2
+    name getc fn(lex: self ref YYLEX): int 11 1
+    seq nothing 10 1
+      name l ref YYLEX 0 0
+ecom: 
+= int 10 2
+  name c int 0 0
+  call int 10 2
+    name getc fn(lex: self ref YYLEX): int 11 1
+    seq nothing 10 1
+      name l ref YYLEX 0 0
+ecom to: 
+name .t357 int 0 0
+ecom: 
+call int 10 2
+  name getc fn(lex: self ref YYLEX): int 11 1
+  seq nothing 10 1
+    name l ref YYLEX 0 0
+ecom to: 
+name c int 0 0
+generate desc for big
+ecom: 
+name l ref YYLEX 0 0
+ecom to: 
+* ref YYLEX 8 0
+  + int 15 0
+    name .b358 big 0 0
+    const (64) int 6 0
+ecom: 
+call no type 10 2
+  name ungetc fn(lex: self ref YYLEX) 11 1
+  seq nothing 10 1
+    name l ref YYLEX 0 0
+generate desc for big
+ecom: 
+name l ref YYLEX 0 0
+ecom to: 
+* ref YYLEX 8 0
+  + int 15 0
+    name .b358 big 0 0
+    const (64) int 6 0
+ecom: 
+= int 10 1
+  name tok int 0 0
+  const (59) int 6 0
+ecom: 
+const (59) int 6 0
+ecom to: 
+name tok int 0 0
+ecom: 
+= int 10 2
+  name c int 0 0
+  call int 10 2
+    name getc fn(lex: self ref YYLEX): int 11 1
+    seq nothing 10 1
+      name l ref YYLEX 0 0
+ecom: 
+call int 10 2
+  name getc fn(lex: self ref YYLEX): int 11 1
+  seq nothing 10 1
+    name l ref YYLEX 0 0
+ecom to: 
+name c int 0 0
+generate desc for big
+ecom: 
+name l ref YYLEX 0 0
+ecom to: 
+* ref YYLEX 8 0
+  + int 15 0
+    name .b358 big 0 0
+    const (64) int 6 0
+ecom: 
+= int 10 1
+  name tok int 0 0
+  const ANDAND (57352) int 6 0
+ecom: 
+const ANDAND (57352) int 6 0
+ecom to: 
+name tok int 0 0
+ecom: 
+call no type 10 2
+  name ungetc fn(lex: self ref YYLEX) 11 1
+  seq nothing 10 1
+    name l ref YYLEX 0 0
+generate desc for big
+ecom: 
+name l ref YYLEX 0 0
+ecom to: 
+* ref YYLEX 8 0
+  + int 15 0
+    name .b358 big 0 0
+    const (64) int 6 0
+ecom: 
+= int 10 1
+  name tok int 0 0
+  const (38) int 6 0
+ecom: 
+const (38) int 6 0
+ecom to: 
+name tok int 0 0
+ecom: 
+= int 10 1
+  name tok int 0 0
+  const (94) int 6 0
+ecom: 
+const (94) int 6 0
+ecom to: 
+name tok int 0 0
+ecom: 
+= int 10 1
+  name tok int 0 0
+  const (123) int 6 0
+ecom: 
+const (123) int 6 0
+ecom to: 
+name tok int 0 0
+ecom: 
+= int 10 1
+  name tok int 0 0
+  const (125) int 6 0
+ecom: 
+const (125) int 6 0
+ecom to: 
+name tok int 0 0
+ecom: 
+= int 10 1
+  name tok int 0 0
+  const (41) int 6 0
+ecom: 
+const (41) int 6 0
+ecom to: 
+name tok int 0 0
+ecom: 
+= int 10 1
+  name tok int 0 0
+  const (40) int 6 0
+ecom: 
+const (40) int 6 0
+ecom to: 
+name tok int 0 0
+ecom: 
+= (int, int) 10 2
+  tuple (int, int) 10 1
+    seq no type 10 1
+      name tok int 0 0
+      seq no type 10 1
+        * int 8 0
+          + int 15 1
+            name l ref YYLEX 0 0
+            const optype (24) int 6 0
+  tuple (int, int) 10 1
+    seq no type 10 1
+      const (61) int 6 0
+      seq no type 10 1
+        const n_ASSIGN (15) int 6 0
+ecom: 
+= int 10 1
+  name tok int 0 0
+  const (61) int 6 0
+ecom: 
+const (61) int 6 0
+ecom to: 
+name tok int 0 0
+ecom: 
+= int 10 1
+  * int 8 0
+    + int 15 1
+      name l ref YYLEX 0 0
+      const optype (24) int 6 0
+  const n_ASSIGN (15) int 6 0
+ecom: 
+const n_ASSIGN (15) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 1
+    name l ref YYLEX 0 0
+    const optype (24) int 6 0
+ecom: 
+call no type 10 2
+  name ungetc fn(lex: self ref YYLEX) 11 1
+  seq nothing 10 1
+    name l ref YYLEX 0 0
+generate desc for big
+ecom: 
+name l ref YYLEX 0 0
+ecom to: 
+* ref YYLEX 8 0
+  + int 15 0
+    name .b358 big 0 0
+    const (64) int 6 0
+ecom: 
+= int 10 1
+  name tok int 0 0
+  const (94) int 6 0
+ecom: 
+const (94) int 6 0
+ecom to: 
+name tok int 0 0
+eacom: 
+= int 10 2
+  name c int 0 0
+  call int 10 2
+    name getc fn(lex: self ref YYLEX): int 11 1
+    seq nothing 10 1
+      name l ref YYLEX 0 0
+ecom: 
+= int 10 2
+  name c int 0 0
+  call int 10 2
+    name getc fn(lex: self ref YYLEX): int 11 1
+    seq nothing 10 1
+      name l ref YYLEX 0 0
+ecom to: 
+name .t357 int 0 0
+ecom: 
+call int 10 2
+  name getc fn(lex: self ref YYLEX): int 11 1
+  seq nothing 10 1
+    name l ref YYLEX 0 0
+ecom to: 
+name c int 0 0
+generate desc for big
+ecom: 
+name l ref YYLEX 0 0
+ecom to: 
+* ref YYLEX 8 0
+  + int 15 0
+    name .b358 big 0 0
+    const (64) int 6 0
+ecom: 
+= int 10 1
+  * int 8 0
+    + int 15 1
+      name l ref YYLEX 0 0
+      const optype (24) int 6 0
+  const n_COUNT (14) int 6 0
+ecom: 
+const n_COUNT (14) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 1
+    name l ref YYLEX 0 0
+    const optype (24) int 6 0
+ecom: 
+= int 10 1
+  * int 8 0
+    + int 15 1
+      name l ref YYLEX 0 0
+      const optype (24) int 6 0
+  const n_SQUASH (13) int 6 0
+ecom: 
+const n_SQUASH (13) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 1
+    name l ref YYLEX 0 0
+    const optype (24) int 6 0
+ecom: 
+call no type 10 2
+  name ungetc fn(lex: self ref YYLEX) 11 1
+  seq nothing 10 1
+    name l ref YYLEX 0 0
+generate desc for big
+ecom: 
+name l ref YYLEX 0 0
+ecom to: 
+* ref YYLEX 8 0
+  + int 15 0
+    name .b358 big 0 0
+    const (64) int 6 0
+ecom: 
+= int 10 1
+  * int 8 0
+    + int 15 1
+      name l ref YYLEX 0 0
+      const optype (24) int 6 0
+  const n_VAR (1) int 6 0
+ecom: 
+const n_VAR (1) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 1
+    name l ref YYLEX 0 0
+    const optype (24) int 6 0
+ecom: 
+= int 10 1
+  name tok int 0 0
+  const OP (57349) int 6 0
+ecom: 
+const OP (57349) int 6 0
+ecom to: 
+name tok int 0 0
+ecom: 
+= int 10 1
+  name wasdollar int 0 0
+  const (1) int 6 0
+ecom: 
+const (1) int 6 0
+ecom to: 
+name wasdollar int 0 0
+ecom: 
+= int 10 1
+  name tok int 0 0
+  const (94) int 6 0
+ecom: 
+const (94) int 6 0
+ecom to: 
+name tok int 0 0
+ecom: 
+call no type 10 2
+  name ungetc fn(lex: self ref YYLEX) 11 1
+  seq nothing 10 1
+    name l ref YYLEX 0 0
+generate desc for big
+ecom: 
+name l ref YYLEX 0 0
+ecom to: 
+* ref YYLEX 8 0
+  + int 15 0
+    name .b358 big 0 0
+    const (64) int 6 0
+ecom: 
+= int 10 1
+  name tok int 0 0
+  const OP (57349) int 6 0
+ecom: 
+const OP (57349) int 6 0
+ecom to: 
+name tok int 0 0
+ecom: 
+= int 10 1
+  * int 8 0
+    + int 15 1
+      name l ref YYLEX 0 0
+      const optype (24) int 6 0
+  const n_BQ2 (3) int 6 0
+ecom: 
+const n_BQ2 (3) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 1
+    name l ref YYLEX 0 0
+    const optype (24) int 6 0
+ecom: 
+= int 10 1
+  * int 8 0
+    + int 15 1
+      name l ref YYLEX 0 0
+      const optype (24) int 6 0
+  const n_BQ (2) int 6 0
+ecom: 
+const n_BQ (2) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 1
+    name l ref YYLEX 0 0
+    const optype (24) int 6 0
+ecom: 
+= int 10 2
+  name nc int 0 0
+  call int 10 2
+    name getc fn(lex: self ref YYLEX): int 11 1
+    seq nothing 10 1
+      name l ref YYLEX 0 0
+ecom: 
+call int 10 2
+  name getc fn(lex: self ref YYLEX): int 11 1
+  seq nothing 10 1
+    name l ref YYLEX 0 0
+ecom to: 
+name nc int 0 0
+generate desc for big
+ecom: 
+name l ref YYLEX 0 0
+ecom to: 
+* ref YYLEX 8 0
+  + int 15 0
+    name .b358 big 0 0
+    const (64) int 6 0
+ecom: 
+= int 10 1
+  name rtype int 0 0
+  const (524289) int 6 0
+ecom: 
+const (524289) int 6 0
+ecom to: 
+name rtype int 0 0
+ecom: 
+= int 10 1
+  name rtype int 0 0
+  const ORDWR (2) int 6 0
+ecom: 
+const ORDWR (2) int 6 0
+ecom to: 
+name rtype int 0 0
+ecom: 
+= int 10 2
+  name nc int 0 0
+  call int 10 2
+    name getc fn(lex: self ref YYLEX): int 11 1
+    seq nothing 10 1
+      name l ref YYLEX 0 0
+ecom: 
+call int 10 2
+  name getc fn(lex: self ref YYLEX): int 11 1
+  seq nothing 10 1
+    name l ref YYLEX 0 0
+ecom to: 
+name nc int 0 0
+generate desc for big
+ecom: 
+name l ref YYLEX 0 0
+ecom to: 
+* ref YYLEX 8 0
+  + int 15 0
+    name .b358 big 0 0
+    const (64) int 6 0
+ecom: 
+= int 10 1
+  name rtype int 0 0
+  const OWRITE (1) int 6 0
+ecom: 
+const OWRITE (1) int 6 0
+ecom to: 
+name rtype int 0 0
+ecom: 
+= int 10 1
+  name rtype int 0 0
+  const OREAD (0) int 6 0
+ecom: 
+const OREAD (0) int 6 0
+ecom to: 
+name rtype int 0 0
+ecom: 
+= int 10 1
+  name tok int 0 0
+  const REDIR (57347) int 6 0
+ecom: 
+const REDIR (57347) int 6 0
+ecom to: 
+name tok int 0 0
+ecom: 
+= (int, ref Redir) 10 2
+  tuple (int, ref Redir) 10 1
+    seq no type 10 1
+      name tok int 0 0
+      seq no type 10 1
+        * ref Redir 8 0
+          + int 15 1
+            name l ref YYLEX 0 0
+            const redir (16) int 6 0
+  call (int, ref Redir) 10 2
+    name readfdassign fn(lex: ref YYLEX): (int, ref Redir) 11 1
+    seq no type 10 1
+      name l ref YYLEX 0 0
+generate desc for (int, ref Redir)
+descmap adt offset 0
+descmap offset 0
+descmap t0 type int offset 0 (d->offset=0 start=0) returns -1
+descmap t1 type ref Redir offset 8 (d->offset=8 start=0) returns 8
+generate desc for (int, ref Redir)
+	desc	$-1,16,"40"
+ecom: 
+call (int, ref Redir) 10 2
+  name readfdassign fn(lex: ref YYLEX): (int, ref Redir) 11 1
+  seq no type 10 1
+    name l ref YYLEX 0 0
+ecom to: 
+name .b359 (int, ref Redir) 0 0
+generate desc for big
+ecom: 
+name l ref YYLEX 0 0
+ecom to: 
+* ref YYLEX 8 0
+  + int 15 0
+    name .b358 big 0 0
+    const (64) int 6 0
+ecom: 
+= ref Redir 10 1
+  * ref Redir 0 0
+    + int 13 1
+      adr int 13 1
+        name .b359 (int, ref Redir) 0 0
+      const t1 (8) int 6 0
+  name nil ref Redir 1 0
+ecom: 
+name nil ref Redir 1 0
+ecom to: 
+* ref Redir 0 0
+  + int 13 1
+    adr int 13 1
+      name .b359 (int, ref Redir) 0 0
+    const t1 (8) int 6 0
+ecom: 
+= (string, int) 10 2
+  tuple (string, int) 10 1
+    seq no type 10 1
+      * string 8 0
+        + int 15 1
+          name l ref YYLEX 0 0
+          const err (32) int 6 0
+      seq no type 10 1
+        * int 8 0
+          + int 15 1
+            name l ref YYLEX 0 0
+            const errline (40) int 6 0
+  tuple (string, int) 10 1
+    seq no type 10 1
+      const syntax error in redirection string 1 0
+      seq no type 10 1
+        * int 8 0
+          + int 15 1
+            name l ref YYLEX 0 0
+            const linenum (108) int 6 0
+generate desc for (string, int)
+descmap adt offset 0
+descmap offset 0
+descmap t0 type string offset 0 (d->offset=0 start=0) returns 0
+descmap t1 type int offset 8 (d->offset=8 start=0) returns -1
+generate desc for (string, int)
+	desc	$-1,16,"80"
+ecom: 
+tuple (string, int) 10 1
+  seq no type 10 1
+    const syntax error in redirection string 1 0
+    seq no type 10 1
+      * int 8 0
+        + int 15 1
+          name l ref YYLEX 0 0
+          const linenum (108) int 6 0
+ecom to: 
+name .b360 (string, int) 0 0
+ecom: 
+const syntax error in redirection string 1 0
+ecom to: 
+* string 0 0
+  + int 13 1
+    adr int 13 1
+      name .b360 (string, int) 0 0
+    const (0) int 6 0
+ecom: 
+* int 8 0
+  + int 15 1
+    name l ref YYLEX 0 0
+    const linenum (108) int 6 0
+ecom to: 
+* int 0 0
+  + int 13 1
+    adr int 13 1
+      name .b360 (string, int) 0 0
+    const (8) int 6 0
+ecom: 
+= string 10 1
+  * string 0 0
+    adr int 13 1
+      name .b360 (string, int) 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+* string 0 0
+  adr int 13 1
+    name .b360 (string, int) 0 0
+ecom: 
+call no type 10 2
+  name ungetc fn(lex: self ref YYLEX) 11 1
+  seq nothing 10 1
+    name l ref YYLEX 0 0
+generate desc for big
+ecom: 
+name l ref YYLEX 0 0
+ecom to: 
+* ref YYLEX 8 0
+  + int 15 0
+    name .b358 big 0 0
+    const (64) int 6 0
+ecom: 
+= ref Redir 10 1
+  * ref Redir 8 0
+    + int 15 1
+      name l ref YYLEX 0 0
+      const redir (16) int 6 0
+  ref ref Redir 10 1
+    tuple Redir 10 1
+      seq no type 10 1
+        const (-1) int 6 0
+        seq no type 10 1
+          const (-1) int 6 0
+          seq no type 10 1
+            const (-1) int 6 0
+ecom: 
+ref ref Redir 10 1
+  tuple Redir 10 1
+    seq no type 10 1
+      const (-1) int 6 0
+      seq no type 10 1
+        const (-1) int 6 0
+        seq no type 10 1
+          const (-1) int 6 0
+ecom to: 
+* ref Redir 8 0
+  + int 15 1
+    name l ref YYLEX 0 0
+    const redir (16) int 6 0
+generate desc for Redir
+ecom: 
+tuple Redir 10 1
+  seq no type 10 1
+    const (-1) int 6 0
+    seq no type 10 1
+      const (-1) int 6 0
+      seq no type 10 1
+        const (-1) int 6 0
+ecom to: 
+* Redir 8 0
+  name .t361 ref Redir 0 0
+ecom: 
+const (-1) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 1
+    adr int 15 1
+      * Redir 8 0
+        name .t361 ref Redir 0 0
+    const (0) int 6 0
+ecom: 
+const (-1) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 1
+    adr int 15 1
+      * Redir 8 0
+        name .t361 ref Redir 0 0
+    const (4) int 6 0
+ecom: 
+const (-1) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 1
+    adr int 15 1
+      * Redir 8 0
+        name .t361 ref Redir 0 0
+    const (8) int 6 0
+ecom: 
+= ref Redir 10 1
+  name .t361 ref Redir 0 0
+  name nil ref Redir 1 0
+ecom: 
+name nil ref Redir 1 0
+ecom to: 
+name .t361 ref Redir 0 0
+ecom: 
+= int 10 1
+  * int 10 1
+    * ref Redir 8 0
+      + int 15 1
+        name l ref YYLEX 0 0
+        const redir (16) int 6 0
+  name rtype int 0 0
+eacom: 
+* int 10 1
+  * ref Redir 8 0
+    + int 15 1
+      name l ref YYLEX 0 0
+      const redir (16) int 6 0
+ecom: 
+* ref Redir 8 0
+  + int 15 1
+    name l ref YYLEX 0 0
+    const redir (16) int 6 0
+ecom to: 
+name .t361 ref Redir 0 0
+ecom: 
+name rtype int 0 0
+ecom to: 
+* int 8 1
+  name .t361 ref Redir 0 0
+ecom: 
+= ref Redir 10 1
+  name .t361 ref Redir 0 0
+  name nil ref Redir 1 0
+ecom: 
+name nil ref Redir 1 0
+ecom to: 
+name .t361 ref Redir 0 0
+ecom: 
+= int 10 1
+  name tok int 0 0
+  const (124) int 6 0
+ecom: 
+const (124) int 6 0
+ecom to: 
+name tok int 0 0
+ecom: 
+= ref Redir 10 1
+  * ref Redir 8 0
+    + int 15 1
+      name l ref YYLEX 0 0
+      const redir (16) int 6 0
+  name nil polymorphic type 1 0
+ecom: 
+name nil ref Redir 1 0
+ecom to: 
+* ref Redir 8 0
+  + int 15 1
+    name l ref YYLEX 0 0
+    const redir (16) int 6 0
+eacom: 
+= int 10 2
+  name c int 0 0
+  call int 10 2
+    name getc fn(lex: self ref YYLEX): int 11 1
+    seq nothing 10 1
+      name l ref YYLEX 0 0
+ecom: 
+= int 10 2
+  name c int 0 0
+  call int 10 2
+    name getc fn(lex: self ref YYLEX): int 11 1
+    seq nothing 10 1
+      name l ref YYLEX 0 0
+ecom to: 
+name .t357 int 0 0
+ecom: 
+call int 10 2
+  name getc fn(lex: self ref YYLEX): int 11 1
+  seq nothing 10 1
+    name l ref YYLEX 0 0
+ecom to: 
+name c int 0 0
+generate desc for big
+ecom: 
+name l ref YYLEX 0 0
+ecom to: 
+* ref YYLEX 8 0
+  + int 15 0
+    name .b358 big 0 0
+    const (64) int 6 0
+ecom: 
+= (int, ref Redir) 10 2
+  tuple (int, ref Redir) 10 1
+    seq no type 10 1
+      name tok int 0 0
+      seq no type 10 1
+        * ref Redir 8 0
+          + int 15 1
+            name l ref YYLEX 0 0
+            const redir (16) int 6 0
+  call (int, ref Redir) 10 2
+    name readfdassign fn(lex: ref YYLEX): (int, ref Redir) 11 1
+    seq no type 10 1
+      name l ref YYLEX 0 0
+generate desc for (int, ref Redir)
+ecom: 
+call (int, ref Redir) 10 2
+  name readfdassign fn(lex: ref YYLEX): (int, ref Redir) 11 1
+  seq no type 10 1
+    name l ref YYLEX 0 0
+ecom to: 
+name .b359 (int, ref Redir) 0 0
+generate desc for big
+ecom: 
+name l ref YYLEX 0 0
+ecom to: 
+* ref YYLEX 8 0
+  + int 15 0
+    name .b358 big 0 0
+    const (64) int 6 0
+ecom: 
+= ref Redir 10 1
+  * ref Redir 0 0
+    + int 13 1
+      adr int 13 1
+        name .b359 (int, ref Redir) 0 0
+      const t1 (8) int 6 0
+  name nil ref Redir 1 0
+ecom: 
+name nil ref Redir 1 0
+ecom to: 
+* ref Redir 0 0
+  + int 13 1
+    adr int 13 1
+      name .b359 (int, ref Redir) 0 0
+    const t1 (8) int 6 0
+ecom: 
+= (string, int) 10 2
+  tuple (string, int) 10 1
+    seq no type 10 1
+      * string 8 0
+        + int 15 1
+          name l ref YYLEX 0 0
+          const err (32) int 6 0
+      seq no type 10 1
+        * int 8 0
+          + int 15 1
+            name l ref YYLEX 0 0
+            const errline (40) int 6 0
+  tuple (string, int) 10 1
+    seq no type 10 1
+      const syntax error in pipe redirection string 1 0
+      seq no type 10 1
+        * int 8 0
+          + int 15 1
+            name l ref YYLEX 0 0
+            const linenum (108) int 6 0
+generate desc for (string, int)
+descmap adt offset 0
+descmap offset 0
+descmap t0 type string offset 0 (d->offset=0 start=0) returns 0
+descmap t1 type int offset 8 (d->offset=8 start=0) returns -1
+generate desc for (string, int)
+	desc	$-1,16,"80"
+ecom: 
+tuple (string, int) 10 1
+  seq no type 10 1
+    const syntax error in pipe redirection string 1 0
+    seq no type 10 1
+      * int 8 0
+        + int 15 1
+          name l ref YYLEX 0 0
+          const linenum (108) int 6 0
+ecom to: 
+name .b360 (string, int) 0 0
+ecom: 
+const syntax error in pipe redirection string 1 0
+ecom to: 
+* string 0 0
+  + int 13 1
+    adr int 13 1
+      name .b360 (string, int) 0 0
+    const (0) int 6 0
+ecom: 
+* int 8 0
+  + int 15 1
+    name l ref YYLEX 0 0
+    const linenum (108) int 6 0
+ecom to: 
+* int 0 0
+  + int 13 1
+    adr int 13 1
+      name .b360 (string, int) 0 0
+    const (8) int 6 0
+ecom: 
+= string 10 1
+  * string 0 0
+    adr int 13 1
+      name .b360 (string, int) 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+* string 0 0
+  adr int 13 1
+    name .b360 (string, int) 0 0
+ecom: 
+name tok int 0 0
+ecom to: 
+* int 8 0
+  name .ret int 0 0
+ecom: 
+= int 10 1
+  name tok int 0 0
+  const (124) int 6 0
+ecom: 
+const (124) int 6 0
+ecom to: 
+name tok int 0 0
+ecom: 
+= int 10 1
+  name tok int 0 0
+  const OROR (57353) int 6 0
+ecom: 
+const OROR (57353) int 6 0
+ecom to: 
+name tok int 0 0
+ecom: 
+call no type 10 2
+  name ungetc fn(lex: self ref YYLEX) 11 1
+  seq nothing 10 1
+    name l ref YYLEX 0 0
+generate desc for big
+ecom: 
+name l ref YYLEX 0 0
+ecom to: 
+* ref YYLEX 8 0
+  + int 15 0
+    name .b358 big 0 0
+    const (64) int 6 0
+ecom: 
+call no type 10 2
+  name ungetc fn(lex: self ref YYLEX) 11 1
+  seq nothing 10 1
+    name l ref YYLEX 0 0
+generate desc for big
+ecom: 
+name l ref YYLEX 0 0
+ecom to: 
+* ref YYLEX 8 0
+  + int 15 0
+    name .b358 big 0 0
+    const (64) int 6 0
+ecom: 
+= int 10 1
+  name tok int 0 0
+  const (94) int 6 0
+ecom: 
+const (94) int 6 0
+ecom to: 
+name tok int 0 0
+ecom: 
+= string 10 1
+  name s string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name s string 0 0
+ecom: 
+= int 10 1
+  name startline int 0 0
+  * int 8 0
+    + int 15 1
+      name l ref YYLEX 0 0
+      const linenum (108) int 6 0
+ecom: 
+* int 8 0
+  + int 15 1
+    name l ref YYLEX 0 0
+    const linenum (108) int 6 0
+ecom to: 
+name startline int 0 0
+ecom: 
+= string 10 1
+  name s string 0 0
+  const  string 1 0
+ecom: 
+const  string 1 0
+ecom to: 
+name s string 0 0
+eacom: 
+= int 10 2
+  name nc int 0 0
+  call int 10 2
+    name getc fn(lex: self ref YYLEX): int 11 1
+    seq nothing 10 1
+      name l ref YYLEX 0 0
+ecom: 
+= int 10 2
+  name nc int 0 0
+  call int 10 2
+    name getc fn(lex: self ref YYLEX): int 11 1
+    seq nothing 10 1
+      name l ref YYLEX 0 0
+ecom to: 
+name .t357 int 0 0
+ecom: 
+call int 10 2
+  name getc fn(lex: self ref YYLEX): int 11 1
+  seq nothing 10 1
+    name l ref YYLEX 0 0
+ecom to: 
+name nc int 0 0
+generate desc for big
+ecom: 
+name l ref YYLEX 0 0
+ecom to: 
+* ref YYLEX 8 0
+  + int 15 0
+    name .b358 big 0 0
+    const (64) int 6 0
+ecom: 
+= int 10 1
+  inds int 10 1
+    name s string 0 0
+    len int 10 1
+      name s string 0 0
+  name nc int 0 0
+ecom: 
+len int 10 1
+  name s string 0 0
+ecom to: 
+name .t357 int 0 0
+ecom: 
+= (string, int) 10 2
+  tuple (string, int) 10 1
+    seq no type 10 1
+      * string 8 0
+        + int 15 1
+          name l ref YYLEX 0 0
+          const err (32) int 6 0
+      seq no type 10 1
+        * int 8 0
+          + int 15 1
+            name l ref YYLEX 0 0
+            const errline (40) int 6 0
+  tuple (string, int) 10 1
+    seq no type 10 1
+      const unterminated string literal string 1 0
+      seq no type 10 1
+        name startline int 0 0
+ecom: 
+= string 10 1
+  * string 8 0
+    + int 15 1
+      name l ref YYLEX 0 0
+      const err (32) int 6 0
+  const unterminated string literal string 1 0
+ecom: 
+const unterminated string literal string 1 0
+ecom to: 
+* string 8 0
+  + int 15 1
+    name l ref YYLEX 0 0
+    const err (32) int 6 0
+ecom: 
+= int 10 1
+  * int 8 0
+    + int 15 1
+      name l ref YYLEX 0 0
+      const errline (40) int 6 0
+  name startline int 0 0
+ecom: 
+name startline int 0 0
+ecom to: 
+* int 8 0
+  + int 15 1
+    name l ref YYLEX 0 0
+    const errline (40) int 6 0
+ecom: 
+const ERROR (57351) int 6 0
+ecom to: 
+* int 8 0
+  name .ret int 0 0
+eacom: 
+call int 10 2
+  name getc fn(lex: self ref YYLEX): int 11 1
+  seq nothing 10 1
+    name l ref YYLEX 0 0
+ecom: 
+call int 10 2
+  name getc fn(lex: self ref YYLEX): int 11 1
+  seq nothing 10 1
+    name l ref YYLEX 0 0
+ecom to: 
+name .t357 int 0 0
+generate desc for big
+ecom: 
+name l ref YYLEX 0 0
+ecom to: 
+* ref YYLEX 8 0
+  + int 15 0
+    name .b358 big 0 0
+    const (64) int 6 0
+ecom: 
+call no type 10 2
+  name ungetc fn(lex: self ref YYLEX) 11 1
+  seq nothing 10 1
+    name l ref YYLEX 0 0
+generate desc for big
+ecom: 
+name l ref YYLEX 0 0
+ecom to: 
+* ref YYLEX 8 0
+  + int 15 0
+    name .b358 big 0 0
+    const (64) int 6 0
+ecom: 
+= int 10 1
+  inds int 10 1
+    name s string 0 0
+    len int 10 1
+      name s string 0 0
+  const (39) int 6 0
+ecom: 
+len int 10 1
+  name s string 0 0
+ecom to: 
+name .t357 int 0 0
+ecom: 
+= string 10 1
+  * string 8 0
+    + int 15 1
+      name l ref YYLEX 0 0
+      const word (8) int 6 0
+  name s string 0 0
+ecom: 
+name s string 0 0
+ecom to: 
+* string 8 0
+  + int 15 1
+    name l ref YYLEX 0 0
+    const word (8) int 6 0
+ecom: 
+= int 10 1
+  name tok int 0 0
+  const WORD (57348) int 6 0
+ecom: 
+const WORD (57348) int 6 0
+ecom to: 
+name tok int 0 0
+ecom: 
+= int 10 1
+  name endword int 0 0
+  const (1) int 6 0
+ecom: 
+const (1) int 6 0
+ecom to: 
+name endword int 0 0
+ecom: 
+= string 10 1
+  name s string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name s string 0 0
+eacom: 
+call int 10 2
+  name getc fn(lex: self ref YYLEX): int 11 1
+  seq nothing 10 1
+    name l ref YYLEX 0 0
+ecom: 
+call int 10 2
+  name getc fn(lex: self ref YYLEX): int 11 1
+  seq nothing 10 1
+    name l ref YYLEX 0 0
+ecom to: 
+name .t357 int 0 0
+generate desc for big
+ecom: 
+name l ref YYLEX 0 0
+ecom to: 
+* ref YYLEX 8 0
+  + int 15 0
+    name .b358 big 0 0
+    const (64) int 6 0
+ecom: 
+= int 10 1
+  name tok int 0 0
+  const (61) int 6 0
+ecom: 
+const (61) int 6 0
+ecom to: 
+name tok int 0 0
+ecom: 
+= int 10 1
+  * int 8 0
+    + int 15 1
+      name l ref YYLEX 0 0
+      const optype (24) int 6 0
+  const n_LOCAL (16) int 6 0
+ecom: 
+const n_LOCAL (16) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 1
+    name l ref YYLEX 0 0
+    const optype (24) int 6 0
+ecom: 
+= string 10 1
+  name word string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name word string 0 0
+ecom: 
+= string 10 1
+  name allowed string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name allowed string 0 0
+ecom: 
+call no type 10 2
+  name ungetc fn(lex: self ref YYLEX) 11 1
+  seq nothing 10 1
+    name l ref YYLEX 0 0
+generate desc for big
+ecom: 
+name l ref YYLEX 0 0
+ecom to: 
+* ref YYLEX 8 0
+  + int 15 0
+    name .b358 big 0 0
+    const (64) int 6 0
+ecom: 
+call no type 10 2
+  name ungetc fn(lex: self ref YYLEX) 11 1
+  seq nothing 10 1
+    name l ref YYLEX 0 0
+generate desc for big
+ecom: 
+name l ref YYLEX 0 0
+ecom to: 
+* ref YYLEX 8 0
+  + int 15 0
+    name .b358 big 0 0
+    const (64) int 6 0
+ecom: 
+= int 10 1
+  name tok int 0 0
+  const (94) int 6 0
+ecom: 
+const (94) int 6 0
+ecom to: 
+name tok int 0 0
+ecom: 
+= string 10 1
+  name word string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name word string 0 0
+ecom: 
+= string 10 1
+  name allowed string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name allowed string 0 0
+ecom: 
+= string 10 1
+  name allowed string 0 0
+  const a-zA-Z0-9*_ string 1 0
+ecom: 
+const a-zA-Z0-9*_ string 1 0
+ecom to: 
+name allowed string 0 0
+ecom: 
+= string 10 1
+  name allowed string 0 0
+  const ^
+ 	
|$'#<>;^(){}`&=" string 1 0
+ecom: 
+const ^
+ 	
|$'#<>;^(){}`&=" string 1 0
+ecom to: 
+name allowed string 0 0
+ecom: 
+= string 10 1
+  name word string 0 0
+    vardecl string 10 1
+      seq nothing 10 1
+  const  string 1 0
+ecom: 
+const  string 1 0
+ecom to: 
+name word string 0 0
+  vardecl string 10 1
+    seq nothing 10 1
+ecom: 
+= int 10 1
+  inds int 10 1
+    name word string 0 0
+    len int 10 1
+      name word string 0 0
+  const GLOB (1) int 6 0
+ecom: 
+len int 10 1
+  name word string 0 0
+ecom to: 
+name .t357 int 0 0
+ecom: 
+= int 10 2
+  name nc int 0 0
+  call int 10 2
+    name getc fn(lex: self ref YYLEX): int 11 1
+    seq nothing 10 1
+      name l ref YYLEX 0 0
+ecom: 
+call int 10 2
+  name getc fn(lex: self ref YYLEX): int 11 1
+  seq nothing 10 1
+    name l ref YYLEX 0 0
+ecom to: 
+name nc int 0 0
+generate desc for big
+ecom: 
+name l ref YYLEX 0 0
+ecom to: 
+* ref YYLEX 8 0
+  + int 15 0
+    name .b358 big 0 0
+    const (64) int 6 0
+ecom: 
+call no type 10 2
+  name ungetc fn(lex: self ref YYLEX) 11 1
+  seq nothing 10 1
+    name l ref YYLEX 0 0
+generate desc for big
+ecom: 
+name l ref YYLEX 0 0
+ecom to: 
+* ref YYLEX 8 0
+  + int 15 0
+    name .b358 big 0 0
+    const (64) int 6 0
+ecom: 
+= int 10 1
+  inds int 10 1
+    name word string 0 0
+    len int 10 1
+      name word string 0 0
+  name c int 0 0
+ecom: 
+len int 10 1
+  name word string 0 0
+ecom to: 
+name .t357 int 0 0
+eacom: 
+= int 10 2
+  name c int 0 0
+  call int 10 2
+    name getc fn(lex: self ref YYLEX): int 11 1
+    seq nothing 10 1
+      name l ref YYLEX 0 0
+ecom: 
+= int 10 2
+  name c int 0 0
+  call int 10 2
+    name getc fn(lex: self ref YYLEX): int 11 1
+    seq nothing 10 1
+      name l ref YYLEX 0 0
+ecom to: 
+name .t357 int 0 0
+ecom: 
+call int 10 2
+  name getc fn(lex: self ref YYLEX): int 11 1
+  seq nothing 10 1
+    name l ref YYLEX 0 0
+ecom to: 
+name c int 0 0
+generate desc for big
+ecom: 
+name l ref YYLEX 0 0
+ecom to: 
+* ref YYLEX 8 0
+  + int 15 0
+    name .b358 big 0 0
+    const (64) int 6 0
+eacom: 
+call int 10 2
+  -> fn(c: int, cl: string): int 12 1
+    name str String 1 0
+    name in nothing 11 1
+  seq no type 10 1
+    name c int 0 0
+    seq no type 10 1
+      name allowed string 0 0
+ecom: 
+call int 10 2
+  -> fn(c: int, cl: string): int 12 1
+    name str String 1 0
+    name in nothing 11 1
+  seq no type 10 1
+    name c int 0 0
+    seq no type 10 1
+      name allowed string 0 0
+ecom to: 
+name .t357 int 0 0
+generate desc for big
+ecom: 
+name c int 0 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b358 big 0 0
+    const (64) int 6 0
+ecom: 
+name allowed string 0 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b358 big 0 0
+    const (72) int 6 0
+ecom: 
+call no type 10 2
+  name ungetc fn(lex: self ref YYLEX) 11 1
+  seq nothing 10 1
+    name l ref YYLEX 0 0
+generate desc for big
+ecom: 
+name l ref YYLEX 0 0
+ecom to: 
+* ref YYLEX 8 0
+  + int 15 0
+    name .b358 big 0 0
+    const (64) int 6 0
+ecom: 
+= string 10 1
+  * string 8 0
+    + int 15 1
+      name l ref YYLEX 0 0
+      const word (8) int 6 0
+  name word string 0 0
+ecom: 
+name word string 0 0
+ecom to: 
+* string 8 0
+  + int 15 1
+    name l ref YYLEX 0 0
+    const word (8) int 6 0
+ecom: 
+= int 10 1
+  name tok int 0 0
+  const WORD (57348) int 6 0
+ecom: 
+const WORD (57348) int 6 0
+ecom to: 
+name tok int 0 0
+ecom: 
+= int 10 1
+  name endword int 0 0
+  const (1) int 6 0
+ecom: 
+const (1) int 6 0
+ecom to: 
+name endword int 0 0
+ecom: 
+= string 10 1
+  name word string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name word string 0 0
+ecom: 
+= string 10 1
+  name allowed string 0 0
+  name nil string 1 0
+ecom: 
+name nil string 1 0
+ecom to: 
+name allowed string 0 0
+ecom: 
+= int 10 1
+  * int 8 0
+    + int 15 1
+      name l ref YYLEX 0 0
+      const atendword (60) int 6 0
+  name endword int 0 0
+ecom: 
+name endword int 0 0
+ecom to: 
+* int 8 0
+  + int 15 1
+    name l ref YYLEX 0 0
+    const atendword (60) int 6 0
+ecom: 
+= int 10 1
+  * int 8 0
+    + int 15 1
+      name l ref YYLEX 0 0
+      const wasdollar (56) int 6 0
+  name wasdollar int 0 0
+ecom: 
+name wasdollar int 0 0
+ecom to: 
+* int 8 0
+  + int 15 1
+    name l ref YYLEX 0 0
+    const wasdollar (56) int 6 0
+ecom: 
+name tok int 0 0
+ecom to: 
+* int 8 0
+  name .ret int 0 0
+fn: lex
+64: argument l ref YYLEX ref 63
+72: local tok int ref 32
+76: local c int ref 16
+80: local rtype int ref 5
+84: local endword int ref 4
+88: local nc int ref 4
+92: local wasdollar int ref 3
+96: local .t357 int ref 1
+104: local .b358 big ref 28
+112: local s string ref 6
+120: local word string ref 6
+128: local allowed string ref 3
+136: local .b359 (int, ref Redir) ref 2
+152: local .b360 (string, int) ref 2
+168: local .t361 ref Redir ref 1
+88: local nc int ref 4
+80: local nc int ref 2
+80: local startline int ref 2
+generate desc for YYLEX.lex
+descmap offset 0
+descmap l type ref YYLEX offset 64 (d->offset=64 start=0) returns 64
+descmap tok type int offset 72 (d->offset=72 start=0) returns -1
+descmap c type int offset 76 (d->offset=76 start=0) returns -1
+descmap rtype type int offset 80 (d->offset=80 start=0) returns -1
+descmap endword type int offset 84 (d->offset=84 start=0) returns -1
+descmap nc type int offset 88 (d->offset=88 start=0) returns -1
+descmap wasdollar type int offset 92 (d->offset=92 start=0) returns -1
+descmap .t357 type int offset 96 (d->offset=96 start=0) returns -1
+descmap .b358 type big offset 104 (d->offset=104 start=0) returns -1
+descmap s type string offset 112 (d->offset=112 start=0) returns 112
+descmap word type string offset 120 (d->offset=120 start=0) returns 120
+descmap allowed type string offset 128 (d->offset=128 start=0) returns 128
+descmap adt offset 136
+descmap offset 136
+descmap t0 type int offset 136 (d->offset=0 start=136) returns -1
+descmap t1 type ref Redir offset 144 (d->offset=8 start=136) returns 144
+descmap .b359 type (int, ref Redir) offset 136 (d->offset=136 start=0) returns 144
+descmap adt offset 152
+descmap offset 152
+descmap t0 type string offset 152 (d->offset=0 start=152) returns 152
+descmap t1 type int offset 160 (d->offset=8 start=152) returns -1
+descmap .b360 type (string, int) offset 152 (d->offset=152 start=0) returns 152
+descmap .t361 type ref Redir offset 168 (d->offset=168 start=0) returns 168
+fncom: tokstr 1 6e9d50
+fncom: ungetc 15 4d5be0
+ecom: 
+-- int 10 1
+  * int 8 0
+    + int 15 1
+      name lex ref YYLEX 0 0
+      const strpos (104) int 6 0
+  const (1) int 6 0
+ecom: 
+++ int 10 1
+  * int 8 0
+    + int 15 1
+      name lex ref YYLEX 0 0
+      const ncbuf (80) int 6 0
+  const (1) int 6 0
+ecom: 
+= int 10 1
+  * int 8 0
+    + int 15 1
+      name lex ref YYLEX 0 0
+      const strpos (104) int 6 0
+  - int 10 1
+    len int 10 1
+      * array of int 8 0
+        + int 15 1
+          name lex ref YYLEX 0 0
+          const cbuf (72) int 6 0
+    const (1) int 6 0
+ecom: 
+- int 10 1
+  len int 10 1
+    * array of int 8 0
+      + int 15 1
+        name lex ref YYLEX 0 0
+        const cbuf (72) int 6 0
+  const (1) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 1
+    name lex ref YYLEX 0 0
+    const strpos (104) int 6 0
+ecom: 
+len int 10 1
+  * array of int 8 0
+    + int 15 1
+      name lex ref YYLEX 0 0
+      const cbuf (72) int 6 0
+ecom to: 
+name .t362 int 0 0
+fn: ungetc
+64: argument lex ref YYLEX ref 6
+72: local .t362 int ref 1
+generate desc for YYLEX.ungetc
+descmap offset 0
+descmap lex type ref YYLEX offset 64 (d->offset=64 start=0) returns 64
+descmap .t362 type int offset 72 (d->offset=72 start=0) returns -1
+fncom: getc 16 4d5720
+ecom: 
+const EOF (-1) int 6 0
+ecom to: 
+* int 8 0
+  name .ret int 0 0
+ecom: 
+= int 10 1
+  name c int 0 0
+  * int 10 1
+    indx big 10 1
+      * array of int 8 0
+        + int 15 1
+          name lex ref YYLEX 0 0
+          const cbuf (72) int 6 0
+      ++ int 10 1
+        * int 8 0
+          + int 15 1
+            name lex ref YYLEX 0 0
+            const strpos (104) int 6 0
+        const (1) int 6 0
+ecom: 
+* int 10 1
+  indx big 10 1
+    * array of int 8 0
+      + int 15 1
+        name lex ref YYLEX 0 0
+        const cbuf (72) int 6 0
+    ++ int 10 1
+      * int 8 0
+        + int 15 1
+          name lex ref YYLEX 0 0
+          const strpos (104) int 6 0
+      const (1) int 6 0
+ecom to: 
+name c int 0 0
+eacom: 
+* int 10 1
+  indx big 10 1
+    * array of int 8 0
+      + int 15 1
+        name lex ref YYLEX 0 0
+        const cbuf (72) int 6 0
+    ++ int 10 1
+      * int 8 0
+        + int 15 1
+          name lex ref YYLEX 0 0
+          const strpos (104) int 6 0
+      const (1) int 6 0
+generate desc for big
+ecom: 
+indx big 10 1
+  * array of int 8 0
+    + int 15 1
+      name lex ref YYLEX 0 0
+      const cbuf (72) int 6 0
+  ++ int 10 1
+    * int 8 0
+      + int 15 1
+        name lex ref YYLEX 0 0
+        const strpos (104) int 6 0
+    const (1) int 6 0
+ecom to: 
+name .b363 big 0 0
+eacom: 
+++ int 10 1
+  * int 8 0
+    + int 15 1
+      name lex ref YYLEX 0 0
+      const strpos (104) int 6 0
+  const (1) int 6 0
+ecom: 
+++ int 10 1
+  * int 8 0
+    + int 15 1
+      name lex ref YYLEX 0 0
+      const strpos (104) int 6 0
+  const (1) int 6 0
+ecom to: 
+name .t364 int 0 0
+eacom: 
+len int 10 1
+  * array of int 8 0
+    + int 15 1
+      name lex ref YYLEX 0 0
+      const cbuf (72) int 6 0
+ecom: 
+len int 10 1
+  * array of int 8 0
+    + int 15 1
+      name lex ref YYLEX 0 0
+      const cbuf (72) int 6 0
+ecom to: 
+name .t364 int 0 0
+ecom: 
+* int 8 0
+  + int 15 1
+    name lex ref YYLEX 0 0
+    const strpos (104) int 6 0
+ecom to: 
+name .t365 int 0 0
+ecom: 
+= int 10 1
+  * int 8 0
+    + int 15 1
+      name lex ref YYLEX 0 0
+      const strpos (104) int 6 0
+  const (0) int 6 0
+ecom: 
+const (0) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 1
+    name lex ref YYLEX 0 0
+    const strpos (104) int 6 0
+ecom: 
+-- int 10 1
+  * int 8 0
+    + int 15 1
+      name lex ref YYLEX 0 0
+      const ncbuf (80) int 6 0
+  const (1) int 6 0
+ecom: 
+used int 10 2
+  call int 10 2
+    -> fn(fd: ref Sys->FD, s: string, nil: string, *): int 12 1
+      name sys Sys 1 0
+      name fprint nothing 11 1
+    seq no type 10 2
+      call ref Sys->FD 10 2
+        -> fn(fd: int): ref Sys->FD 12 1
+          name sys Sys 1 0
+          name fildes nothing 11 1
+        seq no type 10 1
+          const (2) int 6 0
+      seq no type 10 1
+        const %s string 1 0
+        seq no type 10 1
+          * string 8 0
+            + int 15 1
+              name lex ref YYLEX 0 0
+              const prompt (112) int 6 0
+ecom: 
+call int 10 2
+  -> fn(fd: ref Sys->FD, s: string, nil: string, *): int 12 1
+    name sys Sys 1 0
+    name fprint nothing 11 1
+  seq no type 10 2
+    call ref Sys->FD 10 2
+      -> fn(fd: int): ref Sys->FD 12 1
+        name sys Sys 1 0
+        name fildes nothing 11 1
+      seq no type 10 1
+        const (2) int 6 0
+    seq no type 10 1
+      const %s string 1 0
+      seq no type 10 1
+        * string 8 0
+          + int 15 1
+            name lex ref YYLEX 0 0
+            const prompt (112) int 6 0
+ecom to: 
+name .t365 int 0 0
+generate desc for Sys->fprint
+descmap offset 0
+descmap fd type ref Sys->FD offset 64 (d->offset=64 start=0) returns 64
+descmap s type string offset 72 (d->offset=72 start=0) returns 72
+descmap type string offset 80 returns 80
+generate desc for big
+ecom: 
+call ref Sys->FD 10 2
+  -> fn(fd: int): ref Sys->FD 12 1
+    name sys Sys 1 0
+    name fildes nothing 11 1
+  seq no type 10 1
+    const (2) int 6 0
+ecom to: 
+name .t366 ref Sys->FD 0 0
+generate desc for big
+ecom: 
+const (2) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 0
+    name .b367 big 0 0
+    const (64) int 6 0
+ecom: 
+name .t366 ref Sys->FD 0 0
+ecom to: 
+* ref Sys->FD 8 0
+  + int 15 0
+    name .b363 big 0 0
+    const (64) int 6 0
+ecom: 
+= ref Sys->FD 10 1
+  name .t366 ref Sys->FD 0 0
+  name nil ref Sys->FD 1 0
+ecom: 
+name nil ref Sys->FD 1 0
+ecom to: 
+name .t366 ref Sys->FD 0 0
+ecom: 
+const %s string 1 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b363 big 0 0
+    const (72) int 6 0
+ecom: 
+* string 8 0
+  + int 15 1
+    name lex ref YYLEX 0 0
+    const prompt (112) int 6 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b363 big 0 0
+    const (80) int 6 0
+ecom: 
+= int 10 2
+  name c int 0 0
+  call int 10 2
+    -> fn(b: self ref Bufio->Iobuf): int 12 1
+      name bufio Bufio 1 0
+      name getc fn(b: self ref Bufio->Iobuf): int 11 1
+    seq nothing 10 1
+      * ref Bufio->Iobuf 8 0
+        + int 15 1
+          name lex ref YYLEX 0 0
+          const f (88) int 6 0
+ecom: 
+call int 10 2
+  -> fn(b: self ref Bufio->Iobuf): int 12 1
+    name bufio Bufio 1 0
+    name getc fn(b: self ref Bufio->Iobuf): int 11 1
+  seq nothing 10 1
+    * ref Bufio->Iobuf 8 0
+      + int 15 1
+        name lex ref YYLEX 0 0
+        const f (88) int 6 0
+ecom to: 
+name c int 0 0
+generate desc for big
+ecom: 
+* ref Bufio->Iobuf 8 0
+  + int 15 1
+    name lex ref YYLEX 0 0
+    const f (88) int 6 0
+ecom to: 
+* ref Bufio->Iobuf 8 0
+  + int 15 0
+    name .b367 big 0 0
+    const (64) int 6 0
+ecom: 
+= int 10 1
+  * int 8 0
+    + int 15 1
+      name lex ref YYLEX 0 0
+      const eof (64) int 6 0
+  const (1) int 6 0
+ecom: 
+const (1) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 1
+    name lex ref YYLEX 0 0
+    const eof (64) int 6 0
+ecom: 
+= int 10 1
+  name c int 0 0
+  const EOF (-1) int 6 0
+ecom: 
+const EOF (-1) int 6 0
+ecom to: 
+name c int 0 0
+ecom: 
+++ int 10 1
+  * int 8 0
+    + int 15 1
+      name lex ref YYLEX 0 0
+      const linenum (108) int 6 0
+  const (1) int 6 0
+ecom: 
+= int 10 1
+  * int 8 0
+    + int 15 1
+      name lex ref YYLEX 0 0
+      const lastnl (120) int 6 0
+  == int 10 1
+    name c int 0 0
+    const (10) int 6 0
+ecom: 
+== int 10 1
+  name c int 0 0
+  const (10) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 1
+    name lex ref YYLEX 0 0
+    const lastnl (120) int 6 0
+ecom: 
+= int 10 1
+  * int 10 1
+    indx big 10 1
+      * array of int 8 0
+        + int 15 1
+          name lex ref YYLEX 0 0
+          const cbuf (72) int 6 0
+      ++ int 10 1
+        * int 8 0
+          + int 15 1
+            name lex ref YYLEX 0 0
+            const strpos (104) int 6 0
+        const (1) int 6 0
+  name c int 0 0
+eacom: 
+* int 10 1
+  indx big 10 1
+    * array of int 8 0
+      + int 15 1
+        name lex ref YYLEX 0 0
+        const cbuf (72) int 6 0
+    ++ int 10 1
+      * int 8 0
+        + int 15 1
+          name lex ref YYLEX 0 0
+          const strpos (104) int 6 0
+      const (1) int 6 0
+generate desc for big
+ecom: 
+indx big 10 1
+  * array of int 8 0
+    + int 15 1
+      name lex ref YYLEX 0 0
+      const cbuf (72) int 6 0
+  ++ int 10 1
+    * int 8 0
+      + int 15 1
+        name lex ref YYLEX 0 0
+        const strpos (104) int 6 0
+    const (1) int 6 0
+ecom to: 
+name .b367 big 0 0
+eacom: 
+++ int 10 1
+  * int 8 0
+    + int 15 1
+      name lex ref YYLEX 0 0
+      const strpos (104) int 6 0
+  const (1) int 6 0
+ecom: 
+++ int 10 1
+  * int 8 0
+    + int 15 1
+      name lex ref YYLEX 0 0
+      const strpos (104) int 6 0
+  const (1) int 6 0
+ecom to: 
+name .t365 int 0 0
+ecom: 
+name c int 0 0
+ecom to: 
+* int 8 1
+  name .b367 big 0 0
+eacom: 
+len int 10 1
+  * array of int 8 0
+    + int 15 1
+      name lex ref YYLEX 0 0
+      const cbuf (72) int 6 0
+ecom: 
+len int 10 1
+  * array of int 8 0
+    + int 15 1
+      name lex ref YYLEX 0 0
+      const cbuf (72) int 6 0
+ecom to: 
+name .t365 int 0 0
+ecom: 
+* int 8 0
+  + int 15 1
+    name lex ref YYLEX 0 0
+    const strpos (104) int 6 0
+ecom to: 
+name .t364 int 0 0
+ecom: 
+= int 10 1
+  * int 8 0
+    + int 15 1
+      name lex ref YYLEX 0 0
+      const strpos (104) int 6 0
+  const (0) int 6 0
+ecom: 
+const (0) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 1
+    name lex ref YYLEX 0 0
+    const strpos (104) int 6 0
+eacom: 
+len int 10 1
+  * string 8 0
+    + int 15 1
+      name lex ref YYLEX 0 0
+      const s (96) int 6 0
+ecom: 
+len int 10 1
+  * string 8 0
+    + int 15 1
+      name lex ref YYLEX 0 0
+      const s (96) int 6 0
+ecom to: 
+name .t365 int 0 0
+ecom: 
+* int 8 0
+  + int 15 1
+    name lex ref YYLEX 0 0
+    const strpos (104) int 6 0
+ecom to: 
+name .t364 int 0 0
+ecom: 
+= int 10 1
+  * int 8 0
+    + int 15 1
+      name lex ref YYLEX 0 0
+      const eof (64) int 6 0
+  const (1) int 6 0
+ecom: 
+const (1) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 1
+    name lex ref YYLEX 0 0
+    const eof (64) int 6 0
+ecom: 
+= int 10 1
+  name c int 0 0
+  const EOF (-1) int 6 0
+ecom: 
+const EOF (-1) int 6 0
+ecom to: 
+name c int 0 0
+ecom: 
+= int 10 1
+  name c int 0 0
+  inds int 10 1
+    * string 8 0
+      + int 15 1
+        name lex ref YYLEX 0 0
+        const s (96) int 6 0
+    ++ int 10 1
+      * int 8 0
+        + int 15 1
+          name lex ref YYLEX 0 0
+          const strpos (104) int 6 0
+      const (1) int 6 0
+ecom: 
+inds int 10 1
+  * string 8 0
+    + int 15 1
+      name lex ref YYLEX 0 0
+      const s (96) int 6 0
+  ++ int 10 1
+    * int 8 0
+      + int 15 1
+        name lex ref YYLEX 0 0
+        const strpos (104) int 6 0
+    const (1) int 6 0
+ecom to: 
+name c int 0 0
+ecom: 
+++ int 10 1
+  * int 8 0
+    + int 15 1
+      name lex ref YYLEX 0 0
+      const strpos (104) int 6 0
+  const (1) int 6 0
+ecom to: 
+name .t365 int 0 0
+ecom: 
+name c int 0 0
+ecom to: 
+* int 8 0
+  name .ret int 0 0
+fn: getc
+64: argument lex ref YYLEX ref 29
+72: local c int ref 11
+76: local .t364 int ref 1
+80: local .t365 int ref 1
+88: local .b367 big ref 3
+96: local .b363 big ref 2
+104: local .t366 ref Sys->FD ref 1
+generate desc for YYLEX.getc
+descmap offset 0
+descmap lex type ref YYLEX offset 64 (d->offset=64 start=0) returns 64
+descmap c type int offset 72 (d->offset=72 start=0) returns -1
+descmap .t364 type int offset 76 (d->offset=76 start=0) returns -1
+descmap .t365 type int offset 80 (d->offset=80 start=0) returns -1
+descmap .b367 type big offset 88 (d->offset=88 start=0) returns -1
+descmap .b363 type big offset 96 (d->offset=96 start=0) returns -1
+descmap .t366 type ref Sys->FD offset 104 (d->offset=104 start=0) returns 104
+fncom: readnum 3 6e9e10
+ecom: 
+= int 10 1
+  name sum int 0 0
+  = int 10 1
+    name nc int 0 0
+    const (0) int 6 0
+ecom: 
+= int 10 1
+  name nc int 0 0
+  const (0) int 6 0
+ecom to: 
+name sum int 0 0
+ecom: 
+const (0) int 6 0
+ecom to: 
+name nc int 0 0
+eacom: 
+= int 10 2
+  name c int 0 0
+  call int 10 2
+    name getc fn(lex: self ref YYLEX): int 11 1
+    seq nothing 10 1
+      name lex ref YYLEX 0 0
+ecom: 
+= int 10 2
+  name c int 0 0
+  call int 10 2
+    name getc fn(lex: self ref YYLEX): int 11 1
+    seq nothing 10 1
+      name lex ref YYLEX 0 0
+ecom to: 
+name .t368 int 0 0
+ecom: 
+call int 10 2
+  name getc fn(lex: self ref YYLEX): int 11 1
+  seq nothing 10 1
+    name lex ref YYLEX 0 0
+ecom to: 
+name c int 0 0
+generate desc for big
+ecom: 
+name lex ref YYLEX 0 0
+ecom to: 
+* ref YYLEX 8 0
+  + int 15 0
+    name .b369 big 0 0
+    const (64) int 6 0
+ecom: 
+= int 10 2
+  name sum int 0 0
+  + int 10 2
+    * int 10 1
+      name sum int 0 0
+      const (10) int 6 0
+    - int 10 1
+      name c int 0 0
+      const (48) int 6 0
+ecom: 
++ int 10 2
+  * int 10 1
+    name sum int 0 0
+    const (10) int 6 0
+  - int 10 1
+    name c int 0 0
+    const (48) int 6 0
+ecom to: 
+name sum int 0 0
+ecom: 
+* int 10 1
+  name sum int 0 0
+  const (10) int 6 0
+ecom to: 
+name .t368 int 0 0
+eacom: 
+- int 10 1
+  name c int 0 0
+  const (48) int 6 0
+ecom: 
+- int 10 1
+  name c int 0 0
+  const (48) int 6 0
+ecom to: 
+name .t370 int 0 0
+ecom: 
+++ int 10 1
+  name nc int 0 0
+  const (1) int 6 0
+ecom: 
+call no type 10 2
+  name ungetc fn(lex: self ref YYLEX) 11 1
+  seq nothing 10 1
+    name lex ref YYLEX 0 0
+generate desc for big
+ecom: 
+name lex ref YYLEX 0 0
+ecom to: 
+* ref YYLEX 8 0
+  + int 15 0
+    name .b369 big 0 0
+    const (64) int 6 0
+ecom: 
+const (-1) int 6 0
+ecom to: 
+* int 8 0
+  name .ret int 0 0
+ecom: 
+name sum int 0 0
+ecom to: 
+* int 8 0
+  name .ret int 0 0
+fn: readnum
+64: argument lex ref YYLEX ref 2
+72: local sum int ref 4
+76: local c int ref 3
+80: local nc int ref 3
+84: local .t368 int ref 1
+88: local .t370 int ref 1
+96: local .b369 big ref 2
+generate desc for readnum
+descmap offset 0
+descmap lex type ref YYLEX offset 64 (d->offset=64 start=0) returns 64
+descmap sum type int offset 72 (d->offset=72 start=0) returns -1
+descmap c type int offset 76 (d->offset=76 start=0) returns -1
+descmap nc type int offset 80 (d->offset=80 start=0) returns -1
+descmap .t368 type int offset 84 (d->offset=84 start=0) returns -1
+descmap .t370 type int offset 88 (d->offset=88 start=0) returns -1
+descmap .b369 type big offset 96 (d->offset=96 start=0) returns -1
+fncom: readfdassign 3 6e9ed0
+ecom: 
+= int 10 2
+  name n1 int 0 0
+  call int 10 2
+    name readnum fn(lex: ref YYLEX): int 11 1
+    seq no type 10 1
+      name lex ref YYLEX 0 0
+ecom: 
+call int 10 2
+  name readnum fn(lex: ref YYLEX): int 11 1
+  seq no type 10 1
+    name lex ref YYLEX 0 0
+ecom to: 
+name n1 int 0 0
+generate desc for big
+ecom: 
+name lex ref YYLEX 0 0
+ecom to: 
+* ref YYLEX 8 0
+  + int 15 0
+    name .b371 big 0 0
+    const (64) int 6 0
+eacom: 
+= int 10 2
+  name c int 0 0
+  call int 10 2
+    name getc fn(lex: self ref YYLEX): int 11 1
+    seq nothing 10 1
+      name lex ref YYLEX 0 0
+ecom: 
+= int 10 2
+  name c int 0 0
+  call int 10 2
+    name getc fn(lex: self ref YYLEX): int 11 1
+    seq nothing 10 1
+      name lex ref YYLEX 0 0
+ecom to: 
+name .t372 int 0 0
+ecom: 
+call int 10 2
+  name getc fn(lex: self ref YYLEX): int 11 1
+  seq nothing 10 1
+    name lex ref YYLEX 0 0
+ecom to: 
+name c int 0 0
+generate desc for big
+ecom: 
+name lex ref YYLEX 0 0
+ecom to: 
+* ref YYLEX 8 0
+  + int 15 0
+    name .b371 big 0 0
+    const (64) int 6 0
+ecom: 
+tuple (int, ref Redir) 10 1
+  seq no type 10 1
+    const REDIR (57347) int 6 0
+    seq no type 10 1
+      ref ref Redir 10 1
+        tuple Redir 10 1
+          seq no type 10 1
+            const (-1) int 6 0
+            seq no type 10 1
+              name n1 int 0 0
+              seq no type 10 1
+                const (-1) int 6 0
+ecom to: 
+* (int, ref Redir) 8 0
+  name .ret int 0 0
+ecom: 
+const REDIR (57347) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 1
+    adr int 15 1
+      * (int, ref Redir) 8 0
+        name .ret int 0 0
+    const (0) int 6 0
+ecom: 
+ref ref Redir 10 1
+  tuple Redir 10 1
+    seq no type 10 1
+      const (-1) int 6 0
+      seq no type 10 1
+        name n1 int 0 0
+        seq no type 10 1
+          const (-1) int 6 0
+ecom to: 
+* ref Redir 8 0
+  + int 15 1
+    adr int 15 1
+      * (int, ref Redir) 8 0
+        name .ret int 0 0
+    const (8) int 6 0
+generate desc for Redir
+ecom: 
+tuple Redir 10 1
+  seq no type 10 1
+    const (-1) int 6 0
+    seq no type 10 1
+      name n1 int 0 0
+      seq no type 10 1
+        const (-1) int 6 0
+ecom to: 
+* Redir 8 0
+  name .t373 ref Redir 0 0
+ecom: 
+const (-1) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 1
+    adr int 15 1
+      * Redir 8 0
+        name .t373 ref Redir 0 0
+    const (0) int 6 0
+ecom: 
+name n1 int 0 0
+ecom to: 
+* int 8 0
+  + int 15 1
+    adr int 15 1
+      * Redir 8 0
+        name .t373 ref Redir 0 0
+    const (4) int 6 0
+ecom: 
+const (-1) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 1
+    adr int 15 1
+      * Redir 8 0
+        name .t373 ref Redir 0 0
+    const (8) int 6 0
+ecom: 
+= ref Redir 10 1
+  name .t373 ref Redir 0 0
+  name nil ref Redir 1 0
+ecom: 
+name nil ref Redir 1 0
+ecom to: 
+name .t373 ref Redir 0 0
+ecom: 
+tuple (int, polymorphic type) 10 1
+  seq no type 10 1
+    const ERROR (57351) int 6 0
+    seq no type 10 1
+      name nil polymorphic type 1 0
+ecom to: 
+* (int, polymorphic type) 8 0
+  name .ret int 0 0
+ecom: 
+const ERROR (57351) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 1
+    adr int 15 1
+      * (int, polymorphic type) 8 0
+        name .ret int 0 0
+    const (0) int 6 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* polymorphic type 8 0
+  + int 15 1
+    adr int 15 1
+      * (int, polymorphic type) 8 0
+        name .ret int 0 0
+    const (8) int 6 0
+ecom: 
+= int 10 2
+  name n2 int 0 0
+  call int 10 2
+    name readnum fn(lex: ref YYLEX): int 11 1
+    seq no type 10 1
+      name lex ref YYLEX 0 0
+ecom: 
+call int 10 2
+  name readnum fn(lex: ref YYLEX): int 11 1
+  seq no type 10 1
+    name lex ref YYLEX 0 0
+ecom to: 
+name n2 int 0 0
+generate desc for big
+ecom: 
+name lex ref YYLEX 0 0
+ecom to: 
+* ref YYLEX 8 0
+  + int 15 0
+    name .b371 big 0 0
+    const (64) int 6 0
+eacom: 
+call int 10 2
+  name getc fn(lex: self ref YYLEX): int 11 1
+  seq nothing 10 1
+    name lex ref YYLEX 0 0
+ecom: 
+call int 10 2
+  name getc fn(lex: self ref YYLEX): int 11 1
+  seq nothing 10 1
+    name lex ref YYLEX 0 0
+ecom to: 
+name .t372 int 0 0
+generate desc for big
+ecom: 
+name lex ref YYLEX 0 0
+ecom to: 
+* ref YYLEX 8 0
+  + int 15 0
+    name .b371 big 0 0
+    const (64) int 6 0
+ecom: 
+tuple (int, polymorphic type) 10 1
+  seq no type 10 1
+    const ERROR (57351) int 6 0
+    seq no type 10 1
+      name nil polymorphic type 1 0
+ecom to: 
+* (int, polymorphic type) 8 0
+  name .ret int 0 0
+ecom: 
+const ERROR (57351) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 1
+    adr int 15 1
+      * (int, polymorphic type) 8 0
+        name .ret int 0 0
+    const (0) int 6 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* polymorphic type 8 0
+  + int 15 1
+    adr int 15 1
+      * (int, polymorphic type) 8 0
+        name .ret int 0 0
+    const (8) int 6 0
+ecom: 
+tuple (int, ref Redir) 10 1
+  seq no type 10 1
+    const DUP (57346) int 6 0
+    seq no type 10 1
+      ref ref Redir 10 1
+        tuple Redir 10 1
+          seq no type 10 1
+            const (-1) int 6 0
+            seq no type 10 1
+              name n1 int 0 0
+              seq no type 10 1
+                name n2 int 0 0
+ecom to: 
+* (int, ref Redir) 8 0
+  name .ret int 0 0
+ecom: 
+const DUP (57346) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 1
+    adr int 15 1
+      * (int, ref Redir) 8 0
+        name .ret int 0 0
+    const (0) int 6 0
+ecom: 
+ref ref Redir 10 1
+  tuple Redir 10 1
+    seq no type 10 1
+      const (-1) int 6 0
+      seq no type 10 1
+        name n1 int 0 0
+        seq no type 10 1
+          name n2 int 0 0
+ecom to: 
+* ref Redir 8 0
+  + int 15 1
+    adr int 15 1
+      * (int, ref Redir) 8 0
+        name .ret int 0 0
+    const (8) int 6 0
+generate desc for Redir
+ecom: 
+tuple Redir 10 1
+  seq no type 10 1
+    const (-1) int 6 0
+    seq no type 10 1
+      name n1 int 0 0
+      seq no type 10 1
+        name n2 int 0 0
+ecom to: 
+* Redir 8 0
+  name .t373 ref Redir 0 0
+ecom: 
+const (-1) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 1
+    adr int 15 1
+      * Redir 8 0
+        name .t373 ref Redir 0 0
+    const (0) int 6 0
+ecom: 
+name n1 int 0 0
+ecom to: 
+* int 8 0
+  + int 15 1
+    adr int 15 1
+      * Redir 8 0
+        name .t373 ref Redir 0 0
+    const (4) int 6 0
+ecom: 
+name n2 int 0 0
+ecom to: 
+* int 8 0
+  + int 15 1
+    adr int 15 1
+      * Redir 8 0
+        name .t373 ref Redir 0 0
+    const (8) int 6 0
+ecom: 
+= ref Redir 10 1
+  name .t373 ref Redir 0 0
+  name nil ref Redir 1 0
+ecom: 
+name nil ref Redir 1 0
+ecom to: 
+name .t373 ref Redir 0 0
+fn: readfdassign
+64: argument lex ref YYLEX ref 4
+72: local n1 int ref 3
+76: local c int ref 2
+80: local n2 int ref 2
+84: local .t372 int ref 1
+88: local .b371 big ref 4
+96: local .t373 ref Redir ref 1
+generate desc for readfdassign
+descmap offset 0
+descmap lex type ref YYLEX offset 64 (d->offset=64 start=0) returns 64
+descmap n1 type int offset 72 (d->offset=72 start=0) returns -1
+descmap c type int offset 76 (d->offset=76 start=0) returns -1
+descmap n2 type int offset 80 (d->offset=80 start=0) returns -1
+descmap .t372 type int offset 84 (d->offset=84 start=0) returns -1
+descmap .b371 type big offset 88 (d->offset=88 start=0) returns -1
+descmap .t373 type ref Redir offset 96 (d->offset=96 start=0) returns 96
+fncom: mkseq 3 6e9f90
+ecom: 
+ref ref Node 10 1
+  tuple Node 10 1
+    seq no type 10 1
+      const n_SEQ (7) int 6 0
+      seq no type 10 1
+        name left ref Node 0 0
+        seq no type 10 1
+          name right ref Node 0 0
+          seq no type 10 1
+            name nil polymorphic type 1 0
+            seq no type 10 1
+              name nil polymorphic type 1 0
+ecom to: 
+* ref Node 8 0
+  name .ret int 0 0
+generate desc for Node
+ecom: 
+tuple Node 10 1
+  seq no type 10 1
+    const n_SEQ (7) int 6 0
+    seq no type 10 1
+      name left ref Node 0 0
+      seq no type 10 1
+        name right ref Node 0 0
+        seq no type 10 1
+          name nil polymorphic type 1 0
+          seq no type 10 1
+            name nil polymorphic type 1 0
+ecom to: 
+* Node 8 0
+  name .t374 ref Node 0 0
+ecom: 
+const n_SEQ (7) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .t374 ref Node 0 0
+    const (0) int 6 0
+ecom: 
+name left ref Node 0 0
+ecom to: 
+* ref Node 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .t374 ref Node 0 0
+    const (8) int 6 0
+ecom: 
+name right ref Node 0 0
+ecom to: 
+* ref Node 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .t374 ref Node 0 0
+    const (16) int 6 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* string 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .t374 ref Node 0 0
+    const (24) int 6 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* ref Redir 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .t374 ref Node 0 0
+    const (32) int 6 0
+ecom: 
+= ref Node 10 1
+  name .t374 ref Node 0 0
+  name nil ref Node 1 0
+ecom: 
+name nil ref Node 1 0
+ecom to: 
+name .t374 ref Node 0 0
+ecom: 
+name right ref Node 0 0
+ecom to: 
+* ref Node 8 0
+  name .ret int 0 0
+ecom: 
+name left ref Node 0 0
+ecom to: 
+* ref Node 8 0
+  name .ret int 0 0
+fn: mkseq
+64: argument left ref Node ref 4
+72: argument right ref Node ref 3
+80: local .t374 ref Node ref 1
+generate desc for mkseq
+descmap offset 0
+descmap left type ref Node offset 64 (d->offset=64 start=0) returns 64
+descmap right type ref Node offset 72 (d->offset=72 start=0) returns 72
+descmap .t374 type ref Node offset 80 (d->offset=80 start=0) returns 80
+fncom: mk 25 6ea050
+fncom: stderr 12 6ea110
+fncom: yytokname 6 6eab10
+fncom: yystatname 5 6eabd0
+fncom: yylex1 3 6eac90
+ecom: 
+= int 10 2
+  name yychar int 0 0
+  call int 10 2
+    name lex fn(l: self ref YYLEX): int 11 1
+    seq nothing 10 1
+      name yylex ref YYLEX 0 0
+ecom: 
+call int 10 2
+  name lex fn(l: self ref YYLEX): int 11 1
+  seq nothing 10 1
+    name yylex ref YYLEX 0 0
+ecom to: 
+name yychar int 0 0
+generate desc for big
+ecom: 
+name yylex ref YYLEX 0 0
+ecom to: 
+* ref YYLEX 8 0
+  + int 15 0
+    name .b375 big 0 0
+    const (64) int 6 0
+ecom: 
+= int 10 1
+  name c int 0 0
+  * int 10 1
+    indx big 10 1
+      name yytok1 array of int 1 0
+      const (0) int 6 0
+ecom: 
+* int 10 1
+  indx big 10 1
+    name yytok1 array of int 1 0
+    const (0) int 6 0
+ecom to: 
+name c int 0 0
+eacom: 
+* int 10 1
+  indx big 10 1
+    name yytok1 array of int 1 0
+    const (0) int 6 0
+generate desc for big
+ecom: 
+indx big 10 1
+  name yytok1 array of int 1 0
+  const (0) int 6 0
+ecom to: 
+name .b375 big 0 0
+eacom: 
+len int 10 1
+  name yytok1 array of int 1 0
+ecom: 
+len int 10 1
+  name yytok1 array of int 1 0
+ecom to: 
+name .t376 int 0 0
+ecom: 
+= int 10 1
+  name c int 0 0
+  * int 10 1
+    indx big 10 1
+      name yytok1 array of int 1 0
+      name yychar int 0 0
+ecom: 
+* int 10 1
+  indx big 10 1
+    name yytok1 array of int 1 0
+    name yychar int 0 0
+ecom to: 
+name c int 0 0
+eacom: 
+* int 10 1
+  indx big 10 1
+    name yytok1 array of int 1 0
+    name yychar int 0 0
+generate desc for big
+ecom: 
+indx big 10 1
+  name yytok1 array of int 1 0
+  name yychar int 0 0
+ecom to: 
+name .b375 big 0 0
+eacom: 
++ int 10 1
+  len int 10 1
+    name yytok2 array of int 1 0
+  const YYPRIVATE (57344) int 6 0
+ecom: 
++ int 10 1
+  len int 10 1
+    name yytok2 array of int 1 0
+  const YYPRIVATE (57344) int 6 0
+ecom to: 
+name .t376 int 0 0
+eacom: 
+len int 10 1
+  name yytok2 array of int 1 0
+ecom: 
+len int 10 1
+  name yytok2 array of int 1 0
+ecom to: 
+name .t376 int 0 0
+ecom: 
+= int 10 1
+  name c int 0 0
+  * int 10 1
+    indx big 10 1
+      name yytok2 array of int 1 0
+      - int 10 1
+        name yychar int 0 0
+        const YYPRIVATE (57344) int 6 0
+ecom: 
+* int 10 1
+  indx big 10 1
+    name yytok2 array of int 1 0
+    - int 10 1
+      name yychar int 0 0
+      const YYPRIVATE (57344) int 6 0
+ecom to: 
+name c int 0 0
+eacom: 
+* int 10 1
+  indx big 10 1
+    name yytok2 array of int 1 0
+    - int 10 1
+      name yychar int 0 0
+      const YYPRIVATE (57344) int 6 0
+generate desc for big
+ecom: 
+indx big 10 1
+  name yytok2 array of int 1 0
+  - int 10 1
+    name yychar int 0 0
+    const YYPRIVATE (57344) int 6 0
+ecom to: 
+name .b375 big 0 0
+eacom: 
+- int 10 1
+  name yychar int 0 0
+  const YYPRIVATE (57344) int 6 0
+ecom: 
+- int 10 1
+  name yychar int 0 0
+  const YYPRIVATE (57344) int 6 0
+ecom to: 
+name .t376 int 0 0
+ecom: 
+= int 10 1
+  name n int 0 0
+  len int 10 1
+    name yytok3 array of int 1 0
+ecom: 
+len int 10 1
+  name yytok3 array of int 1 0
+ecom to: 
+name n int 0 0
+ecom: 
+= int 10 1
+  name c int 0 0
+  const (0) int 6 0
+ecom: 
+const (0) int 6 0
+ecom to: 
+name c int 0 0
+ecom: 
+= int 10 1
+  name i int 0 0
+  const (0) int 6 0
+ecom: 
+const (0) int 6 0
+ecom to: 
+name i int 0 0
+eacom: 
+* int 10 1
+  indx big 10 1
+    name yytok3 array of int 1 0
+    name i int 0 0
+generate desc for big
+ecom: 
+indx big 10 1
+  name yytok3 array of int 1 0
+  name i int 0 0
+ecom to: 
+name .b375 big 0 0
+ecom: 
+= int 10 1
+  name c int 0 0
+  * int 10 1
+    indx big 10 1
+      name yytok3 array of int 1 0
+      + int 15 1
+        name i int 0 0
+        const (1) int 6 0
+ecom: 
+* int 10 1
+  indx big 10 1
+    name yytok3 array of int 1 0
+    + int 15 1
+      name i int 0 0
+      const (1) int 6 0
+ecom to: 
+name c int 0 0
+eacom: 
+* int 10 1
+  indx big 10 1
+    name yytok3 array of int 1 0
+    + int 15 1
+      name i int 0 0
+      const (1) int 6 0
+generate desc for big
+ecom: 
+indx big 10 1
+  name yytok3 array of int 1 0
+  + int 15 1
+    name i int 0 0
+    const (1) int 6 0
+ecom to: 
+name .b375 big 0 0
+eacom: 
++ int 15 1
+  name i int 0 0
+  const (1) int 6 0
+ecom: 
++ int 15 1
+  name i int 0 0
+  const (1) int 6 0
+ecom to: 
+name .t376 int 0 0
+ecom: 
++= int 10 1
+  name i int 0 0
+  const (2) int 6 0
+ecom: 
+= int 10 1
+  name c int 0 0
+  * int 10 1
+    indx big 10 1
+      name yytok2 array of int 1 0
+      const (1) int 6 0
+ecom: 
+* int 10 1
+  indx big 10 1
+    name yytok2 array of int 1 0
+    const (1) int 6 0
+ecom to: 
+name c int 0 0
+eacom: 
+* int 10 1
+  indx big 10 1
+    name yytok2 array of int 1 0
+    const (1) int 6 0
+generate desc for big
+ecom: 
+indx big 10 1
+  name yytok2 array of int 1 0
+  const (1) int 6 0
+ecom to: 
+name .b375 big 0 0
+ecom: 
+name c int 0 0
+ecom to: 
+* int 8 0
+  name .ret int 0 0
+fn: yylex1
+64: argument yylex ref YYLEX ref 1
+72: local c int ref 9
+76: local yychar int ref 9
+80: local i int ref 5
+84: local n int ref 2
+88: local .t376 int ref 1
+96: local .b375 big ref 7
+generate desc for yylex1
+descmap offset 0
+descmap yylex type ref YYLEX offset 64 (d->offset=64 start=0) returns 64
+descmap c type int offset 72 (d->offset=72 start=0) returns -1
+descmap yychar type int offset 76 (d->offset=76 start=0) returns -1
+descmap i type int offset 80 (d->offset=80 start=0) returns -1
+descmap n type int offset 84 (d->offset=84 start=0) returns -1
+descmap .t376 type int offset 88 (d->offset=88 start=0) returns -1
+descmap .b375 type big offset 96 (d->offset=96 start=0) returns -1
+fncom: yyparse 2 6ead50
+ecom: 
+= array of YYS 10 1
+  name yys array of YYS 0 0
+  array array of YYS 10 1
+    const YYMAXDEPTH (200) int 6 0
+ecom: 
+array array of YYS 10 1
+  const YYMAXDEPTH (200) int 6 0
+ecom to: 
+name yys array of YYS 0 0
+generate desc for YYS
+descmap adt offset 0
+descmap offset 0
+descmap adt offset 0
+descmap offset 0
+descmap node type ref Node offset 0 (d->offset=0 start=0) returns 0
+descmap word type string offset 8 (d->offset=8 start=0) returns 8
+descmap redir type ref Redir offset 16 (d->offset=16 start=0) returns 16
+descmap optype type int offset 24 (d->offset=24 start=0) returns -1
+descmap yyv type YYSTYPE offset 0 (d->offset=0 start=0) returns 16
+descmap yys type int offset 32 (d->offset=32 start=0) returns -1
+generate desc for YYS
+	desc	$-1,40,"e0"
+ecom: 
+= int 10 1
+  name yystate int 0 0
+  const (0) int 6 0
+ecom: 
+const (0) int 6 0
+ecom to: 
+name yystate int 0 0
+ecom: 
+= int 10 1
+  name yychar int 0 0
+  const (-1) int 6 0
+ecom: 
+const (-1) int 6 0
+ecom to: 
+name yychar int 0 0
+ecom: 
+= int 10 1
+  name yynerrs int 0 0
+  const (0) int 6 0
+ecom: 
+const (0) int 6 0
+ecom to: 
+name yynerrs int 0 0
+ecom: 
+= int 10 1
+  name yyerrflag int 0 0
+  const (0) int 6 0
+ecom: 
+const (0) int 6 0
+ecom to: 
+name yyerrflag int 0 0
+ecom: 
+= int 10 1
+  name yyp int 0 0
+  const (-1) int 6 0
+ecom: 
+const (-1) int 6 0
+ecom to: 
+name yyp int 0 0
+ecom: 
+= int 10 1
+  name yyn int 0 0
+  const (0) int 6 0
+ecom: 
+const (0) int 6 0
+ecom to: 
+name yyn int 0 0
+ecom: 
+++ int 10 1
+  name yyp int 0 0
+  const (1) int 6 0
+eacom: 
+len int 10 1
+  name yys array of YYS 0 0
+ecom: 
+len int 10 1
+  name yys array of YYS 0 0
+ecom to: 
+name .t377 int 0 0
+ecom: 
+= array of YYS 10 2
+  name yys array of YYS 0 0
+  = array of YYS 10 2
+    slice array of YYS 10 2
+      array array of YYS 10 1
+        * int 10 1
+          len int 10 1
+            name yys array of YYS 0 0
+          const (2) int 6 0
+      seq no type 10 1
+        const (0) int 6 0
+        nothing no type 10 1
+    name yys array of YYS 0 0
+ecom: 
+= array of YYS 10 2
+  slice array of YYS 10 2
+    array array of YYS 10 1
+      * int 10 1
+        len int 10 1
+          name yys array of YYS 0 0
+        const (2) int 6 0
+    seq no type 10 1
+      const (0) int 6 0
+      nothing no type 10 1
+  name yys array of YYS 0 0
+ecom to: 
+name yys array of YYS 0 0
+eacom: 
+array array of YYS 10 1
+  * int 10 1
+    len int 10 1
+      name yys array of YYS 0 0
+    const (2) int 6 0
+ecom: 
+array array of YYS 10 1
+  * int 10 1
+    len int 10 1
+      name yys array of YYS 0 0
+    const (2) int 6 0
+ecom to: 
+name .t378 array of YYS 0 0
+eacom: 
+* int 10 1
+  len int 10 1
+    name yys array of YYS 0 0
+  const (2) int 6 0
+ecom: 
+* int 10 1
+  len int 10 1
+    name yys array of YYS 0 0
+  const (2) int 6 0
+ecom to: 
+name .t377 int 0 0
+eacom: 
+len int 10 1
+  name yys array of YYS 0 0
+ecom: 
+len int 10 1
+  name yys array of YYS 0 0
+ecom to: 
+name .t377 int 0 0
+generate desc for YYS
+ecom: 
+= array of YYS 10 1
+  name .t378 array of YYS 0 0
+  name nil array of YYS 1 0
+ecom: 
+name nil array of YYS 1 0
+ecom to: 
+name .t378 array of YYS 0 0
+ecom: 
+= int 10 1
+  * int 10 1
+    + int 10 1
+      indx big 10 1
+        name yys array of YYS 0 0
+        name yyp int 0 0
+      const yys (32) int 6 0
+  name yystate int 0 0
+eacom: 
+* int 10 1
+  + int 10 1
+    indx big 10 1
+      name yys array of YYS 0 0
+      name yyp int 0 0
+    const yys (32) int 6 0
+generate desc for big
+ecom: 
+indx big 10 1
+  name yys array of YYS 0 0
+  name yyp int 0 0
+ecom to: 
+name .b379 big 0 0
+ecom: 
+name yystate int 0 0
+ecom to: 
+* int 8 1
+  + int 15 1
+    name .b379 big 0 0
+    const yys (32) int 6 0
+ecom: 
+= YYSTYPE 10 1
+  * YYSTYPE 10 1
+    indx big 10 1
+      name yys array of YYS 0 0
+      name yyp int 0 0
+  name yyval YYSTYPE 0 0
+eacom: 
+* YYSTYPE 10 1
+  indx big 10 1
+    name yys array of YYS 0 0
+    name yyp int 0 0
+generate desc for big
+ecom: 
+indx big 10 1
+  name yys array of YYS 0 0
+  name yyp int 0 0
+ecom to: 
+name .b379 big 0 0
+ecom: 
+name yyval YYSTYPE 0 0
+ecom to: 
+* YYSTYPE 8 1
+  name .b379 big 0 0
+generate desc for YYSTYPE
+descmap adt offset 0
+descmap offset 0
+descmap node type ref Node offset 0 (d->offset=0 start=0) returns 0
+descmap word type string offset 8 (d->offset=8 start=0) returns 8
+descmap redir type ref Redir offset 16 (d->offset=16 start=0) returns 16
+descmap optype type int offset 24 (d->offset=24 start=0) returns -1
+generate desc for YYSTYPE
+	desc	$-1,32,"e0"
+ecom: 
+= int 10 1
+  name yyn int 0 0
+  * int 10 1
+    indx big 10 1
+      name yypact array of int 1 0
+      name yystate int 0 0
+ecom: 
+* int 10 1
+  indx big 10 1
+    name yypact array of int 1 0
+    name yystate int 0 0
+ecom to: 
+name yyn int 0 0
+eacom: 
+* int 10 1
+  indx big 10 1
+    name yypact array of int 1 0
+    name yystate int 0 0
+generate desc for big
+ecom: 
+indx big 10 1
+  name yypact array of int 1 0
+  name yystate int 0 0
+ecom to: 
+name .b379 big 0 0
+ecom: 
+= int 10 2
+  name yychar int 0 0
+  call int 10 2
+    name yylex1 fn(yylex: ref YYLEX): int 11 1
+    seq no type 10 1
+      name yylex ref YYLEX 0 0
+ecom: 
+call int 10 2
+  name yylex1 fn(yylex: ref YYLEX): int 11 1
+  seq no type 10 1
+    name yylex ref YYLEX 0 0
+ecom to: 
+name yychar int 0 0
+generate desc for big
+ecom: 
+name yylex ref YYLEX 0 0
+ecom to: 
+* ref YYLEX 8 0
+  + int 15 0
+    name .b379 big 0 0
+    const (64) int 6 0
+ecom: 
++= int 10 1
+  name yyn int 0 0
+  name yychar int 0 0
+ecom: 
+= int 10 1
+  name yyn int 0 0
+  * int 10 1
+    indx big 10 1
+      name yyact array of int 1 0
+      name yyn int 0 0
+ecom: 
+* int 10 1
+  indx big 10 1
+    name yyact array of int 1 0
+    name yyn int 0 0
+ecom to: 
+name yyn int 0 0
+eacom: 
+* int 10 1
+  indx big 10 1
+    name yyact array of int 1 0
+    name yyn int 0 0
+generate desc for big
+ecom: 
+indx big 10 1
+  name yyact array of int 1 0
+  name yyn int 0 0
+ecom to: 
+name .b379 big 0 0
+eacom: 
+* int 10 1
+  indx big 10 1
+    name yychk array of int 1 0
+    name yyn int 0 0
+generate desc for big
+ecom: 
+indx big 10 1
+  name yychk array of int 1 0
+  name yyn int 0 0
+ecom to: 
+name .b379 big 0 0
+ecom: 
+= int 10 1
+  name yychar int 0 0
+  const (-1) int 6 0
+ecom: 
+const (-1) int 6 0
+ecom to: 
+name yychar int 0 0
+ecom: 
+++ int 10 1
+  name yyp int 0 0
+  const (1) int 6 0
+eacom: 
+len int 10 1
+  name yys array of YYS 0 0
+ecom: 
+len int 10 1
+  name yys array of YYS 0 0
+ecom to: 
+name .t377 int 0 0
+ecom: 
+= array of YYS 10 2
+  name yys array of YYS 0 0
+  = array of YYS 10 2
+    slice array of YYS 10 2
+      array array of YYS 10 1
+        * int 10 1
+          len int 10 1
+            name yys array of YYS 0 0
+          const (2) int 6 0
+      seq no type 10 1
+        const (0) int 6 0
+        nothing no type 10 1
+    name yys array of YYS 0 0
+ecom: 
+= array of YYS 10 2
+  slice array of YYS 10 2
+    array array of YYS 10 1
+      * int 10 1
+        len int 10 1
+          name yys array of YYS 0 0
+        const (2) int 6 0
+    seq no type 10 1
+      const (0) int 6 0
+      nothing no type 10 1
+  name yys array of YYS 0 0
+ecom to: 
+name yys array of YYS 0 0
+eacom: 
+array array of YYS 10 1
+  * int 10 1
+    len int 10 1
+      name yys array of YYS 0 0
+    const (2) int 6 0
+ecom: 
+array array of YYS 10 1
+  * int 10 1
+    len int 10 1
+      name yys array of YYS 0 0
+    const (2) int 6 0
+ecom to: 
+name .t378 array of YYS 0 0
+eacom: 
+* int 10 1
+  len int 10 1
+    name yys array of YYS 0 0
+  const (2) int 6 0
+ecom: 
+* int 10 1
+  len int 10 1
+    name yys array of YYS 0 0
+  const (2) int 6 0
+ecom to: 
+name .t377 int 0 0
+eacom: 
+len int 10 1
+  name yys array of YYS 0 0
+ecom: 
+len int 10 1
+  name yys array of YYS 0 0
+ecom to: 
+name .t377 int 0 0
+generate desc for YYS
+ecom: 
+= array of YYS 10 1
+  name .t378 array of YYS 0 0
+  name nil array of YYS 1 0
+ecom: 
+name nil array of YYS 1 0
+ecom to: 
+name .t378 array of YYS 0 0
+ecom: 
+= int 10 1
+  name yystate int 0 0
+  name yyn int 0 0
+ecom: 
+name yyn int 0 0
+ecom to: 
+name yystate int 0 0
+ecom: 
+= int 10 1
+  * int 10 1
+    + int 10 1
+      indx big 10 1
+        name yys array of YYS 0 0
+        name yyp int 0 0
+      const yys (32) int 6 0
+  name yystate int 0 0
+eacom: 
+* int 10 1
+  + int 10 1
+    indx big 10 1
+      name yys array of YYS 0 0
+      name yyp int 0 0
+    const yys (32) int 6 0
+generate desc for big
+ecom: 
+indx big 10 1
+  name yys array of YYS 0 0
+  name yyp int 0 0
+ecom to: 
+name .b379 big 0 0
+ecom: 
+name yystate int 0 0
+ecom to: 
+* int 8 1
+  + int 15 1
+    name .b379 big 0 0
+    const yys (32) int 6 0
+ecom: 
+= YYSTYPE 10 1
+  * YYSTYPE 10 1
+    indx big 10 1
+      name yys array of YYS 0 0
+      name yyp int 0 0
+  * YYSTYPE 8 0
+    name yylex ref YYLEX 0 0
+eacom: 
+* YYSTYPE 10 1
+  indx big 10 1
+    name yys array of YYS 0 0
+    name yyp int 0 0
+generate desc for big
+ecom: 
+indx big 10 1
+  name yys array of YYS 0 0
+  name yyp int 0 0
+ecom to: 
+name .b379 big 0 0
+ecom: 
+* YYSTYPE 8 0
+  name yylex ref YYLEX 0 0
+ecom to: 
+* YYSTYPE 8 1
+  name .b379 big 0 0
+generate desc for YYSTYPE
+ecom: 
+-- int 10 1
+  name yyerrflag int 0 0
+  const (1) int 6 0
+ecom: 
+= int 10 1
+  name yyn int 0 0
+  * int 10 1
+    indx big 10 1
+      name yydef array of int 1 0
+      name yystate int 0 0
+ecom: 
+* int 10 1
+  indx big 10 1
+    name yydef array of int 1 0
+    name yystate int 0 0
+ecom to: 
+name yyn int 0 0
+eacom: 
+* int 10 1
+  indx big 10 1
+    name yydef array of int 1 0
+    name yystate int 0 0
+generate desc for big
+ecom: 
+indx big 10 1
+  name yydef array of int 1 0
+  name yystate int 0 0
+ecom to: 
+name .b379 big 0 0
+ecom: 
+= int 10 2
+  name yychar int 0 0
+  call int 10 2
+    name yylex1 fn(yylex: ref YYLEX): int 11 1
+    seq no type 10 1
+      name yylex ref YYLEX 0 0
+ecom: 
+call int 10 2
+  name yylex1 fn(yylex: ref YYLEX): int 11 1
+  seq no type 10 1
+    name yylex ref YYLEX 0 0
+ecom to: 
+name yychar int 0 0
+generate desc for big
+ecom: 
+name yylex ref YYLEX 0 0
+ecom to: 
+* ref YYLEX 8 0
+  + int 15 0
+    name .b379 big 0 0
+    const (64) int 6 0
+ecom: 
+= int 10 1
+  name yyxi int 0 0
+  const (0) int 6 0
+ecom: 
+const (0) int 6 0
+ecom to: 
+name yyxi int 0 0
+eacom: 
+* int 10 1
+  indx big 10 1
+    name yyexca array of int 1 0
+    name yyxi int 0 0
+generate desc for big
+ecom: 
+indx big 10 1
+  name yyexca array of int 1 0
+  name yyxi int 0 0
+ecom to: 
+name .b379 big 0 0
+eacom: 
+* int 10 1
+  indx big 10 1
+    name yyexca array of int 1 0
+    + int 15 1
+      name yyxi int 0 0
+      const (1) int 6 0
+generate desc for big
+ecom: 
+indx big 10 1
+  name yyexca array of int 1 0
+  + int 15 1
+    name yyxi int 0 0
+    const (1) int 6 0
+ecom to: 
+name .b379 big 0 0
+eacom: 
++ int 15 1
+  name yyxi int 0 0
+  const (1) int 6 0
+ecom: 
++ int 15 1
+  name yyxi int 0 0
+  const (1) int 6 0
+ecom to: 
+name .t377 int 0 0
+ecom: 
++= int 10 1
+  name yyxi int 0 0
+  const (2) int 6 0
+ecom: 
++= int 10 1
+  name yyxi int 0 0
+  const (2) int 6 0
+ecom: 
+= int 10 1
+  name yyn int 0 0
+  * int 10 1
+    indx big 10 1
+      name yyexca array of int 1 0
+      name yyxi int 0 0
+ecom: 
+* int 10 1
+  indx big 10 1
+    name yyexca array of int 1 0
+    name yyxi int 0 0
+ecom to: 
+name yyn int 0 0
+eacom: 
+* int 10 1
+  indx big 10 1
+    name yyexca array of int 1 0
+    name yyxi int 0 0
+generate desc for big
+ecom: 
+indx big 10 1
+  name yyexca array of int 1 0
+  name yyxi int 0 0
+ecom to: 
+name .b379 big 0 0
+ecom: 
++= int 10 1
+  name yyxi int 0 0
+  const (2) int 6 0
+ecom: 
+= int 10 1
+  name yyn int 0 0
+  * int 10 1
+    indx big 10 1
+      name yyexca array of int 1 0
+      + int 15 1
+        name yyxi int 0 0
+        const (1) int 6 0
+ecom: 
+* int 10 1
+  indx big 10 1
+    name yyexca array of int 1 0
+    + int 15 1
+      name yyxi int 0 0
+      const (1) int 6 0
+ecom to: 
+name yyn int 0 0
+eacom: 
+* int 10 1
+  indx big 10 1
+    name yyexca array of int 1 0
+    + int 15 1
+      name yyxi int 0 0
+      const (1) int 6 0
+generate desc for big
+ecom: 
+indx big 10 1
+  name yyexca array of int 1 0
+  + int 15 1
+    name yyxi int 0 0
+    const (1) int 6 0
+ecom to: 
+name .b379 big 0 0
+eacom: 
++ int 15 1
+  name yyxi int 0 0
+  const (1) int 6 0
+ecom: 
++ int 15 1
+  name yyxi int 0 0
+  const (1) int 6 0
+ecom to: 
+name .t377 int 0 0
+ecom: 
+= int 10 1
+  name yyn int 0 0
+  const (0) int 6 0
+ecom: 
+const (0) int 6 0
+ecom to: 
+name yyn int 0 0
+ecom: 
+call no type 10 2
+  name error fn(l: self ref YYLEX, s: string) 11 1
+  seq nothing 10 1
+    name yylex ref YYLEX 0 0
+    seq no type 10 1
+      const syntax error string 1 0
+generate desc for big
+ecom: 
+name yylex ref YYLEX 0 0
+ecom to: 
+* ref YYLEX 8 0
+  + int 15 0
+    name .b379 big 0 0
+    const (64) int 6 0
+ecom: 
+const syntax error string 1 0
+ecom to: 
+* string 8 0
+  + int 15 0
+    name .b379 big 0 0
+    const (72) int 6 0
+ecom: 
+++ int 10 1
+  name yynerrs int 0 0
+  const (1) int 6 0
+ecom: 
+= int 10 1
+  name yyerrflag int 0 0
+  const (3) int 6 0
+ecom: 
+const (3) int 6 0
+ecom to: 
+name yyerrflag int 0 0
+ecom: 
+= int 10 1
+  name yyn int 0 0
+  + int 10 1
+    * int 10 1
+      indx big 10 1
+        name yypact array of int 1 0
+        * int 10 1
+          + int 10 1
+            indx big 10 1
+              name yys array of YYS 0 0
+              name yyp int 0 0
+            const yys (32) int 6 0
+    const YYERRCODE (2) int 6 0
+ecom: 
++ int 10 1
+  * int 10 1
+    indx big 10 1
+      name yypact array of int 1 0
+      * int 10 1
+        + int 10 1
+          indx big 10 1
+            name yys array of YYS 0 0
+            name yyp int 0 0
+          const yys (32) int 6 0
+  const YYERRCODE (2) int 6 0
+ecom to: 
+name yyn int 0 0
+eacom: 
+* int 10 1
+  indx big 10 1
+    name yypact array of int 1 0
+    * int 10 1
+      + int 10 1
+        indx big 10 1
+          name yys array of YYS 0 0
+          name yyp int 0 0
+        const yys (32) int 6 0
+generate desc for big
+ecom: 
+indx big 10 1
+  name yypact array of int 1 0
+  * int 10 1
+    + int 10 1
+      indx big 10 1
+        name yys array of YYS 0 0
+        name yyp int 0 0
+      const yys (32) int 6 0
+ecom to: 
+name .b379 big 0 0
+eacom: 
+* int 10 1
+  + int 10 1
+    indx big 10 1
+      name yys array of YYS 0 0
+      name yyp int 0 0
+    const yys (32) int 6 0
+generate desc for big
+ecom: 
+indx big 10 1
+  name yys array of YYS 0 0
+  name yyp int 0 0
+ecom to: 
+name .b379 big 0 0
+ecom: 
+= int 10 1
+  name yystate int 0 0
+  * int 10 1
+    indx big 10 1
+      name yyact array of int 1 0
+      name yyn int 0 0
+ecom: 
+* int 10 1
+  indx big 10 1
+    name yyact array of int 1 0
+    name yyn int 0 0
+ecom to: 
+name yystate int 0 0
+eacom: 
+* int 10 1
+  indx big 10 1
+    name yyact array of int 1 0
+    name yyn int 0 0
+generate desc for big
+ecom: 
+indx big 10 1
+  name yyact array of int 1 0
+  name yyn int 0 0
+ecom to: 
+name .b379 big 0 0
+eacom: 
+* int 10 1
+  indx big 10 1
+    name yychk array of int 1 0
+    name yystate int 0 0
+generate desc for big
+ecom: 
+indx big 10 1
+  name yychk array of int 1 0
+  name yystate int 0 0
+ecom to: 
+name .b379 big 0 0
+ecom: 
+-- int 10 1
+  name yyp int 0 0
+  const (1) int 6 0
+ecom: 
+= int 10 1
+  name yyn int 0 0
+  const (1) int 6 0
+ecom: 
+const (1) int 6 0
+ecom to: 
+name yyn int 0 0
+ecom: 
+= int 10 1
+  name yyn int 0 0
+  const (1) int 6 0
+ecom: 
+const (1) int 6 0
+ecom to: 
+name yyn int 0 0
+ecom: 
+= int 10 1
+  name yychar int 0 0
+  const (-1) int 6 0
+ecom: 
+const (-1) int 6 0
+ecom to: 
+name yychar int 0 0
+ecom: 
+= int 10 1
+  name yypt int 0 0
+  name yyp int 0 0
+ecom: 
+name yyp int 0 0
+ecom to: 
+name yypt int 0 0
+ecom: 
+-= int 10 1
+  name yyp int 0 0
+  * int 10 1
+    indx big 10 1
+      name yyr2 array of int 1 0
+      name yyn int 0 0
+eacom: 
+* int 10 1
+  indx big 10 1
+    name yyr2 array of int 1 0
+    name yyn int 0 0
+generate desc for big
+ecom: 
+indx big 10 1
+  name yyr2 array of int 1 0
+  name yyn int 0 0
+ecom to: 
+name .b379 big 0 0
+ecom: 
+= int 10 1
+  name yym int 0 0
+  name yyn int 0 0
+ecom: 
+name yyn int 0 0
+ecom to: 
+name yym int 0 0
+ecom: 
+= int 10 1
+  name yyn int 0 0
+  * int 10 1
+    indx big 10 1
+      name yyr1 array of int 1 0
+      name yyn int 0 0
+ecom: 
+* int 10 1
+  indx big 10 1
+    name yyr1 array of int 1 0
+    name yyn int 0 0
+ecom to: 
+name yyn int 0 0
+eacom: 
+* int 10 1
+  indx big 10 1
+    name yyr1 array of int 1 0
+    name yyn int 0 0
+generate desc for big
+ecom: 
+indx big 10 1
+  name yyr1 array of int 1 0
+  name yyn int 0 0
+ecom to: 
+name .b379 big 0 0
+ecom: 
+= int 10 1
+  name yyg int 0 0
+  * int 10 1
+    indx big 10 1
+      name yypgo array of int 1 0
+      name yyn int 0 0
+ecom: 
+* int 10 1
+  indx big 10 1
+    name yypgo array of int 1 0
+    name yyn int 0 0
+ecom to: 
+name yyg int 0 0
+eacom: 
+* int 10 1
+  indx big 10 1
+    name yypgo array of int 1 0
+    name yyn int 0 0
+generate desc for big
+ecom: 
+indx big 10 1
+  name yypgo array of int 1 0
+  name yyn int 0 0
+ecom to: 
+name .b379 big 0 0
+ecom: 
+= int 10 1
+  name yyj int 0 0
+  + int 10 1
+    + int 10 1
+      name yyg int 0 0
+      * int 10 1
+        + int 10 1
+          indx big 10 1
+            name yys array of YYS 0 0
+            name yyp int 0 0
+          const yys (32) int 6 0
+    const (1) int 6 0
+ecom: 
++ int 10 1
+  + int 10 1
+    name yyg int 0 0
+    * int 10 1
+      + int 10 1
+        indx big 10 1
+          name yys array of YYS 0 0
+          name yyp int 0 0
+        const yys (32) int 6 0
+  const (1) int 6 0
+ecom to: 
+name yyj int 0 0
+eacom: 
++ int 10 1
+  name yyg int 0 0
+  * int 10 1
+    + int 10 1
+      indx big 10 1
+        name yys array of YYS 0 0
+        name yyp int 0 0
+      const yys (32) int 6 0
+ecom: 
++ int 10 1
+  name yyg int 0 0
+  * int 10 1
+    + int 10 1
+      indx big 10 1
+        name yys array of YYS 0 0
+        name yyp int 0 0
+      const yys (32) int 6 0
+ecom to: 
+name .t377 int 0 0
+eacom: 
+* int 10 1
+  + int 10 1
+    indx big 10 1
+      name yys array of YYS 0 0
+      name yyp int 0 0
+    const yys (32) int 6 0
+generate desc for big
+ecom: 
+indx big 10 1
+  name yys array of YYS 0 0
+  name yyp int 0 0
+ecom to: 
+name .b379 big 0 0
+ecom: 
+- int 10 1
+  const (0) int 6 0
+  name yyn int 0 0
+ecom to: 
+name .t377 int 0 0
+eacom: 
+* int 10 1
+  indx big 10 1
+    name yychk array of int 1 0
+    = int 10 1
+      name yystate int 0 0
+      * int 10 1
+        indx big 10 1
+          name yyact array of int 1 0
+          name yyj int 0 0
+generate desc for big
+ecom: 
+indx big 10 1
+  name yychk array of int 1 0
+  = int 10 1
+    name yystate int 0 0
+    * int 10 1
+      indx big 10 1
+        name yyact array of int 1 0
+        name yyj int 0 0
+ecom to: 
+name .b379 big 0 0
+eacom: 
+= int 10 1
+  name yystate int 0 0
+  * int 10 1
+    indx big 10 1
+      name yyact array of int 1 0
+      name yyj int 0 0
+ecom: 
+= int 10 1
+  name yystate int 0 0
+  * int 10 1
+    indx big 10 1
+      name yyact array of int 1 0
+      name yyj int 0 0
+ecom to: 
+name .t380 int 0 0
+ecom: 
+* int 10 1
+  indx big 10 1
+    name yyact array of int 1 0
+    name yyj int 0 0
+ecom to: 
+name yystate int 0 0
+eacom: 
+* int 10 1
+  indx big 10 1
+    name yyact array of int 1 0
+    name yyj int 0 0
+generate desc for big
+ecom: 
+indx big 10 1
+  name yyact array of int 1 0
+  name yyj int 0 0
+ecom to: 
+name .b381 big 0 0
+ecom: 
+= int 10 1
+  name yystate int 0 0
+  * int 10 1
+    indx big 10 1
+      name yyact array of int 1 0
+      name yyg int 0 0
+ecom: 
+* int 10 1
+  indx big 10 1
+    name yyact array of int 1 0
+    name yyg int 0 0
+ecom to: 
+name yystate int 0 0
+eacom: 
+* int 10 1
+  indx big 10 1
+    name yyact array of int 1 0
+    name yyg int 0 0
+generate desc for big
+ecom: 
+indx big 10 1
+  name yyact array of int 1 0
+  name yyg int 0 0
+ecom to: 
+name .b381 big 0 0
+ecom: 
+= ref Node 10 1
+  * ref Node 8 0
+    name yylex ref YYLEX 0 0
+  * ref Node 10 1
+    indx big 10 1
+      name yys array of YYS 0 0
+      - int 10 1
+        name yypt int 0 0
+        const (1) int 6 0
+ecom: 
+* ref Node 10 1
+  indx big 10 1
+    name yys array of YYS 0 0
+    - int 10 1
+      name yypt int 0 0
+      const (1) int 6 0
+ecom to: 
+* ref Node 8 0
+  name yylex ref YYLEX 0 0
+eacom: 
+* ref Node 10 1
+  indx big 10 1
+    name yys array of YYS 0 0
+    - int 10 1
+      name yypt int 0 0
+      const (1) int 6 0
+generate desc for big
+ecom: 
+indx big 10 1
+  name yys array of YYS 0 0
+  - int 10 1
+    name yypt int 0 0
+    const (1) int 6 0
+ecom to: 
+name .b381 big 0 0
+eacom: 
+- int 10 1
+  name yypt int 0 0
+  const (1) int 6 0
+ecom: 
+- int 10 1
+  name yypt int 0 0
+  const (1) int 6 0
+ecom to: 
+name .t380 int 0 0
+ecom: 
+const (0) int 6 0
+ecom to: 
+* int 8 0
+  name .ret int 0 0
+ecom: 
+= ref Node 10 1
+  * ref Node 8 0
+    name yylex ref YYLEX 0 0
+  name nil polymorphic type 1 0
+ecom: 
+name nil ref Node 1 0
+ecom to: 
+* ref Node 8 0
+  name yylex ref YYLEX 0 0
+ecom: 
+const (0) int 6 0
+ecom to: 
+* int 8 0
+  name .ret int 0 0
+ecom: 
+= ref Node 10 1
+  * ref Node 0 0
+    adr int 13 1
+      name yyval YYSTYPE 0 0
+  * ref Node 10 1
+    indx big 10 1
+      name yys array of YYS 0 0
+      + int 15 1
+        name yyp int 0 0
+        const (1) int 6 0
+ecom: 
+* ref Node 10 1
+  indx big 10 1
+    name yys array of YYS 0 0
+    + int 15 1
+      name yyp int 0 0
+      const (1) int 6 0
+ecom to: 
+* ref Node 0 0
+  adr int 13 1
+    name yyval YYSTYPE 0 0
+eacom: 
+* ref Node 10 1
+  indx big 10 1
+    name yys array of YYS 0 0
+    + int 15 1
+      name yyp int 0 0
+      const (1) int 6 0
+generate desc for big
+ecom: 
+indx big 10 1
+  name yys array of YYS 0 0
+  + int 15 1
+    name yyp int 0 0
+    const (1) int 6 0
+ecom to: 
+name .b381 big 0 0
+eacom: 
++ int 15 1
+  name yyp int 0 0
+  const (1) int 6 0
+ecom: 
++ int 15 1
+  name yyp int 0 0
+  const (1) int 6 0
+ecom to: 
+name .t380 int 0 0
+ecom: 
+= ref Node 10 2
+  * ref Node 0 0
+    adr int 13 1
+      name yyval YYSTYPE 0 0
+  call ref Node 10 2
+    name mkseq fn(left: ref Node, right: ref Node): ref Node 11 1
+    seq no type 10 2
+      * ref Node 10 1
+        indx big 10 1
+          name yys array of YYS 0 0
+          - int 10 1
+            name yypt int 0 0
+            const (1) int 6 0
+      seq no type 10 1
+        * ref Node 10 1
+          indx big 10 1
+            name yys array of YYS 0 0
+            name yypt int 0 0
+ecom: 
+call ref Node 10 2
+  name mkseq fn(left: ref Node, right: ref Node): ref Node 11 1
+  seq no type 10 2
+    * ref Node 10 1
+      indx big 10 1
+        name yys array of YYS 0 0
+        - int 10 1
+          name yypt int 0 0
+          const (1) int 6 0
+    seq no type 10 1
+      * ref Node 10 1
+        indx big 10 1
+          name yys array of YYS 0 0
+          name yypt int 0 0
+ecom to: 
+* ref Node 0 0
+  adr int 13 1
+    name yyval YYSTYPE 0 0
+generate desc for big
+ecom: 
+* ref Node 10 1
+  indx big 10 1
+    name yys array of YYS 0 0
+    - int 10 1
+      name yypt int 0 0
+      const (1) int 6 0
+ecom to: 
+* ref Node 8 0
+  + int 15 0
+    name .b381 big 0 0
+    const (64) int 6 0
+eacom: 
+* ref Node 10 1
+  indx big 10 1
+    name yys array of YYS 0 0
+    - int 10 1
+      name yypt int 0 0
+      const (1) int 6 0
+generate desc for big
+ecom: 
+indx big 10 1
+  name yys array of YYS 0 0
+  - int 10 1
+    name yypt int 0 0
+    const (1) int 6 0
+ecom to: 
+name .b379 big 0 0
+eacom: 
+- int 10 1
+  name yypt int 0 0
+  const (1) int 6 0
+ecom: 
+- int 10 1
+  name yypt int 0 0
+  const (1) int 6 0
+ecom to: 
+name .t380 int 0 0
+ecom: 
+* ref Node 10 1
+  indx big 10 1
+    name yys array of YYS 0 0
+    name yypt int 0 0
+ecom to: 
+* ref Node 8 0
+  + int 15 0
+    name .b381 big 0 0
+    const (72) int 6 0
+eacom: 
+* ref Node 10 1
+  indx big 10 1
+    name yys array of YYS 0 0
+    name yypt int 0 0
+generate desc for big
+ecom: 
+indx big 10 1
+  name yys array of YYS 0 0
+  name yypt int 0 0
+ecom to: 
+name .b379 big 0 0
+ecom: 
+= ref Node 10 1
+  * ref Node 0 0
+    adr int 13 1
+      name yyval YYSTYPE 0 0
+  * ref Node 10 1
+    indx big 10 1
+      name yys array of YYS 0 0
+      + int 15 1
+        name yyp int 0 0
+        const (1) int 6 0
+ecom: 
+* ref Node 10 1
+  indx big 10 1
+    name yys array of YYS 0 0
+    + int 15 1
+      name yyp int 0 0
+      const (1) int 6 0
+ecom to: 
+* ref Node 0 0
+  adr int 13 1
+    name yyval YYSTYPE 0 0
+eacom: 
+* ref Node 10 1
+  indx big 10 1
+    name yys array of YYS 0 0
+    + int 15 1
+      name yyp int 0 0
+      const (1) int 6 0
+generate desc for big
+ecom: 
+indx big 10 1
+  name yys array of YYS 0 0
+  + int 15 1
+    name yyp int 0 0
+    const (1) int 6 0
+ecom to: 
+name .b381 big 0 0
+eacom: 
++ int 15 1
+  name yyp int 0 0
+  const (1) int 6 0
+ecom: 
++ int 15 1
+  name yyp int 0 0
+  const (1) int 6 0
+ecom to: 
+name .t380 int 0 0
+ecom: 
+= ref Node 10 2
+  * ref Node 0 0
+    adr int 13 1
+      name yyval YYSTYPE 0 0
+  call ref Node 10 2
+    name mkseq fn(left: ref Node, right: ref Node): ref Node 11 1
+    seq no type 10 2
+      * ref Node 10 1
+        indx big 10 1
+          name yys array of YYS 0 0
+          - int 10 1
+            name yypt int 0 0
+            const (1) int 6 0
+      seq no type 10 1
+        * ref Node 10 1
+          indx big 10 1
+            name yys array of YYS 0 0
+            name yypt int 0 0
+ecom: 
+call ref Node 10 2
+  name mkseq fn(left: ref Node, right: ref Node): ref Node 11 1
+  seq no type 10 2
+    * ref Node 10 1
+      indx big 10 1
+        name yys array of YYS 0 0
+        - int 10 1
+          name yypt int 0 0
+          const (1) int 6 0
+    seq no type 10 1
+      * ref Node 10 1
+        indx big 10 1
+          name yys array of YYS 0 0
+          name yypt int 0 0
+ecom to: 
+* ref Node 0 0
+  adr int 13 1
+    name yyval YYSTYPE 0 0
+generate desc for big
+ecom: 
+* ref Node 10 1
+  indx big 10 1
+    name yys array of YYS 0 0
+    - int 10 1
+      name yypt int 0 0
+      const (1) int 6 0
+ecom to: 
+* ref Node 8 0
+  + int 15 0
+    name .b381 big 0 0
+    const (64) int 6 0
+eacom: 
+* ref Node 10 1
+  indx big 10 1
+    name yys array of YYS 0 0
+    - int 10 1
+      name yypt int 0 0
+      const (1) int 6 0
+generate desc for big
+ecom: 
+indx big 10 1
+  name yys array of YYS 0 0
+  - int 10 1
+    name yypt int 0 0
+    const (1) int 6 0
+ecom to: 
+name .b379 big 0 0
+eacom: 
+- int 10 1
+  name yypt int 0 0
+  const (1) int 6 0
+ecom: 
+- int 10 1
+  name yypt int 0 0
+  const (1) int 6 0
+ecom to: 
+name .t380 int 0 0
+ecom: 
+* ref Node 10 1
+  indx big 10 1
+    name yys array of YYS 0 0
+    name yypt int 0 0
+ecom to: 
+* ref Node 8 0
+  + int 15 0
+    name .b381 big 0 0
+    const (72) int 6 0
+eacom: 
+* ref Node 10 1
+  indx big 10 1
+    name yys array of YYS 0 0
+    name yypt int 0 0
+generate desc for big
+ecom: 
+indx big 10 1
+  name yys array of YYS 0 0
+  name yypt int 0 0
+ecom to: 
+name .b379 big 0 0
+ecom: 
+= ref Node 10 1
+  * ref Node 0 0
+    adr int 13 1
+      name yyval YYSTYPE 0 0
+  * ref Node 10 1
+    indx big 10 1
+      name yys array of YYS 0 0
+      - int 10 1
+        name yypt int 0 0
+        const (1) int 6 0
+ecom: 
+* ref Node 10 1
+  indx big 10 1
+    name yys array of YYS 0 0
+    - int 10 1
+      name yypt int 0 0
+      const (1) int 6 0
+ecom to: 
+* ref Node 0 0
+  adr int 13 1
+    name yyval YYSTYPE 0 0
+eacom: 
+* ref Node 10 1
+  indx big 10 1
+    name yys array of YYS 0 0
+    - int 10 1
+      name yypt int 0 0
+      const (1) int 6 0
+generate desc for big
+ecom: 
+indx big 10 1
+  name yys array of YYS 0 0
+  - int 10 1
+    name yypt int 0 0
+    const (1) int 6 0
+ecom to: 
+name .b381 big 0 0
+eacom: 
+- int 10 1
+  name yypt int 0 0
+  const (1) int 6 0
+ecom: 
+- int 10 1
+  name yypt int 0 0
+  const (1) int 6 0
+ecom to: 
+name .t380 int 0 0
+ecom: 
+= ref Node 10 2
+  * ref Node 0 0
+    adr int 13 1
+      name yyval YYSTYPE 0 0
+  ref ref Node 10 2
+    tuple Node 10 2
+      seq no type 10 2
+        const n_NOWAIT (12) int 6 0
+        seq no type 10 2
+          * ref Node 10 1
+            indx big 10 1
+              name yys array of YYS 0 0
+              - int 10 1
+                name yypt int 0 0
+                const (1) int 6 0
+          seq no type 10 1
+            name nil polymorphic type 1 0
+            seq no type 10 1
+              name nil polymorphic type 1 0
+              seq no type 10 1
+                name nil polymorphic type 1 0
+ecom: 
+ref ref Node 10 2
+  tuple Node 10 2
+    seq no type 10 2
+      const n_NOWAIT (12) int 6 0
+      seq no type 10 2
+        * ref Node 10 1
+          indx big 10 1
+            name yys array of YYS 0 0
+            - int 10 1
+              name yypt int 0 0
+              const (1) int 6 0
+        seq no type 10 1
+          name nil polymorphic type 1 0
+          seq no type 10 1
+            name nil polymorphic type 1 0
+            seq no type 10 1
+              name nil polymorphic type 1 0
+ecom to: 
+* ref Node 0 0
+  adr int 13 1
+    name yyval YYSTYPE 0 0
+generate desc for Node
+ecom: 
+tuple Node 10 2
+  seq no type 10 2
+    const n_NOWAIT (12) int 6 0
+    seq no type 10 2
+      * ref Node 10 1
+        indx big 10 1
+          name yys array of YYS 0 0
+          - int 10 1
+            name yypt int 0 0
+            const (1) int 6 0
+      seq no type 10 1
+        name nil polymorphic type 1 0
+        seq no type 10 1
+          name nil polymorphic type 1 0
+          seq no type 10 1
+            name nil polymorphic type 1 0
+ecom to: 
+* Node 8 0
+  name .t378 ref Node 0 0
+ecom: 
+const n_NOWAIT (12) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .t378 ref Node 0 0
+    const (0) int 6 0
+ecom: 
+* ref Node 10 1
+  indx big 10 1
+    name yys array of YYS 0 0
+    - int 10 1
+      name yypt int 0 0
+      const (1) int 6 0
+ecom to: 
+* ref Node 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .t378 ref Node 0 0
+    const (8) int 6 0
+eacom: 
+* ref Node 10 1
+  indx big 10 1
+    name yys array of YYS 0 0
+    - int 10 1
+      name yypt int 0 0
+      const (1) int 6 0
+generate desc for big
+ecom: 
+indx big 10 1
+  name yys array of YYS 0 0
+  - int 10 1
+    name yypt int 0 0
+    const (1) int 6 0
+ecom to: 
+name .b381 big 0 0
+eacom: 
+- int 10 1
+  name yypt int 0 0
+  const (1) int 6 0
+ecom: 
+- int 10 1
+  name yypt int 0 0
+  const (1) int 6 0
+ecom to: 
+name .t380 int 0 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* ref Node 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .t378 ref Node 0 0
+    const (16) int 6 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* string 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .t378 ref Node 0 0
+    const (24) int 6 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* ref Redir 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .t378 ref Node 0 0
+    const (32) int 6 0
+ecom: 
+= ref Node 10 1
+  name .t378 ref Node 0 0
+  name nil ref Node 1 0
+ecom: 
+name nil ref Node 1 0
+ecom to: 
+name .t378 ref Node 0 0
+ecom: 
+= ref Node 10 1
+  * ref Node 0 0
+    adr int 13 1
+      name yyval YYSTYPE 0 0
+  * ref Node 10 1
+    indx big 10 1
+      name yys array of YYS 0 0
+      + int 15 1
+        name yyp int 0 0
+        const (1) int 6 0
+ecom: 
+* ref Node 10 1
+  indx big 10 1
+    name yys array of YYS 0 0
+    + int 15 1
+      name yyp int 0 0
+      const (1) int 6 0
+ecom to: 
+* ref Node 0 0
+  adr int 13 1
+    name yyval YYSTYPE 0 0
+eacom: 
+* ref Node 10 1
+  indx big 10 1
+    name yys array of YYS 0 0
+    + int 15 1
+      name yyp int 0 0
+      const (1) int 6 0
+generate desc for big
+ecom: 
+indx big 10 1
+  name yys array of YYS 0 0
+  + int 15 1
+    name yyp int 0 0
+    const (1) int 6 0
+ecom to: 
+name .b381 big 0 0
+eacom: 
++ int 15 1
+  name yyp int 0 0
+  const (1) int 6 0
+ecom: 
++ int 15 1
+  name yyp int 0 0
+  const (1) int 6 0
+ecom to: 
+name .t380 int 0 0
+ecom: 
+= ref Node 10 1
+  * ref Node 0 0
+    adr int 13 1
+      name yyval YYSTYPE 0 0
+  * ref Node 10 1
+    indx big 10 1
+      name yys array of YYS 0 0
+      - int 10 1
+        name yypt int 0 0
+        const (1) int 6 0
+ecom: 
+* ref Node 10 1
+  indx big 10 1
+    name yys array of YYS 0 0
+    - int 10 1
+      name yypt int 0 0
+      const (1) int 6 0
+ecom to: 
+* ref Node 0 0
+  adr int 13 1
+    name yyval YYSTYPE 0 0
+eacom: 
+* ref Node 10 1
+  indx big 10 1
+    name yys array of YYS 0 0
+    - int 10 1
+      name yypt int 0 0
+      const (1) int 6 0
+generate desc for big
+ecom: 
+indx big 10 1
+  name yys array of YYS 0 0
+  - int 10 1
+    name yypt int 0 0
+    const (1) int 6 0
+ecom to: 
+name .b381 big 0 0
+eacom: 
+- int 10 1
+  name yypt int 0 0
+  const (1) int 6 0
+ecom: 
+- int 10 1
+  name yypt int 0 0
+  const (1) int 6 0
+ecom to: 
+name .t380 int 0 0
+ecom: 
+= ref Node 10 1
+  * ref Node 0 0
+    adr int 13 1
+      name yyval YYSTYPE 0 0
+  * ref Node 10 1
+    indx big 10 1
+      name yys array of YYS 0 0
+      + int 15 1
+        name yyp int 0 0
+        const (1) int 6 0
+ecom: 
+* ref Node 10 1
+  indx big 10 1
+    name yys array of YYS 0 0
+    + int 15 1
+      name yyp int 0 0
+      const (1) int 6 0
+ecom to: 
+* ref Node 0 0
+  adr int 13 1
+    name yyval YYSTYPE 0 0
+eacom: 
+* ref Node 10 1
+  indx big 10 1
+    name yys array of YYS 0 0
+    + int 15 1
+      name yyp int 0 0
+      const (1) int 6 0
+generate desc for big
+ecom: 
+indx big 10 1
+  name yys array of YYS 0 0
+  + int 15 1
+    name yyp int 0 0
+    const (1) int 6 0
+ecom to: 
+name .b381 big 0 0
+eacom: 
++ int 15 1
+  name yyp int 0 0
+  const (1) int 6 0
+ecom: 
++ int 15 1
+  name yyp int 0 0
+  const (1) int 6 0
+ecom to: 
+name .t380 int 0 0
+ecom: 
+= ref Node 10 3
+  * ref Node 0 0
+    adr int 13 1
+      name yyval YYSTYPE 0 0
+  ref ref Node 10 3
+    tuple Node 10 3
+      seq no type 10 3
+        const n_ADJ (10) int 6 0
+        seq no type 10 3
+          ref ref Node 10 2
+            tuple Node 10 2
+              seq no type 10 2
+                const n_ADJ (10) int 6 0
+                seq no type 10 2
+                  ref ref Node 10 1
+                    tuple Node 10 1
+                      seq no type 10 1
+                        const n_WORD (11) int 6 0
+                        seq no type 10 1
+                          name nil polymorphic type 1 0
+                          seq no type 10 1
+                            name nil polymorphic type 1 0
+                            seq no type 10 1
+                              const or string 1 0
+                              seq no type 10 1
+                                name nil polymorphic type 1 0
+                  seq no type 10 2
+                    ref ref Node 10 2
+                      tuple Node 10 2
+                        seq no type 10 2
+                          const n_BLOCK (0) int 6 0
+                          seq no type 10 2
+                            * ref Node 10 1
+                              indx big 10 1
+                                name yys array of YYS 0 0
+                                - int 10 1
+                                  name yypt int 0 0
+                                  const (2) int 6 0
+                            seq no type 10 1
+                              name nil ref Node 1 0
+                              seq no type 10 1
+                                name nil polymorphic type 1 0
+                                seq no type 10 1
+                                  name nil polymorphic type 1 0
+                    seq no type 10 1
+                      name nil polymorphic type 1 0
+                      seq no type 10 1
+                        name nil polymorphic type 1 0
+          seq no type 10 2
+            ref ref Node 10 2
+              tuple Node 10 2
+                seq no type 10 2
+                  const n_BLOCK (0) int 6 0
+                  seq no type 10 2
+                    * ref Node 10 1
+                      indx big 10 1
+                        name yys array of YYS 0 0
+                        name yypt int 0 0
+                    seq no type 10 1
+                      name nil ref Node 1 0
+                      seq no type 10 1
+                        name nil polymorphic type 1 0
+                        seq no type 10 1
+                          name nil polymorphic type 1 0
+            seq no type 10 1
+              name nil polymorphic type 1 0
+              seq no type 10 1
+                name nil polymorphic type 1 0
+ecom: 
+ref ref Node 10 3
+  tuple Node 10 3
+    seq no type 10 3
+      const n_ADJ (10) int 6 0
+      seq no type 10 3
+        ref ref Node 10 2
+          tuple Node 10 2
+            seq no type 10 2
+              const n_ADJ (10) int 6 0
+              seq no type 10 2
+                ref ref Node 10 1
+                  tuple Node 10 1
+                    seq no type 10 1
+                      const n_WORD (11) int 6 0
+                      seq no type 10 1
+                        name nil polymorphic type 1 0
+                        seq no type 10 1
+                          name nil polymorphic type 1 0
+                          seq no type 10 1
+                            const or string 1 0
+                            seq no type 10 1
+                              name nil polymorphic type 1 0
+                seq no type 10 2
+                  ref ref Node 10 2
+                    tuple Node 10 2
+                      seq no type 10 2
+                        const n_BLOCK (0) int 6 0
+                        seq no type 10 2
+                          * ref Node 10 1
+                            indx big 10 1
+                              name yys array of YYS 0 0
+                              - int 10 1
+                                name yypt int 0 0
+                                const (2) int 6 0
+                          seq no type 10 1
+                            name nil ref Node 1 0
+                            seq no type 10 1
+                              name nil polymorphic type 1 0
+                              seq no type 10 1
+                                name nil polymorphic type 1 0
+                  seq no type 10 1
+                    name nil polymorphic type 1 0
+                    seq no type 10 1
+                      name nil polymorphic type 1 0
+        seq no type 10 2
+          ref ref Node 10 2
+            tuple Node 10 2
+              seq no type 10 2
+                const n_BLOCK (0) int 6 0
+                seq no type 10 2
+                  * ref Node 10 1
+                    indx big 10 1
+                      name yys array of YYS 0 0
+                      name yypt int 0 0
+                  seq no type 10 1
+                    name nil ref Node 1 0
+                    seq no type 10 1
+                      name nil polymorphic type 1 0
+                      seq no type 10 1
+                        name nil polymorphic type 1 0
+          seq no type 10 1
+            name nil polymorphic type 1 0
+            seq no type 10 1
+              name nil polymorphic type 1 0
+ecom to: 
+* ref Node 0 0
+  adr int 13 1
+    name yyval YYSTYPE 0 0
+generate desc for Node
+ecom: 
+tuple Node 10 3
+  seq no type 10 3
+    const n_ADJ (10) int 6 0
+    seq no type 10 3
+      ref ref Node 10 2
+        tuple Node 10 2
+          seq no type 10 2
+            const n_ADJ (10) int 6 0
+            seq no type 10 2
+              ref ref Node 10 1
+                tuple Node 10 1
+                  seq no type 10 1
+                    const n_WORD (11) int 6 0
+                    seq no type 10 1
+                      name nil polymorphic type 1 0
+                      seq no type 10 1
+                        name nil polymorphic type 1 0
+                        seq no type 10 1
+                          const or string 1 0
+                          seq no type 10 1
+                            name nil polymorphic type 1 0
+              seq no type 10 2
+                ref ref Node 10 2
+                  tuple Node 10 2
+                    seq no type 10 2
+                      const n_BLOCK (0) int 6 0
+                      seq no type 10 2
+                        * ref Node 10 1
+                          indx big 10 1
+                            name yys array of YYS 0 0
+                            - int 10 1
+                              name yypt int 0 0
+                              const (2) int 6 0
+                        seq no type 10 1
+                          name nil ref Node 1 0
+                          seq no type 10 1
+                            name nil polymorphic type 1 0
+                            seq no type 10 1
+                              name nil polymorphic type 1 0
+                seq no type 10 1
+                  name nil polymorphic type 1 0
+                  seq no type 10 1
+                    name nil polymorphic type 1 0
+      seq no type 10 2
+        ref ref Node 10 2
+          tuple Node 10 2
+            seq no type 10 2
+              const n_BLOCK (0) int 6 0
+              seq no type 10 2
+                * ref Node 10 1
+                  indx big 10 1
+                    name yys array of YYS 0 0
+                    name yypt int 0 0
+                seq no type 10 1
+                  name nil ref Node 1 0
+                  seq no type 10 1
+                    name nil polymorphic type 1 0
+                    seq no type 10 1
+                      name nil polymorphic type 1 0
+        seq no type 10 1
+          name nil polymorphic type 1 0
+          seq no type 10 1
+            name nil polymorphic type 1 0
+ecom to: 
+* Node 8 0
+  name .t378 ref Node 0 0
+ecom: 
+const n_ADJ (10) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .t378 ref Node 0 0
+    const (0) int 6 0
+ecom: 
+ref ref Node 10 2
+  tuple Node 10 2
+    seq no type 10 2
+      const n_ADJ (10) int 6 0
+      seq no type 10 2
+        ref ref Node 10 1
+          tuple Node 10 1
+            seq no type 10 1
+              const n_WORD (11) int 6 0
+              seq no type 10 1
+                name nil polymorphic type 1 0
+                seq no type 10 1
+                  name nil polymorphic type 1 0
+                  seq no type 10 1
+                    const or string 1 0
+                    seq no type 10 1
+                      name nil polymorphic type 1 0
+        seq no type 10 2
+          ref ref Node 10 2
+            tuple Node 10 2
+              seq no type 10 2
+                const n_BLOCK (0) int 6 0
+                seq no type 10 2
+                  * ref Node 10 1
+                    indx big 10 1
+                      name yys array of YYS 0 0
+                      - int 10 1
+                        name yypt int 0 0
+                        const (2) int 6 0
+                  seq no type 10 1
+                    name nil ref Node 1 0
+                    seq no type 10 1
+                      name nil polymorphic type 1 0
+                      seq no type 10 1
+                        name nil polymorphic type 1 0
+          seq no type 10 1
+            name nil polymorphic type 1 0
+            seq no type 10 1
+              name nil polymorphic type 1 0
+ecom to: 
+* ref Node 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .t378 ref Node 0 0
+    const (8) int 6 0
+generate desc for Node
+ecom: 
+tuple Node 10 2
+  seq no type 10 2
+    const n_ADJ (10) int 6 0
+    seq no type 10 2
+      ref ref Node 10 1
+        tuple Node 10 1
+          seq no type 10 1
+            const n_WORD (11) int 6 0
+            seq no type 10 1
+              name nil polymorphic type 1 0
+              seq no type 10 1
+                name nil polymorphic type 1 0
+                seq no type 10 1
+                  const or string 1 0
+                  seq no type 10 1
+                    name nil polymorphic type 1 0
+      seq no type 10 2
+        ref ref Node 10 2
+          tuple Node 10 2
+            seq no type 10 2
+              const n_BLOCK (0) int 6 0
+              seq no type 10 2
+                * ref Node 10 1
+                  indx big 10 1
+                    name yys array of YYS 0 0
+                    - int 10 1
+                      name yypt int 0 0
+                      const (2) int 6 0
+                seq no type 10 1
+                  name nil ref Node 1 0
+                  seq no type 10 1
+                    name nil polymorphic type 1 0
+                    seq no type 10 1
+                      name nil polymorphic type 1 0
+        seq no type 10 1
+          name nil polymorphic type 1 0
+          seq no type 10 1
+            name nil polymorphic type 1 0
+ecom to: 
+* Node 8 0
+  name .t382 ref Node 0 0
+ecom: 
+const n_ADJ (10) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .t382 ref Node 0 0
+    const (0) int 6 0
+ecom: 
+ref ref Node 10 1
+  tuple Node 10 1
+    seq no type 10 1
+      const n_WORD (11) int 6 0
+      seq no type 10 1
+        name nil polymorphic type 1 0
+        seq no type 10 1
+          name nil polymorphic type 1 0
+          seq no type 10 1
+            const or string 1 0
+            seq no type 10 1
+              name nil polymorphic type 1 0
+ecom to: 
+* ref Node 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .t382 ref Node 0 0
+    const (8) int 6 0
+generate desc for Node
+ecom: 
+tuple Node 10 1
+  seq no type 10 1
+    const n_WORD (11) int 6 0
+    seq no type 10 1
+      name nil polymorphic type 1 0
+      seq no type 10 1
+        name nil polymorphic type 1 0
+        seq no type 10 1
+          const or string 1 0
+          seq no type 10 1
+            name nil polymorphic type 1 0
+ecom to: 
+* Node 8 0
+  name .t383 ref Node 0 0
+ecom: 
+const n_WORD (11) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .t383 ref Node 0 0
+    const (0) int 6 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* ref Node 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .t383 ref Node 0 0
+    const (8) int 6 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* ref Node 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .t383 ref Node 0 0
+    const (16) int 6 0
+ecom: 
+const or string 1 0
+ecom to: 
+* string 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .t383 ref Node 0 0
+    const (24) int 6 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* ref Redir 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .t383 ref Node 0 0
+    const (32) int 6 0
+ecom: 
+= ref Node 10 1
+  name .t383 ref Node 0 0
+  name nil ref Node 1 0
+ecom: 
+name nil ref Node 1 0
+ecom to: 
+name .t383 ref Node 0 0
+ecom: 
+ref ref Node 10 2
+  tuple Node 10 2
+    seq no type 10 2
+      const n_BLOCK (0) int 6 0
+      seq no type 10 2
+        * ref Node 10 1
+          indx big 10 1
+            name yys array of YYS 0 0
+            - int 10 1
+              name yypt int 0 0
+              const (2) int 6 0
+        seq no type 10 1
+          name nil ref Node 1 0
+          seq no type 10 1
+            name nil polymorphic type 1 0
+            seq no type 10 1
+              name nil polymorphic type 1 0
+ecom to: 
+* ref Node 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .t382 ref Node 0 0
+    const (16) int 6 0
+generate desc for Node
+ecom: 
+tuple Node 10 2
+  seq no type 10 2
+    const n_BLOCK (0) int 6 0
+    seq no type 10 2
+      * ref Node 10 1
+        indx big 10 1
+          name yys array of YYS 0 0
+          - int 10 1
+            name yypt int 0 0
+            const (2) int 6 0
+      seq no type 10 1
+        name nil ref Node 1 0
+        seq no type 10 1
+          name nil polymorphic type 1 0
+          seq no type 10 1
+            name nil polymorphic type 1 0
+ecom to: 
+* Node 8 0
+  name .t383 ref Node 0 0
+ecom: 
+const n_BLOCK (0) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .t383 ref Node 0 0
+    const (0) int 6 0
+ecom: 
+* ref Node 10 1
+  indx big 10 1
+    name yys array of YYS 0 0
+    - int 10 1
+      name yypt int 0 0
+      const (2) int 6 0
+ecom to: 
+* ref Node 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .t383 ref Node 0 0
+    const (8) int 6 0
+eacom: 
+* ref Node 10 1
+  indx big 10 1
+    name yys array of YYS 0 0
+    - int 10 1
+      name yypt int 0 0
+      const (2) int 6 0
+generate desc for big
+ecom: 
+indx big 10 1
+  name yys array of YYS 0 0
+  - int 10 1
+    name yypt int 0 0
+    const (2) int 6 0
+ecom to: 
+name .b381 big 0 0
+eacom: 
+- int 10 1
+  name yypt int 0 0
+  const (2) int 6 0
+ecom: 
+- int 10 1
+  name yypt int 0 0
+  const (2) int 6 0
+ecom to: 
+name .t380 int 0 0
+ecom: 
+name nil ref Node 1 0
+ecom to: 
+* ref Node 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .t383 ref Node 0 0
+    const (16) int 6 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* string 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .t383 ref Node 0 0
+    const (24) int 6 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* ref Redir 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .t383 ref Node 0 0
+    const (32) int 6 0
+ecom: 
+= ref Node 10 1
+  name .t383 ref Node 0 0
+  name nil ref Node 1 0
+ecom: 
+name nil ref Node 1 0
+ecom to: 
+name .t383 ref Node 0 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* string 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .t382 ref Node 0 0
+    const (24) int 6 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* ref Redir 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .t382 ref Node 0 0
+    const (32) int 6 0
+ecom: 
+= ref Node 10 1
+  name .t382 ref Node 0 0
+  name nil ref Node 1 0
+ecom: 
+name nil ref Node 1 0
+ecom to: 
+name .t382 ref Node 0 0
+ecom: 
+ref ref Node 10 2
+  tuple Node 10 2
+    seq no type 10 2
+      const n_BLOCK (0) int 6 0
+      seq no type 10 2
+        * ref Node 10 1
+          indx big 10 1
+            name yys array of YYS 0 0
+            name yypt int 0 0
+        seq no type 10 1
+          name nil ref Node 1 0
+          seq no type 10 1
+            name nil polymorphic type 1 0
+            seq no type 10 1
+              name nil polymorphic type 1 0
+ecom to: 
+* ref Node 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .t378 ref Node 0 0
+    const (16) int 6 0
+generate desc for Node
+ecom: 
+tuple Node 10 2
+  seq no type 10 2
+    const n_BLOCK (0) int 6 0
+    seq no type 10 2
+      * ref Node 10 1
+        indx big 10 1
+          name yys array of YYS 0 0
+          name yypt int 0 0
+      seq no type 10 1
+        name nil ref Node 1 0
+        seq no type 10 1
+          name nil polymorphic type 1 0
+          seq no type 10 1
+            name nil polymorphic type 1 0
+ecom to: 
+* Node 8 0
+  name .t383 ref Node 0 0
+ecom: 
+const n_BLOCK (0) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .t383 ref Node 0 0
+    const (0) int 6 0
+ecom: 
+* ref Node 10 1
+  indx big 10 1
+    name yys array of YYS 0 0
+    name yypt int 0 0
+ecom to: 
+* ref Node 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .t383 ref Node 0 0
+    const (8) int 6 0
+eacom: 
+* ref Node 10 1
+  indx big 10 1
+    name yys array of YYS 0 0
+    name yypt int 0 0
+generate desc for big
+ecom: 
+indx big 10 1
+  name yys array of YYS 0 0
+  name yypt int 0 0
+ecom to: 
+name .b381 big 0 0
+ecom: 
+name nil ref Node 1 0
+ecom to: 
+* ref Node 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .t383 ref Node 0 0
+    const (16) int 6 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* string 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .t383 ref Node 0 0
+    const (24) int 6 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* ref Redir 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .t383 ref Node 0 0
+    const (32) int 6 0
+ecom: 
+= ref Node 10 1
+  name .t383 ref Node 0 0
+  name nil ref Node 1 0
+ecom: 
+name nil ref Node 1 0
+ecom to: 
+name .t383 ref Node 0 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* string 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .t378 ref Node 0 0
+    const (24) int 6 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* ref Redir 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .t378 ref Node 0 0
+    const (32) int 6 0
+ecom: 
+= ref Node 10 1
+  name .t378 ref Node 0 0
+  name nil ref Node 1 0
+ecom: 
+name nil ref Node 1 0
+ecom to: 
+name .t378 ref Node 0 0
+ecom: 
+= ref Node 10 1
+  * ref Node 0 0
+    adr int 13 1
+      name yyval YYSTYPE 0 0
+  * ref Node 10 1
+    indx big 10 1
+      name yys array of YYS 0 0
+      + int 15 1
+        name yyp int 0 0
+        const (1) int 6 0
+ecom: 
+* ref Node 10 1
+  indx big 10 1
+    name yys array of YYS 0 0
+    + int 15 1
+      name yyp int 0 0
+      const (1) int 6 0
+ecom to: 
+* ref Node 0 0
+  adr int 13 1
+    name yyval YYSTYPE 0 0
+eacom: 
+* ref Node 10 1
+  indx big 10 1
+    name yys array of YYS 0 0
+    + int 15 1
+      name yyp int 0 0
+      const (1) int 6 0
+generate desc for big
+ecom: 
+indx big 10 1
+  name yys array of YYS 0 0
+  + int 15 1
+    name yyp int 0 0
+    const (1) int 6 0
+ecom to: 
+name .b381 big 0 0
+eacom: 
++ int 15 1
+  name yyp int 0 0
+  const (1) int 6 0
+ecom: 
++ int 15 1
+  name yyp int 0 0
+  const (1) int 6 0
+ecom to: 
+name .t380 int 0 0
+ecom: 
+= ref Node 10 3
+  * ref Node 0 0
+    adr int 13 1
+      name yyval YYSTYPE 0 0
+  ref ref Node 10 3
+    tuple Node 10 3
+      seq no type 10 3
+        const n_ADJ (10) int 6 0
+        seq no type 10 3
+          ref ref Node 10 2
+            tuple Node 10 2
+              seq no type 10 2
+                const n_ADJ (10) int 6 0
+                seq no type 10 2
+                  ref ref Node 10 1
+                    tuple Node 10 1
+                      seq no type 10 1
+                        const n_WORD (11) int 6 0
+                        seq no type 10 1
+                          name nil polymorphic type 1 0
+                          seq no type 10 1
+                            name nil polymorphic type 1 0
+                            seq no type 10 1
+                              const and string 1 0
+                              seq no type 10 1
+                                name nil polymorphic type 1 0
+                  seq no type 10 2
+                    ref ref Node 10 2
+                      tuple Node 10 2
+                        seq no type 10 2
+                          const n_BLOCK (0) int 6 0
+                          seq no type 10 2
+                            * ref Node 10 1
+                              indx big 10 1
+                                name yys array of YYS 0 0
+                                - int 10 1
+                                  name yypt int 0 0
+                                  const (2) int 6 0
+                            seq no type 10 1
+                              name nil ref Node 1 0
+                              seq no type 10 1
+                                name nil polymorphic type 1 0
+                                seq no type 10 1
+                                  name nil polymorphic type 1 0
+                    seq no type 10 1
+                      name nil polymorphic type 1 0
+                      seq no type 10 1
+                        name nil polymorphic type 1 0
+          seq no type 10 2
+            ref ref Node 10 2
+              tuple Node 10 2
+                seq no type 10 2
+                  const n_BLOCK (0) int 6 0
+                  seq no type 10 2
+                    * ref Node 10 1
+                      indx big 10 1
+                        name yys array of YYS 0 0
+                        name yypt int 0 0
+                    seq no type 10 1
+                      name nil ref Node 1 0
+                      seq no type 10 1
+                        name nil polymorphic type 1 0
+                        seq no type 10 1
+                          name nil polymorphic type 1 0
+            seq no type 10 1
+              name nil polymorphic type 1 0
+              seq no type 10 1
+                name nil polymorphic type 1 0
+ecom: 
+ref ref Node 10 3
+  tuple Node 10 3
+    seq no type 10 3
+      const n_ADJ (10) int 6 0
+      seq no type 10 3
+        ref ref Node 10 2
+          tuple Node 10 2
+            seq no type 10 2
+              const n_ADJ (10) int 6 0
+              seq no type 10 2
+                ref ref Node 10 1
+                  tuple Node 10 1
+                    seq no type 10 1
+                      const n_WORD (11) int 6 0
+                      seq no type 10 1
+                        name nil polymorphic type 1 0
+                        seq no type 10 1
+                          name nil polymorphic type 1 0
+                          seq no type 10 1
+                            const and string 1 0
+                            seq no type 10 1
+                              name nil polymorphic type 1 0
+                seq no type 10 2
+                  ref ref Node 10 2
+                    tuple Node 10 2
+                      seq no type 10 2
+                        const n_BLOCK (0) int 6 0
+                        seq no type 10 2
+                          * ref Node 10 1
+                            indx big 10 1
+                              name yys array of YYS 0 0
+                              - int 10 1
+                                name yypt int 0 0
+                                const (2) int 6 0
+                          seq no type 10 1
+                            name nil ref Node 1 0
+                            seq no type 10 1
+                              name nil polymorphic type 1 0
+                              seq no type 10 1
+                                name nil polymorphic type 1 0
+                  seq no type 10 1
+                    name nil polymorphic type 1 0
+                    seq no type 10 1
+                      name nil polymorphic type 1 0
+        seq no type 10 2
+          ref ref Node 10 2
+            tuple Node 10 2
+              seq no type 10 2
+                const n_BLOCK (0) int 6 0
+                seq no type 10 2
+                  * ref Node 10 1
+                    indx big 10 1
+                      name yys array of YYS 0 0
+                      name yypt int 0 0
+                  seq no type 10 1
+                    name nil ref Node 1 0
+                    seq no type 10 1
+                      name nil polymorphic type 1 0
+                      seq no type 10 1
+                        name nil polymorphic type 1 0
+          seq no type 10 1
+            name nil polymorphic type 1 0
+            seq no type 10 1
+              name nil polymorphic type 1 0
+ecom to: 
+* ref Node 0 0
+  adr int 13 1
+    name yyval YYSTYPE 0 0
+generate desc for Node
+ecom: 
+tuple Node 10 3
+  seq no type 10 3
+    const n_ADJ (10) int 6 0
+    seq no type 10 3
+      ref ref Node 10 2
+        tuple Node 10 2
+          seq no type 10 2
+            const n_ADJ (10) int 6 0
+            seq no type 10 2
+              ref ref Node 10 1
+                tuple Node 10 1
+                  seq no type 10 1
+                    const n_WORD (11) int 6 0
+                    seq no type 10 1
+                      name nil polymorphic type 1 0
+                      seq no type 10 1
+                        name nil polymorphic type 1 0
+                        seq no type 10 1
+                          const and string 1 0
+                          seq no type 10 1
+                            name nil polymorphic type 1 0
+              seq no type 10 2
+                ref ref Node 10 2
+                  tuple Node 10 2
+                    seq no type 10 2
+                      const n_BLOCK (0) int 6 0
+                      seq no type 10 2
+                        * ref Node 10 1
+                          indx big 10 1
+                            name yys array of YYS 0 0
+                            - int 10 1
+                              name yypt int 0 0
+                              const (2) int 6 0
+                        seq no type 10 1
+                          name nil ref Node 1 0
+                          seq no type 10 1
+                            name nil polymorphic type 1 0
+                            seq no type 10 1
+                              name nil polymorphic type 1 0
+                seq no type 10 1
+                  name nil polymorphic type 1 0
+                  seq no type 10 1
+                    name nil polymorphic type 1 0
+      seq no type 10 2
+        ref ref Node 10 2
+          tuple Node 10 2
+            seq no type 10 2
+              const n_BLOCK (0) int 6 0
+              seq no type 10 2
+                * ref Node 10 1
+                  indx big 10 1
+                    name yys array of YYS 0 0
+                    name yypt int 0 0
+                seq no type 10 1
+                  name nil ref Node 1 0
+                  seq no type 10 1
+                    name nil polymorphic type 1 0
+                    seq no type 10 1
+                      name nil polymorphic type 1 0
+        seq no type 10 1
+          name nil polymorphic type 1 0
+          seq no type 10 1
+            name nil polymorphic type 1 0
+ecom to: 
+* Node 8 0
+  name .t383 ref Node 0 0
+ecom: 
+const n_ADJ (10) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .t383 ref Node 0 0
+    const (0) int 6 0
+ecom: 
+ref ref Node 10 2
+  tuple Node 10 2
+    seq no type 10 2
+      const n_ADJ (10) int 6 0
+      seq no type 10 2
+        ref ref Node 10 1
+          tuple Node 10 1
+            seq no type 10 1
+              const n_WORD (11) int 6 0
+              seq no type 10 1
+                name nil polymorphic type 1 0
+                seq no type 10 1
+                  name nil polymorphic type 1 0
+                  seq no type 10 1
+                    const and string 1 0
+                    seq no type 10 1
+                      name nil polymorphic type 1 0
+        seq no type 10 2
+          ref ref Node 10 2
+            tuple Node 10 2
+              seq no type 10 2
+                const n_BLOCK (0) int 6 0
+                seq no type 10 2
+                  * ref Node 10 1
+                    indx big 10 1
+                      name yys array of YYS 0 0
+                      - int 10 1
+                        name yypt int 0 0
+                        const (2) int 6 0
+                  seq no type 10 1
+                    name nil ref Node 1 0
+                    seq no type 10 1
+                      name nil polymorphic type 1 0
+                      seq no type 10 1
+                        name nil polymorphic type 1 0
+          seq no type 10 1
+            name nil polymorphic type 1 0
+            seq no type 10 1
+              name nil polymorphic type 1 0
+ecom to: 
+* ref Node 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .t383 ref Node 0 0
+    const (8) int 6 0
+generate desc for Node
+ecom: 
+tuple Node 10 2
+  seq no type 10 2
+    const n_ADJ (10) int 6 0
+    seq no type 10 2
+      ref ref Node 10 1
+        tuple Node 10 1
+          seq no type 10 1
+            const n_WORD (11) int 6 0
+            seq no type 10 1
+              name nil polymorphic type 1 0
+              seq no type 10 1
+                name nil polymorphic type 1 0
+                seq no type 10 1
+                  const and string 1 0
+                  seq no type 10 1
+                    name nil polymorphic type 1 0
+      seq no type 10 2
+        ref ref Node 10 2
+          tuple Node 10 2
+            seq no type 10 2
+              const n_BLOCK (0) int 6 0
+              seq no type 10 2
+                * ref Node 10 1
+                  indx big 10 1
+                    name yys array of YYS 0 0
+                    - int 10 1
+                      name yypt int 0 0
+                      const (2) int 6 0
+                seq no type 10 1
+                  name nil ref Node 1 0
+                  seq no type 10 1
+                    name nil polymorphic type 1 0
+                    seq no type 10 1
+                      name nil polymorphic type 1 0
+        seq no type 10 1
+          name nil polymorphic type 1 0
+          seq no type 10 1
+            name nil polymorphic type 1 0
+ecom to: 
+* Node 8 0
+  name .t382 ref Node 0 0
+ecom: 
+const n_ADJ (10) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .t382 ref Node 0 0
+    const (0) int 6 0
+ecom: 
+ref ref Node 10 1
+  tuple Node 10 1
+    seq no type 10 1
+      const n_WORD (11) int 6 0
+      seq no type 10 1
+        name nil polymorphic type 1 0
+        seq no type 10 1
+          name nil polymorphic type 1 0
+          seq no type 10 1
+            const and string 1 0
+            seq no type 10 1
+              name nil polymorphic type 1 0
+ecom to: 
+* ref Node 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .t382 ref Node 0 0
+    const (8) int 6 0
+generate desc for Node
+ecom: 
+tuple Node 10 1
+  seq no type 10 1
+    const n_WORD (11) int 6 0
+    seq no type 10 1
+      name nil polymorphic type 1 0
+      seq no type 10 1
+        name nil polymorphic type 1 0
+        seq no type 10 1
+          const and string 1 0
+          seq no type 10 1
+            name nil polymorphic type 1 0
+ecom to: 
+* Node 8 0
+  name .t378 ref Node 0 0
+ecom: 
+const n_WORD (11) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .t378 ref Node 0 0
+    const (0) int 6 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* ref Node 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .t378 ref Node 0 0
+    const (8) int 6 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* ref Node 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .t378 ref Node 0 0
+    const (16) int 6 0
+ecom: 
+const and string 1 0
+ecom to: 
+* string 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .t378 ref Node 0 0
+    const (24) int 6 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* ref Redir 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .t378 ref Node 0 0
+    const (32) int 6 0
+ecom: 
+= ref Node 10 1
+  name .t378 ref Node 0 0
+  name nil ref Node 1 0
+ecom: 
+name nil ref Node 1 0
+ecom to: 
+name .t378 ref Node 0 0
+ecom: 
+ref ref Node 10 2
+  tuple Node 10 2
+    seq no type 10 2
+      const n_BLOCK (0) int 6 0
+      seq no type 10 2
+        * ref Node 10 1
+          indx big 10 1
+            name yys array of YYS 0 0
+            - int 10 1
+              name yypt int 0 0
+              const (2) int 6 0
+        seq no type 10 1
+          name nil ref Node 1 0
+          seq no type 10 1
+            name nil polymorphic type 1 0
+            seq no type 10 1
+              name nil polymorphic type 1 0
+ecom to: 
+* ref Node 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .t382 ref Node 0 0
+    const (16) int 6 0
+generate desc for Node
+ecom: 
+tuple Node 10 2
+  seq no type 10 2
+    const n_BLOCK (0) int 6 0
+    seq no type 10 2
+      * ref Node 10 1
+        indx big 10 1
+          name yys array of YYS 0 0
+          - int 10 1
+            name yypt int 0 0
+            const (2) int 6 0
+      seq no type 10 1
+        name nil ref Node 1 0
+        seq no type 10 1
+          name nil polymorphic type 1 0
+          seq no type 10 1
+            name nil polymorphic type 1 0
+ecom to: 
+* Node 8 0
+  name .t378 ref Node 0 0
+ecom: 
+const n_BLOCK (0) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .t378 ref Node 0 0
+    const (0) int 6 0
+ecom: 
+* ref Node 10 1
+  indx big 10 1
+    name yys array of YYS 0 0
+    - int 10 1
+      name yypt int 0 0
+      const (2) int 6 0
+ecom to: 
+* ref Node 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .t378 ref Node 0 0
+    const (8) int 6 0
+eacom: 
+* ref Node 10 1
+  indx big 10 1
+    name yys array of YYS 0 0
+    - int 10 1
+      name yypt int 0 0
+      const (2) int 6 0
+generate desc for big
+ecom: 
+indx big 10 1
+  name yys array of YYS 0 0
+  - int 10 1
+    name yypt int 0 0
+    const (2) int 6 0
+ecom to: 
+name .b381 big 0 0
+eacom: 
+- int 10 1
+  name yypt int 0 0
+  const (2) int 6 0
+ecom: 
+- int 10 1
+  name yypt int 0 0
+  const (2) int 6 0
+ecom to: 
+name .t380 int 0 0
+ecom: 
+name nil ref Node 1 0
+ecom to: 
+* ref Node 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .t378 ref Node 0 0
+    const (16) int 6 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* string 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .t378 ref Node 0 0
+    const (24) int 6 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* ref Redir 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .t378 ref Node 0 0
+    const (32) int 6 0
+ecom: 
+= ref Node 10 1
+  name .t378 ref Node 0 0
+  name nil ref Node 1 0
+ecom: 
+name nil ref Node 1 0
+ecom to: 
+name .t378 ref Node 0 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* string 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .t382 ref Node 0 0
+    const (24) int 6 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* ref Redir 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .t382 ref Node 0 0
+    const (32) int 6 0
+ecom: 
+= ref Node 10 1
+  name .t382 ref Node 0 0
+  name nil ref Node 1 0
+ecom: 
+name nil ref Node 1 0
+ecom to: 
+name .t382 ref Node 0 0
+ecom: 
+ref ref Node 10 2
+  tuple Node 10 2
+    seq no type 10 2
+      const n_BLOCK (0) int 6 0
+      seq no type 10 2
+        * ref Node 10 1
+          indx big 10 1
+            name yys array of YYS 0 0
+            name yypt int 0 0
+        seq no type 10 1
+          name nil ref Node 1 0
+          seq no type 10 1
+            name nil polymorphic type 1 0
+            seq no type 10 1
+              name nil polymorphic type 1 0
+ecom to: 
+* ref Node 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .t383 ref Node 0 0
+    const (16) int 6 0
+generate desc for Node
+ecom: 
+tuple Node 10 2
+  seq no type 10 2
+    const n_BLOCK (0) int 6 0
+    seq no type 10 2
+      * ref Node 10 1
+        indx big 10 1
+          name yys array of YYS 0 0
+          name yypt int 0 0
+      seq no type 10 1
+        name nil ref Node 1 0
+        seq no type 10 1
+          name nil polymorphic type 1 0
+          seq no type 10 1
+            name nil polymorphic type 1 0
+ecom to: 
+* Node 8 0
+  name .t382 ref Node 0 0
+ecom: 
+const n_BLOCK (0) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .t382 ref Node 0 0
+    const (0) int 6 0
+ecom: 
+* ref Node 10 1
+  indx big 10 1
+    name yys array of YYS 0 0
+    name yypt int 0 0
+ecom to: 
+* ref Node 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .t382 ref Node 0 0
+    const (8) int 6 0
+eacom: 
+* ref Node 10 1
+  indx big 10 1
+    name yys array of YYS 0 0
+    name yypt int 0 0
+generate desc for big
+ecom: 
+indx big 10 1
+  name yys array of YYS 0 0
+  name yypt int 0 0
+ecom to: 
+name .b381 big 0 0
+ecom: 
+name nil ref Node 1 0
+ecom to: 
+* ref Node 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .t382 ref Node 0 0
+    const (16) int 6 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* string 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .t382 ref Node 0 0
+    const (24) int 6 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* ref Redir 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .t382 ref Node 0 0
+    const (32) int 6 0
+ecom: 
+= ref Node 10 1
+  name .t382 ref Node 0 0
+  name nil ref Node 1 0
+ecom: 
+name nil ref Node 1 0
+ecom to: 
+name .t382 ref Node 0 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* string 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .t383 ref Node 0 0
+    const (24) int 6 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* ref Redir 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .t383 ref Node 0 0
+    const (32) int 6 0
+ecom: 
+= ref Node 10 1
+  name .t383 ref Node 0 0
+  name nil ref Node 1 0
+ecom: 
+name nil ref Node 1 0
+ecom to: 
+name .t383 ref Node 0 0
+ecom: 
+= ref Node 10 1
+  * ref Node 0 0
+    adr int 13 1
+      name yyval YYSTYPE 0 0
+  name nil polymorphic type 1 0
+ecom: 
+name nil ref Node 1 0
+ecom to: 
+* ref Node 0 0
+  adr int 13 1
+    name yyval YYSTYPE 0 0
+ecom: 
+= ref Node 10 1
+  * ref Node 0 0
+    adr int 13 1
+      name yyval YYSTYPE 0 0
+  * ref Node 10 1
+    indx big 10 1
+      name yys array of YYS 0 0
+      + int 15 1
+        name yyp int 0 0
+        const (1) int 6 0
+ecom: 
+* ref Node 10 1
+  indx big 10 1
+    name yys array of YYS 0 0
+    + int 15 1
+      name yyp int 0 0
+      const (1) int 6 0
+ecom to: 
+* ref Node 0 0
+  adr int 13 1
+    name yyval YYSTYPE 0 0
+eacom: 
+* ref Node 10 1
+  indx big 10 1
+    name yys array of YYS 0 0
+    + int 15 1
+      name yyp int 0 0
+      const (1) int 6 0
+generate desc for big
+ecom: 
+indx big 10 1
+  name yys array of YYS 0 0
+  + int 15 1
+    name yyp int 0 0
+    const (1) int 6 0
+ecom to: 
+name .b381 big 0 0
+eacom: 
++ int 15 1
+  name yyp int 0 0
+  const (1) int 6 0
+ecom: 
++ int 15 1
+  name yyp int 0 0
+  const (1) int 6 0
+ecom to: 
+name .t380 int 0 0
+ecom: 
+= ref Node 10 2
+  * ref Node 0 0
+    adr int 13 1
+      name yyval YYSTYPE 0 0
+  ref ref Node 10 2
+    tuple Node 10 2
+      seq no type 10 2
+        const n_PIPE (9) int 6 0
+        seq no type 10 2
+          * ref Node 10 1
+            indx big 10 1
+              name yys array of YYS 0 0
+              - int 10 1
+                name yypt int 0 0
+                const (3) int 6 0
+          seq no type 10 2
+            * ref Node 10 1
+              indx big 10 1
+                name yys array of YYS 0 0
+                name yypt int 0 0
+            seq no type 10 1
+              name nil polymorphic type 1 0
+              seq no type 10 1
+                * ref Redir 10 1
+                  + int 10 1
+                    indx big 10 1
+                      name yys array of YYS 0 0
+                      - int 10 1
+                        name yypt int 0 0
+                        const (2) int 6 0
+                    const redir (16) int 6 0
+ecom: 
+ref ref Node 10 2
+  tuple Node 10 2
+    seq no type 10 2
+      const n_PIPE (9) int 6 0
+      seq no type 10 2
+        * ref Node 10 1
+          indx big 10 1
+            name yys array of YYS 0 0
+            - int 10 1
+              name yypt int 0 0
+              const (3) int 6 0
+        seq no type 10 2
+          * ref Node 10 1
+            indx big 10 1
+              name yys array of YYS 0 0
+              name yypt int 0 0
+          seq no type 10 1
+            name nil polymorphic type 1 0
+            seq no type 10 1
+              * ref Redir 10 1
+                + int 10 1
+                  indx big 10 1
+                    name yys array of YYS 0 0
+                    - int 10 1
+                      name yypt int 0 0
+                      const (2) int 6 0
+                  const redir (16) int 6 0
+ecom to: 
+* ref Node 0 0
+  adr int 13 1
+    name yyval YYSTYPE 0 0
+generate desc for Node
+ecom: 
+tuple Node 10 2
+  seq no type 10 2
+    const n_PIPE (9) int 6 0
+    seq no type 10 2
+      * ref Node 10 1
+        indx big 10 1
+          name yys array of YYS 0 0
+          - int 10 1
+            name yypt int 0 0
+            const (3) int 6 0
+      seq no type 10 2
+        * ref Node 10 1
+          indx big 10 1
+            name yys array of YYS 0 0
+            name yypt int 0 0
+        seq no type 10 1
+          name nil polymorphic type 1 0
+          seq no type 10 1
+            * ref Redir 10 1
+              + int 10 1
+                indx big 10 1
+                  name yys array of YYS 0 0
+                  - int 10 1
+                    name yypt int 0 0
+                    const (2) int 6 0
+                const redir (16) int 6 0
+ecom to: 
+* Node 8 0
+  name .t383 ref Node 0 0
+ecom: 
+const n_PIPE (9) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .t383 ref Node 0 0
+    const (0) int 6 0
+ecom: 
+* ref Node 10 1
+  indx big 10 1
+    name yys array of YYS 0 0
+    - int 10 1
+      name yypt int 0 0
+      const (3) int 6 0
+ecom to: 
+* ref Node 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .t383 ref Node 0 0
+    const (8) int 6 0
+eacom: 
+* ref Node 10 1
+  indx big 10 1
+    name yys array of YYS 0 0
+    - int 10 1
+      name yypt int 0 0
+      const (3) int 6 0
+generate desc for big
+ecom: 
+indx big 10 1
+  name yys array of YYS 0 0
+  - int 10 1
+    name yypt int 0 0
+    const (3) int 6 0
+ecom to: 
+name .b381 big 0 0
+eacom: 
+- int 10 1
+  name yypt int 0 0
+  const (3) int 6 0
+ecom: 
+- int 10 1
+  name yypt int 0 0
+  const (3) int 6 0
+ecom to: 
+name .t380 int 0 0
+ecom: 
+* ref Node 10 1
+  indx big 10 1
+    name yys array of YYS 0 0
+    name yypt int 0 0
+ecom to: 
+* ref Node 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .t383 ref Node 0 0
+    const (16) int 6 0
+eacom: 
+* ref Node 10 1
+  indx big 10 1
+    name yys array of YYS 0 0
+    name yypt int 0 0
+generate desc for big
+ecom: 
+indx big 10 1
+  name yys array of YYS 0 0
+  name yypt int 0 0
+ecom to: 
+name .b381 big 0 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* string 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .t383 ref Node 0 0
+    const (24) int 6 0
+ecom: 
+* ref Redir 10 1
+  + int 10 1
+    indx big 10 1
+      name yys array of YYS 0 0
+      - int 10 1
+        name yypt int 0 0
+        const (2) int 6 0
+    const redir (16) int 6 0
+ecom to: 
+* ref Redir 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .t383 ref Node 0 0
+    const (32) int 6 0
+eacom: 
+* ref Redir 10 1
+  + int 10 1
+    indx big 10 1
+      name yys array of YYS 0 0
+      - int 10 1
+        name yypt int 0 0
+        const (2) int 6 0
+    const redir (16) int 6 0
+generate desc for big
+ecom: 
+indx big 10 1
+  name yys array of YYS 0 0
+  - int 10 1
+    name yypt int 0 0
+    const (2) int 6 0
+ecom to: 
+name .b381 big 0 0
+eacom: 
+- int 10 1
+  name yypt int 0 0
+  const (2) int 6 0
+ecom: 
+- int 10 1
+  name yypt int 0 0
+  const (2) int 6 0
+ecom to: 
+name .t380 int 0 0
+ecom: 
+= ref Node 10 1
+  name .t383 ref Node 0 0
+  name nil ref Node 1 0
+ecom: 
+name nil ref Node 1 0
+ecom to: 
+name .t383 ref Node 0 0
+ecom: 
+= ref Node 10 1
+  * ref Node 0 0
+    adr int 13 1
+      name yyval YYSTYPE 0 0
+  * ref Node 10 1
+    indx big 10 1
+      name yys array of YYS 0 0
+      + int 15 1
+        name yyp int 0 0
+        const (1) int 6 0
+ecom: 
+* ref Node 10 1
+  indx big 10 1
+    name yys array of YYS 0 0
+    + int 15 1
+      name yyp int 0 0
+      const (1) int 6 0
+ecom to: 
+* ref Node 0 0
+  adr int 13 1
+    name yyval YYSTYPE 0 0
+eacom: 
+* ref Node 10 1
+  indx big 10 1
+    name yys array of YYS 0 0
+    + int 15 1
+      name yyp int 0 0
+      const (1) int 6 0
+generate desc for big
+ecom: 
+indx big 10 1
+  name yys array of YYS 0 0
+  + int 15 1
+    name yyp int 0 0
+    const (1) int 6 0
+ecom to: 
+name .b381 big 0 0
+eacom: 
++ int 15 1
+  name yyp int 0 0
+  const (1) int 6 0
+ecom: 
++ int 15 1
+  name yyp int 0 0
+  const (1) int 6 0
+ecom to: 
+name .t380 int 0 0
+ecom: 
+= ref Node 10 2
+  * ref Node 0 0
+    adr int 13 1
+      name yyval YYSTYPE 0 0
+  ref ref Node 10 2
+    tuple Node 10 2
+      seq no type 10 2
+        const n_ADJ (10) int 6 0
+        seq no type 10 2
+          * ref Node 10 1
+            indx big 10 1
+              name yys array of YYS 0 0
+              - int 10 1
+                name yypt int 0 0
+                const (1) int 6 0
+          seq no type 10 2
+            * ref Node 10 1
+              indx big 10 1
+                name yys array of YYS 0 0
+                name yypt int 0 0
+            seq no type 10 1
+              name nil polymorphic type 1 0
+              seq no type 10 1
+                name nil polymorphic type 1 0
+ecom: 
+ref ref Node 10 2
+  tuple Node 10 2
+    seq no type 10 2
+      const n_ADJ (10) int 6 0
+      seq no type 10 2
+        * ref Node 10 1
+          indx big 10 1
+            name yys array of YYS 0 0
+            - int 10 1
+              name yypt int 0 0
+              const (1) int 6 0
+        seq no type 10 2
+          * ref Node 10 1
+            indx big 10 1
+              name yys array of YYS 0 0
+              name yypt int 0 0
+          seq no type 10 1
+            name nil polymorphic type 1 0
+            seq no type 10 1
+              name nil polymorphic type 1 0
+ecom to: 
+* ref Node 0 0
+  adr int 13 1
+    name yyval YYSTYPE 0 0
+generate desc for Node
+ecom: 
+tuple Node 10 2
+  seq no type 10 2
+    const n_ADJ (10) int 6 0
+    seq no type 10 2
+      * ref Node 10 1
+        indx big 10 1
+          name yys array of YYS 0 0
+          - int 10 1
+            name yypt int 0 0
+            const (1) int 6 0
+      seq no type 10 2
+        * ref Node 10 1
+          indx big 10 1
+            name yys array of YYS 0 0
+            name yypt int 0 0
+        seq no type 10 1
+          name nil polymorphic type 1 0
+          seq no type 10 1
+            name nil polymorphic type 1 0
+ecom to: 
+* Node 8 0
+  name .t383 ref Node 0 0
+ecom: 
+const n_ADJ (10) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .t383 ref Node 0 0
+    const (0) int 6 0
+ecom: 
+* ref Node 10 1
+  indx big 10 1
+    name yys array of YYS 0 0
+    - int 10 1
+      name yypt int 0 0
+      const (1) int 6 0
+ecom to: 
+* ref Node 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .t383 ref Node 0 0
+    const (8) int 6 0
+eacom: 
+* ref Node 10 1
+  indx big 10 1
+    name yys array of YYS 0 0
+    - int 10 1
+      name yypt int 0 0
+      const (1) int 6 0
+generate desc for big
+ecom: 
+indx big 10 1
+  name yys array of YYS 0 0
+  - int 10 1
+    name yypt int 0 0
+    const (1) int 6 0
+ecom to: 
+name .b381 big 0 0
+eacom: 
+- int 10 1
+  name yypt int 0 0
+  const (1) int 6 0
+ecom: 
+- int 10 1
+  name yypt int 0 0
+  const (1) int 6 0
+ecom to: 
+name .t380 int 0 0
+ecom: 
+* ref Node 10 1
+  indx big 10 1
+    name yys array of YYS 0 0
+    name yypt int 0 0
+ecom to: 
+* ref Node 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .t383 ref Node 0 0
+    const (16) int 6 0
+eacom: 
+* ref Node 10 1
+  indx big 10 1
+    name yys array of YYS 0 0
+    name yypt int 0 0
+generate desc for big
+ecom: 
+indx big 10 1
+  name yys array of YYS 0 0
+  name yypt int 0 0
+ecom to: 
+name .b381 big 0 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* string 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .t383 ref Node 0 0
+    const (24) int 6 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* ref Redir 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .t383 ref Node 0 0
+    const (32) int 6 0
+ecom: 
+= ref Node 10 1
+  name .t383 ref Node 0 0
+  name nil ref Node 1 0
+ecom: 
+name nil ref Node 1 0
+ecom to: 
+name .t383 ref Node 0 0
+ecom: 
+= ref Node 10 1
+  * ref Node 0 0
+    adr int 13 1
+      name yyval YYSTYPE 0 0
+  * ref Node 10 1
+    indx big 10 1
+      name yys array of YYS 0 0
+      + int 15 1
+        name yyp int 0 0
+        const (1) int 6 0
+ecom: 
+* ref Node 10 1
+  indx big 10 1
+    name yys array of YYS 0 0
+    + int 15 1
+      name yyp int 0 0
+      const (1) int 6 0
+ecom to: 
+* ref Node 0 0
+  adr int 13 1
+    name yyval YYSTYPE 0 0
+eacom: 
+* ref Node 10 1
+  indx big 10 1
+    name yys array of YYS 0 0
+    + int 15 1
+      name yyp int 0 0
+      const (1) int 6 0
+generate desc for big
+ecom: 
+indx big 10 1
+  name yys array of YYS 0 0
+  + int 15 1
+    name yyp int 0 0
+    const (1) int 6 0
+ecom to: 
+name .b381 big 0 0
+eacom: 
++ int 15 1
+  name yyp int 0 0
+  const (1) int 6 0
+ecom: 
++ int 15 1
+  name yyp int 0 0
+  const (1) int 6 0
+ecom to: 
+name .t380 int 0 0
+ecom: 
+= ref Node 10 1
+  * ref Node 0 0
+    adr int 13 1
+      name yyval YYSTYPE 0 0
+  * ref Node 10 1
+    indx big 10 1
+      name yys array of YYS 0 0
+      + int 15 1
+        name yyp int 0 0
+        const (1) int 6 0
+ecom: 
+* ref Node 10 1
+  indx big 10 1
+    name yys array of YYS 0 0
+    + int 15 1
+      name yyp int 0 0
+      const (1) int 6 0
+ecom to: 
+* ref Node 0 0
+  adr int 13 1
+    name yyval YYSTYPE 0 0
+eacom: 
+* ref Node 10 1
+  indx big 10 1
+    name yys array of YYS 0 0
+    + int 15 1
+      name yyp int 0 0
+      const (1) int 6 0
+generate desc for big
+ecom: 
+indx big 10 1
+  name yys array of YYS 0 0
+  + int 15 1
+    name yyp int 0 0
+    const (1) int 6 0
+ecom to: 
+name .b381 big 0 0
+eacom: 
++ int 15 1
+  name yyp int 0 0
+  const (1) int 6 0
+ecom: 
++ int 15 1
+  name yyp int 0 0
+  const (1) int 6 0
+ecom to: 
+name .t380 int 0 0
+ecom: 
+= ref Node 10 2
+  * ref Node 0 0
+    adr int 13 1
+      name yyval YYSTYPE 0 0
+  ref ref Node 10 2
+    tuple Node 10 2
+      seq no type 10 2
+        * int 10 1
+          + int 10 1
+            indx big 10 1
+              name yys array of YYS 0 0
+              - int 10 1
+                name yypt int 0 0
+                const (1) int 6 0
+            const optype (24) int 6 0
+        seq no type 10 2
+          * ref Node 10 1
+            indx big 10 1
+              name yys array of YYS 0 0
+              - int 10 1
+                name yypt int 0 0
+                const (2) int 6 0
+          seq no type 10 2
+            * ref Node 10 1
+              indx big 10 1
+                name yys array of YYS 0 0
+                name yypt int 0 0
+            seq no type 10 1
+              name nil polymorphic type 1 0
+              seq no type 10 1
+                name nil polymorphic type 1 0
+ecom: 
+ref ref Node 10 2
+  tuple Node 10 2
+    seq no type 10 2
+      * int 10 1
+        + int 10 1
+          indx big 10 1
+            name yys array of YYS 0 0
+            - int 10 1
+              name yypt int 0 0
+              const (1) int 6 0
+          const optype (24) int 6 0
+      seq no type 10 2
+        * ref Node 10 1
+          indx big 10 1
+            name yys array of YYS 0 0
+            - int 10 1
+              name yypt int 0 0
+              const (2) int 6 0
+        seq no type 10 2
+          * ref Node 10 1
+            indx big 10 1
+              name yys array of YYS 0 0
+              name yypt int 0 0
+          seq no type 10 1
+            name nil polymorphic type 1 0
+            seq no type 10 1
+              name nil polymorphic type 1 0
+ecom to: 
+* ref Node 0 0
+  adr int 13 1
+    name yyval YYSTYPE 0 0
+generate desc for Node
+ecom: 
+tuple Node 10 2
+  seq no type 10 2
+    * int 10 1
+      + int 10 1
+        indx big 10 1
+          name yys array of YYS 0 0
+          - int 10 1
+            name yypt int 0 0
+            const (1) int 6 0
+        const optype (24) int 6 0
+    seq no type 10 2
+      * ref Node 10 1
+        indx big 10 1
+          name yys array of YYS 0 0
+          - int 10 1
+            name yypt int 0 0
+            const (2) int 6 0
+      seq no type 10 2
+        * ref Node 10 1
+          indx big 10 1
+            name yys array of YYS 0 0
+            name yypt int 0 0
+        seq no type 10 1
+          name nil polymorphic type 1 0
+          seq no type 10 1
+            name nil polymorphic type 1 0
+ecom to: 
+* Node 8 0
+  name .t383 ref Node 0 0
+ecom: 
+* int 10 1
+  + int 10 1
+    indx big 10 1
+      name yys array of YYS 0 0
+      - int 10 1
+        name yypt int 0 0
+        const (1) int 6 0
+    const optype (24) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .t383 ref Node 0 0
+    const (0) int 6 0
+eacom: 
+* int 10 1
+  + int 10 1
+    indx big 10 1
+      name yys array of YYS 0 0
+      - int 10 1
+        name yypt int 0 0
+        const (1) int 6 0
+    const optype (24) int 6 0
+generate desc for big
+ecom: 
+indx big 10 1
+  name yys array of YYS 0 0
+  - int 10 1
+    name yypt int 0 0
+    const (1) int 6 0
+ecom to: 
+name .b381 big 0 0
+eacom: 
+- int 10 1
+  name yypt int 0 0
+  const (1) int 6 0
+ecom: 
+- int 10 1
+  name yypt int 0 0
+  const (1) int 6 0
+ecom to: 
+name .t380 int 0 0
+ecom: 
+* ref Node 10 1
+  indx big 10 1
+    name yys array of YYS 0 0
+    - int 10 1
+      name yypt int 0 0
+      const (2) int 6 0
+ecom to: 
+* ref Node 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .t383 ref Node 0 0
+    const (8) int 6 0
+eacom: 
+* ref Node 10 1
+  indx big 10 1
+    name yys array of YYS 0 0
+    - int 10 1
+      name yypt int 0 0
+      const (2) int 6 0
+generate desc for big
+ecom: 
+indx big 10 1
+  name yys array of YYS 0 0
+  - int 10 1
+    name yypt int 0 0
+    const (2) int 6 0
+ecom to: 
+name .b381 big 0 0
+eacom: 
+- int 10 1
+  name yypt int 0 0
+  const (2) int 6 0
+ecom: 
+- int 10 1
+  name yypt int 0 0
+  const (2) int 6 0
+ecom to: 
+name .t380 int 0 0
+ecom: 
+* ref Node 10 1
+  indx big 10 1
+    name yys array of YYS 0 0
+    name yypt int 0 0
+ecom to: 
+* ref Node 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .t383 ref Node 0 0
+    const (16) int 6 0
+eacom: 
+* ref Node 10 1
+  indx big 10 1
+    name yys array of YYS 0 0
+    name yypt int 0 0
+generate desc for big
+ecom: 
+indx big 10 1
+  name yys array of YYS 0 0
+  name yypt int 0 0
+ecom to: 
+name .b381 big 0 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* string 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .t383 ref Node 0 0
+    const (24) int 6 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* ref Redir 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .t383 ref Node 0 0
+    const (32) int 6 0
+ecom: 
+= ref Node 10 1
+  name .t383 ref Node 0 0
+  name nil ref Node 1 0
+ecom: 
+name nil ref Node 1 0
+ecom to: 
+name .t383 ref Node 0 0
+ecom: 
+= ref Node 10 2
+  * ref Node 0 0
+    adr int 13 1
+      name yyval YYSTYPE 0 0
+  ref ref Node 10 2
+    tuple Node 10 2
+      seq no type 10 2
+        * int 10 1
+          + int 10 1
+            indx big 10 1
+              name yys array of YYS 0 0
+              - int 10 1
+                name yypt int 0 0
+                const (1) int 6 0
+            const optype (24) int 6 0
+        seq no type 10 2
+          * ref Node 10 1
+            indx big 10 1
+              name yys array of YYS 0 0
+              - int 10 1
+                name yypt int 0 0
+                const (2) int 6 0
+          seq no type 10 2
+            * ref Node 10 1
+              indx big 10 1
+                name yys array of YYS 0 0
+                name yypt int 0 0
+            seq no type 10 1
+              name nil polymorphic type 1 0
+              seq no type 10 1
+                name nil polymorphic type 1 0
+ecom: 
+ref ref Node 10 2
+  tuple Node 10 2
+    seq no type 10 2
+      * int 10 1
+        + int 10 1
+          indx big 10 1
+            name yys array of YYS 0 0
+            - int 10 1
+              name yypt int 0 0
+              const (1) int 6 0
+          const optype (24) int 6 0
+      seq no type 10 2
+        * ref Node 10 1
+          indx big 10 1
+            name yys array of YYS 0 0
+            - int 10 1
+              name yypt int 0 0
+              const (2) int 6 0
+        seq no type 10 2
+          * ref Node 10 1
+            indx big 10 1
+              name yys array of YYS 0 0
+              name yypt int 0 0
+          seq no type 10 1
+            name nil polymorphic type 1 0
+            seq no type 10 1
+              name nil polymorphic type 1 0
+ecom to: 
+* ref Node 0 0
+  adr int 13 1
+    name yyval YYSTYPE 0 0
+generate desc for Node
+ecom: 
+tuple Node 10 2
+  seq no type 10 2
+    * int 10 1
+      + int 10 1
+        indx big 10 1
+          name yys array of YYS 0 0
+          - int 10 1
+            name yypt int 0 0
+            const (1) int 6 0
+        const optype (24) int 6 0
+    seq no type 10 2
+      * ref Node 10 1
+        indx big 10 1
+          name yys array of YYS 0 0
+          - int 10 1
+            name yypt int 0 0
+            const (2) int 6 0
+      seq no type 10 2
+        * ref Node 10 1
+          indx big 10 1
+            name yys array of YYS 0 0
+            name yypt int 0 0
+        seq no type 10 1
+          name nil polymorphic type 1 0
+          seq no type 10 1
+            name nil polymorphic type 1 0
+ecom to: 
+* Node 8 0
+  name .t383 ref Node 0 0
+ecom: 
+* int 10 1
+  + int 10 1
+    indx big 10 1
+      name yys array of YYS 0 0
+      - int 10 1
+        name yypt int 0 0
+        const (1) int 6 0
+    const optype (24) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .t383 ref Node 0 0
+    const (0) int 6 0
+eacom: 
+* int 10 1
+  + int 10 1
+    indx big 10 1
+      name yys array of YYS 0 0
+      - int 10 1
+        name yypt int 0 0
+        const (1) int 6 0
+    const optype (24) int 6 0
+generate desc for big
+ecom: 
+indx big 10 1
+  name yys array of YYS 0 0
+  - int 10 1
+    name yypt int 0 0
+    const (1) int 6 0
+ecom to: 
+name .b381 big 0 0
+eacom: 
+- int 10 1
+  name yypt int 0 0
+  const (1) int 6 0
+ecom: 
+- int 10 1
+  name yypt int 0 0
+  const (1) int 6 0
+ecom to: 
+name .t380 int 0 0
+ecom: 
+* ref Node 10 1
+  indx big 10 1
+    name yys array of YYS 0 0
+    - int 10 1
+      name yypt int 0 0
+      const (2) int 6 0
+ecom to: 
+* ref Node 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .t383 ref Node 0 0
+    const (8) int 6 0
+eacom: 
+* ref Node 10 1
+  indx big 10 1
+    name yys array of YYS 0 0
+    - int 10 1
+      name yypt int 0 0
+      const (2) int 6 0
+generate desc for big
+ecom: 
+indx big 10 1
+  name yys array of YYS 0 0
+  - int 10 1
+    name yypt int 0 0
+    const (2) int 6 0
+ecom to: 
+name .b381 big 0 0
+eacom: 
+- int 10 1
+  name yypt int 0 0
+  const (2) int 6 0
+ecom: 
+- int 10 1
+  name yypt int 0 0
+  const (2) int 6 0
+ecom to: 
+name .t380 int 0 0
+ecom: 
+* ref Node 10 1
+  indx big 10 1
+    name yys array of YYS 0 0
+    name yypt int 0 0
+ecom to: 
+* ref Node 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .t383 ref Node 0 0
+    const (16) int 6 0
+eacom: 
+* ref Node 10 1
+  indx big 10 1
+    name yys array of YYS 0 0
+    name yypt int 0 0
+generate desc for big
+ecom: 
+indx big 10 1
+  name yys array of YYS 0 0
+  name yypt int 0 0
+ecom to: 
+name .b381 big 0 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* string 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .t383 ref Node 0 0
+    const (24) int 6 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* ref Redir 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .t383 ref Node 0 0
+    const (32) int 6 0
+ecom: 
+= ref Node 10 1
+  name .t383 ref Node 0 0
+  name nil ref Node 1 0
+ecom: 
+name nil ref Node 1 0
+ecom to: 
+name .t383 ref Node 0 0
+ecom: 
+= ref Node 10 2
+  * ref Node 0 0
+    adr int 13 1
+      name yyval YYSTYPE 0 0
+  ref ref Node 10 2
+    tuple Node 10 2
+      seq no type 10 2
+        * int 10 1
+          + int 10 1
+            indx big 10 1
+              name yys array of YYS 0 0
+              name yypt int 0 0
+            const optype (24) int 6 0
+        seq no type 10 2
+          * ref Node 10 1
+            indx big 10 1
+              name yys array of YYS 0 0
+              - int 10 1
+                name yypt int 0 0
+                const (1) int 6 0
+          seq no type 10 1
+            name nil ref Node 1 0
+            seq no type 10 1
+              name nil polymorphic type 1 0
+              seq no type 10 1
+                name nil polymorphic type 1 0
+ecom: 
+ref ref Node 10 2
+  tuple Node 10 2
+    seq no type 10 2
+      * int 10 1
+        + int 10 1
+          indx big 10 1
+            name yys array of YYS 0 0
+            name yypt int 0 0
+          const optype (24) int 6 0
+      seq no type 10 2
+        * ref Node 10 1
+          indx big 10 1
+            name yys array of YYS 0 0
+            - int 10 1
+              name yypt int 0 0
+              const (1) int 6 0
+        seq no type 10 1
+          name nil ref Node 1 0
+          seq no type 10 1
+            name nil polymorphic type 1 0
+            seq no type 10 1
+              name nil polymorphic type 1 0
+ecom to: 
+* ref Node 0 0
+  adr int 13 1
+    name yyval YYSTYPE 0 0
+generate desc for Node
+ecom: 
+tuple Node 10 2
+  seq no type 10 2
+    * int 10 1
+      + int 10 1
+        indx big 10 1
+          name yys array of YYS 0 0
+          name yypt int 0 0
+        const optype (24) int 6 0
+    seq no type 10 2
+      * ref Node 10 1
+        indx big 10 1
+          name yys array of YYS 0 0
+          - int 10 1
+            name yypt int 0 0
+            const (1) int 6 0
+      seq no type 10 1
+        name nil ref Node 1 0
+        seq no type 10 1
+          name nil polymorphic type 1 0
+          seq no type 10 1
+            name nil polymorphic type 1 0
+ecom to: 
+* Node 8 0
+  name .t383 ref Node 0 0
+ecom: 
+* int 10 1
+  + int 10 1
+    indx big 10 1
+      name yys array of YYS 0 0
+      name yypt int 0 0
+    const optype (24) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .t383 ref Node 0 0
+    const (0) int 6 0
+eacom: 
+* int 10 1
+  + int 10 1
+    indx big 10 1
+      name yys array of YYS 0 0
+      name yypt int 0 0
+    const optype (24) int 6 0
+generate desc for big
+ecom: 
+indx big 10 1
+  name yys array of YYS 0 0
+  name yypt int 0 0
+ecom to: 
+name .b381 big 0 0
+ecom: 
+* ref Node 10 1
+  indx big 10 1
+    name yys array of YYS 0 0
+    - int 10 1
+      name yypt int 0 0
+      const (1) int 6 0
+ecom to: 
+* ref Node 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .t383 ref Node 0 0
+    const (8) int 6 0
+eacom: 
+* ref Node 10 1
+  indx big 10 1
+    name yys array of YYS 0 0
+    - int 10 1
+      name yypt int 0 0
+      const (1) int 6 0
+generate desc for big
+ecom: 
+indx big 10 1
+  name yys array of YYS 0 0
+  - int 10 1
+    name yypt int 0 0
+    const (1) int 6 0
+ecom to: 
+name .b381 big 0 0
+eacom: 
+- int 10 1
+  name yypt int 0 0
+  const (1) int 6 0
+ecom: 
+- int 10 1
+  name yypt int 0 0
+  const (1) int 6 0
+ecom to: 
+name .t380 int 0 0
+ecom: 
+name nil ref Node 1 0
+ecom to: 
+* ref Node 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .t383 ref Node 0 0
+    const (16) int 6 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* string 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .t383 ref Node 0 0
+    const (24) int 6 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* ref Redir 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .t383 ref Node 0 0
+    const (32) int 6 0
+ecom: 
+= ref Node 10 1
+  name .t383 ref Node 0 0
+  name nil ref Node 1 0
+ecom: 
+name nil ref Node 1 0
+ecom to: 
+name .t383 ref Node 0 0
+ecom: 
+= ref Node 10 1
+  * ref Node 0 0
+    adr int 13 1
+      name yyval YYSTYPE 0 0
+  ref ref Node 10 1
+    tuple Node 10 1
+      seq no type 10 1
+        const n_DUP (5) int 6 0
+        seq no type 10 1
+          name nil polymorphic type 1 0
+          seq no type 10 1
+            name nil polymorphic type 1 0
+            seq no type 10 1
+              name nil polymorphic type 1 0
+              seq no type 10 1
+                * ref Redir 10 1
+                  + int 10 1
+                    indx big 10 1
+                      name yys array of YYS 0 0
+                      name yypt int 0 0
+                    const redir (16) int 6 0
+ecom: 
+ref ref Node 10 1
+  tuple Node 10 1
+    seq no type 10 1
+      const n_DUP (5) int 6 0
+      seq no type 10 1
+        name nil polymorphic type 1 0
+        seq no type 10 1
+          name nil polymorphic type 1 0
+          seq no type 10 1
+            name nil polymorphic type 1 0
+            seq no type 10 1
+              * ref Redir 10 1
+                + int 10 1
+                  indx big 10 1
+                    name yys array of YYS 0 0
+                    name yypt int 0 0
+                  const redir (16) int 6 0
+ecom to: 
+* ref Node 0 0
+  adr int 13 1
+    name yyval YYSTYPE 0 0
+generate desc for Node
+ecom: 
+tuple Node 10 1
+  seq no type 10 1
+    const n_DUP (5) int 6 0
+    seq no type 10 1
+      name nil polymorphic type 1 0
+      seq no type 10 1
+        name nil polymorphic type 1 0
+        seq no type 10 1
+          name nil polymorphic type 1 0
+          seq no type 10 1
+            * ref Redir 10 1
+              + int 10 1
+                indx big 10 1
+                  name yys array of YYS 0 0
+                  name yypt int 0 0
+                const redir (16) int 6 0
+ecom to: 
+* Node 8 0
+  name .t383 ref Node 0 0
+ecom: 
+const n_DUP (5) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .t383 ref Node 0 0
+    const (0) int 6 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* ref Node 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .t383 ref Node 0 0
+    const (8) int 6 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* ref Node 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .t383 ref Node 0 0
+    const (16) int 6 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* string 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .t383 ref Node 0 0
+    const (24) int 6 0
+ecom: 
+* ref Redir 10 1
+  + int 10 1
+    indx big 10 1
+      name yys array of YYS 0 0
+      name yypt int 0 0
+    const redir (16) int 6 0
+ecom to: 
+* ref Redir 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .t383 ref Node 0 0
+    const (32) int 6 0
+eacom: 
+* ref Redir 10 1
+  + int 10 1
+    indx big 10 1
+      name yys array of YYS 0 0
+      name yypt int 0 0
+    const redir (16) int 6 0
+generate desc for big
+ecom: 
+indx big 10 1
+  name yys array of YYS 0 0
+  name yypt int 0 0
+ecom to: 
+name .b381 big 0 0
+ecom: 
+= ref Node 10 1
+  name .t383 ref Node 0 0
+  name nil ref Node 1 0
+ecom: 
+name nil ref Node 1 0
+ecom to: 
+name .t383 ref Node 0 0
+ecom: 
+= ref Node 10 2
+  * ref Node 0 0
+    adr int 13 1
+      name yyval YYSTYPE 0 0
+  ref ref Node 10 2
+    tuple Node 10 2
+      seq no type 10 2
+        const n_REDIR (4) int 6 0
+        seq no type 10 2
+          * ref Node 10 1
+            indx big 10 1
+              name yys array of YYS 0 0
+              name yypt int 0 0
+          seq no type 10 1
+            name nil polymorphic type 1 0
+            seq no type 10 1
+              name nil polymorphic type 1 0
+              seq no type 10 1
+                * ref Redir 10 1
+                  + int 10 1
+                    indx big 10 1
+                      name yys array of YYS 0 0
+                      - int 10 1
+                        name yypt int 0 0
+                        const (1) int 6 0
+                    const redir (16) int 6 0
+ecom: 
+ref ref Node 10 2
+  tuple Node 10 2
+    seq no type 10 2
+      const n_REDIR (4) int 6 0
+      seq no type 10 2
+        * ref Node 10 1
+          indx big 10 1
+            name yys array of YYS 0 0
+            name yypt int 0 0
+        seq no type 10 1
+          name nil polymorphic type 1 0
+          seq no type 10 1
+            name nil polymorphic type 1 0
+            seq no type 10 1
+              * ref Redir 10 1
+                + int 10 1
+                  indx big 10 1
+                    name yys array of YYS 0 0
+                    - int 10 1
+                      name yypt int 0 0
+                      const (1) int 6 0
+                  const redir (16) int 6 0
+ecom to: 
+* ref Node 0 0
+  adr int 13 1
+    name yyval YYSTYPE 0 0
+generate desc for Node
+ecom: 
+tuple Node 10 2
+  seq no type 10 2
+    const n_REDIR (4) int 6 0
+    seq no type 10 2
+      * ref Node 10 1
+        indx big 10 1
+          name yys array of YYS 0 0
+          name yypt int 0 0
+      seq no type 10 1
+        name nil polymorphic type 1 0
+        seq no type 10 1
+          name nil polymorphic type 1 0
+          seq no type 10 1
+            * ref Redir 10 1
+              + int 10 1
+                indx big 10 1
+                  name yys array of YYS 0 0
+                  - int 10 1
+                    name yypt int 0 0
+                    const (1) int 6 0
+                const redir (16) int 6 0
+ecom to: 
+* Node 8 0
+  name .t383 ref Node 0 0
+ecom: 
+const n_REDIR (4) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .t383 ref Node 0 0
+    const (0) int 6 0
+ecom: 
+* ref Node 10 1
+  indx big 10 1
+    name yys array of YYS 0 0
+    name yypt int 0 0
+ecom to: 
+* ref Node 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .t383 ref Node 0 0
+    const (8) int 6 0
+eacom: 
+* ref Node 10 1
+  indx big 10 1
+    name yys array of YYS 0 0
+    name yypt int 0 0
+generate desc for big
+ecom: 
+indx big 10 1
+  name yys array of YYS 0 0
+  name yypt int 0 0
+ecom to: 
+name .b381 big 0 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* ref Node 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .t383 ref Node 0 0
+    const (16) int 6 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* string 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .t383 ref Node 0 0
+    const (24) int 6 0
+ecom: 
+* ref Redir 10 1
+  + int 10 1
+    indx big 10 1
+      name yys array of YYS 0 0
+      - int 10 1
+        name yypt int 0 0
+        const (1) int 6 0
+    const redir (16) int 6 0
+ecom to: 
+* ref Redir 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .t383 ref Node 0 0
+    const (32) int 6 0
+eacom: 
+* ref Redir 10 1
+  + int 10 1
+    indx big 10 1
+      name yys array of YYS 0 0
+      - int 10 1
+        name yypt int 0 0
+        const (1) int 6 0
+    const redir (16) int 6 0
+generate desc for big
+ecom: 
+indx big 10 1
+  name yys array of YYS 0 0
+  - int 10 1
+    name yypt int 0 0
+    const (1) int 6 0
+ecom to: 
+name .b381 big 0 0
+eacom: 
+- int 10 1
+  name yypt int 0 0
+  const (1) int 6 0
+ecom: 
+- int 10 1
+  name yypt int 0 0
+  const (1) int 6 0
+ecom to: 
+name .t380 int 0 0
+ecom: 
+= ref Node 10 1
+  name .t383 ref Node 0 0
+  name nil ref Node 1 0
+ecom: 
+name nil ref Node 1 0
+ecom to: 
+name .t383 ref Node 0 0
+ecom: 
+= ref Node 10 1
+  * ref Node 0 0
+    adr int 13 1
+      name yyval YYSTYPE 0 0
+  * ref Node 10 1
+    indx big 10 1
+      name yys array of YYS 0 0
+      + int 15 1
+        name yyp int 0 0
+        const (1) int 6 0
+ecom: 
+* ref Node 10 1
+  indx big 10 1
+    name yys array of YYS 0 0
+    + int 15 1
+      name yyp int 0 0
+      const (1) int 6 0
+ecom to: 
+* ref Node 0 0
+  adr int 13 1
+    name yyval YYSTYPE 0 0
+eacom: 
+* ref Node 10 1
+  indx big 10 1
+    name yys array of YYS 0 0
+    + int 15 1
+      name yyp int 0 0
+      const (1) int 6 0
+generate desc for big
+ecom: 
+indx big 10 1
+  name yys array of YYS 0 0
+  + int 15 1
+    name yyp int 0 0
+    const (1) int 6 0
+ecom to: 
+name .b381 big 0 0
+eacom: 
++ int 15 1
+  name yyp int 0 0
+  const (1) int 6 0
+ecom: 
++ int 15 1
+  name yyp int 0 0
+  const (1) int 6 0
+ecom to: 
+name .t380 int 0 0
+ecom: 
+= ref Node 10 2
+  * ref Node 0 0
+    adr int 13 1
+      name yyval YYSTYPE 0 0
+  ref ref Node 10 2
+    tuple Node 10 2
+      seq no type 10 2
+        const n_ADJ (10) int 6 0
+        seq no type 10 2
+          * ref Node 10 1
+            indx big 10 1
+              name yys array of YYS 0 0
+              - int 10 1
+                name yypt int 0 0
+                const (1) int 6 0
+          seq no type 10 2
+            * ref Node 10 1
+              indx big 10 1
+                name yys array of YYS 0 0
+                name yypt int 0 0
+            seq no type 10 1
+              name nil polymorphic type 1 0
+              seq no type 10 1
+                name nil polymorphic type 1 0
+ecom: 
+ref ref Node 10 2
+  tuple Node 10 2
+    seq no type 10 2
+      const n_ADJ (10) int 6 0
+      seq no type 10 2
+        * ref Node 10 1
+          indx big 10 1
+            name yys array of YYS 0 0
+            - int 10 1
+              name yypt int 0 0
+              const (1) int 6 0
+        seq no type 10 2
+          * ref Node 10 1
+            indx big 10 1
+              name yys array of YYS 0 0
+              name yypt int 0 0
+          seq no type 10 1
+            name nil polymorphic type 1 0
+            seq no type 10 1
+              name nil polymorphic type 1 0
+ecom to: 
+* ref Node 0 0
+  adr int 13 1
+    name yyval YYSTYPE 0 0
+generate desc for Node
+ecom: 
+tuple Node 10 2
+  seq no type 10 2
+    const n_ADJ (10) int 6 0
+    seq no type 10 2
+      * ref Node 10 1
+        indx big 10 1
+          name yys array of YYS 0 0
+          - int 10 1
+            name yypt int 0 0
+            const (1) int 6 0
+      seq no type 10 2
+        * ref Node 10 1
+          indx big 10 1
+            name yys array of YYS 0 0
+            name yypt int 0 0
+        seq no type 10 1
+          name nil polymorphic type 1 0
+          seq no type 10 1
+            name nil polymorphic type 1 0
+ecom to: 
+* Node 8 0
+  name .t383 ref Node 0 0
+ecom: 
+const n_ADJ (10) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .t383 ref Node 0 0
+    const (0) int 6 0
+ecom: 
+* ref Node 10 1
+  indx big 10 1
+    name yys array of YYS 0 0
+    - int 10 1
+      name yypt int 0 0
+      const (1) int 6 0
+ecom to: 
+* ref Node 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .t383 ref Node 0 0
+    const (8) int 6 0
+eacom: 
+* ref Node 10 1
+  indx big 10 1
+    name yys array of YYS 0 0
+    - int 10 1
+      name yypt int 0 0
+      const (1) int 6 0
+generate desc for big
+ecom: 
+indx big 10 1
+  name yys array of YYS 0 0
+  - int 10 1
+    name yypt int 0 0
+    const (1) int 6 0
+ecom to: 
+name .b381 big 0 0
+eacom: 
+- int 10 1
+  name yypt int 0 0
+  const (1) int 6 0
+ecom: 
+- int 10 1
+  name yypt int 0 0
+  const (1) int 6 0
+ecom to: 
+name .t380 int 0 0
+ecom: 
+* ref Node 10 1
+  indx big 10 1
+    name yys array of YYS 0 0
+    name yypt int 0 0
+ecom to: 
+* ref Node 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .t383 ref Node 0 0
+    const (16) int 6 0
+eacom: 
+* ref Node 10 1
+  indx big 10 1
+    name yys array of YYS 0 0
+    name yypt int 0 0
+generate desc for big
+ecom: 
+indx big 10 1
+  name yys array of YYS 0 0
+  name yypt int 0 0
+ecom to: 
+name .b381 big 0 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* string 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .t383 ref Node 0 0
+    const (24) int 6 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* ref Redir 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .t383 ref Node 0 0
+    const (32) int 6 0
+ecom: 
+= ref Node 10 1
+  name .t383 ref Node 0 0
+  name nil ref Node 1 0
+ecom: 
+name nil ref Node 1 0
+ecom to: 
+name .t383 ref Node 0 0
+ecom: 
+= ref Node 10 2
+  * ref Node 0 0
+    adr int 13 1
+      name yyval YYSTYPE 0 0
+  ref ref Node 10 2
+    tuple Node 10 2
+      seq no type 10 2
+        const n_ADJ (10) int 6 0
+        seq no type 10 2
+          * ref Node 10 1
+            indx big 10 1
+              name yys array of YYS 0 0
+              - int 10 1
+                name yypt int 0 0
+                const (1) int 6 0
+          seq no type 10 2
+            * ref Node 10 1
+              indx big 10 1
+                name yys array of YYS 0 0
+                name yypt int 0 0
+            seq no type 10 1
+              name nil polymorphic type 1 0
+              seq no type 10 1
+                name nil polymorphic type 1 0
+ecom: 
+ref ref Node 10 2
+  tuple Node 10 2
+    seq no type 10 2
+      const n_ADJ (10) int 6 0
+      seq no type 10 2
+        * ref Node 10 1
+          indx big 10 1
+            name yys array of YYS 0 0
+            - int 10 1
+              name yypt int 0 0
+              const (1) int 6 0
+        seq no type 10 2
+          * ref Node 10 1
+            indx big 10 1
+              name yys array of YYS 0 0
+              name yypt int 0 0
+          seq no type 10 1
+            name nil polymorphic type 1 0
+            seq no type 10 1
+              name nil polymorphic type 1 0
+ecom to: 
+* ref Node 0 0
+  adr int 13 1
+    name yyval YYSTYPE 0 0
+generate desc for Node
+ecom: 
+tuple Node 10 2
+  seq no type 10 2
+    const n_ADJ (10) int 6 0
+    seq no type 10 2
+      * ref Node 10 1
+        indx big 10 1
+          name yys array of YYS 0 0
+          - int 10 1
+            name yypt int 0 0
+            const (1) int 6 0
+      seq no type 10 2
+        * ref Node 10 1
+          indx big 10 1
+            name yys array of YYS 0 0
+            name yypt int 0 0
+        seq no type 10 1
+          name nil polymorphic type 1 0
+          seq no type 10 1
+            name nil polymorphic type 1 0
+ecom to: 
+* Node 8 0
+  name .t383 ref Node 0 0
+ecom: 
+const n_ADJ (10) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .t383 ref Node 0 0
+    const (0) int 6 0
+ecom: 
+* ref Node 10 1
+  indx big 10 1
+    name yys array of YYS 0 0
+    - int 10 1
+      name yypt int 0 0
+      const (1) int 6 0
+ecom to: 
+* ref Node 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .t383 ref Node 0 0
+    const (8) int 6 0
+eacom: 
+* ref Node 10 1
+  indx big 10 1
+    name yys array of YYS 0 0
+    - int 10 1
+      name yypt int 0 0
+      const (1) int 6 0
+generate desc for big
+ecom: 
+indx big 10 1
+  name yys array of YYS 0 0
+  - int 10 1
+    name yypt int 0 0
+    const (1) int 6 0
+ecom to: 
+name .b381 big 0 0
+eacom: 
+- int 10 1
+  name yypt int 0 0
+  const (1) int 6 0
+ecom: 
+- int 10 1
+  name yypt int 0 0
+  const (1) int 6 0
+ecom to: 
+name .t380 int 0 0
+ecom: 
+* ref Node 10 1
+  indx big 10 1
+    name yys array of YYS 0 0
+    name yypt int 0 0
+ecom to: 
+* ref Node 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .t383 ref Node 0 0
+    const (16) int 6 0
+eacom: 
+* ref Node 10 1
+  indx big 10 1
+    name yys array of YYS 0 0
+    name yypt int 0 0
+generate desc for big
+ecom: 
+indx big 10 1
+  name yys array of YYS 0 0
+  name yypt int 0 0
+ecom to: 
+name .b381 big 0 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* string 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .t383 ref Node 0 0
+    const (24) int 6 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* ref Redir 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .t383 ref Node 0 0
+    const (32) int 6 0
+ecom: 
+= ref Node 10 1
+  name .t383 ref Node 0 0
+  name nil ref Node 1 0
+ecom: 
+name nil ref Node 1 0
+ecom to: 
+name .t383 ref Node 0 0
+ecom: 
+= ref Node 10 1
+  * ref Node 0 0
+    adr int 13 1
+      name yyval YYSTYPE 0 0
+  name nil polymorphic type 1 0
+ecom: 
+name nil ref Node 1 0
+ecom to: 
+* ref Node 0 0
+  adr int 13 1
+    name yyval YYSTYPE 0 0
+ecom: 
+= ref Node 10 1
+  * ref Node 0 0
+    adr int 13 1
+      name yyval YYSTYPE 0 0
+  * ref Node 10 1
+    indx big 10 1
+      name yys array of YYS 0 0
+      + int 15 1
+        name yyp int 0 0
+        const (1) int 6 0
+ecom: 
+* ref Node 10 1
+  indx big 10 1
+    name yys array of YYS 0 0
+    + int 15 1
+      name yyp int 0 0
+      const (1) int 6 0
+ecom to: 
+* ref Node 0 0
+  adr int 13 1
+    name yyval YYSTYPE 0 0
+eacom: 
+* ref Node 10 1
+  indx big 10 1
+    name yys array of YYS 0 0
+    + int 15 1
+      name yyp int 0 0
+      const (1) int 6 0
+generate desc for big
+ecom: 
+indx big 10 1
+  name yys array of YYS 0 0
+  + int 15 1
+    name yyp int 0 0
+    const (1) int 6 0
+ecom to: 
+name .b381 big 0 0
+eacom: 
++ int 15 1
+  name yyp int 0 0
+  const (1) int 6 0
+ecom: 
++ int 15 1
+  name yyp int 0 0
+  const (1) int 6 0
+ecom to: 
+name .t380 int 0 0
+ecom: 
+= ref Node 10 1
+  * ref Node 0 0
+    adr int 13 1
+      name yyval YYSTYPE 0 0
+  * ref Node 10 1
+    indx big 10 1
+      name yys array of YYS 0 0
+      name yypt int 0 0
+ecom: 
+* ref Node 10 1
+  indx big 10 1
+    name yys array of YYS 0 0
+    name yypt int 0 0
+ecom to: 
+* ref Node 0 0
+  adr int 13 1
+    name yyval YYSTYPE 0 0
+eacom: 
+* ref Node 10 1
+  indx big 10 1
+    name yys array of YYS 0 0
+    name yypt int 0 0
+generate desc for big
+ecom: 
+indx big 10 1
+  name yys array of YYS 0 0
+  name yypt int 0 0
+ecom to: 
+name .b381 big 0 0
+ecom: 
+= ref Node 10 2
+  * ref Node 0 0
+    adr int 13 1
+      name yyval YYSTYPE 0 0
+  ref ref Node 10 2
+    tuple Node 10 2
+      seq no type 10 2
+        const n_ADJ (10) int 6 0
+        seq no type 10 2
+          * ref Node 10 1
+            indx big 10 1
+              name yys array of YYS 0 0
+              - int 10 1
+                name yypt int 0 0
+                const (2) int 6 0
+          seq no type 10 2
+            * ref Node 10 1
+              indx big 10 1
+                name yys array of YYS 0 0
+                name yypt int 0 0
+            seq no type 10 1
+              name nil polymorphic type 1 0
+              seq no type 10 1
+                name nil polymorphic type 1 0
+ecom: 
+ref ref Node 10 2
+  tuple Node 10 2
+    seq no type 10 2
+      const n_ADJ (10) int 6 0
+      seq no type 10 2
+        * ref Node 10 1
+          indx big 10 1
+            name yys array of YYS 0 0
+            - int 10 1
+              name yypt int 0 0
+              const (2) int 6 0
+        seq no type 10 2
+          * ref Node 10 1
+            indx big 10 1
+              name yys array of YYS 0 0
+              name yypt int 0 0
+          seq no type 10 1
+            name nil polymorphic type 1 0
+            seq no type 10 1
+              name nil polymorphic type 1 0
+ecom to: 
+* ref Node 0 0
+  adr int 13 1
+    name yyval YYSTYPE 0 0
+generate desc for Node
+ecom: 
+tuple Node 10 2
+  seq no type 10 2
+    const n_ADJ (10) int 6 0
+    seq no type 10 2
+      * ref Node 10 1
+        indx big 10 1
+          name yys array of YYS 0 0
+          - int 10 1
+            name yypt int 0 0
+            const (2) int 6 0
+      seq no type 10 2
+        * ref Node 10 1
+          indx big 10 1
+            name yys array of YYS 0 0
+            name yypt int 0 0
+        seq no type 10 1
+          name nil polymorphic type 1 0
+          seq no type 10 1
+            name nil polymorphic type 1 0
+ecom to: 
+* Node 8 0
+  name .t383 ref Node 0 0
+ecom: 
+const n_ADJ (10) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .t383 ref Node 0 0
+    const (0) int 6 0
+ecom: 
+* ref Node 10 1
+  indx big 10 1
+    name yys array of YYS 0 0
+    - int 10 1
+      name yypt int 0 0
+      const (2) int 6 0
+ecom to: 
+* ref Node 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .t383 ref Node 0 0
+    const (8) int 6 0
+eacom: 
+* ref Node 10 1
+  indx big 10 1
+    name yys array of YYS 0 0
+    - int 10 1
+      name yypt int 0 0
+      const (2) int 6 0
+generate desc for big
+ecom: 
+indx big 10 1
+  name yys array of YYS 0 0
+  - int 10 1
+    name yypt int 0 0
+    const (2) int 6 0
+ecom to: 
+name .b381 big 0 0
+eacom: 
+- int 10 1
+  name yypt int 0 0
+  const (2) int 6 0
+ecom: 
+- int 10 1
+  name yypt int 0 0
+  const (2) int 6 0
+ecom to: 
+name .t380 int 0 0
+ecom: 
+* ref Node 10 1
+  indx big 10 1
+    name yys array of YYS 0 0
+    name yypt int 0 0
+ecom to: 
+* ref Node 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .t383 ref Node 0 0
+    const (16) int 6 0
+eacom: 
+* ref Node 10 1
+  indx big 10 1
+    name yys array of YYS 0 0
+    name yypt int 0 0
+generate desc for big
+ecom: 
+indx big 10 1
+  name yys array of YYS 0 0
+  name yypt int 0 0
+ecom to: 
+name .b381 big 0 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* string 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .t383 ref Node 0 0
+    const (24) int 6 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* ref Redir 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .t383 ref Node 0 0
+    const (32) int 6 0
+ecom: 
+= ref Node 10 1
+  name .t383 ref Node 0 0
+  name nil ref Node 1 0
+ecom: 
+name nil ref Node 1 0
+ecom to: 
+name .t383 ref Node 0 0
+ecom: 
+= ref Node 10 2
+  * ref Node 0 0
+    adr int 13 1
+      name yyval YYSTYPE 0 0
+  ref ref Node 10 2
+    tuple Node 10 2
+      seq no type 10 2
+        const n_ADJ (10) int 6 0
+        seq no type 10 2
+          * ref Node 10 1
+            indx big 10 1
+              name yys array of YYS 0 0
+              - int 10 1
+                name yypt int 0 0
+                const (2) int 6 0
+          seq no type 10 2
+            * ref Node 10 1
+              indx big 10 1
+                name yys array of YYS 0 0
+                name yypt int 0 0
+            seq no type 10 1
+              name nil polymorphic type 1 0
+              seq no type 10 1
+                name nil polymorphic type 1 0
+ecom: 
+ref ref Node 10 2
+  tuple Node 10 2
+    seq no type 10 2
+      const n_ADJ (10) int 6 0
+      seq no type 10 2
+        * ref Node 10 1
+          indx big 10 1
+            name yys array of YYS 0 0
+            - int 10 1
+              name yypt int 0 0
+              const (2) int 6 0
+        seq no type 10 2
+          * ref Node 10 1
+            indx big 10 1
+              name yys array of YYS 0 0
+              name yypt int 0 0
+          seq no type 10 1
+            name nil polymorphic type 1 0
+            seq no type 10 1
+              name nil polymorphic type 1 0
+ecom to: 
+* ref Node 0 0
+  adr int 13 1
+    name yyval YYSTYPE 0 0
+generate desc for Node
+ecom: 
+tuple Node 10 2
+  seq no type 10 2
+    const n_ADJ (10) int 6 0
+    seq no type 10 2
+      * ref Node 10 1
+        indx big 10 1
+          name yys array of YYS 0 0
+          - int 10 1
+            name yypt int 0 0
+            const (2) int 6 0
+      seq no type 10 2
+        * ref Node 10 1
+          indx big 10 1
+            name yys array of YYS 0 0
+            name yypt int 0 0
+        seq no type 10 1
+          name nil polymorphic type 1 0
+          seq no type 10 1
+            name nil polymorphic type 1 0
+ecom to: 
+* Node 8 0
+  name .t383 ref Node 0 0
+ecom: 
+const n_ADJ (10) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .t383 ref Node 0 0
+    const (0) int 6 0
+ecom: 
+* ref Node 10 1
+  indx big 10 1
+    name yys array of YYS 0 0
+    - int 10 1
+      name yypt int 0 0
+      const (2) int 6 0
+ecom to: 
+* ref Node 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .t383 ref Node 0 0
+    const (8) int 6 0
+eacom: 
+* ref Node 10 1
+  indx big 10 1
+    name yys array of YYS 0 0
+    - int 10 1
+      name yypt int 0 0
+      const (2) int 6 0
+generate desc for big
+ecom: 
+indx big 10 1
+  name yys array of YYS 0 0
+  - int 10 1
+    name yypt int 0 0
+    const (2) int 6 0
+ecom to: 
+name .b381 big 0 0
+eacom: 
+- int 10 1
+  name yypt int 0 0
+  const (2) int 6 0
+ecom: 
+- int 10 1
+  name yypt int 0 0
+  const (2) int 6 0
+ecom to: 
+name .t380 int 0 0
+ecom: 
+* ref Node 10 1
+  indx big 10 1
+    name yys array of YYS 0 0
+    name yypt int 0 0
+ecom to: 
+* ref Node 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .t383 ref Node 0 0
+    const (16) int 6 0
+eacom: 
+* ref Node 10 1
+  indx big 10 1
+    name yys array of YYS 0 0
+    name yypt int 0 0
+generate desc for big
+ecom: 
+indx big 10 1
+  name yys array of YYS 0 0
+  name yypt int 0 0
+ecom to: 
+name .b381 big 0 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* string 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .t383 ref Node 0 0
+    const (24) int 6 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* ref Redir 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .t383 ref Node 0 0
+    const (32) int 6 0
+ecom: 
+= ref Node 10 1
+  name .t383 ref Node 0 0
+  name nil ref Node 1 0
+ecom: 
+name nil ref Node 1 0
+ecom to: 
+name .t383 ref Node 0 0
+ecom: 
+= ref Node 10 1
+  * ref Node 0 0
+    adr int 13 1
+      name yyval YYSTYPE 0 0
+  * ref Node 10 1
+    indx big 10 1
+      name yys array of YYS 0 0
+      + int 15 1
+        name yyp int 0 0
+        const (1) int 6 0
+ecom: 
+* ref Node 10 1
+  indx big 10 1
+    name yys array of YYS 0 0
+    + int 15 1
+      name yyp int 0 0
+      const (1) int 6 0
+ecom to: 
+* ref Node 0 0
+  adr int 13 1
+    name yyval YYSTYPE 0 0
+eacom: 
+* ref Node 10 1
+  indx big 10 1
+    name yys array of YYS 0 0
+    + int 15 1
+      name yyp int 0 0
+      const (1) int 6 0
+generate desc for big
+ecom: 
+indx big 10 1
+  name yys array of YYS 0 0
+  + int 15 1
+    name yyp int 0 0
+    const (1) int 6 0
+ecom to: 
+name .b381 big 0 0
+eacom: 
++ int 15 1
+  name yyp int 0 0
+  const (1) int 6 0
+ecom: 
++ int 15 1
+  name yyp int 0 0
+  const (1) int 6 0
+ecom to: 
+name .t380 int 0 0
+ecom: 
+= ref Node 10 2
+  * ref Node 0 0
+    adr int 13 1
+      name yyval YYSTYPE 0 0
+  ref ref Node 10 2
+    tuple Node 10 2
+      seq no type 10 2
+        const n_CONCAT (8) int 6 0
+        seq no type 10 2
+          * ref Node 10 1
+            indx big 10 1
+              name yys array of YYS 0 0
+              - int 10 1
+                name yypt int 0 0
+                const (3) int 6 0
+          seq no type 10 2
+            * ref Node 10 1
+              indx big 10 1
+                name yys array of YYS 0 0
+                name yypt int 0 0
+            seq no type 10 1
+              name nil polymorphic type 1 0
+              seq no type 10 1
+                name nil polymorphic type 1 0
+ecom: 
+ref ref Node 10 2
+  tuple Node 10 2
+    seq no type 10 2
+      const n_CONCAT (8) int 6 0
+      seq no type 10 2
+        * ref Node 10 1
+          indx big 10 1
+            name yys array of YYS 0 0
+            - int 10 1
+              name yypt int 0 0
+              const (3) int 6 0
+        seq no type 10 2
+          * ref Node 10 1
+            indx big 10 1
+              name yys array of YYS 0 0
+              name yypt int 0 0
+          seq no type 10 1
+            name nil polymorphic type 1 0
+            seq no type 10 1
+              name nil polymorphic type 1 0
+ecom to: 
+* ref Node 0 0
+  adr int 13 1
+    name yyval YYSTYPE 0 0
+generate desc for Node
+ecom: 
+tuple Node 10 2
+  seq no type 10 2
+    const n_CONCAT (8) int 6 0
+    seq no type 10 2
+      * ref Node 10 1
+        indx big 10 1
+          name yys array of YYS 0 0
+          - int 10 1
+            name yypt int 0 0
+            const (3) int 6 0
+      seq no type 10 2
+        * ref Node 10 1
+          indx big 10 1
+            name yys array of YYS 0 0
+            name yypt int 0 0
+        seq no type 10 1
+          name nil polymorphic type 1 0
+          seq no type 10 1
+            name nil polymorphic type 1 0
+ecom to: 
+* Node 8 0
+  name .t383 ref Node 0 0
+ecom: 
+const n_CONCAT (8) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .t383 ref Node 0 0
+    const (0) int 6 0
+ecom: 
+* ref Node 10 1
+  indx big 10 1
+    name yys array of YYS 0 0
+    - int 10 1
+      name yypt int 0 0
+      const (3) int 6 0
+ecom to: 
+* ref Node 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .t383 ref Node 0 0
+    const (8) int 6 0
+eacom: 
+* ref Node 10 1
+  indx big 10 1
+    name yys array of YYS 0 0
+    - int 10 1
+      name yypt int 0 0
+      const (3) int 6 0
+generate desc for big
+ecom: 
+indx big 10 1
+  name yys array of YYS 0 0
+  - int 10 1
+    name yypt int 0 0
+    const (3) int 6 0
+ecom to: 
+name .b381 big 0 0
+eacom: 
+- int 10 1
+  name yypt int 0 0
+  const (3) int 6 0
+ecom: 
+- int 10 1
+  name yypt int 0 0
+  const (3) int 6 0
+ecom to: 
+name .t380 int 0 0
+ecom: 
+* ref Node 10 1
+  indx big 10 1
+    name yys array of YYS 0 0
+    name yypt int 0 0
+ecom to: 
+* ref Node 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .t383 ref Node 0 0
+    const (16) int 6 0
+eacom: 
+* ref Node 10 1
+  indx big 10 1
+    name yys array of YYS 0 0
+    name yypt int 0 0
+generate desc for big
+ecom: 
+indx big 10 1
+  name yys array of YYS 0 0
+  name yypt int 0 0
+ecom to: 
+name .b381 big 0 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* string 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .t383 ref Node 0 0
+    const (24) int 6 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* ref Redir 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .t383 ref Node 0 0
+    const (32) int 6 0
+ecom: 
+= ref Node 10 1
+  name .t383 ref Node 0 0
+  name nil ref Node 1 0
+ecom: 
+name nil ref Node 1 0
+ecom to: 
+name .t383 ref Node 0 0
+ecom: 
+= ref Node 10 2
+  * ref Node 0 0
+    adr int 13 1
+      name yyval YYSTYPE 0 0
+  ref ref Node 10 2
+    tuple Node 10 2
+      seq no type 10 2
+        const n_WORD (11) int 6 0
+        seq no type 10 2
+          name nil polymorphic type 1 0
+          seq no type 10 2
+            name nil polymorphic type 1 0
+            seq no type 10 2
+              * string 10 1
+                + int 10 1
+                  indx big 10 1
+                    name yys array of YYS 0 0
+                    name yypt int 0 0
+                  const word (8) int 6 0
+              seq no type 10 1
+                name nil polymorphic type 1 0
+ecom: 
+ref ref Node 10 2
+  tuple Node 10 2
+    seq no type 10 2
+      const n_WORD (11) int 6 0
+      seq no type 10 2
+        name nil polymorphic type 1 0
+        seq no type 10 2
+          name nil polymorphic type 1 0
+          seq no type 10 2
+            * string 10 1
+              + int 10 1
+                indx big 10 1
+                  name yys array of YYS 0 0
+                  name yypt int 0 0
+                const word (8) int 6 0
+            seq no type 10 1
+              name nil polymorphic type 1 0
+ecom to: 
+* ref Node 0 0
+  adr int 13 1
+    name yyval YYSTYPE 0 0
+generate desc for Node
+ecom: 
+tuple Node 10 2
+  seq no type 10 2
+    const n_WORD (11) int 6 0
+    seq no type 10 2
+      name nil polymorphic type 1 0
+      seq no type 10 2
+        name nil polymorphic type 1 0
+        seq no type 10 2
+          * string 10 1
+            + int 10 1
+              indx big 10 1
+                name yys array of YYS 0 0
+                name yypt int 0 0
+              const word (8) int 6 0
+          seq no type 10 1
+            name nil polymorphic type 1 0
+ecom to: 
+* Node 8 0
+  name .t383 ref Node 0 0
+ecom: 
+const n_WORD (11) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .t383 ref Node 0 0
+    const (0) int 6 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* ref Node 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .t383 ref Node 0 0
+    const (8) int 6 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* ref Node 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .t383 ref Node 0 0
+    const (16) int 6 0
+ecom: 
+* string 10 1
+  + int 10 1
+    indx big 10 1
+      name yys array of YYS 0 0
+      name yypt int 0 0
+    const word (8) int 6 0
+ecom to: 
+* string 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .t383 ref Node 0 0
+    const (24) int 6 0
+eacom: 
+* string 10 1
+  + int 10 1
+    indx big 10 1
+      name yys array of YYS 0 0
+      name yypt int 0 0
+    const word (8) int 6 0
+generate desc for big
+ecom: 
+indx big 10 1
+  name yys array of YYS 0 0
+  name yypt int 0 0
+ecom to: 
+name .b381 big 0 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* ref Redir 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .t383 ref Node 0 0
+    const (32) int 6 0
+ecom: 
+= ref Node 10 1
+  name .t383 ref Node 0 0
+  name nil ref Node 1 0
+ecom: 
+name nil ref Node 1 0
+ecom to: 
+name .t383 ref Node 0 0
+ecom: 
+= ref Node 10 2
+  * ref Node 0 0
+    adr int 13 1
+      name yyval YYSTYPE 0 0
+  ref ref Node 10 2
+    tuple Node 10 2
+      seq no type 10 2
+        * int 10 1
+          + int 10 1
+            indx big 10 1
+              name yys array of YYS 0 0
+              - int 10 1
+                name yypt int 0 0
+                const (1) int 6 0
+            const optype (24) int 6 0
+        seq no type 10 2
+          * ref Node 10 1
+            indx big 10 1
+              name yys array of YYS 0 0
+              name yypt int 0 0
+          seq no type 10 1
+            name nil ref Node 1 0
+            seq no type 10 1
+              name nil polymorphic type 1 0
+              seq no type 10 1
+                name nil polymorphic type 1 0
+ecom: 
+ref ref Node 10 2
+  tuple Node 10 2
+    seq no type 10 2
+      * int 10 1
+        + int 10 1
+          indx big 10 1
+            name yys array of YYS 0 0
+            - int 10 1
+              name yypt int 0 0
+              const (1) int 6 0
+          const optype (24) int 6 0
+      seq no type 10 2
+        * ref Node 10 1
+          indx big 10 1
+            name yys array of YYS 0 0
+            name yypt int 0 0
+        seq no type 10 1
+          name nil ref Node 1 0
+          seq no type 10 1
+            name nil polymorphic type 1 0
+            seq no type 10 1
+              name nil polymorphic type 1 0
+ecom to: 
+* ref Node 0 0
+  adr int 13 1
+    name yyval YYSTYPE 0 0
+generate desc for Node
+ecom: 
+tuple Node 10 2
+  seq no type 10 2
+    * int 10 1
+      + int 10 1
+        indx big 10 1
+          name yys array of YYS 0 0
+          - int 10 1
+            name yypt int 0 0
+            const (1) int 6 0
+        const optype (24) int 6 0
+    seq no type 10 2
+      * ref Node 10 1
+        indx big 10 1
+          name yys array of YYS 0 0
+          name yypt int 0 0
+      seq no type 10 1
+        name nil ref Node 1 0
+        seq no type 10 1
+          name nil polymorphic type 1 0
+          seq no type 10 1
+            name nil polymorphic type 1 0
+ecom to: 
+* Node 8 0
+  name .t383 ref Node 0 0
+ecom: 
+* int 10 1
+  + int 10 1
+    indx big 10 1
+      name yys array of YYS 0 0
+      - int 10 1
+        name yypt int 0 0
+        const (1) int 6 0
+    const optype (24) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .t383 ref Node 0 0
+    const (0) int 6 0
+eacom: 
+* int 10 1
+  + int 10 1
+    indx big 10 1
+      name yys array of YYS 0 0
+      - int 10 1
+        name yypt int 0 0
+        const (1) int 6 0
+    const optype (24) int 6 0
+generate desc for big
+ecom: 
+indx big 10 1
+  name yys array of YYS 0 0
+  - int 10 1
+    name yypt int 0 0
+    const (1) int 6 0
+ecom to: 
+name .b381 big 0 0
+eacom: 
+- int 10 1
+  name yypt int 0 0
+  const (1) int 6 0
+ecom: 
+- int 10 1
+  name yypt int 0 0
+  const (1) int 6 0
+ecom to: 
+name .t380 int 0 0
+ecom: 
+* ref Node 10 1
+  indx big 10 1
+    name yys array of YYS 0 0
+    name yypt int 0 0
+ecom to: 
+* ref Node 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .t383 ref Node 0 0
+    const (8) int 6 0
+eacom: 
+* ref Node 10 1
+  indx big 10 1
+    name yys array of YYS 0 0
+    name yypt int 0 0
+generate desc for big
+ecom: 
+indx big 10 1
+  name yys array of YYS 0 0
+  name yypt int 0 0
+ecom to: 
+name .b381 big 0 0
+ecom: 
+name nil ref Node 1 0
+ecom to: 
+* ref Node 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .t383 ref Node 0 0
+    const (16) int 6 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* string 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .t383 ref Node 0 0
+    const (24) int 6 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* ref Redir 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .t383 ref Node 0 0
+    const (32) int 6 0
+ecom: 
+= ref Node 10 1
+  name .t383 ref Node 0 0
+  name nil ref Node 1 0
+ecom: 
+name nil ref Node 1 0
+ecom to: 
+name .t383 ref Node 0 0
+ecom: 
+= ref Node 10 2
+  * ref Node 0 0
+    adr int 13 1
+      name yyval YYSTYPE 0 0
+  ref ref Node 10 2
+    tuple Node 10 2
+      seq no type 10 2
+        const n_LIST (6) int 6 0
+        seq no type 10 2
+          * ref Node 10 1
+            indx big 10 1
+              name yys array of YYS 0 0
+              - int 10 1
+                name yypt int 0 0
+                const (1) int 6 0
+          seq no type 10 1
+            name nil ref Node 1 0
+            seq no type 10 1
+              name nil polymorphic type 1 0
+              seq no type 10 1
+                name nil polymorphic type 1 0
+ecom: 
+ref ref Node 10 2
+  tuple Node 10 2
+    seq no type 10 2
+      const n_LIST (6) int 6 0
+      seq no type 10 2
+        * ref Node 10 1
+          indx big 10 1
+            name yys array of YYS 0 0
+            - int 10 1
+              name yypt int 0 0
+              const (1) int 6 0
+        seq no type 10 1
+          name nil ref Node 1 0
+          seq no type 10 1
+            name nil polymorphic type 1 0
+            seq no type 10 1
+              name nil polymorphic type 1 0
+ecom to: 
+* ref Node 0 0
+  adr int 13 1
+    name yyval YYSTYPE 0 0
+generate desc for Node
+ecom: 
+tuple Node 10 2
+  seq no type 10 2
+    const n_LIST (6) int 6 0
+    seq no type 10 2
+      * ref Node 10 1
+        indx big 10 1
+          name yys array of YYS 0 0
+          - int 10 1
+            name yypt int 0 0
+            const (1) int 6 0
+      seq no type 10 1
+        name nil ref Node 1 0
+        seq no type 10 1
+          name nil polymorphic type 1 0
+          seq no type 10 1
+            name nil polymorphic type 1 0
+ecom to: 
+* Node 8 0
+  name .t383 ref Node 0 0
+ecom: 
+const n_LIST (6) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .t383 ref Node 0 0
+    const (0) int 6 0
+ecom: 
+* ref Node 10 1
+  indx big 10 1
+    name yys array of YYS 0 0
+    - int 10 1
+      name yypt int 0 0
+      const (1) int 6 0
+ecom to: 
+* ref Node 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .t383 ref Node 0 0
+    const (8) int 6 0
+eacom: 
+* ref Node 10 1
+  indx big 10 1
+    name yys array of YYS 0 0
+    - int 10 1
+      name yypt int 0 0
+      const (1) int 6 0
+generate desc for big
+ecom: 
+indx big 10 1
+  name yys array of YYS 0 0
+  - int 10 1
+    name yypt int 0 0
+    const (1) int 6 0
+ecom to: 
+name .b381 big 0 0
+eacom: 
+- int 10 1
+  name yypt int 0 0
+  const (1) int 6 0
+ecom: 
+- int 10 1
+  name yypt int 0 0
+  const (1) int 6 0
+ecom to: 
+name .t380 int 0 0
+ecom: 
+name nil ref Node 1 0
+ecom to: 
+* ref Node 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .t383 ref Node 0 0
+    const (16) int 6 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* string 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .t383 ref Node 0 0
+    const (24) int 6 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* ref Redir 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .t383 ref Node 0 0
+    const (32) int 6 0
+ecom: 
+= ref Node 10 1
+  name .t383 ref Node 0 0
+  name nil ref Node 1 0
+ecom: 
+name nil ref Node 1 0
+ecom to: 
+name .t383 ref Node 0 0
+ecom: 
+= ref Node 10 2
+  * ref Node 0 0
+    adr int 13 1
+      name yyval YYSTYPE 0 0
+  ref ref Node 10 2
+    tuple Node 10 2
+      seq no type 10 2
+        const n_BLOCK (0) int 6 0
+        seq no type 10 2
+          * ref Node 10 1
+            indx big 10 1
+              name yys array of YYS 0 0
+              - int 10 1
+                name yypt int 0 0
+                const (1) int 6 0
+          seq no type 10 1
+            name nil ref Node 1 0
+            seq no type 10 1
+              name nil polymorphic type 1 0
+              seq no type 10 1
+                name nil polymorphic type 1 0
+ecom: 
+ref ref Node 10 2
+  tuple Node 10 2
+    seq no type 10 2
+      const n_BLOCK (0) int 6 0
+      seq no type 10 2
+        * ref Node 10 1
+          indx big 10 1
+            name yys array of YYS 0 0
+            - int 10 1
+              name yypt int 0 0
+              const (1) int 6 0
+        seq no type 10 1
+          name nil ref Node 1 0
+          seq no type 10 1
+            name nil polymorphic type 1 0
+            seq no type 10 1
+              name nil polymorphic type 1 0
+ecom to: 
+* ref Node 0 0
+  adr int 13 1
+    name yyval YYSTYPE 0 0
+generate desc for Node
+ecom: 
+tuple Node 10 2
+  seq no type 10 2
+    const n_BLOCK (0) int 6 0
+    seq no type 10 2
+      * ref Node 10 1
+        indx big 10 1
+          name yys array of YYS 0 0
+          - int 10 1
+            name yypt int 0 0
+            const (1) int 6 0
+      seq no type 10 1
+        name nil ref Node 1 0
+        seq no type 10 1
+          name nil polymorphic type 1 0
+          seq no type 10 1
+            name nil polymorphic type 1 0
+ecom to: 
+* Node 8 0
+  name .t383 ref Node 0 0
+ecom: 
+const n_BLOCK (0) int 6 0
+ecom to: 
+* int 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .t383 ref Node 0 0
+    const (0) int 6 0
+ecom: 
+* ref Node 10 1
+  indx big 10 1
+    name yys array of YYS 0 0
+    - int 10 1
+      name yypt int 0 0
+      const (1) int 6 0
+ecom to: 
+* ref Node 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .t383 ref Node 0 0
+    const (8) int 6 0
+eacom: 
+* ref Node 10 1
+  indx big 10 1
+    name yys array of YYS 0 0
+    - int 10 1
+      name yypt int 0 0
+      const (1) int 6 0
+generate desc for big
+ecom: 
+indx big 10 1
+  name yys array of YYS 0 0
+  - int 10 1
+    name yypt int 0 0
+    const (1) int 6 0
+ecom to: 
+name .b381 big 0 0
+eacom: 
+- int 10 1
+  name yypt int 0 0
+  const (1) int 6 0
+ecom: 
+- int 10 1
+  name yypt int 0 0
+  const (1) int 6 0
+ecom to: 
+name .t380 int 0 0
+ecom: 
+name nil ref Node 1 0
+ecom to: 
+* ref Node 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .t383 ref Node 0 0
+    const (16) int 6 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* string 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .t383 ref Node 0 0
+    const (24) int 6 0
+ecom: 
+name nil polymorphic type 1 0
+ecom to: 
+* ref Redir 8 0
+  + int 15 1
+    adr int 15 1
+      * Node 8 0
+        name .t383 ref Node 0 0
+    const (32) int 6 0
+ecom: 
+= ref Node 10 1
+  name .t383 ref Node 0 0
+  name nil ref Node 1 0
+ecom: 
+name nil ref Node 1 0
+ecom to: 
+name .t383 ref Node 0 0
+ecom: 
+name yyn int 0 0
+ecom to: 
+* int 8 0
+  name .ret int 0 0
+fn: yyparse
+64: argument yylex ref YYLEX ref 6
+72: local yyn int ref 33
+76: local yyp int ref 29
+80: local yychar int ref 15
+84: local yystate int ref 15
+88: local yyxi int ref 8
+92: local yyerrflag int ref 6
+96: local yyg int ref 3
+100: local yyj int ref 3
+104: local yym int ref 2
+108: local yynerrs int ref 2
+112: local .t377 int ref 1
+116: local .t380 int ref 1
+120: local yys array of YYS ref 73
+128: local .b381 big ref 56
+136: local yyval YYSTYPE ref 39
+168: local .b379 big ref 28
+176: local .t378 array of YYS ref 1
+184: local .t382 ref Node ref 1
+192: local .t383 ref Node ref 1
+88: local yypt int ref 45
+generate desc for yyparse
+descmap offset 0
+descmap yylex type ref YYLEX offset 64 (d->offset=64 start=0) returns 64
+descmap yyn type int offset 72 (d->offset=72 start=0) returns -1
+descmap yyp type int offset 76 (d->offset=76 start=0) returns -1
+descmap yychar type int offset 80 (d->offset=80 start=0) returns -1
+descmap yystate type int offset 84 (d->offset=84 start=0) returns -1
+descmap yyxi type int offset 88 (d->offset=88 start=0) returns -1
+descmap yyerrflag type int offset 92 (d->offset=92 start=0) returns -1
+descmap yyg type int offset 96 (d->offset=96 start=0) returns -1
+descmap yyj type int offset 100 (d->offset=100 start=0) returns -1
+descmap yym type int offset 104 (d->offset=104 start=0) returns -1
+descmap yynerrs type int offset 108 (d->offset=108 start=0) returns -1
+descmap .t377 type int offset 112 (d->offset=112 start=0) returns -1
+descmap .t380 type int offset 116 (d->offset=116 start=0) returns -1
+descmap yys type array of YYS offset 120 (d->offset=120 start=0) returns 120
+descmap .b381 type big offset 128 (d->offset=128 start=0) returns -1
+descmap adt offset 136
+descmap offset 136
+descmap node type ref Node offset 136 (d->offset=0 start=136) returns 136
+descmap word type string offset 144 (d->offset=8 start=136) returns 144
+descmap redir type ref Redir offset 152 (d->offset=16 start=136) returns 152
+descmap optype type int offset 160 (d->offset=24 start=136) returns -1
+descmap yyval type YYSTYPE offset 136 (d->offset=136 start=0) returns 152
+descmap .b379 type big offset 168 (d->offset=168 start=0) returns -1
+descmap .t378 type array of YYS offset 176 (d->offset=176 start=0) returns 176
+descmap .t382 type ref Node offset 184 (d->offset=184 start=0) returns 184
+descmap .t383 type ref Node offset 192 (d->offset=192 start=0) returns 192
+nil 'nil' ref 1075
+nil '' ref 28
+variable '
+' val '"\n"'
+variable ' ' val '" "'
+variable ' 	' val '" \t"'
+variable ' 	
+
' val '" \t\n\r"'
+variable ' in glomop' val '" in glomop"'
+variable ' not found' val '" not found"'
+variable '"' val '"\""'
+variable '#p/' val '"#p/"'
+variable '$' val '"$"'
+variable '$"' val '"$\""'
+variable '$#' val '"$#"'
+variable '$Sys' val '"$Sys"'
+variable '$self' val '"$self"'
+variable '$self(Sh)' val '"$self(Sh)"'
+variable '$self(Shellbuiltin)' val '"$self(Shel..."'
+variable '${' val '"${"'
+variable '${%s}	%s
+' val '"${%s}\t%s\n"'
+variable '${builtin ' val '"${builtin "'
+variable '%r' val '"%r"'
+variable '%s' val '"%s"'
+variable '%s	%s
+' val '"%s\t%s\n"'
+variable '%s
+' val '"%s\n"'
+variable '%s: %s' val '"%s: %s"'
+variable '%s: not found
+' val '"%s: not fo..."'
+variable '%s:%d: %s' val '"%s:%d: %s"'
+variable '%s=%s
+' val '"%s=%s\n"'
+variable '&' val '"&"'
+variable ''' val '"'"'
+variable '(' val '"("'
+variable ')' val '")"'
+variable '*' val '"*"'
+variable '.' val '"."'
+variable './' val '"./"'
+variable '.B.00000000.       0' val '.B.00000000.       0'
+variable '.b.0a' val '.b.0a'
+variable '.b.21' val '(.b.21)'
+variable '.b.23' val '(.b.23)'
+variable '.c0' val '.c0'
+variable '.c1' val '.c1'
+variable '.c11' val '.c11'
+variable '.c12' val '.c12'
+variable '.c13' val '.c13'
+variable '.c14' val '.c14'
+variable '.c15' val '.c15'
+variable '.c16' val '.c16'
+variable '.c2' val '.c2'
+variable '.c4' val '.c4'
+variable '.c5' val '.c5'
+variable '.c6' val '.c6'
+variable '.c7' val '.c7'
+variable '.c8' val '.c8'
+variable '.c9' val '.c9'
+variable '.dis' val '".dis"'
+variable '.g10' val '.g10'
+variable '.g17' val '.g17'
+variable '.g3' val '.g3'
+variable '.i.7fffffff' val '.i.7fffffff'
+variable '.i.80000000' val '.i.80000000'
+variable '.m.Bufio' val ''
+variable '.m.Command' val ''
+variable '.m.Env' val ''
+variable '.m.Filepat' val ''
+variable '.m.Sh' val ''
+variable '.m.Shellbuiltin' val ''
+variable '.m.String' val ''
+variable '.m.Sys' val ''
+variable '.m.YYSys' val ''
+variable '/' val '"/"'
+variable '/dev/cons' val '"/dev/cons"'
+variable '/dis' val '"/dis"'
+variable '/dis/lib/bufio.dis' val '"/dis/lib/b..."'
+variable '/dis/lib/env.dis' val '"/dis/lib/e..."'
+variable '/dis/lib/filepat.dis' val '"/dis/lib/f..."'
+variable '/dis/lib/string.dis' val '"/dis/lib/s..."'
+variable '/dis/sh/' val '"/dis/sh/"'
+variable '/fd/' val '"/fd/"'
+variable '/lib/sh/profile' val '"/lib/sh/pr..."'
+variable '/prog/' val '"/prog/"'
+variable '/wait' val '"/wait"'
+variable '0' val '"0"'
+variable ': parse error: ' val '": parse er..."'
+variable ':=' val '":="'
+variable ';' val '";"'
+variable '; ' val '"; "'
+variable '<' val '"<"'
+variable '<>' val '"<>"'
+variable '=' val '"="'
+variable '>' val '">"'
+variable '>>' val '">>"'
+variable '@' val '"@"'
+variable '[' val '"["'
+variable ']' val '"]"'
+variable '^' val '"^"'
+variable '^
+ 	
|$'#<>;^(){}`&="' val '"^\n \t\r|$'#<..."'
+variable '`' val '"`"'
+variable 'a-zA-Z0-9*_' val '"a-zA-Z0-9*..."'
+variable 'and' val '"and"'
+variable 'apid' val '"apid"'
+variable 'autoload' val '"autoload"'
+variable 'bad $ arg' val '"bad $ arg"'
+variable 'bad assign' val '"bad assign"'
+variable 'bad concatenation' val '"bad concat..."'
+variable 'bad header' val '"bad header"'
+variable 'bad module' val '"bad module"'
+variable 'bad node type ' val '"bad node t..."'
+variable 'bad redir' val '"bad redir"'
+variable 'bad script header on ' val '"bad script..."'
+variable 'bad script path' val '"bad script..."'
+variable 'bad wait read' val '"bad wait r..."'
+variable 'blanklex' val ''
+variable 'blankopts' val ''
+variable 'bquote' val '"bquote"'
+variable 'bufio' val ''
+variable 'builtin' val '"builtin"'
+variable 'builtin %s
+' val '"builtin %s..."'
+variable 'builtin command [args ...]' val '"builtin co..."'
+variable 'builtin not found' val '"builtin no..."'
+variable 'cannot open wait file: %r' val '"cannot ope..."'
+variable 'directory entry not found' val '"directory ..."'
+variable 'does not exist' val '"does not e..."'
+variable 'empty header on ' val '"empty head..."'
+variable 'env' val ''
+variable 'error on wait read: %r' val '"error on w..."'
+variable 'exit' val '"exit"'
+variable 'fail:' val '"fail:"'
+variable 'fail:bad module' val '"fail:bad m..."'
+variable 'fail:parse error' val '"fail:parse..."'
+variable 'fail:usage' val '"fail:usage"'
+variable 'fail:write on closed pipe' val '"fail:write..."'
+variable 'failed' val '"failed"'
+variable 'filepat' val ''
+variable 'ifs' val '"ifs"'
+variable 'internal' val '"internal"'
+variable 'killed' val '"killed"'
+variable 'load' val '"load"'
+variable 'load ' val '"load "'
+variable 'load path...' val '"load path...."'
+variable 'load: cannot load %s: %r' val '"load: cann..."'
+variable 'load: module init failed: ' val '"load: modu..."'
+variable 'loaded' val '"loaded"'
+variable 'module %s not found' val '"module %s ..."'
+variable 'myself' val ''
+variable 'myselfbuiltin' val ''
+variable 'nil' val ''
+variable 'no pipe' val '"no pipe"'
+variable 'not found' val '"not found"'
+variable 'or' val '"or"'
+variable 'panic' val '"panic"'
+variable 'parse error' val '"parse erro..."'
+variable 'path' val '"path"'
+variable 'permission denied' val '"permission..."'
+variable 'prompt' val '"prompt"'
+variable 'quote' val '"quote"'
+variable 'reopen of waitfd gave same fd (%d)' val '"reopen of ..."'
+variable 'run' val '"run"'
+variable 'run path' val '"run path"'
+variable 'sh panic: %s
+' val '"sh panic: ..."'
+variable 'sh: ' val '"sh: "'
+variable 'sh: %s
+' val '"sh: %s\n"'
+variable 'sh: assignment in invalid context' val '"sh: assign..."'
+variable 'sh: bad builtin name' val '"sh: bad bu..."'
+variable 'sh: bad exit status '%s'' val '"sh: bad ex..."'
+variable 'sh: bad redirection' val '"sh: bad re..."'
+variable 'sh: bad variable name' val '"sh: bad va..."'
+variable 'sh: builtin %s not found' val '"sh: builti..."'
+variable 'sh: cannot dup: %r' val '"sh: cannot..."'
+variable 'sh: cannot load %s: %r
+' val '"sh: cannot..."'
+variable 'sh: cannot make pipe: %r' val '"sh: cannot..."'
+variable 'sh: cannot open %s: %r' val '"sh: cannot..."'
+variable 'sh: cannot open %s: %s' val '"sh: cannot..."'
+variable 'sh: invalid argument to ${} operator' val '"sh: invali..."'
+variable 'sh: invalid dup' val '"sh: invali..."'
+variable 'sh: lists of differing sizes can't be concatenated' val '"sh: lists ..."'
+variable 'sh: nil variable name' val '"sh: nil va..."'
+variable 'sh: null list in concatenation' val '"sh: null l..."'
+variable 'sh: redirection not allowed in substitution' val '"sh: redire..."'
+variable 'sh: redirections not allowed in assignment' val '"sh: redire..."'
+variable 'sh: single redirection operand required' val '"sh: single..."'
+variable 'sh: usage: ' val '"sh: usage:..."'
+variable 'status' val '"status"'
+variable 'stdin' val '"stdin"'
+variable 'str' val ''
+variable 'syncenv' val '"syncenv"'
+variable 'syntax error' val '"syntax err..."'
+variable 'syntax error in pipe redirection' val '"syntax err..."'
+variable 'syntax error in redirection' val '"syntax err..."'
+variable 'sys' val ''
+variable 'unbalanced contexts in shell environment' val '"unbalanced..."'
+variable 'unknown error' val '"unknown er..."'
+variable 'unknown%d' val '"unknown%d"'
+variable 'unload' val '"unload"'
+variable 'unload path...' val '"unload pat..."'
+variable 'unquote' val '"unquote"'
+variable 'unquote arg' val '"unquote ar..."'
+variable 'unterminated string literal' val '"unterminat..."'
+variable 'usage' val '"usage"'
+variable 'usage: sh [-ilexn] [-c command] [file [arg...]]
+' val '"usage: sh ..."'
+variable 'whatis' val '"whatis"'
+variable 'whatis name ...' val '"whatis nam..."'
+variable 'write on closed pipe' val '"write on c..."'
+variable 'yyact' val 'array [93] of {0 =>12, 1 =>10, 2 =>15, 3 =>4, 4 =>5, 5 =>40, 6 =>8, 7 =>11, 8 =>9, 9 =>7, 10 =>30, 11 =>31, 12 =>54, 13 =>6, 14 =>50, 15 =>35, 16 =>34, 17 =>32, 18 =>33, 19 =>21, 20 =>36, 21 =>38, 22 =>34, 23 =>41, 24 =>43, 25 =>22, 26 =>29, 27 =>3, 28 =>28, 29 =>13, 30 =>14, 31 =>16, 32 =>17, 33 =>20, 34 =>37, 35 =>42, 36 =>1, 37 =>23, 38 =>45, 39 =>51, 40 =>44, 41 =>47, 42 =>48, 43 =>18, 44 =>39, 45 =>19, 46 =>41, 47 =>43, 48 =>56, 49 =>30, 50 =>31, 51 =>46, 52 =>58, 53 =>57, 54 =>59, 55 =>60, 56 =>49, 57 =>13, 58 =>14, 59 =>16, 60 =>17, 61 =>53, 62 =>13, 63 =>14, 64 =>16, 65 =>17, 66 =>2, 67 =>52, 68 =>0, 69 =>16, 70 =>17, 71 =>18, 72 =>27, 73 =>19, 74 =>16, 75 =>17, 76 =>18, 77 =>52, 78 =>19, 79 =>0, 80 =>26, 81 =>18, 82 =>0, 83 =>19, 84 =>24, 85 =>25, 86 =>18, 87 =>26, 88 =>19, 89 =>0, 90 =>55, 91 =>24, 92 =>25}'
+generate desc for int
+variable 'yychk' val 'array [61] of {0 =>-1000, 1 =>-6, 2 =>-12, 3 =>2, 4 =>-16, 5 =>-9, 6 =>-15, 7 =>-10, 8 =>-5, 9 =>-4, 10 =>-1, 11 =>-7, 12 =>-2, 13 =>4, 14 =>5, 15 =>-11, 16 =>6, 17 =>7, 18 =>18, 19 =>20, 20 =>-17, 21 =>8, 22 =>14, 23 =>-17, 24 =>15, 25 =>16, 26 =>11, 27 =>-12, 28 =>10, 29 =>12, 30 =>-2, 31 =>-1, 32 =>-5, 33 =>13, 34 =>17, 35 =>-2, 36 =>-11, 37 =>-14, 38 =>-18, 39 =>-3, 40 =>-13, 41 =>-16, 42 =>-8, 43 =>-9, 44 =>-15, 45 =>-10, 46 =>-18, 47 =>-7, 48 =>-4, 49 =>-18, 50 =>19, 51 =>-2, 52 =>14, 53 =>-18, 54 =>21, 55 =>14, 56 =>-13, 57 =>-5, 58 =>-11, 59 =>-2, 60 =>-1}'
+generate desc for int
+variable 'yydef' val 'array [61] of {0 =>-2, 1 =>-2, 2 =>0, 3 =>0, 4 =>5, 5 =>17, 6 =>13, 7 =>15, 8 =>18, 9 =>20, 10 =>22, 11 =>23, 12 =>29, 13 =>27, 14 =>0, 15 =>37, 16 =>39, 17 =>0, 18 =>43, 19 =>17, 20 =>1, 21 =>3, 22 =>4, 23 =>2, 24 =>9, 25 =>10, 26 =>17, 27 =>6, 28 =>17, 29 =>43, 30 =>30, 31 =>31, 32 =>21, 33 =>26, 34 =>43, 35 =>28, 36 =>40, 37 =>0, 38 =>32, 39 =>43, 40 =>0, 41 =>7, 42 =>17, 43 =>11, 44 =>14, 45 =>16, 46 =>0, 47 =>24, 48 =>25, 49 =>0, 50 =>41, 51 =>34, 52 =>44, 53 =>33, 54 =>42, 55 =>12, 56 =>8, 57 =>19, 58 =>38, 59 =>35, 60 =>36}'
+generate desc for int
+variable 'yyexca' val 'array [24] of {0 =>-1, 1 =>0, 2 =>8, 3 =>17, 4 =>10, 5 =>17, 6 =>11, 7 =>17, 8 =>12, 9 =>17, 10 =>14, 11 =>17, 12 =>15, 13 =>17, 14 =>16, 15 =>17, 16 =>-2, 17 =>0, 18 =>-1, 19 =>1, 20 =>1, 21 =>-1, 22 =>-2, 23 =>0}'
+generate desc for int
+variable 'yypact' val 'array [61] of {0 =>25, 1 =>-1000, 2 =>11, 3 =>11, 4 =>69, 5 =>58, 6 =>18, 7 =>14, 8 =>-1000, 9 =>58, 10 =>58, 11 =>-1000, 12 =>5, 13 =>-1000, 14 =>68, 15 =>-1000, 16 =>-1000, 17 =>68, 18 =>-1000, 19 =>58, 20 =>-1000, 21 =>-1000, 22 =>-1000, 23 =>-1000, 24 =>-1000, 25 =>-1000, 26 =>58, 27 =>-1000, 28 =>58, 29 =>-1000, 30 =>-1, 31 =>-1000, 32 =>-1000, 33 =>68, 34 =>-1000, 35 =>-1, 36 =>-1000, 37 =>-5, 38 =>63, 39 =>-1000, 40 =>-9, 41 =>76, 42 =>58, 43 =>-1000, 44 =>18, 45 =>14, 46 =>53, 47 =>-1000, 48 =>58, 49 =>63, 50 =>-1000, 51 =>-1, 52 =>-1000, 53 =>53, 54 =>-1000, 55 =>-1000, 56 =>-1000, 57 =>-1000, 58 =>-1000, 59 =>-1, 60 =>-1000}'
+generate desc for int
+variable 'yypgo' val 'array [19] of {0 =>0, 1 =>1, 2 =>0, 3 =>44, 4 =>8, 5 =>6, 6 =>36, 7 =>7, 8 =>35, 9 =>4, 10 =>9, 11 =>2, 12 =>66, 13 =>5, 14 =>34, 15 =>13, 16 =>3, 17 =>33, 18 =>21}'
+generate desc for int
+variable 'yyr1' val 'array [45] of {0 =>0, 1 =>6, 2 =>6, 3 =>17, 4 =>17, 5 =>12, 6 =>12, 7 =>13, 8 =>13, 9 =>9, 10 =>9, 11 =>8, 12 =>8, 13 =>16, 14 =>16, 15 =>15, 16 =>15, 17 =>10, 18 =>10, 19 =>10, 20 =>5, 21 =>5, 22 =>5, 23 =>5, 24 =>7, 25 =>7, 26 =>7, 27 =>1, 28 =>1, 29 =>4, 30 =>4, 31 =>4, 32 =>14, 33 =>14, 34 =>3, 35 =>3, 36 =>3, 37 =>2, 38 =>2, 39 =>11, 40 =>11, 41 =>11, 42 =>11, 43 =>18, 44 =>18}'
+generate desc for int
+variable 'yyr2' val 'array [45] of {0 =>0, 1 =>2, 2 =>2, 3 =>1, 4 =>1, 5 =>1, 6 =>2, 7 =>1, 8 =>2, 9 =>2, 10 =>2, 11 =>1, 12 =>2, 13 =>1, 14 =>3, 15 =>1, 16 =>3, 17 =>0, 18 =>1, 19 =>4, 20 =>1, 21 =>2, 22 =>1, 23 =>1, 24 =>3, 25 =>3, 26 =>2, 27 =>1, 28 =>2, 29 =>1, 30 =>2, 31 =>2, 32 =>1, 33 =>2, 34 =>2, 35 =>3, 36 =>3, 37 =>1, 38 =>4, 39 =>1, 40 =>2, 41 =>3, 42 =>3, 43 =>0, 44 =>2}'
+generate desc for int
+variable 'yystates' val ''
+variable 'yystderr' val ''
+variable 'yysys' val ''
+variable 'yytok1' val 'array [126] of {0 =>1, 1 =>3, 2 =>3, 3 =>3, 4 =>3, 5 =>3, 6 =>3, 7 =>3, 8 =>3, 9 =>3, 10 =>14, 11 =>3, 12 =>3, 13 =>3, 14 =>3, 15 =>3, 16 =>3, 17 =>3, 18 =>3, 19 =>3, 20 =>3, 21 =>3, 22 =>3, 23 =>3, 24 =>3, 25 =>3, 26 =>3, 27 =>3, 28 =>3, 29 =>3, 30 =>3, 31 =>3, 32 =>3, 33 =>3, 34 =>3, 35 =>3, 36 =>3, 37 =>3, 38 =>16, 39 =>3, 40 =>18, 41 =>19, 42 =>3, 43 =>3, 44 =>3, 45 =>3, 46 =>3, 47 =>3, 48 =>3, 49 =>3, 50 =>3, 51 =>3, 52 =>3, 53 =>3, 54 =>3, 55 =>3, 56 =>3, 57 =>3, 58 =>3, 59 =>15, 60 =>3, 61 =>13, 62 =>3, 63 =>3, 64 =>3, 65 =>3, 66 =>3, 67 =>3, 68 =>3, 69 =>3, 70 =>3, 71 =>3, 72 =>3, 73 =>3, 74 =>3, 75 =>3, 76 =>3, 77 =>3, 78 =>3, 79 =>3, 80 =>3, 81 =>3, 82 =>3, 83 =>3, 84 =>3, 85 =>3, 86 =>3, 87 =>3, 88 =>3, 89 =>3, 90 =>3, 91 =>3, 92 =>3, 93 =>3, 94 =>17, 95 =>3, 96 =>3, 97 =>3, 98 =>3, 99 =>3, 100 =>3, 101 =>3, 102 =>3, 103 =>3, 104 =>3, 105 =>3, 106 =>3, 107 =>3, 108 =>3, 109 =>3, 110 =>3, 111 =>3, 112 =>3, 113 =>3, 114 =>3, 115 =>3, 116 =>3, 117 =>3, 118 =>3, 119 =>3, 120 =>3, 121 =>3, 122 =>3, 123 =>20, 124 =>12, 125 =>21}'
+generate desc for int
+variable 'yytok2' val 'array [10] of {0 =>2, 1 =>3, 2 =>4, 3 =>5, 4 =>6, 5 =>7, 6 =>8, 7 =>9, 8 =>10, 9 =>11}'
+generate desc for int
+variable 'yytok3' val 'array [1] of {0 =>0}'
+generate desc for int
+variable 'yytoknames' val ''
+variable '{' val '"{"'
+variable '|' val '"|"'
+variable '}' val '"}"'
+variable '}
+' val '"}\n"'
+nil 'nil' ref 1075
+nil '' ref 28
+generate desc for Sh
+descmap offset 0
+descmap 
+ type string offset 0 (d->offset=0 start=0) returns 0
+descmap   type string offset 8 (d->offset=8 start=0) returns 8
+descmap  	 type string offset 16 (d->offset=16 start=0) returns 16
+descmap  	
+
 type string offset 24 (d->offset=24 start=0) returns 24
+descmap  in glomop type string offset 32 (d->offset=32 start=0) returns 32
+descmap  not found type string offset 40 (d->offset=40 start=0) returns 40
+descmap " type string offset 48 (d->offset=48 start=0) returns 48
+descmap #p/ type string offset 56 (d->offset=56 start=0) returns 56
+descmap $ type string offset 64 (d->offset=64 start=0) returns 64
+descmap $" type string offset 72 (d->offset=72 start=0) returns 72
+descmap $# type string offset 80 (d->offset=80 start=0) returns 80
+descmap $Sys type string offset 88 (d->offset=88 start=0) returns 88
+descmap $self type string offset 96 (d->offset=96 start=0) returns 96
+descmap $self(Sh) type string offset 104 (d->offset=104 start=0) returns 104
+descmap $self(Shellbuiltin) type string offset 112 (d->offset=112 start=0) returns 112
+descmap ${ type string offset 120 (d->offset=120 start=0) returns 120
+descmap ${%s}	%s
+ type string offset 128 (d->offset=128 start=0) returns 128
+descmap ${builtin  type string offset 136 (d->offset=136 start=0) returns 136
+descmap %r type string offset 144 (d->offset=144 start=0) returns 144
+descmap %s type string offset 152 (d->offset=152 start=0) returns 152
+descmap %s	%s
+ type string offset 160 (d->offset=160 start=0) returns 160
+descmap %s
+ type string offset 168 (d->offset=168 start=0) returns 168
+descmap %s: %s type string offset 176 (d->offset=176 start=0) returns 176
+descmap %s: not found
+ type string offset 184 (d->offset=184 start=0) returns 184
+descmap %s:%d: %s type string offset 192 (d->offset=192 start=0) returns 192
+descmap %s=%s
+ type string offset 200 (d->offset=200 start=0) returns 200
+descmap & type string offset 208 (d->offset=208 start=0) returns 208
+descmap ' type string offset 216 (d->offset=216 start=0) returns 216
+descmap ( type string offset 224 (d->offset=224 start=0) returns 224
+descmap ) type string offset 232 (d->offset=232 start=0) returns 232
+descmap * type string offset 240 (d->offset=240 start=0) returns 240
+descmap . type string offset 248 (d->offset=248 start=0) returns 248
+descmap ./ type string offset 256 (d->offset=256 start=0) returns 256
+descmap .B.00000000.       0 type big offset 264 (d->offset=264 start=0) returns -1
+descmap .b.0a type byte offset 272 (d->offset=272 start=0) returns -1
+descmap .b.21 type byte offset 273 (d->offset=273 start=0) returns -1
+descmap .b.23 type byte offset 274 (d->offset=274 start=0) returns -1
+descmap .c0 type case int labels offset 276 (d->offset=276 start=0) returns -1
+descmap .c1 type case int labels offset 356 (d->offset=356 start=0) returns -1
+descmap .c11 type case int labels offset 388 (d->offset=388 start=0) returns -1
+descmap .c12 type case string labels offset 552 (d->offset=552 start=0) returns 664
+descmap .c13 type case string labels offset 688 (d->offset=688 start=0) returns 896
+descmap .c14 type case int labels offset 920 (d->offset=920 start=0) returns -1
+descmap .c15 type case int labels offset 1180 (d->offset=1180 start=0) returns -1
+descmap .c16 type case int labels offset 1212 (d->offset=1212 start=0) returns -1
+descmap .c2 type case int labels offset 1280 (d->offset=1280 start=0) returns -1
+descmap .c4 type case int labels offset 1312 (d->offset=1312 start=0) returns -1
+descmap .c5 type case int labels offset 1356 (d->offset=1356 start=0) returns -1
+descmap .c6 type case string labels offset 1416 (d->offset=1416 start=0) returns 1480
+descmap .c7 type case int labels offset 1504 (d->offset=1504 start=0) returns -1
+descmap .c8 type case int labels offset 1560 (d->offset=1560 start=0) returns -1
+descmap .c9 type case int labels offset 1616 (d->offset=1616 start=0) returns -1
+descmap .dis type string offset 1672 (d->offset=1672 start=0) returns 1672
+descmap .g10 type goto labels offset 1680 (d->offset=1680 start=0) returns -1
+descmap .g17 type goto labels offset 1756 (d->offset=1756 start=0) returns -1
+descmap .g3 type goto labels offset 1932 (d->offset=1932 start=0) returns -1
+descmap .i.7fffffff type int offset 2008 (d->offset=2008 start=0) returns -1
+descmap .i.80000000 type int offset 2012 (d->offset=2012 start=0) returns -1
+descmap / type string offset 2016 (d->offset=2016 start=0) returns 2016
+descmap /dev/cons type string offset 2024 (d->offset=2024 start=0) returns 2024
+descmap /dis type string offset 2032 (d->offset=2032 start=0) returns 2032
+descmap /dis/lib/bufio.dis type string offset 2040 (d->offset=2040 start=0) returns 2040
+descmap /dis/lib/env.dis type string offset 2048 (d->offset=2048 start=0) returns 2048
+descmap /dis/lib/filepat.dis type string offset 2056 (d->offset=2056 start=0) returns 2056
+descmap /dis/lib/string.dis type string offset 2064 (d->offset=2064 start=0) returns 2064
+descmap /dis/sh/ type string offset 2072 (d->offset=2072 start=0) returns 2072
+descmap /fd/ type string offset 2080 (d->offset=2080 start=0) returns 2080
+descmap /lib/sh/profile type string offset 2088 (d->offset=2088 start=0) returns 2088
+descmap /prog/ type string offset 2096 (d->offset=2096 start=0) returns 2096
+descmap /wait type string offset 2104 (d->offset=2104 start=0) returns 2104
+descmap 0 type string offset 2112 (d->offset=2112 start=0) returns 2112
+descmap : parse error:  type string offset 2120 (d->offset=2120 start=0) returns 2120
+descmap := type string offset 2128 (d->offset=2128 start=0) returns 2128
+descmap ; type string offset 2136 (d->offset=2136 start=0) returns 2136
+descmap ;  type string offset 2144 (d->offset=2144 start=0) returns 2144
+descmap < type string offset 2152 (d->offset=2152 start=0) returns 2152
+descmap <> type string offset 2160 (d->offset=2160 start=0) returns 2160
+descmap = type string offset 2168 (d->offset=2168 start=0) returns 2168
+descmap > type string offset 2176 (d->offset=2176 start=0) returns 2176
+descmap >> type string offset 2184 (d->offset=2184 start=0) returns 2184
+descmap @ type string offset 2192 (d->offset=2192 start=0) returns 2192
+descmap [ type string offset 2200 (d->offset=2200 start=0) returns 2200
+descmap ] type string offset 2208 (d->offset=2208 start=0) returns 2208
+descmap ^ type string offset 2216 (d->offset=2216 start=0) returns 2216
+descmap ^
+ 	
|$'#<>;^(){}`&=" type string offset 2224 (d->offset=2224 start=0) returns 2224
+descmap ` type string offset 2232 (d->offset=2232 start=0) returns 2232
+descmap a-zA-Z0-9*_ type string offset 2240 (d->offset=2240 start=0) returns 2240
+descmap and type string offset 2248 (d->offset=2248 start=0) returns 2248
+descmap apid type string offset 2256 (d->offset=2256 start=0) returns 2256
+descmap autoload type string offset 2264 (d->offset=2264 start=0) returns 2264
+descmap bad $ arg type string offset 2272 (d->offset=2272 start=0) returns 2272
+descmap bad assign type string offset 2280 (d->offset=2280 start=0) returns 2280
+descmap bad concatenation type string offset 2288 (d->offset=2288 start=0) returns 2288
+descmap bad header type string offset 2296 (d->offset=2296 start=0) returns 2296
+descmap bad module type string offset 2304 (d->offset=2304 start=0) returns 2304
+descmap bad node type  type string offset 2312 (d->offset=2312 start=0) returns 2312
+descmap bad redir type string offset 2320 (d->offset=2320 start=0) returns 2320
+descmap bad script header on  type string offset 2328 (d->offset=2328 start=0) returns 2328
+descmap bad script path type string offset 2336 (d->offset=2336 start=0) returns 2336
+descmap bad wait read type string offset 2344 (d->offset=2344 start=0) returns 2344
+descmap adt offset 2352
+descmap offset 2352
+descmap adt offset 2352
+descmap offset 2352
+descmap node type ref Node offset 2352 (d->offset=0 start=2352) returns 2352
+descmap word type string offset 2360 (d->offset=8 start=2352) returns 2360
+descmap redir type ref Redir offset 2368 (d->offset=16 start=2352) returns 2368
+descmap optype type int offset 2376 (d->offset=24 start=2352) returns -1
+descmap lval type YYSTYPE offset 2352 (d->offset=0 start=2352) returns 2368
+descmap err type string offset 2384 (d->offset=32 start=2352) returns 2384
+descmap errline type int offset 2392 (d->offset=40 start=2352) returns -1
+descmap path type string offset 2400 (d->offset=48 start=2352) returns 2400
+descmap wasdollar type int offset 2408 (d->offset=56 start=2352) returns -1
+descmap atendword type int offset 2412 (d->offset=60 start=2352) returns -1
+descmap eof type int offset 2416 (d->offset=64 start=2352) returns -1
+descmap cbuf type array of int offset 2424 (d->offset=72 start=2352) returns 2424
+descmap ncbuf type int offset 2432 (d->offset=80 start=2352) returns -1
+descmap f type ref Bufio->Iobuf offset 2440 (d->offset=88 start=2352) returns 2440
+descmap s type string offset 2448 (d->offset=96 start=2352) returns 2448
+descmap strpos type int offset 2456 (d->offset=104 start=2352) returns -1
+descmap linenum type int offset 2460 (d->offset=108 start=2352) returns -1
+descmap prompt type string offset 2464 (d->offset=112 start=2352) returns 2464
+descmap lastnl type int offset 2472 (d->offset=120 start=2352) returns -1
+descmap blanklex type YYLEX offset 2352 (d->offset=2352 start=0) returns 2464
+descmap adt offset 2480
+descmap offset 2480
+descmap lflag type int offset 2480 (d->offset=0 start=2480) returns -1
+descmap nflag type int offset 2484 (d->offset=4 start=2480) returns -1
+descmap ctxtflags type int offset 2488 (d->offset=8 start=2480) returns -1
+descmap carg type string offset 2496 (d->offset=16 start=2480) returns 2496
+descmap blankopts type Options offset 2480 (d->offset=2480 start=0) returns 2496
+descmap bquote type string offset 2504 (d->offset=2504 start=0) returns 2504
+descmap bufio type Bufio offset 2512 (d->offset=2512 start=0) returns 2512
+descmap builtin type string offset 2520 (d->offset=2520 start=0) returns 2520
+descmap builtin %s
+ type string offset 2528 (d->offset=2528 start=0) returns 2528
+descmap builtin command [args ...] type string offset 2536 (d->offset=2536 start=0) returns 2536
+descmap builtin not found type string offset 2544 (d->offset=2544 start=0) returns 2544
+descmap cannot open wait file: %r type string offset 2552 (d->offset=2552 start=0) returns 2552
+descmap directory entry not found type string offset 2560 (d->offset=2560 start=0) returns 2560
+descmap does not exist type string offset 2568 (d->offset=2568 start=0) returns 2568
+descmap empty header on  type string offset 2576 (d->offset=2576 start=0) returns 2576
+descmap env type Env offset 2584 (d->offset=2584 start=0) returns 2584
+descmap error on wait read: %r type string offset 2592 (d->offset=2592 start=0) returns 2592
+descmap exit type string offset 2600 (d->offset=2600 start=0) returns 2600
+descmap fail: type string offset 2608 (d->offset=2608 start=0) returns 2608
+descmap fail:bad module type string offset 2616 (d->offset=2616 start=0) returns 2616
+descmap fail:parse error type string offset 2624 (d->offset=2624 start=0) returns 2624
+descmap fail:usage type string offset 2632 (d->offset=2632 start=0) returns 2632
+descmap fail:write on closed pipe type string offset 2640 (d->offset=2640 start=0) returns 2640
+descmap failed type string offset 2648 (d->offset=2648 start=0) returns 2648
+descmap filepat type Filepat offset 2656 (d->offset=2656 start=0) returns 2656
+descmap ifs type string offset 2664 (d->offset=2664 start=0) returns 2664
+descmap internal type string offset 2672 (d->offset=2672 start=0) returns 2672
+descmap killed type string offset 2680 (d->offset=2680 start=0) returns 2680
+descmap load type string offset 2688 (d->offset=2688 start=0) returns 2688
+descmap load  type string offset 2696 (d->offset=2696 start=0) returns 2696
+descmap load path... type string offset 2704 (d->offset=2704 start=0) returns 2704
+descmap load: cannot load %s: %r type string offset 2712 (d->offset=2712 start=0) returns 2712
+descmap load: module init failed:  type string offset 2720 (d->offset=2720 start=0) returns 2720
+descmap loaded type string offset 2728 (d->offset=2728 start=0) returns 2728
+descmap module %s not found type string offset 2736 (d->offset=2736 start=0) returns 2736
+descmap myself type Sh offset 2744 (d->offset=2744 start=0) returns 2744
+descmap myselfbuiltin type Shellbuiltin offset 2752 (d->offset=2752 start=0) returns 2752
+descmap nil type polymorphic type offset 2760 (d->offset=2760 start=0) returns 2760
+descmap no pipe type string offset 2768 (d->offset=2768 start=0) returns 2768
+descmap not found type string offset 2776 (d->offset=2776 start=0) returns 2776
+descmap or type string offset 2784 (d->offset=2784 start=0) returns 2784
+descmap panic type string offset 2792 (d->offset=2792 start=0) returns 2792
+descmap parse error type string offset 2800 (d->offset=2800 start=0) returns 2800
+descmap path type string offset 2808 (d->offset=2808 start=0) returns 2808
+descmap permission denied type string offset 2816 (d->offset=2816 start=0) returns 2816
+descmap prompt type string offset 2824 (d->offset=2824 start=0) returns 2824
+descmap quote type string offset 2832 (d->offset=2832 start=0) returns 2832
+descmap reopen of waitfd gave same fd (%d) type string offset 2840 (d->offset=2840 start=0) returns 2840
+descmap run type string offset 2848 (d->offset=2848 start=0) returns 2848
+descmap run path type string offset 2856 (d->offset=2856 start=0) returns 2856
+descmap sh panic: %s
+ type string offset 2864 (d->offset=2864 start=0) returns 2864
+descmap sh:  type string offset 2872 (d->offset=2872 start=0) returns 2872
+descmap sh: %s
+ type string offset 2880 (d->offset=2880 start=0) returns 2880
+descmap sh: assignment in invalid context type string offset 2888 (d->offset=2888 start=0) returns 2888
+descmap sh: bad builtin name type string offset 2896 (d->offset=2896 start=0) returns 2896
+descmap sh: bad exit status '%s' type string offset 2904 (d->offset=2904 start=0) returns 2904
+descmap sh: bad redirection type string offset 2912 (d->offset=2912 start=0) returns 2912
+descmap sh: bad variable name type string offset 2920 (d->offset=2920 start=0) returns 2920
+descmap sh: builtin %s not found type string offset 2928 (d->offset=2928 start=0) returns 2928
+descmap sh: cannot dup: %r type string offset 2936 (d->offset=2936 start=0) returns 2936
+descmap sh: cannot load %s: %r
+ type string offset 2944 (d->offset=2944 start=0) returns 2944
+descmap sh: cannot make pipe: %r type string offset 2952 (d->offset=2952 start=0) returns 2952
+descmap sh: cannot open %s: %r type string offset 2960 (d->offset=2960 start=0) returns 2960
+descmap sh: cannot open %s: %s type string offset 2968 (d->offset=2968 start=0) returns 2968
+descmap sh: invalid argument to ${} operator type string offset 2976 (d->offset=2976 start=0) returns 2976
+descmap sh: invalid dup type string offset 2984 (d->offset=2984 start=0) returns 2984
+descmap sh: lists of differing sizes can't be concatenated type string offset 2992 (d->offset=2992 start=0) returns 2992
+descmap sh: nil variable name type string offset 3000 (d->offset=3000 start=0) returns 3000
+descmap sh: null list in concatenation type string offset 3008 (d->offset=3008 start=0) returns 3008
+descmap sh: redirection not allowed in substitution type string offset 3016 (d->offset=3016 start=0) returns 3016
+descmap sh: redirections not allowed in assignment type string offset 3024 (d->offset=3024 start=0) returns 3024
+descmap sh: single redirection operand required type string offset 3032 (d->offset=3032 start=0) returns 3032
+descmap sh: usage:  type string offset 3040 (d->offset=3040 start=0) returns 3040
+descmap status type string offset 3048 (d->offset=3048 start=0) returns 3048
+descmap stdin type string offset 3056 (d->offset=3056 start=0) returns 3056
+descmap str type String offset 3064 (d->offset=3064 start=0) returns 3064
+descmap syncenv type string offset 3072 (d->offset=3072 start=0) returns 3072
+descmap syntax error type string offset 3080 (d->offset=3080 start=0) returns 3080
+descmap syntax error in pipe redirection type string offset 3088 (d->offset=3088 start=0) returns 3088
+descmap syntax error in redirection type string offset 3096 (d->offset=3096 start=0) returns 3096
+descmap sys type Sys offset 3104 (d->offset=3104 start=0) returns 3104
+descmap unbalanced contexts in shell environment type string offset 3112 (d->offset=3112 start=0) returns 3112
+descmap unknown error type string offset 3120 (d->offset=3120 start=0) returns 3120
+descmap unknown%d type string offset 3128 (d->offset=3128 start=0) returns 3128
+descmap unload type string offset 3136 (d->offset=3136 start=0) returns 3136
+descmap unload path... type string offset 3144 (d->offset=3144 start=0) returns 3144
+descmap unquote type string offset 3152 (d->offset=3152 start=0) returns 3152
+descmap unquote arg type string offset 3160 (d->offset=3160 start=0) returns 3160
+descmap unterminated string literal type string offset 3168 (d->offset=3168 start=0) returns 3168
+descmap usage type string offset 3176 (d->offset=3176 start=0) returns 3176
+descmap usage: sh [-ilexn] [-c command] [file [arg...]]
+ type string offset 3184 (d->offset=3184 start=0) returns 3184
+descmap whatis type string offset 3192 (d->offset=3192 start=0) returns 3192
+descmap whatis name ... type string offset 3200 (d->offset=3200 start=0) returns 3200
+descmap write on closed pipe type string offset 3208 (d->offset=3208 start=0) returns 3208
+descmap yyact type array of int offset 3216 (d->offset=3216 start=0) returns 3216
+descmap yychk type array of int offset 3224 (d->offset=3224 start=0) returns 3224
+descmap yydef type array of int offset 3232 (d->offset=3232 start=0) returns 3232
+descmap yyexca type array of int offset 3240 (d->offset=3240 start=0) returns 3240
+descmap yypact type array of int offset 3248 (d->offset=3248 start=0) returns 3248
+descmap yypgo type array of int offset 3256 (d->offset=3256 start=0) returns 3256
+descmap yyr1 type array of int offset 3264 (d->offset=3264 start=0) returns 3264
+descmap yyr2 type array of int offset 3272 (d->offset=3272 start=0) returns 3272
+descmap yystates type array of string offset 3280 (d->offset=3280 start=0) returns 3280
+descmap yystderr type ref YYSys->FD offset 3288 (d->offset=3288 start=0) returns 3288
+descmap yysys type YYSys offset 3296 (d->offset=3296 start=0) returns 3296
+descmap yytok1 type array of int offset 3304 (d->offset=3304 start=0) returns 3304
+descmap yytok2 type array of int offset 3312 (d->offset=3312 start=0) returns 3312
+descmap yytok3 type array of int offset 3320 (d->offset=3320 start=0) returns 3320
+descmap yytoknames type array of string offset 3328 (d->offset=3328 start=0) returns 3328
+descmap { type string offset 3336 (d->offset=3336 start=0) returns 3336
+descmap | type string offset 3344 (d->offset=3344 start=0) returns 3344
+descmap } type string offset 3352 (d->offset=3352 start=0) returns 3352
+descmap }
+ type string offset 3360 (d->offset=3360 start=0) returns 3360
+R2: new 4b9480 7079c8 7efb50
+R2: get 4b9b60 707a88 7f71e8
+R2: set 4ba4c0 707b48 7f4cb8
+R2: setlocal 4bad90 707c08 7fe638
+R2: envlist 4bb650 707cc8 7f9248
+R2: push 4bc050 707d88 7fb188
+R2: pop 4bc510 707e48 800210
+R2: copy 4bc9d0 707f08 7f1250
+R2: run 4bd140 707fc8 800db0
+R2: addmodule 4bdb40 708088 803fb0
+R2: addbuiltin 4be4c0 708148 807380
+R2: removebuiltin 4bec50 708208 808cb8
+R2: addsbuiltin 4bf3d0 7082c8 8094b8
+R2: removesbuiltin 4bfb58 708388 809d80
+R2: fail 4c02d8 708448 80aee8
+R2: options 4c0af8 708508 80d9c8
+R2: setoptions 4c1058 7085c8 80bf28
+R1: cmd2string 4b8f00 707908 82eb00
+R1: getself 4c6dc8 708bc8 84ac10
+R1: init 4b6d80 7075b8 7666a8
+R1: initbuiltin 4c4628 7088c8 83d140
+R1: initialise 4b6b60 7074f8 765688
+R1: list2stringlist 4c3048 708688 82bd48
+R1: parse 4b8580 7077f8 768198
+R1: quoted 4c3e28 708808 877220
+R1: run 4b7d80 707738 771740
+R1: runbuiltin 4c5868 708a48 840af0
+R1: runsbuiltin 4c6328 708b08 840730
+R1: stringlist2list 4c3788 708748 829828
+R1: system 4b74e0 707678 770dc0
+R1: whatis 4c4e48 708988 83dba0
+R3: addbuiltin 708148 4be4c0 807380
+R3: addmodule 708088 4bdb40 803fb0
+R3: addsbuiltin 7082c8 4bf3d0 8094b8
+R3: cmd2string 707908 4b8f00 82eb00
+R3: copy 707f08 4bc9d0 7f1250
+R3: envlist 707cc8 4bb650 7f9248
+R3: fail 708448 4c02d8 80aee8
+R3: get 707a88 4b9b60 7f71e8
+R3: getself 708bc8 4c6dc8 84ac10
+R3: init 7075b8 4b6d80 7666a8
+R3: initbuiltin 7088c8 4c4628 83d140
+R3: initialise 7074f8 4b6b60 765688
+R3: list2stringlist 708688 4c3048 82bd48
+R3: new 7079c8 4b9480 7efb50
+R3: options 708508 4c0af8 80d9c8
+R3: parse 7077f8 4b8580 768198
+R3: pop 707e48 4bc510 800210
+R3: push 707d88 4bc050 7fb188
+R3: quoted 708808 4c3e28 877220
+R3: removebuiltin 708208 4bec50 808cb8
+R3: removesbuiltin 708388 4bfb58 809d80
+R3: run 707738 4b7d80 771740
+R3: run 707fc8 4bd140 800db0
+R3: runbuiltin 708a48 4c5868 840af0
+R3: runsbuiltin 708b08 4c6328 840730
+R3: set 707b48 4ba4c0 7f4cb8
+R3: setlocal 707c08 4bad90 7fe638
+R3: setoptions 7085c8 4c1058 80bf28
+R3: stringlist2list 708748 4c3788 829828
+R3: system 707678 4b74e0 770dc0
+R3: whatis 708988 4c4e48 83dba0
+5871 instructions
+210 data elements
+118 type descriptors
+31 functions exported
+3760 stack size
+signed Context.addbuiltin type fn(c: self ref Context, name: string, mod: Shellbuiltin) len 1393 sig 0x7304b57
+signed Context.addmodule type fn(c: self ref Context, name: string, mod: Shellbuiltin) len 1393 sig 0x7304b57
+signed Context.addsbuiltin type fn(c: self ref Context, name: string, mod: Shellbuiltin) len 1393 sig 0x7304b57
+signed cmd2string type fn(c: ref Node): string len 71 sig 0x646c6641
+signed Context.copy type fn(c: self ref Context, copyenv: int): ref Context len 1392 sig 0x973848e0
+signed Context.envlist type fn(c: self ref Context): list of (string, list of ref Listnode) len 1390 sig 0xb803442e
+signed Context.fail type fn(c: self ref Context, ename: string, msg: string) len 1392 sig 0x1047d495
+signed Context.get type fn(c: self ref Context, name: string): list of ref Listnode len 1394 sig 0xbc3270e2
+signed getself type fn(): Shellbuiltin len 1381 sig 0x3b72c707
+signed init type fn(ctxt: ref Draw->Context, argv: list of string) len 334 sig 0x4244b354
+signed initbuiltin type fn(c: ref Context, sh: Sh): string len 1390 sig 0x51f91725
+signed initialise type fn() len 4 sig 0x9cd71c5e
+signed list2stringlist type fn(nl: list of ref Listnode): list of string len 88 sig 0x4776e837
+signed Context.new type fn(drawcontext: ref Draw->Context): ref Context len 1417 sig 0x7602fbec
+signed Context.options type fn(c: self ref Context): int len 1388 sig 0xa2dac671
+signed parse type fn(s: string): (ref Node, string) len 76 sig 0x33ce8029
+signed Context.pop type fn(c: self ref Context) len 1388 sig 0x25c9aa1f
+signed Context.push type fn(c: self ref Context) len 1388 sig 0x25c9aa1f
+signed quoted type fn(val: list of ref Listnode, quoteblocks: int): string len 89 sig 0xbcd573b7
+signed Context.removebuiltin type fn(c: self ref Context, name: string, mod: Shellbuiltin) len 1393 sig 0x7304b57
+signed Context.removesbuiltin type fn(c: self ref Context, name: string, mod: Shellbuiltin) len 1393 sig 0x7304b57
+signed run type fn(drawctxt: ref Draw->Context, argv: list of string): string len 334 sig 0x303ddb34
+signed Context.run type fn(c: self ref Context, args: list of ref Listnode, last: int): string len 1396 sig 0x53f0d124
+signed runbuiltin type fn(c: ref Context, sh: Sh, cmd: list of ref Listnode, last: int): string len 1398 sig 0x5694f318
+signed runsbuiltin type fn(c: ref Context, sh: Sh, cmd: list of ref Listnode): list of ref Listnode len 1400 sig 0xf849cd8b
+signed Context.set type fn(c: self ref Context, name: string, val: list of ref Listnode) len 1396 sig 0x368d9849
+signed Context.setlocal type fn(c: self ref Context, name: string, val: list of ref Listnode) len 1396 sig 0x368d9849
+signed Context.setoptions type fn(c: self ref Context, flags: int, on: int): int len 1392 sig 0x660f6009
+signed stringlist2list type fn(sl: list of string): list of ref Listnode len 88 sig 0x4a8f87f
+signed system type fn(drawctxt: ref Draw->Context, cmd: string): string len 333 sig 0xa44fa1e5
+signed whatis type fn(nil: ref Context, nil: Sh, nil: string, nil: int): string len 1394 sig 0x65971166
+signed Bufio->fopen type fn(fd: ref Sys->FD, mode: int): ref Bufio->Iobuf len 90 sig 0x2c386517
+signed Bufio->Iobuf.getc type fn(b: self ref Bufio->Iobuf): int len 87 sig 0xd9e8365b
+signed Command->init type fn(ctxt: ref Draw->Context, argv: list of string) len 334 sig 0x4244b354
+signed Env->clone type fn(): int len 4 sig 0x616977e8
+signed Env->getall type fn(): list of (string, string) len 10 sig 0x99901c60
+signed Env->getenv type fn(var: string): string len 5 sig 0xb2cd7190
+signed Env->setenv type fn(var: string, val: string): int len 7 sig 0x21e337e3
+signed Filepat->expand type fn(pat: string): list of string len 6 sig 0xaf4c19dd
+signed Shellbuiltin->getself type fn(): Shellbuiltin len 1381 sig 0x3b72c707
+signed Shellbuiltin->initbuiltin type fn(c: ref Context, sh: Sh): string len 1390 sig 0x51f91725
+signed Shellbuiltin->runbuiltin type fn(c: ref Context, sh: Sh, cmd: list of ref Listnode, last: int): string len 1398 sig 0x5694f318
+signed Shellbuiltin->runsbuiltin type fn(c: ref Context, sh: Sh, cmd: list of ref Listnode): list of ref Listnode len 1400 sig 0xf849cd8b
+signed Shellbuiltin->whatis type fn(c: ref Context, sh: Sh, name: string, wtype: int): string len 1394 sig 0x65971166
+signed String->in type fn(c: int, cl: string): int len 7 sig 0x75e8db6d
+signed String->unquoted type fn(args: string): list of string len 6 sig 0xaf4c19dd
+signed Sys->create type fn(s: string, mode: int, perm: int): ref Sys->FD len 16 sig 0x54db77d9
+signed Sys->dup type fn(old: int, new: int): int len 7 sig 0x6584767b
+signed Sys->fildes type fn(fd: int): ref Sys->FD len 12 sig 0x1478f993
+signed Sys->fprint type fn(fd: ref Sys->FD, s: string, *): int len 15 sig 0xf46486c8
+signed Sys->fstat type fn(fd: ref Sys->FD): (int, Sys->Dir) len 119 sig 0xda4499c2
+signed Sys->open type fn(s: string, mode: int): ref Sys->FD len 14 sig 0x8f477f99
+signed Sys->pctl type fn(flags: int, movefd: list of int): int len 8 sig 0x5df27fb
+signed Sys->pipe type fn(fds: array of ref Sys->FD): int len 13 sig 0x1f2c52ea
+signed Sys->print type fn(s: string, *): int len 6 sig 0xac849033
+signed Sys->read type fn(fd: ref Sys->FD, buf: array of byte, n: int): int len 17 sig 0x7cfef557
+signed Sys->seek type fn(fd: ref Sys->FD, off: big, start: int): big len 16 sig 0xaeccaddb
+signed Sys->sprint type fn(s: string, *): string len 6 sig 0x4c0624b6
+signed Sys->stat type fn(s: string): (int, Sys->Dir) len 112 sig 0x319328dd
+signed Sys->tokenize type fn(s: string, delim: string): (int, list of string) len 13 sig 0x57338f20
+signed YYSys->fildes type fn(fd: int): ref YYSys->FD len 12 sig 0x1478f993
+signed YYSys->fprint type fn(fd: ref YYSys->FD, s: string, *): int len 15 sig 0xf46486c8
--- /dev/null
+++ b/tests/sizes.c
@@ -1,0 +1,13 @@
+#include "lib9.h"
+
+void
+main(int argc, char *argv[])
+{
+	print("sizes --\n");
+	print("sizeof(int) %d\n", sizeof(int));
+	print("sizeof(double) %d\n", sizeof(double));
+	print("sizeof(float) %d\n", sizeof(float));
+	print("sizeof(long) %d\n", sizeof(long));
+	print("sizeof(intptr) %d\n", sizeof(intptr));
+	exits(nil);
+}
--- /dev/null
+++ b/tests/string.b
@@ -1,0 +1,32 @@
+implement Sample;
+include "sys.m";
+	sys: Sys;
+
+Sample: module
+{
+	init: fn();
+};
+
+init()
+{
+	sys = load Sys Sys->PATH;
+	a : string;
+	b := "yes";
+
+	b[1] = 'E';
+	sys->print("should print yEs result %s\n", b);
+	a[0] = 112;
+	sys->print("should print p result %s\n", a);
+	a[0] = 'h';
+	a[len a] = 'e';
+	a[len a] = 'l';
+	a[len a] = 'l';
+	a[len a] = 'o';
+	sys->print("should print hello result %s\n", a);
+	c := int "65";
+	sys->print("should print 65 result %d\n", c);
+	h := "Hello";
+	w := "World";
+	g := h + " " + w + " " + "!";
+	sys->print("should print Hello World ! result %s\n", g);
+}
--- /dev/null
+++ b/tests/strtodtest.c
@@ -1,0 +1,24 @@
+#include "lib9.h"
+#include "interp.h"
+
+extern	double	strtod(const char *, char **);
+
+void
+main(int argc, char *argv[])
+{
+	char *str = "1e400";
+	double d, d1;
+	unsigned long u1 = 10;
+
+	fmtinstall('g', gfltconv);
+	fmtinstall('G', gfltconv);
+	fmtinstall('e', gfltconv);
+	/* fmtinstall('E', gfltconv); */	/* avoid clash with ether address */
+	fmtinstall(0x00c9, gfltconv);	/* L'É' */
+	fmtinstall('f', gfltconv);
+	print("strtodtest --\n");
+	d = strtod(str,nil);
+	d1 = 4.;
+	print("infinity %g %e %f %g %d\n", d, d, d, d1, u1); // infinity
+	exits(nil);
+}
--- /dev/null
+++ b/tests/testicmp
@@ -1,0 +1,12 @@
+#!/bin/sh
+
+echo testing >/tmp/test
+cat /tmp/test
+
+<>/net/icmp/clone {
+	dir=/net/icmp/`{sed 1q}
+	echo connect 8.8.8.8!1 > $dir/ctl
+	ls $dir
+	cat $dir/status;
+	sleep 60
+}
--- /dev/null
+++ b/tests/testintptr.c
@@ -1,0 +1,62 @@
+#include <u.h>
+#include <libc.h>
+
+#define H		((void*)(-1))
+typedef struct	Point Point;
+typedef struct	Rectangle Rectangle;
+
+struct	Point
+{
+	intptr	x;
+	intptr	y;
+};
+
+struct Rectangle
+{
+	Point	min;
+	Point	max;
+};
+
+Rectangle
+Rect(intptr x, intptr y, intptr bx, intptr by)
+{
+	Rectangle r;
+
+	r.min.x = x;
+	r.min.y = y;
+	r.max.x = bx;
+	r.max.y = by;
+	print("Rect x %d y %d bx %d by %d\n", x, y, bx, by);
+	print("Rect x %d y %d bx %d by %d\n", r.min.x, r.min.y, r.max.x, r.max.y);
+	print("Rect x %x y %x bx %x by %x\n", x, y, bx, by);
+	return r;
+}
+
+void
+main(int, void**)
+{
+	Rectangle clipr, r;
+	intptr i;
+
+	clipr = Rect((intptr)-0x3FFFFFFF, (intptr)-0x3FFFFFFF, (intptr)0x3FFFFFFF, (intptr)0x3FFFFFFF);
+	r = Rect(1,1,20,20);
+	i = -0x3FFFFFFF;
+	print("num %zd i<1 %d\n", i, i<1);
+	print("num %zd clipr.min.x<1 %d\n", clipr.min.x, clipr.min.x<1);
+	print("rectclip r.min.x %zd < clipr.max.x %zd &&\n"
+		"\tclipr.min.x %zd<r.max.x %zd &&\n"
+		"\tr.min.y %zd<clipr.max.y %zd &&\n"
+		"\tclipr.min.y %zd<r.max.y %zd,"
+		"\tcond %d %d %d %d\n\t%d %d\n\t%d\n",
+		r.min.x,clipr.max.x , clipr.min.x,r.max.x ,
+		r.min.y,clipr.max.y , clipr.min.y,r.max.y,
+		r.min.x<clipr.max.x, clipr.min.x<r.max.x,
+		r.min.y<clipr.max.y, clipr.min.y<r.max.y,
+		r.min.x<clipr.max.x && clipr.min.x<r.max.x,
+		r.min.y<clipr.max.y && clipr.min.y<r.max.y,
+		r.min.x<clipr.max.x && clipr.min.x<r.max.x &&
+		r.min.y<clipr.max.y && clipr.min.y<r.max.y);
+	r.min.x = 3221225473;
+	print("r.min.x %zd %zd %zd\n",r.min.x, (intptr)(long)r.min.x, (intptr)r.min.x);
+	exits(0);
+}
--- /dev/null
+++ b/tests/testp.c
@@ -1,0 +1,18 @@
+#include <u.h>
+#include <libc.h>
+
+#define H		((void*)(-1))
+
+void
+main(int, void**)
+{
+	intptr **q, *v = H;
+
+	q = &v;
+	if(*q == H)
+		print("equal to H\n");
+	if(*q != H)
+		print("not equal to H\n");
+	print("testing q=0x%p *q=0x%p v=0x%p\n", q, *q, v);
+	exits(0);
+}
--- /dev/null
+++ b/tests/testtcp
@@ -1,0 +1,12 @@
+#!/bin/sh
+
+echo testing >/tmp/test
+cat /tmp/test
+
+<>/net/tcp/clone {
+	dir=/net/tcp/`{sed 1q}
+	echo connect 142.250.68.4!80 > $dir/ctl
+	ls $dir
+	cat $dir/status;
+	sleep 60
+}
--- /dev/null
+++ b/tests/tuple.b
@@ -1,0 +1,22 @@
+implement Sample;
+include "sys.m";
+	sys: Sys;
+
+Sample: module
+{
+	init: fn();
+};
+
+init()
+{
+	sys = load Sys Sys->PATH;
+	d := ("Jane", "Doe", 22, 3.8, -10);
+	major : string;
+	gpa : real;
+	a : int;
+
+	(major, nil, nil, gpa, a) = d;
+	sys->print("should print Jane result %s\n", major);
+	sys->print("should print 3.8 result %g\n", gpa);
+	sys->print("should print -10 result %d\n", a);
+}
--- /dev/null
+++ b/tests/unquote.b
@@ -1,0 +1,52 @@
+implement Emuinit;
+include "sys.m";
+	sys: Sys;
+include "draw.m";
+include "sh.m";
+include "arg.m";
+	arg: Arg;
+
+Emuinit: module
+{
+	init: fn();
+};
+
+init()
+{
+	sys = load Sys Sys->PATH;
+	unquoted("emu -v");
+}
+
+unquoted(s: string): list of string
+{
+	args: list of string;
+	word: string;
+	inquote := 0;
+	sys->print("unquoted %s\n", s);
+	for(j := len s; j > 0;){
+		c := s[j-1];
+		if(c == ' ' || c == '\t' || c == '\n'){
+			j--;
+			continue;
+		}
+		for(i := j-1; i >= 0 && ((c = s[i]) != ' ' && c != '\t' && c != '\n' || inquote); i--){	# collect word
+			if(c == '\''){
+				word = s[i+1:j] + word;
+				j = i;
+				if(!inquote || i == 0 || s[i-1] != '\'')
+					inquote = !inquote;
+				else
+					i--;
+			}
+		}
+		args = (s[i+1:j]+word) :: args;
+		word = nil;
+		j = i;
+	}
+	# if quotes were unbalanced, balance them and try again.
+	if(inquote)
+		return unquoted(s + "'");
+	sys->print("before exiting\n");
+	sys->print("unquoted ending args %s\n", s);
+	return args;
+}