package Ġcom . just ai . ja ic f . plugin . providers Ċ Ċ import Ġcom . intellij . code Insight . Auto Popup Controller Ċ import Ġcom . intellij . code Insight . completion . Completion Confidence Ċ 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 . completion . Skip Aut op op up In Strings Ċ import Ġcom . intellij . code Insight . editor Actions . Typed Handler Delegate Ċ import Ġcom . intellij . code Insight . lookup . Lookup Element Builder Ċ import Ġcom . intellij . openapi . diagnostic . Logger Ċ import Ġcom . intellij . openapi . editor . Editor Ċ import Ġcom . intellij . openapi . project . Project Ċ import Ġcom . intellij . patterns . Platform Patterns Ċ import Ġcom . intellij . psi . Psi Element Ċ import Ġcom . intellij . psi . Psi File Ċ import Ġcom . intellij . util . Processing Context Ċ import Ġcom . intellij . util . Three State Ċ import Ġcom . just ai . ja ic f . plugin . L exe me Ċ import Ġcom . just ai . ja ic f . plugin . State Ċ import Ġcom . just ai . ja ic f . plugin . State Path Ċ import Ġcom . just ai . ja ic f . plugin . all States Ċ import Ġcom . just ai . ja ic f . plugin . get Bounded Path Expression Ċ import Ġcom . just ai . ja ic f . plugin . getF ram ing State Ċ import Ġcom . just ai . ja ic f . plugin . isValid Ċ import Ġcom . just ai . ja ic f . plugin . parent Ċ import Ġcom . just ai . ja ic f . plugin . states Or Suggestions Ċ import Ġcom . just ai . ja ic f . plugin . stringValue OrNull Ċ import Ġcom . just ai . ja ic f . plugin . transit Ċ import Ġcom . just ai . ja ic f . plugin . without Lead Sl ashes Ċ import Ġorg . jetbrains . kotlin . psi . Kt Expression Ċ import Ġorg . jetbrains . kotlin . psi . Kt String Template Expression Ċ import Ġorg . jetbrains . kotlin . utils . addTo Std lib . if NotEmpty Ċ Ċ class ĠState Path Completion Contributor Ġ: ĠCompletion Contributor () Ġ{ ĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġextend ( Completion Type . BASIC , ĠPlatform Patterns . psi Element (), ĠState Path Completion Provider ()) ĊĠĠĠ Ġ} Ċ } Ċ Ċ class ĠState Path Completion Provider Ġ: ĠCompletion Provider < Completion Parameters >() Ġ{ ĊĊĠĠĠ Ġpublic Ġoverride Ġfun Ġadd Comp letions ( ĊĠĠĠĠĠĠĠ Ġparameters : ĠCompletion Parameters , ĊĠĠĠĠĠĠĠ Ġcontext : ĠProcessing Context , ĊĠĠĠĠĠĠĠ ĠresultSet : ĠCompletion ResultSet , ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġpath Expression Ġ= Ġparameters . position . get Bounded Path Expression () Ġ?: Ġreturn ĊĠĠĠĠĠĠĠ Ġval Ġpath Before Caret Ġ= Ġpath Expression . stringValue OrNull ?. substring Before Caret () Ġ?: Ġreturn ĊĠĠĠĠĠĠĠ Ġval Ġstate Path Ġ= ĠState Path . parse ( path Before Caret ) ĊĠĠĠĠĠĠĠ Ġval Ġstates Suggestions : ĠList < State > Ġ= Ġget States Suggestions ( path Expression , Ġstate Path ) Ġ?: Ġreturn ĊĊĠĠĠĠĠĠĠ Ġif Ġ( last Transition Fit Into Element ( state Path , Ġparameters )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstates Suggestions ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. map NotNull Ġ{ Ġit . identifier . resolve Text ()?. without Lead Sl ashes () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. on Each Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠresultSet ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Prefix Matcher If Complex Expression ( path Expression , Ġstate Path ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. addElement ( Lookup Element Builder . create ( it )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. if NotEmpty Ġ{ ĠresultSet . stop Here () Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġprefix Ġ= Ġstate Path . lex e mes . last (). identifier ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġstates Suggestions ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. as Sequence () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. map NotNull Ġ{ Ġit . identifier . resolve Text ()?. without Lead Sl ashes () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter Ġ{ Ġit . startsWith ( prefix ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġit . substring After ( prefix ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter Ġ{ Ġit . isNotBlank () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. on Each Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠresultSet ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Prefix Matcher ("") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. addElement ( Lookup Element Builder . create ( it )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. toList () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. if NotEmpty Ġ{ ĠresultSet . stop Here () Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget States Suggestions ( path Expression : ĠK t Expression , Ġpath : ĠState Path ): ĠList < State >? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġfram ing State Ġ= Ġpath Expression . getF ram ing State () Ġ?: Ġreturn Ġnull ĊĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( fr aming State . isValid ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfram ing State . transit ( path . parent ). states Or Suggestions (). flatMap Ġ{ Ġit . all States () Ġ} ĊĠĠĠĠĠĠĠ Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlogger . warn (" F ram ing Ġstate Ġis Ġinvalid . Ġ$ fr aming State ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġlast Transition Fit Into Element ( path : ĠState Path , Ġparameters : ĠCompletion Parameters ) Ġ= ĊĠĠĠĠĠĠĠ Ġ!( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpath . lex e mes . isNotEmpty () Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpath . lex e mes . last () Ġis ĠL exe me . Transition Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpath . lex e mes . last (). identifier . length Ġ> Ġparameters . position . text . substring Before Caret (). length ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠ Ġprivate Ġfun ĠString . substring Before Caret () Ġ= Ġsubstring Before (" Int ellij Ide a Rule zz z ") ĊĊĠĠĠ Ġprivate Ġfun ĠCompletion ResultSet . with Prefix Matcher If Complex Expression ( ĊĠĠĠĠĠĠĠ Ġpath Expression : ĠK t Expression , ĊĠĠĠĠĠĠĠ Ġpath : ĠState Path , ĊĠĠĠ Ġ): ĠCompletion ResultSet Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( path Expression . is Complex String Template ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( path . lex e mes . last () Ġ== ĠL exe me . Slash ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwith Prefix Matcher ("") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwith Prefix Matcher ( path . lex e mes . last (). identifier ) ĊĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġlogger Ġ= ĠLogger . getInstance ( State Path Completion Provider :: class . java ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ class ĠState Path Auto Popup Handler Ġ: ĠTyped Handler Delegate () Ġ{ ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠChecks Ġif Ġeditor Ġcaret Ġis Ġin Ġcontext Ġto Ġsuggest Ġstate Ġcomplet ions ĊĠĠĠĠ Ġ* Ġ@ return Ġ[ Typed Handler Delegate . Result . STOP ] Ġif Ġwe Ġcan Ġtry Ġsuggest Ġstate Ġcomplet ions ĊĠĠĠĠ Ġ* Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġcheck Auto Popup ( char Typed : ĠChar , Ġproject : ĠProject , Ġeditor : ĠEditor , Ġfile : ĠPsi File ): ĠResult Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( char Typed Ġ! in Ġsupported Chars For Popup ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠResult . CONTINUE ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġelement Ġ= Ġfile . findElement At ( editor . caret Model . offset ) Ġ?: Ġreturn ĠResult . CONTINUE ĊĊĠĠĠĠĠĠĠ Ġif Ġ( element . get Bounded Path Expression () Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAuto Popup Controller . getInstance ( project ). auto Popup Member Lookup ( editor , Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠResult . STOP ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn ĠResult . CONTINUE ĊĠĠĠ Ġ} Ċ } Ċ Ċ class ĠState Path Completion Confidence Provider Ġ: ĠCompletion Confidence () Ġ{ ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSk ips Ġcompletion Ġif Ġgiven Ġ[ context Element ] Ġis Ġnot Ġvalid Ġstate Ġpath ĊĠĠĠĠ Ġ* Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġshould Skip Aut op op up ( context Element : ĠPsi Element , Ġpsi File : ĠPsi File , Ġoffset : ĠInt ): ĠThree State Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( Skip Aut op op up In Strings . isIn StringLiteral ( context Element )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġchar Typed Ġ= Ġpsi File . text [ offset Ġ- Ġ 1 ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( char Typed Ġ! in Ġsupported Chars For Popup ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠThree State . UN S URE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( context Element . get Bounded Path Expression () Ġ!= Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠThree State . NO ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠThree State . UN S URE ĊĠĠĠĠĠĠĠ Ġ} Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠ ĠThree State . UN S URE ĊĠĠĠ Ġ} Ċ } Ċ Ċ private Ġval Ġsupported Chars For Popup Ġ= ĠlistOf (' "', Ġ'/') Ċ Ċ val ĠK t Expression . is Simple String Template : ĠBoolean ĊĠĠĠ Ġget () Ġ= Ġthis Ġis ĠK t String Template Expression Ġ&& Ġchildren . size Ġ== Ġ 1 Ċ Ċ val ĠK t Expression . is Complex String Template : ĠBoolean ĊĠĠĠ Ġget () Ġ= Ġ! is Simple String Template Ċ