Should this always be -1? That does make it inconsistent if the receiver and argument are swapped. Should this defer to comparing the encodings perhaps? Don't really know what the answer is here, but it stood out as perhaps problematic.