digraph { compound=true; subgraph cluster_0 { label="T1"; K1 [label="K1"]; K2 [label="K2"]; } subgraph cluster_1 { label="T2"; K3 [label="K3"]; } subgraph cluster_2 { label="T3"; K4 [label="K4"]; } subgraph cluster_3 { label="T4"; cb [label="callback"]; } K1 -> K2; K2 -> K3 [ltail=cluster_0,lhead=cluster_1,minlen=2]; K2 -> K4 [ltail=cluster_0,lhead=cluster_2,minlen=2]; K3 -> cb [ltail=cluster_1,lhead=cluster_3,minlen=2]; K4 -> cb [ltail=cluster_2,lhead=cluster_3,minlen=2]; }