starting to think about defining states and transitions
changed my mind about the internally-iterable callback having a return value. Added an immutable Issues implementation
make sure that listeners are given immutable objects so that they can't change the data that other listeners see
create immutable snapshots of stateinfo while holding the lock
factoring out common code