package Ġnet . dat en str ude l . kotlin _ fixture _ magic Ċ Ċ import Ġorg . reflection s . Reflection s Ċ import Ġorg . reflection s . sc anners . Sub Types Scanner Ċ import Ġorg . reflection s . sc anners . Type Annotations Scanner Ċ import Ġorg . reflection s . util . Classpath Helper Ċ import Ġorg . reflection s . util . Configuration Builder Ċ import Ġkotlin . reflect . K Class Ċ import Ġkotlin . reflect . full . star Project ed Type Ċ Ċ /** Ċ Ġ* ĠAllows Ġto Ġcreate Ġinstances Ġof Ġclasses Ġin Ġbulk Ġby Ġdifferent Ġproperties Ġof Ġclasses Ġ( e . g . Ġsub Ġtypes Ġor Ġannotations ). Ċ Ġ* Ġ@ param Ġbase Package Ġ- Ġbase Ġpackage Ġto Ġscan Ġfor Ġ( sub ) Ġclasses Ġor Ġannotated Ġclasses Ċ Ġ* Ġ@ param Ġfixture Factory Ġ- Ġthe Ġ[ Fixture Factory ] Ġused Ġto Ġcreate Ġrandom Ġinstances Ċ Ġ*/ Ċ class ĠBulk Fixture Factory ( val Ġbase Package : ĠString , Ġprivate Ġval Ġfixture Factory : ĠFix ture Factory Ġ= ĠFix ture Factory . build Ġ{}) Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġreflection s : ĠReflection s Ġ= ĠReflection s ( Configuration Builder () ĊĠĠĠĠĠĠĠ Ġ. set Urls ( Classpath Helper . for Package ( base Package )) ĊĠĠĠĠĠĠĠ Ġ. set Sc anners ( Sub Types Scanner (), ĠType Annotations Scanner ())) ĊĊĠĠĠ Ġinline Ġfun Ġ< re ified ĠT : ĠAny > Ġcreate Instances Of Sub classes (): ĠList < T > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġcreate Instances Of Sub classes ( T :: class ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Suppress (" UN CHECK ED _ CAST ") ĊĠĠĠ Ġfun Ġ< T : ĠAny > Ġcreate Instances Of Sub classes ( clazz : ĠK Class < T >) Ġ: ĠList < T > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsub Types Of Ġ= Ġreflection s . getSub Types Of ( clazz . java ) ĊĊĠĠĠĠĠĠĠ Ġreturn Ġsub Types Of . filter Ġ{ Ġ! it . kotlin . is Abstract Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġfixture Factory . create Instance ( it . kotlin . star Project ed Type ) Ġas ĠT Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinline Ġfun Ġ< re ified ĠA Ġ: ĠAnnotation > Ġcreate Instances By Annotation (): ĠList < Any > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġcreate Instances By Annotation ( A :: class . java ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġ< A : ĠAnnotation > Ġcreate Instances By Annotation ( annotation : ĠClass < A >): ĠList < Any > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmatches Ġ= Ġreflection s . get Types Annotated With ( annotation ) ĊĊĠĠĠĠĠĠĠ Ġreturn Ġmatches . filter Ġ{ Ġ! it . kotlin . is Abstract Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġfixture Factory . create Instance ( it . kotlin . star Project ed Type ) Ġ} ĊĊĠĠĠ Ġ} Ċ } Ċ