hmmmm.... you're assuming that "traversal operations vastly outnumber mutations" (http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/CopyOnWriteArrayList.html)

That is true if you're only using the `@Observes` annotation to register listeners, but we programmatically register listeners fairly frequently when creating background tasks, for example.  It's not clear to me that this is going to perform better, and it might perform significantly worse...