/* */
/* */ private static void invokeSwitchHelper(CodeEmitter e, List members, int arg)
/* */ {
/* 165 */ List info = CollectionUtils.transform(members, MethodInfoTransformer.getInstance());
/* 166 */ Label illegalArg = e.make_label();
/* 167 */ Block block = e.begin_block();
/* 168 */ e.process_switch(getIntRange(info.size()), new ProcessSwitchCallback(info, e, arg, illegalArg) {
/* */ public void processCase(int key, Label end) {
/* 170 */ MethodInfo method = (MethodInfo)this.val$info.get(key);
/* 171 */ Type[] types = method.getSignature().getArgumentTypes();
/* 172 */ for (int i = 0; i < types.length; i++) {
/* 173 */ this.val$e.load_arg(this.val$arg);
/* 174 */ this.val$e.aaload(i);
/* 175 */ this.val$e.unbox(types[i]);
/* */ }
/* 177 */ this.val$e.invoke(method);
/* 178 */ if (!TypeUtils.isConstructor(method)) {
/* 179 */ this.val$e.box(method.getSignature().getReturnType());
/* */ }
/* 181 */ this.val$e.return_value();
/* */ }
/* */ public void processDefault() {
/* 184 */ this.val$e.goTo(this.val$illegalArg);
/* */ }
/* */ });
/* 187 */ block.end();
/* 188 */ EmitUtils.wrap_throwable(block, INVOCATION_TARGET_EXCEPTION);
/* 189 */ e.mark(illegalArg);
/* 190 */ e.throw_exception(ILLEGAL_ARGUMENT_EXCEPTION, "Cannot find matching method/constructor");
/* */ }