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