equals method
Compare two elements for being equal.
This should be a proper equality relation.
Implementation
@override
bool equals(T? elements1, T? elements2) => switch ((elements1, elements2)) {
(var e1, var e2) when identical(e1, e2) => true,
(null, _) || (_, null) => false,
(T e1, T e2) => () {
final HashMap<E, int> counts = HashMap<E, int>(
equals: _elementEquality.equals,
hashCode: _elementEquality.hash,
isValidKey: _elementEquality.isValidKey,
);
// Count elements in first collection
int length = 0;
for (final E e in e1) {
final int count = counts[e] ?? 0;
counts[e] = count + 1;
length++;
}
// Check elements in second collection
for (final E e in e2) {
final int? count = counts[e];
if (count == null || count == 0) return false;
counts[e] = count - 1;
length--;
}
return length == 0;
}()
};