/* Ċ Ġ* Ġ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 .* Ċ import Ġorg . jetbrains . kotlin . resolve . descriptor Util . decl ares Or In herits DefaultValue Ċ import Ġkotlin . reflect . K Parameter Ċ import Ġkotlin . reflect . K Type Ċ Ċ internal Ġclass ĠK Parameter Impl ( ĊĠĠĠ Ġval Ġcallable : ĠK Callable Impl <* >, ĊĠĠĠ Ġoverride Ġval Ġindex : ĠInt , ĊĠĠĠ Ġoverride Ġval Ġkind : ĠK Parameter . Kind , ĊĠĠĠ Ġcompute Descriptor : Ġ() Ġ-> ĠParameter Descriptor Ċ ) Ġ: ĠK Parameter Ġ{ ĊĠĠĠ Ġprivate Ġval Ġdescriptor : ĠParameter Descriptor Ġby ĠReflect Properties . lazy Soft ( compute Descriptor ) ĊĊĠĠĠ Ġoverride Ġval Ġannotations : ĠList < Annotation > Ġby ĠReflect Properties . lazy Soft Ġ{ Ġdescriptor . compute Annotations () Ġ} ĊĊĠĠĠ Ġoverride Ġval Ġname : ĠString ? ĊĠĠĠĠĠĠĠ Ġget () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvalue Parameter Ġ= Ġdescriptor Ġas ? ĠValue Parameter Descriptor Ġ?: Ġreturn Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( value Parameter . containing Declaration . has Synt hesized Parameter Names ()) Ġreturn Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġname Ġ= Ġvalue Parameter . name ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( name . is Special ) Ġnull Ġelse Ġname . asString () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġval Ġtype : ĠK Type ĊĠĠĠĠĠĠĠ Ġget () Ġ= ĠK Type Impl ( descriptor . type ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdescriptor Ġ= Ġdescriptor ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( descriptor Ġis ĠReceiver Parameter Descriptor Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcallable . descriptor . instance Receiver Parameter Ġ== Ġdescriptor Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcallable . descriptor . kind Ġ== ĠCallable Member Descriptor . Kind . FA KE _ OVERRIDE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠIn Ġcase Ġof Ġfake Ġoverrides , Ġdispatch Ġreceiver Ġtype Ġshould Ġbe Ġcomputed Ġmanually Ġbecause ĠCall er . parameter Types Ġreturns ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġtypes Ġfrom ĠJava Ġreflection Ġwhere Ġreceiver Ġis Ġalways Ġthe Ġdeclaring Ġclass Ġof Ġthe Ġoriginal Ġdeclaration ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ( not Ġthe Ġclass Ġwhere Ġthe Ġfake Ġoverride Ġis Ġgenerated , Ġwhich Ġis Ġreturned Ġby ĠK Parameter . type ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( callable . descriptor . containing Declaration Ġas ĠClass Descriptor ). to Java Class () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġthrow ĠKotlin Reflection Internal Error (" Cannot Ġdetermine Ġreceiver ĠJava Ġtype Ġof Ġinherited Ġdeclaration : Ġ$ descriptor ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcallable . caller . parameter Types [ index ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġval Ġis Optional : ĠBoolean ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġ( descriptor Ġas ? ĠValue Parameter Descriptor )?. decl ares Or In herits DefaultValue () Ġ?: Ġfalse ĊĊĠĠĠ Ġoverride Ġval Ġis Var arg : ĠBoolean ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġdescriptor . let Ġ{ Ġit Ġis ĠValue Parameter Descriptor Ġ&& Ġit . var arg ElementType Ġ!= Ġnull Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġequals ( other : ĠAny ?) Ġ= ĊĠĠĠĠĠĠĠ Ġother Ġis ĠK Parameter Impl Ġ&& Ġcallable Ġ== Ġother . callable Ġ&& Ġindex Ġ== Ġother . index ĊĊĠĠĠ Ġoverride Ġfun ĠhashCode () Ġ= ĊĠĠĠĠĠĠĠ Ġ( callable . hashCode () Ġ* Ġ 3 1 ) Ġ+ Ġindex . hashCode () ĊĊĠĠĠ Ġoverride Ġfun ĠtoString () Ġ= ĊĠĠĠĠĠĠĠ ĠReflection Object Renderer . render Parameter ( this ) Ċ } Ċ