// load arguments
for (int i = 0; i < paramTypes.length; i++) {
m.aload(2); // args array
m.ldc(i);
m.aaload(); // i'th argument
}
// invoke specific arity version
m.invokevirtual(name, "invoke", sig(Object.class, params(Object.class, Object.class, paramTypes.length)));