/* Ċ Ġ* ĠCopyright Ġ 2 0 1 0 - 2 0 1 5 ĠJetBrains Ġs . r . o . Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ Ċ package Ġorg . jetbrains . kotlin . codegen . inline Ċ Ċ import Ġorg . jetbrains . org . object web . asm . tree . Field Insn Node Ċ import Ġjava . util .* Ċ Ċ interface ĠTransformation Info Ġ{ ĊĊĠĠĠ Ġval Ġold ClassName : ĠString ĊĊĠĠĠ Ġval Ġnew ClassName : ĠString ĊĊĠĠĠ Ġfun Ġshould Re generate ( same Module : ĠBoolean ): ĠBoolean ĊĊĠĠĠ Ġfun Ġcan Remove After Transformation (): ĠBoolean ĊĊĠĠĠ Ġfun Ġcreate Transformer ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġin lining Context : ĠIn lining Context , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsame Module : ĠBoolean ĊĠĠĠ Ġ): ĠObject Transformer < *> Ċ } Ċ Ċ class ĠWhen Mapping Transformation Info ( ĊĠĠĠĠĠĠĠ Ġoverride Ġval Ġold ClassName : ĠString , ĊĠĠĠĠĠĠĠ Ġval Ġname Generator : ĠName Generator , ĊĠĠĠĠĠĠĠ Ġval Ġalready Re generated : ĠBoolean , ĊĠĠĠĠĠĠĠ Ġval Ġfield Node : ĠField Insn Node Ċ ) Ġ: ĠTransformation Info Ġ{ ĊĊĠĠĠ Ġoverride Ġval Ġnew ClassName Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ Ġname Generator . gen When ClassName Prefix () Ġ+ ĠTRANS FOR MED _ WHEN _ MAPPING _ MARKER Ġ+ Ġold ClassName . substring After Last ("/ "). substring After Last ( TRANS FOR MED _ WHEN _ MAPPING _ MARKER ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġshould Re generate ( same Module : ĠBoolean ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ! already Re generated Ġ&& Ġ! same Module ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġcan Remove After Transformation (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġcreate Transformer ( in lining Context : ĠIn lining Context , Ġsame Module : ĠBoolean ): ĠObject Transformer < *> Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠWhen Mapping Transformer ( this , Ġin lining Context ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠTRANS FOR MED _ WHEN _ MAPPING _ MARKER Ġ= Ġ"\ $ wm $" ĊĠĠĠ Ġ} Ċ } Ċ Ċ class ĠAn onymous Object Transformation Info Ġinternal Ġconstructor ( ĊĠĠĠĠĠĠĠ Ġoverride Ġval Ġold ClassName : ĠString , ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġneed Re ification : ĠBoolean , ĊĠĠĠĠĠĠĠ Ġval Ġlamb das To Inline : ĠMap < Int , ĠLambda Info >, ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġcaptured Outer Re generated : ĠBoolean , ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġalready Re generated : ĠBoolean , ĊĠĠĠĠĠĠĠ Ġval Ġconstructor Desc : ĠString ?, ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġis Static Origin : ĠBoolean , ĊĠĠĠĠĠĠĠ Ġname Generator : ĠName Generator ) Ġ: ĠTransformation Info Ġ{ ĊĊĠĠĠ Ġoverride Ġval Ġnew ClassName : ĠString Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ Ġname Generator . gen Lambda ClassName () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġlateinit Ġvar Ġnew Constructor Descriptor : ĠString ĊĊĠĠĠ Ġlateinit Ġvar Ġall Re captured Parameters : ĠList < Capt ured Param Desc > ĊĊĠĠĠ Ġlateinit Ġvar Ġcaptured L amb das To Inline : ĠMap < String , ĠLambda Info > ĊĊĠĠĠ Ġconstructor ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġowner Internal Name : ĠString , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġneed Re ification : ĠBoolean , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġalready Re generated : ĠBoolean , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Static Origin : ĠBoolean , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġname Generator : ĠName Generator ĊĠĠĠ Ġ) Ġ: Ġthis ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġowner Internal Name , Ġneed Re ification , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠHashMap < Int , ĠLambda Info >(), Ġfalse , Ġalready Re generated , Ġnull , Ġis Static Origin , Ġname Generator ) Ġ{ ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġshould Re generate ( same Module : ĠBoolean ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ! already Re generated Ġ&& Ġ(! lamb das To Inline . isEmpty () Ġ|| Ġ! same Module Ġ|| Ġcaptured Outer Re generated Ġ|| Ġneed Re ification ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġcan Remove After Transformation (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠNote : ĠIt Ġis Ġunsafe Ġto Ġremove Ġanonymous Ġclass Ġthat Ġis Ġreferenced Ġby ĠGET STATIC Ġwithin Ġlambda ĊĠĠĠĠĠĠĠ Ġ// Ġbecause Ġit Ġcan Ġbe Ġlocal Ġfunction Ġfrom Ġouter Ġscope ĊĠĠĠĠĠĠĠ Ġreturn Ġ! is Static Origin ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġcreate Transformer ( in lining Context : ĠIn lining Context , Ġsame Module : ĠBoolean ): ĠObject Transformer < *> Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠAn onymous Object Transformer ( this , Ġin lining Context , Ġsame Module ); ĊĠĠĠ Ġ} Ċ } Ċ