package Ġio . gitlab . art urb os ch . de te kt . api Ċ Ċ import Ġorg . jetbrains . kotlin . psi . Kt File Ċ Ċ @ Suppress (" Empty Function Block ") Ċ abstract Ġclass ĠBase Rule ( protected Ġval Ġcontext : ĠContext Ġ= ĠDefault Context ()) Ġ: ĠDet ek t Visitor (), ĠContext Ġby Ġcontext Ġ{ ĊĊ ĉ open Ġval Ġid : ĠString Ġ= Ġjava Class . simple Name ĊĊ ĉ /** Ċĉ Ġ* ĠBefore Ġstarting Ġvisit ing Ġkotlin Ġelements , Ġa Ġcheck Ġis Ġperformed Ġif Ġthis Ġrule Ġshould Ġbe Ġtriggered . Ċĉ Ġ* ĠPre - Ġand Ġpost - visit - hooks Ġare Ġexecuted Ġbefore / after Ġthe Ġvisit ing Ġprocess . Ċĉ Ġ*/ Ċ ĉ fun Ġvisit File ( root : ĠK t File ) Ġ{ Ċĉ ĉ if Ġ( visit Condition ( root )) Ġ{ Ċĉĉ ĉ clear Find ings () Ċĉĉ ĉ pre Visit ( root ) Ċĉĉ ĉ visit ( root ) Ċĉĉ ĉ post Visit ( root ) Ċĉ ĉ } Ċ ĉ } ĊĊ ĉ open Ġfun Ġvisit ( root : ĠK t File ) Ġ{ Ċĉ ĉ root . accept ( this ) Ċ ĉ } ĊĊ ĉ abstract Ġfun Ġvisit Condition ( root : ĠK t File ): ĠBoolean ĊĊ ĉ /** Ċĉ Ġ* ĠCould Ġbe Ġoverridden Ġby Ġsubclasses Ġto Ġspecify Ġa Ġbehaviour Ġwhich Ġshould Ġbe Ġdone Ġbefore Ċĉ Ġ* Ġvisit ing Ġkotlin Ġelements . Ċĉ Ġ*/ Ċ ĉ protected Ġopen Ġfun Ġpost Visit ( root : ĠK t File ) Ġ{ Ċ ĉ } ĊĊ ĉ /** Ċĉ Ġ* ĠCould Ġbe Ġoverridden Ġby Ġsubclasses Ġto Ġspecify Ġa Ġbehaviour Ġwhich Ġshould Ġbe Ġdone Ġafter Ċĉ Ġ* Ġvisit ing Ġkotlin Ġelements . Ċĉ Ġ*/ Ċ ĉ protected Ġopen Ġfun Ġpre Visit ( root : ĠK t File ) Ġ{ Ċ ĉ } Ċ } Ċ