private void fireObserver(int method, boolean errorOnSave) { if (m_count[method] == 0) { m_fired[method] = new BitSet(m_observers.size()); }  m_count[method]++;
void fireObserver(DataEvent event, boolean errorOnSave) {
    private void fireObserver(int method, boolean errorOnSave) {        if (m_count[method] == 0) {            m_fired[method] = new BitSet(m_observers.size());        }        m_count[method]++;        ObserverEntry old = m_firing;        try {            for (Iterator it = m_observers.iterator(); it.hasNext(); ) {                ObserverEntry entry = (ObserverEntry) it.next();                DataObserver observer = entry.getObserver();                int index = entry.getIndex();                if (m_fired[method].get(index)) {                    if (errorOnSave) {                        throw new PersistenceException(                            "Loop detected while firing a DataObserver. " +                            "This probably resulted from calling the save " +                            "method of a data object from within a " +                            "beforeSave observer registered on that " +                            "same data object, or the analogous situation " +                            "with delete and beforeDelete/afterDelete."                            );                    }                } else {                    m_fired[method].set(index);                    m_firing = entry;                    callObserverMethod(observer, method);                }            }        } finally {            m_count[method]--;            m_firing = old;        }        if (m_count[method] == 0) {            m_fired[method] = null;        }    }