static L takeFirst(L l, int n) { return newSubList(l, 0, n); } static L takeFirst(int n, L l) { ret takeFirst(l, n); } static S takeFirst(int n, S s) { ret substring(s, 0, n); } static L takeFirst(int n, Iterable i) { L l = new L; repeat n { if (i.hasNext()) l.add(i.next()); else break; } ret l; }