interface ( Equality-Comparator-Type [Meta-Type ( supertypes (Logical-Comparator-Type), instance « ( attributes « ( item-type Type ), receives « ( [equal? (first item-type, second item-type)] ( replies Boolean « [¬[not-equal? (first « first, second « second)]] ), [not-equal? (first item-type, second item-type)] ( replies Boolean « [¬[equal? (first « first, second « second)]] ) // instance types must override either equal or not-equal ), operators « ( [[left item-type] = [right item-type]] « [equal? (first « left, second « right)], [[left item-type] ≠ [right item-type]] « [not-equal? (first « left, second « right)] ) ) )], Equality-Type Meta-Type [( supertypes (Equality-Comparator-Type), instance « ( attributes « ( item-type « instance ) ) )] )