1digraph {
2  {
3     node [shape=plaintext];
4     "level 1" -> "level 2" -> "level 3";
5  }
6
7  node [shape=box;style="rounded,filled";color=AntiqueWhite;];
8  c1 [ label="crash A\nid 1\ncrash root" ];
9  c2 [ label="crash B\nid 2" ];
10  c3 [ label="crash C\nid 3\ncrash leaf" ];
11  c4 [ label="crash D\nid 4\ncrash leaf" ];
12  { rank = same; "level 1"; c1;}
13  { rank = same; "level 2"; c2; c4;}
14  { rank = same; "level 3"; c3;}
15
16  node [shape=box;style="rounded,dashed";];
17  exp1 [ label="crash B matches fail\nmatch for the next child\nof crash A"];
18  exp2 [ label="crash D matches successfully\nreturn crash D"];
19
20  node [shape=box;style="invis";];
21  "channel" -> c1 [ label="trigger" ]
22  c1 -> {exp1 exp2}
23  exp1 -> c2 -> c3 [ style=dashed dir=none]
24  exp2 -> c4
25}
26
27