function shouldBe(actual, expected)
{
    if (actual !== expected)
        throw new Error('bad value: ' + actual);
}

var keys = [
    "Cappuccino",
    -0.0,
    Symbol("Cocoa"),
    42,
    -42,
    null,
    undefined,
    420.5,
    0xffffffff,
    0x80000000,
    -1,
    -2147483648,
    {},
    [],
    false,
    true,
    NaN,
];

let i = 0;
let set = new Set();
for (let key of keys)
    set.add(key);

function test(set, key)
{
    return set.has(key) + set.has(key);
}
noInline(test);

for (let i = 0; i < 1e4; ++i) {
    let j = 0;
    for (let key of keys) {
        shouldBe(test(set, key), 2);
    }
}
shouldBe(test(set, 0.0), 2);
