@Override
public void visitMethodInsn(int opcode, String owner, String name, String desc, boolean itf) {
mv.visitMethodInsn(opcode, owner, name, desc, itf);
if (fieldAccessNode == null || !METHOD_IDENTIFIER.equals(new MethodIdentifier(name, desc, null))) {
return;
}
mv.visitVarInsn(Opcodes.ALOAD, 0);
mv.visitFieldInsn(Opcodes.GETFIELD, className, TYPE_CHECKER_NAME, TYPE_CHECKER_DESC);
mv.visitVarInsn(Opcodes.ALOAD, 0);
fieldAccessNode.accept(mv);
for (AbstractInsnNode instruction : instructionsAfterFieldAccess) {
instruction.accept(mv);
}
mv.visitVarInsn(Opcodes.ALOAD, 2);
mv.visitMethodInsn(Opcodes.INVOKEVIRTUAL, TYPE_CHECKER_CLASS, IS_MISSING, TYPECHECK_METHOD_DESC, false);
lastAddedLabel = new Label();
mv.visitJumpInsn(Opcodes.IFEQ, lastAddedLabel);
mv.visitInsn(Opcodes.RETURN);
mv.visitLabel(lastAddedLabel);
}