package Ġcom . github . zero code . map 4 k . configuration Ċ Ċ import Ġcom . github . zero code . map 4 k . TypeDescriptor Ċ import Ġcom . github . zero code . map 4 k . extensions . returnType Class Ċ import Ġcom . github . zero code . map 4 k . type Descriptor Ċ import Ġkotlin . reflect . K Class Ċ import Ġkotlin . reflect . K Parameter Ċ import Ġkotlin . reflect . K Property 1 Ċ import Ġkotlin . reflect . K Type Ċ import Ġkotlin . reflect . jvm . reflect Ċ Ċ data Ġclass ĠProperty Map ( ĊĠĠĠ Ġval Ġtarget Property : ĠK Property 1 < *, Ġ* >, ĊĠĠĠ Ġval Ġtarget Parameter : ĠK Parameter , ĊĠĠĠ Ġval Ġsource Resolution : ĠSource Resolution , ĊĠĠĠ Ġval Ġconversion : ĠType Converter Ċ ) Ġ{ ĊĠĠĠ Ġval Ġtarget PropertyName Ġ= Ġtarget Property . name ĊĠĠĠ Ġval Ġtarget Property Class Ġ= Ġtarget Property . returnType Class ĊĠĠĠ Ġval Ġtarget Descriptor Ġ= Ġtype Descriptor ( target Property Class , Ġtarget Property . returnType ) Ċ } Ċ Ċ interface ĠSource Type Ġ{ ĊĠĠĠ Ġval Ġsource Type : ĠK Type Ċ } Ċ Ċ sealed Ġclass ĠSource Resolution Ġ{ ĊĠĠĠ Ġabstract Ġval Ġsource Descriptor : ĠType Descriptor ĊĠĠĠ Ġabstract Ġfun Ġresolve Value ( source : ĠAny ): ĠAny ? Ċ } Ċ Ċ data Ġclass ĠNamed Source Resolution ( val Ġsource Property : ĠK Property 1 < *, Ġ* >) Ġ: ĠSource Resolution (), ĠSource Type Ġ{ ĊĊĠĠĠ Ġoverride Ġval Ġsource Descriptor : ĠType Descriptor Ġ= ĊĠĠĠĠĠĠĠ Ġtype Descriptor ( source Property . returnType Class , Ġsource Property . returnType ) ĊĊĠĠĠ Ġoverride Ġval Ġsource Type : ĠK Type Ġ= ĊĠĠĠĠĠĠĠ Ġsource Property . returnType ĊĊĠĠĠ Ġoverride Ġfun Ġresolve Value ( source : ĠAny ): ĠAny ? Ġ= ĊĠĠĠĠĠĠĠ Ġsource Property . getter . call ( source ) Ċ } Ċ Ċ data Ġclass ĠConvert ed Source Resolution ( val Ġsource Property : ĠK Property 1 < *, Ġ* >) Ġ: ĠSource Resolution (), ĠSource Type Ġ{ ĊĊĠĠĠ Ġoverride Ġval Ġsource Descriptor : ĠType Descriptor Ġ= ĊĠĠĠĠĠĠĠ Ġtype Descriptor ( source Property . returnType Class , Ġsource Property . returnType ) ĊĊĠĠĠ Ġoverride Ġval Ġsource Type : ĠK Type Ġ= ĊĠĠĠĠĠĠĠ Ġsource Property . returnType ĊĊĠĠĠ Ġoverride Ġfun Ġresolve Value ( source : ĠAny ): ĠAny ? Ġ= ĊĠĠĠĠĠĠĠ Ġsource Property . getter . call ( source ) Ċ } Ċ Ċ data Ġclass ĠGenerated Source Resolution ( val Ġgenerator : ĠFunction 1 < Any ?, Ġ* >) Ġ: ĠSource Resolution () Ġ{ ĊĊĠĠĠ Ġoverride Ġval Ġsource Descriptor : ĠType Descriptor Ġ= ĊĠĠĠĠĠĠĠ Ġtype Descriptor ( generator . reflect () !!. returnType . classifier Ġas ĠK Class <* >, Ġgenerator . reflect () !!. returnType ) ĊĊĠĠĠ Ġoverride Ġfun Ġresolve Value ( source : ĠAny ): ĠAny ? Ġ= ĊĠĠĠĠĠĠĠ Ġgenerator ( source ) Ċ }