 	public var triggered:Boolean = false;
 	
 	/**
+	 * If true, the callback was triggered again from another grouped callback.
+	 */
+	public var triggeredAgain:Boolean = false;
+	
+	/**
 	 * Marks the entry to be handled later (unless already triggered this frame).
 	 * This also takes care of preventing recursion.
 	 */
 	public function trigger():void
 	{
-		if (!triggered)
-		{
+		// if handling recursive callbacks, call now
+		if (_handlingRecursiveGroupedCallbacks)
+		{
+			handleGroupedCallback();
+		}
+		else if (!triggered)
+		{
+			// not previously triggered
 			_triggeredEntries.push(this);
 			triggered = true;
 		}
+		else if (_handlingGroupedCallbacks)
+		{
+			// triggered recursively - call later
+			triggeredAgain = true;
+		}
 	}
 	
 	/**

	 * This is a stack trace from when the callback was removed.
	 */
	public var removeCallback_stackTrace:String = null;
}

/**

					{
						// Remove the callback by setting the function pointer to null.
						// This is done instead of removing the entry because we may be looping over the _callbackEntries Array right now.
						entry.dispose();
					}
				}
			}
