/* Ċ Ġ* Ġ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 Ġkotlin . reflect . jvm . internal Ċ Ċ import Ġorg . jetbrains . kotlin . descriptors . Class Descriptor Ċ import Ġorg . jetbrains . kotlin . load . java . components . Runtime Source Element Factory Ċ import Ġorg . jetbrains . kotlin . load . java . structure . reflect . Reflect Java Class Ċ import Ġorg . jetbrains . kotlin . load . kotlin . Kotlin Jvm Binary Source Element Ċ import Ġorg . jetbrains . kotlin . load . kotlin . reflect . Reflect Kotlin Class Ċ import Ġorg . jetbrains . kotlin . name . Fq Name Ċ import Ġkotlin . jvm . internal . Function Reference Ċ import Ġkotlin . jvm . internal . Property Reference Ċ import Ġkotlin . reflect . Illegal Callable AccessException Ċ Ċ internal Ġval ĠJVM _ STATIC Ġ= ĠF q Name (" kotlin . jvm . Jvm Static ") Ċ Ċ internal Ġfun ĠClass Descriptor . to Java Class (): ĠClass < *> ? Ġ{ ĊĠĠĠ Ġval Ġsource Ġ= Ġsource ĊĠĠĠ Ġreturn Ġwhen Ġ( source ) Ġ{ ĊĠĠĠĠĠĠĠ Ġis ĠKotlin Jvm Binary Source Element Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( source . binary Class Ġas ĠReflect Kotlin Class ). klass ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġis ĠRuntime Source Element Factory . Runtime Source Element Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( source . java Element Ġas ĠReflect Java Class ). element ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠThis Ġis Ġa Ġbuilt - in Ġclass ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ // ĠTODO : Ġwrap Ġother Ġexceptions Ċ internal Ġinline Ġfun Ġ< R > Ġreflection Call ( block : Ġ() Ġ-> ĠR ): ĠR Ġ= ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġblock () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġcatch Ġ( e : ĠIllegal AccessException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠIllegal Callable AccessException ( e ) ĊĠĠĠĠĠĠĠ Ġ} Ċ Ċ internal Ġfun ĠAny ?. as K Function Impl (): ĠK Function Impl ? Ġ= ĊĠĠĠĠĠĠĠ Ġthis Ġas ? ĠK Function Impl Ġ?: ĊĠĠĠĠĠĠĠ Ġ( this Ġas ? ĠFunction Reference )?. compute () Ġas ? ĠK Function Impl Ċ Ċ internal Ġfun ĠAny ?. as K Property Impl (): ĠK Property Impl < *> ? Ġ= ĊĠĠĠĠĠĠĠ Ġthis Ġas ? ĠK Property Impl < *> Ġ?: ĊĠĠĠĠĠĠĠ Ġ( this Ġas ? ĠProperty Reference )?. compute () Ġas ? ĠK Property Impl Ċ Ċ internal Ġfun ĠAny ?. as K Callable Impl (): ĠK Callable Impl < *> ? Ġ= ĊĠĠĠĠĠĠĠ Ġthis Ġas ? ĠK Callable Impl < *> Ġ?: Ġas K Function Impl () Ġ?: Ġas K Property Impl () Ċ