 					"var flash = this;",
 					"var functionCounter = 0;",
 					"var lookup = flash[JSON_LOOKUP] = {};",
+					"var extensions = flash[JSON_EXTENSIONS] = [];",
 					"var symbols = [NaN, Infinity, -Infinity];",
 					"for (var i in symbols)",
 					"    lookup[symbols[i] + JSON_SUFFIX] = symbols[i];",

			if (value is String)
			{
				if (_jsonLookup.hasOwnProperty(value))
					return _jsonLookup[value];
				// ID -> Function
				if ((value as String).substr(0, JSON_FUNCTION_PREFIX.length) == JSON_FUNCTION_PREFIX)
				{
					var func:Function = function():*{
						return exec(
							{
								"JSON_REVIVER": JSON_REVIVER,
								"id": value,
								"args": arguments,
								"catch": false
							},

		private static const JSON_CALL:String = "_jsonCall";
		
		/**
		 * 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";
		
		/**
		 * Used as the second parameter to JSON.stringify
		 */
		private static const JSON_REPLACER:String = "_jsonReplacer";
