package Ġcom . ember js . h bs Ċ Ċ import Ġcom . d mar cot te . handle bars . psi . Hb Must ache Ċ import Ġcom . d mar cot te . handle bars . psi . Hb Param Ċ import Ġcom . ember js . Em ber Attr Dec Ċ import Ġcom . ember js . index . Em ber Name Index Ċ import Ġcom . ember js . psi . Em ber Named Attribute Ċ import Ġcom . ember js . psi . Em ber Named Element Ċ import Ġcom . ember js . translations . Em ber Translation H bs Reference Provider Ċ import Ġcom . ember js . utils .* Ċ import Ġcom . intellij . openapi . project . guess Project Dir Ċ import Ġcom . intellij . openapi . util . Text Range Ċ import Ġcom . intellij . patterns . Element Pattern Ċ import Ġcom . intellij . patterns . Platform Patterns Ċ import Ġcom . intellij . patterns . Xml Tag Pattern Ċ import Ġcom . intellij . psi .* Ċ import Ġcom . intellij . psi . search . Global Search Scope Ċ import Ġcom . intellij . psi . xml . XmlAttribute Ċ import Ġcom . intellij . psi . xml . XmlAttribute Decl Ċ import Ġcom . intellij . util . Processing Context Ċ Ċ fun Ġfilter ( element : ĠPsi Element , Ġfn : Ġ( Psi Element ) Ġ-> ĠPsi Reference ?): ĠPsi Reference ? Ġ{ ĊĠĠĠ Ġif Ġ( element . text . contains (". ")) Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠ Ġ} ĊĠĠĠ Ġif Ġ( H bs Local Reference . create Reference ( element ) Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġfn ( element ) Ċ } Ċ Ċ class ĠRange d Reference ( element : ĠPsi Element , Ġval Ġtarget : ĠPsi Element ?, Ġval Ġrange : ĠText Range ) Ġ: ĠPsi Reference Base < Psi Element >( element ) Ġ{ ĊĠĠĠ Ġprivate Ġvar Ġnamed Xml : ĠEmber Named Attribute ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġnamed : ĠEmber Named Element ? ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . named Ġ= Ġtarget ?. let Ġ{ ĠEmber Named Element ( it ) Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( target Ġis ĠXml Attribute Ġ&& Ġtarget . descriptor ?. declaration Ġis ĠEmber Attr Dec ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . named Xml Ġ= Ġtarget . let Ġ{ ĠEmber Named Attribute ( it . descriptor !!. declaration Ġas ĠXml Attribute Decl , ĠInt Range ( range . start Offset , Ġrange . end Offset )) Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĠĠĠ Ġoverride Ġfun Ġresolve (): ĠPsi Element ? Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( target Ġis ĠXml Attribute ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnamed Xml ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġnamed ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Range In Element (): ĠText Range Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġrange ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġhandle Element Rename ( new ElementName : ĠString ): ĠPsi Element Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( element Ġis ĠXml Attribute ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġattr Ġ= Ġelement Ġas ĠXml Attribute ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar ĠnewName Ġ= Ġ"" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( attr . name . startsWith ("| ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠnewName Ġ= Ġ" |" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠnewName Ġ+= Ġnew ElementName ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( attr . name . endsWith ("| ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠnewName Ġ+= Ġ" |" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġattr . name Ġ= ĠnewName ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġelement ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġsuper . handle Element Rename ( new ElementName ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ class ĠImport Path References Provider Ġ: ĠPsi Reference Provider () Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġget References By Element ( element : ĠPsi Element , Ġcontext : ĠProcessing Context ): ĠArray < Range d Reference > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġpsi Manager : ĠPsi Manager Ġby Ġlazy Ġ{ ĠPsi Manager . getInstance ( element . project ) Ġ} ĊĠĠĠĠĠĠĠ Ġvar Ġpath Ġ= Ġelement . text . substring ( 1 , Ġelement . text . last Index ) ĊĠĠĠĠĠĠĠ Ġvar Ġresolved File : ĠPsi FileSystem Item ? Ġ= Ġelement . original Element . containing File . parent ĊĠĠĠĠĠĠĠ Ġvar Ġparts Ġ= Ġpath . split ("/") ĊĊĠĠĠĠĠĠĠ Ġval Ġname Ġ= Ġfind Main ProjectName ( element . original Virtual File !! ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( parts [ 0 ] Ġ== Ġname ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpath Ġ= Ġpath . replace ( Regex ("^ $ name / "), Ġ"~/ ") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( path . startsWith (" ~ ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresolved File Ġ= Ġpsi Manager . find Directory ( element . original Virtual File !!. parent Em ber Module !! ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ(! path . startsWith (" ~ ") Ġ&& Ġ! path . startsWith (". ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġparent Ġ= Ġelement . original Virtual File !!. parent Em ber Module ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( parent ?. parent Em ber Module Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparent Ġ= Ġparent . parent Em ber Module ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresolved File Ġ= Ġpsi Manager . find Directory ( parent !! ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresolved File Ġ= Ġresolved File ?. find Sub directory (" node _ modules ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġfiles Ġ= Ġparts . map Ġ{ Ġs Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( s Ġ== Ġ"." Ġ|| Ġs Ġ== Ġ"~ ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġdo Ġnothing ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġif Ġ( s Ġ== Ġ".. ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresolved File Ġ= Ġresolved File ?. parent ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( resolved File Ġis ĠPsi Directory ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġdir Ġ= Ġresolved File Ġas ĠPsi Directory ? ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( resolved File !!. virtual File . is Em ber Addon Folder Ġ|| Ġresolved File !!. virtual File . is Em ber Folder ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdir Ġ= Ġdir ?. find Sub directory (" addon ") Ġ?: Ġdir ?. find Sub directory (" app ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresolved File Ġ= Ġdir ?. find Sub directory ( s ) Ġ?: Ġdir ?. children ?. find Ġ{ Ġit Ġis ĠPsi File Ġ&& Ġit . name . split (". "). first () Ġ== Ġs Ġ} Ġas ĠPsi FileSystem Item ? ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġresolved File ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresolved File Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresolved File ĊĠĠĠĠĠĠĠ Ġ}. to Mutable List () ĊĊĠĠĠĠĠĠĠ Ġval Ġfile : ĠPsi File ? ĊĠĠĠĠĠĠĠ Ġif Ġ( resolved File Ġis ĠPsi Directory ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresolved Path Ġ= Ġresolved File !!. virtual File . path . replace (" addon /", Ġ""). replace (" app /", Ġ"") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġscope Ġ= ĠGlobal Search Scope . all Scope ( element . project ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfile Ġ= ĠEmber Name Index . get Filtered Files ( scope ) Ġ{ Ġit . import Path . isNotBlank () Ġ&& Ġresolved Path . endsWith ( it . import Path ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠFilter Ġout Ġfiles Ġthat Ġare Ġnot Ġrelated Ġto Ġthis Ġpr ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġpsi Manager . find File ( it ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. first OrNull () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfile Ġ= Ġresolved File Ġas ĠPsi File ? ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġfiles [ files . last Index ] Ġ= Ġfile Ġ?: Ġfiles . last () ĊĠĠĠĠĠĠĠ Ġreturn Ġfiles . map Indexed () Ġ{ Ġindex , Ġit Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġp Ġ= Ġparts . sub List ( 0 , Ġindex ). join ToString ("/") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġoffset : ĠInt ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( p . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoffset Ġ= Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoffset Ġ= Ġp . length Ġ+ Ġ 2 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrange Ġ= ĠText Range ( offset , Ġoffset Ġ+ Ġparts [ index ]. length ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠRange d Reference ( element , Ġit , Ġrange ) ĊĠĠĠĠĠĠĠ Ġ}. to Typed Array () ĊĠĠĠ Ġ} Ċ } Ċ Ċ class ĠImport Name References Provider Ġ: ĠPsi Reference Provider () Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġget References By Element ( element : ĠPsi Element , Ġcontext : ĠProcessing Context ): ĠArray < Psi Reference > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġnames Ġ= Ġelement . text . replace (" '", Ġ""). replace (" \"", Ġ""). split (",") ĊĠĠĠĠĠĠĠ Ġval Ġnamed Ġ= Ġnames . map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it . contains (" Ġas Ġ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . split (" Ġas Ġ"). first () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}. map Ġ{ Ġit . toLowerCase (). replace (" Ġ", Ġ"") Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġmust ache Ġ= Ġelement . parents . find Ġ{ Ġit Ġis ĠH b Must ache Ġ} !! ĊĠĠĠĠĠĠĠ Ġval Ġpath Ġ= Ġmust ache . children . find Last Ġ{ Ġit Ġis ĠH b Param Ġ} ĊĠĠĠĠĠĠĠ Ġvar Ġfile Ref Ġ= Ġpath ?. children ?. get ( 0 )?. children ?. get ( 0 )?. references ?. last OrNull ()?. resolve () ĊĠĠĠĠĠĠĠ Ġif Ġ( file Ref Ġis ĠEmber Named Element ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfile Ref Ġ= Ġfile Ref . target ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( file Ref Ġis ĠPsi Directory ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnamed ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġfile Ref . find File ( it ) Ġ?: Ġfile Ref . find Sub directory ( it ) Ġ?: Ġfile Ref Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Indexed Ġ{ Ġindex , Ġit Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it Ġis ĠPsi Directory ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsub dir Ġ= Ġit . find Sub directory ( named [ index ]) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( subdir Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsub dir . files . find Ġ{ Ġit . name . split (". "). first () Ġ== Ġ" component " Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġsub dir . files . find Ġ{ Ġit . name . split (". "). first () Ġ== Ġ" template " Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse { ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . files . find Ġ{ Ġit . name . split (". "). first () Ġ== Ġnamed [ index ] Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġit . files . find Ġ{ Ġit . name . split (". "). first () Ġ== Ġ" component " Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġit . files . find Ġ{ Ġit . name . split (". "). first () Ġ== Ġ" template " Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġ( it Ġas ? ĠPsi File )?. let Ġ{ ĠEmber Utils . resolve To Em ber ( it ) Ġ} Ġ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Indexed Ġ{ Ġindex , Ġit Ġ-> Ġval Ġr Ġ= ĠRegex ("\\ b ${ named [ index ]} \\ b ", ĠRegex Option . IGNORE _ CASE ). find ( element . text ) !!. range ; ĠRange d Reference ( element , Ġit , ĠText Range ( r . first , Ġr . last Ġ+ Ġ 1 )) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. to Typed Array () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( file Ref Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġempty Array () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġref Ġ= ĠEmber Utils . resolve To Em ber ( file Ref Ġas ĠPsi File ) ĊĠĠĠĠĠĠĠ Ġreturn ĠarrayOf ( Range d Reference ( element , Ġref , ĠText Range ( 0 , Ġelement . text Length ))) ĊĠĠĠ Ġ} Ċ } Ċ Ċ class ĠH bs Reference Contributor Ġ: ĠPsi Reference Contributor () Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġregister Reference Providers ( regist rar : ĠPsi Reference Registrar ) Ġ{ ĊĠĠĠĠĠĠĠ Ġwith ( regist rar ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġregister Reference Provider ( Xml Tag Pattern . Capture (), ĠTag References Provider ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġregister ( Platform Patterns . psi Element ( XmlAttribute :: class . java )) Ġ{ Ġto Attribute Reference ( it Ġas ĠXml Attribute ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġregister ( H bs Patterns . SIMPLE _ MUST ACHE _ NAME ) Ġ{ Ġfilter ( it ) Ġ{ ĠH bs Component Reference ( it ) Ġ} Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġregister ( H bs Patterns . BLOCK _ MUST ACHE _ NAME ) Ġ{ Ġfilter ( it ) Ġ{ ĠH bs Component Reference ( it ) Ġ} Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġregister ( H bs Patterns . MUST ACHE _ ID ) Ġ{ ĠH bs Local Reference . create Reference ( it ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġregister ( H bs Patterns . SIMPLE _ MUST ACHE _ NAME ) Ġ{ Ġfilter ( it ) Ġ{ ĠH bs Module Reference ( it , Ġ" helper ") Ġ} Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġregister ( H bs Patterns . SIMPLE _ MUST ACHE _ NAME ) Ġ{ Ġfilter ( it ) Ġ{ ĠH bs Module Reference ( it , Ġ" modifier ") Ġ} Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġregister ( H bs Patterns . SUB _ EXPR _ NAME ) Ġ{ Ġfilter ( it ) Ġ{ ĠH bs Module Reference ( it , Ġ" helper ") Ġ} Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġregister Reference Provider ( H bs Patterns . IMPORT _ NAMES , ĠImport Name References Provider ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġregister Reference Provider ( H bs Patterns . IMPORT _ PATH _ REF , ĠImport Path References Provider ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġregister Reference Provider ( H bs Patterns . LINK _ TO _ BLOCK _ TARGET , ĠH bs Link To Reference Provider ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġregister Reference Provider ( H bs Patterns . LINK _ TO _ SIMPLE _ TARGET , ĠH bs Link To Reference Provider ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġregister Reference Provider ( H bs Patterns . TRANSL ATION _ KEY , ĠEmber Translation H bs Reference Provider ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġregister Reference Provider ( H bs Patterns . TRANSL ATION _ KEY _ IN _ SE X PR , ĠEmber Translation H bs Reference Provider ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠPsi Reference Registrar . register ( pattern : ĠElement Pattern < out ĠPsi Element >, Ġfn : Ġ( Psi Element ) Ġ-> ĠPsi Reference ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġregister Reference Provider ( pattern , Ġobject Ġ: ĠPsi Reference Provider () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġget References By Element ( element : ĠPsi Element , Ġcontext : ĠProcessing Context ) Ġ= ĠarrayOf ( fn ( element )). filter NotNull (). to Typed Array () ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} Ċ } ĊĊ