package Ġorg . jetbrains . k annot ator . fun De pen de cy Ċ Ċ import Ġjava . util . ArrayList Ċ import Ġorg . jetbrains . k annot ator . declarations . Method Ċ import Ġjava . util . Linked HashSet Ċ import Ġjava . util . Linked HashMap Ċ import Ġorg . jetbrains . k annot ator . graphs .* Ċ import Ġjava . util . HashSet Ċ import Ġkotlin lib . b fs Ċ Ċ val Ġ< A , ĠL > ĠGraph < A , ĠL >. source Nodes : ĠCollection < Node < A , ĠL >> ĊĠĠĠ Ġget () Ġ= Ġnodes . filter Ġ{ Ġit . incoming Edges . isEmpty () Ġ} Ċ val Ġ< A , ĠL > ĠGraph < A , ĠL >. sink Nodes : ĠCollection < Node < A , ĠL >> ĊĠĠĠ Ġget () Ġ= Ġnodes . filter Ġ{ Ġit . outgoing Edges . isEmpty () Ġ} Ċ Ċ fun Ġ< A , ĠL > ĠGraph < A , ĠL >. get Transit ively Inter esting Nodes ( node Is Inter esting : Ġ( Node < A , ĠL >) Ġ-> ĠBoolean ): ĠSet < Node < A , ĠL >> Ġ{ ĊĠĠĠ Ġval Ġinteresting Nodes Ġ= ĠHashSet ( this . nodes . filter Ġ{ node Is Inter esting ( it )}) ĊĊĠĠĠ Ġb fs ( interest ing Nodes ) Ġ{ node Ġ-> ĊĠĠĠĠĠĠĠ Ġinteresting Nodes . add ( node ) ĊĠĠĠĠĠĠĠ Ġnode . success ors ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġreturn Ġinteresting Nodes Ċ }