static ItIt mapLike multiCall(O f, O... args) { int n = l(args); Iterable[] lists = new Iterable[n]; for i to n: { O arg = args[i]; if (arg cast Multi) lists[i] = arg.arguments; else lists[i] = ll(arg); } ret mapI(outerProduct_arrays(lists), args2 -> callF(f, args2)); }