digraph {
	rankdir=RL; node [shape=Mrecord]
	str [label="source string"]
	subgraph cluster {
		color=lightgray
		tree [label="parsed|{token|tree}"] 
		canvas [label="initialized\n\<canvas\>"]
	};
	node [shape=box, style=filled, color=lightgray]
	pic [label="graphic output"]
	str -> tree [style=dotted, label="unfold"]
	tree -> pic [style=dotted, label="fold"]
	canvas -> pic [style=dotted]
}