thinking some more about it, I think the implementation should respect the
comment.
Clearly, as it is, we can put the same process on multiple lists, which
seems very wrong. Also, a process that stopped executing by waiting on a
semaphore has started executing again without the semaphore being
signalled, and with the process still on the semaphore's list.
| evaluationProcess result sema testProcess |
sema := Semaphore new.
testProcess := Processor activeProcess.
result := OrderedCollection new.
evaluationProcess := [
result add: testProcess isBlocked.
testProcess resume.
result add: testProcess isBlocked.
result add: (sema includes: testProcess).
] fork.
sema wait.
result