// ĠCopyright Ġ 2 0 0 0 - 2 0 2 1 ĠJetBrains Ġs . r . o . Ġand Ġcontributors . ĠUse Ġof Ġthis Ġsource Ġcode Ġis Ġgoverned Ġby Ġthe ĠApache Ġ 2 . 0 Ġlicense Ġthat Ġcan Ġbe Ġfound Ġin Ġthe ĠLICENSE Ġfile . Ċ Ċ package Ġorg . jetbrains . kotlin . idea . find Usage s . handlers Ċ Ċ import Ġcom . intellij . code Insight . highlight ing . ReadWrite Access Detector Ċ import Ġcom . intellij . find . Find Manager Ċ import Ġcom . intellij . find . find Usage s . Abstract Find Usage s Dialog Ċ import Ġcom . intellij . find . find Usage s . Find Usage s Options Ċ import Ġcom . intellij . find . impl . Find ManagerImpl Ċ import Ġcom . intellij . icons . All Icons . Actions Ċ import Ġcom . intellij . openapi . Disposable Ċ import Ġcom . intellij . openapi . action System . DataContext Ċ import Ġcom . intellij . openapi . application . Application Manager Ċ import Ġcom . intellij . openapi . progress . Progress Indicator Ċ import Ġcom . intellij . openapi . progress . Progress Manager Ċ import Ġcom . intellij . openapi . project . Project Ċ import Ġcom . intellij . openapi . ui . MessageType Ċ import Ġcom . intellij . openapi . util . Dis poser Ċ import Ġcom . intellij . openapi . util . Key Ċ import Ġcom . intellij . openapi . wm . Tool Window Id Ċ import Ġcom . intellij . openapi . wm . Tool WindowManager Ċ import Ġcom . intellij . psi . Psi Element Ċ import Ġcom . intellij . psi . Psi Reference Ċ import Ġcom . intellij . psi . search . Search Scope Ċ import Ġcom . intellij . psi . search . sear ches . Method References Search Ċ import Ġcom . intellij . psi . search . sear ches . Over riding Methods Search Ċ import Ġcom . intellij . psi . search . sear ches . References Search Ċ import Ġcom . intellij . usage View . Usage Info Ċ import Ġcom . intellij . util .* Ċ import Ġorg . jetbrains . annotations . Test Only Ċ import Ġorg . jetbrains . kotlin . as Java . un wrapped Ċ import Ġorg . jetbrains . kotlin . idea . Kotlin In dependent Bundle Ċ import Ġorg . jetbrains . kotlin . idea . as Java . Light Class Provider . Companion . provided To Light Methods Ċ import Ġorg . jetbrains . kotlin . idea . find Usage s .* Ċ import Ġorg . jetbrains . kotlin . idea . find Usage s . Kotlin Find Usage s Support . Companion . get Top Most Over ridden Elements To Highlight Ċ import Ġorg . jetbrains . kotlin . idea . find Usage s . Kotlin Find Usage s Support . Companion . is Data Class Component Function Ċ import Ġorg . jetbrains . kotlin . idea . find Usage s . dialogs . Kotlin Find Function Usage s Dialog Ċ import Ġorg . jetbrains . kotlin . idea . find Usage s . dialogs . Kotlin Find Property Usage s Dialog Ċ import Ġorg . jetbrains . kotlin . idea . search . Kotlin Search Usage s Support . Companion . filter Data Class Components If Disabled Ċ import Ġorg . jetbrains . kotlin . idea . search . Kotlin Search Usage s Support . Companion . is Over rid able Ċ import Ġorg . jetbrains . kotlin . idea . search . declarations Search . Hierarchy Search Request Ċ import Ġorg . jetbrains . kotlin . idea . search . declarations Search . search Over rid ers Ċ import Ġorg . jetbrains . kotlin . idea . search . exclude Kotlin Sources Ċ import Ġorg . jetbrains . kotlin . idea . search . idea Extensions . Kotlin ReadWrite Access Detector Ċ import Ġorg . jetbrains . kotlin . idea . search . idea Extensions . Kotlin References Search Options Ċ import Ġorg . jetbrains . kotlin . idea . search . idea Extensions . Kotlin References Search Parameters Ċ import Ġorg . jetbrains . kotlin . idea . search . is Import Usage Ċ import Ġorg . jetbrains . kotlin . idea . search . is Only Kotlin Search Ċ import Ġorg . jetbrains . kotlin . idea . search . is Pot entially Operator Ċ import Ġorg . jetbrains . kotlin . idea . util . application . run Read Action Ċ import Ġorg . jetbrains . kotlin . psi .* Ċ import Ġorg . jetbrains . kotlin . psi . psi Util . parameter Index Ċ import Ġjavax . swing . event . Hyper link Event Ċ import Ġjavax . swing . event . Hyper link Listener Ċ Ċ abstract Ġclass ĠKotlin Find Member Usage s Handler < T Ġ: ĠK t Named Declaration > Ġprotected Ġconstructor ( ĊĠĠĠ Ġdeclaration : ĠT , ĊĠĠĠ Ġelements To Search : ĠCollection < Psi Element >, ĊĠĠĠ Ġfactory : ĠKotlin Find Usage s Handler Factory Ċ ) Ġ: ĠKotlin Find Usage s Handler < T >( declaration , Ġelements To Search , Ġfactory ) Ġ{ ĊĊĠĠĠ Ġprivate Ġclass ĠFunction ( ĊĠĠĠĠĠĠĠ Ġdeclaration : ĠK t Function , ĊĠĠĠĠĠĠĠ Ġelements To Search : ĠCollection < Psi Element >, ĊĠĠĠĠĠĠĠ Ġfactory : ĠKotlin Find Usage s Handler Factory ĊĠĠĠ Ġ) Ġ: ĠKotlin Find Member Usage s Handler < Kt Function >( declaration , Ġelements To Search , Ġfactory ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġget Find Usage s Options ( data Context : ĠData Context ?): ĠFind Usage s Options Ġ= Ġfactory . find Function Options ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġget Primary Elements (): ĠArray < Psi Element > Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( factory . find Function Options . is Search For Base Method ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsup ers Ġ= ĠKotlin Find Usage s Support . get Super Methods ( psi Element Ġas ĠK t Function , Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( sup ers . contains ( psi Element )) Ġsup ers . to Typed Array () Ġelse Ġ( sup ers Ġ+ Ġpsi Element ). to Typed Array () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġsuper . get Primary Elements () ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġget Find Usage s Dialog ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Single File : ĠBoolean , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġto Show In New Tab : ĠBoolean , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmust Open In New Tab : ĠBoolean ĊĠĠĠĠĠĠĠ Ġ): ĠAbstract Find Usage s Dialog Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġoptions Ġ= Ġfactory . find Function Options ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlight Method Ġ= Ġget Element (). provided To Light Methods (). first OrNull () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( light Method Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠKotlin Find Function Usage s Dialog ( light Method , Ġproject , Ġoptions , Ġto Show In New Tab , Ġmust Open In New Tab , Ġis Single File , Ġthis ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġsuper . get Find Usage s Dialog ( is Single File , Ġto Show In New Tab , Ġmust Open In New Tab ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġcreate Kotlin References Search Options ( options : ĠFind Usage s Options , Ġfor Highlight : ĠBoolean ): ĠKotlin References Search Options Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġkotlin Options Ġ= Ġoptions Ġas ĠKotlin Function Find Usage s Options ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠKotlin References Search Options ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaccept Callable Overrides Ġ= Ġtrue , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaccept Over loads Ġ= Ġkotlin Options . is Include Over load Usage s , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaccept Extensions Of Declaration Class Ġ= Ġkotlin Options . is Include Over load Usage s , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsearch For Expected Usage s Ġ= Ġkotlin Options . search Expected , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsearch For Component Con ventions Ġ= Ġ! for Highlight ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġapply Query Filters ( element : ĠPsi Element , Ġoptions : ĠFind Usage s Options , Ġquery : ĠQuery < Psi Reference >): ĠQuery < Psi Reference > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġkotlin Options Ġ= Ġoptions Ġas ĠKotlin Function Find Usage s Options ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġquery ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. apply Filter ( kotlin Options . is Skip Import Statements ) Ġ{ Ġ! it . is Import Usage () Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġclass ĠProperty ( ĊĠĠĠĠĠĠĠ Ġproperty Declaration : ĠK t Named Declaration , ĊĠĠĠĠĠĠĠ Ġelements To Search : ĠCollection < Psi Element >, ĊĠĠĠĠĠĠĠ Ġfactory : ĠKotlin Find Usage s Handler Factory ĊĠĠĠ Ġ) Ġ: ĠKotlin Find Member Usage s Handler < Kt Named Declaration >( property Declaration , Ġelements To Search , Ġfactory ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġprocess Element Usage s ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelement : ĠPsi Element , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprocessor : ĠProcessor < in ĠUsage Info >, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoptions : ĠFind Usage s Options ĊĠĠĠĠĠĠĠ Ġ): ĠBoolean Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( Application Manager . getApplication (). is UnitTest Mode Ġ|| ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ! is Property Of Data Class Ġ|| ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpsi Element . get Disable Component And Dest r uction Search ( reset Single Find Ġ= Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġreturn Ġsuper . process Element Usage s ( element , Ġprocessor , Ġoptions ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġindicator Ġ= ĠProgress Manager . getInstance (). progress Indicator ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnotification C ancell er Ġ= Ġschedule Notification For Data Class Component ( project , Ġelement , Ġindicator ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġsuper . process Element Usage s ( element , Ġprocessor , Ġoptions ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġfinally Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDis poser . dispose ( notification C ancell er ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġis Property Of Data Class Ġ= Ġrun Read Action Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġproperty Declaration . parent Ġis ĠK t Parameter List Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġproperty Declaration . parent . parent Ġis ĠK t Primary Constructor Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġproperty Declaration . parent . parent . parent . let Ġ{ Ġit Ġis ĠK t Class Ġ&& Ġit . is Data () Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġget Primary Elements (): ĠArray < Psi Element > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġelement Ġ= Ġpsi Element Ġas ĠK t Named Declaration ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( element Ġis ĠK t Parameter Ġ&& Ġ! element . has Val Or Var () Ġ&& Ġfactory . find Property Options . is Search In Over riding Methods ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfunction Ġ= Ġelement . owner Function ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( function Ġ!= Ġnull Ġ&& Ġfunction . is Over rid able ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfunction . provided To Light Methods (). single OrNull ()?. let Ġ{ Ġmethod Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( Over riding Methods Search . search ( method ). any ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġparameters Count Ġ= Ġmethod . parameter List . parameters Count ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġparameter Index Ġ= Ġelement . parameter Index () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġassert ( parameter Index Ġ< Ġparameters Count ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠOver riding Methods Search . search ( method , Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter Ġ{ Ġmethod . parameter List . parameters Count Ġ== Ġparameters Count Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. map NotNull Ġ{ Ġmethod . parameter List . parameters [ parameter Index ]. un wrapped Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. to Typed Array () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġif Ġ( factory . find Property Options . is Search For Base Accessors ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsup ers Ġ= ĠKotlin Find Usage s Support . get Super Methods ( element , Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( sup ers . contains ( psi Element )) Ġsup ers . to Typed Array () Ġelse Ġ( sup ers Ġ+ Ġpsi Element ). to Typed Array () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġsuper . get Primary Elements () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġget Find Usage s Options ( data Context : ĠData Context ?): ĠFind Usage s Options Ġ= Ġfactory . find Property Options ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġget Find Usage s Dialog ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Single File : ĠBoolean , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġto Show In New Tab : ĠBoolean , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmust Open In New Tab : ĠBoolean ĊĠĠĠĠĠĠĠ Ġ): ĠAbstract Find Usage s Dialog Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠKotlin Find Property Usage s Dialog ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget Element (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġproject , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfactory . find Property Options , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġto Show In New Tab , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmust Open In New Tab , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Single File , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġapply Query Filters ( element : ĠPsi Element , Ġoptions : ĠFind Usage s Options , Ġquery : ĠQuery < Psi Reference >): ĠQuery < Psi Reference > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġkotlin Options Ġ= Ġoptions Ġas ĠKotlin Property Find Usage s Options ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! kotlin Options . is Read Access Ġ&& Ġ! kotlin Options . is Write Access ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠEmpty Query () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġquery . apply Filter ( kotlin Options . is Skip Import Statements ) Ġ{ Ġ! it . is Import Usage () Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! kotlin Options . is Read Access Ġ|| Ġ! kotlin Options . is Write Access ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdetector Ġ= ĠKotlin ReadWrite Access Detector () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠFilter ed Query ( result ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( detector . getReference Access ( element , Ġit )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRead Write Access Detector . Access . Read Ġ-> Ġkotlin Options . is Read Access ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRead Write Access Detector . Access . Write Ġ-> Ġkotlin Options . is Write Access ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRead Write Access Detector . Access . ReadWrite Ġ-> Ġkotlin Options . is ReadWrite Access ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġresult ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun ĠPsi Element . get Disable Component And Dest r uction Search ( reset Single Find : ĠBoolean ): ĠBoolean Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! is Property Of Data Class ) Ġreturn Ġfalse ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( force Disable Component And Dest r uction Search ) Ġreturn Ġtrue ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( Kotlin Find Property Usage s Dialog . get Disable Component And Dest r uction Search ( project )) Ġreturn Ġtrue ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( getUser Data ( FIND _ US AGES _ ONES _ FOR _ DATA _ CLASS _ KEY ) Ġ== Ġtrue ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( reset Single Find ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput UserData ( FIND _ US AGES _ ONES _ FOR _ DATA _ CLASS _ KEY , Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġcreate Kotlin References Search Options ( options : ĠFind Usage s Options , Ġfor Highlight : ĠBoolean ): ĠKotlin References Search Options Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġkotlin Options Ġ= Ġoptions Ġas ĠKotlin Property Find Usage s Options ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdisabled Components And Operators Search Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ! for Highlight Ġ&& Ġpsi Element . get Disable Component And Dest r uction Search ( reset Single Find Ġ= Ġtrue ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠKotlin References Search Options ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaccept Callable Overrides Ġ= Ġtrue , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaccept Over loads Ġ= Ġfalse , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaccept Extensions Of Declaration Class Ġ= Ġfalse , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsearch For Expected Usage s Ġ= Ġkotlin Options . search Expected , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsearch For Operator Con ventions Ġ= Ġ! disabled Components And Operators Search , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsearch For Component Con ventions Ġ= Ġ! disabled Components And Operators Search ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġcreate Searcher ( ĊĠĠĠĠĠĠĠ Ġelement : ĠPsi Element , ĊĠĠĠĠĠĠĠ Ġprocessor : ĠProcessor < in ĠUsage Info >, ĊĠĠĠĠĠĠĠ Ġoptions : ĠFind Usage s Options ĊĠĠĠ Ġ): ĠSearch er Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠMy Searcher ( element , Ġprocessor , Ġoptions ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġinner Ġclass ĠMy Searcher ( ĊĠĠĠĠĠĠĠ Ġelement : ĠPsi Element , Ġprocessor : ĠProcessor < in ĠUsage Info >, Ġoptions : ĠFind Usage s Options ĊĠĠĠ Ġ) Ġ: ĠSearch er ( element , Ġprocessor , Ġoptions ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġkotlin Options Ġ= Ġoptions Ġas ĠKotlin Callable Find Usage s Options ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġbuild TaskList ( for Highlight : ĠBoolean ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġreference Processor Ġ= Ġcreate Reference Processor ( processor ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġunique Processor Ġ= ĠCommon Processors . Unique Processor ( processor ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( options . is Usage s ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbase Kotlin Search Options Ġ= Ġcreate Kotlin References Search Options ( options , Ġfor Highlight ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġkotlin Search Options Ġ= Ġif Ġ( element . is Pot entially Operator ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbase Kotlin Search Options ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbase Kotlin Search Options . copy ( search For Operator Con ventions Ġ= Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsearch Parameters Ġ= ĠKotlin References Search Parameters ( element , Ġoptions . search Scope , Ġkotlin Options Ġ= Ġkotlin Search Options ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd Task Ġ{ Ġapply Query Filters ( element , Ġoptions , ĠReferences Search . search ( search Parameters )). forEach ( reference Processor ) Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( element Ġis ĠK t Element Ġ&& Ġ! is Only Kotlin Search ( options . search Scope )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠTODO : Ġvery Ġbad Ġcode !! ĠReferences Search Ġdoes Ġnot Ġwork Ġcorrectly Ġfor Ġconstructors Ġand Ġannotation Ġparameters ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpsi Method Scope Search Ġ= Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelement Ġis ĠK t Parameter Ġ&& Ġelement . is Data Class Component Function Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoptions . search Scope . exclude Kotlin Sources () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġoptions . search Scope ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( psi Method Ġin Ġelement . provided To Light Methods (). filter Data Class Components If Disabled ( kotlin Search Options )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd Task Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġquery Ġ= ĠMethod References Search . search ( psi Method , Ġpsi Method Scope Search , Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġapply Query Filters ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelement , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoptions , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġquery ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ). forEach ( reference Processor ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( kotlin Options . search Overrides ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd Task Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġover rid ers Ġ= ĠH ierarchy Search Request ( element , Ġoptions . search Scope , Ġtrue ). search Over rid ers () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġover rid ers . all Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġelement Ġ= Ġrun Read Action Ġ{ Ġit . take If Ġ{ Ġit . isValid Ġ} ?. navigation Element Ġ} Ġ?: Ġreturn @ all Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprocess Usage ( unique Processor , Ġelement ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprotected Ġabstract Ġfun Ġcreate Kotlin References Search Options ( ĊĠĠĠĠĠĠĠ Ġoptions : ĠFind Usage s Options , ĊĠĠĠĠĠĠĠ Ġfor Highlight : ĠBoolean ĊĠĠĠ Ġ): ĠKotlin References Search Options ĊĊĠĠĠ Ġprotected Ġabstract Ġfun Ġapply Query Filters ( ĊĠĠĠĠĠĠĠ Ġelement : ĠPsi Element , ĊĠĠĠĠĠĠĠ Ġoptions : ĠFind Usage s Options , ĊĠĠĠĠĠĠĠ Ġquery : ĠQuery < Psi Reference > ĊĠĠĠ Ġ): ĠQuery < Psi Reference > ĊĊĠĠĠ Ġoverride Ġfun Ġis Search For Text Occ urrences Available ( psi Element : ĠPsi Element , Ġis Single File : ĠBoolean ): ĠBoolean Ġ= ĊĠĠĠĠĠĠĠ Ġ! is Single File Ġ&& Ġpsi Element Ġ! is ĠK t Parameter ĊĊĠĠĠ Ġoverride Ġfun Ġfind References To Highlight ( target : ĠPsi Element , Ġsearch Scope : ĠSearch Scope ): ĠCollection < Psi Reference > Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġbase Declarations Ġ= Ġget Top Most Over ridden Elements To Highlight ( target ) ĊĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( base Declarations . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbase Declarations . flatMap Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġhandler Ġ= Ġ( Find Manager . getInstance ( project ) Ġas ĠFind ManagerImpl ). find Usage s Manager . get Find Usage s Handler ( it !! , Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhandler ?. find References To Highlight ( it , Ġsearch Scope ) Ġ?: Ġempty List () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . find References To Highlight ( target , Ġsearch Scope ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ@ Volatile ĊĠĠĠĠĠĠĠ Ġ@ get : Test Only ĊĠĠĠĠĠĠĠ Ġvar Ġforce Disable Component And Dest r uction Search Ġ= Ġfalse ĊĊĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠDISABLE _ ON CE Ġ= Ġ" DISABLE _ ON CE " ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠDISABLE Ġ= Ġ" DISABLE " ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠDISABLE _ COMPONENT _ AND _ DE STR UCTION _ SEARCH _ TEXT Ġ= ĠKotlin In dependent Bundle . message ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" find . us ages . text . find . us ages . for . data . class . components . and . de struction . declarations ", ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDISABLE _ ON CE , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDISABLE ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠDISABLE _ COMPONENT _ AND _ DE STR UCTION _ SEARCH _ TIMEOUT Ġ= Ġ 5 0 0 0 ĊĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠF IND _ US AGES _ ONES _ FOR _ DATA _ CLASS _ KEY Ġ= ĠKey < Boolean >(" FIND _ US AGES _ ONES ") ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġschedule Notification For Data Class Component ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġproject : ĠProject , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelement : ĠPsi Element , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġindicator : ĠProgress Indicator ĊĠĠĠĠĠĠĠ Ġ): ĠDis posable Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnotification Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlistener Ġ= ĠHyper link Listener Ġ{ Ġevent Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( event . eventType Ġ== ĠHyper link Event . EventType . ACTIV ATED ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġindicator . cancel () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( event . description Ġ== ĠDISABLE ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠKotlin Find Property Usage s Dialog . set Disable Component And Dest r uction Search ( project , Ġ/* Ġvalue Ġ= Ġ*/ Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelement . put UserData ( FIND _ US AGES _ ONES _ FOR _ DATA _ CLASS _ KEY , Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFind Manager . getInstance ( project ). find Usage s ( element ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTool WindowManager . getInstance ( project ). notify By Bal loon ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTool Window Id . FIND , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMessageType . INFO , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDISABLE _ COMPONENT _ AND _ DE STR UCTION _ SEARCH _ TEXT , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠActions . Find , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlistener ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠAlarm (). also Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . add Request ( notification , ĠDISABLE _ COMPONENT _ AND _ DE STR UCTION _ SEARCH _ TIMEOUT ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun ĠgetInstance ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdeclaration : ĠK t Named Declaration , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelements To Search : ĠCollection < Psi Element > Ġ= Ġempty List (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfactory : ĠKotlin Find Usage s Handler Factory ĊĠĠĠĠĠĠĠ Ġ): ĠKotlin Find Member Usage s Handler < out ĠK t Named Declaration > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( declaration Ġis ĠK t Function ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFunction ( declaration , Ġelements To Search , Ġfactory ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠProperty ( declaration , Ġelements To Search , Ġfactory ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } ĊĊ Ċ fun ĠQuery < Psi Reference >. apply Filter ( flag : ĠBoolean , Ġcondition : Ġ( Psi Reference ) Ġ-> ĠBoolean ): ĠQuery < Psi Reference > Ġ{ ĊĠĠĠ Ġreturn Ġif Ġ( flag ) ĠFilter ed Query ( this , Ġcondition ) Ġelse Ġthis Ċ } Ċ