Self Types

For one thing, it’s possible for objects to equal subclass instances.

Yes, that’s true, but this is not an either/or proposition. If your class’s equals() implementation requires subclass equality, don’t use @Self for that class.

And for another, I suspect it would further stretch Java compatibility.

Perhaps. Any examples?