....there could be a special interface:
public interface Any<any T extends Any<T>> {
boolean equals(T x);
}
This is exactly the current thinking -- though we don't call it Any, we
call it Objectible.
...implemented by Object:
public class Object implements Any<Object> {...}
We were thinking that this would be Object implements *raw* Objectible,
but yes.
...and implicitly implemented by every value type:
Yes.
Sup<E> from Collection<any E> could then be expressed as:
public interface <T> Collection<any E extends Any<T>> extends
Iterable<E> {
boolean contains(T x);
Clever. This is yet another way to express the dependent type "ref T ?
Object : T" alluded to in the last mail. Ultimately, I do think that
the API problem (and several others) boil down to finding a non-scary
way to refer to this type (and anything with the word "dependent" in it
fails the scary test.)