/* Ċ Ġ* ĠCopyright Ġ 2 0 2 0 ĠV ital iy ĠZ ar ub in Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ Ċ package Ġcom . key gen qt . plugin . simple . contributor Ċ Ċ import Ġcom . intellij . code Insight . lookup .* Ċ import Ġcom . intellij . openapi . util .* Ċ import Ġcom . intellij . psi .* Ċ import Ġcom . key gen qt . plugin . simple . language .* Ċ import Ġcom . key gen qt . plugin . simple . util .* Ċ import Ġjava . util .* Ċ Ċ class ĠSimple Reference ( element : ĠPsi Element , Ġtext Range : ĠText Range ) Ġ: ĠPsi Reference Base < Psi Element ? >( element , Ġtext Range ), ĊĠĠĠ ĠPsi Poly Variant Reference Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġkey : ĠString Ġ= Ġelement . text . substring ( text Range . start Offset , Ġtext Range . end Offset ) ĊĊĠĠĠ Ġoverride Ġfun Ġmulti Resolve ( in complete Code : ĠBoolean ): ĠArray < Resolve Result > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġproject Ġ= Ġmy Element !!. project ĊĠĠĠĠĠĠĠ Ġval Ġproperties Ġ= ĠSimple Util . find Properties ( project , Ġkey ) ĊĠĠĠĠĠĠĠ Ġval Ġresults Ġ= Ġarray ListOf < Resolve Result >() ĊĠĠĠĠĠĠĠ Ġfor Ġ( property Ġin Ġproperties ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresults . add ( Psi Element Resolve Result ( property )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġresults . to Typed Array () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġresolve (): ĠPsi Element ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresolve Results Ġ= Ġmulti Resolve ( false ) ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( resolve Results . size Ġ== Ġ 1 ) Ġresolve Results [ 0 ]. element Ġelse Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Variants (): ĠArray < Any > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġproject Ġ= Ġmy Element !!. project ĊĠĠĠĠĠĠĠ Ġval Ġproperties Ġ= ĠSimple Util . find Properties ( project ) ĊĠĠĠĠĠĠĠ Ġval Ġvariants : ĠMutable List < Lookup Element > Ġ= ĠArrayList () ĊĠĠĠĠĠĠĠ Ġfor Ġ( property Ġin Ġproperties ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġproperty . key ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvariants . add ( Lookup Element Builder . create ( property ). with Icon ( Simple Icons . FILE ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Type Text ( property . containing File . name )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġvariants . to Typed Array () ĊĠĠĠ Ġ} Ċ }