This breaks the Comparator contract when two keys have equal values. I think we should handle the == case as a third if branch and consistently return 0