"The abstract supertype of all types with a well-defined notion of identity. Values of type `Identifiable` may be compared using the `===` operator to determine if they are references to the same object instance. For the sake of convenience, this interface defines a default implementation of value equality equivalent to identity. Of course, subtypes are encouraged to refine this implementation." by ("Gavin") tagged("Basic types") shared interface Identifiable { "Identity equality comparing the identity of the two values. May be refined by subtypes for which value equality is more appropriate. Implementations must respect the constraint that if `x===y` then `x==y` (equality is consistent with identity)." shared default actual Boolean equals(Object that) => if (is Identifiable that) then this===that else false; "The system-defined [[identity hash value|identityHash]] of this instance. Subtypes which refine [[equals]] must also refine `hash`, according to the general contract defined by [[Object.equals]]." see (`function identityHash`) shared default actual Integer hash => identityHash(this); }