/* Ċ Ġ* ĠCopyright Ġ 2 0 1 0 - 2 0 1 9 ĠJetBrains Ġs . r . o . Ġand ĠKotlin ĠProgramming ĠLanguage Ġcontributors . Ċ Ġ* ĠUse Ġof Ġthis Ġsource Ġcode Ġis Ġgoverned Ġby Ġthe ĠApache Ġ 2 . 0 Ġlicense Ġthat Ġcan Ġbe Ġfound Ġin Ġthe Ġlicense / LICENSE . txt Ġfile . Ċ Ġ*/ Ċ Ċ package Ġorg . jetbrains . kotlin . descriptors . common izer . builder Ċ Ċ import Ġorg . jetbrains . kotlin . descriptors .* Ċ import Ġorg . jetbrains . kotlin . descriptors . annotations . Annotations Ċ import Ġorg . jetbrains . kotlin . descriptors . impl . Abstract Type Alias Descriptor Ċ import Ġorg . jetbrains . kotlin . name . Name Ċ import Ġorg . jetbrains . kotlin . storage . NotNull Lazy Value Ċ import Ġorg . jetbrains . kotlin . storage . Storage Manager Ċ import Ġorg . jetbrains . kotlin . types . Simple Type Ċ import Ġorg . jetbrains . kotlin . types . Type Subst it utor Ċ import Ġorg . jetbrains . kotlin . types . Variance Ċ import Ġorg . jetbrains . kotlin . types . as Simple Type Ċ Ċ class ĠCommon ized Type Alias Descriptor ( ĊĠĠĠ Ġoverride Ġval Ġstorage Manager : ĠStorage Manager , ĊĠĠĠ Ġcontaining Declaration : ĠDeclaration Descriptor , ĊĠĠĠ Ġannotations : ĠAn notations , ĊĠĠĠ Ġname : ĠName , ĊĠĠĠ Ġvisibility : ĠDescriptor Visibility , ĊĠĠĠ Ġprivate Ġval Ġis Actual : ĠBoolean Ċ ) Ġ: ĠAbstract Type Alias Descriptor ( containing Declaration , Ġannotations , Ġname , ĠSource Element . NO _ SOURCE , Ġvisibility ) Ġ{ ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġunderlying Type Impl : ĠNot Null Lazy Value < Simple Type > ĊĠĠĠ Ġoverride Ġval Ġunderlying Type Ġget () Ġ= Ġunderlying Type Impl () ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġexpanded Type Impl : ĠNot Null Lazy Value < Simple Type > ĊĠĠĠ Ġoverride Ġval Ġexpanded Type : ĠSimple Type Ġget () Ġ= Ġexpanded Type Impl () ĊĊĠĠĠ Ġprivate Ġval Ġdefault Type Impl Ġ= Ġstorage Manager . create Lazy Value Ġ{ Ġcompute Default Type () Ġ} ĊĠĠĠ Ġoverride Ġfun ĠgetDefault Type () Ġ= Ġdefault Type Impl () ĊĊĠĠĠ Ġoverride Ġval Ġclass Descriptor Ġget () Ġ= Ġexpanded Type . constructor . declaration Descriptor Ġas ? ĠClass Descriptor ĊĊĠĠĠ Ġprivate Ġval Ġtype Constructor Parameters Impl Ġ= Ġstorage Manager . create Lazy Value Ġ{ Ġcompute Constructor Type Parameters () Ġ} ĊĠĠĠ Ġoverride Ġfun ĠgetType Constructor Type Parameters () Ġ= Ġtype Constructor Parameters Impl () ĊĊĠĠĠ Ġprivate Ġval Ġconstructors Impl Ġ= Ġstorage Manager . create Lazy Value Ġ{ ĠgetType Alias Construct ors () Ġ} ĊĠĠĠ Ġoverride Ġval Ġconstructors Ġget () Ġ= Ġconstructors Impl () ĊĊĠĠĠ Ġoverride Ġfun Ġis Actual () Ġ= Ġis Actual ĊĊĠĠĠ Ġfun Ġinitialize ( ĊĠĠĠĠĠĠĠ Ġdeclared Type Parameters : ĠList < Type Parameter Descriptor >, ĊĠĠĠĠĠĠĠ Ġunderlying Type : ĠNot Null Lazy Value < Simple Type >, ĊĠĠĠĠĠĠĠ Ġexpanded Type : ĠNot Null Lazy Value < Simple Type > ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . initialize ( declared Type Parameters ) ĊĠĠĠĠĠĠĠ Ġunderlying Type Impl Ġ= Ġunderlying Type ĊĠĠĠĠĠĠĠ Ġexpanded Type Impl Ġ= Ġexpanded Type ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġsubstitute ( subst it utor : ĠType Subst it utor ): ĠClass ifier Descriptor WithType Parameters Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( subst it utor . isEmpty ) Ġreturn Ġthis ĊĠĠĠĠĠĠĠ Ġval Ġsubstit uted Ġ= ĠCommon ized Type Alias Descriptor ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstorage Manager Ġ= Ġstorage Manager , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontaining Declaration Ġ= Ġcontaining Declaration , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġannotations Ġ= Ġannotations , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= Ġname , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvisibility Ġ= Ġvisibility , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Actual Ġ= Ġis Actual ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġsubstit uted . initialize ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdeclared Type Parameters , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstorage Manager . create Lazy Value Ġ{ Ġsubstit utor . safe Subst itute ( underlying Type , ĠVari ance . IN VARIANT ). as Simple Type () Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstorage Manager . create Lazy Value Ġ{ Ġsubstit utor . safe Subst itute ( expanded Type , ĠVari ance . IN VARIANT ). as Simple Type () Ġ} ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġreturn Ġsubstit uted ĊĠĠĠ Ġ} Ċ } Ċ