process foo {
    If ("true") {
        If ("truee") {
            var("A1") y;
        } else {
            If ("true") {
                var("A11") q;
            } else {
                var("A22") q;
            } t;
            var(t.q) y;
        } s;
        var(s.y) x;
    } elif ("true") {
        var("B") x;
    } else {
        var("C") x;
    } ifs;

    val_equal(ifs.x, "A11") a;
    assert(a);

    var("a") v;
    If ("false") {
        v->set("b");
    };
    val_equal(v, "a") a;
    assert(a);

    var("a") v;
    If ("true") {
        v->set("b");
    };
    val_equal(v, "b") a;
    assert(a);

    exit("0");
}
