static L flattenList(L a) {
  new L l;
  for (O x : a)
    if (x instanceof L)
      l.addAll(flattenList((L) x));
    else
      l.add(x);
  ret l;
}