/* Ċ Ġ* ĠCopyright Ġ 2 0 2 0 ĠGoogle ĠLLC Ċ Ġ* ĠCopyright Ġ 2 0 1 0 - 2 0 2 0 ĠJetBrains Ġs . r . o . Ġand ĠKotlin ĠProgramming ĠLanguage Ġcontributors . Ċ Ġ* Ċ Ġ* Ġ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 Ġcom . google . devtools . k sp . symbol Ċ import Ġcom . google . devtools . k sp . processing . Resolver Ċ /** Ċ Ġ* ĠA Ġfunction Ġdefinition Ċ Ġ* Ċ Ġ* ĠDispatch Ġreceiver Ġcan Ġbe Ġobtained Ġthrough Ġ[ parent Declaration ]. Ċ Ġ* Ċ Ġ* ĠTo Ġobtain Ġthe Ġfunction Ġsignature Ġwhere Ġtype Ġarguments Ġare Ġresolved Ġas Ġmember Ġof Ġa Ġgiven Ġ[ KS Type ], Ċ Ġ* Ġuse Ġ[ Resolver . as Member Of ]. Ċ Ġ* Ċ Ġ* Ġ@ see ĠK S FunctionType Ċ Ġ*/ Ċ interface ĠK S Function Declaration Ġ: ĠK S Declaration , ĠK S Declaration Container Ġ{ ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠKind Ġof Ġthis Ġfunction . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval Ġfunction Kind : ĠFunction Kind ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠWhether Ġthis Ġfunction Ġis Ġabstract . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval Ġis Abstract : ĠBoolean ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠExtension Ġreceiver Ġof Ġthis Ġfunction ĊĠĠĠĠ Ġ* Ġ@ see Ġ[ https :// kotlin lang . org / docs / reference / extensions . html # extension - functions ] ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval Ġextension Receiver : ĠK S Type Reference ? ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠReturn Ġtype Ġof Ġthis Ġfunction . ĊĠĠĠĠ Ġ* ĠCan Ġbe Ġnull Ġif Ġan Ġerror Ġoccurred Ġduring Ġresolution . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval ĠreturnType : ĠK S Type Reference ? ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ[ value Ġparameters ][ KS Value Parameter ] Ġof Ġthis Ġfunction . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval Ġparameters : ĠList < KS Value Parameter > ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠFind Ġthe Ġclosest Ġoverride e Ġof Ġthis Ġfunction , Ġif Ġoverriding . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠFor Ġthe Ġfollowing Ġinput : ĊĠĠĠĠ Ġ* Ġ``` ĊĠĠĠĠ Ġ* Ġabstract Ġclass ĠA Ġ{ ĊĠĠĠĠ Ġ* ĠĠ Ġopen Ġfun Ġx () Ġ{} ĊĠĠĠĠ Ġ* ĠĠ Ġopen Ġfun Ġy () Ġ{} ĊĠĠĠĠ Ġ* Ġ} ĊĠĠĠĠ Ġ* Ġabstract Ġclass ĠB Ġ: ĠA () Ġ{ ĊĠĠĠĠ Ġ* ĠĠ Ġoverride Ġopen Ġfun Ġx () Ġ{} ĊĠĠĠĠ Ġ* Ġ} ĊĠĠĠĠ Ġ* Ġabstract Ġclass ĠC Ġ: ĠB () Ġ{ ĊĠĠĠĠ Ġ* ĠĠ Ġoverride Ġopen Ġfun Ġx () Ġ{} ĊĠĠĠĠ Ġ* ĠĠ Ġoverride Ġopen Ġfun Ġy () Ġ{} ĊĠĠĠĠ Ġ* Ġ} ĊĠĠĠĠ Ġ* Ġ``` ĊĠĠĠĠ Ġ* ĠCalling Ġ` find Override e ` Ġon Ġ` C . x ` Ġwill Ġreturn Ġ` B . x `. ĊĠĠĠĠ Ġ* ĠCalling Ġ` find Override e ` Ġon Ġ` C . y ` Ġwill Ġreturn Ġ` A . y `. ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠWhen Ġthere Ġare Ġmultiple Ġsuper Ġinterfaces Ġimplementing Ġthe Ġfunction , Ġthe Ġclosest Ġdeclaration ĊĠĠĠĠ Ġ* Ġto Ġthe Ġcurrent Ġcontaining Ġdeclaration Ġis Ġselected . ĠIf Ġthey Ġare Ġin Ġthe Ġsame Ġlevel , Ġthe ĊĠĠĠĠ Ġ* Ġfunction Ġof Ġthe Ġfirst Ġspecified Ġinterface Ġ( in Ġsource ) Ġwill Ġbe Ġreturned . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ return Ġ[ KS Function Declaration ] Ġfor Ġthe Ġoriginal Ġfunction , Ġif Ġoverriding , Ġotherwise Ġnull . ĊĠĠĠĠ Ġ* ĠCalling Ġ[ find Override e ] Ġis Ġexpensive Ġand Ġshould Ġbe Ġa vo ided Ġif Ġpossible . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġfind Override e (): ĠK S Function Declaration ? Ċ } Ċ