package Ġxyz . magenta ize . dynamic data . binding Ċ Ċ import Ġxyz . magenta ize . dynamic data . kernel . Notify PropertyChanged Ċ import Ġjava . lang . reflect . Field Ċ import Ġjava . util . concurrent . Concurrent HashMap Ċ import Ġkotlin . reflect . K Property 1 Ċ Ċ internal Ġclass ĠObservable Property Factory Cache Ġprivate Ġconstructor () Ġ{ ĊĠĠĠ Ġcompanion Ġobject { ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠINSTANCE Ġ= ĠObservable Property Factory Cache () ĊĊĠĠĠĠĠĠĠ Ġfun Ġinstance (): ĠObservable Property Factory Cache Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠINSTANCE ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġ_ factories Ġ= ĠConcurrent HashMap < String , ĠAny >() ĊĊĠĠĠ Ġfun Ġ< T : ĠNotify PropertyChanged , R > Ġget Factory ( accessor : ĠK Property 1 < T , R >): Observable Property Factory < T , R >{ ĊĠĠĠĠĠĠĠ Ġ// var Ġfields Ġ= Ġmutable ListOf < Field >() ĊĠĠĠĠĠĠĠ Ġ// getAll Fields () ĊĠĠĠĠĠĠĠ Ġ// val Ġowner Ġ= Ġ( la Ġas ĠProperty Reference 1 Impl ). owner ĊĠĠĠĠĠĠĠ Ġ// val Ġkey Ġ= Ġaccessor . name ĊĊĠĠĠĠĠĠĠ Ġreturn ĠObservable Property Factory ( accessor ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠgetAll Fields ( fields : ĠMutable List < Field >, Ġtype : ĠClass < *> ): ĠList < Field > Ġ{ ĊĠĠĠĠĠĠĠ Ġfields . addAll ( listOf (* type . declared Fields )) ĊĠĠĠĠĠĠĠ Ġif Ġ( type . super class Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠgetAll Fields ( fields , Ġtype . super class ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġfields ĊĠĠĠ Ġ} Ċ } Ċ