static L takeFirst(L l, int n) { ret l(l) <= n ? l : newSubListOrSame(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 S takeFirst(S s, int n) { ret substring(s, 0, n); } static CharSequence takeFirst(int n, CharSequence s) { ret subCharSequence(s, 0, n); } static L takeFirst(int n, Iterator it) { if (it == null) null; new L l; repeat n { if (it.hasNext()) l.add(it.next()); else break; } ret l; } static L takeFirst(int n, Iterable i) { if (i == null) null; ret i == null ?: takeFirst(n, i.iterator()); } static L takeFirst(int n, ItIt i) { ret takeFirst(n, (Iterator) i); } static int[] takeFirst(int n, int[] a) { ret takeFirstOfIntArray(n, a); } static short[] takeFirst(int n, short[] a) { ret takeFirstOfShortArray(n, a); } static byte[] takeFirst(int n, byte[] a) { ret takeFirstOfByteArray(n, a); } static byte[] takeFirst(byte[] a, int n) { ret takeFirstOfByteArray(n, a); } static double[] takeFirst(int n, double[] a) { ret takeFirstOfDoubleArray(n, a); } static double[] takeFirst(double[] a, int n) { ret takeFirstOfDoubleArray(n, a); } static Map takeFirst(int n, Map map) { ret takeFirstFromMap(n, map); }