function (jsonObject){
        return jsonObject.parse();
    }
PASS tests[i](nativeJSON) threw exception SyntaxError: JSON Parse error: Unexpected identifier "undefined".
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('\\')
    }
PASS tests[i](nativeJSON) threw exception SyntaxError: JSON Parse error: Unrecognized token '\'.
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

