
final int a = cs[_i].isNA0(r) ? _missing : (int)cs[_i].at80(r);
</BUG>
long ab;
<BUG>if (_j != _i) {
final int b = cs[_j].isNA0(r) ? _missing : (int) cs[_j].at80(r);
</BUG>
ab = ((long) a << 32) | (b & 0xFFFFFFFFL); // key: combine both ints into a long
} else {
ab = (long)a;

Collections.sort(_valToIndex, new Comparator<Map.Entry<Long, Integer>>() {
@Override public int compare(Map.Entry<Long, Integer> o1, Map.Entry<Long, Integer> o2) { return o1.getKey().compareTo(o2.getKey()); }
});
}
@Override
public void map(Chunk A, Chunk B, Chunk C) {
for (int r = 0; r < A._len; r++) {
final int a = A.isNA0(r) ? _missing : (int)A.at80(r);
long ab;
if (!_same) {
final int b = B.isNA0(r) ? _missing : (int) B.at80(r);
ab = ((long) a << 32) | (b & 0xFFFFFFFFL); // key: combine both ints into a long
} else {
ab = (long)a;
