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

function test(num)
{
    var regexp = /hello world/;
    regexp.lastIndex = { ok: regexp, value: 42 };
    if (num === 0)
        return regexp;
    if (num === 1)
        return regexp.lastIndex;
    return regexp.lastIndex.value;
}
noInline(test);

for (var i = 0; i < 1e6; ++i) {
    var num = i % 3;
    switch (num) {
    case 0:
        var regexp = test(num);
        shouldBe(regexp instanceof RegExp, true);
        shouldBe(typeof regexp.lastIndex, "object");
        shouldBe(regexp.lastIndex.ok, regexp);
        break;
    case 1:
        var object = test(num);
        shouldBe(object.value, 42);
        shouldBe(object.ok instanceof RegExp, true);
        shouldBe(object.ok.lastIndex, object);
        break;
    case 2:
        var value = test(num);
        shouldBe(value, 42);
        break;
    }
}
