@Override
public void broadcast(FacesEvent event) throws AbortProcessingException {
if (event instanceof FacesEventWrapper) {
FacesContext facesContext = FacesContext.getCurrentInstance();
FacesEvent originalEvent = ((FacesEventWrapper) event).getWrappedFacesEvent();
TreePath eventPathIndex = ((FacesEventWrapper) event).getRowIndex();
TreePath currentPathIndex = getRowIndex();
setRowIndex(facesContext, eventPathIndex);
try {
originalEvent.getComponent().broadcast(originalEvent);
} finally {
setRowIndex(facesContext, currentPathIndex);
}
} else {
super.broadcast(event);