 					"    }",
 					"    if (value === undefined || (typeof value === 'number' && !isFinite(value)))",
 					"        return value + JSON_SUFFIX;",
-					"    return Array.isArray(value) ? [].concat(value) : value;",
+					"    return Array.isArray(value) && !(value instanceof Array) ? [].concat(value) : value;",
 					"};",
 					
 					"flash[JSON_REVIVER] = function(key, value) {",

			// one-time initialization attempt
			initialized = true;
			
			for each (var symbol:* in [undefined, NaN, Infinity, -Infinity])
				_jsonLookup[symbol + JSON_SUFFIX] = symbol;
			

						{
							// put a variable declaration at the beginning of the code
							var jsValue:String;
							if (value === null || value === undefined || value is Number || value is Boolean)
								jsValue = String(value);
							else if (value is Function)
								jsValue = 'this.' + JSON_REVIVER + '("", ' + json.stringify(value, _jsonReplacer) + ')';
							else if (typeof value === 'object')
							{
								_needsReviving = false;
								jsValue = json.stringify(value, _jsonReplacer);
								if (_needsReviving)
									jsValue = 'JSON.parse(' + json.stringify(jsValue) + ', this.' + JSON_REVIVER + ')';
							}
							else
								jsValue = json.stringify(value);
							
