/** * Initializes a new object. Call after construction is complete. */ private DocumentBasedBasicSet<E, T> init() { // Plumb events through router.addChildListener(container, new ElementListener<E>() { @Override public void onElementAdded(E element) { handleElementAdded(element); } @Override public void onElementRemoved(E element) { handleElementRemoved(element); } }); // Call handleElementAdded() to notify this class of existing data ObservableMutableDocument<? super E, E, ?> document = getDocument(); E curr = DocHelper.getFirstChildElement(document, container); E next; while (curr != null) { next = DocHelper.getNextSiblingElement(document, curr); handleElementAdded(curr); curr = next; } return this; }