Maybe now I understand better why we have the begin field in the HashedSequence. I was expecting a HashedSequenceComparator to do one thing: provide a fast equals() and hash() by using the knowledge that the Sequences have hashes with them. But additionally we do some index translation with offset. Isn't the Subsequence focusing on index translation. Maybe we could always use Subsequences for index translation and remove that aspect from this class.