/* Ċ Ġ* ĠCopyright Ġ 2 0 1 0 - 2 0 1 6 Ġ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 . backend . jvm . intr insics Ċ Ċ import Ġorg . jetbrains . kotlin . backend . jvm . Jvm Symbols Ċ import Ġorg . jetbrains . kotlin . builtins . Kotlin Built Ins Ċ import Ġorg . jetbrains . kotlin . builtins . Primitive Type Ċ import Ġorg . jetbrains . kotlin . ir . declarations .* Ċ import Ġorg . jetbrains . kotlin . ir . descriptors . Ir Built Ins Ċ import Ġorg . jetbrains . kotlin . ir . symbols . Ir Class Symbol Ċ import Ġorg . jetbrains . kotlin . ir . symbols . Ir Classifier Symbol Ċ import Ġorg . jetbrains . kotlin . ir . symbols . Ir Function Symbol Ċ import Ġorg . jetbrains . kotlin . ir . symbols . Ir Simple Function Symbol Ċ import Ġorg . jetbrains . kotlin . ir . types . class OrNull Ċ import Ġorg . jetbrains . kotlin . ir . types . classifier OrNull Ċ import Ġorg . jetbrains . kotlin . ir . util . fq Name When Available Ċ import Ġorg . jetbrains . kotlin . ir . util . isFile Class Ċ import Ġorg . jetbrains . kotlin . lexer . Kt Single Value Token Ċ import Ġorg . jetbrains . kotlin . lexer . Kt Tokens Ċ import Ġorg . jetbrains . kotlin . name . Fq Name Ċ import Ġorg . jetbrains . kotlin . types . expressions . Operator Con ventions Ċ import Ġorg . jetbrains . org . object web . asm . Op codes .* Ċ import Ġorg . jetbrains . org . object web . asm . Type Ċ Ċ class ĠIr Intr insic Methods ( val Ġir Built Ins : ĠIr Built Ins , Ġval Ġsymbols : ĠJ vm Symbols ) Ġ{ ĊĠĠĠ Ġprivate Ġval Ġkotlin Jvm Ġ= ĠF q Name (" kotlin . jvm ") ĊĠĠĠ Ġprivate Ġval Ġkotlin Jvm Internal Unsafe Ġ= ĠF q Name (" kotlin . jvm . internal . unsafe ") ĊĊĠĠĠ Ġprivate Ġval Ġintr insics Map Ġ= Ġ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠKey ( kotlin Jvm , ĠF q Name (" T "), Ġ"< get - java Class >", Ġempty List ()) Ġto ĠJava Class Property , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠKey ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġkotlin Jvm , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠKotlin Built Ins . FQ _ NAMES . k Class . to Safe (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"< get - java >", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġempty List () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġto ĠK Class Java Property , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠKey ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġkotlin Jvm Internal Unsafe , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" access \$ monitor Enter ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf ( Kotlin Built Ins . FQ _ NAMES . any . to Safe ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġto ĠMonitor Instruction . MONITOR _ ENTER , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠKey ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġkotlin Jvm Internal Unsafe , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" access \$ monitor Exit ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf ( Kotlin Built Ins . FQ _ NAMES . any . to Safe ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġto ĠMonitor Instruction . MONITOR _ EXIT , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠKey ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġkotlin Jvm , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠKotlin Built Ins . FQ _ NAMES . array . to Safe (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" isArray Of ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġempty List () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġto ĠIs ArrayOf , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠKey ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠKotlin Built Ins . BUIL T _ INS _ PACKAGE _ FQ _ NAME , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" array Of Null s ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf ( Kotlin Built Ins . FQ _ NAMES ._ int . to Safe ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġto ĠNew Array , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠKey ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠKotlin Built Ins . FQ _ NAMES . clone able . to Safe (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" clone ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġempty List () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġto ĠClone , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠKey ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠKotlin Built Ins . BUIL T _ INS _ PACKAGE _ FQ _ NAME , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" enum Values ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġto ĠEnum Values , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠKey ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠKotlin Built Ins . BUIL T _ INS _ PACKAGE _ FQ _ NAME , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" enum ValueOf ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf ( Kotlin Built Ins . FQ _ NAMES . string . to Safe ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġto ĠEnum ValueOf , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠKey ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠKotlin Built Ins . BUIL T _ INS _ PACKAGE _ FQ _ NAME , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠKotlin Built Ins . FQ _ NAMES . string . to Safe (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" plus ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf ( Kotlin Built Ins . FQ _ NAMES . any . to Safe ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġto ĠString Plus , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġir Built Ins . eq eq Symbol . to Key () !! Ġto ĠEquals ( Kt Tokens . EQ EQ ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġir Built Ins . eq eq eq Symbol . to Key () !! Ġto ĠEquals ( Kt Tokens . EQ EQ EQ ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġir Built Ins . ieee 7 5 4 equals Fun By Operand Type [ ir Built Ins . float Class ] !!. to Key () !! Ġto ĠI eee 7 5 4 Equals ( Type . FLOAT _ TYPE ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġir Built Ins . ieee 7 5 4 equals Fun By Operand Type [ ir Built Ins . double Class ] !!. to Key () !! Ġto ĠI eee 7 5 4 Equals ( Type . DOUBLE _ TYPE ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġir Built Ins . boolean Not Symbol . to Key () !! Ġto ĠNot , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġir Built Ins . no When Branch Matched Exception Symbol . to Key () !! Ġto ĠIr No When Branch Matched Exception , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġir Built Ins . il legal ArgumentException Symbol . to Key () !! Ġto ĠIr IllegalArgumentException , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġir Built Ins . and and Symbol . to Key () !! Ġto ĠAnd And , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġir Built Ins . or or Symbol . to Key () !! Ġto ĠOr Or , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġir Built Ins . data Class Array Member HashCode Symbol . to Key () !! Ġto ĠIr Data Class Array Member HashCode , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġir Built Ins . data Class Array Member ToString Symbol . to Key () !! Ġto ĠIr Data Class Array Member ToString , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsymbols . unsafe Co erce Intr insic . to Key () !! Ġto ĠUnsafe Co erce , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsymbols . signature String Intr insic . to Key () !! Ġto ĠSignature String , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsymbols . re assign Parameter Intr insic . to Key () !! Ġto ĠRe assign Parameter ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnumber Conversion Methods () Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġunary Fun For Primitives (" plus ", ĠUnary Plus ) Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġunary Fun For Primitives (" unary Plus ", ĠUnary Plus ) Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġunary Fun For Primitives (" minus ", ĠUnary Minus ) Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġunary Fun For Primitives (" unary Minus ", ĠUnary Minus ) Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġunary Fun For Primitives (" inv ", ĠInv ) Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġunary Fun For Primitives (" inc ", ĠINC ) Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġunary Fun For Primitives (" dec ", ĠDEC ) Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġunary Fun For Primitives (" hashCode ", ĠHash Code ) Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinary Fun For Primitives (" equals ", ĠEX PL IC IT _ EQUAL S , Ġir Built Ins . any Class ) Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinary Fun For Primitives Ac ross Primitives (" range To ", ĠRange To ) Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinary Op (" plus ", ĠI ADD ) Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinary Op (" minus ", ĠIS UB ) Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinary Op (" times ", ĠI MUL ) Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinary Op (" div ", ĠI DIV ) Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinary Op (" mod ", ĠI REM ) Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinary Op (" rem ", ĠI REM ) Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinary Op (" sh l ", ĠI SH L ) Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinary Op (" shr ", ĠI SH R ) Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinary Op (" ush r ", ĠI US HR ) Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinary Op (" and ", ĠI AND ) Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinary Op (" or ", ĠI OR ) Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinary Op (" xor ", ĠI XOR ) Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinary Fun For Primitives Ac ross Primitives (" compareTo ", ĠCompare To ) Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcreate Key Mapping ( Not , Ġir Built Ins . boolean Class , Ġ" not ") Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcreate Key Mapping ( String Get Char , Ġir Built Ins . string Class , Ġ" get ", Ġir Built Ins . int Class ) Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsymbols . primitive Iter ators ByType . values . map Ġ{ Ġiterator Class Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcreate Key Mapping ( Iterator Next , Ġiterator Class , Ġ" next ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarray Methods () Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprimitive Comparison Intr insics ( ir Built Ins . less Fun By Operand Type , ĠK t Tokens . LT ) Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprimitive Comparison Intr insics ( ir Built Ins . less OrEqual Fun By Operand Type , ĠK t Tokens . LTE Q ) Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprimitive Comparison Intr insics ( ir Built Ins . greater Fun By Operand Type , ĠK t Tokens . GT ) Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprimitive Comparison Intr insics ( ir Built Ins . greater OrEqual Fun By Operand Type , ĠK t Tokens . G TE Q ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ). toMap () ĊĊĠĠĠ Ġprivate Ġval ĠPrimitive Type . symbol ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġir Built Ins . primitive Type To Ir Type [ this ] !!. class OrNull !! ĊĊĠĠĠ Ġfun Ġget Intr insic ( symbol : ĠIr Function Symbol ): ĠIntr insic Method ? Ġ= Ġintr insics Map [ symbol . to Key ()] ĊĊĠĠĠ Ġprivate Ġfun Ġunary Fun For Primitives ( name : ĠString , Ġintr insic : ĠIntr insic Method ): ĠList < Pair < Key , ĠIntr insic Method >> Ġ= ĊĠĠĠĠĠĠĠ ĠPrimitive Type . values (). map Ġ{ Ġtype Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcreate Key Mapping ( intrinsic , Ġtype . symbol , Ġname ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġbinary Fun For Primitives Ac ross Primitives ( name : ĠString , Ġintr insic : ĠIntr insic Method ): ĠList < Pair < Key , ĠIntr insic Method >> Ġ= ĊĠĠĠĠĠĠĠ ĠPrimitive Type . values (). flatMap Ġ{ Ġparameter Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinary Fun For Primitives ( name , Ġintr insic , Ġparameter . symbol ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĊĠĠĠ Ġprivate Ġfun Ġbinary Fun For Primitives ( ĊĠĠĠĠĠĠĠ Ġname : ĠString , ĊĠĠĠĠĠĠĠ Ġintr insic : ĠIntr insic Method , ĊĠĠĠĠĠĠĠ Ġparameter : ĠIr Classifier Symbol ĊĠĠĠ Ġ): ĠList < Pair < Key , ĠIntr insic Method >> Ġ= ĊĠĠĠĠĠĠĠ ĠPrimitive Type . values (). map Ġ{ Ġtype Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcreate Key Mapping ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġintr insic , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtype . symbol , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġname , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparameter ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġbinary Op ( methodName : ĠString , Ġopcode : ĠInt ) Ġ= Ġbinary Fun For Primitives Ac ross Primitives ( methodName , ĠBinary Op ( opcode )) ĊĊĠĠĠ Ġprivate Ġfun Ġnumber Conversion Methods (): ĠList < Pair < Key , ĠIntr insic Method >> Ġ= ĊĠĠĠĠĠĠĠ ĠPrimitive Type . NUMBER _ TYPES . flatMap Ġ{ Ġtype Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnumber Conversion Methods ( type . symbol ) ĊĠĠĠĠĠĠĠ Ġ} Ġ+ Ġnumber Conversion Methods ( ir Built Ins . number Class ) ĊĊĠĠĠ Ġprivate Ġfun Ġarray Methods (): ĠList < Pair < Key , ĠIntr insic Method >> Ġ= ĊĠĠĠĠĠĠĠ Ġsymbols . primitive Arrays . flatMap Ġ{ Ġ( key , Ġvalue ) Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarray Methods ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġkey . symbol , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} Ġ+ Ġarray Methods ( symbols . array . owner . type Parameters . single (). symbol , Ġsymbols . array ) ĊĊĠĠĠ Ġprivate Ġfun Ġarray Methods ( element Class : ĠIr Classifier Symbol , Ġarray Class : ĠIr Class Symbol ) Ġ= ĊĠĠĠĠĠĠĠ ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcreate Key Mapping ( Array Size , Ġarray Class , Ġ"< get - size > "), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcreate Key Mapping ( New Array , Ġarray Class , Ġ"< init >", Ġir Built Ins . int Class ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcreate Key Mapping ( Array Set , Ġarray Class , Ġ" set ", Ġir Built Ins . int Class , Ġelement Class ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcreate Key Mapping ( Array Get , Ġarray Class , Ġ" get ", Ġir Built Ins . int Class ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcreate Key Mapping ( Clone , Ġarray Class , Ġ" clone "), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcreate Key Mapping ( Array Iterator , Ġarray Class , Ġ" iterator ") ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠ Ġdata Ġclass ĠKey ( val Ġowner : ĠF q Name , Ġval Ġreceiver Parameter TypeName : ĠF q Name ?, Ġval Ġname : ĠString , Ġval Ġvalue ParameterType Names : ĠList < Fq Name ?> ) ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĊĠĠĠĠĠĠĠ Ġinternal Ġval ĠIN TR INS ICS _ CLASS _ NAME Ġ= Ġ" kotlin / jvm / internal / Intr insics " ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠINC Ġ= ĠIncrement ( 1 ) ĊĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠDEC Ġ= ĠIncrement (- 1 ) ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠEX PL IC IT _ EQUAL S Ġ= ĠExplicit Equals () ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun ĠIr Function Symbol . to Key (): ĠKey ? Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġparent Ġ= Ġowner . parent ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġowner Fq Name Ġ= Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparent Ġis ĠIr Class Ġ&& Ġparent . isFile Class Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( parent . parent Ġas ĠIr Package Fragment ). fq Name ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparent Ġis ĠIr Class Ġ-> Ġparent . fq Name When Available Ġ?: Ġreturn Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparent Ġis ĠIr Package Fragment Ġ-> Ġparent . fq Name ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġreturn Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠKey ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġowner Fq Name , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget Parameter Fq Name ( owner . extension Receiver Parameter ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġowner . name . asString (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġowner . value Parameters . map (:: getParameter Fq Name ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġget Parameter Fq Name ( parameter : ĠIr Value Parameter ?): ĠF q Name ? Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget Parameter Fq Name ( parameter ?. type ?. classifier OrNull ) ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġget Parameter Fq Name ( parameter : ĠIr Classifier Symbol ?): ĠF q Name ? Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġparameter ?. owner ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( it ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠIr Class Ġ-> Ġit . fq Name When Available ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠIr Type Parameter Ġ-> ĠF q Name ( it . name . asString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġcreate Key Mapping ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġintr insic : ĠIntr insic Method , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġklass : ĠIr Class Symbol , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġname : ĠString , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar arg Ġargs : ĠIr Classifier Symbol ĊĠĠĠĠĠĠĠ Ġ): ĠPair < Key , ĠIntr insic Method > Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠKey ( klass . owner . fq Name When Available !! , Ġnull , Ġname , Ġargs . map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget Parameter Fq Name ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) Ġto Ġintr insic ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġnumber Conversion Methods ( number Class : ĠIr Class Symbol ) Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠOperator Con ventions . NUMBER _ CONVERSION S . map Ġ{ Ġmethod Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcreate Key Mapping ( Number Cast , Ġnumber Class , Ġmethod . asString ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġprimitive Comparison Intr insics ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtype To Ir Fun : ĠMap < Ir Classifier Symbol , ĠIr Simple Function Symbol >, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoperator : ĠK t Single Value Token ĊĠĠĠĠĠĠĠ Ġ): ĠList < Pair < Key , ĠPrimitive Comparison >> Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtype To Ir Fun . map Ġ{ Ġ( type , Ġir Fun Symbol ) Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġir Fun Symbol . to Key () !! Ġto ĠPrimitive Comparison ( type . descriptor . default Type , Ġoperator ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ