// ĠWITH _ STD LIB Ċ Ċ // ĠFILE : Ġlib / Prop . java Ċ package Ġlib ; Ċ Ċ public Ġabstract Ġclass ĠProp < T > Ġ{ ĊĠĠĠ Ġpublic Ġabstract Ġint Ġget ( T Ġkey ); ĊĠĠĠ Ġpublic Ġabstract Ġvoid Ġset ( T Ġkey , Ġint Ġvalue ); Ċ } Ċ Ċ // ĠFILE : Ġtest . kt Ċ package Ġtest Ċ Ċ import Ġlib . Prop Ċ Ċ class ĠCl ( var Ġname : ĠString ) Ċ Ċ val ĠTEST Ġ= Ġobject Ġ: ĠProp < Cl >() Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġget ( key : ĠCl ) Ġ= Ġkey . name . length ĊĠĠĠ Ġoverride Ġfun Ġset ( key : ĠCl , Ġvalue : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġkey . name Ġ= Ġ" Ġ". repeat ( value ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ val ĠTEST S _ ARRAY Ġ= ĠarrayOf ( object Ġ: ĠProp < Cl >() Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġget ( key : ĠCl ) Ġ= Ġkey . name . length ĊĠĠĠ Ġoverride Ġfun Ġset ( key : ĠCl , Ġvalue : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġkey . name Ġ= Ġ" Ġ". repeat ( value ) ĊĠĠĠ Ġ} Ċ }) Ċ Ċ val ĠTEST S _ LIST Ġ= ĠlistOf ( object Ġ: ĠProp < Cl >() Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġget ( key : ĠCl ) Ġ= Ġkey . name . length ĊĠĠĠ Ġoverride Ġfun Ġset ( key : ĠCl , Ġvalue : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġkey . name Ġ= Ġ" Ġ". repeat ( value ) ĊĠĠĠ Ġ} Ċ }) Ċ