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

{
    let array = [];
    Object.defineProperty(array, 2, {
        get() {
            this.called = true;
            return 42;
        }
    });
    array.length = 42;
    shouldBe(array.lastIndexOf(42), 2);
    shouldBe(array.called, true);
}
{
    let array = [20, 20];
    Object.defineProperty(array, 2, {
        get() {
            this.called = true;
            return 42;
        }
    });
    array.length = 42;
    shouldBe(array.lastIndexOf(42), 2);
    shouldBe(array.called, true);
}
{
    let array = ["Hello"];
    Object.defineProperty(array, 2, {
        get() {
            this.called = true;
            return 42;
        }
    });
    array.length = 42;
    shouldBe(array.lastIndexOf(42), 2);
    shouldBe(array.called, true);
}
{
    let array = [42.195];
    Object.defineProperty(array, 2, {
        get() {
            this.called = true;
            return 42;
        }
    });
    array.length = 42;
    shouldBe(array.lastIndexOf(42), 2);
    shouldBe(array.called, true);
}
{
    let array = ["Hello"];
    Object.defineProperty(array, 2, {
        get() {
            this.called = true;
            return 42;
        }
    });
    array.length = 42;
    ensureArrayStorage(array);
    shouldBe(array.lastIndexOf(42), 2);
    shouldBe(array.called, true);
}
