//// [downlevelLetConst16.ts]
'use strict'

declare function use(a: any);

var x = 10;
var y;
var z;
use(x);
use(y);
use(z);
function foo1() {
    let x = 1;
    use(x);
    let [y] = [1];
    use(y);
    let {a: z} = {a: 1};
    use(z);
}

function foo2() {
    {
        let x = 1;
        use(x);
        let [y] = [1];
        use(y);
        let {a: z} = { a: 1 };
        use(z);
    }
    use(x);
}

class A {
    m1() {
        let x = 1;
        use(x);
        let [y] = [1];
        use(y);
        let {a: z} = { a: 1 };
        use(z);
    }
    m2() {
        {
            let x = 1;
            use(x);
            let [y] = [1];
            use(y);
            let {a: z} = { a: 1 };
            use(z);
        }
        use(x);
    }

}

class B {
    m1() {
        const x = 1;
        use(x);
        const [y] = [1];
        use(y);
        const {a: z} = { a: 1 };
        use(z);

    }
    m2() {
        {
            const x = 1;
            use(x);
            const [y] = [1];
            use(y);
            const {a: z} = { a: 1 };
            use(z);

        }
        use(x);
    }
}

function bar1() {
    const x = 1;
    use(x);
    const [y] = [1];
    use(y);
    const {a: z} = { a: 1 };
    use(z);
}

function bar2() {
    {
        const x = 1;
        use(x);
        const [y] = [1];
        use(y);
        const {a: z} = { a: 1 };
        use(z);

    }
    use(x);
}

module M1 {
    let x = 1;
    use(x);
    let [y] = [1];
    use(y);
    let {a: z} = { a: 1 };
    use(z);
}

module M2 {
    {
        let x = 1;
        use(x);
        let [y] = [1];
        use(y);
        let {a: z} = { a: 1 };
        use(z);
    }
    use(x);
}

module M3 {
    const x = 1;
    use(x);
    const [y] = [1];
    use(y);
    const {a: z} = { a: 1 };
    use(z);

}

module M4 {
    {
        const x = 1;
        use(x);
        const [y] = [1];
        use(y);
        const {a: z} = { a: 1 };
        use(z);

    }
    use(x);
    use(y);
    use(z);
}

function foo3() {
    for (let x; ;) {
        use(x);
    }
    for (let [y] = []; ;) {
        use(y);
    }
    for (let {a: z} = {a: 1}; ;) {
        use(z);
    }
    use(x);
}

function foo4() {
    for (const x = 1; ;) {
        use(x);
    }
    for (const [y] = []; ;) {
        use(y);
    }
    for (const {a: z} = { a: 1 }; ;) {
        use(z);
    }
    use(x);
}

function foo5() {
    for (let x in []) {
        use(x);
    }
    use(x);
}

function foo6() {
    for (const x in []) {
        use(x);
    }
    use(x);
}

function foo7() {
    for (let x of []) {
        use(x);
    }
    use(x);
}

function foo8() {
    for (let [x] of []) {
        use(x);
    }
    use(x);
}

function foo9() {
    for (let {a: x} of []) {
        use(x);
    }
    use(x);
}

function foo10() {
    for (const x of []) {
        use(x);
    }
    use(x);
}

function foo11() {
    for (const [x] of []) {
        use(x);
    }
    use(x);
}

function foo12() {
    for (const {a: x} of []) {
        use(x);
    }
    use(x);
}

//// [downlevelLetConst16.js]
'use strict';
var x = 10;
var y;
var z;
use(x);
use(y);
use(z);
function foo1() {
    var x = 1;
    use(x);
    var y = [1][0];
    use(y);
    var z = { a: 1 }.a;
    use(z);
}
function foo2() {
    {
        var x_1 = 1;
        use(x_1);
        var y_1 = [1][0];
        use(y_1);
        var z_1 = { a: 1 }.a;
        use(z_1);
    }
    use(x);
}
var A = (function () {
    function A() {
    }
    A.prototype.m1 = function () {
        var x = 1;
        use(x);
        var y = [1][0];
        use(y);
        var z = { a: 1 }.a;
        use(z);
    };
    A.prototype.m2 = function () {
        {
            var x_2 = 1;
            use(x_2);
            var y_2 = [1][0];
            use(y_2);
            var z_2 = { a: 1 }.a;
            use(z_2);
        }
        use(x);
    };
    return A;
})();
var B = (function () {
    function B() {
    }
    B.prototype.m1 = function () {
        var x = 1;
        use(x);
        var y = [1][0];
        use(y);
        var z = { a: 1 }.a;
        use(z);
    };
    B.prototype.m2 = function () {
        {
            var x_3 = 1;
            use(x_3);
            var y_3 = [1][0];
            use(y_3);
            var z_3 = { a: 1 }.a;
            use(z_3);
        }
        use(x);
    };
    return B;
})();
function bar1() {
    var x = 1;
    use(x);
    var y = [1][0];
    use(y);
    var z = { a: 1 }.a;
    use(z);
}
function bar2() {
    {
        var x_4 = 1;
        use(x_4);
        var y_4 = [1][0];
        use(y_4);
        var z_4 = { a: 1 }.a;
        use(z_4);
    }
    use(x);
}
var M1;
(function (M1) {
    var x = 1;
    use(x);
    var y = [1][0];
    use(y);
    var z = { a: 1 }.a;
    use(z);
})(M1 || (M1 = {}));
var M2;
(function (M2) {
    {
        var x_5 = 1;
        use(x_5);
        var y_5 = [1][0];
        use(y_5);
        var z_5 = { a: 1 }.a;
        use(z_5);
    }
    use(x);
})(M2 || (M2 = {}));
var M3;
(function (M3) {
    var x = 1;
    use(x);
    var y = [1][0];
    use(y);
    var z = { a: 1 }.a;
    use(z);
})(M3 || (M3 = {}));
var M4;
(function (M4) {
    {
        var x_6 = 1;
        use(x_6);
        var y_6 = [1][0];
        use(y_6);
        var z_6 = { a: 1 }.a;
        use(z_6);
    }
    use(x);
    use(y);
    use(z);
})(M4 || (M4 = {}));
function foo3() {
    for (var x_7 = void 0;;) {
        use(x_7);
    }
    for (var y_7 = [][0];;) {
        use(y_7);
    }
    for (var z_7 = { a: 1 }.a;;) {
        use(z_7);
    }
    use(x);
}
function foo4() {
    for (var x_8 = 1;;) {
        use(x_8);
    }
    for (var y_8 = [][0];;) {
        use(y_8);
    }
    for (var z_8 = { a: 1 }.a;;) {
        use(z_8);
    }
    use(x);
}
function foo5() {
    for (var x_9 in []) {
        use(x_9);
    }
    use(x);
}
function foo6() {
    for (var x_10 in []) {
        use(x_10);
    }
    use(x);
}
function foo7() {
    for (var _i = 0, _a = []; _i < _a.length; _i++) {
        var x_11 = _a[_i];
        use(x_11);
    }
    use(x);
}
function foo8() {
    for (var _i = 0, _a = []; _i < _a.length; _i++) {
        var x_12 = _a[_i][0];
        use(x_12);
    }
    use(x);
}
function foo9() {
    for (var _i = 0, _a = []; _i < _a.length; _i++) {
        var x_13 = _a[_i].a;
        use(x_13);
    }
    use(x);
}
function foo10() {
    for (var _i = 0, _a = []; _i < _a.length; _i++) {
        var x_14 = _a[_i];
        use(x_14);
    }
    use(x);
}
function foo11() {
    for (var _i = 0, _a = []; _i < _a.length; _i++) {
        var x_15 = _a[_i][0];
        use(x_15);
    }
    use(x);
}
function foo12() {
    for (var _i = 0, _a = []; _i < _a.length; _i++) {
        var x_16 = _a[_i].a;
        use(x_16);
    }
    use(x);
}
