UIRepeat.broadcast() has to push the component of the IndexedEvent target to the stack before the actual event is broadcasted on the component and remove it afterwards. This is needed because the current component (and its composite component parent) can be needed while the event is broadcasted (e.g. by LocationMethodExpression.invoke()). See also UIViewRoot._broadcastAll() for this behavior.
See also the discussion from the mailing list: http://markmail.org/message/wapxw76hwyi44jba?q=list:org.apache.myfaces.users