# Copyright (c) 2018, the Dart project authors.  Please see the AUTHORS file
# for details. All rights reserved. Use of this source code is governed by a
# BSD-style license that can be found in the LICENSE file.

sources: |
  main() {}
definitions: [a, b]
position: "dart:collection"
expression: |
  (a, b) {
    if (a._usedData != b._usedData ||
        a._deletedKeys != b._deletedKeys ||
        a._hashMask != b._hashMask ||
        a._index.length != b._index.length ||
        a._data.length != b._data.length) {
      return false;
    }
    for (var i = 0; i < a._index.length; ++i) {
      if (a._index[i] != b._index[i]) {
        return false;
      }
    }
    for (var i = 0; i < a._data.length; ++i) {
      var ad = a._data[i];
      var bd = b._data[i];
      if (!identical(ad, bd) && !(ad == a && bd == b)) {
        return false;
      }
    }
    return true;
  }(a, b)