// Q: But who shall debug the debuggers?  A: jimb

var log = '';

function addDebug(g, id) {
    var debuggerGlobal = newGlobal({newCompartment: true});
    debuggerGlobal.debuggee = g;
    debuggerGlobal.id = id;
    debuggerGlobal.print = function (s) { log += s; };
    debuggerGlobal.eval(
        'var dbg = new Debugger(debuggee);\n' +
        'dbg.onDebuggerStatement = function () { print(id); debugger; print(id); };\n');
    return debuggerGlobal;
}

var base = newGlobal({newCompartment: true});
var top = base;
for (var i = 0; i < 8; i++)  // why have 2 debuggers when you can have 8
    top = addDebug(top, i);
base.eval("debugger;");
assertEq(log, '0123456776543210');
