package Ġju ux el . access wid ener . idea . completion Ċ Ċ import Ġcom . intellij . code Insight . completion . Completion Contributor Ċ import Ġcom . intellij . code Insight . completion . Completion Parameters Ċ import Ġcom . intellij . code Insight . completion . Completion Provider Ċ import Ġcom . intellij . code Insight . completion . Completion ResultSet Ċ import Ġcom . intellij . code Insight . completion . Completion Type Ċ import Ġcom . intellij . code Insight . lookup . Lookup Element Builder Ċ import Ġcom . intellij . patterns . Platform Patterns Ċ import Ġcom . intellij . psi . util . Psi Tree Util Ċ import Ġcom . intellij . util . Processing Context Ċ import Ġju ux el . access wid ener . idea . AccessType Ċ import Ġju ux el . access wid ener . idea . psi . Aw Types Ċ import Ġju ux el . access wid ener . idea . psi . impl . Aw Psi Impl Util Ċ Ċ class ĠAw Completion Contributor Ġ: ĠCompletion Contributor () Ġ{ ĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġextend ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCompletion Type . BASIC , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPlatform Patterns . psi Element ( Aw Types . ACCESS ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġobject Ġ: ĠCompletion Provider < Completion Parameters >() Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġadd Comp letions ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparameters : ĠCompletion Parameters , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext : ĠProcessing Context , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠresultSet : ĠCompletion ResultSet ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( access Type Ġin ĠAccess Type . values ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠresultSet . addElement ( Lookup Element Builder . create ( access Type . sourceCode )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġextend ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCompletion Type . BASIC , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPlatform Patterns . psi Element ( Aw Types . TARGET _ TYPE ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġobject Ġ: ĠCompletion Provider < Completion Parameters >() Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġadd Comp letions ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparameters : ĠCompletion Parameters , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext : ĠProcessing Context , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠresultSet : ĠCompletion ResultSet ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġprev Ġ= ĠPsi Tree Util . prev Code Leaf ( parameters . position ) Ġ?: Ġreturn ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( prev . node . elementType Ġ== ĠAw Types . ACCESS ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtarget Types Ġ= Ġwhen Ġ( Aw Psi Impl Util . get AccessType ( prev . node )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAccess Type . ACC ES SI BLE Ġ-> ĠlistOf (" class ", Ġ" method ", Ġ" field ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAccess Type . EXT END ABLE Ġ-> ĠlistOf (" class ", Ġ" method ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAccess Type . MUT ABLE Ġ-> ĠlistOf (" field ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġempty List () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( type Ġin Ġtarget Types ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠresultSet . addElement ( Lookup Element Builder . create ( type )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ċ } Ċ