Variables: 
int[1]: "foo.y" 
int[2]: "bar.y" 
chan[1]: "foo.index" 
chan[2]: "foo.out[0]" 
chan[3]: "foo.out[1]" 
chan[4]: "bar.index" 
chan[5]: "bar.out[0]" 
chan[6]: "bar.out[1]" 

Event graph: 
event[0]: fork: null, #pred: 0, succ: 1 3 

# process[1]:
event[1]: receive: foo.index?(foo.y), pid: 1, #pred: 1, succ: 2 
channel deps: 1 
event[2]: send: foo.out[foo.x[foo.y]]!(0), pid: 1, #pred: 1, succ: 1 
int deps: 1 
channel deps: 2 3 

# process[2]:
event[3]: receive: bar.index?(bar.y), pid: 2, #pred: 1, succ: 4 
channel deps: 4 
event[4]: send: bar.out[bar.x[bar.y]]!(1), pid: 2, #pred: 1, succ: 3 
int deps: 2 
channel deps: 5 6 

