private static uint extend(uint v, ref bool seenNonZero) { if (seenNonZero) { return ~v; } else { if (v == 0) { return 0; } else { seenNonZero = true; return ~v + 1; } } }