OK, I give up. I don't understand how it works enough to fix the issue. Somebody else please fix it.
Test case for the issue:
```
record MySequenceForPrecedence (
i: Int,
);
record MyIteratorForPrecedence();
overload iterator(seq: MySequenceForPrecedence) = MyIteratorForPrecedence();
overload nextValue(iter: MyIteratorForPrecedence) = nothing(Int);
testSequenceEqualsHigherThatRecordPrecedence(test) {
// if 'equal?' from records has higher precedence, this test fails
expectEqual(test, "==", MySequenceForPrecedence(1), MySequenceForPrecedence(2));
}
```
--
Stepa