Asthetics, in my opinion, are not an area where Java wins any points.
[QUOTE=All Store events expose the store instance itself, as the source of the event. An instance of StoreDataChangedEvent can have getStore() called on it to get the exact store instance which emitted the event - and if you have access to the event, it is assumed that you either know what kind of store it was, or don't need the specific methods available to that specific type. The getAll() method is defined on Store, so can be used without any cast at all.[/QUOTE]
I rely too much on looking at just the source code and forget to look at parent classes - I need to be better about looking at the API docs. I'd missed that method on StoreEvent<M> because I was just looking at StoreDataChangeEvent<M> and saw that it was being constructed in ListStore.replaceAll(...) with no arguments and made the (wrong) assumption that the list store wasn't accessible.