 		
 	}
 }
+
+class ListenerBox
+{
+	public var listener:Function;
+	public var priority:int;
+	
+	public function ListenerBox(listener:Function, priority:int = 0)
+	{
+		this.listener = listener;
+		this.priority = priority;
+	}
+}

				
				//TODO: investigate performance of various approaches
				// Clone listeners array because add/remove may occur during the dispatch.
				for each (var listenerBox:Object in listeners.concat())
				{
					var listener:Function = listenerBox.listener;
					//TODO: Maybe put this conditional outside the loop.

				if (currentTarget is IBubbleEventHandler)
				{
					IBubbleEventHandler(event.currentTarget = currentTarget).onEventBubbled(event);
					break;
				}
			}
		}
