<html>
<head>
<script src="resources/profiler-test-JS-resources.js"></script>
<script>
console.profile("Many Calls In The Same Scope");
function startTest()
{
    insertNewText();
    insertGivenText("This was a triumph.");
    arrayOperatorFunction(7);
    intermediaryFunction();
    anonymousFunction();
    end()
    endT();
    endT();
    endTest();
}

function end()
{
    var x = 0;
}

function endT()
{
    var y = 1;
}

</script>
</head>

<body onload="startTest()">
This page's JavaScript has many function calls in the same scope.
<br>
<br>
To use this test, load it in the browser then load the WebInspector and look at
the profile.  In the profile many functions should be the children of startTest.
Use the sorting capabilites to make sure the similarly named functions are sorted
correctly.
<div id="output"></div>
</body>
</html>