String[] constructorTypes = consTypes.toArray(new String[consTypes.size()]);
MethodNode cons = new MethodNode(ACC_PUBLIC, CONSTRUCTOR_NAME, nameCache.toMethodDescriptor("void",
constructorTypes), null, null);
InstructionBuilder builder = newBuilder(cons);
// First three arguments go to the super-class
builder.loadThis();
builder.loadArgument(0);
builder.loadArgument(1);
builder.loadArgument(2);
builder.invokeConstructor(AbstractMethodInvocation.class, Object.class, InstanceContext.class,
MethodAdvice[].class);
for (int i = 0; i < description.argumentTypes.length; i++)
{
String name = "p" + i;
String type = description.argumentTypes[i];
builder.loadThis();
builder.loadArgument(3 + i);
builder.putField(invocationClassName, name, type);
}
builder.returnResult();
invocationClassNode.methods.add(cons);
return constructorTypes;
}