Test 'toString()' on simple function:
function foo() { var x = 1; }
Test 'toString()' on builtin function parseFloat:
function parseFloat() {
    [native code]
}
Test 'toString()' on anonymous function:
function () {
    //anonymous
    a = a + 1;
}
Test 'toString()' on an anonymous, unhinted function expression:
function () { }
Test 'toString()' on an anonymous, unhinted function expression in parentheses (different behavior in standards mode):
function () { }
Test 'toString()' on parent and nested function:
in parent
in nested
function nested() {
        WScript.Echo("in nested");
        bb = 2;
    }
function parent() {
    WScript.Echo("in parent");
    var bb = 1;
    function nested() {
        WScript.Echo("in nested");
        bb = 2;
    }
    nested();
    WScript.Echo(nested.toString());

}
Test "somestring".indexOf.toString():
function indexOf() {
    [native code]
}
Test "somestring".indexOf:
function indexOf() {
    [native code]
}
