hmm, does indexing into an Iterable always work? it seems like it could fail sometimes. Or have O(N) performance per index, leading the compare to be O(N^2).

Another possibility here is to compare the two iterables:

```dart
bool equalIterables(Iterable first, Iterable second) {
  var x = first.iterator();
  var y = second.iterator();
  while (x.moveNext()) {
    if (!y.moveNext()) return false; // x has more elements than y
    if (x.current != y.current) return false;
  }
  return !y.moveNext(); // equal if y has no more elements
}
```
The assuming the keys are in order, compare the values:
```dart
bool equalMaps(Map x, Map y) {
  return equalIterables(x.keys, y.keys) && equalIterables(x.values, y.values);
}
```