Variables: 
int[1]: "a" 
int[2]: "b" 
int[3]: "c" 

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

# process[0]:
event[1]: fork: , pid: 0, #pred: 1, succ: 5 10 14 16 
event[2]: assign: b := 2, pid: 0, #pred: 1, succ: 17 
event[3]: select: *[ a>0 -> ... ], pid: 0, #pred: 1, succ: 4 2 
event[4]: assign: a := a-1, pid: 0, #pred: 1, succ: 3 
event[5]: wait: [a!=0], pid: 0, #pred: 1, succ: 3 
int deps: 1 
event[6]: assign: c := 3, pid: 0, #pred: 1, succ: 17 
event[7]: select: *[ b>0 -> ... ], pid: 0, #pred: 1, succ: 8 6 
event[8]: assign: b := b-1, pid: 0, #pred: 1, succ: 7 
event[9]: wait: [b!=0], pid: 0, #pred: 1, succ: 7 
int deps: 2 
event[10]: assign: b := 0, pid: 0, #pred: 1, succ: 9 
event[11]: select: *[ c>0 -> ... ], pid: 0, #pred: 1, succ: 12 17 
event[12]: assign: c := c-1, pid: 0, #pred: 1, succ: 11 
event[13]: wait: [c!=0], pid: 0, #pred: 1, succ: 11 
int deps: 3 
event[14]: assign: c := 0, pid: 0, #pred: 1, succ: 13 
event[15]: assign: a := 1, pid: 0, #pred: 1, succ: 17 
event[16]: assign: a := 0, pid: 0, #pred: 1, succ: 15 
event[17]: join: , pid: 0, #pred: 4, succ: 

