static  L takeFirst_clone(L l, int n) {
  ret cloneSubList(l, 0, n);
}
static  L takeFirst_clone(int n, L l) {
  ret takeFirst_clone(l, n);
}
static  L takeFirst_clone(int n, Iterable i) {
  L l = new L;
  Iterator it = i.iterator();
  repeat n { if (it.hasNext()) l.add(it.next()); else break; }
  ret l;
}