package Ġio . kot est . extensions Ċ Ċ import Ġio . kot est . Spec Ċ import Ġkotlin . reflect . K Class Ċ Ċ /** Ċ Ġ* ĠAllows Ġinter ception Ġof Ġthe Ġdiscovery Ġphase Ġof ĠK ot est . Ċ Ġ* Ċ Ġ* ĠThe Ġdiscovery Ġphase Ġis Ġthe Ġpart Ġof Ġthe Ġtest Ġcycle Ġthat Ġfinds Ċ Ġ* Ġpossible Ġ[ Spec ] Ġclasses Ġon Ġthe Ġclasspath Ġand Ġthen Ġinstanti ates Ġthem Ċ Ġ* Ġready Ġto Ġbe Ġexecuted . Ċ Ġ* Ċ Ġ* ĠNote : ĠIf Ġmultiple Ġ[ Discovery Extension ] s Ġare Ġregistered , Ġthe Ġorder Ċ Ġ* Ġin Ġwhich Ġthey Ġexecute Ġis Ġnot Ġspecified . Ċ Ġ*/ Ċ interface ĠDiscovery Extension Ġ: ĠProject Level Extension Ġ{ ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠInv oked Ġas Ġsoon Ġas Ġthe Ġscan Ġphase Ġis Ġcomplete . ĠAt Ġthat Ġpoint , ĊĠĠ Ġ* Ġthe Ġ[ Spec ] Ġclasses Ġhave Ġbeen Ġdetected , Ġbut Ġnot Ġyet Ġinstantiated ĊĠĠ Ġ* Ġor Ġexecuted . ĊĠĠ Ġ* ĊĠĠ Ġ* ĠOver riding Ġthis Ġfunction Ġgives Ġimplementations Ġthe Ġpossibility ĊĠĠ Ġ* Ġof Ġfiltering Ġthe Ġspecs Ġseen Ġby Ġthe Ġtest Ġengine . ĊĠĠ Ġ* ĊĠĠ Ġ* ĠFor Ġinstance , Ġa Ġpossible Ġextension Ġmay Ġfilter Ġtests Ġby Ġpackage ĊĠĠ Ġ* Ġname , Ġclass Ġname , Ġclasses Ġthat Ġonly Ġimplement Ġa Ġcertain ĊĠĠ Ġ* Ġinterface , Ġetc . ĊĠĠ Ġ* ĊĠĠ Ġ* Ġ@ param Ġclasses Ġthe Ġ[ K Class ] Ġfor Ġeach Ġdiscovered Ġ[ Spec ] ĊĠĠ Ġ* ĊĠĠ Ġ* Ġ@ return Ġ Ġthe Ġlist Ġof Ġfiltered Ġclasses Ġto Ġuse . ĊĠĠ Ġ*/ ĊĠ Ġfun Ġafter Scan ( classes : ĠList < K Class < out ĠSpec >> ): ĠList < K Class < out ĠSpec >> Ċ }