/* Ċ Ġ* ĠCopyright Ġ 2 0 1 0 - 2 0 2 1 ĠJetBrains Ġs . r . o . Ġand ĠKotlin ĠProgramming ĠLanguage Ġcontributors . Ċ Ġ* ĠUse Ġof Ġthis Ġsource Ġcode Ġis Ġgoverned Ġby Ġthe ĠApache Ġ 2 . 0 Ġlicense Ġthat Ġcan Ġbe Ġfound Ġin Ġthe Ġlicense / LICENSE . txt Ġfile . Ċ Ġ*/ Ċ Ċ package Ġorg . jetbrains . kotlin . fir . resolve . dfa . cfg Ċ Ċ abstract Ġclass ĠControl Flow Graph Visitor < out ĠR , Ġin ĠD > Ġ{ ĊĠĠĠ Ġabstract Ġfun Ġvisit Node ( node : ĠCFG Node <* >, Ġdata : ĠD ): ĠR ĊĊĠĠĠ Ġ// Ġ-------------------------------- --- ĠSimple Ġfunction Ġ-------------------------------- --- ĊĊĠĠĠ Ġopen Ġfun Ġvisit Function Enter Node ( node : ĠFunction Enter Node , Ġdata : ĠD ): ĠR Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġvisit Node ( node , Ġdata ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġopen Ġfun Ġvisit Function Exit Node ( node : ĠFunction Exit Node , Ġdata : ĠD ): ĠR Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġvisit Node ( node , Ġdata ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġopen Ġfun Ġvisit Local Function Declaration Node ( node : ĠLocal Function Declaration Node , Ġdata : ĠD ): ĠR Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġvisit Node ( node , Ġdata ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Ġ-------------------------------- --- ĠDefault Ġarguments Ġ-------------------------------- --- ĊĊĠĠĠ Ġopen Ġfun Ġvisit Exit Default Arguments Node ( node : ĠExit Default Arguments Node , Ġdata : ĠD ): ĠR Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġvisit Node ( node , Ġdata ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġopen Ġfun Ġvisit Enter Default Arguments Node ( node : ĠEnter Default Arguments Node , Ġdata : ĠD ): ĠR Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġvisit Node ( node , Ġdata ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Ġ-------------------------------- --- ĠAn onymous Ġfunction Ġ-------------------------------- --- ĊĊĠĠĠ Ġopen Ġfun Ġvisit Post p oned Lambda Enter Node ( node : ĠPost p oned Lambda Enter Node , Ġdata : ĠD ): ĠR Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġvisit Node ( node , Ġdata ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġopen Ġfun Ġvisit Post p oned Lambda Exit Node ( node : ĠPost p oned Lambda Exit Node , Ġdata : ĠD ): ĠR Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġvisit Node ( node , Ġdata ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġopen Ġfun Ġvisit Union Function Call Arguments Node ( node : ĠUnion Function Call Arguments Node , Ġdata : ĠD ): ĠR Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġvisit Node ( node , Ġdata ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġopen Ġfun Ġvisit Anonymous Function Expression Exit Node ( node : ĠAn onymous Function Expression Exit Node , Ġdata : ĠD ): ĠR Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġvisit Node ( node , Ġdata ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Ġ-------------------------------- --- ĠClasses Ġ-------------------------------- --- ĊĊĠĠĠ Ġopen Ġfun Ġvisit Anonymous Object Exit Node ( node : ĠAn onymous Object Exit Node , Ġdata : ĠD ): ĠR Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġvisit Node ( node , Ġdata ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġopen Ġfun Ġvisit Anonymous Object Expression Exit Node ( node : ĠAn onymous Object Expression Exit Node , Ġdata : ĠD ): ĠR Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġvisit Node ( node , Ġdata ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġopen Ġfun Ġvisit Class Enter Node ( node : ĠClass Enter Node , Ġdata : ĠD ): ĠR Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġvisit Node ( node , Ġdata ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġopen Ġfun Ġvisit Class Exit Node ( node : ĠClass Exit Node , Ġdata : ĠD ): ĠR Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġvisit Node ( node , Ġdata ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġopen Ġfun Ġvisit Local Class Exit Node ( node : ĠLocal Class Exit Node , Ġdata : ĠD ): ĠR Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġvisit Node ( node , Ġdata ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Ġ-------------------------------- --- ĠInitialization Ġ-------------------------------- --- ĊĊĠĠĠ Ġopen Ġfun Ġvisit Part Of Class Initialization Node ( node : ĠPart Of Class Initialization Node , Ġdata : ĠD ): ĠR Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġvisit Node ( node , Ġdata ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Ġ-------------------------------- --- ĠProperty Ġ-------------------------------- --- ĊĊĠĠĠ Ġopen Ġfun Ġvisit Property Initializer Enter Node ( node : ĠProperty Initializer Enter Node , Ġdata : ĠD ): ĠR Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġvisit Node ( node , Ġdata ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġopen Ġfun Ġvisit Property Initializer Exit Node ( node : ĠProperty Initializer Exit Node , Ġdata : ĠD ): ĠR Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġvisit Node ( node , Ġdata ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Ġ-------------------------------- --- ĠField Ġ-------------------------------- --- ĊĊĠĠĠ Ġopen Ġfun Ġvisit Field Initializer Enter Node ( node : ĠField Initializer Enter Node , Ġdata : ĠD ): ĠR Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġvisit Node ( node , Ġdata ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġopen Ġfun Ġvisit Field Initializer Exit Node ( node : ĠField Initializer Exit Node , Ġdata : ĠD ): ĠR Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġvisit Node ( node , Ġdata ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Ġ-------------------------------- --- ĠInit Ġ-------------------------------- --- ĊĊĠĠĠ Ġopen Ġfun Ġvisit Init Block Enter Node ( node : ĠInit Block Enter Node , Ġdata : ĠD ): ĠR Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġvisit Node ( node , Ġdata ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġopen Ġfun Ġvisit Init Block Exit Node ( node : ĠInit Block Exit Node , Ġdata : ĠD ): ĠR Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġvisit Node ( node , Ġdata ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Ġ-------------------------------- --- ĠBlock Ġ-------------------------------- --- ĊĊĠĠĠ Ġopen Ġfun Ġvisit Block Enter Node ( node : ĠBlock Enter Node , Ġdata : ĠD ): ĠR Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġvisit Node ( node , Ġdata ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġopen Ġfun Ġvisit Block Exit Node ( node : ĠBlock Exit Node , Ġdata : ĠD ): ĠR Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġvisit Node ( node , Ġdata ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Ġ-------------------------------- --- ĠWhen Ġ-------------------------------- --- ĊĊĠĠĠ Ġopen Ġfun Ġvisit When Enter Node ( node : ĠWhen Enter Node , Ġdata : ĠD ): ĠR Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġvisit Node ( node , Ġdata ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġopen Ġfun Ġvisit When Exit Node ( node : ĠWhen Exit Node , Ġdata : ĠD ): ĠR Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġvisit Node ( node , Ġdata ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġopen Ġfun Ġvisit When Branch Condition Enter Node ( node : ĠWhen Branch Condition Enter Node , Ġdata : ĠD ): ĠR Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġvisit Node ( node , Ġdata ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġopen Ġfun Ġvisit When Branch Condition Exit Node ( node : ĠWhen Branch Condition Exit Node , Ġdata : ĠD ): ĠR Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġvisit Node ( node , Ġdata ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġopen Ġfun Ġvisit When Branch Result Enter Node ( node : ĠWhen Branch Result Enter Node , Ġdata : ĠD ): ĠR Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġvisit Node ( node , Ġdata ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġopen Ġfun Ġvisit When Branch Result Exit Node ( node : ĠWhen Branch Result Exit Node , Ġdata : ĠD ): ĠR Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġvisit Node ( node , Ġdata ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġopen Ġfun Ġvisit When Synt hetic Else Branch Node ( node : ĠWhen Synt hetic Else Branch Node , Ġdata : ĠD ): ĠR Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġvisit Node ( node , Ġdata ) ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ// Ġ-------------------------------- --- ĠLoop Ġ-------------------------------- --- ĊĊĠĠĠ Ġopen Ġfun Ġvisit Loop Enter Node ( node : ĠLoop Enter Node , Ġdata : ĠD ): ĠR Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġvisit Node ( node , Ġdata ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġopen Ġfun Ġvisit Loop Block Enter Node ( node : ĠLoop Block Enter Node , Ġdata : ĠD ): ĠR Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġvisit Node ( node , Ġdata ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġopen Ġfun Ġvisit Loop Block Exit Node ( node : ĠLoop Block Exit Node , Ġdata : ĠD ): ĠR Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġvisit Node ( node , Ġdata ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġopen Ġfun Ġvisit Loop Condition Enter Node ( node : ĠLoop Condition Enter Node , Ġdata : ĠD ): ĠR Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġvisit Node ( node , Ġdata ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġopen Ġfun Ġvisit Loop Condition Exit Node ( node : ĠLoop Condition Exit Node , Ġdata : ĠD ): ĠR Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġvisit Node ( node , Ġdata ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġopen Ġfun Ġvisit Loop Exit Node ( node : ĠLoop Exit Node , Ġdata : ĠD ): ĠR Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġvisit Node ( node , Ġdata ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Ġ-------------------------------- --- ĠTry - catch - finally Ġ-------------------------------- --- ĊĊĠĠĠ Ġopen Ġfun Ġvisit Try Expression Enter Node ( node : ĠTry Expression Enter Node , Ġdata : ĠD ): ĠR Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġvisit Node ( node , Ġdata ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġopen Ġfun Ġvisit Try Main Block Enter Node ( node : ĠTry Main Block Enter Node , Ġdata : ĠD ): ĠR Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġvisit Node ( node , Ġdata ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġopen Ġfun Ġvisit Try Main Block Exit Node ( node : ĠTry Main Block Exit Node , Ġdata : ĠD ): ĠR Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġvisit Node ( node , Ġdata ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġopen Ġfun Ġvisit Catch Clause Enter Node ( node : ĠCatch Clause Enter Node , Ġdata : ĠD ): ĠR Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġvisit Node ( node , Ġdata ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġopen Ġfun Ġvisit Catch Clause Exit Node ( node : ĠCatch Clause Exit Node , Ġdata : ĠD ): ĠR Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġvisit Node ( node , Ġdata ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġopen Ġfun Ġvisit Finally Block Enter Node ( node : ĠFinally Block Enter Node , Ġdata : ĠD ): ĠR Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġvisit Node ( node , Ġdata ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġopen Ġfun Ġvisit Finally Block Exit Node ( node : ĠFinally Block Exit Node , Ġdata : ĠD ): ĠR Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġvisit Node ( node , Ġdata ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġopen Ġfun Ġvisit Finally Proxy Enter Node ( node : ĠFinally Proxy Enter Node , Ġdata : ĠD ): ĠR Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġvisit Node ( node , Ġdata ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġopen Ġfun Ġvisit Finally Proxy Exit Node ( node : ĠFinally Proxy Exit Node , Ġdata : ĠD ): ĠR Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġvisit Node ( node , Ġdata ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġopen Ġfun Ġvisit Try Expression Exit Node ( node : ĠTry Expression Exit Node , Ġdata : ĠD ): ĠR Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġvisit Node ( node , Ġdata ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Ġ-------------------------------- --- ĠBoolean Ġoperators Ġ-------------------------------- --- ĊĊĠĠĠ Ġopen Ġfun Ġvisit Binary And Enter Node ( node : ĠBinary And Enter Node , Ġdata : ĠD ): ĠR Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġvisit Node ( node , Ġdata ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġopen Ġfun Ġvisit Binary And Exit Left Operand Node ( node : ĠBinary And Exit Left Operand Node , Ġdata : ĠD ): ĠR Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġvisit Node ( node , Ġdata ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġopen Ġfun Ġvisit Binary And Enter Right Operand Node ( node : ĠBinary And Enter Right Operand Node , Ġdata : ĠD ): ĠR Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġvisit Node ( node , Ġdata ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġopen Ġfun Ġvisit Binary And Exit Node ( node : ĠBinary And Exit Node , Ġdata : ĠD ): ĠR Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġvisit Node ( node , Ġdata ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġopen Ġfun Ġvisit Binary Or Enter Node ( node : ĠBinary Or Enter Node , Ġdata : ĠD ): ĠR Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġvisit Node ( node , Ġdata ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġopen Ġfun Ġvisit Binary Or Exit Left Operand Node ( node : ĠBinary Or Exit Left Operand Node , Ġdata : ĠD ): ĠR Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġvisit Node ( node , Ġdata ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġopen Ġfun Ġvisit Binary Or Enter Right Operand Node ( node : ĠBinary Or Enter Right Operand Node , Ġdata : ĠD ): ĠR Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġvisit Node ( node , Ġdata ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġopen Ġfun Ġvisit Binary Or Exit Node ( node : ĠBinary Or Exit Node , Ġdata : ĠD ): ĠR Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġvisit Node ( node , Ġdata ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Ġ-------------------------------- --- ĠOperator Ġcall Ġ-------------------------------- --- ĊĊĠĠĠ Ġopen Ġfun Ġvisit Type Operator Call Node ( node : ĠType Operator Call Node , Ġdata : ĠD ): ĠR Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġvisit Node ( node , Ġdata ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġopen Ġfun Ġvisit Comparison Expression Node ( node : ĠComparison Expression Node , Ġdata : ĠD ): ĠR Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġvisit Node ( node , Ġdata ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġopen Ġfun Ġvisit Equality Operator Call Node ( node : ĠE quality Operator Call Node , Ġdata : ĠD ): ĠR Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġvisit Node ( node , Ġdata ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Ġ-------------------------------- --- ĠJump Ġ-------------------------------- --- ĊĊĠĠĠ Ġopen Ġfun Ġvisit Jump Node ( node : ĠJump Node , Ġdata : ĠD ): ĠR Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġvisit Node ( node , Ġdata ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġopen Ġfun Ġvisit Const Expression Node ( node : ĠConst Expression Node , Ġdata : ĠD ): ĠR Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġvisit Node ( node , Ġdata ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Ġ-------------------------------- --- ĠCheck Ġnot Ġnull Ġcall Ġ-------------------------------- --- ĊĊĠĠĠ Ġopen Ġfun Ġvisit Check NotNull Call Node ( node : ĠCheck NotNull Call Node , Ġdata : ĠD ): ĠR Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġvisit Node ( node , Ġdata ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Ġ-------------------------------- --- ĠRes olvable Ġcall Ġ-------------------------------- --- ĊĊĠĠĠ Ġopen Ġfun Ġvisit Qualified Access Node ( node : ĠQual ified Access Node , Ġdata : ĠD ): ĠR Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġvisit Node ( node , Ġdata ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġopen Ġfun Ġvisit Resolved Qualifier Node ( node : ĠResolved Qualifier Node , Ġdata : ĠD ): ĠR Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġvisit Node ( node , Ġdata ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġopen Ġfun Ġvisit Function Call Node ( node : ĠFunction Call Node , Ġdata : ĠD ): ĠR Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġvisit Node ( node , Ġdata ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġopen Ġfun Ġvisit Callable Reference Node ( node : ĠCallable Reference Node , Ġdata : ĠD ): ĠR Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġvisit Node ( node , Ġdata ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġopen Ġfun Ġvisit GetClass Call Node ( node : ĠGet Class Call Node , Ġdata : ĠD ): ĠR Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġvisit Node ( node , Ġdata ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġopen Ġfun Ġvisit Deleg ated Constructor Call Node ( node : ĠDeleg ated Constructor Call Node , Ġdata : ĠD ): ĠR Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġvisit Node ( node , Ġdata ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġopen Ġfun Ġvisit String Concatenation Call Node ( node : ĠStringConcatenation Call Node , Ġdata : ĠD ): ĠR Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġvisit Node ( node , Ġdata ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġopen Ġfun Ġvisit Throw Exception Node ( node : ĠThrow Exception Node , Ġdata : ĠD ): ĠR Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġvisit Node ( node , Ġdata ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġopen Ġfun Ġvisit Stub Node ( node : ĠStub Node , Ġdata : ĠD ): ĠR Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġvisit Node ( node , Ġdata ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġopen Ġfun Ġvisit Contract Description Enter Node ( node : ĠContract Description Enter Node , Ġdata : ĠD ): ĠR Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġvisit Node ( node , Ġdata ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġopen Ġfun Ġvisit Variable Declaration Node ( node : ĠVariable Declaration Node , Ġdata : ĠD ): ĠR Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġvisit Node ( node , Ġdata ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġopen Ġfun Ġvisit Variable Assignment Node ( node : ĠVariable Assignment Node , Ġdata : ĠD ): ĠR Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġvisit Node ( node , Ġdata ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġopen Ġfun Ġvisit Enter Contract Node ( node : ĠEnter Contract Node , Ġdata : ĠD ): ĠR Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġvisit Node ( node , Ġdata ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġopen Ġfun Ġvisit Exit Contract Node ( node : ĠExit Contract Node , Ġdata : ĠD ): ĠR Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġvisit Node ( node , Ġdata ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġopen Ġfun Ġvisit Enter Safe Call Node ( node : ĠEnter Safe Call Node , Ġdata : ĠD ): ĠR Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġvisit Node ( node , Ġdata ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġopen Ġfun Ġvisit Exit Safe Call Node ( node : ĠExit Safe Call Node , Ġdata : ĠD ): ĠR Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġvisit Node ( node , Ġdata ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Ġ-------------------------------- --- ĠEl vis Ġ-------------------------------- --- ĊĊĠĠĠ Ġopen Ġfun Ġvisit El vis L hs Exit Node ( node : ĠEl vis L hs Exit Node , Ġdata : ĠD ): ĠR Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġvisit Node ( node , Ġdata ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġopen Ġfun Ġvisit El vis L hs IsNotNull Node ( node : ĠEl vis L hs IsNotNull Node , Ġdata : ĠD ): ĠR Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġvisit Node ( node , Ġdata ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġopen Ġfun Ġvisit El vis R hs Enter Node ( node : ĠEl vis R hs Enter Node , Ġdata : ĠD ): ĠR Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġvisit Node ( node , Ġdata ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġopen Ġfun Ġvisit El vis Exit Node ( node : ĠEl vis Exit Node , Ġdata : ĠD ): ĠR Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġvisit Node ( node , Ġdata ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Ġ-------------------------------- --- ĠOther Ġ-------------------------------- --- ĊĊĠĠĠ Ġopen Ġfun Ġvisit Annotation Enter Node ( node : ĠAnnotation Enter Node , Ġdata : ĠD ): ĠR Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġvisit Node ( node , Ġdata ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġopen Ġfun Ġvisit Annotation Exit Node ( node : ĠAnnotation Exit Node , Ġdata : ĠD ): ĠR Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġvisit Node ( node , Ġdata ) ĊĠĠĠ Ġ} Ċ } Ċ