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 . scenarios . linker . all States Ċ import Ġcom . just ai . ja ic f . plugin . scenarios . linker . fr aming State Ċ import Ġcom . just ai . ja ic f . plugin . scenarios . psi . dto . State Ċ import Ġcom . just ai . ja ic f . plugin . scenarios . psi . dto . name Without Lead Sl ashes Ċ import Ġcom . just ai . ja ic f . plugin . scenarios . transition . L exe me Ċ import Ġcom . just ai . ja ic f . plugin . scenarios . transition . State Path Ċ import Ġcom . just ai . ja ic f . plugin . scenarios . transition . parent Ċ import Ġcom . just ai . ja ic f . plugin . scenarios . transition . states Or Suggestions Ċ import Ġcom . just ai . ja ic f . plugin . scenarios . transition . transit Ċ import Ġcom . just ai . ja ic f . plugin . utils . State Path Expression . Joined Ċ import Ġcom . just ai . ja ic f . plugin . utils . bounded Path Expression Ċ import Ġcom . just ai . ja ic f . plugin . utils . is Complex String Template Ċ import Ġcom . just ai . ja ic f . plugin . utils . stringValue OrNull Ċ import Ġorg . jetbrains . kotlin . psi . Kt 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 Ġstate Path Expression Ġ= Ġparameters . position . bounded Path Expression Ġas ? ĠJo ined Ġ?: Ġreturn ĊĠĠĠĠĠĠĠ Ġval Ġpath Expression Ġ= Ġstate Path Expression . declaration ĊĠĠĠĠĠĠĠ Ġ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 Ġ( is Last Transition Fit Into Element ( state Path , Ġparameters )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstates Suggestions ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. map NotNull Ġ{ Ġit . name 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 . name 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 . fr aming State Ġ?: Ġreturn Ġnull ĊĊĠĠĠĠĠĠĠ Ġreturn Ġfram ing State . transit ( path . parent ). states Or Suggestions (). flatMap Ġ{ Ġit . all States Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġis 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 . 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 . 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 (' "', Ġ'/') Ċ