 			// 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

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

					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();
				
