 					"    }",
 					"    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) {",

			if (!_objectID)
				_objectID = getExternalObjectID();
			return 'document.getElementById("' + _objectID + '")';
		}
		
		/**
		 * Generates a line of JavaScript which intializes a variable equal to this Flash object using document.getElementById().
		 * @param variableName The variable name, which must be a valid JavaScript identifier.
		 */
		private static function JS_var_this(variableName:String):String
		{
			if (!_objectID)
				_objectID = getExternalObjectID(variableName);
			return 'var ' + variableName + ' = ' + JS_this + ';';
		}
		
		/**

		 */
		private static function getExternalObjectID(desiredId:String = "flash"):String
		{
			if (!_objectID)
				_objectID = ExternalInterface.objectID;
			if (!_objectID) // if we don't know our ID
			{
				// use addCallback() to add a property to the flash component that will allow us to be found 
				ExternalInterface.addCallback(JSON_SUFFIX, trace);
				// find the element with the unique property name and get its ID (or set the ID if it doesn't have one)
				_objectID = ExternalInterface.call(
					"function(uid, newId){\
						while (document.getElementById(newId))\
							newId += '_';\
