// now also takes a map as single array entry static A optPar_ignoreOddLength(O[] opt, S name, A defaultValue) { int n = l(opt); if (n == 1 && opt[0] instanceof Map) { Map map = cast opt[0]; ret map.containsKey(name) ? (A) map.get(name) : defaultValue; } for (int i = 0; i+1 < l(opt); i += 2) if (eq(opt[i], name)) ret (A) opt[i+1]; ret defaultValue; } sO optPar_ignoreOddLength(O[] opt, S name) { ret optPar_ignoreOddLength(opt, name, null); } sO mapMethodLike optPar_ignoreOddLength(S name, O[] params) { ret optPar_ignoreOddLength(params, name); }