public void notify(StateVariable stateVar) { SubscriberList subList = getSubscriberList(); int subListCnt; Subscriber subs[]; // Remove expired subscribers. subListCnt = subList.size(); subs = new Subscriber[subListCnt]; for (int n = 0; n < subListCnt; n++) subs[n] = subList.getSubscriber(n); for (int n = 0; n < subListCnt; n++) { Subscriber sub = subs[n]; if (sub == null) continue; if (sub.isExpired() == true) removeSubscriber(sub); } // Notify to subscribers. subListCnt = subList.size(); subs = new Subscriber[subListCnt]; for (int n = 0; n < subListCnt; n++) subs[n] = subList.getSubscriber(n); for (int n = 0; n < subListCnt; n++) { Subscriber sub = subs[n]; if (sub == null) continue; if (notify(sub, stateVar) == false) { /* Don't remove for NMPR specification. removeSubscriber(sub); */ } } }