package Ġedu . team 4 4 9 Ċ Ċ import Ġcom . intellij . patterns . Element Pattern Ċ import Ġcom . intellij . patterns . Platform Patterns Ċ import Ġcom . intellij . psi .* Ċ import Ġcom . intellij . util . Processing Context Ċ import Ġorg . jetbrains . yaml . psi . YAML KeyValue Ċ import Ġorg . jetbrains . yaml . psi . YAML Psi Element Ċ import Ġorg . jetbrains . yaml . psi . impl . YAML Plain Text Impl Ċ Ċ class ĠMy Yaml Reference Contributor Ġ: ĠPsi Reference Contributor () Ġ{ ĊĠ Ġoverride Ġfun Ġregister Reference Providers ( regist rar : ĠPsi Reference Registrar ) Ġ= ĊĠĠĠ Ġregist rar . register Reference Provider ( ĊĠĠĠĠĠ ĠPlatform Patterns . psi Element ( YAML Psi Element :: class . java ) Ġas ĠElement Pattern < out ĠPsi Element >, ĊĠĠĠĠĠ Ġobject Ġ: ĠPsi Reference Provider () Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġget References By Element ( ĊĠĠĠĠĠĠĠĠĠ Ġelement : ĠPsi Element , ĊĠĠĠĠĠĠĠĠĠ Ġcontext : ĠProcessing Context ĊĠĠĠĠĠĠĠ Ġ): ĠArray < Psi Reference > Ġ= ĊĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( element ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠYAML KeyValue Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠarrayOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Qualified Constructor Call ( element )) ĠConstructor Ref ( element ) Ġ// It 's Ġa Ġconstructor Ġcall ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse ĠParam Ref ( element ) Ġ// otherwise , Ġit 's Ġan Ġargument / reference Ġto Ġa Ġparameter ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠYAML Plain Text Impl Ġ-> ĠarrayOf ( IdRef ( element )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġempty Array () ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ) Ċ } Ċ Ċ class ĠConstructor Ref ( private Ġval Ġctor : ĠYAML KeyValue ) Ġ: ĠPsi Poly Variant Reference Base < YAML KeyValue >( ctor ) Ġ{ ĊĠ Ġ// override Ġfun Ġresolve () Ġ= Ġresolve To Constructor ( element ) ĊĠ Ġ/** ĊĠĠ Ġ* ĠReturn Ġboth Ġthe Ġclass Ġdeclaration Ġand Ġits Ġconstructors ĊĠĠ Ġ*/ ĊĠ Ġoverride Ġfun Ġmulti Resolve ( in complete Code : ĠBoolean ): ĠArray < Resolve Result > Ġ{ ĊĠĠĠ Ġval Ġcls Ġ= Ġresolve To Class ( ctor ) Ġ?: Ġreturn Ġempty Array () ĊĠĠĠ Ġreturn Ġ( all YAML Construct ors ( cls ) Ġ+ Ġcls ) ĊĠĠĠĠĠ Ġ. map (:: Psi Element Resolve Result ) ĊĠĠĠĠĠ Ġ. to Typed Array () ĊĠ Ġ} Ċ } Ċ Ċ class ĠParam Ref ( private Ġval Ġparam : ĠYAML KeyValue ) Ġ: ĠPsi Reference Base < YAML KeyValue >( param ) Ġ{ ĊĠ Ġoverride Ġfun Ġresolve () Ġ= Ġresolve To Parameter ( param ) Ċ } Ċ Ċ class ĠId Ref ( private Ġval Ġid : ĠYAML Plain Text Impl ) Ġ: ĠPsi Reference Base < YAML Plain Text Impl >( id ) Ġ{ ĊĠ Ġoverride Ġfun Ġresolve () Ġ= ĠYaml Annot ator . get Ids ( id . project )[ id . text ]?. element Ċ }