/* Ċ Ġ* ĠCopyright Ġ 2 0 1 0 - 2 0 1 8 ĠJetBrains Ġs . r . o . ĠUse Ġof Ġthis Ġsource Ġcode Ġis Ġgoverned Ġby Ġthe ĠApache Ġ 2 . 0 Ġlicense Ċ Ġ* Ġthat Ġcan Ġbe Ġfound Ġin Ġthe Ġlicense / LICENSE . txt Ġfile . Ċ Ġ*/ Ċ Ċ package Ġorg . jetbrains . kotlin . nj 2 k . conversions Ċ Ċ import Ġorg . jetbrains . kotlin . nj 2 k . Conversion Context Ċ import Ġorg . jetbrains . kotlin . nj 2 k . tree . JK Tree Element Ċ Ċ abstract Ġclass ĠRecursive Applicable Conversion Base Ġ: ĠMatch Based Conversion () Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġon Element Changed ( new : ĠJ K Tree Element , Ġold : ĠJ K Tree Element ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsomething Changed Ġ= Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġrun Conversion ( tree Root : ĠJ K Tree Element , Ġcontext : ĠConversion Context ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġroot Ġ= Ġapply To Element ( tree Root ) ĊĠĠĠĠĠĠĠ Ġassert ( root Ġ=== Ġtree Root ) ĊĠĠĠĠĠĠĠ Ġreturn Ġsomething Changed ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprotected Ġvar Ġsomething Changed Ġ= Ġfalse ĊĊĠĠĠ Ġabstract Ġfun Ġapply To Element ( element : ĠJ K Tree Element ): ĠJ K Tree Element ĊĊĠĠĠ Ġinline Ġfun Ġ< T Ġ: ĠJ K Tree Element > Ġrecurse ( element : ĠT ): ĠT Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġapply Recursive ( element , Ġ:: apply To Element ) ĊĠĠĠ Ġ} Ċ }