package Ġjp . co . sor am its u . fe ar less _ utils . scale Ċ Ċ import Ġjp . co . sor am its u . fe ar less _ utils . scale . dataType . DataType Ċ import Ġjp . co . sor am its u . fe ar less _ utils . scale . dataType . optional Ċ import Ġkotlin . properties . ReadOnly Property Ċ import Ġkotlin . reflect . K Property Ċ Ċ class ĠNon Null Field Delegate < S Ġ: ĠSchema < S >, ĠT >( ĊĠĠĠ Ġprivate Ġval ĠdataType : ĠDataType < T >, ĊĠĠĠ Ġprivate Ġval Ġschema : ĠS , ĊĠĠĠ Ġdefault : ĠT ? Ġ= Ġnull Ċ ) Ġ: ĠReadOnly Property < Schema < S >, ĠField < T >> Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġfield : ĠField < T > Ġ= Ġschema . field ( dataType , Ġdefault ) ĊĊĠĠĠ Ġoverride Ġfun ĠgetValue ( this Ref : ĠSchema < S >, Ġproperty : ĠK Property <* >) Ġ= Ġfield ĊĊĠĠĠ Ġfun Ġoptional (): ĠNullable Field Delegate < S , ĠT > Ġ{ ĊĠĠĠĠĠĠĠ Ġschema . fields . remove ( field ) ĊĊĠĠĠĠĠĠĠ Ġreturn ĠNullable Field Delegate ( optional ( dataType ), Ġschema , Ġfield . defaultValue ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ class ĠNullable Field Delegate < S Ġ: ĠSchema < S >, ĠT >( ĊĠĠĠ ĠdataType : Ġoptional < T >, ĊĠĠĠ Ġschema : ĠS , ĊĠĠĠ Ġdefault : ĠT ? Ġ= Ġnull Ċ ) Ġ: ĊĠĠĠ ĠReadOnly Property < Schema < S >, ĠField < T ? >> Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġfield : ĠField < T ?> Ġ= Ġschema . nullable Field ( dataType , Ġdefault ) ĊĊĠĠĠ Ġoverride Ġfun ĠgetValue ( this Ref : ĠSchema < S >, Ġproperty : ĠK Property <* >) Ġ= Ġfield Ċ }