"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") 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) { return this===that; } else { return false; } } "The system-defined identity hash value of the instance. Subtypes which refine `equals()` must also refine `hash`, according to the general contract defined by `Object`." see (`function identityHash`) shared default actual Integer hash => identityHash(this); }