// ĠCopyright Ġ 2 0 0 0 - 2 0 1 8 ĠJetBrains Ġs . r . o . ĠUse Ġof Ġthis Ġsource Ġcode Ġis Ġgoverned Ġby Ġthe ĠApache Ġ 2 . 0 Ġlicense Ġthat Ġcan Ġbe Ġfound Ġin Ġthe ĠLICENSE Ġfile . Ċ package Ġorg . jetbrains . plugins . groovy . lang . resolve . processors Ċ Ċ import Ġcom . intellij . psi .* Ċ import Ġcom . intellij . psi . scope . Element Class Hint Ċ import Ġorg . jetbrains . plugins . groovy . lang . psi . api . Gro ovy Resolve Result Ċ import Ġorg . jetbrains . plugins . groovy . lang . resolve . Annotation Hint Ċ import Ġorg . jetbrains . plugins . groovy . lang . resolve . Base Gro ovy Resolve Result Ċ import Ġorg . jetbrains . plugins . groovy . lang . resolve . Di amond Resolve Result Ċ import Ġorg . jetbrains . plugins . groovy . lang . resolve . imports . imported Name Key Ċ Ċ internal Ġopen Ġclass ĠClass Processor ( ĊĠ Ġprivate Ġval Ġname : ĠString , ĊĠ Ġprivate Ġval Ġplace : ĠPsi Element , ĊĠ Ġprivate Ġval Ġtype Arguments : ĠArray < out ĠPsi Type >? Ġ= Ġnull , ĊĠ Ġannotation Resolve : ĠBoolean Ġ= Ġfalse Ċ ) Ġ: ĠFind First Processor < Gro ovy Resolve Result >() Ġ{ ĊĊĠ Ġinit Ġ{ ĊĠĠĠ Ġname Hint ( name ) ĊĠĠĠ Ġelement Class Hint ( Element Class Hint . Declaration Kind . CLASS ) ĊĠĠĠ Ġif Ġ( annotation Resolve ) Ġ{ ĊĠĠĠĠĠ Ġhint ( Annotation Hint . HINT _ KEY , ĠAnnotation Hint . AN NOT ATION _ RESOL VE ) ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġresult ( element : ĠPsi Element , Ġstate : ĠResolve State ): ĠGro ovy Resolve Result ? Ġ{ ĊĠĠĠ Ġval Ġclazz Ġ= Ġelement Ġas ? ĠPsi Class Ġ?: Ġreturn Ġnull ĊĠĠĠ Ġif Ġ( clazz Ġis ĠPsi Type Parameter ) Ġreturn Ġnull ĊĊĠĠĠ Ġval Ġelement Name Ġ= Ġstate [ imported Name Key ] Ġ?: Ġclazz . name ĊĠĠĠ Ġif Ġ( element Name Ġ!= Ġname ) Ġreturn Ġnull ĊĊĠĠĠ Ġreturn Ġcreate Result ( clazz , Ġplace , Ġstate , Ġtype Arguments ) ĊĠ Ġ} ĊĊĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠ Ġfun Ġcreate Result ( clazz : ĠPsi Class , Ġplace : ĠPsi Element , Ġstate : ĠResolve State , Ġtype Arguments : ĠArray < out ĠPsi Type >? ): ĠGro ovy Resolve Result Ġ{ ĊĠĠĠĠĠ Ġif Ġ( type Arguments Ġ== Ġnull Ġ|| Ġ! type Arguments . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġnew Subst it utor Ġ= Ġstate [ Psi Subst it utor . KEY ]. put All ( clazz , Ġtype Arguments ) ĊĠĠĠĠĠĠĠ Ġval ĠnewState Ġ= Ġstate . put ( Psi Subst it utor . KEY , Ġnew Subst it utor ) ĊĠĠĠĠĠĠĠ Ġreturn ĠBase Gro ovy Resolve Result ( clazz , Ġplace , ĠnewState ) ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġelse Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠDi amond Resolve Result ( clazz , Ġplace , Ġstate ) ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠ Ġ} Ċ } Ċ