digraph G {
   overlap=false;
   splies=true;
   sep=1;
   node [shape=none];

   g0     [shape=circle];
   g1     [shape=circle];
   g2     [shape=circle];
   nested [shape=circle];

   p0_read;
   p0_write;
   p0_call;

   p1_read;
   p1_write;
   p1_call;

   p2_read;
   p2_write;
   p2_call;

   p3_read;
   p3_write;
   p3_call;

   p4_read;
   p4_write;
   p4_call;

   p5_read;
   p5_write;
   p5_call;

   // Known information from analysis of Q:

   p1_read  -> nested;
   p1_write -> nested;
   p1_call  -> p2_call;
   p1_read  -> p2_read;
   p1_write -> p2_write;

   p4_read  -> g1;
   p4_read  -> g2;
   p4_read  -> nested;
   p4_write -> nested;

   p5_read  -> g1;
   p5_read  -> g2;
   p5_write -> nested;

   // From phase1 cfg of P:

   edge [color=RoyalBlue];

   p0_read  -> p1_read;
   p0_write -> p1_write;
   p0_call  -> p1_call;
   p0_write -> g1;

   p2_read  -> p3_read;
   p2_write -> p3_write;
   p2_call  -> p3_call;
   p2_write -> g0;
   p2_write -> g2;

   p3_read  -> p4_read;
   p3_write -> p4_write;
   p3_call  -> p4_call;

}
