/* Ċ Ġ* Ġ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 . load . java Ċ Ċ import Ġorg . jetbrains . kotlin . name . Class Id Ċ import Ġorg . jetbrains . kotlin . name . Fq Name Ċ import Ġorg . jetbrains . kotlin . resolve . Descriptor Utils Ċ import Ġorg . jetbrains . kotlin . resolve . Type Resolver . Type Transformer For Tests Ċ import Ġorg . jetbrains . kotlin . types .* Ċ Ċ object ĠInternal Flex ible Type Transformer Ġ: ĠType Transformer For Tests () Ġ{ ĊĠĠĠ Ġ// ĠThis Ġis Ġa Ġ" magic " Ġclassifier : Ġwhen Ġtype Ġresolver Ġsees Ġit Ġin Ġthe Ġcode , Ġe . g . Ġft < Foo , ĠFoo ? >, Ġinstead Ġof Ġcreating Ġa Ġnormal Ġtype , ĊĠĠĠ Ġ// Ġit Ġcreates Ġa Ġflexible Ġtype , Ġe . g . Ġ( Foo .. Foo ?). ĊĠĠĠ Ġ// ĠThis Ġis Ġused Ġin Ġtests Ġand ĠEvaluate ĠExpression Ġto Ġhave Ġflexible Ġtypes Ġin Ġthe Ġcode , ĊĠĠĠ Ġ// Ġbut Ġnormal Ġusers Ġshould Ġnot Ġbe Ġreferencing Ġthis Ġclassifier ĊĠĠĠ Ġ@ Jvm Field ĊĠĠĠ Ġval ĠF LEX IBLE _ TYPE _ CLAS SI FIER : ĠClass Id Ġ= ĠClass Id . top Level ( Fq Name (" kotlin . internal . flex ible . ft ")) ĊĊĠĠĠ Ġoverride Ġfun Ġtransform Type ( kotlin Type : ĠKotlin Type ): ĠKotlin Type ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdescriptor Ġ= Ġkotlin Type . constructor . declaration Descriptor ĊĠĠĠĠĠĠĠ Ġif Ġ( descriptor Ġ!= Ġnull Ġ&& ĠF LEX IBLE _ TYPE _ CLAS SI FIER . as Single Fq Name (). to Unsafe () Ġ== ĠDescriptor Utils . getF q Name ( descriptor ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ&& Ġkotlin Type . arguments . size Ġ== Ġ 2 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠKotlin Type Factory . flex ible Type ( kotlin Type . arguments [ 0 ]. type . unwrap () Ġas ĠSimple Type , Ġkotlin Type . arguments [ 1 ]. type . unwrap () Ġas ĠSimple Type ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠ Ġ} Ċ } Ċ