Variables: 
bool[1]: "lanes.b" 
int[1]: "lanes.s" 
int[2]: "hairs.s" 
chan[1]: "b[0]" 
chan[2]: "b[1]" 
chan[3]: "c[0]" 
chan[4]: "c[1]" 

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

# process[0]:
event[1]: fork: , pid: 0, #pred: 1, succ: 7 8 
event[2]: join: , pid: 0, #pred: 2, succ: 1 
event[3]: send: c[0]!(0), pid: 0, #pred: 1, succ: 2 
channel deps: 3 
event[4]: send: c[1]!(0), pid: 0, #pred: 1, succ: 2 
channel deps: 4 
event[5]: fork: , pid: 0, #pred: 1, succ: 3 4 
event[6]: join: , pid: 0, #pred: 2, succ: 5 
event[7]: send: c[0]!(1), pid: 0, #pred: 1, succ: 6 
channel deps: 3 
event[8]: send: c[1]!(1), pid: 0, #pred: 1, succ: 6 
channel deps: 4 

# process[1]:
event[9]: receive: lanes.S?(lanes.s), pid: 1, #pred: 1, succ: 10 
channel deps: 3 
event[10]: receive: lanes.B[lanes.s]?(lanes.b), pid: 1, #pred: 1, succ: 9 
int deps: 1 
channel deps: 1 2 

# process[2]:
event[11]: receive: hairs.S?(hairs.s), pid: 2, #pred: 1, succ: 12 
channel deps: 4 
event[12]: send: hairs.B[hairs.s]!(true), pid: 2, #pred: 1, succ: 11 
int deps: 2 
channel deps: 1 2 

