// assignment to watched global properties must not be traced
var hits = 0;
function counter(id, oldval, newval) {
    hits++;
    return newval;
}

var x = 0;
var y = 0;
function f() {
    var a = [{}, this];
    for (var i = 0; i < 14; i++) {
        print(shapeOf(this));
        Object.prototype.watch.call(a[+(i > 8)], "y", counter);
        y++;
    }
}
f();
assertEq(hits, 5);