 					if (stepsRemaining == 0)
 						_prevState = getSessionState(_subject);
 					setSessionState(_subject, diff, false);
+					
+					if (debug)
+					{
+						var newState:Object = getSessionState(_subject);
+						var resultDiff:Object = WeaveAPI.SessionManager.computeDiff(_prevState, newState);
+						trace('resulting diff:', ObjectUtil.toString(resultDiff));
+					}
 				}
 				getCallbackCollection(_subject).resumeCallbacks();
 				

				_savePending = true;
				saveDiff();
			}
		}
		
		private function groupedCallback():void

			// It is ok to save a diff the frame after grouped callbacks are called.
			// If callbacks are triggered again before the next frame, the immediateCallback will set this flag back to true.
			_saveLater = false;
			
			if (debug && (_undoActive || _redoActive))
			{
				var state:Object = getSessionState(_subject);
				var forwardDiff:* = WeaveAPI.SessionManager.computeDiff(_prevState, state);
				trace('grouped diff:', ObjectUtil.toString(forwardDiff));
			}
		}
		
		private function saveDiff(immediately:Boolean = false):void
