package Ġcom . rick cle ph as . k mp . native coroutines . compiler . utils Ċ Ċ import Ġorg . jetbrains . kotlin . descriptors . Declaration Descriptor Ċ import Ġorg . jetbrains . kotlin . descriptors . Type Parameter Descriptor Ċ import Ġorg . jetbrains . kotlin . types . Kotlin Type Ċ import Ġorg . jetbrains . kotlin . types . Kotlin Type Factory Ċ import Ġorg . jetbrains . kotlin . types . Type Constructor Ċ Ċ internal Ġfun ĠKotlin Type . replace Function Gener ics ( ĊĠĠĠ Ġold Containing Declaration : ĠDeclaration Descriptor , ĊĠĠĠ Ġnew Type Parameters : ĠList < Type Parameter Descriptor > Ċ ): ĠKotlin Type Ġ{ ĊĠĠĠ Ġfun ĠKotlin Type . replace Function Gener ics (): ĠKotlin Type ? Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠReplace Ġthe Ġtype Ġconstructor ĊĠĠĠĠĠĠĠ Ġvar Ġtype Constructor : ĠType Constructor ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġval Ġtype Parameter Ġ= Ġconstructor . declaration Descriptor Ġas ? ĠType Parameter Descriptor ĊĠĠĠĠĠĠĠ Ġif Ġ( type Parameter Ġ!= Ġnull Ġ&& Ġtype Parameter . containing Declaration Ġ== Ġold Containing Declaration ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtype Constructor Ġ= Ġnew Type Parameters . first Ġ{ Ġit . index Ġ== Ġtype Parameter . index Ġ}. type Constructor ĊĠĠĠĠĠĠĠ Ġ// ĠReplace Ġthe Ġarguments ĊĠĠĠĠĠĠĠ Ġvar Ġshould Replace Arguments Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġval Ġarguments Ġ= Ġarguments . map Ġ{ Ġprojection Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprojection . type . replace Function Gener ics ()?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshould Replace Arguments Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprojection . replace Type ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġ?: Ġprojection ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ// ĠOnly Ġcreate Ġa Ġnew Ġtype Ġif Ġsomething Ġwas Ġreplaced ĊĠĠĠĠĠĠĠ Ġif Ġ( type Constructor Ġ== Ġnull Ġ&& Ġ! should Replace Arguments ) Ġreturn Ġnull ĊĠĠĠĠĠĠĠ Ġreturn ĠKotlin Type Factory . simple Type ( annotations , Ġtype Constructor Ġ?: Ġconstructor , Ġarguments , Ġis Marked Nullable ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġthis . replace Function Gener ics () Ġ?: Ġthis Ċ }