package Ġio . github . intellij . d language . highlight ing . exit point Ċ Ċ import Ġcom . intellij . code Insight . highlight ing . Highlight Usage s Handler Base Ċ import Ġcom . intellij . openapi . editor . Editor Ċ import Ġcom . intellij . psi . Psi Element Ċ import Ġcom . intellij . psi . Psi File Ċ import Ġcom . intellij . util . Consumer Ċ import Ġio . github . intellij . d language . psi . ext . ance stors Ċ import Ġio . github . intellij . d language . utils . Function Declaration Ċ import Ġio . github . intellij . d language . utils . Function Literal Expression Ċ Ċ class ĠD Highlight Exit Points Handler ( ĊĠĠĠ Ġeditor : ĠEditor , ĊĠĠĠ Ġfile : ĠPsi File , ĊĠĠĠ Ġvar Ġtarget : ĠPsi Element Ċ ) Ġ: ĠHighlight Usage s Handler Base < Psi Element >( editor , Ġfile ) Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġget Targets () Ġ= ĠlistOf ( target ) ĊĊĠĠĠ Ġoverride Ġfun Ġselect Targets ( targets : ĠMutable List < out ĠPsi Element >, Ġselection Consumer : ĠConsumer < in ĠMutable List < out ĠPsi Element >>) Ġ{ ĊĠĠĠĠĠĠĠ Ġselection Consumer . consume ( targets ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġcompute Usage s ( targets : ĠMutable List < out ĠPsi Element >) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsink : Ġ( Exit Point ) Ġ-> ĠUnit Ġ= Ġ{ Ġexit Point Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( exit Point ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠExit Point . Return Ġ-> Ġadd Occurrence ( exit Point . e ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠExit Point . Throw Ġ-> Ġadd Occurrence ( exit Point . e ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġfunction Or Function Literal Ġ= Ġtarget . ance stors . first OrNull Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit Ġis ĠFunction Declaration Ġ|| Ġit Ġis ĠFunction Literal Expression ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġwhen Ġ( function Or Function Literal ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠFunction Declaration Ġ-> ĠExit Point . process ( function Or Function Literal , Ġsink ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠFunction Literal Expression Ġ-> ĠExit Point . process ( function Or Function Literal , Ġsink ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ