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

{
    function Empty() {
    }
    let proxy = new Proxy(Empty, {});

    shouldBe(Reflect.construct(Intl.Collator, [], proxy) instanceof Empty, true);
    shouldBe(Reflect.construct(Intl.Collator, [], proxy).__proto__, Empty.prototype);

    shouldBe(Reflect.construct(Intl.NumberFormat, [], proxy) instanceof Empty, true);
    shouldBe(Reflect.construct(Intl.NumberFormat, [], proxy).__proto__, Empty.prototype);

    shouldBe(Reflect.construct(Intl.DateTimeFormat, [], proxy) instanceof Empty, true);
    shouldBe(Reflect.construct(Intl.DateTimeFormat, [], proxy).__proto__, Empty.prototype);
}

{
    function Empty() {
    }
    Empty.prototype = null;

    let proxy = new Proxy(Empty, {});

    shouldBe(Reflect.construct(Intl.Collator, [], proxy) instanceof Intl.Collator, true);
    shouldBe(Reflect.construct(Intl.Collator, [], proxy).__proto__, Intl.Collator.prototype);

    shouldBe(Reflect.construct(Intl.NumberFormat, [], proxy) instanceof Intl.NumberFormat, true);
    shouldBe(Reflect.construct(Intl.NumberFormat, [], proxy).__proto__, Intl.NumberFormat.prototype);

    shouldBe(Reflect.construct(Intl.DateTimeFormat, [], proxy) instanceof Intl.DateTimeFormat, true);
    shouldBe(Reflect.construct(Intl.DateTimeFormat, [], proxy).__proto__, Intl.DateTimeFormat.prototype);
}
