Mostly pseudo code because I wasn't sure about the specific java syntax but the basic idea is still there: each event barrier keeps track of a list of producers and consumers then when a producer calls raise, the consumers do their thing then get removed. The producer waits until all of the consumers get consumed then sets the state back to normal (invariant). I also was NOT sure on some of the lock stuff.
Also added the beginnings of a unit tester but got bogged down in the actual event barrier file
Merge branch 'master' of https://github.com/srang/elevator