package Ġorg . jetbrains . du kat . ts Lower ings Ċ Ċ import ĠTop Level Declaration Lower ing Ċ import Ġorg . jetbrains . du kat . logger . Logging Ċ import Ġorg . jetbrains . du kat . owner Context . Node Owner Ċ import Ġorg . jetbrains . du kat . owner Context . wrap Ċ import Ġorg . jetbrains . du kat . ts model . Call Signature Declaration Ċ import Ġorg . jetbrains . du kat . ts model . Class Declaration Ċ import Ġorg . jetbrains . du kat . ts model . Class Like Declaration Ċ import Ġorg . jetbrains . du kat . ts model . Constructor Declaration Ċ import Ġorg . jetbrains . du kat . ts model . Declaration Ċ import Ġorg . jetbrains . du kat . ts model . Function Declaration Ċ import Ġorg . jetbrains . du kat . ts model . Generated Interface Declaration Ċ import Ġorg . jetbrains . du kat . ts model . Her it age Clause Declaration Ċ import Ġorg . jetbrains . du kat . ts model . types . Index Type Declaration Ċ import Ġorg . jetbrains . du kat . ts model . Interface Declaration Ċ import Ġorg . jetbrains . du kat . ts model . types . Key OfType Declaration Ċ import Ġorg . jetbrains . du kat . ts model . Member Declaration Ċ import Ġorg . jetbrains . du kat . ts model . Member Owner Declaration Ċ import Ġorg . jetbrains . du kat . ts model . Method Declaration Ċ import Ġorg . jetbrains . du kat . ts model . Method Signature Declaration Ċ import Ġorg . jetbrains . du kat . ts model . Module Declaration Ċ import Ġorg . jetbrains . du kat . ts model . Parameter Declaration Ċ import Ġorg . jetbrains . du kat . ts model . Parameter Owner Declaration Ċ import Ġorg . jetbrains . du kat . ts model . Property Declaration Ċ import Ġorg . jetbrains . du kat . ts model . Type Alias Declaration Ċ import Ġorg . jetbrains . du kat . ts model . Type Parameter Declaration Ċ import Ġorg . jetbrains . du kat . ts model . Variable Declaration Ċ import Ġorg . jetbrains . du kat . ts model . types . FunctionType Declaration Ċ import Ġorg . jetbrains . du kat . ts model . types . Index Signature Declaration Ċ import Ġorg . jetbrains . du kat . ts model . types . Intersection Type Declaration Ċ import Ġorg . jetbrains . du kat . ts model . types . Object Literal Declaration Ċ import Ġorg . jetbrains . du kat . ts model . types . Parameter Value Declaration Ċ import Ġorg . jetbrains . du kat . ts model . types . Tuple Declaration Ċ import Ġorg . jetbrains . du kat . ts model . types . Type Declaration Ċ import Ġorg . jetbrains . du kat . ts model . types . Type Param Reference Declaration Ċ import Ġorg . jetbrains . du kat . ts model . types . Union Type Declaration Ċ Ċ private Ġval Ġlogger Ġ= ĠLogging . logger (" Type Lower ing ") Ċ Ċ interface ĠDeclaration Lower ing Ġ: ĠTop Level Declaration Lower ing , ĠDeclaration Statement Lower ing Ġ{ ĊĊĠĠĠ Ġfun Ġlower Property Declaration ( declaration : ĠProperty Declaration , Ġowner : ĠNode Owner < Member Declaration >? ): ĠProperty Declaration Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġdeclaration . copy ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtype Ġ= Ġlower Parameter Value ( declaration . type , Ġowner . wrap ( declaration )), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtype Parameters Ġ= Ġdeclaration . type Parameters . map Ġ{ Ġtype Parameter Ġ-> Ġlower Type Parameter ( type Parameter , Ġowner . wrap ( declaration )) Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinitializer Ġ= Ġdeclaration . initializer ?. let Ġ{ Ġlower ( it ) Ġ} ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġlower Constructor Declaration ( declaration : ĠConstructor Declaration , Ġowner : ĠNode Owner < Member Declaration >? ): ĠConstructor Declaration Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġdeclaration . copy ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparameters Ġ= Ġdeclaration . parameters . map Ġ{ Ġparameter Ġ-> Ġlower Parameter Declaration ( parameter , Ġowner . wrap ( declaration )) Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtype Parameters Ġ= Ġdeclaration . type Parameters . map Ġ{ Ġtype Parameter Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtype Parameter . copy ( constraints Ġ= Ġtype Parameter . constraints . map Ġ{ Ġconstraint Ġ-> Ġlower Parameter Value ( constraint , Ġowner . wrap ( declaration )) Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbody Ġ= Ġdeclaration . body ?. let Ġ{ Ġlower Block Statement ( it ) Ġ} ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġlower Call Signature Declaration ( declaration : ĠCall Signature Declaration , Ġowner : ĠNode Owner < Member Declaration >? ): ĠCall Signature Declaration Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġdeclaration . copy ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtype Ġ= Ġlower Parameter Value ( declaration . type , Ġowner . wrap ( declaration )), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparameters Ġ= Ġdeclaration . parameters . map Ġ{ Ġparameter Ġ-> Ġlower Parameter Declaration ( parameter , Ġowner . wrap ( declaration )) Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtype Parameters Ġ= Ġdeclaration . type Parameters . map Ġ{ Ġtype Parameter Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtype Parameter . copy ( constraints Ġ= Ġtype Parameter . constraints . map Ġ{ Ġconstraint Ġ-> Ġlower Parameter Value ( constraint , Ġowner . wrap ( declaration )) Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġlower Index Signature Declaration ( declaration : ĠIndex Signature Declaration , Ġowner : ĠNode Owner < Member Declaration >? ): ĠIndex Signature Declaration Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġdeclaration . copy ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparameters Ġ= Ġdeclaration . parameters . map Ġ{ Ġindex Type Ġ-> Ġlower Parameter Declaration ( index Type , Ġowner . wrap ( declaration )) Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠreturnType Ġ= Ġlower Parameter Value ( declaration . returnType , Ġowner . wrap ( declaration )) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Suppress (" UN CHECK ED _ CAST ") ĊĠĠĠ Ġoverride Ġfun Ġlower Member Declaration ( declaration : ĠMember Declaration , Ġowner : ĠNode Owner < Member Owner Declaration >? ): ĠMember Declaration Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġnew Owner Ġ= Ġowner . wrap ( declaration ) ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ( declaration ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠProperty Declaration Ġ-> Ġlower Property Declaration ( declaration , Ġnew Owner ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠConstructor Declaration Ġ-> Ġlower Constructor Declaration ( declaration , Ġnew Owner ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠMethod Signature Declaration Ġ-> Ġlower Method Signature Declaration ( declaration , Ġnew Owner ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠMethod Declaration Ġ-> Ġlower Method Declaration ( declaration , Ġnew Owner ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠCall Signature Declaration Ġ-> Ġlower Call Signature Declaration ( declaration , Ġnew Owner ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠIndex Signature Declaration Ġ-> Ġlower Index Signature Declaration ( declaration , Ġnew Owner ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlogger . debug ("[ ${ this }] Ġskipping Ġ${ declaration }") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdeclaration ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġlower Method Signature Declaration ( declaration : ĠMethod Signature Declaration , Ġowner : ĠNode Owner < Member Declaration >? ): ĠMethod Signature Declaration Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġdeclaration . copy ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparameters Ġ= Ġdeclaration . parameters . map Ġ{ Ġparameter Ġ-> Ġlower Parameter Declaration ( parameter , Ġowner . wrap ( declaration )) Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtype Parameters Ġ= Ġdeclaration . type Parameters . map Ġ{ Ġtype Parameter Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtype Parameter . copy ( constraints Ġ= Ġtype Parameter . constraints . map Ġ{ Ġconstraint Ġ-> Ġlower Parameter Value ( constraint , Ġowner . wrap ( declaration )) Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtype Ġ= Ġlower Parameter Value ( declaration . type , Ġowner . wrap ( declaration )) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġlower Method Declaration ( declaration : ĠMethod Declaration , Ġowner : ĠNode Owner < Member Declaration >? ): ĠMethod Declaration Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġdeclaration . copy ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparameters Ġ= Ġdeclaration . parameters . map Ġ{ Ġparameter Ġ-> Ġlower Parameter Declaration ( parameter , Ġowner . wrap ( declaration )) Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtype Parameters Ġ= Ġdeclaration . type Parameters . map Ġ{ Ġtype Parameter Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtype Parameter . copy ( constraints Ġ= Ġtype Parameter . constraints . map Ġ{ Ġconstraint Ġ-> Ġlower Parameter Value ( constraint , Ġowner . wrap ( declaration )) Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtype Ġ= Ġlower Parameter Value ( declaration . type , Ġowner . wrap ( declaration )), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbody Ġ= Ġdeclaration . body ?. let Ġ{ Ġlower Block Statement ( it ) Ġ} ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġlower Function Declaration ( declaration : ĠFunction Declaration , Ġowner : ĠNode Owner < Module Declaration >? ): ĠFunction Declaration Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġdeclaration . copy ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparameters Ġ= Ġdeclaration . parameters . map Ġ{ Ġparameter Ġ-> Ġlower Parameter Declaration ( parameter , Ġowner . wrap ( declaration )) Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtype Parameters Ġ= Ġdeclaration . type Parameters . map Ġ{ Ġtype Parameter Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtype Parameter . copy ( constraints Ġ= Ġtype Parameter . constraints . map Ġ{ Ġconstraint Ġ-> Ġlower Parameter Value ( constraint , Ġowner . wrap ( declaration )) Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtype Ġ= Ġlower Parameter Value ( declaration . type , Ġowner . wrap ( declaration )), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbody Ġ= Ġdeclaration . body ?. let Ġ{ Ġlower Block Statement ( it ) Ġ} ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġlower Type Parameter ( declaration : ĠType Parameter Declaration , Ġowner : ĠNode Owner < Declaration >? ): ĠType Parameter Declaration Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġdeclaration . copy ( constraints Ġ= Ġdeclaration . constraints . map Ġ{ Ġconstraint Ġ-> Ġlower Parameter Value ( constraint , Ġowner . wrap ( declaration )) Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġlower Union Type Declaration ( declaration : ĠUnion Type Declaration , Ġowner : ĠNode Owner < Parameter Owner Declaration >? ): ĠParameter Value Declaration Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġdeclaration . copy ( params Ġ= Ġdeclaration . params . map Ġ{ Ġparam Ġ-> Ġlower Parameter Value ( param , Ġowner . wrap ( declaration )) Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġlower Intersection Type Declaration ( declaration : ĠIntersection Type Declaration , Ġowner : ĠNode Owner < Parameter Owner Declaration >? ): ĠIntersection Type Declaration Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġdeclaration . copy ( params Ġ= Ġdeclaration . params . map Ġ{ Ġparam Ġ-> Ġlower Parameter Value ( param , Ġowner . wrap ( declaration )) Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġlower Tuple Declaration ( declaration : ĠTuple Declaration , Ġowner : ĠNode Owner < Parameter Owner Declaration >? ): ĠTuple Declaration Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġdeclaration . copy ( params Ġ= Ġdeclaration . params . map Ġ{ Ġparam Ġ-> Ġlower Parameter Value ( param , Ġowner . wrap ( declaration )) Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġlower Type Declaration ( declaration : ĠType Declaration , Ġowner : ĠNode Owner < Parameter Owner Declaration >? ): ĠType Declaration Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġdeclaration . copy ( params Ġ= Ġdeclaration . params . map Ġ{ Ġparam Ġ-> Ġlower Parameter Value ( param , Ġowner . wrap ( declaration )) Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġlower Object Literal Declaration ( declaration : ĠObject Literal Declaration , Ġowner : ĠNode Owner < Parameter Owner Declaration >? ): ĠParameter Value Declaration Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġdeclaration . copy ( members Ġ= Ġdeclaration . members . map Ġ{ Ġmember Ġ-> Ġlower Member Declaration ( member , Ġowner . wrap ( declaration )) Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġlower Key OfType Declaration ( declaration : ĠKey OfType Declaration , Ġowner : ĠNode Owner < Parameter Owner Declaration >? ): ĠParameter Value Declaration Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġdeclaration . copy ( type Ġ= Ġlower Parameter Value ( declaration . type , Ġowner . wrap ( declaration ))) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġlower Index Type Declaration ( declaration : ĠIndex Type Declaration , Ġowner : ĠNode Owner < Parameter Owner Declaration >? ): ĠParameter Value Declaration Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġdeclaration . copy ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġobject Type Ġ= Ġlower Parameter Value ( declaration . object Type , Ġowner . wrap ( declaration )), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġindex Type Ġ= Ġlower Parameter Value ( declaration . index Type , Ġowner . wrap ( declaration )) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġlower FunctionType Declaration ( declaration : ĠFunction Type Declaration , Ġowner : ĠNode Owner < Parameter Owner Declaration >? ): ĠFunction Type Declaration Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġdeclaration . copy ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparameters Ġ= Ġdeclaration . parameters . map Ġ{ Ġparam Ġ-> Ġlower Parameter Declaration ( param , Ġowner . wrap ( declaration )) Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtype Ġ= Ġlower Parameter Value ( declaration . type , Ġowner . wrap ( declaration )) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġlower Parameter Declaration ( declaration : ĠParameter Declaration , Ġowner : ĠNode Owner < Parameter Owner Declaration >? ): ĠParameter Declaration Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġdeclaration . copy ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtype Ġ= Ġlower Parameter Value ( declaration . type , Ġowner ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġoverride Ġfun Ġlower Variable Declaration ( declaration : ĠVariable Declaration ): ĠVariable Declaration Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġlower Variable Declaration ( declaration , Ġnull ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġlower Variable Declaration ( declaration : ĠVariable Declaration , Ġowner : ĠNode Owner < Module Declaration >? ): ĠVariable Declaration Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġdeclaration . copy ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtype Ġ= Ġlower Parameter Value ( declaration . type , Ġowner . wrap ( declaration )), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinitializer Ġ= Ġdeclaration . initializer ?. let Ġ{ Ġlower ( it ) Ġ} ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġlower Her it age Clause ( herit age Clause : ĠHer it age Clause Declaration , Ġowner : ĠNode Owner < Class Like Declaration >? ): ĠHer it age Clause Declaration Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġher it age Clause . copy ( type Arguments Ġ= Ġher it age Clause . type Arguments . map Ġ{ Ġtype Argument Ġ-> Ġlower Parameter Value ( type Argument , Ġowner . wrap ( herit age Clause )) Ġ}) ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġoverride Ġfun Ġlower Interface Declaration ( declaration : ĠInterface Declaration , Ġowner : ĠNode Owner < Module Declaration >? ): ĠInterface Declaration Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġdeclaration . copy ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmembers Ġ= Ġdeclaration . members . map Ġ{ Ġmember Ġ-> Ġlower Member Declaration ( member , Ġowner . wrap ( declaration )) Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparent Entities Ġ= Ġdeclaration . parent Entities . map Ġ{ Ġher it age Clause Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlower Her it age Clause ( herit age Clause , Ġowner . wrap ( declaration )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtype Parameters Ġ= Ġdeclaration . type Parameters . map Ġ{ Ġtype Parameter Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlower Type Parameter ( type Parameter , Ġowner . wrap ( declaration )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġlower Generated Interface Declaration ( declaration : ĠGenerated Interface Declaration , Ġowner : ĠNode Owner < Module Declaration >? ): ĠGenerated Interface Declaration Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġdeclaration . copy ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmembers Ġ= Ġdeclaration . members . map Ġ{ Ġmember Ġ-> Ġlower Member Declaration ( member , Ġowner . wrap ( declaration )) Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparent Entities Ġ= Ġdeclaration . parent Entities . map Ġ{ Ġher it age Clause Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlower Her it age Clause ( herit age Clause , Ġowner . wrap ( declaration )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtype Parameters Ġ= Ġdeclaration . type Parameters . map Ġ{ Ġtype Parameter Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlower Type Parameter ( type Parameter , Ġowner . wrap ( declaration )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġlower Type Alias Declaration ( declaration : ĠType Alias Declaration , Ġowner : ĠNode Owner < Module Declaration >? ): ĠType Alias Declaration Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġdeclaration . copy ( type Reference Ġ= Ġlower Parameter Value ( declaration . type Reference , Ġowner . wrap ( declaration ))) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġlower Class Declaration ( declaration : ĠClass Declaration , Ġowner : ĠNode Owner < Module Declaration >? ): ĠClass Declaration Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġdeclaration . copy ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmembers Ġ= Ġdeclaration . members . map Ġ{ Ġmember Ġ-> Ġlower Member Declaration ( member , Ġowner . wrap ( declaration )) Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparent Entities Ġ= Ġdeclaration . parent Entities . map Ġ{ Ġher it age Clause Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlower Her it age Clause ( herit age Clause , Ġowner . wrap ( declaration )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtype Parameters Ġ= Ġdeclaration . type Parameters . map Ġ{ Ġtype Parameter Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlower Type Parameter ( type Parameter , Ġowner . wrap ( declaration )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġlower Type Param Reference Declaration ( declaration : ĠType Param Reference Declaration ): ĠParameter Value Declaration Ġ= Ġdeclaration ĊĊĠĠĠ Ġoverride Ġfun Ġlower Parameter Value ( declaration : ĠParameter Value Declaration , Ġowner : ĠNode Owner < Parameter Owner Declaration >? ): ĠParameter Value Declaration Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ( declaration ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠType Declaration Ġ-> Ġlower Type Declaration ( declaration , Ġowner ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠFunction Type Declaration Ġ-> Ġlower FunctionType Declaration ( declaration , Ġowner ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠUnion Type Declaration Ġ-> Ġlower Union Type Declaration ( declaration , Ġowner ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠType Param Reference Declaration Ġ-> Ġlower Type Param Reference Declaration ( declaration ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠTuple Declaration Ġ-> Ġlower Tuple Declaration ( declaration , Ġowner ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠIntersection Type Declaration Ġ-> Ġlower Intersection Type Declaration ( declaration , Ġowner ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠObject Literal Declaration Ġ-> Ġlower Object Literal Declaration ( declaration , Ġowner ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠKey OfType Declaration Ġ-> Ġlower Key OfType Declaration ( declaration , Ġowner ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠIndex Type Declaration Ġ-> Ġlower Index Type Declaration ( declaration , Ġowner ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġdeclaration ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ }