Variables: 
bool[1]: "A.a[0]" 
bool[2]: "A.a[1]" 
bool[3]: "A.a[2]" 
bool[4]: "Z.b" 
chan[1]: "In[0]" 
chan[2]: "In[1]" 
chan[3]: "In[2]" 
chan[4]: "Out" 

Event graph: 
event[0]: fork: null, #pred: 0, succ: 1 7 8 11 15 

# process[1]:
event[1]: fork: , pid: 1, #pred: 1, succ: 4 5 6 
event[2]: send: A.O!(A.a[0]||A.a[1]||A.a[2]), pid: 1, #pred: 1, succ: 1 
channel deps: 4 
event[3]: join: , pid: 1, #pred: 3, succ: 2 
event[4]: receive: A.A[0]?(A.a[0]), pid: 1, #pred: 1, succ: 3 
channel deps: 1 
event[5]: receive: A.A[1]?(A.a[1]), pid: 1, #pred: 1, succ: 3 
channel deps: 2 
event[6]: receive: A.A[2]?(A.a[2]), pid: 1, #pred: 1, succ: 3 
channel deps: 3 

# process[2]:
event[7]: send: S0.S!(false), pid: 2, #pred: 1, succ: 7 
channel deps: 1 

# process[3]:
event[8]: send: S1.S!(false), pid: 3, #pred: 1, succ: 10 
channel deps: 2 
event[9]: send: S1.S!(true), pid: 3, #pred: 1, succ: 8 
channel deps: 2 
event[10]: send: S1.S!(false), pid: 3, #pred: 1, succ: 9 
channel deps: 2 

# process[4]:
event[11]: send: S2.S!(true), pid: 4, #pred: 1, succ: 14 
channel deps: 3 
event[12]: send: S2.S!(false), pid: 4, #pred: 1, succ: 11 
channel deps: 3 
event[13]: send: S2.S!(false), pid: 4, #pred: 1, succ: 12 
channel deps: 3 
event[14]: send: S2.S!(false), pid: 4, #pred: 1, succ: 13 
channel deps: 3 

# process[5]:
event[15]: receive: Z.B?(Z.b), pid: 5, #pred: 1, succ: 15 
channel deps: 4 

