package Ġorg . jetbrains . du kat . ts Lower ings Ċ Ċ import Ġorg . jetbrains . du kat . ast Common . Identifier Entity Ċ import Ġorg . jetbrains . du kat . ast Common . Name Entity Ċ import Ġorg . jetbrains . du kat . ast Common . Qualifier Entity Ċ import Ġorg . jetbrains . du kat . model . common Lower ings . Local Coll isions Ċ import Ġorg . jetbrains . du kat . model . common Lower ings . Translation Context Ċ import Ġorg . jetbrains . du kat . owner Context . Node Owner Ċ import Ġorg . jetbrains . du kat . owner Context . wrap Ċ import Ġorg . jetbrains . du kat . stdlib . K LIB ROOT Ċ import Ġorg . jetbrains . du kat . ts model . Module Declaration Ċ import Ġorg . jetbrains . du kat . ts model . Parameter Owner Declaration Ċ import Ġorg . jetbrains . du kat . ts model . Source Set Declaration Ċ import Ġorg . jetbrains . du kat . ts model . types . Type Declaration Ċ import Ġorg . jetbrains . du kat . ts model . types . Union Type Declaration Ċ Ċ private Ġfun Ġmap Primitive Value ( value : ĠString ): ĠString Ġ{ ĊĠĠĠ Ġreturn Ġwhen Ġ( value ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ" any " Ġ-> Ġ" Any " ĊĠĠĠĠĠĠĠ Ġ" boolean " Ġ-> Ġ" Boolean " ĊĠĠĠĠĠĠĠ Ġ" string " Ġ-> Ġ" String " ĊĠĠĠĠĠĠĠ Ġ" number " Ġ-> Ġ" Number " ĊĠĠĠĠĠĠĠ Ġelse Ġ-> Ġvalue ĊĠĠĠ Ġ} Ċ } Ċ Ċ private Ġfun ĠName Entity . map Primitive (): ĠName Entity Ġ{ ĊĠĠĠ Ġreturn Ġwhen Ġ( this ) Ġ{ ĊĠĠĠĠĠĠĠ Ġis ĠIdentifier Entity Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcopy ( value Ġ= Ġmap Primitive Value ( value )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġelse Ġ-> Ġthis ĊĠĠĠ Ġ} Ċ } Ċ Ċ private Ġfun ĠType Declaration . is Primitive ( primitive : ĠString ): ĠBoolean Ġ{ ĊĠĠĠ Ġreturn Ġwhen Ġ( value ) Ġ{ ĊĠĠĠĠĠĠĠ Ġis ĠIdentifier Entity Ġ-> Ġ( value Ġas ĠIdentifier Entity ). value Ġ== Ġprimitive ĊĠĠĠĠĠĠĠ Ġelse Ġ-> Ġfalse ĊĠĠĠ Ġ} Ċ } ĊĊ Ċ private Ġclass ĠPri mitives Lower ing ( private Ġval Ġlocal Coll isions : ĠLocal Coll isions ) Ġ: ĠDeclaration Lower ing Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġlower Type Declaration ( ĊĠĠĠĠĠĠĠ Ġdeclaration : ĠType Declaration , ĊĠĠĠĠĠĠĠ Ġowner : ĠNode Owner < Parameter Owner Declaration >? ĊĠĠĠ Ġ): ĠType Declaration Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( declaration . value Ġ== ĠIdentifier Entity (" Function ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġdeclaration . copy ( params Ġ= ĠlistOf ( Type Declaration ( Identifier Entity ("* "), Ġempty List ()))) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġvar Ġvalue Ġ= Ġdeclaration . value . map Primitive () ĊĠĠĠĠĠĠĠ Ġvar Ġnullable Ġ= Ġdeclaration . nullable ĊĠĠĠĠĠĠĠ Ġvar Ġmeta Ġ= Ġdeclaration . meta ĊĊĠĠĠĠĠĠĠ Ġif Ġ( declaration . is Primitive (" undefined ") Ġ|| Ġdeclaration . is Primitive (" null ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( owner ?. node Ġ! is ĠUnion Type Declaration ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalue Ġ= ĠIdentifier Entity (" Nothing ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnullable Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmeta Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġdeclaration . copy ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvalue Ġ= Ġvalue . escape Collision In ( local Coll isions ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġparams Ġ= Ġdeclaration . params . map Ġ{ Ġlower Parameter Value ( it , Ġowner . wrap ( declaration )) Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtype Reference Ġ= Ġif Ġ( value Ġ!= Ġdeclaration . value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdeclaration . type Reference ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnullable Ġ= Ġnullable , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmeta Ġ= Ġmeta ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠName Entity . escape Collision In ( local Coll isions : ĠLocal Coll isions ): ĠName Entity Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( this Ġis ĠIdentifier Entity Ġ&& Ġlocal Coll isions . contains ( value )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠQual ifier Entity ( K LIB ROOT , Ġthis ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ private Ġfun ĠModule Declaration . lower Primitives ( local Coll isions : ĠLocal Coll isions ): ĠModule Declaration Ġ{ ĊĠĠĠ Ġreturn ĠPri mitives Lower ing ( local Coll isions ). lower Source Declaration ( this ) Ċ } Ċ Ċ private Ġfun ĠSource Set Declaration . lower Primitives ( translation Context : ĠTranslation Context ): ĠSource Set Declaration Ġ{ ĊĠĠĠ Ġreturn Ġcopy ( sources Ġ= Ġsources . map Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlocal Coll isions Ġ= Ġtranslation Context . collision Context . get Coll isions For The File ( it . root . uid ) ĊĠĠĠĠĠĠĠ Ġit . copy ( root Ġ= Ġit . root . lower Primitives ( local Coll isions )) ĊĠĠĠ Ġ}) Ċ } Ċ Ċ class ĠLower Primitives ( private Ġval Ġtranslation Context : ĠTranslation Context ) Ġ: ĠTs Lower ing Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġlower ( source : ĠSource Set Declaration ): ĠSource Set Declaration Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġsource . lower Primitives ( translation Context ) ĊĠĠĠ Ġ} Ċ }