process Pre(&Stored, &Delayed : FailureType, S : BType, &env : Flows) is states s0 from s0 select on (Stored != env.I and S = Empty); wait [0,0]; Stored := env.I; $\ldots$ [] on (S = Full); wait [a,b]; Delayed := Stored; S := Empty; $\ldots$ end process delay[go : in FailureType](&O : FailureType) is states sEmpty, sFull var delayed : FailureType := Ok from sEmpty go?delayed; to sFull from sFull wait [a,b]; O := delayed; to sEmpty process front[p,q : out FailureType](&I : FailureType) is states s var stored : FailureType := Ok from s on (I != stored); stored := I; select p!I [] q!I end; loop component Pre_2(&I, &O: FailureType) is port go1, go2 : FailureType in [0,0] priority go1 > go2 par * in front[go1,go2](&I) || delay[go1](&O) || delay[go2](&O) end