// ĠCopyright Ġ 2 0 0 0 - 2 0 1 9 Ġ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 . intent ions . style . inference Ċ Ċ import Ġcom . intellij . psi . Psi Element Ċ import Ġcom . intellij . psi . Psi Method Ċ import Ġcom . intellij . psi . Psi Subst it utor Ċ import Ġorg . jetbrains . plugins . groovy . lang . psi . api . statements . params . Gr Parameter Ċ import Ġorg . jetbrains . plugins . groovy . lang . psi . api . statements . typedef . members . Gr Method Ċ import Ġorg . jetbrains . plugins . groovy . lang . resolve . api . Gro ovy Method Candidate Ċ import Ġorg . jetbrains . plugins . groovy . lang . resolve . processors . inference . Gro ovy Inference Session Ċ import Ġorg . jetbrains . plugins . groovy . lang . resolve . processors . inference . Gro ovy Inference Session Builder Ċ Ċ class ĠCollect ing Gro ovy Inference Session Builder ( val Ġcontext : ĠPsi Element , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcandidate : ĠGro ovy Method Candidate , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtarget Method : ĠGr Method , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġval Ġcontext Subst it utor : ĠPsi Subst it utor ) ĊĠ Ġ: ĠGro ovy Inference Session Builder ( context , Ġcandidate , Ġcontext Subst it utor ) Ġ{ ĊĊĠ Ġprivate Ġvar Ġproxy Method : ĠPsi Method ? Ġ= Ġnull ĊĊĠ Ġfun Ġadd Proxy Method ( method : ĠPsi Method ?): ĠCollect ing Gro ovy Inference Session Builder Ġ{ ĊĠĠĠ Ġproxy Method Ġ= Ġmethod ĊĠĠĠ Ġreturn Ġthis ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġbuild (): ĠGro ovy Inference Session Ġ{ ĊĠĠĠ Ġcollect Expression Filters () ĊĠĠĠ Ġval Ġmapping Ġ= Ġget Proxy Method Mapping () ĊĠĠĠ Ġval Ġsession Ġ= ĊĠĠĠĠĠ ĠCollect ing Gro ovy Inference Session ( target Method . type Parameters , Ġcontext , Ġcontext Subst it utor , Ġmapping , Ġempty Set (), Ġskip Closure Block , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexpression Filters ) ĊĠĠĠ Ġreturn Ġdo Build ( session ) ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun Ġget Proxy Method Mapping (): ĠMap < String , ĠGr Parameter > Ġ{ ĊĠĠĠ Ġreturn Ġproxy Method ?. parameters ?. map Ġ{ Ġit . name !! Ġ} ?. zip ( target Method . parameters )?. toMap () Ġ?: Ġempty Map () ĊĠ Ġ} Ċ }