`a.length == b.length && a.keys.every((k) => b.containsKey(k) && a[k] == b[k])`

Btw, what is wrong with a regular `a == b`?