static S[] dropFirst(int n, S[] a) { return drop(n, a); } static S[] dropFirst(S[] a) { return drop(1, a); } static O[] dropFirst(O[] a) { return drop(1, a); } static L dropFirst(L l) { return dropFirst(1, l); } static L dropFirst(int n, Iterable i) { ret dropFirst(n, toList(i)); } static L dropFirst(Iterable i) { ret dropFirst(toList(i)); } static L dropFirst(int n, L l) { ret n <= 0 ? l : new ArrayList(l.subList(Math.min(n, l.size()), l.size())); } static L dropFirst(L l, int n) { ret dropFirst(n, l); } static S dropFirst(int n, S s) { ret substring(s, n); } static S dropFirst(S s, int n) { ret substring(s, n); } static S dropFirst(S s) { ret substring(s, 1); }