/* Ċ Ġ* Ġ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 . impl . binary Ċ Ċ import Ġcom . google . devtools . k sp . processing . impl . Resolver Impl Ċ import Ġcom . google . devtools . k sp . symbol .* Ċ import Ġcom . google . devtools . k sp . symbol . impl .* Ċ import Ġorg . jetbrains . kotlin . descriptors .* Ċ import Ġorg . jetbrains . org . object web . asm . Op codes Ċ Ċ class ĠK S Property Declaration Descriptor Impl Ġprivate Ġconstructor ( val Ġdescriptor : ĠProperty Descriptor ) Ġ: ĊĠĠĠ ĠK S Property Declaration , ĊĠĠĠ ĠK S Declaration Descriptor Impl ( descriptor ), ĊĠĠĠ ĠK S Expect Actual Ġby ĠK S Expect Actual Descriptor Impl ( descriptor ) Ġ{ ĊĠĠĠ Ġcompanion Ġobject Ġ: ĠK S Object Cache < Property Descriptor , ĠK S Property Declaration Descriptor Impl >() Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġget Cached ( descriptor : ĠProperty Descriptor ) Ġ= Ġcache . get Or Put ( descriptor ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠK S Property Declaration Descriptor Impl ( descriptor ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġval Ġextension Receiver : ĠK S Type Reference ? Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( descriptor . extension Receiver Parameter Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠK S Type Reference Descriptor Impl . get Cached ( descriptor . extension Receiver Parameter !!. type , Ġorigin , Ġthis ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġval Ġannotations : ĠSequence < KS Annotation > Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġannotations Ġon Ġbacking Ġfield Ġwill Ġnot Ġvisible Ġin Ġthe Ġproperty Ġdeclaration Ġso Ġwe Ġquery Ġit Ġdirectly Ġto Ġload ĊĠĠĠĠĠĠĠ Ġ// Ġits Ġannotations Ġas Ġwell . ĊĠĠĠĠĠĠĠ Ġval Ġbacking Field Annotations Ġ= Ġdescriptor . back ing Field ?. annotations ?. map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠK S Annotation Descriptor Impl . get Cached ( it , Ġthis ) ĊĠĠĠĠĠĠĠ Ġ}. or Empty () ĊĠĠĠĠĠĠĠ Ġ( super . annotations Ġ+ Ġbacking Field Annotations ). memo ized () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġval Ġis Mutable : ĠBoolean Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ Ġdescriptor . is Var ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġval Ġmodifiers : ĠSet < Modifier > Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmodifiers Ġ= Ġmutable Set Of < Modifier >() ĊĠĠĠĠĠĠĠ Ġmodifiers . addAll ( descriptor . to KS Modifiers ()) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( this . origin Ġ== ĠOrigin . JAVA _ LIB ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( this . jvm Access Flag Ġand ĠOp codes . ACC _ TRAN SI ENT Ġ!= Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmodifiers . add ( Modifier . JAVA _ TRAN SI ENT ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( this . jvm Access Flag Ġand ĠOp codes . ACC _ VOL AT ILE Ġ!= Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmodifiers . add ( Modifier . JAVA _ VOL AT ILE ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġmodifiers ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġval Ġsetter : ĠK S Property Setter ? Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( descriptor . setter Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠK S Property Setter Descriptor Impl . get Cached ( descriptor . setter Ġas ĠProperty Setter Descriptor ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġval Ġgetter : ĠK S Property Getter ? Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( descriptor . getter Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠK S Property Getter Descriptor Impl . get Cached ( descriptor . getter Ġas ĠProperty Getter Descriptor ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġval Ġtype Parameters : ĠList < KS Type Parameter > Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ Ġdescriptor . type Parameters . map Ġ{ ĠK S Type Parameter Descriptor Impl . get Cached ( it ) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġval Ġtype : ĠK S Type Reference Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠK S Type Reference Descriptor Impl . get Cached ( descriptor . type , Ġorigin , Ġthis ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġval Ġhas Backing Field : ĠBoolean Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ Ġdescriptor . has Backing Field With Binary Class Support () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġfind Override e (): ĠK S Property Declaration ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġproperty Descriptor Ġ= ĠResolver Impl . instance . resolve Property Declaration ( this ) ĊĠĠĠĠĠĠĠ Ġreturn Ġproperty Descriptor ?. find Closest Override e ()?. to KS Property Declaration () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġis Deleg ated (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ( descriptor Ġas ? ĠProperty Descriptor )?. delegate Field Ġ!= Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġ< D , ĠR > Ġaccept ( visitor : ĠK S Visitor < D , ĠR >, Ġdata : ĠD ): ĠR Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġvisitor . visit Property Declaration ( this , Ġdata ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġas Member Of ( containing : ĠK S Type ): ĠK S Type Ġ= ĊĠĠĠĠĠĠĠ ĠResolver Impl . instance . as Member Of ( this , Ġcontaining ) Ċ } Ċ