static A optPar(ThreadLocal tl, A defaultValue) { A a = tl.get(); if (a != null) { tl.set(null); ret a; } ret defaultValue; } static A optPar(ThreadLocal tl) { ret optPar(tl, null); } sO optPar(O[] params, S name) { ret optParam(params, name); } sO mapMethodLike optPar(S name, O[] params) { ret optParam(params, name); } sO mapMethodLike optPar(S name, Map params) { ret optParam(name, params); } static A optPar(O[] params, S name, A defaultValue) { ret optParam(params, name, defaultValue); } static A optPar(S name, O[] params, A defaultValue) { ret optParam(params, name, defaultValue); }