potential issue here:

Not all maps are necessarily HashMaps. In particular, if the map was linked or sorted, the order could be important and hashing might have the wrong equality behavior.

might be able to solve it along these lines:
https://github.com/dart-lang/web-ui/blob/master/lib/observe/observable.dart#L245