package Ġio . kot lint est . extensions Ċ Ċ import Ġio . kot lint est . Description Ċ import Ġio . kot lint est . Spec Ċ import Ġkotlin . reflect . K Class Ċ Ċ /** Ċ Ġ* ĠAllows Ġinter ception Ġof Ġthe Ġdiscovery Ġphase Ġof ĠKotlin Test . Ċ Ġ* Ċ Ġ* Ġ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 Ġ: Ġ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 ĠRunner . ĊĠĠ Ġ* ĊĠĠ Ġ* ĠFor Ġinstance Ġa Ġpossible Ġextension Ġmay Ġfilter Ġany Ġtests Ġfor ĊĠĠ Ġ* ĠWindows Ġmachines Ġif Ġit Ġis Ġexecuting Ġin Ġa ĠLinux Ġenvironment . ĊĠĠ Ġ* ĊĠĠ Ġ* Ġ@ param Ġdescriptions Ġthe Ġ[ Description ] Ġfor Ġeach Ġdiscovered Ġ[ Spec ] ĊĠĠ Ġ* ĊĠĠ Ġ* Ġ@ return Ġ Ġthe Ġlist Ġof Ġfiltered Ġspecs Ġto Ġuse . ĊĠĠ Ġ*/ ĊĠ Ġfun Ġafter Scan ( descriptions : ĠList < Description >): ĠList < Description > Ġ= Ġdescriptions ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠAn Ġextension Ġfunction Ġinvoked Ġto Ġcreate Ġan Ġinstance Ġof Ġa Ġ[ Spec ]. ĊĠĠ Ġ* ĊĠĠ Ġ* ĠAn Ġimplementation Ġcan Ġchoose Ġto Ġcreate Ġa Ġnew Ġinstance , Ġor Ġit Ġcan ĊĠĠ Ġ* Ġchoose Ġto Ġreturn Ġnull Ġif Ġit Ġw ishes Ġto Ġpass Ġcontrol Ġto Ġthe Ġnext ĊĠĠ Ġ* Ġextension Ġ( or Ġif Ġno Ġmore Ġextensions , Ġthen Ġback Ġto Ġthe ĠTest ĠRunner ). ĊĠĠ Ġ* ĊĠĠ Ġ* ĠBy Ġoverriding Ġthis Ġfunction , Ġextensions Ġare Ġable Ġto Ġcustomize ĊĠĠ Ġ* Ġthe Ġway Ġclasses Ġare Ġcreated , Ġto Ġsupport Ġthings Ġlike Ġconstructors ĊĠĠ Ġ* Ġwith Ġparameters , Ġor Ġclasses Ġthat Ġrequire Ġspecial Ġinit ization Ġlogic . ĊĠĠ Ġ*/ ĊĠ Ġfun Ġ< T Ġ: ĠSpec > Ġinstantiate ( clazz : ĠK Class < T >): ĠSpec ? Ġ= Ġnull Ċ }