package org.eclipse.uml2.diagram.sequence.model.edit; import java.util.ArrayList; import java.util.HashSet; import java.util.List; import java.util.ListIterator; public class InsertAfter<T> { private final List<T> myPast = new ArrayList<T>(5); public final ListIterator<T> getAfterThePastPosition(List<T> list) { if (myPast.isEmpty()) { return list.listIterator(); } HashSet<T> notFound = new HashSet<T>(); for (T next : myPast) { if (next == null) { continue; } notFound.add(next); } ListIterator<T> result = list.listIterator(); while (!notFound.isEmpty() && result.hasNext()) { T next = result.next(); notFound.remove(next); } return result; } public final void considerAsPast(T past) { if (past != null) { myPast.add(past); } } }