function f1() {
    assertEq(g(), 3);
    function g() { return 1 }
    assertEq(g(), 3);
    function g() { return 2 }
    assertEq(g(), 3);
    function g() { return 3 }
    assertEq(g(), 3);
}
f1();

function f2() {
    assertEq(g(), 2);
    var g = 3;
    assertEq(g, 3);
    function g() { return 1 }
    function g() { return 2 }
}
f2();

function f3() {
    assertEq(g(), 2);
    var g = 3;
    assertEq(g, 3);
    function g() { return 1 }
    var g = 4;
    assertEq(g, 4);
    function g() { return 2 }
}
f3();

function f4() {
    assertEq(g(), 4);
    function g() { return 1 }
    assertEq(g(), 4);
    function g() { return 2 }
    var g = 9;
    assertEq(g, 9);
    function g() { return 3 }
    assertEq(g, 9);
    function g() { return 4 }
    assertEq(g, 9);
}
f4();