public void intervalRemoved(ListDataEvent e) {
                if (e.getIndex1() < index.get()) {
                    index.getAndAdd(e.getIndex0() - e.getIndex1());
                } else if (e.getIndex0() <= index.get()) {
                    list.removeListSelectionListener(selectionListener);
                    final ListDataListener me = this;
                    asyncRun(new P0() {
                        public void e() {
                            listModel.removeListDataListener(me);
                        }
                    });
                }
            }