/* Ċ Ġ* Ġ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 . descriptors . impl Ċ Ċ import Ġorg . jetbrains . kotlin . descriptors .* Ċ import Ġorg . jetbrains . kotlin . descriptors . Callable Member Descriptor . Kind Ċ import Ġorg . jetbrains . kotlin . descriptors . annotations . Annotations Ċ import Ġorg . jetbrains . kotlin . name . Name Ċ import Ġorg . jetbrains . kotlin . types . Kotlin Type Ċ import Ġorg . jetbrains . kotlin . types . Type Subst it utor Ċ import Ġorg . jetbrains . kotlin . types . Variance Ċ Ċ interface ĠType Alias Constructor Descriptor Ġ: ĠConstructor Descriptor Ġ{ ĊĠĠĠ Ġval Ġunderlying Constructor Descriptor : ĠClass Constructor Descriptor ĊĠĠĠ Ġval Ġtype Alias Descriptor : ĠType Alias Descriptor ĊĊĠĠĠ Ġoverride Ġfun Ġget Containing Declaration (): ĠType Alias Descriptor ĊĊĠĠĠ Ġoverride Ġfun Ġget ReturnType (): ĠKotlin Type ĊĊĠĠĠ Ġoverride Ġfun Ġget Original (): ĠType Alias Constructor Descriptor ĊĊĠĠĠ Ġoverride Ġfun Ġsubstitute ( subst it utor : ĠType Subst it utor ): ĠType Alias Constructor Descriptor ĊĊĠĠĠ Ġoverride Ġfun Ġcopy ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnew Owner : ĠDeclaration Descriptor , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmod ality : ĠMod ality , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvisibility : ĠVisibility , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġkind : ĠKind , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcopy Overrides : ĠBoolean ĊĠĠĠ Ġ): ĠType Alias Constructor Descriptor Ċ } Ċ Ċ class ĠType Alias Constructor Descriptor Impl Ġprivate Ġconstructor ( ĊĠĠĠĠĠĠĠ Ġoverride Ġval Ġtype Alias Descriptor : ĠType Alias Descriptor , ĊĠĠĠĠĠĠĠ Ġoverride Ġval Ġunderlying Constructor Descriptor : ĠClass Constructor Descriptor , ĊĠĠĠĠĠĠĠ Ġoriginal : ĠType Alias Constructor Descriptor ?, ĊĠĠĠĠĠĠĠ Ġannotations : ĠAn notations , ĊĠĠĠĠĠĠĠ Ġkind : ĠKind , ĊĠĠĠĠĠĠĠ Ġsource : ĠSource Element Ċ ) Ġ: ĠType Alias Constructor Descriptor , ĊĠĠĠĠĠĠĠ ĠFunction Descriptor Impl ( type Alias Descriptor , Ġoriginal , Ġannotations , ĠName . special ("< init > "), Ġkind , Ġsource ) Ċ { ĊĠĠĠ Ġoverride Ġfun Ġis Primary (): ĠBoolean Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġunderlying Constructor Descriptor . is Primary ĊĊĠĠĠ Ġoverride Ġfun Ġget Containing Declaration (): ĠType Alias Descriptor Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtype Alias Descriptor ĊĊĠĠĠ Ġoverride Ġfun Ġget Construct ed Class (): ĠClass Descriptor Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġunderlying Constructor Descriptor . construct ed Class ĊĊĠĠĠ Ġoverride Ġfun Ġget ReturnType (): ĠKotlin Type Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . get ReturnType () !! ĊĊĠĠĠ Ġoverride Ġfun Ġget Original (): ĠType Alias Constructor Descriptor Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . get Original () Ġas ĠType Alias Constructor Descriptor ĊĊĠĠĠ Ġoverride Ġfun Ġsubstitute ( subst it utor : ĠType Subst it utor ): ĠType Alias Constructor Descriptor Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . substitute ( subst it utor ) Ġas ĠType Alias Constructor Descriptor ĊĊĠĠĠ Ġoverride Ġfun Ġcopy ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnew Owner : ĠDeclaration Descriptor , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmod ality : ĠMod ality , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvisibility : ĠVisibility , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġkind : ĠKind , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcopy Overrides : ĠBoolean ĊĠĠĠ Ġ): ĠType Alias Constructor Descriptor Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnew Copy Builder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Owner ( new Owner ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Modal ity ( modal ity ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setVisibility ( visibility ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Kind ( kind ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Copy Overrides ( copy Overrides ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () Ġas ĠType Alias Constructor Descriptor ĊĊĠĠĠ Ġoverride Ġfun Ġcreate Subst it uted Copy ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnew Owner : ĠDeclaration Descriptor , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoriginal : ĠFunction Descriptor ?, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġkind : ĠKind , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠnewName : ĠName ?, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġannotations : ĠAn notations , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsource : ĠSource Element ĊĠĠĠ Ġ): ĠType Alias Constructor Descriptor Impl Ġ{ ĊĠĠĠĠĠĠĠ Ġassert ( kind Ġ== ĠKind . DECL AR ATION Ġ|| Ġkind Ġ== ĠKind . SYN TH ES IZED ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" Creating Ġa Ġtype Ġalias Ġconstructor Ġthat Ġis Ġnot Ġa Ġdeclaration : Ġ\ n copy Ġfrom : Ġ${ this }\ n new Owner : Ġ$ new Owner \ n kind : Ġ$ kind " ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġassert ( new Name Ġ== Ġnull ) Ġ{ Ġ" Ren aming Ġtype Ġalias Ġconstructor : Ġ$ this " Ġ} ĊĠĠĠĠĠĠĠ Ġreturn ĠType Alias Constructor Descriptor Impl ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtype Alias Descriptor , Ġunderlying Constructor Descriptor , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġannotations , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠKind . DECL AR ATION , Ġsource ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġcreate If Available ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtype Alias Descriptor : ĠType Alias Descriptor , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconstructor : ĠClass Constructor Descriptor , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsubstit utor : ĠType Subst it utor , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwith Dispatch Receiver : ĠBoolean Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ): ĠType Alias Constructor Descriptor ? Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtype Alias Constructor Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠType Alias Constructor Descriptor Impl ( type Alias Descriptor , Ġconstructor , Ġnull , Ġconstructor . annotations , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconstructor . kind , Ġtype Alias Descriptor . source ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvalue Parameters Ġ= ĠFunction Descriptor Impl . get Subst it uted Value Parameters ( type Alias Constructor , Ġconstructor . value Parameters , Ġsubstit utor , Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġreturn Ġnull ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠreturnType Ġ= Ġsubstit utor . substitute ( constructor . returnType , ĠVari ance . IN VARIANT ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġreturn Ġnull ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġreceiver ParameterType Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( with Dispatch Receiver ) Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġconstructor . dispatch Receiver Parameter ?. let Ġ{ Ġsubstit utor . safe Subst itute ( it . type , ĠVari ance . IN VARIANT ) Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdispatch Receiver Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( with Dispatch Receiver ) Ġconstructor . dispatch Receiver Parameter ?. let Ġ{ Ġit . substitute ( subst it utor ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġnull ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġtype Alias Constructor . initialize ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreceiver ParameterType , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdispatch Receiver , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtype Alias Descriptor . declared Type Parameters , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalue Parameters , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠreturnType , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMod ality . FINAL , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtype Alias Descriptor . visibility ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtype Alias Constructor ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } ĊĊĊĊ