I have ModelData instances, which overwrite equals() and hashCode(). In the TreeGrid, it works fine, but I have problems with the SelectionModel. You use == and != to compare instances within the methods onRemove(), doSelect() and onUpdate(). This will not work with my models, maybe it is better to compare the model instances with equals(). The onUpdate() method sets the member field lastFocused of the AbstractStoreSelectionModel class, but it is private (should be protected?). As workaround I have to use setLastFocused() on my sub-class, which fires an event however.