find [T] (x: collection[T], v: T) returns (int) signals (not_found)
where T has equal(T) returns (bool)
w: T
...
if v = w ... % short for v.equal(w)
...
end find
the call "v.equal(w)" (made using the associated short form) is legal.
Such method
calls make sense because instantiations are only permitted for types
whose objects have the required methods (3.2.2).