package Ġarrow . meta . dsl . codegen . ir Ċ Ċ import Ġarrow . meta . Meta Ċ import Ġarrow . meta . ph ases . Compiler Context Ċ import Ġarrow . meta . ph ases . codegen . ir . IR Generation Ċ import Ġarrow . meta . ph ases . codegen . ir . Ir Utils Ċ import Ġorg . jetbrains . kotlin . backend . common . extensions . Ir Plugin Context Ċ import Ġorg . jetbrains . kotlin . ir . Ir Element Ċ import Ġorg . jetbrains . kotlin . ir . Ir Statement Ċ import Ġorg . jetbrains . kotlin . ir . declarations . Ir Anonymous Initializer Ċ import Ġorg . jetbrains . kotlin . ir . declarations . Ir Class Ċ import Ġorg . jetbrains . kotlin . ir . declarations . Ir Constructor Ċ import Ġorg . jetbrains . kotlin . ir . declarations . Ir Declaration Ċ import Ġorg . jetbrains . kotlin . ir . declarations . Ir Declaration Base Ċ import Ġorg . jetbrains . kotlin . ir . declarations . Ir Enum Entry Ċ import Ġorg . jetbrains . kotlin . ir . declarations . Ir Error Declaration Ċ import Ġorg . jetbrains . kotlin . ir . declarations . Ir Field Ċ import Ġorg . jetbrains . kotlin . ir . declarations . Ir File Ċ import Ġorg . jetbrains . kotlin . ir . declarations . Ir Function Ċ import Ġorg . jetbrains . kotlin . ir . declarations . Ir Local Deleg ated Property Ċ import Ġorg . jetbrains . kotlin . ir . declarations . Ir Module Fragment Ċ import Ġorg . jetbrains . kotlin . ir . declarations . Ir Property Ċ import Ġorg . jetbrains . kotlin . ir . declarations . Ir Simple Function Ċ import Ġorg . jetbrains . kotlin . ir . declarations . Ir Type Alias Ċ import Ġorg . jetbrains . kotlin . ir . declarations . Ir Type Parameter Ċ import Ġorg . jetbrains . kotlin . ir . declarations . Ir Value Parameter Ċ import Ġorg . jetbrains . kotlin . ir . declarations . Ir Variable Ċ import Ġorg . jetbrains . kotlin . ir . expressions . Ir Block Ċ import Ġorg . jetbrains . kotlin . ir . expressions . Ir Block Body Ċ import Ġorg . jetbrains . kotlin . ir . expressions . Ir Body Ċ import Ġorg . jetbrains . kotlin . ir . expressions . Ir Branch Ċ import Ġorg . jetbrains . kotlin . ir . expressions . Ir Break Ċ import Ġorg . jetbrains . kotlin . ir . expressions . Ir Break Continue Ċ import Ġorg . jetbrains . kotlin . ir . expressions . Ir Call Ċ import Ġorg . jetbrains . kotlin . ir . expressions . Ir Callable Reference Ċ import Ġorg . jetbrains . kotlin . ir . expressions . Ir Catch Ċ import Ġorg . jetbrains . kotlin . ir . expressions . Ir Class Reference Ċ import Ġorg . jetbrains . kotlin . ir . expressions . Ir Composite Ċ import Ġorg . jetbrains . kotlin . ir . expressions . Ir Const Ċ import Ġorg . jetbrains . kotlin . ir . expressions . Ir Constructor Call Ċ import Ġorg . jetbrains . kotlin . ir . expressions . Ir Container Expression Ċ import Ġorg . jetbrains . kotlin . ir . expressions . Ir Continue Ċ import Ġorg . jetbrains . kotlin . ir . expressions . Ir Declaration Reference Ċ import Ġorg . jetbrains . kotlin . ir . expressions . Ir Delegating Constructor Call Ċ import Ġorg . jetbrains . kotlin . ir . expressions . Ir Do While Loop Ċ import Ġorg . jetbrains . kotlin . ir . expressions . Ir Dynamic Expression Ċ import Ġorg . jetbrains . kotlin . ir . expressions . Ir Dynamic Member Expression Ċ import Ġorg . jetbrains . kotlin . ir . expressions . Ir Dynamic Operator Expression Ċ import Ġorg . jetbrains . kotlin . ir . expressions . Ir Else Branch Ċ import Ġorg . jetbrains . kotlin . ir . expressions . Ir Enum Constructor Call Ċ import Ġorg . jetbrains . kotlin . ir . expressions . Ir Error Call Expression Ċ import Ġorg . jetbrains . kotlin . ir . expressions . Ir Error Expression Ċ import Ġorg . jetbrains . kotlin . ir . expressions . Ir Expression Ċ import Ġorg . jetbrains . kotlin . ir . expressions . Ir Expression Body Ċ import Ġorg . jetbrains . kotlin . ir . expressions . Ir Field Access Expression Ċ import Ġorg . jetbrains . kotlin . ir . expressions . Ir Function Access Expression Ċ import Ġorg . jetbrains . kotlin . ir . expressions . Ir Function Reference Ċ import Ġorg . jetbrains . kotlin . ir . expressions . Ir GetClass Ċ import Ġorg . jetbrains . kotlin . ir . expressions . Ir Get EnumValue Ċ import Ġorg . jetbrains . kotlin . ir . expressions . Ir GetField Ċ import Ġorg . jetbrains . kotlin . ir . expressions . Ir GetObject Value Ċ import Ġorg . jetbrains . kotlin . ir . expressions . Ir Get Singleton Value Ċ import Ġorg . jetbrains . kotlin . ir . expressions . Ir GetValue Ċ import Ġorg . jetbrains . kotlin . ir . expressions . Ir Instance Initializer Call Ċ import Ġorg . jetbrains . kotlin . ir . expressions . Ir Local Deleg ated Property Reference Ċ import Ġorg . jetbrains . kotlin . ir . expressions . Ir Loop Ċ import Ġorg . jetbrains . kotlin . ir . expressions . Ir Member Access Expression Ċ import Ġorg . jetbrains . kotlin . ir . expressions . Ir Property Reference Ċ import Ġorg . jetbrains . kotlin . ir . expressions . Ir Return Ċ import Ġorg . jetbrains . kotlin . ir . expressions . Ir Set Field Ċ import Ġorg . jetbrains . kotlin . ir . expressions . Ir SetValue Ċ import Ġorg . jetbrains . kotlin . ir . expressions . Ir Spread Element Ċ import Ġorg . jetbrains . kotlin . ir . expressions . Ir String Concatenation Ċ import Ġorg . jetbrains . kotlin . ir . expressions . Ir Suspend able Expression Ċ import Ġorg . jetbrains . kotlin . ir . expressions . Ir Sus pension Point Ċ import Ġorg . jetbrains . kotlin . ir . expressions . Ir Synt hetic Body Ċ import Ġorg . jetbrains . kotlin . ir . expressions . Ir Throw Ċ import Ġorg . jetbrains . kotlin . ir . expressions . Ir Try Ċ import Ġorg . jetbrains . kotlin . ir . expressions . Ir Type Operator Call Ċ import Ġorg . jetbrains . kotlin . ir . expressions . Ir Value Access Expression Ċ import Ġorg . jetbrains . kotlin . ir . expressions . Ir Var arg Ċ import Ġorg . jetbrains . kotlin . ir . expressions . Ir When Ċ import Ġorg . jetbrains . kotlin . ir . expressions . Ir While Loop Ċ import Ġorg . jetbrains . kotlin . ir . util . Kotlin Like Dump Options Ċ import Ġorg . jetbrains . kotlin . ir . util . dump Ċ import Ġorg . jetbrains . kotlin . ir . util . dump Kotlin Like Ċ import Ġorg . jetbrains . kotlin . ir . visitor s . Ir Element Transformer Ċ Ċ /** Ċ Ġ* ĠThe Ġcodegen Ġphase Ġis Ġwhere Ġthe Ġcompiler Ġemits Ġbytecode Ġand Ġmetadata Ġfor Ġthe Ġdifferent Ġplatforms Ċ Ġ* Ġthe ĠKotlin Ġlanguage Ġtargets . ĠIn Ġthis Ġphase , Ġby Ġdefault , Ġthe Ġcompiler Ġwould Ġgo Ġinto ĠAS M Ġcodegen Ċ Ġ* Ġfor Ġthe ĠJVM , Ġor Ġinto ĠIR Ġcodegen Ġif ĠIR Ġis Ġenabled . Ġ[ IR ] Ġis Ġthe ĠInter mediate ĠRepresentation Ġformat Ċ Ġ* Ġthe Ġnew ĠKotlin Ġcompiler Ġbackend Ġtargets . Ċ Ġ*/ Ċ interface ĠIr Syntax Ġ{ ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠIR , ĠThe Ġintermediate Ġrepresentation Ġformat , Ġis Ġa Ġstructured Ġtext Ġformat Ġwith Ġsignificant ĊĠĠ Ġ* Ġindentation Ġthat Ġcontains Ġall Ġthe Ġinformation Ġthe Ġcompiler Ġknows Ġabout Ġa Ġprogram . ĠAt Ġthis ĊĠĠ Ġ* Ġpoint , Ġthe Ġcompiler Ġknows Ġthe Ġstructure Ġof Ġa Ġprogram Ġbased Ġon Ġits Ġsources , Ġwhat Ġthe Ġtyped ĊĠĠ Ġ* Ġexpressions Ġare , Ġand Ġhow Ġeach Ġof Ġthe Ġgeneric Ġtype Ġarguments Ġgets Ġapplied . ĠThe Ġcompiler Ġemits ĊĠĠ Ġ* Ġinformation Ġin Ġthis Ġphase Ġthat Ġis Ġprocessed Ġby Ġinterpre ters Ġand Ġcompilers Ġtargeting Ġany ĊĠĠ Ġ* Ġplatform . Ġ[ IR ĠExample ] ĊĠĠ Ġ*/ ĊĠ Ġfun ĠIr Syntax . Ir Generation ( ĊĠĠĠ Ġgenerate : ĊĠĠĠĠĠ Ġ( ĊĠĠĠĠĠĠĠ Ġcompiler Context : ĠCompiler Context , ĊĠĠĠĠĠĠĠ Ġmodule Fragment : ĠIr Module Fragment , ĊĠĠĠĠĠĠĠ Ġplugin Context : ĠIr Plugin Context ) Ġ-> ĠUnit ĊĠ Ġ): ĠIR Generation Ġ= ĊĠĠĠ Ġobject Ġ: ĠIR Generation Ġ{ ĊĠĠĠĠĠ Ġoverride Ġfun ĠCompiler Context . generate ( ĊĠĠĠĠĠĠĠ Ġmodule Fragment : ĠIr Module Fragment , ĊĠĠĠĠĠĠĠ Ġplugin Context : ĠIr Plugin Context ĊĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġgenerate ( this , Ġmodule Fragment , Ġplugin Context ) ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠ Ġfun ĠMeta . ir Module Fragment ( f : ĠIr Utils .( Ir Module Fragment ) Ġ-> ĠIr Module Fragment ?): ĠIR Generation Ġ= ĊĠĠĠĠĠ ĠIr Generation Ġ{ Ġcompiler Context , Ġmodule Fragment , Ġplugin Context Ġ-> ĊĠĠĠ Ġmodule Fragment . transform ( ĊĠĠĠĠĠ Ġobject Ġ: ĠIr Element Transformer < Unit > Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġvisit Module Fragment ( ĊĠĠĠĠĠĠĠĠĠ Ġdeclaration : ĠIr Module Fragment , ĊĠĠĠĠĠĠĠĠĠ Ġdata : ĠUnit ĊĠĠĠĠĠĠĠ Ġ): ĠIr Module Fragment Ġ= ĊĠĠĠĠĠĠĠĠĠ Ġdeclaration . transform Children ( this , ĠUnit ). let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġf ( Ir Utils ( plugin Context , Ġcompiler Context , Ġmodule Fragment ), Ġdeclaration ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġsuper . visit Module Fragment ( declaration , Ġdata ) ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠ ĠUnit ĊĠĠĠ Ġ) ĊĠ Ġ} ĊĊĠ Ġfun ĠMeta . ir File ( f : ĠIr Utils .( Ir File ) Ġ-> ĠIr File ?): ĠIR Generation Ġ= ĊĠĠĠĠĠ ĠIr Generation Ġ{ Ġcompiler Context , Ġmodule Fragment , Ġplugin Context Ġ-> ĊĠĠĠ Ġmodule Fragment . transform Children ( ĊĠĠĠĠĠ Ġobject Ġ: ĠIr Element Transformer < Unit > Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġvisit File ( declaration : ĠIr File , Ġdata : ĠUnit ): ĠIr File Ġ= ĊĠĠĠĠĠĠĠĠĠ Ġdeclaration . transform Children ( this , ĠUnit ). let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġf ( Ir Utils ( plugin Context , Ġcompiler Context , Ġmodule Fragment ), Ġdeclaration ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġsuper . visit File ( declaration , Ġdata ) ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠ ĠUnit ĊĠĠĠ Ġ) ĊĠ Ġ} ĊĊĠ Ġfun ĠMeta . ir Declaration ( f : ĠIr Utils .( Ir Declaration ) Ġ-> ĠIr Statement ?): ĠIR Generation Ġ= ĊĠĠĠĠĠ ĠIr Generation Ġ{ Ġcompiler Context , Ġmodule Fragment , Ġplugin Context Ġ-> ĊĠĠĠ Ġmodule Fragment . transform Children ( ĊĠĠĠĠĠ Ġobject Ġ: ĠIr Element Transformer < Unit > Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġvisit Declaration ( expression : ĠIr Declaration Base , Ġdata : ĠUnit ): ĠIr Statement Ġ= ĊĠĠĠĠĠĠĠĠĠ Ġexpression . transform Children ( this , ĠUnit ). let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġf ( Ir Utils ( plugin Context , Ġcompiler Context , Ġmodule Fragment ), Ġexpression ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġsuper . visit Declaration ( expression , Ġdata ) ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠ ĠUnit ĊĠĠĠ Ġ) ĊĠ Ġ} ĊĊĠ Ġfun ĠMeta . ir Class ( f : ĠIr Utils .( Ir Class ) Ġ-> ĠIr Statement ?): ĠIR Generation Ġ= ĊĠĠĠĠĠ ĠIr Generation Ġ{ Ġcompiler Context , Ġmodule Fragment , Ġplugin Context Ġ-> ĊĠĠĠ Ġmodule Fragment . transform Children ( ĊĠĠĠĠĠ Ġobject Ġ: ĠIr Element Transformer < Unit > Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġvisit Class ( expression : ĠIr Class , Ġdata : ĠUnit ): ĠIr Statement Ġ= ĊĠĠĠĠĠĠĠĠĠ Ġexpression . transform Children ( this , ĠUnit ). let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġf ( Ir Utils ( plugin Context , Ġcompiler Context , Ġmodule Fragment ), Ġexpression ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġsuper . visit Class ( expression , Ġdata ) ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠ ĠUnit ĊĠĠĠ Ġ) ĊĠ Ġ} ĊĊĠ Ġfun ĠMeta . ir Function ( f : ĠIr Utils .( Ir Function ) Ġ-> ĠIr Statement ?): ĠIR Generation Ġ= ĊĠĠĠĠĠ ĠIr Generation Ġ{ Ġcompiler Context , Ġmodule Fragment , Ġplugin Context Ġ-> ĊĠĠĠ Ġmodule Fragment . transform Children ( ĊĠĠĠĠĠ Ġobject Ġ: ĠIr Element Transformer < Unit > Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġvisit Function ( expression : ĠIr Function , Ġdata : ĠUnit ): ĠIr Statement Ġ= ĊĠĠĠĠĠĠĠĠĠ Ġexpression . transform Children ( this , ĠUnit ). let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġf ( Ir Utils ( plugin Context , Ġcompiler Context , Ġmodule Fragment ), Ġexpression ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġsuper . visit Function ( expression , Ġdata ) ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠ ĠUnit ĊĠĠĠ Ġ) ĊĠ Ġ} ĊĊĠ Ġfun ĠMeta . ir Simple Function ( f : ĠIr Utils .( Ir Simple Function ) Ġ-> ĠIr Statement ?): ĠIR Generation Ġ= ĊĠĠĠĠĠ ĠIr Generation Ġ{ Ġcompiler Context , Ġmodule Fragment , Ġplugin Context Ġ-> ĊĠĠĠ Ġmodule Fragment . transform Children ( ĊĠĠĠĠĠ Ġobject Ġ: ĠIr Element Transformer < Unit > Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġvisit Simple Function ( declaration : ĠIr Simple Function , Ġdata : ĠUnit ): ĠIr Statement Ġ= ĊĠĠĠĠĠĠĠĠĠ Ġdeclaration . transform Children ( this , ĠUnit ). let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġf ( Ir Utils ( plugin Context , Ġcompiler Context , Ġmodule Fragment ), Ġdeclaration ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġsuper . visit Simple Function ( declaration , Ġdata ) ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠ ĠUnit ĊĠĠĠ Ġ) ĊĠ Ġ} ĊĊĠ Ġfun ĠMeta . ir Constructor ( f : ĠIr Utils .( Ir Constructor ) Ġ-> ĠIr Statement ?): ĠIR Generation Ġ= ĊĠĠĠĠĠ ĠIr Generation Ġ{ Ġcompiler Context , Ġmodule Fragment , Ġplugin Context Ġ-> ĊĠĠĠ Ġmodule Fragment . transform Children ( ĊĠĠĠĠĠ Ġobject Ġ: ĠIr Element Transformer < Unit > Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġvisit Constructor ( declaration : ĠIr Constructor , Ġdata : ĠUnit ): ĠIr Statement Ġ= ĊĠĠĠĠĠĠĠĠĠ Ġdeclaration . transform Children ( this , ĠUnit ). let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġf ( Ir Utils ( plugin Context , Ġcompiler Context , Ġmodule Fragment ), Ġdeclaration ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġsuper . visit Constructor ( declaration , Ġdata ) ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠ ĠUnit ĊĠĠĠ Ġ) ĊĠ Ġ} ĊĊĠ Ġfun ĠMeta . ir Property ( f : ĠIr Utils .( Ir Property ) Ġ-> ĠIr Statement ?): ĠIR Generation Ġ= ĊĠĠĠĠĠ ĠIr Generation Ġ{ Ġcompiler Context , Ġmodule Fragment , Ġplugin Context Ġ-> ĊĠĠĠ Ġmodule Fragment . transform Children ( ĊĠĠĠĠĠ Ġobject Ġ: ĠIr Element Transformer < Unit > Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġvisit Property ( declaration : ĠIr Property , Ġdata : ĠUnit ): ĠIr Statement Ġ= ĊĠĠĠĠĠĠĠĠĠ Ġdeclaration . transform Children ( this , ĠUnit ). let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġf ( Ir Utils ( plugin Context , Ġcompiler Context , Ġmodule Fragment ), Ġdeclaration ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġsuper . visit Property ( declaration , Ġdata ) ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠ ĠUnit ĊĠĠĠ Ġ) ĊĠ Ġ} ĊĊĠ Ġfun ĠMeta . ir Field ( f : ĠIr Utils .( Ir Field ) Ġ-> ĠIr Statement ?): ĠIR Generation Ġ= ĊĠĠĠĠĠ ĠIr Generation Ġ{ Ġcompiler Context , Ġmodule Fragment , Ġplugin Context Ġ-> ĊĠĠĠ Ġmodule Fragment . transform Children ( ĊĠĠĠĠĠ Ġobject Ġ: ĠIr Element Transformer < Unit > Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġvisit Field ( declaration : ĠIr Field , Ġdata : ĠUnit ): ĠIr Statement Ġ= ĊĠĠĠĠĠĠĠĠĠ Ġdeclaration . transform Children ( this , ĠUnit ). let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġf ( Ir Utils ( plugin Context , Ġcompiler Context , Ġmodule Fragment ), Ġdeclaration ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġsuper . visit Field ( declaration , Ġdata ) ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠ ĠUnit ĊĠĠĠ Ġ) ĊĠ Ġ} ĊĊĠ Ġfun ĠMeta . ir Local Deleg ated Property ( ĊĠĠĠ Ġf : ĠIr Utils .( Ir Local Deleg ated Property ) Ġ-> ĠIr Statement ? ĊĠ Ġ): ĠIR Generation Ġ= ĠIr Generation Ġ{ Ġcompiler Context , Ġmodule Fragment , Ġplugin Context Ġ-> ĊĠĠĠ Ġmodule Fragment . transform Children ( ĊĠĠĠĠĠ Ġobject Ġ: ĠIr Element Transformer < Unit > Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġvisit Local Deleg ated Property ( ĊĠĠĠĠĠĠĠĠĠ Ġdeclaration : ĠIr Local Deleg ated Property , ĊĠĠĠĠĠĠĠĠĠ Ġdata : ĠUnit ĊĠĠĠĠĠĠĠ Ġ): ĠIr Statement Ġ= ĊĠĠĠĠĠĠĠĠĠ Ġdeclaration . transform Children ( this , ĠUnit ). let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġf ( Ir Utils ( plugin Context , Ġcompiler Context , Ġmodule Fragment ), Ġdeclaration ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġsuper . visit Local Deleg ated Property ( declaration , Ġdata ) ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠ ĠUnit ĊĠĠĠ Ġ) ĊĠ Ġ} ĊĊĠ Ġfun ĠMeta . ir Enum Entry ( f : ĠIr Utils .( Ir Enum Entry ) Ġ-> ĠIr Statement ?): ĠIR Generation Ġ= ĊĠĠĠĠĠ ĠIr Generation Ġ{ Ġcompiler Context , Ġmodule Fragment , Ġplugin Context Ġ-> ĊĠĠĠ Ġmodule Fragment . transform Children ( ĊĠĠĠĠĠ Ġobject Ġ: ĠIr Element Transformer < Unit > Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġvisit Enum Entry ( declaration : ĠIr Enum Entry , Ġdata : ĠUnit ): ĠIr Statement Ġ= ĊĠĠĠĠĠĠĠĠĠ Ġdeclaration . transform Children ( this , ĠUnit ). let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġf ( Ir Utils ( plugin Context , Ġcompiler Context , Ġmodule Fragment ), Ġdeclaration ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġsuper . visit Enum Entry ( declaration , Ġdata ) ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠ ĠUnit ĊĠĠĠ Ġ) ĊĠ Ġ} ĊĊĠ Ġfun ĠMeta . ir Anonymous Initializer ( ĊĠĠĠ Ġf : ĠIr Utils .( Ir Anonymous Initializer ) Ġ-> ĠIr Statement ? ĊĠ Ġ): ĠIR Generation Ġ= ĠIr Generation Ġ{ Ġcompiler Context , Ġmodule Fragment , Ġplugin Context Ġ-> ĊĠĠĠ Ġmodule Fragment . transform Children ( ĊĠĠĠĠĠ Ġobject Ġ: ĠIr Element Transformer < Unit > Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġvisit Anonymous Initializer ( ĊĠĠĠĠĠĠĠĠĠ Ġdeclaration : ĠIr Anonymous Initializer , ĊĠĠĠĠĠĠĠĠĠ Ġdata : ĠUnit ĊĠĠĠĠĠĠĠ Ġ): ĠIr Statement Ġ= ĊĠĠĠĠĠĠĠĠĠ Ġdeclaration . transform Children ( this , ĠUnit ). let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġf ( Ir Utils ( plugin Context , Ġcompiler Context , Ġmodule Fragment ), Ġdeclaration ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġsuper . visit Anonymous Initializer ( declaration , Ġdata ) ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠ ĠUnit ĊĠĠĠ Ġ) ĊĠ Ġ} ĊĊĠ Ġfun ĠMeta . ir Variable ( f : ĠIr Utils .( Ir Variable ) Ġ-> ĠIr Statement ?): ĠIR Generation Ġ= ĊĠĠĠĠĠ ĠIr Generation Ġ{ Ġcompiler Context , Ġmodule Fragment , Ġplugin Context Ġ-> ĊĠĠĠ Ġmodule Fragment . transform Children ( ĊĠĠĠĠĠ Ġobject Ġ: ĠIr Element Transformer < Unit > Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġvisit Variable ( declaration : ĠIr Variable , Ġdata : ĠUnit ): ĠIr Statement Ġ= ĊĠĠĠĠĠĠĠĠĠ Ġdeclaration . transform Children ( this , ĠUnit ). let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġf ( Ir Utils ( plugin Context , Ġcompiler Context , Ġmodule Fragment ), Ġdeclaration ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġsuper . visit Variable ( declaration , Ġdata ) ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠ ĠUnit ĊĠĠĠ Ġ) ĊĠ Ġ} ĊĊĠ Ġfun ĠMeta . ir Type Parameter ( f : ĠIr Utils .( Ir Type Parameter ) Ġ-> ĠIr Statement ?): ĠIR Generation Ġ= ĊĠĠĠĠĠ ĠIr Generation Ġ{ Ġcompiler Context , Ġmodule Fragment , Ġplugin Context Ġ-> ĊĠĠĠ Ġmodule Fragment . transform Children ( ĊĠĠĠĠĠ Ġobject Ġ: ĠIr Element Transformer < Unit > Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġvisit Type Parameter ( declaration : ĠIr Type Parameter , Ġdata : ĠUnit ): ĠIr Statement Ġ= ĊĠĠĠĠĠĠĠĠĠ Ġdeclaration . transform Children ( this , ĠUnit ). let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġf ( Ir Utils ( plugin Context , Ġcompiler Context , Ġmodule Fragment ), Ġdeclaration ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġsuper . visit Type Parameter ( declaration , Ġdata ) ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠ ĠUnit ĊĠĠĠ Ġ) ĊĠ Ġ} ĊĊĠ Ġfun ĠMeta . ir Value Parameter ( f : ĠIr Utils .( Ir Value Parameter ) Ġ-> ĠIr Statement ?): ĠIR Generation Ġ= ĊĠĠĠĠĠ ĠIr Generation Ġ{ Ġcompiler Context , Ġmodule Fragment , Ġplugin Context Ġ-> ĊĠĠĠ Ġmodule Fragment . transform Children ( ĊĠĠĠĠĠ Ġobject Ġ: ĠIr Element Transformer < Unit > Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġvisit Value Parameter ( declaration : ĠIr Value Parameter , Ġdata : ĠUnit ): ĠIr Statement Ġ= ĊĠĠĠĠĠĠĠĠĠ Ġdeclaration . transform Children ( this , ĠUnit ). let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġf ( Ir Utils ( plugin Context , Ġcompiler Context , Ġmodule Fragment ), Ġdeclaration ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġsuper . visit Value Parameter ( declaration , Ġdata ) ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠ ĠUnit ĊĠĠĠ Ġ) ĊĠ Ġ} ĊĊĠ Ġfun ĠMeta . ir Type Alias ( f : ĠIr Utils .( Ir Type Alias ) Ġ-> ĠIr Type Alias ?): ĠIR Generation Ġ= ĊĠĠĠĠĠ ĠIr Generation Ġ{ Ġcompiler Context , Ġmodule Fragment , Ġplugin Context Ġ-> ĊĠĠĠ Ġmodule Fragment . transform Children ( ĊĠĠĠĠĠ Ġobject Ġ: ĠIr Element Transformer < Unit > Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġvisit Type Alias ( declaration : ĠIr Type Alias , Ġdata : ĠUnit ): ĠIr Statement Ġ= ĊĠĠĠĠĠĠĠĠĠ Ġdeclaration . transform Children ( this , ĠUnit ). let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġf ( Ir Utils ( plugin Context , Ġcompiler Context , Ġmodule Fragment ), Ġdeclaration ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġsuper . visit Type Alias ( declaration , Ġdata ) ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠ ĠUnit ĊĠĠĠ Ġ) ĊĠ Ġ} ĊĊĠ Ġfun ĠMeta . ir Body ( f : ĠIr Utils .( Ir Body ) Ġ-> ĠIr Body ?): ĠIR Generation Ġ= ĊĠĠĠĠĠ ĠIr Generation Ġ{ Ġcompiler Context , Ġmodule Fragment , Ġplugin Context Ġ-> ĊĠĠĠ Ġmodule Fragment . transform Children ( ĊĠĠĠĠĠ Ġobject Ġ: ĠIr Element Transformer < Unit > Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġvisit Body ( body : ĠIr Body , Ġdata : ĠUnit ): ĠIr Body Ġ= ĊĠĠĠĠĠĠĠĠĠ Ġbody . transform Children ( this , ĠUnit ). let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġf ( Ir Utils ( plugin Context , Ġcompiler Context , Ġmodule Fragment ), Ġbody ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġsuper . visit Body ( body , Ġdata ) ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠ ĠUnit ĊĠĠĠ Ġ) ĊĠ Ġ} ĊĊĠ Ġfun ĠMeta . ir Expression Body ( f : ĠIr Utils .( Ir Expression Body ) Ġ-> ĠIr Body ?): ĠIR Generation Ġ= ĊĠĠĠĠĠ ĠIr Generation Ġ{ Ġcompiler Context , Ġmodule Fragment , Ġplugin Context Ġ-> ĊĠĠĠ Ġmodule Fragment . transform Children ( ĊĠĠĠĠĠ Ġobject Ġ: ĠIr Element Transformer < Unit > Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġvisit Expression Body ( body : ĠIr Expression Body , Ġdata : ĠUnit ): ĠIr Body Ġ= ĊĠĠĠĠĠĠĠĠĠ Ġbody . transform Children ( this , ĠUnit ). let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġf ( Ir Utils ( plugin Context , Ġcompiler Context , Ġmodule Fragment ), Ġbody ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġsuper . visit Expression Body ( body , Ġdata ) ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠ ĠUnit ĊĠĠĠ Ġ) ĊĠ Ġ} ĊĊĠ Ġfun ĠMeta . ir Block Body ( f : ĠIr Utils .( Ir Block Body ) Ġ-> ĠIr Body ?): ĠIR Generation Ġ= ĊĠĠĠĠĠ ĠIr Generation Ġ{ Ġcompiler Context , Ġmodule Fragment , Ġplugin Context Ġ-> ĊĠĠĠ Ġmodule Fragment . transform Children ( ĊĠĠĠĠĠ Ġobject Ġ: ĠIr Element Transformer < Unit > Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġvisit Block Body ( body : ĠIr Block Body , Ġdata : ĠUnit ): ĠIr Body Ġ= ĊĠĠĠĠĠĠĠĠĠ Ġbody . transform Children ( this , ĠUnit ). let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġf ( Ir Utils ( plugin Context , Ġcompiler Context , Ġmodule Fragment ), Ġbody ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġsuper . visit Block Body ( body , Ġdata ) ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠ ĠUnit ĊĠĠĠ Ġ) ĊĠ Ġ} ĊĊĠ Ġfun ĠMeta . ir Synt hetic Body ( f : ĠIr Utils .( Ir Synt hetic Body ) Ġ-> ĠIr Body ?): ĠIR Generation Ġ= ĊĠĠĠĠĠ ĠIr Generation Ġ{ Ġcompiler Context , Ġmodule Fragment , Ġplugin Context Ġ-> ĊĠĠĠ Ġmodule Fragment . transform Children ( ĊĠĠĠĠĠ Ġobject Ġ: ĠIr Element Transformer < Unit > Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġvisit Synt hetic Body ( body : ĠIr Synt hetic Body , Ġdata : ĠUnit ): ĠIr Body Ġ= ĊĠĠĠĠĠĠĠĠĠ Ġbody . transform Children ( this , ĠUnit ). let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġf ( Ir Utils ( plugin Context , Ġcompiler Context , Ġmodule Fragment ), Ġbody ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġsuper . visit Synt hetic Body ( body , Ġdata ) ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠ ĠUnit ĊĠĠĠ Ġ) ĊĠ Ġ} ĊĊĠ Ġfun ĠMeta . ir Suspend able Expression ( ĊĠĠĠ Ġf : ĠIr Utils .( Ir Suspend able Expression ) Ġ-> ĠIr Expression ? ĊĠ Ġ): ĠIR Generation Ġ= ĠIr Generation Ġ{ Ġcompiler Context , Ġmodule Fragment , Ġplugin Context Ġ-> ĊĠĠĠ Ġmodule Fragment . transform Children ( ĊĠĠĠĠĠ Ġobject Ġ: ĠIr Element Transformer < Unit > Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġvisit Suspend able Expression ( ĊĠĠĠĠĠĠĠĠĠ Ġexpression : ĠIr Suspend able Expression , ĊĠĠĠĠĠĠĠĠĠ Ġdata : ĠUnit ĊĠĠĠĠĠĠĠ Ġ): ĠIr Expression Ġ= ĊĠĠĠĠĠĠĠĠĠ Ġexpression . transform Children ( this , ĠUnit ). let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġf ( Ir Utils ( plugin Context , Ġcompiler Context , Ġmodule Fragment ), Ġexpression ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġsuper . visit Suspend able Expression ( expression , Ġdata ) ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠ ĠUnit ĊĠĠĠ Ġ) ĊĠ Ġ} ĊĊĠ Ġfun ĠMeta . ir Sus pension Point ( f : ĠIr Utils .( Ir Sus pension Point ) Ġ-> ĠIr Expression ?): ĠIR Generation Ġ= ĊĠĠĠĠĠ ĠIr Generation Ġ{ Ġcompiler Context , Ġmodule Fragment , Ġplugin Context Ġ-> ĊĠĠĠ Ġmodule Fragment . transform Children ( ĊĠĠĠĠĠ Ġobject Ġ: ĠIr Element Transformer < Unit > Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġvisit Sus pension Point ( expression : ĠIr Sus pension Point , Ġdata : ĠUnit ): ĠIr Expression Ġ= ĊĠĠĠĠĠĠĠĠĠ Ġexpression . transform Children ( this , ĠUnit ). let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġf ( Ir Utils ( plugin Context , Ġcompiler Context , Ġmodule Fragment ), Ġexpression ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġsuper . visit Sus pension Point ( expression , Ġdata ) ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠ ĠUnit ĊĠĠĠ Ġ) ĊĠ Ġ} ĊĊĠ Ġfun ĠMeta . ir Expression ( f : ĠIr Utils .( Ir Expression ) Ġ-> ĠIr Expression ?): ĠIR Generation Ġ= ĊĠĠĠĠĠ ĠIr Generation Ġ{ Ġcompiler Context , Ġmodule Fragment , Ġplugin Context Ġ-> ĊĠĠĠ Ġmodule Fragment . transform Children ( ĊĠĠĠĠĠ Ġobject Ġ: ĠIr Element Transformer < Unit > Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġvisit Expression ( expression : ĠIr Expression , Ġdata : ĠUnit ): ĠIr Expression Ġ= ĊĠĠĠĠĠĠĠĠĠ Ġexpression . transform Children ( this , ĠUnit ). let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġf ( Ir Utils ( plugin Context , Ġcompiler Context , Ġmodule Fragment ), Ġexpression ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġsuper . visit Expression ( expression , Ġdata ) ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠ ĠUnit ĊĠĠĠ Ġ) ĊĠ Ġ} ĊĊĠ Ġfun ĠMeta . ir Const ( f : ĠIr Utils .( Ir Const <* >) Ġ-> ĠIr Expression ?): ĠIR Generation Ġ= ĊĠĠĠĠĠ ĠIr Generation Ġ{ Ġcompiler Context , Ġmodule Fragment , Ġplugin Context Ġ-> ĊĠĠĠ Ġmodule Fragment . transform Children ( ĊĠĠĠĠĠ Ġobject Ġ: ĠIr Element Transformer < Unit > Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġ< T > Ġvisit Const ( expression : ĠIr Const < T >, Ġdata : ĠUnit ): ĠIr Expression Ġ= ĊĠĠĠĠĠĠĠĠĠ Ġexpression . transform Children ( this , ĠUnit ). let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġf ( Ir Utils ( plugin Context , Ġcompiler Context , Ġmodule Fragment ), Ġexpression ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġsuper . visit Const ( expression , Ġdata ) ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠ ĠUnit ĊĠĠĠ Ġ) ĊĠ Ġ} ĊĊĠ Ġfun ĠMeta . ir Var arg ( f : ĠIr Utils .( Ir Var arg ) Ġ-> ĠIr Expression ?): ĠIR Generation Ġ= ĊĠĠĠĠĠ ĠIr Generation Ġ{ Ġcompiler Context , Ġmodule Fragment , Ġplugin Context Ġ-> ĊĠĠĠ Ġmodule Fragment . transform Children ( ĊĠĠĠĠĠ Ġobject Ġ: ĠIr Element Transformer < Unit > Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġvisit Var arg ( expression : ĠIr Var arg , Ġdata : ĠUnit ): ĠIr Expression Ġ= ĊĠĠĠĠĠĠĠĠĠ Ġexpression . transform Children ( this , ĠUnit ). let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġf ( Ir Utils ( plugin Context , Ġcompiler Context , Ġmodule Fragment ), Ġexpression ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġsuper . visit Var arg ( expression , Ġdata ) ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠ ĠUnit ĊĠĠĠ Ġ) ĊĠ Ġ} ĊĊĠ Ġfun ĠMeta . ir Spread Element ( f : ĠIr Utils .( Ir Spread Element ) Ġ-> ĠIr Spread Element ?): ĠIR Generation Ġ= ĊĠĠĠĠĠ ĠIr Generation Ġ{ Ġcompiler Context , Ġmodule Fragment , Ġplugin Context Ġ-> ĊĠĠĠ Ġmodule Fragment . transform Children ( ĊĠĠĠĠĠ Ġobject Ġ: ĠIr Element Transformer < Unit > Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġvisit Spread Element ( spread : ĠIr Spread Element , Ġdata : ĠUnit ): ĠIr Spread Element Ġ= ĊĠĠĠĠĠĠĠĠĠ Ġspread . transform Children ( this , ĠUnit ). let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġf ( Ir Utils ( plugin Context , Ġcompiler Context , Ġmodule Fragment ), Ġspread ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġsuper . visit Spread Element ( spread , Ġdata ) ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠ ĠUnit ĊĠĠĠ Ġ) ĊĠ Ġ} ĊĊĠ Ġfun ĠMeta . ir Container Expression ( ĊĠĠĠ Ġf : ĠIr Utils .( Ir Container Expression ) Ġ-> ĠIr Expression ? ĊĠ Ġ): ĠIR Generation Ġ= ĠIr Generation Ġ{ Ġcompiler Context , Ġmodule Fragment , Ġplugin Context Ġ-> ĊĠĠĠ Ġmodule Fragment . transform Children ( ĊĠĠĠĠĠ Ġobject Ġ: ĠIr Element Transformer < Unit > Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġvisit Container Expression ( ĊĠĠĠĠĠĠĠĠĠ Ġexpression : ĠIr Container Expression , ĊĠĠĠĠĠĠĠĠĠ Ġdata : ĠUnit ĊĠĠĠĠĠĠĠ Ġ): ĠIr Expression Ġ= ĊĠĠĠĠĠĠĠĠĠ Ġexpression . transform Children ( this , ĠUnit ). let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġf ( Ir Utils ( plugin Context , Ġcompiler Context , Ġmodule Fragment ), Ġexpression ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġsuper . visit Container Expression ( expression , Ġdata ) ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠ ĠUnit ĊĠĠĠ Ġ) ĊĠ Ġ} ĊĊĠ Ġfun ĠMeta . ir Block ( f : ĠIr Utils .( Ir Block ) Ġ-> ĠIr Expression ?): ĠIR Generation Ġ= ĊĠĠĠĠĠ ĠIr Generation Ġ{ Ġcompiler Context , Ġmodule Fragment , Ġplugin Context Ġ-> ĊĠĠĠ Ġmodule Fragment . transform Children ( ĊĠĠĠĠĠ Ġobject Ġ: ĠIr Element Transformer < Unit > Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġvisit Block ( expression : ĠIr Block , Ġdata : ĠUnit ): ĠIr Expression Ġ= ĊĠĠĠĠĠĠĠĠĠ Ġexpression . transform Children ( this , ĠUnit ). let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġf ( Ir Utils ( plugin Context , Ġcompiler Context , Ġmodule Fragment ), Ġexpression ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġsuper . visit Block ( expression , Ġdata ) ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠ ĠUnit ĊĠĠĠ Ġ) ĊĠ Ġ} ĊĊĠ Ġfun ĠMeta . ir Composite ( f : ĠIr Utils .( Ir Composite ) Ġ-> ĠIr Expression ?): ĠIR Generation Ġ= ĊĠĠĠĠĠ ĠIr Generation Ġ{ Ġcompiler Context , Ġmodule Fragment , Ġplugin Context Ġ-> ĊĠĠĠ Ġmodule Fragment . transform Children ( ĊĠĠĠĠĠ Ġobject Ġ: ĠIr Element Transformer < Unit > Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġvisit Composite ( expression : ĠIr Composite , Ġdata : ĠUnit ): ĠIr Expression Ġ= ĊĠĠĠĠĠĠĠĠĠ Ġexpression . transform Children ( this , ĠUnit ). let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġf ( Ir Utils ( plugin Context , Ġcompiler Context , Ġmodule Fragment ), Ġexpression ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġsuper . visit Composite ( expression , Ġdata ) ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠ ĠUnit ĊĠĠĠ Ġ) ĊĠ Ġ} ĊĊĠ Ġfun ĠMeta . ir String Concatenation ( ĊĠĠĠ Ġf : ĠIr Utils .( Ir String Concatenation ) Ġ-> ĠIr Expression ? ĊĠ Ġ): ĠIR Generation Ġ= ĠIr Generation Ġ{ Ġcompiler Context , Ġmodule Fragment , Ġplugin Context Ġ-> ĊĠĠĠ Ġmodule Fragment . transform Children ( ĊĠĠĠĠĠ Ġobject Ġ: ĠIr Element Transformer < Unit > Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġvisit String Concatenation ( ĊĠĠĠĠĠĠĠĠĠ Ġexpression : ĠIr String Concatenation , ĊĠĠĠĠĠĠĠĠĠ Ġdata : ĠUnit ĊĠĠĠĠĠĠĠ Ġ): ĠIr Expression Ġ= ĊĠĠĠĠĠĠĠĠĠ Ġexpression . transform Children ( this , ĠUnit ). let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġf ( Ir Utils ( plugin Context , Ġcompiler Context , Ġmodule Fragment ), Ġexpression ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġsuper . visit String Concatenation ( expression , Ġdata ) ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠ ĠUnit ĊĠĠĠ Ġ) ĊĠ Ġ} ĊĊĠ Ġfun ĠMeta . ir Declaration Reference ( ĊĠĠĠ Ġf : ĠIr Utils .( Ir Declaration Reference ) Ġ-> ĠIr Expression ? ĊĠ Ġ): ĠIR Generation Ġ= ĠIr Generation Ġ{ Ġcompiler Context , Ġmodule Fragment , Ġplugin Context Ġ-> ĊĠĠĠ Ġmodule Fragment . transform Children ( ĊĠĠĠĠĠ Ġobject Ġ: ĠIr Element Transformer < Unit > Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġvisit Declaration Reference ( ĊĠĠĠĠĠĠĠĠĠ Ġexpression : ĠIr Declaration Reference , ĊĠĠĠĠĠĠĠĠĠ Ġdata : ĠUnit ĊĠĠĠĠĠĠĠ Ġ): ĠIr Expression Ġ= ĊĠĠĠĠĠĠĠĠĠ Ġexpression . transform Children ( this , ĠUnit ). let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġf ( Ir Utils ( plugin Context , Ġcompiler Context , Ġmodule Fragment ), Ġexpression ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġsuper . visit Declaration Reference ( expression , Ġdata ) ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠ ĠUnit ĊĠĠĠ Ġ) ĊĠ Ġ} ĊĊĠ Ġfun ĠMeta . ir Singleton Reference ( f : ĠIr Utils .( Ir Get Singleton Value ) Ġ-> ĠIr Expression ?): ĠIR Generation Ġ= ĊĠĠĠĠĠ ĠIr Generation Ġ{ Ġcompiler Context , Ġmodule Fragment , Ġplugin Context Ġ-> ĊĠĠĠ Ġmodule Fragment . transform Children ( ĊĠĠĠĠĠ Ġobject Ġ: ĠIr Element Transformer < Unit > Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġvisit Singleton Reference ( ĊĠĠĠĠĠĠĠĠĠ Ġexpression : ĠIr Get Singleton Value , ĊĠĠĠĠĠĠĠĠĠ Ġdata : ĠUnit ĊĠĠĠĠĠĠĠ Ġ): ĠIr Expression Ġ= ĊĠĠĠĠĠĠĠĠĠ Ġexpression . transform Children ( this , ĠUnit ). let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġf ( Ir Utils ( plugin Context , Ġcompiler Context , Ġmodule Fragment ), Ġexpression ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġsuper . visit Singleton Reference ( expression , Ġdata ) ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠ ĠUnit ĊĠĠĠ Ġ) ĊĠ Ġ} ĊĊĠ Ġfun ĠMeta . ir GetObject Value ( f : ĠIr Utils .( Ir GetObject Value ) Ġ-> ĠIr Expression ?): ĠIR Generation Ġ= ĊĠĠĠĠĠ ĠIr Generation Ġ{ Ġcompiler Context , Ġmodule Fragment , Ġplugin Context Ġ-> ĊĠĠĠ Ġmodule Fragment . transform Children ( ĊĠĠĠĠĠ Ġobject Ġ: ĠIr Element Transformer < Unit > Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġvisit GetObject Value ( expression : ĠIr GetObject Value , Ġdata : ĠUnit ): ĠIr Expression Ġ= ĊĠĠĠĠĠĠĠĠĠ Ġexpression . transform Children ( this , ĠUnit ). let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġf ( Ir Utils ( plugin Context , Ġcompiler Context , Ġmodule Fragment ), Ġexpression ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġsuper . visit GetObject Value ( expression , Ġdata ) ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠ ĠUnit ĊĠĠĠ Ġ) ĊĠ Ġ} ĊĊĠ Ġfun ĠMeta . ir Get EnumValue ( f : ĠIr Utils .( Ir Get EnumValue ) Ġ-> ĠIr Expression ?): ĠIR Generation Ġ= ĊĠĠĠĠĠ ĠIr Generation Ġ{ Ġcompiler Context , Ġmodule Fragment , Ġplugin Context Ġ-> ĊĠĠĠ Ġmodule Fragment . transform Children ( ĊĠĠĠĠĠ Ġobject Ġ: ĠIr Element Transformer < Unit > Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġvisit Get EnumValue ( expression : ĠIr Get EnumValue , Ġdata : ĠUnit ): ĠIr Expression Ġ= ĊĠĠĠĠĠĠĠĠĠ Ġexpression . transform Children ( this , ĠUnit ). let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġf ( Ir Utils ( plugin Context , Ġcompiler Context , Ġmodule Fragment ), Ġexpression ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġsuper . visit Get EnumValue ( expression , Ġdata ) ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠ ĠUnit ĊĠĠĠ Ġ) ĊĠ Ġ} ĊĊĠ Ġfun ĠMeta . ir Value Access ( f : ĠIr Utils .( Ir Value Access Expression ) Ġ-> ĠIr Expression ?): ĠIR Generation Ġ= ĊĠĠĠĠĠ ĠIr Generation Ġ{ Ġcompiler Context , Ġmodule Fragment , Ġplugin Context Ġ-> ĊĠĠĠ Ġmodule Fragment . transform Children ( ĊĠĠĠĠĠ Ġobject Ġ: ĠIr Element Transformer < Unit > Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġvisit Value Access ( ĊĠĠĠĠĠĠĠĠĠ Ġexpression : ĠIr Value Access Expression , ĊĠĠĠĠĠĠĠĠĠ Ġdata : ĠUnit ĊĠĠĠĠĠĠĠ Ġ): ĠIr Expression Ġ= ĊĠĠĠĠĠĠĠĠĠ Ġexpression . transform Children ( this , ĠUnit ). let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġf ( Ir Utils ( plugin Context , Ġcompiler Context , Ġmodule Fragment ), Ġexpression ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġsuper . visit Value Access ( expression , Ġdata ) ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠ ĠUnit ĊĠĠĠ Ġ) ĊĠ Ġ} ĊĊĠ Ġfun ĠMeta . ir GetValue ( f : ĠIr Utils .( Ir GetValue ) Ġ-> ĠIr Expression ?): ĠIR Generation Ġ= ĊĠĠĠĠĠ ĠIr Generation Ġ{ Ġcompiler Context , Ġmodule Fragment , Ġplugin Context Ġ-> ĊĠĠĠ Ġmodule Fragment . transform Children ( ĊĠĠĠĠĠ Ġobject Ġ: ĠIr Element Transformer < Unit > Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġvisit GetValue ( expression : ĠIr GetValue , Ġdata : ĠUnit ): ĠIr Expression Ġ= ĊĠĠĠĠĠĠĠĠĠ Ġexpression . transform Children ( this , ĠUnit ). let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġf ( Ir Utils ( plugin Context , Ġcompiler Context , Ġmodule Fragment ), Ġexpression ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġsuper . visit GetValue ( expression , Ġdata ) ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠ ĠUnit ĊĠĠĠ Ġ) ĊĠ Ġ} ĊĊĠ Ġfun ĠMeta . ir SetValue ( f : ĠIr Utils .( Ir SetValue ) Ġ-> ĠIr Expression ?): ĠIR Generation Ġ= ĊĠĠĠĠĠ ĠIr Generation Ġ{ Ġcompiler Context , Ġmodule Fragment , Ġplugin Context Ġ-> ĊĠĠĠ Ġmodule Fragment . transform Children ( ĊĠĠĠĠĠ Ġobject Ġ: ĠIr Element Transformer < Unit > Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġvisit SetValue ( expression : ĠIr SetValue , Ġdata : ĠUnit ): ĠIr Expression Ġ= ĊĠĠĠĠĠĠĠĠĠ Ġexpression . transform Children ( this , ĠUnit ). let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġf ( Ir Utils ( plugin Context , Ġcompiler Context , Ġmodule Fragment ), Ġexpression ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġsuper . visit SetValue ( expression , Ġdata ) ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠ ĠUnit ĊĠĠĠ Ġ) ĊĠ Ġ} ĊĊĠ Ġfun ĠMeta . ir Field Access ( f : ĠIr Utils .( Ir Field Access Expression ) Ġ-> ĠIr Expression ?): ĠIR Generation Ġ= ĊĠĠĠĠĠ ĠIr Generation Ġ{ Ġcompiler Context , Ġmodule Fragment , Ġplugin Context Ġ-> ĊĠĠĠ Ġmodule Fragment . transform Children ( ĊĠĠĠĠĠ Ġobject Ġ: ĠIr Element Transformer < Unit > Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġvisit Field Access ( ĊĠĠĠĠĠĠĠĠĠ Ġexpression : ĠIr Field Access Expression , ĊĠĠĠĠĠĠĠĠĠ Ġdata : ĠUnit ĊĠĠĠĠĠĠĠ Ġ): ĠIr Expression Ġ= ĊĠĠĠĠĠĠĠĠĠ Ġexpression . transform Children ( this , ĠUnit ). let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġf ( Ir Utils ( plugin Context , Ġcompiler Context , Ġmodule Fragment ), Ġexpression ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġsuper . visit Field Access ( expression , Ġdata ) ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠ ĠUnit ĊĠĠĠ Ġ) ĊĠ Ġ} ĊĊĠ Ġfun ĠMeta . ir GetField ( f : ĠIr Utils .( Ir GetField ) Ġ-> ĠIr Expression ?): ĠIR Generation Ġ= ĊĠĠĠĠĠ ĠIr Generation Ġ{ Ġcompiler Context , Ġmodule Fragment , Ġplugin Context Ġ-> ĊĠĠĠ Ġmodule Fragment . transform Children ( ĊĠĠĠĠĠ Ġobject Ġ: ĠIr Element Transformer < Unit > Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġvisit GetField ( expression : ĠIr GetField , Ġdata : ĠUnit ): ĠIr Expression Ġ= ĊĠĠĠĠĠĠĠĠĠ Ġexpression . transform Children ( this , ĠUnit ). let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġf ( Ir Utils ( plugin Context , Ġcompiler Context , Ġmodule Fragment ), Ġexpression ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġsuper . visit GetField ( expression , Ġdata ) ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠ ĠUnit ĊĠĠĠ Ġ) ĊĠ Ġ} ĊĊĠ Ġfun ĠMeta . ir Set Field ( f : ĠIr Utils .( Ir Set Field ) Ġ-> ĠIr Expression ?): ĠIR Generation Ġ= ĊĠĠĠĠĠ ĠIr Generation Ġ{ Ġcompiler Context , Ġmodule Fragment , Ġplugin Context Ġ-> ĊĠĠĠ Ġmodule Fragment . transform Children ( ĊĠĠĠĠĠ Ġobject Ġ: ĠIr Element Transformer < Unit > Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġvisit Set Field ( expression : ĠIr Set Field , Ġdata : ĠUnit ): ĠIr Expression Ġ= ĊĠĠĠĠĠĠĠĠĠ Ġexpression . transform Children ( this , ĠUnit ). let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġf ( Ir Utils ( plugin Context , Ġcompiler Context , Ġmodule Fragment ), Ġexpression ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġsuper . visit Set Field ( expression , Ġdata ) ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠ ĠUnit ĊĠĠĠ Ġ) ĊĠ Ġ} ĊĊĠ Ġfun ĠMeta . ir Member Access ( f : ĠIr Utils .( Ir Member Access Expression <* >) Ġ-> ĠIr Element ?): ĠIR Generation Ġ= ĊĠĠĠĠĠ ĠIr Generation Ġ{ Ġcompiler Context , Ġmodule Fragment , Ġplugin Context Ġ-> ĊĠĠĠ Ġmodule Fragment . transform Children ( ĊĠĠĠĠĠ Ġobject Ġ: ĠIr Element Transformer < Unit > Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġvisit Member Access ( ĊĠĠĠĠĠĠĠĠĠ Ġexpression : ĠIr Member Access Expression <* >, ĊĠĠĠĠĠĠĠĠĠ Ġdata : ĠUnit ĊĠĠĠĠĠĠĠ Ġ): ĠIr Element Ġ= ĊĠĠĠĠĠĠĠĠĠ Ġexpression . transform Children ( this , ĠUnit ). let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġf ( Ir Utils ( plugin Context , Ġcompiler Context , Ġmodule Fragment ), Ġexpression ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġsuper . visit Member Access ( expression , Ġdata ) ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠ ĠUnit ĊĠĠĠ Ġ) ĊĠ Ġ} ĊĊĠ Ġfun ĠMeta . ir Function Access ( f : ĠIr Utils .( Ir Function Access Expression ) Ġ-> ĠIr Element ?): ĠIR Generation Ġ= ĊĠĠĠĠĠ ĠIr Generation Ġ{ Ġcompiler Context , Ġmodule Fragment , Ġplugin Context Ġ-> ĊĠĠĠ Ġmodule Fragment . transform Children ( ĊĠĠĠĠĠ Ġobject Ġ: ĠIr Element Transformer < Unit > Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġvisit Function Access ( ĊĠĠĠĠĠĠĠĠĠ Ġexpression : ĠIr Function Access Expression , ĊĠĠĠĠĠĠĠĠĠ Ġdata : ĠUnit ĊĠĠĠĠĠĠĠ Ġ): ĠIr Element Ġ= ĊĠĠĠĠĠĠĠĠĠ Ġexpression . transform Children ( this , ĠUnit ). let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġf ( Ir Utils ( plugin Context , Ġcompiler Context , Ġmodule Fragment ), Ġexpression ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġsuper . visit Function Access ( expression , Ġdata ) ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠ ĠUnit ĊĠĠĠ Ġ) ĊĠ Ġ} ĊĊĠ Ġfun ĠMeta . ir Call ( f : ĠIr Utils .( Ir Call ) Ġ-> ĠIr Element ?): ĠIR Generation Ġ= ĊĠĠĠĠĠ ĠIr Generation Ġ{ Ġcompiler Context , Ġmodule Fragment , Ġplugin Context Ġ-> ĊĠĠĠ Ġmodule Fragment . transform Children ( ĊĠĠĠĠĠ Ġobject Ġ: ĠIr Element Transformer < Unit > Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġvisit Call ( expression : ĠIr Call , Ġdata : ĠUnit ): ĠIr Element Ġ= ĊĠĠĠĠĠĠĠĠĠ Ġexpression . transform Children ( this , ĠUnit ). let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġf ( Ir Utils ( plugin Context , Ġcompiler Context , Ġmodule Fragment ), Ġexpression ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġsuper . visit Call ( expression , Ġdata ) ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠ ĠUnit ĊĠĠĠ Ġ) ĊĠ Ġ} ĊĊĠ Ġfun ĠMeta . ir Constructor Call ( f : ĠIr Utils .( Ir Constructor Call ) Ġ-> ĠIr Element ?): ĠIR Generation Ġ= ĊĠĠĠĠĠ ĠIr Generation Ġ{ Ġcompiler Context , Ġmodule Fragment , Ġplugin Context Ġ-> ĊĠĠĠ Ġmodule Fragment . transform Children ( ĊĠĠĠĠĠ Ġobject Ġ: ĠIr Element Transformer < Unit > Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġvisit Constructor Call ( expression : ĠIr Constructor Call , Ġdata : ĠUnit ): ĠIr Element Ġ= ĊĠĠĠĠĠĠĠĠĠ Ġexpression . transform Children ( this , ĠUnit ). let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġf ( Ir Utils ( plugin Context , Ġcompiler Context , Ġmodule Fragment ), Ġexpression ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġsuper . visit Constructor Call ( expression , Ġdata ) ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠ ĠUnit ĊĠĠĠ Ġ) ĊĠ Ġ} ĊĊĠ Ġfun ĠMeta . ir Delegating Constructor Call ( ĊĠĠĠ Ġf : ĠIr Utils .( Ir Delegating Constructor Call ) Ġ-> ĠIr Element ? ĊĠ Ġ): ĠIR Generation Ġ= ĠIr Generation Ġ{ Ġcompiler Context , Ġmodule Fragment , Ġplugin Context Ġ-> ĊĠĠĠ Ġmodule Fragment . transform Children ( ĊĠĠĠĠĠ Ġobject Ġ: ĠIr Element Transformer < Unit > Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġvisit Delegating Constructor Call ( ĊĠĠĠĠĠĠĠĠĠ Ġexpression : ĠIr Delegating Constructor Call , ĊĠĠĠĠĠĠĠĠĠ Ġdata : ĠUnit ĊĠĠĠĠĠĠĠ Ġ): ĠIr Element Ġ= ĊĠĠĠĠĠĠĠĠĠ Ġexpression . transform Children ( this , ĠUnit ). let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġf ( Ir Utils ( plugin Context , Ġcompiler Context , Ġmodule Fragment ), Ġexpression ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġsuper . visit Delegating Constructor Call ( expression , Ġdata ) ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠ ĠUnit ĊĠĠĠ Ġ) ĊĠ Ġ} ĊĊĠ Ġfun ĠMeta . ir Enum Constructor Call ( f : ĠIr Utils .( Ir Enum Constructor Call ) Ġ-> ĠIr Element ?): ĠIR Generation Ġ= ĊĠĠĠĠĠ ĠIr Generation Ġ{ Ġcompiler Context , Ġmodule Fragment , Ġplugin Context Ġ-> ĊĠĠĠ Ġmodule Fragment . transform Children ( ĊĠĠĠĠĠ Ġobject Ġ: ĠIr Element Transformer < Unit > Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġvisit Enum Constructor Call ( ĊĠĠĠĠĠĠĠĠĠ Ġexpression : ĠIr Enum Constructor Call , ĊĠĠĠĠĠĠĠĠĠ Ġdata : ĠUnit ĊĠĠĠĠĠĠĠ Ġ): ĠIr Element Ġ= ĊĠĠĠĠĠĠĠĠĠ Ġexpression . transform Children ( this , ĠUnit ). let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġf ( Ir Utils ( plugin Context , Ġcompiler Context , Ġmodule Fragment ), Ġexpression ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġsuper . visit Enum Constructor Call ( expression , Ġdata ) ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠ ĠUnit ĊĠĠĠ Ġ) ĊĠ Ġ} ĊĊĠ Ġfun ĠMeta . ir GetClass ( f : ĠIr Utils .( Ir GetClass ) Ġ-> ĠIr Expression ?): ĠIR Generation Ġ= ĊĠĠĠĠĠ ĠIr Generation Ġ{ Ġcompiler Context , Ġmodule Fragment , Ġplugin Context Ġ-> ĊĠĠĠ Ġmodule Fragment . transform Children ( ĊĠĠĠĠĠ Ġobject Ġ: ĠIr Element Transformer < Unit > Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġvisit GetClass ( expression : ĠIr GetClass , Ġdata : ĠUnit ): ĠIr Expression Ġ= ĊĠĠĠĠĠĠĠĠĠ Ġexpression . transform Children ( this , ĠUnit ). let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġf ( Ir Utils ( plugin Context , Ġcompiler Context , Ġmodule Fragment ), Ġexpression ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġsuper . visit GetClass ( expression , Ġdata ) ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠ ĠUnit ĊĠĠĠ Ġ) ĊĠ Ġ} ĊĊĠ Ġfun ĠMeta . ir Callable Reference ( f : ĠIr Utils .( Ir Callable Reference <* >) Ġ-> ĠIr Element ?): ĠIR Generation Ġ= ĊĠĠĠĠĠ ĠIr Generation Ġ{ Ġcompiler Context , Ġmodule Fragment , Ġplugin Context Ġ-> ĊĠĠĠ Ġmodule Fragment . transform Children ( ĊĠĠĠĠĠ Ġobject Ġ: ĠIr Element Transformer < Unit > Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġvisit Callable Reference ( ĊĠĠĠĠĠĠĠĠĠ Ġexpression : ĠIr Callable Reference <* >, ĊĠĠĠĠĠĠĠĠĠ Ġdata : ĠUnit ĊĠĠĠĠĠĠĠ Ġ): ĠIr Element Ġ= ĊĠĠĠĠĠĠĠĠĠ Ġexpression . transform Children ( this , ĠUnit ). let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġf ( Ir Utils ( plugin Context , Ġcompiler Context , Ġmodule Fragment ), Ġexpression ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġsuper . visit Callable Reference ( expression , Ġdata ) ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠ ĠUnit ĊĠĠĠ Ġ) ĊĠ Ġ} ĊĊĠ Ġfun ĠMeta . ir Function Reference ( f : ĠIr Utils .( Ir Function Reference ) Ġ-> ĠIr Element ?): ĠIR Generation Ġ= ĊĠĠĠĠĠ ĠIr Generation Ġ{ Ġcompiler Context , Ġmodule Fragment , Ġplugin Context Ġ-> ĊĠĠĠ Ġmodule Fragment . transform Children ( ĊĠĠĠĠĠ Ġobject Ġ: ĠIr Element Transformer < Unit > Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġvisit Function Reference ( ĊĠĠĠĠĠĠĠĠĠ Ġexpression : ĠIr Function Reference , ĊĠĠĠĠĠĠĠĠĠ Ġdata : ĠUnit ĊĠĠĠĠĠĠĠ Ġ): ĠIr Element Ġ= ĊĠĠĠĠĠĠĠĠĠ Ġexpression . transform Children ( this , ĠUnit ). let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġf ( Ir Utils ( plugin Context , Ġcompiler Context , Ġmodule Fragment ), Ġexpression ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġsuper . visit Function Reference ( expression , Ġdata ) ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠ ĠUnit ĊĠĠĠ Ġ) ĊĠ Ġ} ĊĊĠ Ġfun ĠMeta . ir Property Reference ( f : ĠIr Utils .( Ir Property Reference ) Ġ-> ĠIr Element ?): ĠIR Generation Ġ= ĊĠĠĠĠĠ ĠIr Generation Ġ{ Ġcompiler Context , Ġmodule Fragment , Ġplugin Context Ġ-> ĊĠĠĠ Ġmodule Fragment . transform Children ( ĊĠĠĠĠĠ Ġobject Ġ: ĠIr Element Transformer < Unit > Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġvisit Property Reference ( ĊĠĠĠĠĠĠĠĠĠ Ġexpression : ĠIr Property Reference , ĊĠĠĠĠĠĠĠĠĠ Ġdata : ĠUnit ĊĠĠĠĠĠĠĠ Ġ): ĠIr Element Ġ= ĊĠĠĠĠĠĠĠĠĠ Ġexpression . transform Children ( this , ĠUnit ). let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġf ( Ir Utils ( plugin Context , Ġcompiler Context , Ġmodule Fragment ), Ġexpression ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġsuper . visit Property Reference ( expression , Ġdata ) ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠ ĠUnit ĊĠĠĠ Ġ) ĊĠ Ġ} ĊĊĠ Ġfun ĠMeta . ir Local Deleg ated Property Reference ( ĊĠĠĠ Ġf : ĠIr Utils .( Ir Local Deleg ated Property Reference ) Ġ-> ĠIr Element ? ĊĠ Ġ): ĠIR Generation Ġ= ĠIr Generation Ġ{ Ġcompiler Context , Ġmodule Fragment , Ġplugin Context Ġ-> ĊĠĠĠ Ġmodule Fragment . transform Children ( ĊĠĠĠĠĠ Ġobject Ġ: ĠIr Element Transformer < Unit > Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġvisit Local Deleg ated Property Reference ( ĊĠĠĠĠĠĠĠĠĠ Ġexpression : ĠIr Local Deleg ated Property Reference , ĊĠĠĠĠĠĠĠĠĠ Ġdata : ĠUnit ĊĠĠĠĠĠĠĠ Ġ): ĠIr Element Ġ= ĊĠĠĠĠĠĠĠĠĠ Ġexpression . transform Children ( this , ĠUnit ). let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġf ( Ir Utils ( plugin Context , Ġcompiler Context , Ġmodule Fragment ), Ġexpression ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġsuper . visit Local Deleg ated Property Reference ( expression , Ġdata ) ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠ ĠUnit ĊĠĠĠ Ġ) ĊĠ Ġ} ĊĊĠ Ġfun ĠMeta . ir Class Reference ( f : ĠIr Utils .( Ir Class Reference ) Ġ-> ĠIr Expression ?): ĠIR Generation Ġ= ĊĠĠĠĠĠ ĠIr Generation Ġ{ Ġcompiler Context , Ġmodule Fragment , Ġplugin Context Ġ-> ĊĠĠĠ Ġmodule Fragment . transform Children ( ĊĠĠĠĠĠ Ġobject Ġ: ĠIr Element Transformer < Unit > Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġvisit Class Reference ( expression : ĠIr Class Reference , Ġdata : ĠUnit ): ĠIr Expression Ġ= ĊĠĠĠĠĠĠĠĠĠ Ġexpression . transform Children ( this , ĠUnit ). let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġf ( Ir Utils ( plugin Context , Ġcompiler Context , Ġmodule Fragment ), Ġexpression ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġsuper . visit Class Reference ( expression , Ġdata ) ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠ ĠUnit ĊĠĠĠ Ġ) ĊĠ Ġ} ĊĊĠ Ġfun ĠMeta . ir Instance Initializer Call ( ĊĠĠĠ Ġf : ĠIr Utils .( Ir Instance Initializer Call ) Ġ-> ĠIr Expression ? ĊĠ Ġ): ĠIR Generation Ġ= ĠIr Generation Ġ{ Ġcompiler Context , Ġmodule Fragment , Ġplugin Context Ġ-> ĊĠĠĠ Ġmodule Fragment . transform Children ( ĊĠĠĠĠĠ Ġobject Ġ: ĠIr Element Transformer < Unit > Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġvisit Instance Initializer Call ( ĊĠĠĠĠĠĠĠĠĠ Ġexpression : ĠIr Instance Initializer Call , ĊĠĠĠĠĠĠĠĠĠ Ġdata : ĠUnit ĊĠĠĠĠĠĠĠ Ġ): ĠIr Expression Ġ= ĊĠĠĠĠĠĠĠĠĠ Ġexpression . transform Children ( this , ĠUnit ). let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġf ( Ir Utils ( plugin Context , Ġcompiler Context , Ġmodule Fragment ), Ġexpression ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġsuper . visit Instance Initializer Call ( expression , Ġdata ) ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠ ĠUnit ĊĠĠĠ Ġ) ĊĠ Ġ} ĊĊĠ Ġfun ĠMeta . ir Type Operator ( f : ĠIr Utils .( Ir Type Operator Call ) Ġ-> ĠIr Expression ?): ĠIR Generation Ġ= ĊĠĠĠĠĠ ĠIr Generation Ġ{ Ġcompiler Context , Ġmodule Fragment , Ġplugin Context Ġ-> ĊĠĠĠ Ġmodule Fragment . transform Children ( ĊĠĠĠĠĠ Ġobject Ġ: ĠIr Element Transformer < Unit > Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġvisit Type Operator ( expression : ĠIr Type Operator Call , Ġdata : ĠUnit ): ĠIr Expression Ġ= ĊĠĠĠĠĠĠĠĠĠ Ġexpression . transform Children ( this , ĠUnit ). let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġf ( Ir Utils ( plugin Context , Ġcompiler Context , Ġmodule Fragment ), Ġexpression ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġsuper . visit Type Operator ( expression , Ġdata ) ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠ ĠUnit ĊĠĠĠ Ġ) ĊĠ Ġ} ĊĊĠ Ġfun ĠMeta . ir When ( f : ĠIr Utils .( Ir When ) Ġ-> ĠIr Expression ?): ĠIR Generation Ġ= ĊĠĠĠĠĠ ĠIr Generation Ġ{ Ġcompiler Context , Ġmodule Fragment , Ġplugin Context Ġ-> ĊĠĠĠ Ġmodule Fragment . transform Children ( ĊĠĠĠĠĠ Ġobject Ġ: ĠIr Element Transformer < Unit > Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġvisit When ( expression : ĠIr When , Ġdata : ĠUnit ): ĠIr Expression Ġ= ĊĠĠĠĠĠĠĠĠĠ Ġexpression . transform Children ( this , ĠUnit ). let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġf ( Ir Utils ( plugin Context , Ġcompiler Context , Ġmodule Fragment ), Ġexpression ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġsuper . visit When ( expression , Ġdata ) ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠ ĠUnit ĊĠĠĠ Ġ) ĊĠ Ġ} ĊĊĠ Ġfun ĠMeta . ir Branch ( f : ĠIr Utils .( Ir Branch ) Ġ-> ĠIr Branch ?): ĠIR Generation Ġ= ĊĠĠĠĠĠ ĠIr Generation Ġ{ Ġcompiler Context , Ġmodule Fragment , Ġplugin Context Ġ-> ĊĠĠĠ Ġmodule Fragment . transform Children ( ĊĠĠĠĠĠ Ġobject Ġ: ĠIr Element Transformer < Unit > Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġvisit Branch ( branch : ĠIr Branch , Ġdata : ĠUnit ): ĠIr Branch Ġ= ĊĠĠĠĠĠĠĠĠĠ Ġbranch . transform Children ( this , ĠUnit ). let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġf ( Ir Utils ( plugin Context , Ġcompiler Context , Ġmodule Fragment ), Ġbranch ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġsuper . visit Branch ( branch , Ġdata ) ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠ ĠUnit ĊĠĠĠ Ġ) ĊĠ Ġ} ĊĊĠ Ġfun ĠMeta . ir Else Branch ( f : ĠIr Utils .( Ir Else Branch ) Ġ-> ĠIr Else Branch ?): ĠIR Generation Ġ= ĊĠĠĠĠĠ ĠIr Generation Ġ{ Ġcompiler Context , Ġmodule Fragment , Ġplugin Context Ġ-> ĊĠĠĠ Ġmodule Fragment . transform Children ( ĊĠĠĠĠĠ Ġobject Ġ: ĠIr Element Transformer < Unit > Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġvisit Else Branch ( branch : ĠIr Else Branch , Ġdata : ĠUnit ): ĠIr Else Branch Ġ= ĊĠĠĠĠĠĠĠĠĠ Ġbranch . transform Children ( this , ĠUnit ). let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġf ( Ir Utils ( plugin Context , Ġcompiler Context , Ġmodule Fragment ), Ġbranch ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġsuper . visit Else Branch ( branch , Ġdata ) ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠ ĠUnit ĊĠĠĠ Ġ) ĊĠ Ġ} ĊĊĠ Ġfun ĠMeta . ir Loop ( f : ĠIr Utils .( Ir Loop ) Ġ-> ĠIr Expression ?): ĠIR Generation Ġ= ĊĠĠĠĠĠ ĠIr Generation Ġ{ Ġcompiler Context , Ġmodule Fragment , Ġplugin Context Ġ-> ĊĠĠĠ Ġmodule Fragment . transform Children ( ĊĠĠĠĠĠ Ġobject Ġ: ĠIr Element Transformer < Unit > Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġvisit Loop ( loop : ĠIr Loop , Ġdata : ĠUnit ): ĠIr Expression Ġ= ĊĠĠĠĠĠĠĠĠĠ Ġloop . transform Children ( this , ĠUnit ). let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġf ( Ir Utils ( plugin Context , Ġcompiler Context , Ġmodule Fragment ), Ġloop ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġsuper . visit Loop ( loop , Ġdata ) ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠ ĠUnit ĊĠĠĠ Ġ) ĊĠ Ġ} ĊĊĠ Ġfun ĠMeta . ir While Loop ( f : ĠIr Utils .( Ir While Loop ) Ġ-> ĠIr Expression ?): ĠIR Generation Ġ= ĊĠĠĠĠĠ ĠIr Generation Ġ{ Ġcompiler Context , Ġmodule Fragment , Ġplugin Context Ġ-> ĊĠĠĠ Ġmodule Fragment . transform Children ( ĊĠĠĠĠĠ Ġobject Ġ: ĠIr Element Transformer < Unit > Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġvisit While Loop ( loop : ĠIr While Loop , Ġdata : ĠUnit ): ĠIr Expression Ġ= ĊĠĠĠĠĠĠĠĠĠ Ġloop . transform Children ( this , ĠUnit ). let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġf ( Ir Utils ( plugin Context , Ġcompiler Context , Ġmodule Fragment ), Ġloop ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġsuper . visit While Loop ( loop , Ġdata ) ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠ ĠUnit ĊĠĠĠ Ġ) ĊĠ Ġ} ĊĊĠ Ġfun ĠMeta . ir Do While Loop ( f : ĠIr Utils .( Ir Do While Loop ) Ġ-> ĠIr Expression ?): ĠIR Generation Ġ= ĊĠĠĠĠĠ ĠIr Generation Ġ{ Ġcompiler Context , Ġmodule Fragment , Ġplugin Context Ġ-> ĊĠĠĠ Ġmodule Fragment . transform Children ( ĊĠĠĠĠĠ Ġobject Ġ: ĠIr Element Transformer < Unit > Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġvisit Do While Loop ( loop : ĠIr Do While Loop , Ġdata : ĠUnit ): ĠIr Expression Ġ= ĊĠĠĠĠĠĠĠĠĠ Ġloop . transform Children ( this , ĠUnit ). let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġf ( Ir Utils ( plugin Context , Ġcompiler Context , Ġmodule Fragment ), Ġloop ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġsuper . visit Do While Loop ( loop , Ġdata ) ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠ ĠUnit ĊĠĠĠ Ġ) ĊĠ Ġ} ĊĊĠ Ġfun ĠMeta . ir Try ( f : ĠIr Utils .( Ir Try ) Ġ-> ĠIr Expression ?): ĠIR Generation Ġ= ĊĠĠĠĠĠ ĠIr Generation Ġ{ Ġcompiler Context , Ġmodule Fragment , Ġplugin Context Ġ-> ĊĠĠĠ Ġmodule Fragment . transform Children ( ĊĠĠĠĠĠ Ġobject Ġ: ĠIr Element Transformer < Unit > Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġvisit Try ( a Try : ĠIr Try , Ġdata : ĠUnit ): ĠIr Expression Ġ= ĊĠĠĠĠĠĠĠĠĠ Ġa Try . transform Children ( this , ĠUnit ). let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġf ( Ir Utils ( plugin Context , Ġcompiler Context , Ġmodule Fragment ), Ġa Try ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġsuper . visit Try ( a Try , Ġdata ) ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠ ĠUnit ĊĠĠĠ Ġ) ĊĠ Ġ} ĊĊĠ Ġfun ĠMeta . ir Catch ( f : ĠIr Utils .( Ir Catch ) Ġ-> ĠIr Catch ?): ĠIR Generation Ġ= ĊĠĠĠĠĠ ĠIr Generation Ġ{ Ġcompiler Context , Ġmodule Fragment , Ġplugin Context Ġ-> ĊĠĠĠ Ġmodule Fragment . transform Children ( ĊĠĠĠĠĠ Ġobject Ġ: ĠIr Element Transformer < Unit > Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġvisit Catch ( aC atch : ĠIr Catch , Ġdata : ĠUnit ): ĠIr Catch Ġ= ĊĠĠĠĠĠĠĠĠĠ Ġa Catch . transform Children ( this , ĠUnit ). let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġf ( Ir Utils ( plugin Context , Ġcompiler Context , Ġmodule Fragment ), Ġa Catch ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġsuper . visit Catch ( aC atch , Ġdata ) ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠ ĠUnit ĊĠĠĠ Ġ) ĊĠ Ġ} ĊĊĠ Ġfun ĠMeta . ir Break Continue ( f : ĠIr Utils .( Ir Break Continue ) Ġ-> ĠIr Expression ?): ĠIR Generation Ġ= ĊĠĠĠĠĠ ĠIr Generation Ġ{ Ġcompiler Context , Ġmodule Fragment , Ġplugin Context Ġ-> ĊĠĠĠ Ġmodule Fragment . transform Children ( ĊĠĠĠĠĠ Ġobject Ġ: ĠIr Element Transformer < Unit > Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġvisit Break Continue ( jump : ĠIr Break Continue , Ġdata : ĠUnit ): ĠIr Expression Ġ= ĊĠĠĠĠĠĠĠĠĠ Ġjump . transform Children ( this , ĠUnit ). let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġf ( Ir Utils ( plugin Context , Ġcompiler Context , Ġmodule Fragment ), Ġjump ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġsuper . visit Break Continue ( jump , Ġdata ) ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠ ĠUnit ĊĠĠĠ Ġ) ĊĠ Ġ} ĊĊĠ Ġfun ĠMeta . ir Break ( f : ĠIr Utils .( Ir Break ) Ġ-> ĠIr Expression ?): ĠIR Generation Ġ= ĊĠĠĠĠĠ ĠIr Generation Ġ{ Ġcompiler Context , Ġmodule Fragment , Ġplugin Context Ġ-> ĊĠĠĠ Ġmodule Fragment . transform Children ( ĊĠĠĠĠĠ Ġobject Ġ: ĠIr Element Transformer < Unit > Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġvisit Break ( jump : ĠIr Break , Ġdata : ĠUnit ): ĠIr Expression Ġ= ĊĠĠĠĠĠĠĠĠĠ Ġjump . transform Children ( this , ĠUnit ). let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġf ( Ir Utils ( plugin Context , Ġcompiler Context , Ġmodule Fragment ), Ġjump ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġsuper . visit Break ( jump , Ġdata ) ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠ ĠUnit ĊĠĠĠ Ġ) ĊĠ Ġ} ĊĊĠ Ġfun ĠMeta . ir Continue ( f : ĠIr Utils .( Ir Continue ) Ġ-> ĠIr Expression ?): ĠIR Generation Ġ= ĊĠĠĠĠĠ ĠIr Generation Ġ{ Ġcompiler Context , Ġmodule Fragment , Ġplugin Context Ġ-> ĊĠĠĠ Ġmodule Fragment . transform Children ( ĊĠĠĠĠĠ Ġobject Ġ: ĠIr Element Transformer < Unit > Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġvisit Continue ( jump : ĠIr Continue , Ġdata : ĠUnit ): ĠIr Expression Ġ= ĊĠĠĠĠĠĠĠĠĠ Ġjump . transform Children ( this , ĠUnit ). let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġf ( Ir Utils ( plugin Context , Ġcompiler Context , Ġmodule Fragment ), Ġjump ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġsuper . visit Continue ( jump , Ġdata ) ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠ ĠUnit ĊĠĠĠ Ġ) ĊĠ Ġ} ĊĊĠ Ġfun ĠMeta . ir Return ( f : ĠIr Utils .( Ir Return ) Ġ-> ĠIr Expression ?): ĠIR Generation Ġ= ĊĠĠĠĠĠ ĠIr Generation Ġ{ Ġcompiler Context , Ġmodule Fragment , Ġplugin Context Ġ-> ĊĠĠĠ Ġmodule Fragment . transform Children ( ĊĠĠĠĠĠ Ġobject Ġ: ĠIr Element Transformer < Unit > Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġvisit Return ( expression : ĠIr Return , Ġdata : ĠUnit ): ĠIr Expression Ġ= ĊĠĠĠĠĠĠĠĠĠ Ġexpression . transform Children ( this , ĠUnit ). let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġf ( Ir Utils ( plugin Context , Ġcompiler Context , Ġmodule Fragment ), Ġexpression ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġsuper . visit Return ( expression , Ġdata ) ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠ ĠUnit ĊĠĠĠ Ġ) ĊĠ Ġ} ĊĊĠ Ġfun ĠMeta . ir Throw ( f : ĠIr Utils .( Ir Throw ) Ġ-> ĠIr Expression ?): ĠIR Generation Ġ= ĊĠĠĠĠĠ ĠIr Generation Ġ{ Ġcompiler Context , Ġmodule Fragment , Ġplugin Context Ġ-> ĊĠĠĠ Ġmodule Fragment . transform Children ( ĊĠĠĠĠĠ Ġobject Ġ: ĠIr Element Transformer < Unit > Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġvisit Throw ( expression : ĠIr Throw , Ġdata : ĠUnit ): ĠIr Expression Ġ= ĊĠĠĠĠĠĠĠĠĠ Ġexpression . transform Children ( this , ĠUnit ). let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġf ( Ir Utils ( plugin Context , Ġcompiler Context , Ġmodule Fragment ), Ġexpression ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġsuper . visit Throw ( expression , Ġdata ) ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠ ĠUnit ĊĠĠĠ Ġ) ĊĠ Ġ} ĊĊĠ Ġfun ĠMeta . ir Dynamic Expression ( f : ĠIr Utils .( Ir Dynamic Expression ) Ġ-> ĠIr Expression ?): ĠIR Generation Ġ= ĊĠĠĠĠĠ ĠIr Generation Ġ{ Ġcompiler Context , Ġmodule Fragment , Ġplugin Context Ġ-> ĊĠĠĠ Ġmodule Fragment . transform Children ( ĊĠĠĠĠĠ Ġobject Ġ: ĠIr Element Transformer < Unit > Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġvisit Dynamic Expression ( ĊĠĠĠĠĠĠĠĠĠ Ġexpression : ĠIr Dynamic Expression , ĊĠĠĠĠĠĠĠĠĠ Ġdata : ĠUnit ĊĠĠĠĠĠĠĠ Ġ): ĠIr Expression Ġ= ĊĠĠĠĠĠĠĠĠĠ Ġexpression . transform Children ( this , ĠUnit ). let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġf ( Ir Utils ( plugin Context , Ġcompiler Context , Ġmodule Fragment ), Ġexpression ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġsuper . visit Dynamic Expression ( expression , Ġdata ) ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠ ĠUnit ĊĠĠĠ Ġ) ĊĠ Ġ} ĊĊĠ Ġfun ĠMeta . ir Dynamic Operator Expression ( ĊĠĠĠ Ġf : ĠIr Utils .( Ir Dynamic Operator Expression ) Ġ-> ĠIr Expression ? ĊĠ Ġ): ĠIR Generation Ġ= ĠIr Generation Ġ{ Ġcompiler Context , Ġmodule Fragment , Ġplugin Context Ġ-> ĊĠĠĠ Ġmodule Fragment . transform Children ( ĊĠĠĠĠĠ Ġobject Ġ: ĠIr Element Transformer < Unit > Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġvisit Dynamic Operator Expression ( ĊĠĠĠĠĠĠĠĠĠ Ġexpression : ĠIr Dynamic Operator Expression , ĊĠĠĠĠĠĠĠĠĠ Ġdata : ĠUnit ĊĠĠĠĠĠĠĠ Ġ): ĠIr Expression Ġ= ĊĠĠĠĠĠĠĠĠĠ Ġexpression . transform Children ( this , ĠUnit ). let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġf ( Ir Utils ( plugin Context , Ġcompiler Context , Ġmodule Fragment ), Ġexpression ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġsuper . visit Dynamic Operator Expression ( expression , Ġdata ) ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠ ĠUnit ĊĠĠĠ Ġ) ĊĠ Ġ} ĊĊĠ Ġfun ĠMeta . ir Dynamic Member Expression ( ĊĠĠĠ Ġf : ĠIr Utils .( Ir Dynamic Member Expression ) Ġ-> ĠIr Expression ? ĊĠ Ġ): ĠIR Generation Ġ= ĠIr Generation Ġ{ Ġcompiler Context , Ġmodule Fragment , Ġplugin Context Ġ-> ĊĠĠĠ Ġmodule Fragment . transform Children ( ĊĠĠĠĠĠ Ġobject Ġ: ĠIr Element Transformer < Unit > Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġvisit Dynamic Member Expression ( ĊĠĠĠĠĠĠĠĠĠ Ġexpression : ĠIr Dynamic Member Expression , ĊĠĠĠĠĠĠĠĠĠ Ġdata : ĠUnit ĊĠĠĠĠĠĠĠ Ġ): ĠIr Expression Ġ= ĊĠĠĠĠĠĠĠĠĠ Ġexpression . transform Children ( this , ĠUnit ). let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġf ( Ir Utils ( plugin Context , Ġcompiler Context , Ġmodule Fragment ), Ġexpression ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġsuper . visit Dynamic Member Expression ( expression , Ġdata ) ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠ ĠUnit ĊĠĠĠ Ġ) ĊĠ Ġ} ĊĊĠ Ġfun ĠMeta . ir Error Declaration ( f : ĠIr Utils .( Ir Error Declaration ) Ġ-> ĠIr Statement ?): ĠIR Generation Ġ= ĊĠĠĠĠĠ ĠIr Generation Ġ{ Ġcompiler Context , Ġmodule Fragment , Ġplugin Context Ġ-> ĊĠĠĠ Ġmodule Fragment . transform Children ( ĊĠĠĠĠĠ Ġobject Ġ: ĠIr Element Transformer < Unit > Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġvisit Error Declaration ( ĊĠĠĠĠĠĠĠĠĠ Ġexpression : ĠIr Error Declaration , ĊĠĠĠĠĠĠĠĠĠ Ġdata : ĠUnit ĊĠĠĠĠĠĠĠ Ġ): ĠIr Statement Ġ= ĊĠĠĠĠĠĠĠĠĠ Ġexpression . transform Children ( this , ĠUnit ). let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġf ( Ir Utils ( plugin Context , Ġcompiler Context , Ġmodule Fragment ), Ġexpression ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġsuper . visit Error Declaration ( expression , Ġdata ) ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠ ĠUnit ĊĠĠĠ Ġ) ĊĠ Ġ} ĊĊĠ Ġfun ĠMeta . ir Error Expression ( f : ĠIr Utils .( Ir Error Expression ) Ġ-> ĠIr Expression ?): ĠIR Generation Ġ= ĊĠĠĠĠĠ ĠIr Generation Ġ{ Ġcompiler Context , Ġmodule Fragment , Ġplugin Context Ġ-> ĊĠĠĠ Ġmodule Fragment . transform Children ( ĊĠĠĠĠĠ Ġobject Ġ: ĠIr Element Transformer < Unit > Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġvisit Error Expression ( expression : ĠIr Error Expression , Ġdata : ĠUnit ): ĠIr Expression Ġ= ĊĠĠĠĠĠĠĠĠĠ Ġexpression . transform Children ( this , ĠUnit ). let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġf ( Ir Utils ( plugin Context , Ġcompiler Context , Ġmodule Fragment ), Ġexpression ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġsuper . visit Error Expression ( expression , Ġdata ) ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠ ĠUnit ĊĠĠĠ Ġ) ĊĠ Ġ} ĊĊĠ Ġfun ĠMeta . ir Error Call Expression ( ĊĠĠĠ Ġf : ĠIr Utils .( Ir Error Call Expression ) Ġ-> ĠIr Expression ? ĊĠ Ġ): ĠIR Generation Ġ= ĠIr Generation Ġ{ Ġcompiler Context , Ġmodule Fragment , Ġplugin Context Ġ-> ĊĠĠĠ Ġmodule Fragment . transform Children ( ĊĠĠĠĠĠ Ġobject Ġ: ĠIr Element Transformer < Unit > Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġvisit Error Call Expression ( ĊĠĠĠĠĠĠĠĠĠ Ġexpression : ĠIr Error Call Expression , ĊĠĠĠĠĠĠĠĠĠ Ġdata : ĠUnit ĊĠĠĠĠĠĠĠ Ġ): ĠIr Expression Ġ= ĊĠĠĠĠĠĠĠĠĠ Ġexpression . transform Children ( this , ĠUnit ). let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġf ( Ir Utils ( plugin Context , Ġcompiler Context , Ġmodule Fragment ), Ġexpression ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġsuper . visit Error Call Expression ( expression , Ġdata ) ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠ ĠUnit ĊĠĠĠ Ġ) ĊĠ Ġ} ĊĊĠ Ġfun ĠMeta . ir Dump (): ĠIR Generation Ġ= ĠIr Generation Ġ{ Ġcompiler Context , Ġmodule Fragment , Ġplugin Context Ġ-> ĊĠĠĠ Ġprintln ( module Fragment . dump ()) ĊĠ Ġ} ĊĊĠ Ġfun ĠMeta . ir Dump Kotlin Like ( ĊĠĠĠ Ġoptions : ĠKotlin Like Dump Options Ġ= ĠKotlin Like Dump Options () ĊĠ Ġ): ĠIR Generation Ġ= ĠIr Generation Ġ{ Ġcompiler Context , Ġmodule Fragment , Ġplugin Context Ġ-> ĊĠĠĠ Ġprintln ( module Fragment . dump Kotlin Like ( options )) ĊĠ Ġ} Ċ } Ċ