digraph {
   dpi = 300.0;
   
   rankdir = "LR";
   splines = false;
   cluster = true;
   
   node [shape = diamond;];
   
   // The graphs end up with the correct order, i.e. Task 1 *above* Task 2, when
   // this is first.
   subgraph cluster_ColleagueB {
      label = "Task A";
      A1;
      A2;
      A0_1 [style = invis;];
      A3;
      
      A1 -> A2;
      A2 -> A0_1 [arrowhead = "tee"; headport = "A0_1:c"; headclip = false;];
      A0_1;
      A0_1 -> A3 [dir = both; arrowtail = "tee"; tailclip = false;];
   }
   
   subgraph cluster_ColleagueA {
      newrank = true;
      label = "Task B";
      B1 -> B2 -> B3 -> B4;
   }
   
   B3 -> A3;
}