package Ġorg . jetbrains . du kat . common 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 . Simple Comment Entity Ċ import Ġorg . jetbrains . du kat . ast Common . append Left Ċ import Ġorg . jetbrains . du kat . ast Model . Class Like Model Ċ import Ġorg . jetbrains . du kat . ast Model . Function Model Ċ import Ġorg . jetbrains . du kat . ast Model . Her it age Model Ċ import Ġorg . jetbrains . du kat . ast Model . Module Model Ċ import Ġorg . jetbrains . du kat . ast Model . SourceFile Model Ċ import Ġorg . jetbrains . du kat . ast Model . Source Set Model Ċ import Ġorg . jetbrains . du kat . ast Model . TopLevel Model Ċ import Ġorg . jetbrains . du kat . ast Model . Type Alias Model Ċ import Ġorg . jetbrains . du kat . ast Model . Type Parameter Model Ċ import Ġorg . jetbrains . du kat . ast Model . Type Value Model Ċ import Ġorg . jetbrains . du kat . ast Model . modifiers . Visibility Modifier Model Ċ import Ġorg . jetbrains . du kat . model . common Lower ings . Model Lower ing Ċ import Ġorg . jetbrains . du kat . model . common Lower ings . Model With Owner Type Lower ing Ċ import Ġorg . jetbrains . du kat . owner Context . Node Owner Ċ import Ġorg . jetbrains . du kat . stdlib . TS LIB ROOT Ċ import Ġorg . jetbrains . du kat . stdlib . is Ts Std lib Prefix ed Ċ Ċ private Ġfun ĠType Value Model . is Lib Reference (): ĠBoolean Ġ{ ĊĠĠĠ Ġreturn Ġfq Name ?. is Ts Std lib Prefix ed () Ġ== Ġtrue Ċ } Ċ Ċ private Ġfun ĠHer it age Model . is Lib Reference (): ĠBoolean Ġ{ ĊĠĠĠ Ġreturn Ġvalue . is Lib Reference () Ċ } ĊĊ Ċ private Ġfun ĠName Entity . fq Lib (): ĠName Entity Ġ{ ĊĠĠĠ Ġreturn ĠTS LIB ROOT . append Left ( this ) Ċ } Ċ Ċ private Ġfun ĠString . fq Lib (): ĠName Entity Ġ{ ĊĠĠĠ Ġreturn ĠIdentifier Entity ( this ). fq Lib () Ċ } Ċ Ċ private Ġfun ĠType Value Model . create Std Type ( name : ĠString ): ĠType Value Model Ġ{ ĊĠĠĠ Ġval Ġname Entity Ġ= ĠIdentifier Entity ( name ) ĊĠĠĠ Ġreturn Ġcopy ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvalue Ġ= Ġname Entity , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġparams Ġ= Ġempty List (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfq Name Ġ= Ġname Entity . fq Lib () ĊĠĠĠ Ġ) Ċ } Ċ Ċ private Ġenum Ġclass ĠSubst it uted Entities ( val Ġvalue : ĠIdentifier Entity ) Ġ{ ĊĠĠĠ ĠNON _ NULL ABLE ( Identifier Entity (" Non Nullable ")), ĊĠĠĠ ĠEX CL UDE ( Identifier Entity (" Exclude ")), ĊĠĠĠ ĠREQUIRED ( Identifier Entity (" Required ")), ĊĠĠĠ ĠREAD ONLY _ ARRAY ( Identifier Entity (" Readonly Array ")), ĊĠĠĠ ĠTEMPLATE _ STRING S _ ARRAY ( Identifier Entity (" Template Strings Array ")), ĊĠĠĠ ĠOBJECT ( Identifier Entity (" Object ")) Ċ } Ċ Ċ private Ġfun ĠType Value Model . resolve As Substitution (): ĠType Value Model ? Ġ{ ĊĠĠĠ Ġval Ġis Lib Reference Ġ= Ġis Lib Reference () ĊĊĠĠĠ Ġreturn Ġif Ġ( value Ġ== ĠSubst it uted Entities . NON _ NULL ABLE . value Ġ|| Ġvalue Ġ== ĠSubst it uted Entities . EXCL UDE . value Ġ|| Ġvalue Ġ== ĠSubst it uted Entities . REQUIRED . value Ġ|| Ġvalue Ġ== ĠSubst it uted Entities . OBJECT . value ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( is Lib Reference ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcreate Std Type (" Any ") ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġnull ĊĠĠĠ Ġ} Ġelse Ġif Ġ( value Ġ== ĠSubst it uted Entities . READ ONLY _ ARRAY . value ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( is Lib Reference ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfq Name Ġ= Ġ" Array ". fq Lib () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcopy ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalue Ġ= Ġfq Name , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfq Name Ġ= Ġfq Name ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġnull ĊĠĠĠ Ġ} Ġelse Ġif Ġ( value Ġ== ĠSubst it uted Entities . TEMPLATE _ STRING S _ ARRAY . value ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġfq Name Ġ= Ġ" Array ". fq Lib () ĊĠĠĠĠĠĠĠ Ġif Ġ( is Lib Reference ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġstring Fq Name Ġ= Ġ" String ". fq Lib () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcopy ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalue Ġ= Ġfq Name , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfq Name Ġ= Ġfq Name , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparams Ġ= ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠType Parameter Model ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠType Value Model ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalue Ġ= Ġstring Fq Name , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfq Name Ġ= Ġstring Fq Name , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparams Ġ= Ġempty List (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmeta Description Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnullable Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġempty List () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġnull ĊĠĠĠ Ġ} Ġelse Ġnull Ċ } Ċ Ċ @ Suppress (" UN CHECK ED _ CAST ") Ċ private Ġfun ĠClass Like Model . convertTo Type Alias ( for bidden Parent : ĠHer it age Model ): ĠType Alias Model Ġ{ ĊĠĠĠ Ġreturn ĠType Alias Model ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= Ġname , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtype Parameters Ġ= Ġtype Parameters . map Ġ{ Ġit . copy ( constraints Ġ= Ġempty List ()) Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvisibility Modifier Ġ= ĠVisibility Modifier Model . DEFAULT , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcomment Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtype Reference Ġ= Ġforbidden Parent . value . copy ( params Ġ= Ġforbidden Parent . type Params . map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠType Parameter Model ( it , Ġempty List ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ) Ċ } Ċ Ċ private Ġclass ĠSubstitute Lower ing Ġ: ĠModel With Owner Type Lower ing Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġstd Lib Final Entities Ġ= Ġset Of < Name Entity >( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠIdentifier Entity (" Array "), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠIdentifier Entity (" Date "), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠIdentifier Entity (" EventListener Handler "), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠIdentifier Entity (" Function "), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠIdentifier Entity (" RegExp "), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠIdentifier Entity (" Readonly Array "), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠIdentifier Entity (" Error "), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠIdentifier Entity (" SyntaxError "), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠIdentifier Entity (" Iterable "), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠIdentifier Entity (" Iterator "), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠIdentifier Entity (" String ") ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġprivate Ġval Ġsubstitute In lines Ġ= Ġmap Of ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPair ( Subst it uted Entities . READ ONLY _ ARRAY . value , Ġ" Array ") ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġoverride Ġfun Ġlower Function Model ( owner Context : ĠNode Owner < Function Model >, Ġparent Module : ĠModule Model ): ĠFunction Model Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdeclaration Ġ= Ġowner Context . node ĊĠĠĠĠĠĠĠ Ġval Ġdeclaration Resolved Ġ= Ġdeclaration . extend ?. let Ġ{ Ġextended Interface Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġcomment Resolved Ġ= Ġdeclaration . comment ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġextend Resolved Ġ= Ġsubstitute In lines . get ( extended Interface . name )?. let Ġ{ Ġsubstit uted Name Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcomment Ġ= Ġdeclaration . comment ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcomment Resolved Ġ= Ġwhen Ġ( comment ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠSimple Comment Entity Ġ-> ĠSimple Comment Entity ("${ comment . text }; Ġreplaced Ġ${ Subst it uted Entities . READ ONLY _ ARRAY . value . value } Ġ=> Ġ${ subst it uted Name } Ġ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġcomment ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġextended Interface . copy ( name Ġ= ĠIdentifier Entity ( subst it uted Name )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġ?: Ġextended Interface ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġdeclaration . copy ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġextend Ġ= Ġextend Resolved , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcomment Ġ= Ġcomment Resolved ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} Ġ?: Ġdeclaration ĊĠĠĠĠĠĠĠ Ġreturn Ġsuper . lower Function Model ( owner Context . copy ( node Ġ= Ġdeclaration Resolved ), Ġparent Module ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġlower TopLevel Model ( owner Context : ĠNode Owner < TopLevel Model >, Ġparent Module : ĠModule Model ): ĠTop Level Model ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdeclaration Ġ= Ġowner Context . node ĊĠĠĠĠĠĠĠ Ġval Ġdeclaration Resolved Ġ= Ġif Ġ( declaration Ġis ĠClass Like Model ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdeclaration . parent Entities . first OrNull Ġ{ Ġparent Entity Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparent Entity . is Lib Reference () Ġ&& Ġstd Lib Final Entities . contains ( parent Entity . value . value ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ?. let Ġ{ Ġforbidden Parent Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdeclaration . convertTo Type Alias ( for bidden Parent ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠ Ġ} Ġ?: Ġdeclaration ĊĊĠĠĠĠĠĠĠ Ġreturn Ġsuper . lower TopLevel Model ( owner Context . copy ( node Ġ= Ġdeclaration Resolved ), Ġparent Module ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġlower Type Value Model ( owner Context : ĠNode Owner < Type Value Model >): ĠType Value Model Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdeclaration Ġ= Ġowner Context . node ĊĠĠĠĠĠĠĠ Ġreturn Ġdeclaration . resolve As Substitution ()?. let Ġ{ Ġresolved Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . lower Type Value Model ( owner Context . copy ( node Ġ= Ġresolved )) ĊĠĠĠĠĠĠĠ Ġ} Ġ?: Ġsuper . lower Type Value Model ( owner Context ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ class ĠSubstitute Ts Std Lib Entities Ġ: ĠModel Lower ing Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġlower ( module : ĠModule Model ): ĠModule Model Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠSubstitute Lower ing (). lower Root ( module , ĠNode Owner ( module , Ġnull )) ĊĠĠĠ Ġ} Ċ } Ċ