 		public function dispose():void
 		{
 			// remove all callbacks
+			if (debug)
+				_oldEntries = _oldEntries ? _oldEntries.concat(_callbackEntries) : _callbackEntries.concat();
 			_callbackEntries.length = 0;
 			_wasDisposed = true;
 			

						var allContexts:Array = triggerEntry.context as Array;
						// remove the contexts that have been disposed of.
						for (var i:int = 0; i < allContexts.length; i++)
						{
							var context:Object = allContexts[i];
							// if there is a null context, it means the callback should never be removed.
							if (context != null && WeaveAPI.SessionManager.objectWasDisposed(context))
								allContexts.splice(i--, 1);
						}
						// if there are no more relevant contexts for this callback, don't run it.
						if (allContexts.length == 0)
						{

		public static var debug:Boolean = false;
		internal var _linkableObject:ILinkableObject; // for debugging only... will be set when debug==true
		private var _lastTriggerStackTrace:String; // for debugging only... will be set when debug==true
		private var _oldEntries:Array;

		/**
		 * If specified, the preCallback function will be called immediately before running each callback.
