function (jsonObject) {
        return jsonObject.parse();
    }
PASS tests[i](nativeJSON) threw exception Error: JSON.parse requires at least one parameter.
function (jsonObject) {
        return jsonObject.parse('');
    }
PASS tests[i](nativeJSON) threw exception SyntaxError: Unable to parse JSON string.
function (jsonObject) {
        return jsonObject.parse('1');
    }
PASS JSON.stringify(tests[i](nativeJSON)) is JSON.stringify(tests[i](JSON))
function (jsonObject) {
        return jsonObject.parse('-1');
    }
PASS JSON.stringify(tests[i](nativeJSON)) is JSON.stringify(tests[i](JSON))
function (jsonObject) {
        return jsonObject.parse('Infinity');
    }
PASS tests[i](nativeJSON) threw exception SyntaxError: Unable to parse JSON string.
function (jsonObject) {
        return jsonObject.parse('NaN');
    }
PASS tests[i](nativeJSON) threw exception SyntaxError: Unable to parse JSON string.
function (jsonObject) {
        return jsonObject.parse('null');
    }
PASS JSON.stringify(tests[i](nativeJSON)) is JSON.stringify(tests[i](JSON))
function (jsonObject) {
        return jsonObject.parse('undefined');
    }
PASS tests[i](nativeJSON) threw exception SyntaxError: Unable to parse JSON string.
function (jsonObject) {
        return jsonObject.parse('{}');
    }
PASS JSON.stringify(tests[i](nativeJSON)) is JSON.stringify(tests[i](JSON))
function (jsonObject) {
        return jsonObject.parse('({})');
    }
PASS tests[i](nativeJSON) threw exception SyntaxError: Unable to parse JSON string.
function (jsonObject) {
        return jsonObject.parse('{a}');
    }
PASS tests[i](nativeJSON) threw exception SyntaxError: Unable to parse JSON string.
function (jsonObject) {
        return jsonObject.parse('{a:}');
    }
PASS tests[i](nativeJSON) threw exception SyntaxError: Unable to parse JSON string.
function (jsonObject) {
        return jsonObject.parse('{a:5}');
    }
PASS tests[i](nativeJSON) threw exception SyntaxError: Unable to parse JSON string.
function (jsonObject) {
        return jsonObject.parse('{a:5,}');
    }
PASS tests[i](nativeJSON) threw exception SyntaxError: Unable to parse JSON string.
function (jsonObject) {
        return jsonObject.parse('{"a"}');
    }
PASS tests[i](nativeJSON) threw exception SyntaxError: Unable to parse JSON string.
function (jsonObject) {
        return jsonObject.parse('{"a":}');
    }
PASS tests[i](nativeJSON) threw exception SyntaxError: Unable to parse JSON string.
function (jsonObject) {
        return jsonObject.parse('{"a":5}');
    }
PASS JSON.stringify(tests[i](nativeJSON)) is JSON.stringify(tests[i](JSON))
function (jsonObject) {
        return jsonObject.parse('{"a":5,}');
    }
PASS tests[i](nativeJSON) threw exception SyntaxError: Unable to parse JSON string.
json2.js did not throw for a test we expect to throw.
function (jsonObject) {
        return jsonObject.parse('{"a":5,,}');
    }
PASS tests[i](nativeJSON) threw exception SyntaxError: Unable to parse JSON string.
function (jsonObject) {
        return jsonObject.parse('{"a":5,"a",}');
    }
PASS tests[i](nativeJSON) threw exception SyntaxError: Unable to parse JSON string.
function (jsonObject) {
        return jsonObject.parse('{"a":(5,"a"),}');
    }
PASS tests[i](nativeJSON) threw exception SyntaxError: Unable to parse JSON string.
function (jsonObject) {
        return jsonObject.parse('[]');
    }
PASS JSON.stringify(tests[i](nativeJSON)) is JSON.stringify(tests[i](JSON))
function (jsonObject) {
        return jsonObject.parse('[1]');
    }
PASS JSON.stringify(tests[i](nativeJSON)) is JSON.stringify(tests[i](JSON))
function (jsonObject) {
        return jsonObject.parse('[1,]');
    }
PASS JSON.stringify(tests[i](nativeJSON)) is JSON.stringify(tests[i](JSON))
function (jsonObject) {
        return jsonObject.parse('[1,2]');
    }
PASS JSON.stringify(tests[i](nativeJSON)) is JSON.stringify(tests[i](JSON))
function (jsonObject) {
        return jsonObject.parse('[1,2,,]');
    }
PASS tests[i](nativeJSON) threw exception SyntaxError: Unable to parse JSON string.
json2.js did not throw for a test we expect to throw.
function (jsonObject) {
        return jsonObject.parse('[1,2,,4]');
    }
PASS tests[i](nativeJSON) threw exception SyntaxError: Unable to parse JSON string.
json2.js did not throw for a test we expect to throw.
function (jsonObject) {
        return jsonObject.parse('""');
    }
PASS JSON.stringify(tests[i](nativeJSON)) is JSON.stringify(tests[i](JSON))
function (jsonObject) {
        return jsonObject.parse('"\'"');
    }
PASS JSON.stringify(tests[i](nativeJSON)) is JSON.stringify(tests[i](JSON))
function (jsonObject) {
        return jsonObject.parse('"a\"');
    }
PASS JSON.stringify(tests[i](nativeJSON)) is JSON.stringify(tests[i](JSON))
function (jsonObject) {
        return jsonObject.parse('"a\\"');
    }
PASS tests[i](nativeJSON) threw exception SyntaxError: Unable to parse JSON string.
function (jsonObject) {
        return jsonObject.parse('"a\\z"');
    }
PASS tests[i](nativeJSON) threw exception SyntaxError: Unable to parse JSON string.
function (jsonObject) {
        return jsonObject.parse('"a\\\z"');
    }
PASS tests[i](nativeJSON) threw exception SyntaxError: Unable to parse JSON string.
function (jsonObject) {
        return jsonObject.parse('"a\\\\z"');
    }
PASS JSON.stringify(tests[i](nativeJSON)) is JSON.stringify(tests[i](JSON))
function (jsonObject) {
        return jsonObject.parse('"a\tz"');
    }
PASS JSON.stringify(tests[i](nativeJSON)) is JSON.stringify(tests[i](JSON))
function (jsonObject) {
        return jsonObject.parse('"a\\tz"');
    }
PASS JSON.stringify(tests[i](nativeJSON)) is JSON.stringify(tests[i](JSON))
function (jsonObject) {
        return jsonObject.parse('"a\nz"');
    }
PASS tests[i](nativeJSON) threw exception SyntaxError: Unable to parse JSON string.
function (jsonObject) {
        return jsonObject.parse('"a\\nz"');
    }
PASS JSON.stringify(tests[i](nativeJSON)) is JSON.stringify(tests[i](JSON))
function (jsonObject) {
        return jsonObject.parse('"a\rz"');
    }
PASS tests[i](nativeJSON) threw exception SyntaxError: Unable to parse JSON string.
function (jsonObject) {
        return jsonObject.parse('"a\\rz"');
    }
PASS JSON.stringify(tests[i](nativeJSON)) is JSON.stringify(tests[i](JSON))
function (jsonObject) {
        return jsonObject.parse('"a\/z"');
    }
PASS JSON.stringify(tests[i](nativeJSON)) is JSON.stringify(tests[i](JSON))
function (jsonObject) {
        return jsonObject.parse('"a\\/z"');
    }
PASS JSON.stringify(tests[i](nativeJSON)) is JSON.stringify(tests[i](JSON))
function (jsonObject) {
        return jsonObject.parse('"a\bz"');
    }
PASS tests[i](nativeJSON) threw exception SyntaxError: Unable to parse JSON string.
json2.js did not throw for a test we expect to throw.
function (jsonObject) {
        return jsonObject.parse('"a\\bz"');
    }
PASS JSON.stringify(tests[i](nativeJSON)) is JSON.stringify(tests[i](JSON))
function (jsonObject) {
        return jsonObject.parse('"a\rz"');
    }
PASS tests[i](nativeJSON) threw exception SyntaxError: Unable to parse JSON string.
function (jsonObject) {
        return jsonObject.parse('"a\\rz"');
    }
PASS JSON.stringify(tests[i](nativeJSON)) is JSON.stringify(tests[i](JSON))
function (jsonObject) {
        return jsonObject.parse('"a\\uz"     ');
    }
PASS tests[i](nativeJSON) threw exception SyntaxError: Unable to parse JSON string.
function (jsonObject) {
        return jsonObject.parse('"a\\u0z"    ');
    }
PASS tests[i](nativeJSON) threw exception SyntaxError: Unable to parse JSON string.
function (jsonObject) {
        return jsonObject.parse('"a\\u00z"   ');
    }
PASS tests[i](nativeJSON) threw exception SyntaxError: Unable to parse JSON string.
function (jsonObject) {
        return jsonObject.parse('"a\\u000z"  ');
    }
PASS tests[i](nativeJSON) threw exception SyntaxError: Unable to parse JSON string.
function (jsonObject) {
        return jsonObject.parse('"a\\u0000z" ');
    }
PASS JSON.stringify(tests[i](nativeJSON)) is JSON.stringify(tests[i](JSON))
function (jsonObject) {
        return jsonObject.parse('"a\\u000Az" ');
    }
PASS JSON.stringify(tests[i](nativeJSON)) is JSON.stringify(tests[i](JSON))
function (jsonObject) {
        return jsonObject.parse('"a\\u000az" ');
    }
PASS JSON.stringify(tests[i](nativeJSON)) is JSON.stringify(tests[i](JSON))
function (jsonObject) {
        return jsonObject.parse('"a\\u000Gz" ');
    }
PASS tests[i](nativeJSON) threw exception SyntaxError: Unable to parse JSON string.
function (jsonObject) {
        return jsonObject.parse('"a\\u000gz" ');
    }
PASS tests[i](nativeJSON) threw exception SyntaxError: Unable to parse JSON string.
function (jsonObject) {
        return jsonObject.parse('"a\\u00A0z" ');
    }
PASS JSON.stringify(tests[i](nativeJSON)) is JSON.stringify(tests[i](JSON))
function (jsonObject) {
        return jsonObject.parse('"a\\u00a0z" ');
    }
PASS JSON.stringify(tests[i](nativeJSON)) is JSON.stringify(tests[i](JSON))
function (jsonObject) {
        return jsonObject.parse('"a\\u00G0z" ');
    }
PASS tests[i](nativeJSON) threw exception SyntaxError: Unable to parse JSON string.
function (jsonObject) {
        return jsonObject.parse('"a\\u00g0z" ');
    }
PASS tests[i](nativeJSON) threw exception SyntaxError: Unable to parse JSON string.
function (jsonObject) {
        return jsonObject.parse('"a\\u0A00z" ');
    }
PASS JSON.stringify(tests[i](nativeJSON)) is JSON.stringify(tests[i](JSON))
function (jsonObject) {
        return jsonObject.parse('"a\\u0a00z" ');
    }
PASS JSON.stringify(tests[i](nativeJSON)) is JSON.stringify(tests[i](JSON))
function (jsonObject) {
        return jsonObject.parse('"a\\u0G00z" ');
    }
PASS tests[i](nativeJSON) threw exception SyntaxError: Unable to parse JSON string.
function (jsonObject) {
        return jsonObject.parse('"a\\u0g00z" ');
    }
PASS tests[i](nativeJSON) threw exception SyntaxError: Unable to parse JSON string.
function (jsonObject) {
        return jsonObject.parse('"a\\uA000z" ');
    }
PASS JSON.stringify(tests[i](nativeJSON)) is JSON.stringify(tests[i](JSON))
function (jsonObject) {
        return jsonObject.parse('"a\\ua000z" ');
    }
PASS JSON.stringify(tests[i](nativeJSON)) is JSON.stringify(tests[i](JSON))
function (jsonObject) {
        return jsonObject.parse('"a\\uG000z" ');
    }
PASS tests[i](nativeJSON) threw exception SyntaxError: Unable to parse JSON string.
function (jsonObject) {
        return jsonObject.parse('"a\\ug000z" ');
    }
PASS tests[i](nativeJSON) threw exception SyntaxError: Unable to parse JSON string.
function (jsonObject) {
        return jsonObject.parse('00');
    }
PASS tests[i](nativeJSON) threw exception SyntaxError: Unable to parse JSON string.
json2.js did not throw for a test we expect to throw.
function (jsonObject) {
        return jsonObject.parse('01');
    }
PASS tests[i](nativeJSON) threw exception SyntaxError: Unable to parse JSON string.
json2.js did not throw for a test we expect to throw.
function (jsonObject) {
        return jsonObject.parse('0.a');
    }
PASS tests[i](nativeJSON) threw exception SyntaxError: Unable to parse JSON string.
function (jsonObject) {
        return jsonObject.parse('0x0');
    }
PASS tests[i](nativeJSON) threw exception SyntaxError: Unable to parse JSON string.
function (jsonObject) {
        return jsonObject.parse('2e1.3');
    }
PASS tests[i](nativeJSON) threw exception SyntaxError: Unable to parse JSON string.
function (jsonObject) {
        return jsonObject.parse('2e-+10');
    }
PASS tests[i](nativeJSON) threw exception SyntaxError: Unable to parse JSON string.
function (jsonObject) {
        return jsonObject.parse('2e+-10');
    }
PASS tests[i](nativeJSON) threw exception SyntaxError: Unable to parse JSON string.
function (jsonObject) {
        return jsonObject.parse('2e3e4');
    }
PASS tests[i](nativeJSON) threw exception SyntaxError: Unable to parse JSON string.
function (jsonObject) {
        return jsonObject.parse('-01.0');
    }
PASS tests[i](nativeJSON) threw exception SyntaxError: Unable to parse JSON string.
function (jsonObject) {
        return jsonObject.parse('-01');
    }
PASS tests[i](nativeJSON) threw exception SyntaxError: Unable to parse JSON string.
json2.js did not throw for a test we expect to throw.
function (jsonObject) {
        return jsonObject.parse('-01.a');
    }
PASS tests[i](nativeJSON) threw exception SyntaxError: Unable to parse JSON string.
function (jsonObject) {
        return jsonObject.parse('1.e1');
    }
PASS tests[i](nativeJSON) threw exception SyntaxError: Unable to parse JSON string.
json2.js did not throw for a test we expect to throw.
function (jsonObject) {
        return jsonObject.parse('true');
    }
PASS JSON.stringify(tests[i](nativeJSON)) is JSON.stringify(tests[i](JSON))
function (jsonObject) {
        return jsonObject.parse('false');
    }
PASS JSON.stringify(tests[i](nativeJSON)) is JSON.stringify(tests[i](JSON))
function (jsonObject) {
        return jsonObject.parse(JSON.stringify(simpleObject));
    }
PASS JSON.stringify(tests[i](nativeJSON)) is tests[i].expected
function (jsonObject) {
        return jsonObject.parse(JSON.stringify(complexObject));
    }
PASS JSON.stringify(tests[i](nativeJSON)) is JSON.stringify(tests[i](JSON))
function (jsonObject) {
        return jsonObject.parse(JSON.stringify(complexObject));
    }
PASS JSON.stringify(tests[i](nativeJSON)) is tests[i].expected
function (jsonObject) {
        return jsonObject.parse(JSON.stringify(simpleObject,null,100));
    }
PASS JSON.stringify(tests[i](nativeJSON)) is tests[i].expected
function (jsonObject) {
        return jsonObject.parse(JSON.stringify(complexObject,null,100));
    }
PASS JSON.stringify(tests[i](nativeJSON)) is JSON.stringify(tests[i](JSON))
function (jsonObject) {
        return jsonObject.parse(JSON.stringify(complexObject,null,100));
    }
PASS JSON.stringify(tests[i](nativeJSON)) is tests[i].expected
function (jsonObject) {
        return jsonObject.parse(JSON.stringify(simpleObject,null," "));
    }
PASS JSON.stringify(tests[i](nativeJSON)) is tests[i].expected
function (jsonObject) {
        return jsonObject.parse(JSON.stringify(complexObject,null," "));
    }
PASS JSON.stringify(tests[i](nativeJSON)) is JSON.stringify(tests[i](JSON))
function (jsonObject) {
        return jsonObject.parse(JSON.stringify(complexObject,null," "));
    }
PASS JSON.stringify(tests[i](nativeJSON)) is tests[i].expected
function (jsonObject) {
        return jsonObject.parse(JSON.stringify(simpleObject,null,"\t"));
    }
PASS JSON.stringify(tests[i](nativeJSON)) is tests[i].expected
function (jsonObject) {
        return jsonObject.parse(JSON.stringify(complexObject,null,"\t"));
    }
PASS JSON.stringify(tests[i](nativeJSON)) is JSON.stringify(tests[i](JSON))
function (jsonObject) {
        return jsonObject.parse(JSON.stringify(complexObject,null,"\t"));
    }
PASS JSON.stringify(tests[i](nativeJSON)) is tests[i].expected
function (jsonObject) {
        return jsonObject.parse(JSON.stringify(simpleObject,null,"\n"));
    }
PASS JSON.stringify(tests[i](nativeJSON)) is tests[i].expected
function (jsonObject) {
        return jsonObject.parse(JSON.stringify(complexObject,null,"\n"));
    }
PASS JSON.stringify(tests[i](nativeJSON)) is tests[i].expected
function (jsonObject) {
        return jsonObject.parse("true", log);
    }
PASS JSON.stringify(tests[i](nativeJSON)) is JSON.stringify(tests[i](JSON))
function (jsonObject) {
        return jsonObject.parse("false", log);
    }
PASS JSON.stringify(tests[i](nativeJSON)) is JSON.stringify(tests[i](JSON))
function (jsonObject) {
        return jsonObject.parse("null", log);
    }
PASS JSON.stringify(tests[i](nativeJSON)) is JSON.stringify(tests[i](JSON))
function (jsonObject) {
        return jsonObject.parse("1", log);
    }
PASS JSON.stringify(tests[i](nativeJSON)) is JSON.stringify(tests[i](JSON))
function (jsonObject) {
        return jsonObject.parse("1.5", log);
    }
PASS JSON.stringify(tests[i](nativeJSON)) is JSON.stringify(tests[i](JSON))
function (jsonObject) {
        return jsonObject.parse('"a string"', log);
    }
PASS JSON.stringify(tests[i](nativeJSON)) is JSON.stringify(tests[i](JSON))
function (jsonObject) {
        return jsonObject.parse(JSON.stringify(simpleArray), log);
    }
PASS JSON.stringify(tests[i](nativeJSON)) is JSON.stringify(tests[i](JSON))
function (jsonObject) {
        return jsonObject.parse(JSON.stringify(complexArray), log);
    }
PASS JSON.stringify(tests[i](nativeJSON)) is JSON.stringify(tests[i](JSON))
function (jsonObject) {
        return jsonObject.parse(JSON.stringify(simpleObject), log);
    }
PASS JSON.stringify(tests[i](nativeJSON)) is JSON.stringify(tests[i](JSON))
function (jsonObject) {
        return jsonObject.parse(JSON.stringify(complexObject), log);
    }
PASS JSON.stringify(tests[i](nativeJSON)) is JSON.stringify(tests[i](JSON))
function (jsonObject) {
        logOrderString = "";
        return jsonObject.parse("true", logOrder);
    }
PASS JSON.stringify(tests[i](nativeJSON)) is JSON.stringify(tests[i](JSON))
function (jsonObject) {
        logOrderString = "";
        return jsonObject.parse("false", logOrder);
    }
PASS JSON.stringify(tests[i](nativeJSON)) is JSON.stringify(tests[i](JSON))
function (jsonObject) {
        logOrderString = "";
        return jsonObject.parse("null", logOrder);
    }
PASS JSON.stringify(tests[i](nativeJSON)) is JSON.stringify(tests[i](JSON))
function (jsonObject) {
        logOrderString = "";
        return jsonObject.parse("1", logOrder);
    }
PASS JSON.stringify(tests[i](nativeJSON)) is JSON.stringify(tests[i](JSON))
function (jsonObject) {
        logOrderString = "";
        return jsonObject.parse("1.5", logOrder);
    }
PASS JSON.stringify(tests[i](nativeJSON)) is JSON.stringify(tests[i](JSON))
function (jsonObject) {
        logOrderString = "";
        return jsonObject.parse('"a string"', logOrder);
    }
PASS JSON.stringify(tests[i](nativeJSON)) is JSON.stringify(tests[i](JSON))
function (jsonObject) {
        logOrderString = "";
        return jsonObject.parse(JSON.stringify(simpleArray), logOrder);
    }
PASS JSON.stringify(tests[i](nativeJSON)) is JSON.stringify(tests[i](JSON))
function (jsonObject) {
        logOrderString = "";
        return jsonObject.parse(JSON.stringify(complexArray), logOrder);
    }
PASS JSON.stringify(tests[i](nativeJSON)) is JSON.stringify(tests[i](JSON))
function (jsonObject) {
        logOrderString = "";
        return jsonObject.parse(JSON.stringify(simpleObject), logOrder);
    }
PASS JSON.stringify(tests[i](nativeJSON)) is JSON.stringify(tests[i](JSON))
function (jsonObject) {
        logOrderString = "";
        return jsonObject.parse(JSON.stringify(complexObject), logOrder);
    }
PASS JSON.stringify(tests[i](nativeJSON)) is JSON.stringify(tests[i](JSON))
function (jsonObject) {
        logOrderString = "";
        jsonObject.parse("true", logOrder);
        return logOrderString;
    }
PASS JSON.stringify(tests[i](nativeJSON)) is JSON.stringify(tests[i](JSON))
function (jsonObject) {
        logOrderString = "";
        jsonObject.parse("false", logOrder);
        return logOrderString;
    }
PASS JSON.stringify(tests[i](nativeJSON)) is JSON.stringify(tests[i](JSON))
function (jsonObject) {
        logOrderString = "";
        jsonObject.parse("null", logOrder);
        return logOrderString;
    }
PASS JSON.stringify(tests[i](nativeJSON)) is JSON.stringify(tests[i](JSON))
function (jsonObject) {
        logOrderString = "";
        jsonObject.parse("1", logOrder);
        return logOrderString;
    }
PASS JSON.stringify(tests[i](nativeJSON)) is JSON.stringify(tests[i](JSON))
function (jsonObject) {
        logOrderString = "";
        jsonObject.parse("1.5", logOrder);
        return logOrderString;
    }
PASS JSON.stringify(tests[i](nativeJSON)) is JSON.stringify(tests[i](JSON))
function (jsonObject) {
        logOrderString = "";
        jsonObject.parse('"a string"', logOrder);
        return logOrderString;
    }
PASS JSON.stringify(tests[i](nativeJSON)) is JSON.stringify(tests[i](JSON))
function (jsonObject) {
        logOrderString = "";
        jsonObject.parse(JSON.stringify(simpleArray), logOrder);
        return logOrderString;
    }
PASS JSON.stringify(tests[i](nativeJSON)) is JSON.stringify(tests[i](JSON))
function (jsonObject) {
        logOrderString = "";
        jsonObject.parse(JSON.stringify(complexArray), logOrder);
        return logOrderString;
    }
PASS JSON.stringify(tests[i](nativeJSON)) is JSON.stringify(tests[i](JSON))
function (jsonObject) {
        logOrderString = "";
        jsonObject.parse(JSON.stringify(simpleObject), logOrder);
        return logOrderString;
    }
PASS JSON.stringify(tests[i](nativeJSON)) is JSON.stringify(tests[i](JSON))
function (jsonObject) {
        logOrderString = "";
        jsonObject.parse(JSON.stringify(complexObject), logOrder);
        return logOrderString;
    }
PASS JSON.stringify(tests[i](nativeJSON)) is JSON.stringify(tests[i](JSON))
function (jsonObject) {
        callCount = 0;
        logOrderString = "";
        return jsonObject.parse(JSON.stringify(complexArray), throwAfterFifthCall);
    }
PASS tests[i](nativeJSON) threw exception from reviver.
function (jsonObject) {
        callCount = 0;
        logOrderString = "";
        return jsonObject.parse(JSON.stringify(simpleObject), throwAfterFifthCall);
    }
PASS JSON.stringify(tests[i](nativeJSON)) is JSON.stringify(tests[i](JSON))
function (jsonObject) {
        callCount = 0;
        logOrderString = "";
        return jsonObject.parse(JSON.stringify(complexObject), throwAfterFifthCall);
    }
PASS tests[i](nativeJSON) threw exception from reviver.
function (jsonObject) {
        callCount = 0;
        logOrderString = "";
        try { jsonObject.parse(JSON.stringify(complexArray), throwAfterFifthCall); } catch (e) {}
        return logOrderString;
    }
PASS JSON.stringify(tests[i](nativeJSON)) is JSON.stringify(tests[i](JSON))
function (jsonObject) {
        callCount = 0;
        logOrderString = "";
        try { jsonObject.parse(JSON.stringify(simpleObject), throwAfterFifthCall); } catch (e) {}
        return logOrderString;
    }
PASS JSON.stringify(tests[i](nativeJSON)) is JSON.stringify(tests[i](JSON))
function (jsonObject) {
        callCount = 0;
        logOrderString = "";
        try { jsonObject.parse(JSON.stringify(complexObject), throwAfterFifthCall); } catch (e) {}
        return logOrderString;
    }
PASS JSON.stringify(tests[i](nativeJSON)) is JSON.stringify(tests[i](JSON))
function (jsonObject) {
        return jsonObject.parse(JSON.stringify(unicode));
    }
PASS tests[i](nativeJSON) is tests[i].unstringifiedExpected
PASS successfullyParsed is true

TEST COMPLETE

