package Ġcom . mars . infra . router . plugin . visitor Ċ Ċ import Ġorg . object web . asm . Label Ċ import Ġorg . object web . asm . Method Visitor Ċ import Ġorg . object web . asm . Op codes ĊĊ Ċ class ĠService Impl Method Visitor ( ĊĠĠĠ Ġapi : ĠInt , ĊĠĠĠ Ġmethod Visitor : ĠMethod Visitor , ĊĠĠĠ Ġprivate Ġval Ġservice Impl Set : ĠSet < String >? Ċ ) Ġ: ĠMethod Visitor ( api , Ġmethod Visitor ) Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġvisit Insn ( opcode : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( opcode Ġ>= ĠOp codes . I RETURN Ġ&& Ġopcode Ġ<= ĠOp codes . RETURN ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġmv . visit Code () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġmv . visit Var Insn ( Op codes . AL O AD , Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmv . visit Method Insn ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠOp codes . IN VOKE VIRTUAL , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" java / lang / Class ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" getName ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" () Ljava / lang / String ;", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmv . visit L dc Insn (" com . mars . infra . router . I Login Service ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmv . visit Method Insn ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠOp codes . IN VOKE VIRTUAL , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" java / lang / String ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" equals ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"( Ljava / lang / Object ;) Z ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlabel 0 Ġ= ĠLabel () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmv . visit Jump Insn ( Op codes . IF EQ , Ġlabel 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmv . visit Type Insn ( Op codes . NEW , Ġ" com / mars / infra / router / Login ServiceImpl ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmv . visit Insn ( Op codes . DUP ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmv . visit Method Insn ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠOp codes . INV OK ES PE CIAL , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" com / mars / infra / router / Login ServiceImpl ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"< init >", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" () V ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmv . visit Var Insn ( Op codes . AST ORE , Ġ 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmv . visit Var Insn ( Op codes . AL O AD , Ġ 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmv . visit Insn ( Op codes . ARE T URN ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġmv . visit Label ( label 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmv . visit Var Insn ( Op codes . AL O AD , Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmv . visit Method Insn ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠOp codes . IN VOKE VIRTUAL , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" java / lang / Class ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" getName ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" () Ljava / lang / String ;", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmv . visit L dc Insn (" com . mars . infra . router . IF ake Service ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmv . visit Method Insn ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠOp codes . IN VOKE VIRTUAL , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" java / lang / String ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" equals ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"( Ljava / lang / Object ;) Z ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlabel 1 Ġ= ĠLabel () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmv . visit Jump Insn ( Op codes . IF EQ , Ġlabel 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmv . visit Type Insn ( Op codes . NEW , Ġ" com / mars / infra / router / Fake ServiceImpl ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmv . visit Insn ( Op codes . DUP ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmv . visit Method Insn ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠOp codes . INV OK ES PE CIAL , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" com / mars / infra / router / Fake ServiceImpl ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"< init >", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" () V ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmv . visit Var Insn ( Op codes . AST ORE , Ġ 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmv . visit Var Insn ( Op codes . AL O AD , Ġ 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmv . visit Insn ( Op codes . ARE T URN ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmv . visit Label ( label 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmv . visit Insn ( Op codes . AC ON ST _ NULL ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmv . visit Insn ( Op codes . ARE T URN ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmv . visit Max s ( 2 , Ġ 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmv . visit End () ĊĊĊ Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġmv . visit Code () Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġmv . visit Var Insn ( Op codes . AL O AD , Ġ 1 ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġmv . visit L dc Insn (" service Class ") Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġmv . visit Method Insn ( Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠOp codes . IN VOKE STATIC , Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" kotlin / jvm / internal / Intr insics ", Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" checkNotNull Parameter ", Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"( Ljava / lang / Object ; Ljava / lang / String ;) V ", Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfalse Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġmv . visit Var Insn ( Op codes . AL O AD , Ġ 1 ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġmv . visit Var Insn ( Op codes . AST ORE , Ġ 2 ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġmv . visit Var Insn ( Op codes . AL O AD , Ġ 2 ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġmv . visit L dc Insn ( Type . getType (" L com / mars / infra / router / I Login Service ; ")) Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġmv . visit Method Insn ( Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠOp codes . IN VOKE STATIC , Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" kotlin / jvm / internal / Intr insics ", Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" are Equal ", Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"( Ljava / lang / Object ; Ljava / lang / Object ;) Z ", Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfalse Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlabel 0 Ġ= ĠLabel () Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġmv . visit Jump Insn ( Op codes . IF EQ , Ġlabel 0 ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġmv . visit Type Insn ( Op codes . NEW , Ġ" com / mars / infra / router / Login ServiceImpl ") Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġmv . visit Insn ( Op codes . DUP ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġmv . visit Method Insn ( Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠOp codes . INV OK ES PE CIAL , Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" com / mars / infra / router / Login ServiceImpl ", Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"< init >", Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" () V ", Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfalse Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġmv . visit Var Insn ( Op codes . AST ORE , Ġ 3 ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġmv . visit Var Insn ( Op codes . AL O AD , Ġ 3 ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġmv . visit Type Insn ( Op codes . CHECK CAST , Ġ" java / lang / Object ") Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlabel 1 Ġ= ĠLabel () Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġmv . visit Jump Insn ( Op codes . GOTO , Ġlabel 1 ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġmv . visit Label ( label 0 ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġmv . visit Var Insn ( Op codes . AL O AD , Ġ 2 ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġmv . visit L dc Insn ( Type . getType (" L com / mars / infra / router / IF ake Service ; ")) Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġmv . visit Method Insn ( Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠOp codes . IN VOKE STATIC , Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" kotlin / jvm / internal / Intr insics ", Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" are Equal ", Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"( Ljava / lang / Object ; Ljava / lang / Object ;) Z ", Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfalse Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlabel 2 Ġ= ĠLabel () Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġmv . visit Jump Insn ( Op codes . IF EQ , Ġlabel 2 ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġmv . visit Type Insn ( Op codes . NEW , Ġ" com / mars / infra / router / Fake ServiceImpl ") Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġmv . visit Insn ( Op codes . DUP ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġmv . visit Method Insn ( Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠOp codes . INV OK ES PE CIAL , Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" com / mars / infra / router / Fake ServiceImpl ", Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"< init >", Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" () V ", Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfalse Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġmv . visit Var Insn ( Op codes . AST ORE , Ġ 3 ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġmv . visit Var Insn ( Op codes . AL O AD , Ġ 3 ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġmv . visit Type Insn ( Op codes . CHECK CAST , Ġ" java / lang / Object ") Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġmv . visit Jump Insn ( Op codes . GOTO , Ġlabel 1 ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġmv . visit Label ( label 2 ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġmv . visit Insn ( Op codes . AC ON ST _ NULL ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġmv . visit Label ( label 1 ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġmv . visit Insn ( Op codes . ARE T URN ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġmv . visit Max s ( 2 , Ġ 4 ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġmv . visit End () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġsuper . visit Insn ( opcode ) ĊĠĠĠ Ġ} Ċ }