static L cloneTakeFirst(Cl l, int n) { n = min(n, l(l)); L out = emptyList(n); if (n != 0) for (A a : l) { out.add(a); if (l(out) >= n) break; } ret out; } static L cloneTakeFirst(int n, Cl l) { ret cloneTakeFirst(l, n); } static L cloneTakeFirst(L l, int n) { ret l(l) <= n ? l : cloneSubList(l, 0, n); } static L cloneTakeFirst(int n, L l) { ret cloneTakeFirst(l, n); }