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: JSON Parse error: Unexpected EOF.
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: JSON Parse error: Unexpected identifier "Infinity".
function (jsonObject){
        return jsonObject.parse('NaN');
    }
PASS tests[i](nativeJSON) threw exception SyntaxError: JSON Parse error: Unexpected identifier "NaN".
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: JSON Parse error: Unexpected identifier "undefined".
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: JSON Parse error: Unexpected token '('.
function (jsonObject){
        return jsonObject.parse('{a}');
    }
PASS tests[i](nativeJSON) threw exception SyntaxError: JSON Parse error: Expected '}'.
function (jsonObject){
        return jsonObject.parse('{a:}');
    }
PASS tests[i](nativeJSON) threw exception SyntaxError: JSON Parse error: Expected '}'.
function (jsonObject){
        return jsonObject.parse('{a:5}');
    }
PASS tests[i](nativeJSON) threw exception SyntaxError: JSON Parse error: Expected '}'.
function (jsonObject){
        return jsonObject.parse('{a:5,}');
    }
PASS tests[i](nativeJSON) threw exception SyntaxError: JSON Parse error: Expected '}'.
function (jsonObject){
        return jsonObject.parse('{"a"}');
    }
PASS tests[i](nativeJSON) threw exception SyntaxError: JSON Parse error: Expected ':' before value in object property definition.
function (jsonObject){
        return jsonObject.parse('{"a":}');
    }
PASS tests[i](nativeJSON) threw exception SyntaxError: JSON Parse error: Unexpected token '}'.
function (jsonObject){
        return jsonObject.parse('{"a":5}');
    }
PASS JSON.stringify(tests[i](nativeJSON)) is JSON.stringify(tests[i](JSON))
function (jsonObject){
        return jsonObject.parse('{"__proto__":5}');
    }
json2.js uses eval and will differ when parsing JSON with __proto__.
PASS JSON.stringify(tests[i](nativeJSON)) is not JSON.stringify(tests[i](JSON))
PASS JSON.stringify(tests[i](nativeJSON)) is tests[i].jsonParseExpected
PASS JSON.stringify(tests[i](JSON)) is tests[i].evalExpected
function (jsonObject){
        return jsonObject.parse('{"a":5,}');
    }
PASS tests[i](nativeJSON) threw exception SyntaxError: JSON Parse error: Property name must be a string literal.
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: JSON Parse error: Property name must be a string literal.
function (jsonObject){
        return jsonObject.parse('{"a":5,"a",}');
    }
PASS tests[i](nativeJSON) threw exception SyntaxError: JSON Parse error: Expected ':'.
function (jsonObject){
        return jsonObject.parse('{"a":(5,"a"),}');
    }
PASS tests[i](nativeJSON) threw exception SyntaxError: JSON Parse error: Unexpected token '('.
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 tests[i](nativeJSON) threw exception SyntaxError: JSON Parse error: Unexpected comma at the end of array expression.
json2.js did not throw for a test we expect to throw.
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: JSON Parse error: Unexpected token ','.
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: JSON Parse error: Unexpected token ','.
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: JSON Parse error: Unterminated string.
function (jsonObject){
        return jsonObject.parse('"a\\z"');
    }
PASS tests[i](nativeJSON) threw exception SyntaxError: JSON Parse error: Invalid escape character z.
function (jsonObject){
        return jsonObject.parse('"a\\\z"');
    }
PASS tests[i](nativeJSON) threw exception SyntaxError: JSON Parse error: Invalid escape character z.
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 tests[i](nativeJSON) threw exception SyntaxError: JSON Parse error: Unterminated string.
json2.js did not throw for a test we expect to throw.
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: JSON Parse error: Unterminated 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: JSON Parse error: Unterminated 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: JSON Parse error: Unterminated 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: JSON Parse error: Unterminated 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: JSON Parse error: "\uz"  " is not a valid unicode escape.
function (jsonObject){
        return jsonObject.parse('"a\\u0z"    ');
    }
PASS tests[i](nativeJSON) threw exception SyntaxError: JSON Parse error: "\u0z" " is not a valid unicode escape.
function (jsonObject){
        return jsonObject.parse('"a\\u00z"   ');
    }
PASS tests[i](nativeJSON) threw exception SyntaxError: JSON Parse error: "\u00z"" is not a valid unicode escape.
function (jsonObject){
        return jsonObject.parse('"a\\u000z"  ');
    }
PASS tests[i](nativeJSON) threw exception SyntaxError: JSON Parse error: "\u000z" is not a valid unicode escape.
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: JSON Parse error: "\u000G" is not a valid unicode escape.
function (jsonObject){
        return jsonObject.parse('"a\\u000gz" ');
    }
PASS tests[i](nativeJSON) threw exception SyntaxError: JSON Parse error: "\u000g" is not a valid unicode escape.
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: JSON Parse error: "\u00G0" is not a valid unicode escape.
function (jsonObject){
        return jsonObject.parse('"a\\u00g0z" ');
    }
PASS tests[i](nativeJSON) threw exception SyntaxError: JSON Parse error: "\u00g0" is not a valid unicode escape.
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: JSON Parse error: "\u0G00" is not a valid unicode escape.
function (jsonObject){
        return jsonObject.parse('"a\\u0g00z" ');
    }
PASS tests[i](nativeJSON) threw exception SyntaxError: JSON Parse error: "\u0g00" is not a valid unicode escape.
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: JSON Parse error: "\uG000" is not a valid unicode escape.
function (jsonObject){
        return jsonObject.parse('"a\\ug000z" ');
    }
PASS tests[i](nativeJSON) threw exception SyntaxError: JSON Parse error: "\ug000" is not a valid unicode escape.
function (jsonObject){
        return jsonObject.parse('00');
    }
PASS tests[i](nativeJSON) threw exception SyntaxError: JSON Parse error: 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: JSON Parse error: 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: JSON Parse error: Invalid digits after decimal point.
function (jsonObject){
        return jsonObject.parse('0x0');
    }
PASS tests[i](nativeJSON) threw exception SyntaxError: JSON Parse error: Unable to parse JSON string.
function (jsonObject){
        return jsonObject.parse('2e1.3');
    }
PASS tests[i](nativeJSON) threw exception SyntaxError: JSON Parse error: Unable to parse JSON string.
function (jsonObject){
        return jsonObject.parse('2e-+10');
    }
PASS tests[i](nativeJSON) threw exception SyntaxError: JSON Parse error: Exponent symbols should be followed by an optional '+' or '-' and then by at least one number.
function (jsonObject){
        return jsonObject.parse('2e+-10');
    }
PASS tests[i](nativeJSON) threw exception SyntaxError: JSON Parse error: Exponent symbols should be followed by an optional '+' or '-' and then by at least one number.
function (jsonObject){
        return jsonObject.parse('2e3e4');
    }
PASS tests[i](nativeJSON) threw exception SyntaxError: JSON Parse error: Unable to parse JSON string.
function (jsonObject){
        return jsonObject.parse('-01.0');
    }
PASS tests[i](nativeJSON) threw exception SyntaxError: JSON Parse error: Unable to parse JSON string.
function (jsonObject){
        return jsonObject.parse('-01');
    }
PASS tests[i](nativeJSON) threw exception SyntaxError: JSON Parse error: 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: JSON Parse error: Invalid digits after decimal point.
function (jsonObject){
        return jsonObject.parse('1.e1');
    }
PASS tests[i](nativeJSON) threw exception SyntaxError: JSON Parse error: Invalid digits after decimal point.
json2.js did not throw for a test we expect to throw.
function (jsonObject){
        return jsonObject.parse('{/* block comments are not allowed */}');
    }
PASS tests[i](nativeJSON) threw exception SyntaxError: JSON Parse error: Unrecognized token '/'.
function (jsonObject){
        return jsonObject.parse('{// line comments are not allowed \n}');
    }
PASS tests[i](nativeJSON) threw exception SyntaxError: JSON Parse error: Unrecognized token '/'.
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){
        return jsonObject.parse('{"__proto__":{"a":5}}', log);
    }
json2.js uses eval and will differ when parsing JSON with __proto__.
PASS JSON.stringify(tests[i](nativeJSON)) is not JSON.stringify(tests[i](JSON))
PASS JSON.stringify(tests[i](nativeJSON)) is tests[i].jsonParseExpected
PASS JSON.stringify(tests[i](JSON)) is tests[i].evalExpected
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

