Bytecode b = new Bytecode(file.getConstPool());
// our stack looks like Constructor,params
// we need Constructor, params, Constructor
b.add(Opcode.SWAP);
b.add(Opcode.DUP_X1);
b.addInvokestatic(constructorReflectionLocation, "fakeCallRequired", "(Ljava/lang/reflect/Constructor;)Z");
b.add(Opcode.IFEQ);
JumpMarker performRealCall = JumpUtils.addJumpInstruction(b);
// now perform the fake call
b.addInvokestatic(constructorReflectionLocation, METHOD_NAME, REPLACED_METHOD_DESCRIPTOR);
b.add(Opcode.GOTO);