} else {
                ++retained;
                if (begin >= 0) {
                    fireEvent(ListDataEvent.INTERVAL_REMOVED, begin, index - 1);
                    index = begin; //this range removed, the index is reset to begin