It resolves a bug of LinkedList:
LinkedList's hasNext() and hasPrevious() doesn't check
concurrent-modification.
Thus, if the 2nd last listener is removed, hasNext() simply return
false (and the last listener is ignored) rather than throwing
ConcurrentModificationException.