The exact ordering semantics are a little weird here -- KeyHashOrdering is x.compare(y) while this is y.compare(x). Maybe comment on why the PriorityQueue requires this behavior.