 					value = func as Function;
 				}
 			}
-			for each (var extension:Function in _jsonReviverExtensions)
-				value = extension(key, value);
+			for each (var extension:Object in _jsonExtensions)
+				if (extension[JSON_REVIVER] is Function)
+					value = extension[JSON_REVIVER](key, value);
 			return value;
 		}
 		

		private static const JSON_REVIVER:String = "_jsonReviver";
		
		/**
		 * The name of the property used to store a lookup from JSON IDs to values.
		 */
		private static const JSON_LOOKUP:String = "_jsonLookup";

		 * Objects are to be supported.
		 * @param replacer function(key:String, value:*):* ; Replaces an Object with a JSON-serializable representation. 
		 * @param reviver function(key:String, value:*):* ; Revives an Object from its JSON representation.
		 * @param needsReviving function(key:String, value:*):Boolean ; Determines if a value requires reviving in JavaScript once replaced in ActionScript.
		 * 
		 * @example Example JavaScript code (func1 and func2 should be function definitions)
		 * <listing version="3.0">
