if (event instanceof AfterDeleteEvent && entry.isFiring(BeforeDeleteEvent.class)) { entry.scheduleEvent(BeforeDeleteEvent.class, event);
} else if (event instanceof BeforeEvent) { BeforeEvent be = (BeforeEvent) event; if (entry.isFiring(be.getAfter())) { entry.scheduleEvent(be.getAfter(), event);
    void fireObserver(DataEvent event) {        ObserverEntry old = m_firing;        try {            for (Iterator it = m_observers.iterator(); it.hasNext(); ) {                ObserverEntry entry = (ObserverEntry) it.next();                final DataObserver observer = entry.getObserver();                if (entry.isFiring(event)) { continue; }                if (event instanceof AfterSaveEvent                    && entry.isFiring(BeforeSaveEvent.class)) {                    entry.scheduleEvent(BeforeSaveEvent.class, event);                    continue;                }                if (event instanceof AfterDeleteEvent                    && entry.isFiring(BeforeDeleteEvent.class)) {                    entry.scheduleEvent(BeforeDeleteEvent.class, event);                    continue;                }                try {                    entry.setFiring(event);                    m_firing = entry;                    if (s_log.isDebugEnabled()) {                        s_log.debug(event + " " + observer);                    }                    event.invoke(observer);                    DataEvent waiting = entry.clearFiring(event);                    if (waiting != null) { fireObserver(waiting); }                } finally {                    entry.clearFiring(event);                }            }        } finally {            m_firing = old;        }    }