/* Ċ Ġ* Ġ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 . symbol .* Ċ import Ġcom . google . devtools . k sp . symbol . impl . KS Object Cache Ċ import Ġcom . google . devtools . k sp . symbol . impl . kotlin . Id Key Ċ import Ġcom . google . devtools . k sp . symbol . impl . kotlin . KS Type Argument Impl Ċ import Ġorg . jetbrains . kotlin . types . Type Projection Ċ Ċ class ĠK S Type Argument Descriptor Impl Ġprivate Ġconstructor ( val Ġdescriptor : ĠType Projection , Ġoverride Ġval Ġorigin : ĠOrigin ) Ġ: ĠK S Type Argument Impl () Ġ{ ĊĠĠĠ Ġcompanion Ġobject Ġ: ĠK S Object Cache < Id Key < Pair < Type Projection , ĠOrigin >>, ĠK S Type Argument Descriptor Impl >() Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġget Cached ( descriptor : ĠType Projection , Ġorigin : ĠOrigin ) Ġ= Ġcache . get Or Put ( Id Key ( Pair ( descriptor , Ġorigin ))) Ġ{ ĠK S Type Argument Descriptor Impl ( descriptor , Ġorigin ) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġval Ġlocation : ĠLocation Ġ= ĠNon Exist Location ĊĊĠĠĠ Ġoverride Ġval Ġtype : ĠK S Type Reference Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠK S Type Reference Descriptor Impl . get Cached ( descriptor . type , Ġorigin ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġval Ġvariance : ĠVari ance Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( descriptor . is Star Projection ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠVari ance . STAR ĊĠĠĠĠĠĠĠ Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( descriptor . projection Kind ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġorg . jetbrains . kotlin . types . Variance . IN _ VARI ANCE Ġ-> ĠVari ance . CON TR AV ARI ANT ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġorg . jetbrains . kotlin . types . Variance . OUT _ VARI ANCE Ġ-> ĠVari ance . CO VARIANT ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> ĠVari ance . IN VARIANT ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġval Ġannotations : ĠSequence < KS Annotation > Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ Ġdescriptor . type . annotations . as Sequence (). map Ġ{ ĠK S Annotation Descriptor Impl . get Cached ( it ) Ġ} ĊĠĠĠ Ġ} Ċ } Ċ