/* Ċ Ġ* Ġ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 . types Ċ Ċ import Ġorg . jetbrains . kotlin . types . checker . Error Types AreEqual To Anything Ċ Ċ /** Ċ Ġ* ĠThis Ġis Ġtemporary Ġhack Ġfor Ġtype Ġinter sector . Ċ Ġ* Ċ Ġ* ĠIt Ġis Ġalmost Ġsave , Ġbecause : Ċ Ġ* Ġ Ġ- Ġit Ġrunning Ġonly Ġif Ġgeneral Ġalgorithm Ġis Ġfailed Ċ Ġ* Ġ Ġ- Ġreturned Ġtype Ġis Ġsubtype Ġof Ġall Ġ[ types ]. Ċ Ġ* Ċ Ġ* ĠBut Ġit Ġis Ġhack , Ġbecause Ġit Ġcan Ġgive Ġun stable Ġresult , Ġbut Ġit Ġbetter Ġthan Ġexception . Ċ Ġ* ĠSee ĠK T - 1 1 2 6 6 . Ċ Ġ*/ Ċ internal Ġfun Ġhack ForType Inter sector ( types : ĠCollection < Kotlin Type >): ĠKotlin Type ? Ġ{ ĊĠĠĠ Ġif Ġ( types . size Ġ< Ġ 2 ) Ġreturn Ġtypes . first OrNull () ĊĊĠĠĠ Ġreturn Ġtypes . first OrNull Ġ{ Ġcandidate Ġ-> ĊĠĠĠĠĠĠĠ Ġtypes . all Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠError Types AreEqual To Anything . is Subtype Of ( candidate , Ġit ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun Ġget Effective Variance ( parameter Variance : ĠVari ance , Ġprojection Kind : ĠVari ance ): ĠVari ance Ġ{ ĊĠĠĠ Ġif Ġ( parameter Variance Ġ=== ĠVari ance . IN VARIANT ) Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġprojection Kind ĊĠĠĠ Ġ} ĊĠĠĠ Ġif Ġ( projection Kind Ġ=== ĠVari ance . IN VARIANT ) Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġparameter Variance ĊĠĠĠ Ġ} ĊĠĠĠ Ġif Ġ( parameter Variance Ġ=== Ġprojection Kind ) Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġparameter Variance ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠIn < out ĠX > Ġ= ĠIn < *> ĊĠĠĠ Ġ// ĠOut < in ĠX > Ġ= ĠOut < *> ĊĠĠĠ Ġreturn ĠVari ance . OUT _ VARI ANCE Ċ }