// Ġ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 Ċ Ċ import Ġcom . intellij . psi .* Ċ import Ġorg . jetbrains . plugins . groovy . lang . resolve . processors . inference . build TopLevel Session Ċ import Ġorg . jetbrains . plugins . groovy . util . lazy Prevent ing Recursion Ċ Ċ class ĠClass Resolve Result ( ĊĠ Ġclazz : ĠPsi Class , ĊĠ Ġplace : ĠPsi Element , ĊĠ Ġstate : ĠResolve State , ĊĠ Ġtype Arguments : ĠArray < out ĠPsi Type >? Ċ ) Ġ: ĠBase Gro ovy Resolve Result < Psi Class >( clazz , Ġplace , Ġstate ) Ġ{ ĊĊĠ Ġprivate Ġval Ġshould Infer Ġ= Ġtype Arguments Ġ!= Ġnull Ġ&& Ġtype Arguments . isEmpty () ĊĊĠ Ġval Ġcontext Subst it utor Ġby Ġlazy Ġ{ ĊĠĠĠ Ġif Ġ( should Infer ) Ġ{ ĊĠĠĠĠĠ Ġsuper . get Subst it utor () ĊĠĠĠ Ġ} ĊĠĠĠ Ġelse Ġ{ ĊĠĠĠĠĠ Ġsuper . get Subst it utor (). put All ( element , Ġtype Arguments ) ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġget Subst it utor (): ĠPsi Subst it utor Ġ= Ġif Ġ( should Infer ) Ġ{ ĊĠĠĠ Ġinferred Subst it utor ĊĠ Ġ} ĊĠ Ġelse Ġ{ ĊĠĠĠ Ġcontext Subst it utor ĊĠ Ġ} ĊĊĠ Ġprivate Ġval Ġinferred Subst it utor : ĠPsi Subst it utor Ġby Ġlazy Prevent ing Recursion Ġ{ ĊĠĠĠ Ġbuild TopLevel Session ( place ). infer Subst ( this ) ĊĠ Ġ} Ċ } Ċ