@Override
        public E next() {
            if (listIterator.hasNext()) {
                canRemove = true;
                return listIterator.next();
            }
            if (mapIterator.hasNext()) {
                canRemove = true;
                currentList = mapIterator.next();
                listIterator = currentList.iterator();
                return listIterator.next();
            }
            throw new NoSuchElementException("Iteration has no more elements");
        }