 			if (method == null)
 				throw new Error('No method with id="' + methodId + '"');
 			
+			// json to object
 			var params:Array;
 			if (json)
 				params = json.parse(paramsJson, _jsonReviver);

				<![CDATA[
					var flash = this;
				
					var replace, revive;
					if (useJson)
					{
						replace = function(value) { return JSON.stringify(value, flash[JSON_REPLACER]); };
						revive = function(value) { return JSON.parse(value, flash[JSON_REVIVER]); };
					}
					else
					{
						var mapReplace = function(value){ return flash[JSON_REPLACER]('', value); };
						var mapRevive = function(value){ return flash[JSON_REVIVER]('', value); };
						replace = function(value) { return Array.isArray(value) ? value.map(mapReplace) : mapReplace(value); };
						revive = function(value) { return Array.isArray(value) ? value.map(mapRevive) : mapRevive(value); };
					}
				
					var functionCounter = 0;

		 * Extensions to _jsonReplacer/_jsonReviver.
		 */
		private static const _jsonExtensions:Array = [];
		
		/**
		 * The name of a JavaScript property of this flash instance which contains an Array of JSON replacer/reviver extensions.
		 * Each object in the Array can contain "replacer" and "reviver" properties containing the extension functions.
		 */
		public static const JSON_EXTENSIONS:String = "_jsonExtensions";
		
		/**
		 * Alias for ExternalInterface.available
