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