MethodVisitor(api, next) { override fun visitCode() { super.visitCode() visitVarInsn(Opcodes.ALOAD, viewVarIndex) // View 객체 가져오기 visitMethodInsn( Opcodes.INVOKEVIRTUAL, // 메소드 실행 "android/view/View", // View 의 "getTag", // getTag 메소드를 "()Ljava/lang/Object;", // parameter 는 없고, 반환값은 Object (Stack 에 푸시) false ) … visitMethodInsn( Opcodes.INVOKESTATIC, // static 메소드 실행 "android/util/Log", // Log 의 "v", // v 메소드를 "(Ljava/lang/String;Ljava/lang/String;)I", // parameter 는 String 2개, 반환값은 Int (Stack 에 푸시) false ) visitInsn(Opcodes.POP) // Stack 에서 제거 } } INVOKEVIRTUAL … INVOKESTATIC POP ALOAD 1