static <A> L<A> moveItemsFirst(Cl<A> itemsToMove, Cl<A> l) { if (empty(itemsToMove) || empty(l)) ret asList(l); itemsToMove = asSet(itemsToMove); var set = asSet(l); L<A> out = emptyList(l(l)); for (a : itemsToMove) if (set.contains(a)) out.add(a); for (A a : l) if (!itemsToMove.contains(a)) out.add(a); ret out; }