// now also takes a map as single array entry
static A mapMethodLike optParOr(S name, O[] opt, IF0 defaultFunction) {
int n = l(opt);
if (n == 1 && opt[0] instanceof Map) {
Map map = cast opt[0];
ret map.containsKey(name) ? (A) map.get(name) : callF(defaultFunction);
}
if (!even(l(opt))) fail("Odd parameter length");
for (int i = 0; i < l(opt); i += 2)
if (eq(opt[i], name))
ret (A) opt[i+1];
ret callF(defaultFunction);
}