The issue with the implementation of ``Position.equals`` is that there is no way subclasses can provide a correct implementation that is symmetric. Said otherwise, ``Position.equals`` is correct as long as you don't subclass it.

For example, let's say we have ``x``, an instance of Position, and ``y``, an instance of a subclass of Position. ``x`` and ``y`` have the same offset and length, but ``y`` has an additional property, which is part of the equality contract. I argue that ``x.equals(y) != y.equals(x)``, hence ``Position.equals`` implementation is wrong.