package Ġio . github . datab ob Ċ Ċ import Ġkotlin . reflect . K Class Ċ import Ġkotlin . reflect . K Parameter Ċ import Ġkotlin . reflect . full . default Type Ċ import Ġkotlin . reflect . jvm . java Type Ċ Ċ class ĠD atab ob ( var arg Ġoverrides : ĠGenerator ) Ġ{ ĊĠĠĠ Ġprivate Ġval Ġdefaults Ġ= ĠlistOf ( ĊĠĠĠĠĠĠĠ ĠLanguage Construct s Generator (), ĊĠĠĠĠĠĠĠ ĠDateTime Generator . instances . random , ĊĠĠĠĠĠĠĠ ĠCollection Generator . instances . random , ĊĠĠĠĠĠĠĠ ĠPrimitive Generator (), ĊĠĠĠĠĠĠĠ ĠJ dk Common s Generator (), ĊĠĠĠĠĠĠĠ ĠCoin To ss . generators . even ) ĊĊĠĠĠ Ġprivate Ġval Ġgenerator Ġ= Ġdefaults . plus ( overrides . toList ()). fold ( Composite Generator (), ĠComposite Generator :: with ) ĊĊĠĠĠ Ġinline Ġfun Ġ< re ified ĠR Ġ: ĠAny > Ġmk (): ĠR Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġmk ( R :: class ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Suppress (" UN CHECK ED _ CAST ") ĊĠĠĠ Ġfun Ġ< R Ġ: ĠAny > Ġmk ( c : ĠK Class < R >): ĠR Ġ= Ġ( generator . mk ( c . default Type . java Type , Ġthis ) Ġ?: Ġfallback ( c )) Ġas ĠR ĊĊĠĠĠ Ġprivate Ġfun Ġ< R Ġ: ĠAny > Ġfallback ( c : ĠK Class < R >): ĠR Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġconstructor Ġ= Ġc . construct ors . iterator (). next () ĊĠĠĠĠĠĠĠ Ġval Ġgenerated Parameters Ġ= Ġconstructor . parameters ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it . type . is Marked Nullable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( mk < Coin To ss >(). to ss ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconvert ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconvert ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġconstructor . call (* generated Parameters . to Typed Array ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġconvert ( it : ĠK Parameter ) Ġ= Ġgenerator . mk ( it . type . java Type , Ġthis ) Ġ?: Ġmk ( Class . forName ( it . type . toString (). replace (" ?", Ġ" ")). kotlin ) Ċ } Ċ